강의를 보다보니 궁금한 점이 있어 질문 남깁니다. 첫번째로 궁금한 점은 AbstractPagingItemReader의 코드를 doRead 함수 안에서 lock을 잡고 있으며, doReadPage가 끝난 후 lock을 푸는 것을 확인할 수 있었습니다.. doReadPage에 실제로 paging 로직이 존재하니 사실상 paging 로직은 직렬로 수행되는 것과 다를 바 없을 것이며, 성능적으로 크게 증가하지 않을 것 같다는 생각이 드는데요.. (거의 직렬 처리와 유사할 것 같다는 생각이 드네요..) 사실상 병렬 처리라해도 Reader쪽에서 성능 향상이 거의 없다고 보면 될까요? 두번째로 궁금한 점은 AbstractPagingItemReader 상위 클래스인 AbstractItemCountingItemStreamItemReader의 read 함수를 보니 멤버 변수인 currentItemCount를 증가시키는 로직이 존재하더라구요.. 이 부분도 병렬처리에 문제가 될 것 같다는 생각이 들고 해당 클래스의 주석에도 "Subclasses are inherently <b>not</b> thread-safe." 라고 적혀있는 것으로 봐서는 문제가 존재하는 것 같은데요.. 그럼에도 불구하고 기능상 영향이 없으니 하위 클래스인 AbstractPagingItemReader는 thread-safe하다고 나와있는 것이라고 생각하면될까요??
강의 잘 듣고 있습니다. 수업중에 에러가 나서 문의 드립니다. 검색을 n8n에 붙일때 HTTP Request의 옵션을 강의와 같이 설정하고 실행을 하면 Bad gateway 502 bad gateway가 나옵니다. 어느 부분을 보고 무엇을 설정해야 할지 감이 안오는데 도움 부탁 드립니다.
선생님 강의처럼 wp-sitemap.xml로 등록을 했더니 저는 이렇게 뜨는 문제가 있습니다 ㅠㅠ sitemap.xml로만 등록하니 제출이 sitemap으로 정상 진행이 되었어요! 혹시 원인을 알고 계실까요? 추가로 구글서치콘솔에서 사이트맵 등록 부분에서도 wp-sitemap.xml은 가져올 수 없음 오류가 뜨는데 sitemap.xml은 정상 등록이 되었던 경험이 있습니다!
한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)
uv sync 후 uv run main.py 실행 시 Traceback (most recent call last): File "/Users/kade/kade/ai-agent-playground/5_english_tutor/main.py", line 9, in <module> from tutor_crew import EnglishTutorCrew, add_to_conversation File "/Users/kade/kade/ai-agent-playground/5_english_tutor/tutor_crew.py", line 5, in <module> from tools import rag_tool File "/Users/kade/kade/ai-agent-playground/5_english_tutor/tools.py", line 22, in <module> from langchain.text_splitter import RecursiveCharacterTextSplitter ModuleNotFoundError: No module named 'langchain' 과 같이 text splitter에서 lanchain import 에러 발생합니다. 마찬가지로 RetrievalQA도 동일한 에러 발생합니다. 공식 문서를 찾아보면 두 메서드(클래스)는 deprecated 되었습니다. pyproject.toml의 의존성이 >= {version} 을 사용하다 보니 최신 버전이 패치되면서 더 이상 호환되지 않는 것 같습니다. 버전을 고정하거나 강의를 수정해야 할 것 같습니다.
안녕하세요. 주말과 평일 저녁 시간을 활용해 강의를 듣고 있는 직장인입니다. 현재 강의를 들으며 열심히 학습 중입니다만, 강의 수강 기간이 11월 13일에 종료되어 시험일인 11월 29일까지는 다소 시간이 부족할 것 같아 문의드립니다. 혹시 강의 수강 기간을 시험일인 11월 29일까지 연장해주실 수 있을까요? 메일주소 gusdk1541@hanmail.net 입니다. 확인 부탁드리며, 도움 주시면 감사하겠습니다. 감사합니다.
포인터 조작과 출제 패턴 (2. 포인터 증가/감소, 이중 포인터) 9:35 printf("%c\n", *(ptr_a+1)); 여기서 ptr은 str[] 배열이기 때문에 H값이 온다는 것은 이해를 했는데 printf할 때 배열 단위로 오면 printf("%c\n", *(ptr_a+1)) 오는 것 같고 배열에서 특정 위치를 표현하는 printf("%c\n", ptr_a[1])가 오는 것 같은데 같은 배열을 이용하는 건데 * 사용 대해서 차이가 위 설명이 맞을까요?
포인터 조작과 출제 패턴 (2. 포인터 증가/감소, 이중 포인터) 3:36 배열의 경우는 메모리 주소와 같은 개념이라고 이해했는데 char *ptr_a=a; 경우 a는 배열 내 첫번째 요소를 의미하는 것으로 "H"로 지정된다는 것을 이해를 했습니다. 다만, printf("%c/n", * ptr_a);에서 변수 앞에 출력하고자하는 변수 앞에 *가 있으면 해당 메모리 주소의 값으로 출력이 된다고 하였는데 배열일 경우, printf("%c/n", *ptr_a) 값과 printf("%c/n", ptr_a) 값은 같은건가요? 일반적으로 *가 없으면 메모리 주소를 출력하는 것으로 알고 있습니다.