Skip to content

muni v0.24.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 19:03
· 42 commits to main since this release

항목 칸은 좁고 설명 칸은 넓은 표 — 그 폭의 차이는 표가 말하려는 것의 일부입니다. .docx 리더는 예전부터 열 너비를 지켰는데 한글 리더 둘은 버려서, 같은 표라도 한글 파일로 들어오면 모든 칸이 같은 폭이 되었습니다.

추가

.hwp — 열 너비

칸의 크기는 셀 LIST_HEADER 안, 주소(열·행·병합 수) 다음에 오는 HWPUNIT 두 낱말 입니다. 앞이 너비, 뒤가 높이입니다. 주소를 몇 바이트로 세는지 틀리면 너비 자리에서 병합 수를 읽습니다.

.hwpx — 열 너비

<hp:cellSz width> 에 있습니다. <hp:cellAddr> 과 이웃해 있고, 단위는 .hwp 와 같은 HWPUNIT 입니다.

병합된 칸은 열 하나를 말하지 않습니다

두 형식 모두 병합된 칸의 너비는 그 칸이 덮는 열들의 합 입니다. 그것을 첫 열의 너비로 적으면 병합이 있는 표의 열이 전부 어긋납니다. 그래서 열 너비는 한 열만 덮는 칸 에서만 배우고, 어느 열도 그런 칸을 갖지 못하면 그 표는 너비를 말하지 않은 것으로 둡니다.

픽셀 환산(인치당 96)은 hangul.PixelWidth, 칸이 지키는 열 목록은 hangul.ColumnWidths — 두 리더가 같은 답을 내도록 hangul 한 곳에 있습니다.

.hwpx 로 씁니다

쓰는 쪽은 6인치 본문 폭을 균등 분할하던 것을 편집기가 든 비율대로 나누도록 바꿨습니다. 너비를 말하지 않는 표는 전과 같이 균등 분할입니다. 그 김에 열 개수를 세는 자리도 고쳤습니다 — 위 행에서 세로로 병합되어 내려온 칸까지 세야 첫 행에 칸이 적은 표의 열 수가 맞습니다.

확인

형식 문서가 말하는 자리에 바이트를 깐 새 픽스처들입니다 — 리더의 상수가 아니라 형식에서 씁니다.

  • 너비가 적힌 .hwp 표가 그대로 들어오는지
  • 너비가 없는 .hwp 표에는 아무것도 기록하지 않는지
  • 한글이 쓰는 모양의 .hwpx <hp:cellSz> 에서 열 너비를 알아보는지
  • 쓰는 쪽이 균등이 아니라 비율대로 나누는지

gofmt -l, go vet ./..., go test ./... 전체가 통과합니다.

업그레이드

마이그레이션과 설정 변경은 필요하지 않습니다.

gzip -dc muni-v0.24.0.tar.gz | docker load
docker compose -f compose.example.yaml --env-file .env up -d

표가 든 한글 문서를 가져오셨다면 다시 가져와 보세요. 열 너비는 이번에 처음 들어옵니다. 이미 가져와 둔 문서는 그대로 남습니다.

오프라인 설치

릴리스 asset 에는 muni:v0.24.0 Docker 이미지가 포함되어 있습니다.

gzip -dc muni-v0.24.0.tar.gz | docker load
docker image inspect muni:v0.24.0

cp .env.example .env
# .env의 네 값을 운영 환경에 맞게 변경합니다.
docker compose -f compose.example.yaml --env-file .env up -d

애플리케이션이 반드시 필요로 하는 런타임 환경변수는 다음 네 개입니다.

환경변수 설명
POSTGRES_DSN PostgreSQL 접속 문자열
BOOTSTRAP_ADMIN 최초 관리자 아이디 또는 이메일
BOOTSTRAP_ADMIN_PASSWORD 최초 관리자 비밀번호(12자 이상)
ENCRYPTION_KEY base64로 인코딩한 32-byte master key

PDF 변환 동작만 조정하는 선택 환경변수가 두 개 있습니다.

환경변수 기본값 설명
MUNI_CHROMIUM_PATH 자동 탐색 PDF Export에 사용할 headless 브라우저 경로
MUNI_PDF_CONCURRENCY 2 동시에 실행할 Chromium 프로세스 수(1~32)

운영 정보

  • 서비스 포트: 8080
  • Liveness: /healthz
  • Readiness: /readyz
  • REST API: /api/v1
  • 공개 링크: /s/{token} — 인증 없이 열리는 유일한 화면입니다
  • OpenAPI: /api/openapi.yaml — 실제 라우트와 일치하며, 테스트가 그것을 지킵니다
  • Prometheus: /metrics — 관리자 인증 필요
  • MCP: /mcp
  • 지원 DB: PostgreSQL 15 이상
  • 이미지에는 PDF Export용 Chromium과 Noto CJK 글꼴이 포함되어 있습니다.

릴리스 파일 검증

  • 파일: muni-v0.24.0.tar.gz
  • 크기: (릴리스 후 기록)
  • SHA-256: (릴리스 후 기록)
  • 내부 이미지 태그: muni:v0.24.0
sha256sum muni-v0.24.0.tar.gz

GitHub Actions가 이미지 빌드, archive 생성, 내부 이미지 태그 검증을 완료한 뒤 이 asset을 게시했습니다.

문서