묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결웹 게임을 만들며 배우는 React
RenderAverage
안녕하세요,zero cho님. 유익한 강의 항상 감사드립니다:) RenderAverage (제 코드에서는 RenderAver) 부분을 따로 떼서 jsx 파일로 만들고 props 를 넘겨주는 것처럼 구현을 해보았는데, 배운지 얼마 안 돼서 이렇게 적는게 맞는지 모르겠어서 여쭤봅니다! 아무 오류도 뜨지 않고 작동은 제대로 됩니다. 저 RenderAver 부분(평균 시간과 리셋버튼 부분)만 넘기고 다른 코드는 건드리지 않았어요 첫번째 사진이 RenderAver 를 import 하는 원래 반응속도의 return 부분, 두번째가 RenderAver.jsx 코드 사진입니다. 답변해주시면 감사하겠습니다!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
디버깅이나 실행 시 너무 오래걸립니다...
이처럼 브레이크 포인트를 잡고 디버깅을 하였는데 아무리 기다려도 끝나지 않습니다. 브레이크 포인트를 program의 player.Initialize(1, 1, board);에 잡고 실행하고 f10이 아닌 f11를 통해 코드 작동을 확인하면 잘 작동하는 것은 확인했습니다. 혹시 컴퓨터의 성능에서 오는 문제인가요? 혹시 몰라 우수법 부분의 코드도 함께 올립니다. public void Initialize(int posY,int posX, Board board) { PosX = posX; PosY = posY; _board = board; int[] frontY = new int[] { -1, 0, 1, 0 }; int[] frontX = new int[] { 0, -1, 0, 1 }; int[] rightY = new int[] { 0, -1, 0, 1 }; int[] rightX = new int[] { 1, 0, -1, 0 }; _point.Add(new Pos(PosY, PosX)); while (PosY != board.DestY || PosX != board.DestX) { //1. [현재 바라보는 방향]을 기준으로 오른쪽으로 갈 수 있는지 확인. if (_board.Tile[PosX + rightX[_dir], PosY + rightY[_dir]] != Board.TileType.Wall) { //오른쪽 방향으로 90도 회전 : 시계방향 _dir = (_dir - 1 + 4) % 4; //[현재 바라보는 방향]으로 앞으로 한 보 전진 PosX = PosX + frontX[_dir]; PosY = PosY + frontY[_dir]; _point.Add(new Pos(PosY, PosX)); } //2. [현재 바라보는 방향]을 기준으로 전진할 수 있는지 확인. else if (_board.Tile[PosX + frontX[_dir], PosY + frontY[_dir]] != Board.TileType.Wall) { // 앞으로 전진 PosX = PosX + frontX[_dir]; PosY = PosY + frontY[_dir]; _point.Add(new Pos(PosY, PosX)); } else { // 왼쪽 방향으로 90도 회전 _dir = (_dir + 1 + 4) % 4; } } }
-
미해결홍정모의 따라하며 배우는 C++
2분39초에
삭제된 글입니다
-
미해결스프링 핵심 원리 - 기본편
코드 수정을 할 수 없는 외부 라이브러리에는 왜 어노테이션을 사용하지 못할까
안녕하십니까 이번 수업을 듣다가 코드를 고칠 수 없는 외부 라이브러리가 무엇일까해서 옛날에 했던 질문들을 보며 이해를 했습니다. 그래서 질문 내용처럼 왜 어노테이션을 사용하면 외부 라이브러리에 사용을 하지 못할까라는 생각이 들었습니다. 보면 @Bean을 이용하면 코드가 아니라 설정 정보를 사용하기 때문에 코드를 고칠 수 없는 외부 라이브러리에도 적용할 수 있다고 하셨습니다. 예로 gradle을 들어보겠습니다. gradle은 저희가 수정할 수 없는 외부 라이브러리입니다. 여기서 테스트를 한다고 했을 때, 우리는 테스트 코드를 짜면서 직접 @Bean으로 등록할 때, 해당 라이브러리에 있는 클래스 안에 있는 메소드들을 파악하고 빈으로 직접 등록하여 초기화, 종료를 할 수 있다. 그러나 어노테이션은 코드에 @을 붙여야하는데 코드를 수정할 수 없기 때문에 사용할 수 없다. 라고 이해를 했는데 제가 맞는지 궁금하여 질문드립니다,, 읽어주셔서 감사합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
다이나믹프로그래밍에 대해 질문있습니다 ㅎㅎㅎ
안녕하세요, 선생님 좋은 강의 감사합니다!!! 다이나믹프로그래밍 에제 풀다보니 궁금한점이 생겼는데 모든 다이나믹프로그래밍 문제는 탑다운, 바텀업 두 방식으로 다 풀 수 있는건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
스택 확인 함수 관련 질문입니다
C++ 강의 너무 좋다고 수강 후기 썼던게 어느덧 한달 전인데 그 사이에 게임 회사 붙어서 프로그래머로 회사 다니고 있습니다 정말 이렇게 게임회사를 다니게 될거라고 생각을 못했어서 질문을 하기전에 다시 감사인사드립니다! 회사다니면서도 제가 모자란 부분이 많아서 강의 계속 복습도 하고 추가 공부도 하고 있어요 오늘도 헷갈렸던 부분을 강의도 듣고 구글링하고 있었는데 질문이 생겨서 글 올립니다! 질문은 void f() { int arr[3000]; arr[0] = 0; } 이런식으로 배열을 할당하고, 배열에 어떤 값을 할당을 하는 함수가 있다고 했을 때, 위와 같은 할당 방식은 스택에서 스택 공간을 할당은 바로 하지만, 실제 접근이 이루어지기 전까지는 물리적 저장소를 커밋하지 않으니까 위에서처럼 할당을 할 때 만약 가드 페이지보다 아래에 접근을 하게되면 접근 예외가 이루어지게 될텐데요 관련 설명을 더 찾아보다보니까 컴파일러들은 컴파일 과정에서 함수를 만나게 되면 각 함수들이 필요로 하는 스택의 크기를 결정하게 된다. 만일 함수가 필요로 하는 스택의 크기가 개별 CPU의 페이지 크기보다 더 큰 메모리를 필요로 하는 경우, 컴파일러는 자동적으로 스택 확인 함수를 호출하는 코드를 삽입한다. 라는 설명이 있었는데, 함수가 필요로 하는 스택의 크기가 개별 CPU의 페이지 크기보다 더 큰 메모리를 필요로 하는 경우라는 부분이 이해가 잘 안됩니다 코드에서 할당 작업을 수행(물리적 저장소에 커밋이 되어있어야함)을 하려고 할 때, 위의 함수에서 할당 작업을 하려면 스택 사이즈가 적어도 12,000byte여야 할텐데 그러면 x86/64의 경우 시스템의 페이지 크기인 4kb를 초과하게 되고 페이지보다 더 큰 메모리를 필요로 하게되는데, 스택 확인 함수를 호출한다는건 페이지 세개를 쓸때까지..? 물리적 저장소에 커밋하고 가드 페이지를 옮기는 작업을 해주는 역할을 한다는게 맞을까요? 위에서 예약만 수행된 메모리에 대한 접근을 할 수도 있다고 했으니까요.. 그니까 결론이 그냥 접근만 하면 이런 커밋-가드페이지 옮기는 작업이 되지 않으니까 스택 확인 함수를 호출해줘서 접근 예외를 일으키지 않게 하자! 라는 느낌인게 맞는게 궁금합니다. 그리고 또 스택 부분을 공부하다보니까 그림으로 그려보면 이런 느낌인데 예약된 스택으로 예약된 페이지를 스택의 최하위를 빼고 다 쓰고나면 스택 오버플로우가 발생하는 건지, 아니면 위의 그림에서 우측 상태에서 뭐 하나를 더 추가하려고 하면 스택 오버플로우가 발생하는건지 헷갈립니다.! 그리고 또 거기도 넘어서 최하위에 뭔갈 쓰게 되면 스택 언더플로우라는걸까요? 아니면 스택의 최하위를 넘어서는 곳(그림에 점선 박스로 표시한 곳)에 뭐가 쓰이면 언더플로우인걸까요? 질문이 너무 많은 것 같네요 ㅠㅠ.. 강의 정말 잘 듣고 있고있습니다!
-
미해결스프링 핵심 원리 - 기본편
@Repository에 컴포넌트 스캔?!
이전에 질문으로 인터페이스에 붙은 컴포넌트 어노테이션이 무시된다고 하셨는데, 레포지토리는 인터페이스인데 @Repository를 사용하는 이유는 뭔가요? 또, 서비스 클래스에서 의존성 주입이 정상적으로 작동하는 걸 보면 컴포넌트 스캔이 되는거 같은데, 어떤 과정이 있는 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC2편은 언제쯤 나오나요?
김영한 팀장님 안녕하세요? 항상 좋은 강의 올려주셔서 감사드리구요 재밌게 공부하고 있습니다. 스프링 완정정복 시리즈 올해 안에 정복을 목표로 열공 중입니다,.. ^^ MVC2편은 언제쯤 나오는지 궁금합니다. 무더운 여름 건강 조심하세요~
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
npm run start로 실행 후 app.js 수정해도 실시간 반영이 되지 않아요.
강의 내용대로 수강중인데 vscode에서 작업 후 저장을 해도 화면에서 바로 반영이 안되네요 캐쉬지우기 새로고침도 해봐도 아무런 변화가 없는 것 같고요 현재 개발환경은 window환경에서 wsl2을 이용하여 unbuntu접속하여 실습중인데 그것이 문제의 원인 될까요?
-
미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
안녕하세요 제로초님 학습에관한 간단한 상담부탁드립니다.
안녕하세요 제로초님..! 부트캠프에 이제막 수료한 비전공자입니다. 다름아니라 제가 프로그래밍적인 사고능력이 부족하여 이 점을 보완하고자 제로초님 강의를 들으려고하는데, 기본적인 자바스크립트 문법은 알고있다고 생각은 합니다.. 그래서 어디서부터 사고능력을 기르기위해 강의를 들어야할지 모르겠어요.. 어디서 부터 듣는것이좋을까요? 아니면 제가 느낄때 이점에대해 약하다 싶은부분만 골라서 들어야하는것일까요 ?
-
미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
Kotlin-extension 이 폐지된 다음...
강의 보고 잘 따라하고 있는데요 ArrayAdapter 를 사용하는 부분에서 에러가 납니다. import android.widget.arrayadapter 로 import 되어있는데 defiend in android.widget 이런식으로 에러가 나서 인터넷을 찾아보니 kotlin extension 폐지로 발생하는 에러일거라고 하는데 해결책을 모르겠네요... 변수 설정하는 것에서는 view binding 을 이용해서 해결했는데 arrayadapter 는 어떻게 해야할지 모르겠습니다...
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
올려주신 프로젝트 다운받아서 실행하면 컴파일 에러가 발생합니다
(사진)
-
미해결스프링 시큐리티
Spring security Multi 인증 문의드려요
강사님 안녕하세요 하나의 어플리케이션으로 관리자/사용자 형태로 구분해서 Spring security 세팅 하려고 합니다. 크게는 관리자와 사용자 2개의 인증을 별도로 태우려고 해요 - entity : User , Admin - UserDetailsService : UserService, AdminService - WebSecurityConfigurerAdapter - UserSecurityConf : - 우선순위 낮음 - /user/** 요청만 검증, - /user/login : 로그인 페이지 - AdminSecurityConf - 우선순위높음 - /admin/** 요청만 검증 - /admin/login : 로그인 페이지 대부분 원하는대로 동작이 되지만 세션을 같이 써서 문제가 발생하는것 같습니다. 예를 들어 user 로 정상 로그인 후에 admin 계정으로 로그인하게 될대 403 Forbidden 에러가 발생하네요 세션을 구분해서 관리할수 있는 방법이 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
heroku 배포에 대하여
안녕하세요. 헤로쿠 배포해서 url 까지 받았는데요 url을 열면 localhost:5000번 즉, client 화면이 안나오고 server쪽에서 열리더라고요... 어떻게 해야 할까요??
-
미해결타입스크립트 시작하기
1:19 에서 interface String
1:19 에서 interface String 을 만들어도 getParam 에 에러가 발생합니다. 이유가 무엇일까영
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
학습에 대해 여쭈어봅니다.
강의 마지막 코드를 실행한 결과입니다. 현재 loss가 0.90 이고 accuracy가 0.86인데 이렇게 loss가 높아도 되는건가요?? 제가 손실함수가 무조건 낮아야만 좋다고 생각해서 잘 이해를 못하는 거 같습니다,,,
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
크루스칼 알고리즘 관련하여
아래가 수업도중에 배운 알고리즘인데요! ------------------------------------------ int main(void) { int v, e, city_a, city_b, cost, i, res, cnt; vector<Edge> Ed; res = cnt = 0; cin >> v >> e; for (i = 1; i <= e; i++) { unf[i] = i; } for (i = 0; i < e; i++) { cin >> city_a >> city_b >> cost; Ed.push_back(Edge(city_a, city_b, cost)); } sort(Ed.begin(), Ed.end()); for (i = 0; i < m; i++) { int fa = Find(Ed[i].v1); int fb = Find(Ed[i].v2); if (fa != fb) { res += Ed[i].cost; Union(Ed[i].v1, Ed[i].v2); } } cout << res << endl; return 0; } ------------------------------------------ 이 중에서 간선을 선택하는 for (i = 0; i < m; i++) { int fa = Find(Ed[i].v1); int fb = Find(Ed[i].v2); if (fa != fb) { res += Ed[i].cost; Union(Ed[i].v1, Ed[i].v2); } } 이 부분에 대해 궁금증이 있습니다! 크루스칼은 n개의 정점이 주어지면 n-1 개의 간선을 최소 가중치를 기준으로 선택하는 것으로 알고 있습니다. 그런데 문제에선 n-1개라는 기준을 사용하지 않았는데 그 이유가 있을까요? 선생님의 문제풀이에서 cnt 변수를 만드셨으나 사용하지 않으셨는데, 이를 체크하려다 체크하지 않으신 것 같습니다. 그 이유는 무엇인지 궁금합니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
CommandQueue 질문
RenderBegin()과 RenderEnd()의 실행 과정이 제가 이해한 내용이 맞는지 모르겠어서 질문드립니다. 만약 [0] [1] 의 더블버퍼가 있다고 가정할 때, swapChain의 BackBuffer가 1일 경우 RenderBegin에서 1의 상태를 <화면출력> 상태에서 <외주 결과물> 상태로 바꿔주고 GPU가 사용할 수 있게 만든 후, GPU의 처리가 끝나고 결과물을 화면에 출력하기위해 RenderEnd를 이용하여 1의 상태를 <외주 결과물>에서 <화면 출력>으로 바꿔주고 GPU는 이어서 0을 사용해야하기 때문에 SwapChain의 백버퍼를 0으로 바꿔준다고 이해했는데.. 이게 맞나요? 쓰면서도 제가 무슨 말 을하는지 모르겠네요...
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Task 관련 질문드립니다.
해당 강의에서 ThreadPool을 이용해 쓰레드 수를 지정해서 Task로 작업을 지정해주었는데 만약 ThreadPool로 쓰레드 수를 지정하지 않는다면 Task를 선언할 때 마다 쓰레드가 생성되어 작업을 수행하는건가요?
-
미해결트렐로 개발로 배우는 Vuejs, Vuex, Vue-Router 프론트엔드 실전 기술
(Vuex 적용 - 인증 1) 강의에서 8분 18초 부분 질문 있습니다.
강의에서 "뷰 어플리케이션이 구동되었을 때 브라우저 저장소를 확인한다. localstorage에 token이 있는지 없는지 체크한다." const store = new Vuex.Store({ ... }); const { token } = localStorage; store.commit("LOGIN", token); export default store; Vuex라는 것은 별도의 저장소이고 이 저장소를 컴포넌트 레벨에서 필요한 상태나 로직들을 불러와서 처리하는 것으로 알고 있는데, 위와 같이 localStorage에서 토큰을 가져와 LOGIN mutations에 전달하는 로직을 왜 Vuex의 store 부분에 선언한 이유가 무엇인가요?