디지털 가든

구백육십팔 행의 이주

2026-10-05 · 약 6분 · a_bogus · 코틀린 이식 · SM3 · dytv

문명사에서 가장 장대한 이주는 결코 인구가 아니라 경전이었다 — 한 문명이 쓴 알고리즘을 한 글자도 고치지 않고 다른 문명의 문법으로 옮기는 것.

처방전을 포획한 이상 남는 것은 가장 단단한 한 단락의 길이다. DTK 안의 구백육십팔 행의 순수 알고리즘 파이썬(SM3 해시 + 변종 RC4 + 오십 개의 스칼라 필드 배열)을 비트 단위로 정확하게 코틀린으로 이식해야 한다. DTK는 Apache-2.0의 클린룸 재구현이라 이식에 허가 문제는 없다. 그러나 “비트 단위로 정확”의 네 글자는 한 바이트의 편차가 전패를 의미했다.

1. 멈춘 에이전트와 손수 펜을 잡다

공병은 먼저 이식 전문의 자식 에이전트를 파견하고 자신은 원시생 뼈대(Media3 플레이어 + API 층 + TV 화면 넘김 UI)를 조립했다. 사십오 분이 지나도 에이전트는 알맹이 하나 나오지 않았다. 그것을 멈추고 후의 파일 덮어쓰기를 막은 뒤, 이어서 스스로 소스를 읽고 스스로 썼다. 이것이 이 밤 가장 하드코어한 선언이었다 — 기계가 멈추는 자리에서 사람이 인계한다.

2. 바이트급 사냥 두 건

이식의 함정은 모두 바이트 층에 있었다. 첫째, RC4의 열쇠 배치에서 key[i]는 코틀린에서는 Byte(음수가 될 수 있다)이지만 파이썬에서는 0..255의 정수다. 마스크하지 않으면 전부 어긋난다. 둘째, IV 상수를 손으로 보수를 계산하면 반드시 틀린다. 통일하여 Long.toInt()로 바꿔 컴파일러에게 시켰다. 고치고 제출하고 구축하자 — 첫 컴파일에 통과, v1.0(4.3MB, Media3 포함).

3. 웅출没의 전체 화면

기기에 얹고 불을 붙여 링크를 돌린다. feed 요청 status 200, 81KB의 데이터 — 코틀린으로 이식된 a_bogus를 도우인이 그 자리에서 인정했다. 전체 화면 재생에 성공했고, 웅출没가 상자 위에서 태어났으며 하단의 작자와 제목은 정상적으로 렌더링됐다. 리모컨의 아래 키로 다음 영상 해설로 넘어가고 OK 키로 일시 정지와 재생이 된다. 로그인도 인증 코드도 없이 전 링크가 명령을 듣는다.

4. 로드맵과 여섯 개의 문

영광 뒤에는 규율이 온다. “사용자 가치 나누기 구현 리스크”로 줄 세운 P1부터 P6까지를 docs/ROADMAP.md에 적었다. P1은 쿠키 로그인(상자가 QR 코드를 띄우고 휴대전화가 스캔하여 구역망 페이지를 열고 붙여넣기 — 리모컨 입력을 피한다). P2는 시청 경험 보완, P3은 검색, P4는 작자 페이지와 모음집, P5는 상호작용 쓰기(읽기 경로가 모두 안정된 뒤에 의도적으로 둔다 — 쓰기가 계정 풍통의 민감 구역이다), P6는 라이브를 대미로. P7은 지속 항목으로 서명 회귀 단위 시험, 매일 인터페이스 자체 점검 CI, 풍통 후퇴다. 서명은 역사적으로 1~3개월에 한 번 바뀌므로 자체 점검은 기능을 만들지 않지만 모든 기능이 살아남는 전제다. 빨간 선은 넷 — 다운로드, 워터마크 제거, 대량 수집, 상업 용도.

이어서 P1부터 P6까지 한꺼번에 착공해 v1.1.0(4.6MB)의 열두 항목을 실측했다. 정보 층에 통계가 붙고(❤8.4万 💬1.0万 ⭐3879), 재생 실패 시 자동 건너뛰기가 발효하며, 작자 작품은 관람객 직결 18건, 페어링 서비스 200, 검색 지령 하달 성공. 도중에 두 개의 부호 함정을 잡았다. brotli는 대응을 선언하지만 실제로는 풀지 못해 gzip을 강제해야 한다. 손으로 Accept-Encoding: gzip을 붙이면 오히려 OkHttp가 자동 압축 해제를 멈춰 본문이 깨진다 — 대리인이 대신하던 일을 빼앗지 말 것.

실제 좌표

댓글

← 디지털 가든