HandlerMethodArgumentResolver에서 supportsParameter에 지원하는것이 기본 스프링이 지원하는 Parameter말고도 ex)이런식으로 적으면 supportsParameter부분에 Member에 대한 객체가 등록이 된다는 말씀이신가요? 그리고 해당 부분을 지원하면 resolveArgument를 통해서 객체를 생성한다라고 이해하면될까요? @GetMapping("/members") public String answer(Member meber){ return "hello"; }
public class BeanDefinitionTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); void springContainer() { // AppConfig appConfig = new AppConfig(); ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 강의중에 class레벨에서 자동완성으로 코드작성할때는 변수 삽입 리팩토링은 현재 콘텍스트에서 지원하시 않습니다라고 나와있는데 메소드안에서 선언될때는 바로 되더라구요 차이가 뭔지 알수있을까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 위에는 로그부분이고 아래는 JpaMain 코드입니다! 엔티티는 만들어지나 insert문이 안날라갑니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 제가 실습해보다가 궁금한 부분이 생겨서 질문드립니다. public class JpaMain { public static void main(String[] args){ EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); // persistence.xml에 있는 <persistence-unit name="hello">애서 name이 hello니깐 createEntityManagerFactory("hello")에 hello 넣어줘야함 EntityManager em = emf.createEntityManager(); // 밑의 close() 이전에 할 거 다하고 close()로 entitymanager랑 entityManagerFactory 닫음 EntityTransaction tx = em.getTransaction(); try{ tx.begin(); Team team = new Team(); team.setName("teamA"); em.persist(team); Member member = new Member(); member.setUsername("member1"); member.setTeam(team); em.persist(member); Member member2 = new Member(); member2.setUsername("member2"); em.persist(member2); // em.flush(); em.clear(); Member findmemeber = em.find(Member.class,member.getId()); List<Member> findmembers = findmemeber.getTeam().getMembers(); System.out.println(team); System.out.println(findmemeber.getTeam()); tx.commit(); } // transection을 열고 코드를 수행하고 transaction을 닫음 catch (Exception e){ System.out.println(e); tx.rollback(); } // 에러나면 transaction 롤백 finally{ em.close(); } // tx.begin() ~ tx.commmit()은 transaction단위, JPA는 데이터베이스에 대한 작업시 트랜잭션 작업단위로 해야한다. emf.close(); } } 이렇게 코드를 쳐봤는데 System.out.println(team)과 System.out.println(findmember.getTeam()) 이 jpabook.jpashop.domain.Team @2b34e38c jpabook.jpashop.domain.Team @5633ed82 으로 다른 인스턴스가 출력이 되는 걸 확인했습니다. 제 생각에는 member.setTeam(team)을 했기 때문에 같은 인스턴스가 나올 것이라고 생각했는데 왜 다른 인스턴스가 나오게 되는 것인지 궁금합니다.
안녕하세요 3강까지 수강 잘하고 있는 김동현 학생입니다. 한가지 질문이 있습니다. cpp파일만 수정했을 경우 언리얼에서 (Ctrl+Alt+F11)단축키로 Live Coding으로 컴파일 하면 된다고 하셨었는데, 이렇게 했을 경우 수정된 부분에 대한 LogTemp가 보여지지 않고 아예 에디터를 종료후, 비주얼스튜디오에서 컴파일 해야 수정된 부분까지 출력되는데 어떻게 해야 문제를 해결할 수 있을까요?
안녕하세요! 강의 중간에 generateMetadata 를 사용하는 부분에서 왜 서버 api로 분리를 했는지에 대해 의문이 생겨서 질문드립니다. generateMetadata 에 사용할 getSinglePost 함수는 원래 아래와 같은 코드로 작성되어있었습니다. 여기서 generateMetadata 를 구현하실때, 기존의 getSinglePost 를 사용하시지 않고, getSinglePostServer 를 사용하셨는데 혹시 왜 이렇게 서버 API로 분리를 하셨는지 알 수 있을 까요? 처음에는 generateMetadata 는 서버 환경에서 진행이 되기 때문에 서버에서 돌아가는 api를 작성해야 한다 그렇기 때문에 credentials: 'include 를 사용하는 부분이 있다면 이는 클라이언트 환경에서만 적용이 되는 것이므로 headers: { Cookie: cookies().toString() } 를 사용해야 한다 라고 저는 이해를 했었기 때문에 getSinglePost 대신 getSinglePostServer 로 분리를 하신거라고 생각했습니다. 근데 기존의 getSinglePost 는 애초에 인증 여부가 필요한 부분이 아니어서 credentials: 'include 는 없었는데 왜 강의에서 getSinglePostServer 로 따로 분리하시고 headers: { Cookie: cookies().toString() } 를 추가로 적용하셨는지 궁금합니다!
안녕하세요. 질문드립니다!Port Restricted Cone 방식에서 로컬의 다른 포트 번호가 원격지의 같은 포트로는 통신이 불가능한가요? Local IP / Local Port / exPort / remote IP / remote Port 192.168.0.10 / 3000 / 8080 / 3.3.3.3 / 5000 192.168.0.10 / 3001 / 8080 / 3.3.3.3 / 5000 exPort, remote IP, remote Port만을 구분자로 사용하는 것 같은데, 이러한 통신이 불가능하다면 공유기에서 통신 방식을 변경할 수 있는건가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 강의에서(12:00부분) 참조값만 복사하고 인스턴스를 복사하는 것이 아니라는데, 결국 같은 인스턴스를 접근하게 되잖아요 그러면 위 뜻이 인스턴스가 동일해지는 것은 맞지만, 참조값을 복사하는 것이지 인스턴스를 복사하는 것이 아니라서 잘못 인지하지 말라는 뜻인가요? 아니면 인스턴스가 달라서 참조값만 복사한 것이기에 인스턴스를 복사하는 것이 아니라는 뜻인가요? Data dataA = new Data(); // 1.Data인스턴스 생성후 dataA에 참조값 넣음 dataA.value = 10; Data dataB = dataA; // 2.dataA 참조값을 복사하고 대입함 System.out.println("dataA.value = " + dataA.value); // 10 System.out.println("dataB.value = " + dataB.value); // 10 // 3.dataB는 dataA의 인스턴스에 동일하게 접근하게됨
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] HTTP 특징 중 하나인 무상태 설계는 클라이언트가 필요한 모든 요청을 서버에게 보내서 서버는 응답만 함으로써 클라이언트 입장에선 어떤 서버가 와도 상관 없으니 서버의 무한한 확장이 가능하다고 이해하였습니다. 그런데 "서버"를 "상태 유지" 혹은 "무상태"로 설계하는데 어떻게 클라이언트가 보내는 데이터에서 차이가 나는 건지 궁금합니다. 서버의 설계가 클라이언트에 영향을 미치는 건가요?
function solution(arr) { let answer = Array.from({ length: arr.length }, () => 0); let rank = 1, max = Number.MAX_SAFE_INTEGER; for (let i = 1; i <= arr.length; i++) { let idx = arr.findIndex((val) => val === Math.max(...arr)); if (arr[idx] === max) { // 동점자이면 answer[idx] = rank; } else { answer[idx] = i; rank = i; } max = arr[idx]; arr[idx] = -1; } return answer; } let arr = [87, 89, 92, 100, 76]; let arr2 = [20, 20, 20, 10, 50, 15]; console.log(solution(arr)); 저 혼자 풀었을 때 이중 for문이 아닌 위와 같이 풀었는데 혹시 이렇게 풀어도 되는걸까요?
서버 컴포넌트가 프론트 서버에서 미리 렌더링되는 것으로 알고 있었습니다. 이것이 맞을까요?? 클라이언트 컴포넌트랑 서버 컴포넌트의 렌더링 방식을 찾아봤음에도 여전히 헷갈리는데 시간적 여유가 되신다면 쉽게 알려주실 수 있을까요?? 클라이언트 컴포넌트 사이에 서버 컴포넌트를 넣으면 렌더링 동작이 어떻게 수행되는지 궁금합니다. 강좌에서는 PostArticle이라는 클라이언트 컴포넌트의 자식으로 서버컴포넌트를 넣는데, 공식문서에서는 클라이언트 컴포넌트가 DOM Tree의 끝에 오도록 하는 것을 권장하는 것으로 알고 있었는데 제가 잘못 알고 있던 것이었을까요??
public class UserData { //public int Id { get; set; } [Key] public string UserId { get; set; } public string? Token { get; set; } [MaxLength(32)] public string? UserName { get; set; } public DateTime? CreateTime { get; set; } public BanData BanData { get; set; } public List<MailData> MailDatas { get; set; } public List<GetMailData> GetMailDatas { get; set; } } public class BanData { public int Id { get; set; } public DateTime Start { get; set; } public DateTime End { get; set; } public int State { get; set; } public string DescKey { get; set; } // Foreign Key ////1:1 방향일 경우 한쪽이 아이디까지 물고 있어야함 public string UserDataUserId { get; set; } [JsonIgnore] public UserData UserData { get; set; } } public class MailData { /// <summary> 우편물 구분 값 </summary> public int Id { get; set; } /// <summary> 발송일 </summary> public DateTime SendDate { get; set; } /// <summary> 우편물 받아야하는 기간 </summary> public DateTime EndDate { get; set; } /// <summary> 우편 내용물 </summary> public string Body { get; set; } /// <summary> 보낸이 ex)GM, DEV 등등 </summary> public string Sender { get; set; } // Foreign Key public string UserDataUserId { get; set; } [JsonIgnore] public UserData UserData { get; set; } } 이렇게 코드가 있을 경우 MailData -> UserData로 연동은 잘 됩니다 다만 DB 테이블에 MailData가 생성되는데 제가 원하는 것은 UserData 테이블에 MailDatas 가 생성되는 것입니다 다만 위 코드처럼 처리를 할 경우 MailData 테이블에 모든 유저들의 메일 정보가 저장되고 UserData에서 긁어오는 것으로 파악되는데 맞을까여? 만약 이렇게하여 모든유저들의 정보를 처리하는게 더 좋은 방식인지 UserData 테이블에 JSON으로 메일을 처리하는것이 좋은 방식인지 궁금합니다
VirtualBox 6.1.18 Vagrant 2.4.0 으로 실행하였습니다. virtual Box는 처음 설치한거라 기존 환경과는 충돌이 없을거라 생각합니다. 치 중에 아래와 같이 에러가 나타났습니다 w2-k8s-1.25.0: Running provisioner: shell... w2-k8s-1.25.0: Running: C:/Users/zzqq5/AppData/Local/Temp/vagrant-shell20231229-12208-b6gz2f.sh w2-k8s-1.25.0: [preflight] Running pre-flight checks w2-k8s-1.25.0: [preflight] Reading configuration from the cluster... w2-k8s-1.25.0: [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' w2-k8s-1.25.0: error execution phase preflight: unable to fetch the kubeadm-config ConfigMap: failed to get config map: Get "https://192.168.1.10:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config?timeout=10s": net/http: request canceled (Client.Timeout exceeded while awaiting headers) w2-k8s-1.25.0: To see the stack trace of this error execute with --v=5 or higher The SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed. The output for this command should be in the log above. Please read the output to determine what went wrong. worker1은 잘되었는데 그 뒤부터 안된다는 게 잘 이해되지 않습니다... worker2를 설정하다가 멈춘것으로 보입니다. 따라서 worker3도 생성되지 않았구요. Master node에서 kubectl get nodes 명령어를 입력하면 w1밖에 나타나지 않습니다. 확인해보니 w2에 k8s_pkg_ cfg.sh 는 잘 실행되었는데 work_ nodes.sh 에 정의된 kubeadm join에서 timeout이 발생한 것으로 보입니다. Master모드에서 작업을 시도하는데 멈춰있네요... 질문을 구체적으로 하려고 이것저것 찾다보니 해결되어 자문자답하게 되었습니다 결론적으로는 Master 노드를 재부팅하여 해결하였습니다. Master노드에서 netstat -tuplen | grep 6443으로 kube-apiserver 동작하는 것까지 확인한 뒤에 2번노드에서 명령어를 통해 kubeadm join 성공하였습니다. 이후 Master노드와 w1, w2를 건너뛰도록 Vagrantfile을 수정하여 vagrant up을 수행하여 정상적으로 w3을 확보하였습니다.