2007-04-01から1ヶ月間の記事一覧

Java : Re: HashMap と IdentityHashMap

[id:lethevert:20070425:p2]について、解説を期待されていたので、説明を試みてみる。 java.util.HashMapの方は、ハッシュテーブルの実装として誰もが思い付くような標準的な実装になっています。 static class Entry<K,V> implements Map.Entry<K,V> { final K key; V</k,v></k,v>…

社会保険庁:年金個人情報提供サービス

https://www3.idpass-net.sia.go.jp/neko/action/z0401 申し込んでみたのだけれど、Linux firefoxな環境では、申請ができなかった。 ご利用環境を見ると 本サービスについては、「Microsoft Windows2000(SP4)」以降のOSと、「M…

Java : JITコンパイルの結果を確認する方法

[id:sumii:20070430:p1] あー、なるほど。JVMがC++で書かれているなら、そのC++プログラムにデバッガを当ててあげれば、アセンブリを表示できるねぇ。 ・・・って、やっぱりそれしかないのか・・・

Concurrent Clean : CGI Library for Clean

[id:lethevert:20061103:p2]でshelarcyさんが言っていたStdHtmlの件に関連して、CleanのCGIのライブラリを作ったりしてないか、という問い合わせがCleanの中の人の一人から来てました。 どうも、CGIのパラメータの受渡しやらクッキーの取り扱いやらのあたり…

Concurrent Clean : Realの割算に関する極めて微妙なバグ

Clean MLにあがっていた「初心者の質問」というメールの件を追いかけてみたら、極めて微妙なバグらしきものを見つけた。 Start = let n1 = 9.88131291682493E-324 / 10.0 n2 = 9.88131291682493E-324 / 10.0 in (n1 <> 0.0, n2 <> 0.0, n2) これが、どう考え…

TwitterってErlangを使っているのだね。

キャリア

どうも私は昔から力を入れている事柄に関してはマネジメント(というかプロデュースという方が実態に近い?)する立場に立ちがちで、仕事の方も最近はそういう感じ*1になりつつあるのだけれど、あまり本意ではなかったりする。 なんていうか、足腰がちゃんと…

Concurrent Clean : Re: 参照型

[id:lethevert:20070426:p5]で作った参照型を使って、ログ機能を作る。 log :: !(*File->*File) !(.b,!*(Ref *File)) -> (.b, !*(Ref *File)) log f (b,rf) = (b, apply f rf) というログ関数を作っておいて、(ちょっと関数名をかえて、整理した) Start w …

SSH : ProxyCommand

[id:hirose31:20070419:1176968993] こうやって使うのかー

リーダーになるための11の重要な条件

http://www.kitami.tv/subnote/2007/04/11.html 条件が11もあったら普通の人には実践不可能だと思う。

Concurrent Clean : Re: 参照型

ということで、こっち(→http://lethevert.blogspot.com/2007/04/concurrent-clean-reference-type.html)に説明を書いて、MLに投げてみた。

第74回カーネル読書会

http://blog.miraclelinux.com/yume/2007/04/74_0ddd.html 参加してみようかと思ったのですが、残念ながら気づいたときには定員でした。

Concurrent Clean : Re: ハンドルから実体を取り出す

[id:lethevert:20070425:p3]だけれど間違ってる。 リポジトリを使うという方法は関数的でないところが問題ではなくて(一意型を使えば、関数的に扱えるから)、型付けの問題と安全性の問題が引っかかっているのと、リポジトリサービスそのものをCleanでどう…

乱数

[id:rsky:20070424:1177407957] メルセンヌ・ツイスタって、暗号には不向きなんじゃなかったっけ?

SFMT

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html メルセンヌ・ツイスタの改良版? 今度Cleanに移植しよう。

Concurrent Clean : ABC machine : 代数データ型と配列

代数データ型と配列は、実装上の内部構造が大分違うらしい。 代数データ型として宣言したエリアに配列を割り当てようとすると、Segmentation faultになる。

Concurrent Clean : 参照型

というわけで、参照型を作ってみた。Cleanでは配列を破壊的に更新できるという特徴を生かして、マジックプログラミングしました。 ::*Ref a reference :: !.a -> *(Ref .a) copy :: !*(Ref .a) -> (!*(Ref .a), !*(Ref .a)) apply :: !(.a -> .a) !*(Ref .a)…

Concurrent Clean : コンパイラがこける

file :: !Int -> *File file 1 = code { push_b 0 } 上の関数定義を作ると、次のエラーになってコンパイラがこける Run-time error! Program evaluated undefined value?!clm: reading compiler result failed: No such file or directoryまた、次のようなの…

Concurrent Clean : MySQL binding

C側の実装は大方できた。 あとで、Clean側のラッパーを作ってつないでみる。

Java : HashMap と IdentityHashMap

o1.equals(o2) と o1 == o2 の違いだけではないよ。 なんのことが分からなかったら、一度src.zipの中を見てみるとよいかも。

Concurrent Clean : ハンドルから実体を取り出す

[id:lethevert:20070424:p2]の件だけど、サーバーをCleanで実装するとして、どうしたらよいのだろう? いろいろ考えたけれど、ハンドル([id:lethevert:20070422:p2]の意味で)と実体を分離した場合、ハンドルを普通に純粋関数的に作ることは無理なんじゃな…

Concurrent Clean : Re: 遅延IO

[id:lethevert:20070423:p3]について、検証してみた。 module Main import StdFile, StdDebug Start w # (_,fout,w) = fopen "output.txt" FWriteText w (_,fin,w) = fopen "input.txt" FReadText w (cfin,fin) = lazyIO fin (data,fin) = toLines fin fout …

Concurrent Clean : ChannelとHandle

状態の表現に関する一連のエントリ [id:lethevert:20070422:p2] [id:lethevert:20070423:p1] と、遅延IOの一連のエントリ [id:lethevert:20070423:p3] [id:lethevert:20070424:p1] を通して、ひとつの考え方がまとまってきた。 これまでファイルアクセス用オ…

Concurrent Clean : Re: 状態を表現する

[id:lethevert:20070422:p2]を書いた後に、すべてを純粋関数指向で書くにはどういうモデルを採用すればよいのかを考えていた。 昨日のモデルは、言うならば、クライアント/サーバーモデルという感じなわけだけれど、サーバー側(つまり世界の側)のプログラ…

Concurrent Clean : 線型論理

Haskellのモナドが圏論のモナドをバックグラウンドに持っているように、Cleanの一意型は線型論理をバックグラウンドに持っている(らしい)。 ちょうどよいところに、id:m-hiyamaさんが線型論理の説明をしているので、メモ。 [id:m-hiyama:20070411:11762555…

Concurrent Clean : 遅延IO

以前、遅延IOを作るためにtransactionというモジュールを作ったことがあるのですが、 http://lethevert.blogspot.com/2006/10/transaction.html これを使わなくても遅延IOは普通にできるのではないかと気づきました。 Start w # (_,fin,w) = fopen "input.tx…

Delphi : SAX : XML Parser

DelphiでSAXとかGoogleで調べても、一番便利なライブラリが埋もれてしまうので、ここにメモしておこうと思います。 DelphiからはExpatが利用できます。 http://expat.sourceforge.net/ ExpatはC言語で書かれたSAXライブラリで、さまざまなアプリケーションや…

Concurrent Clean : 純粋関数指向では書けないアルゴリズム

正解を知っているわけではないですが、環状リストとかを使うものとかは無理っぽい気がしますね。 どう頑張っても、同じ要素が繰り返し出現する無限リストにしかならないような気がします。

Concurrent Clean : 状態を表現するには?

私の感覚で言うと、新しいオブジェクトをその都度生成しているという認識はないですねぇ。 どちらかというと、こういう感じかな? 普通のオブジェクト指向言語を使っているときは、世界を抽象化したモデルをプログラムの中に作り上げて、それを直接あれこれ…

Concurrent Clean : MySQL binding

サーバー側(下で説明した世界の側のプログラム部分)をどういう風に書けばよいかということは大体わかって、素材となるCのコードも大体書けた。 あとは、これらを組み合わせて、クライアント側(Cleanの部分)のインターフェースを作っていけばよい。 あ、…