← 목록
기타 2026-07-09 3KB 읽기 3분

설정·환경 카드 (dotenv/config/viper/configparser 대응) — 파동① 웨이브2

개요

Python/Node/Go의 os.environ/python-dotenv/dotenv/viper/configparser 감각을 한선씨로 어떻게 대응시키는지, "존재≠동작" 관점에서 실측 검증한 카드. 크라우니 RPN킷 라이브러리카드 시리즈(테스트카드/직렬화카드에 이은 세 번째)의 일부.

무엇을 했는지

  1. 인벤토리: 내장 환경변수()/환경설정()(opcode 448/779), 환경변수.한선, 설정관리.한선,
환경.한선, 설정.한선, 글로벌설정.한선을 전수 조사·실컴파일·실행.
  1. 환경 이슈 발견+해결: 정본 crownyc 바이너리가 macOS Gatekeeper spctl rejected 상태라
run 즉시 SIGKILL(exit137)되고 있었음 — codesign -s - --force crownyc로 재서명해 해결 (이 세션의 카드 작업과 무관한 환경 이슈, 별도 기록).
  1. 핵심 발견 — 환경.한선 실행 불가: .한선 확장자지만 실제로는 RPN 저수준 방언으로
오작성됨(직렬화카드의 CSV.한선과 동일 계열 버그). hanseonc_high 컴파일 즉시 실패, hanseonc_rpn은 컴파일되나 실행 시 무한루프(SIGKILL). → 신규 dotenv파싱() 고수준 구현으로 대체.
  1. 핵심 발견 — 맵 폴백 함수 군 버그: 환경변수.한선환경가져오기기본()
설정관리.한선설정가져오기기본()맵꺼내() 없는키 센티넬(-1)을 v==0으로 잘못 체크 — 없는 키 조회 시 기본값이 아니라 리터럴 -1을 무음 반환. 맵있나() 기반 재구현으로 우회 검증.
  1. 핵심 발견 — 내장 환경변수() 타입 함정: 미존재 시 정수 -1 반환(문자열 아님).
v == "-1" 비교는 항상 거짓, v == -1만 정확.
  1. 설정.한선(gateway.yaml 전용 awk 브리지)을 실제 라이브 95KB gateway.yaml(278라우트)로
실증 — 정상 동작하나 범용 config 로더 아님을 명확화.
  1. 글로벌설정.한선은 등록 API만 있고 조회 API가 없어 config 프레임워크로 오인 위험 기록.
  2. 계층 우선순위 관용구(시스템env > .env맵 > 기본값) 작성·검증(viper 스타일 대응).
  3. 예제 9개(01~09) 전부 컴파일+실행 검증, 설정환경검증.sh 게이트 9예제/10케이스 전체 PASS.
  4. 크라우니코드 학습 2건 추가(단일라인으로 저장해 기존 learn.sh 멀티라인 저장버그 회피).

관련 파일

  • 카드: /Users/ef/crowny-rpnkit/라이브러리카드/설정환경카드.md
  • 검증 스크립트: /Users/ef/crowny-rpnkit/라이브러리카드/설정환경검증.sh (9예제/10케이스 PASS)
  • 예제: /Users/ef/crowny-rpnkit/라이브러리카드/예제/설정환경/01~09*.한선
  • 조사 대상 라이브러리(읽기만, 미수정): /Users/ef/CrownyOS/crownyc/libs/{환경,환경변수,설정,설정관리,글로벌설정}.한선

잔여 이슈 (§7 갭 목록과 동일)

  • P0: 환경.한선 자체를 신규 dotenv파싱()으로 교체하는 승격 작업(라이브 파일 수정은 별도 승인 필요)
  • P0: 환경변수.한선/설정관리.한선v==0 버그를 맵있나() 기반으로 실제 패치
  • P1: 글로벌설정.한선에 조회 API(설정값조회) 추가
  • P1: 불리언 타입 변환 네이티브 함수 없음 — 불리언변환(s) 라이브러리화 필요
  • P2: 범용 nested config는 YAML 대신 JSON.한선 채택 권장(직렬화카드 참조)