학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 어플리케이션 아키텍쳐 강의 내용 설명해주시면서, 영한님께서는 필요에 따라서 Controller 계층에서 Repository 계층에 직접 접근(Service계층을 거치지 않고)하는 것도 유연하게 허용하신다고 하셨는데요. 이런 경우에는 @Transcational 어디 계층에 적용하시는지와 이유가 궁금합니다. 제가 생각해보기로는 Controller 계층은 비즈니스 로직을 처리하는 계층의 개념은 아니니, Repository에 @Transactional을 다는게 적절해보이는데요. 이러면 Controller 계층에서 직접 접근하는 Repository 클래스들만 @Transactional 어노테이션이 붙어있고 Service 계층을 통해서 사용하는 대부분의 Repository들은 @Transactional 이 안 붙어있게되어(Service 계층에 @Transactional을 붙이니) 일관성이 조금 적어지지 않을까 하는 생각도 들기는 하네요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] initValue는 초기값, allocationSize는 메모리 선점 할당값인데 시퀀스 값의 증가를 1에서 5씩 증가되는 값으로 변경하는 방법은 없는지 궁금합니다.
Object를 활용시에 다운캐스팅 과정이 필요했는데요. (String) Object 10 이것은 컴파일오류로 인식하지 않는 이유가 약간 이해가 가지 않습니다. 어떤 객체든지 Object가 최상위 부모니까 String으로 갈 수 있는데 가보니까 10이어서 예외가 터지는 시나리오 같은데, 컴파일러는 이를 미리 판단할 정도는 되지 않나요?? 컴파일러는 "Object에서 String? -> ok 가능" 이정도만 판단해주는건가요?
예전에 로드맵 설명 보면 jpa1을 한 후 이론을 듣는 야생형 방향으로 하라 했는데 지금 강의 들어보면 jpa1편에서 자꾸 이론편 모르면 기본 다시 보고오라고 하는데 커리큘럼이 바뀐건가요? 이론편에서 프로젝트한다고 하는것도 그렇고, 강의를 이후에 다시 찍으신건가요? 이론 듣고 jpa1듣는걸로 바뀐건가요?
Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
강의를 보고 같이 프로젝트도 만들어봤는데 문제가 생겨 글을 작성합니다. response 값을 확인하려고 네트워크 탭을 확인하니 프리플라이트가 같이 생성되고 클릭할 시 아래와 같은 메시지가 나옵니다. {"message":"No API key found in request","hint":"No apikey request header or url param was found."} 혹시 이 문제를 해결할 수 있는 방법을 알고 계신가요? 처음부터 supabase 설정을 다시 해야될까요?
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "chap_08.ditector.Detectable.detect()" because "this.detector" is null at chap_ 08.Camera .SpeedCam.detect( SpeedCam.java:28 ) at chap_08._Quiz_08.main(_Quiz_ 08.java:17 ) Process finis 호출할수 없다는 에러가 나오는데 혼자서 해결이 안되어,, 글남깁니다 ㅠㅠ
데이터베이스 sqlite연결하고 models.py 파일들어가서도 변경했습니다 변경하고 모델 Song 클래스 table까지 생성완료했습니다 그런데 사진과 같이 예상외 오류가뜹니다 그전까지는 핫트랙 홈페이지가 잘떳습니다 오류내용보니 전혀 건들이지 않는 views.py song.from_dic 에서 오류가 먼저 났습니다 이유를 잘 모르겠습니다...
제목 그대로 입니다. 가장 최근에 업데이트 해주신게 벌써 2년전인데, 강의를 계속 걸어놓으시려면 적어도 매년 단위로UI 상태에 맞게 해당 부분만이라도 강의를 업데이트 해주셔야 할 것 같습니다.Mock server 부분 도저히 찾지못해 시간만 보내고 진척이 없습니다. 대체 어떻게 해야 하나요?
쿼리 파라미터 로그 남기기 - 스프링 부트 3.0 스프링 부트 3.0 이상을 사용하면 라이브러리 버전을 1.9.0 이상을 사용해야 한다. ``` implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 이거 했는데 퀴리부분이 이렇게 짤려서 나오는데 select next value for member_seq 어떻게 해결해야 하나요
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요. 다름이 아니라 제가 혼자 연습하다가 헷갈리는 점이 있어서 질문드립니다!! 일단 JSON형식의 응답을 만들기 위해서 DTO에 멤버변수에 대한 getter메서드가 있어야 한다는 것은 알고 있습니다!! 그래서 아래 코드와 같이 응답 DTO를 만들었습니다. @Getter @Setter public class WeatherInfoResponse { private String baseDate; private String baseTime; private String category; private String fcstDate; private String fcstTime; private List<WeatherAndTemp> weatherAndTempList; public WeatherInfoResponse(List<WeatherAndTemp> weatherAndTempList) { this.weatherAndTempList = weatherAndTempList; } } 그런데 문제가 저 WeatherAndTemp 객체를 담는 리스트 부분입니다. 아래가 WeatherAndTemp 클래스입니다. @Getter public class WeatherAndTemp { private String weather; private String temp; public WeatherAndTemp(String weather, String temp) { this.weather = weather; this.temp = temp; } } 제가 헷갈리는 점이 처음에 WeatherAndTemp 클래스를 getter 메서드를 생성하지 않고 만들었다가 오류가 났었습니다. 그런데 getter 메서드를 생성하니 잘됩니다. 저는 원래 응답 DTO만 Getter가 필요하다고 알고 있었는데 저런 경우는 어떤 경우인가요? 응답 DTO의 멤버변수에 사용되는 클래스도 Getter 메서드를 만들어야 하나요?
강의 내용과 똑같은 패키지로 Child와 Parent 클래스를 만들고나서 각각의 패키지에 main메서드가 있는 클래스를 만들고 Child와 Parent 객체를 생성해 접근이 어디까지 되는지를 확인해보고 아예 다른 패키지에 main메서드가 있는 클래스를 만들어서 Child와 Parent 객체를 생성해서 확인해보았는데 protected와 package-private 접근제어자 부분이 접근이 가능할줄 알았지만 안되는 경우가 나와서 제 예상과 너무 달라 많이 헷갈립니다. 그래서 궁금한건 실무에서 protected와 package-private를 사용 하나요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 처음에 updateItem에 id없이 그냥 form만 넘겨주니 Caused by: java.lang.IllegalArgumentException: id to load is required for loading 라는 오류가 떠서 컨트롤러에서 updateItem메소드에 form과 같이 id를 넘겨주니 해결됐습니다. 질문 : 수정페이지에서 제출을 하게되면 컨트롤러의 updateItem의 (updateItemDTO form)에 id도 저장되서 service로 넘어가는게 아닌가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 안녕하세요 선생님 수업을 듣다 궁금한 사항이 생겨서 여쭈어봅니다. 위 사진은 제가 작성한 코드 입니다. Q1 . 1번을 누르고 처음 내용을 입력하고 다시 1번을 눌러 새로운 정보를 입력 후 2번으로 합계를 보내면 따로 처음 total값과 두번째 total값을 더하는 식이 없고 누적시키는 로직도 작성을 하지 않아 정상적으로 작동이 되면 안될 것 같은데 정상적으로 합계가 나오고, 누적한 total 값이 자동으로 합산되는 이유가 궁금합니다. Q2. 일단 정상적으로 로직이 작동하여서 2번 결제를 선택 후 total 값을 확인하였고 변수를 초기화를 하지 않은것을 실행 후에 알게 되었는데, main에서 선언한 변수라 초기화가 되지 않고 값이 저장되어서 기록되는 것은 다른 질문을 보고 이해를 했지만 그렇게 되면 2번 결제 항목에서 초기화를 따로 시켜주지 않았는데도 불구하고 2번 결제를 선택 후 다시 1번으로 가서 값을 새로 입력하고 2번을 선택 하면 자동으로 초기화가 되어 새로 입력한 값만 불러와 졌는데 어떠한 원리로 이렇게 작동이 된것인지 궁금합니다. 항상 좋은 강의 감사합니다:)
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 그런데 이렇게 작성했을때 수정하고 제출을 하면 Caused by: java.lang.IllegalArgumentException: id to load is required for loading 오류가 뜹니다
import React,{useState} from 'react'; function Exptest (){ const [number, setNumber] = useState('A'); const checkNumber =() =>{ alert("첫번째 "+number); setNumber(function (prevnumber){ alert(prevnumber+"/3번/"+number); setNumber((prevnumber)=>{ alert(prevnumber+"/4번/"+number); return prevnumber+'B'; }); return prevnumber+'C'; }); alert("두번째"+number); }; return ( <> <button onClick = {checkNumber}> {number} </button> </> ); }; export default Exptest; /* 이런식으로 안쓰는건 알지만 실행순서에 대해서 공부하다 이것저것 해보다가 이해가 안가서 질문드립니다. 질문1. 처음 버튼 클릭 시 number='A' -> number = 'AC' 이렇게 업데이트된다. 그리고 두번 째 실행 시 결과는 number = 'ACCB' 가 되는데 왜 처음엔 B를 추가하지 않나요? 질문2. alert 메세지가 뜨는 순서를 보면 처음 버튼 클릭 시 첫번째 A -> A/3번/A -> A/4번/A -> 두번째 A 그리고 두번 째 버튼 클릭 부터는 첫번째 AC -> 두번째 AC -> AC/3번/AC -> ACC/4번/AC 이렇게 메세지가 뜨는데 왜 순서가 달라지나요? */
prefetchQuery 서버컴포넌트에서 데이터를 한번 불러오면, 정상적으로 불러왔는지 확인할 수 있나요?? 서버 컴포넌트에서 prefetchQuery한 다음에 클라이언트컴포넌트에서 useQuery로 불러오게 되면(queryKey 동일) 이미 데이터가 저장 되어 있는거로 알고 있는데, console.log를 찍어보게 되면, undefined가 뜬 다음에 데이터가 호출 됩니다. prefetchQuery가 정상적으로 동작 안하는게 아닌가 싶습니다. export default function TestClient() { const { data } = useQuery({ queryKey: ['typeData'], queryFn: getTypeData, }); console.log(typeData); ... export default async function TestServer() { const queryClient = new QueryClient(); await queryClient.prefetchQuery({ queryKey: ['typeData'], queryFn: getTypeData }); const dehydratedState = dehydrate(queryClient); return ( <> <HydrationBoundary state={dehydratedState}> <TestClient /> </HydrationBoundary> </> ); }