2012-12-31

xkcd: 抱負

xkcd: Resolution

手詰まりなのが嫌になる。何度も、自分は変わったと思ったのに、結局何一つとして変わっていない。

2013年の抱負は、この悪循環を断ち切ることである。まったく成果が上がらない現状を認識して、自分を責めるのではなく、別の方法を試すようにするのだ。

「去年の抱負もそれじゃなかったけ?」
「そうだ。しかし、今年は変えてみせるさ」

さて、何とかしなくては。

2012-12-30

セキュアブート関連のニュース

Support the FSF: Help us stop Restricted Boot — Free Software Foundation — working together for free software

自由ソフトウェア財団が声明を出し、ハードウェア上で走らせるソフトウェアを制限するマイクロソフトの暴虐であるセキュアブートの廃止と、そのために必要な資金を自由ソフトウェア財団に寄付するよう訴えている。

さらに、自由ソフトウェア財団は、今後も、Lemote, Freedom Included, ZaReason, ThinkPenguin, Los Alamos Computers, Garlach44, InaTuxのような、制限のないハードウェアに完全に自由なGNU/LinuxベースのOSをインストールして販売する会社を支持するとしている。

セキュアブートは、その名前に反して、セキュリティには関係がない。ハードウェアの製造者が、実行するソフトウェアを、ハードウェア所有者の意志に反して、制限するだけである。

さらに、マイクロソフトの定めるARMアーキテクチャーでは、セキュアブートは必須であり、無効化オプションを付けてはならないとしている。

Matthew Garrettのブログによれば、すでに、マイクロソフトの制限されたARMアーキテクチャーのタブレットであるSurfaceでは、この通りに実装されているという。

mjg59 | No, Linux won't be easy to run on a Microsoft Surface

マイクロソフトの非人道的に制限されたSurfaceでは、セキュアブートを無効化するオプションはなく、マイクロソフトの鍵による署名がないソフトウェアは実行できない。しかも、Surfaceは、マイクロソフトのオンライン署名サービスとは、別の鍵を使っている。すなわち、マイクソフトの制限されたSurface上で、GNU/Linuxを動作させることはできない。

動作させるには、ハードウェアの脆弱性を探し、任意のコードを実行させるしかない。これは、制限されたiPhoneやAndroidと同じだ。

我々はこのような制限されたコンピューターを所有してはならない。コンピューターは所有者の奴であり、所有者の意志に従い、所有者の望むソフトウェアを実行すべきである。このように制限されたコンピューターは、所有者の権利を奪い、所有者を奴隷の地位に落とし、コンピューター提供者を不平等な支配階級に押し上げる邪悪な存在である。

したがって、もし手元に制限されたコンピューターであるiPhoneや、ほぼすべてのAndroid機や、ほぼすべてのゲーム専用機がある場合は、今すぐ叩き割るべきである。また、コンピューターを購入する場合は、このような制限機能が組み込まれていないかどうかを、確認の上で購入すべきである。

肝に銘じよ。コンピューターは所有者の下僕である。所有者はコンピューター提供者の下僕ではない。

2012-12-27

Ubuntu 12.10がUnredirect Fullscreen Windowsに対応した

Ubuntu 12.10のCompizにアップデートがあり、Unredirected Fullscreen Windowsがデフォルトで有効になった。

Unredirected Fullscreen Windowsは、名前通りフルスクリーンのウインドウに対して描画のリダイレクトを行わないというCompizの機能である。あるウインドウが画面をすべて専有しているのなら、Compizのデスクトップコンポジション機能はいらないので、直接描画できる。これにより、パフォーマンスが上がる。

主に、僅かなパフォーマンスや遅延も気になるゲーム用途である。ゲーム以外には特に必要ない機能だったりする。

なぜこの機能がデフォルトで有効になっていなかったのかというと、様々な不具合のためだ。CompizやUnity側の不具合もあれば、GPUのドライバー側の不具合もあるし、ソフトウェア側の不具合もある。

結構長い間、不具合潰しを行なっていたのだが、ようやくデフォルトで有効にできるようになったらしい。

動画再生ソフトウェアである、TotemやVLCのようなソフトウェアは、画面にティアリングが発生するため、この機能の例外リストにいれられているのだとか。

もちろん、この機能をデフォルトで有効にしたのは、単に不具合が潰されたからだけではない。かなりの需要があるから変更されたのだ。需要というのは、もちろんゲームのことだ。最近、Valveが邪悪なDRMによって制限されたゲームのソフトウェア流通システムであるSteamをGNU/Linuxにも提供しだしたからだろう。SteamはGNU/Linuxの利用者を不自由なソフトウェアで汚染する非人道的な存在であるが、その進出により、GNU/Linuxはゲーム用のプラットフォームとして立ち上がりつつある。

Steamのような邪悪なソフトウェア流通システムがGNU/Linuxにやってくるのは明らかに悪であるが、それによりGNU/Linuxベースのシステムのグラフィック周りが改良されるとすれば、悪ばかりではない。

多くのゲーマーが不自由なWindowsをOSに選ぶのは、ゲームが提供されているからである。もし、GNU/LinuxベースのOSにもゲームが提供されているのであれば、ゲーマーはWindowsに囚われる必要がなくなる。ゲームは依然として利用者の自由を制限する邪悪なソフトウェアだとしても、自由なOSの上で不自由なソフトウェアを動かすのは、不自由なOSの上で不自由なソフトウェアを動かすより、いくらかマシだ。

もちろん、自由なOSの上で自由なソフトウェアを動かすのが当然なのは言うまでもないが。

2012-12-25

xkcdの漫画いろいろ

それだけじゃないんだよ。

U+202e

‮奴らときたら、なんと

‮何だこりゃ!

‮何をした?

‮クソ

xkcd: RTL

U+202A: LEFT-TO-RIGHT EMBEDDING
U+202E: RIGHT-TO-LEFT OVERRIDE

(左上のヒートマップ)サイトのユーザー

(右上のヒートマップ)マーシャ・スチュワート・リビングの購読者

(左下のヒートマップ)ケモナーエロ画像の消費率

プレゼン中の男、「ビジネス上のインプリケーションは明白ですね」

いらつく事、その208
単なる人口密度マップにすぎない地域別マッピング

xkcd: Heatmap

人口密度が高ければ、石を投げてあたる確率も高い。

これなるは流星から作られた剣でございます。不純物としてアンチモンを含有しているため、この剣は驚くほど折れやすく脆いのでございます。

これなる匕首は遠く離れた王国の金属を使っており、青白く光るのであります。

オークが近寄ってきたら光るんだよね?

いえ、常に光ります。アクチニウムによる放射でございます。

なにか魔法の力があるのかい?

装備した者の発ガンの危険性を+2致します。

よそをあたったほうがよくないかな?

xkcd: Metallurgy

Intel 8080のコレクション

My collection of Intel 8080 microprocessors

世の中には、Intel 8080をコレクションしている人間がいるらしい。すべてのコレクションの画像を掲載している。

この人物は、最初に8080からコーディングに入門した人間なので、ことさら思い入れがあるらしい。8080のエミュレーターを書いていて、ドキュメント化されていない挙動や、部分的にしかドキュメント化されていない挙動を調べていて、製造元の違う8080をコレクションしようと思い立ったらしい。

その例として、bitwise ANDの挙動を説明している。オリジナルのIntel 8080と、他の製造元による8080は、ACフラグの値を、アキュムレーターとANAやANI命令の引数とのbitwise ORの3bit目の値にするという、不思議な挙動があるそうだ。AMDのクローンチップは、この不思議な挙動をせず、ANAとANI命令の結果、ACは常にゼロクリアされる。

AMDのクローンチップ以外は、すべて中身は同一であるらしい。AMDのクローンチップは、盗んだ設計図を解析して作ったらしく、ここからIntelとAMDの戦争が始まった。

xkcdの面白い漫画を二つ紹介

「手術のついでに、これを腕に取り付けといてくれない?」

「USBポート?」
「どっか適当な神経にくっつけといてよ」

「そんなことしても、脳でUSBデバイスをコントロールできるようにはなりませんよ」
「分かってるさ。単にハードが欲しいだけなんだ」

「あとはソフトウェアの問題さ。いずれ対応するソフトウェアを開発するプロジェクトが立ち上がるはず」
「ああ、あなたはLinuxユーザーですね」
「なんで分かったんだ?」

xkcd: Surgery

いかにもLinuxユーザーらしい態度でバレバレである。

「お母さん、なんで空は青いの?」
「レイリー散乱よ。短い波長ほど、つまり1/λ^4に比例して、散乱されやすいの。青い光は波長が短いから、最も目立つのよ。」
「へー」
「じゃ、なんで紫じゃないの?」
「え、だって、それは・・・ええっと」

俺の趣味:友人の科学者の子供に、厄介な質問を教えこむこと。

xkcd: Sky Color

空が青いのはレイリー散乱により、太陽光のうち、短い波長ほど散乱されやすいからである。可視光の波長は、赤が長く、青は短く、紫が最も短い。レイリー散乱による説明を聞けば、可視光のうちでは、紫色の光が最も散乱されるはずだ。しかし、空の色は青い。

これはなぜかというと、紫は人間の目で捉えられるぎりぎりの波長であり、人間の目では認識されにくい。そのため、人間の目では、空は青い色に見えるのである。

画像のtitleテキストの確認もお忘れなく。

スワジランド、女性のミニスカートを禁止する

Swaziland bans 'rape-provoking' mini-skirts, low-rise jeans - Indian Express

アフリカの小国であるスワジランドでは、女性がミニスカートを履くことは挑発的であり、レイプを誘発し、またレイプを容易にするという理由で、犯罪となった。違反者は懲役六ヶ月。

スワジランドでは、いまだにまともな民主主義が行われておらず、絶対王政かつ野党の結成が禁止されている。国王は散財家として知られており、10人以上もの妻を持ちと、まあ、悲惨な国だ。

2012-12-23

正しい年始状と挨拶の書き方

世間では、年賀状というものを送るそうだが、正しい年始状の書けない情けない者が多い。そこで、今年も残り少なくなってきた今、正しい年始状とその挨拶例をみてみよう。

男の場合、以下のように書くのが正しい。

新年の御慶めでたく申納候。舊年中は何かと御高庇を蒙り御禮は筆にも盡し難く候。何卒當年も相變らず御厚眷を賜はり度偏に奉願候。尚尊家御一統の御慶福を奉祈候。謹言。

これこそ、正しい年始状である。

また、このような年始状をもらった場合、以下のように返事を書く。

早々御賀章を賜はり忝く奉存候。萬里到らぬ隈なき新陽の光を欣び迎へて尊堂御一同の御健康と御昌福を奉祝賀候。客年中は當方こそ種々御好意を忝うし千萬感謝仕候。尚倍舊の御愛顧を奉願候。先は御答禮まで。謹言。

こう書いてこそ、教養のある返事である。

ちなみに、女の場合は、ここまで難しく書く必要はない。もっと簡単に書いてよろしい。

さしのぼる初日影くもりなき年の光を、御一統様御揃ひのどかに御迎へ遊ばされ候こと、かず〳 〵御めでたく御祝ひ申上候。私方にも皆皆つゞが無く年重ね候ま〻憚りながら御心安う思召たまはりたく候。常は手前にかまけ御無沙汰ばかり致し、御子様方御成身の御様子も久しう拜し参らせず、一入御ゆかしう存じまいらせそろ。めでたくかしこ。

「まいらせそろ」は、本来、合略仮名で書くべきなのだが、遺憾ながらUnicodeにも入っていない文字なので、仕方なくかなで書いている。実際に書くときは、合略仮名で書くべきである。

ちなみに、こんな字である

さて、返事には、

門の小松の千代かけてめでたき年の初めの御玉づさ忝う拜しまいらせそろ。御一統様ます〳 〵御機嫌よく御年迎へ遊ばされ、重ね〴 〵めでたく祝ひ上げまいらせそろ。先づは御あいさつのみ。めでたくかしこ。

ちなみに、これはたまたま百万遍の古本祭りで手に入れた文章のお手本集の中に載っていたものだ。

Minecraftのドキュメンタリーが(作成者の手によって)The Pirate Bayに登録される

kotakuによる記事:Minecraft: The Story of Mojang is on The Pirate Bay (On Purpose)
Minecraft: The Story of Mojang (download torrent) - TPB

Minecraftという不自由なソフトウェアのゲームがある。最近、2 Playerプロダクションというところが、Kickstarterでクラウドファンディングして、Minecraftの開発秘話のドキュメンタリーを作成した。

そのドキュメンタリー作品である、"Minecraft: The Story of Mojang"(MojangとはMinecraft作者のニックネーム)を作成し、XBox Live、DRMのないダウンロード販売、DVDでの販売を行なっている。

興味深いことに、その2 Playerプロダクション自ら、BitTorrentのマグネットリンク掲載サイトであるThe Pirate Bayに登録し、BitTorrentプロトコルを使って流通させている。

そのThe Pirate Bayの掲載時の文章に曰く、

Minecraft: The Story of Mojang (download torrent) - TPB

こんにちは、Pirate Bay。

2 Playerプロダクションは、ここに一番乗りして、"Minecraft: The Story of Mojang"をアップロードできていることを願う。我々は今までtorrentでアップロードしたことはないので、なにか間違えてないといいな。

我々が、ここに一番乗りしたかったのは、どうせ映画はここに掲載されるだろうから、それなら一言、物申しておくべきだろうと思ったからだ。torrentと海賊は人生のようなもので、すぐになくなりはしないだろう。君たちを処罰したい人間もたくさんいるようだが、我々はもう少し現実的な物の見方をしている。

まあ、そういうことだ。どうせみんな、やってるんだ。金がないのかもしれない。買う前に試したいのかもしれない。我々がXBox Liveで先行販売したのが気にいらないのかもしれない。全部、まともな理由だ。しかしもし、君が海賊は、Gabe Newell[訳注:Valveの共同出資者]の言葉を借りれば、「サービスの問題」だと思うならば、我々は、どのような方法で観てもかまわないDRMなしのデジタルダウンロードも提供していることを知ってほしいな。

我々はたったの3人で、好きなことを仕事にしている人間なんだ。ゲームが好きだし、制作も好きなんだ。映画を買ってくれれば、我々の活動をサポートできる。そもそも、我々がこの映画をキックスタートしたのは[訳注:クラウドファンディング]、自分たちで作るのに十分な資金がなかったし、それでもなお、相当の自己資金をつぎ込んだわけだ。もちろん、制作には2年かかったという事もある。

映画を観てくれ。そして気に入って、我々の活動を理解してくれることを望む。どうか考えてくれないか。8ドルのDRMなしのデジタルダウンロードをwww.theminecraftmovie.comで買うとか、あるいは20ドルのDVDをwww.fangamer.netで買うことを。

我々はゲーム業界の多くのすばらしい人物を相手に活動してきたし、作りたいと思っていたすばらしい映画を作る機会にも恵まれた。どうかこの活動を続けられるようにしてくれ。まだ届けられるものがたくさんあるんだ。

-2pp

まあ、Minecraftの開発者であるNotchも、過去にこんな発言をしている。

@AndresLeay

おいNotch、あのな、俺このゲームがとても好きなんだけど、買う金がないんだ。海賊するまえに、無料でくれないか聞いてみようと思ってね。

@notch

さっさと海賊しやがれ。金ができた後で、まだ好きなら、買え。ただ忘れるな、お前は悪いことをしているんだぜ。

そんなMinecraftが好きで、Notchのドキュメンタリーを作ったところだから、なにか感化されるところがあったのかもしれない。DRMのないダウンロード販売をしているのも好印象だ。

ちなみに、Pirate Bayのコメントによると、ファイル名が、StoryofMojang(Pirate).movで、ファイルサイズは2.52GiB。動画の長さは1時間44分。ファイル自体は、コンテナーフォーマットがQuickTime、動画フォーマットはH.264で3455Kbps、音声フォーマットはAACの302Kbpsだそうだ。画質は十分といったところだろう。できれば、VP8+Ogg VorbisをMatroskaコンテナで包むような、自由なフォーマットを使って欲しかったところだ。

個人的な感想をいえば、私はMinecraftの面白さがわからない。実際にやったわけではなく、プレイ動画を観ただけなので、判断する資格はないのかもしれないのだが、やはり面白さがわからない。

単に3D造形したいのであれば、3Dモデリングソフトウェアの方がよほど使いやすいだろうし、最近の3Dモデリングソフトウェアには、シェーダーを書いたり、スクリプトを組んだり、物理演算させたりなどの各種機能も揃っているので、たとえばモデルを動かして電卓を実装するなどという事も行える。

まあ、これを言い出すと、SimCityも、ペイントソフトウェアを使って描けばいいじゃないかということになってしまうのだろうが。

ちなみに、Minecraftは不自由なソフトウェアのゲームであるので、遊んではならない。

地獄からの顧客: 枠に収めるべく再生速度を速めろ

I was working with a worldwide credit card brand....

私はある世界規模のクレジットカードのブランドと仕事をしていた。彼らがよこした仕事とは、ラジオ広告に流す音声を編集することであった。すでにロンドンで録音されており、我々がすることと言えば、最後に地域ごとの連絡先を付け加えるだけであった。ファイルが送られてきたが、30秒の長さがあった。しかし、ラジオは20秒枠しか予約しておらず、さらに枠を延長することもできないという。

私は音声を編集して短縮することを提案した。セリフは簡単で、意味を失わずに削れる部分はたくさんあった。

顧客はその提案には満足しなかった。顧客は、単に再生速度を速めることで、20秒枠に収まるようにしてはどうかと提案したのだった。

アマゾンで最も役に立たなそうな本、「北東アメリカにおける野ざらしのショッピングカート:観測ガイド」

Redditを眺めていたところ、毎年、俺と友達は最も役に立たないプレゼントを贈り合うんだ。友達いつもうまくやってくれると題して、ネコのカツラに関する本が紹介されていた。

さらに、そのコメントで、次のような本が紹介されていた。

The Stray Shopping Carts of Eastern North America: A Guide to Field Identification

題名は「北東アメリカにおける野ざらしのショッピングカート:観測ガイド」である。どうやら、Amazon.co.jpにもあるので、日本からでも買えるようだ。

説明文は、

野ざらしのショッピングカートは多いが、カートと地域を結びつける研究はほとんど行われて来なかった。これは、今まで我々には打ち棄てられたカートを説明する学問が不足していたためである。それも今日で終わりだ。この「北東アメリカにおける野ざらしのショッピングカート:観測ガイド」では、プロでなくても、カートを発見し、発見場所と状況に応じて分類できるのだ。写真集により、読者は分類を学ぶことができる。ナイアガラ(多くのカートが悲運にも落ち込んでいった)などの多くの一見関係無さそうな場所からでも発見できる。

カスタマーレビューも面白い。

この本は現在手に入る四冊のショッピングカートのリファレンスガイドうちでも、最も優れた本です。以下のトピックについて素晴らしく網羅しています。

・ショッピングカート

私はこの本を強く推奨します。

著者の経歴が載っていませんが、私はこの仕事によって、著者にテニュアが与えられる一助となることを願ってやみません。野鳥観測ガイドのように、驚くほど面白い本です。議会図書館はこの本を「芸術的写真集」の本であると分類していますが、とても興味深い社会人類学的要素を含んでいます。

自由ソフトウェア財団が技術的な指導力を失いつつある

GNU sed 4.2.2 released, and a rant from the maintainer

GNU sed 4.2.2のリリースに合わせて、メンテナーであるPaolo Bonziniが、GNU sedを含むGNUプロジェクトのメンテナーをやめると発言している。さらに、その理由について書き立てている。

私はGNU sed 4.2.2を喜ばしく発表する。

喜ばしからぬ発表として、私はGNU sed(8年間)とGNU grep(3年)のメンテナーから降りる。私はさらに、Autoconf, Automake, Libtool, gnulib, libsigsegv, Bsionのコミットアクセス権も放棄する。

GNUメンテナーと外部の者に告ぐ。この発表や、Nikos Mavrogiannopoulosの発表、gnutlsの移行は、驚くにあたらない。

gnutls is moving [LWN.net]では、GnuTLSの開発が、GNU傘下から離れた。今後はGNU外で行われることを発表している。それはさておき。

Nikosと同じで、私は自由ソフトウェア財団の思想は支持している。私が1999年にGNUプロジェクトに参加してからの自由ソフトウェア財団のスタッフの協力にも感謝している。しかし、Nikosと同じく、自由ソフトウェア財団とリチャードストールマンのいくつかの決定には不服である。

要点は、以下の三点に集約される。

1) ぶっきらぼうに言うと、GNUプロジェクトがこの業界で広く使われるには、自由ソフトウェア財団の勧告を無視する必要がある。GNUコンパイラーコレクションがCからC++に移行した時、ストールマンが関わっていたはずがないし、GNOMEがgnome-shellの拡張言語としてJavaScriptを選んだときもそうだ。

時に、一人の人間が決定を下すのは、良いことである。例えば、GNUメンテナーのような様々なグループの集合に、C++のコーディング規約を同意させるのは難しい。しかし、ストールマンがよこしてくれるのは、「C++よりCの方が望ましい。何故ならば、C++は汚いからだ」だけだ。この結果、GNUのコーディング規約は長年更新されず、すべて古臭いものと成り下がっている。

これは、プログラミング言語だけに限定される話ではない。libabcのようなものは、本来GNUコミュニティから発生すべきものであったが、そうではなかった。

libabcは、お手本ソフトウェアである。近年、カーネルスペースとユーザースペースの協調動作が重要になってきているが、従来のカーネル開発者は、カーネルコードにおいては有益だが、ユーザーコードにおいては間違っている技法を、そのまま使おうとする。このような間違いを防ぐために、お手本となるような、それ自体は何もしないスケルトンのソフトウェアを提示する目的で、libabcプロジェクトが立ち上がった。それはさておき。

さらに、GNUコーディング規約では、セキュリティに対する言及が一切ない。いまだに、「Unixプログラムには静的テーブルや固定長文字列がよく使われているが、これは制限が多い。動的確保を使え」などと宣っているが、信頼できない入力を扱うときは、その制限が必要なときもあるのだ。

これは実際、相当問題になっている。というのも、自由ソフトウェア財団とリチャードストールマンは、しばしば技術的理由ではなく、政治的理由による意思決定を行い、多くの機能の実装を阻害してきた。

例えば、gccは、コンパイラーの各部の機能、つまり字句解析や意味解析や最適化やコード生成などを十分に独立させず、機能単体に分離して組み込んで使うことを難しくしているし、内部表現を規格化せず、別のソフトウェアで内部表現を生成させてそこから先の最適化やコード生成はgccで行うなどということも難しくしている。

これは、そのように一部の機能を独立させて組み込みやすくしてしまうと、不自由なソフトウェアから違法に使われる恐れがあるという政治的な理由で、あえてそのように作ってある。

また、gccにコンパイル済みヘッダーの機能を付け加えるのも、リチャード・ストールマンの強い反対により、しばらく抑えられていたともいう。

その結果、GCCは現在、後発のLLVMにかなりその従来の独占的地位を脅かされている。

また、GNUによる自由なカーネルであるHurdも、リチャード・ストールマンの、「マイクロカーネルのMachを元にすれば、ほとんどのコードがユーザースペースでデバッグできて簡単じゃね?」という意思決定により、いまだに実用化に至っていない。もし、BSDを元にしていたならば、FreBSdやNetBSDやOpenBSDやDragonFly BSDのように、今頃はともかくも実用になるカーネルが出来上がっていたかもしれないのだ。

2) GNUが自由ソフトウェア財団にしていることは少なく、自由ソフトウェア財団がGNUにしていることも少ない。GNUマニフェストが発表されてより、自由ソフトウェアは大いに成功したため、自由ソフトウェアの配布というのは、GNU由来だけではなくなっている。これは良いことである。しかし、自由ソフトウェア財団は、GNUというブランドの構築に無頓着である。gnash(訳注:自由なソフトウェア実装のFlash Player)のようなプロジェクトは、長年自由ソフトウェア財団の高優先度プロジェクトのリストに載っているにもかかわらず、資金難に悩まされている。リストに乗っている他のプロジェクトは、存在すらしていない。何故ならば、年単位の開発期間がかかるが、開発をしようと思う人間は、自腹で行わなければならないからだ。

多くの業界を自由ソフトウェアが占めるためには十分ではない。また、自由ソフトウェアが、いわゆる「オープンソース」などと呼ばれる、ユーザーの自由を気にかけない勢力と競争して勝ち抜いていくためには、全然十分ではない。

3) プログラムにGNUの名前を冠しても、もはや宣伝にはならない。皆、GNUといえば象のようにのろまであると考え、ガゼルのように素早いとは思わない。これは正しいかもしれないのだ。LLVMのようなプロジェクトは、GNUの意思決定プロセスの遅さを尻目に、すばらしい開発速度を達成しているし、Appleのような企業が、GPLv3の問題を避けるためにプロジェクトを支援しているのであっても、世間からは賞賛されている。

GNUの一部であることは、もはや技術的に指導力を発揮できる象徴ではないのだ。「Unixで貧弱ならば、全然別の優れたもので置き換えればよい」。今日のGNUで、今なおこれが言えるか?

現状の方針の変更を阻害するGNUと、上記3つの理由により、GNUが無益になりつつある。方針の変更が行われない以上、もはやGNUの一部である理由がない。

これ以降、私がコミット権を維持するのは、GCCとGNU Smalltalkに限る。GNU Smalltalkについては、まだはっきりと決めていない。仕事と家庭に追われて、1996年、私を自由なソフトウェアに誘ってくれたプロジェクトから離れ始めている。GNU傘下から引き離したいが、それも多大な開発力を必要とする。意見くれ。

gnutlsの状況については、Linux Weekly Newsでまとめを読むことができる。購読していないのならば、GnuTLS, copyright assignment, and GNU project governance [LWN.net]から読むことができる。LWMもサポートよろしく。

とうとう、言うべきことが言われた感がある。実際、今、GNUプロジェクトに起こっている、技術的に良い傾向のある動きは、すべて自由ソフトウェア財団とリチャードストールマンの意向に反するものである。GCCの開発をC++に移行するとか、GCCでもモジュール化を考えようなどといった動きだ。

この問題を放置すると、GNUのソフトウェアの利用率が下がり、GNUの影響力の低下にもつながる。

囲い込みを行う消耗品商法について

本の虫: 神奈川県が欺瞞に満ちたプリンター業界による詐欺キャンペーンの片棒を担ぐと題して、プリンター業界の詐欺を暴いたところ、問題をすり替えた批判が見られた。

曰く、「インクジェットプリンター業界は、利益率の高いインク代で儲けている。したがって、インクカートリッジに制限装置を組み込み、インクの囲い込みを行わなければ、インクジェットプリンター本体の値段がとても高くなる」と。

値段設定に関して、この主張は正しい。インクというものは、本来とても安いものである。制限装置を加えたインクカートリッジの値段も、それほど高くはない。インクカートリッジに制限装置を加えて、プリンターの生産者、あるいは生産者から認可を得たインク生産者からのインク封入済みカートリッジしか使用できないように制限すれば、プリンター本体を不当廉売しても、十分に利益が出る。何故ならば、利用者は必ず、自社の不当に高いインクカートリッジを買わなければならず、利益率の高いインクカートリッジが売れるからだ。

この商法は、囲い込みを行う消耗品商法であり、邪悪である。物は所有者の意に従うべきであり、生産者の意に従うべきではないからだ。

ゲーム専用機業界も、同じ囲い込みを行う消耗品商法をしている。ゲームというのは、消耗品である。ゲームは、いつか飽きるものである。したがって消耗品である。ゲームというソフトウェア、つまり情報は、何らかの情報媒体によって、流通される。磁気テープ、光学ディスク、PROM、フラッシュメモリー、あるいはネットワーク回線を介したやり取りなどの、情報媒体を通じて流通される。情報媒体というのは、とても安いものである。

一方、コンピューターは未だに高い。ゲーム専用機というのは、邪悪な制限された汎用コンピューターである。生産者の認可したソフトウェア以外は、実行を拒むよう、制限機能が組み込まれている。したがって、これは制限コンピューターと呼ぶべきである。なぜならば、所有者や利用者の意に反して、ソフトウェアの実行を妨げているからだ。このような邪悪な制限コンピューターでは、所有者と言えども、自由にプログラミングを行うことができない。生産者は、制限コンピューターを不当廉売し、ソフトウェアを不当に高く売る。殆どの場合、不自由なソフトウェアである。

これは、囲い込みである。

不自由なソフトウェアも、邪悪な囲い込み商法である。ソフトウェアが不自由であるとは、すなわち、

  • 自由0: ソフトウェアを任意の方法で実行できる自由
  • 自由1: ソフトウェアの実装を調べ、改変する自由(ソースコードの公開はこの自由を保証する前提条件である)
  • 自由2: ソフトウェアを再配布する自由
  • 自由3: ソフトウェアの改変版を再配布する自由(ソースコードの公開はこの自由を保証する前提条件である)

この4つの自由を満たさないソフトウェアを、不自由なソフトウェアという。

不自由なソフトウェアは、ソフトウェアの生産者を、利用者より高い階級におく不平等で邪悪な存在である。

ある者言う。「しかし、自由なソフトウェアは、誰でも改変や再配布ができるので、まともに売れないではないか」と。

自由なソフトウェアで利益を出す方法はいくつかある。まず、ソフトウェアは自然に発生しない。必ず、誰かが書かなければならない。今、ソフトウェアが必要であれば、自分で書くか、あるいは誰かに書いてもらうしかない。誰かに書いてもらうには、金を払って書いてもらうのが一番効率がいい。ここに、需要のあるソフトウェアを書くことに対して利益を出すことができる。

ソフトウェアがあるからといって、利用者が使いこなせるわけではない。例えば、今、私にコンピューターがあり、回線があり、自由なソフトウェアのApacheがあるからといって、すぐさまHTTPサーバーを立ち上げられるわけではない。私はApacheの使い方を知らないからだ。Apacheは巨大なソフトウェアであり、またHTTPサーバーの管理も非常に煩雑な作業である。もし、サーバーの管理ではなく、サーバーを使って提供する機能の実装に注力したいのであれば、自分にはできない。自分にできなければ、他人にやってもらうしかない。他人にやってもらうには、金を払うのが一番効率がいい。ここに、ソフトウェアを使うことに対して利益を出すことができる。

自由なソフトウェアは、囲い込みを引き起こさない。なぜならば、ソフトウェアは自由であるので、たとえソフトウェアの生産者が、「いくら金を積まれても、その機能は実装しない」と言ったとしても、誰か別の人間に金を払って実装してもらうことができる。もちろん、金があり、また実装可能な機能であればの話だが。あるいは、自分に能力があれば、自力で実装できる。

不自由なソフトウェアでは、不平等な階級社会であるので、これは不可能だ。いくら懇願しようが、金を積もうが、また自分に実装できる能力があろうが、不自由なソフトウェアの生産者が否といえばそこまでだ。

囲い込みの害は、今は問題がなく思えたとしても、将来必ず現れる。例えば、ある囲い込まれた制限コンピューターや不自由なソフトウェアに依存していて、将来、提供元が一方的に利用料金を釣り上げたり、既存の重要な機能を無効にしたとしても、どうすることもできない。唯々諾々と受け入れるか、利用を拒否することぐらいしかできない。制限のない汎用コンピューターと自由なソフトウェアによって囲い込みを受けていなければ、たとえオリジナルの提供者が邪悪に走ったとしても、自分で行うか、別の提供者を探せばよい。

もちろん、提供者を依頼するには、金を払わなければならないだろう。これは正当な対価である。したがって、自由なソフトウェアは無経済ではない。

しかし、問題の本質は、囲い込みの害は想像以上にひどいということだ。囲い込みを行う商法は、絶対に避けねばならない。

2012-12-22

合衆国憲法修正第二条は、AK47ではなくインターネットを保護すべき

The 2nd Amendment should protect the internet, not your AK47. » byJess.net

アメリカ合衆国の話だが、第二条の面白い解釈があったので紹介。

A well regulated militia being necessary to the security of a free state, the right of the people to keep and bear arms shall not be infringed.

自由な国の安全保障には規律ある民兵が必要であるから、市民は武器を保持、所有する権利を侵されてはならない。

ほぼすべての銃所有者は、この前半部分を考慮せずに、第二条は「自衛する権利」であると主張する。これは分からないでもない。一体誰が今、民兵に参加するんだ? この集会だらけの中で。

しかし、教養ある銃所有者ですら、本質を見失っている。一歩下がってみると、第二条の意図は、政府を市民の手によって検証することを許すものである。1791年当時、検証とは市民を小銃やマスケット銃で武装させることであった。当時は、それが革命に有効な道具だったのだ。しかし、製造ラインで生産される戦車があり、爆撃機があり、戦闘機がある今、「暴君」たる政府の力に対抗できる市民の物はない。第二条の文面を読めば、もはやその牙が欠けているのは明らかである。

しかし、「武器」は様々な意味をもつ。今日、この2012年では、我々は政府に対抗するにあたってもっと効果的な武器がある。インターネットだ。2012年、我々の政府は「暴君」的な規制であるSOPAやPIPAを通そうとした。政府は、我々が実弾を装填したアサルトライフルを持っていたから、我々の要求を聞き入れたのか? 否。市民がインターネットを使い、ロビー活動を行なって政府を辱めたから、うまくいったのだ。

インターネットは我らアメリカ合衆国市民が持つ偉大なる「武器」であり、もし建国の父が今いたならば、これを認識して、南北戦争以降、政府に対抗する効果的な道具としての役割を果たしていない銃の代わりに自由なインターネットを守るようにしたであろう。そして皮肉なことに、銃所有者は現在、銃所有の権利を守るための最も効果的な武器として、インターネットを使っている。彼ら愛国者が最も偉大な武器で武装し、我らの屍を超えて行かねば、我らからインターネットを取り上げることができない民衆の力を、それ惟よ。

2012-12-21

ゼルダの伝説レゴの提案が却下される

Legend of Zelda LEGO rejected at final stage | GamesRadar

レゴ社は、過去に映画やゲームなどを元にした塗装や形状のブロックを販売している。最近、ゼルダの伝説を元にしたブロックを販売するよう働きかける運動が起こった。ファンの手によりブロックの形状が設計され、また大規模な署名も集まった。

これに対して、レゴ社は公式に声明を出し、検討した結果、ゼルダの伝説レゴは却下すると発表した。理由は、提案されたブロックを製造するには、新しい金型がいくつも必要であり、費用がかかりすぎるからだという。

中国では資本主義が行き届いており、ハグまで有料

中国の幼稚園、先生が児童とハグをするのに料金をとっていた:らばQ
Nothing To Do With Arbroath: Outrage over Chinese kindergarten 'hug fee'

幼稚園で、先生が児童とハグをし、もって児童の自身をつけるという名目で、ハグ料を徴収していたことが明るみに出て、物議をかもしている。

いやはや、私はこれまで、中国は共産主義国だと思っていたのだが、どうやら今では極端な資本主義が行われているようだ。

安倍総裁、来夏の参院選までに選挙活動のインターネット利用を解禁する考えを表明

安倍総裁「ネット選挙を解禁」 来夏の参院選までに - 47NEWS(よんななニュース)

現在、選挙活動には、利用する図画の枚数を規定などという大昔の法律により、任意枚の図画を配布できるとみなされるインターネットは禁止されている。

この法律は、本来、選挙活動に制限を加え、金に任せたビラのばらまきを禁止するなどの意図があったそうだ。

これがために、安価な通信手段であるインターネット上での意思の発信が禁じられている。特に選挙期間中は、候補者は安全のためにインターネットでの意思発信を完全に停止するという、表現の自由を脅かされた存在になりさがっている。

さて、約束は守られるのか。

そもそも、もはや図画の枚数を制限することに意味はあるのだろうか。というのも、現代では、レーザープリンターすら個人で所有できるようになり、更にインターネット越しにファイルをアップロードして、全国のコンビニの店舗で数十円程度の費用で印刷する仕組みも整っており、もはや、印刷の枚数を制限する理由が分からない。

それにしても、参照先のニュースでは、「ネット選挙」となっているが、これは誤解を招く。今回の問題は、選挙活動としての情報流通媒体としてのインターネット利用であり、インターネットを利用して投票する仕組みの整備ではない。

2012-12-20

神奈川県が欺瞞に満ちたプリンター業界による詐欺キャンペーンの片棒を担ぐ

プリンタ里帰りプロジェクトに神奈川県が参加 ~インクカートリッジ回収箱を県内16カ所に設置 - PC Watch

プリンター業界の陰謀による欺瞞に満ちた詐欺キャンペーンが行われている。神奈川県がその詐欺の片棒を担いでいる。

神奈川県の黒岩祐二知事は、「インクカートリッジ里帰りプロジェクトは、家庭に普及しているプリンタの使用済みインクカートリッジを回収、分解し、再利用するもの。モノを作るだけでなく、資源を守ることに対して、企業の責任として取り組んでいく点で、時代は大きく変わったと感じている。大変すばらしいことである。これから年賀状の印刷がヤマ場を迎える。タイムリーといえる時期に協定を結ぶことができた。県のホームページや、県のたよりを通じて、インクカートリッジを捨てずに回収に協力してもらえるようにお願いしたい」と語った。

里帰りプロジェクトによると、2012年3月までに、累計で555万本の使用済みインクカートリッジを回収している。これは排出CO2削減量として72tにあたるほか、杉の木のCO2吸収量では5,200本分にあたるという。今年度だけで220万本程度の使用済みインクカートリッジが回収できそうだという。

1つ1つは小さく、まだ回収率は低いが、それでもこの活動がなかったら、それだけのカートリッジが捨てられてしまい、社会貢献にもつながらなかった。

これは許しがたい詐欺である。今のプリンターのインクカートリッジには、邪悪な制限装置が仕掛けられている。方法は様々あれど、インクカートリッジを利用者が再利用できないように、一度使ったものは動作を拒否する妨害機能が仕組まれているのだ。

具体的な実装方法としては、歯車を回すであるとか、極小のAPUを組み込むであるとか、様々だ。

もし、これらの邪悪な制限装置を付けなければ、インクカートリッジは利用者が容易に再利用できるのだ。インクだけ詰め替えればいいのだ。

そもそも、インクである。インクの入ったプラスチックの棒であるボールペンの値段を見よ。インクを染み込ませたフェルトペンの値段を見よ。つけペンや万年筆用のインクの値段を見よ。

インクの値段というのは、とても安いものである。では、なぜプリンター各社の純正インクは高いのか。

それは、詐欺のような方法で儲けるためである。プリンター各社は悪賢いたくらみによって、純正インクカートリッジ以外を使用できないような妨害機能を作り込んで、ロックイン(囲い込み)をしている。このため、利用者は値段の高い純正インクカートリッジを購入しなければならず、原価の安いインクの入ったプラスチックの容器が飛ぶように売れる。なぜならば、利用できる唯一のインクは、バカ高い純正インクカートリッジだけだからだ。

このような制限は邪悪である。しかも、この恥知らずな連中は、己で仕掛けた妨害機能を、逆にイメージアップのための広告に利用して、もって利用者を騙している。「我社はエコに貢献しています。インクカートリッジを回収してリサイクルします。二酸化炭素を削減します」。噴飯に堪えざるなり。「市町村とも協力して行なっています。行政のお墨付きを得たのだから我々は正義です」。噴飯に堪えざるなり。「さあ、我社の制限されたプリンターと妨害装置の仕込まれた純正インクカートリッジを消費しなさい。さすればエコです。」。噴飯に堪えざるなり。

テメェが仕込んだ妨害機能のために再利用できないのだ。利用済みカートリッジを回収するには、ガソリンを燃料にした内燃機関で動く車両で運搬しなければならない。これは二酸化炭素を発生させる。もし、余計な妨害機能を組み込まず、カートリッジが再利用できるのであれば、利用者は単に安価なインクを詰め替えるだけですむ。二酸化炭素の発生は大いに削減できる。

そもそも、カートリッジに妨害機能を組み込むには、製造工程が増える。すなわち、二酸化炭素の発生も増える。

したがって、このキャンペーンは、二酸化炭素の発生を減らすどころか、逆に増やしているのだ。これを詐欺と言わずして何という。

インクは自由に選択できるべきである。選択の自由は健康な競争と向上をもたらす。インクの良さを理解したければ、つけペンや万年筆を使うといい。

我々は決起して、かかる邪悪なプリンター業界と神奈川県を一斉に放棄せずんばあらず。邪悪を打倒せずんばあらず。

追記:ある者いう、「プリンター本体を赤字になるほど安くして、値段と利益率の高いインク代で儲ける商売だから、これを是正するとプリンター本体がとても高くなる。したがって、詐欺ではなく邪悪でもない」と。これは問題のすり替えである。

どうやら文字を読まない人間がいるようなので、もう一度書く。

この詐欺的広告キャンペーンは、インクカートリッジ回収が、環境に優しく、二酸化炭素を削減すると宣伝している。しかし、すでに書いたように、実際には、インクカートリッジに制限装置を組み込むことによって、生産工程を複雑化させ、より多くの資源を使い、二酸化炭素の排出量も増える。さらに、インクカートリッジを回収するということは、二酸化炭素を排出する車両で空になったインクカートリッジを運搬するということである。これも二酸化炭素の排出を増やす。

だから詐欺なのだ。だから邪悪なのだ。

値段設定は、別の問題だ。インクを安くすると、利益を出すためにプリンター本体の値段が上がるだろう。その方が自然なのだ。本体を不当廉売して、消耗品を不当に高くするという商売は、生産者囲い込み(ベンダーロックイン)を容易にする。例えば、ゲーム専用機も、本体は赤字になるほど安くしている。儲けは、値段と利益率の高い情報媒体である光学メディアやカートリッジで儲けている。ゲームはいずれ飽きるので、消耗品といえる。これもプリンターと同じく、ゲーム専用機というスパイウェアの入ったコンピューターには制限装置が組み込まれており、ゲーム専用機の生産者の認可を受けたソフトウェアしか実行できないようになっている。コンピューター所有者の意志に反して、ソフトウェアの実行を妨げているのだ。そのため、コンピューター所有者といえども、自由にプログラミングすることはできないし、自由にソフトウェアを実行することもできない。

したがって、我々はプリンターやゲーム専用機のような制限されたハードウェアを不当廉売して、インクやゲームのような消耗品を不当に高く売る商法を、邪悪な囲い込み商法として、断固として排斥しなければならない。

2012-12-19

Facebook、ブラウザー拡張の作成者をbanする

*IMPORTANT NEWS!* Facebooks legal team have told me I am banned from Facebook because of F.B. Purity | F.B. Purity - Cleans Up FacebookF.B. Purity – Cleans Up Facebook

F.B. Purityという、ブラウザー拡張の作者が、Facebookからbanされたそうだ。

Facebookの弁護士曰く、Facebookは利用規約でFacebookの見た目の変更を禁じている、のだそうだ。

しかし、F.B. Purityは、ブラウザー拡張であり、Facebookについては何も変更していない。ブラウザーを変更した結果、Facebookの見た目が変わっているに過ぎないのだ。

与えられたHTMLやCSSや画像動画などのリソースをどのように表示するか、JavaScriptをどのように実行するかは、利用者側が支配力を持つブラウザーの仕事である。

すなわち、Facebookでは、ブラウザーの開発に関わる人間は、皆利用規約に反するのだろう。

ところで、世の中にはこんなに不可思議な理由でbanを行うFacebookを社会の公器とみなし、市町村を上げて導入しようとしている酔狂なアホもいるとか。

コンピューターのハードウェアの不具合は、案外多い

Whose bug is this anyway?!? - Code Of Honor

Guild Warsという不自由なソフトウェアのゲームの開発者である Patrick Wyattが、今までに出くわしたバグについて語っている。中でも興味深いのは、ハードウェアの不具合、つまりソフトウェアの責任ではない不具合だ。

ユーザーから上がってくるバグ報告のうちのいくつかは、本来起こり得ないようなバグであった。もちろん、バグであるからには、何だって起こりえるのだが、それにしても、まずありえないバグが報告されていた。共同出資社にして凄腕プログラマーのMike O’Brienは、これがユーザーのハードウェアに起因する問題ではないかと推測した。そこで、彼はテストのためのコードを書いた。

Mike O’BrienはOsStressと名付けたモジュールを書いた。これは、メモリブロックを確保し、そのメモリブロック上で計算を行い、あらかじめ答えを格納したテーブルと比較するというものだ。このストレステストをメインゲームループに入れたので、コンピューターは一秒間に30-50回ほど、検算を実行することになる。

正常に動作するコンピューターでは、このストレステストは絶対に失敗しないはずである。しかし、驚いたことに、Guild Warsで使われている1%ほどのコンピューターは、実際に失敗したのだ。1パーセントというのは、大したことが無いように思えるかもしれないが、百万人のゲーマーが毎日プレイしているようなゲームでは、日々に1万人がクラッシュしていることになる。我々の開発部門は、何週間もそのような頻度で起こる問題を調査していたのだ。

この手のハードウェアの問題というのは、直接に観測したのはメモリーの問題なので、宇宙線やメモリの故障も当然考えられるが、放熱、電源容量の不足、オーバークロックなども考えられる。

ちなみに、Microsoftの不自由なOSであるWindowsも、Windows XPでエラー報告機能をつけてからというもの、頻繁に、起こりうるはずのないクラッシュリポートが報告されていた。たとえば、"xor eax eax"のような、およそクラッシュするはずのない命令で、実際にクラッシュしたというクラッシュレポートだ。CPUベンダーの既知のバグ一覧をみても、そのようなバグは見つかっていない。

There's an awful lot of overclocking out there - The Old New Thing - Site Home - MSDN Blogs

Microsoftがそのようなクラッシュレポートを送信したユーザーの何人かに連絡を取り、電話で色々と調査したところ、そのようなユーザーのコンピューターはみな、オーバークロックされていたことが明らかになった。オーバークロックについて知らないユーザーもいたが、そういう場合は大抵、コンピューターを購入した店側でオーバークロックされていたのであった。

今日では、オーバークロックはもはや酔狂な遊びになってしまった。CPUの性能が倍々に上がっていった昔は、オーバークロックで劇的な性能向上の余地があったのだが、今は単にクロック周波数が性能を決める時代でもなくなってしまったし、ましてや、CPUでもGPUでも、動的にリクロッキングするのが当たり前になってしまった。

ピンボールがWindows Vistaから取り除かれた理由

不自由なOSであるWindows XPまでは、不自由なソフトウェアのピンボールゲームが付属していた。

このゲームは、不自由なWindows Vistaでは、取り除かれた。何故かという理由を、Microsoftの古参社員であるRaymond Chenが明かしている。

Windows 95の時代からあるピンボールゲームが付属していたのは、Windows XPが最後のバージョンである。なぜなくなったのかということについては、法的な理由であるという推測があるようだ。

それは違う。

僕がWindows XPでやった仕事のひとつは、何百万行ものコードを32bitから64bitに移植して、Windows XP 64-bitエディションを出荷できるようにすることだった。64bit版のピンボールには、ボールが幽霊のように、オブジェクトをすり抜けてしまうという、厄介なバグがあった。特に、ゲームを開始して、ボールがランチャーにセットされると、そのままゆっくり画面下に落ちていくのだった。

すぐにゲームオーバーになる。

僕ともう一人が、プログラムをデバッグしていたが、そもそもこのコードは、何年も前に他所の会社で書かれたものであり、Microsoftにこのコードについて理解している人間がおらず(未だによくわかっていない)、しかも、コードのほとんどはコメントが削られているので、我々は衝突判定がなぜ動かないのか分からなかった。いや、そもそも、衝突判定がどこで行われているかすら分からなかったのだ

まだ我々は何百万行ものコードを移植せねばならず、この程度のコードに、何日も無駄に時間をかけて、どこぞの浮動小数点数の丸め誤差が衝突判定を失敗させているかなどと解析することなどできやしなかったのだ。我々は 、製品からピンボールを取り除く判断をした。

僕もこの決定は悲しかったんだよ。このゲームではよく遊んだし。Windows XPで僕が誇れる仕事の成果でもあったわけだし

Why was Pinball removed from Windows Vista? - The Old New Thing - Site Home - MSDN Blogs

ちなみに、あのピンボールゲームは、もともと、Full Tilt! Pinballという、Cinematronics, LLCによって開発され、Maxisによって発売された不自由なゲームが、簡易版としてWindowsに同梱されていたのだ。

1996年にリリースされた不自由なWindows用のソフトウェアである。時代を考えると、おそらく、ソースコードは悲惨なほど読みづらいはずだ。

最初のリンク、

What one Windows XP feature am I most proud of? - The Old New Thing - Site Home - MSDN Blogs

は、Raymond ChenのWindows XPにおける仕事として、ピンボールのFPSを120に制限し、CPUを100%食わないようにしたというもの。このピンボールゲームは古い設計で、可能な限り延々と画面を描画更新し続けるようになっていた。

次のリンク、

When somebody gives you a gift of code, it's more often than not a burden in disguise - The Old New Thing - Site Home - MSDN Blogs

は、なぜMicrosoftはサードパーティのプログラムを付属しないのかという説明。一度付属させたソフトウェアは、相当に長い期間サポートし続けなければならない。Windowsのバージョンの違いや、UIデザインポリシーの変更や、アーキテクチャの変更に対して、常に移植され続けなければならない。特許侵害の訴訟を受ける可能性があるのもMicrosoftだ。

ましてや、自然の風景の写真を壁紙として使ってみたところ、卑猥なサブリミナルが含まれているなどと報告したベータテスターもいるのだ(ベータテスターの精神状態が気になる)。

Windows brings out the Rorschach test in everyone - The Old New Thing - Site Home - MSDN Blogs

2012-12-18

WikipediaがMySQLからMariaDBに移行中

Wikipedia moving from MySQL to MariaDB | ZDNet

Wikipediaが、MySQLからMariaDBへの移行を計画しているらしい。すでに、英語版のスレーブのひとつをMariaDBに切り替えているのだとか。

MariaDBとは、MySQLのforkであり、MySQLのオリジナルの開発者にして出資者のMichael Widenius(Monty)が主導している。オラクルの所有するMySQLが、GPLとProprietaryのデュアルライセンスなのに対し、MariaDBはGPL一本のみ。もちろん、GPLのMySQLからforkしたのだから当然とも言えるが。

MariaDBはMySQLと互換性を保ち、入れ替えればそのまま動くことを目標にしているそうだ。

WikipediaがMySQLからMariaDBに移行するのは、パフォーマンスが主目的ではなく、自由なソフトウェアとコミュニティ、MariaDB財団を推進する意図があるそうだ。

たしかに、オラクルに所有されていて、自由、不自由の複数のライセンスで提供されているMySQLより、自由なGPL一本で提供されているMariaDBの方が、純粋な自由という点で健全である。

また、パフォーマンスに関しても、ある場合はMySQLより早く、また別の場合は遅く、まだ結論を出せる状態ではないとしている。

ちなみに、私はデータベースを理解するための脳の一部を持たずして産まれてきたらしく、データベースについてはさっぱりわからない。

「殺しても死なない奴だ」という不思議な表現

Alayavijnana comments on Looking for instances of an often used quote that goes something like "I'm not the kind of guy to die, even when killed"

日本語では違和感のない、「殺しても死なない奴だ」という表現は、英語圏では非常に違和感のある表現になるらしい。

「死んでも死にきれない」なども、同様に違和感を感ずるのだろうか。

Gentooがudevをforkすると発表

[Phoronix] Gentoo Announces Eudev Project -- Its Udev Fork

eudev project announcement

udevとは、Linuxのデバイスマネージャーである。2012年4月に、udevはsystemdの一部となったのだが、Gentooはこれが気にいらなかったらしい。そこで、新しいプロジェクト、eudevを立ち上げ、udevをforkすることにしたそうだ。

なぜudevをforkするのか?

今年の初め、udev upstreamはsystemdに吸収された。udevはしばしば、不必要に最新のLinuxカーネルに依存することによって、古いシステムにおける互換性を壊している。この問題は、udevがsystemdの一部になってから、ひどくなる一方であり、インストール済みの既存のシステムのサポートの障害となっている。systemd開発者は、systemd付きudevの代替機能の提供には無関心である。これは我々にとって問題であり、問題を解決するために、udevをforkすることに決めた。

プロジェクトのライセンスは何か?

我々がforkする段階で、systemd開発者は、GPLからLGPLへの変換作業を進めている。我々はその変換作業の途中でコードを受け継いだが、この点に関して別の道を取る理由はない。そのため、eudevに対する将来の変更はLGPLで提供される。

forkの主目的としては、古いLinuxカーネル(2.6.31まで)における互換性の向上。また、リグレッションの抑制(HEADは常にリリース可能な品質を保つ)。また、systemd-udevがブートパフォーマンスの向上を試みた結果、行儀の悪いドライバーがうまく初期化できないことがある。この状況は好ましくないものの、そのようなドライバーであっても正しくブートできるように、寛容的に振るまうなど。

最近のudevの傾向については、リーナス・トーバルズも、一言宣っている。

LKML: Linus Torvalds: Re: udev breakages - was: Re: Need of an ".async_probe()" type of callback at driver's core - Was: Re: [PATCH] [media] drxk: change it to use request_firmware_nowait()

まあぶっちゃけ、udevのメンテはどうも「クレイジーモード」に入ったようで、問題ありまくりのド低能な変更してる。

モジュール初期化でファームウェアをロードするのは、多くの場合、当たり前のことだ。udevの連中が、そんなのは間違ってると考えているというのは、どうも怖いな。

2012-12-17

マイクロソフトのセキュリティパッチがフォント互換性の問題を引き起こしているそうだ

'We are screwed!' Fonts eat a bullet in Microsoft security patch • The Register

MS12-078: Description of the security update for the Windows OpenType Compact Font Format (CFF) driver: December 11, 2012
Microsoft Security Bulletin MS12-078 - Critical : Vulnerabilities in Windows Kernel-Mode Drivers Could Allow Remote Code Execution (2783534)

Chromiumへのバグ報告に特定のフォントを使おうとするとWindowsがブルースクリーンになるというものがあった。

Issue 146254 - chromium - Security: Windows blue screen and arbitrary code execution with corrupted font file - An open-source browser project to help move the web forward. - Google Project Hosting

調査の結果、これはWindowsのフォントパーサーの問題であり、よってWindowsの問題であることが明らかになった。

Microsoftによるこの問題へのパッチは、既存のいくつかのフォントを使えなくしてしまったらしい。セキュリティは重要だが、既存のフォントが使えなくなるのも問題で、現場では悩ましい問題だそうだ。

メモ代わりにリンクしておく。

2012-12-16

投票

また衆議院選挙だ。

今回は、最高裁判官の国民審査の方に強い関心がある。

というのも、今回は、Winny裁判により、ソフトウェアの提供は著作権侵害の幇助であるとした裁判官、まねきTVやロクラクIIのような、物理的な受信装置を利用者がレンタルした上での、利用者専用のストリーミングも著作権侵害であるという判決を下した裁判官、URLの提供は、URLの参照先の現物提供と同等であるという判決を下した裁判官がいる。

これらの主張と判決は、私の常識と技術の理解から考えると、到底受け入れられない。

諸君は選挙に言っただろうか。まだ間に合う。行け。特に、今回は最高裁判官の国民審査を、よく考えるべきである。

2012-12-14

無罪を証明してみろ

http://www.police.pref.kanagawa.jp/pic2/b0999_01.pdf

Cross-site Scripting脆弱性のある小学校の掲示板に犯罪予告を書き込んだとして、ある学生が逮捕され、

甲さんの保護観察処分が決まった後の10月9日及び10日、本事件の真犯人 を名乗る者が、弁護士や報道機関に告白メールを送信したため、甲さんを誤 認逮捕した可能性が高まり、10月15日、同月17日、同月20日、警察本部少年 捜査課捜査員等が丙さん宅に伺い、御両親等立会いの下、甲さんから事実関 係の再聴取を実施した。

甲さんは、
「上申書は、刑事に言われたのではなく、自分で書いた。」とした上で、犯行を認める供述をした理由等について、
「家族に迷惑をかけてしまうと思った。」、
「『否認をしていたら検察官送致されて、このままだと「院」に入ることになるぞ。証拠がある。』、
『この事件は、院に入るような事件じゃないから。』、
『検察官送致になると裁判になり、大勢が見に来る。実名報道されてしまう。』
と言われた。」、
「ハンドルネームなどは事前に取調べ官に見せられたので、知っていた。説明した理由付けは、自分でとっさに考えた。自分の生い立ちを交えて、動機について書いた。 」、
「横浜市のホームページへの履歴がないと主張したけれど、『履歴は自分で消すことが出来る。』と言われた。」、


『台所にチョコレートケーキがあった。その横にお前がいた。ケーキが無くなった。お前の口の周りにチョコレートが付いている。誰が食ったのか。俺は食ってない。今のお前は、それと同じだ。』
などと言われた。
」、


『自分でやっていないことを、証明してみろ。無罪を証明してみろ。』と言われた。
」、

「自分としては、
『大学に戻るのが遅くなる。実名報道されることで就職のチャンスが無くなるのではないか。』
と思い、自分も院に入らず、早く社会復帰したいと考えて嘘をついた。」、


『2秒間というのはおかしい、調べてほしい。』とも言ったけど、その後、音沙汰はなかった。
」等と説明した。

取調べ可視化ができないわけだ。

Ubuntu 13.04におけるWMとドライバーのパフォーマンスの比較

[Phoronix] Ubuntu 13.04 Desktop Comparison: 6 Desktops, 5 Driver/GPU Combinations

久しぶりに、phronixが大規模なデスクトップの比較をしていたので紹介。

Ubuntu 13.04では、6種類のウインドウマネージャー(Unity, GNOME Shell, GNOME Classic, KDE Plasma, Xfce, LXDE)と、5種類のドライバー(Radeon, Catalyst, Intel, nVidia, Nouveau)をサポートしている。

このうち、Unity, GNOME Shell, KDE Plasmaは、それぞれGPU支援を受けたDesktop Compositorである、Compiz, Mutter, KWinを使っている。

また、RadeonというのはAMD Radeon用の非公式の自由なドライバーのことで、Catalystというのは、AMD Radeon用の公式の不自由なドライバーの名称である。IntelとはSandy Bridge/Ivy Bridge用の公式の自由なドライバーである。nVidiaはnVidia Geforce用の公式の不自由なドライバーで、NouveauはnVidia Geforce用の非公式の自由なドライバーである。

ウインドウマネージャーが、ゲームのパフォーマンスに与える影響は、常に気にされている。そのため、コアなGNU/Linuxゲーマーの中には、XfceやLXDEといった、Desktop Compositorではない古典的なウインドウマネージャーを使うものもいる。

比較に使ったGPUを見ると、AMD RadeonがHD 68000と一世代前のGPUであるのに対し、nVidia GeforceはGTX 680と、現行世代のGPUである。IntelはどうやらIvy Bridgeのようだ。

ベンチマークによる比較を見ると、AMD Radeon以外、特にウインドウマネージャーによる大きなパフォーマンスの影響はないように思われる。AMD Radeonでは、公式非公式ドライバー両方ともウインドウマネージャーによるパフォーマンスのばらつきが大きく、さらにDoom 3が動かなかったりと、なにかドライバー側に問題があるように思われる。

IntelのGPUとドライバーでは、ウインドウマネージャーによるパフォーマンスへの影響は見られないものの、やはりGPU自体が非力で、ゲームには向いていない。

nVidiaの公式バイナリブロブが、ウインドウマネージャーによる影響をほとんど見せていないのは面白い。ドライバー、ウインドウマネージャーともに、だいぶ改良されたのか。

NouveauはNouveauだ。Nouveauのパフォーマンスが、公式の不自由なドライバーに比べて極端に低いのは、GPUをリクロッキングできないからだ。GPUが状況に合わせてリクロッキングを行う以前(GeForce 8800あたりまで)は、Nouveauも健闘していたのだが、リクロッキングできない今、起動時のBIOSによるクロック設定のままで、したがってパフォーマンスが低い。

しかも、GTX 680ということは、たしか現状では、一度公式のバイナリブロブを読み込ませて、ファームウェアをダンプしなければならないはずだ。まだ一般人が簡単に使える段階ではない。

遺憾ながら、よく世間では、「GNU/Linux用のまともなGPUとドライバーはnVidiaだ」と言われる通りの結果になっている。まことに残念ながら、GNU/Linuxで最新のOpenGL準拠と十分なパフォーマンスを求めるならば、nVidiaのGPUと不自由なプロプライエタリドライバーを使わなければならない。

それにしても、KDEのKWinが、ほとんどのベンチマークで、わずかに他のウインドウマネージャーに比べてパフォーマンスで劣っているのは、ウインドウマネージャー側にも改善の余地があるのではないだろうか。

GCCもi386のサポート終了を議論

[Phoronix] GCC Developers Look At Dropping i386 Support
Steven Bosscher - Deprecate i386 for GCC 4.8?

昨日のこと、Linuxカーネルは386対応を廃止した。386対応をやめることで、コードを簡略化することができ、メンテナンスのコストも下がる。

Linuxカーネルの386対応廃止が知られてすぐ、GCCのML上で、GCCでもそろそろi386の対応を廃止するべきではないかという議論が始まっている。

その議論の発起人であるSteven Bosscherによると、

PROCESSOR_I386 / TARGET_386 を廃止できる。

X86_TUNE_DOUBLE_WITH_ADD を廃止できる。

X86_ARCH_CMPXCHG/X86_ARCH_XADD/X86_ARCH_BSWAP を廃止できる。

ix86系列で、lock-free atomic intに対応していない唯一の対象がなくなる。これにより、ライブラリを少しクリーンアップできるかも?

2012-12-13

Zswap: Linuxカーネルに圧縮付き仮想swap機能のパッチが提出される

[Phoronix] Zswap: Compressed Swap Caching For Linux
Linux-Kernel Archive: [PATCH 0/8] zswap: compressed swap caching

Linuxカーネルに、圧縮付き仮想swap機能のパッチが提出されたそうだ。

これは、まさにスワップされんとするページを、実際にスワップする代わりに、別に動的確保したメモリ上のページに圧縮して書き込むものらしい。

これにより、スワップが実際に遅いストレージに書き出されることを遅延、あるいは完全に回避することを狙っている。

HDDの場合は、遅い読み書きを遅延、あるいは回避することによりパフォーマンス向上が狙える。SSDの場合は、書き込みを回避できる場合もあるので、書き込み回数の削減により寿命を伸ばすことができる。

なお、この機能はzcacheと混同してはならない。zcacheは、スワップファイル自体を圧縮する機能であり、zswapとは独立して存在する。zswapはzcacheと併用できる。これは、UNIXの思想である、ひとつのことにのみ注力するということの体現である。

Google、ポルノが見つかりにくいように画像検索アルゴリズムを変更

Google tweaks image search to make porn harder to find | Internet & Media - CNET News

Googleは画像検索のアルゴリズムを変更し、ポルノが見つかりにくいようにしたそうだ。

Googleの発表によれば、これは検閲ではなく、ポルノを求めていないと推定される検索クエリ―に対しては、ポルノ以外のものが見つかるようにし、よってユーザーが本当に求めている検索結果に近づけるとしている。もし、クエリーがポルノを求めていると推定される場合には、ポルノが多く表示されることは、従来と変わらないとしている。

そういうわけで、試しに画像検索してみた。以前、髪の色は、具体的にどのような色なのか調べるため、"brond"とか、"brunette"とか、"red hair"などのクエリーで画像検索したところ、ほとんどがポルノであった。これは、私が常日頃からSafe SearchをOffにしていることもあるのだろう。一応、髪の色を調べるという目的は達成できたわけだが、その時はポルノを求めていたわけではない。

さて、今日再び試してみることにしよう。ある画像がポルノであるかどうかは難しい問題である。女性差別の激しい後進国であるイスラム圏では、顔をあらわにしている女の画像はポルノであるとするかもしれない。ここでは、私の価値基準でポルノかどうかを判断する。

今、試してみると、"brond"では、個人的な評価ではポルノであると思われる画像がほとんど表示されなかった、"red hair"でも、だいぶ後の画像まで、ポルノであると思われる画像は表示されなかった。

"brunette"では、ポルノであると思われる画像が、初めから多数表示された。

したがって、Google神によれば、ブロンドとレッドヘアというクエリーは、ポルノを期待してはいないが、ブルネットというクエリーはポルノを期待していると判断しているのだろう。私は厳格なパスタファリアンなので、Google神は信じないが、Google神の結果は常に真実であると信じる異教徒達は、この結果を重くおしいただくべきであろう。

追記:ブロンドのスペルを間違えるという恥ずかしい失敗を犯してしまった。ブロンドには、二種類のスペルがあり、(男性の)ブロンドのスペルは"blond"で、(女性の)ブロンドのスペルは"blonde"だ。

ちなみに、正しいスペルの"blond"および"blonde"で検索すると、私の基準でポルノであると思われる画像が多数表示された。また、男性用である"blond"でも、Did you mean: "blonde"と表示された。

このことから、Google神の信者は、男性用ブロンドは、女性用ブロンドを意味する可能性が高く、またどちらのブロンドもポルノを期待しているクエリーであると解釈すべきである。

なお、ボビー・ヘンダーソンの預言によれば、パスタファリアンの天国にもストリッパー工場があるとされているが、ホモの信者の場合、男性ストリッパーになるが、ホモではない男性信者の場合、同男性ストリッパー見えなくなるとされている。このことから思うに、ポルノを嫌う人間には、ストリッパーの存在は見えなくなるのであろう。天国では、極めて優れた文脈推定のアルゴリズムが発明されているというべきである。

Linuxが386DX/SXのサポートを廃止、リーナス曰く"Good riddance"

git.kernel.org - linux/kernel/git/torvalds/linux.git/commit

Pull "Nuke 386-DX/SX support" from Ingo Molnar:
 "This tree removes ancient-386-CPUs support and thus zaps quite a bit
  of complexity:

    24 files changed, 56 insertions(+), 425 deletions(-)

  ... which complexity has plagued us with extra work whenever we wanted
  to change SMP primitives, for years.

  Unfortunately there's a nostalgic cost: your old original 386 DX33
  system from early 1991 won't be able to boot modern Linux kernels
  anymore.  Sniff."

I'm not sentimental.  Good riddance.

Ingo Malnarの"386-DX/SXのサポートを廃止"をpull

このツリーは大昔の386系列CPUのサポートを取り除くことにより、だいぶ簡略化する

24個のファイル変更, 56件の挿入, 425件の削除

これにより、長年、SMP部分の変更に余計な手間がかかっていたことから、ようやく免除される。

残念ながら、名残惜しいコストが発生する。昔懐かしい1991年の386 DX22システムは、もはやモダンなLinuxカーネルをブートできなくなる。ああ、哀れ。

俺はそんなに感傷的にはならんな。Good riddance(なくなってせいせいしたぜ)。

Ingo Malnarがおどけて感傷的なコメントをしているのに対し、リーナスは、"Good riddance"と乱暴だ。

Good riddanceは、個人的に昔からかなり気に入っている言葉だ。

ちなみに、このpullを待たずとも、誰もモダンなLinuxカーネルを、386で使いたいとは思わないだろう。実際、本気で386を使いたい場合、2.4あたりまでが限界なんだとか。それに、たとえカーネルが動いたとしても、最近のGNUは386では動かない。

ちなみに、386のサポート廃止は、かなり感傷的になる。なぜならば、Linuxカーネルはもともと、386向けに書かれたからだ。

2012-12-12

特許法の認可にあたって29条がまったく考慮されていないと思う

ある邪悪なデジタル制限管理機能付きのコンピューターであるDSで動くサッカーゲームが、別のサッカーゲームの開発元である落ち目のSEGAから、特許侵害で訴えられたそうだ。

問題となる特許はこれだ。

画像処理装置およびその方法

さて、特許申請以前に同じ発明が公開されていたかという問題もあるが、そもそも、この特許は普通の人間が普通に既存の技術や知識だけで発明できる、純粋なアルゴリズムではないか?

特許法の29条にある

2 特許出願前にその発明の属する技術の分野における通常の知識を有する者が前項各号に掲げる発明に基いて容易に発明をすることができたときは、その発明については、同項の規定にかかわらず、特許を受けることができない。

これがなぜ考慮されなかったのか。

マウスのボタンやボールや光学式のトラッキングという入力装置によって発生させる、単数の入力、複数の素早い入力、ドラッグという概念は、20年以上前に存在した。タッチパネルも20年以上前に存在した。タッチパネルは、マウス入力を発生させる入力装置として使われていた。すなわち、マウス操作に言えることはタッチパネルにも言える。

これは単に存在しただけではない。マウスやタッチパネルという入力装置、そしてそれらの入力装置によって発生されるシングル、ダブル、またそれ以上の複数回の入力、ドラッグは、単に個別にプログラムで処理されていたわけではない。そのような入力の判定は、OSとか共通のライブラリが、行なっていて、すべてのプログラムに提供されていた。

すなわち、「特許出願前にその発明の属する技術の分野における通常の知識を有する者が前項各号に掲げる発明に基いて容易に発明をすることができた」はずである。

ヘルプアイコン特許の先例から、私は一生パナソニックをボイコットすると決めている。SEGAもボイコットする。

もっとも、このような特許ゴロに成り下がるということは、そろそろ存在自体が危うい段階である。もうどうしようもないから、なんとか小手先の小金を集めようと必死に方法を探した結果、このような愚挙にでるのだ。そもそも、その特許はゴミでありクズであり無価値であり、本来認められるべき特許ではなかったのにも関わらず、その判断のできる人間がいないために、その愚かさに気がつかずに特攻して爆死するのだ。特許裁判では、しばし一行もコードを書いたことのない、そもそもプログラミングをどのように行うのか全くわからない人間同士が主張や証明をしあい、裁定もプログラミングを理解しない者により行われる。そもそも、特許という仕組みは根本的に破綻しており、また汎用コンピューターにおけるソフトウェア特許が認められるなどということは、その発想からして間違っている。パナソニックやSEGAは早晩崩壊するだろう。

何が言いたいかというと、特許裁判よりも研究にあけくれたニコラ・ガッデム・テスラは天才で、ヤクザを雇って映画館に放火したトーマス・ドッシュ・エジソンはアホの極みのそのまた極みの極悪人だということだ。

Linuxが真のCPUホットプラグに対応する日

[Phoronix] Linux Works Towards True CPU Hotplug Support

Linuxは今、「真のCPUホットプラグ」に対応すべく開発が進んでいる。

しかしすでに、LinuxはCPUホットプラグに対応している。真のCPUホットプラグとは一体何か。

現在の実装では、ブート時の最初のプロセッサーだけは、ホットプラグに対応できないのだ。

最初のプロセッサーを含む任意のプロセッサーのオフライン、オンラインを自在にこなせるようにするための改良が勧められている。その大きな前進となる、x86用の真のホットプラグ対応パッチが提出され、もっかpull request中だそうだ。

2012-12-11

Ubuntu 13.04ではDash内から買い物ができるようになるそうだ

Ubuntu 13.04 To Allow Purchases From the Dash

Ubuntu 13.04では、スパイウェア機能をさらに推し進めることにしたそうだ。

Dashは極めて邪悪な機能である。Unityでは、Dashはローカルとリモートの区別をしていない。これは極めて危険である。

ローカルのファイルやアプリケーションを検索しようと入力した検索クエリーが、Canonicalにだだ漏れで、しかもさらにAmazonに漏れる。例えば、ローカルファイルである「酔っ払った時に書いたポエム.txt」を検索しようとして、何か入力したならば、そのクエリーが漏れることになる。そのような存在自体を明かしたくないファイル名がリークしてしまうのだ。

これをスパイウェアと言わずしてなんという。Ubuntuでは、ファイルとアプリケーション以外のレンズをすべてapt-get removeするべきである。

sudo apt-get remove unity-lens-video unity-scope-video-remote unity-lens-shopping unity-lens-music unity-lens-photos unity-lens-radios unity-lens-gwibber

WindowsといいMac OS XといいUbuntuといい、デフォルトで広告を出すというのはいかがなものか。広告がどうこうというのではない。広告が禁じられている場合、デフォルトインストールの状態では使えないということが問題なのだ。例えば、国家政府による支援を受けた団体では、許可を得ずして特定の民間団体企業を宣伝することが法律で禁じられているかもしれない。そのような法律がある国の団体は、OSをデフォルトインストール状態で使うことができない。

KMSCONがだいぶ実用的になってきたようだ

KMSCON Introduction « Ponyhof

KMSCONとは、Linuxカーネルの新しい機能である、DRM(Direct Rendering Manager)のKMS(Kernel Mode Setting)を使い、仮想ターミナルを実現するものである。いわば、新しいfbconとも言える。

pango-font-renderersを使えば、Unicode描画にも対応。ターミナルは、XTerm互換。X11のコードとは独立してX11 keyboard specificationを部分的に実装したlibxkbcommonライブラリを使っており、キーボードレイアウトの変更にも対応。

ただし、まだまだ実験的な段階であるという。

2012-12-10

新しい発想の終末予想、EMP

世の中は、終末予想であふれている。ノストラダムスの予言であるとか、CERNが極小のブラックホールを生成し世界が終わるであるとか、マヤのカレンダーがこれ以上作られていないすなわち世界はそこで終わる、であるとかだ。

まったく、世の中には実に、単なる詩集を拡大解釈し、ホーキング放射に反対意見を持ち、古人のカレンダーの作成を気にする人間の多いことよ。

もちろん、世の中には、起こりえる終末予想もある。巨大隕石の落下や、火山の噴火、全面核戦争、生物兵器などだ。

ところで、私も以前から考えていた終末予想がある。 全面核戦争の失敗によるEMP(電磁パルス)だ。

核爆弾は、強力なEMPを発生させる。このEMPは、上空で発生した方が、広範囲に影響する。これには先例がある。ソ連によるKプロジェクトだ。

The K Project - Wikipedia, the free encyclopedia

ソ連のKプロジェクトは、1961年から1962年にかけて行われた核爆弾を高高度で起爆する実験である。

その結果引き起こされた被害は、冷戦が終わったあと、当時の科学者によって、非公式に西側に伝えられた。570kmの範囲に渡り、電話が使えなくなったそうだ。何でも、電話線に使われていた、ガス封入の過剰電圧防止装置が吹っ飛んでしまったそうだ。

もし、全面核戦争になり、何らかの理由で、発射された核弾頭が、間違って遥か上空で爆発した場合、とても広い範囲に強力なEMPがかかり、多くの電子機器が故障するのではないか。

そしてHDDや磁気テープですら影響を受け、今の世の中のデータの多くが失われるのではないか。

ああ、失敗しなければ半径百km程度の損壊ですんだのに、失敗したために地表からあらゆる電子機器とデータが一掃されてしまった。

混乱の中で、知識を失った人類の文明は衰退していく。人類は旧時代の情報を得て再び復興しようと、EMPを逃れた情報を求めて発掘作業を行う。たまたま残った、地下壕や電磁波対策のされた廃墟の中などに残っていたHDDや磁気テープ、あるいは光学ディスクなどが、かけがえのない資源として扱われるのではないか。

そのようなポストアポカリプスの世界では、必然的に宗教が起こるだろう。ファラデーが守り神として崇拝されているかもしれない。ニコラ・ガッデム・テスラも神だ。トーマス・ドッシュ・エディソンは悪魔だ。EMPによってもたらされたアポカリプスだから、エンポカリプスと呼んではどうか。

自由なソフトウェアはどうか。たまたま、ソースコードを印刷していたために、グレートEMPを逃れた自由なソフトウェアがあるかもしれない。自由なソフトウェアこそ最も大EMPを逃れられる媒体に記録されている可能性が高い。自由なソフトウェアの信奉者は選ばれた民であり、大EMP後もプログラミングを続けられるのだ。自由なソフトウェアをもとに宗教ができあがるかもしれない。Emacs教会やViカルトが現実になるのだ。

そして、最高のエディタは何か? 我々が崇拝すべきなのはRMSか? Bill Joyか? いやまて、Emacs教会の一派によれば、崇拝すべきなのは創造主ではなくエディターだと聖イグヌシアスがのたまわれた。いや、ソースコードだ。「ハッカーにはfoobarミツワーなる神聖なる儀式あり。その次第、神聖なるシステムのソースコードを読経するものなり」とのたまえり。聖イグヌシアスは、「幸いにして神はなし。神の代わりに、我らはエディターを崇拝す」とのたまわれた。ところで、聖イグヌシアスは、「GNU以外にシステムはなく、Linuxはそのカーネルのひとつである」とのたもうたが、これはどういう意味だ。GNUは結局、実用的なカーネルを完成させられなかったではないか。ブラザー、足下は未だHurdを聞かずや、惜しいかな、異教徒の不自由ソフトウェア信奉者の陰謀により、大EMPによりて失われたり。ブラザー、Hurdとか称するものありとそれがし聞けど、所詮はMachカーネルから派生したに過ぎじ、その源流のMachカーネルこそ神聖なるカーネルなり。まてしばし、ブラザー、Machカーネルが神聖だとするならば、古代のMac OS Xは神聖なOSなりや。いや、明らかに聖イグヌシアスはこれを邪悪とす。などと喧々諤々の宗教論争が繰り広げられるに違いない。

ということを、冬の熱い風呂でのぼせながら考えていた。のぼせた頭で考えていた時は、素晴らしいネタであり、これをもとにポストアポカリプス小説をかけば大いにウケるであろうと確信していたが、いま文章に起こしてみると、支離滅裂でひどい。

米国版スーパーファミコンの完全なコレクションがオークションに出された

もし、世界一のスーパーファミコンのオタクを挙げるとすれば、byuuである。

byuuはスーパーファミコンのソフトの保存活動をしている。すべての認可を受けて販売されたスーパーファミコン用の商用ソフトを、箱と取扱説明書も含めて収集し、保存活動をしている。保存というのは、単に物理媒体を保管するだけではない。箱と取扱説明書をスキャンし、ROMイメージをダンプし、保管するのだ。著作権が切れるその日まで。

また、byuuは、ソフトごとのハックなしに、スーパーファミコンの実機とサイクル一致ですべての商用ソフトを実行できる、現在のところ世界一精度の高いスーパーファミコンのエミュレーターである、bsnesを開発した。

このbsnesの開発というのも、確か昔読んだ話によれば、かなり理想主義の事情がある。

スーパーファミコン版ドラゴンクエスト5は、海外にはローカライズされなかった。一般に、当時、日本の任天堂がゲーム業界を支配していた頃、日本はゲームの天国であった。多くの良ゲーは、海外では販売されなかったし、またかろうじて販売されたソフトも、翻訳の質がひどかた。今、日本はゲーム業界で死んでおり、良ゲーは外国産のみになってしまったので、その当時のアメリカ人の苦悩を、今日本人が実感できるわけだが、それはさておき。

昔、byuuはドラゴンクエスト5の非公式英語翻訳をしていたが、エミュレーターでは動作する改変が、実機に持って行くと正しく動作しない。これは、エミュレーターが実機を正しくエミュレートできていないためである。byuuはエミュレーターを改良し、パッチを投下したが、そのパッチが受け入れられることはなかった。何故ならば、そのパッチを取り入れ、実機の再現性を高めた結果、従来の多くの非公式翻訳が動作しなくなってしまうからだ。

「それはおかしい」とbyuuは考える。実機を正しく再現できてこそエミュレーターであり、実機で動かないプログラムには、何の価値もない。

そのため、byuuは最も精度の高いスーパーファミコンのエミュレーターを開発することになる。そのbyuuのエミュレーターは、今や、すべてのスーパーファミコン用の商用ソフトをソフトごとのハックなしに実機とサイクル一致で実行できる質に達した。

ハードウェアを完全に正しくエミュレートするというbyuuの理想は、そのエミュレーターにあらわれている。通常、スーパーファミコンのような、アナログ信号を出力するハードウェアをエミュレートするには、パフォーマンス上の都合から、スキャンライン一本をまとめて処理するのが一般的である。ところが、byuuによれば、本当のスーパーファミコン実機の挙動は、そうではないという。本当のスーパーファミコン実機は、ピクセルごとに独立してリアルタイムで処理している。ところが、そのような実装にすると、パフォーマンスが著しく悪くなる。なぜならば、スキャンラインベースの実装ならば、秒間あたり15.75khz程度の更新なのだが、本当のクロックベースにすると、10.75mhzほどになるという。しかし、一秒間に一千万回の更新を大真面目にソフトウェアで実装すると、コンテキストスイッチだけで相当のパフォーマンス劣化を引き起こしてしまう。そのため、パフォーマンス重視の設定ではスキャンライン実装を使い、精度重視の設定では本当のクロックベースのクソ遅いがクソ真面目な実装を使うのだそうだ。

The State of Emulation, pt. II

そのbyuuが、アメリカで発売されたスーパーファミコン用ソフトの完全なコレクションをオークションにかけるという。

For Sale: Complete US SNES Collection : gamecollecting
Complete US Super Nintendo SNES Collection with All Boxes and Most Manuals | eBay

すべてのソフトに箱がついていて、85%は取扱説明書もついている。また、すべてのソフトウェアは、プロフェッショナルにクリーニングされ、動作確認も行われているそうだ。

掛け値は24,999ドルから開始すると宣言している。

一体、何がそこまで人を駆り立てるのか。オタクの考えることは分からない。

2012年も鬼を笑わせる

毎年、私は鬼を笑わせるため、未来の予想をする。今年も12月、未来を予想してみよう。

まず、もう、これ以上、現行のCPUの純粋な性能は大幅に上がらない。汎用ではなく特殊な用途や、あるいは並列処理などは、もう少し性能向上の余地はあるだろうが、それも小幅な性能向上にとどまる。

回路の集積度は、もう少しだけ上がる余地がある。

おそらく、将来は省電力や、SoCと呼ばれるひとつのチップにやたらに詰め込む方向に進むだろう。自作PCといったところで、選択肢はマザーボードの載っている外部端子の種類と数、PCケース程度になってしまい、APUはみな同じものを使っているかもしれない。

ソフトウェアは、完全に、自由なソフトウェア市場と不自由なソフトウェア市場に別れる。不自由なソフトウェア陣営であるWindowsやMac OS Xといった環境では、ひとつのOSがひとつのアーキテクチャで動き、ひとつのソフトウェア流通システムを強いられることになる。もはや選択の自由はない。

このような不自由な環境では、プログラミングすら不自由になる。WindowsやMac OS Xでは、MicrosoftやAppleの許可を得ずして、利用者に任意のプログラミングを可能にさせるソフトウェア、すなわちコンパイラーやインタプリタ―の類を公開することは不可能になるだろう。なぜならば、プログラムを流通させる唯一の方法は、公式の流通システムであるApp StoreやWindows Storeだけになるからだ。これ以外の流通経路を経て入手したソフトウェアは、実行できないようになる。そして、この流通システムは、プログラム可能なソフトウェアの流通を明示的に禁ずるのだ。

これは、ハードウェアレベルで保証される。すなわち、UEFIのような仕組みが、ユーザーランドにまで及ぶのだ。今は、カーネルに属する部分、すなわちブートローダーやカーネルやカーネルドライバーのみを認証しているが、じきに、ハードウェアレベルで、実行されるあらゆるコードは、ある秘密鍵で署名による認証を必要とするだろう。その秘密鍵は、企業や国家が管理し、プログラムに署名を受けるには企業や国家の事前の検閲を受ける必要があるのだ。

したがって、今年が、自由なハードウェアを入手できる最後の年になるかもしれないのだ。

私は、何も空想を語っているのではない。すでに、現実に起きていることを書いているに過ぎない。

たとえば、邪悪な企業であるAppleの提供するソフトウェア流通システムであるApp Storeは、事前の検閲を行なっている。また、プログラム可能なソフトウェアは明示的に禁止している。

たとえば、ゲーム専用機という制限された汎用コンピューター、ハードウェアレベルでコードの認証を行なっている。SonyやMicrosoftや任天堂が管理する秘密鍵で署名されたコードでなければ、実行できないようになっているのだ。

したがって、WindowsやMac OS Xのような不自由なOSを使ってはならないし、また、ゲーム専用機のような不自由なハードウェアを使ってはならない。

さもなくば、将来、我々がプログラミングというとき、それは不自由なソフトウェアの脆弱性をついて、任意のストレージ上のデータの改変を行った上で、実行するということになる。たとえば、以下のような行為だ。

この動画では、ポケットモンスターのイエロー版の脆弱性を利用し、メモリを利用者の任意の値で書き換えることにより、自由にプログラミングをしている。

恐れよ。今脅威を自覚しなければ、我々のプログラミング環境は、ここまで落ちてしまうのだ。

我々が、「制限されたiPhoneやAndroidをjailbreakする」というとき、何をしているかというと、このような脆弱性を利用して管理者権限を取得しているのだ。すなわち、jailbreakされたスマートフォンというのは、脆弱性を放置しているコンピューターということになる。コンピューターは、所有者の支配下になければならないはずなのに、多くの制限されたスマートフォンは、所有者に支配力を与えない。これは人道上の罪である。

将来は、「所有」という概念すらなくなるであろう。

従来、我々が物理的な物を正規の方法で譲渡された場合、その物をどうしようと、我々の自由であった。他人に売ろうが、燃やそうが、誰も止めるものはいなかったのだ。もちろん、有害物質を含む物については、法律によって処分方法が定められており、勝手に燃やすと処罰を受けるかもしれない。しかし、燃やすという行為を直接的に止める方法はなかった。これまでは。

しかし、デジタル化といい、電子化といい、物理的媒体に束縛されない情報の媒体が発明された今日では、所有という概念を消したがっている邪悪な勢力が存在する。彼らは言う。

お前は所有していない。お前は「利用する権利」を与えられたに過ぎない。その権利は、我々の一方的な都合で破棄できるものと心得よ。また、権利は、「どのように利用するか」という制限も含む。我々が許可しない方法で利用するのは犯罪である。

制限されたコンピューターは、真に所有しているのではない。自分の支配下においているのでもない。「制限的に利用する権利」は、所有ではないし、支配もしていない。

そのような未来では、ハードウェアも、ソフトウェアも、所有できないし、支配下におくこともできない。

その時、自由に価値を見出す人間は、無産のヤミ市(これは自由市場と呼ばれ、党員は利用してはならぬ犯罪市場である)で、数十年前に製造されたコンピューターを購入し、ひそかに日記をつけはじめる。

我々はコンピューターをテレスクリーンと呼び、入力装置をスピークライトと呼んでいるだろう。チョコレートは配給制になる。チョコの配給量は、昨日30gだったが、今日はなんと、党の寛大な処置により25gに増えたのだ。昨日30gだと言及しているあらゆる情報は遠隔操作で破棄される。

嗜好品を入手することは不可能になる。我々は代用コーヒーと代用砂糖で我慢しなければならなくなる。

これは、何も妄想ではない。現に今、我々は代用ビールを飲んでいるではないか。

2012-12-09

Mac OS XのバイナリをGNU/Linuxで実行するソフトウェア

[Phoronix] A New Project To Run Mac OS X Binaries On Linux

Mac OS X用のバイナリをGNU/Linuxで実行するソフトウェアが開発されているらしい。その名をDarlingという。

Darling - The Darling Project

名前についてだが、Mac OS XのカーネルであるDarwin用のソフトウェアを実行するので、Darlingという名前らしい。

Darlingは、Windows用のバイナリをGNU/Linuxで実行するソフトウェアであるWineと同じ仕組みで、Mac OS X用のバイナリを実行する。

すなわち、バイナリを読み込んでLinuxカーネル用に適切にメモリ上にマップし、Mac OS Xが提供しているAPIとABI互換の実装を用意し、バイナリ互換を実現するものである。Mac OS XのObjective-CライブラリであるCocoaの、自由なソフトウェア実装である、GNUstepを使っているそうだ。

iOSのバイナリ互換は、今のところ目指していない。というのも、iOSはARMだからだ。

まだ時期尚早であり、今のところ、一部のコンソールプログラムを実行できる程度にとどまっているようだ。

Wineといい、Darlingといい、このような互換レイヤーは、本来必要がないのだ。というのも、我々は自由なソフトウェアのみを実行すべきであり、ほとんどのソフトウェアが不自由であるWindowsやMac OS X用の互換レイヤーは、不自由なソフトウェアの実行を容易にしてしまう。

しかし、長期的に考えると、ソフトウェア保存という点で、やはり存在していたほうがいいともいえる。というのは、不自由なソフトウェアである現行のWindowsやMac OS Xは、30年後には存在していないであろうし、現行の不自由なソフトウェアは、存在自体が人道上の罪であるとはいえ、やはり貴重な文化的財産として、等しく保存されるべきものである。ソフトウェアを保存するためには、実行環境も保存しなければならない。

実行環境の保存には、二つの方法がある。ひとつには、実行環境のOSを保存し、OSの実行は、ハードウェアのエミュレーター上で行うというものだ。もうひとつには、OSの互換ソフトウェアを作るという事だ。

GNU+Linux+Wineは、ReactOSのようなWindows互換OSではない。しかし、私はReactOSよりは、よほど現実的な実行環境の保存方法であると思う。

将来に残るものを考えよう。保存できる可能性の高いものは、有名で誰でも入手できるものだけである。Windowsのバイナリは、邪悪なEULAに同意しなければならず、しかもライセンスであり、我々は所有の権利を持たないので、我々は入手してはならないし、また入手できないというべきである。さらに、Windowsのソースコードに至っては、国家、教育機関、大企業などが、研究のためにNDAを結んで始めて閲覧できる程度だ。容易に入手できないものは、保存される可能性が低い。したがって、Windowsはバイナリ、ソースコードともども残らない。

さて、ReactOSは自由なソフトウェアであるが、有名ではない。GNU+Linux+Wineは、有名だ。したがって、GNU+Linux+Wineの方が、将来保存される可能性が高い。また、GCCも将来残る可能性が高い。したがって、将来もGNU+Linux+Wineのソースコードから、x86/x64用のバイナリを生成することができるだろう。

たとえ将来x86アーキテクチャが滅んだとしても、有名で自由な実装で、移植性の高いx86エミュレーターがある。そして、GNU+Linux+Wineもx86/x64用のバイナリを生成できるソースコードが残る。

これをもってこれをみれば、Windows用の不自由なバイナリを保存するためには、バイナリと、GNU+Linux+Wineと、GCCと、自由なソフトウェアのx86エミュレーターを一緒に保存しなければならない。

ただし、そこまでして保存する価値のあるソフトウェアは少ないし、ましてや最近のソフトウェアは、邪悪なDRMを用いて、保存を拒否している。

DRM(デジタル制限管理)は、利用者を制限し、保存を制限する人道上の罪である。もし我々の祖先が、石器や土器にDRMをかけ、数百年後に必ず砕け散るように設計していたとしたならば、今の考古学は発達しなかったであろうし、粘土板、パピルス、木簡、竹簡、羊皮紙、絹、紙などにDRMをかけ、保存できないようにし、また許可無く読めないようにしていたならば、我々は歴史というものを持たなかったであろう。

また、大量の書物を焼却したという点で、カエサル、キリスト教徒、秦の始皇帝は極悪人であり、たまたま法を犯してアレキサンドリア図書館から違法に書物を持ち出し、また書物を壁に塗りこめて焚書を逃れしめた者は、歌われぬ英雄として、現代人に多大な恩恵をもたらした正義の徒である。

歴史をみれば明らかなように、DRMのかかった非人道的なソフトウェアは、ほとんど残らないだろう。数百年後を考える。かろうじて消失を逃れたわずかなソフトウェアのうち、たまたま実行環境も保存されていて動くものだけが、歴史家によって研究されている。法を犯し、DRMを破り、ソフトウェアを保存した当時の犯罪者は、英雄として静かに尊敬されているだろう。

Ubuntu、zRAMの利用を検討中

[Phoronix] Ubuntu Linux Considers Greater Usage Of zRAM

Ubuntuの開発者がzRAMの利用を検討しているという。

zRAMとは、Linuxカーネルのモジュールのひとつで、以前はcompcacheと呼ばれていた。RAM上のブロックデバイスを圧縮することで、メモリ使用量の削減を行う機能である。Linux 3.8でやっとstagingを抜けだしたばかりの真新しい機能だ。

対象は、スマートフォンなどの一部のARM用イメージだそうだ。最近流行しているスマートフォンはメモリ搭載量が少ないので、使いたいらしい。

2012-12-08

GameSpyのサーバーが落とされる

GameSpy's New Owners Begin Disabling Multiplayer Without Warning - Slashdot

IGNからGameSpyを買い取ったGLU mobileが、GameSpyのサーバーを停止したそうだ。

GameSpyとは、ゲームにおける通信のためのライブラリや、その中継のためのサーバーを提供していた会社である。一時期、多くのオンラインにより対戦やcoopのできるゲームが、GameSpyのライブラリとサーバーを使っていた。

今回のサーバー停止に伴い、GameSpyに依存する多くの昔のゲームのネットワーク対戦機能が動かなくなってしまった。部分的に動くゲームは、直接IPアドレスを指定できるゲームや、GemeSpy以外の方法でも通信機能を提供していたゲームである。

Sniper Eliteの開発元であるRebellionの発表によれば、「今回のサーバー停止は事前の協議なく一方的に行われた。さらに、サーバーの維持を交渉したところ、年間何万ポンドも払う必要があると告げられた。これは従来の料金を大幅に上回る額である」とのこと。

修正しようにも、既存のゲームのコードはGameSpyのライブラリと密接に依存しており、容易ではない。

もはやGameSpyは過去のものであり、新規のゲームでは誰も使っていないレガシーなシステムである。不自由なソフトウェアによる他社に所有されたサービスは、その利益がなくなった時点で停止される。

これは、不自由な、自分で所有できないソフトウェアに依存した当然の報いである。当然、予期しておくべきだった事態だ。

今、SteamやOriginやUplayのようなサービスに依存している不自由なゲームも、いずれ同じ運命をたどるだろう。そのようなゲームで遊ぶべきではない。将来にわたって動作する保証は、ソフトウェアが自由であり、かつ、利用者がソフトウェアを所有できる場合だけだ。不自由なソフトウェアで、しかも所有もできないようなものは、驚くほど早く、環境の変化により動かなくなってしまうのだ。

ちなみに、ゲームの中には、2006年に発売されたものもある。たったの6年前のゲームだ。驚くほど早くというのは、本当に驚くほど早いのだ。

RMS曰く、Ubuntuはスパイウェアをインストールしている

Ubuntu Spyware: What to Do? — Free Software Foundation — working together for free software

今頃? という感じがするが、RMSがUbuntuのunity-lens-shoppingに気がついたらしい。

Ubuntu 12.10で潜り込ませたunity-lens-shoppingというパッケージは、悪意あるソフトウェアである。Dashの検索クエリーをCanonicalに送信し、さらにCanonicalはAmazonに送信する。これにより、"秘密の計画.txt"とか、"ナッジナッジウインウイングリングリンセイノモア.mkv"などといったローカル上のファイルを検索するクエリーをリークするものである。

さらに、このような監視機能は、悪意ある政府や企業の関心を集める。そこにプライバシーに関する情報があるのならば、欲しがるものだ。

たとえば、政府は、あるユーザーがテロリストであるかどうかを調べるために、検索クエリーを要求するだろう。その上で、"爆弾"とか"ハイジャック"とか、"素手で人を殺す方法"などという検索クエリーを漏らしたユーザーは、テロリストの容疑者だとみなすだろう。このような検索クエリーを使ったからと行って、テロリストである証拠にはならない。しかし、政府は推定有罪の原則に基づき、検索クエリーを要求するだろう。「やましいことがなければ、なぜ隠すのだね?」

近年、邪悪な企業が、違法コピーは犯罪であるというロビー活動を行なっている。近年、そのような企業は、例えば特徴的な検索クエリー(辞書にも載っている一般的な単語、あるいは単なる数字)がある場合、違法にコピーされたファイルを有しているとの容疑をかけ、推定有罪の原則により、「訴えられたくなければミカジメ料を払え」と脅している。そして、推定有罪の原則に基づき、検索クエリーを要求するだろう。「やましいことがなければ、なぜ隠すのだね?」

Ubuntuの利用者で、Dashをローカル上のファイルとアプリケーションの検索のみに使いたいと思う者は、以下の行を実行すべし。

sudo apt-get remove unity-lens-video unity-scope-video-remote unity-lens-shopping unity-lens-music unity-lens-photos unity-lens-radios unity-lens-gwibber

そして、Canonicalが今後も邪悪な考えを改めない場合は、別のディストロに移行することも考えるべきである。

2012-12-06

ITUのインターネット監視規格の草案がリークされる

Leaked: ITU's secret Internet surveillance standard discussion draft - Boing Boing

DPI(Deep Packet Inspection)てんこもりの極めて邪悪な草案である。

驚くのは遅すぎる。すでに、世界は全体主義に向かっているのだ。昔と違い、もはや隣人の行動をお互いに密告させる必要はないのだ。あらゆる通信は傍受される。汎用コンピューターの所有は禁じられる。これからの一般党員とプローレ向けのコンピューターは、スパイウェアの導入が義務になるだろう。

核心党員のみが、監視検閲されていないコンピューターの所有を許されるのだ。

Imagination、MetaをLinuxカーネルでサポートするためのパッチを提出

[Phoronix] Imagination Publishes 28k Lines Of Linux Kernel Code

「ImaginationがLinuxカーネルに2万8千行のコードを提出」と書くと、非常に喜ばしいニュースのように思えるが、残念ながら、PowerVRの自由なドライバーではない。ImaginationのプロセッサーであるMeta対応のためのパッチだ。

ぬか喜びして損した。

2012-12-05

Windows XPのパスワードはもはや安全ではない

New 25 GPU Monster Devours Passwords In Seconds | The Security Ledger

25枚のGPUを使い、Virtual Open Clusterで仮想的に単一のものとして使いやすくした結果、なんとWindows XPのパスワードのハッシュ化に使われているNTLMならば、14文字を6分で総当たりできるという。

MD5やSH1も驚くほど高速に総当たりできる。bcryptやsha512cryptは、だいぶタフなようだ。

バージョン管理ソフトウェアの寿命は10年?

言うまでもなく、gitは今をときめく流行のバージョン管理システムである。たったの10年後に存続していないのだろうか。

gitが登場したのは2005年だ。githubが登場したのは2008年だ。githubは直接関係がないが、gitの価値を押し上げたといえる。それ以前、自由なソフトウェア実装によるバージョン管理システムといえば、Subversionが有名だった。Subversionは、2000年に登場している。2010年、gitは流行していた。いま、SVNがgitの流行に押されているのを考えると、たったの10年でよく変わったものだ。

Subversion以前、自由なソフトウェア実装で有名なバージョン管理システムといえば、CVSだ。CVSは、1990年に登場している。おや、不思議なことに、SVN登場の10年前だ。偶然もあるものだ。

CVSはもともと、RCS(Revision Control System)の仕組みを土台に改良したものらしい。RCSが登場したのは1982年。おやまあ、CVS登場のたった8年前、またまた不思議なこともあるものだ。

さらに、RCSも、その当時有名だったSCCS(Source Code Control System)の代替として開発されたそうだ。SCCSは、1972年に登場している。はて、またもや10年前だ。

つまり、gitは2005年、SVNが2000年、CVSが1990年、RCSが1982年。SCCSが1972年。

RCSはいまだに使われているそうだし、CVSもSVNも使われている。しかし、その利用率は、後発のソフトウェアに押されている。

後発のソフトウェアは、単にパフォーマンスが多少上がったとか、UIが洗練されているという理由で、既存の実装を差し置いて流行したわけではない。それまでになかった新しい概念の機能を導入している。

さて、10年後には、またまた後発の新しい発想のバージョン管理システムが開発され、gitを脇に押しやって流行しているのだろうか。

ちなみに、Microsoftの不自由なソフトウェアであるExcelと、その邪悪なフォーマットは、早く絶滅するべきである。

参考:
Git (software) - Wikipedia, the free encyclopedia
Apache Subversion - Wikipedia, the free encyclopedia
Revision Control System - Wikipedia, the free encyclopedia
Source Code Control System - Wikipedia, the free encyclopedia

下部レシーバーを3Dプリントした銃の試射動画

レシーバー(機関部)のうちの下部を3D印刷した銃は、減装弾を6発撃っただけで壊れたそうだ。

この強度では実用にならない。6発撃つことが目的ならば、3Dプリントした銃など必要ない。

さらに改良するとは言っているものの、結局、問題が3Dプリンターに使うプラスチックの強度なのだから、どう設計しても解決できない問題ではないか。

銃の作成に耐える強度のプラスチックは開発されている。残念ながら簡易な3Dプリンターで印刷できるような形成容易なプラスチックではない。

ところで、完全にプラスチックの銃は作成できるのだろうか。バネが最後の問題になりそうだが。

ただし、金属探知機を突破する目的であれば、バネのような細かい部品は、どうとでもなる。服の一部やキーホルダーに組み込んで金属探知機を突破し、後で組み立てればいいからだ。

2012-12-04

ゲームのカバー絵における銃の握り方について

The Real Problem With BioShock Infinite's Box Art: Poor Trigger Finger Discipline

なかなか面白い記事だった。

言うまでもないが、銃を握る際には、撃つ必要があるとき以外に、引き金に指をかけてはいけない。

安全装置をあてにしてはいけないし、マガジンを外したからといって、中に実弾が一発残っていないとも限らないからだ。

では、最近のシューターゲームのカバー絵はどうか。ちゃんと正しい銃の握り方をしているだろうか。

正しいカバー絵もあり、正しくないものもあり、中にはまさに撃つ必要がある状況かもしれないものもありといったところらしい。

xkcd: FPS Mod

xkcd: FPS Mod

バーン
「木の上に家を作り上げたこともあるのに」

バーン
「110件の未読メールがあり、今夜消化しようと思っていたのに」

バーン
「基地で観葉植物の世話をしている唯一の者だったのに」

俺の作った、撃った人間の経歴を3秒にまとめて報告してくれるFPS MODは、人気がない。

ちなみに、DRM付きの邪悪なSteamで販売されている不自由なソフトウェアのゲームであるBorderlands 2では、xkcdが元ネタになったとされている武器がある。

Morningstar - Borderlands Wiki

銃を撃ったりリロードしたりするたびに、ボイスが流される。

プロメセアでは弾を買えない子もいるのよ」
「すばらしい射撃ね、殺人者さん」
「誰かが今みなし子になっちゃったけど、まだ思いもよらないわ」

ああ、やりたいなぁ。不自由なソフトウェアだが・・・。

直接関係ないが、こんな動画もある。

2012-12-03

NAND Flashメモリーを加熱して再生

Taiwan engineers defeat limits of flash memory
Flash Memory Survives 100 Million Cycles - IEEE Spectrum
"Self-Healing" NAND Flash Memory That Can Survive Over 100 Million Cycles - Slashdot

NAND Flashメモリーのセルは、250℃まで加熱すれば再生することが分かっている。問題は、各セルを加熱する方法がないことだ。

そこで、回路内に局所的にセルを800℃まで加熱するヒーターを設ける実験が行われているらしい。

2012-12-02

スポーツゲームを好む者への調査結果

Convergence: The International Journal of Research into New Media Technologies

スポーツゲームというジャンルを好む18歳以上の人間に対し聞き取り調査を行った結果が、論文として発表されている。残念ながら、論文は科学誌に掲載されているため、閲覧は有料だが、kotaku.comがその内容をかいつまんで伝えている。

What Kind of Person Plays a Sports Video Game? MIT Has the Answers.

大多数の人間が、白人男性であり、年齢層は18から24までが最も多かった。

スポーツゲームを好む人間が、スポーツゲーム以外に好きなジャンルとしては、シューター(68.3%)が一番多く、アクション(59.4%)、アクションRPG(50.1%)と続く。最も人気のなかったジャンルは、MMO(16.4%)であった。また、82%近くの人間が、Facebookのようなソーシャル・ネットワークのゲームでは遊ばないと回答した。

プラットフォームとしては、Playstation 3が60.3%で、XBox 360が60%と拮抗し、PC(おそらくIBM互換機上のMS Windows)は58%であった。このことから、複数のプラットフォームが重複していることが伺える。

また、40%の人間は、スポーツゲームをオンラインでプレイすることは、「まれにしか行わない」と回答した。どうやら、一人でコンピューターを相手にスポーツゲームを遊ぶ人間が40%はいるらしい。

なかなか興味深い結果だ。個人的には、スポーツゲームというジャンルは面白さがよくわからない。

イスラエルがアパルトヘイトを計画中

Israeli bus segregation plans 'blatant racism' | Maan News Agency

イスラエル人権団体は、イスラエル交通省の、バスをイスラエル人専用とパレスチナ人専用に分離する計画を批判している。

2012-12-01

ブラドレイ・マンニングに対する拷問的拘束

Bradley Manning: how keeping himself sane was taken as proof of madness | World news | guardian.co.uk

閉鎖的で人間社会から隔絶された環境に拘束して、運動も動きも禁止されているので、何もできないから運動している空想や、鏡の前で顔を動かすなどしたら、「自殺の恐れがある」として、さらにもっと極端な環境に移されたという。

マンニングは問題を告発しようとしたが、上官に阻止されたため、WikiLeaksで密告することにしたのだ。マンニングの密告により、数々の戦争犯罪が明らかになったが、その戦争犯罪については裁かれず、告発者であるマンニングだけが、裁判なしに拷問的拘束を受けている。

シリアがインターネットから離脱

とうとう、最後に残っていた5台のシリア由来かもしれないマルウェア用のサーバーすら到達できないようになり、シリアが完全にインターネットから離脱した。

ことは、2012年11月29日の10:26(UTC)から起こった。この瞬間、シリアはインターネットからほぼ完全に離脱した。

シリア政府は、テロリストがケーブルを切断したためだと主張し、修復作業に当たっていると発表した。しかし、シリアから国外に4本でている、地理的に離れたケーブルを同時に切断できるわけがないので、政府が意図的に引き起こしたに違いないと言われている。

Syrian Internet Is Off The Air - Renesys Blog
How were Syria's networks and Internet taken offline? | ZDNet
Syrian Malware Servers Survive, Then Die - Slashdot

2012-11-28

Apple 1が50万ユーロ以上で競り落とされる

Computer "Apple 1" sold at auction for half Million Euros! The Record

なんと、実働するApple 1がオークションに出品され、50万ユーロ以上もの値をつけたらしい。

"Apple 1"というのは、最初のAppleのコンピューターである。つまり、スティーブ・ジョブズの親の家のガレージで作られた最初のAppleのコンピューターだ。

現在、世界に実働するApple 1は6台しかないのだとか。

2012-11-27

DOOM 3 BFGのソースコードが公開された

id-Software/DOOM-3-BFG · GitHub

ゲームデータは含まれない。

製品版との違いは以下の通り。

Steamに関わるソースコードは含まれない。

動画フォーマットのBinkに関わるソースコードは含まれない

Depth fail、あるいは俗に、カーマックリバースという名前で知られているStencil Shadowの描画技法は含まれていない。Creativeの特許がいまだに有効なためと思われる。

その他、GPLと互換性があるがGPLではないライブラリが列挙されている。

私はDOOM 3をやったことがないのだが、評判を聞いたり動画を見たりする限り、あまり面白そうなゲームではない。

2012-11-22

Sandy島を未発見したニュース

Sandy Island on Google Earth: Scientists Undiscover Pacific Island

Sandy島という名前の、オーストラリアとニューカレドニアの間の地図に載っている島がある。Google Mapもこの島を載せている。


View Larger Map

また、多くの航海地図や気象地図にも載っている。

ところが、この島は実際には存在しないのだという。

実際に現地に向かってみても、やはり何もなかったという。面白いことに、現地に向かう際に使った船の航海地図や気象地図にも、やはりこの島は存在した。

地図会社が、著作権侵害を検出するために、実在しない道や地名を紛れ込ませることはある。しかし、航海地図では、そのようなことは一般的ではない。

またボジョレー・ヌーボの季節だ

どこもかしこもボジョレー・ヌーボだらけだ。ほとんどのコンビニでボジョレーを置いているのだから、一体日本だけでどれだけのボジョレーが存在するのやら。

ハイエクは自由市場こそ最も効率的な流通方法であると言ったので、自由市場が何をどれだけ売ろうが私の知ったことではないが、ボジョレーは廃棄も多いのではないかと思う。

私には酒の良さがわからないし、仮に飲むとしても蒸留酒を舐めるように飲むほうが好きで、ビールやワインをがぶがぶ飲むのは好きではない。したがって、ボジョレーは未だかつて飲んだことがない。

日本人は初物を好む文化があるとはいえ、今誰も、初がつおを争って食べたりなどしない。お茶や米は、古いより新しいほうが好まれるかもしれないが、何も先を争って食べるものではない。米については、少し古い米を使ったほうがいい料理もある。

というわけで、ボジョレー・ヌーボは、単に商業主義のマーケティングの結果、無理やり流行らせようとしている賞品である。

バレンタインならば、ブロックチョコレートが安く売り出されるので、それなりに利点もあるが、ボジョレー・ヌーボは私にとって何の利点もない。

と、取り留めのないことを書いた。

2012-11-21

発信機の装着を拒否した生徒、退学処分にあう

Student expelled for refusing to wear RFID tracking chip badge | ZDNet

John Jay高校は、全生徒に対し、発信機を内蔵したネックレスを装着することを義務付けた。この発信機により、全生徒の学校内の居場所がトラック可能である。

そのネックレスの装着を拒否したある生徒は、退学処分にあった。現在、弁護士が退学処分を取り消しべく争っている。

Big Brother is watching you.

Linux財団が自前軽量ブートローダーをMSのUEFI鍵で署名してもらうのに四苦八苦

[Phoronix] Linux Foundation Struggles With Microsoft UEFI Signing

Linux財団が過去に発表したUEFIに対する方針とは、自前の軽量ブートローダーを用意し、それをMS鍵で署名して、その軽量ブートローダーが実際のブートローダーをブートするという仕組みを作るというものだ。問題は、その軽量ブートローダーの署名プロセスに手間取っている。

まず、ブートローダーを署名してもらうためには、VerisignかSymantecの認証局による署名鍵が必要だ。それを超えたらMSの秘密鍵でブートローダーを署名してもらうために、マイクロソフトのWebサイトでブートローダーをアップロードするのだが、このWebサイトのアップローダーが、こともあろうかSilverlightで実装されている。MonoベースのMoonlightでは正しく動作せず、結局、ブートローダーのアップロードには不自由なWindowsを使わなければならない。

今時Silverlightを使うとは何と時代錯誤な。私にとっては、FlashやSilverlightは、パンチカードと同等に聞こえる。

さらに、マイクロソフト側でも何かおかしいことが発生しているらしく、特別な後から無効化できる鍵を関連付けるのではなく、単なる汎用の鍵で署名するのみだという。これでは使えない。UEFIは、後から特定のバイナリを無効化できるからこそ、暗号理論的にはまともであるのに、その無行こうかができないとは。

しかし、Linux財団の方針は、UEFIの思想とは合わないような気がする。

UEFIは、ブートローダーレベルからバイナリを認証する。この認証というのは、バイナリが改変されていないことを保証する。これにより、例えばマイクロソフトの出荷から、顧客の手元に届くまで、ブートローダーが悪意ある者により改変されていないことを保証できる。

そして、UEFIの思想に従えば、UEFIによって制御が渡された最初のブートローダーも、その後のより高機能なブートローダーや、あるいは直接OSを認証して、改変されていないことを保証する。OSも、ドライバーを認証して、改変されていないことを保証する。と、このように認証が連続して続くべきなのだ。

この方法は、あくまで途中の改変を防ぐだけであり、大本からして悪意あるプログラムを認証して配布する問題は防げない。ただし、特定のバイナリは、後から認証を取り消しできる仕組みがある。これにより、悪事が発覚した後は、広範な影響を与えることが難しくなる。

この仕組みは、UEFIだけではなく、SSLでも同じだ。SSLが保証するのは、経路途中の改変や傍受がなされていないことであり、Webサイトに悪意がないかどうかは保証しない。ただし、ひとたび特定のWebサイトに悪意のあることが発覚したならば、認証局は取り消しができる。

UEFIで問題になるのは、最初のUEFIによって認証されるブートローダーを認証する公開鍵だ。この公開鍵は、あらかじめUEFI側に格納されていなければならない。UEFIに格納するというのは、マザーボードの出荷段階で書き込んでおかなければならない。では、その秘密鍵は誰が管理するのか。認証局は誰が引き受けるのか。

UEFIはマイクロソフトが音頭を取って主導したので、今のところ、マイクロソフトが唯一の認証局として機能している。マイクロソフトは、いかなるバイナリでも、Verisignの認証を受けた者が提出したバイナリであれば、機械的に署名する。バイナリに問題があれば、あとから無効化する。

FedoraのUEFIへの対応は、UEFIの思想にあうものだ。まずマイクロソフト鍵により署名された軽量ブートローダーをUEFIに認証させて制御を移し、軽量ブートローダーは署名されたブートローダー(GRUB2)を認証して制御を移し、GRUB2はOS(Linuxカーネル)の署名を認証してOSに制御を移し、Linuxカーネルはモジュールを認証する。

ところが、Linux財団の方針を聞いている限りでは、どうも違うような気がする。署名されたLinux財団の軽量ブートローダーは、その後一切認証せずに設定されたバイナリに制御を移すそうだ。これではUEFIの目的が損なわれないだろうか。そのようなブートローダーは無効化されるのではないか。

UEFIは、本当に正しく実装されれば、すばらしいものである。何故ならば、利用者はマイクロソフトの鍵をUEFIから取り除いて、マイクロソフトの不自由なソフトウェアの実行を拒否することができるからだ。しかし、経験的に、マザボベンダーのファームウェアの実装はひどいものであり、複雑なUEFIの実装には、まず確実に欠陥が生じるだろう。

少なくとも、マザボベンダーは、ともかくもWindowsをブートすることに注力するので、たまたまWindowsは特定のUEFIの規格違反の実装でも起動するところ、その他のOSは起動しないということが、頻繁に起こる。従来のBIOSでも頻繁に起こっているのだから、より仕様が複雑なUEFIではなおさら頻繁に起こるだろう。そのような規格違反のUEFIの実装による認証が信頼できるだろうか。

2012-11-17

Appleがページめくりの特許を取得

Apple Now Owns the Page Turn - NYTimes.com
United States Patent: D670713

Appleが先週、電子書籍において紙の本のようにページをめくるアニメーションのUIに関する特許を取得したそうだ。提出日は、2011年12月19日付けになっている。はて、この手のページめくりUIはかなり前からあったような気がするのだが。

発明者は、Elizabeth Caroline (San Francisco, CA), Inose; Mikio (Cupertino, CA), Lemay; Stephen O. (San Francisco, CA)となっている。

アメリカの特許の壊れっぷりは限界を知らないらしい。

LenovoのUEFIのアホくさい実装

mjg59 | More in the series of bizarre UEFI bugs

UEFI自体の問題ではなく、実装の問題。

なぜかLenovo Thinkcentre M92pをUEFIモードにして使うと、インストールしたFedoraがブートできない。インストールは可能だが、なぜかブートできない。Windowsは正しくブートする。

Windowsのブートエントリと比較してみても、なぜか違いがわからない。最終的に、Windowsのブートエントリを変更してみることにした。するとWindowsのブートにも失敗した。

変更箇所は、ユーザーにブートメニューを表示する際の項目名。なぜか。"Windows Boot Manager"でなければブートしない。しかし、この項目はファームウェアがパースすべき部分ではない。なぜここが影響するのか。しかし、この現象は、ファームウェアがブートエントリの項目名をパースしているとしか思えない。

ファームウェアをダウンロードして解析してみると、まさにこのとおりだった。Lenovo Thinkcentre M92pのファームウェアは、ブートエントリの項目名をパースするようになっていた。そして、特定の項目名でなければブートしないようになっている。興味深いことに、Windowsだけではなく、Red Hatも通すようになっていた。しかし、当然ながら、Fedoraは通さない。

一体どこのアホがこんな実装にしたのだ。

ハードウェアとそのファームウェアには、相当に多くのバグがある。主要OSはその尻拭いをさせられているのだ。たとえば、あるマザーボードでは、OSに処理を明け渡した後も、特定のメモリ領域に読み書きをするなどだ。そのような場合、OS側で個別に汚いハックを用意し、このマザーボードはクソなので特定のメモリ領域にアクセスしないように特別なはからいを設けなければならない。

この問題はPhoronixの該当記事のフォーラムでも議論されているが、なかなか興味深い。

Lenovo UEFI Only Wants To Boot Windows, RHEL

Microsoftはこの手のバグが出ることが分かっているから変な規格を提案するんだという意見まである。というのも、Microsoft Windowsなら、たまたまバグに引っかからず動作するから問題ない。他のOSのことなんて知るものかというスタンスで、事実上MS以外のOSの動作を妨害しているという意見だ。まあ、ハンロンの剃刀なのか邪悪なのかは知らないが。

2012-11-14

Eric IdleがAMAしてる

I am Eric Idle. I am not lazy. I am not dead. My Dick is available today. AMA. : IAmA

すごい。

観測史上最も高速な質量を持った粒子は、オーマイゴッド粒子と呼ばれている

Oh-My-God particle - Wikipedia, the free encyclopedia

このオーマイゴッド粒子は、1991年にユタ州で高エネルギーの宇宙線として観測された。ひとつの亜原子粒子に野球ボール(時速100kmで移動する142gの質量を持った物質)ほどの運動エネルギーがあると推定されている。

その速度は、なんと0.9999999999999999999999951cだと推定された。光とこの宇宙線を一光年競争させた場合、たったの46ナノメートルしか遅れない事だ。あるいは、0.15フェムト秒遅れるとも言える。

これが人類の観測史上、質量を持つ最も早い粒子の観測例である。

Old New Things: Raymond ChenによるMicrosoft Moneyの非公式パッチ

Microsoft Money crashes during import of account transactions or when changing a payee of a downloaded transaction - The Old New Thing - Site Home - MSDN Blogs

私も昔はx86アセンブリにハマっていたものだ。今やすっかり忘れてしまったが。内容は、まあ何もそれほど複雑というわけでもない。

ところで、この記事のボーナスチャプターが面白いので紹介する。

ボーナスチャプター:このパッチを友人に見せた時、このパッチは退職した同僚のJeffを思い出すという話をした。Jeffはとんでもないプログラミング作業を暇なときにやってのけるのだ。彼の部屋に助けを求めに行くと、何か今まで見たことのないプログラムを起動し始めた。

「何だそれ?」と聞くと、

「ああ、これは俺の書いたデバッガーさ」と何気なしに答える。

あるいは、あるプログラムを渡して申し訳なさそうに、「すまん、x86用にしかコンパイルしてないんだ。Alpha版はないよ」

「いいよ、俺のエミュレーターで動かすから」と当然のごとく答える。

(Microsoftを退職した後も衰えることはなかった。彼のJavaScriptで書かれたIBM PC Model 5150エミュレーターを見よ。)

私が言ったこととは、「Jeffみたいだな。誰がこんなことをモーニングコーヒーの前にやってのけるというんだい」

Jeffによる訂正、「俺がコーヒーの前になにかしているとするならば、それは徹夜でやっていたのだ。集中 >= 才能」

2012-11-13

誤爆、あるいは不自由なソフトウェアを使った報い

Pocketables – Enfour, Inc. screws up big time, makes dictionary app auto-post false accusations on users’ Twitter accounts

ある不自由なiOS上で動く不自由な辞書ソフトウェアに、海賊版を検知して、

"How about we all stop using pirated iOS apps? I promise to stop. I really will. #softwarepirateconfession"

「iOSアプリを海賊して使うのはやめないか。俺は辞める。絶対辞める。#ソフトウェア海賊の懺悔」

というtweetを流す機能が搭載されていたようだ。

問題は、この機能が大いに誤爆して、真当に買った人間も影響を被っている。

海賊行為の有無にかかわらず、このような挙動は邪悪である。不自由なソフトウェアを使った報いとも言える。なぜならば、不自由なソフトウェアでは、ソフトウェアの挙動を検証する自由がないからだ。

これを契機に、早く皆が自由なソフトウェアの価値に目覚めればいいのだが。

そもそも、自由なソフトウェアに海賊などは存在しない。ソフトウェアの共有は正しいことであり、犯罪ではない。正しいことを、船を襲う犯罪行為と同等にみなすのは邪悪なレッテル貼りである。

我々は、ソフトウェアの共有を妨げる不自由なソフトウェアを使ってはならないのだ。

ハワード・ヒューズが人生がキチガイすぎる

Howard Hughes - Wikipedia, the free encyclopedia
Hughes H-4 Hercules - Wikipedia, the free encyclopedia

モルモンの遺言書で有名だが、生前もキチガイすぎる事業ばかりやっていたようだ。

VMwareにも男性社会的な定数が発見される

以前、マイクロソフトが、LinuxカーネルをHyperVでサポートするパッチに、定数として0xB16B00B5を使っていたことが、物議をかもした。これは、BIG BOOBS(デカパイ)と読める。

Linux開発者の中でフェミニズムの第一人者として知られているMatthew Garrettなどは、特に強く抗議した

ソースコード中で、定数としてユニークな数値が必要であるが、数値自体はどうでもよい場合、かといって、0とか1などといった簡単でよく使われる数値は避けたい場合、プログラマーは大抵、面白い数値を考えだすものだ。hex speakで解釈したり、ASCIIで解釈すると単語になるような数値だ。

「プログラマーというのは、いまだに高い割合で男が占めており、そのために強い男性社会の特徴が現れ、けしからん。このような男性社会的な定数を選択したことは、その顕著たるものである」というのが、フェミニズムプログラマーの主張だ。

マイクロソフトはこの批判に応じて、ソースコード中の定数を記述するリテラルを、16進数リテラルから、10進数リテラルの2976579765に変更した。

さて、そのMatthew Garrettであるが、同じ問題をVMwareをLinuxカーネルでサポートために提供されたソースコードにも発見したらしい。

mjg59 | VMware are as bad as Microsoft
git.kernel.org - linux/kernel/git/torvalds/linux.git/blob - drivers/net/vmxnet3/vmxnet3_defs.h

VMwareは有名なエミュレーターであるが、LinuxカーネルをVMware上で動作するように対応するため提供されたソースコード中に、

#define VMXNET3_REV1_MAGIC  0xbabefee1

なる行がある。0xbabefee1は、明らかにbabe feel(感じるネーチャン)と読める。

それにしても、HyperVといいVMwareといい、どちらも仮想化ソフトウェアである。仮想化ソフトウェアの開発者が特別に卑猥なhex speakを好むと言うよりも、ある特定のハードウェアをエミュレートするより、直接OSにドライバーを提供したほうが都合がよく、しかしmainlineで取り入れられるためにはGPLv2であることを要求するLinuxの存在があり、市場規模からしてもLinuxは無視できないためにソースコードを提供し、たまたま表に現れているだけなのだろう。

MicrosoftやVMwareのような、基本的に不自由なソフトウェアを開発する、堅そうな大企業にあっても、そのような文化が失われないのは興味深いことだ。おそらく、プログラマーとしての能力は、ユーモアの有無に左右されず、他の職業のようにユーモア欠落症に陥ることがなく、また、プログラマー文化としても、ユーモアを大いに推奨しているために、このようなことが起こるのではないか。

しかし、これまでのLinuxカーネルやGNUにおいて、こういった話は聞いたことがない。MicrosoftやVMwareのような、基本的に不自由なソフトウェアを開発している企業が、にわかに自由なソフトウェアに貢献しだすと発覚する。思うに、不自由なソフトウェアを開発する企業では、ソースコードを検証する人間が限られているために、このようなことが起こるのではないか。自分と直接関係ないソースコードを読む人間はすくない。しかし、社内のみの公開と、全世界への公開では、全世界への公開のほうが、全く関係のない人間によって読まれる可能性が上がるために、発覚するのではないか。

2012-11-11

また体のかゆくなる季節がやってきた

またも、一年ぶりに体のかゆさに悩まされた。

毎年冬になると、多少の温度変化で体がかゆくなる。食事や運動のたびに体がかゆくなるし、外に出てもかゆくなる。一時間もしないうちにおさまるのだが、とにかくかゆくて仕方がない。

ネット上には、「冬は体が乾燥するからかゆくなるのだ」とか、「冬に体を洗いすぎると痒くなるのだ」とか、「温度や汗に反応する蕁麻疹の一種だ」などといろいろ書かれているが、とにかくかゆい。

しかも、症状は年々ひどくなっているように思われる。何とかならないものか。

UTC(協定世界時)は何の頭文字か

ふと、UTC(協定世界時)は何の頭文字なのか気になった。そこで調べてみると、なんだか面白い理由でUTCに決まったことが分かった。

協定世界時の略語を決定する際、すべての言語で共通の略語にする同意がなされた。GMT(グリニッジ標準時)は、定義が曖昧で、非公式にはUTCと同じ意味で使われていたものの、真面目な文章では避けられていた。そこで、英語圏は、"Coordinated Universal Time"の頭文字であるCUTを提案した。一方フランスは、"Temps Universel Coordonné"の頭文字であるTUCを提案した。結果として、UTCとなった。UTCは、UT(Universal Time)とも似ているので、都合が良かった。

2012-11-07

Microsoftが見張っているぞ(Microsoft is watching you!)

Microsoft Patent Lets Hollywood Watch You with Camera

Microsoftが申請した特許に、キネクトなどのカメラを使って、視聴者の挙動を監視し、コンテンツの提供をコントロールするものがある。

例えば、一人用にライセンスされたコンテンツに対し、カメラが二人の人間を検出したならば、コンテンツの提供を停止し、追加のライセンス購入を促すような機能が、特許で説明されている。

1984の世界が現実になろうとしている。

Microsoft is watching you!

DOWN WITH MICROSOFT
DOWN WITH MICORSOFT
DOWN WITH MICROSOFT

2012-11-06

2012-11 post-Portland mailingの簡易レビュー

ISO/IEC JTC1/SC22/WG21 - Post-Portland mailing 2012-11

Post-Portland mailingが公開されている。最新のドラフトはN3485。今回はだいぶ変更が加えられているが、いずれも文面の修正や表現の統一 であり、極端な変更はないようだ。

今回は、ペーパーとしては公開されていない、会議前のペーパーに対する議論も紹介してみようかと思う。

N3386: Return type deduction for normal functionsには、少々の落とし穴もあるようだ。

再帰で戻り値の型を推測するには、型を推測できるreturn文が字句的に先行していなければならないそうだ。

存在を憂いていた、N3398: String Interoperationには、案の定、問題が噴出している。

結局、C++11でUTF-8リテラルを導入したのに、UTF-8型を導入しなかったのが問題なのだ。意見しても、C++の思想として、型は文字エンコードを表現しないという反論でそのままになった。

そしていま、UTF-8のライブラリ側での取り扱いをめぐって問題が起こっている。それみたことか。

実際、UTF-8リテラルと通常の文字列リテラルの型が同じだというのは、非常に問題がある。たとえば、UTF-8文字列リテラルを書こうとして、プレフィクスu8を書き忘れてしまったならば、通常の文字列リテラルとしてエンコードされてしまうが、その問題はコンパイル時に検出できない。同じ型だからだ。UTF-8文字は独自の組み込み型を与えられてしかるべきだったのだ。

std::stringは暗黙にUTF-8とみなしていいんじゃないというぶっきらぼうな意見まで飛び出す始末。その方が楽になるのだが。

N3405: Template Tidbitsも、注目していた。

template < typename T t >

というテンプレート仮引数の宣言で、任意の型の非型テンプレート実引数を受け取れるようにしようという提案である。

議論の結果、コンパイラー開発者から、elaborated type specifierと文法が曖昧になる問題を指摘された。解決には文法の変更が必要になる。

会議の場で仮に提案された文法は、

template <auto<class T> T n>

というものだが、これは見た目に分かりにくい。ただし、非型とその型の仮引数名を記述できる。

別の提案としては、

template <auto m>

というものがある。これは見た目に簡単だが、これで名前を付けられるのは非型だけで、非型の型を得るには、メタ関数を使わなければならない。

どちらも一長一短で賛成しがたい。さらなる議論と発想が必要であると思う。

N3444: Relaxing syntactic constraints on constexpr functionsはどうか。

「許可されている機能のリストなどというのは気に食わない。costexpr関数でもループ構文が使えるべきだ」などという主張もなされた。Stroustrupなどは慎重派で、現行のconstexpr関数の制限を緩めるには、相当の理由を提示すべきだと主張した。そこで、いろいろな利用例や具体的なコードが示された。結論としては、少なくとも提案されているだけの制限の緩和はするべきだろうという意見になった。

N3332N3329のstatic ifであるが、Stroustrupは導入に慎重なのが以外だった。問題は、static ifのような簡単なコンパイル時条件分岐を導入してしまうと、必要以上に多用されるだろうということだ。それでも、現行のテンプレートメタプログラミングよりは簡単で、メタプログラミングの門戸を開くことにつながるだろうという肯定的な意見も出た。

モジュールについては、現行のドラフトを元に、Clangで実装が進められているとのこと。

特に興味深いものだけを取り上げたが、これ以外の本の虫: 2012-09 pre-Portland mailingのあまり簡易ではないレビューで取り上げたペーパーについて、会議の概要を知りたい人は、知らせてくれればあとで書く。

さて、今回のペーパーの簡易レビューといこう。

N3456: Range arguments for container constructors and methods, with wording

Range復活。

皆が待ち望んでいたあのRangeが戻ってきた。コンセプトなしの提案だ。

RangeがC++11に導入されなかったのは悲劇だった。もちろん、あのままコンセプトを取り入れていても、取り返しのつかない問題になっただろうが。

もっとも、規格に入るのはRangeという要求だけで、BoostにあるようなRange adaptorは入らない。しかし、Range adaptorとともに使うこともできる。ペーパーでも強調して使うことが想定されている。

N3457: Algorithm std::iota and its modifications.

ひどいHTMLコードを見た。まあ、メールでのやりとりをそのままペーパーにしたので、メールを正しく表現するには当然pre要素を使うべきなのだろうが、しかしこれは・・・。

まあともかく、内容は、std::iotaを変更するというものだ。すでにあるstd::fillのスタイルに合わせて、iotaを似せるべく変更する。

しかし、くどいようだが、iotaは名前が符丁のようでわかりにくい。このようなギーク的な命名はどうかと思う。それこそ、incremental_fillとでもしておけばよかったのではないか。私は、タイプ数を減らすよりも分かりやすい名前を好む。まあ、今更言っても始まらない。

N3458: Simple Database Integration in C++11

PDFは死滅せよ。

既存のデーターベース操作のAPIは非常に汚い。たとえば、以下はODBCのコード片である。

SQLHandle statement ;
SQLAllocHandle (SQL_HANDLE_STMT, cconnection ,& statement ) ;
SQLPrepare ( statement , " select a , b from foo where c=? and d=?" , 38 ) ;
SQLLen len1 =3;
SQLBindParameter ( statement , 1 ,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_VARCHAR, len1 , 0 ,
    " foo " , len1 ,&len1 ) ;
SQLINTEGER val =1234; SQLLen len2=sizeof( val ) ;
SQLBindParameter ( statement , 2 ,SQL_PARAM_INPUT,SQL_C_SLONG, SQL_INTEGER, len2 , 0 ,
    &val , len3 ,& len2 ) ;
SQLExecute ( statement ) ;
while ( SQLFetch ( statement )==SQL_SUCCESS) {
    double a , b ;
    SQLGetData ( statement , 1 ,SQL_C_DOUBLE,&a , 0 , 0 ) ;
    SQLGetData ( statement , 2 ,SQL_C_DOUBLE,&b , 0 , 0 ) ;
    cout << a << " " << b << endl ;
}

なんとも残念なコードではないか。ODBCはC bindingであるために、多くのボイラープレートなコードを必要とする。さらに、データベースのインターフェースは、関数呼び出しとして提供されている。さらに、コードは動的片付けであり、コードとクエリー結果の結びつきも貧弱である。

そこで、もっとC++らしいAPIを提案する。提案では、上記と同等のコードが、以下のように書ける。

prepared_query ps=conn.prepare_query( " select a , b from foo
    where c=? and d=?" ) ;
double a , b ;
for ( auto row : ps ( " foo " , 1234 ).into ( a , b ) )
cout << a << " " << b << endl ;

何とすばらしく簡潔に書けることか。

N3459: Database Access Comparison

実際にアメリカで使われている郵便システム(オラクルのproprietaryな言語であるPL/SQLで書かれている)のコード片を、C++で提案されているデータベースライブラリで書き換えた例。実際のコードは原文を参照すること。

不自由なプログラミング言語はけしからん。

N3462: std::result_of and SFINAE

std::result_ofをSFINAEでも引っかかるようにする改良。詳細は前回解説した。

N3463: Portable Source Files

以下の内容のソースファイルには、移植性の問題がある。

int main() { }

なぜか。それは、ソースファイルの文字のエンコードが規定されていないからである。そのため、このソースファイルをあらゆる環境でコンパイルするためには、環境に合わせたエンコードの変換を行う必要がある。

このために、Boostのソースファイルは、いまだに©などの文字を使えないし、開発者の名前も正しく表記できない。

のみならず、環境が対応していない可能性のある文字は、ユニバーサル文字や代替文字やトライグラフを使わなければ、新に移植性の高いソースファイルとはいえない。

いいかげんにせい、もう2012年なのだUTF-8エンコードされたソースファイルへの対応は義務である。

というわけで、C++1yの実装は、少なくともUTF-8エンコードのソースファイルを受け付けなければならないようにしようという提案。

これは至極当然の提案だ。

また、バイトオーダーマーカーである0xEFBBBFも受け付けることを義務付ける。Unicode Technical Committeeは、「0xEFBBBFバイトオーダーマーカーの有無は規格準拠のUTF-8であるかどうかの判断に左右しない」と言っている。しかし、0xEFBBBFは空白文字なのだから、真にUTF-8対応のソフトウェアは、空白文字として扱うべきなのだ。

N3465: Adding heterogeneous comparison lookup to associative containers for TR2 (Rev 2)

すまん、よく分からん。

内容としては、2001年にDave AbrahamsがN1313: Binary Search with Heterogeneous Comparisonで提起した問題が、連想コンテナではいまだに修正されていないので、修正するというものだ。

その問題というが、残念ながら数学的にチャレンジドな私の頭では理解できない。いわゆる比較関数がstrict weak orderingかどうかという問題なのだが。

N3466: More Perfect Forwarding

threadやbindは、実引数をリファレンスで取らない。

void f(int &i) { i = 2; /* ... */ }
int i;
f(i); // iはリファレンスで渡される
thread tf = thread(f, i); // iはリファレンスで渡されない

これは、テンプレートの実引数推定がそうなっているためだ。

しかし、だからといって単にthreadやbindの実引数をrvalueリファレンスで取ればいいというものではない。取ったとしても、正しくforwardingできないのだ。関数オブジェクトの仮引数の型を取得する方法がないからだ。

そのため、仮引数の型を取得できるコンパイラーの支援のメタ関数、std::signatureを追加する提案。

これはいわゆるコンパイル時リフレクションの一種だ。よりパーフェクトなforwardingができるようになる。

N3467: Runtime-sized arrays with automatic storage duration

動的に大きさを指定できるautomatic storage durationの配列を追加する提案の改良案。

細かい変更に留まるので特に説明しない。ヒープ上に構築できるようになったのは大きいかもしれない。もっとも、見逃していただけなのだが。

N3468: User-defined Literals for Standard Library Types (version 2)

標準ライブラリにユーザー定義リテラルを追加しようという提案の改訂版。

さすがに、二進数リテラルをユーザー定義リテラルというライブラリとして提供するという提案は、コア言語の領域だということで、コア言語グループに投げられた。また、コンパイル時atoiとして提供するという代わりの提案も却下された。汎用的なコンパイル時atoiなど提供できるわけがない、というのがその理由だ。

Constexpr Library Additions v3: chrono
Constexpr Library Additions v2: containers
Constexpr Library Additions v3: utilities

既存の標準ライブラリをconstexpr対応にする些細な変更。

N3472: Binary Literals in the C++ Core Language

PDFは死滅せよ。

コア言語で二進数リテラルを追加する提案。プレフィクスは0b/0Bになる予定。すでにGCCやClangで拡張機能として実装されており、またJavaやDなどといった他の言語でも実装されているので、実装経験は豊富であり、入るとすれば問題なく入るだろう。

数値リテラルのセパレーターについては、この提案では考慮せず、別の独立した議論である。

N3477: C++ Internet Protocol Classes

PDFは早く死ね。

もはや、C++にも標準のネットワークライブラリを考慮しなければならない時代になっている。この提案では、ネットワークの中でインターネットを取り上げ、その中でも特に、IPアドレスに関するライブラリについて提案している。このライブラリの設計は、有名な既存のネットワークライブラリであるPOCOを元にしている。

N3478: Core Issue 1512: Pointer comparison vs qualification conversions

この提案では、ポインターの比較について変更を加える。

提案では、以下のコードをill-formedにする。

void f(char * p)
{
  if (p > 0) { ... }
  if (p > nullptr) { ... }
}

また、以下のコードはwell-formedにする。

void g(int **p1, const int**p2)
{
   if (p1 == p2) { ... }
}

N3479: Priority Queue, Queue and Stack: Changes and Additions

PDFは滅せよ。

std::priority_queueの改良案。実装のオプションをコンパイル時にテンプレート実引数として指定できる。

イテレーター、値の変更、マージの効率化、安定ソート、比較。

N3484: A URI Library for C++

C++標準のネットワークライブラリとして、URIに特化したライブラリの提案。

N3487: TLS and Parallelism

PDFで構築した視覚効果激しいプレゼン用の画面集をペーパーとして公開するのはやめようぜ。

TLS(Thread Local Storage)は、C++11にもthread_localというキーワードと、thread storage durationという形で取り込まれたが、この機能は現実の三種類の利用例に一致していない。三種類の利用例に一致するTLSを、言語なりライブラリなりで提供すべきであり、現行のthread_localは、この三種類のうちの利用例のどれかに一致するように変更しようという提案。

どうも中身がない気がする。

N3489 - A Rational Number Library for C++

C++に標準の有理数ライブラリを追加する提案の改訂版。議論の末、改良を加えた。

N3490: Controlling Argument-Dependent Lookup

title要素のないHTMLはill-formedでありけしからん。

これはDaveはんの提案なんやな。この人昔から、ADLを無効にする方法を追加しよう言うてはるんや。

この提案では、ADLを無効にする方法を追加する。特に、演算子以外のADLを向こうにする方法を追加する。ADLが最も必要とされるのは、グローバル以外の名前空間スコープの型に対する演算子のオーバーロードなのだから、演算子以外でADLを無効にする機能が欲しい。さらに、演算子も含めてADLを完全に無効にする機能も提案している。

さらに、一部の名前だけ、宣言されたスコープ内においてADLを有効にする機能も提案しているが、これはすでに用いられてきたusing宣言のトリックと非常によく似ている。

N3492: Use Cases for Compile-Time Reflection (Rev. 2)

外道祭文。PDF地獄。スカラカ、チャカポコチャカポコチャカポコチャカポコ。

コンパイル時リフレクションの利用例を紹介したペーパーの改訂版。さらに利用例が増えているようだ。

Serializationなどのリフレクションを必須とする利用例を始めとして、enumの情報取得や、デフォルト実引数の取得など、なにやら面白い利用例も上がっている。ある関数オブジェクトを完全にラップするためには、デフォルト実引数をコンパイル時に取得できることが必要になるのは、言われてみれば当然だが。

2012-11-03

リーナス・トーバルズ、再びKDEに切り替える

Linus Torvalds - Google+ - I'm trying out KDE after a long absense. It still looks a…

以前、GNOMEやKDEを嫌ってXfceに走ったリーナス・トーバルズであるが、また再びKDEに戻ってきたようだ。

久しぶりにKDEを試している。

まだちょっとマンガみたいで、デフォルトのウィジェットとplasmoidにマウスを合わせた時、即座にコントロールを表示するのが超いらつく。ウィジェットをロックすれば、落ち着いたまともな挙動になる。これがデフォルトの挙動なのは変だろ。

まあでも、設定できるわけだ。いまだにウインドウが落ち着かないな。

GNOMEの連中がKDEは設定できることが多すぎるだろと考えるのは分からないでもない。「何でも設定できるぜ」ってのはちょっと変だしな。

たとえば、デスクトップウィジェットを好きなように回転できるとかさ。「このウィジェットコントロールバーの変な回転はなんだろ。うーむ、なんだか目が回ってきた」

結果として、今、俺のターミナルとWebブラウザーのボタンは酔いどれデブがデスクトップ上で暴れまわったみたいになってる。まあ、いずれ退屈に上部に並べて表示するとしよう。(まあ、俺はそういう退屈な配置をするのだから)。まあでも、とりあえず今はこの不安定な挙動を楽しむとするか。

KDEのデフォルトの設定のいくつかが、デフォルトで設定されているべきではないだろと不満たらたらながらも、とりあえずしばらくKDEに戻ることにしたらしい。

Xfceの欠点については一切言及していない。

さあ、宗教戦争の始まりだ。

2012-11-01

高PPIディスプレイへの対応の難しさについて

高PPIディスプレイへの対応は難しい。というのも、既存のソフトウェアは勝手に書き換わってくれないし、ましてや今から新しく書くのであっても、ライブラリは既存のものを使うので難しい。

未だに、低レベルなAPIでは、多くのディスプレイ上のUIの大きさを、ピクセル単位で指定する。

フォントには、ポイントという単位がある。これは歴史的な単位で、1ポイントは約0.3514mmである。

もっと高レベルな実装でも、あまり問題は変わらない。たとえば、CSSで長さを指定する単位には、いまだにピクセルが存在する。

なぜ、ピクセル数で長さを指定すると問題になるのかというと、ピクセルの大きさが、環境ごとに違うからである。

最新の携帯電話の画面のピクセルの大きさは極めて小さい。屋外に設置する巨大なディスプレイなどは、ピクセルが大きい。

したがって、10ピクセル分の長さというのが、環境ごとに異なる。

伝統的に、1ピクセルあたりの大きさを言うよりも、1インチあたりにピクセルを何個敷き詰められるかという表現をする。また、印刷からの伝統で、ピクセルではなくドットという呼ばれ方もする。DPIとは、Dot Per Inchの頭文字なのだ。インチのような劣った長さの単位は、今やアメリカやイギリスのような劣等国しか使わないが、慣習的に使われている。

現在、デスクトップ向けのディスプレイでは、96PPIのディスプレイが非常に多い。96PPIとは、1インチあたり96個のピクセルを並べることができるという意味である。

さて、96PPI環境において、ラテンアルファベットは、12ピクセルあれば十分に表現可能であると感じたとする。96PPI環境での1ピクセルは265マイクロメートルなので、12ピクセルは約3ミリメートルになる。これが文字の大きさだ。

さて、携帯電話やタブレットのような小さなディスプレイでは、もはや300PPIも珍しくない。300PPI環境で真面目に12ピクセルで文字を描画すると、文字の大きさは約1ミリメートルになる。これでは読めない。

したがって、正しいソフトウェアの実装方法は、文字を「3ミリメートル」という論理的な長さで描画するということになる。問題は、低レベルなAPIの実装は、フォントサイズをメートルで指定することはできないので、ソフトウェアごとに変換をしなければならない。つまり、実行環境のPPIを何らかの方法で特定して、3ミリメートルは何ピクセルになるのかを計算しなければならない。

さらに問題なのは、多くの環境で、ディスプレイのPPIを取得する方法がない。それに、PPIの違う複数のディスプレイを使っている可能性だってある。

ところで、CSSではピクセル単位で長さを指定することができる。例えば、ブラウザーがCSSの指定を尊重したとすると、以下の文字は12ピクセルで描画される。

この文字列は12ピクセルで描画される。

さて、このページをプリンターで印刷したらどうなるだろうか。プリンターは、個人向けの安いものでも、1000DPIを超える。実質のピクセル数でも、やはり300PPIはある。このページをプリンターで印刷すると、上記の文字列は読めないほど小さく印刷されるのだろうか。

実際には、主要なブラウザーの実装では、印刷の際にCSSのピクセル数指定に従うことはない。主要なブラウザーは、固定のあるPPI(たとえば96とか)においてピクセル数が指定されたという扱いをする。そのため、プリンターの実PPIに合わせて適切にスケールされるのだ。

WindowsなどのOSでも、この戦略を使っている。ピクセル数指定は、あるPPIにおいて指定されたピクセル数だとみなし、実際の環境のPPIに合わせて、まるごとスケールするようにしているのだ。Windowsの場合、ソフトウェアが明示的にスケールを無効にするAPIも用意されている。明示的に無効にしない場合、自動的にウインドウごとスケールされる。

なんといっても、今のソフトウェア実装は、歴史的な設計の問題により、複数の極端にPPIが違うディスプレイが使われるという状況に対して、あまりうまく動かない。

ここまでは、ベクトルデータであるフォントを描画する際の問題だ。ベクトルデータではない画像は、もっと問題になる。

画像のピクセル数が十分に多ければ、優秀なスケーリングアルゴリズムにより、綺麗にスケールは可能だ。しかし、96PPI環境において使われることが想定されている数十ピクセル程度の大きさのアイコンなどは、どうしようもない。

理想的には、アイコンのような小さい人工的な画像は、すべてベクトルフォーマットにすべきである。実風景を写した写真などは、できるだけ高解像度にして、優秀なスケーリングアルゴリズムを使うべきだ。

といったところで、世の中は簡単にベクトルフォーマットを使うようにはならない。コンピューターの性能やストレージ容量は、いまだに有限である。

まだまだ時間がかかる。

映画アルマゲドンででてきた、BB銃で電車を止めるたとえの考察

What if?: BB Gun

映画アルマゲドンで、NASA職員は隕石をレーザーで撃つことに対して、「電車をBB銃で止めるようなものだ」と言っている。暴走電車をBB銃だけで止める場合、どうなるのか。

--Charles James O'Keefe

まず明言しておくと、隕石をレーザーで撃って防ぐのは、すばらしい方法である。電車をBB銃で止めるのは難しい。

Red Ryder spring-priston レバーアクション空気銃は、標準規格の0.177キャリバー、0.33gの鋼鉄BB弾を、秒速100メートルの速度で発射できる。

GE Genesis シリーズIの電車の重さは、12メトリックトンであり、秒速45メートルで移動する。

一発のBB弾を電車の真正面に打ち込むと、日速30cmほど速度を減じることができる。

電車を止めるには、秒間1発において、およそ二日と20万発のBB弾がかかる。その時には、すでに電車は勝手に止まっているであろう。(このページによる電車にかかる抵抗の計算式による。机上の計算では、時速160キロから時速32キロまで、10分から15分で減速することになる)

明らかに、Red Ryderでは力不足だ。

エアガンオタクですら恐れるような世界的に強力なものを使うべきだ。

Tactical Edition Blackbirdは、ハイエンドBBマシンガンである(世の中にはBBマシンガンというものがあるのだよ)。一分間に1200発も発射でき、発射速度は秒速200メートルを超える。この速度では、標準BB弾で骨折させることができる。

残念ながら、一瞬で電車の真正面から600発を撃ち尽くしたとしても、わずかにしか減速しない。

一人がBB銃で止められないのなら、人を増やせばいいのではないか?

一人あたりに横60cm縦120cmの面積を割り当てる。少々混み合っているが、これにより、他人の肩越しに射撃が可能になる。電車の前方の両サイドに対し45度で配置するようにしたのならば、10メートルで100人、20メートルでさらに300人、30メートルでさらに550人、40メートルでさらに750人を追加で詰め込める。

ほとんどの射手は、電車を正しく狙撃できるだろう。射撃角度の違いを考慮して計算すると、理想の配置(すべての銃が電車の真正面に配置されているもの)にくらべて、90%以上の効率を持つ。

BB弾には強い抵抗がかかる。そのため、遠くから撃たれた弾は、電車に衝突する速度が遅くなる。このページでは、様々な速度で移出されたBB弾のうける抵抗を推定している。インターネットはすばらしい。

これらのことを念頭に、集団でBBマシンガンを撃って電車を止める場合をみてみよう。ところで、人間には腕が二本あるので、一人あたり二丁割り当てることにしよう。

t=0において、電車から50メートル圏内にいる、2500人の人員が、引き金を引き、秒間10万発のBB弾が発射される。電車の前進に合わせて、真正面に配備された人間は魔法のように線路から左右によけるものとする。これは非現実的だが、人間の体をつかって電車の減速させるのはインチキなのでできない。

最初の人員が発砲をやめるとき、さらに後ろに控えている人員が射程に入り、発砲をはじめる。電車はとても早く動いているので、電車が過ぎ去るまえに、一人あたり数十発しか当てることができない。

任意の瞬間において、4万5千発のBB弾が空中に存在することになる。これは問題がある。鋼鉄球が電車の前で跳ね返った時、単に消え去ることはないからだ。射手の方へ跳ね返り(射手の目にあたるかもしれない)、射線に入るのだ。最大で、この反射した跳弾は、1%近い弾を、BB弾同士の衝突により、阻害する。これは好ましくない効果だが、作戦の遂行にあたっては、それほど問題にはならない。

残念ながら、この鋼鉄の雨でも、電車の停止には数分かかり、距離にして数キロメートルを必要とする。これはつまり、10万人の射手を線路沿いに配備しなければならないということであり、必要な費用は5000万ドルに上る。

もっとマシな方法があるはずだ、BB銃を使うという前提を、少しやわらげてはどうか。

AK-47の発射速度は秒速715メートルであり、発射される弾はBB弾の25倍重い。弾の速度が早すぎるため、電車を貫通してしまう(これは、運動量を伝えるのが非効率的であるということでもあるが、特に問題にはならない)

計算によれば、2500人の人員がそれぞれ二丁のAK-47を発砲すれば、距離にして30メートル、時間にしてわずか1.5秒で電車を止めることができる。作戦成功。

もっとやればどうなる?

うーん。

マシンガンの弾は、鋼鉄球にくらべて、受ける抵抗が少ない。つまり、より長距離からの狙撃を可能にする。50メートルではなく、200メートルの範囲にしてみよう。

t-0において、4万人の人員が一斉に発砲する。通常、AK-47は30発のマガジンを使い、秒間10発ほど発射する。0.3秒ほどで、25万発の弾が空中に舞う。狙いの外れた弾が前方の人員を撃ちぬくのは疑う余地がないが、よく訓練された狙撃手ならば、大部分の弾は、的に当たるだろう。

t=15ミリ秒において、電車が50センチメートル前方に進み、弾幕の先頭を浴びることになる。

t=30ミリ秒では、電車は1ミリ秒あたり数十発の弾を受けることになる。

t=150ミリ秒において、電車は前方に6メートルほど進むが、1ミリ秒あたり数百発の弾を吸収する。これにより、前進する運動量が減少し始める(そして粉々になるだろう。ここでは、弾は衝撃を均等に分散する特殊な材質を使っていると仮定しよう)

t=300ミリ秒において、25万発の弾が空中に存在することになる。ほとんどの射手は、二丁あわせて6発ほどの弾を発射している。前列で撃った弾は、後列で撃った弾と衝突することもある。頻繁には起こらないが、確実に起こる。

電車は7メートル前方に移動し、7メートル半になり、7メートルと3/4進み、そして7メートル半に戻る。

成功だ。

しかし、射手はまだ十数発しか打っていないのだ。マガジンにはまだ弾がほとんど満タンで残っている。

t=1秒において、100万発の弾が発射される。電車は後方に、およそ秒速100メートルで押し戻される。t=2秒において、電車の後方への加速は減少する。これは、電車が射手の射程外に移動するためでもあるが、電車が音速に近い速度で移動しているためでもあり、弾が電車に追いつきにくくなるのだ。追いついたとしても、相対速度がほとんど変わらないので、それ以上加速させることができない。

この時点では、空気抵抗が電車にあたえる力が最大になる。電車の後方が浮き上がり、電車は脱線しだす。そして最終的には、弾幕により粉々になる。

さて、隕石に適用しよう。

「隕石をレーザーで撃つなんて、電車をBB銃を撃つようなもの・・・」
「めちゃくちゃカッケーぞ」