今日の注目トピック

悪意ある10 versionを封じ込め。侵入経路閉鎖→権限剥奪→latest復元→deprecate→registry削除の順で対応
npmSupply ChainGitHub ActionsIncident Response

npm汚染事故、侵入経路を先に閉じてから配布を正常化

これは何?npmはJavaScript packageを公開・取得するregistryで、公開workflowの権限侵害は利用者のinstall時にcodeを実行する供給網事故へ直結します。

GitHub Actionsの設定不備を悪用され、@7nohe/openapi-react-query-codegenへ悪意ある10 versionが公開されました。maintainerは侵入経路と公開権限を先に閉じ、latest復元、deprecate、npmへのmalware報告、利用者告知を順に実施し、約5時間後までに削除を確認しました。deprecateは新規のrange解決には効く一方、version固定とlockfileには効かず、利用者は到達可能な認証情報のrotationが必要です。

なぜ重要か

registry事故では再公開を止める封じ込め、利用者が取るべきaction、後から原因を追える証拠保全を並行して設計する必要があります。deprecateと削除の効果範囲を混同すると、汚染済みlockfileを見逃します。

読むべき人
npm package maintainer、CI/CD、security incident response担当者
Zenn
87 signal / 1 comments
TypeScript objectから縦組み・禁則・ルビを含むPDFを生成。data処理と組版を同一programへ統合
TypeScriptTypesettingPDFJapanese

minitype、TypeScriptから日本語組版とPDF生成を直接実行

これは何?minitypeは文書構造とlayoutをTypeScript objectで記述し、applicationやLLM workflowへ組版処理を埋め込むheadless engineです。

Node.js、Bun、browserで動くnpm libraryとして、縦組み、禁則、ルビ、異体字、数式、脚注、相互参照、PDF出力などを提供します。LaTeXやTypstの専用言語を生成して外部processを呼ぶ代わりに、data取得・加工・組版を同じTypeScript programへ統合できます。coreはPolyForm Noncommercial、project作成CLIとVite pluginはMITで公開されています。

なぜ重要か

文書生成をlibrary APIへ落とすと、型検査、component化、preview、test、LLM agentによる編集を既存のweb開発toolchainへ統合できます。高度な日本語組版とautomationの境界を明示した実装です。

読むべき人
document generation、TypeScript、publishing、AI agent workflow担当者
Zenn
316 signal / 2 comments
ArrayListのpointer保持期間をlock。再配置やorderedRemoveを実行すると、その場で前提違反を検出
ZigArrayListMemory SafetyDebugging

Zig ArrayList、pointer再配置の前提違反をlock中のpanicで検出

これは何?ZigのArrayListは容量に応じてbacking memoryを再配置する動的配列で、要素pointerを長く保持すると移動後に無効化される危険があります。

std.ArrayListへlockPointersとunlockPointersが入り、pointer保持中に容量拡張や要素位置を変える操作を行うとassertionで停止できるようになりました。HashMapへ導入済みの診断を配列へ広げたもので、orderedRemoveやpopもallocationなしで位置を変えるため検出対象です。pointerを自動修復する機能ではなく、開発時に安定性の仮定を実行時検査へ変えます。

なぜ重要か

低level codeのuse-after-moveは症状が離れた場所に出やすい一方、前提をlock期間として宣言すれば原因位置で失敗させられます。API contractをdebug-time invariantへ変える設計例です。

読むべき人
Zig、systems programming、allocator・container実装担当者
HN
119 points / 80 comments
粗いCTC文字列から10文字gramを探索しchapter境界を推定。確度の高い区間だけViterbiで精密同期
SpeechForced AlignmentEPUBRANSAC

Storyteller、粗い音声認識とRANSACでebookのchapter境界を探索

これは何?Storytellerはebook本文とaudiobookの発話位置を自動対応付けし、朗読中の文をhighlightできるEPUB Media Overlaysを生成するopen source systemです。

chapter順の違い、省略、言い換えがある二つの版を合わせるため、MMSのCTC出力を粗く文字列化し、共有する10文字gramからRANSACでchapter境界を推定します。その後、信頼できる一致点の間だけViterbi forced alignmentを行い、長いchapterを約2,000文字の区間へ分割します。完全なtranscriptを先に作らず、noiseの多い出力を検索範囲の削減に利用する二段構成です。

なぜ重要か

高精度な全体認識を前提にせず、安価でnoiseの多いsignalをboundary searchへ使い、重い最適化を局所化しています。長時間mediaを扱うpipelineで、粗いindexと精密処理を分ける実践例です。

読むべき人
speech processing、EPUB、media accessibility、search algorithm担当者
HN
123 points / 47 comments
Kallax・MDF・rubber・再利用天板を積層。中空panelを事前試験し、約130 euroの作業台を構築
DIYPrototyping3D PrintingVibration

Kallaxと再利用天板で、振動対策付き作業台を約130 euroに

これは何?IKEA hackは量産家具を土台として補強・寸法変更・部品追加を行い、用途に合う家具を低costで作るDIY手法です。

著者は特注で約1,000 euroかかる作業台の代わりに、Kallax棚、再利用desk天板、MDF、rubber sheetを組み合わせ、一台約130 euroで3D printerとpen plotter用の台を作りました。中空panelへscrewを締め過ぎないよう廃材で事前試験し、紙templateと現物合わせで穴位置を転写しています。完成後の横揺れという限界も記録し、壁際利用を前提にしました。

なぜ重要か

prototypeでは材料の安さだけでなく、失敗cost、現物差、荷重、振動、補強方向を分けて検証する必要があります。software以外でもtemplateと小さな破壊試験が再現性を高めます。

読むべき人
maker、hardware prototype、lab・home workshop整備担当者
HN
351 points / 268 comments