カテゴリー
ネットの事件

地図表示ライブラリ Leaflet がウクライナ支援を呼びかけ

OpenStreetMap を使ってウェブサイトに地図を表示できる JavaScript ライブラリ Leaflet のトップページがいつもと違う掲示になっています。

通常のドキュメントやダウンロード、プラグイン情報などはこちらに退避され、トップページ全面にてウクライナ支援に関する作者/メンテナー一同の意見表示が行われています。

Leaflet の作者はウクライナ・キエフ市民のウラジミル・アガフォンキンさん(Vladimir Agafonkin) @mourner

ロシア軍の爆弾が降り注いでいるため、家族と共にキエフは脱出したところだそうです。

このページに署名している「Leaflet メインテナー一同」は、Leaflet ユーザーに対する、各国の政治家への働きかけや平和を求める活動への参加、Safelife.in.uaウクライナ赤十字への寄付の呼びかけなどを書いた上で、

「人道に関する訴えがあなたに効かないのであれば、あなたの利己主義に働きかけましょう。ウクライナ市民の将来は Leaflet の将来でもあります。」

If an appeal to humanity doesn’t work for you, I’ll appeal to your egoism: the future of Ukrainian citizens is the future of Leaflet.

言いたくてこんなことを書いてるわけではないでしょう。戦争で家を追われた作者の悲痛な気持ちが伝わってきます。

GitHub 上のソースコードのReadmeも同様に書き換わっていますGitHub はロシアからのアクセスを遮断しないことを表明しました。これも賛否あるかもしれませんが、ロシア国内のLeafletユーザーがこの主張を目にするだろうことを考えると、遮断で見えないよりも情報量はありますね。

カテゴリー
fun

Checkboxland – HTMLのチェックボックスですべてを作れるライブラリ

Checkboxland は、HTML のチェックボックス要素を活用してしまくるための JavaScriptライブラリです。

HTML のチェックボックス要素と言えばこれ↓ ですが、

このチェックボックスを使って様々な表現を実行できます。

デモでは、文字が横に流れるマーキー、デジタル時計、アニメーション、QRコード表示、ライフゲーム、動画再生(!)、など様々な表現が、すべてチェックボックスだけで実現されています。

API documentによれば、チェックボックスを縦横に並べたグリッド上でグリッド上の各座標を調べたり書き換えたりする低レイヤAPIと、文字を大きく描く、スクロールさせる、画像や動画を描写させるなどの拡張APIが用意されています。プラグイン機構も用意されているので、自分で Checkboxland に新たな機能を追加することも可能です。

多数の要素を表示しようとするとページが重くなるのはチェックボックスであっても(当然)同じで、チェックボックスの数が1500個を超えるとチェックボックスの更新速度が問題となることから、32×32 や 64×16 といったサイズ以下のグリッドを推奨するそうです。

作者のブライアン・ブラウンさん(Bryan Brown)は、職場の近くにある機械式の巨大サインボードが、黒白のグリッド表示でテキストやアニメーションを表示するのを見て「チェックボックスでも同じことができるのでは?」と考えたそうです。

チェックボックスだけで凝ったウェブサイトを作りたいと思っていた人(いるのか?)にとってはとても便利なライブラリと言えるのではないでしょうか。

via Hacker News

カテゴリー
ネットの事件

‘-‘ という名前の、中身が無いのに70万回ダウンロードされてる謎のnpmパッケージ

という名前の JavaScript/TypeScript パッケージについて警告を発している記事が話題となっています。

このパッケージ、中身はほとんど空で、Readme と、dev で TypeScript を動かせるようにするライブラリ群を呼ぶ箇所だけのもの。

しかし、この “-” を使っている他の npm パッケージが 50個以上あり、約一年前の公開時からのトータルのダウンロード数は72万回にもなります。

しかし、”-” を読み込んでいるパッケージを見てみても、”-” が必要そうには見えません。

警告記事では、この無名のパッケージが密かに使われるようになった原因が、npm コマンドのコマンドラインを打つときのミスタイプにあるのではないかとの仮説を立てています。

つまり、someFlag というオプションを使い

npm i -someFlag somepackage

と打つべきところで、

npm i - someFlag somepackage

と間違ってスペースを入れて実行したことで、”-” というパッケージがインストールされてしまい、その状態からパッケージを作って公開してしまったものが(50個以上)出てしまったのでは、ということです。

実際にわざと間違ってみたところ、someFlag の部分にマッチするnpmパッケージがあれば、特にエラーもなく”-“パッケージが入ってしまいます。

$ npm i - O knock-knock-jokes

added 3 packages, and audited 4 packages in 1s

found 0 vulnerabilities

$ npm ls
test-@ C:\work\temp
├── -@0.0.1
├── knock-knock-jokes@1.7.0
└── O@0.0.9

警告記事を公開した BleepingComputer 社“-“パッケージの作者にこのパッケージを公開した意図を問い合わせをしたが、返答は無かったということです。このパッケージだけを公開している捨てアカウント、という感じでもないのですが。

今のところ”-“パッケージをインストールしたからといって、少しディスクが無駄になる程度のことしか起こりませんが、将来”-“の新バージョンが出た時、新バージョンがどんな内容に置き換わっているかはわかりませんね。

“-” 以外にもコマンドラインのタイプミスで打ちそうなパッケージ名はいろいろありそうで、自分がインストールしたパッケージを確認すること(npm install の通常の出力ではインストールされたパッケージの個数しか出ない)や、npm パッケージを作って配る際に意図しないパッケージに依存していないかを確認することなどが必要そうです。

Hacker News のスレッドでは、”-“パッケージ自身が無意味で、依存することに将来のリスクがあるとしても、npm から単に消すわけにはいかない、という主張もあります。(“-“を実質使ってないのに)”-“に依存してるパッケージのインストールがエラーになるからですね。ちゃんと中身のあるパッケージが消えた時ほどのトラブルではないにしても、多くのCI/CDやデプロイが止まってしまうこともないとは言い切れません。

もし作者が意図してやってるとしたら、あらかじめ間違いそうなドメイン( googel.com とか)のサイトを用意してミスタイプした人を待ち構えるようなスクワッティングにも似た話ですね。”-“パッケージについては(まだ悪意の有無はわかってませんが)刈り取り前だったとしても、既に他の間違いそうなパッケージで意図しないコードが混入しているとかもあるのかもしれません。

via Hacker News