크라우니포커스 서버 — 한선씨 풀파리티 포팅
개요
/Users/ef/crowny-focus/server.js (Node.js) 전체 기능을 한선씨(
포커스서버.한선)로 포팅하고 end-to-end 검증 완료.
무엇을 했는지
1. 네트워크 라이브러리 확장 (libs/네트워크.한선)
바이트수(s) — UTF-8 바이트 계산 (Content-Length 정확도). 한글 응답 잘림 수정
요청분해(data) → [메서드, 경로, 헤더맵, 본문] — 1차 줄 + 헤더 + 본문 파싱
헤더값(헤더맵, 키) — 대소문자 무시 조회
경로쿼리분리(URL), 쿼리값(쿼리, 키) — URL 쿼리 파싱
- HTTP응답 헤더에
Access-Control-Allow-Origin: *, Connection: close 추가
2. HTTP 클라이언트 예약어 수정 (libs/HTTP클라이언트.한선)
- 예약어
메서드 → 메서드명 전체 치환
소켓생성("TCP") 문자열 형식 → 소켓생성(2, 1) 숫자 형식
3. 포커스서버.한선 풀파리티 구현 (~700줄)
모든 엔드포인트 1:1 대응:
GET/POST /api/tasks, /api/tasks/today, /api/stats, /api/logs, /api/version
PUT/DELETE /api/tasks/:id, POST /api/tasks/:id/complete, /api/tasks/:id/log
POST /api/tasks/reorder (순서 변경)
GET/POST/PUT /api/session, POST /api/focus/start, /api/focus/stop
OPTIONS CORS preflight, 정적 파일 + SPA 폴백
- 다중 유저 (X-Crowny-User 헤더 →
~/.crowny-focus/users/<id>/)
- Core 동기화 (
코어푸시) — fire-and-forget 백그라운드 curl (동기 블로킹 회피)
- 반복 작업 (repeat) → 완료 시 다음 기한 자동 생성
4. 발견한 한선씨 함정 (feedback 메모리에 저장)
- 중첩
설정 플랫화: 설정(A, idx, 설정(A[idx], k, v)) 패턴이 12-element 서브배열을 flatten하여 파일 손상 유발. 중간 변수 사용 필수
파일존재 항상 -1: 존재 파일에도 -1 반환. 읽기() + 글자수 > 0 으로 대체
관련 파일
/Users/ef/crowny-focus/포커스서버.한선 — 서버 본체
/Users/ef/CrownyOS/crownyc/libs/네트워크.한선 — HTTP 파싱 확장
/Users/ef/CrownyOS/crownyc/libs/HTTP클라이언트.한선 — 클라이언트
/Users/ef/crowny-focus/server.js — 비교 대상 (JS 원본)
검증 결과
16개 엔드포인트 전수 테스트 통과 (test3 유저):
- POST x2 → GET(2개) → PUT(수정) → COMPLETE → DELETE → STATS(total=1 done=1) → 파일 무결성 확인 ✓
잔여 이슈
파일존재 항상 -1 반환 문제는 crownyc 런타임 버그. OP_FEXISTS/OP_FOPEN 경로 점검 필요
설정(outer, i, 설정(inner, ...)) 중첩 플랫화는 한선씨 컴파일러 설계 이슈. 문서화 필요
- 웹앱.한선 (통합 HTML/CSS/JS 생성기) — 아직 미착수