묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
주문수량과 재고량 관련하여 테이블 분리시
안녕하세요, 선생님.강의 감사히 잘 보고 있습니다. 주문수량에 따라 재고량 반영다는 기획일시 테이블 분리는 어떻게 할 수 있을까요?(다른 질문에 답변 올려주신 것 봤는데 직접 하려니 안되서요) 현업에서 일반적으로 매입도 존재할텐데 이 경우까지 포함한다면 재고에 대한 테이블 구성은 어떻게 되는지요? 감사합니다.
-
해결됨블렌더 3D 미피 캐릭터 인사하는 애니메이션 만들기
블렌더 F12 렌더 오류
수업 16:01 부분에 렌더를 돌리는 부분에서 오브젝트는 나오지 않고 그리드만 나오는데 해결방법이 없을까요? 인터넷에 나오는visivility - mask 체크, 카메라 확인, 슬롯 확인, Post Processing의 compositing과 Sequencer 체크 등등 확인 했는데 나오지 않습니다.
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
무한 rewrite 발생시 대처 방법
2.3 강의에서 generate 이후 스코어를 통해 rewrite를할지 end를 할지 판단할때, 쿼리 자체에서 document와 관련이 없는 질문을 했을때 무한으로 rewrite에 빠질 경우 어떻게 대처하면 될까요?
-
미해결쉽게 설명하는 AWS 기초 강의
파일질라에서 ec2 서버 접속이 되지 않습니다.
800명이 넘는 AWS 강의실 오픈채팅방에 오시면 더 좋은 답변을 실시간으로 받아보실 수 있습니다.질문내용은 상세하고 자세하게 부탁드립니다.예시 : "Amazon EC2의 t2.micro 타입으로 Amazon Linux 2023타입으로 퍼브릭 서브넷에 프로비전 했습니다. 키페어와 같이 프로비전해서 SSH로 접속하고 싶은데 접속 요청시 Timeout이 발생합니다. 어디를 확인하면 될까요?" 설정 역시 모두 강의 영상대로 따라왔으며, 아래 이미지와 같은 오류가 발생합니다.웹 브라우저에서 ip를 그대로 입력하면 접속은 되지만, 가끔씩 타임아웃으로인한 오류 때문인지 접속이 안 되고, http://www.gstatic.com/generate_204라는 새탭이 발생합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
tsconfig.json 파일에 대해 질문있습니다.
안녕하세요 타입스크립트 강의를 보고 있는 중인데 영상대로 tsconfig.json 파일에{ "$schema": "https://json.schemastore.org/tsconfig", "_version": "2.0.0", "compilerOptions": { "lib": ["dom", "dom.iterable", "esnext"], "module": "esnext", "moduleResolution": "bundler", "target": "es2015", "allowJs": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "isolatedModules": true, "jsx": "react-jsx", "noEmit": true, "noFallthroughCasesInSwitch": true, "resolveJsonModule": true, "skipLibCheck": true, "strict": true } }이렇게 넣으니 아래 이미지처럼 오류가 뜨는데 찾아봐도 왜 오류가 뜨는지 잘 모르겠습니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
5.4) Props로 데이터 전달하기 에서 toUpperCase() 오류
Button.jsx?t=1739152459356:22 Uncaught TypeError: Cannot read properties of undefined (reading 'to') at Button (Button.jsx?t=1739152459356:22:17)An error occurred in the <Button> component. Consider adding an error boundary to your tree to customize error handling behavior. Visit https://react.dev/link/error-boundaries to learn more about error boundaries. Error Component Stack at Button (Button.jsx?t=1739152290133:19:112) at App (<anonymous>)
-
해결됨스마트시트 사용하기 A to Z
Smartsheet-Dashboard
안녕하세요Smartsheet 관련하여 dashboard를 강의보고 만들었는데 질문이 있습니다.Dashboard 만들때 결국 report 를 보고자 하는 방식으로 여러 개 만들어야 구현이 가능한거죠?예를들어 status별, owner별 즉, 필터값이 다른 조건일 때 여러 개의 report를 만들어서 끌고와야만 가능한건지 문의드립니다. dashboard자체에서는 구현할 수 있는지 궁금해서요~ Smartsheet의 궁극적인 목적은 협업을 위한 시간관리와 project등을 효율적으로 tracking하기 위한 툴로 이해했습니다. 이게 맞는지요? 혹시 KPI(시간 MANAGEMENT가 아닌..) 도 스맛싯에서 진행하나요? 예를들어 Inventory관리라던지 등등이요. 그런 예제가 만약 있다면 공유 해 주실수 있으실까요?
-
미해결자바 코딩테스트 - it 대기업 유제
현관문 출입순서
안녕하세요 강사님현관문 출입순서를 풀어보고 강사님 코드를 보면서 한 if문 조건이 불필요하다고 생각해서 질문드립니다. for(int t = 0, i = 0, cnt = 0; ; t++){ //아래 조건은 아직 현관문을 다 사용하지 않았다는 조건이다. if(enter.isEmpty() && exit.isEmpty() && i < n) { if(t < arrival[i]){이 부분에서if(t < arrival[i]) 는 필요 없는 것 같아서요혹시 이게 없다면 어떤 테스트 케이스에서 막히는지 알 수 있을까요?코드 자체가 바로 아래에서이미 시간을 건너뛰는 메커니즘 t = arrival[i] 을 갖추고 있어서 굳이 필요 없다고 느껴서요 알려주시면 감사하겠습니다 강의 잘 듣고 있습니다
-
미해결Next + React Query로 SNS 서비스 만들기
로그인과 인증 관련 질문드립니다!
안녕하세요. 강의를 마치고 혼자 구현을 해보고 있는데, 로그인과 인증 관련해서 궁금한 부분이 있습니다.프론트에 로그인한 유저인지의 판단을 미들웨어에서 auth함수로 next 서버를 통해 하고있는데,로그인 후에 접속 가능한 페이지를 이동할때마다 무조건 서버에 체크를 해주어야 하나요?데이터 페칭은 리액트 쿼리를 설명하며 말씀해주신것 처럼 컨텐츠에 따라 판단해서 캐싱하고 새로 받아오고의 개념이 이해가 되었는데, 세션체크라고 해야 할까요? 로그인 후에 이 유저가 로그인이 되어있는지에 대한 체크를 서버에 얼마나 자주 해주어야 하는지 모르겠습니다.현재는 미들웨어에서 로그인이 필요한 페이지에 auth함수를 호출하여 프론트 서버에서 체크를 하고, api를 호출할때는 쿠키에 next-auth의 세션 토큰과 서버에서 발급한 세션 아이디를 담아서 서버에서 로그인과 인증 확인을 하고있는것으로 이해를 했습니다. 현재는 혼자서 nestjs를 통해 jwt 토큰 2개 (access,refresh)을 발급해서 구현을 해보고있는데, 로그인이 필요한 페이지로 이동한다면 무조건 미들웨어에서 토큰 확인을 서버를 통해 해주어야 하는건가 잘 모르겠어서 질문 드립니다..강의 정말 잘 듣고 도움이 많이 됐습니다. 감사합니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
오픈채팅방 참여 인원수
안녕하세요.오픈 채팅방에 참여하려 하는데 인원수가 꽉 찬 거 같습니다ㅜㅜ
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
안녕하세요, onopen() 문제로 질문드립니다.
똑같이 코딩한거같은데 Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING이런 문제가 생겨 connect()에서 console.log로 this.ws 찍어보니까. readystate가 0에서 바뀌지 않고 onsubmit()에서도 0인걸 확인했습니다. 그래서 웹소켓이 연결되지 않았으니, this.ws.send()에서 걸리는것이라고 생각은하는데, 어디를 고쳐야 될지 모르겠습니다.{# Chat room #} {% extends "chat/base.html" %} {% block extra-style %} <style> .chat-message > div { background-color: #3b3b3b; color: #e1e1e1; border-radius: 0.8em; padding: 0.4em; margin: 0.4em 0; display: inline-block; white-space: pre-wrap; max-width: 80%; word-wrap: break-word; } </style> {% endblock %} {% block content %} <h2>채팅방 :{{ room_name }}</h2> {# 웹소켓으로 실시간 채팅 기능 구현하기 #} <div class="container"> <div class="row"> <div class="col-sm-12"> <div class="card" style="height: 600px;"> <div class="card-header"> 채팅방:{{ room_name }} </div> <div class="card-body overflow-hidden"> <div id="chat_messages" class="w-100 h-100 border-0 overflow-hidden overflow-scroll"></div> </div> <div class="card-footer"> <form id="message_form"> <input type="text" name="message" class="form-control" autofocus autocomplete="off" /> </form> </div> </div> <hr class="my-3" /> <a href="{% url 'chat:index' %}" class="btn btn-primary"> 대기실로 이동 </a> </div> </div> </div> {% endblock %} {% block extra-script %} <script> const handler = { chat_messages_tag: null, ws: null, retry: 0, init(){ console.log("handler.init() 실행됨"); this.chat_messages_tag= document.querySelector("#chat_messages"); document.querySelector("#message_form").addEventListener("submit", this.onsubmit.bind(this)); }, connect(ws_url){ if(this.ws) { this.ws.close(); } this.ws = new WebSocket(ws_url || this.ws?.url); console.log(this.ws, "연결1.") this.ws.onopen = this.onopen.bind(this); this.ws.onclose = this.onclose.bind(this); this.ws.onerror = this.onerror.bind(this); this.ws.onmessage = this.onmessage.bind(this); }, reconnect() { this.connect(); }, onopen(){ console.log("웹소켓 서버와 접속, : Room_chat"); this.retry = 0; }, onclose(event){ if (!event.wasClean) { console.error("웹소켓이 죽었거나, 네트워크 에러"); if (this.retry < 3) { this.retry++; setTimeout(() => { this.reconnect(); console.log(`[${this.retry}] 접속 재시도 ...`); }, 1000 * this.retry) } else { console.log("웹소켓 서버에 접속할수 없습니다. 메인페이지로 이동합니다."); window.location.href = "{% url 'chat:index' %}"; } } }, onerror(){ console.log("웹소켓 에러 발생. 메인페이지로 이동합니다."); window.location.href = "{% url 'chat:index' %}" ; }, onmessage(event){ const message_json = event.data; console.log("메세지 수신 :", message_json); const { type, message } = JSON.parse(message_json); switch (type){ case "chat.message": this.append_message(message); break; default: console.error('Invalid message type: &{type}'); } }, append_message(message){//인자로 받은 채팅 메세지 로그에 추가 const element = document.createElement("div"); element.className = "chat-message"; const wrapper = document.createElement("div"); wrapper.textContent = message; element.appendChild(wrapper); this.chat_messages_tag.appendChild(element); this.chat_messages_tag.scrollTop = this.chat_messages_tag.scrollHeight; }, onsubmit(event){ //입력된 채팅 메세지 문자열을 획득하고, 메세지 로그에 추가. event.preventDefault(); const form_data = new FormData(event.target); //폼필드의 값을 오브젝트로 변환하여 props로 저장하고, 폼필드는 리셋합니다. const props = Object.fromEntries(form_data); event.target.reset(); // reset form const { message } = props; console.log("웹소켓으로 전송할 메세지: ", message); console.log(this.ws, "onsubmit"); {#this.append_message(message);#} this.ws.send(JSON.stringify({ type: "chat.message", message: message, })) } }; handler.init(); const protocol = location.protocol === 'https:' ? 'ws:' : 'wss:'; const ws_url = protocol + "//" + location.host + "/ws" + location.pathname; handler.connect(ws_url); </script> {% endblock %}from django.urls import path from chat import consumers websocket_urlpatterns = [ path("ws/chat/<str:room_name>/chat/", consumers.ChatConsumer.as_asgi()), ] import os from channels.routing import ProtocolTypeRouter, URLRouter from django.core.asgi import get_asgi_application import app.routing import chat.routing os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') django_asgi_app = get_asgi_application() application = ProtocolTypeRouter({ "http" : django_asgi_app, "websocket" : URLRouter( chat.routing.websocket_urlpatterns + app.routing.websocket_urlpatterns, ) })from django.shortcuts import render # Create your views here. def index(request): return render(request, "chat/index.html") def room_chat(request, room_name): return render(request, "chat/room_chat.html",{ "room_name": room_name, })
-
해결됨[Unity6] 나만의 서바이벌 게임 만들기
character movement 반응속도
move에 대한 animator 작업도 진행하고 코드작업도 진행을 했는데요.처음 게임 시작누르고 방향키를 한 2~3초눌러야 run상태로 가더라고요. idle상태는 그거보단 빠른 1초정도?어떤게 문제일까요..condition에서 스피드에 대한 값도 지정해서 0.1 0.01까지 낮춰보았고, setting에서 exit time과 transition duration까지 낮춰보면서 해봤는데 안되네요.음 좀 보는데 idle에서 모션변환까지 duration이 좀 걸리는거같은데요..void Move() { // key 방향 float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); Vector3 cameraForward = Camera.main.transform.forward; Vector3 cameraRight = Camera.main.transform.right; cameraForward.y = 0.0f; cameraRight.y = 0.0f; cameraForward.Normalize(); cameraRight.Normalize(); Vector3 moveDirection = cameraRight * horizontal + cameraForward * vertical; // mobile, pc 속도 차이 줄이기위해 controller.Move(moveDirection * moveSpeed * Time.deltaTime); // moveDirection.magnitude를 좀 더 빠르게 반영하도록 float currentSpeed = moveDirection.magnitude * moveSpeed; animator.SetFloat("a_Speed", currentSpeed); }
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
섹션5에 스위치 led 점등 부분
섹션 5 마지막에 스위치 눌러서 led점등 하는게 안되네요..바로 전에 0.1초 간격으로 저절로 껐다 켜지는건 잘 됬는데스위치 버튼이 불량일수도 있나요?코드가 긴것도 아니고 설정이 복잡한 것도 아닌데 원인을 모르겠습니다..if(!HAL_GPIO_ReadPin(GPIO_SW_GPIO_Port, GPIO_SW_Pin)){HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 1);}else{HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 0);}혹시나 이렇게 반대로 바꾸면 계속 불이 들어와 있지만스위치를 눌러도 아무 변화 없습니다. 그리고 제가 멀티미터기 사용법은 아직 다 몰라서 바로 아래 사진에 파란색 동그라미에 각각 대고 도통시험 그쪽에 놓고 했는데 소리는 안나는데 저 두 곳에 어떻게 잘 맞춰서 대면 D2 LED에 불이 들어옵니다.(스위치 안누른 상태에서). 그리고 두 곳에 댄 상태에서 스위치를 눌러도 소리는 안나구요
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
코드스타일 문의드립니다.
import {deletPost} from '@/api'; import queryClient from '@/api/queryClient'; import {queryKeys} from '@/constants'; import {UseMutationCustomOptions} from '@/types'; import {useMutation} from '@tanstack/react-query'; function useMutateDeletePost(mutationOptions?: UseMutationCustomOptions) { return useMutation({ mutationFn: deletPost, onSuccess: () => { queryClient.invalidateQueries({ queryKeys: [queryKeys.POST, queryKeys.GET_POST], }); queryClient.invalidateQueries({ queryKey: [queryKeys.MARKER, queryKeys.GET_MARKERS] })\ } }); } export default useMutateDeletePost; 안녕하세요. 궁금한 게 있습니다.다름아니라 재갱신을 위해서 invalidataQueies를 호출할때 쿼리클라이언트를 여러개로 쪼개신 이유가 무엇인가요?해당 키들을 한개의 invalidataQueries로만 호출이 가능할텐데, 여러개로 쪼개신 이유가 갑자기 궁금해서 문의드립니다. onSuccess: () => { queryClient.invalidateQueries({ queryKey: [ queryKeys.POST, queryKeys.GET_POST, queryKeys.MARKER, queryKeys.GET_MARKERS, ], }); }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost/hello 404에러
View 환경설정 부분에서localhost:8080/hello 부분이 접속이 안됩니다.작성코드 결과화면
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
soft Delete 시 index 설정
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요. 먼저 강의 들으면서 정말 많은 것을 배우고 있습니다. 감사합니다.아직 index나 쿼리에 대해 이해도가 많이 부족하다 보니 궁금한 점이 있는데요. 실제 게시글이나 댓글 삭제 시 물리적 삭제가 아닌 논리적 삭제(soft delete)를 구현하게 되는 경우가 많았는데요. 이때 isDeleted같은 필드를 두고 true, false 의 boolean 값으로 관리했습니다.이후 데이터를 조회할 때는 isDeleted가 false인 것들만 조회하는 방식이었는데, 이때도 isDeleted를 복합 index의 키값으로 넣어서 관리를 하는 경우가 많을까요? 성능 향상에 많은 도움이 될 지가 궁금하네요.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
몬스터와 캐릭터가 닿았을때 밀리는 현상
안녕하세요 선생님 강좌 너무 잘 듣고 있습니다.다름이 아니라 13:40초에 캐릭터와 몬스터가 서로 충돌해서 밀리는 현상을 설명 해주신대로 NavMeshAgent 를 삭제하고 일반적인 이동 방식으로 수정해서 잘 사용하고 있습니다.근데 혹시 NavMeshAgent 를 나는 꼭 써서 해야돼 라고 생각 하시는 분들은 구글을 찾아 봤는데NavMeshAgent nma = gameObject.GetOrAddComponent<NavMeshAgent>();// nma 로 NavMeshAgent 를 불러와서nma.obstacleAvoidanceType = ObstacleAvoidanceType.NoObstacleAvoidance;// obstacleAvoidanceType 을 NoObstacleAvoiddance로 교체를 해주면 네브메쉬를 가지고 있어도 서로 충돌하지는 않는거 같습니다. 혹시 저처럼 궁금한 분들이 있을까봐 남깁니다.선생님 날씨가 추운데 감기 조심하시고 강의 더 집중해서 듣겠습니다.
-
해결됨[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기
배리어블 순서 바꿀 때 안바뀌는 오류
배리어블 순서를 바꿀 때 드래그 드랍해도 안 바뀌는건 왜 그런건가요..? ㅠㅠ배리어블 복사하면 순서가 뒤엉켜있는 경우가 너무 많은데 그럴때마다 순서를 바꾸려고 드래그 드랍을 하면 몇개는 바뀌다가 안바뀝니다..배리어블이 너무 많아서 그런건가요? 이럴 때는 어떻게 해야할까요?
-
미해결
아임포트 결제 중 오류
아임포트의 카카오api로 테스트 결제를 진행하고 있는데 imp_uid 까지는 console.log를 찍어도 내역이 나오는데 아래 .done(function(data) 부터 console.log를 찍어도 응답이 없고 msg가 하나도 출력이 되지않으면서 결제가 끝나도 카톡으로 결제가 완료되었다는 메시지는 뜨는데 페이지에 메시지가 출력되지 않습니다.근데 결제는 정상적으로 완료된 것이 if(rsp.success) 밑에 console.log을 찍어보면 success는 true, status가 paid라고 떠있고 홈페이지 테스트 결제내역에 확인됩니다.정말 열심히 찾아봤는데 해결이 안돼서 이유와 해결방법 아시는분들 답변 부탁드려봅니다... 콘솔창에는 authenticated가 같이 뜹니다
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
강의 데이터베이스.,,,
이 강의 mySql이나 데이터베이스를 이용 하지는 않는건가요 ?. 로컬 데이터베이스만 사용하나요 ? [코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.