トップ «前の日(11-09) 最新 次の日(11-11)» 追記

日々の流転


2001-11-10

λ. 部品単位のコードから文字単位のコードへのiconv

ruby_m17nからはじまってこんな事を書いて、自分でも「ホントか?」とか思ったのでちょっと考えてみた。

λ. 結論から書くと、「結合できない部品が現れるまで最後の文字を確定できない」事の帰結として、変換を終了する際のiconv_closeを呼ぶ前に、iconvをinbufをNULLにして呼び出して、状態を初期状態に戻す必要がある(はず)。

λ. 簡単な場合で考えよう。出力エンコーディングの「文字」は、入力エンコーディングではベースの部品に0個以上の結合部品を連結して表されるとする。そして、ベースの部品はアルファベットで、結合用の部品は記号で表す事にする。

で、iconvが「A ^ : B」という列を受け取ったとする。Bまで読んだ時点で結合できない部品に出会ったので、「A ^ :」で出力エンコーディングの「1文字」が決定できて「:」まで変換出来る。が、その後どうなるかが問題。バッファの中には存在しないけど、実際の「B」の後には結合部品が続いて入力されるかもしれないので、この時点で「B」を変換してしまうことは出来ないのね。では、どうするか… Bは単独でも正しい文字なのでEINVALを返すのは変だし、そもそもEINVALで突っ返したりすると、「B」の直後で変換が終了する場合に、どうやっても「B」を出力エンコーディングの1文字に変換できない。だから「B」を受理してiconv_tの「状態」を遷移すべき。(幸いにしてiconv_tは明示的に初期化/破棄されるので、ポインタを含む任意の情報を持たせることが出来る) そして、iconvがinbufをNULLにして呼ばれて、状態を初期状態に戻す際に、やっと「B」を1文字と確定できて出力できる。

λ. このinbufをNULLにしてのiconvの呼び出しって、glibcのinfoにもnecessaryと書かれているし、もともと必須なものだと思うけど、これってつい忘れがち…、っていうより実際忘れているソースの方が多く出回っていそうな気がする。I18Nハンドブックの例もこれをしてないし。

あ、I18Nハンドブックってのは「国際化プログラミング - I18N ハンドブック」(ISBN4-320-02904-6 通称「いっちまっえーん」)の事ね。

本日のツッコミ(全3件) [ツッコミを入れる]

ψ なかだ [inbufをNULLにしての呼び出しがバグってるiconvなんかもあったりしますが。]

ψ さかい [そういえばmgeditというエディタのソースでは、inbufをNULLにしての呼び出しの部分に「Write the ..]

ψ なかだ [同じくglibc-2.1で、outlenとかoutbufにでたらめな値を返すので長さ が分からないというバグだったの..]


2002-11-10

λ. 乙一氏の「陽だまりの()」にすっかり意表をつかれる。全く素晴らしい。氏の他の作品も読みたくなった。

λ. C++: 水面下の仕組み / C++: Under the Hood

を読んで、アジャスタサンクとデルタフィールドについて理解した(と思う)。読んでみたら割と簡単だったので少し拍子抜け。

11/1に読んだ Java/C++ integration で「C++で多重継承持の仮想関数の実装方法に delta fieldthunk がある」と読んでから、気になっていたのでした。

λ. 某氏

これだけ色々な場所で色々と書かれている事に、当人は全く気が付いていないのかしら。素朴な疑問。

本日のツッコミ(全2件) [ツッコミを入れる]

ψ 小熊善之 [「日だまりの詩」は「陽だまりの詩」の誤りではないかと。あれ、でも単行本化されてはいなかったような気が……。]

ψ さかい [あ、ホントだ。 良く気が付きましたね。(^^;) 直しとこ…… > あれ、でも単行本化されてはいなかったような気が..]


2003-11-10

λ. 衆議院選挙 (2)

あッはっはッはっはっは
あの民主党がまるでボロ雑巾じゃないか
やっぱり強いなぁ!! 自民党は!! 
べらぼうに強いな!! 存外に強いな!!

とか書こうと思ってたのですが、ちょっとだけアテが外れた。……それにしても、公明党は例によっておいしい立場ですなぁ。

Tags: 時事

λ. A.D.2003

。っていうか、今年は存在自体をすっかり忘れていて、申し込んでなかったんだけどね。

λ. CMU student taps brain's game skills

日誌(2003-11-07) より。おもしろーい。

Tags: URL

λ. yap - yet another prolog (sourceforgeのページ)

The Yap Prolog System is a ISO-compatible high-performance Prolog compiler. Yap is widely considered one of the fastest available Prolog systems. Yap supports coroutining, CLP(QR), CHR, and depth-bound search. Tabling and parallelism are in development.

こないだ向井先生が紹介していた処理系。freeze とか rational tree とか使えるらしい。

cygwinでビルドしようとしたら、-mno-cygwinでビルドしだした。しかし「gcc -shared」には-mno-cygwinがついていなくて、__findfirst, __findnext, __errno などのシンボルが未定義になってしまう。とりあえず安直なパッチ


2004-11-10

λ. Method#to_proc

lambda{|&f| f.call }.call{ p :ok }
#=> ok
 
def foo(&f)
  f.call
end
method(:foo).to_proc.call{ p :ok }
#=> undefined method `call' for nil:NilClass (NoMethodError)

Method#to_procで作ったProcにはブロックが渡らないのかな。(ruby 1.9.0 (2004-11-10) [i386-cygwin])

[追記] [ruby-dev:25031]

[追記] eval.c (rev 1.742) で修正された。

Tags: ruby

2005-11-10

λ. 人狼審問 発言ポップアップ Greasemonkeyスクリプト

ふと、人狼審問で「>>21」のようなアンカーにポインタを置いたときに指している先の発言をポップアップするGreasemonkeyスクリプトを作ってみた。

最新版は下にあるバージョン2で、Firefox+Greasemonkeyだけでなく、IE+TrixieとIE+TurnaboutとOperaでの動作確認済み。

バージョン1

jinroh-shinmon-respopup.user.js

最初に作ったのがこれ。 同じファイルの中にある発言しか表示できないという制限がある*1けど、それなりに便利かな。Greasemonkey のインストールされた Firefoxjinroh-shinmon-respopup.user.js を右クリックして「Install User Script...」を選択することでインストールすることが出来ます。 なお、実装はbbs2chreaderのrespopup.jsをほんの少し改造しただけのものです。手頃なコードを公開してくれていたbbs2chreader作者のflyson氏に感謝します。

スクリーンショット

【2005-11-20追記】 IEでGreasemonkeyと同じことをするTrixieというのを知ったので、IE + Trixie でも動くように書き換えてみた。上のスクリプトを Program Files\Bhelpuri\Trixie\Scripts にダウンロードして、「ツール」メニューの「Trixie Options」から「Reload Scripts」を選択すれば、使用できるようになるはず。しかし、どうでもいいが、IEはいい加減に Document Object Model (DOM) Level 2 Events Specification くらいは対応して欲しいものだ。

IE+Trixieでのスクリーンショット

【2005-11-20追記】 Opera の User Javascript でも動作することを確認した。このスクリプトを「ツール」メニューの「設定」「詳細設定」「コンテンツ」「JavaScriptオプション」「ユーザーJavascriptファイル」で指定したフォルダに置けば使えるはず。

Operaでのスクリーンショット

バージョン2 (最新版)

jinroh-shinmon-respopup-2.user.js

【2005-11-23 追記】 なんだかんだ言って、結局他のページも表示できるバージョンを作ってしまった。これはFirefoxでしか動かないと思う。実装にはXMLHttpRequestではなくiframeを用いた。理由は二点。第一に現在の人狼審問はレスポンスヘッダのContent-Typeにcharsetをつけてくれないので、XMLHttpRequestだと文字化けしてしまうため。第二にXMLHttpRequestを使うとブラウザ自身のキャッシュを利用できずサーバの負荷を必要以上に増してしまう可能性*2があったため。

【2006-04-28 追記】 大幅に書き直し、Firefoxだけでなく、IE+TrixieやOperaでも動作するようにした。あと対応するとしたらSafari+CreammonkeySleipnir+SeaHorseくらいだろうか。

【2006-04-29 追記】 Sleipnir+SeaHorseで動くか試してみた。windowの代わりに_windowを使うようにするとエラーは出なくなるが、登録したイベントリスナが実行されない。setTimeoutなんかで登録した関数も実行されないところをみると、スクリプトの実行が終了した時点で色々と破棄されてしまっているのではないだろうか。これが仕様だとしたらSeaHorse対応は無理だと思われる。質問してみた

【2006-06-01 追記】 IE+Turnaboutでも普通に動作した。Turnaboutの詳しい使い方などは<URL:http://d.hatena.ne.jp/tapot/20050629>を参照のこと。

【2006-06-18 追記】 Sleipnir 2.40 での SeaHorse Extension (テスト版) では動作するようになったようだ。

【2009-10-07 追記】 スクリプトを有効にするサイトに人狼審問ログ保管庫を追加。

【2009-10-29 追記】 ie7proで動作するのを確認した。 [ie7pro にインストール]

他の人狼向け

MAD PEOPLE 用の発言ポップアップスクリプト
MAD PEOPLE 用。
人狼用自作スクリプト一覧
このスクリプトを元にした、欧州用・天国用・人狼物語用のスクリプトなど。Feleanさん作。

*1 この制限はGM_xmlhttpRequestなり何なりを使えば解消できるはずだけど、面倒くさいので(ry

*2  msanolog: [Ajax tips] XMLHttpRequest と If-Modified-Since を参照

λ. PaSoRi をゲット

パソリ(RC-S320)が届いた。早速、EdyやらSuicaの記録をみて遊ぶ。

しかし、EdyViewerは使い勝手があまりよくないな。

Edyチャージのためにはクレジットカードを登録する「サービス登録」が必要らしいので、これを試したのだが「登録内容が不足しております。全ての項目を入力いただいているにもかかわらずエラーとなる場合には、EdyViewerが最新版でない可能性があります。当社ホームページにてご確認の上、バージョンアップを行ってください。詳細コード:EP:I:10011」と言われてエラーになってしまった。本当のエラーなのかバージョンアップで新しいフィールドが必要になったのかくらい勝手に区別しろよ。プロトコルにバージョンが入ってないのかよ!?

とりあえず、最新版をネットからダウンロードしてきたら、確かにクレジットカードのセキュリティーコードを入力する欄が増えていて、入力したら登録できた。しかし、チャージしようとすると「恐れ入りますが、ご使用のEdyカードでのログインはできません。詳細コード:EC:W:90001」といわれてしまう。今度は何が悪いのか分からず、このエラーコードでググって、サービス登録まで時間がかかることがわかった。このエラーメッセージでそこまで理解できたらネ申だと思う。

翌日には無事に登録できていたので、チャージを試したのだが、このインターフェースがまた使いにくい。「3」と「千」の順番にボタンを押して以下の画面になるんだが、この状態で「次へ」のボタンが無効になっているのは何故だかわかるだろうか?

[Edyチャージの画面]

実は「円」ボタンを押してからでないと先に進めないのだ。 なんじゃ、そりゃー!! そんなの分かるわけねーだろ。 一体何のためにそんなボタンがあるのさ!?

関連サイト

Tags: money
本日のツッコミ(全1件) [ツッコミを入れる]

ψ なんか変じゃね? [「"\" 3000」と表示されているのだから、これに円ボタンを押すのは変ですよ? 少なくても日本では「\ 3000円..]


2006-11-10

λ. A note on inconsistencies caused by fixpoints in a cartesian closed category by H. Huwig and A. Poigné

以前に不動点と有限直和を持つCCCというエントリで「取り寄せるのが面倒」とか書いたが、SFCのメディアセンタにもちゃんとあった。そのエントリでは始対象と不動点を持つCCCは縮退しているということを書いたが、それだけでなくほかにも色々言っている。

  • Let C be a cartesian closed category with fixpoints and an initial object. Then C is inconsistent.
  • Let C be a cartesian closed category with fixpoints and coproducts. Then C is inconsistent.
  • Let C be a cartesian closed category with fixpoints and with a NNO. Then C is inconsistent.
  • Let C be a bicartesian closed category with and object D such that [D⇒2] is a retract of D. Then C is an order category with D ≅ 1.

inconsistentな圏というのは全てのオブジェクトが同型な圏。order category は、どのオブジェクトの間にも射が高々1つしか存在しない圏のこと。

Carl Gunter の profinite domains とSFPの話については後で調べる。

Tags: 圏論 論文

λ. コンマ圏と極限錘

図式 F: D→C の錘の圏は、F を 1→CD の関手と考え、Δ:C→CD を対角関手とすると、コンマ圏 (Δ↓F) になっている。この圏の終対象が極限錘。まあ当たり前の事実なんだけど、コンマ圏(comma category)って案外便利だなぁと思った。

\xymatrix{ C \ar[r]^\Delta & C^D & \ar[l]_F 1 }


2007-11-10

λ. VLAN

Tagged VLAN って、世間ではそんなに使われていないんだろうか。

本日のツッコミ(全2件) [ツッコミを入れる]

ψ かめぞう [少なくとも、Ethernetサービス(Yahoo!BBとかFlet'sとか)で通信事業者内部の網では使われまくりです..]

ψ さかい [情報ありがとうございます。やはりちゃんと使われているものなのですね。 確かSFCのネットワークでも使われていましたし..]


2008-11-10

λ. ストリーム上のキモい関数

Wadler's Blog: A bizarre function over streams の関数がキモくて面白い。

(後で書く)

Tags: haskell

λ. デジタルネイティブ度チェック

そんなに大げさに騒ぐような話でも無いとは思うけど、なんか流行っているようなのでやってみた。

「あなたのデジタルネイティブ度は75%」 らしい。


2009-11-10

λ.The Physical World as a Virtual Reality” by Brian Whitworth

うーん。確かに「情報」というのが物理法則のなかで本質的な役割を果たしているという話は色々あって、そういう話の延長として世界が一種のヴァーチャルリアリティとして実現されていると考えるのは自然とは思う。ただ、この人の言っている話って、あまりに安直なコジツケなんだよな。 質量の高い物体の周りで空間が歪曲するのは処理落ちのせいだとか、不確定性原理によってある2つの物理量の組み合わせを同時に観測できないのは、2つの属性が同じメモリを使っていたとしたら説明できるとかさ……。 あと、「観察者(observer)」に関する話とかも変だと思う。

そういえば、Programming the Universe が積読になってしまってるのを思い出した。

Decoding the Universe: How the New Science of Information Is Explaining Everything in the Cosmos, fromOur Brains to Black Holes(Charles Seife) Programming the Universe: A Quantum Computer Scientist Takes on the Cosmos (Vintage)(Seth Lloyd)

Tags: 論文

2011-11-10

λ. VSTTE 2012 Software Verification Competition

VSTTE 2012 Software Verification Competition というソフトウェア検証のコンテストが開催されている。 都合が合わずに参加できなかったけど、問題文 を見るとそう複雑でもないし、時間のあるときにでもボチボチやってみようと思う。