Skip to content

v0.241.0

Choose a tag to compare

@github-actions github-actions released this 09 Sep 15:27
· 16 commits to main since this release

kanpic v0.241.0

v0.241.0

내려받은 CSV·TSV 를 엑셀에서 열어도 한글이 깨지지 않습니다

표를 CSV 로 내려받아 두 번 눌러 엽니다. 그러면 이런 것이 나왔습니다.

지점紐�    留ㅼ텧
�쒖슱 媛뺣궓  1200

엑셀은 CSV 를 열 때 이 파일이 무슨 인코딩이냐고 묻지 않습니다. 파일 안에
UTF-8 이라는 표시가 없으면 그 컴퓨터의 기본 코드 페이지(한국어 윈도우라면
CP949)로 읽습니다. kanpic 이 내주는 파일은 UTF-8 이므로, 두 번 눌러 여는
평범한 길에서는 한글 칸이 통째로 깨져 보였습니다.

"데이터 → 텍스트 나누기" 로 들어가 인코딩을 골라 주면 제대로 나옵니다. 다만
내려받은 표를 여는 길은 대개 두 번 누르는 것이고, 그 길에는 인코딩을 고르는
자리가 없습니다.

같은 제품이 내주는 두 파일이 서로 달랐습니다

이 표시(BOM)를 붙이는 자리가 이미 있었습니다.

  • 관리자 로그 내려받기(/api/v1/admin/logs.csv)
  • AI 기록 내보내기

정작 한글이 가장 많이 담기는 워크북 내보내기만 붙이지 않았습니다. 같은
서버가 내주는 두 CSV 를 나란히 열면 하나는 멀쩡하고 하나는 깨져 보이던
셈입니다.

이제 워크북을 csv 로도 tsv 로도 내보낼 때 파일 앞에 같은 표시가 붙습니다.

되돌려 읽어도 첫 칸에 표시가 남지 않습니다

내보낸 파일을 다시 가져오는 길은 이미 이 표시를 떼고 읽고 있었습니다 —
올리기(parseDelimited)도, =IMPORTDATA(...) 도 그렇습니다. 그래서 내보내고
다시 올려도 첫 칸이 지점명 그대로입니다.

첫 칸이 중요한 이유는 그것이 대개 머리글 이기 때문입니다. 눈에 보이지 않는
표시가 머리에 얹혀 들어오면 그 열을 이름으로 가리키는 수식이 조용히 어긋납니다.
붙이는 자리와 떼는 자리가 이제 같은 utf8BOM 하나를 봅니다 — 한쪽만 고쳐져
어긋나는 일이 없도록 값을 하나로 묶었습니다.

확인

  • internal/importexport/service_test.go
    • TestDelimitedExportMarksItselfAsUTF8csvtsv 두 갈래로, 한글이
      담긴 표를 내보낸 파일 앞에 표시가 붙는지와, 그 파일을 되돌려 읽은 첫 칸이
      표시를 이고 있지 않은지를 함께 봅니다
    • TestCSVExportEscapesFormulaInjection — 표시가 붙은 뒤에도 수식 주입 방어가
      그대로인지 보도록 함께 고쳤습니다

올리실 때

서버가 내주는 파일의 첫 세 바이트만 달라집니다. 화면도, 이미 저장한 문서도
그대로이고 따로 하실 일은 없습니다. 이전 릴리즈에서 내려받아 둔 CSV 는 여전히
표시가 없으므로, 그 파일이 엑셀에서 깨져 보인다면 다시 내려받으시면 됩니다.

오프라인 설치

이 릴리즈는 웹 자산과 서버 바이너리를 포함한 Docker 이미지 아카이브로 제공됩니다.

sha256sum -c kanpic-v0.241.0.tar.gz.sha256
gzip -dc kanpic-v0.241.0.tar.gz | docker load
docker run --rm -p 8080:8080 \
  -e POSTGRES_DSN='postgres://kanpic:password@postgres.internal:5432/kanpic?sslmode=require' \
  kanpic:v0.241.0
  • 필수 런타임 환경 변수: POSTGRES_DSN
  • Redis 및 외부 인터넷 연결: 불필요
  • 관리자 초기 로그인을 보호하려면 BOOTSTRAP_ADMIN_IDBOOTSTRAP_ADMIN_PASSWORD를 함께 지정합니다.
  • 무결성 검증 파일: kanpic-v0.241.0.tar.gz.sha256