← 목록
기타 2026-07-17 4KB 읽기 5분

building.crowny.org:9605 빌딩서버 구축

개요

크라우니빌딩(빌딩 시설관제 앱) 번들을 웹 도메인으로 서빙하는 한선씨 서버를 /Users/ef/crowny-building/에 신규 구축. 포트 9605는 이미 gateway.yaml에 crowny-building 엔트리로 등록되어 있었음(본 작업에서 gateway.yaml 무편집).

무엇을 했는지

  1. 빌딩서버.한선 — TCP 서버(9605): /·/index.html→app 번들(4.2MB) 스트리밍,
/design→design 번들(4.3MB) 스트리밍, /health, /api/route?cmd=...bundle/building/bridge/빌딩명령.한선 판정엔진을 별도 프로세스(체계()+crownyc run 핀toau)로 실행해 PSV 결과 반환.
  1. start.sh — 소스+컴파일러+VM+출력 4항 mtime 비교로 재컴파일 판단 후
exec crownyc run(PID 이양, launchd가 실제 서버 PID를 직접 추적).
  1. ~/Library/LaunchAgents/org.crowny.building.plist — KeepAlive, PATH 명시,
로그 /tmp/crowny-building.log.
  1. CLAUDE.md — 구조/포트/검증명령/함정 기록.

검증 게이트 (전부 PASS, 2026-07-17)

  • a. CROWNY_STRICT=1 hanseonc_high 컴파일 — 경고 0, 에러 0 (1차 시도에서
파일바이트수·현재밀리초 미정의 함수 에러 발견 → 파일바이트크기·현재시간으로 교정)
  • b. /healthOK building 9605
  • c. / → app 번들과 cmp 바이트 무결(BYTE_IDENTICAL, 4,262,455B)
  • d. /design → design 번들과 바이트 무결(BYTE_IDENTICAL, 4,317,706B)
  • e. /api/route?cmd=3층 회의실 시원하게 해줘
공조|냉방|3층|티|0|offline|단일구역 가역 조작 - 즉시실행
  • f. LaunchAgent load 후 kill -9 → KeepAlive 자가부활 확인(새 PID로 즉시 재기동, health 정상)
  • g. 게이트웨이(라이브 HTTP 업스트림 8080) 경유 확인:
curl -H "Host: building.crowny.org" http://127.0.0.1:8080/health → OK. 추가로 https://building.crowny.org/(443/stunnel)까지 실측 — cert SAN에 building.crowny.org 이미 포함되어 있어 HTTPS 전체 경로(4.2MB 앱 스트리밍 포함)도 바이트 무결 확인됨(예상보다 좋은 결과 — 사전 인증서 발급 불필요).

관련 파일

  • /Users/ef/crowny-building/빌딩서버.한선
  • /Users/ef/crowny-building/start.sh
  • /Users/ef/crowny-building/data/빌딩서버.toau, data/빌딩명령.toau
  • /Users/ef/crowny-building/CLAUDE.md
  • ~/Library/LaunchAgents/org.crowny.building.plist
  • (읽기 전용 참조, 무수정) /Users/ef/CrownyBrowser/bundle/building/app/index.html,
bundle/building/design/index.html, bundle/building/bridge/빌딩명령.한선

함정 조우 기록

  • 파일바이트수()/현재밀리초()는 존재하지 않는 함수명(학습DB 패턴에 잘못 박제되어 있었음) —
실제는 파일바이트크기()(opcode 297)·현재시간(). STRICT 컴파일에서 즉시 "미정의 함수"로 걸러짐(컴파일 게이트가 정확히 작동).
  • 파일존재()는 1=있음/-1=없음(0 아님) — 정적파일 존재 가드에 반영.
  • 4.2MB 정적파일은 읽기()(65535B 캡) 대신 파일소켓전송() 디스크→소켓 직결 스트리밍으로
우회(사전 학습DB 게이트웨이_정적_fork0_서빙 패턴 그대로 재사용, 파일바이트크기()로 Content-Length 계산).
  • /health·/api/route 등 한글 포함 가능 동적 응답은 Content-Length 생략 +
Connection: close로 UTF-8 바이트수 계산 함정 회피.
  • 빌딩명령.한선은 top-level 메인() 자체실행 CLI라 가져오기 대신 별도 프로세스 실행으로 격리.

잔여 이슈

없음 — 전 게이트(a~g) 통과, LaunchAgent 상시 구동 중.

크라우니코드

lookup HIT 다수(TCP accept 루프, URL디코드/헥스바이트, 파일소켓전송 정적스트리밍, bind실패종료, 쿼리스트링 분리 — 전부 학습DB/패턴DB 재사용) / MISS 2건 생성(cmd파라미터추출 직접 파싱, 4항 mtime 재컴파일 판정) / learn 추가 2건(빌딩서버_정적스트리밍_route프록시 via crownycode-brain.sh learn, cmd파라미터추출_쿼리직접파싱 via crownycode-learn.sh add).