묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
step 4 - fanout 관련 질문
안녕하세요, step 4에 fanout 브로드캐스팅으로 구현한 이유가 궁금해서 질문드립니다.다른 질문을 찾아보니 아래와 같이 답변을 주셨습니다."정리하면 Fanout은 모든 큐에 메시지를 브로드캐스트하지만 WebSocket을 이용해 특정 뉴스 타입만 선택적으로 구독할 수 있습니다. (서로 독립적으로 동작합니다)따라서 Pub/Sub의 성격을 이용해서 브로드 캐스트를 하는 것은 Direct나 Topic 보다 Fanout이 적합하고, 전체 브로드캐스트가 필요하지 않은 Pub/Sub의 일부 제한이 필요한 경우는 WebSocket과 STOMP를 통해서 필터링.. 여기서 저는 왜 step4에서 Pub/Sub의 성격을 이용해서 브로드캐스팅하는지 이해가 안됩니다.어차피 WebSocket에서 필터링할 것이라면 왜 비효율적으로 브로드캐스팅하는건가요?fanout보다 topic Exchange가 적합하지 않나요?어차피 브로드캐스팅하고 모든 큐에 넣을 것이라면, javaQueue, vueQueue, springQueue로 구분할 필요가 있나요? pub/sub 모델은 아니지만, 하나의 newQueue로 관리하고 simpMessagingTemplate의 destination을 구분하는 것은 어떤가요?
-
미해결클린업 JavaScript: 점프업!
텐서플로우 강의 질의
안녕하세요 영보님영보님의 빅팬 수강생 한명입니다영보님 강의 믿고보는 강의기에, 제가 이렇게나 많이 수강중에 있습니다.텐서플로우 강의는 안샀습니다. 텐서플로우가 뭐지? 라는 의문이 있긴했지만,웹 개발자에게 텐서플로우가 필요한 강의인가? 자바스크립트로 텐서플로우를 설명해주는 강의인 것은 좋은것같습니다.제가 텐서플로우를 현업에서 다루지 않더라도, 강의를 들으면 어떤 이점이 있을지 매우 궁금합니다.솔직히 이야기해서 영보님이 해주시는 이야기가 궁금해서 듣고싶은 마음이 크고요.두번째로는 웹개발자가 텐서플로우를 들으면 얻게되는 것이 어떤것이 있는지 궁금합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
강의 15분에 질문드립니다
NullReferenceException: Object reference not set to an instance of an objectMonster+<>c__DisplayClass5_0.<GetDamage>b__3 (UnityEngine.GameObject value) (at Assets/00_Scripts/Monster.cs:79)Object_Pool.Get (System.Action`1[T] action) (at Assets/00_Scripts/Manager/Pool_Mng.cs:28)Monster.GetDamage (System.Double dmg) (at Assets/00_Scripts/Monster.cs:77)Bullet.Update () (at Assets/00_Scripts/Bullet.cs:58)이게 나와서 유니티가 다운되는데요피드백좀 주세요
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
[git설치]
윈도우 git 설치 후 이름과 이메일 설정 어디서 어떻게 하는 것인지 문의 드립니다
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
강의 수강 목적입니다!
카일님의 강의를 듣고 전 신입 PM으로서의 마음가짐, 능력, 성장 속도를 얻고 싶습니다. 그걸 위해 섹션별로 나누어 강의를 듣고 이에 대한 생각들과 복습 자료들을 노션에 기록할 예정입니다. 수강한 후, PM으로서의 커리어를 시작해 BigQuery 강의까지 들을 수 있게 데이터를 잘 다룰 수 있는사람이 되고 싶습니다!
-
미해결롱런하는 슈퍼 개발자가 되기 위한 필수 지식, IT 인프라 기초 총정리
같은 네트워크라는게 뭔가요?
강의 내용 중 이해가 잘 가지 않는 내용이 있으면 질문해 주세요! 같은 네트워크, 같은 네트워크 안에 물려있다이렇게 말씀하시는데이런 애들은 mac 어드레스를 아니까 이걸 사용해서 연결을 할 수 있는데L3은 같은 네트워크가 아니라 다른 네트워크에 있는 서버에 전송을 하려는거라 ip 어드레스를 사용한다 고 하셨는데느낌으로는 뭔지 알겠는데 정확하게는 '같은 네트워크'가 어떤 건지 잘 모르겠습니다거리로 정하는 건가요? 아니면 네트워크 이름이 있어서 같은 이름의 네트워크로 물려있는 서버들이 있나요?답변 부탁드립니다감사합니다
-
미해결
강의내용 문의
강의 내용이 한국주식만 적용이 되는 건가요?저는 미국주식과 코인에 관심이 많은데....아니면 강의를 활용 미국주식이나 코인같은 곳에도 활용가능한지 궁금합니다.
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
git 브렌치?
git 브렌치가 뭔가요? git init 명령어는 처음 들어보는 것 같은데, 어디서 변경할 수 있는건가요?
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
잘 한건가요?
잘 한건가요?
-
해결됨코드 한 줄 안 쓰고 주식 자동 분석 시스템 만들기 feat. Claude CLI
노션 링크 확인 요청드려요.
노션을 사용 안 해봐서 제가 어떻게 신청해야 하는지, 노션 주소가 어떻게 되는지 모르겠네요. 도움 요청드립니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
책 추천 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강의 잘 듣고 있습니다7:55분쯤에 자세한건 책에서 살펴보시라고 하셨는데요 혹시 추천해 주실만한 네트워크 책이 있을까요?
-
미해결Certified Kubernetes Administrator (CKA) – Practical Exam Guide
nginx-static 네임스페이스가 없습니다.
[👍좋은 질문을 했을 때 좋은 답변이 돌아 옵니다]1. 실습 중 본인의 환경이 가이드와 다른 부분이 있었다면 말씀해주세요.2. 해당 문제의 발생 빈도(재설치 여부)와 문제 해결을 위해 시도해본 케이스를 말씀해 주시면 원인 파악에 큰 도움이 됩니다.3. 에러 메시지만 봐서는 저도 모르는 경우가 많아요. 그전에 했던 작업이 포함된 캡쳐 화면도 부탁 드려요.4. 영상 내용에 대한 질문 시 해당 시간을 같이 올려 주시면 답변을 드리는 시간이 더 빨라집니다.5. 긴 로그는 제 메일로 보내주세요. (k8s.1pro@gmail.com)6. 카페 [강의 자료실]에도 많은 질문과 답변들이 있어요!
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
User Memory 파일 생성 폴더
~/.claude/CLAUDE.md 에서 생성이 안되고 하위 폴더에서 생성이되네요
-
미해결
안녕하세요. 수강기간 연장 부탁드립니다.
안녕하세요.현재 수강중인 강의를 기간 내에 수강 완료하지 못할 것 같습니다.학습 기간의 연장을 부탁드립니다.- AWS Certified Solutions Architect - Associate 자격증 준비하기감사합니다.
-
해결됨원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
중간에 막혀서 남깁니다 도와주세요
여기서 에러가 계속 나옵니다 ~ 한번 영상 나와서 두번째 영상 뽑는데 이렇습니다. 어떻게 해야할까요?
-
미해결실전 프론트엔드 테스트 시작하기
장바구니 테스트 코드 작성에 대한 질문입니다.
강의를 들으며 장바구니 페이지에 대해 Cypress로 테스트 코드를 작성하다가 궁금한 점이 몇가지 있어서 질문을 작성합니다 :) 장바구니 페이지에서 '장바구니의 상품을 삭제한 후 장바구니에 담겨있는 총 수량과 가격이 변경된다.'라고 테스트 시나리오를 작성했는데 이런 걸 e2e로 테스트 하는 게 맞는지 잘 모르겠습니다.이런 부분은 unit 테스트로 넘겨야 하는 부분일까요?e2e테스트는 어떤 걸 중심으로 하면 좋을지 잘 모르겠습니다. 그냥 제가 필요하다고 생각되는 게 있으면 진행을 하면 되는 걸까요? 저도 모르게 저 대신 클릭 등을 수행하고 값을 확인하는 용도로 다루게 되는 것 같습니다. 그래도 일단 1번 질문에서 작성한 테스트 시나리오에 대한 코드를 직접 작성해봤습니다.이 때, 장바구니 페이지에서 장바구니 아이템 데이터가 getServerSideProps를 통해 주입되고 있더라구요. 이 상황에서 API 모킹을 어떻게 해야할지 몰라서 Claude Sonnet 4.6이랑 구글링을 통해 몇가지 코드를 작성해봤습니다. 단순하게 테스트 코드가 작성되지 않고 다소 복잡하게 작성이 되는 것 같아서 뭔가 이 방향이 맞지 않는 것 같다는 생각이 들었습니다. 그래서 테스트 시나리오 자체를 제가 잘못 생각한 것 같다는 생각이 들기도 했습니다. SSR 환경에서 어떤 코드로 작성을 하는 게 맞는 방식인지 알 수가 없어서 한 번 확인해봐주시면 감사하겠습니다 :)a. nock + intercept 사용 - SSR은 서버 프로세스에서 진행되기 때문에 intercept 할 수 없다고 하여 nock을 사용했습니다. 코드는 해당 링크를 참고 했습니다. - 그리고 router.replace를 통해 데이터를 refetch 될 때도 백엔드 api를 intercept를 할 수 없다고 해서 '/_next/data/**/*.json'를 intercept 했습니다. - 개인적으로 아래 코드는 'nock'과 'intercept'를 혼용해서 쓰다보니 장기적으로 봤을 때 유지보수성 측면에서 좋지 않은 코드라고 느꼈습니다. it.only('장바구니의 상품을 삭제한 후 총 수량과 가격이 변경된다', () => { // 1) 초기 로드용 nock (SSR - 서버사이드 fetch) cy.task('nock', { hostname: Cypress.env('API_URL'), method: 'GET', path: '/carts', statusCode: 200, body: FIVE_CART_ITEMS, }); // 2) router.replace 후 재조회용 intercept (클라이언트사이드 fetch) cy.intercept('GET', '/_next/data/**/cart.json', { body: { pageProps: { carts: FOUR_CART_ITEMS_AFTER_DELETE }, __N_SSP: true, }, }).as('refetch'); // 삭제 API mock cy.intercept('POST', '/api/cart', { statusCode: 200, body: { data: { name: '4' } }, }).as('deleteCart'); cy.visit('/cart'); // action cy.getByCy('cart-item-delete-button').first().click(); cy.wait('@deleteCart'); cy.wait('@refetch'); // 페이지 갱신 대기 // assertion cy.contains('Unbranded Rubber Chair').should('not.exist'); cy.getByCy('cart-item').should('have.length', 4); cy.getByCy('cart-item-total-amount').should('have.text', '4'); cy.getByCy('cart-item-total-price').should('have.text', '836.00'); });b. intercept 사용그래서 초기 로드에도 intercept를 사용했습니다. it.only('장바구니의 상품을 삭제한 후 총 수량과 가격이 변경된다', () => { // 1) 초기 로드용 (SSR - 서버사이드 fetch) cy.intercept('GET', '/_next/data/**/*.json', { body: { pageProps: { carts: FIVE_CART_ITEMS }, __N_SSP: true, }, }); // 2) router.replace 후 재조회용 intercept (클라이언트사이드 fetch) cy.intercept('GET', '/_next/data/**/*.json', { body: { pageProps: { carts: FOUR_CART_ITEMS_AFTER_DELETE }, __N_SSP: true, }, }).as('refetch'); // 삭제 API mock cy.intercept('POST', '/api/cart', { statusCode: 200, body: { data: { name: '4' } }, }).as('deleteCart'); cy.visit('/cart'); // action cy.getByCy('cart-item-delete-button').first().click(); cy.wait('@deleteCart'); cy.wait('@refetch'); // 페이지 갱신 대기 // assertion cy.contains('Unbranded Rubber Chair').should('not.exist'); cy.getByCy('cart-item').should('have.length', 4); cy.getByCy('cart-item-total-amount').should('have.text', '4'); cy.getByCy('cart-item-total-price').should('have.text', '836.00'); });c. API 모킹을 사용하지 않기 - ssr 환경에서 delete 테스트를 위해 api 모킹을 사용하는 게 오히려 복잡하게 느껴져서 API 모킹을 사용하지 않고 코드를 작성하는 방식을 생각했습니다. - 대신에 테스트 할 때마다 수량과 가격이 변경될 거라고 생각해서 수량과 가격을 캡쳐하는 코드를 추가했습니다. it.only('장바구니의 상품을 추가한 뒤 삭제하면 해당 상품이 사라진다', () => { const cartItem = { "id": "24", "name": "Practical Frozen Pants", "price": "607.00", "imageUrl": "https://cdn.pixabay.com/user/2023/05/21/19-38-51-804_250x250.jpg" } // prepare: API로 상품 직접 추가 cy.request('POST', `${Cypress.env('API_URL')}/carts`, cartItem).then(({ body }) => { cy.visit('/cart'); // 삭제 전 수량과 가격 캡처 cy.getByCy('cart-item-total-amount').invoke('text').then((beforeAmount) => { cy.getByCy('cart-item-total-price').invoke('text').then((beforePrice) => { // action: 방금 추가한 항목 삭제 cy.contains('Practical Frozen Pants') .closest('[data-cy="cart-item"]') .find('[data-cy="cart-item-delete-button"]') .click(); // assertion cy.contains('Practical Frozen Pants').should('not.exist'); cy.getByCy('cart-item-total-amount').should('have.text', String(Number(beforeAmount) - 1)); cy.getByCy('cart-item-total-price').should('have.text', (Number(beforePrice) - cartItem.price).toFixed(2)); }); }); }); }); 일반적으로 delete에 대해 테스트할 때 어떤 식으로 하는지 궁금합니다. 삭제 성공 여부 / 해당 데이터가 보이지 않는지 체크 정도만 하고 삭제가 진행됨으로써 총 아이템 개수 수량이 변경되는 것에 대해서는 테스트 코드로 굳이 짚고 넘어가지 않나요? 실무에서 테스트 데이터는 보통 어떻게 관리하나요? 전부 api 모킹으로 테스트 해야하는 건지, 아니면 테스트용 DB를 따로 생성해서 거기서 테스트를 진행해야하는 건지 궁금합니다.아니면 상황에 따라서 api 모킹을 해야할 때가 있고, DB를 연결해서 테스트 해야할 때가 있나요?한번에 질문이 다소 많아서 죄송합니다 ㅠㅠ 완강하고 며칠동안 혼자서 공부해보다가 제대로 제가 하고 있는 건지 모르겠어서 여쭤봅니다 ㅠㅠ 긴 글 읽어주셔서 감사합니다!!
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
노션 DB 설정 관련
노션을 처음 사용해봅니다. DB 연결에서 노션이 나오는데 영상과 실제 노션 앱과 화면이 다르게 나오고 화면대로 하려니 다른거 같습니다. 예) invoice-web 페이지를 생성하고 invoice DB 전체item DB 이렇게 두개를 생성 하는데 연결에 가니 invoice-web이 화면과 달리 보이지 않습니다. 다른 LLM 툴에 물어보니 웹페이지를 만들어서 연결하는게 아니라 DB를 만들고 그 아래에 invoice DB와 item DB를 만들어야 한다는데 현재 이부분에서 더이상 진도가 나가지 못하고 있습니다.
-
미해결스프링 핵심 원리 - 고급편
TraceTemplate 을 미리 빈으로 등록해서 사용할때 이렇게 설정하는게 맞는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 아래처럼 등록해서 의존성 주입하면문제없이 실행 되는것 같은데, 미리 빈으로 등록해서 의존성 주입하라는게 이렇게 코드를 작성하라는 말씀이셨던게 맞을까요?!@Configuration public class LogTraceConfig { @Bean public TraceTemplate traceTemplate() { return new TraceTemplate(threadLocalLogTrace()); } @Bean public ThreadLocalLogTrace threadLocalLogTrace() { return new ThreadLocalLogTrace(); } }
-
미해결성장과 상금은 누구의 것? 인프런 3주 '서바이벌' 챌린지 : All or Nothing!
마지막 미션
오늘 하루 정신이 없어서 부랴부랴 1시간 채우려고했는데 재생시간 59분에서 안올라가네요... 확인좀해주세요!
-
미해결[7일 완성] 한 번에 합격하는 MS AI-900 자격증
시험 응시 할인권
시험 응시 할인권은 어디서 다운로드 또는 제공받을 수 있는지 궁금합니다~