Tag Archives: OSS

手書き風グラフを描けるライブラリ xkcd.chart

英語圏でエンジニアに人気の線画コミックサイト xkcd には、グラフを使ったジョークネタも頻出します。こんな感じ。

xkcd に出てくるようなグラフは、だいたい手書き風のテイストで描かれているのですが、その手書き風グラフを再現できるグラフ描画ライブラリが xkcd.chart です。


日本語も出ますね。日本語入れると凡例の枠がはみ出てしまうので、ソースの調整が要るかもしれません。xkcd 風のフォントも同梱されていますが、日本語ではデフォルトフォントになるでしょう。

円グラフ、折れ線グラフ、棒グラフ を描くことができます。


ウィンドウズグラフの元ネタ

フリーな Photoshop のライバルツール GIMP の名前の由来。そして何度も出てくる改名提案

有名オープンソースツールの名前と政治的正しさに関する揉め事です。

“gimp” は悪い言葉か?

“GIMP”という名前をより攻撃的でない(less offensive)名前に変えよう というチケットが GIMP のGitlab に投げられていました。

“gimp”という単語の意味自体を知らなかったので、まずこの人の説明する悪い意味と言うのを調べてみます。

“gimp” には「組み紐」という意味の他に「不自由な足取りの人」「役立たず」といった意味もあるそうです。なるほど。この意味で使われる時は他者を軽んじたり攻撃したりが多い、ということ。

今回は、改名を支持するコメントに10個以上の「いいね」がついているようですが、このチケットに別の掲示板からリンクが張られていて、その掲示板の読者が集団でやってきて「いいね」を押しているのではないか、という意見も出ています。普段GIMPの開発に関わったりユーザーだったりではない人々に操作されているのでは、ということですね。

チケットは短時間で「対処しない」とクローズされていますが、どうも、この改名提案は不定期にGIMPプロジェクトに寄せられ続けている、よくある提案なようです。

GIMP の名前の由来

GIMP の作者、スペンサー・キンボール氏(Spencer Kimball)とピーター・マティス氏(Peter Mattis)の1997年のインタビュー記事で、

当時、映画「パルプフィクション」が話題になってて、そこからある一つの単語が思い浮かんだんです

At the time, Pulp Fiction was the hot movie and a single word popped into my mind while we were tossing out name ideas.

と答えています。当該のシーンはこちら。全身黒の拘束具に包まれた男性を「gimp を連れてこい」と箱から出させています。(シーンの解説)

右の黒づくめの男性が “gimp”

スラング情報を集積している Urban Dictionary のサイトによると、こういった奴隷的な扱いを受ける男性のことも gimp と呼び、これが広く知られるようになったのは「パルプ・フィクション」のこのシーンによるものらしいです。

作者たち自身が「このシーンからつけた」と言っちゃってますので、「一つの単語にいろいろな意味が」とか「GNU Image Manipulation Program (画像操作プログラム)の頭文字だよ」という言い訳も今さらでしょう。

ちなみに、現在 CockroachDB の CockroachLabs社の CEOがキンボール氏、CTOがマティス氏CEO。「ゴキブリDB」ですから、ネーミングのセンスが常に逸脱気味な二人なのかもしれません。

GIMP の FAQ に「名前を変えてほしい」に対する公式回答が載っています。20年以上の歴史で、嫌になるほど問題提起されてきたんでしょうね。そして、それで改名されてないので、このままずっと GIMP は GIMP で行くのでしょう。

今後、GIMP(ツール)について人に説明する時に一緒に紹介できるような、できないような、名前の由来トリビアでした。

OpenVim – ブラウザで動く Vim 入門

OpenVim は、ブラウザ上で動く Vim のインタラクティブなチュートリアルです。

20章にわかれたチュートリアルをこなしていくことで、Vim の基本的なコマンドを一通り知ることができます。

Unix サーバの管理を初めてまかされた、どうしよう、みたいな人には、コマンド表を見て覚えるよりちょっといいかもしれません。

ソースコードも公開されていて、たくさんのバグ報告や改善案が寄せられているようです。

LockScream – MacOS X のロックスクリーンを偽装してパスワードを横取りするツール

悪用しか使い道が無いように思えますが、GitHub で公開されてて入手できるツールです。

LockScream は、Mac で動かすと本物のスクリーンロックに代わって画面をロックするツールです。

起動すると OS に設定した本物の壁紙を表示し、メニューやドックを非表示にし、いろいろなキー入力を無効にします。画面を見ていつものロック画面だと思い込んだユーザーは、ロックを解除しようとパスワードを入れるわけですが、この LockScream がその入力されたユーザー名やパスワードを横取りできてしまえるというわけです。

パスワードはこのツールの裏側で本物のOSに問い合わせられるため、ユーザー名・パスワードが合っているかどうかも正しく判定でき、でたらめなパスワードでは(本物と同じように)エラーになります。動作も本物と同じため、パスワードを奪われたこと自体に気づくこともないでしょう。

横取りしたパスワードは特定のファイルに XOR + Base64 エンコードされて保存されるので、後でこのファイルを回収すれば、所有者のユーザー名/パスワードが入手できてしまいます。

仕込む際と取得したパスワードを回収する際の2回、アンロック状態のMac にアクセスできないといけないので、うかつなユーザー相手でなければそんなに誰でもが引っ掛かるわけではない、かもしれません。

攻撃者としては、ウェブからダウンロードさせて仕込むとか、回収したパスワード情報をネット経由でどこかに送信させるとか、複数の手法を組み合わせることで盗むよう全体を設計するのでしょうね。

ここまで偽装されると、ロック画面がニセモノだと気づいて回避できるかどうか自信がありません。こういったツールが仕込まれないように、アンロック状態でPCを放置しない、がまず重要かと思います。

Never-Blink ウェブカメラ対戦型の「まばたき我慢」ゲーム

Never-Blink は、まばたきを我慢し合うゲームです。

サーバにつながった中からランダムな相手が決まり、その相手とwebカメラがついたブラウザ経由でにらめっこのように向き合います。

最初に持っているヒットポイントは、まばたきをするたびに減っていき、ゼロになると負け。

類似の先行例として、2017年にBBCが人気ドラマ「ドクター・フー」のプロモーションで短期公開した、“Don’t Blink”(まばたきするな)があるそうです。こちらは他人との対戦ではなく、ウェブカメラをみながらどれだけまばたきを我慢できるかというゲームだったよう。

ランダムにつながるというあたりは、一時期世界中で話題となった Chatroulette を思い出しますね。単にランダムにつなげるより、そこにゲームが有った方が楽しいという人はいるかもしれません。

ソースコードがGitHub に公開されていますが、今のバージョンは処理が重いそうで、どこかのサーバに載せて一般公開はできていないということ。自分でインストールした上で相手を探して遊ぶのはちょと大変かもしれませんね。

モバイルゲームとして手軽に遊べれば、そこそこ流行るかもしれません。

via Hacker News

metro-clojure – gitリポジトリで地下鉄路線図を作るClojure製ツール

gjhenrique/metro-clojure は、鉄道路線図をgitのコミット/ブランチログで再現するためのオープンソースツールです。

路線と路線に所属する駅名を並べた json ファイルが入力となります。サンプルとしてサンパウロとニューヨークのデータがついてきてるので、それを参考にします。


[
{
"name": "銀座線",
"stations": [
"渋谷",
"表参道",
"外苑前",
"青山一丁目",
"赤坂見附",
"溜池山王",
"虎ノ門",
"新橋",
"銀座",
"京橋",

データをツールに食わせると、git コマンド群を発行するシェルスクリプトを作ってくれます。


$ boot generate-git-commands -c tokyo -f tokyo.sh

大江戸線のような循環があると、git グラフが作れないためツールはエラーで止まります。そりゃそうですね。

都庁前の循環を外して再度挑戦するも、東京のいたるところの乗換駅でエラーが… あちらとこちらで乗り換えができれば、循環だらけにもなりますね。


# 渋谷 銀座線 半蔵門線 副都心線
git checkout --orphan "銀座線"
git commit --allow-empty -m "渋谷"
git branch -f "副都心線" HEAD
git branch -f "半蔵門線" HEAD
# 代々木上原 千代田線
git checkout --orphan "千代田線"
git commit --allow-empty -m "代々木上原"
# 代々木公園 千代田線
git commit --allow-empty -m "代々木公園"
# 明治神宮前 千代田線 副都心線
git merge --strategy=ours --allow-unrelated-histories --no-ff --commit -m "明治神宮前" 副都心線
git branch -f "副都心線" HEAD
# 北参道 副都心線
git checkout "副都心線"
git commit --allow-empty -m "北参道"
# 方南町 丸ノ内線分岐線
git checkout --orphan "丸ノ内線分岐線"
git commit --allow-empty -m "方南町"
# 中野富士見町 丸ノ内線分岐線
git commit --allow-empty -m "中野富士見町"
# 中野新橋 丸ノ内線分岐線

「赤坂見附-永田町」のような別名の乗換駅の同一化を諦め、さらにエラーを起こす乗換駅を同一にしないよう入力データを修正していって、やっとなんとかエラーを出さなくした結果のスクリプトを、新しい git レポジトリに突っ込むことで、部分的には正しいところもあるぐらいの、東京の地下鉄gitグラフ(東京メトロ+都営地下鉄)を作ってみました。

git log で見るとこんな感じ

東京の路線図は循環しすぎなので、使用例としてはあまり良くないかもしれませんね。

もともとパリの路線図をGitHub 上で再現した2015年の作品があり、metro-clojure はこのような作品を簡単に作れることを目指して制作されたようです。

このツールを使えば、地下鉄の路線図以外の何か身近な有向グラフを git グラフで表現することができますね。

via From metro connections to a git graph