inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

eggmun(문성진)님의 게시글

eggmun(문성진) eggmun(문성진)

@eggmun

수강평 작성수
2
평균평점
5.0

게시글 40

질문&답변

자꾸 수정하면 git관련한게 나오네요

해당 표시는 오류가 아니라 VS Code에서 Git의 파일 상태를 보여주는 기능입니다. 파일 오른쪽의 U 는 Untracked의 약자로, 새로 생성되어 아직 Git에서 추적하고 있지 않은 파일이라는 의미입니다. 기존에 Git에서 관리하던 파일을 수정하면 M (Modified)이 표시되는 식으로 현재 파일의 Git 상태를 보여줍니다. Git을 사용하고 계신다면 해당 파일을 Git에 추가하고 커밋하면 U , M 등의 표시가 사라집니다. 만약 Git 상태 표시는 유지하되 탐색기에서 색상이나 문자 표시만 보이지 않게 하고 싶다면 VS Code 설정에서 Explorer: Decorations 관련 설정을 끌 수도 있습니다. 따라서 강의를 잘못 따라가서 생긴 문제는 아니고, VS Code에서 현재 Git 상태를 시각적으로 표시해주는 기능이라고 보시면 됩니다.

좋아요수
0
댓글수
3
조회수
44

질문&답변

실무에서의 인덱스 관리 방법이 궁금합니다

실무에서는 인덱스의 설계 의도를 별도의 한 가지 방법으로 관리하기보다는, 보통 여러 방법을 함께 사용하는 편입니다. 가장 흔한 방법은 인덱스를 생성하는 DB 마이그레이션 파일이나 PR, 커밋 메시지에 생성 이유를 남기는 것입니다. 예를 들어 user_id + status + created_at 조건으로 주문 목록을 조회하는 쿼리의 성능 개선을 위해 생성 처럼 어떤 쿼리나 사용 패턴을 고려해서 만든 인덱스인지 기록해두는 방식입니다. 이렇게 하면 나중에 다른 개발자가 해당 인덱스가 추가된 커밋이나 PR을 확인하면서 설계 의도를 추적할 수 있습니다. 규모가 있는 프로젝트에서는 ERD, DB 설계 문서, Wiki 등에 주요 인덱스와 목적을 따로 정리하기도 합니다. 다만 모든 인덱스를 별도 문서로 관리하면 실제 DB와 문서가 서로 달라질 가능성이 있기 때문에, 보통은 마이그레이션 코드와 Git 이력을 기준으로 관리하고 중요한 내용만 문서화하는 경우가 많은 것 같습니다. 또 단순히 “조회 성능 개선용”이라고 적기보다는 실제로 어떤 쿼리를 위해 만들었는지 남겨두는 것이 더 도움이 됩니다. 예를 들어 WHERE user_id = ? AND status = ? ORDER BY created_at DESC 같은 대상 쿼리를 함께 기록해두면 나중에 인덱스의 컬럼 구성이나 순서를 이해하기도 훨씬 쉬워집니다. 그리고 시간이 지나면서 데이터 분포나 쿼리 패턴이 바뀔 수도 있기 때문에, 인덱스를 만들 당시의 의도뿐 아니라 실제 실행 계획이나 Slow Query 등을 통해 해당 인덱스가 여전히 효과적인지 주기적으로 확인하는 것도 중요합니다.

좋아요수
0
댓글수
1
조회수
31

질문&답변

만일 실물을 택배로 배송해야 할 경우 주소지 입력하는 방법이 궁금해서요.

실무에서는 보통 주소 전체를 사용자가 직접 입력하게 하기보다는 주소 검색 API를 사용합니다. 국내 서비스라면 카카오(다음) 우편번호 서비스를 많이 사용합니다. 사용자가 주소 검색 버튼을 누르면 주소 검색창이 뜨고, 주소 검색 우편번호와 기본주소 자동 입력 상세주소(동/호수 등)만 직접 입력 하는 방식으로 구현하는 경우가 많습니다. DB는 말씀하신 구조와 비슷하지만, 보통 배송 정보를 별도로 관리합니다. 예를 들면 수령인 이름 전화번호 우편번호 기본주소 상세주소 정도를 저장할 수 있습니다. 여기서 한 가지 주의할 점은 회원의 주소와 실제 주문의 배송지를 분리하는 것 입니다. 회원이 자주 사용하는 배송지를 저장해둘 수는 있지만, 주문이 완료되면 그 시점의 배송 정보를 주문에 별도로 저장해두는 편이 좋습니다. 예를 들어 주문 후 회원이 주소를 변경하더라도 이미 주문한 상품의 배송지가 변경되면 안 되기 때문입니다. 그래서 대략적으로는 회원 → 주문 → 주문 배송정보 같은 구조로 두고, 주문 배송정보에 당시 입력한 수령인/전화번호/우편번호/주소를 저장하는 방식으로 구현할 수 있습니다. 주소 검색 자체를 직접 우편번호 DB를 구축해서 구현할 수도 있겠지만, 국내 서비스에서는 굳이 주소 데이터를 직접 관리하기보다는 이미 제공되는 주소 검색 서비스를 이용하는 것이 훨씬 편합니다.

좋아요수
1
댓글수
4
조회수
38

질문&답변

primitive에 onClick 이벤트가 안되는 경우

primitive 에도 onClick 은 사용할 수 있습니다. 현재 코드에는 이미 onClick 이 연결되어 있기 때문에, 우선 handleClick 안의 console.log('click') 자체가 찍히는지 확인해보세요. 만약 이것도 찍히지 않는다면 수동 raycaster.intersectObjects() 문제가 아니라 R3F 이벤트가 해당 모델에 전달되지 않는 상태입니다.

좋아요수
0
댓글수
3
조회수
56

질문&답변

최댓값 구하기(서바이벌)에서 수식 구성에 대한 질문

안녕하세요! 연습 목적으로 다양한 문법을 사용해 보는 것은 좋은 방법이라고 생각합니다. 다만 삼항 연산자는 보통 조건에 따라 값을 선택하거나 대입할 때 사용하는 경우가 많습니다. scanf_s() 처럼 입력을 받거나 부수 효과가 있는 함수를 실행하는 용도로 자주 사용하지는 않습니다. 따라서 문법을 익히기 위한 연습은 괜찮지만, 실제 코드에서는 가독성을 위해 if 문을 사용하는 경우가 더 많습니다. 삼항 연산자는 값을 선택하는 상황에서 사용하는 습관을 들이면 이후에도 도움이 될 것입니다.

좋아요수
0
댓글수
2
조회수
62

질문&답변

작용 반작용 이해 못하겠어요 ㅠ

좋은 질문입니다! 많은 분들이 처음 배우면 헷갈리는 부분인데, 핵심은 작용과 반작용은 같은 물체에 작용하는 힘이 아니라 서로 다른 물체에 작용하는 힘 이라는 점입니다. 공을 차는 상황을 예로 들어볼게요. 내가 공을 앞으로 찹니다. (발 → 공) 동시에 공도 내 발을 같은 크기의 힘으로 밀어냅니다. (공 → 발) 여기서 중요한 것은, 공은 내가 민 힘을 받아 앞으로 움직이고, 발은 공이 민 힘을 받는 것 입니다. 즉, 두 힘이 서로 다른 물체에 작용하기 때문에 서로 상쇄되지 않습니다. 쉽게 말하면 친구와 마주 보고 서서 서로 밀어보는 것과 같습니다. 내가 친구를 밀면 친구도 나를 똑같이 밉니다. 그런데 친구가 받는 힘과 내가 받는 힘은 서로 다른 사람에게 작용하기 때문에 없어지는 것이 아닙니다. 둘 다 뒤로 밀릴 수도 있죠. 그렇다면 공을 찼을 때 왜 발은 거의 안 움직일까요? 그 이유는 발과 몸이 공보다 훨씬 무겁기 때문 입니다. 같은 힘을 받아도 가벼운 공은 훨씬 많이 움직이고, 무거운 사람은 거의 움직이지 않습니다. 자동차와 자전거를 같은 힘으로 밀었을 때 자전거가 더 쉽게 움직이는 것과 같은 원리입니다. 즉, 작용 반작용은 아주 작은 힘부터 아주 큰 힘까지 항상 성립합니다. 힘이 일정 크기 이상이어야만 적용되는 법칙은 아닙니다. 한 줄로 기억하면 됩니다. 작용과 반작용은 항상 크기는 같고 방향은 반대이지만, 서로 다른 물체에 작용하기 때문에 서로 없어지지 않습니다. 이 한 문장만 이해하면 작용·반작용은 거의 다 이해한 것입니다.

좋아요수
0
댓글수
1
조회수
24

질문&답변

타입 에러 관련 질문입니다.

안녕하세요. 타입 에러가 발생하는 부분의 에러 메시지와 관련 코드를 함께 첨부해 주시면 원인을 확인해서 해결할 수 있도록 도와드리겠습니다!

좋아요수
1
댓글수
2
조회수
52

질문&답변

bash에 경고 표시가 떠요

안녕하세요! 마우스 커서를 해당 경고창 위에 올려보시면 경고가 표시되는 이유를 확인하실 수 있습니다. 대부분은 큰 문제가 없는 안내 메시지이므로, 특별한 문제가 없다면 그대로 사용하셔도 됩니다.

좋아요수
0
댓글수
3
조회수
55

질문&답변

260. 카카오 로그인 구현하기 - 2 에서 백엔드 시작시 경고 메시지

아래 AI 답변처럼 index: true / unique: true 옵션과 schema.index() 를 같이 쓰면 중복 인덱스가 생겨서 저 경고가 뜨는 거예요. 실제로는 서비스 동작에는 큰 문제 없지만, 불필요한 인덱스가 중복으로 잡히니까 코드 관리 차원에서 한 쪽만 쓰시는 게 깔끔합니다. 특히 이메일 같은 경우는 보통 unique: true 만 두고, index: true 나 schema.index() 는 잘 사용하지 않습니다. (물론 다른 필드에 검색 속도 최적화용으로는 쓸 수 있습니다)

좋아요수
0
댓글수
3
조회수
135

질문&답변

애플 심사 실패

안녕하세요. 1.0.0 또는 1.0.1둘 다 상관없이 재심사 요청하시면 됩니다. 만약 1.0.0으로 배포하려고 한다면, 빌드 넘버를 올린 후 다시 심사를 요청하시면 됩니다!

좋아요수
0
댓글수
2
조회수
148