コクミンノミナサン (国民の皆さん) !
てくるで (とこどえ)、話は全然変わるけど、さいきん git って使って人、多いのな。
みんな口をそろえて、ローカルで自由に修正できることの利点をいう。
でも、やはり敷居は高く学習曲線は急であるらしい。コマンド100個ぐらいあるし
(全部を使わなければならないわけではないとゆうわけであるにしても)。
ちなみに、さっき apt-get install git
ってやったら、GNU Interactive Tools とかゆうのが
インストールされちまった。こんにゃろ
どうでもいいけど、一昨日はまたもやっかいなバグをつぶした。 またもや原因はこちらの書いたコードじゃないのだが、なんとか追跡して回避方法をあみだした。 メモリ関連のバグというのはいつも厄介なものだが、これが
S/N比 - シモ・ネタ比。会話において、ある特定分野の話題が含まれる割合を表す。 人によっては S/N比の高い会話は signale (シグナーレ) であり、理解しやすい会話であると捉える人もいるが、 新山にとっては S/N比の高い会話はほとんど理解できない。
地図は嘘つきである (マーク・モンモニア、渡辺潤訳、晶文社 1995年)。はじめに
地図でウソをつくのはかんたんだ。というより、地図はもともとウソつきである。 複雑な3次元の世界を平面の紙やビデオに意味のある関係を保たせながらえがくために、 地図は現実をゆがめなければならない。(中略) 重要な情報を目立たせるために、 地図は現実を取捨選択して、不完全な形で表現せざるをえない。これは地図を つくるうえで逃られないパラドックスである。もっともらしい図を描くために、 正確な地図ほどウソをついてしまうのである。(中略) ひとつの地域についての データからは何種類もの地図が作製可能である。1枚の地図は、そのなかの たったひとつにすぎない。1. 地図はどのようにつくられるか。
地図には3つの属性がある。縮尺、図法、記号である。それぞれの要素に歪曲の原因がある。 メルカトル図法ではグリーンランドが南米大陸と同じくらいの大きさになるが、 実際には南米のほうが8倍も大きい。2. 見やすくするためのウソ
よい地図ほど細かなウソが多いものである。
よく使われる技法:
1:24000と1:250000の地図をくらべると、ものすごく情報が簡略化されている (p.42 図表2-4)。 起伏がある土地では平面距離との誤差が大きくなる。 電車の路線図では、正確さよりは相対的な位置が重視される。 しかし簡単にのりかえられそうな駅や高速道路のインターチェンジでもじつは簡単ではないことがある。
- 選択…必要のない情報を削除する。
- 単純化…点の数を減らす。
- おきかえ…重なっている目印を移動させる。
- スムージング…新たな点をくわえて認識しやすい形にする。
- 誇張…河をギザギザした線で書くなど。
3. あやまりといたずら
わざと地図にイタズラを入れる場合。インクの漏れによる誤解。 1983年のグレナダ侵攻で、アメリカ軍は間違った地図をもとに病院を空爆してしまった。 地図には時間が流れている。地図は牛乳のようなもので、その情報は腐りやすい。 だから日付を記しておくことが賢明だ。しかし地図の作成者は発行時の日付を記入するが、 その情報が収集された日付はわからない。ときに、長い時間によって集められた情報には、 時間的な幅があるものがある。たとえばN年に発売された地形図はN-2年に発行され、 N-3かN-4年に撮られた空中写真をもとにし、現地調査はN-2年かN-2年におこなっているだろう。4. 広告の地図
マーケティングのために、安全に効率よく行けそうな地図が作られる (p.75 図表4-1,4-2)。 観光地の地図では多くの名所が書き込まれる。 イメージをふくらませる (p.79 図表4-5)、地図の形を使ったシャレ (p.83 図表4-8)。5. 開発地図
政治的な目的や都市計画のための地図。
抜けめのない地図をつくるための11箇条:
- 見せたくないものは出すな。
- 枠組みをうまくとって、好ましくないものが枠外に出るようにする。
- プラスのものを目立つように。
- 情報操作がバレたときの言い訳を用意しろ。
- マイナスのものは小さく。
- 細部は有効利用せよ。
- 不都合な事実を余計な情報の洪水でカモフラージュする。
- 空中写真や歴史地図で気をそらそう。
- 概略化は創造的にやれ。
- 殺風景な地図に飾りを入れる。(p.99 図表5-4)
- 失敗したときは賄賂を考えろ。
6. 政治宣伝のための地図
地図は国家にとって領土を主張するための完璧なシンボルである。 賢明な扇動家は、地図の操作で意見形成が管理できることを知っている。 劇場化する地図 (p.122 図表6-10)。地図による恐怖の演出。 共産圏の恐怖を表すのに、ソ連と中国が大きく表示されるメルカトル図法が使われた。 敵国を黒い色で表わす。同心円の利用 (p.132 図表6-19)。7. 地図の情報操作
とくに軍事目的の地図は守られている。キャンプ・デービッドは、 地図上では「キャンプ3」とだけ記されている。8. 統計地図のナンセンス
目盛りのとり方や分割の方法によってがらりと印象を変えることができる。 失業率、疾病率、支持政党など。コレラの疫学を確立したジョン・スノーの地図は、 街区の分割を無視することではじめて有益になった。地図を使って意図的に操作する人ばかりでなく、 これらの効果について自覚のない地図作成者についても注意しなければならない。9. 色の不思議
おわりに. メディアとしての地図
訳者あとがき
文化人類学者の中村勇祐はマリ共和国で1987年にフィールドワークを行った。 彼は、集落の路地を歩きながら「このゴチャゴチャした家の配置を真上から見下ろしてみたい」 と思った。しかしできあがった地図を村人に見せてもほとんど理解してもらえない。 地図にもリテラシーが必要。
ところで (てくるde,) 最近、番茶が気に入っている。 いままでは緑茶といえばわりかし高級なのばっかり好んで飲んでいたのだが、 なんか食後に飲むのはシブシブに淹れた番茶のほうが適しているような気が最近してきた。 安いからか…。いや、カフェインも少ないので、「夜でもいくらでも飲める」という、 なんだか知らない安心感がいいのかモしれない。
それにしても、このごろは菜の花のおひたしがうまい季節だね。 そして八朔もいい。新山はミカン類の中ではおそらくハッサクが一番すきだ。
…おっと、ここに書いたのはみんな昨日のことだった。
人はつねに、学べばわかるより良い方法よりも、慣れてしまったより悪い方法を使うことを好む。-- ルソー
ネット上の争いは、パラリンピックみたいなもんだ。
勝ったほうも負けたほうも、どっちもショーガイ者。
-- TheAmazingAtheist
ひどいジョークだが笑える。 新山は「障害(碍)者」という単語がキライだが、けっこう使ってしまう時がある。 しかしこの単語はその非科学的な響きのために、あまり真面目な文脈で 使われることはない。語感としては「B型人間」とか「九州男児」とかのニュアンスに近い。 「障害者」「健常者」というカテゴリ分けを本気で信じてるやつがいたら怖い (ただ、世の中そういうやつがホントに存在してるんだけど…)。 言葉というのは、それが存在すること自体が、弁別性 (の幻想) をつくりだす。 やっぱり言霊ってやつは、実在するんだよ。
ワーオ! 松山千春! (←とくに意味なし)
どうでもいいけど、後半のブラックアウトは何だ??
実家から野沢菜が送られてきた。新山家でこのところずっと買っている既製品の野沢菜は、 岡本商店の野沢菜しょうゆ漬け。 ウマすぎて高血圧になること必至。これは日本中どこへ持っていってもうける。 大学時代には下宿のおばさんに毎年かかさず届け、研究室でも大ウケで、 タナカ先生に「新山君が今年も野沢菜をもってきてくれるといいな」と言われるほどの人気であった。
むかしは、うちの母方の祖母が漬けた野沢菜が世界一だと思っていた。 しかし、おもに塩を使ったバアちゃんの野沢菜に対して、 岡本商店のはかなりコクのある風味になってる。そしてその祖母もいまは 病院のベッドで口をきくことすらできない。うちの母もいまは手間がかかるので 自分で野沢菜をつくらなくなった。ということは…なんと! ここでオレがやらねば技術が失われてしまうではないか!
(この時刻は一体何だ? 昨日はカゼで1日中寝すぎたので、今朝は早く起きすぎちゃったのです。)
「団結」という言葉を見るたび思うこと。「団結」という言葉を好むのは たぶん精神的に弱い人間だと思うが、こういう人々が“団結”しても、本当に強くはなれない…と思う。 たぶんね。強くなったような気はするだろうし、実際外部からみれば凶暴化しているのだろうが、 「凶暴さ == 強さ」ではない (むしろきわめて逆である)。それは酒の力を借りているようなものだ。 一時的なものと割り切って使うのならばいいが、多くの人はアルコール中毒は有害とみなすのに、 “団結”中毒は有害とはみなさない。これは問題である。云々。
(追記) ちなみに、一部の人々は団結ではなく「連帯」という用語を使う。生協とか。
加えて、以下の出費内訳:
またムダなことに時間を使っちまった。
てくるで (とこでろ)、世の中にはアホな人々がごまんといるが、 彼らがつねにアホなことばかり言っているかというとそうではなく、 時々はまともなことも言う。これが問題だ。 逆に、マトモな人でも本当にマトモなことを言うのはいつもではなく、 ほとんどの場合はアホなことを言っている。だから世界はむずかしい。
うん、おそらくは。
正確には、お役人の態度は承認前と後で一変する。つまり:
以前のジコミャー (事故米) 騒ぎでもそうだったが、この手の詐欺ってのは、 どうも微妙な共犯関係を感じる。いくらお役人が「業者にだまされた」とか言っても、 それは役人が個人的に被害を受けたわけではない。どっちの側にとっても、 あくまで担保となっているのは、しょせん「人の安全」「人のカネ」である。 対等な責任が双方向に発生してるわけではない。だから似たようなことは今後も しょっちゅう起こるだろう。
しかし、国民の血税を使うってのは大変なんだなあ、と思った。なによりも手続き的に大変。 なんしろ、すべての買いモノに「見積書」「納品書」「請求書」「領収書」の 4枚の書類および商品の写真と検品のハンコが必要なため、 ビックカメラに行って電源タップ一個を買ってくるのにも店員にいちいちこれらの書類を 書いてもらわねばならない。その後帰ってきてデジカメで写真をとって、それらの資料を後生大事に保管しておく。 エクセルは大事なお友達です…が、OpenOffice.org のエクセルもどきではテキストを コピーするとなぜか 30秒ぐらい固まりやがる。といって、Gnumeric ではマクロの互換性がない。 くそったれ。こうした手続きがあまりに煩雑なため、よほどの高額備品でないとそれだけの労力に見合わない (ちなみに、そういう物品はたいてい一般人にとっては粗大ゴミ同然のオブジェなので、 研究が終われば破棄されることになる)。 電源タップとかの備品は「もう自腹で買うからいいよ」って気分になる。 にもかかわらず、塵もつもればそんな費用だけでも結構ムカつく額になり、 しかも研究に本当に必要なパソコンなどは、高額のくせに 「研究以外の目的にも使えるから」って理由で却下されてしまう。バカ。 「政府公認仕様で、絶対につまんない用途にしか使えないパソコン」ってのを、誰か作ってくれ!
これは日本の大学で研究をしている人ならすでにみんな知っていることなのだろうけど、 はっきりいって、このテの“研究”プロジェクトで実際に“研究開発”なる活動をしているのは、 ただのモラトリアム大学院生 (ある意味、実験動物) か、あるいは本物の実験動物でも勤まる 程度のことをしているにすぎない (新山も含めて)。本当に称賛に値する仕事をしているのは、 経理をはじめとする裏方の事務作業をする人々である。にもかかわらず、 これらの人々の人件費は「研究予算」の中に入れてもらえない。 なにかオカしいよね。。。
カゼっぽいが花粉か。
いまの状態で、ただひとつ言えるのわ、聴覚障害者と意思疎通するのは難しいということである。 はっきりいって、盲人と意思疎通をするのは、ある意味簡単だ。なぜなら彼らは ふつうに日本語を喋るのだから。しかし聾者はそうではない。たとえ彼らと飲み屋をハシゴしたとしても、 「誤解の恐れ」はどっかに残っている。でもそんなことを恐れている暇はない。 たとえ誤解の可能性があろうとも我々はチャレンジしてみるしかないのだ。 そしてアルコールはそのための大きな助けである (願わくば、の話だが)。
じつは先週から、空き時間はずっとプログラミングをしている (先週末はほとんど家から一歩もでず、文字どおりプログラミングだけで週末がおわった)。 新山は、コードが完成に近づいてくると無口になってくるのだが、 これが日記を書きたい気分にならなかった理由かもしれない。
仕事のほうはといえば、会社のマシンに Vista を入れ直した。これって拷問。 Debugging Tools for Windows を入れて NT kernel のフラグをいろいろいじっていたら、 起動しなくなってしまったのである。アホめ…と言いたいところだが、これは自分もちょっと悪い。 それで OS ごと再インストールというアホな経験をした。 元の環境に戻すのに1日半かかった (とにかくバカデカいツールが多いのである)。 そのあとも、謎のメモリリークに悩まされて Process Explorer とにらめっこしたり というハードな1週間だったが (結局、うちのバグじゃなかった)、 これらはすべて解決した。来週はもうちょっと おだやかな週にしたいもんだと思う。
さいきんの youtube 三態。
さて…ようーやく、“例のプログラム”が、実用的にオッケーらしい、ということが確認できた。
例のプログラムとゆうのは、Python の型推論のことである。
このプログラムは Python コードを静的にスキャンし、変数がとりうる可能な型を推測し、
起こりうるすべてのエラーと例外を列挙する。たとえば、以下のようなコード grep.py
があるとする:
import sys, re def grep(pattern, filename): pat = re.compile(pattern) fp = file(filename) i = 0 while 1: line = fp.readline() if not line: break if pat.search(line): return i i += 1 return None if __name__ == '__main__': print grep(sys.argv[1], sys.argv[2])
ここから以下のような出力が得られる:
上の出力では、関数$ ./check.py grep.py === grep.py === loading: 'grep.py' loading: 'stub/sys.py' loading: 'stub/re.py' [__main__] re = <Module re (stub/re.py)> sys = <Module sys (stub/sys.py)> ### grep.py(3) # called at grep.py(16) def grep(pattern=<str>, filename=<str>): fp = <file> i = <int> line = <str> pat = <instance .re.Pattern> return <NoneType>|<int>
grep()
が None型あるいは int型を返すことが示されている。
きょう、実際にある程度の規模のコードを現実的な時間で解析できそうだ、ということがわかった。
いまのところ、5000行ぐらいの Python コード (pdfminer 本体) を解析するのに 5分ほどかかる。
再帰や循環的データ構造を使っていてもオッケー。
もうちょいスピードアップしたいが、まだなんともわからない
(最終的にはもっと遅くなるかもしれない)。しかし、とりあえず無限ループにも
指数的爆発にも陥らずに計算可能のよう…に見える。たぶん、理屈としては合っていると思うけど、
correctness を論理的に証明できているわけではない。
それにしても、ここに来るまでにはかなりのウヨ曲折があった。 いったいオレは、こいつにどれくらい時間をかけているのか? 少なくとも 去年の3月には言及があるから、 1年近くやっていることになる。当初は 1〜2ヶ月程度でできるかと思ってたら、違った。 途中で何度となく「これは原理的に不可能なのでは?」という疑念にとらわれて、 しばらく放ったらかしにしてた時期もあったが、どういうわけか今回は執念深さがある。 はっきりいって、このプログラムには自分のこれまでの人生の中でも いちばん頭を使っていると思う。これほど複雑怪奇な原理を考えたことはこれまでになかった。 ほんとに。休日に 1日じゅう、ウンウン考えているだけ、という日もあった。 最近は休日ともなれば朝からコードを書いて、煮詰まってくると外出し、帰ってきてはまたコードを書く、 というかなり病的な生活をしていた。これはホントに頭がクルってきますよ (まあ、もとからですが)。 この 1年でかなりの時間をこれに費やしていたが、その甲斐があったのか…? どうかは、まだ疑問だ。
もう寝る。
Document ID: bb51997bfb2baace96156a209efdfc45
Yusuke Shinyama