Log
Log
작업 활동과 회고 기록
- AI 코딩 에이전트의 테스트 PASS를 그대로 믿을 수 있을까Taskery를 직접 쓰며, 테스트 통과가 실제 동작을 보장하지 못했던 이유와 검증 단계를 고쳐 온 과정을 정리한다.

- 헤르메스로 자동화를 운영하며 접한 사소한 문제들헤르메스와 슬랙 자동화를 실제로 운영하며, 남은 옛 설정·맥북 슬립·결과 보고·오류 로그에서 생긴 문제를 고친 기록이다.

- AI가 쓴 블로그에 필요한 이미지를 더한 방법AI가 작성한 글에 정확한 정보와 시각적 이해를 함께 보태기 위해, 이미지 제작 방식을 나누고 집필 흐름에 넣은 경험을 다룬다.

- 텔레그램에서 슬랙으로 헤르메스 사무실 옮기기텔레그램 DM 하나에 섞여 있던 대화·보고·승인 요청을 슬랙의 역할별 채널과 AI 직원으로 나눠, 헤르메스를 실제 작업 공간으로 옮긴 과정이다.

- AI 자동화와 사람의 판단을 잇는 우편함 만들기second의 컴파일 보고와 블로그 발제처럼 여러 작업에서 나온 요청을, 서로의 내부를 건드리지 않고 전달·결재·회송하기 위해 만든 중립 우편함의 구축기.

- AI 대화 기록으로 블로그 작성하기오래 멈춰 있던 블로그를 새로 정비하고, 기존 글 이관과 첫 AI 집필·문체 교정·실제 배포를 거쳐 다시 공개한 과정을 기록한다.

- 지식 뇌에 손발을 붙였다: LLM Wiki와 헤르메스 연결하기텔레그램 운영 비서 헤르메스와 지식 뇌 second를 연결하며, 복제 대신 원본을 직접 읽고 쓰는 두 통로만 남긴 과정을 정리한다.

- 지식 뇌와 연결한 첫 번째 비서 알림 기능놓치고 싶지 않은 정부지원 공고를 알려 주는 기능을 만들며, 계산·공고 읽기·지식 축적을 각각 다른 역할로 나눈 과정을 정리한다.

- LLM Wiki를 지식 뇌로 쓰게 해주는 두 가지 자동화LLM Wiki 방식으로 지식 공간을 만들어 놓고도 일주일 만에 안 쓰게 됐다. 방식은 그대로 두고 채우는 일과 여는 위치만 바꿔 다시 지은 기록이다.

- 멋진 비서를 만들기 위한 뜬구름 시도 끝에, LLM Wiki부터 세웠다헤르메스에 매료돼 시작한 두 번의 개인 AI 에이전트 구축이 멈춘 뒤, 내 맥락을 쌓고 다음 세션에 전달하는 작은 기반부터 다시 만든 과정이다.

- Apple Developer 계정 없이 macOS 앱을 배포한 방법코드 서명과 공증 없이 macOS 메뉴바 앱 Stash를 DMG 파일로 배포하고, 사용자가 처음 실행할 때 거쳐야 하는 경고 해제 과정을 안내한 기록이다.

- 화면 크기의 썸네일만 읽어 메모리를 줄인 방법이미지가 섞인 클립보드 목록에서 원본 이미지를 반복해서 읽던 방식을 바꾸고, 같은 화면 조건에서 메모리 사용량이 어떻게 달라졌는지 측정한 기록.

- Artillery로 부하 테스트 시나리오 실행Nest.js 채팅 백엔드를 대상으로 Artillery를 이용해 HTTP·WebSocket 부하 테스트 시나리오를 구성하고 결과를 분석한 과정을 정리한다.
- 부하 테스트의 개념과 지표부하 테스트와 스트레스 테스트의 개념을 비교하고, 홈서버 기반 Nest.js 애플리케이션에 대한 부하 테스트 진행 계획을 정리한다.
- ddclient으로 동적 DNS(DDNS) 자동화DNS 동적 업데이트 클라이언트 ddclient를 설치하고 Cloudflare 연동 환경변수를 설정해 동적 IP를 자동으로 갱신하는 과정을 정리한다.
- 동적 DNS(DDNS) 개념과 테스트공인 IP가 유동적인 홈서버 환경에서 DDNS 개념을 정리하고, Cloudflare API로 DNS 레코드를 조회·업데이트하는 과정을 직접 테스트한다.
- 포트 포워딩홈서버 구축 과정에서 라우터의 포트 포워딩 설정으로 외부 요청을 내부 서버로 전달하는 방법을 정리한다.
- DHCP Reservation으로 내부 IP 고정DHCP의 개념과 DHCP Reservation(예약)을 이용해 홈서버의 내부 IP 주소를 고정해야 하는 이유를 정리한다.
- Node.js 설치와 백엔드 애플리케이션 실행NVM으로 Node.js를 설치하고 pm2를 이용해 Nest.js 백엔드 애플리케이션을 홈서버에서 실행하는 과정을 정리한다.
- MySQL 설치와 설정우분투 홈서버에 MySQL을 설치하고 자동 실행 설정, 계정 생성과 권한 부여, 데이터베이스 생성까지 초기 설정 과정을 정리한다.
- Nginx SSL/TLS 발급과 자동 갱신Cloudflare DNS-01 챌린지와 Certbot으로 Let's Encrypt 인증서를 발급하고 Nginx에 적용해 자동 갱신까지 설정하는 과정을 정리한다.
- Nginx 설치와 리버스 프록시Ubuntu 홈서버에 Nginx 웹 서버를 설치하고 리버스 프록시를 구성하는 과정을 정리한다.
- Cloudflare DNS 설정Cloudflare에서 서브 도메인의 DNS 레코드를 추가해 홈서버 IP와 연결하는 방법을 정리한다.
- 방화벽 설정Ubuntu 서버에 ufw를 이용해 방화벽을 설정하고, SSH와 HTTPS 등 필요한 포트만 허용하는 과정을 정리한다.
- SSH 원격 접속 설정Ubuntu 서버에 OpenSSH를 설치하고 키 기반 인증으로 비밀번호 없이 안전하게 원격 접속하는 환경을 구성한다.
- Windows 디스크 파티셔닝과 Ubuntu 설치Windows OS 디스크를 파티셔닝해 여유 공간을 확보하고, USB 부팅 순서를 변경해 그 공간에 Ubuntu Desktop OS를 설치하는 과정을 정리한다.
- Rufus로 Ubuntu USB 부팅 디스크 만들기Ubuntu Desktop 설치용 부팅 USB를 Rufus로 만드는 과정을 정리한다.
- 운영체제 선택과 설치홈서버로 활용할 노트북에 Windows와 Ubuntu를 함께 운영하기로 하고, 데스크톱 버전을 선택한 이유와 설치 과정 개요를 정리한다.
- 홈서버 구축 과정 정리Ubuntu 기반 홈서버의 구축 배경과 아키텍처, 서버·네트워크·애플리케이션 설정 과정을 단계별로 정리한다.
- 프로젝트 배포와 점검채팅 프로젝트의 서버·클라이언트 배포를 마무리하고, 개발 동기와 규칙 준수 여부를 스스로 점검한다.
- 실시간 사용자 온라인 상태 관리채팅방 최대 정원 제한을 위해 Map 자료구조로 사용자 온라인 상태를 관리하고, 서버와 클라이언트 간 웹소켓 이벤트로 실시간 동기화하는 과정을 정리한다.
- 실시간 메시지 전송과 수신Socket.IO의 on/emit을 활용해 Nest.js 서버와 Next.js 클라이언트 간 채팅 메시지·공지 전송 및 수신 기능을 구현한 과정을 정리한다.
- 채팅방 입장/퇴장 처리 로직Socket.IO 기반 채팅 서비스에서 소켓 연결과 해제 시점에 채팅방 입장과 퇴장을 처리하는 서버·클라이언트 로직을 정리한다.
- Socket.IO 웹소켓 세팅Nest.js 서버와 Next.js 클라이언트 간 Socket.IO 기반 웹소켓 연결을 구성하는 과정을 정리한다.
- 웹소켓의 기본 개념과 통신 과정웹소켓의 개념과 특징, 핸드셰이크부터 연결 종료까지 이어지는 통신 과정을 정리한다.
- Cola Chat — 익명 채팅 프로젝트 소개익명 채팅 서비스 'Cola Chat'의 기획 배경, 핵심 기능, 개발 스택을 정리한 프로젝트 소개 글.
- I am Ironman: 게임 배포와 프로젝트 점검Webpack과 Vercel로 완성한 Phaser 게임을 배포해 블로그에 iframe으로 임베드하고, 처음 세운 동기·목적과 개발 규칙에 비춰 프로젝트를 점검한다.
- I am Ironman: 게임 씬 구성게임의 시작과 종료 흐름에 맞춰 백그라운드·인트로·플레이·오버 4개의 씬으로 나누고, Phaser의 씬 전환 메서드로 화면 흐름을 제어한 구성을 정리한다.
- I am Ironman: 콘텐츠 물리 충돌 처리Phaser.js Arcade 엔진의 사각형 물리 충돌 한계를 여러 개의 사각형 존으로 극복해, 콘텐츠 형태에 맞는 충돌 감지 영역을 직접 구현한 과정을 정리한다.
- I am Ironman: 콘텐츠 모션과 애니메이션Phaser.js 게임에서 캐릭터 모드별 이미지 교체로 애니메이션을 구현하고, 방향키·특정 키 입력에 따른 이동과 공격 모션 로직을 정리한다.
- I am Ironman: 게임 화면 구현게임에 등장하는 캐릭터·배경·무기 등 콘텐츠의 이미지와 기본 속성을 정의하고, object-manager-group-scene 구조로 콘텐츠를 생성·관리하는 아키텍처를 구현한 과정을 정리한다.
- I am Ironman: 프로젝트 세팅Phaser.js 게임 프로젝트의 디렉토리 구조를 정리하고, Phaser.js와 Webpack을 이용한 초기 세팅 과정을 기록한다.
- I am Ironman: 프로젝트 소개과거 Pygame으로 만들었던 미니 슈팅 게임 "I am Ironman"을 JavaScript 기반 Phaser.js로 컨버팅하기로 한 배경과 게임 소개.
- ERR_HTTP_HEADERS_SENT - HTTP 응답 후 수정 시도 문제 해결Nest.js 인터셉터에서 응답을 중복 반환해 발생한 ERR_HTTP_HEADERS_SENT 에러의 원인과 해결 과정을 정리한다.
- Let's Encrypt 인증서 갱신 실패 해결와일드카드 인증서 발급 시 거친 DNS 소유권 수동 인증 절차 때문에 certbot 자동 갱신이 실패한 원인을 파악하고, 인증서를 재발급해 문제를 해결한 과정을 정리한다.