묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
학습 커리큘럼 관련 질문
안녕하세요.게임 공부에 입문한 웹 개발자 입니다.관심 있는 분야가 게임서버, unity 쪽 인데unity 강의 3(unity), 4(server), 7(unity + server), 8(entity), 9(mmo) 로 공부하고c++ 강의로 넘어가거나, 유니티 기반 게임을 만들어 봐도 막히는 부분은 없을까요?DB 쪽은 MYSQL 엔진 원리와 트랜잭션, 동시성 문제가 일어나는 이유 등을 알고 고급 쿼리는 좀 공부 해야하고, 웹 쪽은 게임 프로그래밍 코어 공부하는데 크게 지장 없으면 넘어가고 싶은데루키스님 의견이 어떠한지 궁금합니다.(entity는 생산성 때문에 하는게 좋을 것 같아서요.)
-
해결됨김영한의 실전 자바 - 기본편
섹션 8. final pdf 내용 중 오타 발견하여 제보합니다.
안녕하세요. 영한님!스프링 강의에 이어 자바 강의까지 정말 재미있게 듣고 있습니다! ㅎㅎ다름이 아니라 섹션 8 final > final 변수와 상수 1 에서 오타를 발견하여 제보합니다.값은 이 제거되어야 할 것 같습니다. 😄영한님 덕분에 자바 모르고 지나쳤던 부분에 대해 짚고 넘어갈 수 있었습니다. 이후 공개될 자바 중급, 고급편도 무척이나 기대되네요! ㅎㅎ 항상 감사합니다. 연말 마무리 잘하시고 새해 복 많이 받으세요 🧧
-
미해결홍정모의 따라하며 배우는 C++
바보같은 질문 드립니다.
안녕하세요.3:00 영상 초반에 클래스 외부에 add함수를 작성한 예제를 보여주셨는데, 해당함수는 레퍼런스로 c1 , c2 , c_out 을 인자로 받고 있습니다.레퍼런스로 받을경우 그 인스턴스의 메모리상 주소값을 그대로 받아오기 때문에 c.m_cents 처럼 private 에 속하는 멤버변수도 직접 접근이 가능해야 되는거 아닌가요...?레퍼런스로 인자를 받았다면 객체 그 자체로 private 영역에 접근이 가능해야될것 같은데,getter , setter 함수를 사용해서 private 변수에 접근해야되는 이유를 모르겠습니다ㅠ void add(const Cents &c1 , const Cents &c2 , Cents &c_out) { c_out.getCents() = c1.getCents() + c2.getCents(); }
-
해결됨핸즈온 리액트 네이티브
2.1 오류 질문
2.1 프로젝트 준비하기에서cd git이 아니라 cd .git으로 했고 거기서 npx create-expo-app rn-calc를 해서 생성했습니다 code .으로 실행 하니까 이런식으로 나왔는데 영상에서는 expo-shared 라는 파일이 assets위에 있었는데 제 프로젝트에는 없습니다. 맥 환경과 윈도우 환경에 따른 차이일까요?rn-calc 프로젝트에서 npm start를 했을 때 QR코드가 뜬 뒤에 이런 에러가 나왔습니다 그 이후로 my-first-rn이나 rn-calc에서 npm start를 하면 이런 화면만 계속 나오고 폰을 흔들어봐도 응답이 없습니다.
-
미해결게임 프로그래머 취업 전략 가이드
UE, 유니티 고민
안녕하세요 선생님, 제가 앞으로 6주(?)에서 2달정도 공부해서 간단한 유니티 또는 UE 프로젝트를 진행해볼까합니다.제가 언어 습득 능력은 매우 좋은편이라 C++이든 C#이든 크게 상관이 없습니다.근데 실질적으로 취업에 도움이되는 방향이 알고 싶습니다.현재 C++은 공부중이고 C#은 아무것도 모르는 상태입니다.기간도 고려해주시면 감사하겠지만 기간을 생각안했을 때도 어떤것을 추천하시는지 알려주시면 감사하겠습니다.
-
해결됨홍정모의 따라하며 배우는 C++
클래스 내에 클래스 멤버 변수 선언 시 ()와 {}의 차이
class Something { private: int some; public: Something(const int &in_some) : some(in_some) {} void print() { cout << some << endl; } }; class Fraction { private: int nom; int denom; Something frac_some{ 3 }; // uniform init public: Fraction(const int &in_nom, const int &in_denom) : nom(in_nom), denom(in_denom) {} void print() { cout << nom << " " << denom << endl; frac_some.print(); } }; int main() { // Fraction frac(1, 2); Fraction frac{ 1, 2 }; frac.print(); return 0; }위 코드처럼 Something frac_some{ 3 }; 으로 uniform init을 하면 코드가 동작합니다.그러나 아래처럼 direct init을 하면위와 같이 오류가 발생합니다.어떤 차이가 있는 것일까요? main에서 아래처럼 두 가지 방법을 다 해보았을 때는 문제가 없었습니다main에서 Fraction frac(1, 2);을 하는 것과,클래스 내에서 멤버 변수를 선언할 때,Something frac_some(3);을 하는 것이 다른 동작인가요? 항상 감사드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 분할 정복 반례를 도저히 못찾겠어요
안녕하세요 큰돌님.2-E 쿼드 트리 문제 반례를 도저히 못찾겠습니다. 97% 쯤인가 여기서 자꾸 실패가 떠요.백준 질문 게시판에 올라가있는 테스트 케이스를 넣어도 다 통과는 하는데 무슨 반례에 걸리는지 도무지 감이 안잡힙니다. 한번 봐주실 수 있나요? #include <bits/stdc++.h> using namespace std; int N, adj[70][70]; string input; string go(int sy, int sx, int size) { int ey = sy + (size - 1); int ex = sx + (size - 1); // cout << sy << " " << sx << " " << ey << " " << ex << '\n'; if (size == 2) { if (adj[sy][sx] == adj[sy][ex] && adj[sy][ex] == adj[ey][sx] && adj[ey][sx] == adj[ey][ex] && N > 2) return to_string(adj[sy][sx]); string subret = "("; subret += to_string(adj[sy][sx]); subret += to_string(adj[sy][ex]); subret += to_string(adj[ey][sx]); subret += to_string(adj[ey][ex]); subret += ")"; return subret; } string lt = go(sy, sx, size / 2); string rt = go(sy, sx + size / 2, size / 2); string lb = go(sy + size / 2, sx, size / 2); string rb = go(sy + size / 2, sx + size / 2, size / 2); // cout << "lt: " << lt << " rt: " << rt << " lb: " << lb << " rb: " << rb << '\n'; if (lt.size() == 1 && lt == rt && rt == lb && lb == rb && N > 2) return lt; string ret = "("; ret += lt; ret += rt; ret += lb; ret += rb; ret += ")"; return ret; } int main() { cin >> N; for (int i = 0; i < N; ++i) { cin >> input; for (int j = 0; j < N; ++j) { adj[i][j] = input[j] - '0'; } } string ret = ""; if (N == 1) ret = "1"; else { ret = go(0, 0, N); } cout << ret << '\n'; return 0; }
-
미해결김영한의 실전 자바 - 기본편
계좌 예제문제
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 7강 예제문제 scanner 넣어서 만들다가 컴파일 돌리면 Process finished with exit code 0 이런 에러가 떠서 질문드립니다 .. 에러 뜨는 곳은 없는데 어디가 잘못되어서 컴파일이 안되는지 궁금합니다 .. 감사합니다
-
미해결김영한의 실전 자바 - 기본편
다형성과 인스턴스 생성 관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 이번 강의를 들으며 다형성과 추상클래스, 인터페이스 개념적인 부분 관련해서 이해가 잘 되었습니다.그런데 다형성 관련부분 들을때부터 의문이 들었던.. 메인 쪽에서 인스턴스 생성 부분이 이해가 가지 않아 질문 드립니다. 왜 InterfaceA a = new child() ; 처럼인스턴스를 생성해서 써야 하는건가요?Child a = new child() 로 생성해서메소드를 호출했을 때의 문제점이 뭔가요?문제점 보다는 코드 중복제거와 같은 효율성 때문인가요? 위의 인스턴스 대로라면,부모클래스의 메소드를 찾아서 해당 메소드가 자식 클래스에 있다면 자식 클래스를 우선 호출하거나, 부모클래스가 추상이나 인터페이스라면 오버라이딩 된 자식 클래스의 메소드를 호출할텐데, 인스턴스 생성시부터 부모 a = new 자식 으로왜 생성하는지가 궁금합니다.
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
로그인을 Controller가 아닌 filter에서 처리하는 것의 이점
스프링 시큐리티에서 기본적으로 제공하는 formlogin 방식이 아닌 방식(예를 들면 json 요청)으로 로그인을 구현할 때, 기존의 방식 처럼 컨트롤러에서 처리하는 것과 커스텀 필터를 등록하여 처리하는 것에 차이가 무엇인지 궁금합니다. 아무래도 필터는 Dispatcher Servlet을 거치지 않고 먼저 처리할 수 있다는 장점이 있을 것 같은데 컨트롤로 단에서 처리하는 것 보다 어떤점이 유리할까요? 또 다른 이점이 있는지도 궁금합니다!
-
미해결React와 Vue로 배우는 TypeScript 필수 개념 (feat. ChatGPT)
EventHandler Type이 React에서 정의한 타입인 이유가 궁금합니다.
React에서는 React 팀이 직접 만든 Event 타입을 사용하고, Vue에서는 MDN에서 제공하는 범용적 Event 타입을 사용한다고 하시고, React에서 가상 DOM 때문에 React 팀이 만든 Event 타입을 사용한다고 말씀 주셨습니다.하지만, Vue도 마찬가지로 vDOM을 사용하고 있는 것으로 알고 있어요. 🙂 그렇다면, Vue도 vDOM을 사용한다면 Template 문법 내부에서 범용적 Event 타입이 아니라 커스텀 이벤트 타입을 사용해야 맞는 것 아닌가요?굳이 React 에서 커스텀 이벤트 타입을 사용하는 이유와, Vue에서 범용적 이벤트 타입을 사용하는 각각의 이유가 있을 것 같은데, 이에 대한 궁금증이 생겨 질문드립니다!
-
미해결스프링 핵심 원리 - 기본편
CoreApplication에 대한 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.CoreApplication의 @SpringBootAplication에는 @ComponentScan이 들어있다고 하셨습니다.그러면 스프링 빈 등록을 할 때 AutoAppConfig가 아니라 CoreApplication을 써도 될 것 같다는 생각이 들었습니다.그래서 방금 테스트한 코드를 이렇게 수정해보았습니다.public class AutoAppConfigTest { @Test void basicScan() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(CoreApplication.class); MemberService memberService = ac.getBean(MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); }}하지만 제가 @Component를 사용하지 않은 MemberService 도 같이 bean으로 등록되어 있어서 NoUniqueBeanDefinitionException이 발생했습니다. 왜 CoreApplicaion을 사용하면 이러한 오류가 나는 건지 궁금합니다. 그리고 이것이 AutoAppConfig의 역할을 대체할 수 있는지 궁금합니다
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의 내용 중 이해가 잘 되지 않는 것이 있어서 질문드립니다
공간이 5개, 10개다라는 말이 무슨 뜻인지 이해가 잘 되지않아 질문드립니다밑에 결과를 드래그하였을 떄 5칸 혹은 10칸 만 드래그가 되어야지 정상인가요? 저는 다 드래그가 됩니다제 코드가 잘 못된건지 이해한게 잘못된건지 모르겠습니다
-
해결됨토비의 스프링 부트 - 이해와 원리
@Transactional 어노테이션을 붙이지 않은 테스트가 통과하는 이유
1. 문제HelloRepositoryTest 테스트 실행 시 findHelloFailed() 테스트 실패 및 에러 발생Expected :null Actual :tobyspring.hello.Hello@579846cc 2. 강의 정보제목: [섹션 10] 스프링 부트의 자동 구성과 테스트로 전환시간: 6:23내용: HelloRepositoryTest.java의 @HellobootTest를 @SpringBootTest로 변경 후 실행 3. 내 프로젝트 상태HelloRepositoryTest.java 코드package tobyspring.hello; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) public class HelloRepositoryTest { @Autowired private HelloRepository helloRepository; @Test void findHelloFailed() { assertThat(helloRepository.findHello("Toby")).isNull(); } @Test void increaseCount() { assertThat(helloRepository.countOf("Toby")).isEqualTo(0); helloRepository.increaseCount("Toby"); assertThat(helloRepository.countOf("Toby")).isEqualTo(1); helloRepository.increaseCount("Toby"); assertThat(helloRepository.countOf("Toby")).isEqualTo(2); } } 4. 해결 과정increaseCount() 테스트 실행 결과가 findHelloFailed() 테스트에 영향을 미치는 것으로 추정따라서 @Transaction을 @SpringBootTest 아래 줄에 추가package tobyspring.hello; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @Transactional public class HelloRepositoryTest { @Autowired private HelloRepository helloRepository; @Test void findHelloFailed() { assertThat(helloRepository.findHello("Toby")).isNull(); } @Test void increaseCount() { assertThat(helloRepository.countOf("Toby")).isEqualTo(0); helloRepository.increaseCount("Toby"); assertThat(helloRepository.countOf("Toby")).isEqualTo(1); helloRepository.increaseCount("Toby"); assertThat(helloRepository.countOf("Toby")).isEqualTo(2); } } 5. 결과정상적으로 테스트 통과 6. 질문강의에서 @Transactional 어노테이션 없이 테스트를 통과할 수 있었던 이유가 궁금합니다!
-
해결됨자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
추후에 WebFlux나 Reactor도 강의해주시나요?
안녕하세요 강사님. 1부에는 이런 내용이 없는 것 같은데, 2부나 3부에 WebFlux나 Reactor에 대한 내용도 강의해주시나요?
-
미해결Next + React Query로 SNS 서비스 만들기
position: fixed;를 top 속성 없이 사용이 가능한 이유
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다. 안녕하세요 로초님! 강의 잘 보고 있습니다. 다름 아니라 position:fixed;는 뷰포트를 기준으로 레이아웃을 배치하게 만드는 속성값이라서, top, left, bottom, right 중 하나 이상을 써야 레이아웃이 정상적으로 된다고 알고 있는데, (afterLogin)/layout.module.tsx의 .leftSectionFixed와 .search에서는 top같은 거 없이도 의도한 대로(sticky처럼?) 기능하는 이유가 무엇인지 궁금합니다. 옛날에 제가 다른 프로젝트 만들었을 때는 fixed랑 top을 같이 안 써서 헤맨 적이 있어서, 앞으로는 top을 꼭 같이 써야겠다고 알고 있었고,지금 구글링 해서 fixed의 사용법을 찾아봐도 다들 top같은 걸 써야 한다고 말하고 있어서, 혹시 다른 사용법이 있는 건지 궁금해서 여쭈어봅니다. 답변 기다리겠습니다. 감사합니다:)
-
해결됨토비의 스프링 부트 - 이해와 원리
DataSourceTest 테스트 실행 시 transaction 로그가 출력되지 않는 문제
1. 문제DataSourceTest 테스트 실행 시 transaction 로그가 출력되지 않음INFO o.s.t.c.transaction.TransactionContext : Began transaction (1) for...(생략) INFO o.s.t.c.transaction.TransactionContext : Rolled back transaction for...(생략) 2. 강의 정보제목: [섹션 10] 스프링 부트의 자동 구성과 테스트로 전환시간: 6:00내용: DataSourceTest.java의 @HellobootTest를 @JdbcTest로 변경 후 로그 보기 3. 내 프로젝트 상태자바 버전: 17스프링 부트 버전: 3.2.0build.gradle의 의존성repositories { mavenCentral() maven { url 'https://repo.clojars.org' name 'Clojars' } } dependencies { implementation ('org.springframework.boot:spring-boot-starter-web') implementation 'org.springframework:spring-jdbc' runtimeOnly('com.h2database:h2:2.2.220') implementation 'hikari-cp:hikari-cp:3.0.1' testImplementation 'org.springframework.boot:spring-boot-starter-test' }DataSourceTest.java 코드@JdbcTest public class DataSourceTest { @Autowired DataSource dataSource; @Test void connect() throws SQLException { Connection connection = dataSource.getConnection(); connection.close(); } } 4. 해결 과정application.properties에 로그 단계를 정의logging.level.ROOT=DEBUG logging.level.org.springframework.transaction=DEBUG 5. 결과단계를 DEBUG -> TRACE로 다양하게 바꾸고 테스트를 실행했으나 transaction은 출력되지 않음 6. 질문강의 중간에 로깅 단계를 바꾸는 작업이 있었는데 제가 그 부분을 놓친 것인지스프링 부트의 버전이 올라가며 transaction 로그를 출력하지 않도록 바뀐 것인지아니면 다른 방식으로 접근해야 하는 것인지궁금합니다!
-
해결됨홍정모의 따라하며 배우는 C언어
비주얼 스튜디오 2022를 사용중인데
13분 44초경에 new filter라는 항목이 있는데저는 그게 없고 new folder만 있어요그리고스샷 처럼 소스 파일 폴더도 헤더 파일 폴더도 없어여2022 버전이라서 그런건가여 아니면 제가 멀 잘못 한건가여?좋은 답변 항상 감사드립니당.
-
해결됨독하게 시작하는 C 프로그래밍
동적할당 관련 #inlude <malloc.h> 질문
안녕하십니까?독하게 시작하는 c프로그래밍 책 page 391 에 보면 _msize() 함수에 대한 설명이 있는데 예제 프로그램에서 #include <malloc.h>를 쓰셨는데 #include <stdlib.h>를 사용하지 않은 이유가 계신지 궁금합니다. 수고하십시오
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
useEffect에서 변수 업데이트 관련 질문
안녕하세요.본 강의에서 보여주신 회원가입 버튼 비활성화 로직은 다음과 같습니다. useEffect(() => { const isEnabled = Object.values(inputs).every((s) => s.length > 0); setFormDisabled(!isEnabled); }, [inputs]);위의 코드로 실행하면 username과 password를 모두 입력하면 회원가입 버튼이 활성화되고 하나라도 지우면 다시 비활성화 됩니다. useEffect(() => { if (inputs.username && inputs.password) { setFormDisabled(false); } }, [inputs]);그러나 조금 수정하여(이외의 부분은 모두 동일) 위와 같이 실행해보면, 본래의 코드와 마찬가지로 모두 입력되었을 때 버튼이 활성화 되지만 다시 지워도 비활성화가 되지 않습니다. 두 곳 모두 지워봐도 마찬가지입니다. console.log로 찍어보아도 false 값으로 고정된 채 바뀌지 않습니다.useEffect가 비동기 방식이므로 formDisabled가 업데이트 되는 타이밍 문제도 고려해 보았지만, 그렇다면 본래의 코드에서도 이런 문제가 발생하여야 할 것이라고 판단했습니다.여러모로 분석해 보았지만 이유를 알기가 어렵습니다.