디비 확인 show dbs 컬렉션 확인 show collections 데이터 생성 db.movies.insertOne({"title" : "Stand by Me"}) 데이터 확인 db.moives.find() 컬렉션 삭제 db.movies.drop() 다중 데이터 생성 db.movies.insertMany([{"title" : "Ghostbuster"}, {"title" : "E.T."}, {"title" : "Blade Runner"}]); 조회 결과 여러 도큐먼트를 단일 컬렉션에 삽입하는데 매우 유용 얼마까지 데이터를 입력할 수 있는가? - 책 필자는 48MB 라고 언급 하지만 현재 실습환경 MongoDB 6.X 버전은 아래와 같음 MongoDB 6.X 버전의 임계 값 현재는 해당링크 에 100,00..
//.mongorc.js var comliment = ["attractive, "intelligent", "like Batman"]; var index = Math.floor(Math.random()*3); print("Hello, you're looking particularly " +compliment[index]+ " today!"); var no = function() { print("Not on my watch."); }; //데이터베이스 삭제 방지 db.dropDatabase = DB.prototype.dropDatabase = no; //컬렉션 삭제 방지 DBCollection.prototype.drop = no; //인덱스 삭제 방지 DBCollection.prototype.dropInde..
본 포스팅은 아래 책을 학습한 과정을 담고 있습니다. https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=268367408 [전자책] MongoDB 완벽 가이드 몽고DB 입문자를 위한 기초부터 실제 배포에 적용할 수 있는 실용적이고 깊이 있는 내용까지 담았다. 개정 3판에서는 성능이 강화된 몽고DB 최신 버전을 반영해 복제와 샤딩을 더 깊이 다루며 개 www.aladin.co.kr 이번에 신규로 진행하는 프로젝트는 Notion, Google Sheet와 같은 Wiki Product 적인 성향을 띄고 있었고, 기존 RDBMS만으로는 문서형식의 데이터를 저장하기에 까다로운 측면이 있었습니다. 기존 MySQL, Maria, Postgres 등을 사용하여 "커뮤니티"와 같..
어느덧 벌써 벡엔드 스린이로 활동한지 4주차가 되어가는 시점입니다.. 기본도 없이 시작한 백엔드가 많이 발전해나가는 모습을 보며 참으로 고생하고 있구나 싶습니다.. 오늘은 lambda@Edge로 이미지 리사이징을 하는 방법을 소개드리고, 제가 정말 삽질했던 부분을 코멘트 드리려고 합니다. 이 정도로 열렬히 삽질한 적은 오랜만이라,, 바로 글을 써서 많은 분들께 실낱같은 힘을 보태드려야겠다는 생각이 지배적인 순간입니다. Cloudfront, node.js를 사용하시며 502에러 503에러가 발생하신 분들께 바칩니다. + Lambda의 1MB 요청, 응답 제한과 base64 인코딩과 싸우셧던 분들도 도움이 되실겁니다. + 처음 작업하시는 분들도 도움이 되실 겁니다. (참고문헌 빵빵) 서론 우리는 서비스 내에..
Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarket 등의 뷰 템플릿 영역 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 이야기함. Service Layer @Service에 사용되는 서비스 영역임 Service에서 비즈니스 로직을 처리하는 것이 아닌, Service는 트랜잭션, 도메인간 순서 보장의 역할을 수행함 일반적으로 Controller와 Dao(Data Access Object)의 중간 영역에서 사용함 @Transactional이 사용되어야 하는 영역임 Repository Layer Database와 같이 데이터 저장소에 접근하는 여역 기존에 개발하셨던 분들이라면..
JUnit : 자바의 단위테스트를 위한 프레임워크 1. 테스트를 할 화면 창에 Ctrl + Shift + T 2. 아래 클릭 3. ok 클릭 4. 테스트 코드 생성 확인 5. 테스트 코드 작성 * assertEquals는 왼쪽에 예상되는 아웃풋, 오른쪽에는 내 아웃풋을 넣어줌 6. 함수만 실행 Ctrl + shift + F10 중앙 상단쪽에 Tests Passed를 확인할 수 있음. 7. 일부로 틀리기 ! 느낌표 하나로 테스트가 실패한 것을 볼 수 있음. 8. MockitoExtension 사용하기 package com.fastcampus.programming.dmaker.service; import com.fastcampus.programming.dmaker.code.StatusCode; import ..
S/W develope process Process : 일이 처리되는 과정이나 공정. S/W Process Model SDLC(S/W Developement Life Cycel) S/W를 어떻게 개발할 것인가에 대한 전체적인 흐름을 체계화 개발 계획 수립부터 최종 폐기까지 전 과정 Build and fix Model 장점 단점 단시간에 개발 가능 유지보수 어려움 Waterfall Model 단계별 결과물 정의가 중요 각 단계가 다음 단계 시작 전에 끝나야 함. 장 단 체계적인 문서화 각 단계는 앞 단계가 완료되어야 수행 가능 관리의 용이 설계에 많은 노력을 기울여야함 요구사항의 변화가 적은 프로젝트의 적합 중간에 가시적인 결과를 볼 수 없음. V model Waterfall Model에서 각 단계별 테스..
객체에 Null을 담지 않도록 하자. 담아도 되는데 그 객체는 다시한번 쳐다보자. 제임스 고슬링 아저씨의 10억불짜리 실수인 Null은 항상 체크해야한다. 위 코드에서 만약 request가 null이면 NPE가 뜬다. 1. @NonNull Annotation 이거쓰면 위처럼 if문 걸어서 예외처리 안해도 된다. NonNull Annotation은 3군데 붙을 수 있는데 아래와 같다. 1. 파라미터에 NonNull Annotation을 줬기에 메서드 호출 시점에 Exception이 처리된다. 따라서 아래 if문은 없어도 된다. 2. 프로퍼티에 NonNull이 있다. 이 프로퍼티는 Null이 될 수 없는 프로퍼티가 된 것이다. 3. Method는 NonNull이기에 Null을 리턴할 수 없다. 2. @Nul..
필요한 데이터나 설정 값을 얻어올 수 있게 하는 특별한 형태의 표현식에 가까운 간편한 언어 @Value("${config.value}")와 같은 방식으로 설정값을 주입 받는데 활용 1. SpEL의 값 평가(인식) Spel Parser는 ""안에 들어가있는 문자열을 평가(evaluation)해서 결과 값을 만들어 낸다. 문자열 리터럴로 인식되어 concat등 메서드도 가능하다. 위 case처럼 리터럴 값에 접근하는 경우보다는 아래와 같은 경우를 많이 사용할 것 이다. 2. Bean의 Property 설정 기본적으로 #{} 방식으로 property를 설정 ${server.hostname}처럼 $로 시작하는 것은 application.properties 혹은 application.yml의 값을 가져올 때 사용..
1. Resource 파일이나 설정 값에 접근하기 위한 인터페이스 public interface Resource extends InputStreamSource { boolean exists(); boolean isReadable(); boolean isOpen(); boolean isFile(); URL getURL() throws IOException; URI getURI() throws IOException; File getFile() throws IOException; ReadableByteChannel readableChannel() throws IOException; long contentLength() throws IOException; long lastModified() throws IOEx..