[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
(참고)실습 환경: 윈도우 11 Pro 24H2 26100.3194 DirectXTex 라이브러리를 다운받아 DirectXTex_Desktop_2022 솔루션을 Debug, Release 모드로 각각 빌드하여 강의 영상과 동일하게 아래와 같은 디렉토리 구조로 파일을 배치하였습니다. Library Include DirectXTex DirectXTex.h DirectXTex.inl Lib DirectXTex DirectXTex.lib DirectXTexD.lib 그리고 Engine 정적 라이브러리 프로젝트의 EnginePCH.h 파일에 #include <DirectXTex/DirectXTex.h> #include <DirectXTex/DirectXTex.inl> #pragma comment(lib, "d3d12") #pragma comment(lib, "dxgi") #pragma comment(lib, "dxguid") #pragma comment(lib, "d3dcompiler") #ifdef _DEBUG #pragma comment(lib, "DirectXTex\\DirectXTexD.lib") #else #pragma comment(lib, "DirectXTex\\DirectXTex.lib") #endif 위와 같이 추가하였고, 디렉터리 경로 또한 설정 완료된 상황입니다. Engine 프로젝트에는 모든 구성 x64 포함 디렉터리: $(SolutionDir)Library\Include\ Client 프로젝트에는 모든 구성 x64 포함 디렉터리: $(SolutionDir)Library\Include\, $(SolutionDir)Engine\ 모든 구성 x64 라이브러리 디렉터리: $(SolutionDir)Library\Lib\, $(SolutionDir)Output\ 이런 상황에서 Engine 정적 라이브러리를 빌드하면 통과하나, Client 프로젝트를 빌드하면 DirectXTex 의 두 함수 DirectX::CreateTexture, DirectX::PrepareUpload 에 대해 LNK2019 에러가 발생합니다. 경로 설정이나 lib 파일 설정 등등을 몇 번이나 확인했는데도 어디서 문제가 생기는 지 확인이 안되네요... 올려주신 강의 자료 프로젝트와 1:1로 비교해도 어디가 문제인지 발견이 안되는데, 어디를 점검해보면 될 까요...?
강의에서 다대다 연관관계 일때는, 중간에 엔티티를 하나 더 추가해서 일대다, 다대일 관계로 하는게 효율적이라고 말씀하셨습니다. 1. 그래서 MEMBER와 PRODUCT간에 다대다 관계인것을 중간에 ORDER를 추가해서 일대다, 다대일 관계로 해야하는거 같은데, 여기서 말씀하신 일대다 관계라는게, 앞선 강의에 있는 일대다 단방향 연관관계를 말하는것일까요?? MEMBER -> ORDER간에 일대다 단방향 연관관계를 말씀하시는것인지, 아니면 MEMBER <-> ORDER 간에 다대일 양방향 연관관계로 하는것을 말씀하시는것인지 헷갈려서 질문드립니다.. 즉, 여기서 말하는 일대다 관계라는게 MEMBER에서 외래키를 관리하는 일대다 단방향 연관관계의 개념인것인지, 중간테이블 관점에서 다대일 관계를 말하는것인지 헷갈려서 질문드립니다.. 2. 다대다 연관관계일때는 중간에 엔티티를 두어, 중간 엔티티를 기준으로 다대일 단방향 연관관계나, 다대일 양방향 연관관계로 해야 하는것일까요??
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 라이브러리 및 데이터불러오기 20분지점 주어진 데이터 분리하기 train= pd.read _csv("train.csv") test= pd.read _csv("test.csv") 가 주어졌습니다. 이게 어느 단계에서의 작업이며, 데이터를 왜 분리하는지, 어떤 데이터를 분리하는지에 대해 전반적인 설명이 없어서 지금의 학습과정을 이해할 수 없습니다. train과 test가 주어졌다면 타겟레이블을 생성하는 과정이 아닐까 추측해 봤지만, 여기서는 income을 삭제했는데 왜 삭제했는지 이해가 안 갑니다. 설명을 바랍니다.
죄송하지만 질문하실 때 React 또는 Vue와 같은 자바스크립트 프레임워크에서 Tailwind CSS 설치 및 사용에 관한 질문은 하지 말아주세요. 질문하셔도 React 또는 Vue 환경을 몰라서 답변을 드릴 수가 없습니다. 오직 순수한 Tailwind CSS 관련 질문과 CSS 속성 및 활용에 관한 질문만 해주시면 감사드리겠습니다. 강의명 : 반응형 레이아웃 - Responsive Design Container 과 Responsive Design 차이가 아래가 맞을까여? Container: 전체적으로 반응형으로 설정 Responsive Design : 선언한 엘리먼트 기으로 (국소적으로) 레이아웃을 세세하게 컨트롤 한다
'스위치는 네트워크 그 자체를 이루는 호스트이다.'라고 표현하셨는데 이 부분이 헷갈립니다. '엔드 포인트는 네트워크 그 자체를 이루고 있지 않다는 것인가?'라는 의문이 들기 때문입니다. 저는 이렇게 이해했습니다. '스위치는 네트워크 그 자체를 이루는 목적의 호스트이고, 엔드 포인트는 네트워크를 이루면서 다른 목적도 있는 호스트이다.' 제가 이해한 것이 맞는지 궁금합니다.
useEffect의 dependency array에 배열을 넣는 경우 "Maximum update depth exceeded." error가 발생하게 되는데, 이 경우는 어떻게 해야하나요? 예를 들어 아래와 같은 상황이라고 가정하겠습니다. 화면에는 테이블 1개만 존재한다. 데이터는 unknown[] 형태이다. 다른 조건에 의해 데이터의 갯수가 달라지는 경우에만 다시 렌더링한다. 코드로 예시를 들면 아래와 같습니다. const [items, setItems] = useState<unknown[]>([]); useEffect(() => void, [items]) 답변주시면 감사합니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 아래처럼 Stack 대신 Queue 를 사용해 BFS 로 변경해도 문제가 없을까요? private void openSurroundedCellsBFS(CellPosition cellPosition) { Queue<CellPosition> queue = new LinkedList<>(); queue.add(cellPosition); while (!queue.isEmpty()) { openAndEnqueueCell(queue); } } private void openAndEnqueueCell(Queue<CellPosition> queue) { CellPosition currentCellPosition = queue.poll(); // 큐에서 꺼냄 if (isOpenedCell(currentCellPosition)) { return; } if (isLandMineCellAt(currentCellPosition)) { return; } openOneCellAt(currentCellPosition); if (doesCellHaveLandMineCount(currentCellPosition)) { return; } List<CellPosition> surroundedPositions = calculateSurroundedPositions(currentCellPosition, getRowSize(), getColSize()); for (CellPosition surroundedPosition : surroundedPositions) { queue.add(surroundedPosition); } }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 위와같이 강의 따라서 @getMapping("/new-form") 이렇게만 해줘도 HTTP GET 메서드만 받을 수 있도록 제약할 수 있고, URL 매핑까지 된다는 걸 배웠는데요, @GetMapping("/new-form") 이렇게 @GetMapping 다음에 괄호를 열고 매핑할 url을 넣어주고 괄호를 닫으면 된다는 걸 저는 @GetMapping 소스코드에서 방법을 알려주는지 궁금했습니다. /* * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.web.bind.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.core.annotation.AliasFor; /** * Annotation for mapping HTTP {@code GET} requests onto specific handler * methods. * * <p>Specifically, {@code @GetMapping} is a <em>composed annotation</em> that * acts as a shortcut for {@code @RequestMapping(method = RequestMethod.GET)}. * * <p><strong>NOTE:</strong> This annotation cannot be used in conjunction with * other {@code @RequestMapping} annotations that are declared on the same method. * If multiple {@code @RequestMapping} annotations are detected on the same method, * a warning will be logged, and only the first mapping will be used. This applies * to {@code @RequestMapping} as well as composed {@code @RequestMapping} annotations * such as {@code @PutMapping}, {@code @PostMapping}, etc. * * @author Sam Brannen * @since 4.3 * @see PostMapping * @see PutMapping * @see DeleteMapping * @see PatchMapping * @see RequestMapping */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented @RequestMapping(method = RequestMethod.GET) public @interface GetMapping { /** * Alias for {@link RequestMapping#name}. */ @AliasFor(annotation = RequestMapping.class) String name() default ""; /** * Alias for {@link RequestMapping#value}. */ @AliasFor(annotation = RequestMapping.class) String[] value() default {}; /** * Alias for {@link RequestMapping#path}. */ @AliasFor(annotation = RequestMapping.class) String[] path() default {}; /** * Alias for {@link RequestMapping#params}. */ @AliasFor(annotation = RequestMapping.class) String[] params() default {}; /** * Alias for {@link RequestMapping#headers}. */ @AliasFor(annotation = RequestMapping.class) String[] headers() default {}; /** * Alias for {@link RequestMapping#consumes}. * @since 4.3.5 */ @AliasFor(annotation = RequestMapping.class) String[] consumes() default {}; /** * Alias for {@link RequestMapping#produces}. */ @AliasFor(annotation = RequestMapping.class) String[] produces() default {}; } 그래서 위와같이 @GetMapping 소스코드를 확인했는데, 뚜렸하게 방법을 알려준다는 건 제가 찾지 못했는데 혹시 제가 못찾는 것일까요? 아니면 제일 첫 줄에 있는 "Annotation for mapping HTTP GET requests onto specific handler methods." 이 문장으로 @GetMapping에 값을 그대로 적어주면 된다(괄호를 열고 url쓰고 닫으면 된다)고 알아들어야 하려나요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 마크다운, 단축키를 이용해서 편리하게 글을 작성할 수 있어요. 먼저 유사한 질문이 있었는지 검색해보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 프로그래밍 좀비님 본 강의를 전부 수강해보고 문의를 드립니다. 우선, 저는 현재 6년차 웹 개발자로 일을 하고 있습니다. 일을 하며 java, js 로 개발을 주로 해오고 있는데요, 최근에 머니업 챌린지 사전 영상을 보고 신청을 하고, 해당 강의를 수강하게 되었습니다. 사실 어떠한 개발이든 비슷할 것이라는 생각과, 수정 전 해당 영상 대시보드에 Kotlink, spring이 적힌걸 보고 수강 신청을 해보는 것을 용기내게 되었는데요, 영상 전반적인 내용으로는 운영과 마인드셋에 중심이 되어 있는 것 같아, 앱 개발을 처음 시작하는 사람은 어떤 스텝을 밟아 나가며 프로그래밍 좀비님 강의를 적용시켜볼 수 있을지 궁금하여 문의 드립니다.
안녕하세요! 섹션 4 강의를 보다보니 의문점이 생겨서요 Repository를 테스트하는 과정에서 test() 메서드에 .containsExactly를 사용하고있습니다. 강사님께서 내용과 순서가 모두 맞아야 한다고 설명하시더라고요. 메모리에서의 테스트나 DB를 조회할 때 순서를 보장할 수 없는 것으로 알고있는데 문제가 있을 수도 있지만 간단한 테스트를 위해서 사용한것인지 아니면 실제로도 이런식으로 테스트 하는지 궁금합니다. 관련한 질문들을 확인했으나 만족할만한 답변이 없어서 질문드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 궁금한게 있어서 질문합니다. Projection관련인데요. 제가 이해하기로는 new 오퍼레이션을 이용해서 dto에 생성자로 데이터를 담는 방식에서 진화한 방식이라고 생각되는데, 그렇게 이해는게 맞는지 궁금합니다. interface로 proejction을 사용하면 get()함수를 통해 데이터를 꺼내오는 방식이고 class를 사용하면 new 오페레이션을 사용하는 방법과 똑같이 생성자를 이용하는거 같은데, 대신 필드의 이름과 엔터티의 이름이 같던가, 같지 않다면 @Query를 이용해 alias로 맞춰주던가 하면 되는걸까요?? 또한, 이렇게 Projection을 사용해서 데이터를 가져왔을대, interface던 class던 컨트롤러에서 데이터를 프론트로 넘길때 해당 객체를 사용해도 되는건가요? 아니면 따로 또 dto를 만들어서 담은 후에 내보내야 되는건가요??
제가 맥에 대해서 거의 문외한 이어서. 발생 한 문제 원인을 잘 찾지 못하겠네요. hello-cmake 폴더에서 cmake -G "Xcode" -B build-xcode . 명령을 수행 하니 아래와 같은 오류가 발생 했습니다. -- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake Error at CMakeLists.txt:5 (project): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:5 (project): No CMAKE_CXX_COMPILER could be found. "Unix makefiles" 는 정상적으로 만들어 졌습니다. Xcode 를 한번도 실행 한적이 없어서 발생 한 문제 인가 해서 최신 버전으로 업데이트 하고. hello world 프로젝트 만들어서 빌드 까지 해보았습니다. 이것과는 관련 없는것 같고요. hello-cmake 폴더는 깃허브에서 다운 받은 것 입니다.