묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
4강애싱크 프로그래밍에서 12:46에서
4강애싱크 프로그래밍에서 12:46에서 addnumber함수는 비동기함수가 아니라 동기함수 아닌가요?그럼 위에 addnumber()가 끝나고(2초기다리는거까지 하고)나서 밑에 addnumber()가 실행돼야하는거 아닌가요??왜 위 addnumber의 2초를 기다리지 않고 밑에 addnumber를 실행하죠?Addnumber의 반환타입이 Future<void>가 아니라 그냥 void니까 동기함수 아닌가요??
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
오타 제보
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]그냥 문제 없는 단순 오타이긴 한데 제보드립니다..리플렉션 강의노트와 강의자료 MethodV2 클래스 주석에 동적 메서드 호출 - 리플렉션 사용인데 사요로 되어 있어서 제보드립니다. 감사합니다.
-
해결됨오브젝트 - 기초편
다형성을 이용한 역할 디자인과 그에 대응되는 영속성 저장소에서의 모델 디자인의 괴리
안녕하세요. 영호님 좋은 책 그리고 그에 보충되는 강의를 정말 잘 읽고 있습니다. 책을 읽고 많은 교훈(역할, 책임 협력의 중요성)을 얻고 실무에 반영해보려했던 2년간의 경험이 있었습니다.역할과 책임에 따른 객체에 따른 클래스 디자인을 설계하고 관계형 데이터베이스와 ORM 기술을 이용해서 설계를 진행할 경우 테이블이 많아지는 경향성이 있다고 느껴왔습니다. DB 모델과 객체 모델은 달라야하는 걸까요? 아니면 같은 형태로 가도록 지향해야할가요? 비즈니스에 맞게 유연하게 진행해야하는 것은 알지만 여기서 "유연하게"가 모델과의 일치를 지향하면서 최적화를 해나가야하는건지 조영호님의 경험과 의견이 궁금합니다. (질문이 제대로 전달되는지 모르겠네요.)
-
미해결스프링 핵심 원리 - 기본편
데이터 호출관련 문의드립니다
package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.order.Order; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl; public class OrderApp { public static void main(String[] args) { OrderService orderService = new OrderServiceImpl(); MemberService memberService = new MemberServiceImpl(); Long id=10L; Member member = new Member(id, "aaa", Grade.VIP); memberService.join(member); System.out.println(member.getName()+" "+" "+member.getId()+" "+" "+member.getGrade()); Order order = orderService.createOrder(id,"XBOX",100000); // // System.out.println("order = " + order); } }멤버의 정보까지는 정상적으로 불러와지는데 주문정보를호출하는 과정부터 멤버 정보를 받아오지 못하는거 같습니다.public interface OrderService { Order createOrder(Long id, String itemName, int itemPrice) throws IllegalStateException; }public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository = new MemoryMemberRepository();//회원 정보 찾기 private final DiscountPolicy discountPolicy = new FixDiscountPolicy();//할인 금액 @Override public Order createOrder(Long id, String itemName, int itemPrice) { Member member = memberRepository.findById(id); if(id ==null){ throw new IllegalStateException("유효하지 않은 아이디 입니다" + id); } int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(id, itemName, itemPrice,discountPrice); } }public class Order { private Long id; private String itemName; private int itemPrice; private int discountPrice; public Order(Long id, String itemName, int itemPrice, int discountPrice) { this.id = id; this.itemName = itemName; this.itemPrice = itemPrice; this.discountPrice = discountPrice; } public int calculatePrice(){ return itemPrice - discountPrice; //비지니스 로직 } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public int getItemPrice() { return itemPrice; } public void setItemPrice(int itemPrice) { this.itemPrice = itemPrice; } @Override public String toString() { return "Order{" + "id=" + id + ", itemName='" + itemName + '\'' + ", itemPrice=" + itemPrice + ", discountPrice=" + discountPrice + '}'; } }order 패키지 쪽 소스 인데 수정해야 될부분이 있을까요Exception in thread "main" java.lang.NullPointerException: Cannot invoke "hello.core.member.Member.getGrade()" because "member" is null at hello.core.discount.FixDiscountPolicy.discount(FixDiscountPolicy.java:10) at hello.core.order.OrderServiceImpl.createOrder(OrderServiceImpl.java:20) at hello.core.OrderApp.main(OrderApp.java:22)에러는 이와같이 발생합니다도와주셔서 감사합니다
-
해결됨김영한의 실전 자바 - 기본편
클래스 따로 만들어 선언하는 이유
package ref.ex; public class ProductOrder { String productName; int price; int quantity; }package ref.ex; public class ProductOrderMain2 { static ProductOrder createOrder(String productName, int price, int quantity) { ProductOrder order = new ProductOrder(); order.productName = productName; order.price = price; order.quantity = quantity; return order; } static void printOrders(ProductOrder[] orders) { for (ProductOrder order : orders) { System.out.println("상품명: " + order.productName + ", 가격: " + order.price + ", 수량: " + order.quantity); } } static int getTotalAmount(ProductOrder[] orders) { int amount = 0; for (ProductOrder order : orders) { amount += order.price * order.quantity; } return amount; } public static void main(String[] args) { ProductOrder[] orders = new ProductOrder[3]; orders[0] = createOrder("두부", 2000, 2); orders[1] = createOrder("김치", 5000, 1); orders[2] = createOrder("콜라", 1500, 2); printOrders(orders); System.out.println("총 결제 금액: " + getTotalAmount(orders)); } }섹션3, 기본형과 참조형 문제와 풀이여기에서 productName, price, quantity를 다른 클래스에 따로 선언하는 이유가 인스턴스를 생성하기 위함인가요? 만약 맞다면, 클래스 ProductOrderMain2의 멤버변수로 선언하고 만들면 비효율적인가요? 아니면 불가능한가요?
-
미해결김영한의 실전 자바 - 중급 1편
문제와 풀이 2 findByCode메서드 질문
안녕하세요 자바를 복습하다가 헷갈려서 질문 남깁니다 문제와 풀이 2번 HttpStatus 코드 정답에서public enum HttpStatus { .... public static HttpStatus findByCode(int code) { for(HttpStatus status : values()) { ... ... }findByCode는 static 메서드인데 안에 values()가 있길래 values() 메서드도 static 메서드겠구나하고 enum 클래스에 들어가 values()를 찾으려했습니다 . 그런데 enum의 메서드에는 values()가 없었어요..GPT에게 물어보니 values()는 enum 클래스에서 자동으로 생성되는 static 메서드라는데 이게 무슨말인지 이해가 잘 안갑니다 !..
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
MethodEx1Ref 질문입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]average 메서드에 return 값을 sum / 3.0이 아닌 sum / 3.0을 저장한 average 변수를 반환해도 상관없나요? 이렇게 변수에 넣어 반환하니까 변수명에 인텔리제이가 노란줄을 그어서 혹시 이렇게 반환하는게 잘못된것인지 궁금해서 질문드립니다.
-
미해결김영한의 실전 자바 - 중급 1편
매개 객체의 값을 사용하는데 접근 제어자가 private 인데 바로 접근이 어떻게 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.public class UserV2 { private String id; public UserV2(String id) { this.id = id; } @Override public boolean equals(Object obj) { UserV2 user = (UserV2) obj; return id.equals(user.id); } }여기서 제일 마지막줄의return id.equals(user.id);id 는 자신의 것이니까 바로 접근이 가능한데user.id 는 매개변수로 넘어온 것인데 private 로 된 id에 바로 접근한다는게 이상합니다.getId() 메서드를 만들어서 사용하는 것이 아닌 직접 접근이 어떻게 가능한가요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
배열에서 사용하는 length는 무엇인기 궁금합니다.
안녕하세요, 배열에서 당연하게 쓰고 있다가 문득 궁금증이 생겨서 질문을 드립니다. 배열을 생성하고 해당 배열의 길이를 알고 싶을 때, 자주 쓰던 length가 어디서 나온 것인기 궁금합니다. String 객체 같은 경우 String a = "example"; int length = a.length();다음과 같이 length() --> 메서드임을 알 수가 있는데 배열에서 사용하는 length 같은 경우는 int[] a = new int[5]; int length = a.length;다음과 같이 소괄호() 없이 사용을 하게 되는데, 이게 뭔지 궁금해서 IDE 에서 command 클릭을 해도 해당 메서드의 출처를 알 수 가 없어 질문을 드립니다. 배열에서 사용하는 length 같은 경우 자바 자체적으로 있는 static 메서드 같은 존재인가요?
-
미해결김영한의 실전 자바 - 중급 1편
PDF 수업 자료 오타 제보
8. 중첩 클래스, 내부 클래스 2의 30페이지 소제목에 오타가 있습니다람다(lamba) -> 람다(lambda)사소한 오타지만 수정되면 좋을 것 같습니다.강의 재밌게 듣고 있습니다. 감사합니다
-
미해결남박사의 파이썬으로 봇 만들기 with ChatGPT
개봉 날짜 및 평점 가져오는 코드 추가
강의에서 제공된 코드는 영화 개봉 날짜, 평점을 가져오지 못하고 있는데 아래 코드 사용하시면 됩니다.그리고 태그가 단일 요소일 경우 contents 속성을 사용하기 보다는 string 속성을 사용하면 리스트가 아닌 문자형으로 바로 출력할 수 있습니다.for dt, dd in zip(c_dt, c_dd): if dd.select_one('c-star'): rating = dd.select_one('c-star').next_element.strip() c_data[dt.string] = rating elif dd.select_one('span'): days = dd.select_one('span').string c_data[dt.string] = days else: c_data[dt.string] = dd.string
-
해결됨김영한의 실전 자바 - 중급 2편
노드와 연결1 - 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨 질문을 남깁니다.노드와 연결1 노드를 배우면서 스트링 빌더의 append메서드가 생각이 났습니다.그래서 중급1편에 배운 append메서드에 대해서 찾아보고 작동 방법에 대해서 찾아보고 자기 자신을 참조해서 스트링 빌더가 돌아가는것을 확인을 할수가 있었습니다.이런 것 을 보고 노드가 '스트링 빌더 에서 파생된 작품?(응용) 아닌가' 라는 생각이 듭니다. 그래서 여기서 질문이첫 번째노드가, 스트링 빌더나, 메서드 체인닝 기법에서 파생된 작품인가요? 두 번째스트링 빌더의 apeend의 this와, node의 new의 차이점이라고 할까요? 이런 것이 어떻게 다른지 비교해서 가르켜 주시면 안될까요?뭔가 대조 되는 게 있는 것 같아서, 혹 이 두가지 가 대조가 가능하다면 대조 설명을 해주시면 감사하겠습니다. 추가1다음 강의 에서 toString할때 스트링 빌더 및 append메서드가 나와서.. 좀 당황스럽기는 한데. 이거 때문에. 생각 난 것은 아닙니다. 중급1편에서 스트링 빌더를 공부할 때sb.append(내용).append(내용).append(내용);first.next.next = new Node("C"); 이거랑 비슷해서 생각이 난거 입니다. 그래서 중급1편의 코딩 내용들을 뒤져본거고, pdf도 뒤져봤습니다.증거 사진 이요.. 답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 기본편
수업 자료에 정말 사소한 오타가 있는데, 제보해도 되나요?
1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용][1. 클래스와 데이터.pdf - 23P - 객체 vs 인스턴스 문단] 사진의 두번째줄 마지막 부분을 보시면, "클래스로부터 생성되다는 점을 명확히 하기 위해..." 라고 되어 있습니다. 저도 "~~님 도움"에 올라가고 싶어요. 이정도론 못올라갈까요
-
미해결남박사의 파이썬으로 봇 만들기 with ChatGPT
can't open/read file: check file path/integrity 오류 발생 시 해결 방법
cv2.imread() 함수를 통해 이미지를 읽어 들일 때, 한글을 읽어오지 못해 오류가 발생하는 경우가 있습니다. 아래의 코드로 해결하시면 됩니다.참고로, 아래 코드 사용 시 cvtColor() 함수를 사용해서 색상을 변경하지 않아도 됩니다.import numpy as np img_path = "이미지 파일 경로" img_file= np.fromfile(img_path, np.uint8) cv_decode = cv2.imdecode(img_file, cv2.IMREAD_COLOR) qr_reader = pyzbar.decode(cv_decode) print(qr_reader)
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
JAVA 강의를 어느정도까지 학습하고 Spring을 동시 학습하면 좋을까요?
안녕하세요! 김영한님의 JAVA와 Spring 강의를 수강하고 있습니다.국비지원학원에서 Spring으로 2개의 프로젝트를 했지만 기본기가 약해, 초반부터 다시 학습하고있습니다.제 목표는 Spring과 JAVA를 이해한 뒤, 토이 프로젝트를 진행해 보고자 하는것입니다.질문드리고 싶은 것은,1. JAVA 어느 정도까지 강의를 본 다음 Spring을 병행하여 공부하면 좋을지 궁금합니다.또는, JAVA의 어떤 개념까지 이해를 하고 Spring을 병행하여 공부하면 좋을지 궁금합니다.(토이프로젝트 진행을 위해 Spring을 미리 공부해보고 싶습니다.)
-
미해결김영한의 실전 자바 - 중급 1편
Class 작성시 자기 자신 class 를 생성할 수 있다는 것이 이해가 안되요.
package enumeration.ex2; public class ClassGrade { public static final ClassGrade BASIC = new ClassGrade(); public static final ClassGrade GOLD = new ClassGrade(); public static final ClassGrade DIAMOND = new ClassGrade(); } <-- Innerclass ?? 기초편부터 듣고 있는데.. 혹시 어느 부분에서 설명하신 내용인지 알 수 있을까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
변수를 변경해도 컴파일 시 반영이 안되는 현상
1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]인텔리제이 24년 버전 이용중에어느순간 갑자기 변수를 수정해도 컴파일시 반영이 안되는 오류가 있습니다. 검색결과 리빌딩 등 방법을 이용하라 하여 시도해보았는데 리빌딩 하면 그때 한번 반영되고 다시 똑같은 현상이 반복됩니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
예제 코드에서의 volatile 사용에 관하여 질문드립니다.
안녕하세요, 영한님.이번 강의 9분 10초쯤에 flag 와 count 변수에 volatile 키워드를 추가하셨는데,저는 flag 변수에만 volatile 키워드를 사용해도 예제 코드가 정상적으로 동작할 것으로 예상했습니다.실제로 flag 변수에만 volatile 키워드를 붙이고 실행해보니 main 스레드에서 가져온 task.count 와 work 스레드에서 가져온 count 의 값이 동일했습니다.또한 volatile 키워드를 모두 사용하지 않았을 때를 기준으로 flag 변수에만 사용했을 때 약 2배, flag 와 count 변수 모두 사용했을 때 약 5배 정도 성능이 저하되는 것을 확인했습니다.그럼에도 불구하고 count 에도 volatile 키워드를 사용하신 이유가 있을까요? 제가 생각하지 못한 예외 상황이 있을까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
LockSupport.unpark(thread) vs Interrupt
Waiting 상태의 쓰레드를 Runnable 상태로 만들기 위해선 두 가지 방법이 있다고 배웠습니다.LockSupport 기능인터럽트 발생2번 방법에 대해서 궁금한 것이 있습니다. 결과적으로 인터럽트를 발생시켜 쓰레드를 대기 상태에서 실행 가능한 상태로 전이시킨다는 것인데 인터럽트 상태가 정상(false)이 아닌 상태가 나오게 되는데 그럼 실무에서 1번 방법을 더 많이 사용하나요?
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
리팩토링과 기능 추가에 대한 질문
게임의 난이도를 추가하는 부분에서 행과 열의 사이즈가 상수로 고정되어 있기 때문에 확장에 닫혀있어 OCP가 충족되지 않는 상태라고 하셨는데기능 추가와 리팩토링에 대해 질문이 있습니다. 1) GameLevel인터페이스와 각각의 난이도별 클래스를 작성하는 과정은 OCP를 만족하는 코드로 바꾸는 과정이니까 '리팩토링으로 기능 추가를 용이하게 하는 과정'이라고 봐야하나요? 2) 사용자에게 난이도를 선택할수 있게 물어보는 부분을 작성한다면 그 과정을 기능 추가로 보고 그 이전 단계까지는 리팩토링인건가요? 3) 보통 리팩토링과 기능 추가가 자연스레 같이 이뤄지는 경우에는 커밋을 분리하는지 한 번에 하는지도 궁금합니다.