묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
강좌 복습 팁이 있으신 분들 공유해주시면 감사하겠습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.자바 고급편 수준이 저한테 높아서, 느린 배속으로 반복해서 내용을 겨우 이해는 했는데 강의 내용이 자기 것으로 되었다는 느낌이 없고 교안이나 영상 없이는 이론 설명이나 예제 코드 작성이 잘 안 됩니다.강의 내용을 자기 것으로 체화하신 분들은 어떻게 복습하셨나요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
16강 질문있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]package io.buffered; import java.io.FileInputStream; import java.io.IOException; import static io.buffered.BufferedConst.BUFFER_SIZE; import static io.buffered.BufferedConst.FILE_NAME; public class ReadFileV2 { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream(FILE_NAME); long startTime = System.currentTimeMillis(); byte[] buffer = new byte[BUFFER_SIZE]; int fileSize = 0; int size; while ((size = fis.read(buffer)) != -1) { fileSize += size; } fis.close(); long endTime = System.currentTimeMillis(); System.out.println("File name: " + FILE_NAME); System.out.println("File size: " + fileSize / 1024 / 1024 + "MB"); System.out.println("Time taken: " + (endTime - startTime) + "ms"); } }이 코드를 컴파일했을 때 Time taken이 6ms 언저리로 자꾸 나오는데 컴퓨터마다 다 다르게 찍히는 건가요? 강의에서는 1ms로 나와서 제가 타이핑을 잘못했나 싶어서 여쭤봅니다.
-
미해결스프링 핵심 원리 - 기본편
ai api 선정하기 관련 질문
안녕하세요!!! 제가 영한쌤의 강의를 토대로 백엔드개발을 배우고 팀원들과 프로젝트를 할려고 합니다.사용자들의 대화(텍스트)를 기반으로 여행계획을 짜주는 서비스를 만들려고합니다.사용자끼리 채팅->채팅내용을 ai api에 전송->여행계획출력순인데어떤 api를 사용하는게 좋을까요?제미나이 클로드 지피티 등 종류가 많아서 고민중입니다.
-
미해결김영한의 실전 자바 - 중급 1편
래퍼클래스 박싱 출력
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요 예[질문 내용]안녕하세요 자바 래퍼클래스 강의를 듣다가 궁금해서 질문 남깁니다. 래퍼클래스 생성 (=박싱)하고나서 변수를 출력을 해보면 생성자에 주었던 값이 출력되게 되는데요.래퍼 클래스는 기본형을 객체화 시킨것이라고 알고 있고, 그렇기 때문에 변수에는 객체기 때문에 참조값이 들어가야한다고 알고있는데 왜 참조값이 아닌, 객체에 들어있는 멤머 변수 값이 출력이될까요?ㅠ
-
미해결유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
구글 플레이 콘솔 사전 예약 등록에 대해.
안녕하세요. 강의 잘 듣고 있습니다. 🙂 일부 특정 국가에 먼저 서비스를 진행중인 상태(프로덕션)이고요 그외 서비스하지 않은 나머지 국가에는 사전등록을 진행해볼려고 합니다. 구글 플레이 콘솔이 업데이트 되어서 그런지 모르겠지만 사전 등록 트랙을 활성화 시키는 방법을 모르겠습니다. 위 스크린샷에서 사전 등록 트랙을 활성화 시켜볼려고 빌드 파일도 올려보고 나라도 선택하고 다른것들도 해 보았으나 트랙 요약이 계속 비활성화 된 상태입니다. 혹시 사전 등록을 어떤 순서로 진행하는건지 알려주시면 감사하겠습니다~!!
-
해결됨고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
69번 강의에서 에러 발생 보고
안녕하세요69번 강의에서 HUD를 모두 구성한 뒤 테스트하는 과정에서 발생한 에러에 대해 보고드립니다.강의자님이 테스트하는 과정에서 부스터를 사용한 뒤에 부스터 아이템을 먹으면 정상적으로 부스터 게이지가 충전되는 것으로 확인해 주셨는데요. 게임 시작후에 부스터를 한번도 사용하지 않고, 부스터 아이템을 먹게 되면 boost_tween 부분에 null 에러가 발생하게 됩니다.이를 개선하기 위해 아래와 같이 수정하면 null 에러가 발생하지 않게 되는데요.시간 괜찮으실때 강의에 추가해 주시면 좋을것 같습니다. 'PICK_BP': if boost_tween and boost_tween.is_valid(): boost_tween.stop()
-
해결됨오브젝트 - 기초편
강의 자료 관련 질문입니다! (2-4. 절차에서 객체로)
영호님 안녕하세요 😊 이번에는 2-4강을 듣던 도중 강의 자료와 관련된 질문을 드려요 Q. DiscountCondition을 책임지는 로직을 DiscountPolicy로 이동할 때,DiscountPolicy 클래스에 있는 findDiscountCondition()메서드의 접근 제어자가 private으로 되어있는 부분은 public으로 변경하고ReservationService 클래스의 reserveScreening() 메서드에서 policy.findDiscountCondition(screening, conditions);으로 생각하면 될까요?! 2-4 강의자료 page 10 (강의 02:29) 2-4 강의자료 page 11 (강의 02:42)
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
메서드 문제와 풀이2에서 마지막 문제 이렇게 풀어도 괜찮은 건가요..?
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================package method.ex; import java.util.Scanner; public class MethodEx4 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int balance = 0; while (true) { System.out.println("---------------------------------"); System.out.println("1.입금 | 2.출금 | 3.잔액 확인 | 4.종료"); System.out.println("---------------------------------"); int userChoice = scan.nextInt(); System.out.println( "선택: "+ userChoice); if (userChoice == 1) { System.out.print("입금액을 입력하세요: "); int depositAmount = scan.nextInt(); balance = deposit(balance, depositAmount); } else if (userChoice == 2) { System.out.print("출금액을 입력하세요: "); int withdrawAmount = scan.nextInt(); balance = withdraw(balance, withdrawAmount); } else if (userChoice == 3) { System.out.println("현재 잔액: " + balance); } else { System.out.println("시스템을 종료합니다."); break; } } } public static int deposit(int balance, int depositAmount) { balance += depositAmount; System.out.println(depositAmount + "원을 입금하였습니다. 현재 잔액: " + balance + "원"); return balance; } public static int withdraw(int balance, int withdrawAmount) { if (balance >= withdrawAmount) { balance -= withdrawAmount; System.out.println(withdrawAmount + "원을 출금하였습니다. 현재 잔액: " + balance + "원"); } else { System.out.println(withdrawAmount + "원을 출금하려 했으나 잔액이 부족합니다."); } return balance; } }
-
해결됨오브젝트 - 기초편
도메인 관련 질문이 있습니다!
영호님 안녕하세요! 강의를 보다가 궁금한 부분이 생겨 질문 드려요~Q1. 현재 구조에서 "영화 관람료"라는 객체를 추가하여 상영 객체가 의존하는 방식도 괜찮을까요?Q2. 추가적으로 위의 방식이 나쁘지 않은 방식이라면, 할인 정책을 영화가 아닌 상영과 협력하도록 해도 괜찮을까요?질문들이 강의에서 가르쳐주시려는 포인트에서 벗어나는 질문이지만,,, 현실과 조금 더 밀접하게 연결지어 생각을 하다보니 이런 방식을 생각해보게 되었습니다
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
강의 복습하면서 생긴 질문
태현님 안녕하세요! 해당 강의를 듣던 중 의문점이 있어서 질문을 드릴려고 합니다.public class Person { private final String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // getter, setter 생략... }위와 같은 예제 코드가 있다고 하면 위와 같은 코드를 코틀린으로 변경하면 강의에서는 아래와 같다고 하셨습니다. class Person( val name: String, val age: Int, )이러면 자동으로 getter/setter를 자동으로 만들어주신다고 하셨는데요. 저는 이것이 자동으로 만들어주는게 아니라 당연하다고 생각합니다. 왜냐하면 프로퍼티 접근 제어자가 public이니까요!자바도 public으로 변경하면 코틀린처럼 필드에 접근해서 사용이 가능하다고 생각이 드는데요. 이런 케이스에 대해서 태현님의 의견을 좀 더 듣고 싶습니다. 또한, 당연히 코틀린에서는 getter를 호출하겠지만 필드 자체를 private으로 두지 않으면 객체지향 원칙중에 하나로 캡슐화가 좋지 못하다는 판단이 들더라구요! 또한 코틀린에서는 접근제어자를 private으로 두면 당현한 이야기지만 강의에서 설명주신 것처럼 접근이 안되서 강제 getter/setter를 만들어야 하는데 이것에 대해도 듣고 싶습니다. 다음 질문으로는 생성자 관련 질문입니다.자바는 아래처럼 생성자를 여러개 만들 수 있습니다.public class Person { private String name; private int age; public Person(String name) { this.name = name; } public Person(String name, int age) { this.name = name; this.age = age; } // getter, setter 생략... }논리적으로 도메인 흐름상 하나의 파라미터만 있는 생성자는 사용되지를 않겠지만 이런 케이스에서 코틀린은 어떻게 처리가 가능할까요? 코틀린에서는 설명해주시기로 부생성자로 만들지만 부생성자는 주생성자를 호출해야 하는 꼴로 가야한다고 답변을 주셔서요! 이에 대해 궁금합니다!
-
해결됨오브젝트 - 설계 원칙편
6-2 보호 로직 중복 이슈
안녕하세요 강사님, 강의 잘 보고 있습니다. 이동 로직을 정리하다가 보호(가드) 로직 중복에 대해 질문드립니다.현재 구조에서 Game.tryMove()에서 player.canMove(dir)로 먼저 확인하고, Player.move(dir) 내부에서도 canMove(dir)를 다시 확인하여 막습니다.즉, 이동 가능 여부 판정이 두 번 수행됩니다.// Game private void tryMove(Direction dir) { if (player.canMove(dir)) { // 1차 player.move(dir); // 내부의 2차 showRoom(); } else showBlocked(); } // Player public void move(Direction dir) { if (!canMove(dir)) throw new IllegalArgumentException(); this.position = this.position.shift(dir); } 두 번의 가드가 필요한 이유가 있을까요? SRP/TDA 관점에서는 Game의 판정을 제거하고 player.tryMove(dir)만 호출해 결과만 처리하는 패턴이 더 적절한지, 혹은 move()만 두고 예외로 제어하는 방식을 권장하시는지 궁금합니다.
-
해결됨오브젝트 - 설계 원칙편
3-2 메서드를 얼마나 작게 나누는게 적절한가요?
안녕하세요. 좋은 강의 감사합니다. 덕분에 객체지향에 대한 이해가 많이 정리되었습니다.3-2 강의를 보다 메서드 크기 관련해서 궁금한 점이 있어 질문드립니다.콘솔 입력 의존성(12:17) 부분에서 입력을 분리하는 예시로 아래와 같이 nextLine() 호출을 별도 메서드로 추출하신 것으로 이해했습니다.private String input(){ return Scanner.nextLine(); }그런데 이 관점이라면, 입력 “수집(I/O)” 뿐 아니라 “입력 파싱(문법)”도 별도의 책임으로 분리해야 하는 것 아닌지 고민이 됩니다. 예를 들어:private String[] inputParsing(String input){ return input().toLowerCase().trim().split("\\s+"); }강사님의 강의 및 "객체지향의 사실과 오해" 책을 읽고 난 뒤, SRP의 책임을 ‘하나의 변경 이유’로 보았습니다.위의 콘솔 입력(nextLine)을 분리한 건 입력 장치 변경이라는 액터에 대한 책임 분리로 이해했습니다.그렇다면 입력 파싱(toLowerCase/trim/split)은 명령 문법 변경이라는 또 다른 액터에 대한 책임이므로, 이 역시 별도로 분리해야 SRP를 완전히 지키는 게 아닐까요? 물론 이렇게까지 분리하면 가독성이 떨어질 수 있고, 실제로는 변경 가능성도 낮아 “가치가 작은 분리”로 느껴지기도 합니다. 강사님의 의견이 궁금합니다!+ 외에도 추상화 수준을 맞추기 위한 메서드 추출(9:25) 강의 자료에isRunning 함수의 반환이 void로 되어있으나 실제 내부에선 running == true를 반환합니다. github 코드 상에는 해당 함수가 없어보입니다.
-
미해결유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
우편 기능에 대해 궁금합니다.
안녕하세요. 강의 잘 듣고 있습니다. 모바일 게임에서 흔히 볼 수 있는 우편을 통해 재화를 보상을 주는 우편 시스템에 대해 궁금합니다.강의 내에는 우편 관련 기능이 없긴 하지만 혹시 강사님께서는 우편 기능을 어떻게 구현해서 사용하시는지 알려주시면 큰 도움이 될 것 같습니다. 국내에서는 뒤끝과 같은 외부 서비스에 도움을 받아 할수있지만 혹시 개인이 다른 방법으로도 사용할 수 있을지 궁금해서 여쭤봅니다~!!감사합니다~
-
해결됨오브젝트 - 기초편
영화, 상영, 예매 도메인 관계에 대한 질문
안녕하세요 강의 듣고 복습을 하고 있는 수강생입니다. 영화예매 시스템의 데이터베이스 설계의 관점에서 봤을때, 처음 생각나는 도메인은 영화, 예매 두개의 도메인을 고민했습니다. 하지만 영화, 예매는 N:M 관계로 판단이 됐으며,다대다 관계를 해소하기 위하여 상영이라는 도메인이 나왔나? 라고 생각했습니다. 이 관점으로 상영이라는 도메인을 고려하였는지 궁금합니다. 그게 아니라면 상영이라는 도메인이 나올 수 있었던 과정에 대해 설명해주시면 감사드리겠습니다.
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
41-원격 리소스 다운로드 강의의 후반에 실습할 텍스쳐가 없습니다.
37:25 경의 강의 부분에서 텍스쳐 교체에 따른 어드레서블 적용과 다운로드 구현을 위한 변경될 실습 텍스쳐(보라색)가 첨부파일에 존재 하지 않습니다.
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
안녕하세요 메서드명 때문에 고민이 있어서 질문드립니다.
안녕하세요 강사님제가 create 메서드 명에 대해서 고민중인데private void createTip(RequestTipDto requestTipDto, User user) { Tip tip = Tip.builder().title(requestTipDto.getTitle()).content(requestTipDto.getContent()).user(user).build(); tipRepository.save(tip); } private Tip createTip(RequestTipDto requestTipDto, User user) { Tip tip = Tip.builder().title(requestTipDto.getTitle()).content(requestTipDto.getContent()).user(user).build(); return tip; } tipRepository.save(tip); 첫번째 코드는 create메서드 안에 tip을 빌더로 생성하고 save까지 같이 하는 코드입니다.두번째 코드는 tip을 빌더로 생성 후 리턴하고 해당 createTip을 호출한 메서드에서 save를 하는 코드입니다. 첫번째 코드는 둘이 같이 할 수있다는 장점이 있고, createTip하고 save를 또 따로 할 필요가 없는 장점이 있고두번째 코드는 나중에 재상용성이나, create메서드안에서는 create만 하는 SRP(단일책임원칙)을 하고 있다는 것이 장점입니다. 위 두가지 방법중 어느것이 더 좋은 방법일까요?그리고 위처럼 builder를 사용하는 코드는 길기 때문에 이를 service 클래스에서 따로 빼서 하는게 좋은지 아니면 entity 클래스에서 하는게 좋은지 궁금합니다. 강의 잘 보고 있습니다.
-
해결됨[CS 기술면접 6] 말이 트이는 자바와 객체지향
강의 잘 들었습니다. 혹시 다음 내용 추가하실 생각 있으실까요?
강의 정말 잘 들었습니다! 혹시 아래 내용들을 추가해주실 계획이 있으실까요?예외 처리 파트에서 Checked Exception & Unchecked Exception 관련 간단한 언급StringBuilder & StringBuffer 설명 시, String Constant Pool 개념에 대한 보충별개로 네트워크 강의 부분에서도 HTTP 버전별 특징과 Keep-Alive 지원 여부에 대한 설명 추가지금도 매우 훌륭한 강의이지만. 위 내용이 포함되면 취준생 입장에서 조금 더 많이 도움을 받을 수 있을 것 같습니다. 혹시 고려해주실 수 있을까요? 감사합니다!
-
해결됨C개발자를 위한 최소한의 C++
이동생성자의 매개변수로 넘어가는 임시객체의 값 유지 관련하여 질문이 있습니다.
안녕하세요.이동시멘틱 강의를 보다가 의문이 있어 문의드립니다.강의에 나오는 CMyString 클래스는 내부 포인터 변수 멤버를 가지고 있는데, CMyString a,b,c;에서 a = b+c;를 실행할 때CMyString operator+() 함수의 return값의 사본이 임시객체에 저장되고 이 임시객체가 이동생성자의 매개변수에 들어가는 것이 맞을까요?만약 그렇다면 사본을 가진 임시객체의 포인터 변수 멤버의 값이 return 값의 포인터 변수 멤버의 값과 같을텐데 return 후 return값이 소멸함에도 이동생성자 내부에서 사본은 어떻게 계속 값을 유지하는걸까요?이동생성자 호출 시에는 이동생성자 종료 전까지 return 값이 사라지지 않는걸까요?사본이라고 표현하신 것의 의미도 궁금합니다...사본은 모든게 다 똑같은 복사본인걸까요..?근데 그러면 참조자와 같은것일것같은데 반환형식이 참조자는 아니고... shallow copy한 것도 아니고 deep copy한 것도 아닌것 같은데...너무 헷갈리네요...감사합니다.
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
로컬 알림과 다국어 지원에 대해 궁금합니다.
안녕하세요. 유니티 시스템 프로그래밍 파트 1, 파트 2 강의 잘 듣고 있습니다. (두개 모두 번갈아 가며 필요한 부분 먼저 듣고 있는 상태입니다. ) 모바일 게임 서비스에 중요한 요소중에 하나로 로컬 알림과 서버 알림이 있는데 이 중에서도 로컬 알림에 대한 강의는 없는 것 같습니다. 혹시 제가 못 찾은 건지 아니면 이 강의가 없다면 추가로 강의를 만들어주실 수 있으신지 궁금합니다. 다국어 부분에서 CSV 파일을 로드해서 각 나라에 맞게 언어를 바꾸고 있긴 한데 CSV 파일 내 문자열에서 , 가 포함되어 있는 경우는 문제가 되지 않을까 싶습니다. 혹시 이런 경우일 때 어떻게 처리를 하실지 궁금합니다. 이상입니다. 유용한 강의 감사드립니다~
-
미해결김영한의 실전 자바 - 중급 1편
자바 equals() 메소드에 대한 물리적 동일성, 논리적 동등성 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.김영한 자바 중급1의 섹션2에서 equals의 동일성과 동등성에 대한 내용의 퀴즈내용중에서 질문이 있습니다.(이미지 참조) 자바에서는 기본적으로 "=="연산자와 equals()메소드는 "물리적 동일성"으로 println을 했을때 둘 다 false로 잡히는것으로 이해가 되고 있는데요. 오버라이드를 별도로 생성해야 물리적 동일성과 논리적 동등성에 대한 euqals메소드를 차이점을 갖고 사용할 수 있는것으로 이해했습니다. 맞을까요?그렇다면, 위의 섹션2 퀴즈 내용에서의 문제같은 경우는 좀더 세부적인 명시가 있어야 하는게 아닌지 아니면 제가 이해를 잘 못하고 있는 부분이 있는지 조언이 필요하여 Q&A에 질문을 남깁니다. 좋은 가르침 항상 감사합니다 ( _ _ )