SendBuffer 질문
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
스레드에게 고유한 SendBuffer를 두는게 세션마다 SendBuffer를 두고 자기꺼만 담는것보단 일꾼(스레드)가 SendBuffer를 들고다니면서 세션에서 보내는걸 담는게 부하가 덜 걸리기 때문에 외부에 만드는걸로 이해해도 될까요?
- C#
- unity
- 네트워크
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
스레드에게 고유한 SendBuffer를 두는게 세션마다 SendBuffer를 두고 자기꺼만 담는것보단 일꾼(스레드)가 SendBuffer를 들고다니면서 세션에서 보내는걸 담는게 부하가 덜 걸리기 때문에 외부에 만드는걸로 이해해도 될까요?
해결됨
[Unity6] 나만의 서바이벌 게임 만들기
질문1. foreach(var iconEntry in activeIcons) { if (!currentObjects.Contains(iconEntry.Key)) { iconEntry.Value.GetComponent<UIAnimationHandler>().AnimationChange("OUT"); Destroy(iconEntry.Value); toRemove.Add(iconEntry.Key); } } 이 코드에서 파괴명령이 있어서 또다른 파과명령은 안 내려도 되지 않나요? 저는 멀어지면 아이콘이 잘 파괴되서 여줘봅니다. ->해결(Destory옮긴 건을 못 봤네요. ) 질문2. foreach(Collider obj in nearbyObjects) { Transform targetTransform = obj.transform; float distance = Vector3.Distance(transform.position, targetTransform.position); if(distance <= activationDistance) { ShowIcon(targetTransform); currentObjects.Add(targetTransform); } } 제가 이해하기에는 currentObjects목록에는 항상 실시간으로 부딪힌 collider들의 transform만 가질 수 있도록 update가 돼야 작동하는 게 맞는 것 같은데요. 추가하는 코드만 있는데 갱신이 되려면 거리를 충족시키지 못하면 이미 있는 transform들을 삭제하는 코드가 있어야 맞는 거 아닌지 의문이 들어요. -> HashSet<Transform> currentObjects = new HashSet<Transform>(); 이부분에서 계속 초기화가 된다고 생각하면 될까요?
해결됨
[Unity6] 나만의 서바이벌 게임 만들기
안녕하세요 선생님 move 함수에서 카메라 백터 로 0으로 기준을 잡아서 horizontal, vertical 값을 줘서 움직이는건가요 camerForward,cameraRight기준으로 코드는 처음봐서요! 헷갈립니다
해결됨
한 입 크기로 잘라먹는 Next.js
ISR 을 보면서 SSR과 SSG의 각각의 단점을 모두 커버할 수 있는 기술이라 생각이 되었습니다. 진짜, 이 외에는 쓸 필요가 있나 싶을 정도인데요.. 한가지 여쭤보고 싶은 것은, ISR 을 API 로 호출해서 한다고 했을 때 예를 들면, 어떤 게시물이 등록이 되면 그 시점에 이 API를 호출하고 그 후 해당 페이지가 재생성 될 것입니다. 그렇다면, 게시물을 동시에 여러개 작성하게 된다면 (서비스의 비즈니스 로직에 따라..) 어쩔 수 없이 이 API 엔드포인트에 트래픽이 몰리게 될 텐데 그로 인한 서버부하 는 생각 안해도 되는것이지 여쭤보고 싶습니다.
미해결
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
public class JoinMainV3 { public static void main(String[] args) throws InterruptedException { log("Start"); SumTask task1 = new SumTask(1, 50); SumTask task2 = new SumTask(51, 100); Thread thread1 = new Thread(task1, "thread-1"); Thread thread2 = new Thread(task2, "thread-2"); thread1.start(); thread2.start(); // 스레드가 종료될 때 까지 대기 log("join() - main 스레드 대기 시작"); thread1.join(); thread2.join(); log("main 스레드 대기 완료"); log("task1.result = " + task1.result); log("task2.result = " + task2.result); int sumAll = task1.result + task2.result; log("task1 + task2 = "+ sumAll); log("End"); } static class SumTask implements Runnable { int startValue; int endValue; int result = 0; public SumTask(int startValue, int endValue) { this.startValue = startValue; this.endValue = endValue; } @Override public void run() { log("작업 시작"); sleep(2000); int sum = 0; for (int i = startValue; i <= endValue; i++) { sum += i; } result = sum; log("작업 완료 result = " + result); } } } 안녕하세요. 위 코드는 강의실습에 사용된 코드입니다. 개인적으로 thread1.join(), thread2.join() 에 대해 main쓰레드가 WAITING 상태인지를 확인하고 싶어 아래와 같이 코드 중간 중간에 상태를 체크해봤습니다. log("main 쓰레드 상태: " + Thread.currentThread().getState()); thread1.join(); log("main 쓰레드 상태: " + Thread.currentThread().getState()); thread2.join(); log("main 쓰레드 상태: " + Thread.currentThread().getState()); 결과는 모두 RUNNABLE로 나타나는데요. sleep시간을 늘려봐도 여전히 RUNNABLE상태가 나옵니다. 코드의 어떤 부분을 수정해야지 WAITING상태를 확인할 수 있는지 궁금합니다~!
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. import관련해서 문제가 생겼습니다.. jakarta는 아예 안됩니다.
해결됨
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 현재 회원 엔티티 시점 Member(회원) 1 : N Pet(반려견) 일대다 관계인 상태입니다. -Member(회원) 엔티티 -Pet(반려견) 엔티티 연관관계 설정해 둔 모습입니다. -이게 문제가 되고 있는 서비스 로직입니다. MemberRepository에서 회원의 role(역할)을 찾은 후, role(역할)이 CUSTOMER(고객)인 경우 해당 회원의 정보와 갖고 있는 List<>형태의 pet을 한 번에 갖고 와서 DTO로 변환 해서 반환하려고 합니다. 실제로 어떻게 리포지토리에서 조회하고 있는지 보여드리겠습니다. -role(역할)이 CUSTOMER(고객)인 경우 findByCustomerId()로 위와 같이 회원과 pet을 한 번에 조회하고 있습니다. (실제 쿼리문이 나가는 것을 봤을 때도 fetch join 쿼리로 나가서 pet이 프록시가 아닌 실 객체 데이터로 조회되는 것을 확인했고, 디버깅도 해봤는데 pet 컬렉션에 데이터가 있는 것도 확인했습니다.) 다음으로 member 엔티티를 DTO로 어떻게 반환하는 지 보여드리겠습니다. -Pet(반려견)을 PetResponse라는 DTO로 다시 바꿔서 반환 시켜주려고 하고 있는 상황이고 -이게 PetResponse 입니다. 여기까지가 현재 저의 문제가 되고 있는 코드와 동작 방식입니다. 현재 뜨고 있는 오류는 lazyinitializationexception 에러가 발생하고 있습니다. 알아보니 트랜잭션 주기 안에서 컬렉션을 조회하는 것이 아니라, 하이버네이트 세션이 끝난 후 영속성 컨텍스트가 사라진 상태에서 엔티티가 갖고 있는 컬렉션(pets)을 조회하게 돼서, 트랜잭션 내에 존재한 영속성 컨텍스트 내의 pets를 조회하는 것이 아닌 새로운 영속성 컨텍스트에서 조회를 하게 돼버려서 실 객체 데이터가 조회되는 것이 아닌 프록시 객체가 조회가 되고 있다는 내용으로 이해했습니다. 그래서 제가 여태 해본 방법으로는, 서비스 레벨의 findById(long id) 메서드에서 member 정보만 따로 조회하고 pet만을 따로 각각 조회한 후 dto로 반환 해보기 (예: memberRepository.findByid()로 회원만 조회, petRepository.findbyCustomerId()로 pet만 따로 조회 후, new MemberResponse.GetCustomer()로 반환 -> 안됨.(X) 현재 메서드 레벨 위에 작성되어 있는 트랜잭션 어노테이션이 readOnly = true로 읽기 전용이면 pets를 초기화 할 수도 없을 수 있다길래 readOnly = true 옵션도 빼 보기 -> 안됨.(X) yml 설정 파일에 spring: jpa: open-in-view: true 옵션 설정 해보기 -> 안됨.(X) Member(회원) 엔티티에 읽기 전용으로 있는 List<> pets를 지연 로딩이 아닌 즉시로딩으로 바꾸기. -> 이 경우에만 됨.(O) Hibernate.initialize(member.getPets()); 을 사용해서 컬렉션 강제 초기화 하기 -> 안됨.(X) 현재 이렇게 까지 시도해 봤고 pets를 즉시 로딩으로 바꾸는 경우 말고는 아예 되지 않는 상황입니다. 보통 저와 같은 경우 간단하게 해결되는 문제던데 스택오버플로우와 구글의 힘을 빌려 검색해서 시도해 본 결과 해결되지 않았습니다.. 제가 어떤 실수를 하고 있는지, 뭐가 문제인지 봐주시면 감사하겠습니다.!! 추가 설명이 필요하거나 깃허브 주소라도 필요하면 댓글로 남기겠습니다!
해결됨
유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
현재 사용중인 기기 : 맥북 SettingsUI 어드레서블 에셋 등록 시 폰트 리소스 렌더링 이슈 강의와 차이점 : OpenGLES3 없음 -> OpenGLCore(Deprecated) 로 대체 폰트 렌더링이 되지 않고 있습니다. 해결 방법 아시는분 계시면 공유 부탁드립니다. 추가 Mac Silicon Chips 은 Metal 사용 Canvas Renderer 충돌로 보임 플레이 시 Material -> shader 옵션 변경 시 텍스트 전체 보임 폰트 설정 시 해당 텍스트 보임 대체 안 폰트도 어드레서블 등록해서 리소스 관리할지
해결됨
유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
세계시간 API 서버 SSL Connection 에러로 호출이 되지않아 대체 API 를 찾고있습니다. 대체 API 아시는 분은 공유 부탁드립니다. 강의 예제 세계 시간 API : https://worldtimeapi.org/api/ip 상태 체크 : https://status.worldtimeapi.org/
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요, 강의 2.14에서 이전에 SSR로 만들었던 페이지를 SSG로 변경하는 것 관련하여 질문이 있습니다. SSG에서는 빌드타임에 페이지를 생성하기 때문에 쿼리스트링을 불러올 수 없어서 SSG로 만들고 싶다면 쿼리스트링 가져오는 부분은 클라이언트 사이드쪽에 코드를 추가해주면 가능하다고 하셨는데, 그럼 이 프로젝트의 검색페이지 같은 경우는 SSR를 사용하는게 나은지 SSG를 사용하는게 나은지 궁금합니다. 둘다 장단점이 있기 때문에 개발자의 판단에 달려있는걸까요? 쿼리스트링을 사용하는 페이지에서 어떤 경우에는 SSR로 만드는게 낫고 어떤경우에는 SSG로 만드는게 나을지 그 기준에 대해서도 궁금합니다. 강의 너무 잘 듣고 있습니다. 감사합니다. ++ 다른 비슷한 질문에 답변 다신 것 읽어봤는데 SSG는 식당에서 반찬을 먼저 주는 것과 같다고 말씀하셔서 이해가 잘되었습니다. 근데 SSG의 단점이 최신 데이터의 반영은 어려운것이기 때문에 데이터가 잘 변경되지 않는 페이지에서 사용하는 것이 좋다고 하셨는데, 그럼 검색페이지의 검색결과가 계속 바뀐다고 가정하면 (책 데이터가 계속 추가됨) SSR을 사용하는게 나은가요? 아니면 그 부분은 어차피 클라이언트 사이드에서 쿼리스트링 추가해서 다시 새로 불러오기 때문에 SSG로 사용해도 무방한가요? 거의 다 이해한 것 같은데 조금 헷갈리네요 ㅎㅎ
미해결
[React 2부] 고급 주제와 훅
안녕하세요 선생님 const nextState = formReducer(state, {type : "VALIDATE", validate }) 로 nextState를 정의하셨는데 애초에 SET_TOUCHED_ALL 디스패치가 실행되면 리렌더링 VALIDATE 디스패치가 실행되면 또 리렌더링 되어 onSubmit 함수가 정상 동작해야 될거 같은데.. 그렇게 생각하면 안되는 이유가 궁금합니다.!
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
comment기능에서 comment테이블에 article_id을 shard key로 사용한다고 하셨는데 comment기능은 article기능에 뎃글을 다는 기능으로 article테이블에 article_id와 연관관계를 맺는 컬럼이 아닌건가요? 만약맞다면 article테이블에 article_id를 comment테이블에 article_id에 저장되게끔 해야 할 듯 한거 같은데 1고정값으로 넣는게 이해가 안되서 질문드렸습니다.
미해결
[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
강의 정말 도움이 많이 되었습니다. 스킬 이펙트, 아이콘, 폰트등 제가 사용해도 되는것들이 있을까요?? 감사합니다.
미해결
김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
안녕하세요 I/O 흐름을 제가 제대로 이해했는지 궁금합니다... I/O class : byte class / String class 로 나뉨 byte class output 위주로 정리 기본스트림(FileOutputStream)을 사용하여 1byte씩 loop를 사용해서 쓰기 byte array 사용하여 배열 사이즈 만큼 쓰기 보조스트림(BufferedOutputStream)을 사용하여 쓰기 String class 기본스트림(FileOutputStream) 과 String.getBytes(charset)을 사용하여 직접 인코딩하여 쓰기 보조스트림(OutputStreamWriter : 인코딩 대신 처리)사용하여 쓰기 FileWriter(FileOutputStream을 내부에서 생성 / OutputStreamWriter 상속) 사용하여 쓰기 질문1) 위의 흐름이 맞을까요? 질문2) String class 는 인코딩을 해야하지만 byte class 인코딩을 하지 않는다. 두가지 질문이 맞을까요?
미해결
[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
이것저것 수정하면서 알아챈 점이 있는데 TaskGroup의 public bool IsAllTaskComplete => tasks.All(x => x.IsComplete); public bool IsComplete => State == TaskGroupState.Complete; 이 부분에서 IsAllTaskComplete이 참이 되면 어짜피 태스크 그룹의 State도 클리어가 되어야하고 Iscomplete 참이 되어야하는데 왜 이렇게 되어있는지 여쭤보고싶습니다. 혹시 강의 내용에 사유를 말씀하셨다면 죄송합니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 서버 쪽에 HandleSkill() 함수를 보면 스킬 사용이 문제 없다면 주석에 info.PosInfo.State = EntityState.Skill 코드가 있는데요. 지금 시점에서는 사용되지 않는 코드인 것 같은데 나중에 사용될까요? 당연히 지금 로직에서는 없어도 동작에 지장이 없습니다. 클라이언트의 PlayerController.cs에서 CoStartPunch() 함수를 호출할 때 쿨타임을 위해(?) CheckUpdateFlag()를 호출하는데 이게 기본적으로 이동 패킷이라서 지금 로직에서는 없어도 되는 코드로 보입니다. 강의에서 설명해주신 기능에 실제로 이 코드가 필요한 게 맞는지 궁금합니다 쿨타임 관련해서 클라/서버 둘 다 처리해야 한다고 말씀하셨는데 작성된 코드를 보면 클라에서만 코루틴을 사용해서 처리하신 것 같습니다. 서버에서는 시간 관련한 로직이 없으니까요. 감사합니다.
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Comment 엔티티 생성시 연관관계를 Long articleId로 해줌으로써 Article 엔티티와 연관관계를 맺어준것일까요? Article과 Comment는 1:N 관계로 보이는데, comment 테이블 설계 당시 Article에 대한 외래키 관리를 comment 테이블에서 안해준 이유도 궁금합니다.
해결됨
3시간 만에 끝내는 Cursor 완벽 가이드
composers 기능이 현재는 다른 이름으로 대체되거나 없어졌나요? 찾을 수가 없네요
해결됨
한 입 크기로 잘라먹는 Next.js
error.tsx 핸들링에서 막국수를 검색할때 error.tsx component가 보이지 않습니다. 혹시 변경된부분이 있나요..? 현재 api주소로 직접 던져보니 빈배열을 받아와서 error처리가 안됬네요, 혹시 강사님께서는 이런에러처리를 어떻게하셨나요? 보통 어떻게하는게 좋을지를 몰라서요.. 아 죄송합니다. 백엔드 server를 중단안했네요.하하하 참 정신이없네요. 그나저나 위의 저 빈배열은 보통 에러처리가 어떻게하는지는 궁금합니다.
해결됨
한 입 크기로 잘라먹는 Next.js
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢 ) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.