묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Unity Server 관련해서 질문이 있습니다.
강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 안녕하세요. 현재 진행중인 프로젝트에서 TCP 네트워크 파트를 담당하게 되어 구글링하며 구현하다가 가뭄에 단비같은 강사님 강의를 찾게되어 열공하고 있습니다. 먼저 질문에 앞서 좋은 강의 올려주셔서 감사드립니다. 현재 프로젝트는 Unity 가상 시뮬레이터 개발로 Unity에서 생성된 시뮬레이팅 데이터를 다른 Uninty Clinet에 실시간으로 전송하여 Client 에서 통신을 통해 전달 받은 데이터를 기반으로 객체들의 Position 및 여러 상태값을 동기화 하는 작업입니다. 그래서 강의를 보기 전 제가 임시로 구현했던 방식은 Unity 시뮬레이터에 Server 코드가 같이 존재하여 시뮬레이터가 실행됨과 동시에 Server가 멀티스레드로 실행되고 Queue를 통해 생성된 데이터를 직접적으로 받아 Client에 뿌리는 방식으로 구현이 되어 있는데 강의를 보니 Server는 Unity 환경이 아니라 따로 실행을 하시고 Client만 Unity로 작성하여 진행하시더라구요. 저희 프로젝트는 가상 시뮬레이터이다 보니 최대한 빠르게 데이터를 Client에 전송해 동기화된 움직임을 제공하여야 하는데 이럴 경우에도 Server를 따로 두고 시뮬레이터도 하나의 Client로 붙이는게 맞는 구조일까요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
로그에서는 에러가 없긴 한데 /thumb 에 리사이징 이미지가 저장이 안되있어여
이미지는 original/ 로 올라가고 로그에서도 에러는 없는거 같은데 thumb/로 안올라가는것 같아여 그럼 코드에 문제가 있는걸까여? 한번 봐주시면 감사여 ; git: https://github.com/node-hyun/nodebird-deploy/blob/master/lambda/index.js 사이트 주소: www.nodebird-hyun.shop 그리고 index.js에서 오타 많아서 계속 깃 허브 업로드 => s3에서 지우기 => ec2에서 지운뒤 다시 압축 => 다시 업로드 => 람다에서 ~으로 부터 업로드 다시 클릭 이런식으로 복잡하게 했는데 람다 코드에서 에러나면 원래 이렇게 힘들게 작업해야 되나여 ; 그리고 back의 포트 번호도 80으로 계속 수동으로 고치고 있어여; 이거 원래 ec2에 올리고 백엔드 포트를 80으로 수동으로 고쳐주는게 맞나여 ㅋㅋ;; 알려주시면 감사여 ~! 클라우드 워치 로그 이미지: 클라우드 워치 로그 메세지 2021-03-08T03:30:17.812+09:00 복사 START RequestId: 8aa9f207-937e-44cd-9480-c476f6fbbcf6 Version: $LATEST START RequestId: 8aa9f207-937e-44cd-9480-c476f6fbbcf6 Version: $LATEST 2021-03-08T03:30:17.814+09:00 복사 2021-03-07T18:30:17.814Z 8aa9f207-937e-44cd-9480-c476f6fbbcf6 INFO nodebird-hyun2-s3 original/1615141814860_sf5.jpg 2021-03-07T18:30:17.814Z 8aa9f207-937e-44cd-9480-c476f6fbbcf6 INFO nodebird-hyun2-s3 original/1615141814860_sf5.jpg 2021-03-08T03:30:17.814+09:00 복사 2021-03-07T18:30:17.814Z 8aa9f207-937e-44cd-9480-c476f6fbbcf6 INFO filename 1615141814860_sf5.jpg ext jpg 2021-03-07T18:30:17.814Z 8aa9f207-937e-44cd-9480-c476f6fbbcf6 INFO filename 1615141814860_sf5.jpg ext jpg 2021-03-08T03:30:18.278+09:00 복사 2021-03-07T18:30:18.278Z 8aa9f207-937e-44cd-9480-c476f6fbbcf6 INFO original 11759 2021-03-07T18:30:18.278Z 8aa9f207-937e-44cd-9480-c476f6fbbcf6 INFO original 11759 2021-03-08T03:30:18.437+09:00 복사 2021-03-07T18:30:18.437Z 8aa9f207-937e-44cd-9480-c476f6fbbcf6 INFO put 4971 2021-03-07T18:30:18.437Z 8aa9f207-937e-44cd-9480-c476f6fbbcf6 INFO put 4971 2021-03-08T03:30:18.439+09:00 복사 END RequestId: 8aa9f207-937e-44cd-9480-c476f6fbbcf6 END RequestId: 8aa9f207-937e-44cd-9480-c476f6fbbcf6 2021-03-08T03:30:18.439+09:00 복사 REPORT RequestId: 8aa9f207-937e-44cd-9480-c476f6fbbcf6 Duration: 626.21 ms Billed Duration: 627 ms Memory Size: 256 MB Max Memory Used: 116
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
해당 소스코드 파일에 대해서
안녕하세요. 좋은 강의 감사합니다. 한가지 질문이 있습니다만, 해당 소스코드 파일은 어디에서 다운받을 수 있는지요? 답변 부탁드립니다 ^^
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Thread, ThreadPool, Task 확인 부탁드립니다.
Thread, ThreadPool, Task에 대해 정리를 해봤습니다. 그 전에 한가지 질문 먼저 드립니다. Task를 생성할 때 new를 사용하는데 new의 의미가 ThreadPool을 하나 더 생성하는 것이 아닌 ThreadPool안에서 돌 Thread를 하나 생성하는 것인가요? 아래 정리는 위 질문에서 Thread가 생성된다는 가정 하에 정리해봤습니다. * Thread는 일꾼 하나이며 ThreadPool은 그 일꾼들이 있는 인력 사무소이다. Task는 인력 사무소에 일감(짧은 작업/긴 작업)을 정해주기 때문에 Task는 하나의 ThreadPool로 생각하자. * 일반적인 Thread는 개인이 관리해야하며 생성작업이 무겁고 많은 쓰레드를 사용해야 하는 경우 관리가 어렵고 효율적이지 않다. * 그래서 쓰레드를 미리 만들어 놓고 돌려쓰는 Pool 방식을 붙여 쓰레드르 사용하는 방법인 ThreadPool을 사용한다. * 돌려 쓰기 때문에 보통 가벼운 작업을 많이 시킨다. * 그래서 놀고 있는 놈과 일하는 놈의 갯수를 잘 관리 해야한다. * 지속적으로 일해야 하는 무거운 일감을 모든 Pool이 가지고 있으면 프로그램이 먹통된다. * 이런 단점을 보완한 것이 Task. * 그냥 ThreadPool만 사용하면 일의 무게를 명확히 정해줄 수 없으나 Task를 사용하면 각 Task마다 일의 무게를 정해줄 수 있다. 이렇게 정리를 해봤는데 혹시 틀린 부분이 있다면 알려주시기 바랍니다.
-
미해결이더리움 & 솔리디티 기반의 투표 dApp 구현하기
웹서버 설치 명령어 부탁드립니다.
가설명 2번에 아래 명령어를 통해 웹서버를 설치하라고 하는데 아무것도 보이지 않네요 ㅜ 서버 어떻게 실행하나요?
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
nth-chlid로 태그를 지정할 때와 클래스명으로 지정할 때의 차이
# HTML 문서 <body> <div class="box"> <span class="box1"></span> <span class="box2"></span> </div> </body> # CSS 문서 .box2 { animation-delay: 0.5s; } 영상에서 제시해주신 것처럼 span에 클래스명을 붙이지 않고 한 것이 아니라 각각의 span 태그에 클래스명을 붙이고 해봤습니다. 그런데 .box span:nth-child(2){ animation-delay: 0.5s;} 라고 하면 영상과 똑같은 결과가 나오는데 .box2 {animation-delay: 0.5s;}를 사용하면 박스가 계속해서 하나만 움직입니다. .box span:nth-child(2)나 .box2나 결국 똑같은 것을 지칭하는 것 아닌가요? 왜 하나는 정상적으로 박스 2개가 움직이고 하나는 박스 1개만 움직일까요 ㅠㅠ
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
질문드립니다!
안녕하세요 강의를 보던 중 문의드립니다! 위의 이미지 부분에서 .box div 선택시, box 자손 div들은 모두 같은 css가 적용된다고 하셨는데 오른쪽에 보이는 박스들은 왜 같은 위치가 아니고 자식div만 padding값이 적용된건가요?.. 그리고 혹시 이렇게 태그방식 말고 각 태그에 class를 지정해서 스타일 지정해주는 방식으로 진행하면 안되는건가요~?! class로 지정할 시, css에서 해당되는 것을 호출(?) 하는 것도 궁금합니다..! 만약 <div class="parent"> <div class="a"> <div class="b"></div> </div> </div> 이런식으로 자손요소에 class명(b)을 지정해서 스타일을 매기고 싶다면 .b만 쓰면 되는건지, 그 앞에 부모요소(.a .b)라고 써야되는건지 부모의 부모요소까지 써야되는건지(.parent .a .b)궁금합니다!
-
미해결하루만에 만드는 깃허브 블로그
md파일이 검색은 가능한데 불러오지를 못합니다...
블로그 내에서 .md파일 검색이 가능한데 막상 글을 누르면 md파일의 내용이 보이지 않습니다... post.content부분에서 내용을 못가져오는듯 한데 막상 로컬에서 돌려보면 테스트로 주신 블로그만들기 01, 02파일은 불러오지만 제가 올린 md파일은 로컬내에서도 가져오지 못합니다. 이에 문의 드립니다.. jinhoSong.github.io << 에서 게시글들 검색해보시면 위 설명한 내용처럼 이루어지고 https://github.com/JinhoSong/JinhoSong.github.io/tree/master/_posts << 제 블로그 소스코드 깃입니다 수정 로컬에서는 정상적으로 나오도록 고쳤습니다.! 근데 게시된 블로그에서는 여전히 나오지 않습니다...
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
웹에서 구현이 안돼요
어떻게 하면 웹에서도 구현이 제대로 될까요?
-
미해결Svelte.js [Core API] 완벽 가이드
vs code 애서 코드 단축시킨 결과 문의
PS. 처음 질문이 두서가 없어서 다시 정리했습니다. 다른분들도 볼수 있을것 같아서.
-
미해결Svelte.js [Core API] 완벽 가이드
tick 문구를 제거해도 적용된것처럼 나옵니다.
<script>function handler() { name = 'heropy'; const h1 = document.querySelector('h1'); console.log(h1);}</script><h1 on:click={handler}>{name}</h1>===> world 출력 --------------------------------------------------------<script>import { tick } from 'svelte';function handler() { name = 'heropy'; tick(); const h1 = document.querySelector('h1'); console.log(h1);}</script><h1 on:click={handler}>{name}</h1>===> <h1>heropy</h1>출력----------------------------------------------------<script>function handler() { name = 'heropy'; const h1 = document.querySelector('h1'); console.log(h1);}</script><h1 on:click={handler}>{name}</h1>===> <h1>heropy</h1>출력3번째 실행해서 서버 실행을 멈추고 npm run dev를 해도브라우저 캐시를 지워도 다른 브라우저로 들어가도 다시 world 가 안 나올까요 ?tick 문구를 지우면 원래대도 나와야 정상일것 같은데...왜 적용이 안 사라지는지 모르겠습니다.
-
미해결인공지능 R GO! 하자!
처음 저장
처음에 저장할때 파일명을 어떻게 적어야 하나요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
강의 자료 확인 요청드립니다.
강사님 안녕하세요!강의 자료를 다운받았는데 4-6강폴더와 7-9강폴더가 비어있다고 나오네요 ㅠㅠ혹시 다시 확인해주실 수 있나요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Packet Queue 질문
안녕하세요. "Rookiss"님, Packet Queue에 대해서 질문드리려고 합니다. Push() 에 대해서는 BackGround Thread가 계속 Push하므로 lock을 거는 이유가 맞다고 생각되는데 Pop()에 대해서는 Unity의 Main-Thread만 사용한다면 따로 lock을 걸 필요가 없다고 생각되는데 혹시 다른 이유가 있어서 lock을 거신건가요?? 답변해주시면 감사하겠습니다!
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿과 서블릿 컨테이너의 역할에 대한 질문입니다.
강의자료 8p에서 WAS에서 HTTP 요청 메세지를 기반으로 request 와 response 객체를 생성해서 서블릿에게 전달한다는 그림이 있는데 강의자료 12p의 HttpServletRequest의 역할에 보면 서블릿이 HTTP 요청 메세지를 파싱하여 HttpServletRequest에 담에서 제공한다고 되어있습니다. 이부분에서 정확히 HTTP 요청 메세지 파싱과 request 와 response 객체의 생성에 대한 책임이 WAS에 있는지 서블릿에 있는지 애매모호해서 질문드립니다!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Unity 정책 + DLL 사용 질문
안녕하세요. "Rookiss"님, 해당 강의를 듣고 Unity의 정책으로 TryWriteBytes()와 Span<> 사용이 불가능하다는 부분에서 궁금한 점이 생겼습니다. "Rookiss"님이 말씀하신 TryWriteBytes()와 Span<> 사용이 불가능하여 해결방안으로 1. unsafe code 사용 2. 직접 bit 연산 이 있다고 하셨는데 실제로 1, 2 방법의 현업에서 사용 빈도가 궁금합니다. --- 1번 질문 그리고 ServerCore의 class들을 DLL Import로 사용 가능하다고 하셨는데 그러면 TryWriteBytes(), Span<> 등을 class library의 DLL로 import하면 사용이 가능할까요?? --- 2번 질문 마지막으로, 만약 2번 질문이 가능하다면 실제 현업에서 공통된 Packet class들을 dll로 import해서 사용하나요??? --- 3번 질문 답변해주시면 감사하겠습니다!
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
9장 routes/post.js에서 해쉬태그 부분 질문
그 result가 findorCreate인 프로미스를 Promise.all로 모두 처리해서 resolve된 값인데 이게 이차원 배열 형식으로 할당된다고 강의에서 들었습니다. ([[해쉬태그1,true],[해쉬태그2,true]]이런식) 근데 밑에 await post.addHashtags(result.map(r=>r[0])) 이처리를 하면 result가 이차원 배열 형식이라 map메소드의 반환값이 [해쉬태그1,true]가 아닌가요? 어떻게 해쉬태그1이 반환되어서 관계쿼리메소드를 진행 되는 것 이죠???
-
미해결코딩테스트 전 꼭 알아야 할 개념과 문제(with 자바)
Dp HouseRobber 질문
안녕하세요. DP문제를 풀어보는데 있어, 다른 응용문제를 보고 풀다가 단위케이스에 걸려 문의드립니다. 릿코드에서는 정상적으로 통과 되었지만, 이 문제와 동일한 프로그래머스 사이트에 "도둑질" 문제에서는 단위케이스 걸려 실패하였습니다.. ㅠㅠ 아래에 링크 첨부 드립니다. https://programmers.co.kr/learn/courses/30/lessons/42897 기존 문제는 제가 아래와 같이 풀었으나 선생님 공식과 조금 다른것 같아, 혹시 문제 유형이 다른건지 헷갈리기 시작했습니다. ㅠ public int solution(int[] money) { int moneyLength = money.length; // dp배열은 처음 집을 훔치기때문에 인접한 마지막 집은 훔칠수 없으므로 반복문은 length-1 전까지만 int[] dp = new int[moneyLength-1]; // 처음 집 안 훔칠 때 int[] dp2 = new int[moneyLength]; // dp[0]과 dp[1]은 0번째 집부터 1번째 집까지 가장 많이 훔칠수 있는 금액인데 0번집을 훔치기때문에 // 1번째 집은 훔칠수 없게 되고 dp[1]까지의 가장큰 금액은 첫번째 집을 훔친 경우이므로 dp[0],dp[1]에는 0번 집의 돈을 넣어 줬습니다. dp[0] = money[0]; dp[1] = money[0]; dp2[2] = 0; dp2[1] = money[1]; // 반복문을 돌면서 두번째 전의 최대 돈에 현재 번째 집의 돈을 합친것과 이전의 최대 돈을 비교하여 dp배열을 채웁니다. // 2가지 경우를 각각 money 배열의 인덱스만큼 왔을 때 누적시킨 dp값들의 max 값을 구하여 메모제이션 해줌 for (int i = 2; i < moneyLength-1; i++) { dp[i]=Math.max(dp[i-2]+money[i],dp[i-1]); } // dp2는 첫번째 집에서는 돈을 훔치지 않으므로 반복문은 length까지 돌렸습니다. for(int i=2; i<moneyLength; i++) { dp2[i]=Math.max(dp2[i-2]+money[i],dp2[i-1]); } // dp와 dp2의 마지막 값을 비교하여 더 큰값을 출력 하여 정답을 구하였습니다. return Math.max(dp[moneyLength-2],dp2[moneyLength-1]);}
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
업로드 된 이미지 사진이 깨져서 보입니다.
코드자체에선 에러도 없는것같고, 이미지 업로드와 삭제 모두 작동자체는 잘 되는 것 같은데, 이미지가 보이지 않고 깨짐 표시만 보입니다. 왜 이러는 건지 이유를 알 수 있을끼요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
둘이상의 컬렌션에서 inner join은 왜 사용이 가능할까요? inner join에 대해 질문입니다!
컬렉션 inner join 시에도 데이터가 변하는 걸 실습으로 확인해봤습니다. 그 후 inner join 2번 사용 시MultipleBagFetchException를 발생시키는지 궁금해서 테스트 해보니 따로 발생시키지 않더라구요!영한님 책이 따로 있어서 확인해봤는데, 책에서는 fetch join 2개는 컬렉션 * 컬렉션 곱이 만들어지므로 주의해야하고, 하이버네이트 구현체의 경우 MultipleBagFetchException을 발생시킨다고 나와있는데, inner join은 MultipleBagFetchException을 발생시키지 않는 건가요? 같은이유로 데이터 중복값이 크게 증가해 발생해야하는게 아닌가 해서 질문드립니다! 왜 inner join은 하이버네이트가 막아두지 않은 것일까요? inner join이 2번 이상 사용이 가능한걸 보면 둘 이상의 컬렉션에 fetch join 을 막아둔 가장 큰 이유가 데이터 중복이 아닌건가요?? 컬렉션 관계에서 inner join으로도 페이징은 불가능 한건가요? 부모 엔티티가 값 컬렉션 2개를 갖고 해당 컬렉션 fetch 전략을 FetchType.Eager 로 설정해두니 MultipleBagFetchException이 뜨면서 실행조차 안되는걸 발견했는데, 그 이유가 fetch join 2개를 같이 쓸 수 없는것과 같은 이유인가요? 실행조차 안돼서 궁금하네요!3가지 질문인데 답변해주시면 감사하겠습니다 :)