연도별 보기
쓴 순서대로 연도별로 묶어뒀습니다.
· 인프라·운영
3개월간 배포 실패를 숨긴 초록불: CI/CD 성공 판정 바로잡기
기존 컨테이너의 헬스체크 응답이 배포 실패를 감추던 문제를 추적하고, 배포 대상과 실제 런타임의 동일성을 검증하도록 CI/CD 성공 조건을 바꾼 과정을 정리한다.
· 웹·네트워크
픽셀 대신 배치를 전송해 SpriteKit 사무실을 확장한 설계
Mac에서 계산한 배치 데이터를 브라우저와 Electron에 전달해 규칙 복제 없이 반응형 사무실 화면을 구현한 과정을 정리한다.
· 백엔드
공유 DB 과도기의 크레딧 정합성과 멱등성
레거시 PHP와 신규 Node 서비스가 공유 DB를 사용하는 동안 잔액의 Source of Truth와 구매 확정 완료 기록으로 크레딧 정합성과 멱등성을 확보한 과정이다.
· 인프라·운영
AI 개발환경 자동 동기화의 안전 기준
AI 개발환경을 재현 가능한 자산, 재발급할 인증, 제외할 실행 상태로 나누고 승인된 버전만 자동 복원한 과정을 정리한다.
· 백엔드
계획을 성과로 오인하지 않는 근거 기반 자동 회고 설계
계획과 merged PR 실적, 조회 실패와 미확인 범위를 분리해 검증 가능한 자동 회고 입력을 설계한 과정을 정리한다.
· 백엔드
실패를 성공으로 기록하면 재시도는 시작되지 않는다
작업 실패를 산출물 중심으로 판정하고 예외의 위치와 재시도 정책을 조정해 저빈도 워커와 외부 API의 복구 가능성을 높인 과정을 정리한다.
· 인프라·운영
문서 드리프트를 넘어 생성기의 정확성 검증하기
자동 생성 문서의 신뢰성을 높이기 위해 불필요한 파서를 제거하고 드리프트·파서·타입 계약을 분리한 과정을 정리한다.
· 백엔드
침묵하거나 무한 재시도하는 자동화를 관찰 가능한 시스템으로 바꾸기
실패를 원장과 로그의 올바른 경계에 기록해 자동화의 재시도 정책과 관찰 가능성을 회복한 과정을 정리한다.
· 백엔드
CORS처럼 보인 구매확정 500의 실제 원인과 복구
CORS 문제처럼 보였던 구매확정 500을 추적해 운영 DDL과 레거시 PHP 코드의 스키마 계약 불일치를 찾아 복구한 과정이다.
· 백엔드
성공으로 기록된 실패: 알림 문자가 반년 동안 조용히 사라진 이야기
스토리지 경로 오류와 잘못된 상태값 때문에 문자 미발송이 드러나지 않았던 과정을 돌아보고, 실패를 명확하게 기록해야 하는 이유를 정리한다.
· 인프라·운영
nginx reverse proxy는 그대로, Kubernetes는 Gateway API로
단독 nginx의 reverse proxy는 여전히 유효하지만, Kubernetes에서는 ingress-nginx 은퇴에 맞춰 Gateway API로 단계적으로 전환해야 한다.
· 백엔드
worker가 모델을 기다리는 동안 책임이 흐려져요
Slack 봇은 3초 안에 답해야 하는데 모델은 몇 분을 씁니다. 그 사이를 worker가 붙잡고 있으면 타임아웃·취소·중복이 한 실행에 뒤엉켜요. 완료를 이벤트로 받아 내부 상태에 한 번만 모으는 구조를 정리했습니다.
· 인프라·운영
어제까지 잘 되던 캐시가 오늘 0%가 됐다면
프롬프트 앞부분을 다시 계산하지 않는 기능은 켜는 것보다 깨지지 않게 두는 게 어려워요. 날짜 한 줄이 앞에 끼면 그날부터 적중률이 0이 돼요. provider 넷의 규칙 차이와 무엇을 기록해야 원인을 찾는지 정리했어요.
· 백엔드
외부 작업을 재시도하기 전에 상태부터 확인해야 하는 이유
timeout 뒤에도 외부 write는 성공했을 수 있으므로 postcondition 검증, idempotency key, receipt를 결합해 중복 부작용을 막아야 한다.
· 백엔드
Slack 봇 기능, 어디까지 skill 이고 어디부터 MCP server 인가
Slack 슬래시 명령으로 만든 업무 에이전트를 ChatGPT·Codex plugin 으로 옮길 때 기능을 skill-only, MCP server tool, MCP server + UI 로 가르는 선을 OpenAI 공개 문서에서 뽑아 정리한다. 실제 이관과 측정은 아직 하지 않았다.
· 백엔드
에이전트의 행동을 통제하는 실행 전 권한 경계
Arcade.dev Actions Runtime을 통해 사용자별 OAuth 권한, 도구 실행, 감사 로그를 에이전트의 행동 경계로 분리하는 방법을 살펴본다.
· 백엔드
stdout만으로는 실행 상태도 권한도 취소도 구분되지 않는다
Coding Agent CLI를 stdout으로 감싸면 실행 상태와 도구 호출, 권한 요청, 취소가 한 덩어리로 섞인다. ACP가 그 경계를 어떤 사건으로 갈라놓는지 읽고, Slack 멀티 에이전트 시스템에 붙이기 전에 무엇부터 캡처할지 정리한다.
· 백엔드
NestJS 에이전트의 모델 운영 경계를 LiteLLM으로 분리할 수 있을까
credential, budget, rate limit, fallback, 비용 추적을 LiteLLM으로 넘기는 경계를 그려보고, CLI 구독으로 모델을 부르는 지금 구조에는 왜 그대로 붙지 않는지까지 짚는다.
· 백엔드
에이전트 평가는 답이 아니라 경로를 봐야 한다
trajectory-based evaluation으로 에이전트의 도구 호출, 근거 조회, fallback을 회귀 테스트하는 방법을 정리한다.
· 백엔드
Deep Agents는 프레임워크보다 실행 하네스다
Deep Agents의 planning, filesystem, subagents, human-in-the-loop를 장기 에이전트 작업의 실행 구조라는 관점에서 살펴본다.
· 백엔드
일찍 멈추는 에이전트를 다시 움직이게 하는 루프·하네스·그래프
코딩 에이전트는 이미 루프로 움직이지만 컨텍스트가 차오르면 스스로 일찍 멈춰요. 여기에 하네스와 그래프를 붙이면 반복만이 아니라 도구·권한·상태와 작업 흐름까지 설계할 수 있어요.
· 백엔드
감사 로그에 bot과 backend만 남는데 write action을 열어도 될까
봇 토큰만 쓰면 감사 로그에 bot과 backend만 남는다. user → agent → tool 호출 체인에 위임 범위와 감사 맥락을 남기는 설계안을 표준 draft와 제품 문서를 근거로 정리한다.
· 백엔드
봇이 커지자 무엇이 agent이고 무엇이 workflow인지 흐려졌어요
Slack 업무봇에 기능을 더할 때마다 실행 기록과 평가 지점을 다시 정하게 돼요. Mastra가 경계를 긋는 방식을 기준 삼아 무엇을 모델 판단에 남기고 무엇을 정해진 순서로 굳힐지 다시 나눠 봤어요.
· 백엔드
도구가 많을수록 Code Mode가 맞는 이유
Cloudflare Agents SDK의 Code Mode가 복잡한 도구 실행 계획과 중간 데이터를 어떻게 다루며, 어떤 작업에 적용할 만한지 살펴본다.
· 웹·네트워크
HTTP 캐시는 만료 뒤에도 다시 쓸 수 있다
Cache-Control로 신선도를 정하고 ETag와 If-None-Match, 304로 만료된 응답을 재검증하는 흐름을 정리한다.
· 백엔드
에이전트가 속는 건 막을 수 없다면, 권한 경계는 어디서 끊어야 할까
prompt injection을 완전히 막는 방법은 없다는 전제에서, 잘못된 판단이 권한 오남용으로 이어지지 않게 실행 경계를 어디서 끊을지 정리했다.
A+B_3
각 테스트 케이스마다 A+B를 출력한다.
N 찍기
자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
구구단
N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
빠른 A + B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
합
N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
사분면 고르기
사분면 고르기 정리 노트
시험 성적
시험성적을 조건에 따라 if문으로 처리하여서 풀어주었다.
알람 시계
첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다.
오븐 시계
첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어…
윤년
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
손익분기점
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.
휴대폰 번호 가리기
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고햣객들의 전화번호의 일부를 가립니다.
직사각형 별찍기
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
x만큼 간격이 있는 n개의 숫자
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
행렬의 덧셈
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
Prime-Number
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
Conditional Rendering
Conditional Rendering 정리 노트
Event Handling
Event Handling 정리 노트
List & Key
List & Key 정리 노트
element 렌더링 & Components와 Props
element 렌더링 & Components와 Props 정리 노트
JSX
JSX 정리 노트
State and Life Cycle
아래와 같이 components의 동작을 제어하는 두 method를 생명 주기 method라고 한다.
React Basic
counterwithjs.html : 기존에 했던 Counter를 js를 이용하여 re-rendering 구현