묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
도커 설치
윈도우 버전 이슈로 로컬에 도커를 설치 못하는 상황인데요 (예전에도 설치 이슈있어서 해결하려다가 실패) 혹시 해결 방법 알고 계실까요?해결이 어려우면 깃허브 코드스페이스에서도 실습이 가능한 내용일까요
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
draw.io 다크모드 어떻게 할수있을까요?
영한님 안녕하세요.강의 영상 처럼 draw.io 다크모드로 변경하고 싶은데 어떻게 할수있을까요? 감사합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
mysql 인덱스 생성 시 컬럼의 우선순위 질문
9:05분 쯤에create unique index idx_article_id_path on comment_v2 ( article_id asc, path asc );이렇게 인덱스 컬럼에 asc를 붙이신 이유가 있을까요? 생략할 수 있지 않나 해서요!order by는 확실히 asc 생략해도 무방한데, 인덱스는 좀 헷갈려서 질문 드립니다.
-
해결됨백엔드 개발자 성능 개선 초석 다지기
thread pool
common pool을 사용하지 않도록 thread pool을 설정 해야 된다고 주의사항을 적어주셨는데 그 이유는 무엇인가요?그리고 둘의 차이는 onPool-worker-3, pool-1-thread-8 이라고 알려주셨는데 차이가 이거밖에 없는건가요?
-
해결됨실전! 데이터베이스 완전정복 [설계편]
인덱스 사용 패턴 질문
안녕하세요, 강의 중 궁금한 점이 생겨 질문드립니다.GROUP BY 사용 패턴3: 필터링 후 그룹화에서 WHERE status = 'paid' GROUP BY status ORDER BY status처럼 동일한 컬럼을 사용하는 경우, 하나의 인덱스로 효율적으로 처리할 수 있다고 말씀하셨는데요.이 경우 WHERE 절에서 status = 'paid'로 필터링하면, 결과가 모두 동일한 status 값을 가지게 되어 GROUP BY나 ORDER BY를 추가해도 WHERE 절만 사용한 것과 결과가 동일하지 않을까요?궁금한 점:WHERE, GROUP BY, ORDER BY에서 동일한 필드를 사용하는 실제 사용 사례가 있을까요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
id bigint unsigned
테이블 만드실 때 id의 타입을 bigint 로 하고 unsigned는 선언하지 않으셨는데, 굳이 필요 없어서 사용하지 않으신걸까요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
created_at, updated_at 자동화는 DB, JPA 중 어느곳에서 하는게 좋을까요?
안녕하세요 영한님!11강에서 created_at과 updated_at 값을 데이터베이스의 DEFAULT CURRENT_TIMESTAMP과 ON UPDATE CURRENT_TIMESTAMP 기능을 사용하는 가이드에 대해 다뤄주셨는데요. Spring Data JPA를 사용하면 아래와 같이 @EnableJpaAuditing 을 사용하여 Application 단에서 Auditing 기능을 사용할 수 있는 걸로 알고 있습니다.@EntityListeners(AuditingEntityListener.class) @MappedSuperclass @Getter public class BaseEntity { @CreatedDate @Column(updatable = false) private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime updatedAt; }만약 위와 같은 JPA 기능을 데이터베이스와 같이 사용한다면, Application 단에서 createdAt , updatedAt 값이 채워진 채로 저장되고, DB에서 한 번 더 덮어쓰는 구조가 될 것 같더라고요. 실무에서 created_at과 updated_at 값을 채울 때, @EnableJpaAuditing 과 데이터베이스의 DEFAULT CURRENT_TIMESTAMP과 ON UPDATE CURRENT_TIMESTAMP 중 어떤 것을 사용하는게 더 나은 선택일지 궁금합니다. 각각을 사용했을 때 유리한 케이스가 따로 있을까요?
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
논리적 실행 순서에서 SELECT 설명 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. SQL 쿼리의 논리적 실행 순서에서 SELECT 절 설명에 대한 질문이 있습니다.SELECT 절에 SUM, COUNT 같은 집계 함수 계산이라는 부분이 있는데 이 내용은 GROUP BY 에서 HAVING 으로 넘어갈 때 이루어지는 것이 아닌가요? HAVING 절에서 집계 함수로 필터링이 가능한데 이 계산이 SELECT 에서 이루어진다는 것이 이해가 가지 않아서 질문드립니다.
-
해결됨실전! 데이터베이스 완전정복 [설계편]
논리적 삭제 적용시 INDEX 생성 전략
안녕하세요 논리적 삭제를 위한 컬럼 적용시 해당 테이블에서 조회할때 조회 조건에 항상 deleted_at 컬럼이 포함될거 같은데요 그러면 INDEX생성에 반영해주는게 좋을까요?
-
해결됨React & FastAPI로 만드는 투표 커뮤니티 플랫폼: 결제 시스템으로 수익화까지!
6-2 강의 노션 코드 오타인거죠? 2
위치:SingleTopic/Chart/ChartCanvas.jsx (39번 라인)문제: stroke={colors[i].bg} // ❌ 현재 코드원인:voteColors.js의 실제 구조는 문자열 배열입니다예: 2: ["#10B981", "#F43F5E"].bg 프로퍼티가 존재하지 않아 undefined 반환해결:stroke={colors[i]} // ✅ 수정 코드결과: 수정 후 차트 선 색상이 정상적으로 표시됩니다.제안:후속 수강생들을 위해 강의 자료 업데이트 부탁드립니다. 강의 노션 코드에 오타가 너무 많아서 도움을 주는 자료인지 강의 진행을 방해하는 자료인지 모를 정도입니다. 솔직히 좀 심각합니다.감사합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
*가 아니가 article_id로 count를 뽑아줘야 할까요?
@Query( value ="select count(t.article_id) from ( " + " select article_id from article where board_id = :boardId " + "limit :limit " + ") t", nativeQuery = true ) Long count(@Param("boardId") Long boardId, @Param("limit") Long limit);위와 같이count(*)가 아니라 count(t.article_id) 처럼 alias도 붙여야 하고, 모든 걸 뽑는 게 아니라 딱 서브쿼리 안에서 추출한 article_id만 count로 뽑아줘야 테스트가 통과되더라고요.이유가 있을까요...?
-
미해결김영한의 실전 데이터베이스 - 기본편
인덱스를 활용하여 검색할 때 궁금한 점이 있습니다.
sellers와 items 테이블이 있을때두 테이블을 조인한다고 할때만약 items에 seller_id가 외래키로 잡혀 있지 않을 경우select * from items i join seller s on i.seller_id = s.seller_id이렇게 조인하면 풀스캔 조인이 일어나는 걸까요?추가적으로 select * from items i join seller s on i.seller_id = s.seller_idwhere s.seller_id = '행복상점'과select * from items i join seller s on i.seller_id = s.seller_idwhere i.seller_id = '행복상점'이렇게 두 쿼리를 실행 할떄 첫번째 쿼리는 인덱스를 활용해 검색을 하고 두번째 쿼리는 테이블 풀스캔을 해서 검색할까요?
-
해결됨김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
이미 개발이 끝난 프로젝트에서도 용어사전이 필요할까요?
강의 도중 용어사전에 대해 나왔는데 현재 프로젝트가 이미 끝나서 배포가 된 상황인데 지금이라도 용어사전을 만드는게 나을까요...?
-
미해결김영한의 실전 데이터베이스 - 기본편
인덱스 사용에 대한 질문이 있습니다!
MySQL 8.x 버전에서 다음과 같이 두 개의 인덱스를 생성했습니다.CREATE INDEX idx_items_price ON items (price); CREATE INDEX idx_items_price2 ON items (price DESC); 이 상태에서 아래 쿼리를 실행하면,SELECT * FROM items WHERE price BETWEEN 50000 AND 100000 ORDER BY price DESC;처음에는 possible_keys에 두 인덱스가 모두 나타나고, 옵티마이저가 idx_items_price (오름차순 인덱스)를 backward index scan으로 사용합니다. 이후에는 몇 번 실행 후에는 possible_keys에 idx_items_price2 (내림차순 인덱스)만 나타나고 이 인덱스가 쿼리에 사용됩니다.이런 현상이 발생하는 원인이 옵티마이저가 통계 정보를 수집하고 점차 최적화되어 인덱스 선택이 변경되는 것인지 궁금합니다. 그리고 한 번 최적화가 이루어진 후에는 idx_items_price2 인덱스를 계속 사용하는 것이 보장되는지, 아니면 나중에 다시 변경될 가능성도 있는지도 알고 싶습니다.
-
해결됨5천억건이 넘는 금융 데이터를 처리하는 토스 개발자에게 배우는 MySQL
커서기반의 페이징 부분 질문 있습니다.
7:05 부분에서 커서 기반의 페이징을 할 때에는 "UN아이디를 사용하게 됩니다." 라고 말씀하시는 걸로 들리는데 맞을까요?? UN아이디가 어떤 것을 말하는 건가요?
-
해결됨React & FastAPI로 만드는 투표 커뮤니티 플랫폼: 결제 시스템으로 수익화까지!
[강의 오류 리포트] React Router Outlet 사용 오류
문제 발생 섹션: 4-1. Footer 제작문제 내용:강의 자료에서 제공된 App.jsx 코드에 구조적 오류가 있습니다.문제점:1. RootLayout 컴포넌트 내부에서 <Outlet /> 컴포넌트를 사용하고 있으나, 라우터 설정에 자식 라우트(children routes)가 정의되어 있지 않습니다.2.현재 라우터 구조:```const router = createBrowserRouter([ { path: "/", element: <LootLayout />, // children이 없음 - Outlet이 렌더링할 내용이 없음 },]);```발생한 에러:Outlet 컴포넌트 관련 에러 발생해당 코드 제거 시 정상 동작제안 사항:아래 두 가지 중 하나로 수정이 필요합니다:방법 1)자식 라우트가 없다면 Outlet 제거```<main className="flex-grow container mx-auto px-4 py-8"> {/* <Outlet /> 제거 */}</main>추가 의견:해당 강의를 수강하면서 이번 건 외에도 여러 오류를 발견했습니다. 학습에 상당한 지장이 있는 상황이므로, 강의 전체에 대한 코드 검수 및 업데이트를 요청드립니다.특히 React Router v6의 최신 문법과 개념(Outlet, createBrowserRouter 등)이 정확히 반영되었는지 재확인이 필요해 보입니다.수강생들이 불필요한 디버깅 시간을 소비하지 않도록 조속한 개선 부탁드립니다.
-
해결됨React & FastAPI로 만드는 투표 커뮤니티 플랫폼: 결제 시스템으로 수익화까지!
[강의 오류 제보] Navbar 컴포넌트 코드 오류 발견
안녕하세요, '리액트 + FastAPI로 투표 커뮤니티 플랫폼' 강의를 수강 중인 학습자입니다. 강의 자료의 코드를 그대로 따라했을 때 에러가 발생하여 제보드립니다. --- 📍 발생 위치: - 강의 섹션: [섹션 3/ch2. 메뉴바 제작] - 파일: src/Components/Navbar/index.jsx ❌ 발생한 에러: ReferenceError: logout is not defined 🔍 문제 원인: 강의 자료 코드에서 함수는 onLogoutClick, onLoginClick, onSignupClick으로 정의했으나, 자식 컴포넌트에 전달할 때는 정의되지 않은 logout 변수를 사용하고 있습니다. 현재 강의 자료 코드: ```javascript const onLogoutClick = () => { ... }; <AuthButtons logout={logout} /> // ❌ logout 미정의 <MobileMenu logout={logout} /> // ❌ logout 미정의```수정방법:<AuthButtonsisAuthenticated={isAuthenticated}isOpen={isOpen}setIsOpen={setIsOpen}onLogoutClick={onLogoutClick} // ✅ 수정onLoginClick={onLoginClick} // ✅ 추가onSignupClick={onSignupClick} // ✅ 추가/><MobileMenuisOpen={isOpen}setIsOpen={setIsOpen}isAuthenticated={isAuthenticated}onLogoutClick={onLogoutClick} // ✅ 수정onLoginClick={onLoginClick} // ✅ 추가onSignupClick={onSignupClick} // ✅ 추가/>💡 제안: 이전 강의 자료에서는 올바르게 onLogoutClick 등을 전달하고 있었는데, 특정 시점부터 logout으로 변경되면서 함수명과 불일치가 발생한 것으로 보입니다.강의 자료 업데이트 부탁드립니다. 감사합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
13분쯤 테스트하다가 안 된다면?
저도 13분쯤에 create 테스트를 하다가 안 되어서 삽질했는데, 드디어 됐습니다.원인은createdAt, updatedAt에 값을 설정하지 않고 넣으려다 보니, null로 들어가서 에러가 발생했던 것이었습니다.그리고 mysql에 접속했을 때는 use article; 로 DB에 접근해야 합니다. 저는 use database;로 접근하고 있었네요. 이 과정에서 GPT의 도움을 많이 받았습니다. 13분쯤 진행다가 나오던 그 500 에러 로그는 애플리케이션을 확인해 봐야 하고요. 테스트 코드의 create 메서드에는 IDE의 설명도 같이 참고했습니다.왜 오류가 떴는지 알려주더군요.
-
미해결김영한의 실전 데이터베이스 - 기본편
트랜잭션 락 질문있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님! 강의 잘보고 있습니다🙂트랜잭션 강의를 듣고나니 mysql에서 table에서 트랜잭션관리 + lock이 필요함을 이해했습니다. 근데 이 강의를 듣고나니 헷갈리는게 고급1편강의에서 lock(reentrant lock, synchronized, cas, 비관적락 같이 임계영역을 보호하는 것) 과 헷갈려 질문하게 되었습니다.먼저 executor패키지 같은 멀티스레드 경우는 당연히 여러 사용자의 요청을 동시에 처리해야하니 필수적이라고 이해되는데 문제는 lock관련 부분이 헷갈리기 시작했습니다ㅠㅠ 일단 이런 애플리케이션 단의 lock들(reentrantlock synchronized cas 비관적락)은 서버가 여러대 A,B,C서버가 되면 각각의 서버에서만 lock을 관리해서 A서버의 a1스레드 출금로직 과 B서버의 b1스레드 출금로직이 겹칠 수 있다고 하더라구요! 그래서 애플리케이션에서 각 서버에 lock을 걸었어도 mysql단의 lock이 필수적이다. 라고 이해했는데 이러면 애플리케이션단에서 lock들이 존재하는 필요성이 사라져서 의문입니다..ㅠㅠ 그냥 db단에서만 걸어주면 충분하지 않나요?? 어차피 걸어도 서버 분산화가되면 소용없는거 아닌가요..? 그래서 찾아본 해결방안이 애플리케이션 java단의 출금메서드에 @Transactional을 걸고 관련 repository메서드들에 @Lock(PESSIMISTIC_WRITE)를 걸면 SELECT --- FOR UPDATE가 걸려서 db 단에서 lock이걸린다.reentrantlock같은건 쓰지 않아도 된다.로 이해했는데 맞을까요? 그렇다면 이러한 lock들은 단일서버에서만 통하니 실무에선 잘 사용하지 않는것인지...배운지식들을 합치니까 헷갈리기 시작하네요😇😇강사님께선 어떻게 하시는지 궁금합니다!!!긴 질문 읽어주셔서 감사드립니다🥰
-
해결됨카카오 면접관과 함께하는 워크플로우 기반의 대용량 트래픽 처리 기법
'서비스 개발자를 위한 Kafka 쉽고 깊게 알기' 학습자료 오류
자료를 다운로드 하면, 윈도우에서는 대부분의 압축파일 내에 파일이 없다고 나옵니다. Mac에서 작업하셔서 그런 것 같은데 확인 부탁드립니다.