Island Life

2011/02/11

2147483647

少し前に英語の元記事がHacker Newsあたりに出てたような気がするけど、日本語でも紹介されててブクマを集めていた。

2^32-1が2147483647なので、どっかの怠け者のプログラマが32bit符号つき整数で 電話番号を保存したんじゃないか、というのが元記事の仮説。それより大きな電話番号を 入れようとしたら最大値でクリップされると。

実際この番号で検索すると、この番号を使っているビジネスが確かに出てくる。 テキサス州ダラスの番号のはずなのにニュージャージーだったりフロリダだったり。

でも、「電話番号に32bit符号つき整数を使った」という仮説はかなり疑わしいと思う。

USのエリアコードは201から始まり、900番台の終わりの方まで使われている。32bit符号つき整数をそのまま使った場合、全体の数%しかカバーできない。

たまたまスクリプトを書いたプログラマが、カバーできる領域に住んでいて、他の領域のことを考えていなかったのだろうか。 けれども、USのエリアコードは日本ほど綺麗に整理されておらず、新たなエリアコードが必要となる度に開いてるやつを使うものだから、隣接する区域で番号がとびとびになる。同じテキサス州ダラスでもメトロエリアは469であり、これは32bit符号無し整数にも収まらない。 US本土の都市部に住んでいれば近所でエリアコードがとびとびになるのは常識で、 201〜214だけサポートできればいいや、という考えはちょっと無理がある。

例外は人口が少ない州で、例えばハワイは全州808だ (なのでハワイで電話番号を 伝えたり記入したりするときにはエリアコードを書かないことが多い)。 201〜214の範囲でそういう例を探すと、207がメイン州全域、 208がアイダホ州全域、このあたりの住人が、自分の州のことだけ考えて スクリプトを書いたって説は辛うじてあり得るかもしれない。

でも、それよりは、 事務の人がPCの簡易データベースソフトか表計算ソフトか何かで住所録を管理していて、 カラムの型が意図せずlong intになってるのに気づかず 電話番号をタイプしたとかそういう話だったりしないだろうか。 つまり、最初から電話番号を入れるとわかっていて32bit intフィールドを使ったのではなく、 32bit intなフィールドに意図せず電話番号が入れられたのではないか、ということ。

そういう制限のあるソフトが実際にあるかどうか (そしてオーバーフロー時に最大値でクリップするかどうか) 手元では確かめられないんで、これも推測の域を出るものではないが…

Tags: 生活, Programming

2011/02/08

「とりあえずやってみる」のスケーラビリティ

いろんなとこで話題になってる、Facebookのアカウントban。

Facebookは「実名」の定義を明確にすべきだろう - ただのにっき

同じように芸名・筆名を使って「私的」かつ「リアル」な関係を構築している人は無数にいるはずで、ファインダビリティをあげるためにあえて本名を使わないという状況は確実にある。だとすれば、Facebookは必ずしも「本名」での使用を想定しているわけではなく、「もっとも検索されやすい名前」としての「実名」を使えと言っていると考えられる。

このことからおれは、「Facebookはそういうシチュエーションを踏まえて、あえて『本名』ではなく『実名』という表記を使っているのではないか」と考えていたんだけど(もうひとつの説は「real name」の単なる直訳←実はこっち説が濃厚)、でもBANされたアカウントを復活させるためには本人確認できる身分証明書のコピーを送付する必要があるらしい。これははっきり「本名」しか認めないということだ。

Facebookが何考えてるか知らないけど、一般的な話をすると、 USの感覚って「とりあえずざっくり決めてやっておくけど、グレーゾーンは広くとっておいて、その都度ケースバイケースで対応しましょう」ってのが多いんだよね。

例えば芸名や筆名はどうするの、という話なら、こっちの日常的な感覚なら、 本名と筆名を結びつける何かしらの文書があればほとんどの場合は通ると思う (Facebookがどうするかは知らない)。 その別名で仕事をしたことがあれば、支払い小切手や領収書に別名も一緒に書いてあることが多いし、役者なら仕事をする際に毎回必ず 記入するvoucherに本名と芸名を書く欄があるからそのコピーでもいけるだろう。 金銭のやりとりが発生していなくても、その別名で社会的活動を長期的にしていたなら、 その別名でやりとりした半公的な郵便物やメールの積み上げも補強証拠になるかもしれない。

なので一般的な感覚としては、 「ネットのハンドルはだめなんだって? じゃあペンネームもだめなのか?」といった 白か黒かという正解が最初からあるとは考えずに、 裁定に不満があれば相手を説得するための証拠を集めて主張して、 その都度ネゴってゆくという方向になる。 「証明のために○○が必要」と書いてあったとしても、「それ以外はダメ」と書いてなければ 交渉の余地あり、と考える。さらには、「ダメ」と書いてあってもそれが他の箇所と矛盾するなら そこを突いて変えさせる余地もある。

もともとシステムを作る側だって最初から全部を網羅しようなんて思ってないし、 最初から完璧だなんて思ってないんだから。

「とりあえずやってみたけど、間違ってたらごめんね、てへっ。言ってくれたら後で直すよ。」 これで、身の回りのシステムがわりと回ってるというのがUS。

もちろん、この感覚がグローバルなネットサービスにスケールするかというのは別の問題で、 現実的には規模が大きくなると個別対応は難しくなり、 アピールする側のコストがどんどん増大しちゃうわけで、 どっかの時点で、誰でもわかりやすく白黒つけられるような境界を決めて行かざるを得ない。 だから、今回のようなケースで色んなチャネルを使って声を上げてフィードバックすることは多いに意義がある。

ただ、「とりあえずやってみて、走りながら直す」という土壌は、新しいものが出てくる ためのほとんど必要条件でもあるわけで。優秀な人間が集まってるからって、 決してミスを犯さないわけではなく、むしろ一度犯したミスからどれだけ学ぶかって とこで差が出てくるんだろうな。

ただ、世界中から優秀な人材が雪崩をうって流れ込んでいるFacebookが、こんな単純な事実に気づかないほど阿呆の集団とは思えないんだよね。もしかすると曖昧さを残すためにわざと「本名」という表記を使っていないのかも知れないが、それを公言できないのであれば、今回のような妙なアカウント停止はやめるべきだろう。

ちなみに、厳密に「本名」と言いたいなら英語では "legal name" と表記されると思うんで、 "real name" は曖昧さを残した表記だと思う。せいぜい "nick name" に対応するもの、 くらいで。 (役者が記入するVoucherでは本名記入欄と芸名記入欄はそれぞれ "Legal name" と "AKA name" になってる。)

Tag: 生活

2011/02/03

またまた浮動小数点数話

PHPが特定の浮動小数点数のパーズに失敗する話にかこつけて こんな記事を偉そうに書いてたけど、Gaucheにも同じ境界周辺で失敗するバグがあった。とほほ。

原因は拡張浮動小数点数演算ではないのだけれど。ClingerのAlgorithmRは 非正規化数へのフォールバックを扱っていないので、AlgorithmRを 素直に実装したものは同じ罠にはまってるかも。詳しくはGauche devlogの 方に書いといた: Bitten by floating point numbers again

Tags: Programming, Gauche

2011/01/27

ライセンスと契約

古い記事だけど、ときどきの雑記帖 3mm方眼紙編経由で知ったこの記事がわかりやすかった。

ライセンスとは、何かをして良いという許可。他人の所有物を使って良い、とか。「こういう条件を満たせば使って良いよ」という制約がついてることもある。その条件を破った場合は、ライセンスが無効になる、つまり許可されていたことができなくなる。また、条件を破ったことで損害が生じたら弁償しろと言われるかもしれないし、それまで条件を破っていたことで今後損害が広がる可能性があればそれを防ぐ義務を負う。

契約とは、双方が「自分はこれをやりますよ」という約束。約束が果たされなければ果たすように訴えられる。

GPLはライセンス。つまり「再頒布するときは同じライセンスで配ってね」という条件を満たす限りにおいて自由に使える。その条件を破った場合は、(1)そのソフトウェアを利用することができなくなり、(2)もし損害が生じていたら弁償しなくちゃならないかもしれない。

プロプラにGPLコードを入れちゃった場合、何が何でも「ソースを公開しなくちゃならない」ということにはならない。「ソースを公開しないのなら、もうGPLコードは利用できないよ」というだけ。GPLコードを取り除けばプロプラのままにできる。契約と違って「一度した約束を果たすことを強制する」力はライセンスにはない。許可が取り消されるだけ。ただ、著作権法に則った損害の弁償請求はされるかもしれない (どうやって損害額を算定するのかはわからないけど)。

こっから疑問。それでも、GPLが含まれてるのにプロプラライセンスで既に配っちゃった分については、「更なる損害の拡大を防ぐ」ために回収義務とかはありそうなものだ。回収が事実上不可能なら、ソース公開によってライセンスに沿った形で再頒布を続けるしかなくなりそうな。バージョンアップにより既に配っちゃった分を上書きしてもらう、というのは回収と同じとみなせるのかな。コンソールゲームのように売りきりだと無理な話だが。

Tags: Software, Licence

2011/01/24

マシンの命名法

サーバの命名法 - モジログに色々上がってる。確かに悩むよね。サーバだけじゃなくて個々のマシン名とかも。

Square USAは、初期の頃はスクウェアのゲームのキャラクタ名だった。 英語版キャラ名だったから「これ誰だっけ?」というのも結構あったけど。 私がLAで最初に割り当てられたSGIのワークステーションは聖剣2のjemaだった。 ホノルルに移ってマシン数が数百になった頃にはさすがにそれじゃ管理しきれなくて連番になってたと思うけど。(日本のスクウェアは自分が入った時には既に連番だった)。

大学の研究室は、何故か機種がばらばらだったのでだいたい機種名をそのまま使ってた。 Sun3〜SparcStationの時代だったけど、SparcStationだけで色々あったなあ。 ハードウェア分散共有メモリの実験環境だけSony Newsを3台入れてて、運命の三女神 (clotho, lachesis, atropos) だったのを覚えてる。

自宅のマシンは音楽用語からつけてる。引退したのも含めてこれまで使ったのは rhapsody, scherzo, toccata, sonatina, partita, adagio, air。

Tag: Computer

More entries ...