전체보기 136

Python의 트레일링 콤마가 JSON Schema 포맷에 영향을 주는가

개요Python의 트레일링 콤마(trailing comma)와 JSON Schema 간의 상호작용은 개발자들이 자주 간과하는 중요한 기술적 세부사항이다. Python에서는 리스트, 딕셔너리, 함수 매개변수 등에서 마지막 요소 뒤에 콤마를 붙이는 것이 허용되며, 이는 코드 유지보수와 버전 제어에서 장점을 제공한다. 반면 JSON 표준(RFC 4627)은 트레일링 콤마를 엄격히 금지하며, JSON Schema 역시 순수 JSON 형식을 따르므로 트레일링 콤마를 허용하지 않는다. 이러한 차이점은 Python 애플리케이션에서 JSON Schema를 다룰 때 파싱 오류나 검증 실패를 초래할 수 있으며, 특히 동적 스키마 생성이나 설정 파일 처리 과정에서 예상치 못한 문제를 발생시킬 수 있다.설명트레일링 콤마는 데..

Programming/python 2025.07.09

Python Dictionary와 JSON의 차이점

개요Python Dictionary와 JSON은 키-값 쌍으로 데이터를 저장하는 구조라는 공통점을 가지지만, 본질적으로 다른 특성을 지닌다. Python Dictionary는 Python 프로그래밍 언어의 내장 데이터 타입으로 메모리 상에서 동작하는 가변 객체이며, JSON(JavaScript Object Notation)은 언어 독립적인 데이터 교환 형식으로 텍스트 기반의 표준이다. Python Dictionary는 Python 런타임 환경에서만 존재하며 다양한 Python 객체를 값으로 저장할 수 있는 반면, JSON은 네트워크를 통한 데이터 전송이나 파일 저장을 위한 직렬화된 형태로 제한된 데이터 타입만을 지원한다. 두 구조 간의 차이점을 정확히 이해하는 것은 웹 API 개발, 데이터 처리, 시스템..

Programming/python 2025.07.08

DRY 원칙(Don't Repeat Yourself)

개요DRY 원칙은 1999년 Andy Hunt와 Dave Thomas가 저서 "The Pragmatic Programmer"에서 처음 소개한 소프트웨어 개발의 핵심 원칙이다. 이 원칙은 "동일한 지식이나 로직을 시스템 내에서 두 번 이상 반복하지 말라"는 의미로, 코드 중복을 최소화하여 유지보수성과 재사용성을 극대화하는 것을 목표로 한다. DRY 원칙은 단순히 코드 복사를 피하는 것을 넘어서, 지식과 의도의 중복을 제거하여 시스템의 일관성과 신뢰성을 보장하는 포괄적인 설계 철학이다. 현대 소프트웨어 개발에서 DRY 원칙은 클린 코드 작성, 아키텍처 설계, 테스트 코드 작성 등 모든 영역에서 적용되는 기본적이면서도 강력한 지침으로 인정받고 있다.설명DRY 원칙의 핵심은 "모든 지식은 시스템 내에서 단일하고..

LangChain vs LangGraph

개요LangChain과 LangGraph는 대규모 언어 모델(LLM) 기반 애플리케이션 개발을 위한 프레임워크로, 각각 다른 접근 방식과 용도를 가지고 있다. LangChain은 순차적 워크플로우와 모듈러 아키텍처에 중점을 둔 범용 프레임워크인 반면, LangGraph는 LangChain 위에 구축된 특화된 라이브러리로 복잡한 그래프 기반 워크플로우와 상태 관리에 특화되어 있다. LangChain은 2022년 오픈소스로 출시되어 LLM 애플리케이션 개발의 표준 도구로 자리 잡았으며, LangGraph는 2024년 초 LangChain 생태계의 일부로 출시되어 에이전트 런타임과 멀티 에이전트 시스템 구축을 위한 고급 기능을 제공한다. 두 프레임워크는 상호 보완적 관계에 있으며, 프로젝트의 복잡성과 요구사항..

AI/langchain 2025.06.22

Cython 방식의 라이브러리를 만들어 Python 프로젝트에 적용하기

개요Cython은 Python의 성능 병목을 해결하기 위해 개발된 프로그래밍 언어이자 컴파일러이다. Python의 문법을 확장하여 C 언어의 성능을 제공하면서도 Python의 편의성을 유지한다. Cython을 사용하면 Python 코드를 C 확장 모듈로 변환하여 실행 속도를 크게 향상시킬 수 있으며, 기존 C/C++ 라이브러리와의 통합도 용이하다. 특히 수치 계산, 데이터 처리, 알고리즘 구현 등 계산 집약적인 작업에서 순수 Python 대비 10배에서 100배까지 성능 향상을 기대할 수 있다. Cython 라이브러리는 표준 Python 패키지처럼 import 하여 사용할 수 있어 기존 Python 프로젝트에 쉽게 통합할 수 있다.설명Cython은 Python 코드를 C 코드로 변환하는 트랜스파일러 역할..

Programming/python 2025.06.21

Graph RAG가 vector RAG에 비해 가지는 장점

개요Graph RAG는 기존 Vector RAG의 한계를 극복하고자 등장한 차세대 검색 증강 생성 기술이다. Vector RAG가 벡터 유사도 검색에 의존하여 의미적 유사성을 기반으로 정보를 검색하는 반면, Graph RAG는 지식 그래프의 구조화된 관계를 활용하여 더욱 정교하고 맥락적으로 풍부한 정보 검색을 수행한다. Graph RAG는 노드와 관계로 구성된 그래프 구조를 통해 개별 데이터 포인트들이 어떻게 연결되어 있는지를 명확히 보여주며, 이를 통해 복잡한 관계와 종속성을 직관적으로 모델링할 수 있다. 이러한 접근 방식은 특히 복잡한 도메인 지식이 요구되는 분야에서 Vector RAG 대비 상당한 성능 향상을 보여주고 있다.설명Graph RAG는 전통적인 RAG 시스템에 지식 그래프 통합, 향상된 ..

AI/Survey 2025.06.20

파이썬 함수 내부에 import를 하면 생기는 일

개요파이썬에서 import 문은 일반적으로 모듈의 최상위 레벨에서 수행되지만, 함수 내부에서도 import를 실행할 수 있다. 함수 내부에서 import를 수행하면 해당 모듈은 함수가 호출될 때마다 로드되는 것이 아니라, 이미 sys.modules에 캐시되어 있다면 캐시된 모듈을 참조하게 된다. 이러한 로컬 import는 특정 상황에서 유용할 수 있지만, 성능과 가독성 측면에서 고려해야 할 사항들이 있다. 함수 내부 import는 지연 로딩(lazy loading), 순환 import 문제 해결, 조건부 import 등의 목적으로 활용되며, Python의 동적 특성을 잘 보여주는 기능 중 하나이다.설명파이썬에서 함수 내부에 import 문을 작성하면, 해당 import는 함수가 실행될 때 수행된다. 그러..

Programming/python 2025.06.19

logger의 propagate

개요Logger의 propagate는 Python logging 모듈에서 제공하는 중요한 속성으로, 로그 메시지가 로거 계층 구조를 따라 상위 로거로 전파되는 방식을 제어한다. 이 속성은 Boolean 값을 가지며, 기본값은 True로 설정되어 있다. propagate 속성은 로깅 시스템의 유연성과 효율성을 높이는 핵심 메커니즘이며, 복잡한 애플리케이션에서 로그 출력을 세밀하게 제어할 수 있게 해 준다. 이 기능을 통해 개발자는 특정 로거의 메시지가 상위 로거로 전달되는 것을 차단하거나 허용할 수 있어, 로그 중복을 방지하고 성능을 최적화할 수 있다.설명propagate 속성은 Python logging 모듈의 Logger 클래스에 정의된 인스턴스 변수이다. 이 속성이 True로 설정되면, 해당 로거에서..

Programming/python 2025.06.18

CRUD

개요CRUD는 Create, Read, Update, Delete의 약자로, 데이터베이스 관리 시스템과 웹 애플리케이션에서 데이터를 처리하는 네 가지 기본 연산을 의미한다. 이 개념은 1983년 James Martin이 처음 소개한 이후 소프트웨어 개발 분야에서 표준적인 데이터 조작 패러다임으로 자리 잡았다. CRUD 연산은 관계형 데이터베이스의 SQL 명령어와 직접적으로 대응되며, RESTful API 설계의 기초가 되고 있다.설명CRUD는 데이터 지속성을 위한 네 가지 핵심 기능을 정의한다. Create는 새로운 데이터 레코드를 생성하는 연산으로, 데이터베이스에 새로운 정보를 추가할 때 사용된다. Read는 기존 데이터를 조회하고 검색하는 연산으로, 사용자가 저장된 정보에 접근할 수 있게 한다. Up..

RDF와 TTL

개요TTL(Turtle) 파일은 Resource Description Framework(RDF) 데이터를 표현하기 위한 텍스트 기반의 직렬화 형식이다. Terse RDF Triple Language의 약자인 TTL은 시맨틱 웹 기술의 핵심 구성 요소로서, 구조화된 데이터를 간결하고 인간이 읽기 쉬운 형태로 표현할 수 있게 한다. W3C에서 표준으로 제정한 이 형식은 웹상에서 기계가 처리 가능한 데이터 교환과 지식 표현을 위한 중요한 도구로 활용되고 있다.설명TTL 파일은 RDF 그래프를 완전히 컴팩트하고 자연스러운 텍스트 형태로 작성할 수 있도록 하는 구문 체계를 제공한다. 이 형식은 주어(Subject), 술어(Predicate), 목적어(Object)로 구성된 트리플 구조를 기반으로 하며, 웹 상의 ..

Research/technology 2025.06.04
728x90
반응형