<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Park Hyoin</title><description>학습 기록과 개발 경험을 정리하는 공간</description><link>https://parkhyo.in/</link><item><title>FEMS 프로젝트 #1 — 저사양 로컬 (Ollama + bge-m3 + Chroma) vs Claude API RAG 비교 셋업</title><link>https://parkhyo.in/posts/fems-project-log-01/</link><guid isPermaLink="true">https://parkhyo.in/posts/fems-project-log-01/</guid><description>FEMS (Factory Energy Management System) 도메인을 학습하면서 RAG 프로토타입을 짜본다. GTX1660 Super · VRAM 6GB 의 저사양 환경에서 로컬 LLM(Ollama) 으로 추론하는 것과 Claude / OpenAI API 를 호출하는 것을 비교. 임베딩은 한국어 강한 bge-m3, 벡터 DB 는 Chroma. 콜드스타트 95초 → 워밍업 후 10초까지 줄어든 ollama, 정답률은 클라우드와 동등.</description><pubDate>Wed, 24 Jun 2026 16:00:00 GMT</pubDate></item><item><title>퀀트 공부 00 — pandas 기초 · 추세추종 vs 평균회귀 · 백테스트 4대 편향 · 가짜 알파</title><link>https://parkhyo.in/posts/quant-study-00-pandas/</link><guid isPermaLink="true">https://parkhyo.in/posts/quant-study-00-pandas/</guid><description>퀀트 학습 시리즈 시작. pandas Series/DataFrame, loc/iloc, 워밍업 구간(NaN), 수정주가로 인한 조용한 데이터 오염, 추세추종(MA·골든/데드 크로스) vs 평균회귀, 백테스트의 4대 편향(미래참조·과최적화·비현실적 거래비용·생존편향), 그리고 한 점이 아니라 분포로 봐야 가짜 알파를 거른다 (B&amp;H 초과 비율 / Alpha 중앙값 / 노출시간 / 워크포워드).</description><pubDate>Wed, 24 Jun 2026 01:00:00 GMT</pubDate></item><item><title>Claude Code 가 갑자기 안 되는 날 — 529 Overloaded 에러와 status.claude.com 의 존재</title><link>https://parkhyo.in/posts/claude-code-529-overloaded-jun-2026/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-code-529-overloaded-jun-2026/</guid><description>아침에 평소처럼 Claude Code 켰는데 자꾸 &apos;서버 과부하&apos; 라며 에이전트 호출이 실패. API Docs · 개발자 단톡 · status.claude.com 까지 따라가서 원인이 Anthropic 서버 측 일시 과부하임을 확인한 짧은 트러블슈팅 일지.</description><pubDate>Mon, 22 Jun 2026 07:00:00 GMT</pubDate></item><item><title>LangGraph 공부 일지 #2 — State 확장 + 동적 시스템 프롬프트 + 챗봇 (그리고 &apos;AI 가 기억한다&apos; 의 정체)</title><link>https://parkhyo.in/posts/langgraph-study-log-02/</link><guid isPermaLink="true">https://parkhyo.in/posts/langgraph-study-log-02/</guid><description>메시지만 들고 다니던 State 를 사용자 이름·도구 호출 횟수·세션 시작 시간까지 확장하고, 그 State 로 시스템 프롬프트를 동적으로 구성. 마지막에 챗봇을 만들다가 &apos;기억&apos; 의 정체를 알아챈 게 오늘의 진짜 깨달음.</description><pubDate>Sun, 21 Jun 2026 09:20:00 GMT</pubDate></item><item><title>LangGraph 공부 일지 #1 — 첫 그래프 + State 가 헷갈렸던 이유</title><link>https://parkhyo.in/posts/langgraph-study-log-01/</link><guid isPermaLink="true">https://parkhyo.in/posts/langgraph-study-log-01/</guid><description>공부 후보로 적어뒀던 LangGraph 시작. StateGraph 로 노드·엣지·조건 분기·루프 짜는 건 생각보다 직관적이었는데, &apos;State&apos; 라는 용어가 와닿지 않아 헤맸다. 결국 게임 캐릭터의 인벤토리·HP 로 비유해서 정착.</description><pubDate>Sun, 21 Jun 2026 06:20:00 GMT</pubDate></item><item><title>바이브코딩을 위한 상태 관리 어휘 — Client/Server State · Derived · Optimistic · Cache Invalidation</title><link>https://parkhyo.in/posts/state-management-vocabulary-for-vibe-coding/</link><guid isPermaLink="true">https://parkhyo.in/posts/state-management-vocabulary-for-vibe-coding/</guid><description>용어 정리 시리즈 4탄이자 마지막. &apos;AI 에게 상태 관리 짜줘&apos; 라는 막연한 지시를 벗어나기 위한 4가지 핵심 어휘 — Client/Server State 분리, Derived (파생 상태), Optimistic Update, Cache Invalidation + 트리거 패턴. 핵심 개념은 playground 에서 직접 만져볼 수 있게 따로 만들어뒀다.</description><pubDate>Sun, 21 Jun 2026 04:10:00 GMT</pubDate></item><item><title>내가 보려고 만든 공부 방법 — 신기술 학습 5단계 (선행 지식 → 코드 따라치기 → 사례 적용 → 남의 코드 읽기 → 정리)</title><link>https://parkhyo.in/posts/my-5-step-study-method-for-new-tech/</link><guid isPermaLink="true">https://parkhyo.in/posts/my-5-step-study-method-for-new-tech/</guid><description>용어 정리 + playground 방식과 코드 따라치기 방식을 둘 다 적용해본 결과 후자가 나에게 맞음. 그 깨달음을 바탕으로 앞으로의 신기술 학습 5단계 순서를 정리. 다음에 새 기술 배울 때 이 글에 돌아와서 순서대로.</description><pubDate>Sun, 21 Jun 2026 03:45:00 GMT</pubDate></item><item><title>Chroma + 내 블로그로 RAG Q&amp;A 시스템 만들기 — 부품에서 시스템으로</title><link>https://parkhyo.in/posts/rag-system-chroma-blog-qa/</link><guid isPermaLink="true">https://parkhyo.in/posts/rag-system-chroma-blog-qa/</guid><description>어제 RAG 의 부품 (임베딩 / 코사인 유사도 / 청크) 을 만져봤다면, 오늘은 그걸 통합한 시스템. Chroma 벡터 DB 도입, 블로그 270 청크를 인덱싱, OpenAI + Claude 로 Q&amp;A. 가장 인상 깊었던 건 &apos;블로그에 없는 정보&apos; 를 받았을 때 모르겠다고 답한 순간.</description><pubDate>Sat, 20 Jun 2026 07:45:00 GMT</pubDate></item><item><title>RAG 직접 구현 — 임베딩 · 코사인 유사도 · 청크 검색 (한국어 vs 영어 비교까지)</title><link>https://parkhyo.in/posts/rag-from-scratch-embedding-and-similarity-search/</link><guid isPermaLink="true">https://parkhyo.in/posts/rag-from-scratch-embedding-and-similarity-search/</guid><description>RAG (Retrieval-Augmented Generation) 의 안쪽을 직접 코드로 깎으면서 임베딩이 무엇인지부터 의심스러운 결과를 디버깅하는 데까지. OpenAI text-embedding-3-small 로 1536차원 벡터를 뽑고, 코사인 유사도로 비교하고, 한국어 vs 영어 성능을 비교하고, 청크 분할까지. 의외로 한국어 임베딩 유사도가 낮은 게 관찰됨.</description><pubDate>Fri, 19 Jun 2026 13:30:00 GMT</pubDate></item><item><title>바이브코딩을 위한 API 설계 어휘 — REST·상태 코드·멱등성·페이지네이션·인증/인가</title><link>https://parkhyo.in/posts/api-vocabulary-for-vibe-coding/</link><guid isPermaLink="true">https://parkhyo.in/posts/api-vocabulary-for-vibe-coding/</guid><description>용어 정리 시리즈 3탄. DB 테이블을 만든 다음 그 자원을 외부에 어떻게 노출하는가. &apos;API 짜줘&apos; 라는 막연한 지시를 벗어나기 위한 5가지 핵심 어휘 — REST · 상태 코드 · 멱등성 · 페이지네이션 · 인증/인가 — 와 보너스 CORS 까지. 핵심 개념은 playground 에서 직접 만져볼 수 있게 따로 만들어뒀다.</description><pubDate>Fri, 19 Jun 2026 11:30:00 GMT</pubDate></item><item><title>AGV 사이드 프로젝트 일지 4편 — STM32 UART 송신 + ROS2 launch 파일</title><link>https://parkhyo.in/posts/agv-prototype-log-04/</link><guid isPermaLink="true">https://parkhyo.in/posts/agv-prototype-log-04/</guid><description>드디어 USB-UART 컨버터 도착. STM32F407 의 USART2 로 1초마다 메시지를 송신하고 PC 시리얼 모니터에서 수신 확인. USART3 을 RS485 용으로 남겨둔 이유, blocking 부터 시작하는 이유, STM32CubeIDE 안에서 시리얼 콘솔 띄우는 법까지. 그리고 ROS2 launch 파일로 노드 두 개 동시 실행.</description><pubDate>Fri, 19 Jun 2026 06:20:00 GMT</pubDate></item><item><title>Claude API 에러 핸들링과 재시도 — 일시적·영구·형식 오류 구분 + Exponential Backoff</title><link>https://parkhyo.in/posts/claude-api-error-handling-and-retry/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-api-error-handling-and-retry/</guid><description>신뢰성 있는 LLM 서비스를 만들려면 어떤 에러를 어떻게 처리해야 하는가. 에러 종류를 일시적 / 영구 / 사용자 입력 / 응답 형식으로 분류하고, 기본 try-except 래퍼 → Exponential backoff → Anthropic SDK 내장 재시도 → JSON 응답 검증까지 4단계로 실습.</description><pubDate>Fri, 19 Jun 2026 00:30:00 GMT</pubDate></item><item><title>AGV 사이드 프로젝트 일지 3편 — 배터리·로커 스위치 납땜 + 홀 센서용 자석 부착</title><link>https://parkhyo.in/posts/agv-prototype-log-03/</link><guid isPermaLink="true">https://parkhyo.in/posts/agv-prototype-log-03/</guid><description>오늘은 코딩 없는 날. DPDT 로커 스위치 도통 테스트하다 AI 지적으로 양극성 차단 구조 다시 확인, 배터리 + 스위치 납땜, 배터리 출하 전압 점검, 그리고 홀 센서용 네오디움 자석을 휠에 붙였다. 부품 추가 구매로 진도가 1주일 지연된 게 빡친다.</description><pubDate>Thu, 18 Jun 2026 08:30:00 GMT</pubDate></item><item><title>AGV 사이드 프로젝트 일지 2편 — ROS2 첫 노드 + STM32 PWM LED</title><link>https://parkhyo.in/posts/agv-prototype-log-02/</link><guid isPermaLink="true">https://parkhyo.in/posts/agv-prototype-log-02/</guid><description>ROS2 talker / listener 패턴으로 첫 노드를 작성하고, geometry_msgs/Twist 로 /cmd_vel 을 받아 좌·우 바퀴 속도로 변환했다. 이후 STM32 에선 TIM4 PWM 설정으로 LED 순환 점등. 두 영역이 어떻게 만날지 감 잡기 시작.</description><pubDate>Wed, 17 Jun 2026 06:30:00 GMT</pubDate></item><item><title>AGV 사이드 프로젝트 일지 1편 — 프레임 조립부터 ROS2 설치까지</title><link>https://parkhyo.in/posts/agv-prototype-log-01/</link><guid isPermaLink="true">https://parkhyo.in/posts/agv-prototype-log-01/</guid><description>포트폴리오용 자율주행 자동차 사이드 프로젝트 1편. 라즈베리파이 5 + STM32 + RS485 조합으로, 오늘은 프레임 조립과 Pi 5 OS 세팅, ROS2 Jazzy 설치까지. 의존성 깨짐을 universe·noble-updates 저장소 추가로 해결한 기록 포함.</description><pubDate>Wed, 17 Jun 2026 04:00:00 GMT</pubDate></item><item><title>바이브코딩을 위한 DB · 데이터 모델링 어휘 — 정규화부터 마이그레이션까지</title><link>https://parkhyo.in/posts/db-vocabulary-for-vibe-coding/</link><guid isPermaLink="true">https://parkhyo.in/posts/db-vocabulary-for-vibe-coding/</guid><description>UI 어휘 정리에 이은 용어 시리즈 2탄. &apos;DB 좀 짜줘&apos; 라는 막연한 지시를 벗어나기 위한 6가지 핵심 어휘 — 정규화, 관계, 인덱스, 트랜잭션, 격리 수준, 마이그레이션 — 을 한 줄기로 엮어 정리. 핵심 개념은 playground에서 직접 만져볼 수 있게 따로 만들어뒀다.</description><pubDate>Tue, 16 Jun 2026 12:30:00 GMT</pubDate></item><item><title>Prompt Caching — 같은 입력을 반복할 때 input 비용을 거의 0으로</title><link>https://parkhyo.in/posts/claude-api-prompt-caching/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-api-prompt-caching/</guid><description>긴 시스템 프롬프트나 같은 컨텍스트를 매 호출마다 보내는 챗봇·에이전트·RAG에 필수인 prompt caching. 직접 STM32/임베디드 질문으로 캐싱 유무를 비교 실험했더니 비용은 절반, 시간은 미미하게 줄었다.</description><pubDate>Tue, 16 Jun 2026 01:00:00 GMT</pubDate></item><item><title>STM32CubeIDE 2.0부터 CubeMX가 다시 분리됐다 — .ioc 가 안 생기는 이유</title><link>https://parkhyo.in/posts/stm32-cubeide-cubemx-separation/</link><guid isPermaLink="true">https://parkhyo.in/posts/stm32-cubeide-cubemx-separation/</guid><description>자율주행 사이드 프로젝트를 위해 오랜만에 STM32CubeIDE를 켰는데, 예전처럼 보드를 골랐는데도 .ioc 파일이 생성되지 않았다. 알고 보니 2.0.0부터 CubeIDE와 CubeMX가 다시 별도 도구로 분리됐다.</description><pubDate>Mon, 15 Jun 2026 12:30:00 GMT</pubDate></item><item><title>바이브코딩을 위한 UI 어휘 정리 — 상태, 움직임, 위계, 그리고 글</title><link>https://parkhyo.in/posts/ui-vocabulary-for-vibe-coding/</link><guid isPermaLink="true">https://parkhyo.in/posts/ui-vocabulary-for-vibe-coding/</guid><description>AI에게 UI를 만들게 시킬 때 &apos;예쁘게&apos;, &apos;부드럽게&apos; 같은 막연한 말은 통하지 않는다. 상태(state), 움직임(motion), 위계(hierarchy) 라는 세 축의 어휘를 직접 정리하면서 만든 첫 번째 용어 정리 글. 본문 끝에 직접 만져볼 수 있는 playground 링크도 같이.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate></item><item><title>완벽주의를 도구로 쓰는 법 — 수직 슬라이스 개발 방식의 발견</title><link>https://parkhyo.in/posts/perfectionism-as-a-tool-vertical-slice-development/</link><guid isPermaLink="true">https://parkhyo.in/posts/perfectionism-as-a-tool-vertical-slice-development/</guid><description>완벽주의를 고치려고 했지만, 고치려는 시도 자체가 완벽주의였다. 그래서 방향을 바꿨다. 가로로 쌓는 대신 세로로 자르는 &apos;수직 슬라이스&apos; 방식으로 개발을 다시 설계한 기록.</description><pubDate>Sun, 14 Jun 2026 05:30:00 GMT</pubDate></item><item><title>AI는 사용자 pain을 어디까지 조사해줄까 — 포트폴리오 주제 찾기에서 마주친 한계</title><link>https://parkhyo.in/posts/ai-limits-in-user-pain-research/</link><guid isPermaLink="true">https://parkhyo.in/posts/ai-limits-in-user-pain-research/</guid><description>AI로 코딩은 빠르게 할 수 있는 시대에, 정작 &apos;뭘 만들지&apos;를 찾는 단계에서 막힌다. 사람들의 pain을 찾는 4가지 방법과, 그 조사를 AI에게 맡겼을 때의 한계를 정리했다.</description><pubDate>Fri, 29 May 2026 23:30:00 GMT</pubDate></item><item><title>이미지 분류 모델 학습 파이프라인 — 11단계 체크리스트</title><link>https://parkhyo.in/posts/image-classification-training-pipeline-checklist/</link><guid isPermaLink="true">https://parkhyo.in/posts/image-classification-training-pipeline-checklist/</guid><description>어제 NDT 실습을 통해 익힌 학습 흐름을 다시 추상화해서, 어떤 이미지 분류 문제에도 적용할 수 있는 단계별 체크리스트로 정리했다. 정규화가 왜 필요한지 같은 작은 의문도 함께.</description><pubDate>Thu, 21 May 2026 01:30:00 GMT</pubDate></item><item><title>NDT 결함 분류 실습 — PyTorch + ResNet18 전이학습부터 Grad-CAM까지</title><link>https://parkhyo.in/posts/ndt-defect-classification-pytorch-resnet18/</link><guid isPermaLink="true">https://parkhyo.in/posts/ndt-defect-classification-pytorch-resnet18/</guid><description>임베디드 환경에서 객체 인식을 했던 경험을 살릴 기회가 생겼고, 그 김에 NDT(비파괴 검사) 도메인을 다시 잡았다. NEU Steel Defect 데이터셋으로 결함 6종 분류를 전이학습으로 학습시키고 Grad-CAM으로 모델 판단 근거까지 시각화한 실습 기록.</description><pubDate>Wed, 20 May 2026 13:30:00 GMT</pubDate></item><item><title>Claude Vision — 이미지를 어떻게 넣는가, 그리고 어느 모델로 받는가</title><link>https://parkhyo.in/posts/claude-api-vision-base64-url-and-model/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-api-vision-base64-url-and-model/</guid><description>이미지를 base64로 인코딩해서 보내는 방식과 URL로 보내는 방식 두 가지를 모두 써봤다. 정확하지만 토큰 비용이 더 든다는 점, 작은 텍스트·복잡한 도형의 한계, 그리고 정확도가 필요한 작업에는 더 큰 모델로 옮겨야 한다는 감각까지.</description><pubDate>Fri, 15 May 2026 12:30:00 GMT</pubDate></item><item><title>LLM에게 도구를 쥐여주기 — Claude Tool Use와 에이전트 루프</title><link>https://parkhyo.in/posts/claude-api-tool-use-and-agent-loop/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-api-tool-use-and-agent-loop/</guid><description>LLM은 큰 수 계산도, 오늘 날씨도 모른다. 그 약점을 외부 함수 호출로 메우는 Tool Use를 처음 만져봤다. 메시지 흐름, 다중 도구 자동 선택, 에이전트 루프까지.</description><pubDate>Thu, 14 May 2026 13:00:00 GMT</pubDate></item><item><title>바이브 코딩에서 AI 세션 관리 — 공통 지침과 특화 지침을 어떻게 가를까</title><link>https://parkhyo.in/posts/ai-session-management-common-vs-specialized/</link><guid isPermaLink="true">https://parkhyo.in/posts/ai-session-management-common-vs-specialized/</guid><description>여러 Claude Code 세션을 회사 부서처럼 운영하면서 마주친 지침 관리 문제. 어디까지를 공통 CLAUDE.md에 두고, 어디부터를 작업 폴더의 특화 CLAUDE.md로 분리할지 정리했다.</description><pubDate>Thu, 14 May 2026 05:30:00 GMT</pubDate></item><item><title>Claude API 스트리밍 — TTFT가 왜 중요하고, 이벤트는 어떻게 흐르는가</title><link>https://parkhyo.in/posts/claude-api-streaming-ttft-and-events/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-api-streaming-ttft-and-events/</guid><description>스트리밍은 단순한 &apos;LLM처럼 글자가 흘러나오는 효과&apos;가 아니다. 같은 총 시간이라도 사용자가 첫 결과를 보기까지의 시간(TTFT)이 달라지고, 그 차이가 UX의 핵심이다. 그리고 그걸 받는 이벤트 순서도 직접 찍어봤다.</description><pubDate>Thu, 07 May 2026 13:30:00 GMT</pubDate></item><item><title>부서별 Claude Code 세션이 지침을 안 지킬 때 — CLAUDE.md를 작업 폴더에 두기</title><link>https://parkhyo.in/posts/claude-code-instructions-placement-by-working-dir/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-code-instructions-placement-by-working-dir/</guid><description>한 프로젝트에서 역할을 나눠 여러 Claude Code 세션을 돌리는 중, 프론트엔드 세션이 자꾸 git 명령을 썼다. 지침 위치를 &apos;부서 폴더&apos;에서 &apos;실제 작업 폴더&apos;로 옮겼더니 잘 지켰다.</description><pubDate>Wed, 06 May 2026 09:30:00 GMT</pubDate></item><item><title>Supabase에서 카카오·구글 로그인 붙일 때 마주친 두 가지 함정</title><link>https://parkhyo.in/posts/supabase-social-login-multiple-keys/</link><guid isPermaLink="true">https://parkhyo.in/posts/supabase-social-login-multiple-keys/</guid><description>id_token의 audience 검증 실패와 redirect URI 누락. 둘 다 공식 문서엔 잘 안 보이는 함정이라 내가 직접 부딪혀서 해결한 과정을 기록한다.</description><pubDate>Wed, 06 May 2026 09:00:00 GMT</pubDate></item><item><title>Deno가 뭐야? — Supabase Edge Functions에서 만난 런타임</title><link>https://parkhyo.in/posts/what-is-deno-and-supabase-edge-functions/</link><guid isPermaLink="true">https://parkhyo.in/posts/what-is-deno-and-supabase-edge-functions/</guid><description>1인 앱 개발 중 Supabase Edge Functions를 만지다가 Deno를 처음 마주쳤다. Deno가 뭔지, Node.js와 어떻게 다른지, Supabase는 왜 굳이 Deno를 골랐는지 정리했다.</description><pubDate>Wed, 06 May 2026 06:30:00 GMT</pubDate></item><item><title>시스템 프롬프트가 user 메시지와 다른 점 — 페르소나 일관성과 JSON 출력 강제</title><link>https://parkhyo.in/posts/claude-api-system-prompt-vs-user-message/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-api-system-prompt-vs-user-message/</guid><description>Claude API에서 페르소나를 실험하다 마주친 의문: 시스템 프롬프트와 &apos;user 메시지에 ~이렇게 해줘&apos;를 그냥 적는 건 어떻게 다른가? 일관성·보안·출력 강제 측면에서 정리했다.</description><pubDate>Wed, 06 May 2026 01:00:00 GMT</pubDate></item><item><title>Claude API는 기억하지 않는다 — 멀티턴 대화에서 컨텍스트를 유지하는 법</title><link>https://parkhyo.in/posts/claude-api-multi-turn-context/</link><guid isPermaLink="true">https://parkhyo.in/posts/claude-api-multi-turn-context/</guid><description>API는 stateless다. assistant 메시지를 messages 배열에 누적해서 보내야 챗봇이 직전 대화를 기억한다. 직접 비교 실험으로 확인했다.</description><pubDate>Tue, 05 May 2026 13:30:00 GMT</pubDate></item><item><title>Vercel이 옛날 글을 계속 보여준 이유 — 빈 컨텐츠 컬렉션 함정</title><link>https://parkhyo.in/posts/vercel-shows-old-posts-after-deletion/</link><guid isPermaLink="true">https://parkhyo.in/posts/vercel-shows-old-posts-after-deletion/</guid><description>샘플 포스트를 모두 지우고 push 했는데도 Vercel 배포본에는 이전 글이 그대로 남아있던 현상을 추적했다.</description><pubDate>Tue, 05 May 2026 13:00:00 GMT</pubDate></item></channel></rss>