예제에서는 StringSerializer 와 StringDeserializer 를 사용하도록 설정하고 ObjectMapper 를 통해 직렬화/역직렬화를 해주셨는데요. 혹시 JsonSerializer 와 JsonDeserializer 를 사용하지 않는 이유가 있을까요? 그리고, JsonDeserializer 를 사용하든 StringDeserializer 를 사용하든 역직렬화를 할 때 실패하게 되면 offset commit 이 되지 않고 재시도를 하는동안 해당 message 의 partition 은 blocking 된다고 이해하고 있는데 맞을까요? 이 경우에도 retry 이후, 해결 안되면 dlt topic 으로 이동하는게 맞을까요?
강사님 안녕하세요. 잘 배우고 있습니다. 강의를 보다가 든 생각인데 실제로 Secret을 현업에서 관리하게 될 때는 아래와 같은 구조로 이뤄질 것 같은데 맞나요? 신규 피쳐에 새로운 시크릿이 필요하다. 개발자가 devops 팀에 추가를 요청한다. devops 에서 마스터 노드로 접근하여 kubectl 을 통해 secret 을 생성한다. 해당 사항을 개발자가 노티 받고, 배포를 진행한다. SealedSecret이라는 걸 알게 되었는데, 이걸 이용하면 개발자가 직접 추가할 수도 있고, git에도 비대칭 암호화된 값이 남아 안전하다고 합니다. 보통 SealedSecret 방식을 적용하여 프로젝트를 운영하나요, 아니면 책임 관리 소재에서 저 과정을 거치나요?
리서치를 하다보니 실무에서는 auto.create.topics.enable=false 설정을 사용하는게 좋다는 글을 많이 보게 되었습니다. 네이밍 컨벤션이나 예상치 못한 topic 의 생성 등을 방지하기 위함으로 이해했는데요. 그럼, xxx.dlt 와 같은 topic 들도 직접 생성을 해줘야 하는지 궁금합니다. 그리고, 실제로 실무에서 해당 설정을 많이 사용하는지 또한 궁금합니다 🙂
한 번에 끝내는 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) 값은 같은건가요? 일반적으로 *가 없으면 메모리 주소를 출력하는 것으로 알고 있습니다.