개발 글 모아보기
개발 글 27편입니다.
-
GitHub 코드 커버리지 룰셋 REST API 설정과 임계값 2가지
GitHub이 2026년 9월 18일 Restrict code coverage 룰셋을 REST API로 열었습니다. 최소 라인 커버리지와 최대 하락폭 두 임계값, code_coverage 파라미터, Cobertura XML 업로드 조건, Code Quality 요금 계산 기준까지.
-
Supabase MCP 연결 방법과 Gemini Enterprise 요금 3종
Supabase 가 Gemini Enterprise 사전 구축 커넥터로 들어갔습니다. 에디션별 좌석 요금과 연결 경로, MCP 서버 URL 에 붙이는 read_only·project_ref·features 파라미터, 기본으로 켜지는 도구 그룹을 공식 문서 기준으로 정리했습니다.
-
Copilot 사용량 지표 API에 MCP·커스텀 에이전트 필드 10개 추가
GitHub Copilot 사용량 지표 API가 2026년 9월 17일부터 CLI의 스킬·커스텀 에이전트·MCP 서버·슬래시 명령어·플러그인 활동을 내려줍니다. 새 필드 10개와 집계 규칙, 조회 권한과 엔드포인트 주소까지.
-
ubuntu-latest Ubuntu 26.04 전환 날짜와 사라진 도구 목록
GitHub Actions의 ubuntu-latest 라벨이 2026년 10월 19일부터 11월 19일 사이에 Ubuntu 26.04로 옮겨 갑니다. 전환 일정과 24.04 고정 방법, 이미지에서 빠진 Miniconda·Julia·Swift, Python 3.14 변경점을 정리했습니다.
-
구글 플레이 조직 계정 전환 조건과 D-U-N-S 번호 발급 기간
구글 플레이 개인 계정을 조직 계정으로 바꾸려면 웹사이트 인증과 D-U-N-S 번호가 먼저 필요합니다. 계정 유형 변경 메뉴 위치, 발급 기간과 비용, 한국 개발자 추가 입력란을 2026년 9월 공식 문서 기준으로 정리했습니다.
-
Vercel Hobby 상업적 이용 기준과 Pro 전환 비용 $20
Vercel Hobby 플랜은 광고나 결제가 붙으면 Pro 나 Enterprise 가 필요합니다. 공식 문서가 정의한 상업적 이용 범위와 무료 한도, Pro 플랫폼 요금 $20 구성, Spend Management 일시중지의 503 오류를 2026년 9월 기준으로 정리했습니다.
-
봇이 PR을 승인하게 두기 전에: 자동 코드 리뷰 워크플로에 그은 경계
GitHub Copilot이 풀 리퀘스트 승인까지 하게 됐습니다. 승인이 리뷰 코멘트와 무엇이 다른지, 그리고 Claude 기반 자동 리뷰 워크플로를 실제로 운영하며 어디까지 자동에 맡기고 어디에 사람을 남겼는지 워크플로 구성 그대로 정리합니다.
-
클로드와 함께 방치형 게임 만들기: 5. 업그레이드 UI
'배달왕 키우기' 개발 다섯 번째 편. 프로그레스 바의 실시간 피드백, MAX 상태 처리, 한 화면·아코디언·탭 세 가지 모바일 정보 구조를 비교해 탭을 채택한 UI 설계 과정을 정리한다.
-
사무실 없이 운영하는 팀의 백오피스 보안: Cloudflare Access + Tunnel 도입기
사무실 없이 운영하는 팀의 백오피스를 Cloudflare Access와 Tunnel로 보호한 도입기. EC2 포트를 인터넷에 노출하지 않으면서 팀원 이메일 인증으로 접근을 통제한 구성과 시행착오를 정리한다.
-
클로드와 함께 방치형 게임 만들기: 4. 탈것 강화 시스템
'배달왕 키우기' 개발 네 번째 편. 탈것 강화 비용을 지수 곡선(배율 1.15)으로 설계한 이유와 첫 강화 ROI 기준, '강화 vs 교체' 딜레마, enhance.ts를 순수 함수로 분리한 결정을 정리한다.
-
클로드와 함께 방치형 게임 만들기: 3. 탈것 교체 시스템
'배달왕 키우기' 개발 세 번째 편. 수집형 대신 교체형 탈것 시스템을 택한 이유, 단방향 업그레이드와 강화 레벨 초기화 결정, buyBike의 반환 패턴까지 설계 의사결정을 정리한다.
-
클로드와 함께 방치형 게임 만들기: 2. 게임 루프와 상태 관리 구현
'배달왕 키우기' 개발 두 번째 편. requestAnimationFrame 기반 게임 루프와 DeltaTime 설계, Zustand 상태 관리 구조를 setInterval 등 대안과 비교하며 왜 그렇게 선택했는지 정리한다.
-
클로드와 함께 방치형 게임 만들기: 1. 기술 스택 선정과 프로젝트 세팅
방치형 게임 '배달왕 키우기'를 Claude와 함께 만들기 시작한 첫 편. 1인 개발에서 빠른 프로토타이핑을 위해 Vite·React·TypeScript·Zustand 스택을 고른 이유와 프로젝트 세팅 과정을 정리한다.
-
클로드와 함께 방치형 게임 만들기: 0. 어떤 게임을 만들 것인가
방치형 게임 '배달왕 키우기'의 기획 편. 왜 방치형 장르인지, 배달이라는 소재와 코어 루프 설계, 8단계 탈것과 강화 시스템의 밸런스 철학까지 코드를 쓰기 전의 의사결정을 정리한다.
-
전국 10만+ 공인중개사 검색 기능 구축기 (Elasticsearch + 좌표 검색)
부동산 중개 서비스에서 전국 10만 공인중개사사무소 검색 기능을 구축한 과정. V-World 데이터 적재부터 Elasticsearch 좌표 기반 검색 구현까지 실제 순서대로 정리한다.
-
n8n으로 1:1문의 중복 체크 자동화 시스템 구축
부동산 서비스의 1:1 문의 CS를 자동화한 기록. n8n 워크플로가 새 문의를 과거 문의 목록과 대조해 중복 여부를 판단하도록, 알고리즘 비교 대신 LLM 판단을 조합해 구축한 과정을 정리한다.
-
AWS-Dynamo DB를 활용하여 유저 통계 데이터 수집
백오피스에 게임별 유저 통계 차트를 붙이기 위해 AWS DynamoDB로 수집 파이프라인을 구성한 기록. 테이블 설계와 집계 방식, 백오피스 차트 연동까지 실제 구축 순서대로 정리한다.
-
티마고치 최종 회고
코드잇 스프린트의 마지막 팀 프로젝트 '티마고치' 최종 회고. 기획부터 발표까지의 과정과 맡았던 역할, 잘한 점과 아쉬운 점, 협업에서 배운 것들을 솔직하게 정리한다.
-
Zustand를 활용한 toast 만들기
React 프로젝트에서 Zustand로 전역 toast 알림을 직접 만든 과정. 스토어 설계와 컴포넌트 구성, 라이브러리 없이 구현하며 배운 상태 관리 패턴을 코드와 함께 정리한다.
-
2주간의 리액트 첫 프로젝트 회고: Rolling
2주간 진행한 첫 리액트 팀 프로젝트 'Rolling' 회고. 롤링페이퍼 서비스를 만들며 겪은 협업 방식, 기술적 선택, 잘한 점과 아쉬운 점을 정리한다.
-
자바스크립트에서 API 요청 보내기: fetch vs axios
자바스크립트에서 API 요청을 보내는 두 방법, fetch와 axios를 비교하고 프로젝트에서 fetch를 선택한 이유를 정리한다. 의존성·번들 크기·에러 처리 관점의 판단 기준을 담았다.
-
Styled Components를 사용한 이유
여러 CSS 스타일링 기법 중 Styled Components를 프로젝트에 선택한 이유와 적응 과정. CSS-in-JS의 장단점과 실제 사용하며 느낀 점을 정리한다.
-
Next.js App Router를 활용한 칸반보드 서비스, Todo-Todo 프로젝트 회고
팀원들과 대시보드를 만들고 할 일을 공유하는 칸반보드 서비스 'Todo-Todo' 프로젝트 회고. Next.js App Router 기반 구현 경험과 협업 과정에서 배운 것들을 정리한다.
-
app router의 페이지네이션
Next.js App Router에서 페이지네이션을 공통 컴포넌트로 만들며 겪은 시행착오. URL 쿼리 기반 상태 관리와 서버·클라이언트 컴포넌트 경계에서의 구현 판단을 정리한다.
-
reduce와 재귀 함수를 이용한 데이터 중복 제거
대시보드의 중복 데이터를 reduce와 재귀 함수로 제거한 경험. 페이지네이션 응답에서 중복이 생긴 원인과 두 가지 접근의 구현 코드, 선택 기준을 정리한다.
-
[git] 첫 PR
2021 핵토버페스트에 참가해 입문 4개월 차에 생애 첫 오픈소스 PR을 올린 후기입니다. PR을 올리기까지의 과정과 그때 배운 git 사용법을 기록으로 남깁니다.
-
[21/10/01] <월간_코드 리뷰> 후기
탈잉의 '월간 코드 리뷰' 모임에 참가한 후기입니다. 개발 입문 시절 다른 사람의 자바스크립트 코드를 읽고 제 코드를 리뷰받으며 느낀 점과 배운 것들을 기록으로 남깁니다.