개발일지
victory.sarl 에서 서비스하는 프로젝트의 날마다 작업 기록. 그날의 커밋을 바탕으로 씁니다.
- 운영 화면 오류를 직접 모으기 — Sentry 대신 작은 수집기운영 브라우저에서 나는 스크립트·거래 오류를 묶어서 서버로 보내 DB 에 쌓는 수집기를 직접 만들었다. 소스맵은 서버에 올리지 않고 로컬에만 두어 원본 줄로 풀어 본다.
- 오늘의 도전 결과 공유 카드와 연속 도전검증된 오늘의 도전 기록을 링크로 공유하고, 연속 도전 일수와 어제 결과를 보여 줘 다음 날도 다시 오게 했다.
- 백미러 추가화면 위 가운데에 뒤쪽을 비추는 거울 창을 달고, 바로 뒤 사람의 이름과 거리를 보여 준다.
- 링크 미리보기, 첫 로딩 줄이기, 운영 지표도전장·초대 링크마다 다른 미리보기 카드를 붙이고, 풍경 계산을 격자 색인으로 바꿔 첫 로딩을 줄였다. Prometheus 지표도 내보낸다.
- 화면 전체 자동 점검과 코드성 조회 기억하기메뉴 102개를 차례로 열고 조회까지 눌러 오류를 모으는 점검 도구를 만들고, 화면을 열 때 나가는 공통코드·회계연도 같은 반복 요청을 기억해 요청 수를 363개에서 237개로 줄였다.
- 연습 코스, 카트 꾸미기, 트랙 재설계와 서버가 검증하는 오늘의 도전처음 온 사람을 위한 연습 코스와 카트 꾸미기, 캐릭터 셋 추가, 네 트랙 재설계, 도전장 링크, 서버가 입력을 다시 돌려 검증하는 오늘의 도전을 만들었다.
- 캐릭터 다섯 명으로 — KARTORY 의 후드 아이 셋을 FPS 몸에 옮기기KARTORY 에서 쓰던 동물 후드 캐릭터 셋(꾹꾹이·바니바니·왕눈이)을 VARENA 로 옮겨 캐릭터를 다섯 명으로 늘렸다. 카트에 앉은 몸을 서서 총을 드는 몸으로 바꾸면서 판정 상자·표정·성능에 맞춰 다시 손봤다.
- 십진 합계와 bigdecimal 0 의 함정, 브라우저에서 읽는 엑셀 업로드넥사크로 Decimal 객체와 보통 숫자의 차이로 생긴 버그를 고치고 같은 꼴을 찾는 점검 도구를 만들었다. 서버 없이 브라우저에서 xlsx 를 읽는 엑셀 업로드와 메뉴 검증 표시도 더했다.
- 프로그램 요청 처리 — 빈 값 비교, 불리언 변환, 화면 여는 차례화면에서 올라온 프로그램 요청을 하루 동안 처리했다. 빈 마스크 칸이 "수정"이 되던 것, enable 바인딩, 끼운 화면의 초기화 차례, 통신 중 조작 막기, 새 메시지 창 등을 고쳤다.
- 찾기 칸 팝업이 값을 못 돌려주던 것과 프로그램 요청 처리 절차코드·이름 찾기 칸에서 팝업으로 고른 값이 돌아오지 않던 문제를 고치고, 화면에서 올라오는 프로그램 요청을 처리하는 절차를 문서로 정했다.
- 휴대폰 전체화면과 서비스 워커 없는 홈 화면 앱휴대폰에서 전체화면으로 달릴 수 있게 하고, 서비스 워커 없이 매니페스트만으로 홈 화면에 추가할 수 있게 했다. 첫 캐릭터도 머겅이로 바꿨다.
- 새 디자인을 기본으로, 체험 계정과 무중단 배포 준비새 디자인을 유일한 화면 디자인으로 정하고 230개 화면을 점검했다. 공개 데모를 위해 조회 전용 체험 계정과 "체험하기" 단추를 만들고, 세션을 DB 에 두어 무중단 배포를 준비했다.
- 메인 화면·출력물·새 디자인, 그리고 공통코드 조회 6배 빠르게셸에 메인 화면과 시작 공지·즐겨찾기를 붙이고, 체험판이 끝난 리포트 도구 대신 Jasper 로 출력물을 다시 만들기 시작했다. 새 디자인 시안을 만들었고, 색인 하나로 공통코드 조회를 0.21초에서 0.035초로 줄였다.
- 변환 화면을 메뉴에 연결하고 AS-IS 와 결과 대조 269건메뉴를 변환한 넥사크로 화면으로만 열게 바꾸고 원본 같은 떠 있는 메뉴 창을 만들었다. 조회·저장 결과를 AS-IS 와 맞대 보고, 화면 디자이너 1단계를 시작했다.
- 넥사크로 화면을 Vue 로 그대로 — Nx 컴포넌트와 xfdl 변환기TO-BE 화면을 손으로 옮기던 방식을 접고, 넥사크로 컴포넌트를 같은 속성·같은 동작의 Vue 컴포넌트(Nx)로 다시 만든 뒤 xfdl 229개를 기계 변환했다. AS-IS·TO-BE 조회 결과 비교 도구도 만들었다.
- 마을 계정으로 바로 입장하기와 인증된 랭킹 기록그래픽 채팅 마을(VUTOPIA)의 입장권으로 KARTORY 에 로그인 없이 들어오게 하고, 인증된 기록은 계정 단위로 랭킹에 남기게 했다.
- 마을 통합 로그인 붙이기 — 입장권 확인, 서명형 세션 표, iframe 허용 제한VUTOPIA 마을 계정으로 바로 들어오는 입장권(통합 로그인)을 붙였다. 입장권은 서버만 확인하고, 게임 세션 표를 서명형으로 바꿔 서버를 다시 띄워도 인증이 이어지게 했다. 마을 패널에만 iframe 을 허용하는 CSP 도 넣었다.
- 빈 저장소에서 온라인 카트 레이싱까지 하루 만에three.js 와 직접 만든 아케이드 물리로 혼자 달리기를 만들고, 같은 물리를 서버에도 돌려 온라인 스피드전·봇·아이템전·랭킹까지 붙였다.
- 하루 만에 만든 브라우저 FPS — 서버 권위 넷코드부터 팀전·캐릭터·산탄총까지빈 저장소에서 시작해 서버 권위 30Hz 틱, 예측·보간·지연 보정 히트스캔을 갖춘 온라인 FPS 를 만들고 공개했다. 오후에는 재접속, 봇, 모바일 터치, 경기·방·팀전, 캐릭터, 새 무기를 차례로 붙였다.
- VERA 저장소 시작 — 레거시 ERP 를 새 이름으로 옮기고 로컬 실행 맞추기기존 넥사크로 ERP 와 새로 짓던 Vue 3 버전을 VERA 라는 이름의 저장소 하나로 옮기고, 비밀값을 소스 밖으로 빼고, 로컬 실행이 도커 DB 에 붙도록 맞췄다.