2001-08-24
λ. 最近は、なにやら脈絡の無い夢が多い。その不可解さがいらだたしい。
λ. Script-Fu メニューでもアイコン表示 (from 他力本願な日記・改)
gimp メニューにアイコン表示が更に進化。すげーぜ。よし、Ruby-FuにもRF_MENUICONを追加するか。どうせRF_PREVIEWも考えてたし、引数情報以外も登録できるようにしておくと、何かと良いかも知れん。
ちなみに、以下のようにあるけど、MenuItemウィジェットには任意のウィジェットを張り付けることが出来るので、その機能が提供されないItemFactoryをGNOMEが使ってないって事だと思う。
とここまでやってから気づいたのですが,Gnome のパネルのメニューにはそれぞれの項目のアイコン画像が貼り込まれているんですね.テキストの列揃えもできています.その機構を持ってくればよかったのかも...Gtk にはこの機能はないようだったんですが,それに基づいているはずの Gnome ではどうやって実現しているのでしょうか?
λ. メルマガ「小泉純一郎を斬る!」
の第4号で興味深い事が書いてあった。以下に部分的に引用しよう。
いいかえれば、冷戦とは民族解放運動封じ込めの体制として成立し、ソ連(スターリン主義)はその体制の補完物としての役割を果たしたのである。
日本をめぐっても同様のことが言える。アメリカは冷戦下で、日本を日米同盟−西側陣営に組み込むために、中国市場に代わる市場として東南アジアを日本に提供することを構想し、東南アジア諸国の日本に対する戦争賠償要求の抑え込みを図った。そして、38度線での冷戦対峙の構造の下で、韓国民衆による日本の戦争責任追及の声が抑え込まれてきた。だからこそ、冷戦が終焉した1990年代、元従軍慰安婦の人たちをはじめとする韓国、アジアの民衆による日本の戦争責任追及の声が一斉に吹き出てきたのである。
日本国内での靖国問題−戦争責任問題をめぐる議論では、こうした時代認識が圧倒的に希薄だと思うのである。
僕自身は、「戦争後一世代を経て1980年までには戦争の過去はすでに政治家の手を離れ歴史家の手に移っていて、それを意図的に堀り起こして政治問題にしたのは、1982年以降の日本の左翼反体制運動と、謝罪外交に味をしめた中韓。」という認識しか無かったけど、「戦争責任追及の抑え込み」ってホント?
λ. BASTARDのキャラクター名の綴
HAQ BOARDに出て来たので、メモメモ。
ダーク・シュナイダー | DARK・SCHNEIDER |
ルーシェ・レンレン | RUSIE・RENREN |
ティア・ノート・ヨーコ | TIARA・NORT・YOKO |
ジオ・ノート・ソート | GEO・NORT・SORT |
ガラ | GARA |
アーシェス・ネイ | ARSHES・NEI |
カル=ス | KALL=SU |
アビ | ABIGAIL |
ラーズ | LARZ ULU META=LLICARNA |
シーラ | SHEERA TUEL META=LLICARNA |
シーン | SEAN HARRI |
カイ | KAI HARN |
ダイ | DI AMON |
λ. 借りた本
- 小説すばる 2001年4月号
- 「贈りもの」 ダニエル・スティール(Danielle Steel)[著] 天馬龍行[訳]
- 「ナニワ金融道 金と非情のサバイバル講座」 青木雄二[監修]
- 「グローバル経済を動かす愚かな人々」(The Accidental Theorist And Other Dispatches from the Dismal Science) ポール・クルーグマン(Paul Krugman)[著] 三上義一[訳]
2002-08-24
λ. 今日も起きたのはお昼頃。
λ. HAQ Board
が荒れてる。悲しい。
λ. コンパイル猿
というわけで、以下のようなパッチ(#91683)を当てることで、何とかそれっぽく動くようになりました。ウィンドウが表示されてから数秒で暴走するんですが、とりあえずスクリーンショット。
--- gtk+-2.0.6/gdk/win32/gdkevents-win32.c~ 2002-03-06 09:36:08.000000000 +0900 +++ gtk+-2.0.6/gdk/win32/gdkevents-win32.c 2002-08-24 00:38:16.000000000 +0900 @@ -126,7 +126,9 @@ NULL }; +#ifdef G_OS_WIN32 GPollFD event_poll_fd; +#endif static GdkWindow *current_window = NULL; static gint current_x, current_y; @@ -317,10 +319,12 @@ source = g_source_new (&event_funcs, sizeof (GSource)); g_source_set_priority (source, GDK_PRIORITY_EVENTS); +#ifdef G_OS_WIN32 event_poll_fd.fd = G_WIN32_MSG_HANDLE; event_poll_fd.events = G_IO_IN; g_source_add_poll (source, &event_poll_fd); +#endif g_source_set_can_recurse (source, TRUE); g_source_attach (source, NULL); @@ -3441,11 +3445,15 @@ GDK_THREADS_ENTER (); +#ifdef G_OS_WIN32 if (event_poll_fd.revents & G_IO_IN) +#endif retval = (_gdk_event_queue_find_first () != NULL) || PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE); +#ifdef G_OS_WIN32 else retval = FALSE; +#endif GDK_THREADS_LEAVE ();
PeekMessage()で単純にポーリングするとすごい効率悪そう。Win32でメッセージって普通どうやって扱うんだっけなぁ…… Delphiしか使ったことないので、良く分からなかったり……
2004-08-24
λ. "A New Method for Functional Arrays", Melissa O'Neill, F. Warren Burton
Syntax Error (2004-08-20) より。配列の外にバージョン管理の情報をつけるのではなく、配列の要素に構造を持たせて、要素レベルでバージョンの管理をする fat element という方法を提案している。「へぇ、こんな方法があるんだ」と感心。計算量はsingle-threadedならO(1)。single-threadedでなくてもアクセスが一様なら、amortizedな計算量でO(1)。それ以外はamortizedな計算量でO(log n)か。結構いいね。
2007-08-24
λ. チャーチ・ロッサーの定理の証明
先日は「燃え尽きたので中断する」と書いたが、どうにも気になって頭から離れずモヤモヤしていたら、今日の飲み会中にアイディアを思いついて、結局証明できた。 まだ整理できていない部分が多いが、こんな感じになっている。
【2007-09-09追記】 Frank Pfenning が A Proof of the Church-Rosser Theorem and its Representation in a Logical Framework で LF (の実装のElf)で証明を表現している。後で比較する?
λ. 同期飲み会
2008-08-24
λ. 量子テレポーテーションの行列計算
QMLから量子回路へのコンパイルでは以下のTeleのコンパイル結果の量子ゲートを見てみた。
-- The Teleport algorithm Tele (a,qb) |- let (b,c) = Epr () in let f = Bnmeas (a,b) in U (c,f) :: qb;
結果は1qubitの入出力に加えて、2qubitのヒープと2qubitのゴミがある回路だったのだけど、ヒープの初期化と最後の観測を除いた回路本体は3qubitの入出力を持つ回路になっている。この部分はユニタリー変換になっているはずなので、行列に変換してみる。
Prelude QML> s <- readFile "teleport.qml" Prelude QML> let QAux.OK tele = pTCirc "Tele" s Prelude QML> QCirc.comp (QTyCirc.circ tele) OK Row/Input Arity = 3, Column/Output Arity = 3, ([True,True,True],[False,True,True],0.4999999999999999 :+ 0.0) ([True,True,True],[False,True,False],0.4999999999999999 :+ 0.0) ([True,True,True],[False,False,True],(-0.4999999999999999) :+ 0.0) ([True,True,True],[False,False,False],(-0.4999999999999999) :+ 0.0) ([True,True,False],[True,True,True],0.4999999999999999 :+ 0.0) ([True,True,False],[True,True,False],(-0.4999999999999999) :+ 0.0) ([True,True,False],[True,False,True],0.4999999999999999 :+ 0.0) ([True,True,False],[True,False,False],(-0.4999999999999999) :+ 0.0) ([True,False,True],[False,True,True],0.4999999999999999 :+ 0.0) ([True,False,True],[False,True,False],(-0.4999999999999999) :+ 0.0) ([True,False,True],[False,False,True],(-0.4999999999999999) :+ 0.0) ([True,False,True],[False,False,False],0.4999999999999999 :+ 0.0) ([True,False,False],[True,True,True],0.4999999999999999 :+ 0.0) ([True,False,False],[True,True,False],0.4999999999999999 :+ 0.0) ([True,False,False],[True,False,True],0.4999999999999999 :+ 0.0) ([True,False,False],[True,False,False],0.4999999999999999 :+ 0.0) ([False,True,True],[True,True,True],0.4999999999999999 :+ 0.0) ([False,True,True],[True,True,False],0.4999999999999999 :+ 0.0) ([False,True,True],[True,False,True],(-0.4999999999999999) :+ 0.0) ([False,True,True],[True,False,False],(-0.4999999999999999) :+ 0.0) ([False,True,False],[False,True,True],(-0.4999999999999999) :+ 0.0) ([False,True,False],[False,True,False],0.4999999999999999 :+ 0.0) ([False,True,False],[False,False,True],(-0.4999999999999999) :+ 0.0) ([False,True,False],[False,False,False],0.4999999999999999 :+ 0.0) ([False,False,True],[True,True,True],(-0.4999999999999999) :+ 0.0) ([False,False,True],[True,True,False],0.4999999999999999 :+ 0.0) ([False,False,True],[True,False,True],0.4999999999999999 :+ 0.0) ([False,False,True],[True,False,False],(-0.4999999999999999) :+ 0.0) ([False,False,False],[False,True,True],0.4999999999999999 :+ 0.0) ([False,False,False],[False,True,False],0.4999999999999999 :+ 0.0) ([False,False,False],[False,False,True],0.4999999999999999 :+ 0.0) ([False,False,False],[False,False,False],0.4999999999999999 :+ 0.0)
げ、QMLって内部的には横ベクトル使ってるの? まあ、今更記法を変えるのもアレなので、縦ベクトルに対する線形写像としての行列で書くと、以下のような行列が得られる。
これを (α|0〉 + β|1〉)⊗|00〉 に作用させると、以下のようになり、確かに入力の1qubitはそのまま保たれていて、さらにヒープの2qubitが計算後にはゴミになっていることがわかる。
U ((α|0〉 + β|1〉)⊗|00〉)
= U ((α|000〉 + β|100〉)
= (1/2) (α(|000〉 + |001〉 + |010〉 + |011〉) + β(|100〉 + |101〉 + |110〉 + |111〉))
= (α|0〉 + β|1〉) ⊗ (1/2)(|00〉 + |01〉 + |10〉 + |11〉)
ただ、これだけ見ていると、ヒープとゴミがある分、どうしても恒等写像という感じじゃないんだよなぁ。
こうなってしまうのは、有限次元ヒルベルト空間とユニタリー変換のなす圏を暗黙に考えていたせいで、ユニタリー変換でない「観測」や「ヒープの初期化」を圏の内部では扱えないというのが原因だろう。 QML: A functional quantum programming language によれば、ヒープの初期化を扱うためには射 f : A→B をユニタリー変換からisometryに一般化した圏を考える必要があり、観測を扱うにはさらに射 f : A→B をA上の密度行列からB上の密度行列へのsuperoperatorへと一般化した圏を考える必要があるそうだ。
QMLにはそれらへのコンパイル機能もあるようなので、それもまた今度試してみたい。