묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문드립니다
(사진)
-
미해결Airflow 마스터 클래스
dags_external_task_sensor 오류 질문
선생님 안녕하세요좋은 강의 감사합니다. section 9 dags_external_task_sensor 에서, task b 가 fail로 뜨지 않고 계속 running 인 오류가 나는 데 이유를 모르겠습니다. dags_branch_python_operator는 아래와 같습니다. from airflow import DAG import pendulum from airflow.operators.python import PythonOperator from airflow.operators.python import BranchPythonOperator with DAG( dag_id='dags_branch_python_operator', start_date=pendulum.datetime(2023,4,1, tz='Asia/Seoul'), schedule='0 1 * * *', catchup=False ) as dag: def select_random(): import random item_lst = ['A','B','C'] selected_item = random.choice(item_lst) # 만약 실행해야 하는 task가 하나라면 task_id를 str 으로 하나만 넣는다. # 만약 실행해야 하는 task가 두개 이상이라면 list of str을 넣는다. if selected_item == 'A': return 'task_a' elif selected_item in ['B','C']: return ['task_b','task_c'] python_branch_task = BranchPythonOperator( task_id='python_branch_task', python_callable=select_random ) def common_func(**kwargs): print(kwargs['selected']) task_a = PythonOperator( task_id='task_a', python_callable=common_func, op_kwargs={'selected':'A'} ) task_b = PythonOperator( task_id='task_b', python_callable=common_func, op_kwargs={'selected':'B'} ) task_c = PythonOperator( task_id='task_c', python_callable=common_func, op_kwargs={'selected':'C'} ) python_branch_task >> [task_a, task_b, task_c]마지막으로 돌린 기록은 a를 선택하고, b,c 는 skipped 된 상태입니다. dags_external_task_sensor 는 아래와 같고요from airflow import DAG from airflow.sensors.external_task import ExternalTaskSensor import pendulum from datetime import timedelta from airflow.utils.state import State with DAG( dag_id='dags_external_task_sensor', start_date=pendulum.datetime(2023,4,1, tz='Asia/Seoul'), schedule='0 7 * * *', catchup=False ) as dag: external_task_sensor_a = ExternalTaskSensor( task_id='external_task_sensor_a', external_dag_id = 'dags_branch_python_operator', external_task_id='task_a', allowed_states=[State.SKIPPED], # task_a 가 skipped로 되면 sensor_a task는 success로 표시된다는 뜻 # allowed states 조건을 만족하지 못하면 계속 실행된다. 10초마다 execution_delta=timedelta(hours=6), poke_interval=10 # 10초 ) external_task_sensor_b = ExternalTaskSensor( task_id='external_task_sensor_b', external_dag_id = 'dags_branch_python_operator', external_task_id='task_b', failed_states=[State.SKIPPED], # task_b 가 skipped로 되면 sensor_b task는 failed로 표시된다는 뜻 execution_delta=timedelta(hours=6), poke_interval=10 ) external_task_sensor_c = ExternalTaskSensor( task_id='external_task_sensor_c', external_dag_id = 'dags_branch_python_operator', external_task_id='task_c', allowed_states=[State.SUCCESS], # task_c 가 success로 되면 sensor_c task는 success로 표시된다는 뜻 # success가 뜰때까지 꼐속 시도를 한다. execution_delta=timedelta(hours=6), poke_interval=10 ) 이대로라면 강의에서 나온것 처럼 , b만 fail로 뜨고 a,c는 계속 running 이어야 하는데요, 셋다 running 이 나옵니다. log를 보면 계속 b를 poke만 하고 있더라고요 혹시 무엇이 문제일까요..?ㅠ
-
해결됨스프링 핵심 원리 - 기본편
@Configuration과 바이트코드 조작의 마법에 대해서 궁금한점이 있습니다.
현재 스프링 심화편을 다듣고나서 기본편 재복습을 하고있는데 @Test void configurationDeep() { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); //AppConfig도 스프링 빈으로 등록된다. AppConfig bean = ac.getBean(AppConfig.class); System.out.println("bean = " + bean.getClass()); //출력: bean = class hello.core.AppConfig$$EnhancerBySpringCGLIB$$bd479d70 }CGLIB객체로 호출이 된다고하셨는데 그러면 스프링 빈으로 등록되는 객체들은 무조곤 프록시 객체로 생성된다는 말씀이실까요?
-
미해결스프링 핵심 원리 - 기본편
BeanDefinition에 대해서 궁금한점이 있습니다.
AnnotationConfigApplicationContext의 경우 생성자로 들어온 파라미터의 값을AnnotatedBeanDefinitionReader로 읽은뒤 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);AnnotationConfigApplicationContext은BeanDefinition에 대한 구현체를 주입받아서 사용한다라고 이해하면될까요?
-
해결됨CloudNet@ - Amazon EKS 기본 강의
섹션 21 EKS cluster 설치시 오류
안녕하세요 강의 잘 수강하고 있습니다.클러스터 설치중 아래와 같은 오류 메세지가 나옵니다.Error: loading config file "-": error converting YAML to JSON: yaml: line 24: mapping values are not allowed in this context 몇 번을 지웠다가 설치해봐도 이런 메세지가 생기네요환경변수도 충분히 집어 넣어서 카펜더 설치 정상적으로 완료했어도요...어떻게하면 해결할 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
로드맵 선택에 있어서 질문드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]김영한선생님 로드맵이 jpa로드맵이랑 스프링로드맵이 있는걸로 알고있는데 두개의 로드맵을 다 들으면 좋겠지만 빠르게 취준을 하고싶은 욕심 때문에 두개의 로드맵 중 하나만 듣고 취업준비를 하고싶습니다. 어떤 로드맵이 더 취준용으로 좋을지 추천 받고 싶습니다.
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
늦었지만 멘토링 한 자리 추가 가능한가요
라이브 토요일->일요일 변경사실을 모르고 오늘 업로드된 강의를 들으려고 왔더니 월요일 업로드로 바뀌었네요.평일에는 한번에 3시간 이상 내기가 어려워서, 멘토링 비용 지출하더라도 주말에 깔끔하게 강의를 다 듣고 싶은데 지금이라도 멘토링 한 자리 받아갈 수 있을까요..?
-
해결됨업무 자동화 첫걸음: Python으로 이메일 대량 전송하기와 크롤링 프로젝트 완성하기
샘플 코드가 다른거 같아요.
안녕하세요, 수강생 여러분학습 관련 내용을 질문해주세요! 영상에나온 Gmail Api python 샘플 코드와 현재 구글에서 제공하는 샘플 코드가 다른거같아요.영상에서 나온 코드를 직접 타이핑 하면될까요?참고로 구글에서 제공하는 샘플코드는 아래와 같아요.import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError # If modifying these scopes, delete the file token.json. SCOPES = ["https://www.googleapis.com/auth/gmail.readonly"] def main(): """Shows basic usage of the Gmail API. Lists the user's Gmail labels. """ creds = None # The file token.json stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time. if os.path.exists("token.json"): creds = Credentials.from_authorized_user_file("token.json", SCOPES) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( "credentials.json", SCOPES ) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open("token.json", "w") as token: token.write(creds.to_json()) 개인적으로 스크래핑/크롤링하는 사이트에 대한 질문에 대해서는 답변을 드리지 않아요!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
리액트 404 에러가 떠요 ㅜㅜ
기존 노트북에서는 잘 되었다가 다른 노트북에서 깃허브에서 pull해서 설정잡고 실행시키니 404에러가 뜹니다.yarn dev시 http://localhost:3000로 접속하면 잘 접속이 되지만 http://localhost:3000/section0909-04-boards이렇게 접속하면 404에러가 뜹니다.실행은 cs class로 이동 후 했습니다~
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertThat을 사용할때 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]처음 강사님께서 save 메서드에서는 @Test public void save(){ Member member = new Member(); member.setName("Spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); Assertions.assertThat(member).isEqualTo(result); }처럼 assertThat(member) 를 넣고 그 다음 isEqualTo(result)를 넣어 사용하셨는데,이후에 findByName 에서는@Test public void findByName(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring2").get(); Assertions.assertThat(result).isEqualTo(member1); }이처럼 result가 먼저 나오고 그 다음 member를 넣어 사용하십니다.혹시 무슨 차이일까요?
-
미해결따라하며 배우는 HTML, CSS
가상 클래스(의사 클래스)의 정의가 이해가 되지 않습니다.
수업을 듣는 중에 가상 클래스의 정의가 이해가 가지 않아서 질문을 드려요수업에서는 가상 클래스의 정의를 '별도의 클래스를 정의하지 않아도 지정한 것처럼' 이라는 문구가 적혀있는데,가상 클래스의 사용할 때는 '클래스의 이름: 가상 클래스의 이름' 으로 작성을 하는 데,이러면 클래스를 정의한 상태인 것 같아서 이해가 되지 않습니다.혹시 좀 더 풀어서 설명해 주시면 안될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
아이디 중복오류
안녕하세요 , 김영한 강사님! 혹시 , 아이디나 닉네임 혹은 비밀번호와 같은 유일성이 보장되어야 하는 필드는 중복 오류를 검사할때 DB 연동까지 필요한 검증인것이죠? 혹시 이런 검증은 DB 강의 부분에서 따로 강의에서 나오는 부분이 있는지 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타입에러-bindingResult
안녕하세요, 아래에 다른분께서 질문하신 내용의 답변을 토대로 다시 궁금증이 생겨 여쭙니다. 타입에러가 아닌 상태에서 바인딩이 된 상태에서 필드오류가 발생한다면 bindingResult 의 fieldError에 오류내용이 담기는것은 이해했습니다.만약 , 타입에러가 난다면 바인딩 이 안되는데, 이부분도validation 과 마찬가지로 스프링이 필드오류보다 먼저 binding result 에 오류값이 담기나요?
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
라이브 강의 관련 질문 드리고싶습니다.
본 연재형 강의를 신청하면 라이브 강의도 같이 볼 수 있는 줄 알고 신청 기간을 놓쳤습니다.혹시 지금이라도 라이브 강의 신청이 가능한지, 또 라이브 강의 신청 비용은 어느정도 되는지 궁금합니다.
-
해결됨빠르게 git - 핵심만 골라 배우는 Git/Github
diff & revert
4번이 앞으로 와야 된다는건가요?왜 갑자기 명령어가 달라지는지 궁금합니다.아래에 있는 HEAD도 마찬가지로git diff HEAD^ HEAD 이건가요?
-
미해결나도 만들어본다 AI 앱 (tensorflow2.0 + android)
실제적용차시의 안드로이드 스튜디오의 파일 구조에서 문의드립니다.
실제 적용 방법 차시에서 질문드립니다.(1분 28초 부분)asset 폴더 main 안이 아닌 다른곳에 생성되어 있던데, 그걸 main 폴더로 옮기면 되나요?안드로이드 스튜디오에 열어놓으신 페이지가 3개 있던데, 따로 설정해야 하는게 있는건지... 영상이 중간에 건너뛴 느낌이라... 이 부분 부터 못따라 가겠어요. ㅠ/Gradle Scripts/build.gradle(Module:app) 저는 이 폴더가 없어요. 뭘 잘못한걸까요?ㅠ좀더 자세한 설명 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
섹션 4. API 개발 고급 - 컬렉션 조회 최적화 - 주문조회 V3
섹션 4. API 개발 고급 - 컬렉션 조회 최적화 - 주문조회 V3 수강 중에 질문 있어 글 남깁니다. 현재 스프링 부트 3.0.11 자바 17버전인데 강의에서는 findAllWithitem()에서 select에 distinct를 붙이지 않을 경우 총 네개의 Order가 생겼습니다. 패치 조인으로 인해 두개씩 생성되었기 때문에.하지만 저의 경우에는 distinct를 붙이지 않아도 두개의 Order가 생겼습니다. 혹시 스프링 버전 업에 따른 변경사항 일까요? 아니면 제가 코드를 잘못 친걸까요? 사진 첨부 하겠습니다.@GetMapping("/api/v3/orders") public List<OrderDto> ordersV3() { List<Order> orders = orderRepository.findAllWithItem(); for (Order order : orders) { System.out.println("order ref=" + order + " id="+order.getId()); } List<OrderDto> result = orders.stream() .map(o -> new OrderDto(o)) .collect(Collectors.toList()); return result; }public List<Order> findAllWithItem() { return em.createQuery( "select o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi" + " join fetch oi.item i", Order.class ).getResultList(); }[ { "orderId": 1, "name": "userA", "orderDate": "2024-01-07T04:02:33.369413", "orderStatus": "ORDER", "address": { "city": "서울", "street": "1", "zipcode": "1111" }, "orderItems": [ { "itemName": "JPA1 BOOK", "orderPrice": 10000, "count": 1 }, { "itemName": "JPA2 BOOK", "orderPrice": 20000, "count": 2 } ] }, { "orderId": 2, "name": "userB", "orderDate": "2024-01-07T04:02:33.427993", "orderStatus": "ORDER", "address": { "city": "대구", "street": "2", "zipcode": "2222" }, "orderItems": [ { "itemName": "SPRING1 BOOK", "orderPrice": 30000, "count": 3 }, { "itemName": "SPRING2 BOOK", "orderPrice": 40000, "count": 4 } ] } ]
-
해결됨프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의 자료 요청
#안녕하세요.##강의 자료 요청 드립니다. nasdarsky@gmail.com 입니다. 미리 감사드립니다.
-
미해결스프링 핵심 원리 - 기본편
결론적으로 DI를 관리하는 것은 AppConfig에서 하나요?
@Component 애노테이션을 사용하여 스프링 빈에 자동으로 클래스를 등록하고, 각 스프링 빈 간의 의존관계를 주입하는 방법에 대해 이해했습니다.의존관계 주입의 목적이, SOLID원칙에서 특히 DIP원칙을 위반하지 않기 위함이라고 생각됩니다. 추상화에 의존하고, 클라이언트 코드의 변경을 줄이기 위함입니다.그렇다면 실제 런타임에서 인스턴스(구현체)간의 의존 관계를 주입해주는 로직은 AppConfig에서 진행되는 건가요?@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new FixDiscountPolicy(); } }위 코드는 기존에 사용하던 AppConfig클래스입니다. 여기서는 @Bean을 사용하여 수동으로 빈 등록을 해주므로 충돌이 존재할 것이라 무언가 수정이 필요하다고 생각되고 @Bean만 제거한 코드를 사용하면 되나요?생성자 주입을 통해 DI를 하는 것은 이해가 되었으나, AppConfig처럼 하나의 파일에서 런타임에 사용 될 의존관계를 정하는 코드가 궁금합니다
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
프로토콜에 대해서 질문이 있습니다.
프로토콜이란 것이 참 추상적이어서 감이 잘 잡히지 않는데요, HTTP, FTP, SMTP, POP3--------------------------TCP, UDP TCP와 UDP의 차이는 어떻게 구현하는 것이며,HTTP, FTP, SMTP, POP3 프로토콜과 TCP, UDP의 관계에서 비롯된 차이가 궁금합니다.예를 들어, HTTP 프로토콜을 TCP로 구성한다고 했을 때, 또는 HTTP 프로토콜을 UDP로 구성한다고 했을 때 TCP 프로그래밍은 3 Hand - Shake 구조만 갖추면 TCP 프로토콜이라 할 수 있을지요? 또는 UDP 구조만 갖추면 UDP 프로토콜이라고 할 수 있을지요? HTTP, FTP, SMTP, POP3 프로토콜의 차이는 Client / Server 소켓 프로그래밍으로 프로그래밍을 달리 구성하는것에서 차이가 오는지요? 또 그것을 구현 중에 TCP 구조 UDP 구조를 택하는 것에서 차이가 발생하는지요? TCP/IP프로토콜이라는 말은 IP프로토콜 기반 TCP 프로토콜을 말하는 것이라 알고 있는데, HTTP/UDP 또는 HTTP/TCP 이렇게도 표기하는지요? 고맙습니다.