아니, npm, “estee”는 “testem”의 오타가 아니다

2 days ago 7

Storyteller의 긴 CLI 패키지 이름을 줄이려고 estee 를 npm에 등록하려 했지만, 기존 패키지 testem, espree와 유사하다는 이유로 타이포스쿼팅 방지 장치에 막힘 차단 결과는 레벤슈타인 거리 2 이하를 막는 방식으로 보이며, 문자열 길이와 무관한 고정 임계값은 짧은 이름에서 지나치게 많은 후보를 제외함 대안인 hoid 도 hono, uuid, zod 등 10개 패키지와 유사하다고 차단돼, 실제 오타로 보기 어려운 이름까지 걸러짐 과거 audiobook 이름 차단은 npm 지원팀이 해제했지만, 이번에는 자동 타이포스쿼팅 차단을 우회할 수 없다는 답변을 받음 CLI 이름은 유사성 검사에 걸리지 않는 estie 로 바꿀 가능성이 있으며, 악성 패키지 방지 필요성과 별개로 짧은 이름의 과도한 제한과 수동 예외 처리 부재가 문제로 남음 짧은 CLI 이름을 막은 유사성 검사 Storyteller는 @storyteller 네임스페이스가 이미 사용 중이어서 @storyteller-platform을 사용함 책 강제 정렬 CLI의 패키지 이름은 @storyteller-platform/align이며, 도움말 명령도 npx @storyteller-platform/align --help로 길어짐 Storyteller의 이니셜 ST에서 따온 estee 를 새 이름으로 정하고, GitLab 저장소와 Trusted Publishing을 설정하기 위해 v0.0.1 게시를 시도함 게시 과정에서 testem, espree와의 유사성 때문에 차단됨 espree는 형태가 어느 정도 비슷하지만, estee를 두 이름의 실제 오타 후보로 보기는 어려움 차단 결과로부터 추정한 규칙은 인기 있는 기존 패키지와 레벤슈타인 거리(Levenshtein distance)가 2 이하인 이름을 금지하는 방식임 레벤슈타인 거리는 한 글자의 삽입, 교체, 삭제로 문자열을 바꾸는 데 필요한 편집 횟수임 estee 앞에 t를 붙이고 마지막 e를 m으로 바꾸면 testem이 되므로 거리는 2임 Storyteller도 초기 여러 버전의 알고리듬에서 오디오북 전사문 속 특정 문장의 위치를 찾는 데 이 방식을 사용함 고정 임계값은 문자열 길이가 짧아질수록 허용 가능한 이름 중 훨씬 큰 비중을 차단함 알파벳을 a-z, ., -, _의 29개 문자로 한정한 예시에서, 네 글자 이름은 29⁴ = 707,281개임 abaa는 뒤의 두 글자를 교체하면 ab로 시작...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵