カテゴリー
ツール

GitHub Pages で static な短縮URLサイト作成

nelsontky/gh-pages-url-shortener は、GitHub の静的ファイル公開機能 GitHub Pages を使った、短縮URLホスティングです。

clone して自分でもホストしてみました。s.akimoto.jp の DNS が GitHub Pages を指すように設定します。

https://s.akimoto.jp/ (説明用の index.html が開きます)

そして、GitHub issues にタイトルがURLになる issue を投げる

と、 issue 番号⇒URL の転送が実施されます。

https://s.akimoto.jp/1 ( issue のタイトルに書いた別のアドレスへ転送されます)

その動作原理

  1. CNAME で gh-pages ブランチを指させる
  2. (短縮URLのパス)すべては 404.html に渡される
  3. GitHub issues から JSON API でURL転換情報を JavaScript が取得し、(それに従って)転送
  4. 役に立つ?

ということ。なるほど。GitHub issues を、転送用の lookup table として使っているわけですね。この後転送したい短縮URLを増やすのは、issue を発行すればよいということです。更新や削除も同様。面白い事考えるなあ。

# GitHub API の公開アクセスには60回/時間の制限が掛かっているので、実用的には使えないでしょう。

via Hacker News

カテゴリー
ネットの事件

「イスラエルからのプルリクエストは受けられません」- オープンソース貢献と国際紛争

PHPの人気フレームワーク Laravel にダウンロードリンク生成機能を追加するオープンソースのパッケージで、機能追加の提案がイラン人の作者によって却下されるという事件が発生しました。却下の理由はイランの法律だそうです。

armancodes/laravel-download-link は、Laravel 上でファイルダウンロードのリンクを生成するパッケージ。GitHub で管理されるオープンソースのライブラリで、ダウンロードリンクの時間による失効や IPアドレスによるアクセス制限などの機能を持っています。作者は @armancodes で、プロフィールではテヘラン在住となっています。

これに対し、ユーザー @Yiddishe-Kop が、特定のユーザーにだけダウンロードを有効化させることができる改造を提案しました。当初は受け入れられそうなコメントの流れでしたが、作者による以下のようなコメントで、PRは却下されてしまいました。

すばらしいアイデアをありがとう。

たいへん申し訳ないのですが、このPRをマージすることはできません。私の国の法律で、イスラエルからの人やイスラエル政府と関係を持ってはいけないという法律があります。

理解してもらえることを願います。あらためてあなたの時間に感謝します。

Hi, Thanks for your great idea.

I’m SO SORRY to tell you that I cannot merge this PR. There is a law in my country that we MUST NOT have any relationship with people from Israel or the Israel government.

I hope you understand this, and again thanks for your time.

他ユーザーも交えた議論が少し続いた後、元Google/Facebookのエンジニアでイラン系カナダ人で、今年イランへ入国した際に逮捕投獄され、アメリカへ戻ったらイランのスパイになるよう脅されて解放された、と発表した Behdad Esfahbod氏 (@behdad)が「ただマージすればいい(Just merge it)」とコメントした後で、プルリクエスト自体が作者によってクローズされてしまいました。

ユーザ名 @Yiddishe-Kop のの Yiddishe(イディッシュ)の部分は東欧系ユダヤ人の話す言語イディッシュ語(Yidish)にもあるようにユダヤという意味の言葉で、アカウント名に「ユダヤ」と入っていることからイラン人の作者が「気づいてしまった」というところはあるように思います。

プルリクエストの最初の方では、パッチの提案に感謝して取り込むためのテストコードを追加したりもしているので、名前に気づく前は普通に受け入れるつもりだったのでしょう。却下のコメントも悪意はまったく感じられず、むしろ申し訳ないと思っている風に読めますし、現地での法律がそうなっていてしかもインターネットに公開されている場所で、個人の判断で受け入れたりすることはもしかしたら作者が危険な状態になる可能性もあるのかもしれません。

また、Hacker News の議論では、そもそもアメリカ企業のGitHub はイランや北朝鮮からのアクセスを制限しているはずで、国籍による排除についてはどっちもどっちだ、という意見もありました。すべての機能が制限されているわけではないですが、利用規約を厳格に適用すると、イラン在住の作者の方が実はGitHub を使えないという可能性もあります。

GitHub については、他にシリアやクリミアからのアクセスも(IPアドレスによる位置情報らしきものを根拠に)ブロックしているという報道もあります。

今回はイスラエルとイスラム教国の間でしたが、世界が(再度)大きく2分されていく感じもある昨今、二大国の間で直接とか、それぞれの息のかかった国の間でとか、オープンソースとその貢献活動についても、面倒な事件がいろいろ出てくるようになるのかもしれません。そういった事とはなるべく距離を置きたいというエンジニアも多いのではと思いますが、普段パッチ提供者の国籍や居住地など気にすることもないでしょうし、誰もが突然こういった問題の当事者になってしまう可能性はありますね。

カテゴリー
ツール

機械学習で最密充填ピーナッツバナナサンドイッチづくり

バナナをはさんでピーナッツバターを塗ったサンドイッチを作る際に、いかにバナナをぎっしりと敷き詰めることができるか、というのを機械学習によって示すツール EthanRosenthal/nannernest が公開されています。

家にバナナが無かったので買ってきました。

今日は世界一のバナナ輸出国エクアドル産のものが手に入りました。

バナナと、パンの断面がわかる写真を撮ります。台所がが暗くてすいません。

nannernest コマンドにこの画像を与えると、デフォルトの動作ではパンに敷き詰めるだけのバナナが無く、隙間が多数できてしまいました。日本の食パンが大きいのかな? もっと薄くスライスするよう調整した結果がこちら

この結果が正しいかを確かめてみます。

29個の輪切りにするのは結構たいへん。なんとか切り終えたので、画像の指示する番号に従って、スライスを配置していきます。

「なんだか少し窮屈だな」と思いながらも進めていくと、16番を置こうとした際についに限界が。

日本で売っているエクアドル産のバナナの形状が、ツール作者のバナナとは異なるのかもしれません。

コマンドラインオプションで、バナナを何個の輪切りにするか(デフォルトは22個。バナナ層の厚みが変わってきます)、バナナの皮の厚さ、バナナの断面の長軸短軸の比率、など細かな設定もできます。

調整次第では、バナナの詰まったサンドイッチを作ることができるのではないでしょうか。

via Ethan Rosenthal via Geekologie