묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 1편
인텔리제이 오류 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 인텔리제이 창 닫기에 대해서 질문이 있어서 질문을 남깁니다. 강의를 들으면서 공부를 하다 보면, 클래스 창이 많아져서 close other tabs을 하려고 누르면, 작동도 안되고, 마우스로 x를 눌려도 창이 안 닫힐 때가 있습니다.그때 마다 인테리제이를 종료하고, 다시 켰는데요.오늘은 좀 짜증이 나더라고요.근본적인 해결 방법이 없을까요?답변 부탁 드립니다.
-
해결됨김영한의 실전 자바 - 중급 1편
복습 포함해서 삼회전하는 게 좋을지 수강 관련 질문드립니다.
.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 강의를 지금 두번째 보고 있는데 세번째도 봐야 할까요?처음 봤을 때는 부지런하게 타자를 치며 따라 가지만 이해가 안되어서 두번째로 강의를 보면 아 이런거였구나 하고 이해는 가는데 연습문제를 풀기엔 턱없이 부족한 실력이라 한번 더 복습해야 하는지 고민입니다.갈길이 먼데 한번 더 복습을 해야할지 고민이 됩니다.직장인이라 아무래도 시간도 없고 제가 이해도가 낮은건 아닌지 고민인지라 여기에 적어봅니다.만들고 싶은 어플이 있어서 공부를 시작했는데 앞날이 까마득한데 복습을 한번 더 하는게 시간을 잡아먹는게 아닌지 고민이 됩니다. 무시하고 복습 한번하고 그냥 진도를 나가는게 나을까요? 아니면 그래도 한번더 복습을 하는게 나을까요? 제가 이해도가 낮은 편이긴 한거같은데 공부를 안한다는 선택지는 없어서요아무리 생각을 해봐도 모르겠어서 질문을 남겨봅니다.
-
미해결Java TPC 실전프로젝트 (Java API 활용)
Gson
알려주신 페이지에서 gson jar 파일을 다운받았는데 lib폴더는 어디있는건가요? github에 다운받은 파일에 있는걸까요?
-
미해결스프링 핵심 원리 - 기본편
의존성 주입
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 설명해주신 의존성 주입은 스프링에서 객체지향 코딩을잘 할 수있도록 클래스의 컴포지션을 런타임 타임에 스프링에서 결정해주는 시스템으로 이해했는데 맞을까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
generate에서 getter setter가 보이지 않습니다!ㅠㅠ
안녕하세요 나도코딩님! 유투브 강의를 완강하고 인프런에서 추가 강의 듣고 있습니다... getter setter를 간단하게 하기 위해서 alt + insert를 하려고 하는데요... generate에서 getter setter가 보이지 않습니다..ㅠㅠ lombok 플러그인을 설치하고 enable도 했는데 안되네요 ㅠㅠ 방법이 없을까요??
-
해결됨오브젝트 - 기초편
왜 선배개발자님들은 절차지향이였을까?
궁금한게 있습니다. 생각보다 많은 선배개발자님들은 강의에서 말하는 절차지향프로그래밍을 하고 있습니다. 심지어 우리나라에 네카라쿠배라고 하는 회사에서도 비슷한 장면이 자주 목격되는데요. 그분들이 잘못되었다고 생각하지는 않지만, 어떻게 그렇게 코딩을 하게 된건지 그 뒷배경이 궁금합니다..! 저는 개발한지 이제 7년밖에 되지 않아, 더 과거에 대한 이야기를 알지 못합니다. 조영호님께서는 오랜시간 연구하면서 왜 그렇게 된 것인지 알고 계시지 않을까 싶어 여쭤봐요!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
복습하는 방법
안녕하세요, 영한님!영한님의 강의로 자바 기초부터 튼튼하게 다져볼려고 시작하게 되었습니다.그래서 영한님 강의를 시청을 하고 정리해둔 pdf로 다시 읽고 '자바의xx'이라는 책으로 정독 및 공부를 하는 식으로 해보려는데 영한님이 추천하시는 복습방법이 있을지 궁금해서 게시판에 남겨드립니다.
-
미해결스프링 핵심 원리 - 기본편
주문과 할인 도메인 개발 3:20초에서 Order 클래스 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]3:20에서 Order라는 클래스를 만들어주는데 클래스안에는 calculatePrice 클래스메서드를 만들어주는데, Order의 경우는 Interface로 만들지 않는 이유는 역할과 구현이 각각 무조건 하나이기때문에 만든걸까요? 아니면 다른이유가 있을까요? 예를들어 interface Order { .... 클래스 변수 및 생성자int calculatePrice() }뭐 이런식으로 역할 인터페이스를 만들고 클래스를 만들면서 구현체를 만들지않는 이유가 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
스프링 초반 설정이 안되요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요. 해결하기 위해서 인터넷에 쳐서 해봤으나 gradle 관련된 연결된 게 전혀 뜨지 않아서 여쭤봅니다
-
미해결김영한의 실전 자바 - 중급 1편
코드보다 중괄호가 너무 많아서 더욱 헷갈리네요..
혹시 실무에서도 기존 방식 처럼 인스턴스 별로 클래스를 나누고메인함수에서 인스턴스를 호출 하는 방식이 아닌 하나의 코드에 메인 함수을 포함하여 여러 개의 클래스가 같이 쓰는 경우가 많을까요? 어렵지 않은 코드 인데 가독성이 갑자기 안 좋아서 코드 흐름이 어렵네요...ㅠ
-
미해결김영한의 실전 자바 - 기본편
서로 다른 패키지에서 protected 상속 관계 사용
안녕하세요자바 복습을 하다가 헷갈리는 부분이 생겨 글 남겼습니다. package ex1; public class Parent { protected void method() { System.out.println("parent"); } } ------- package .ex2; import ex1.Parent; public class Child extends Parent { @Override protected void method() { System.out.println("CHild"); } } ------- package ex3; import ex1.Parent; import ex2.Child; public class Main { public static void main(String[] args) { Parent p= new Child(); p.method(); //컴파일 오류 } } 위의 코드에서 ex3 패키지에서 p.method()가 오류가 나는 이유를 잘 모르겠습니다...protected 접근 제한자는 같은 패키지 이거나 상속 관계일때 접근이 가능한 걸로 알고 있습니다. p.method()를 실행하면 Child에 있는 method()가 실행되어야하는거 아닌가요?Parent와 Child는 다른 패키지라도 상속관계에 있으므로 실행이 될 것 같다고 생각했는데 왜 오류가 나는지 모르겠습니다
-
미해결김영한의 실전 자바 - 기본편
섹션 10: 상속과 메모리 구조 부분에 질문이 있습니다.
1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의하는 부분 5:00 쪽에서 설명해주시면서이때 부모인 Car 를 통해서 charge() 를 찾을지 아니면 ElectricCar 를 통해서 charge() 를 찾을지 선택해야 한다.이때는 호출하는 변수의 타입(클래스)을 기준으로 선택한다. electricCar 변수의 타입이 ElectricCar 이므로 인스턴스 내부에 같은 타입인 ElectricCar 를 통해서 charge() 를 호출한다. 그리고 마지막에 아래와 같이 정리해주셨는데요.지금까지 설명한 상속과 메모리 구조는 반드시 이해해야 한다.상속 관계의 객체를 생성하면 그 내부에는 부모와 자식이 모두 생성된다.상속 관계의 객체를 호출할 때, 대상 타입을 정해야 한다. 이때 호출자의 타입을 통해 대상 타입을 찾는다.현재 타입에서 기능을 찾지 못하면 상위 부모 타입으로 기능을 찾아서 실행한다. 기능을 찾지 못하면 컴파일 오류가 발생한다. 이때는 호출하는 변수의 타입(클래스)을 기준으로 선택한다. / 상속 관계의 객체를 호출할 때, 대상 타입을 정해야 한다. 이때 호출자의 타입을 통해 대상 타입을 찾는다.이 부분에 대해 질문을 드립니다. 제가 아직 다음 강의를 듣지 않아서 모르는 것이라고 생각할 수 있는데아래와 같은 코드를 작성했습니다.package extends1.ex2; public class ElectricCar extends Car { public void move() { System.out.println("Electric Car move"); } public void charge() { System.out.println("charge"); } }package extends1.ex2; public class Car { public void move() { System.out.println("move"); } }package extends1.ex2; public class CarMain { public static void main(String[] args) { ElectricCar electricCar = new ElectricCar(); electricCar.move(); Car car = new ElectricCar(); car.move(); } } 위에 있는 이때는 호출하는 변수의 타입(클래스)을 기준으로 선택한다. / 상속 관계의 객체를 호출할 때, 대상 타입을 정해야 한다. 이때 호출자의 타입을 통해 대상 타입을 찾는다. 의 대답이 맞으려면 뭔가 electricCar.move() 를 실행할 때랑 car.move() 를 실행할 때랑 결과가 달라야할 것 같은데 둘다 결과가 Electric Car move 가 나옵니다. 제 예상으로는 ElectricCar 로 생성하는 경우는 Electric Car move 가 나와야하고 Car 로 생성하는 경우 move 결과가 나와야 할 것 같아보여서요. 혹시 제가 놓치는 부분이 있을까요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
UI 창이 안떠요
UI 화면 관리 시스템 Pt4와 게임설정 강의에서팝업 창과 설정창이 안뜹니다..하이어라키 창에서는 창이 존재는 하는데씬창과 게임 창에서 보이지 않습니다.. .
-
미해결김영한의 실전 자바 - 중급 2편
SortMain2 클래스의 DescComparator 메서드 return 부분이 수정되어야 할 것 같습니다.
영한님 강의 너무 잘 보고 있습니다.다름이 아니라 Comparator를 공부하며 혼자 이것저것 해보던 중에 SortMain2 클래스의 DescComparator 메서드가 3,2,1 배열을 정렬하면 오름차순 으로 정렬되는 것을 확인하여 문의 드립니다.static class DescComparator implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { System.out.println("o1=" + o1 + " o2=" + o2); return (o1 < o2) ? -1 : ((o1 == o2) ? 0 : 1) * -1; } }강의에서는 오름차순 정렬된 1,2,3 배열을 내림차순 정렬해서 정렬이 문제가 없었지만만약 3,2,1 배열을 내림차순 정렬 하게 된다면, return (o1 < o2) ? -1 : ((o1 == o2) ? 0 : 1) * -1;첫번째 삼항 연산자 부분에서 앞에 o1, o2를 비교하고 -1 이 반환되며 오름차순으로 정렬 되는 것 같습니다.리턴 부분이 전체 비교 값에 -1이 곱해질 수 있도록return ((o1 < o2) ? -1 : ((o1 == o2) ? 0 : 1)) * -1; 로 수정 되어야 할 것 같아 문의 드립니다.
-
해결됨김영한의 실전 자바 - 기본편
단축키 작동 안 되는 경우 재부팅 외 해결 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]자동완성 단축키(ctrl shift enter)나 주석달기(ctrl /) 같은 단축키가 잘 되다가 어느순간 안됩니다. 인텔리제이를 재시작해도 안 되고 컴퓨터를 재부팅하면 해결됩니다. 인텔리제이에서 캐시 삭제도 해봤는데 재부팅 말고는 해결이 안 됩니다. 다른 해결 방법이 없을까요?
-
미해결스프링 핵심 원리 - 기본편
웹과관련된부분이 머에여?
여기서 중요한점이 있다. request scope를 사용하지 않고 파라미터로 이 모든 정보를 서비스 계층에 넘긴다면, 파라미터가 많아서 지저분해진다. 더 문제는 requestURL 같은 웹과 관련된 정보가 웹과 관련없는 서비스 계층까 지 넘어가게 된다. 웹과 관련된 부분은 컨트롤러까지만 사용해야 한다. 서비스 계층은 웹 기술에 종속되지 않고, 가급적 순수하게 유지하는 것이 유지보수 관점에서 좋다.request scope의 MyLogger 덕분에 이런 부분을 파라미터로 넘기지 않고, MyLogger의 멤버변수에 저장해서 코드와 계층을 깔끔하게 유지할 수 있다. <-이부분이 이해가 안되여 ㅠ 웹과관련된 정보라는게 머에여? public void logic(String id) { myLogger.log("service id = " + id); 이부분도 웹과관련된부분 아닌가요?
-
미해결김영한의 실전 자바 - 기본편
프로젝트 환경 구성시 jdk 버전 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서는 21버전의 Oracle OpenJDK를 사용하셨는데 23버전만 뜨는 것 같은데 23버전을 사용해도 되나요?
-
미해결스프링 핵심 원리 - 기본편
count1과 count2가 값이 다른이유
@Test void singletonClientUsePrototype(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class,ClientBean.class); ClientBean clientBean1 = ac.getBean(ClientBean.class); int count1 = clientBean1.logic(); assertThat(count1).isEqualTo(1); ClientBean clientBean2 = ac.getBean(ClientBean.class); int count2 = clientBean2.logic(); assertThat(count2).isEqualTo(2); assertThat(clientBean1).isEqualTo(clientBean2); System.out.println("clientBean1 = " + clientBean1); System.out.println("clientBean2 = " + clientBean2); System.out.println("count1 = " + count1); System.out.println("count2 = " + count2); }clienBean1=clientBean2는 싱글톤으로 같은걸 알았는데왜 count1과 count2는 값이 다른건가요?? count1에서 count2는 공유가되서 2가 되었는데 count2에서 count1은 공유가 안된건가요?
-
해결됨김영한의 실전 자바 - 기본편
java 메모리구조 static 영역에 대해서
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. static 영역에 static 변수 뿐만 아니라 static 메서드도 함께 관리하는게 맞나요?
-
미해결스프링 핵심 원리 - 기본편
CoreApplication 실행 시 무한 로딩
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용][ MyLogger.java ] 코드package hello.core.common; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.util.UUID; @Component @Scope(value = "request") public class MyLogger { private String uuid; private String requestURL; public void setRequestURL(String requestURL) { this.requestURL = requestURL; } public void log(String message) { System.out.println("[" + uuid + "]" + "[" + requestURL + "]" + message); } @PostConstruct public void init() { uuid = UUID.randomUUID().toString(); System.out.println("[" + uuid + "] request scope bean create:" + this); } @PreDestroy public void close() { System.out.println("[" + uuid + "] request scope bean close:" + this); } }[ LogDemoController.java ] 코드package hello.core.web; import hello.core.common.MyLogger; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.ObjectProvider; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequiredArgsConstructor public class LogDemoController { private final LogDemoService logDemoService; private final ObjectProvider<MyLogger> myLoggerProvider; @RequestMapping("log-demo") @ResponseBody public String logDemo(HttpServletRequest request) { String requestURL = request.getRequestURL().toString(); MyLogger myLogger = myLoggerProvider.getObject(); myLogger.setRequestURL(requestURL); myLogger.log("controller test"); logDemoService.logic("testId"); return "OK"; } }[ LogDemoService.java ] 코드package hello.core.web; import hello.core.common.MyLogger; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.ObjectProvider; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class LogDemoService { private final ObjectProvider<MyLogger> myLoggerProvider; public void logic(String id) { MyLogger myLogger = myLoggerProvider.getObject(); myLogger.log("service id = " + id); } } [ build.gradle ] 코드plugins { id 'java' id 'org.springframework.boot' version '3.3.2' id 'io.spring.dependency-management' version '1.1.6' } group = 'hello' version = '0.0.1-SNAPSHOT' //lombok 설정 추가 시작 configurations { compileOnly { extendsFrom annotationProcessor } } //lombok 설정 추가 끝 java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter' //web 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'jakarta.inject:jakarta.inject-api:2.0.1' //lombok 라이브러리 추가 시작 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //lombok 라이브러리 추가 끝 testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } ObjectProvider를 사용하면서 부터 CoreApplication을 실행하면 Negative Match 가 뜨면서 아래에ActiveMQAutoConfiguration: Did not match: - @ConditionalOnClass did not find required class 'jakarta.jms.ConnectionFactory' (OnClassCondition) AopAutoConfiguration.AspectJAutoProxyingConfiguration: Did not match: - @ConditionalOnClass did not find required class 'org.aspectj.weaver.Advice' (OnClassCondition)이러한 오류들이 뜹니다.IntelliJ는 무료버전이므로 build and run은 Gradle로 설정해놓은 상태입니다. 어떻게 해야 정상작동할까요...