MyStock - JSON Export 데이터를 AI에게 던졌다
MyStock에 JSON Export를 붙인 이유는 거창하지 않았고, 내가 가진 포트폴리오와 과거 시장 데이터를 한 번에 넘기고, AI(LLM)에게 “오늘 시장환경에서 내 포트폴리오를 어떻게 운용하는 방향이 좋을지” 물어보고 싶었다. 계좌 상태, 보유 ETF, 가격과 거래량, 투자자 수급, ETF 구성종목과 최근 변화, 실제 기초자산 중복 노출, 거래내역,…
MyStock에 JSON Export를 붙인 이유는 거창하지 않았고, 내가 가진 포트폴리오와 과거 시장 데이터를 한 번에 넘기고, AI(LLM)에게 “오늘 시장환경에서 내 포트폴리오를 어떻게 운용하는 방향이 좋을지” 물어보고 싶었다. 계좌 상태, 보유 ETF, 가격과 거래량, 투자자 수급, ETF 구성종목과 최근 변화, 실제 기초자산 중복 노출, 거래내역,…
요즘 퇴근 후, ChatGPT하고 노느라고 집에서 PC 사용이 부쩍 늘어나, 인터넷이 간헐적으로 끊기는 상태를 즉각 느낄수 있었다. 예전에 사용한 무선 공유기 ipTIME은 이럴 때마다 재부팅 한번으로 해결되긴 했는데, 천장형 AP는 살펴보니 전원공급 어댑터 연결이 없는 것이 아닌가? 그래서 신발장 네트워크 단자함을 열어 일단 라우터를 재부팅하였으나, 여전…
MyStock의 DB 작업이 어느 정도 마무리되고 투자기록까지 실제 데이터와 연결되면서 프로그램의 기본적인 뼈대는 꽤 많이 갖춰졌다. 처음에는 데이터를 가져와 화면에 보여주는 것이 중요했고, 이후에는 어떤 데이터를 DB에 저장하고 무엇을 기준 데이터로 삼을지가 중요했다. 그런데 직접 사용하기 시작하니 다른 것들이 눈에 들어오기 시작했다. 기능은 동작하지만…
MyStock에 처음 투자성과라는 메뉴를 만들었을 때 내가 보고 싶었던 건 단순했다. 내가 가진 종목들의 수익률을 한 화면에서 보고, KOSPI나 S&P500 같은 시장 지수와 비교하면 내 투자가 괜찮았는지 어느 정도 보일 거라고 생각했다. 그런데 실제로 만들어 놓고 보니 생각보다 별로였다. 종목이 많아질수록 차트는 복잡해졌고, 변동성이 큰 종목 하나가 들…
MyStock의 DB 작업이 거의 끝나가던 시점이었다. DB에 데이터를 쌓는 기반을 만들고 화면에 연결하는 과정에서 생각보다 많은 문제를 겪었다. 특히 Daily 데이터를 언제 최신으로 볼 것인지 제대로 정의하지 않은 채 눈앞의 버그를 하나씩 수정하면서 정책이 계속 복잡해졌다. 문제는 코드만 복잡해진 것이 아니었다. GitHub Codex Connector…
DB에 데이터를 저장할 수 있는 기반을 만들었을 때는 큰 산을 넘었다고 생각했다. 기존에는 API에서 데이터를 받아 메모리에 올리고 화면에 보여줬다. 이제 같은 데이터를 DB에도 쌓을 수 있게 됐으니, 화면에서 DB를 먼저 읽도록 연결하면 될 것 같았다. 적어도 처음에는 그게 제일 쉬운 일인 줄 알았다. DB에 데이터가 있으면 먼저 보여주고,부족하거나 오래…
MyStock을 처음 만들 때는 DB를 넣을 생각이 없었다. 한국투자증권에 계좌가 여러 개 있는데, 각 계좌를 하나씩 들어가 보지 않고 보유 종목을 한 화면에서 빠르게 훑어보고 싶었다. 시작은 정말 그 정도였다. 계좌 정보의 원본은 어차피 한국투자증권에 있기 때문에 내가 따로 계좌 정보를 저장하고 관리할 이유가 없다고 생각했다. 프로그램을 실행하면 REST…
생각보다 빨리 ESP32 최신 SDK 적용에 따른 리팩토링 작업 시기가 앞당겨졌다. 작업을 빠르게 진행하려고 Codex를 적극적으로 쓰기 시작했는데, 개인 계정의 토큰이 녹아가는 게 눈에 보였다. 그래서 회사에서 제공하는 Claude 대신 내가 익숙한 Codex를 쓰는 쪽으로 변경 신청했다. 문제는 회사 계정으로 로그인한 뒤였다. VS Code와 데스크톱…
QA에서 한글 폰트 자간이 이상하다는 리포트가 들어왔다. 화면을 확인해보니 “잠시만 기다려주세요” 문구에서 일부 한글이 서로 겹쳐 보였다. 얼핏 보면 사소한 화면 문제처럼 보였지만, UI 코드에서 문자열 하나를 잘못 배치한 문제보다는 폰트 렌더링이나 LVGL 라이브러리 쪽 문제일 가능성이 높다고 봤다. 비슷한 문제를 처음 본 것도 아니었다. 이전에도 숫자나…
MyStock을 개발하면서 나는 구현에 1%도 관여하지 않는다는 전제로 진행하고 있다. 기능의 목적과 실제 화면에서 어떻게 동작해야 하는지는 내가 결정하지만, 구현 과정에서는 ChatGPT와 대화하면서 요구사항과 설계를 구체화하고, 정리된 내용을 Codex에 전달해 실제 코드를 수정하는 방식을 사용하고 있다. 코드를 직접 보지 않는 만큼 나름대로 안전장치도…
최근 개인 프로젝트 MyStock을 진행하면서 Python 코드를 전혀 보지 않고, 실제 구현에도 1%도 관여하지 않은 상태에서 개발을 AI에게 맡기면 어디까지 진행할 수 있을지 실험하고 있습니다. 처음에는 단순한 호기심으로 시작..
아침부터 서버와 ESP32 사이에서 이상한 문제가 하나 보였다. 서버에서는 CertificateSigned 메시지를 정상적으로 내려보내고 있었다. 그런데 ESP32에서는 인증서 데이터가 대부분 중간에 잘렸다. 가끔 정상적으로 들어올 때도 있었지만 대부분 실패했다. ESP32 담당자가 아직 출근 전이지만, ESP32의 전체 동작 흐름은 대충 알고 있다. 그런…
오늘 클리앙에서 AI 코딩에 대한 글과 댓글을 봤는데, 댓글의 일부은 내 생각과 매우 비슷했고 AI 코딩 능력이 매우 뛰어나더라도 사람인 개발자의 영역은 여전히 (당분간) 존재할 것이라고 생각한다. 개발자얘기 : 요즘 코드리뷰 하다보면 맘이 착잡하네요. : 클리앙 유럽에서 개발자로 재직중인 K입니다. 이제 개발자들이 그냥 AI코드를 여과없이 올리는 상황이고…
지난 글에서 PROJECT.md를 만들고, 새 대화에서도 저장소와 기록을 기준으로 프로젝트 컨텍스트를 복구하도록 개발 프로세스를 정리했고, 간단한 테스트에서는 의도한 대로 동작하는 것도 확인했다. 그래서 이제 어느 정도 정리가 됐다고 생각했는데 새 일감을 시작하면서 새 대화방을 열었고, 첫 명령부터 바로 문제가 생겼다. 새 대화방의 첫 명령부터 저장소를 보…
MyStock 투자분석 화면에는 기존에 시장심리를 보조지표로 표시하고 있었다. 여기에 수급을 붙여 외국인·개인·기관의 매매 추세까지 함께 확인할 수 있으면 좋겠다고 생각했다. 시작할 때는 이렇게 여러 번 방향..
AI 사건일지에서 언급한 것처럼 프로젝트 전체를 아는 사람이 없어졌고, MyStock 리팩토링 시점부터 ChatGPT & Codex 그리고 나 사이에서 개발 방향의 초점이 계속 어긋나기 시작했다. 그동안 미루고 미루던 PROJECT.md 규칙을 시급하게 적용해야 할 시점이 온 것 같다. AI 사건일지 1편 - AI에게 구현을 맡겼더…
2편을 정리하면서 마지막에 이런 생각이 들었고, 이번에는 Makefile이나 CMake가 아니라 Prompt와 Markdown을 만들고 있었다. 그래서 예전에 새로운 칩셋이나 플랫폼을 받아 개발을 시작하던 방식과 지금 MyStock에서 AI를 사용하는 방식을 한번 나란히 놓아봤다. 과거 지금 신규 칩셋 / 플랫폼 AI Vendor SDK ..
지난 글의 마지막에는 한 가지 질문을 남겼다. ChatGPT도 소스를 보면 되는 것 아닐까? 생각만 하면 가장 단순한 해결 방법이었다. MyStock의 실제 Repository를 가장 잘 아는 것은 Codex였다. 반대로 나는 오랫동안 ChatGPT와 프로젝트의 목적과 방향을 이야기해 왔지만, ChatGPT는 현재 소스를 직접 보고 있지 않았다. 그렇다면…
MyStock을 처음 만들기 시작했을 때만 해도 이렇게까지 복잡한 이야기가 될 거라고는 생각하지 않았다. KIS Open API로 계좌 잔고를 확인하고, 보유 종목을 보고, 필요한 정보를 조금씩 붙여가면 되는 개인용 프로그램이었다. Python을 새로 공부해서 직접 만들 생각도 없었다. 이미 오래 개발 일을 해왔지만, 새로운 언어나 프레임워크를 다시 익히는…
자동갱신 하나 때문에 참 멀리 돌아왔다. MyStock 개발 초반에는 금융이나 주식 데이터의 생태를 잘 모르는 상태에서 기능 구현에 급급했다. AI에게 원하는 기능을 설명하고, 일단 내가 원한 기능이 동작하는지를 확인하면서 하나씩 기능을 추가했다. 그런데 기능이 늘어날수록 이 방식으로 계속 가면 신규 기능 하나를 추가할 때마다 AI가 확인해야 할 범위가 넓…
티스토리 메인을 보다가 AI 코딩 관련 글 하나가 눈에 들어왔다. 요즘 나도 ChatGPT와 Codex를 가지고 놀고 있으니 그냥 한번 눌러봤다. 읽다 보니 MCP, Skills, Sub-agent, Context Engineering 같은 용어들이 줄줄이 나왔고, 흠... MCP는 VS Code에서 본 적은 있다. 근데 관심 없었다. 대충 AI가 외부의…
MyStock의 첫 리팩토링을 마무리하며 버전은 0.1.0으로 올렸다. 앞으로 새기능을 위한 사전 밑작업이기 때문에 티도 안나고 시간과 토큰만을 잡아먹는 작업이었다. 미래를 위한 투자라고 생각하고 진했지만, 정말 가장 무료하고 재미없는 작업이었다. MyStock은 대시보드를 시작해 시황분석, 투자현황, 투자분석으로 기능이 계속 늘어났고, 기능이 늘어날수록…
MyStock 리팩토링 Phase 5에서는 먼저 무엇을 더 고칠지부터 다시 확인했다. Phase 3과 Phase 4에서 원래 작업하려던 구조가 이미 앞선 Phase에 반영되어 있었기 때문이다. 이번에는 계획을 그대로 실행하지 않고 Step 0에서 현재 구조를 확인한 뒤, 실제로 MainWindow에 남아 있는 책임만 작업 범위로 잡았다. 실제로 남아 있던…
MyStock 리팩토링 Phase 4를 마치고도 한 가지 의문이 남았다. Phase 4에서 정리하려던 AnalysisController가 이미 Phase 2에서 구현되어 있었고, Phase 3에서 다루려던 RefreshCoordinator도 마찬가지였다. 한 번이면 이전 작업 범위가 조금 넓어진 것으로 생각할 수 있었다. 그런데 두 Phase가 연속으로 같…
MyStock 리팩토링 Phase 4는 AnalysisController 경계를 정리하는 작업이 될 거라고 생각했다. 그런데 Step 0에서 현재 구조를 다시 확인하자 시작부터 예상이 빗나갔다. Phase 4에서 만들려고 했던 AnalysisController가 이미 존재했다. Phase 3에 이어 또 이미 끝난 작업을 만났다 이상한 일은 이번이 처음이 아…
Phase 2 작업을 끝내고 main에 머지했다. Phase 3의 목표인 RefreshCoordinator 구현이었다. Account와 Market의 자동 갱신 Timer 책임을 MainWindow 밖으로 옮기고, 기존 옵션과 기본값, 갱신 주기와 동작은 그대로 유지하는 작업이었다. Phase 2가 꽤 큰 작업이었기 때문에 Phase 3 계획을 다시 확인하…
Phase 2에서 MainWindow에 모여 있던 실행 책임은 Account, Refresh, Analysis, Market 쪽으로 하나씩 이동했다. 구조를 기능별 책임으로 나눈다는 방향 자체는 어렵지 않았다. 내가 중간중간 다시 확인했던 것은 리팩토링의 개념이 아니라, Codex가 실제 MyStock 코드에서 어떤 책임을 어디까지 옮겼고 그 객체들이 기존…
지난 글에서는 MyStock의 구조를 한 번에 바꾸지 않고 Account부터 점진적으로 분리하기로 했고, Phase 1에서 실제로 그 첫 작업을 진행했다. Phase 2는 그 다음 작업이었다. 그런데 이번 작업에서 나는 Python 리팩토링 코드를 직접 수정하지 않았다. ChatGPT와 다음에 어떤 책임을 분리할지 검토했고, 그 내용을 Step별 프롬프트로…
지난 글에서는 자동 갱신 기능을 다시 살펴보다 MyStock의 구조를 재검토했고, 전체 구조를 한 번에 변경하는 대신 AccountFeature부터 점진적으로 분리하기로 했다. 이번에는 그 판단을 실제 코드에 적용했다. 기존 기능을 모두 새 구조로 옮기는 것이 아니라 계좌 데이터의 책임부터 분리하고, 이미 안정화된 Worker와 QThread 동작은 최대한…
AI(ChatGPT / Codex)와 함께 개발하면서 쌓인 대화를 글로 만들고, 그 결과를 티스토리까지 자동으로 발행한다. 여기서 부터 시작했고 처음에는 정말 이 정도면 될 줄 알았다. ChatGPT → TPublisher → Tistory 막상 시작해보니 생각처럼 단순하지 않았다. ChatGPT 공유 링크로 대화를 가져오는 방식부터 한계가 있었고, 결국…