카메라 보더
해결됨
AI 시대의 혁신적인 게임 개발 입문 with Unity6
카메라 흰색 보더라인은 어디서 켜고 끌수있나요?
- C#
- unity
- 인공지능(ai)
172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
AI 시대의 혁신적인 게임 개발 입문 with Unity6
카메라 흰색 보더라인은 어디서 켜고 끌수있나요?
미해결
나도! 스프링으로 인공지능을 할 수 있다(인프1탄)
안녕하세요 강사님. 혹시 상품 관련 추천을 구현하기 위해 pgvector를 구현하고 싶은 취준생입니다. 상품 데이터 안에 브랜드, 카테고리, 가격, 이전에 조회한 상품들, 이후에 조회한 상품들 등 이러한 필드를 이용해서 이걸 Document로 만든 다음 코사인 유사도를 구해도 괜찮을까요 아니면 Document는 text만 가능한가요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
포폴을 Part7 기반으로 만들고 있습니다. 클라로 지원을 할예정인데 Part7만을 기반으로 포폴을 만들어도 괜찮나요? 그리고 DB연동같은 부분들을 해보고싶은데 Part8을 듣지 않고도 Part9부터 들어도 괜찮을까요?
해결됨
포트폴리오 어나더레벨 | 합격하는 이력서 작성법
안녕하세요 혹시 신입개발자의 경우 자신을 표현하는수단(프로젝트,어워드 등)같은 부분이 많이 없어서 자기소개와 같은 부분을 하나의 섹션으로 작성하여 좀 더 자신을 드러내는 건 어떻게 생각하시나요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요, 해당 강의에서 만든 코드 기반으로 제 게임에 맞춘 서버를 AWS EC2에서 몇 주째 실행중입니다. 개발 컴퓨터에서 테스트할때도 그렇고 EC2에서 할때도 그렇고 강제 종료될때가 있어서 꺼지면 로그 남기게 해서 몇개 원인을 찾았는데요, UnhandledException이 뜨면서 강제종료 되는 경우가 두가지 있는 것 같습니다. 제 유추 상으로는 포트포워딩으로 게임 포트 이외에는 인바운드를 거절했는데도 쓰레기IP들이 서버를 터트리고 가는 것 같습니다. 첫번째. [11-24 18:31:38] FATAL [UnhandledException] System.Net.Sockets.SocketException (10054): An existing connection was forcibly closed by the remote host. at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName) at System.Net.Sockets.Socket.Shutdown(SocketShutdown how) at ServerCore.Session.Disconnect() in \Server\ServerCore\Session.cs:line 103 at ServerCore.Session.OnRecvCompleted(Object sender, SocketAsyncEventArgs args) in \Server\ServerCore\Session.cs:line 193 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.Sockets.SocketAsyncEventArgs.<>c.<.cctor>b__173_0(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading.ThreadPoolTypedWorkItemQueue`2.System.Threading.IThreadPoolWorkItem.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() 이 오류는 Session.cs에 소켓 Shutdown에서 발생했습니다. public void Disconnect() { if (Interlocked.Exchange(ref _disconnected, 1) == 1) return; OnDisconnected(_socket.RemoteEndPoint); _socket.Shutdown(SocketShutdown.Both); _socket.Close(); Clear(); } 서버가 터지면 안되니 임시 방편으로 try catch로 감싸놨습니다. try { _socket.Shutdown(SocketShutdown.Both); } catch (Exception e) { Console.WriteLine($"[NEW ADDED] SOCKET SHUTDOWN Failed {e}"); } try { _socket.Close(); } catch (Exception e) { Console.WriteLine($"[NEW ADDED] SOCKET CLOSE Failed {e}"); } 두번째. [11-25 10:16:12] FATAL [UnhandledException] System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.Net.Sockets.Socket'. at System.Net.Sockets.Socket.get_RemoteEndPoint() at ServerCore.Listener.OnAcceptCompleted(Object sender, SocketAsyncEventArgs args) in Server\ServerCore\Listener.cs:line 45 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.Sockets.SocketAsyncEventArgs.<>c.<.cctor>b__173_0(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading.ThreadPoolTypedWorkItemQueue`2.System.Threading.IThreadPoolWorkItem.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() -------------------------------------------------- 이 오류는 Listener.cs의 RemoteEndPoint를 가져오는 부분에서 발생했는데요, void OnAcceptCompleted(object sender, SocketAsyncEventArgs args) { if (args.SocketError == SocketError.Success) { Session session = _sessionFactory.Invoke(); session.Start(args.AcceptSocket); session.OnConnected(args.AcceptSocket.RemoteEndPoint); } else Console.WriteLine(args.SocketError.ToString()); RegisterAccept(args); } 비쥬얼 스튜디오에서도 args.AcceptSocket.RemoteEndPoint 는 null일수도 있다고 뜨기는 하는데 이부분도 != null을 붙여서 해야하는지 try catch로 감싸야하는지 궁금합니다. 근본적인 원인은 예외가 왜 발생하는지 알아야하는데 전부 API 단이라 try catch 혹은 != null 빼고는 대책을 강구하기가 어렵습니다. 요약하자면 이런 UnhandledException이 나올때 해당 코드를 try { } catch로 해주것이 괜찮은 방법인가요? 혹시 근본적인 해결책이 있다면 궁금합니다.
미해결
김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
회사에서 자바 8만써서 자바8로 학습하려고하는데.. 8로는 진행이안될까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
.
미해결
실전! 스프링 데이터 JPA
안녕하세요. 강의 초반에 Sort인터페이스와 Pageable인터페이스를 말씀해주셨는데, 이후에 Sort에 대해서는 언급이 없으셔서 질문드립니다. 주로 Pageable을 사용하고 Sort는 사용을 잘 안하는것일까요? Sort를 사용하는 경우는 어떤 경우에 주로 사용하나요?
미해결
죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
킬구형 우리 매니저는 무슨 이유인지 mysql, postgres처럼 RDB를 무지무지 싫어해, 어떤 말을 해도 RDB는 절대 안된다고 하걸랑 그런데 하필이면 Spring Batch가 RDB를 필요로 한단 말이지! 매일 밤마다 상용 서버의 로그 데이터를 분석하고 다른 데이터 소스로 보낼 정도로만 쓰려고 하는데, Spring Batch RDB로 H2 file mode나 sqllite로 Spring Batch를 돌려도 문제가 없을까 헝헝... 나 슬퍼
해결됨
유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
using System.Collections; using System.Collections.Generic; using UnityEngine; public class UserDataManager : SingletonBehaviour<UserDataManager> { public bool ExistsSavedData { get; private set; } public List<IUserData> UserDataList { get; private set; } = new List<IUserData>(); protected override void Init() { base.Init(); UserDataList.Add(new UserSettingData()); UserDataList.Add(new UserGoodsData()); } public void SetDefaultUserData() { for(int i = 0; i < UserDataList.Count; i++) { UserDataList[i].SetDefaultData(); } } public void LoadUserData() { ExistsSavedData = PlayerPrefs.GetInt("ExistsSavedData") == 1 ? true : false; if(ExistsSavedData) { for (int i = 0; i < UserDataList.Count; i++) { UserDataList[i].LoadData(); } } } public void SaveUserData() { bool hasSaveError = false; for(int i =0; i < UserDataList.Count; i++) { bool isSaveSuccess = UserDataList[i].SaveData(); if(!isSaveSuccess) { hasSaveError = true; } } if(!hasSaveError) { ExistsSavedData = true; PlayerPrefs.SetInt("ExistsSavedData", 1); PlayerPrefs.Save(); } } } 위 코드의 if(!hasSaveError) { ExistsSavedData = true; PlayerPrefs.SetInt("ExistsSavedData", 1); PlayerPrefs.Save(); } 이 부분에서 PlayerPrefs에 "ExistsSavedData"를 1로 저장해주는 이유가 있나요?? 제 짧은 생각으로는 ExistsSavedData가 어차피 true로 처리되기 때문에 필요가 없지 않을까라는 의견입니다 이와 더불어 LoadUserData()에서도 PlayerPrefs.GetInt()를 안하고 if(ExistsSavedData) 문만 가지고는 안되는지 궁금합니다. 강의 잘 듣고 있습니다. 감사합니다!
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
어제까지 됬었는데, 갑자기 안됩니다. 찾아보니 갑자기 또 된다고 하시는분 있던데.. 해결 방법 아시는분 답변 부탁드립니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
.
해결됨
김영한의 실전 자바 - 중급 2편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 9. 컬렉션 프레임워크 - Map, Stack, Queue의 문제와 풀이2 - Map2의 7-장바구니의 "만약 수량이 0보다 작다면 상품이 장바구니에서 제거된다" 가 실행 결과를 참고하면, "만약 수량이 0 이하가 되면 상품이 장바구니에서 제거된다" 이렇게 하는게 맞지 않나 싶습니다.
해결됨
데이터베이스를 결합한 Unity 실전 게임 만들기
질문은 언제든지 해주세요! 질문은 강의와 관련된 부분만 해주시면 됩니다! userInfoCache로 처음 Start할때 불러와서 저장을 한다음에 Update에서 비동기프로그래밍으로 CoinText를 업데이트 해주셨는데 어차피 캐시값을 불러와 UI를 계속 갱신하는건 불필요한 작업 아닌가요? Update메소드에서 왜 작업을 하는지 궁금합니다.
미해결
Spring WebFlux + LLM 실전 구현
혹시 실습중에 Quota 초과되어서 호출 안되시는 분들은 gpt-4o 대신 비용이 더 낮은 gpt-5-nano 모델로 호출해보세요 저는 모델 바꾸니까 결제 안해도 호출은 되더라구요 (결국 여러번 시도하면 quota 때문에 막히긴합니다) https://platform.openai.com/docs/pricing
해결됨
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
안녕하세요 딩코님, 클라우드 환경에서 비용이 발생하지 않는 올바른 테스트 방법에 대해 여쭙고자 질문 남깁니다. 제 스스로 느끼기에, 제가 프리티어로 사용하고 있는 EC2 인스턴스 내부에서 k6 스크립트를 실행하게 되면 EC2 과부화는 물론 RDS 에도 몇백만건의 데이터가 삽입이 되니 비용적, 컴퓨팅 자원적 문제가 발생할 것 으로 생각이 됩니다. 그래서 혹시 다음과 같은 방법으로 클라우드 환경 테스트를 진행하면 될지 여쭤보고 싶습니다. 테라포밍을 통해 AWS EC2 + RDS 조합으로 서버 배포 배포된 해당 주소로 제가 가지고 있는 노트북(EC2 아니고 제 로컬 PC) 터미널에서 k6 스크립트 실행 이때도 비용문제가 발생하는지? -> 아니라면 저비용으로 테스트하는 국룰 방법을 좀 소개해 주시면 감사드리겠습니다 ! 강의 너무 재밌습니다 ㅋㅋㅋ 감사합니다 !
해결됨
포트폴리오 어나더레벨 | 합격하는 이력서 작성법
안녕하세요 !! 큰돌님, 좋은 강의 잘 들었습니다. 혹시 제공해주신 이력서 양식 .docx로 된것, 이름이랑 이력만 제 것으로 수정해서 그대로 사용해도 괜찮을까요 ??? 감사합니다.
미해결
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
안녕하세요 . 강의에서 애그리거트 루트가 하위 도메인을 일관성을 유지하기 위해 member.updateInfo() 로 MemberDetail updateinfo() 를 호출하는것을 보았는데요 만약 Profille에 여러 속성(프로필주소, 프로필이미지를 불러올 수 있는 주소,정보 등이 존재)이 있어 값 타입이 아닌 Entity로 존재해야 할 경우엔 member.updateInfo() -> memberDetail.updateInfo() -> profile.updateInfo() 로 depth가 내려갈 것 같은데요. 뭔가 잘못된 방법 같아서요.. 혹시 이런 경우에는 어떻게 도메인을 설계해야 좋을지 궁금합니다...!!
미해결
실전 jOOQ! Type Safe SQL with Java
안녕하세요 공부하다가 보니 FetchGroups방식으로 했을때 Map으로 반환되고 DTO로 변환해야하는 오버헤드가 발생하는데요 Multiset방식으로 하면 1:N 관계에서 바로 DTO로 반환 할 수 있는데요 코드 보기가 조금은 더 복잡해 보이지만 WHERE절이 있을때 현재 테이블 데이터와 인덱스 상으로는 성능적으로 더 괜찮은거 같아서 multiset방식은 강의에 없어서 어떤지 궁금해서 여쭤봅니다 public List<ActorFilmography> findActorFilmographyWithMultiset(ActorFilmographySearchOption searchOption) { final JFilmActor FILM_ACTOR = JFilmActor.FILM_ACTOR; final JFilm FILM = JFilm.FILM; return dslContext.select( ACTOR, DSL.multiset( DSL.select(FILM.fields()) .from(FILM) .join(FILM_ACTOR) .on(FILM.FILM_ID.eq(FILM_ACTOR.FILM_ID)) .where( FILM_ACTOR.ACTOR_ID.eq(ACTOR.ACTOR_ID), containsIfNotBlank(FILM.TITLE, searchOption.getFilmTitle()) ) ).convertFrom(r -> r.into(Film.class)) ) .from(ACTOR) .where( containsIfNotBlank(ACTOR.FIRST_NAME.concat(" ").concat(ACTOR.LAST_NAME), searchOption.getActorName()) ) .fetch(record -> new ActorFilmography( record.value1().into(Actor.class), record.value2() )); } WHERE 조건 포함 시 성능 비교 fetchGroups 방식 (cost=405, rows=609) Film 필터링 먼저 → FilmActor 조인 → Actor 필터링 1. film 테이블 스캔 (1000 rows) └─ LIKE '%COMMANDMENTS EXPRESS%' → 111 rows 2. film_actor 인덱스 조회 (idx_fk_film_id) → 609 rows 3. actor PRIMARY KEY 조회 → 609 rows └─ LIKE '%LOLLOBRIGIDA%' → 1 row (최종) 특징: - Film 조건이 선택적이면 먼저 필터링하여 조인 범위 축소 - 하지만 Actor 필터링은 마지막에 수행 (비효율) - 609개 row가 네트워크 전송 → 애플리케이션에서 1개로 그룹핑 --- multiset 방식 (cost=20.2 + 13.3 × filtered_actors) Actor 필터링 먼저 → 각 Actor의 Film 서브쿼리 1. actor 테이블 스캔 (200 rows) └─ LIKE '%LOLLOBRIGIDA%' → 1 row (필터링 후) 2. 필터링된 1개 actor에 대해 서브쿼리 실행: - film_actor PRIMARY KEY 조회 (27.3 rows 추정) - film PRIMARY KEY 조회 (27.3번) - LIKE '%COMMANDMENTS EXPRESS%' → 1개 매칭 특징: - Actor 조건을 먼저 적용하여 서브쿼리 실행 횟수 최소화 - 필터링된 1개 Actor만 네트워크 전송 (JSON 포함) - Film 필터링은 각 actor 서브쿼리 내부에서 수행 --- 실제 Total Cost 계산 fetchGroups Total: 405 네트워크 전송: 609 rows (Actor + Film 중복 포함) 애플리케이션 처리: Map 생성 + Stream 변환 multiset Total: 20.2 + (13.3 × 1) = 33.5 네트워크 전송: 1 row (Actor + JSON array) 애플리케이션 처리: JSON 역직렬화 결론: WHERE 조건이 있으면 multiset이 압도적으로 유리 (405 vs 33.5) FetchGroups는 Actor를 나중에 필터링하고 multiset은 actor를 먼저 필터링해서 1개에 대한 film을 여러개 가져와서 현재 데이터에서는 더 유리한데 일반적인 사용법이 궁금합니다
해결됨
백엔드 6주 실전 미션과 1:1 피드백으로 완성하는 합격 포트폴리오 - 2기
안녕하세요 딩코딩코 선생님. 다름이 아니라 궁금한 점이 있어 Q&A에다가 글을 올립니다. 6주차 까지 진행을 하며 현재 실제 업무를 하며 해결한 내역들에 대해 다시 한번 정리 해 보는 시간을 가지려고 합니다. 이러한 과정을 수행했을 때 혹시 피드백을 해 주실 수 있는지 궁금합니다.