CS 49

Git Flow 브랜칭 전략

초기 커밋: README.md, .gitignore 등의 설정 파일들을 main 브랜치에 커밋main 브랜치에서 develop 브랜치를 분기하고, 개발에 필요한 템플릿 코드 등을 develop 에 커밋기능 단위로 develop 브랜치에서 feature/ 브랜치를 분기하고 작업 진행ex. feature/add-user-profile기능 개발이 완료되면 해당 feature 브랜치를 develop 에 병합병합 이후 develop 브랜치에서 버그가 확인되면 develop 브랜치에서 바로 수정develop 브랜치에서 발견된 버그의 규모가 크다면 feature/ 브랜치로 분기하여 작업 진행후 다시 develop 에 병합실제 Git Flow 모델에서도 "버그 수정도 새로운 feature 로 간주할 수 있다" 는 유연..

Dev/VCS 2025.05.12

Git merge vs rebase

Git Flow 브랜칭 전략을 전제로 합니다. develop 브랜치에서 feature 브랜치로 분기한 상황입니다. feature 브랜치 개발 완료 후 develop 에 merge 시, develop 에 이미 새로운 커밋 이력이 생겨있는 경우merge 사용이 일반적히스토리를 그대로 보존하므로, 이력이 안전하게 남고 협업에 적합merge 정책에 따라 rebase 혹은 squash 를 사용할 수 도 있지만 기본적으로는 merge 사용feature 브랜치에서 개발 진행중에 develop 에서 코드 수정이 발생해 수정된 develop 코드 기반에서 개발을 이어가야 하는 경우rebase 사용이 일반적커밋 히스토리가 깔끔해지고, develop 의 최신 상태를 기반으로 개발 가능merge 를 사용하면 불필요한 병합 커..

Dev/VCS 2025.05.12

GitHub PR Merge 옵션

Create a merge commit vs Squash and merge vs Rebase and mergeCreate a merge commit포크 (병렬 분기) 형태로 병합fast-forward merge 가 가능한 병합일지라도 GitHub 상에서는 해당 옵션 선택시 항상 포크 형태로 병합커밋 이력을 직선형으로 유지하고 싶다면 Rebase and merge 옵션을 선택해야 함하지만 Rebase and merge 옵션을 선택할 경우 커밋 해시는 변경됨커밋 이력 보존SHA 동일Squash and merge직선형으로 병합커밋 이력 손실SHA 변경Rebase and merge직선형으로 병합커밋 이력 보존SHA 변경

Dev/VCS 2025.05.12

LangChain

LangChainLangChain 은 LLM 기반 애플리케이션을 구성하는 프레임워크로, 다양한 모듈 (LangChain Components) 을 조합해 복잡한 LLM 기반 파이프라인을 구성하는 기능을 제공합니다. LangChain 은 Agent 뿐 아니라, PromptTemplate, Tool, Chain, Memory 등 다양한 구성 요소를 제공하며, Agent 는 외부 Tool 들과 LLM 을 동적으로 연결해 문제를 해결하는 방식의 한 예입니다. 한 편, LangChain 이 LLM 을 중심으로 설계된 건 맞지만, 전체 구조는 LLM 을 선택적으로 사용하는 조합형 프레임워크이기 때문에 LangChain 을 사용할 때 LLM 이 필수 구성 요소는 아닙니다.LangChain 의 Agent 는 LLM 의 ..

AI/LLM 2025.05.08

git fetch

fetch원격 브랜치의 최신 상태를 로컬의 원격 추적 브랜치로 업데이트하는 명령어입니다.git fetch / 에서 fetch 해옴git fetchremote alias 가 origin 으로 설정된 원격 저장소에서 모든 브랜치 정보를 가져옴git fetch --pruneremote alias 가 origin 으로 설정된 원격 저장소에서 모든 브랜치 정보를 prune 방식으로 가져옴git fetch --all모든 원격 저장소에서 모든 브랜치 정보를 가져옴git fetch --all --prune모든 원격 저장소에서 모든 브랜치 정보를 prune 방식으로 가져옴

Dev/VCS 2025.05.06

Git 브랜치 관리

Git Flow 기반 워크플로에서의 브랜치 관리 방식develop:main 브랜치에 병합한 뒤에도 삭제하지 않는것이 일반적 (프로젝트의 지속적인 개발 흐름을 담당하는 브랜치이므로)main 브랜치로 병합 시 merge 방식이 일반적 (릴리즈 단위의 기록을 보존하려는 목적, 여러 feature 통합 흔적 유지)feature/*:develop 브랜치에 병합한 뒤 삭제하는 것이 일반적 (기능 개발이 완료되어 develop 에 반영되었기 때문에 더 이상 해당 브랜치가 필요 없음. GitHub, GitLab 등에서는 PR 을 머지할 때 자동으로 브랜치를 삭제하는 옵션도 있음)develop 브랜치로 병합 시 squash 또는 rebase 방식이 일반적 (커밋을 정리해서 develop 히스토리를 깔끔하게 유지하려는 목..

Dev/VCS 2025.04.25

Git 브랜치 이름 변경

로컬 브랜치 이름 변경로컬 브랜치 이름 바꾸기git branch -m 현재 체크아웃 중이라면 아래 명령어로도 간단하게 변경 가능git branch -m 원격 저장소에 반영로컬에서 변경된 브랜치의 이름을 원격 저장소에 반영하는 방법은 원격 저장소에 있는 브랜치의 이름을 실제로 바꾸는 방식이 아니라 새 브랜치로 푸시하고 이전 브랜치를 삭제하는 방식입니다.git push # 변경된 이름의 브랜치 원격 저장소로 푸시git push --delete # 이전 이름의 브랜치 원격 저장소에서 삭제

Dev/VCS 2025.04.24

LLM Agent

LLM AgentLLM Agent 는 LLM 이 사용자 입력이나 외부 환경에 따라 적절한 판단을 내려, 사전에 정의된 도구 (tool), 함수 (function), API 등을 자율적으로 호출하거나 실행할 수 있는 구조를 가진 시스템입니다. 즉, 단순한 문장 생성 모델이 아니라, 행동 가능한 의사결정 주체로서의 LLM 을 의미합니다.LLM Agent 구현 방법LLM Agent 는 단순한 답변 생성기를 넘어 복잡한 조건 분기를 스스로 판단해 다음 단계를 결정할 수 있어야 합니다. 이를 위해 LLM 에게 function call, tool use, 분기 판단을 학습시키거나 프롬프트로 유도합니다. LangChain 은 Agent 시스템을 쉽게 만들 수 있도록 도와주는 프레임워크입니다. 하지만 LangChain..

AI/LLM 2025.04.24

패키지, 라이브러리, API

라이브러리 vs 패키지라이브러리: 특정 목적을 위한 기능들을 모아 놓은 코드의 집합패키지: 라이브러리를 포함하며, 구조화된 배포 단위. 메타데이터와 API 를 포함할 수 있음Python 에서는 패키지라는 표현을, JavaScript 에서는 라이브러리라는 표현을 더 자주 사용합니다.패키지 vs API패키지는 단순히 API 만 모아놓은 것이 아니라, 내부에 실제 기능이 구현되어 있는 코드 묶음입니다. 이 기능들은 API (Application Programming Interface) 를 통해 외부에서 호출할 수 있도록 노출되며 사용자는 패키지 내부 구현을 몰라도, 패키지가 제공하는 API 를 통해 필요한 기능을 간단하게 사용할 수 있습니다. 즉, 패키지는 단순히 API 만 모아놓은 것이 아니라, 내부에 기능..

기타 지식 2025.04.10

Neo4j DBMS 구조와 포트별 역할

Neo4j DBMS 구조Neo4j 는 DBMS 로 데이터베이스를 포함하여 그 주변 관리, 보안, 쿼리 처리, 클라이언트 통신, API 서비스 등을 총괄하는 시스템입니다. http://localhost:7474 에 접속 시 보이는 Neo4j Browser 또한 Neo4j DBMS 에서 제공하는 웹 기반 클라이언트 애플리케이션입니다. Neo4j DBMS 는 운영체제에 설치되어 포트를 통해 기능을 분리 제공하게 됩니다.포트는 DBMS 가 외부 요청을 수신하는 입구 역할일 뿐, 그 자체에 프로그램을 설치하는 개념은 아닙니다.Neo4j 포트별 역할Bolt port: 7687Neo4j DBMS 가 제공하는 핵심 기능인 쿼리 처리를 위한 쿼리 처리용 포트HTTP port: 7474Neo4j Browser 웹 애플리케..

CS/DB 2025.04.10