안녕하세요, nullable 프라퍼티가 없다면 null를 방어하는 방식에 대해 궁금한 점이 있어 질문남깁니다. 14. Member 도메인 로직 개발 - 생성자에 requireNonNull() 사용 15. 스프링을 이용한 널(null) 안정성 확보 - SpitBugs 플러그인 - package-info 에서 @NonNullApi 이렇게 세가지 방법을 배웠는데요, SpitBugs 플러그인이 "빌드과정에서 정적 분석을 하여 애노테이션 의미와 부합하지 않으면 에러를 내준다" 라는 말씀에 " 그럼 도메인에 Nullable 프라퍼티가 없으면 requireNonNull() 사용 없이 단순히 @NonNullApi + SpotBug만 사용해도 되지 않을까..? " 의문이 들었습니다. 3가지 모두 사용하는게 Null 방어에 괜찮을까요? 아니면 제가 이해한 대로 SpotBug 플러그인 + @NonNullApi 로만 사용해도 충분할까요?
안녕하세요. 제가 집에서 Nginx 성능 테스트를 진행해보았습니다. 먼저, Windows 환경(로컬 컴퓨터) 에서 직접 Nginx를 설치 후 실행했고, WSL2 환경(리눅스 커널 기반) 위에서도 Nginx를 설치해 실행해보았습니다. 그런데 ChatGPT에 문의해보니, Nginx의 sendfile() 을 통한 커널 레벨 zero-copy 최적화 를 제대로 체감하려면 Windows가 아닌 리눅스 환경 에서 실행해야 한다고 하더군요. Windows 커널에서는 해당 기능을 완전히 지원하지 않는다고 합니다. 또한, WSL2 위에서 Nginx를 실행하고 Windows 브라우저로 접속할 경우 , WSL2(리눅스 커널)와 Windows(호스트 OS) 간 통신 과정에서 지연이 발생할 수 있다는 설명도 들었습니다. 그래서 “그럼 도커를 쓰면 되나?” 싶어서 예전에 구매했던 강사님의 Docker 강의를 참고하려고 했습니다. 마침 강의 내용 중 Nginx 설치 및 설정 실습 파트 가 있어서 그대로 따라보려 했는데요, ChatGPT의 설명에 따르면 Docker도 결국 WSL2 위에서 동작 한다고 합니다. 즉, WSL2에서 직접 실행하는 것보다는 최적화되어 있지만, Windows 브라우저에서 요청을 보낼 때는 여전히 변환 과정이 존재 해서 원하는 수준의 “커널 레벨 I/O 성능 비교”를 얻기는 어렵다는 답변을 받았습니다. 제가 확인하고 싶은 부분은 단순히 Tomcat과 Nginx 간의 정적 콘텐츠 처리 성능 차이 입니다. (참고로, Nginx는 이벤트 드리븐 I/O 모델(epoll 등)을 기반으로 동작하며, 리눅스에서는 sendfile() 시스템 콜을 통해 커널 수준에서 파일을 소켓으로 직접 전송하는 zero-copy 최적화를 지원한다고 합니다. 이 기능은 리눅스 커널에서 가장 효율적으로 동작하며, Windows 환경에서는 동일한 수준의 최적화가 적용되지 않는다고 합니다. ChatGPT를 통해 얻은 정보이며, 이 부분을 실제로 테스트해보고 싶었습니다.) 그래서 궁금한 점이 있습니다. 👉 이러한 sendfile() 기반 zero-copy 최적화를 직접 체감하려면, 강사님께서 강의에서 보여주신 것처럼 AWS 리눅스 서버(EC2) 위에서 Nginx를 띄워 테스트하는 것이 가장 정확한 방법일까요? 즉, Windows나 WSL2 환경이 아닌, AWS 리눅스 환경에서 Nginx를 실행해야만 커널 수준 I/O 성능을 정확히 확인할 수 있는지 궁금합니다 ㅠㅠㅠㅠ Nginx에 대해 공부해보고 싶은데 환경 세팅부터 막히니까 조금 답답합니다.. ㅠㅠ ㅠㅠ ㅠㅠ
npm run start 이후 이런 오류가 계속해서 나오는데 어떤 이유일까요 prisma/seed/seed.ts:1:30 - error TS2307: Cannot find module '../generated/prisma/client' or its corresponding type declarations. 1 import { PrismaClient } from '../generated/prisma/client';
설명대로 '호스팅 영역'에선 삭제했습니다. 그런데 '등록된 도메인' 항목엔 여전히 남아 있습니다. " 참고로 도메인은 처음 구매할 때만 1회성으로 비용이 나갑니다. (1년 이후에 갱신을 할 때만 추가 비용 발생) 이미 구매한 도메인은 보유하고 있는 동안에 추가적인 비용이 나가지 않습니다. " 이렇게 적혀 있는데, 만약 삭제를 안 하면 자동 갱신이 되어 1년 후에 결제가 될 수 있는 거 맞나요? 등록된 도메인에서도 도메인을 삭제할 수 있는 것 같은데, 삭제해도 될까요? 도메인을 삭제하라는 설명은 없어서 질문드립니다.
운영중인 서비스에서 선착순 100명 이벤트를 적용한다고 가정하겠습니다. redis를 통해 100명을 제한했고, kafka를 적용하여 부하를 줄여주는 것은 까지는 이해했습니다. 부하를 줄이는 방법이 kafka를 적용할때 때 provider가 topic을 생성하고 consumer가 topic을 가져와서 DB에 입력하는 작업을 하는 것으로 이해했는데요. 만약 이게 실제 운영 환경이라고 가정했을때 궁금한것은 다음과 같습니다. 사용자가 이벤트 신청 redis에서 쿠폰 생성 수량 확인 결과 생성 가능한 조건 임으로 새로운 쿠폰 발급 provider가 새로운 토픽을 생성 토픽을 생성한 그 순간 바로 직후, 사용자는 새로운 쿠폰이 발급된 것으로 확인 해야함. 그치만 consumer에서 topic을 가져오기 전으로 DB에는 새로운 쿠폰이 생성되지 않음. 쿠폰을 사용(또는 확인) 하려고 DB에서 select해보니 쿠폰이 없음 consumer가 이제서야 쿠폰 생성 이 경우에서 보는 것과 같이. provider가 topic을 생성하고 consumer가 topic을 가져와서 DB에 넣는 과정 사이에 사용자가 select를 진행하는 케이스가 있을것같습니다. 이 부분은 어떻게 해결할 수 있을까요? 혹시 다음과 같이 해결 할 수 있을까요? provider가 topic을 생성하는 과정에서 발급 내역을 redis에 입력 consumer가 모든 토픽을 전부 사용하여 DB에 입력하기 전까지 redis에 입력되어 있는 쿠폰 정보로 사용자에게 보여줌 consumer가 모든 토픽을 사용했을때(= 생성된 모든 쿠폰정보를 DB에 입력했을때) redis에 있는 쿠폰정보는 삭제하고 DB에서 select해서 보여줌. 궁금합니다.
ASCII 코드 챕터 18:12 printf(%s\n", p+1) printf(%c\n", *(p+1)) printf(%s\n", *p+4) 위 3가지 경우에 대해서 해설 부탁드립니다. 1번 경우 KOREA에서 한칸 오른쪽으로 이동하여 OREA되는 것은 이해가 되고 2번 경우 *p가 K를 가르키기에 +3하면 E가 되는 것도 이해되고 3번 경우에는 1번과 2번을 바탕으로 이론을 숙지하고 있는상황에서 이해가 되지 않습니다.
ASCII 코드 강의 챕터 9:10 char lower = 'a';에서 a는 문자 취급하고 char upper = (char)(lower-32); 여기에서 (char)은 문자 취급하는 구문이고 (lower-32) 관련하여 숫자 취급하는 int 같은 것이 없는데 lower는 a 문자로 확인이 됩니다. a 문자 관련하여 왜 ASCII 코드 97로 변환하여 32를 빼는지 이해가 되지 않습니다.
안녕하세요. printf("5+(a<b)=%d\n",5+result1); 출력결과가 5+(a<b)=6이라고 설명해 주셨는데, 출력값 관련해서 궁금한게 생겨서 질문드립니다. 문제에 출력 명령문이 printf("5+result1=%d\n",5+result1); 위와 같이 되어 있으면 결과는 어떻게 되나요? 5+1=6이 되나요? 아니면 5+result1=6이 되나요? 그 이유도 설명해 주시면 감사드리겠습니다.
안녕하세요 토비님 현재 파트1에서는 아직 required 포트에있는 repository 인터페이스를 다른 도메인에서 사용하고 있지 않아서 중복이 발생하고 있지 않지만, 만약 다른 도메인에서도 같은 리포지토리를 사용해야할 경우 어떻게 하면 좋을지 질문드립니다. 제가 생각한건 첨부한 이미지와 같습니다. 도메인별로 각각 required 포트에 MemberFinder 인터페이스를 선언하고 그것을 Adapter layer에서 각각 도메인 별로 구현합니다. 하지만 실제 로직은 Adapter레이어에 있는 MemberRepository를 부르는 역할만 할 뿐입니다
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 김영한 자바 중급1의 섹션2에서 equals의 동일성과 동등성에 대한 내용의 퀴즈내용중에서 질문이 있습니다.(이미지 참조) 자바에서는 기본적으로 "=="연산자와 equals() 메소드는 "물리적 동일성"으로 println을 했을때 둘 다 false로 잡히는것으로 이해가 되고 있는데요. 오버라이드를 별도로 생성해야 물리적 동일성과 논리적 동등성에 대한 euqals메소드를 차이점을 갖고 사용할 수 있는것으로 이해했습니다. 맞을까요? 그렇다면, 위의 섹션2 퀴즈 내용에서의 문제같은 경우는 좀더 세부적인 명시가 있어야 하는게 아닌지 아니면 제가 이해를 잘 못하고 있는 부분이 있는지 조언이 필요하여 Q&A에 질문을 남깁니다. 좋은 가르침 항상 감사합니다 ( _ _ )
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의를 들으면서 웬만하면 repository 에서 entity 를 받아와서 이걸 Dto 로 변환해서 반환하게끔 처리하는 것을 배웠습니다. 다만 실무에서 연관관계 매핑을 쓰지 않을 경우 어떤 전략을 취해야 하는지 모르겠어서 질문드립니다. 단일 entity 만을 반환하는 경우 크게 문제되지 않지만, join 을 하게될 경우 entity 가 2개 이상이 필요한데 이 경우 Dto 를 쓸 수밖에 없는 상황이라고 생각됩니다. (혹은 querydsl 에서 Tuple 을 쓸 수 있다고 생각합니다) 이런 경우 어떻게 repository 에서 service 로 데이터를 올려주나요?
4번 스레드 제어와 생명 주기2 PDF의 24페이지 "그리고 스캐줄링 큐 ..." -> "그리고 스케줄링 큐 ..." 7번 고급동기화 PDF의 1페이지 "LockSupport의 대표적인 기능은 가능과 같다 " -> "LockSupport의 대표적인 기능은 다음과 같다 "