<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://lh99tw.github.io/atom.xml" rel="self" type="application/atom+xml" /><link href="https://lh99tw.github.io/" rel="alternate" type="text/html" hreflang="ko" /><updated>2026-05-14T23:39:11+09:00</updated><id>https://lh99tw.github.io/atom.xml</id><title type="html">이주한 기술 블로그</title><subtitle>AI와 금융 인사이트를 기록하는 개발 블로그</subtitle><author><name>이주한</name><email>contact@example.com</email></author><entry><title type="html">[Snapocket] OCR을 위한 VLM 선택하기</title><link href="https://lh99tw.github.io/blog/2026/04/17/ocr%EC%9D%84-%EC%9C%84%ED%95%9C-vlm-%EC%84%A0%ED%83%9D%ED%95%98%EA%B8%B0/" rel="alternate" type="text/html" title="[Snapocket] OCR을 위한 VLM 선택하기" /><published>2026-04-17T00:00:00+09:00</published><updated>2026-04-17T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2026/04/17/ocr%EC%9D%84-%EC%9C%84%ED%95%9C-vlm-%EC%84%A0%ED%83%9D%ED%95%98%EA%B8%B0</id><content type="html" xml:base="https://lh99tw.github.io/blog/2026/04/17/ocr%EC%9D%84-%EC%9C%84%ED%95%9C-vlm-%EC%84%A0%ED%83%9D%ED%95%98%EA%B8%B0/"><![CDATA[<h1 id="개요">개요</h1>

<p>OCR을 위한 오픈소스 VLM을 선택할 때, 개인이 고를 수 있는 두 가지 최선의 선택지는 PaddleOCR-VL과 GLM-OCR이다. 
Marker-Inc-Korea에서 발표한 <a href="https://github.com/Marker-Inc-Korea/KO-VLM-Benchmark/tree/main">KO-VLM-Benchmark</a>에는 다양한 모델의 한국어 VLM 벤치마크가 첨부되어있다.
성능 측면만을 고려하면 위 벤치마크의 모델들을 채택하는 것이 가장 좋은 선택이다. 다만, 비용 측면을 함께 고려해야 한다면 PaddleOCR-VL과 GLM-OCR 두 모델은 여전히 최선의 선택지 중 하나다.
<br /></p>

<hr />

<h2 id="paddlepaddlepaddleocr-vl-15">PaddlePaddle/PaddleOCR-VL-1.5</h2>

<p><br /></p>

<p><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTZPQbopvkHuTnxBVCde6Iey52X1uwq7e0oSw&amp;s" alt="alt" /></p>

<p><a href="https://huggingface.co/PaddlePaddle/PaddleOCR-VL-1.5">HF Link</a></p>

<blockquote>
  <p>HuggingFace readme 발췌</p>
</blockquote>

<p>파라미터 크기가 0.9B인 PaddleOCR -VL-1.5 는 OmniDocBench v1.5에서 94.5%의 정확도를 달성하여 이전 최고 성능 모델인 PaddleOCR-VL을 능가했습니다. 
표, 수식 및 텍스트 인식에서 상당한 개선이 관찰되었습니다.</p>

<p>본 논문 은 불규칙한 형태의 객체 위치 파악을 지원함으로써 문서 구문 분석에 혁신적인 접근 방식을 도입하여 , 기울어지거나 휘어진 문서 환경에서도 정확한 다각형 검출을 가능하게 합니다. 스캔, 기울기, 휘어짐, 화면 촬영, 조명 등 5가지 실제 시나리오에 걸친 평가 결과, 기존의 오픈 소스 및 상용 모델보다 우수한 성능을 보여줍니다.</p>

<p>이 모델은 텍스트 탐지(텍스트 줄 위치 파악 및 인식) 와 물개 인식을 도입했으며 , 모든 관련 지표에서 각 작업 분야에서 최고 수준의 성능을 달성했습니다 .</p>

<p>PaddleOCR-VL-1.5는 특수 시나리오 및 다국어 인식 기능을 더욱 강화했습니다 . 희귀 문자, 고대 문헌, 다국어 표, 밑줄, 체크박스에 대한 인식 성능이 향상되었으며 , 지원 언어 범위가 중국 티베트 문자 및 벵골어 까지 확장되었습니다 .</p>

<p>이 모델은 페이지 간 표 병합 및 단락 제목 인식 기능을 자동으로 지원하여 긴 문서 분석 시 발생하는 콘텐츠 단편화 문제를 효과적으로 완화합니다 .
<br /></p>

<hr />

<h2 id="zai-orgglm-ocr">zai-org/GLM-OCR</h2>

<p><br /></p>

<p><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRHTkSujIoaycwpmkGCZc-GyLpC1Z6y6pFFlg&amp;s" alt="alt" /></p>

<p><a href="https://huggingface.co/zai-org/GLM-OCR">HF Link</a></p>

<blockquote>
  <p>HuggingFace readme 발췌</p>
</blockquote>

<p>GLM-OCR은 GLM-V 인코더-디코더 아키텍처를 기반으로 구축된 복잡한 문서 이해를 위한 멀티모달 OCR 모델입니다. 
이 모델은 다중 토큰 예측(MTP) 손실 함수와 안정적인 전체 작업 강화 학습을 도입하여 학습 효율성, 인식 정확도 및 일반화 성능을 향상시켰습니다. 
GLM-OCR은 대규모 이미지-텍스트 데이터로 사전 학습된 CogViT 비주얼 인코더, 효율적인 토큰 다운샘플링을 지원하는 경량 크로스모달 커넥터, 그리고 GLM-0.5B 언어 디코더를 통합합니다. 
PP-DocLayout-V3 기반의 레이아웃 분석 및 병렬 인식의 2단계 파이프라인과 결합하여, GLM-OCR은 다양한 문서 레이아웃에서 견고하고 고품질의 OCR 성능을 제공합니다.</p>

<p>주요 특징</p>

<p>최첨단 성능 : OmniDocBench V1.5에서 94.62점을 획득하여 전체 1위를 차지했으며, 수식 인식, 표 인식 및 정보 추출을 포함한 주요 문서 이해 벤치마크에서 최첨단 결과를 제공합니다.</p>

<p>실제 시나리오에 최적화 : 복잡한 표, 코드가 많은 문서, 인장 및 기타 까다로운 실제 레이아웃에서도 안정적인 성능을 유지하도록 설계 및 최적화되었습니다.</p>

<p>효율적인 추론 : GLM-OCR은 0.9B개의 파라미터만으로 vLLM, SGLang, Ollama를 통한 배포를 지원하여 추론 지연 시간과 컴퓨팅 비용을 크게 줄여주므로 고동시성 서비스 및 엣지 환경에 이상적입니다.</p>

<p>사용 편의성 : 완전한 오픈 소스이며 포괄적인 SDK 및 추론 툴체인을 갖추고 있어 간편한 설치, 한 줄 명령 실행, 기존 프로덕션 파이프라인과의 원활한 통합을 제공합니다.</p>

<p><br /></p>

<hr />

<h2 id="벤치마크">벤치마크</h2>

<p><img src="https://discuss.pytorch.kr/uploads/default/original/2X/7/7a708c8e9d0576b54af693cadbf96cd3bf4d186b.jpeg" alt="alt" /></p>

<p>두 모델은 초 경량 오픈소스 모델로, 각각 0.9B 파라미터로 구성되어 있으며, OCR 특화 VLM이다. 
위의 KO-VL-Benchmark에서 상위권을 구성하고 있는 Gemini-3-pro와 GPT 5.2와 비교해서도 OCR 영역에서 우세한 성능 벤치마크를 보여준다. 그러나 위 이미지의 벤치마크는 중국어와 라틴어 관련 결과가 크게 반영되어 <u>한국어 영역에서는 동일하게 작동하지 않는다.</u></p>

<p>이하의 <strong>Delores-Lin/MDPBench</strong>는 17개 언어(중국어 간체, 중국어 번체, 영어, 아랍어, 독일어, 스페인어, 프랑스어, 힌디어, 인도네시아어, 이탈리아어, 일본어, 한국어, 포르투갈어, 러시아어, 태국어, 베트남어), 다양한 문자 체계, 그리고 다양한 사진 촬영 조건을 아우르는 3,400개의 문서 이미지로 구성된 벤치마크로 여기에서 각 모델의 한국어(KO) 벤치마크를 참고할 수 있었다.</p>

<h2 id="main-results">Main Results</h2>

<table style="width:100%; border-collapse: collapse; text-align: center;"> <thead> <tr> <th>Model Type</th> <th>Model</th> <th>KO</th> </tr> </thead> <tbody> <tr> <td>Specialized VLMs</td> <td>PaddleOCR-VL-1.5</td> <td><strong>86.0</strong></td> </tr> <tr> <td>Specialized VLMs</td> <td>MonkeyOCRv1.5</td> <td>78.9</td> </tr> <tr> <td>Specialized VLMs</td> <td>dots.mocr</td> <td>78.7</td> </tr> <tr> <td>Specialized VLMs</td> <td>PaddleOCR-VL</td> <td>77.8</td> </tr> <tr> <td>General VLMs</td> <td>Gemini-3-pro-preview</td> <td>74.8</td> </tr> <tr> <td>General VLMs</td> <td>Doubao-2.0-pro</td> <td>74.7</td> </tr> <tr> <td>General VLMs</td> <td>kimi-K2.5</td> <td>70.9</td> </tr> <tr> <td>Specialized VLMs</td> <td>olmOCR2</td> <td>70.6</td> </tr> <tr> <td>Specialized VLMs</td> <td>HunyuanOCR</td> <td>68.9</td> </tr> <tr> <td>Specialized VLMs</td> <td>dots.ocr</td> <td>68.5</td> </tr> <tr> <td>General VLMs</td> <td>ChatGPT-5.2-2025-12-11</td> <td>65.4</td> </tr> <tr> <td>Specialized VLMs</td> <td>GLM-OCR</td> <td>61.2</td> </tr> <tr> <td>General VLMs</td> <td>Qwen3-VL-Instruct-8b</td> <td>61.9</td> </tr> <tr> <td>Specialized VLMs</td> <td>MonkeyOCR-pro-3B</td> <td>60.5</td> </tr> <tr> <td>General VLMs</td> <td>Qwen3.5-Instruct-9B</td> <td>60.3</td> </tr> <tr> <td>Pipeline Tools</td> <td>MinerU-2.5-pipeline</td> <td>24.5</td> </tr> <tr> <td>General VLMs</td> <td>Claude-Sonnet-4.6</td> <td>64.3</td> </tr> <tr> <td>Specialized VLMs</td> <td>Nanonets-ocr2-3B</td> <td>54.7</td> </tr> <tr> <td>General VLMs</td> <td>InternVL-3.5-8B</td> <td>30.3</td> </tr> <tr> <td>Specialized VLMs</td> <td>Nanonets-OCR-s</td> <td>51.2</td> </tr> <tr> <td>Specialized VLMs</td> <td>DeepSeek-OCR</td> <td>28.2</td> </tr> <tr> <td>Pipeline Tools</td> <td>PP-StructureV3</td> <td>15.4</td> </tr> <tr> <td>Specialized VLMs</td> <td>MinerU-2.5-VLM</td> <td>14.7</td> </tr> </tbody> </table>
<p><br /></p>

<hr />

<p>해당 벤치마크에 따르면 PaddleOCR-VL-1.5은 86점을 달성하며 여타 모델보다 나은 점수를 받았다. GLM-OCR은 61.2점을 기록하며 기존의 통합 벤치마크에서 예견되었던 성능보다는 기대 이하의 성능을 보여줬지만, 경량 오픈소스 VLM 이라는 측면에서 보면 상위권에 해당한다.
<br /><br />오히려 위 표를 보면 <a href="https://github.com/Yuliang-Liu/MonkeyOCR"><strong>MonkeyOCR</strong></a> 의 성능이 더 매력있게 느껴진다 (우리가 프로젝트를 시작했을 당시에는 해당 모델의 데모 버전만 나온 상태였고, dots.mocr은 26.03.15에 출시, MDPBench는 26.04.01에 공개되었다.)</p>

<p>국내 VLM 관련 커뮤니티에서도 PaddleOCR은 호평이 많은 반면, GLM-OCR의 성능에 관해서는 의아해 하는 의견이 많이 보였다.</p>

<p>따라서 우리 프로젝트에서는 PaddleOCR-VL-1.5, 내지는 PaddleOCR-VL-1.5의 경량화 모델을 사용하는 방향으로 정하게 되었다.</p>]]></content><author><name>이주한</name></author><category term="project" /><category term="ocr" /><category term="vlm" /><category term="paddleocr-vl" /><category term="glm-ocr" /><category term="project" /><summary type="html"><![CDATA[OCR을 위한 VLM 선택]]></summary></entry><entry><title type="html">[Snapocket] 흩어진 데이터를 지식으로 바꾸는 Snapocket 프로젝트</title><link href="https://lh99tw.github.io/blog/2026/04/17/untitled-post/" rel="alternate" type="text/html" title="[Snapocket] 흩어진 데이터를 지식으로 바꾸는 Snapocket 프로젝트" /><published>2026-04-17T00:00:00+09:00</published><updated>2026-04-17T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2026/04/17/untitled-post</id><content type="html" xml:base="https://lh99tw.github.io/blog/2026/04/17/untitled-post/"><![CDATA[<h1 id="프로젝트-개요">프로젝트 개요</h1>

<p>일상에는 스크린샷, 강의 자료 사진, 영수증, 음성 메모처럼 저장은 쉽지만 다시 찾기 어려운 데이터가 쌓입니다.
저희 팀의 <strong>Snapocket</strong>은 이 비정형 데이터를 자동으로 읽고 정리해, 검색 가능한 개인 지식 베이스로 바꾸는 프로젝트입니다.
<br />
<br /></p>

<p><img src="https://i.imgur.com/BjSaVay.png" alt="snapocket,KMS" />
<a href="https://github.com/gmlwlsdl/2026-CS-Snapocket">Project Github Link</a></p>

<h2 id="우리가-해결하려는-문제">우리가 해결하려는 문제</h2>

<p>최근 비정형 데이터는 빠르게 늘고 있지만 이를 구조화해 활용하는 도구는 여전히 부족합니다.<br />
특히, 개인 지식 관리(PKM)에 agent를 활용하고자 하는 경우 이미지/음성 등의 비정형 데이터는 큰 병목입니다.<br />
따라서, 이 문제를 해결하기 위해</p>

<ul>
  <li>이미지/문서/오디오 등 멀티모달 입력 처리</li>
  <li>정보 추출 결과를 제목·요약·태그·카테고리로 구조화</li>
  <li>검색과 그래프 탐색으로 재활용 가능하게 변환</li>
</ul>

<p>하도록 만드는 것이 ‘<strong>Snapocket</strong>‘의 목표입니다.</p>

<h2 id="snapocket의-핵심-기능">Snapocket의 핵심 기능</h2>

<p>이미지/문서: OCR + VLM 기반 정보 추출
음성: ASR 기반 텍스트 변환
공통 출력: JSON 형태의 정리된 메타데이터(제목, 요약, 태그, 핵심 개념 등)</p>

<h2 id="현재-프로젝트-구현-흐름-mvp">현재 프로젝트 구현 흐름 (MVP)</h2>
<ol>
  <li>사용자가 파일 업로드 (pdf, png, jpg, mp3, wav, mp4)</li>
  <li>백엔드가 분석 작업(Job) 생성 후 AI 서버에 비동기 요청</li>
  <li>분석 결과를 문서 메타데이터로 저장</li>
  <li>사용자가 결과를 검수/확정</li>
  <li>검색/지식그래프 UI에서 재탐색</li>
</ol>

<h2 id="기술-스택">기술 스택</h2>
<p><strong>Frontend</strong>: Next.js <br />
<strong>Backend</strong>: FastAPI (REST + GraphQL) <br />
<strong>AI Service</strong>: OCR/VLM + ASR 파이프라인, 로컬 추론 환경 기반 <br />
<strong>Infra</strong>: Docker, AWS <br /></p>]]></content><author><name>이주한</name></author><category term="project" /><category term="snanpocket" /><category term="pkm" /><category term="personal knowledge management" /><category term="project" /><summary type="html"><![CDATA[심화캡스톤 프로젝트 Snapocket 에 대한 개요]]></summary></entry><entry><title type="html">[컴퓨터구조] 제2장 CPU의 구조와 기능</title><link href="https://lh99tw.github.io/blog/2026/04/16/cpu-structure-and-function/" rel="alternate" type="text/html" title="[컴퓨터구조] 제2장 CPU의 구조와 기능" /><published>2026-04-16T00:00:00+09:00</published><updated>2026-04-16T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2026/04/16/cpu-structure-and-function</id><content type="html" xml:base="https://lh99tw.github.io/blog/2026/04/16/cpu-structure-and-function/"><![CDATA[<h2 id="221-정리">2.2.1 정리</h2>

<h2 id="1-micro-operation--clock-cycle">1. Micro Operation &amp; Clock Cycle</h2>

<ul>
  <li>Micro Operation: CPU 내부에서 수행되는 기본 동작</li>
  <li>Clock Cycle 단위로 수행됨</li>
</ul>

<p>예:</p>
<ul>
  <li>클록이 1GHz -&gt; 1 cycle = 1ns</li>
</ul>

<hr />

<h2 id="2-명령어-인출-사이클-fetch-cycle">2. 명령어 인출 사이클 (Fetch Cycle)</h2>

<h3 id="micro-operation">Micro Operation</h3>

<ul>
  <li>Cycle1 : MAR &lt;- PC</li>
  <li>Cycle2 : MBR &lt;- M[MAR], PC &lt;- PC + 1</li>
  <li>Cycle3 : IR &lt;- MBR</li>
</ul>

<h3 id="설명">설명</h3>

<ul>
  <li>PC: 다음 실행할 명령어 주소 저장</li>
  <li>MAR: 주소 전달</li>
  <li>MBR: 메모리에서 읽은 명령어 저장</li>
  <li>IR: 실행할 명령어 저장</li>
</ul>

<p>총 수행 시간</p>
<ul>
  <li>3 cycle = 3ns (1GHz 기준)</li>
</ul>

<hr />

<h2 id="3-제어장치-control-unit">3. 제어장치 (Control Unit)</h2>

<ul>
  <li>실제 연산을 수행하지 않음</li>
  <li>ALU, 메모리 등에 명령을 내려 실행을 제어하는 역할</li>
</ul>

<hr />

<h2 id="4-명령어-형식">4. 명령어 형식</h2>

<ul>
  <li>구성: 연산코드(opcode) + 오퍼랜드(address)</li>
</ul>

<p>예:</p>
<ul>
  <li>MOV R1, R2 -&gt; R1 &lt;- R2</li>
  <li>ADD R1, R2 -&gt; R1 &lt;- R1 + R2</li>
</ul>

<hr />

<h2 id="5-명령어-종류">5. 명령어 종류</h2>

<ul>
  <li>데이터 이동: LOAD, STORE, MOV</li>
  <li>데이터 처리: ADD, SUB 등</li>
  <li>제어 흐름 변경: Branch</li>
</ul>

<p>분기 명령어:</p>
<ul>
  <li>조건문, 반복문 구현 가능</li>
  <li>예: JUMP</li>
</ul>

<hr />

<h2 id="6-add-명령어">6. ADD 명령어</h2>

<p>기능:</p>
<ul>
  <li>메모리 데이터를 AC에 더하고 결과를 AC에 저장</li>
</ul>

<h3 id="micro-operation-1">Micro Operation</h3>

<ul>
  <li>Clock1 : MAR &lt;- IR(address)</li>
  <li>Clock2 : MBR &lt;- M[MAR]</li>
  <li>Clock3 : AC &lt;- AC + MBR</li>
</ul>

<hr />

<h2 id="7-load-명령어">7. LOAD 명령어</h2>

<p>기능:</p>
<ul>
  <li>메모리 데이터를 AC에 그대로 저장</li>
</ul>

<h3 id="micro-operation-2">Micro Operation</h3>

<ul>
  <li>Clock1 : MAR &lt;- IR(address)</li>
  <li>Clock2 : MBR &lt;- M[MAR]</li>
  <li>Clock3 : AC &lt;- MBR</li>
</ul>

<p>차이:</p>
<ul>
  <li>ADD: 연산 수행</li>
  <li>LOAD: 단순 저장</li>
</ul>

<hr />

<h2 id="8-인터럽트-interrupt">8. 인터럽트 (Interrupt)</h2>

<p>정의:</p>
<ul>
  <li>프로그램 실행 중 CPU의 작업을 중단시키고 다른 작업을 수행하게 하는 신호</li>
</ul>

<p>ISR (Interrupt Service Routine):</p>
<ul>
  <li>인터럽트를 처리하는 프로그램</li>
</ul>

<hr />

<h2 id="9-인터럽트-처리-과정">9. 인터럽트 처리 과정</h2>

<ol>
  <li>현재 명령어 실행 완료</li>
  <li>다음 실행할 주소(PC 값)를 스택에 저장</li>
  <li>ISR 시작 주소를 PC에 저장</li>
  <li>ISR 수행</li>
  <li>종료 후 원래 프로그램으로 복귀</li>
</ol>

<p>복귀 시:</p>
<ul>
  <li>저장된 PC 값(i+1)으로 돌아감</li>
</ul>

<hr />

<h2 id="10-인터럽트-사이클-micro-operation">10. 인터럽트 사이클 Micro Operation</h2>

<h3 id="micro-operation-3">Micro Operation</h3>

<ul>
  <li>Clock1 : MAR &lt;- SP, MBR &lt;- PC</li>
  <li>Clock2 : M[MAR] &lt;- MBR, SP &lt;- SP - 1</li>
  <li>Clock3 : PC &lt;- ISR 시작주소</li>
</ul>

<hr />

<h2 id="11-스택-포인터-sp">11. 스택 포인터 (SP)</h2>

<ul>
  <li>Stack Pointer</li>
  <li>스택의 top 주소 저장</li>
  <li>인터럽트 발생 시 PC 값을 저장하는 위치 지정</li>
</ul>

<p>특징:</p>
<ul>
  <li>데이터 저장 후 SP 감소 (stack down 방식)</li>
</ul>

<hr />

<h2 id="핵심-요약">핵심 요약</h2>

<ul>
  <li>Fetch cycle은 3단계로 구성됨 (MAR -&gt; MBR -&gt; IR)</li>
  <li>MOV는 값 복사 명령어</li>
  <li>ADD와 LOAD의 차이는 연산 여부</li>
  <li>인터럽트에서는 PC를 먼저 저장한 후 ISR로 이동</li>
  <li>Stack frame은 LIFO 구조</li>
</ul>]]></content><author><name>이주한</name></author><category term="cs" /><category term="computer-architecture" /><category term="cpu" /><category term="fetch-cycle" /><category term="interrupt" /><category term="computer-science" /><summary type="html"><![CDATA[Micro Operation, Fetch Cycle, ADD/LOAD 명령어, 인터럽트 처리 과정을 중심으로 CPU 동작을 정리합니다.]]></summary></entry><entry><title type="html">[깃블로그] 블로그 글 에디터 만들기</title><link href="https://lh99tw.github.io/blog/2026/04/16/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B8%80-%EC%97%90%EB%94%94%ED%84%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0/" rel="alternate" type="text/html" title="[깃블로그] 블로그 글 에디터 만들기" /><published>2026-04-16T00:00:00+09:00</published><updated>2026-04-16T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2026/04/16/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B8%80-%EC%97%90%EB%94%94%ED%84%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0</id><content type="html" xml:base="https://lh99tw.github.io/blog/2026/04/16/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B8%80-%EC%97%90%EB%94%94%ED%84%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0/"><![CDATA[<h1 id="해당-글은-에디터-테스트를-위해-작성되었습니다">해당 글은 에디터 테스트를 위해 작성되었습니다.</h1>

<pre><code class="language-Python">print("Hello World!")
</code></pre>

<p><img src="https://images.velog.io/images/eona1301/post/3d621940-8738-4b7a-9206-1967c810fdd8/image.png" alt="블로그 글 테스트 이미지입니다." /></p>

<blockquote>
  <p>이렇게 인용도 가능합니다.</p>
</blockquote>

<p>작성하고</p>

<p>ㄱㄱㄱㄴㄴㄴ</p>]]></content><author><name>이주한</name></author><category term="hobby" /><category term="electron" /><category term="github" /><category term="gitblog" /><category term="hobby" /><summary type="html"><![CDATA[Electron을 활용하여 내 포스트의 CRUD가 가능한 마크다운 에디터를 만들어보자 !]]></summary></entry><entry><title type="html">AI 모델 실험 기록</title><link href="https://lh99tw.github.io/blog/2025/10/22/ai-overview/" rel="alternate" type="text/html" title="AI 모델 실험 기록" /><published>2025-10-22T00:00:00+09:00</published><updated>2025-10-22T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2025/10/22/ai-overview</id><content type="html" xml:base="https://lh99tw.github.io/blog/2025/10/22/ai-overview/"><![CDATA[<p>이번 주에는 Transformer 기반 모델을 활용해 문장 요약 실험을 진행했습니다. 데이터 전처리 파이프라인을 정리하고, 학습률 스케줄을 조정해 성능을 3% 향상시켰습니다.</p>

<h2 id="실험-메모">실험 메모</h2>

<ul>
  <li>Tokenizer를 SentencePiece에서 BPE로 교체 → 학습 속도 12% 개선</li>
  <li>Warmup step을 2k에서 4k로 늘려 안정적인 수렴 유도</li>
  <li>BLEU 지표 26.4 → 27.9로 상승</li>
</ul>

<p>다음 주에는 추론 속도를 개선하기 위해 양자화 <mark>실험</mark>을 진행할 예정입니다.</p>]]></content><author><name>이주한</name></author><category term="ai" /><category term="machine-learning" /><category term="experiments" /><category term="ai" /><summary type="html"><![CDATA[신경망 모델 실험 결과와 학습 기록을 정리했습니다.]]></summary></entry><entry><title type="html">이진 탐색 트리 최적화</title><link href="https://lh99tw.github.io/blog/2025/10/22/algorithm-note/" rel="alternate" type="text/html" title="이진 탐색 트리 최적화" /><published>2025-10-22T00:00:00+09:00</published><updated>2025-10-22T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2025/10/22/algorithm-note</id><content type="html" xml:base="https://lh99tw.github.io/blog/2025/10/22/algorithm-note/"><![CDATA[<p>Balanced BST를 구현하면서 Rotation 전략을 정리했습니다. AVL 트리와 Red-Black 트리의 차이를 비교하고, 실제 프로젝트에 적용 가능한 기준을 세웠습니다.</p>

<h2 id="핵심-정리">핵심 정리</h2>

<ol>
  <li>균형 조건을 약간 완화하면 삽입 속도를 크게 높일 수 있다.</li>
  <li>트리 높이 제한을 모니터링하는 헬퍼 함수를 추가해 디버깅이 쉬워졌다.</li>
  <li>테스트 커버리지를 85%까지 확보하며 엣지 케이스를 잡아냈다.</li>
</ol>

<p>다음 글에서는 세그먼트 트리와의 비교를 다룰 예정입니다.</p>]]></content><author><name>이주한</name></author><category term="algorithm" /><category term="algorithm" /><category term="data-structure" /><summary type="html"><![CDATA[Algorithm 카테고리 샘플 글입니다.]]></summary></entry><entry><title type="html">주간 회고 - 집중과 휴식</title><link href="https://lh99tw.github.io/blog/2025/10/22/daily-journal/" rel="alternate" type="text/html" title="주간 회고 - 집중과 휴식" /><published>2025-10-22T00:00:00+09:00</published><updated>2025-10-22T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2025/10/22/daily-journal</id><content type="html" xml:base="https://lh99tw.github.io/blog/2025/10/22/daily-journal/"><![CDATA[<p>이번 주는 업무 마감과 개인 프로젝트를 병행하며 바쁜 일정을 보냈습니다. 집중과 휴식의 균형을 잡기 위해 의식적으로 스케줄을 조정했습니다.</p>

<ul>
  <li>월/화: 프로젝트 마감 준비, 늦은 저녁 러닝으로 스트레스 관리</li>
  <li>수: 팀 회의 후 카페에서 개인 학습</li>
  <li>목/금: 업무 정리, 주말 여행 계획 세우기</li>
</ul>

<p>회고를 통해 다음 주에는 조금 더 여유 시간을 확보하기로 했습니다.</p>]]></content><author><name>이주한</name></author><category term="journal" /><category term="reflection" /><category term="weekly-review" /><summary type="html"><![CDATA[일상 회고 카테고리 샘플 글입니다.]]></summary></entry><entry><title type="html">아침 루틴 실험기</title><link href="https://lh99tw.github.io/blog/2025/10/22/daily-routine/" rel="alternate" type="text/html" title="아침 루틴 실험기" /><published>2025-10-22T00:00:00+09:00</published><updated>2025-10-22T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2025/10/22/daily-routine</id><content type="html" xml:base="https://lh99tw.github.io/blog/2025/10/22/daily-routine/"><![CDATA[<p>새로운 아침 루틴을 도입해 한 주간 실험했습니다. 집중력과 컨디션을 높이기 위해 기상 직후 명상과 짧은 운동을 추가했습니다.</p>

<h2 id="루틴-구성">루틴 구성</h2>

<ol>
  <li>06:30 기상</li>
  <li>10분 스트레칭 &amp; 명상</li>
  <li>20분 러닝</li>
  <li>아침 식사 후 30분 독서</li>
</ol>

<p>실험 결과 오전 생산성이 평균 18% 상승했습니다.</p>]]></content><author><name>이주한</name></author><category term="routine" /><category term="routine" /><category term="habit" /><summary type="html"><![CDATA[루틴 카테고리 예시 글입니다.]]></summary></entry><entry><title type="html">거시경제 메모 - 10월</title><link href="https://lh99tw.github.io/blog/2025/10/22/economy-note/" rel="alternate" type="text/html" title="거시경제 메모 - 10월" /><published>2025-10-22T00:00:00+09:00</published><updated>2025-10-22T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2025/10/22/economy-note</id><content type="html" xml:base="https://lh99tw.github.io/blog/2025/10/22/economy-note/"><![CDATA[<p>최근 CPI가 예상을 소폭 상회하면서 금리 인상 가능성이 다시 거론되고 있습니다. 주요 메모는 다음과 같습니다.</p>

<ul>
  <li>미국 CPI 전년 대비 3.7% → 3.8%</li>
  <li>코어 CPI는 예상치와 동일하게 4.1% 기록</li>
  <li>한국 수출 지표가 5개월 연속 증가세</li>
</ul>

<p>단기 변동성은 커졌지만, 중장기 정책 방향은 큰 변화가 없을 것으로 판단합니다.</p>]]></content><author><name>이주한</name></author><category term="economy-note" /><category term="macro" /><category term="economy" /><summary type="html"><![CDATA[최근 발표된 경제 지표를 정리했습니다.]]></summary></entry><entry><title type="html">드로잉 취미 기록</title><link href="https://lh99tw.github.io/blog/2025/10/22/hobby-log/" rel="alternate" type="text/html" title="드로잉 취미 기록" /><published>2025-10-22T00:00:00+09:00</published><updated>2025-10-22T00:00:00+09:00</updated><id>https://lh99tw.github.io/blog/2025/10/22/hobby-log</id><content type="html" xml:base="https://lh99tw.github.io/blog/2025/10/22/hobby-log/"><![CDATA[<p>도시 스케치 연습을 꾸준히 진행하고 있습니다. 이번 주에는 투시법과 빛 표현에 집중했습니다.</p>

<h2 id="연습-내용">연습 내용</h2>

<ul>
  <li>15분 드로잉 5세트</li>
  <li>노을 시간대 컬러 연습</li>
  <li>건물 구조를 단순화해 표현</li>
</ul>

<p>SNS에 업로드해 피드백을 받고 있으며, 월 2회 크루 세션에 참여하고 있습니다.</p>]]></content><author><name>이주한</name></author><category term="hobby" /><category term="hobby" /><category term="drawing" /><summary type="html"><![CDATA[취미 카테고리용 샘플 글입니다.]]></summary></entry></feed>