트레이 상주 앱 마무리 — 단일 인스턴스, 설정 즉시 적용, 한/영 전환, 70MB 단일 exe
창 없이 트레이에 상주하는 WPF 앱을 배포 가능한 상태로 마무리했다. Mutex와 이벤트로 만든 단일 인스턴스, 다시 시작 없이 바뀌는 단축키·테마·언어, 범위 외였던 영어 화면을 하루 안에 넣은 문구 표 구조, 155MB에서 70MB로 줄인 단일 exe와 그 대가까지 정리하며 연재를 마친다.
애드소프트 기술블로그
애드소프트 박재호입니다. IIS·ASP.NET·Docker·메일서버를 직접 운영하며 겪은 문제와 해결 과정을 기록합니다.
창 없이 트레이에 상주하는 WPF 앱을 배포 가능한 상태로 마무리했다. Mutex와 이벤트로 만든 단일 인스턴스, 다시 시작 없이 바뀌는 단축키·테마·언어, 범위 외였던 영어 화면을 하루 안에 넣은 문구 표 구조, 155MB에서 70MB로 줄인 단일 exe와 그 대가까지 정리하며 연재를 마친다.
1차는 한 PC 전용이지만 2차 여러 PC 동기화를 대비해 Id는 GUID, 모든 엔티티에 UpdatedAt, 삭제는 소프트 삭제로 정했다. 이 결정이 JSON 가져오기의 충돌 처리(더 최신인 쪽 유지)로 바로 쓰인 과정과, 고정 GUID 샘플, VACUUM INTO 백업, EF Core에서 만난 함정을 정리했다.
명령어 본문에 {{이름}}, {{이름:기본값}} 자리를 두고 복사할 때 채우는 기능. 정규식 대신 손으로 짠 파서, 닫히지 않은 중괄호를 그대로 두는 규칙, 같은 이름은 한 번만 묻기, 마지막 입력값 기억, Enter로 다음 칸까지 정리했다.
어느 프로그램 위에서든 Ctrl+Shift+Space로 검색 팝업을 띄우고, Enter로 복사한 뒤 원래 창으로 포커스를 돌려주는 구조. 메시지 전용 창으로 받는 전역 단축키, 커서가 있는 모니터와 DPI, 미리 렌더링으로 줄인 첫 호출 시간, 클립보드 재시도, 마우스 클릭이 안 먹던 결함까지 정리했다.
EF Core가 지원하지 않는 FTS5 가상 테이블을 raw SQL로 만들고, trigram 토크나이저로 한글과 부분 문자열을 찾게 했다. trigram이 못 찾는 짧은 검색어의 LIKE 폴백, bm25 컬럼 가중치, 트리거 없는 색인 갱신까지 정리했다.
PowerShell·Docker·SQL 명령어를 저장해 두고 전역 단축키로 2초 안에 꺼내 쓰는 Windows 앱 Cliply를 만들었다. 설계 문서로 범위와 단계를 먼저 정하고, Phase 0~7과 배포·영문 화면까지 진행한 과정을 연재 첫 글로 정리했다.
Unity 6 게임을 Play 스토어 비공개 테스트에 올리기까지의 기록. 빌드 설정을 강제하는 에디터 스크립트, 저장소 밖 서명 키와 환경변수, 한 번 쓰면 다시 못 쓰는 버전 코드, 네이티브 디버그 기호, -version 인자 충돌, 광고 ID 선언과 개인정보처리방침, 결과 이미지 공유까지 정리했다. 연재 마지막 글이다.
게임 15개를 만들며 코드보다 규칙을 더 많이 고쳤다. 앞사람을 따라 할 수 없게, 비밀은 방장 폰만 알게, 판이 끝나지 않는 규칙은 뒤집고, 모든 게임이 1등부터 꼴등까지 한 줄을 내게 한 과정을 정리했다.
서버 없이 같은 Wi-Fi의 폰끼리 게임 15개를 돌리면서 정한 규칙들. 판정은 방장 폰만 하는 호스트 권위, 게임마다 같은 모양의 메시지 4종과 규약 버전 1→12, 지난 턴 입력을 버리는 turnSeq, 늦게 들어온 폰의 elapsed 따라잡기, 통신 지연을 봐주는 유예 시간, 토큰으로 같은 자리에 돌아오는 재접속까지.
외부 서버 없이 같은 Wi-Fi나 방장 폰 핫스팟에서 여러 폰이 한 방에 모이게 만든 과정. 방장 폰의 TCP 47801 서버와 UDP 47800 비콘, 비콘이 안 올 때의 서브넷 스캔, IP 대신 「방 번호」, 그리고 PC에서 시험할 때 막힌 방화벽까지 정리했다.