묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요, MessageRelay 관련해 궁금한 사항 생겨서 문의드립니다.
안녕하세요, 강사님늘 강의 잘 듣고 있습니다. 감사합니다.강의를 보다보니, 아래 프로세스가 발생한다면 동시성 이슈가 발생할 수 있을 것 같기도 한데요,혹시 관련하여 의견 여쭙고자 글 남깁니다감사합니다.
-
해결됨Real MySQL 시즌 1 - Part 1
LEFT JOIN 시 드라이빙 테이블을 왜 ALL로 읽나요?
10강 LEFT JOIN 주의사항 및 튜닝에서explain select u.id, u.name, uc.coupon_id, uc.use_ynfrom user u left join user_coupon uc on uc.user_id = u.i and uc.coupon_id = 3;위 쿼리의 실행계획으로type ALL 이 나왔는데요왜 u.id는 primary key인데 왜 index가 나오지 않고 ALL이 나오는 걸까요?left join 시 where 절에 조건이 없으면 드라이빙 테이블은 항상 ALL로 읽나요?혹시 u.name을 select절에 포함해서 ALL이 나오는걸까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
테이블을 생성할 때 관계 명시를 안 하는 게 더 나은지 질문드립니다!
안녕하세요! 학부생일때 간단한 프로젝트를 진행할 때는, erd를 그릴 때 관계도 명시하고, 이를 지켜서 테이블을 생성하려고 했습니다.그런데 테이블 생성문을 보니 보통 관계를 명시 안 하고 하시더라구요! (user의 id와 user_id 같은 것)보통 실무에서는 이렇게 관계를 명시 안 하고 테이블을 생성하는 편인가요?그리고 이렇게 했을 때 장점이 있을까요?너무 초보적인 질문이었다면 죄송합니다...!!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
프로젝트 구조 질문 있습니다
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 항상 좋은 강의 잘 보고 있습니다. 다름이 아니라, 현재 강사님 프로젝트 구조가 정확하게 실무에서 사용하는 MSA 프로젝트가 맞나요?아니면 , 모놀리식 기반 멀티 모듈 구조를 통해 MSA 학습을 위한 구조인가요?현재 강의를 보면서 토이 프로젝트로 MSA 학습을 진행해보려고 하는데, 해당 구조가 실제 현업에서 사용하는 구조가 맞는지 궁금합니다 !
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
STOMP에서 메세지를 전송하는 방법에 대해
WssControllerV1에서 @SendTo 어노테이션을 통해 구독중인 클라이언트들에게 메세지를 보낸다고 이해했는데,STOMP 문서를 읽어보니 SimpMessagingTemplate를 통해 메세지를 보내는 것 같았습니다.이 둘의 차이점과 @SendTo를 사용하신 이유를 알 수 있을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
다른 예외 처리 방식
강사님께서는 데이터를 먼저 읽고 없으면 예외를 발생시켰는데, 그렇게 하지 않고 일단 업데이트(혹은 삭제)를 시키고 나서 변경된 row의 개수가 0이면 예외를 발생시키는 방법으로 예외 처리를 해도 괜찮나요? 코드는 아래와 같습니다.if(jdbcTemplate.update(sql, request.getName(), request.getId()) == 0) { throw new IllegalArgumentException(); }}
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
INDEX의 첫번째 칼럼은 정렬이 상관이 없는 것이 맞는지 궁금합니다
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 3-9강 여기까지 이해하신 내용은 무엇인가요? B+Tree 작동 원리, INDEX 생성 2. 어려움을 겪는 부분select o1_0.id, o1_0.created_at, o1_0.member_id, o1_0.order_date, o1_0.order_number, o1_0.status, o1_0.total_amount, o1_0.updated_at from ch3_orders o1_0 where o1_0.order_date>='2023-01-01T00:00' and o1_0.status= 'COMPLETED' and o1_0.total_amount>=500 order by o1_0.order_date desc; 위와 같은 쿼리를 실행할 때, INDEX의 첫번째 필드를 date로 하였을 때, date의 정렬 방식에 따라서 속도가 달라지는 이유가 궁금합니다. (즉, 아래처럼 2가지 방식의 INDEX)CREATE INDEX ids_order_date_status_amount ON ch3_orders(order_date desc, status, total_amount);CREATE INDEX ids_order_date_status_amount ON ch3_orders(order_date, status, total_amount); 날짜 기준으로 최신 데이터를 100개 가져오는 쿼리를 실행시켰을 때, B+Tree의 leaf 노드에서는 양방향으로 이동할 수 있기 때문에 date가 ASC 정렬된 상태에서 역방향으로 읽어 최신 데이터를 읽으나, DESC 정렬된 상태에서 순방향으로 읽어 가져오나 읽는 노드의 수는 동일하다고 생각이 듭니다. 실제로 date를 각각의 정렬조건으로 INDEX를 만들어서 실제로 실행을 시켰을 때에도 거의 차이가 존재하지 않았습니다. (데이터가 많지 않아서 그런지는 모르겠습니다...) 하지만 제가 시도 한 내용이 맞는지 잘 모르겠습니다.3. 시도해보신 내용 ASC, DESC 정렬을 시킨 INDEX를 사용하여 analyze 한 결과입니다.Limit: 100 row(s) (cost=50413 rows=100) (actual time=0.874..0.899 rows=100 loops=1) -> Index range scan on o1_0 using ids_order_date_status_amount over ('2023-01-01 00:00:00.000000' <= order_date AND 'COMPLETED' <= status AND 500 <= total_amount)...Limit: 100 row(s) (cost=50413 rows=100) (actual time=0.43..0.446 rows=100 loops=1) -> Index range scan on o1_0 using ids_order_date_status_amount over (order_date <= '2023-01-01 00:00:00.000000' AND status <= 'COMPLETED'), with index condition: (...1번은 ASC로 정렬한 INDEX입니다. 2번은 DESC로 정렬한 INDEX입니다. 여기에서 desc로 정렬한 acutal time이 거의 2배 빨라진 것을 확인 할 수 있습니다. analyze가 정확한 값을 알려주지 않을 수도 있다는 사실을 알고 있지만, 제가 판단한 내용이 맞는지 의심이 듭니다. 딩코딩코님도 desc로 정렬을 하신거 보면 이유가 있을 것이라고도 생각합니다. Q1. 위 상황에서 INDEX의 첫번째 칼럼은 정렬 조건이 의미가 없는 게 맞나요?Q2. 만약 의미가 있다면 어떤 부분에서 의미가 있는지 궁금합니다.
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.
제로초님 깃헙 소스코드 복사해서 실행한 파일로 크롬에서 실행했는데, input 폼에 id 넣고 등록을 누르면 404 에러 페이지가 뜹니다.사파리 브라우저는 문제 없이 돌아가고 크롬브라우저에서만 이렇게 됩니다. 어떤 문제인가요?에러 메세지도 안떠서 당황스러운데 이런건 구글링 해봐도 잘 안찾아지는데 앞으로 이런 문제는 어떻게 검색해야 찾을 수 있을까요 ?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
ImprovedOrder의 구조에 대한 질문입니다.
우선 orderResponse에서는 totalItems만 사용해서 수량만 요구하는 DTOOrderDetailResponse에서는 List<OrderItemResponse> items; 물품 정보를 요구하는 DTO 용으로 나뉘어 있고 Improved 역시 마찬가지였습니다.그런데 toOrderDetailResponse에서orderItems가 매핑이 안되어 있고, toOrderResponse와 코드가 동일한 상태였습니다. 제 생각에는 totalItems에 집중하신 나머지 빠뜨리신 거라고 생각되어 글을 남기게 되었고, 현재 ImprovedOrder에 orderItem이 매핑되어 있지 않은 상태 즉 반정규화 상태에서 어떻게 OrderItem을 매핑하는게 좋을지 생각해봤습니다.1. orderNumber로 findByOrderNumber단순히 ImprovedOrder에 저장된 orderNumber로 따로 orderItem들을 찾고 매핑해주는 것입니다. 현재 반정규화 의도가 totalCount만을 요구하는 도메인이 중요하기 때문에 ImprovedOrderDetailResponse를 반환할 때만 따로 매핑하는 것이죠. 다만 이는 ImprovedOrder와 OrderItem이 분명한 관계가 있음에도 매핑이 되어 있지 않는 것이라 좋은 방법인지는 의문입니다.2. ImprovedOrder에 orderItem 필드 추가totalItems와 orderItems를 모두 가지게 하고 totalItems만 필요한 상황이라면 굳이 orderItems를 get하지 않으면 Lazy 상태이기 때문에 fetch가 발생하지 않아 유연하게 사용할 수 있지 않을까 생각했습니다.포트폴리오를 위해 분석하던 과정에서 의문이 생겨 질문드렸습니다. 만약 제가 잘못 생각하고 있다면 말씀해주세요.
-
미해결[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
AWS에서 SSL 붙이기
선생님!! 혹시 강의에 SSL 붙이는것도 추가 강으로 만들어주실 수 있나요?
-
미해결[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
그누보드 세팅 오류
선생님~! 9강 강의 듣다가 잘 안되어서 질문드립니다.localhost 로 접속을 하니 http://localhost/dashboard/ 해당 url로 리다이렉트 되면서 들어가집니다.근데 강의에서는 localhost로 접속하면 http://localhost/eyoom/install/setup.php 해당 주소로 리다이렉트 되던데 저는 저 경로로 리다이렉트가 안되더라구요.그래서 직접 저 url로 주소를 입력하니 다음과 같이 Not Found 에러가 뜨더군요.무엇이 잘못되었을까요?
-
미해결[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
XAMPP에서 Mysql shell에서 로그인 오류
선생님~!. XAMPP에서 shell로 들어가 mysql 로그인 하려고 하면 자꾸 이렇게 떠요ㅠ
-
해결됨Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기
Spring Boot , Java 설치시 버전
spring 설정시 스크린샷과 같이 Spring Boot 3.4.3 버전, JAVA 23 버전이 나타나질 않습니다.참고로 저는 동영상 수업을 따라 설치 중이었습니다.
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
포트폴리오 질문이 있습니다.
포트폴리오에 해당 강의들의 내용을 담으면 정말 좋은 무기가 될 거 같다는 생각이 드는데, 백엔드 포트폴리오에서 웹 디자인 없이 이러한 비지니스 로직들에 대해 고민하고 해결하는 걸 프로젝트라고 해도 괜찮을까요?우선 챕터 2~4 내용을 합쳐서 2,3 내용으로 인터넷 배송 도메인을 동일하게 만든 다음 4내용으로 물건 수량이 50개 남은 경우 100명의 사용자가 몰린 경우 어떻게 처리할 지 확장할 생각입니다.기업 입장에서 실제 웹사이트가 없이 API만을 이용한 대규모 처리, 각종 문제들에 대한 고민과 해결을 인정해주는지, 그것을 프로젝트라고 칭하고 포트폴리오에 담아도 되는지 잘 모르겠습니다 ㅠ
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
후보정 로직에 대해 궁금한 것이 있습니다.
4-12강 스케쥴러를 활용해서 5분마다 누락된 예약번호를 보정하는 방식인데요.만약 이럴 경우 예약 직후 예약정보를 조회하는 사용자 입장에서는 예약번호가 없어서 해당 정보창에 문제가 발생할 거 같은데, 이러면 후보정 방식은 위험한 게 아닐까 하는 의문이 들었습니다.이런 건 지금 따지지 말고 수업용으로 유연하게 넘어가는 게 맞는걸까요?
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
안녕하세요 강사님 문의 사항이 있습니다
재성님 유투브에서 처음 뵙고 현재 ERP 및 백엔드 현업에서 근무중입니다현업에 도움이 될까 해서 강의를 결제해서 들었는데현재 저의 협업 수준에서는 다소 너무나 거리가 있는 강의 입니다....ㅠㅠ기초를 좀 다지고 싶은 마음에 결제해서 약간 수강을 해보았는데너무 낮은 수준의 강의 결제한것 같습니다제 업무 난이도와 비교하여 낮은 수준이지 강의는 입문자들에게 매우 좋다고 생각합니다해서... 동일한 가격대인 비전공자도 이해할 수 있는 AWS 입문/실전으로 교환할수 있는지 문의드리고 싶습니다약간의 강의 수강기록이 있지만.... 현재로서는 제가 도움을 받을수있는 부분이 없는 강의라서 ....이렇게 어려운 부탁을 드립니다혹시나 따로 소통에 필요할 경우를 대비해 메일을 첨부합니다guswnd1380@naver.com
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
키워드 검색 페이징에 대한 Redis 캐시
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 강의 잘 들었습니다! 궁금한 점이 있어서 문의 드립니다.강의에서는 상위 1000건에 대해서 articleId를 기준으로 Redis 캐시를 해두었는데 혹시 키워드(제목, 작성자, 내용등)에 대한 검색 페이징 처리도 캐시가 가능한걸까요? 제가 생각했을 때는 아래와 같은 방법으로 처리가 가능할 것 같은데 보통 대용량 트래픽 환경에서 해당 케이스를 어떻게 처리하는지 궁금합니다!키워드 검색이 있을 경우 RDB에서 직접 조회키워드 검색 조건 별로 Redis 캐시Elasticsearch 도입 후 동기화하여 키워드 검색시 Elasticsearch에서 조회
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
노션에 오타가 있는 거 같아요
[4주차] 꼬임을 막는 트랜잭션과 락 전략02.트랜잭션가 ACID7) 초기 DDL & DML 설정1000건인 거 같은데 50만이라고 적혀있어요
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
ArticleLikeRepository 부분에 대한 내용 질문
@Repository public interface ArticleLikeRepository extends JpaRepository<ArticleLike, Long> { // 메서드 이름 기반 쿼리 생성 // JPQL로 암시적으로 생성 해줌 // SELECT a FROM ArticleLike a WHERE a.articleId = ?1 AND a.userId = ?2 Optional<ArticleLike> findByArticleIdAndUserId(Long articleId, Long userId); }보통 Repository 부분 보면 JPQL로방식으로 native쿼리를 통해 db데이터 조회,삭제,추가,업데이트 등등 내용이 많앗는데,, 아래부분은 쿼리를 작성 안해도 명시적인 구현체 없이 메서드 이름 기반 쿼리생성을 통해서 데이터를 조회 할수 있다고 하면 될가요?? 암시적으로 메서드 이름 기반 쿼리 생성은 암시적으로 JPQL이 생성된 상태에서 조회되는건가요?? 혹시 나해서 주석으로 spring document랑 기타 자료를 찾아서 주석문을 추가 했는데, 제가 이해한 부분이 맞나 싶어서 글을 올려봣습니다
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
중고급 SQL과 실전 데이터 분석 101 문제 풀이, 13강 EXTRACT
강의교안에 'EXTRACT'부분이 빠져있는데 해당 자료 어디에 따로 업데이트 되어 있을까요? 있으면 링크알려주시고, 없으면 강사님이 설명하시는 부분 'EXTACT' 자료 첨부파일로 공유해주세요- 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.