안녕하세요. 좋은 강의 잘듣고 많이 배우고 있습니다. 좋은 강의 만들어주셔서 감사합니다. 다름이 아니라, 어댑터에서 엔티티에 의존성을 가지는 것이 크게 문제되지 않는다고 말씀주신 내용에 의문이 있어 질문드립니다! 어댑터에서 도메인에 직접 의존하는 것을 막기 위해서 변환 역할을 하는 매퍼 클래스나 DTO에서 엔티티를 자기 자신으로 변환하는 로직을 가지는 것은 어떨까요? 타이트하게 룰을 잡는 케이스를 가정한다면, application layer 내부에 port가 존재할 것이고 이 port에서 return 하는 dto도 application layer일 것이고, 이 dto 안에서 Entity를 받아서 자기 자신으로 변환하는 로직을 가진다면 entity가 application 밖으로 나가지 않을 수 있지 않을까요? (controller, repository 등 마찬가지입니다) 그리고 dto를 application에서 변환하는 것이 로직의 침투라고 표현하시기도 했는데, 그렇다면 provided port 역시 어댑터의 요구가 침투하는 구조라고 볼 수도 있을 것 같기도 합니다.. (생각해보니 이상적으로는 계층별로 DTO를 생성하는게 맞다고 생각은 들지만, "엔티티를 반환하는 트레이드오프가 굉장히 효율적이고 정당하다"라고 말씀하신 것 같다고도 생각이 듭니다) 강의에서 항상 기술이 등장한 배경과 사상을 이해하고, 이를 바탕으로 정당하게 규칙을 스스로 정하는 것을 강조하시는 것 같습니다. 그래서 강의에서 말씀하신 내용이 비슷한 맥락으로, "절대 노출되면 안된다"라는 것에 대한 반박이라고 받아들여지긴 합니다만.. 그래도 바깥쪽으로 노출하지 않는 것이 의존성 관리 차원에서 더 좋지 않을까하는 생각에 질문드립니다!
예제에서는 도메인에 별도 PasswordEncoder 인터페이스를 정의해 사용하고 있습니다. 만약에, Member 도메인이 Spring Security의 PasswordEncoder 인터페이스를 직접 의존한다면, 구현체가 아니라 인터페이스를 참조하더라도 순수 도메인 설계 관점에서 위반으로 봐야 할까요? 저는 인터페이스 의존이라 괜찮을 수 있다고 생각했지만 AI는 도메인에서는 자체 PasswordEncoder 포트만 사용하고, Spring Security PasswordEncoder는 인프라 어댑터에서 위임하는 것이 좋다. 고 제안했습니다. 토비님은 어느 쪽이 더 적절하다고 보시는지, 판단 기준도 함께 듣고 싶습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 항상 퀼리티 높은 강의를 해주셔서 감사드립니다. 강의를 듣던 중 궁금한 점이 생겨 질문드립니다! 객체를 참조할 때는 .(dot)을 사용한다라고 하셨습니다. 그러면 해당 객체의 참조값을 담은 참조변수는 객체에 접근할 수 있는 참조값을 가지기만 한 것이고 . 을 사용해야 접근 및 멤버들을 사용할 수 있다라고 생각이 드는데 이 생각이 맞는 사고인지 궁금합니다 그림을 그릴때는 객체랑 참조변수랑 참조값으로 연결되어져 있다고 생각했는데 그럼 참조변수는 객체에 접근한 게 아니다라는 의문이 자꾸 들어서 질문 남겨요!
안녕하세요 저는 데이터사이언스 전공자이며, 파이썬을 메인언어로 썼습니다. 코딩을 직접 안하는 분야로 재직중인데, 시간이 나지 않지만, 얼마전 강의 수강을 시작했습니다. 부끄럽지만, 정처기를 재수를 했는데도 떨어졌는데, 항상 코딩에서 c언어와 java가 문제인것 같습니다. 25년 3회차부터 듣기시작했는데, 언어 자체가 익숙하지가 않아 다른 강사의 강의도 듣고 교재도 보고 있으나, 막상 코딩문제를 직접 풀면, 답이 다르게 나오는 경우가 많습니다 특히 문제는 기출 문제중 많이 봤던 부분들은 답이나 로직 자체가 먼저 떠올라 맞추는 것도 많습니다. 지금은 우선 강의를 빠르게 들으며, 2~3회 반복하는 전략을 취하려고 하나, 이게 맞는지 궁금합니다. 올해 1회차에 합격이 목표인 만큼 강사님의 고견을 구합니다
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4-10 2. 어려움을 겪는 부분 강의 끝 부분에서 네임드 락을 위한 커넥션과 일반 트랜잭션을 처리하는 커넥션을 분리시켜서 중요한 트랜잭션 처리에 영향을 주지 않는 방법을 말씀해주셨습니다. 제가 기술면접을 보면서 서킷 브레이커 라는 내용을 접하게 되었는데, 이 부분이 해당 내용과 연관이 있는건지 궁금합니다. 정확히는 외부 API의 호출 지연으로 인해 스레드 풀이 고갈되는 상황에서 어떻게 설계할 것인지에 대한 질문이었고, 이 과정에서 예시 키워드로 서킷 브레이커 Bulk Head가 있었습니다. 또한, 실제 실무 환경에서는 커넥션 풀을 분리하기 위해 어떤 방법들을 사용하는지 궁금합니다! Q&A로 설명이 어렵다면, 키워드라도 알고 싶습니다.
*prt_a=str;이면 ptr_a가 str의 주소값을 가지는것아닌가요? 아래보면 *(prt_a+1)을 설명해주실때 prt_a가 H를 가르키니까 +1이라서 e라고하셨는데 이부분이 이해가 잘 안됩니다 그리고 배열부분에서의 주소값과 그냥 값을 어떻게 하면 쉽게 이해하고 풀수있는지 알려주시면 좋겠습니다
모두를 위한 대규모 언어 모델 LLM Part 5 - LangGraph로 나만의 AI 에이전트 만들기
안녕하세요 강사님, 강의 잘 듣고있습니다. 현재 Adaptive RAG 강의를 듣고있는데, 강의에서는 공식 문서에서 Adaptive RAG와 관련된 내용이 있어 그걸 예시로 들어주셨는데 확인해보니 해당 내용이 지금은 공식 문서에 없는 것 같습니다. Adaptive RAG 뿐만 아니라 강사님이 강의했던 내용중 지금은 공식 문서에 없는 내용들이 꽤 많은 것 같은데(Plan-and-Execute는 TodoListMiddleware로 연결되고 ReWOO, Reflection, Reflextion, STORM 등과 같은 내용은 공식 문서에 아예 없습니다..), 이런 내용들은 현재 시점에서는 잘 사용되지 않는 기술들이여서 그런걸까요? 그리고 예제에서 시스템 프롬프트를 항상 영어로 작성하시고 아래 한글로 번역된 내용을 주석으로 써주셨는데, 애초에 프롬프트를 한글로 작성하면 답변 품질에 차이가 많이날까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 2분33초에 memberB.getAddress()setValue("부산") 부분을 실행할때 setValue()부분에서 오류가 나는데 바로 직전 강의에서 setValue를 삭제하였는데 다시 만든후 실행한건가요? 만들었다면 불변이아닌거아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네 [질문 내용] 여기에 질문 내용을 남겨주세요 왜 자꾸 Unused property 가 뜰까요?.... Gradle 업로드 해도 계속이러네요ㅠㅠ 제미나이와 몇시간을 여러방법을 썼는데 실패해서 처음 질문드려요.... .
--------------------------------------------------------------------------- ConfigError Traceback (most recent call last) Cell In[13], line 1 ----> 1 from langchain_chroma import Chroma 3 database = Chroma.from_documents(documents=document_list, embedding=embedding) File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/langchain_chroma/__init__.py:3 1 """LangChain integration for Chroma vector database.""" ----> 3 from langchain_chroma.vectorstores import Chroma 5 __all__ = [ 6 "Chroma", 7 ] File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/langchain_chroma/vectorstores.py:18 12 from pathlib import Path 13 from typing import ( 14 TYPE_CHECKING, 15 Any, 16 ) ---> 18 import chromadb 19 import chromadb.config 20 import numpy as np File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/chromadb/__init__.py:3 1 from typing import Dict, Optional, Union 2 import logging ----> 3 from chromadb.api.client import Client as ClientCreator 4 from chromadb.api.client import ( 5 AdminClient as AdminClientCreator, 6 ) 7 from chromadb.api.async_client import AsyncClient as AsyncClientCreator File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/chromadb/api/__init__.py:51 46 from overrides import override 47 from chromadb.api.collection_configuration import ( 48 CreateCollectionConfiguration, 49 UpdateCollectionConfiguration, 50 ) ---> 51 from chromadb.config import DEFAULT_DATABASE, DEFAULT_TENANT 52 from chromadb.api.types import ( 53 CollectionMetadata, 54 Documents, (...) 73 DefaultEmbeddingFunction, 74 ) 76 from chromadb.auth import UserIdentity File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/chromadb/config.py:120 116 NODE = "node" 117 ID = "id" --> 120 class Settings(BaseSettings): # type: ignore 121 # ============== 122 # Generic config 123 # ============== 125 environment: str = "" 127 # Can be "chromadb.api.segment.SegmentAPI" or "chromadb.api.fastapi.FastAPI" or "chromadb.api.rust.RustBindingsAPI" File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/pydantic/v1/main.py:221, in ModelMetaclass.__new__(mcs, name, bases, namespace, **kwargs) 219 elif is_valid_field(var_name) and var_name not in annotations and can_be_changed: 220 validate_field_name(bases, var_name) --> 221 inferred = ModelField.infer( 222 name=var_name, 223 value=value, 224 annotation=annotations.get(var_name, Undefined), 225 class_validators=vg.get_validators(var_name), 226 config=config, 227 ) 228 if var_name in fields: 229 if lenient_issubclass(inferred.type_, fields[var_name].type_): File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/pydantic/v1/fields.py:504, in ModelField.infer(cls, name, value, annotation, class_validators, config) 501 required = False 502 annotation = get_annotation_from_field_info(annotation, field_info, name, config.validate_assignment) --> 504 return cls( 505 name=name, 506 type_=annotation, 507 alias=field_info.alias, 508 class_validators=class_validators, 509 default=value, 510 default_factory=field_info.default_factory, 511 required=required, 512 model_config=config, 513 field_info=field_info, 514 ) File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/pydantic/v1/fields.py:434, in ModelField.__init__(self, name, type_, class_validators, model_config, default, default_factory, required, final, alias, field_info) 432 self.shape: int = SHAPE_SINGLETON 433 self.model_config.prepare_field(self) --> 434 self.prepare() File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/pydantic/v1/fields.py:544, in ModelField.prepare(self) 537 def prepare(self) -> None: 538 """ 539 Prepare the field but inspecting self.default, self.type_ etc. 540 541 Note: this method is **not** idempotent (because _type_analysis is not idempotent), 542 e.g. calling it it multiple times may modify the field and configure it incorrectly. 543 """ --> 544 self._set_default_and_type() 545 if self.type_.__class__ is ForwardRef or self.type_.__class__ is DeferredType: 546 # self.type_ is currently a ForwardRef and there's nothing we can do now, 547 # user will need to call model.update_forward_refs() 548 return File ~/workspace/ai/rag-practice/lib/python3.14/site-packages/pydantic/v1/fields.py:576, in ModelField._set_default_and_type(self) 573 self.annotation = self.type_ 575 if self.type_ is Undefined: --> 576 raise errors_.ConfigError(f'unable to infer type for attribute "{self.name}"') 578 if self.required is False and default_value is None: 579 self.allow_none = True ConfigError: unable to infer type for attribute "chroma_server_nofile" 저는 Python 3.14 버전으로 venv 를 사용중이었는데요. 위와 같은 에러가 발생하였습니다. 구글에 ConfigError 문구를 검색해도 잘 나오지 않아서 ChatGPT의 도움을 좀 받았는데 이렇게 답하더라구요. - Python 3.14 환경에서 chromadb 가 (pydantic v2에서 BaseSettings가 빠진 걸 처리하려다) pydantic.v1 호환 레이어로 떨어지고 - 그런데 Pydantic v1 코어는 Python 3.14+에서 제대로 동작하지 않아서, Settings 모델 필드( chroma_server_nofile ) 타입 추론이 깨지면서 ConfigError 가 납니다. 파이썬 버전을 3.12로 낮추어서 venv 를 다시 설정했더니 같은 코드임에도 정상적으로 실행되었습니다. 혹시나 저와 같은 이슈를 겪으신 분들은 python 버전을 낮추어보시길 바라요.
안녕하세요. 게시판 관련 강의를 듣는 도중 궁금한 점이 있어 질문을 남깁니다. 강의에서는 Snowflake 기반 단순 정렬을 기준으로 커버링 인덱스를 설명해주셨는데요, 실무에서는 여러 정렬 조건과 필터, 검색 조건이 함께 붙는 경우가 많습니다. ✅ 이런 복합적인 조회 패턴에서도 커버링 인덱스를 중심으로 설계하는 것이 적절한지, 아니면 다른 전략을 어떻게 사용해야 하는지 궁금합니다.(설명이 길어질 경우 간단한 힌트라도 부탁드립니다.) 💥 걱정하는 부분 정렬되는 컬럼 전부에 대해 인덱스를 걸면 더 문제가 발생할 것 같아요. 검색 %검색어% 의 경우에는 결국엔 full_scan 이어서 성능 최적화가 불가능하다.