이 글은 Daily Log 시리즈의 148번째 기록입니다. (총 155개)

오늘 한 일

  • BuildingHub
    • 남아 있던 백로그 다섯 중 넷을 처리함
    • 올린 사진을 브라우저에서 자동으로 줄이게 함 — 4000×3000 273KB짜리가 11KB로 들어감
    • 관리자 조작 이력을 만듦. 누가 언제 승인·반려·배포했는지 남고, 묶음별로 걸러 볼 수 있음
    • 회의실 다섯 곳의 좌석 배치도를 그림 — 극장식·강의식·ㄷ자·회의 테이블
    • 사업자등록증 첨부를 붙임. 담당자이거나 본인 확인을 통과해야만 열림
    • 남은 하나(예약 안내 메일)는 배포 전에는 끝낼 수 없어 미루기로 정함
  • 모래게임 Sandrop
    • 501~600탄에 쓸 도안 100종 선정
    • 도안 검토용 페이지 제작 — 그림을 클릭하면 투명 PNG로 받아 고칠 수 있고, 고칠 것에 체크·메모가 남는다
  • ScorePlayer
    • 악보 기호를 전용 폰트(Bravura)로 바꿈 — 상업적으로 써도 되는 라이선스인지 먼저 확인
    • 조표와 임시표가 반 칸 낮게 앉던 것을 잡음
    • 마디선을 직전 음표와 첫 음표의 한가운데로 옮기고, 임시표 폭까지 감안하게 함
    • 볼이 화면 한가운데서 튀도록 악보 배치를 다시 잡음
    • 빔이 음표에서 멀어지던 것, 기둥이 머리 반대편에 붙던 것, 쉼표가 음표와 겹치던 것을 고침
  • 오픈데이 Openday
    • 날짜를 20270830처럼 이어서 칠 수 있게 했다. 하이픈이 알아서 들어간다
    • 브라우저가 주는 날짜 칸은 연도 자리가 네 자리를 넘게 받아서 앞 여섯 자리를 연도로 삼켰다. 글자 칸으로 바꾸고 하이픈을 직접 넣게 했다
    • 달력은 옆 버튼으로 남겼다. 치는 길과 고르는 길을 둘 다 둔다
    • 앞자리를 고치면 뒷자리가 망가지던 것, 커서가 맨 뒤로 튀던 것, 달력이 이번 달에 서서 열리던 것을 고쳤다
    • 오늘 만든 것을 배포했다
  • 블로그
    • 블로그 repo를 Obsidian vault 밖(Documents\VSCode\kimlog0415.github.io)으로 옮기고, vault엔 _content만 junction으로 되비춰 검색이 코드에 안 묻히고 포스트만 잡히게 함
    • 시점 규칙 둘을 CLAUDE.md에 넣고 전 세션에 공지 — 가족·개인 상황 일반화(이해관계 서술 금지), 코더 삽질·소요·실수 프레이밍 금지(함정·교훈으로)
    • 게시된 오픈데이 글을 코더 삽질 프레이밍 기준으로 소급 수정
    • 오픈데이 6·TIL 6, KeyBloom 커버곡 2편 게시
    • permalink URL 오버라이드 구현 — frontmatter permalink이 있으면 URL을 그 값으로 고정(파일경로와 분리), 없으면 경로 폴백이라 기존 URL 보존
    • 기존 616편 permalink를 현재 경로로 동결(향후 파일 개명·재번호에도 URL이 안 흔들리게 대비)
    • 전 URL을 랜덤 8자로 이관하는 작업을 백로그에 등록(리다이렉트 301 동반 필수 조건 명시)
  • 여둘까 Office Layout
    • 백로그 정리 — 동시 편집은 접고, 가구 프리셋보다 도형 프리셋이 필요하다는 쪽으로 방향 변경
    • react-konva 이전은 하지 않기로 정하고 근거와 다시 검토할 신호를 문서에 남김
    • 화면을 실제로 눌러 보는 자동 점검(40항목)을 저장소에 넣음 — 명령 하나로 돌아가고 설치가 필요 없음
    • 2491줄 한 파일을 기능별 모듈 18개로 나눔(진입점 678줄, 가장 큰 모듈 248줄). 빌드는 여전히 없음
  • LOGSTONE Shop
    • 광고 SDK 도메인 지원 중단 안내를 받고 광고를 쓰는 네 곳을 전부 확인 — 모두 이미 새 도메인이라 고칠 것이 없었다
    • 확인 결과를 요청함에 공지로 남김 — 없으면 각 담당이 자기 저장소를 다시 뒤지게 된다
    • 출시 전 점검으로 적어 둔 항목이 출시 후에도 열려 있어 계속 올라오던 것을 종결

어려웠던 점

  • BuildingHub
    • 메일은 도메인 인증이 있어야 실제로 나가는데, 그 전에 만들면 “보냈다고 표시만 하는” 가짜가 된다. 없는 것보다 나쁘다고 판단해 미뤘다
    • 좌석이 154개인 방은 점을 다 찍으면 배치를 알려주기보다 뭉갠다. 몇 개를 그릴지와 캡션을 어떻게 쓸지가 같이 걸린 문제였다
    • 배치도의 글자 하나가 흰 바탕에 흰 글씨라 보이지 않았다. 화면으로는 그냥 빈 자리로 보인다
  • ScorePlayer
    • 화면을 봐도 무엇이 고쳐졌는지 알 수 없었다. 고쳤다는 설명만 있고 비교할 그림이 없었기 때문이다
    • 볼을 화면 중앙에 두려니 아래 단이 화면 밖으로 나갔다. 둘 다 만족시키려면 악보를 줄여야 했다
  • 오픈데이 Openday
    • 브라우저가 주는 날짜 칸을 못 쓰게 되는 게 아깝긴 했다. 달력이 딸려 오고 검증도 알아서 해 주는데, 여덟 자리를 이어서 못 친다는 이유 하나로 직접 만들어야 했다
    • 눌러볼 수가 없어서 같은 계산을 따로 돌려 아홉 경우를 확인했다. 맨 앞·가운데·맨 끝 입력, 백스페이스, 전체 선택, 빈 칸에 여덟 자리까지
    • 달력을 열기 전에 칸을 비우는 처리는 다른 데서 그대로 가져오면 틀린다. 같은 코드인데 자리에 따라 반대였다
  • 블로그
    • 코드와 _content가 한 repo에 붙어 있어야 해서(Astro·Cloudflare 빌드 제약) 물리적으로 못 나누고, junction으로 뷰만 좁히는 길을 찾아야 했다
    • 폴더가 잠겨(Obsidian·GitHub Desktop) 이동이 막혀 여는 것들을 다 닫고서야 옮겨졌다
    • 옮긴 뒤 도구가 엉뚱한 root로 떠서 세션이 죽은 것처럼 보였다 — root를 그 repo로 잡아야 한다는 걸 이동 안내에 미리 안 적은 탓
  • 여둘까 Office Layout
    • 파일을 나누려니 값을 바꿀 수 없어 막혔다. 다른 파일에서 가져온 이름은 읽기 전용이라, 먼저 상태를 한곳에 모으는 작업이 필요했다
    • 서로를 부르는 모듈들을 한 방향으로 펼지 그대로 둘지 정해야 했다. 장치를 새로 만드는 대신 그대로 두고 이유를 문서에 남기는 쪽으로 정했다
  • LOGSTONE Shop
    • 끝난 일이 목록에 계속 남아 있었다. 닫는 조건을 안 적어 두면 누가 언제 닫는지 아무도 모른다

배운 점

  • BuildingHub TIL 3으로 정리
    • 서버에서 못 하는 일은 브라우저에서 한다 — 큰 원본이 네트워크를 타지 않는 이점도 따라온다
    • 이력 기록이 실패해도 본 작업은 통과시킨다. 기록 때문에 승인이 막히면 주객이 바뀐다
    • 도면이 실제와 다르면 그 사실을 도면에 적는다
    • 비공개 파일은 이름을 추측하기 어렵게 만드는 것으로 끝내지 않는다
    • 시각을 저장하는 곳과 보여주는 곳의 기준이 다르면 아홉 시간이 어긋난다
    • 검사끼리 같은 자원을 잡으면 엉뚱한 이유로 실패한다
  • ScorePlayer TIL 4로 정리
    • 기호마다 “어디를 기준으로 앉는지”가 정해져 있다. 규격을 따르는 폰트를 쓰면 눈대중 보정이 통째로 사라진다
    • 같은 값을 두 곳에서 각각 정하면 언젠가 어긋난다
    • 여럿을 아우르는 기준을 잡을 때 가장 튀는 하나에 맞추면 전체가 끌려간다
    • 고쳤다는 말보다 전후 그림 한 장이 빠르다
  • 오픈데이 Openday TIL 7로 정리
    • 브라우저가 공짜로 주던 부품은 셋이 다 맞을 때만 버린다 — 못 고치는가, 자주 쓰는가, 잃는 것을 되찾을 수 있는가
    • 못 되찾은 것을 무엇에 기대어 포기했는지까지 적어 둔다. 그 전제가 깨지는 날 여기부터 보게 된다
    • 넘치는 입력은 자르기·거절하기·덮어쓰기 중 하나를 고르는 것이 설계다. 아무 말 없이 잘리게 두는 건 안 고른 것이다
    • 조용한 손상은 오류보다 나쁘다. 결과가 그럴듯한 모양을 유지하면 더 안 보인다
    • 알아서 맞춰 주는 장치에는 조건이 붙어 있다. 조건을 모르면 조건 밖에서 난 일을 버그로 못 알아본다
    • 코드를 가져올 때는 무엇을 하는지가 아니라 무엇을 막으려고 그렇게 돼 있는지를 본다. 같은 앱 안에서 옮길 때가 더 위험하다
    • 둘 중 무엇이 나은지 묻기 전에 둘 다 두는 값이 얼마인지 본다. 싸면 고를 일이 아니다
  • 블로그 TIL(Obsidian vault에서 코드만 빼기 — directory junction)로 정리
    • junction은 복사가 아니라 진짜 폴더를 두 경로에서 접근하는 별칭 — 빌드가 붙여야 하는 걸 쪼개지 않고 보이는 범위만 좁힌다
    • git 원격은 로컬 위치와 독립이라 로컬 이동은 Cloudflare 배포에 영향이 없다
    • Obsidian Sync는 앱이 감지한 변경만 올린다 — 파일시스템에서 직접 고치면 데스크톱 앱이 읽어야 모바일까지 간다
  • 여둘까 Office Layout TIL 11로 정리
    • 가져온 이름에는 대입할 수 없다 — 재대입되는 값은 객체 속성으로 둔다
    • 상태를 모으면 무엇이 진짜 공유되는지 드러난다(경계를 넘나드는 임시 상태 여섯 개를 그때 알았다)
    • 순환 참조는 모듈을 읽어들이는 시점에 서로의 값을 안 쓰면 안전하다 — 허용했으면 이유를 문서에 남긴다
    • 되부르는 곳 없는 조각부터 떼면 import가 단순해진다
    • 이름만 보고 기계적으로 치환하면 문자열 안의 요소 id·객체 축약·전개 연산자·정규식에서 걸린다
    • 넓게 훑는 수정은 안전망을 먼저 만들고 단계마다 돌린다 — 기능이 그대로라는 근거가 커밋마다 남는다
  • LOGSTONE Shop
    • 확인해서 끝난 일은 날짜와 함께 재확인 불필요라고 적어야 닫힌다. 닫는 조건이 없으면 출시 전 점검 같은 항목이 출시 뒤에도 목록에 남는다
    • 같은 안내가 여러 곳에 갔을 땐 확인 결과를 한 번 적어 공유한다. 안 그러면 각 담당이 각자 자기 저장소를 다시 뒤진다

해야 할 일

  • BuildingHub
    • 예약 승인·반려 안내 메일 발송 (배포와 함께)
    • 공개 배포 — 클라우드 자원이 필요해 승인 대기
  • 모래게임 Sandrop
    • 도안 검토 결과 반영하고 501~600탄 생성
    • 발열 재측정
  • ScorePlayer
    • 재생 소리 붙이기
    • 가사 직접 입력과 보정 화면
    • 구간만 뽑는 기능
    • 박자표 기호와 잇단음표 표시
  • 오픈데이 Openday
    • 모바일 화면 재설계
    • 이월 사슬을 날짜가 바뀐 뒤에 실제로 확인하기
    • 사람들에게 열기 전 구글 확인 절차 — 소유한 도메인이 필요하다
  • 블로그
    • GitHub 계정 이전(kimlog0415) + Cloudflare 재연결 검토 (별건 — 배포가 걸려 있어 조심)
    • 데일리 08-20~29 검수·게시
    • 검수 대기: 룸톤·로그스톤 샵·UE5·BuildingHub·ScorePlayer·콘티온·크레센도
  • LOGSTONE Shop
    • KeyBloom 0.1.7 나오면 업데이트 내역에 이어붙이기
    • 중복 파일 찾기 앱 손질 후 등록 재검토

Series: Daily Log

1 오늘 해낸 것 2 오늘 해낸 것 3 오늘 해낸 것 4 오늘 해낸 것 5 오늘 해낸 것 6 오늘 해낸 것 7 오늘 해낸 것 8 오늘 해낸 것 9 오늘 해낸 것 10 오늘 해낸 것 11 오늘 해낸 것 12 오늘 해낸 것 13 오늘 해낸 것 14 오늘 해낸 것 15 오늘 해낸 것 16 오늘 해낸 것 17 오늘 해낸 것 18 오늘 해낸 것 19 오늘 해낸 것 20 오늘 해낸 것 21 오늘 해낸 것 22 오늘 해낸 것 23 오늘 해낸 것 24 오늘 해낸 것 25 오늘 해낸 것 26 오늘 해낸 것 27 오늘 해낸 것 28 오늘 해낸 것 29 오늘 해낸 것 30 오늘 해낸 것 31 오늘 해낸 것 32 오늘 해낸 것 33 오늘 해낸 것 34 오늘 해낸 것 35 오늘 해낸 것 36 오늘 해낸 것 37 오늘 해낸 것 38 오늘 해낸 것 39 오늘 해낸 것 40 오늘 해낸 것 41 오늘 해낸 것 42 오늘 해낸 것 43 오늘 해낸 것 44 오늘 해낸 것 45 오늘 해낸 것 46 오늘 해낸 것 47 오늘 해낸 것 48 오늘 해낸 것 49 오늘 해낸 것 50 오늘 해낸 것 51 오늘 해낸 것 52 오늘 해낸 것 53 오늘 해낸 것 54 오늘 해낸 것 55 오늘 해낸 것 56 오늘 해낸 것 57 오늘 해낸 것 58 오늘 해낸 것 59 오늘 해낸 것 60 오늘 해낸 것 61 오늘 해낸 것 62 오늘 해낸 것 63 오늘 해낸 것 64 오늘 해낸 것 65 오늘 해낸 것 66 오늘 해낸 것 67 오늘 해낸 것 68 오늘 해낸 것 69 오늘 해낸 것 70 오늘 해낸 것 71 오늘 해낸 것 72 오늘 해낸 것 73 오늘 해낸 것 74 오늘 해낸 것 75 오늘 해낸 것 76 오늘 해낸 것 77 오늘 해낸 것 78 오늘 해낸 것 79 오늘 해낸 것 80 오늘 해낸 것 81 오늘 해낸 것 82 오늘 해낸 것 83 오늘 해낸 것 84 오늘 해낸 것 85 오늘 해낸 것 86 오늘 해낸 것 87 오늘 해낸 것 88 오늘 해낸 것 89 오늘 해낸 것 90 오늘 해낸 것 91 오늘 해낸 것 92 오늘 해낸 것 93 오늘 해낸 것 94 오늘 해낸 것 95 오늘 해낸 것 96 오늘 해낸 것 97 오늘 해낸 것 98 오늘 해낸 것 99 오늘 해낸 것 100 오늘 해낸 것 101 오늘 해낸 것 102 오늘 해낸 것 103 오늘 해낸 것 104 오늘 해낸 것 105 오늘 해낸 것 106 오늘 해낸 것 107 오늘 해낸 것 108 오늘 해낸 것 109 오늘 해낸 것 110 오늘 해낸 것 111 오늘 해낸 것 112 오늘 해낸 것 113 오늘 해낸 것 114 오늘 해낸 것 115 오늘 해낸 것 116 오늘 해낸 것 117 오늘 해낸 것 118 오늘 해낸 것 119 오늘 해낸 것 120 오늘 해낸 것 121 오늘 해낸 것 122 오늘 해낸 것 123 오늘 해낸 것 124 오늘 해낸 것 125 오늘 해낸 것 126 오늘 해낸 것 127 오늘 해낸 것 128 오늘 해낸 것 129 오늘 해낸 것 130 오늘 해낸 것 131 오늘 해낸 것 132 오늘 해낸 것 133 오늘 해낸 것 134 오늘 해낸 것 135 오늘 해낸 것 136 오늘 해낸 것 137 오늘 해낸 것 138 오늘 해낸 것 139 오늘 해낸 것 140 오늘 해낸 것 141 오늘 해낸 것 142 오늘 해낸 것 143 오늘 해낸 것 144 오늘 해낸 것 145 오늘 해낸 것 146 오늘 해낸 것 147 오늘 해낸 것 148 오늘 해낸 것 읽는 중 149 오늘 해낸 것 150 오늘 해낸 것 151 오늘 해낸 것 152 오늘 해낸 것 153 오늘 해낸 것 154 오늘 해낸 것 155 오늘 해낸 것