2001-08-01
λ. Rubyの定数参照
以下のコードが何故NameErrorになるのか、とっさに答えられなくて困った。う〜む。
module Hoge module Constants Test = "test" end include Constants module M def test Test end module_function :test end end Hoge::M::test
λ. int/int=?
性能に問題ないならRationalが一番自然。FloatだとExactnessが保存されないようで気持悪い。
λ. 千と千尋の神隠し
を見て来た。気楽に見れたけど正直なんか物足りない。「ナウシカ」や「もののけ姫」で描かれたような、自然との対立と共存といったテーマに触れているわけでもなく、ただのオヤジのノスタルジーのような気が… まあ、出来は良かったと思うけど。
あと、猿の惑星かAIを見ようかと思ったけど、2時間近く待つのがたるかったので止めた。
λ. RPM
Kondara 2.0に入れ換えた。サポート外のPC-98なので手作業でRPMをババソと突っ込む。しかし、毎度の事ながらRPMにはイライラさせられるなぁ。つうか、悪いのはパッケージングなんだけど。
今回苦しんだのは、ncursesね。自分で勝手にパッケージングして使ってた幾つかのパッケージとかがncurses-4.2-24kの/usr/lib/libncurses.so.4に依存しててたんだけど、Kondaraの新しいパッケージはncurses-5.2-14kの/usr/lib/libncurses.so.5に依存してて、あちらを立てればこちらが立たずといういつものパターンに。
ELFのシェアードオブジェクトはメジャーバージョンが違えば、バイナリ互換性もなくて、実質的に違うライブラリなんだから、パッケージングする際にはそのあたりに配慮して欲しいものだ。自動リビルドとか、あるいはapt-getやmph-getみたいな根こそぎアップデートツールも結構だけど、元のパッケージがこれじゃあねぇ〜
というわけで、とりあえず--nodepsでncurses-5.2-14kの方を入れたけど、あとでncurses4というパッケージを別に作ってインストールすることにしよ。
2003-08-01
λ. Topology via Logic 進捗
Chapter 3 の途中まで読んだ。
本題には関係ないのだけど、preorderを同値関係「a≦b∧b≦a」で割ってposetを作るのが、forgetful functor Posets→Preorders の left adjoint になってるってのはちょっと新鮮だった。
λ. バイト
ちょっと凹む。打たれ弱いなぁ、俺。
λ. ルパン三世 お宝返却大作戦
ルパンはいいね。
2004-08-01
λ. お昼
純広東家庭料理「嘉賔(KAHIN)」。
λ. Haskellマラソン 2日目
最後にキューの話で議論が白熱していた。なんか良くわからなかったけど。
λ. Queueの話 (1)
結局Prologでの以下のコードに相当するものは実現出来ないのか?、という話だったんだろうか。KL1がどうこうとか言ってたし……
makeQueue(queue(X,X)).
isEmpty(queue([],_)).
enqueue(queue(X,[A|Y]), A, queue(X,Y)).
dequeue(queue([A|X],Y), A, queue(X,Y)).
appendQueue(queue(X,Y), queue(Y,Z), queue(X,Z)).
λ. Queueの話 (2)
あと、キューは代数的仕様記述(Algebraic Specification)が出来ないんじゃないかと言ってしまったが、そうでもないような気がしてきた。以下の記述は代数的仕様記述としてどうなんだろう?
Sorts: E,Q
Operations:
empty: Q
enqueue: Q×E → Q
dequeue: Q→Q
front: Q→E
isEmpty: Q→Bool
Axioms:
isEmpty(empty) = true
isEmpty(enqueue(q,e)) = false
dequeue(enqueue(q,e)) =
if isEmpty(q)
then empty
else enqueue(dequeue(q),e)
front(enqueue(q,e)) =
if isEmpty(q)
then e
else front(q)
2006-08-01
λ. 風俗嬢の末路
あろはさんのmixi日記より。最初テキストを読んだときはあまり感じるものはなかったんだが、写真を見てショックを受け、テキストを読み返したら本当にいたたまれなくなった。なんというか……言葉が見つからない。
他人事と思い、汚らしいと蔑む人や、自業自得と言う人もいるけれど、それは少し違うんじゃないかと思う。人類の歴史を見れば太古の昔から売春はあり、売春の存在しなかった文明などまずないだろうし、これからも売春が無くなるとは考えにくい。善悪はともかく、売春というのは現在の社会や文明のシステムの一部と言ってよい。そして私もこれを読んでいるアナタもこの社会に生まれこの社会に依存して生きている。自分が直接関わっていないからといって、蔑み悪意を投げつける気にはなれない。
どのような経緯で彼女が風俗嬢になったのかは分からないが、彼女に救いがあることを心から願う。
λ. MAD PEOPLE 用の発言フィルタ
例によってGreasemonkeyを利用した発言フィルタを作った。 Greasemonkeyをインストールし、上のファイルを右クリックし「Install User Script」を選択すればインストール出来る。使い方は MAD PEOPLE のエピソードを表示してみればわかると思う。
【追記】 スナッチによって生者で死者で同じ顔の人がいる場合、区別するようにしたほうが良いのかな?
【8/17追記】 本体に発言フィルタが追加されたようなので、もう不要かな? 発言フィルタの位置をfixedにする機能だけ残したものにした。madpeople-fix-message-filter.user.js
関連
- 人狼用の他のGreasemonkeyスクリプト
λ. 4日で学ぶモデル検査: 4日目
「プログラムのテスト」について。プログラム中にタイプミスをするよりは、プログラムのモデルを作る際にミスを犯す可能性の方がよほど多そうに思える。プログラムのテストを行うには、ソースコードからモデルを作成する部分をある程度自動化する必要があるように思う。
「自動販売機」については、面倒くさかったというのが最大の印象。仕様からきちんとしたモデルを作り検証するのはやっぱり大変。
……というわけで読了。いい本だった。続きの本が読みたいな。
2007-08-01
λ. 「トランプの和と積のパズル」と様相論理
どう書く?.org に「トランプの和と積のパズル」という問題があった。
プログラムを書いて答えを求めることは難しくないのだけど、この手の問題を見るたびに様相論理で一般的に扱えないのかなと思ってしまう。 思っただけでちゃんと考えたことがなかったので、少し考えてみようと思う。
知識論理
こういうのを扱う様相論理として知識論理(Epistemic logic)がある。 知識論理は様相論理の一種で、□φを「φであることを知っている」と解釈する。 そして、知識論理の □ は様相論理でいうところの S5 様相になっていることが仮定される。これはつまり、以下の形の論理式が成り立つということである(ただし、◇φ := ¬□¬φ)。
- K(φ,ψ) := □(φ→ψ) → □φ → □ψ
- φ→ψ であることを知っていて、更に φ であることを知っているなら、ψ であることも知っている。
- T(φ) := □φ → φ
- φであることを知っているのなら、φである。
- 5(φ) := ◇φ → □◇φ
- 「φでないことを知らない」のなら、そのことを知っている。
さらに、ここから以下のようなことも言える。
- D(φ) := □φ→◇φ
- φであることを知っているなら、φでないことは知らない。
- B(φ) := φ→□◇φ
- φならば、「φでないことを知らない」ということを知っている。
- 4(φ) := □φ→□□φ
- φであることを知っているなら、そのことを知っている。
背景知識
Num := {1..13} として、原子論理式の集合 { N({m,n}), S(m+n), P(m×n) | m,n∈Num } が与えられているとする。それぞれの意図している意味は次の通りである。
- N({m,n})
- 二枚のカードの数字がm,nである。
- S(n)
- 二枚のカードの数字の和がnである。
- P(n)
- 二枚のカードの数字の積がnである。
以下のような論理式の集合Φが成り立つことを仮定する。
- ∨{ N({m,n}) | m,n∈Num }
- { N({m,n})→¬N({m',n'}) | m,m',n,n'∈Num, {m,n}≠{m',n'} }
- { N({m,n}) → S(m+n) | m,n∈Num }
- { N({m,n}) → P(m×n) | m,n∈Num }
- { S(n)→¬S(m) | m,n∈Num, m≠n }
- { P(n)→¬P(m) | m,n∈Num, m≠n }
問題の記述
これでようやく問題が記述できる。
ここでは複数の人が登場するので「φであることをXさんが知っている」ということを [X]φ で表す(各 [X] はそれぞれS5様相だとする)。 そうすると、Xさんが数字を分かることは α(X) := ∨{ [X]N({m,n}) | m,n∈Num } で表すことが出来る。
- Aさんは積を知っているので ∨{ [A]P(m×n) | m,n∈Num }
- 同様に、Bさんは和を知っているので ∨{ [B]S(m+n) | m,n∈Num }
- Aさんは(この情報だけでは)数字が分からないので ¬α(A)
- Bさんも(この情報だけでは)数字が分からないので ¬α(B)
- BさんはAさんが「分かりません」というのは分かっていたので [B]¬α(A)
これを聞いたあとのAさんが知っているということは、元のAさんが知っているということとは別なので、[A1] という様相で扱うことにする。
- Aさんが元々知っていた事はすべて知っているので、[A]φ → [A1]φ
- 今聞いた情報を知っているので [A1](¬α(B) ∧ [B]¬α(A))
- それを聞いて答えがわかっているので α(A1)
同様に、これを聞いたあとのBさんが知っているということを [B1] という様相で扱うことにする。
- Bさんが元々知っていた事はすべて知っているので [B]φ → [B1]φ
- 「Aさんに話した内容をAさんが知っている」ことを知っているので、[B1][A1](¬α(B) ∧ [B]¬α(A))
- 今聞いた情報を知っているので [B1]α(A1)
- それを聞いて答えがわかっているので α(B1)
どうやって解くか
こうやって論理式で記述できたら、後は定理証明器やモデル検査で答えが求まらないものだろうか。 それはまた今度考える。
2008-08-01
λ. 任天堂、複製したDSソフトを起動する「マジコン」販売業者を提訴
特許・著作権・商標の侵害とかではなく、不正競争防止法でのアクセスコントロールの迂回装置にあたるかが争点なのね。ちょっと意外な感じが……
2009-08-01
λ. 『整理HACKS!—1分でスッキリする整理のコツと習慣 』 小山 龍介
読了。 この手のHACKS本にはあまり興味を持っていなかったが、いくつかは参考になりそうなものがあったので読んで良かった。
04 ドキュメントスキャナーでデジタルデータに変換する
前々から欲しかったのだけど、ScanSnap買おうと思った。
06 SugarSyncで「どこでもオフィス」を実現する
SugarSyncは知らなかった。Dropboxに似ているけど、主な違いは任意のフォルダを同期できることと、iPhoneアプリが既にあること。結構いいかも。無料版が2GBだけど、上の紹介リンクからアカウントを作ると+500MBボーナス。
WebインターフェースはDropboxの方が全体的に使いやすいと思った。ダウンロードするときにファイル名の非ASCII文字が化けたりもするし。
iPhoneアプリは使いやすい。 ただ、音楽の再生機能があるからだと思うが、起動時にiPodで再生中の音楽を停めてしまうのは、ちょっと困り者だと思うけど。
30 IMEバーは上端中央に置く
「おお、これはいい」と思ったんだけど、Chromeのウィンドウを最大化すると、ちょうどタブと重なってしまう。
40 RSSリーダーで情報収集を仕組み化する
紹介されていた、Google Reader と動機できるiPhone用のRSSリーダーのFeedsを購入した。 同種のものには、Bylineというのもあるらしいが、どっちがよいのだろう。
52 通販を活用して生活をシンプルにする
文房具等の通販をしているぽちっとアスクルは知らなかった。 今度使ってみよう。
73 マインドマップを使って情報のネットワークをつくる
そういえば、「マインドマネージャ」は勝間本でも紹介されてたな。
85 個人のオリジナル名刺をつくる
名刺作成サービスのアイボスは今度使ってみようと思った。