학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 여기에 질문 내용을 윈도우에서 실행했는데 이런식으로 나옵니다. ㅠㅠ 왜이런건가요?
Optioanl<Member> findById(Long id)와 @Query("select m from Member m where m.id = :id) Optional<Member> findByid(@Param("id") Long id) 가장 위의 코드는 spring data jpa를 이용해서 작성했기 때문에 em.flush()가 호출될 때 바로 일어나지않고 아래의 코드는 jpql로 작성했기 때문에 로직 호출 시에 바로 em.flush()가 발생하는 거 맞나요?
파이어베이스 리얼타임 데이터베이스에 USER 하위 항목으로 저장된 내용들을 보니까 제가 저장에 쓰이게 했던 변수들의 순서 나열과 다르게 변수이름 시작부분 a~z 순으로 데이터가 저장되는것 같더라구요..... 예를들어 제가 변수를 public int zzz; public int ccc; public int aaa; 이렇게 코드를 쳤다면........ 파이어베이스 데이터 쪽에는 (USER 하위에) public int a aa; public int c cc; public int z zz; 로.... 제가 코드로 순서 맞춰 쓴 변수와 다르게 a순부터 z 순까지 자동정렬 되더라구용;; 이거 그냥 a~z순 말고 제가 쓴 변수 순서대로 정렬되서 저장되게 하는법이 있을까요??
내용이 너무 좋은 것 같아서 즐겁게 배우고 있다는 이야기부터 전합니다. rb . isKinematic = true ; rb . velocity = Vector2 . zero ; // 사실상 불필요?. 위에서처럼 rb.velocity 값을 Vector2.zero 로 할 필요가 없지 않나요? 챗지피티에게 물어보면 불필요하다고 하는데... 정확한지 몰라서 여쭙니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 말 그대로 입니다. 영한님은 하루에 자바 강의를 찍을 때 평균적으로 하루에 시간을 얼마나 투자하시나요? ('어레이 리스트 에서 링크드리스트로 변환 할때 이런 것은 얼마나 생각을 해야지 나오지?(11:30~40)'라는 생각이 들어서 질문을 합니다.)
데이터 베이스 불러올때 public void ReadData() 함수에서 만약에, 저장된 파일이 없을때 불러오려고 하면 에러날수도 있을거같아서 혹시 if( 그 유저의 저장된파일이 있다면 ) { ReadData(); //데이터를 불러온다. } else { return;} 이렇게 코드를 짜보고싶은데 위에서 if 안에 들어갈만한 ( 그 유저의 저장된파일이 있다면 ) 에 혹시 뭐라고 쓰는게 좋을까요? ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] fetchOne()은 결과 값이 없을 경우 null을 반환 하는데 왜 Optional<Member>로 반환 하지 않나요? fetchOne()은 member가 없을 경우 null 반환 합니다. 결과 값을 Optional.ofnullable()로 감싸서 반환 후 서비스 계층에서 null 이면 안될 경우 RutTimeException을 상속한 커스텀 Exception을 발생 시키고 advice에서 처리 하는게 맞나요?
이번 강의에서 PlayerController의 다음 코드가 작동하려면 void UpdateBelowCollision (){ if ( movement . HitBelowObject . TryGetComponent < PlatformBase >( out var platform )){ if ( ! platform . IsHit ){ platform . UpdateCollision ( gameObject ); // gameObject는 플레이어 } } } 적어도 Platform_00_Moving 프리팹에, PlatformBase를 상속받은 클래스가 있는 스크립트를 어태치해야 될 것 같습니다. 그래서 GetComponent로도 찾아지고, UpdateCollision메소드도 실행되구요.
안녕하세요 강의 잘 보고 있습니다. 파사드 패턴에 대해 질문이 있습니다. 얄코님이 올려주신 예시에선 다음과 같이 두 상황이 나온다고 이해했습니다. 다양한 서브 시스템을 파사드 클래스로 조합해 하나의 새로운 로직을 만듦. 여러 서브 시스템을 생성시키고 세부 로직을 파사드 클래스에 위임. 1번의 경우는 일종의 추상화로 이해하였으며, 2번의 경우 서브 시스템에 대한 의존성 주입을 파사드 클래스에 위임 및 세부적인 로직을 캡슐화하는데 의의를 두었다고 이해했습니다. 만약 의존성 주입은 자동으로 이루어지는 3-layer 아키텍쳐에서 파사드 패턴을 도입할 경우 이미 service 레이어에서 내부 로직에 대해 캡슐화가 되었으므로 다양한 서브시스템을 파사드 클래스로 조합하는 것(ex. 1번)에만 집중하면 될까요?
이전에 공부할 때 엔티티매니저에서 트랜잭션을 가져야 로직이 수행된다는 것을 알고 있었습니다. 그런데 이전에 JPA활용2편에 @Transactional을 따로 붙혀주지 않았는데 로직이 실행된걸로 기억하는데 @Service나 @Repository에 의해서 자동으로 트랜잭션이 걸리는 건가요?
24.10.29 수정 맨 밑에 해결 방안 적어놨습니다. 저처럼 고생하는 사람 없기를 바랍니다. 24.10.24? socket 이 null인데요. 해당 호출스택입니다 socket = null 조사식 캡처본입니다. 이전 강의에서도 처음 실행했을 때 네트워크 허용 관련 창이 떴었는데 빠르게 누르면서 뭘 눌렀는지 모를정도로 가볍게 생각하고 넘어갔는데 계속 이런 상황이라 디버깅이 어렵네요. 다른 질문에도 Unhandled Exception 나온 분꺼도 읽었는데 일단 기본 테스트니까 넘어가라고 하셔서 했는데도 계속 뜨더라고요.. 4강 강의는 계속 이렇게 무시하고 진행해야 할까요? 구글링했을 때 제가 네트워크 허용안한거 같은데 다시 허용 뜨게 하는방법도 모르겠고, 조언 부탁드립니다 ㅠㅠ 24.10.27 추가 4번의 호출스택에서 _args.ConnectSocekt이 null 입니다. _args는 null이 아니고, SocketError는 success로 넘어옵니다. 그리고 네트워크 허용 창 같은 경우 방화벽을 다 해제하고도 진행해 봤었는데 그대로이며, 방화벽 다 해제하고, 다시 진행하니까 Sever를 허용 하시겠냐고 창이 떠서 이번에는 허용을 눌렀는데도 그대로입니다.. 디버깅 모드 하지 않고 실행하면 이러고 끝입니다. Socket Error 조사식. This protocol version is not supported. 저는 작업한것들을 강의마다 git으로 올려두고 있는데 혹시나하고 Session3 26강까지는 정상작동했다가 Session#4 27강에 해당 에러를 발견하게 됐습니다. 이전에 이런 에러가 없었는데.. 원인을 계속 찾아볼게요 24.10.29 해결 구글링과 gpt를 통해서 찾아봤습니다. 우선 연결할 port(7777)가 없는 것을 확인. 방화벽에서 차단하고 있는지 체크. 인바운드 규칙으로 포트 추가. 로컬 Ip를 직접 연결하고, TcpListner를 직접 Start 호출. 코드문제 1. Close 매개변수를 사용하지 않았습니다. 강의 따라가다가 놓친것 같네요.. 코드문제 2. _reserveSize == FreeSzie 같으면 null 일때 문제. 현재 Open 메서드에서 _reserveSize 가 FreeSize 와 같을 때 null을 반환하도록 되어 있습니다. 이 경우 OnConnected 메서드에서 Array.Copy 를 호출할 때 openSegment.Array 가 null이 되어 ArgumentNullException 이 발생할 수 있습니다. 이제 에러는 안나지만, 서버와 클라의 연결이 계속 안됐습니다. 이런식입니다. 그러다 멀티쓰레드를 사용하면 시간이 안맞아서 그럴 수 있다고 하더라고요 기존 IPAddress ipAddr을 원복시키고, Thread.Sleep으로 5초 늦게 연결 을 하니까 정상작동이 됐습니다 다른 도움이 필요하시면 ChatGPT에 기다려달라고하고 class 전체 복사해서 하나씩 읽게 한 다음에, 문제되는 점을 찾거나 에러 관련 질문을 넣으면 적지않게 도움을 받을 수 있을겁니다.
자바, jvm, jdk 그리고 jre 강의에서 kotlinc 명령어로 .kt 파일을 컴파일하시는걸 봤는데요, 코틀린 컴파일러는 jdk에 포함되어 있는 것이 아니고 따로 설치해야 하는게 맞을까요? jre는 java의 실행환경을 제공하고, jdk는 개발 도구 키트를 제공해서 java를 컴파일하는 javac 등의 명령어? 툴?은 jdk에 포함되어 있다고 강의 교안에 적혀있는데 그럼 코틀린의 컴파일러는 추가적으로 설치가 필요한지, 아니면 뭔가 방법이 있는지 궁금합니다. 우선 컴파일하면 바이트 코드가 되기 때문에 런타임에 필요한 라이브러리만 포함하여 패키징하면 jre에서 실행할 수 있다는 것은 이해했습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 직접 구현하는 배열 리스트1- 시작의 MyArrayListV1 구현문제를 예외 처리하고 싶은데 아무리 해도 안돼는데 해결책좀 try { list.add("f"); System.out.println(list); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("배열의 범위를 벗어났습니다"); System.out.println("예외 발생 위치: " + e.getMessage()); e.printStackTrace(System.out); } 그리고 아래 MyArrayListV1에 이렇게 작성하면 되긴 돼는데 저는 유지보수를 위해서 try~catch를 하고 싶거든요. 그래서이렇게 질문 남겨요 public void add(Object e) { if (size >= elementData.length) { // 배열이 가득 찼는지 체크 throw new ArrayIndexOutOfBoundsException("용량을 초과했습니다. 현재 크기: " + size + ", 최대 용량: " + elementData.length); } elementData[size] = e; size++; }
public class OrderApiController { @GetMapping("/api/v1/orders") public List<Order> orderV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); order.getDelivery().getAddress(); List<OrderItem> orderItems = order.getOrderItems(); orderItems.forEach(o -> o.getItem().getName()); } return all; } } public class OrderRepository{ public List<Order> findAllByString(OrderSearch orderSearch) { String jpql = "select o from Order o join o.member m"; boolean isFirstCondition = true; //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { if (isFirstCondition) { jpql += " where"; isFirstCondition = false; } else { jpql += " and"; } jpql += " o.status = :status"; } ... 트랜잭션을 따로 붙히지 않았는데 상관없는건가요? List<Order> all = orderRepository.findAllByString(new OrderSearch()); 이 때 연관관계매핑되어 있는 객체들은 지연로딩에 의해 프록시로 존재하고 for (Order order : all) { order.getMember().getName(); order.getDelivery().getAddress(); List<OrderItem> orderItems = order.getOrderItems(); orderItems.forEach(o -> o.getItem().getName()); } 이 때 강제호출 되어서 쿼리가 나가는 게 맞나요? orderRepository.findAllByString에서 repository에서 작업이 마쳐서 트랜잭션이 커밋되어서 영속성 컨텍스트에는 아무값이 없을 거 같은데 컨트롤러에서 리턴하기 전까지 하나의 트랜잭션 안에서 작동이 이뤄지는 건가요? 트랜잭션이 언제 시작하고 언제 종료되는 지 궁금합니다
[질문 내용] 코드에서 private static Map<Long, Member> store = new HashMap<>(); 부분이 있는데요.. 중간에 코딩시에 HashMap 부분에 빨간줄이 그어져있어서 뭔가 문제지 했는데 나중에 코드를 보니까 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Optional; 처음 작성시엔 위의 코드로 import 가 되어있었는데 동영상 후반에 보니까 아래 코드로 변경되어져 있었습니다. import java.util.*; 위 import 부분을 강의영상에서 변경된 부분을 못찾았는데 어떠한 이유로 그렇게 변경된건지 알고 싶습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 이전 질문 내역에서 하이버네이트6 최적화 문제라는 답변을 봤는데.. 아직 패치가 안된건지 2024 년에도 총 7번 쿼리날아가네요. 디버깅 해보니 address = order.getDelivery().getAddress(); // LAZY 초기화 이 부분에서 select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2024-10-22T14:07:35.134+09:00 DEBUG 6578 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 이렇게 두번 쿼리가 실행되네요.. 그래서 List<Order> all = orderRepository.findAllByString(new OrderSearch()); 여기서 쿼리 한번 name = order.getMember().getName(); // LAZY 초기화 여기서 쿼리 한번 address = order.getDelivery().getAddress(); // LAZY 초기화 여기서 쿼리 두번 주문 리스트가 2개 있으므로 1 + 2 * (1 + 2) = 7 번 실행됩니다. 궁금한 점은 select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 이 쿼리는 왜 추가적으로 실행되는지 모르겠습니다.