From bf1c660ed98864dc0de0e9c23ee0e58634137587 Mon Sep 17 00:00:00 2001 From: dihwang Date: Fri, 10 Apr 2026 09:57:02 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=B5=EB=B6=80=EB=82=B4=EC=9A=A9=20?= =?UTF-8?q?=EB=AA=87=EA=B0=9C=EC=B6=94=EA=B0=80=20+=20root=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 2 +- content/01.Shelf/AI/Coding Agent.md | 1 + content/01.Shelf/EIOM/DB 구조.md | 0 content/01.Shelf/WORKBENCH/개발(Dev).md | 5 ++ content/02.Volume/AI/Aider 사용기.md | 76 +++++++++++++++++++ .../유닉스 철학 (The Unix Philosophy).md | 2 +- .../02.Volume/Coding/파이썬(python) 통찰.md | 37 +++++++++ content/03.Note/CPython.md | 52 +++++++++++++ content/03.Note/파이썬의 탄생 배경.md | 55 ++++++++++++++ 9 files changed, 228 insertions(+), 2 deletions(-) create mode 100644 content/01.Shelf/AI/Coding Agent.md create mode 100644 content/01.Shelf/EIOM/DB 구조.md create mode 100644 content/01.Shelf/WORKBENCH/개발(Dev).md create mode 100644 content/02.Volume/AI/Aider 사용기.md create mode 100644 content/02.Volume/Coding/파이썬(python) 통찰.md create mode 100644 content/03.Note/CPython.md create mode 100644 content/03.Note/파이썬의 탄생 배경.md diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bd0e644..27cc6ff 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -34,7 +34,7 @@ jobs: username: ${{ secrets.GCE_USERNAME }} key: ${{ secrets.GCE_SSH_KEY }} source: "deploy.tar.gz" - target: "/home/dihwang/white-smith-blog" + target: "/var/www/white-smith-blog" - name: Extract Archive on GCE uses: appleboy/ssh-action@master diff --git a/content/01.Shelf/AI/Coding Agent.md b/content/01.Shelf/AI/Coding Agent.md new file mode 100644 index 0000000..b7da233 --- /dev/null +++ b/content/01.Shelf/AI/Coding Agent.md @@ -0,0 +1 @@ +[[Aider 사용기]] \ No newline at end of file diff --git a/content/01.Shelf/EIOM/DB 구조.md b/content/01.Shelf/EIOM/DB 구조.md new file mode 100644 index 0000000..e69de29 diff --git a/content/01.Shelf/WORKBENCH/개발(Dev).md b/content/01.Shelf/WORKBENCH/개발(Dev).md new file mode 100644 index 0000000..21b2925 --- /dev/null +++ b/content/01.Shelf/WORKBENCH/개발(Dev).md @@ -0,0 +1,5 @@ +## Language +[[파이썬(python) 통찰]] + +## Tech +[[Functional Domain Modeling]] \ No newline at end of file diff --git a/content/02.Volume/AI/Aider 사용기.md b/content/02.Volume/AI/Aider 사용기.md new file mode 100644 index 0000000..26f777f --- /dev/null +++ b/content/02.Volume/AI/Aider 사용기.md @@ -0,0 +1,76 @@ +--- +id: Aider 20260409 +created: 2026-04-09 15:19 +tags: +--- +시작은 단순했다. +> [!question] +> Q. ai agent가 뭐야 +> +> A. **AI 에이전트(AI Agent)**는 단순히 질문에 답하는 챗봇을 넘어, 사용자가 설정한 **목표(Goal)**를 달성하기 위해 스스로 계획을 세우고, 도구를 사용하며, 실행까지 완료하는 **자율적 소프트웨어**를 의미합니다. + +난 이정도까지 바란건 아니었는데 + + +> [!question] +> Q. 내가원하는건 너랑 대화하듯이 cli 같은 환경을 통해 대화하는데 ai가 내가 원하는 방향대로 실제 내 파일을 수정해주는거야 내가 복사 붙여넣기 해야하는게 아니고 +> +> A. 지금 말씀하신 방식은 단순한 채팅을 넘어선 **코딩 에이전트(Coding Agent)** 혹은 **엔지니어링 에이전트**의 전형적인 모습이네요. 복사 붙여넣기 없이 AI가 직접 파일을 수정하고 실행하려면, AI에게 내 PC의 파일 시스템에 접근할 수 있는 **권한(Capability)**과 **도구(Tools)**가 있어야 합니다. +> +> 현재 이런 경험을 제공하는 대표적인 도구들과 작동 원리를 정리해 드릴게요. + +## 1. 지금 바로 사용할 수 있는 대표적인 도구 + +### **Cursor (커서)** + +가장 대중적이고 완성도가 높습니다. VS Code를 포크(Fork)해서 만든 에디터라 사용법이 익숙합니다. + +- **작동 방식:** 채팅창에서 `Command + K`나 `L`을 눌러 수정 요청을 하면, AI가 코드를 직접 작성하고 사용자가 **[Accept]** 버튼만 누르면 파일에 바로 반영됩니다. + +- **장점:** 에디터와 일체화되어 있어 흐름이 매우 매끄럽습니다. + + +### **Aider (에이더)** + +질문하신 **CLI 환경**에 가장 부합하는 강력한 도구입니다. 터미널(Terminal)에서 직접 실행합니다. + +- **작동 방식:** 터미널에서 `aider`를 실행하고 대화하면, AI가 로컬 파일을 읽고 직접 수정(Edit)한 뒤 자동으로 **Git Commit**까지 남겨줍니다. + +- **장점:** 복사 붙여넣기가 전혀 필요 없고, 터미널 기반이라 개발 환경에 통합하기 좋습니다. + + +### **Cline (구 Claude Dev)** + +VS Code의 확장 프로그램(Extension)으로, 최근 가장 핫한 오픈소스 에이전트입니다. + +- **작동 방식:** 파일 읽기/쓰기, 터미널 명령 실행, 브라우저 실행 권한을 AI에게 부여합니다. "이 프로젝트 빌드해보고 에러 나면 고쳐줘"라고 하면 스스로 파일을 수정하고 터미널에서 테스트까지 돌려봅니다. + +## 추천하는 시작 방법 + +==만약 **CLI 환경**을 선호하신다면 **Aider**를 먼저 써보시는 걸 강력 추천합니다.== + +Aider를 써보기로 함 + +이거 설치방법같은건 못적겠다. +변수도 너무 많고 내용도 너무 길고 그냥 ai한테 물어보면 알아서 잘 설명해주는데.. + + +> [!warning] 파이썬은 3.12.10 을 설치하자 + +처음에 3.14가 깔려있었는데 에이더가 제대로 설치가 안되고 에러가 났었음. +Stable 버전인 3.13으로 다시 설치했는데 이것도 에러났음 +3.12로 설치하니까 에러가 발생되지 않았음. +파이썬 버전은 3.12.13까지 있지만 3.12.10까지만 설치 installer가 제공되니까 3.12.10을 설치하자. +(이게 마음이 편할거 같음) + +```cmd +C:\Users\Administrator\MyFolder\test\aider +``` +이 경로에 설치했음 나는 + +```bash +Administrator@DESKTOP-UUOTCE2 MINGW64 ~/MyFolder/test/aider (master) +$ aider --version +aider 0.86.2 +``` +진짜 힘들게설치함; \ No newline at end of file diff --git a/content/02.Volume/CleanCode/유닉스 철학 (The Unix Philosophy).md b/content/02.Volume/CleanCode/유닉스 철학 (The Unix Philosophy).md index 0ba6eda..53ab19d 100644 --- a/content/02.Volume/CleanCode/유닉스 철학 (The Unix Philosophy).md +++ b/content/02.Volume/CleanCode/유닉스 철학 (The Unix Philosophy).md @@ -65,7 +65,7 @@ tags: ## 4. 왜 유닉스 철학이 중요한가요? -오늘날 현대적인 소프트웨어 개발 방법론인 **마이크로서비스 아키텍처(MSA)** 나 **함수형 프로그래밍**의 뿌리도 이 유닉스 철학에 닿아 있습니다. +오늘날 현대적인 소프트웨어 개발 방법론인 **마이크로서비스 아키텍처(MSA)** 나 [[함수형 프로그래밍(Functional Programming)]]의 뿌리도 이 유닉스 철학에 닿아 있습니다. - **유지보수 용이:** 작고 단순한 코드는 고치기 쉽습니다. diff --git a/content/02.Volume/Coding/파이썬(python) 통찰.md b/content/02.Volume/Coding/파이썬(python) 통찰.md new file mode 100644 index 0000000..dfae7a5 --- /dev/null +++ b/content/02.Volume/Coding/파이썬(python) 통찰.md @@ -0,0 +1,37 @@ +--- +id: 파이썬(python) 통찰 20260410 +created: 2026-04-10 09:15 +tags: +--- +파이썬을 사용하다보면 Visual Studio Build Tools 를 설치하라는 에러, 안내를 보는 경우가 많다. +왜 파이썬을 쓰는데 저게 필요한거지?? 궁금해졌다. + +> [!question] +> Q. 파이썬은 결국 c,c++ 코드가 기반인거야? 왜 이런 질문을 하냐면 파이썬 코드가 결국 c,c++ 코드를 호출해서 사용하는것 같은 느낌이 들어서.. 파이썬 라이브러리중에 visual studio tool 이런거 설치하라고 하는것들도 많고 +> +> A. 정확한 통찰입니다! 질문하신 내용처럼 우리가 흔히 사용하는 파이썬(CPython)은 그 뿌리가 **C 언어**에 깊게 박혀 있습니다. 파이썬이 "C의 옷을 입은 언어"라고 불리는 이유를 몇 가지 핵심 포인트로 정리해 드릴게요. + +엥..? 진짜로? [[CPython]] 참고 +아무튼 이러한 사유로 Visual Stuido Build Tools가 필요하다. + +> [!note] Visual Stuido Build Tools +> 파이썬 자체는 오픈 소스이지만, 여러분이 사용 중인 **윈도우(Windows)** 운영체제는 마이크로소프트의 제품입니다. 윈도우에서 C나 C++ 코드를 기계어로 컴파일하여 실행 파일(`.exe`)이나 라이브러리 파일(`.dll`)로 만들려면, 윈도우 환경에 최적화된 컴파일러가 필요합니다. +> +> - **MSVC (Microsoft Visual C++):** 이것이 마이크로소프트가 만든 C/C++ 컴파일러의 이름입니다. +> +> - **Build Tools:** 비주얼 스튜디오라는 무거운 프로그램 전체를 설치하지 않고, 딱 이 **컴파일러 기능**만 떼어서 설치할 수 있게 만든 패키지가 바로 `Visual Studio Build Tools`입니다. + +파이썬 자체는 일종의 인터페이스 언어 (glue language라고 더 많이 표현한다고 함)일 뿐이기 때문에 +파이썬 코드를 실제로 실행해줄 주체가 필요한데 그게 윈도우 환경에서는 MSVC이고 이 컴파일러 기능만 설치할 수 있도록 만들어놓은 패키지가 build tools이기 때문에 (윈도우에서) 파이썬(CPython)을 사용하기 위해서는 visual studio build tools의 설치가 선행되어야 한다. + +결국 C,C++가 성능적으로 굉장한 이점이 있지만 사용하기 어렵다는 단점이 있는데 이를 극복하기 위한 수단으로 파이썬이 개발되었다고 볼 수 있다. [[파이썬의 탄생 배경]] + +### 정리하자면 + +파이썬 코드는 마치 **리모컨**과 같습니다. + +- 우리는 리모컨(파이썬)의 버튼을 누르지만, + +- 실제로 TV 안에서 전기를 흐르게 하고 화면을 켜는 복잡한 회로(C, C++)는 따로 있는 것이죠. + +- 그렇기에 **"파이썬은 C, C++ 기반으로 동작한다"** 는 말은 기술적으로 매우 정확한 사실입니다. \ No newline at end of file diff --git a/content/03.Note/CPython.md b/content/03.Note/CPython.md new file mode 100644 index 0000000..1127e51 --- /dev/null +++ b/content/03.Note/CPython.md @@ -0,0 +1,52 @@ +--- +id: CPython 20260410 +created: 2026-04-10 09:16 +tags: + - python +aliases: +--- +## 💡 생각 +Python은 일종의 문법이고 이 문법을 cpu가 알아먹을 수 있게 변환해주는 엔진이 CPython이다. + +> [!question] +> Q. Python은 일종의 문법이고 이 문법을 cpu가 알아먹을 수 있게 변환해주는 엔진이 CPython이다. +> 라고 보면되는거야? +> +> A. 정확한 요약입니다! 비유하자면 **Python은 언어(설계도)**이고, **CPython은 그 언어를 실행 가능한 기계어로 번역해주는 번역가(구현체)** 라고 볼 수 있습니다. + +그래서 CPython 을 사용할 때 Visual Studio Build Tools 가 필요한가보다. +기반이 C니까.. + +--- +## 📑 개념 +CPython은 Python 프로그래밍 언어의 **기본 구현체**이자, 전 세계에서 가장 널리 사용되는 파이썬 실행기입니다. 파이썬 언어 자체는 '명세(Specification)'이고, 이를 실제로 컴퓨터에서 돌아가게 만든 '소프트웨어'가 바로 CPython입니다. + +## 📌 파이썬의 표준 구현체: CPython + +우리가 터미널에 `python`이라고 입력해서 실행하는 프로그램의 정식 명칭은 **CPython**입니다. 이는 파이썬이라는 언어의 설계도(명세)를 **C 언어**로 구현한 결과물입니다. + +- **해석기(Interpreter):** 파이썬 코드를 읽어서 컴퓨터가 이해할 수 있는 바이트코드로 바꾸고 실행하는 엔진 자체가 C로 작성되어 있습니다. + +- **자료형:** 파이썬의 숫자(`int`), 리스트(`list`), 딕셔너리(`dict`) 같은 기본 자료형들도 내부적으로는 C의 구조체(struct)로 정의되어 있습니다. + +## 주요 특징 + +- **C 언어로 작성:** 이름에서 알 수 있듯이 C 언어로 개발되었습니다. 파이썬 코드를 실행하기 위해 C 언어의 성능과 시스템 접근 능력을 활용합니다. + +- **인터프리터이자 컴파일러:** 파이썬 코드를 바로 실행하는 것처럼 보이지만, 내부적으로는 파이썬 코드를 **바이트코드(Bytecode)** 로 먼저 컴파일한 후, 이를 CPython 가상 머신(VM)에서 해석하여 실행합니다. + +- **표준 구현체:** 파이썬 재단(PSF)에서 관리하며, 새로운 파이썬 기능이 추가될 때 가장 먼저 반영되는 기준점이 됩니다. + +## 📝 파이썬을 실행하는 도구는 CPython 외에도 여러 가지가 있습니다. +> [!note] +> |**종류**|**특징**| +|---|---| +|**PyPy**|JIT(Just-In-Time) 컴파일러를 사용하여 CPython보다 실행 속도가 훨씬 빠름.| +|**Jython**|자바 가상 머신(JVM) 위에서 동작하며 자바 라이브러리 활용 가능.| +|**IronPython**|.NET 프레임워크 기반으로 동작.| + +--- + +하지만 Python 이라고 하면 그냥 CPython 이라고 보면 됨. +하지만 **CPython**이 가장 널리 쓰이기 때문에, 보통 우리가 파이썬이라고 부르는 것은 이 CPython 엔진을 뜻하는 경우가 99%입니다. +라고 함. \ No newline at end of file diff --git a/content/03.Note/파이썬의 탄생 배경.md b/content/03.Note/파이썬의 탄생 배경.md new file mode 100644 index 0000000..de988d7 --- /dev/null +++ b/content/03.Note/파이썬의 탄생 배경.md @@ -0,0 +1,55 @@ +--- +id: 파이썬의 탄생 배경 20260410 +created: 2026-04-10 09:33 +tags: + - python +aliases: +--- +## 💡 생각 +강력한 성능을 자랑하는 C,C++ 언어를 현대적인 문법과 방식으로 사용하고 싶다. +라는 니즈의 해결책으로 개발되었다. + +--- +## 📑 개념 +파이썬은 **개발자의 시간**과 **컴퓨터의 시간** 사이에서 아주 영리한 타협점을 찾은 결과물입니다. + +## 1. 개발 효율성과 실행 속도의 트레이드오프(Trade-off) + +C나 C++는 하드웨어를 직접 제어할 수 있어 성능을 극한으로 끌어올릴 수 있지만, 메모리 관리나 복잡한 문법 때문에 개발자가 신경 써야 할 부분이 너무 많습니다. + +- **C/C++의 철학:** 컴퓨터가 최대한 빠르게 일하게 만들자. (사람이 고생하자) + +- **파이썬의 철학:** 사람이 최대한 편하고 빠르게 코드를 짜게 만들자. (컴퓨터는 좀 더 고생해도 된다) + +--- + +## 2. 성능의 한계를 극복하는 전략: 80/20 법칙 + +파이썬 개발자들은 모든 코드가 다 빠를 필요는 없다는 점에 주목했습니다. 프로그램 실행 시간의 **80%** 는 전체 코드의 **20%** 도 안 되는 핵심 연산 구간에서 소요됩니다. + +- **핵심 엔진 (C/C++):** 계산이 많이 필요한 무거운 작업(수치 연산, 인공지능 행렬 계산 등)은 C/C++로 미리 만들어 둡니다. + +- **사용자 인터페이스 (Python):** 사용자는 파이썬이라는 쉬운 도구로 이 엔진들을 조립하고 명령만 내립니다. + + +이렇게 하면 **개발 속도(파이썬)** 와 **실행 속도(C/C++)** 라는 두 마리 토끼를 모두 잡을 수 있게 됩니다. + +--- + +## 3. 파이썬의 창시자, 귀도 반 로섬의 의도 + +파이썬을 만든 귀도 반 로섬은 당시 시스템 관리자들이 복잡한 C 언어 대신, **읽기 쉽고 쓰기 편하면서도** 운영체제의 기능을 충분히 활용할 수 있는 언어를 원한다는 것을 알고 있었습니다. + +그는 파이썬을 **확장 가능한(Extensible)** 언어로 설계했습니다. 즉, 파이썬으로 만들다가 성능이 부족하면 그 부분만 C로 짜서 끼워 넣을 수 있게 만든 것이죠. + +--- + +## 4. 현대의 관점: '인터페이스'로서의 정점 + +질문하신 것처럼, 오늘날 파이썬이 데이터 과학이나 AI 분야에서 독보적인 1위가 된 이유도 이 인터페이스 역할 덕분입니다. + +- **TensorFlow/PyTorch:** 실제 딥러닝 연산은 C++와 CUDA로 돌아가지만, 전 세계 연구자들은 파이썬으로 모델을 설계합니다. + +- **Pandas/NumPy:** 복잡한 데이터 분석 처리는 내부의 C 코드가 수행하고, 사용자는 간단한 파이썬 함수 하나로 결과를 얻습니다. + +---