묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨오브젝트 - 설계 원칙편
7-3 자막오타
-
미해결김영한의 실전 자바 - 중급 1편
equals - 구현(2)에서 자동 완성으로 코드 한줄이 없이 나오는데 제가 생각한게 맞나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]주석처리한 부분이 영상때와 지금 인텔리제 버전이 달라선지 저 코드는 없이 만들어지더라구요저코드는 '자기 자신이면 바로 true 리턴해줘' 라는 코드가 맞나요?(if 부분이 같은 참조값일때 return true)위 코드가 없어도 밑에 다운캐스팅한 부분에서 비교하면 true가 나올거니까 이젠 안쓰는거라 지운건지없어도 돌아갈 거 같은데 저부분이 제가 생각하는 것과 같은지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
OrderServiceImpl 클래스에 의존성 주입이 되는 이유를 모르겠습니다
OrderServiceImplTest 코드에서OrderService orderService = new OrderServiceImpl(new MemoryRepository(), new FixDiscountPolicy()) 라는 코드를 작성하셨는데요이 테스트 코드에서OrderserviceImpl 내의 discountPolicy 에 의존관계가 주입되는 이유가 궁금합니다.new FixDiscountPolicy() 는 다음 강의에서 이 클래스에 @Component를 붙이므로 이번 강의에서는 @Component 가 작성이 안되어있는 것으로 아는데 이 말은 빈으로 등록이 안된다는 것으로 이해되는데요. 그러므로 OrderserviceImpl 는 @AutoWired를 이용한 자동주입을 사용하는데 것을 사용할 경우 이전강의인 다양한 의존관계 주입 방법 였던가요?빈에 등록되어있지 않으면 오류가 난다고 하셨습니다.그러니까 지금 현재 Test 코드에서 new FixDiscountPolicy() 이것은 빈이 등록되지 않은 없는 순수 자바 객체일것 같은데 OrderserviceImpl 에서 discountPolicy 를 자동주입 하려는데 어떻게 오류가 나지 않나요?
-
미해결스프링 핵심 원리 - 기본편
Test코드는 통과하는데 CoreApplication 에러가 난다면
강의에서 3분 20초 정도부터 나오는 내용에서 수동빈 등록 vs 자동 빈등록에 대해서 Test코드가 문제 없이 성공했잖아요? 같은 빈의 이름이 두개인데 등록 성공했다는 뜻이죠.그런데 스프링 부트로 실행하는, 그러니까 CoreApplication에서 실행하는 본 코드에서는에러가 나잖아요?여기서 제가 궁금한게Test 코드가 본코드 실행전에 말그대로 정상 동작하는지 Test 하기 위함인데 Test 코드에서는 성공했는데 본 코드에서는 에러가 난다? 그렇다면 이거는 Test 코드의 목적이 없어지는것 아닌가요?제가 뭘 잘못 이해하고 있는걸까요?
-
해결됨오브젝트 - 기초편
(질문 글) Movie와 Customer의 위치
5-1. 객체 구현하기 (2:16)질문: reserve 함수 구현 시 Movie가 아래 처럼 전달될 수 도 있다고 생각했습니다.생각 1 (함수 인자로 Movie 전달):public Reservation reserve (Movie movie...) { ... }생각 2 (Movie Id를 전달 받고, 함수 내부에서 Movie 검색) 설계 관점에서 이러한 구현과 기존 구현은 어떻게 다르다고 이해할 수 있을까요?감사합니다.참조 (기존 구현된 코드): public class Screening { private Movie movie; public Reservation reserve (Customer customer, int audienceCount) { Money fee = movie.calculateFee(this).times(audienceCount); return new Reservation(customer, this, audienceCount, fee); } }
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
GC의 age와 관련하여 질문 있습니다.
안녕하세요!JVM 파트를 복습하다가 궁금한 점이 생겨 질문드립니다. Young Generation(Eden → S0 ↔ S1) → Old Generation → Permanent 영역으로 객체가 이동하는 과정에서 객체의 age가 세대 간 이동(Eden → S0 ↔ S1 포함)을 거치며 증가한다고 설명해주셨습니다. 그런데 제가 알고 있기로 age는 Young Generation 내의 Survivor 영역(S0 ↔ S1)을 이동할 때에만 증가하는 것으로 알고 있습니다.age는 객체가 Minor GC를 거쳐 살아남은 횟수로 일반적으로 약 15회 생존하면 Old Generation으로 승격될 수 있는 조건이 되고, Old Generation으로 승격된 이후에는 더 이상 age가 증가하지 않는다고 알고 있습니다. 혹시 이 동작 방식이 JVM 구현체에 따라 달라질 수 있는 부분인지 아니면 제가 알고 있는 age는 다른 age인 것인지 궁금해서 질문드립니다:)
-
해결됨오브젝트 - 기초편
(오타 제보) 2-3 문서 내 문구 수정 제안
2-3. 데이터와 프로세스 통합하기 6페이지동영상 강의 1:25원문: Shift or Responsibility제안: Shift of Responsibility영상의 흐름과 내용에서 중요한 부분은 아니지만, 정말 훌륭한 강의 자료에 조금이나마 기여하고 싶은 마음에 제보 드립니다. 감사합니다.
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
type/interface 정의 파일분리
강의 내용과는 무관하지만 평소에 고민하던 점이 있어 문의드려 봅니다 평소에 type/interface 정의를 어디 둘지 고민하는 경우가 많은데요d.ts를 만들어 타입끼리 묶어둠 각자 가장 관련도 높은 파일에 둠제로초님은 강의 예제 정도 규모의 프로젝트에서 어떻게 하시는지 궁금합니다 저는 타입이 먼게 싫어서 2번을 선호하는데 '관련도 높다'는 기준이 주관적이어서 위치를 명확히 잡기 어렵고, 개발이 진행되며 관련도가 바뀌는 경우도 생기더라고요
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
objmemberrepository 예외 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]package io.member.impl; import io.member.Member; import io.member.MemberRepository; import java.io.*; import java.util.ArrayList; import java.util.List; public class ObjectMemberRepository implements MemberRepository { private static final String FILE_PATH = "temp/members-obj.dat"; @Override public void add(Member member) { List<Member> members = findAll(); members.add(member); try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_PATH))){ oos.writeObject(members); } catch (IOException e) { throw new RuntimeException(e); } } @Override public List<Member> findAll() { try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_PATH))){ Object findObject = ois.readObject(); return (List<Member>) findObject; } catch (FileNotFoundException e) { return new ArrayList<>(); } catch (IOException | ClassNotFoundException e) { throw new RuntimeException(e); } } }코드 동일하게 작성했는데 콘솔 메인에서 마지막 나이를 작성하니Exception in thread "main" java.lang.RuntimeException: java.io.NotSerializableException: io.member.Member at io.member.impl.ObjectMemberRepository.add(ObjectMemberRepository.java:22) at io.member.MemberConsoleMain.registerMember(MemberConsoleMain.java:52) at io.member.MemberConsoleMain.main(MemberConsoleMain.java:26)Caused by: java.io.NotSerializableException: io.member.Member at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1121) at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:336) at java.base/java.util.ArrayList.writeObject(ArrayList.java:949) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:565) at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:946) at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1431) at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1353) at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1115) at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:336) at io.member.impl.ObjectMemberRepository.add(ObjectMemberRepository.java:20) ... 2 more이런 예외가 발생합니다
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
강의 자료
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]섹션 12 - HTTP 서버 만들기 강의자료 26페이지 HttpResponse코드에 setStatus() 메서드 이름이 setStatusCode()인 것 같은데 "Code"가 빠져있어요. 그래서 강의자료 30페이지에 있는 HttpRequestHandlerV4코드 notFound()메서드에서도 setStatusCode가 아닌 setStatus로 작성되어 있습니다!
-
미해결스프링 핵심 원리 - 기본편
부모타입도 빈에 등록 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================강의 내용중에 부모타입으로 조회시 자식 빈까지 모두 조회된다 라는 부분에서 궁금한 점 있습니다. 강의에서 TestConfig 클래스에서 RateDiscountPolicy 와 FixDiscountPolicy 타입을 빈으로 등록합니다.그리고 이 두 타입을 모두 조회하기 위해서 ac.getBeansOfType(DiscountPolicy.class) 에 부모타입인 DiscountPolicy.class를 넣어 조회했습니다. 그리고 또 ac.getBeansOfType(Object.class) 을 하여 자식 타입을 모두 조회했습니다.여기서 궁금한것은 DiscountPolicy나 Object 클래스는 Config 클래스에서 빈으로 따로 등록하지 않았는데도 어떻게 조회가 가능한건가요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
네트워크 - 프로그램2 / ServerV6 / throws IOException 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.메인에서 IOException 을 던지는 이유는 ServerSocket 때문인거 같은데 예외를 발생시키는 항목들을 try문에 넣고 throws IOException을 삭제하면 안돼나요? 아니면 다른의미가 있는건지 궁금합니다. public class ServerV6 { private static final int PORT = 12345; public static void main(String[] args) throws IOException { log("서버 시작"); SessionManagerV6 sessionManager = new SessionManagerV6(); ServerSocket serverSocket = new ServerSocket(PORT); log("서버 소켓 시작 - 리스닝 포트: " + PORT); // ShutdownHook 등록 ShutdownHook shutdownHook = new ShutdownHook(serverSocket, sessionManager); Runtime.getRuntime().addShutdownHook(new Thread(shutdownHook, "shutdown")); try { while (true) { Socket socket = serverSocket.accept(); // 블로킹 log("소켓 연결: " + socket); SessionV6 session = new SessionV6(socket, sessionManager); Thread thread = new Thread(session); thread.start(); } } } catch (IOException e) { log("서버 소캣 종료: " + e); }
-
해결됨클린 코더스: 실전 객체 지향 프로그래밍과 TDD 마스터 클래스
org.fitness 라이브러리를 어떻게 받을 수 있나요
안녕하세요클린 코더스 강의보면서 예제를 따라해보고 있는데 초반 function 강의 예제에 필요한 org.fitness 라이브러리가 받아지지 않는거 같습니다. 클래스 파일이 없으니 컴파일 에러가 터지는데, 라이브러리 파일 구할 수 있는 방법 없을까요?maven repository:https://mvnrepository.com/artifact/org.fitness/fitness저장소:https://github.com/msbaek/fitness-example/tree/master
-
미해결김영한의 실전 자바 - 중급 1편
퀴즈 중복 정답 가능 여부 질문 드립니다.
[질문 내용]D 는 정답이 아닌가요?
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
팩토리 패턴
예제에서 팩토리 메서드를 굳이 왜 써야 하는지 이해를 하지 못했습니다 심플 팩토리 예제에서 grimpanFactory라는 함수의 존재 이유가 서로 다른 생성자들을 묶어주려는 요구사항이 있기 때문으로 이해했는데요 이 요구사항에 따르면 AbstractFactory들을 만들어주더라도 결국 이들을 묶어주는 로직이 필요하고 여전히 if else가 불가피한게 아닌가 생각됩니다정리하면애초에 grimpanFactory라는 함수를 만든게 type만으로 서로 다른 클래스 인스턴스를 편리하게 생성하는게 요구사항이 있어서가 아닌지(1번이 맞다면) AbstractFactory를 만들더라도 이 요구사항을 만족하려면 어딘가엔 if else가 와야할 것 같은데 잘못 이해한 것인지(1번이 틀리다면) 묶어주는게 요구사항이 아니라면 애초에 AbstractFactory 없이 생성자 바로 호출하면 되는게 아닌지
-
해결됨오브젝트 - 설계 원칙편
6-2 명령이라도 성공여부는 어떻게 하는 게 좋을까요
자바 클래스 라이브러리들 조차도 대부분의 명령에 boolean을 반환하죠. 이게 고민인데 명령인 메소드는 반드시 void인가 하는 점입니다.
-
해결됨오브젝트 - 설계 원칙편
6-1 room을 노출한 것도 디미터 위반 아님?
player.currentRoom() 까지는 디미터 위반이 아니지만player.currentRoom().name()이나 description()은 디미터 위반인거 같아요.특히 그 다음 장표에서 player의 내부 생태계에 Room을 포함한 그림이 나오는데 Room의 변화가 Game의 수정을 유발하니까요.
-
해결됨오브젝트 - 설계 원칙편
6-1 11:25초에 슬라이드가 뭔가 돌아간듯
안그래도 영상이 뭔가 갑자기 슬라이드 몇장이 잘못넘어간 느낌으로 재생되다가 11:25초를 보면 코드가 다시 디미터 법칙 위반 상태로 왼쪽이 되돌려져있어요
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
강결합
강결합되는게 왜 싱글턴 패턴의 단점인지 연결이 잘 되지 않아 질문드립니다. 매개변수 주입같은 해법을 주신 것 처럼, 싱글턴 패턴과는 별개의 문제로 느껴지는데, 싱글턴을 안 하면 어떻게 나아지는지 예제 같은게 있을까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
홀수 짝수 찾기 문제 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 먼저 이렇게 코드를 짜도 정답이 되는지 알고 싶습니다.또한, 강사님과 같이 삼항 연산자를 써야겠다는 효율적인 생각을 어떻게 할 수 있는지 그 방법을 알고 싶습니다.