분류 전체보기 16

8. tick... tick... BOOM!

0. Tick... Tick... 시계소리는 보통 긴장감, 그리고 아슬아슬함을 떠오르게 한다. 극중 이 시계소리는 조용히 들리다가도, 점점 재촉하듯 크게 들리는등, 심리를 자극한다. 째깍, 째깍. 누구나 시간과 경쟁하는 순간을 겪기 마련이다. 마치 시험 2주 전 겨우 80% 맞춰두고 남은 수업들 몰아 듣던 나처럼. 1. 꽉 들어찬 8비트, 학기가 끝났다! 컴퓨터의 이해 수업 하나를 빼먹어서 99%로 끝나긴 했지만, 아무튼 학기가 끝났다.성적은 아직이지만, 대충 유추해보니 B의 향연 속에 숨어있는 A와 C.그래도 급하게 짐 싸서 대전 내려오고 컴퓨터 망가져서 폰으로 공부한 거 치고 이정도면 선방했다는 느낌. 과목별로 한줄씩 후기를 정리해보자면 컴퓨터의 이해: 깊게면 한없이 깊게 갈 수 있지만 간단하게 ..

7. His acts being seven ages

0. Intro"All the world's a stage, And all the men and women merely players; They have their exits and their entrances; And one man in his time plays many parts, His acts being seven ages." — William Shakespeare, As You Like It (뜻대로 하세요) "온 세상은 무대요, 모든 인간은 단지 배우일 뿐이라. 그들은 퇴장하기도 하고 등장하기도 하며, 사람은 살아가면서 다양한 역할을 맡으니, 그의 연극은 7단계로 나뉜다."셰익스피어 연극에 등장하는 이 유명한 독백은 인간의 삶을 7단계의 역할극으로 정의한다. 사실 나이에 따라 인간의 발달 단..

6. six sick bricks

0. Intro “Fox in socks,Knox in box,six sick bricks…” - Fox in socks (Dr.Suess) 오늘은 Tongue Twisters, 잰말놀이를 가져왔다.미국에서 자란 사람들이라면 한번 쯤은 들었을 닥터 수스의 문장.요샌 유튜브에서도 볼 수 있는 거 같더라https://m.youtube.com/watch?v=_RAIDsIuaqg 영문학에서는 이러한 압운과 라임으로 말장난하는 걸 굉장히 좋아하는데, 따지고 보면 어릴 때부터 이런 걸 꽤나 잰말놀이로 보고 배우는 느낌이다.오래 전으로 거슬러 올라가면 셰익스피어의 소네트에도 이런 기법들이 들어가있고,가깝게는 타블로의 영어 랩에도 보면 이런 요소가 꽤 들어가있곤 하다.... 자, 저는 여러분이 뭐라고 말할 지 압니다...

6. 아무튼 내 잘못은 아닌 거 같은데

0. Intro가족이 내가 만든 페이지를 그럭저럭 쓰는데, 어느 날 숫자가 안나온다는 이야길 했더랬다.1. 무슨 상황일까지금의 내 페이즈는 야후 API를 못 받아오면 아무 로직이 동작할 수 없는 구조라, 빠르게 확인을 했었다.확인해보니 API를 못받아오는 게 아니라, API를 받아올 때 58초정도나 기다려야 했던 것.2. 뭐가 문제였을까문제는 간단했다. 야후 API 서버 상태가 안좋아서, 전반적으로 응답 속도가 느렸던 것. 이 날 부랴부랴 확인해보니, 다운디텍터에서는 이 날 모든 야후 서비스에서 장애징후를 표시하고 있었다. 3. 그러면 왜 58초나?이건 더 간단했다. 이전 코드 return Promise.all(items.map(([ticker, range, interval]) => { ..

5. Take five

1. Intro [장학] 2026. 1학기 한국방송통신대학교 교외(발전기금, 출판문화원,아시아발전재단)장학생 선발 안내https://knou.ac.kr/knou/561/subview.do?enc=Zm5jdDF8QEB8JTJGYmJzJTJGa25vdSUyRjUxJTJGNzkyNzA0JTJGYXJ0Y2xWaWV3LmRvJTNGcGFnZSUzRDElMjZzcmNoQ29sdW1uJTNEc2olMjZzcmNoV3JkJTNEJUVBJUI1JTkwJUVDJTk5JUI4JTI2YmJzQ2xTZXElM0QlMjZiYnNPcGVuV3JkU2VxJTNEJTI2cmdzQmduZGVTdHIlM0QlMjZyZ3NFbmRkZVN0ciUzRCUyNmlzVmlld01pbmUlM0RmYWxzZSUyNnBhc3N3b3JkJTNEJTI2..

5. 기획이 엉성하면 몸이 고생한다.

최근(2026-04-07 ~ 2026-04-09)에는 Market Radar를 프로토타입에서 운영 가능한 서비스로 만드는 작업이 대부분이었다. 3/28~3/29에 했던 작업이 보안/성능/기능 추가(RSS, RateLimit, DOMPurify, CORS, 프롬프트 최적화 등)였다면, 이번 구간은 외부 의존성(RSS/Yahoo/Gemini) 때문에 생기는 데이터 계약(contract) 문제React + Chart.js 경계에서 생기는 UI stale/리렌더링 문제“내일 시장 주가”라는 제품 컨셉 때문에 생기는 시간대/거래일 계산 문제i18n 확장으로 인해 생기는 상태 꼬임 / stale 결과 문제CORS / RateLimit 같은 보안 정책을 실제 트래픽/환경에 맞게 튜닝하는 문제패치노트 기반으로 정리하되..

4. Waiting fo(u)r Godot

0. Intro 4월이 왔고, 민족의 대명절 April fool도 지나갔다! 블라디미르와 에스트라공, 두 사람이 고도라는 인물을 황야에서 기다린다.고도가 누군지도 모르고, 언제 오는지도 모른다. 그냥 기다린다. '고도를 기다리며'는 사무엘 베케트의 희곡이다. 전통적인 연극과는 다른 부조리극으로 분류되며, 처음 읽으면 꽤 난해함을 느낄 것이다.학부시절 읽고 나서 '교수님이 왜 나에게 이런 부조리를' 같은 생각부터 들었다. (지도 교수님이셨고, 알고보니 그 쪽 전공이셨다.) 희곡은 2막으로 구성되어 있는데, 1막과 2막의 구조가 거의 똑같다. 기다리고, 아무것도 안 오고, 내일 또 기다린다. 막이 바뀌어도 달라지는 건 별로 없다. 이번 주가 딱 그런 느낌이었다.기사 기출은 매일 1회씩 풀고, 틀린 거 ..

4. RSS를 깎자

RSS를 깎자 - Vercel 타임아웃부터 제미나이 프롬프트 튜닝까지Market Radar의 증시 분석 퀄리티를 높이기 위해, 기존 5개였던 미국 위주의 RSS 피드에 CNBC, BBC, ECB, 야후 파이낸스(JP) 등 글로벌 매체를 더해 총 9개로 확장하는 작업을 진행했다. (NHK world backstory는 이번에 삭제.) 단순한 배열 추가 작업인 줄 알았으나, 데이터 소스의 규모가 2배 가까이 커지면서 기존 아키텍처(파서, 서버리스 타임아웃, AI 프롬프트 전처리) 전반의 스케일업이 필요해짐. 백엔드 데이터 수집부터 프롬프트 주입까지, 확장 과정에서 만난 6가지 병목 현상과 해결 과정을 정리했다. Phase 1. 데이터 수집의 늪 (API & 파싱 이슈)가장 먼저 맞닥뜨린 문제는 새로 추가한 ..

3. 프론트엔드 고도화

0. 리액트로 이사가기화면배치를 바꾸다보니 슬슬 리액트로 넘어가는 게 맞을 거 같아서 작업을 진행중. 1. 대시보드면 정적 페이지여도 충분할텐데?크게 3가지 문제가 있었다. 시인성의 한계: 정보가 위아래로 너무 길게 나열되어 한 눈에 들어오지 않음.정보의 파편화: 뉴스 데이터가 분석 프롬프트용으로만 소비되고 추가 활용이 안되고 있었음.긴 스크롤: 핵심인 AI 분석 결과를 보려면 화면 맨 아래까지 내려가야 하는 불편함. 대시보드는 한 눈에 들어오는 시인성이 중요한데, 지금은 위 아래로 길게 정보를 뿌려주고 있었다. AI 분석도 맨 밑에 있어서, 스크롤을 내려서 봐야하는 사소한 불편함이 있지 않나 싶어졌다. 지금 분석은 뉴스도 수집하고 있는데, 프롬프트 용으로 수집하는 게 아니라 '최근 뉴스'정도로 해서 주..

2. 배포 이후 수행했던 것들

0. 패치노트더보기2026-03-29Added- RSS 뉴스 수신 기능 추가 및 Vercel KV 기반 Rate Limiting 도입 - DOMPurify 기반 HTML sanitize 적용 - index.html에 DOMPurify 스크립트 추가 Changed- 프롬프트 수정/정확도 개선 - AI 답변이 길어질 때 UI/CSS 표시 개선(긴 답변 대응) - Gemini 호출 5분 타임아웃(shutdown) 문제 수정 - `/api/news` CORS allowlist 동작 수정 - CORS 처리 리팩터링 및 에러 응답 개선- 프롬프트 요청 비동기 promise로 수정, 병렬 요청으로 요청응답 속도 개선Security- Gemini 출력 렌더링 시 XSS 위험 완화(DOMPurify sani..