안녕하세요 강의 정말 잘 들었습니다. 강의를 들은 후 위치권한 설정 등 기타 상황을 처리하기 위한 분기 로직과 위젯, 화면등을 구성하다 보니 강의에서는 View, Viewmodel, Model, Repository 정도로 나누었던 폴더에 서로 다른 기능의 여러 파일들이 들어가니 알아보기가 쉽지 않은데요, 앱의 기능이 많아지고 복잡해지는 경우에는 프로젝트 폴더 구성을 어떻게 하는지 궁금합니다. 기능별로 하위에 MVVM으로 폴더를 구성해야 할까요?
안녕하세요! 루키스님 강의를 통해 서버를 공부하고 있는 한 대학생입니다. 현재 학교에서 게임 서버와 관련된 전공이 따로 있지 않아 혼자 공부하며 졸업작품을 사전에 준비하려고 하는데요. 게임에 사용되는 서버가 단순히 클라이언트를 연결해주는 서버 뿐만 아니라, 채팅 서버, 동기화 서버, NPC서버 등등.. 기능에 따라 분할하여 관리하는 경우가 많다고 들었습니다. (실제로 현업에서는 어떻게 관리되는지 모르겠지만 구글에서 찾아본 바로는 이렇게 알고 있습니다.) 현재 MMORPG 게임 서버를 만드는 데에 있어서 어떠한 요구사항들이 필요한지 구조를 설계해보고 있는데,사실 현재 질문을 작성한 섹션까지의 강의를 보고 따라하면서도 코드가 잘 와닿지 않습니다. 우선 제 생각은 처음부터 끝까지 우선 정독하며 코드를 따라 작성하며 다시 정주행하며 작성했던 코드들 하나하나 뜯어보고자 했는데, 현재 이해되지 않는 부분들을 이해하고 넘어가는게 좋을까요? 또한 제가 처음부터 이쪽으로 공부했던 것이 아니라, 전과를 하여 전공지식에 있어서 부족한 점들이 있습니다. 특히 데이터 베이스나 웹에 대한 지식이 아직 없는데, 데이터 베이스를 공부한 뒤 서버를 공부하는 것이 좋을까요? 해당 강의에서 알려주시는 서버에 관한 내용들은 위에서 제가 언급한 분할 서버들(채팅, 동기화 등)에서도 모두 활용이 되는 내용들일까요? 아니면 전혀 무관하여 부가적인 공부가 필요할까요? 클라이언트는 기존에 작게 프로젝트를 해본 경험이 있어 어느정도 익숙해졌다고 생각해 서버를 공부하기 시작한건데요. 서버 프로그래밍이 매우 어렵다는 것을 알고 나름 강의를 수강하기 전 이론에 관해서도 어느정도 확립한 뒤 듣고있는데도.... 코드를 봐도 전체적인 흐름조차 잘 파악이 되지 않네요... 정상일까요? 아니면 기본기가 부족하여 이해를 못하고 있는 것일까요? 목표는 클라이언트 프로그래머이지만, 서버를 알고 클라이언트를 개발하는 것과 모르고 개발하는 것에 큰 차이가 있을 것이라고 생각해 작게라도 MMORPG를 한번 만들어보고자 하고 있는데, 어려운만큼 노력하면 되는건데도 시작점이 같지 않다는 핑계가 머리를 떠나지를 못하네요.. 아직 부족한 전공지식도 많은데 이런 내용들을 공부해도 괜찮은 걸까요?
안녕하세요. 6.특정 폴더 내, 모든 엑셀 파일 통합 강의 수강 중 질문이 있어 문의드립니다. [3:31]파일경로 지정 후 불러오면, 작은 창(탐색창?)이 아닌, 바로 쿼리 편집기가 생성됩니다. 따라서 결합 메뉴에 '데이터 결합 및 변환'을 선택할 수 없어 파일 병합의 설정을 할 수가 없습니다. 쿼리가 익숙치 않아 버전 차이인지 다른 방법이 있다면 답변 부탁드립니다. 현재 2016 버전입니다. 감사합니다.
안녕하세요! 마지막에 8:20에 나오는 설명대로 commit을 나누어서 진행하고 push and build를 하였는데 아래와 같이 error가 발생하고 있습니다. 어떤 부분이 문제인지 궁금합니다 Error occurred prerendering page "/". Read more: https://nextjs.org/docs/messages/prerender-error SyntaxError: Unexpected token < in JSON at position 0 Error: Export encountered errors on following paths:/ 아래에 코드로 build하면 정상적으로 동작합니다.. const stores = (await import('../public/stores.json')).default
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 혹시 강의 교재는 어디에서 다운로드 할 수 있을까요?
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요. 38강의 N + 1 문제를 해결하기 위한 fetch join 문제 해결과 관련해서 제가 발견(?)한 것을 질문드리고자 합니다! 수업 내용 중 N + 1 문제를 querydsl을 사용해서 해결하는 것을 보여주셨는데요. 코드가 다음과 같았습니다. class UserRepositoryCustomImpl( private val queryFactory: JPAQueryFactory ) : UserRepositoryCustom { override fun findAllWithHistories(): List<User> { return queryFactory .select(user) .distinct() .from(user) .leftJoin(userLoanHistory).on(userLoanHistory.user.id.eq(user.id)).fetchJoin() .fetch() } } 그러고 테스트를 돌렸을 때 쿼리가 찍히는 걸 보면 다음과 같습니다. N + 1 문제가 아직 발생하고 있는 것 같습니다. 조금 이상해서 구글링을 해보니 querydsl에서 on 절을 사용하면 두 엔티티가 연관관계라는 것을 인식하지 못 한다고 하네요! 그래서 코드를 다음과 같이 좀 바꿔봤습니다. class UserRepositoryCustomImpl( private val queryFactory: JPAQueryFactory ) : UserRepositoryCustom { override fun findAllWithHistories(): List<User> { return queryFactory .select(user) .distinct() .from(user) .leftJoin(user.userLoanHistories, userLoanHistory).fetchJoin() .fetch() } } 이렇게 바꾸고 쿼리를 찍히는 것을 확인하니까 한 번에 fetch join 되면서 가져오는 것 같습니다! 한 번 확인해주시면 감사하겠습니다!
@GetMapping("/basic-objects") public String basicObjects(HttpSession session) { ... } 위 컨트롤러 작성하는 부분입니다. 관련된 html 파일은 basic-objects.html 인데, ${#session} 으로 세션을 꺼내고 ${session} 으로도 세션을 꺼내네요. 컨트롤러에서 파라미터로 호출하면 자동으로 모델에 담아서 뷰단으로 넘겨주기 때문에 기본으로 제공하는 #session 과 파라미터로 호출한 session 둘다 꺼낼 수 있는걸로 보입니다. 그런데 강의문서에 "스프링 부트 3.0 이상이라면 다음과 같이 작성하자." 라고 써있고 컨트롤러에서 HttpServletRequest.. 리퀘스트와 리스폰스 그리고 서블릿 컨테이너를 Model 에 addAttribute 로 넣어 뷰단에 넘겨줍니다. // 스프링 부트 3.0 이상 @GetMapping("/basic-objects") public String basicObjects(Model model, HttpServletRequest request, HttpServletResponse response, HttpSession session) { session.setAttribute("sessionData", "Hello Session"); model.addAttribute("request", request); model.addAttribute("response", response); model.addAttribute("servletContext", request.getServletContext()); return "basic/basic-objects"; } 리퀘스트와 리스폰스는 컨트롤러 메서드에서 파라미터로 호출했으니 Model 에 넣어서 넘겨줄 필요 없는거 아닌가요?
현재 CMake CLI 사용법 강의 수강 중입니다. 4분 12초부터 나오는 Cmake 명령어를 입력해서 빌드하는 부분에서 막히고 있습니다. 1.입력한 명령어 moonhyung@DESKTOP-Q9M8J51:/mnt/c/ClionProjects/Practice-cmake.git/hello-cmake$ cmake -B build . 2.에러 메세지 CMake Deprecation Warning at CMakeLists.txt:2 (cmake_minimum_required): Compatibility with CMake < 3.5 will be removed from a future version of CMake. Update the VERSION argument <min> value or use a ...<max> suffix to tell CMake that the project does not need compatibility with older versions. CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred! 3.원인으로 예상하는 부분 & 확인한 부분 - C컴파일러를 Cmake가 찾지 못해서 발생하는 에러라고 생각해서 아래 사항들을 확인해 보았습니다. 3-1) gcc 컴파일러 버전 확인 & Cmake 버전 Gcc 컴파일러 버전 Cmake 버전 3-2)환경변수 경로 확인 및 추가 CC=/usr/bin/gcc CXX=/usr/bin/g++
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 3 - J 주난의 난 문제를 다음과 같은 방법으로 풀었습니다 2차원 arr 에 입력을 저장하고 상하좌우 bfs 로 탐색을 진행하면서 만약 '1' 이 나올 경우 이를 q2에 저장 만약 '0' 이 나올 경우 계속 bfs 탐색을 진행하고 목표에 도달하지 못하고 탐색을 다 마친경우 q2 에 저장된 '1' 을 전부 '0' 으로 바꿔주고 BFS 탐색을 다시 처음부터 진행 위의 같은 방법으로 진행하였는데 큰돌의 해설을 보니 '0' 이 아닌 경우 '0' 으로 바로 바꾸고 탐색을 마친 후 temp 큐에 있던 좌표를 기반으로 다시 탐색을 진행하게 되는데 저는 '1' 을 마주친 경우 바로 바꾸지 않고 나중에 바꾸고 탐색을 처음부터 다시 진행 큰돌님의 코드는 '1' 을 마주친 경우 바로 바꾸고 탐색을 이어서 진행 으로 해석할 수 있는 걸까요?? 코드의 로직은 동일하나 변경 시점과 탐색 시점이 다른 거다 라고 보면 될까요?? 큐를 2개 써야된다는 큰돌님의 조언만 듣고 바로 문제를 풀어서 정답을 맞았지만 정확히 이해가 됐는지 확인하고자 질문드립니다!! 제 전체 코드는 https://www.acmicpc.net/source/66428450 입니다! 그리고 저는 BFS 를 처음부터 탐색하여 visited 를 계속 초기화 해주었는데 fill(&visited[0][0], &visited[0][0] + N * M, 0); 으로 문제에서 주어지는 N 과 M 크기 만큼만 초기화 하려고 하니 무한루프를 벗어나지 못하는 일이 생겨 fill(&visited[0][0], &visited[0][0] + 301 * 301, 0); 결국 visited 배열의 크기 만큼 초기화를 하는 것으로 바꾸니 정상 동작하였습니다! 저는 처음 코드가 사용한 만큼의 영역에 대해서만 초기화 한다고 생각했지만 그렇지 않은 걸까요??
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 93: invalid start byte 거의 끝까지 다 작성하고 runserver 동작시키는데 갑자기 안되는데 왜이런걸까요?ㅠㅠ 잘되다가 갑자기 안되네요ㅠㅠ