이 글은 Today I Learn 시리즈의 230번째 기록입니다. (총 230개)

안내는 실제 화면 위에서

어제 테스터가 멈춘 자리로 안내 네 장을 정했다(앞선 TIL 16). 처음엔 화면 전체를 쓰는 카드 네 장을 옆으로 넘기게 만들었다. 폰에 깔아 보니 아니었다. 카드는 「재생목록을 골라 틀어요」라고 말하는데, 그 재생목록이 어디 있는지는 카드를 닫은 뒤에 다시 찾아야 한다.

그래서 오버레이로 바꾸자고 했다. 오버레이는 실제 홈 화면을 어둡게 덮고, 짚을 곳만 뚫어 그 옆에 말풍선을 붙이는 방식이다. 설명과 가리키는 대상이 한 화면에 있으니 「어디를 누르라는 거지」가 사라진다.

안내는 무엇을 말하느냐만큼 어디에서 말하느냐가 중요하다. 따로 떨어진 설명은 읽고 나서 다시 찾는 일을 남긴다.


무료 체험의 흔적을 얼마나 둘까

누른 순간부터 3일, 결제 정보는 받지 않는다

새로 가입하면 3일 무료 체험을 주기로 했다. 가입하자마자 체험을 시작하지 않고, 「3일 무료 체험을 시작할까요?」를 물어 누른 순간부터 3일로 정했다. 둘러만 보려는 사람의 3일을 헛되이 태우지 않기 위해서다.

체험은 플레이가 주는 무료 체험 오퍼가 아니라 우리 서버가 준다. 플레이 방식은 결제 수단을 먼저 받고, 체험이 끝나면 자동으로 결제된다. 서버 방식은 결제 정보를 받지 않고, 끝나면 그냥 30초 미리듣기로 돌아간다. 매장이 모르는 사이 돈이 나가는 일이 없으니, 약관도 「자동 갱신·무환불」이 아니라 「끝나면 결제 없이 종료」로 쓰면 됐다.

대신 체험 중에도 결제할 수 있어야 했다. 「전곡을 들을 수 있다」와 「이미 결제했다」를 한 칸으로 두면, 체험 중인 사람이 「이미 구독 중이에요」라며 결제를 거절당한다. 둘을 따로 봐야 했다.

탈퇴한 사람의 흔적도 개인정보다

체험은 이메일당 한 번이다. 탈퇴하고 같은 이메일로 다시 가입해 체험을 또 받는 걸 막으려면, 탈퇴한 뒤에도 「이 이메일은 체험을 썼다」는 기록이 남아야 한다. 이메일 원문 대신 해시(원래 값으로 되돌릴 수 없게 바꾼 값)로 남긴다.

로그스톤 샵이 개인정보처리방침에 이 기록의 보관 기간을 「룸톤을 운영하는 동안」이라고 적었다며, 다르면 알려 달라고 했다. 탈퇴 뒤 얼마나 둬야 하는지 물었다.

  • 해시라도 개인정보로 봐야 한다. 원래 값으로 되돌릴 수 없을 뿐, 특정인의 기록인지 확인할 여지는 남는다.
  • 법이 정한 숫자는 없고, 「목적에 필요한 최소한」을 우리가 정해 밝힌다. 「운영하는 동안」은 사실상 기한이 없어서 이 원칙과 어긋난다.
  • 기간은 막으려는 악용의 크기에 견줘 정한다. 길게 잡으면 되풀이해도 얻는 게 얼마 안 되고, 짧게 잡으면 주기마다 다시 받을 수 있어 막는 의미가 약해진다.

그래서 체험 시작일부터 1년으로 정했다. 아직 탈퇴하지 않은 계정은 계정 자체에 「체험 씀」이 남으니 1년이 지나도 다시 못 받는다. 1년 제한은 탈퇴 뒤 재가입에만 걸린다.


분류는 칸을 만드는 일이다

업종은 목록에서 고르고, 없으면 직접 적는다

업종을 회원이 가입할 때 고르게 했다. 자유 입력으로 두면 「카페」, 「까페」, 「커피숍」이 전부 따로 쌓여 업종별 추천과 통계가 흩어진다. 그렇다고 목록만 주면 목록에 없는 매장이 거짓으로 아무거나 고른다.

그래서 목록에서 고르고, 맞는 게 없으면 「기타」에 직접 적게 했다. 운영자는 「기타」로 적힌 값을 계정 수와 함께 보고, 자주 나오는 것을 목록에 올린다. 목록은 처음부터 완성할 필요가 없고, 기타가 쌓이는 걸 보며 키우면 된다.

첫 목록의 「호텔 라운지」를 보고, 호텔일 수도 라운지일 수도 있으니 「바·펍」처럼 나눠야 하지 않냐고 짚었다. 두 가지를 한 칸에 묶은 이름은 둘 중 하나만 해당하는 매장이 고르기를 망설이게 한다. 「호텔·라운지」로 나눴다.

새 결의 곡을 억지로 넣지 않는다

얼터너티브 메탈과 90년대 얼터너티브 록 프롬프트로 곡을 넣었다. 그런데 우리가 가진 분위기로 분류가 되는지 물었더니, 맞는 칸이 없었다. 프롬프트에서 분위기를 뽑는 자동 분류는 앞선 TIL 8에서 넓힌 키워드 사전 그대로라, 새 결이 들어오면 가장 비슷한 단어 쪽으로 끌려간다. 기존 분위기 열두 개는 경쾌·나른·우아처럼 전부 밝거나 편안한 쪽이다.

그 사이 곡들은 이미 「몽환」으로 들어가 있었다. 프롬프트의 「atmospheric synths」가 몽환으로 자동 분류된 것이다. 「몽환」은 호텔 라운지의 저녁 결이라, 그대로 두면 라운지에서 메탈 리프가 흘러나온다.

세 가지 안(새 칸 만들기, 매장 카탈로그에서 빼기, 몽환에 두기) 중 새 칸을 골랐다. 분위기 「강렬」과 장르 「록·메탈」이다. 헬스장·바·스트리트 매장처럼 센 음악이 맞는 곳이 있다.

  • 없는 칸에 억지로 넣으면, 그 칸을 믿고 고른 사람이 엉뚱한 곡을 듣는다. 분류가 틀리면 곡이 없는 것보다 나쁘다.
  • 자동 분류는 넓은 단어에 약하다. 「atmospheric」은 몽환으로, 「heavy」는 헤비 베이스 하우스까지 걸린다. 규칙을 만들 때 그 단어가 다른 결에도 쓰이는지 본다.

빈 칸은 조용히 틀린 값을 받는다

이 곡들을 수노 v6로 만들었는데, 내가 올라간 목록을 보니 v5.5로 적혀 있었다. 곡마다 엔진을 적는 칸이 비면 도구가 기본값 「수노 v5.5」를 넣었기 때문이다. 에러가 나는 게 아니라 조용히 틀린 값이 들어가서, 적힌 걸 보기 전엔 몰랐다.

그래서 기본값을 고정해 두지 않고, 검수 콘솔에서 엔진을 고르게 하고 새 버전은 직접 적어 추가하게 했다. 기본값은 편하지만, 세상이 바뀌면 틀린 값을 계속 대신 적는다.

보컬 판단을 사람에게 돌렸다

반입한 록 곡들이 「보컬 의심」으로 들어왔다. 앞선 TIL 8에서는 오탐이 잦아 의심 곡을 격리하지 않고 「표시」만 달기로 했었다. 자동 보컬 검사(곡에서 목소리만 떼어 내 크기를 재는 도구)가 찢어지는 기타와 디스토션을 목소리로 잡았다.

그런데 이제 곡은 수노에서 내가 한 번 듣고 고른 것만 받고, 콘솔에서 한 번 더 듣는다. 두 번 사람이 들은 곡에 자동 검사를 또 돌리면, 새로 알려 주는 건 없고 오탐만 남는다. 반입 때 자동 검사를 빼고 「1 무보컬 / 2 보컬」을 내가 고르게 했다.

그럼 허밍 정도면 보컬인지 물었다. 기준은 무보컬이 왜 중요한지에서 나왔다.

  • 가사가 있으면 손님이 말소리로 알아듣고 대화에 끼어든다.
  • 스토어에 「오리지널 연주곡」이라고 적었다.

그래서 「가사가 들리거나 목소리가 주선율이면 보컬, 배경 허밍과 코러스 패드는 무보컬」로 정했다. 앞선 TIL 4에서 「도구가 아니라 방침이 정할 문제」라고 적어 두고 미뤄 둔 것을 이제 정한 셈이다. 보컬 곡도 버리지 않고 보컬 표시를 달아 둔다.

자동 판정은 사람이 못 듣는 양을 걸러 줄 때 의미가 있다. 사람이 이미 다 듣는 흐름에서는 판정의 기준만 사람이 들고 있으면 된다.


도구는 흐름을 따라간다

이번 달부터 수노에서 받을 수 있는 곡이 한 달에 60곡 정도로 정해졌다(앞선 TIL 8에서 적은, 예산처럼 정해진 다운로드 수다). 예전 반입은 수십 곡을 한 폴더에 넣고 배치 파일을 두 번 누르면, 길이 미달·중복·보컬 의심을 알아서 폴더로 옮기고 나머지를 올리는 대량 자동이었다.

한 달 60곡이면 곡마다 들어 보는 게 평소 흐름이다. 그래서 반입을 검수 콘솔 하나로 합치자고 했다. 파일을 끌어다 놓고, 프롬프트를 곡마다 적고, 판정은 미리 표시만 해 둔 채 내가 보고 실행한다. 상단에는 「이번 달 업로드 N / 60」을 두었다.

끝잘림 스캔(끝이 뚝 잘린 곡을 찾는 검사)을 다시 돌리다가, 이미 처리한 곡도 다시 검사하는 게 이상하다고 짚었다. 매번 700곡 넘게 끝부분을 받아 다시 재고 있었다. 한 번 괜찮았던 곡은 기록해 두고, 그 뒤로 안 바뀌었으면 건너뛰게 했다. 바뀌었는지는 곡의 마지막 수정 시각으로 본다.

  • 양이 줄면 자동화의 가치도 바뀐다. 대량일 때는 알아서 옮기는 게 편하지만, 소량이면 보고 고르는 게 정확하다.
  • 「다시 볼 필요가 없는 것」을 기억하는 것도 도구의 일이다. 기준은 「안 바뀌었나」다.

소리를 키우다 만난 것들

−16은 설계대로였지만 작았다

룸톤 곡이 전체적으로 작게 들린다고 했다. 재 보니 파일은 설계한 −16 LUFS(사람 귀에 들리는 평균 크기의 단위, 0에 가까울수록 크다) 그대로였다. 곡마다 크기가 튀지 않게 맞춘 값이다. 문제는 비교 대상이었다. 스트리밍은 −14, 국내 음원 앱에서 그냥 트는 곡은 −8~−10 정도라, 폰 볼륨이 같아도 룸톤이 작게 들린다.

앱에서 재생할 때만 키우는 방법도 있었지만, 기준을 −14로 올리고 이미 올라간 곡도 다시 굽기로 했다. 음량을 재생 때가 아니라 올릴 때 파일로 굽는다는 앞선 TIL 1·2의 결정을 그대로 두고 값만 바꾼 것이다. 폰으로 들어 보니 확실히 커졌다.

기준값은 그 자체로 맞고 틀린 게 아니다. 쓰는 사람이 무엇과 나란히 듣는지가 기준을 정한다.

한도는 대부분 봐주다가 가끔 자른다

740여 곡을 다시 굽다가 절반 넘게 실패했다. 지금 요금제에는 요청 하나가 서버를 붙잡을 수 있는 시간에 한도가 있는데, 곡을 준비하는 몫이 그 한도를 넘었다. 넘으면 무조건 자르는 게 아니라 대부분 봐주고 가끔 자르는 식이라, 몇 곡으로 시험할 때는 멀쩡했다.

그래서 무거운 일을 서버가 아니라 내 컴퓨터로 옮겨 끝냈다. 요금제를 올리면 이 한도는 사실상 없어진다. 지금 올릴지 물었을 때, 손님이 생기면 올리기로 했다. 한 달 몇 달러라도 아직 아무도 쓰지 않는 한도를 사는 셈이기 때문이다.

  • 몇 개로 시험해서 통과했다고 수백 개가 통과하는 건 아니다. 「가끔」 실패하는 한도는 양이 늘면 「자주」가 된다.
  • 무거운 일은 한도가 있는 쪽이 아니라 한도가 없는 쪽으로 옮긴다.
  • 대량으로 고친 뒤에는 전부 되는지 한 번 점검한다. 고치는 과정에서 조용히 깨진 게 섞여 있다.
  • 돈을 쓰는 시점은 「언젠가 필요하니까」가 아니라 「필요가 실제로 생길 때」로 정한다.

옮긴 줄 알았던 파일이 없었다

재생이 안 되는 은퇴곡들이 있어 지우자고 했다. 확인해 보니 54곡 모두 서버에 오디오 파일이 없었다. 9월 초 운영 서버로 옮길 때 은퇴곡은 파일을 옮기지 않았던 것이다. 원본은 남아 있어 필요하면 다시 넣으면 된다.

이관은 「데이터를 옮겼다」가 아니라 「무엇을 옮겼는지」로 기록해야 한다. 빠진 게 있다는 걸 몇 주 뒤에 알게 된다.


에러 메시지는 조각내 읽는다

DB를 올리는데 이런 오류가 떴다.

X [ERROR] A request to the Cloudflare API (/accounts/.../d1/database/.../query) failed.
  The given account is not valid or is not authorized to access this service [code: 7403]
🪵  Logs were written to "...wrangler-2026-09-19_05-52-25_525.log"

계정이 잘못됐다니 겁이 났는데, 무슨 소리인지 물어서 한 줄씩 풀어 봤다.

  1. 무엇을 하다가 — wrangler(Cloudflare를 다루는 명령줄 도구)가 「이 계정의 이 데이터베이스에 쿼리를 실행해 줘」라는 요청을 Cloudflare 서버로 보내다가.
  2. 누가 거절했나 — 우리 코드가 아니라 Cloudflare 서버가. 그러면 문제는 코드가 아니라 권한이나 연결 쪽이다.
  3. 이유와 번호 — 7403, 권한 계열(웹의 403 Forbidden과 같은 결)이다. 다만 이 문구는 권한 문제면 두루 쓰는 말이라, 적힌 그대로 「계정이 잘못됐다」는 뜻은 아니었다. 실제로 계정은 멀쩡했다.
  4. 로그 파일 — 어느 단계에서 멈췄는지 알려 준다. 열어 보니 적용할 목록을 확인하는 첫 요청에서 거절됐고, 아무것도 바뀌지 않았다. 게다가 같은 로그 폴더를 보니 몇 시간 전에 실행한 적용이 이미 성공해 있었다. 로그 시각은 세계 표준시(UTC)라 한국 시간보다 9시간 이르다.

에러는 겁을 주는 문장이 아니라 「무엇을 하다가, 누가, 왜 거절했는지」를 알려 주는 기록이다. 조각내 읽으면 할 일이 보인다. 이번엔 할 일이 없었다. 다시 나면 한 번 더 실행하고, 그래도 나면 로그인이 살아 있는지 확인하면 된다.


요약

  • 안내는 가리키는 대상과 한 화면에 둔다.
  • 무료 체험을 결제 정보 없이 주면 자동 결제 고지가 필요 없다. 대신 「전곡 권한」과 「결제했다」를 따로 봐야 체험 중에도 결제할 수 있다.
  • 악용을 막는 기록도 개인정보다. 기간은 막으려는 악용의 크기에 견줘 정하고 밝힌다.
  • 목록 + 기타로 받고, 기타가 쌓이는 걸 보며 목록을 키운다. 두 가지를 묶은 이름은 나눈다.
  • 새 결은 억지로 기존 칸에 넣지 말고 칸을 만든다. 넓은 단어로 만든 분류 규칙은 엉뚱한 곡을 잡는다.
  • 빈 칸의 기본값은 조용히 틀린 값을 넣는다.
  • 사람이 이미 다 듣는 흐름에서는 자동 판정보다 사람이 쥔 기준이 낫다. 보컬은 가사나 주선율일 때만.
  • 양이 줄면 도구는 「알아서」에서 「보고 고르게」로 바꾼다. 안 바뀐 건 다시 보지 않는다.
  • 기준값은 쓰는 사람이 무엇과 나란히 듣는지가 정한다.
  • 가끔 실패하는 한도는 양이 늘면 자주가 된다. 무거운 일은 한도 없는 쪽으로 옮기고, 대량 작업 뒤엔 전수 점검한다.
  • 에러는 무엇을 하다가·누가·왜·어디서로 조각내 읽는다.

Series: Today I Learn

1 C++ 자료형(Data Type) 2 MD5 vs pHash 3 C++에서 함수의 선언과 정의 4 Tkinter padx, pady 5 메모리와 포인터 변수 6 Call by Value, Call by Reference, Call by Pointer 비교 7 const 8 Gemfile — Jekyll 프로젝트의 의존성 파일 9 kramdown-parser-gfm — Jekyll의 GFM 파서 10 파서(Parser) 11 AHU vs OHU 12 I might try it vs I'll try it 뉘앙스 차이 13 SESSION_EXPIRE_AT_BROWSER_CLOSE=True 14 configuration key 15 Git stash vs discard 16 subprocess.Popen으로 Windows 탐색기에 명령어를 전달 17 Post 잔디 분석하기 18 Google Sheets Sync 최적화 19 DSL (Domain Specific Language)과 GPL (General Purpose Language) 20 마크다운 표 그리는 방법 21 쿼리 파라미터(Query Parameter). 기존 QR코드 재활용 22 Django 보안 취약점 점검 및 수정 23 OOP Object-Oriented Programming 객체 지향 프로그래밍 24 Fernet 대칭 암호화 25 Jekyll 코드블록 안의 Liquid 태그 26 습관만들기 Pawbit TIL 1 27 insertOnConflictUpdate vs DoUpdate(target) 28 세션 필터 29 아코디언(Accordiaon) UI를 펼친상태로 만들기 30 input의 step 31 습관만들기 Pawbit TIL 2 32 습관만들기 Pawbit TIL 3 33 Word Cloud 34 Google Sheets를 데이터 버스로(with AppSheet) 35 Django 모델 텍스트 필드 자동 수집 패턴 36 localStorage로 섹션 토글 상태 유지 37 순차 ID 생성(`select_for_update()` + `max()` 조합) 38 역참조 검색과 distinct() 39 xlsx 다운로드와 로딩 오버레이 충돌 40 Android 파일 공유 MIME 타입 41 AssetManifest — Flutter 빌드 타임 asset 목록 런타임 조회 42 크레센도 Phaser + TypeScript TIL 1 43 크레센도 Phaser + TypeScript TIL 2 44 크레센도 Phaser + TypeScript TIL 3 45 크레센도 Phaser + TypeScript TIL 4 46 크레센도 Phaser + TypeScript TIL 5 47 여둘까 Office Layout TIL 1 48 습관만들기 Pawbit TIL 4 49 여둘까 Office Layout TIL 2 50 여둘까 Office Layout TIL 3 51 크레센도 Phaser + TypeScript TIL 6 52 UTF-8 BOM과 PowerShell 파일 쓰기 53 소리꽃 KeyBloom TIL 1 54 습관만들기 Pawbit TIL 5 55 여둘까 Office Layout TIL 4 56 소리꽃 KeyBloom TIL 2 57 소리꽃 KeyBloom TIL 3 58 메트로놈 Simple Metronome TIL 1 59 소리꽃 KeyBloom TIL 4 60 메트로놈 Simple Metronome TIL 2 61 소리꽃 KeyBloom TIL 5 62 습관만들기 Pawbit TIL 6 63 크레센도 Phaser + TypeScript TIL 7 64 메트로놈 Simple Metronome TIL 3 65 소설 타임라인 관리 도구 Lumior TIL 1 66 습관만들기 Pawbit TIL 7 67 정적 블로그 SEO 정비와 Pagefind 검색 도입 68 크레센도 Phaser + TypeScript TIL 8 69 메트로놈 Simple Metronome TIL 4 70 습관만들기 Pawbit TIL 8 71 안드로이드 AudioTrack 연속 재생, 실측 피커 정렬, 카메라 토치 플래시 72 메트로놈 Simple Metronome TIL 5 73 모래게임 Sandrop TIL 1 74 습관만들기 Pawbit TIL 9 75 메트로놈 Simple Metronome TIL 6 76 모래게임 Sandrop TIL 2 77 모래게임 Sandrop TIL 3 78 습관만들기 Pawbit TIL 11 79 습관만들기 Pawbit TIL 10 80 메트로놈 Simple Metronome TIL 7 81 모래게임 Sandrop TIL 4 82 모래게임 Sandrop TIL 5 83 습관만들기 Pawbit TIL 12 84 모래게임 Sandrop TIL 6 85 소리꽃 KeyBloom TIL 6 86 모래게임 Sandrop TIL 7 87 모래게임 Sandrop TIL 8 88 소리꽃 KeyBloom TIL 7 89 모래게임 Sandrop TIL 9 90 소리꽃 KeyBloom TIL 8 91 모래게임 Sandrop TIL 10 92 소리꽃 KeyBloom TIL 9 93 콘티온 ContiOn TIL 1 94 소리꽃 KeyBloom TIL 10 95 콘티온 ContiOn TIL 2 96 습관만들기 Pawbit TIL 13 97 콘티온 ContiOn TIL 3 98 룸톤 Roomtone TIL 1 99 모래게임 Sandrop TIL 11 100 소리꽃 KeyBloom TIL 11 101 여둘까 Office Layout TIL 5 102 모래게임 Sandrop TIL 12 103 모래게임 Sandrop TIL 13 104 콘티온 ContiOn TIL 4 105 모래게임 Sandrop TIL 14 106 소리꽃 KeyBloom TIL 12 107 습관만들기 Pawbit TIL 14 108 모래게임 Sandrop TIL 15 109 모래게임 Sandrop TIL 16 110 소리꽃 KeyBloom TIL 13 111 온실 GreenHouse TIL 1 112 콘티온 ContiOn TIL 5 113 모래게임 Sandrop TIL 17 114 소리꽃 KeyBloom TIL 14 115 온실 GreenHouse TIL 2 116 콘티온 ContiOn TIL 6 117 모래게임 Sandrop TIL 18 118 콘티온 ContiOn TIL 7 119 모래게임 Sandrop TIL 19 120 소리꽃 KeyBloom TIL 15 121 룸톤 Roomtone TIL 2 122 모래게임 Sandrop TIL 20 123 모래게임 Sandrop TIL 21 124 소리꽃 KeyBloom TIL 16 125 소리꽃 KeyBloom TIL 17 126 소리꽃 KeyBloom TIL 18 127 여둘까 Office Layout TIL 6 128 소리꽃 KeyBloom TIL 19 129 소리꽃 KeyBloom TIL 20 130 콘티온 ContiOn TIL 8 131 콘티온 ContiOn TIL 9 132 로그스톤 상표 셀프 출원 TIL 1 133 소리꽃 KeyBloom TIL 21 134 로그스톤 샵 LogStone Shop TIL 1 135 소리꽃 KeyBloom TIL 22 136 로그스톤 샵 LogStone Shop TIL 2 137 룸톤 Roomtone TIL 3 138 소리꽃 KeyBloom TIL 23 139 모래게임 Sandrop TIL 22 140 모래게임 Sandrop TIL 23 141 소리꽃 KeyBloom TIL 24 142 로그스톤 샵 LogStone Shop TIL 3 143 모래게임 Sandrop TIL 24 144 소리꽃 KeyBloom TIL 25 145 모래게임 Sandrop TIL 25 146 MiniMacro TIL 1 147 룸톤 Roomtone TIL 4 148 모래게임 Sandrop TIL 26 149 콘티온 ContiOn TIL 10 150 Astro가 무엇인지, 왜 옮기는지 151 룸톤 Roomtone TIL 5 152 룸톤 Roomtone TIL 6 153 모래게임 Sandrop TIL 27 154 소리꽃 KeyBloom TIL 26 155 MiniMacro TIL 2 156 로그스톤 샵 LogStone Shop TIL 4 157 메트로놈 Simple Metronome TIL 8 158 모래게임 Sandrop TIL 28 159 여둘까 Office Layout TIL 7 160 룸톤 Roomtone TIL 7 161 메트로놈 Simple Metronome TIL 9 162 블로그 Astro 이관 TIL 163 여둘까 Office Layout TIL 8 164 로그스톤 샵 LogStone Shop TIL 5 165 모래게임 Sandrop TIL 29 166 오픈데이 Openday TIL 1 167 로그스톤 샵 LogStone Shop TIL 6 168 모래게임 Sandrop TIL 30 169 오픈데이 Openday TIL 2 170 모래게임 Sandrop TIL 31 171 Unreal Engine MCP TIL 1 172 모래게임 Sandrop TIL 32 173 소리꽃 KeyBloom TIL 27 174 콘티온 ContiOn TIL 11 175 오픈데이 Openday TIL 3 176 로그스톤 샵 LogStone Shop TIL 7 177 모래게임 Sandrop TIL 33 178 소리꽃 KeyBloom TIL 28 179 오픈데이 Openday TIL 4 180 여둘까 Office Layout TIL 9 181 오픈데이 Openday TIL 5 182 ScorePlayer TIL 1 183 모래게임 Sandrop TIL 34 184 BuildingHub TIL 1 185 ScorePlayer TIL 2 186 여둘까 Office Layout TIL 10 187 BuildingHub TIL 2 188 ScorePlayer TIL 3 189 Unreal Engine MCP TIL 2 190 궁 미로 PalaceMaze TIL 1 191 메트로놈 Simple Metronome TIL 10 192 메트로놈 Simple Metronome TIL 11 193 오픈데이 Openday TIL 6 194 BuildingHub TIL 3 195 Obsidian vault에서 코드만 빼기 — directory junction 196 ScorePlayer TIL 4 197 여둘까 Office Layout TIL 11 198 오픈데이 Openday TIL 7 199 URL은 바뀔 수 있는 것에 묶지 않는다 200 돌이키기 힘든 변경은 작게 먼저 확인한다 201 도구는 기능이 아니라 내 일에 맞는지로 고른다 202 궁 미로 PalaceMaze TIL 2 203 궁 미로 PalaceMaze TIL 3 204 소리꽃 KeyBloom TIL 29 205 오픈데이 Openday TIL 8 206 룸톤 Roomtone TIL 8 207 BuildingHub TIL 4 208 ScorePlayer TIL 5 209 로그스톤 샵 LogStone Shop TIL 8 210 여둘까 Office Layout TIL 12 211 오픈데이 Openday TIL 9 212 BuildingHub TIL 5 213 MiniMacro TIL 3 214 룸톤 Roomtone TIL 10 215 룸톤 Roomtone TIL 9 216 소리꽃 KeyBloom TIL 30 217 오픈데이 Openday TIL 10 218 여둘까 Office Layout TIL 13 219 룸톤 Roomtone TIL 11 220 소리꽃 KeyBloom TIL 31 221 궁 미로 PalaceMaze TIL 4 222 룸톤 Roomtone TIL 12 223 로그스톤 샵 LogStone Shop TIL 9 224 룸톤 Roomtone TIL 13 225 로그스톤 샵 LogStone Shop TIL 10 226 룸톤 Roomtone TIL 14 227 소리꽃 KeyBloom TIL 32 228 룸톤 Roomtone TIL 15 229 룸톤 Roomtone TIL 16 230 룸톤 Roomtone TIL 17 읽는 중