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

오늘 한 일

  • 소리꽃 KeyBloom
    • 네이티브 하우스 광고 연동 — 웹엔 애드핏이 뜨지만 설치형 앱엔 안 떠서 비어 있던 광고 자리를, 온실(GreenHouse)이 서빙하는 SDK로 내 블로그·앱 홍보로 채움. 광고 내용·로테이션은 온실이 정하고 앱은 자리와 링크 핸들러만 줘서, 앱 재빌드 없이 광고를 바꿀 수 있음
    • 배너 클릭을 시스템 브라우저로 열게(opener 플러그인) — 앱 창이 그 주소로 이동해 깨지지 않게. https 링크만 열게 재확인
    • 라이브 모드에서도 광고·시퀀서 영역 유지 — 예전엔 실시간 연주로 바꾸면 하단이 통째로 사라져 미리보기가 출렁였는데, 자리는 남기고 시퀀서만 비워 파일/라이브 크기를 똑같게
    • 백로그 — 듀얼모니터 프리뷰 복제(공연용), 영상 저장 위치를 [파일] 탭으로
  • 온실 GreenHouse
    • Cloudflare Pages 실배포 — 주소 kimlog-greenhouse.pages.dev 확정(앱에 박히는 계약), 검색 비노출 처리, 루트는 편집기로 리다이렉트
    • 편집기 다듬기 — 노출 시작일 기본 오늘, ID 8자리 자동 생성, 빈 상태에서 폼이 보이던 버그 수정
    • 연동 방식을 SDK 서빙으로 전환 — 규약 문서 대신 AdFit처럼 스크립트 한 줄을 주는 방식. 로테이션·필터·렌더 정책이 온실 코드에 들어가 온실 배포만으로 전 앱 반영
    • 배너 제작 파이프라인 — HTML 카드를 헤드리스 브라우저로 찍어 PNG로, 앱마다 정체성 색(크림·블루·레드·슬레이트·퍼플·오렌지·로즈·민트·인디고)
    • 광고 9건 등록 — 블로그 홈 + 여둘까·PokeWalk(편집기 흐름 첫 가동) + finished 앱 6종 일괄
    • KeyBloom 보안 검토 회신 — 원격 코드 신뢰 표면 문서화, init API 하위호환 계약 고정
    • 새 앱 온보딩 가이드 문서화, 실사용 확인 후 로테이션 60초로 조정
  • 콘티온 Conti On
    • 콘티 그룹 다루기 — 곡을 그룹 밖 맨 아래로 뺄 수 있게(그룹 밖 점선 경계), 그룹 이름이 길면 2줄까지 보이고 그 이상은 말줄임
    • iPad·모바일에서 순서 변경이 안 되던 것 해결 — 웹 드래그가 터치에선 안 먹어서, 항목을 라디오로 고르고 리스트 위 공용 버튼(위로·아래로·그룹 넣기/빼기)으로 옮기게. 데스크톱 드래그는 그대로 둠
    • 곡 구분(카테고리) 필수화 — 빈 값이던 ‘없음’을 없애고 애매하면 ‘그 외’(순서지는 ‘기타’)로. 목록 표시를 [구분] 제목으로 바꿔 번호 없는 곡도 구분이 보이게
    • 통합 PPT 내보내기 전 미리보기 — 버튼을 누르면 슬라이드 썸네일이 먼저 뜨고, 확인한 뒤 내보내기로 다운로드
    • 미리보기에서 자막 바 이미지가 깨져 보이던 것 수정
  • 모래게임 Sandrop
    • 배경음악·효과음·진동을 넣고 인게임·설정에서 켜고 끄게 함 — BGM(Suno v5.5 4분 루프), 클릭·붓기·승패·코인·얼음·자물쇠 효과음, 못 나가는 탭·승리·실패 진동
    • 효과음이 나도 배경음악이 안 끊기게 오디오 우선권(포커스)을 정리하고 재생 계통을 하나로 통일
    • 붓기 소리를 실제 붓는 순간에만 나게 하고, 동시에 붓는 바구니 수만큼 겹치고, 붓는 시간에 맞춰 페이드아웃
    • 소리 방향은 차분하고 편안한 분위기로 잡음 — 효과음 중에선 바스켓 부어질 때 나는 모래 소리(sandrop)와 BGM에 특히 공을 들임
    • BGM(Suno)이 마음에 들어서 룸톤 Roomtone에도 쓰려고 저장해둠
    • 효과음을 파형으로 뽑아 주는 사이트를 썼는데, 이런 도구를 직접 만들고 싶다는 생각을 다시 함
    • 도안 u1f9b2 제외, 도안을 1000종으로 늘릴 방법(Kenney CC0 킷)을 조사·실측
  • 습관만들기 Pawbit
    • 아픈 네뭉이(강아지 아픔 그림)를 넣음 — 그동안 아플 때 쓸 전용 그림이 없어 멀쩡한 그림으로 대신 나오던 걸, 실제 그림을 넣어 해결. 코드가 이미 그 경로를 바라보고 있어 파일만 넣으니 바로 적용됨

어려웠던 점

  • (소리꽃 KeyBloom) 하우스 광고를 앱이 직접 그릴지, 온실이 주는 SDK를 받을지 정해야 했다. SDK 방식은 앱 코드가 줄고 광고를 바꿔도 앱 재배포가 필요 없지만, 원격 코드를 앱 안에서 실행하는 신뢰 표면이 생긴다. 같은 소유자인 데다 애드핏 같은 광고 SDK의 표준 모델이라 감수하기로 하고, 대신 링크는 앱에서 https만 열게 한 번 더 걸렀다
  • (소리꽃 KeyBloom) 실시간 연주로 바꾸면 미리보기 크기가 출렁였다. 하단을 통째로 숨겨 자리까지 사라진 게 원인이라, 시퀀서는 자리는 남기고 내용만 비우게 바꿔 두 모드의 미리보기 크기를 맞췄다
  • (온실 GreenHouse) 배포하고 바로 확인하면 요청마다 새 버전과 예전 버전이 섞여 나왔다. 엣지 서버마다 새 배포가 도는 시점이 달라서(최종 일관성), 한 번 성공을 믿지 않고 연속 여러 번 새 버전이 나와야 완료로 판정하게 확인 방식을 바꿨다
  • (온실 GreenHouse) 배너를 어떤 방식으로 만들지가 애매했다. 포토샵 없이 HTML 카드를 헤드리스 브라우저로 스크린샷 찍는 파이프라인으로 정리 — 색·문구 수정이 CSS 편집이라 앱별 색 변형 6장도 금방 나왔다
  • (온실 GreenHouse) 셋 다 온실 그린이라 단조롭다는 걸 배너 세 장이 모이고서야 알았다. 앱별 정체성 색으로 갈고, 🌱 마크만 공통 브랜드로 남겼다
  • (콘티온 Conti On) 자막 담당자가 iPad에서 콘티 순서를 못 바꾼다고 했다. 웹 드래그가 터치에선 이벤트 자체가 안 나는 근본 문제라, 드래그 라이브러리를 새로 얹는 대신 라디오로 고르고 공용 버튼으로 올리고 내리는 방식으로 정했다(데스크톱 드래그는 유지). 그룹 안팎은 위치로 갈리니 넣기/빼기 한 버튼으로 토글
  • (콘티온 Conti On) 찬양 catch-all을 ‘기타’로 하려다, 예배 순서지에도 ‘기타’가 있어 이름이 겹치는 걸 확인했다. 카테고리 이름이 전역에서 유일해야 하고 그 이름으로 대분류를 역추적하는 구조라, 찬양은 ‘그 외’로 갈랐다
  • (콘티온 Conti On) PPT를 뽑아야만 결과를 볼 수 있었다. 내보내기 전 미리보기를 넣되, 미리보기와 실제 PPT가 어긋나면 못 믿으니 슬라이드를 만드는 로직을 한 곳으로 모아 둘이 공유하게 했다
  • (모래게임 Sandrop) 붓기 소리를 화면의 붓는 그림에 자연스럽게 붙이는 게 관건이었다. 레일 도착이 아니라 실제 붓는 순간에 나야 하고, 여러 바구니가 동시에 부어지면 소리도 겹쳐야 두껍고, 붓기가 끝나면 붓는 시간에 맞춰 사라져야(소리가 그림보다 오래 남으면 어색) 자연스럽다. “지금 붓는 바구니”를 소리 쪽이 계속 받아 바구니마다 켜고 끄는 방식으로 맞췄다

배운 점

  • (소리꽃 KeyBloom TIL 14로 정리) Tauri 플러그인은 Cargo·lib.rs·capability 권한·JS 네 곳을 맞춰야 동작 / WebView 링크는 앱 창이 이동해 깨지므로 openUrl로 시스템 브라우저에 / 광고 로직을 SDK로 외부화하면 앱은 컨테이너+콜백만·재배포 없이 갱신 / 원격 코드 실행 신뢰 표면은 open 콜백 https 재검증으로 심층 방어 / display:none은 자리까지 없애고 visibility:hidden은 자리를 남김
  • (온실 GreenHouse TIL 2로 정리) CSS display가 hidden 속성을 이김 → [hidden] 재지정 짝 / _redirects 302 vs 301 캐시 / 배포 전파는 연속 N회 확인으로 수렴 판정 / HTML 카드 → 헤드리스 스크린샷 = 이미지 에셋 파이프라인 / SDK 제공자의 의무 — init API 하위호환 계약·계정 2FA가 곧 앱 보안
  • (모래게임 Sandrop TIL 10으로 정리) 게임 오디오를 시스템 포커스 없이 한 계통으로 통일해 효과음이 배경음악을 안 끊게 / 효과음은 에셋별 풀로 연타 겹침 / 붓기는 바구니별 루프 보이스 + 붓는 시간 페이드아웃 / 초기화 예외가 뒤 단계를 굶기지 않게 단계 분리
  • (콘티온 Conti On TIL 6로 정리) 평면 리스트의 “그룹 밖”은 빈 구분자 경계 + 저장 시 정규화 / 터치 무반응 드래그는 라디오 선택 + 공용 툴바로 우회(데스크톱 드래그 유지) / flex 말줄임엔 min-width:0 / 카테고리 이름 전역 UNIQUE라 대분류별 catch-all 이름 분리(그 외·기타) / SQLite 기존 컬럼 NOT NULL은 재생성·FK 위험 → 앱 검증+데이터 정리로 필수 보장 / 미리보기·PPT 시퀀스를 순수 함수 하나로 단일 소스화 / 같은 base64라도 pptxgenjs는 data: 없이·HTML img는 data: 붙여서(미리보기 바 깨짐)

해야 할 일

  • 소리꽃 KeyBloom — 하우스 광고 네이티브 동작 확인(배너 표시·클릭 브라우저 열림·오프라인 무광고), 인터페이스 버퍼 낮춰 지연 줄이기, 유료화(결제·라이선스), 듀얼모니터 프리뷰 복제·영상 저장 위치 파일탭 이동
  • 온실 GreenHouse — 광고 추가·수정은 편집기 → 붙여넣기 흐름으로 수시, 새 앱 연동 시 온보딩 가이드 전달, 레벨 2(편집기 저장 버튼 — 서버 저장 + 인증)는 필요해지면 착수
  • 콘티온 Conti On — iPad 실기기에서 라디오+공용 툴바·그룹 넣기/빼기 확인, 미리보기 실제 표시·다운로드 확인, 예배 순서지 실동작(자막 담당자 준비 시), 미리보기 백로그(긴 줄 축소 근사·듀얼 등)
  • 모래게임 Sandrop — 일일 접속 보상, 실기기에서 벽·통로 구분 확인, 게임 화면 코드 분할, 배포 전 디버그 제거, 도안 1000종 확장(Kenney CC0 킷 착수), 출시 직전 레벨 동결 모드

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 오늘 해낸 것