OAuth 2.0 Client Fundamentals 섹터에서 ClientRegistrationRepository 이해 및 활용 강의와 자동설정에 의한 초기화 과정 강의 사이에 AuthenticationEntryPoint 강의가 있어야 할 것 같습니다. 강의 자료에서 순서는 그러한데 강의는 없는 것 같아 문의드립니다.
안녕하세요? 항상 재미있는 수업 감사드리며 수업을 너무 잘 듣고 있는 와중 오타로 의심되는 단어가 있어 문의를 드립니다 섹션10 강의에 사용되는 PDF 파일인 9.컬렉션 프레임워크- Map 파일 5페이지 키와 값 목록 조회 부분에 Entry 는 키-값의 쌍으로 이루어진 간단한 객체이다. Entiry 는 Map 내부에서 키와 값을 함께 묶어서 저장할 때 사용한다. 에서 초록색으로 칠이 된 단어가 오타라고 생각 되어 문의 드립니다 감사합니다.
제공 해주신 코드에서 ITEM에는 왜 @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); 이거에 해당하는 코드가 없을까요? @OneToMany(mappedBy = "item", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); 이런 코드가 있어야 1대 다 관계에서 매핑과 주인관계를 결정해줄 수 있지 않나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @transactional을 repository가 아닌 service에 다는 이유가 궁금합니다. transaction 단위가 단순히 db와 왔다갔다하는 것이 아니라, 하나의 비지니스 로직을 의미하기 때문일까요(transaction의 개념을 잘 몰라서 헷갈리는 듯 합니다.)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의에서 컬렉션을 페치 조인했을때 컬렉션의 요소 만큼 결과 리스트가 증가한다 하였습니다. 하지만 아래와 같이 코드를 실행했는데 결과는 한번만 출력이 됩니다. 찾아보니 JPA에서 내부적으로 중복을 없애준다는데 맞는 이야기 인가요?? package jpashop.jpql; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; import java.util.List; public class Main { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); //트랜잭션 생성 EntityTransaction tx = em.getTransaction(); //트랜잭션 시작 tx.begin(); try { Team teamA=new Team(); teamA.setName("팀A"); em.persist(teamA); Team teamB=new Team(); teamB.setName("팀B"); em.persist(teamB); Member member1=new Member(); member1.setUsername("member1"); member1.setAge(10); member1.setTeam(teamA); em.persist(member1); Member member2=new Member(); member2.setUsername("member2"); member2.setTeam(teamA); member2.setAge(15); em.persist(member2); Member member3=new Member(); member3.setUsername("member3"); member3.setTeam(teamB); member3.setAge(20); em.persist(member3); em.flush(); em.clear(); String query="select t From Team t join fetch t.members where t.name='팀A'"; List<Team> result = em.createQuery(query, Team.class) .getResultList(); for (Team t:result){ System.out.println("member= " +t.getName()+"|members="+t.getMembers().size()); for (Member m:t.getMembers()){ System.out.println("- member ="+m); } } tx.commit(); }catch (Exception e){ e.printStackTrace(); tx.rollback(); }finally { em.close(); } emf.close(); } } String query= "select t From Team t join fetch t.members" ; String query= "select t From Team t" ; 두 결과 사이즈를 찍어도 동일하게 2가 나옵니다.
안녕하세요 , 수강 잘 들었습니다 ㅎㅎ 강의 커리큘럼을 다 수강 완료 해서 Azure function을 활용한 SaaS 방식의 서비스를 쫌더 깊게 이해하는 시간을 가졌구요 제가 지금 기존 강의 내용에 살을 더 붙여 langChain 기반으로 Rag를 적용 시켜서 개발을 완료한 상태 입니다. 근데 여기서 문제가 되는 부분이 로컬에서는 기능을 잘 수행을 하는데 agent 함수를 배포를 하게 되면 에러가 뜨는지 , 기능을 수행하지 못합니다. 서비스 버스에 메시징은 잘 쌓이는데 agent function 에서 그 메시징 리퀘스트도 받질 못하는거 보니 , 런 타임에서 에러가 난거 같은데 해당 함수 Application Insights 대쉬 보드에서 확인하려니 뭐가 뭔지 알수가 없더라구요 ... 서버 로그를 확인 하고 싶은데 혹시 어떤 방법으로 이런 트러블을 해결할수 있을까요 ...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 스프링컨테이너는 그러면 단순히 브라우저에서 받은 요청을 컨트롤러에 매핑시켜주어 스프링컨테이너에 등록되어 있는 빈? 이라는 것과 매칭 시켜 존재한다면 viewResolver에 연결시켜 화면을 띄워주고 없다면 오류를 발생시켜 주는 역할인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. File로 문자 파일 읽기를 복습하다가 I/o스트림 의 '스트림'의 뜻를 몰라서 질문을 드립니다. 9:30 초 부분에서 "I/O 스트림이 아니라 람다와 스트림에서 사용하는 스트림이다"라고 하였는데 , 람다와 스트림에서 사용하는 스트림은 아직 배우지를 않아서 모른다 치더라도, I/O 스트림은 저의 생각으로는 여기까지 공부했다면 알아야 하는것 아닌가 라는 생각에 갑자기 멍해지더라고요. 혹시 I/O스트림의 정확한 정의와 뜻을 알켜주실수있으신가요? 아니면 어느 부분을 복습 해야지 I/O스트림에 대해서 정확히 알 수 있을까요? 답변 부탁드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 버그인지 궁금합니다..영상보고 차근차근 따라하다가 해결아닌 해결을 했는데 이게 정상적인건지 궁금합니다. 처음에 첫번째 사진과 같은 스프링부트 프로젝트를 설정하고 build.gradle을 오픈하니 2,3번째 사진과 같은 에러가 발생했습니다. 해결전 설정은 아래와 같았습니다. 이전에 이걸로 질문글 올렸는데 java 버전을 17버전으로 설치해보라고 하셔서 jdk 17버전으로 설치했습니다. 설치후 Project Structure에서 sdk를 변경해주었습니다. 그리고 build.gradle 파일에서 다음과 같이 전 후 languageVersion = JavaLanguageVersion.of(21) 을 languageVersion = JavaLanguageVersion.of(17) 로 변경까지 해준 후에야 gradle 파일을 리로드하니까 되더라구요. 그런데 여기서 이제 궁금한것은 다시 설정을 이렇게 바꾼후에 build.gradle 파일을 리로드해도 되더라구요? 심지어 아래 사진처럼 Setting -> Build -> BuildTools -> Gradle에 있는 Gradle JVM이 지금 JAVA_HOME으로 되어있는데 jdk 22버전으로 되어있습니다. 또한 JAVA_HOME 경로또한 아래와 같습니다. 보시다시피 jdk 22버전 경로가 저장되어있죠. 그러니까 전부 jdk 22버전으로 되어있는데 jdk 17버전 설치 후 build.gradle에 있는 languageVersion = JavaLanguageVersion.of(17) 이것만 17버전으로 바뀌었을뿐인데 정상적으로 로드가 되는건가요? JAVA_HOME같은 경로도 17버전 폴더로 모두 변경해야 동작할줄 알았는데요..
강의 : 스프링 데이터 JPA와 DB 설정, 동작확인 7분 20초 환경설정시에 //JUnit4 추가 testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } 를 추가하라고 하셔서 추가했는데, 이 강의에서는 Junit5로 설정하라고 하셔서요.. 그럼 import할때 오류가 나는데 어떻게 해야할까요?
섹션3 브루트포스 알고리즘 1342 문제 풀이 강의에서 풀이1 질문이 있습니다. for i in range(ord('a'), ord('z') + 1) : ans //= fact(S.count(chr(i))) 이렇게 fact로 나눠주라고 하셨는데, 왜 나눠주는 지 이해가 잘 안됩니다. 같은 문자가 있을 때 나눠주는 건 알고있습니다. 근데 그건 경우의 수를 구할 때고, 이건 인접한 문자가 같은 지 아닌 지를 구하는 건데 왜 나눠줘야 하나요?
안녕하세요. Docker Swarm 기반 마이크로서비스 아키텍처(MSA)를 구성 중입니다. 처음에는 Traefik 을 이용해 모든 내부 마이크로서비스 를 거치도록 (즉, serviceA가 serviceB를 호출할 때도 Traefik을 통해서만 통신) 운영하려고 했습니다. 그런데 그렇게 할 경우 아래와 같은 문제가 예상됩니다: 성능/오버헤드 모든 내부 트래픽이 Traefik을 중간에 두고 오가므로, 네트워크 홉이 추가됩니다. Keep-Alive 연결이 많아지고, Traefik이 병목이 될 가능성이 있음. 복잡한 설정 내부 수많은 서비스가 각각 Traefik의 라우터/서비스 규칙을 가져야 하므로 라벨 설정이 매우 복잡해질 수 있음. Path/Host 기반 라우팅 규칙도 내부 API 전부에 대해 관리해야 하므로 관리 부담 증가. 인증/인가가 불필요한 내부 통신 외부 노출이 전혀 필요 없는 내부 서비스 등까지도 Traefik을 거치는 것은 과도할 수 있음. 이러한 이유로, Traefik이 모든 트래픽을 일괄 처리 하는 대신, 내부 통신은 Docker Swarm 로드밸런싱 으로 처리하고, 외부 트래픽(HTTPS/도메인/인증서)은 Traefik 에 맡기는 구조로 변경하려고 합니다. 구체적으로는, Docker Swarm service 간에는 “user-service:8001” 식으로 연결 → Swarm 라운드 로빈 Keep-Alive나 오토스케일 시 컨테이너가 늘어나면 Swarm이 자동 분산 Traefik 오직 외부 접근이 필요한 Gateway나 public API에 대해서만 라벨(traefik.enable=true) 적용 HTTPS 인증서, Path/Host 라우팅, 미들웨어(인증/인가, IP 제한)를 외부 경계에서만 적용 내부적으로는 Swarm에 맡기고, Traefik은 외부→Gateway(혹은 외부→공개 서비스)만 처리 네트워크 분리 “public-net”: Traefik, Gateway 등 외부 노출이 필요한 서비스 “backend-net”: user-service 등 내부용 서비스만 존재, 외부와 직접 연결되지 않음 궁금한 점 위와 같은 구조(외부는 Traefik, 내부는 Swarm + 네트워크 분리) 가 흔히 권장되는 방식인가요? 내부 서비스까지 Traefik을 거치는 구조가 과연 득보다 실이 많을지 , 실제 운영 사례가 궁금합니다. 보안 측면 에서 “Traefik + Swarm ” 방식을 쓸 때 주의해야 할 점이나, 더 권장되는 패턴이 있으면 알려주세요! 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 왜 새로운 객체(MemoryMemberRepository memberRepository = new MemoryMemberRepository();)를 써서 clear을 하죠?? 멤버서비스를 통해 join한 멤버리포지토리랑 새로만든 멤버리포지토리가 달라서 clear안되는 거 아닌가요?? 결과적으로 클리어 되기는 했어요
https://drive.google.com/file/d/1xCfH-VjJWp4I252km26K5kFyBZNY3ZaS/view?usp=sharing junit4는 assertThat을 지원하지 않는다고 하여 junit5로 하고 실행하였더니 h2데이터베이스 연결문제가 발생하는 것 같습니다. h2는 정상적으로 설치하여 잘 작동됩니다. 어디가 문제일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 회원-주문 관계에서 하나의 회원은 여러 주문을 할수있어서 1:N이라 하셨는데 서버 관점에서 보면 여러 회원이 존재하기 때문에 N:M으로 설계해야 하지 않을까요?? 고객 한명당 트랜잭션 관점으로 설계를 해야하는건지 기준이 따로 있는지 궁금합니다..