학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 영한님 안녕하세요. 테스트 코드 작성하실때 메서드명을 한글로 기재하시던데 실제 실무에서 테스트 코드 작성하실때도 한글로 작성하셨었나요?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
이렇게 3단분리를 할때 처음부터 코드를 작성할때 이렇게 3가지 역할을 분리해서 각각 구현해야지! 라고 다 미리 설정해두고 코드를 짜는건가요 아니면 controller 에 일단 다 구현해놓고 그다음 분리해서 구현하는건가요?? 전자면 미리 생각하게 많아 뭔가 복잡해보여서요 ㅜ
프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
안녕하세요. 강의에서 알려주신 방법대로 아나콘다를 설치하였는데, 인스톨 하는 과정에서 자꾸 캡쳐 사진처럼 에러가 뜹니다...ㅠㅠ '무시' 버튼을 눌러 진행을 하였더니 완료는 되었는데... 주피터 노트북도 그렇고 전체적으로 제대로 깔리지 않은 것 같아서요ㅠ 재설치를 진행하였지만, 역시나 캡쳐 사진처럼 계속 저 페이지가 뜹니다... 제 노트북에 파이썬과 vs코드가 이미 깔려 있어서 그런 걸까요? 주피터 노트북만 따로 받아야 할런지요... 빨리 해결이 되어, 강의를 진행할 수 있으면 좋겠습니다. 읽어주셔서 감사합니다!
안녕하세요. Task group 생성 시, task decorator를 활용한 방법과 그렇지 않은 방법 이렇게 두 가지가 있다고 하셨는데, task decorator를 활용한 방법의 경우, docstring 에 작성한 내용이 UI에서 보여지고, task decorator를 활용하지 않은 방법의 경우, tooltip 인자에 입력된 내용이 UI에서 보여지는 것으로 알고 있습니다. 그런데 Airflow 3.0.x 버전에서 실제로 실습을 진행해보니 docstring 및 tooltip 인자에 작성한 내용이 아래와 같이 UI 화면에서 보이지 않는 것으로 확인됩니다 ㅠ Airflow 3.0.x 버전 공식 문서를 읽어봐도 강사님 말씀과 동일하게 docstring 및 tooltip을 사용하면 UI 화면에서 보여질 거라고 적혀있는데... 뭐가 문제일까요..? 코드는 강사님이 작성하신 것과 동일한데, 혹시 몰라 제가 작성한 코드도 같이 첨부 드립니다. import pendulum # Airflow 3.0 버전부터 아래 경로에서 import from airflow.sdk import DAG, task, task_group, TaskGroup from airflow.providers.standard.operators.python import PythonOperator # Airflow 2.10.5 이하 버전에서 실습 시, 아래 경로에서 import # from airflow.operators.python import PythonOperator # from airflow import DAG # from airflow.decorators import task # from airflow.decorators import task_group # from airflow.utils.task_group import TaskGroup with DAG( dag_id = 'dags_python_with_task_group', schedule = None, start_date = pendulum.datetime(2023, 4, 1, tz = 'Asia/Seoul'), catchup = False ) as dag: def inner_func(**kwargs): msg = kwargs.get('msg') or '' print(msg) @task_group(group_id = 'first_group') def group_1(): ''' task_group decorator를 이용한 첫 번째 그룹입니다. ''' @task(task_id = 'inner_function1') def inner_func1(**kwargs): print('첫 번째 TaskGroup 내 첫 번째 task 입니다.') inner_function2 = PythonOperator( task_id = 'inner_function2', python_callable = inner_func, op_kwargs = {'msg': '첫 번째 TaskGroup 내 두 번째 task 입니다.'} ) inner_func1() >> inner_function2 with TaskGroup(group_id = 'second_group', tooltip = '두 번째 그룹입니다') as group_2: ''' 여기에 적은 docstring은 표시되지 않습니다. ''' @task(task_id = 'inner_function1') def inner_func1(**kwargs): print('두 번째 TaskGroup 내 첫 번째 task 입니다.') inner_function2 = PythonOperator( task_id = 'inner_function2', python_callable = inner_func, op_kwargs = {'msg': '두 번째 TaskGroup 내 두 번쨰 task 입니다.'} ) inner_func1() >> inner_function2 # Task Group도 flow 설정 가능 group_1() >> group_2
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 상황 1) 동적 페이지여서 셀레니움을 사용하려고 했음 2) 셀레니움으로 접근 시 '사람임을 확인하라'는 메시지만 뜨고 더 이상 작업을 할 수 없음 이런 경우에는 아래 방법으로 진행을 해야 할까요? 1) 크롤링 원하는 페이지에 접속 2) 개발자 도구에서 Copy > Copy Element 로 HTML 코드 복사 3) HTML 코드에서 원하는 부분을 추출하는 파이썬 코드를 사용 4) 1~3 과정을 반복해서 봐야 하는 페이지가 많다면 자동화할 수 있는 방법이 있을지?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 군대에서 김영한 강사님의 강의를 듣고 있는 병사입니다. 강의를 듣는 것이 쉬운 환경은 아니지만 열심히 듣고자 하여 조금씩 노력하고 있습니다. 처음으로 코딩 강의를 듣는 것인데 책으로 배우는 것과 정말 많은 장점이 있는 것을 알았고 재미도 있어 잘 듣고 있다는 말씀 드리고 싶었습니다. 다만, 해당 강의와 스프링 기본편 강의를 저번에 이벤트로 3개월동안 무료로 들을 수 있게 해주셨는데 제 노력이 부족해서 기간 안에 다 듣지 못했습니다. 괜찮으시다면 해당 기간을 연장해주실 수 있으실지 여쭤보고 싶습니다. 정말 배우고 싶은 의지가 있습니다. 관련하여 강사님의 의견 들어보고 싶습니다. 기간이 지나면 답변글을 확인할 수 있을지 모르겠지만 이메일 남겨두겠습니다. scentofsharon@naver.com 감사합니다
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 섹션3[2주차]설득력을 높이는 수치화 기술 11강 2-4 프로젝트 기본 설정하기 & 로컬 모니터링 인프라 설정 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 14:08분 build 시 test 시 런칭 시점에 테스트를 모두 통과하도록 변경했다고 하는데, 실제 build시에 테스트 task 수행 시 DB에 연결할 수 없는 오류가 발생합니다 docker compose up 후 bootRun시 localhost:8080/api/chapter2/boards시 응답 값은 제대로 나옵니다 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? EventJoinWithExternalApiUpdateFacadeTest > 외부 API 호출과 DB 업데이트 불일치 테스트 FAILED java.lang.AssertionError at EventJoinWithExternalApiUpdateFacadeTest.java:103 SimpleEventListenerTest > 현재 코드 구조에서 @TransactionalEventListener는 작동하지 않는다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 SimpleEventListenerTest > @TransactionalEventListener는 활성 트랜잭션이 필요하다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 SimpleEventListenerTest > @EventListener는 트랜잭션이 없어도 정상 동작한다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 해당 웹페이지 변경으로 공지글과 하단 일반글이 둘다 <tbody>로만 되어있고, 확인되는 class태그인 article, board-list, inner-list 가 모두 동일한데 어떻게 구분해서 크롤링 할 수 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 해당 강의에서 아래 2가지 방법으로 '50개씩' 선택하는 법을 알려주셨는데, 드롭박스 선택 후 > 50개씩 선택 드롭박스 선택 없이 자바스크립트로 50개씩 선택 근데 2번의 경우, 자바스크립트 인자로 element를 보내야해서 먼저 element 선언을 해줘야하는데, 드롭박스 클릭을 하지 않으면 여전히 element 찾는 과정에서 NoSuchElementException 오류가 납니다. 드롭박스를 열어야 하는건가요 ..? 그렇다면 1번과 차이가 무엇인지 궁금합니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 2번 멤버(HelloB)를 추가하는 코드를 실행한 뒤에 h2에서 조회해보면 1번 멤버는 없고 2번만 나와요
TCP 에코 서버 실습하던 와중에 반복문 조건에서 궁금한게 있어서 질문 남김니다. while((msg = reader.readLine()) != null) { // 로직 } Q. 클라이언트가 연속적으로 msg를 보낼 의도가 있고 그렇게 보낸다고 해도 저 서버쪽의 반복문 안에서 로직을 처리하고 다시 조건을 확인하는 cycle이 엄청 빠를텐데 1. 만약 클라이언트는 여러번 메시지를 보낼 꺼지만, 서버입장에선 1cycle을 돌고 .readLine()으로 했을 때 reader(inputStream)가 비어있으면 null이지 않나요?? 2. 저런 조건에서 null 조건이 성립하려면 EOF일 때만 null이되서 반복문을 빠져나오는건가요? 3. 아니면 애초에 null일 상황은 없지만 무한 루프를 만들기 위한 장치 인가요??
저는 postgres를 airflow 공식 compose에서 함께 띄었습니다. 그렇게 하니 connection에서 오류가 발생했었습니다. 이후 구글링을 통해 connection에서 host를 해당 컨테이너의 서비스 명으로 변경해주시면 된다는 점을 확인했습니다. 이유는 왜 그런지 모르겠습니다. 강의 들으시는 분들 참고하시면 좋을 것 같습니다.
강의 36분 10초 경부터 관련해서 질문드립니다. 해당 시점에서 refMember는 getReference()하였으므로 프록시입니다. 그리고 바로 다음에 em.detach(refMember) 하여 영속성 컨텍스트에서 끄집어 낸다고 하시는데요. 그렇다면 getReference()하여 생성되는 프록시도 영속성 컨텍스트에 속하게 된다는 말씀인건가요?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@Transactional public void returnBook(BookReturnRequest request) { User user = userRepository.findByName(request.getUserName()) .orElseThrow(IllegalArgumentException::new); user.returnBook(request.getBookName()); } 위 코드의 BookService 에서 책을 반납할때 userLoanHistory 중 user명과 책 이름이 같은것을 가져와서 userLoanHistory 에서 리턴하는데 문제는 한 사람이 이미 같은 책을 빌렸고 반납한 기록이 있다면 중복으로 잡힙니다. public void returnBook(String bookName) { UserLoanHistory targetHistory = this.userLoanHistories.stream () .filter(history -> history.getBookName().equals(bookName)) .findFirst() .orElseThrow(IllegalArgumentException::new); targetHistory.doReturn(); } 위의 User 엔티티에서 혹시 userLoanHistory 값이 여러개 나올때 혹시 .findFirst() 를 통해 그 중 가장 위 즉, 여기선 가장 최근에 대출한 책의 기록인 userLoanHistory 를 가져와서 doReturn()을 진행하는 형태가 맞습니까?
안녕하세요! 강의 잘 보고 있습니다. 강의 내용중 - "File + a"가 있고 - "a"에 해당되는 내용이 네트워크(port번호, IP주소)가 되면 - "file + a" == 소켓이다. 이렇게 말씀하셨는데 그러면 앞에서 쭉 강의 하셨던 내용을 토대로 생각해보면 제가 작성한 A,B가 맞는 내용인가요? 아니면 C가 맞는 내용인가요? 아래 그림도 첨부했습니다! A. "a"에 해당하는 네트워크 정보가 있기 때문에 서버와 클라이언트는 각 소켓을 통해 데이터를 주고 받고가 가능. B. 이때 클라이언트에서 hello!라는 mgs를 소켓을 통해 전송하면 : 로컬(서버)에 "file"이라는 1차원 선형 공간에는 data(그림의 경우 클라이언트가 전송한 String타입의 data)이 저장되고 해당 file을 콘솔에 출력하거나, txt로 저장하거나 할 수 있다. C. A,B 둘 다 아니고 소켓은 (장치파일 + a(네트워크 정보))이고 소켓에 send,recv 행위를 하는 것은 장치파일에 write,read 하는 것과 같은 행위이다. 그림에서 클라이언트의 msg를 서버에서 recv 하면 장치파일에 [hello]가 저장되고 그것을 콘솔에 출력하거나 별도의 파일로 저장할 수 있는 것 이라는 의미인가요...??
안녕하세요 강사님 좋은 강의 잘 듣고 있습니다. [2-7 최대 힙 메모리를 늘리면 좋은 점 ] 최대 힙 메모리로 늘리면 좋은 점 - GC가 적게 일어나면 좋다? 에 대해서 궁금증이 있어 질문을 드립니다. GC가 일어나게 되면 STOP-THE-WORLD로 객체 제거 할떄 어플리케이션이 멈춘다고 알고 있습니다. 그래서 GC가 자주 일어나지 않으면 stop-the-world 가 덜 일어나니 좋겠네? 라는 생각을 처음에 했습니다. 하지만 생각을 해보니 힙사이즈를 늘리면 gc가 일어나는 빈도가 적어지지만 한 번 gc가 일어날떄 객체 제거에 처리해야할 양이 늘어나 stop-the-world시 멈추는 시간이 늘어난다고 알고 있습니다... 그래서 과연 무조건적으로 힙사이즈를 늘리는게 옳은게 맞을까 라는 궁금증이 생겨 질문 드립니다. 감사합니다.