トップ «前の日(05-13) 最新 次の日(05-15)» 追記

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2004-05-14 実は POBox のファンです

% なら、狙うは PRIME でしょ

ということで、uim-xim とセットで使ってみてます。良いです、なかなか。やっぱ予測入力は楽しい。問題は uim-xim がパッとしないことか。uim 使うなら GNOME 使えってことですか?でもなあ…

ちなみに、uim-xim は WideStudio ともエラク仲が悪いみたいで、使うと泣きを見るので気をつけましょう。

% 用もなくブラブラするのも良いもんだ

別に買うものも無いけど、なんとなくヨドバシカメラに寄ったら、以前探しまくっても手に入らなかった PSO の攻略本レアアイテム編(通称、青本)がさりげなく置いてあって、思わず保護。

しかし、すっかりやらなくなってしまった今更にこんなもんが見つかるなんて、アレですか、再燃しろと、そうおっしゃる?それとも BlueBurst に向けてモチベーションを高めろと?つーかだからナローバンダーなわしはプレイでけんのだってば、シクシク。

どっちにしたって、レアアイテム本を見たからって、どうせそんなもん手に入らんのじゃあ、と諦めちゃってるわしとしてはモチベーションも特に上がらんのだがねえ(苦笑)。ここはひとつ初心に戻って(?)ヒューキャシールを一から育て直そうかしら。


2005-05-14 ダル〜(最近こんなんばっか)

% [Mac] Tiger の nfsd の罠

Tiger の、つーか Panther のが罠かも知れんが、ともあれ。

なんか Tiger にアップグレードしてから、export していた nfs ボリュームを他からマウントできなくなってて、なんでじゃろーと悩んでたんだが、何のことは無い『以前いろいろテストしてたときに追加した無効なエントリ』が NetInfo に残ってたのが原因だった。無効な、ってのは要するに現在存在しないパスが export されてたわけです。

まあね、変な設定があれば、全体的におかしくなる…ってのは理解できる。できるけど…その設定で Panther のときは何事も無く動いてたってのが罠でしょ(苦笑

% [Mac] Widgetに関するセキュリティ問題

日本語による Dashboard ウィジェット紹介サイト『widget mania!』に掲載された、例の問題に関する『対処法』。

当然、こんなアホらしい問題を引き起こしている Apple は責められるべきではあるが、ユーザがいかに身を守るかをないがしろにして、不安をあおるだけの記事を書いてるようなニュースサイトにはがっかりするわけで(ITmedia の記事はまだまともだが、CNET Japan の記事なんかじゃ、普通の人は対処できない)、こういう『ユーザを守る』という観点で書かれた文書は広く知られるべきだろう。

ってことで、Mac ユーザにはこのページを教えてあげてください。あまり詳しくない人にもわかりやすく予防法が示されています。

あと、いくつかの日記系ページで、(おそらくは Tiger を実際に使ってない人が)CNET 辺りの記事を見て、危ない危ない言ってるのを何人か見かけたが、ウィジェットが自動インストールされたからといって、それが即実行されるわけではありません。

ウィジェットバー(Dashboard スクリーンの左下にある『+』印を押すと出る)で、そのウィジェットをクリックしない限り、実害は無いのです。つまり、こういう問題があるということを知っていれば、きちんと注意していることで、実害は防ぐことができる、ということです。 (もちろん、spam メールなんかと同じ手口で、つい押してしまうようなアイコンにするなどという手口はあり得ますが)

別にこの問題が理由で Apple の売り上げが落ちたってかまいませんが(実際そうなっても仕方ない)、すでに Tiger を利用している人を、いたずらに不安に陥れるようなことはやめましょう。

% [Mac][vim] Tiger で vim の動きが変な件(調査編その2)

昨日の続き。

どうも手っ取り早く勘で何とかしようとしても、意味が無いっぽいんで(つーか昨日見当をつけたところは関係なかったくさい)、もうちょっとちゃんとデバッグしようってことで、まずは一番の肝である mb_byte_len という配列がきちんとできているのかを確かめよう。ってことで、mb_init() の最後で出力させてみる。

locale is ja_JP.eucJP, p_enc is euc-jp
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

……ガーン...orz (ちなみに出力されて欲しいのはこういうの

なんでだろなあ。前に send-pr のときのテストコードを動かしたときは、想定通りの結果が出てたから安心してたんだが、実際には mb_byte_len が全然ちゃんとできてないとは。 文字化けが直ったように見えるのも、単に端末ががんばってるだけの話だったか……ぐったり。

つーことは、ともあれこいつがちゃんとできるようになれば良いわけだな。んじゃまあ、引き続き mb_init() 関数をなめていくってことで。しかし何でやねん。

それはそうと、負の添字って未定義じゃないのかなあ?どうも p[-1] は *(p - 1) として動いてるようなんだが、移植性の問題として、それをあてにするのはいかがなものかと思うんだが……詳しい人が降臨してくれないもんか(苦笑

% [Mac][vim] Tiger で vim の動きが変な件(調査編その3、一応解決)

とりあえず、テストコードの結果から言って、mblen() が呼ばれる際に locale が(厳密には LC_CTYPE が、かな) ja_JP.eucJP になっていれば、想定通りに動く『はず』なんである。 で、mb_init() 内で mblen() が呼ばれているところで locale を確かめてみても、ちゃんと ja_JP.eucJP になっている。

つーことで、これはもうここで呼んでる mblen() は、テストコードで呼んでる mblen() とは違うものだとしか思えん……ってことで調べたら、ありましたよ、ええ...orz

# ifdef X_LOCALE
#  ifndef mblen
#   define mblen _Xmblen
#  endif
# endif

要するに、Xlocale が腐ってるんですね。gccmakedep に引き続いて、また X11.app の問題かよ。キレるぞ、しまいにゃあ。

ともあれ、config.h に X_LOCALE が define されないようにすれば解決っす。…なんだけど、configure の --multi-byte オプションは X_LOCALE とセットらしくて鬱。 つーか、Xlocale が腐ってるくせに、なぜか configure 時のテストが通ってしまうのがアホなんだと思うんだが。_Xsetlocale() が存在するかどうかだけ調べてるんだよな。 存在すれば、それが腐っていようとも使ってしまう。鬱すぎ。

とりあえず、そもそもの問題を回避するには、mblen() 関係のパッチを適用しつつ、src/auto/config.h 内の

#define X_LOCALE 1

を消してしまえば良いんだが、fink のためにパッチを書くとしたら、どこを直すようにしたら良いのかねえ。configure を直すのが一番キレイかなぁ。

……あれ?じゃあ一番最初に文字化けに気付いたのはなんでだったんだ?ん〜?わけわかんなくなってきた。 まあ、とりあえず問題は解決したから良いか。

% cat /sw/fink/dists/unstable/main/finkinfo/editors/vim.patch
--- vim63/src/auto/configure.orig	2005-05-14 20:43:48.000000000 +0900
+++ vim63/src/auto/configure	2005-05-14 20:58:03.000000000 +0900
@@ -1283,7 +1283,7 @@
 if test -z "$have_local_include" -a -d /usr/local/include; then
   tt=`echo "$CPPFLAGS" | sed -e 's+-I/usr/local/include ++g' -e 's+-I/usr/local/include$++g'`
   if test "$tt" = "$CPPFLAGS"; then
-    CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+    CPPFLAGS="$CPPFLAGS"
   fi
 fi
 
@@ -7652,7 +7652,7 @@
 if test "$enable_multibyte" = "yes"; then
   cflags_save=$CFLAGS
   ldflags_save=$LDFLAGS
-  if test -n "$x_includes" ; then
+  if false ; then
     CFLAGS="$CFLAGS -I$x_includes"
     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
     echo $ac_n "checking whether X_LOCALE needed""... $ac_c" 1>&6
--- vim63/src/mbyte.c.orig	2005-05-14 16:21:24.000000000 +0900
+++ vim63/src/mbyte.c	2005-05-14 20:38:21.000000000 +0900
@@ -650,6 +650,7 @@
 		     * where mblen() returns 0 for invalid character.
 		     * Therefore, following condition includes 0.
 		     */
+		    mblen(NULL, 0);
 		    if (mblen(buf, (size_t)1) <= 0)
 			n = 2;
 		    else

こんな感じでひとつ。

% [Mac] fink のバグトラックに vim と kinput2.macim の問題を投げてきたが…

よく考えたら fink は日本人の開発者がいっぱいいるんだから、その人たちのうちの誰かを見繕って、メールを投げた方が良かったかも知れんなあ。なんせ相変わらずのインチキ英語だし(苦笑

とりあえず所在を知ってる人と言えば小町さんとか。つーか、Gentoo 絡みから連鎖的に fink の開発者だって知ったんだけどね。

% [Mac] fink のバグトラック、続き

なんか速攻で自動返信くさいメールが飛んできたな。

超訳(最近のはやり?):
このパッケージのメンテナには連絡してみたかい?
大抵はそれが一番手っ取り早いんだ。
そんでメンテナからの反応が無いようなら、fink-devel メーリングリストに
メールを投げるか、バグトラックに登録してくれよな。

えーとつまり…「メンテナに連絡もしないで、いきなりバグトラックに投げるんじゃねえ、ボケ。」ってことですか?ごめんなさい...orz

つーか kinput2.macim の方はともかく(Todai Fink Team ってなってる)、vim は明らかに日本人じゃないし、わしに英語でメールのやり取りさせるのは勘弁してください(泣

……いや、東大の人にだって、何となく恐れ多くていきなりメールなんて出せないんですが(小市民)。

あとまあ、開き直るとすれば、『直してもらいたい』と思ってるわけじゃなくて、とりあえず自分のところでは直ってるから問題ないわけで、せっかくだから報告してるだけなんであって、この後の流れがどうなったって別にどうでも良いんですけどねぇ、とか言ってみる(ビクビクしつつ)。

% [雑談] 某所にて一言言わないと気が済まない系の某氏があーだこーだわめいているのに、どっかの誰かがツッコんだセリフ

すまん、もんすごくツボに入った(笑

拭いても拭いてもウンコが出てくる穴かおまえは。

ひぃお腹痛い、もうダメ(倒

% [Mac][PC] ブラウザでインデクシングがしたい

via void GraphicWizardsLair( void ); //

わしもつい最近書いたりしてるが、みんな似たようなことは思ってるようだねえ。

otsune さんが言ってる「そのページをGMailの履歴専用アカウントに送信してしまう。」というのは応用できそうだ。(つか、わし GMail アカウント持ってないです)

Windows with GoogleDesktop もしくは MacOSX Tiger なら、ローカルの自分宛にメールで送るってのもアリかね。もしくは Safari で Web archive とか。 ちなみに今の Safari には、『このページの内容をメールで送信』っていう機能がありますな。 多分、これって WebCore の機能だから、WebCore 使ってるブラウザ(OmniWeb とかシイラとか)は、すぐにでも対応できそうだが。

つーか GoogleDesktop はキャッシュもインデックス化してくれるからステキだよな。 Spotlight は今のところブラウザのキャッシュのための mdimporter が無いからダメだが、いくらでもやりようはあるはずなんで、今後に期待。

あと、これもこの前書いたが、ブックマークとキャッシュをセットで保持してくれると最高だね。 んで、ブックマークされてるページのキャッシュは、原則として消さないで、検索対象にする、と。

OmniWeb は、個別のブックマークごとに、更新チェックとかの設定ができるんで、ブックマークとキャッシュがセットになれば、かなりおもしろくなると思うんだけどね。

% [雑談] ゴノレゴシリーズ

via 林檎はいかがですか?

ああ、お腹痛い。こんなすさまじいページがあったとは。 ゴノレゴさんが、某掲示板の某伝説の書き込みとかを語ってくれます。

% [雑談] ゴノレゴさんがしゃべってる吉野家ネタの派生形

『インペリアルクロスという陣形で戦う皇帝が、いつジェラールを前衛にしてもおかしくない』とかステキすぎ(笑

そんでこれを例の iSpeech でもってしゃべらせるわけですよ(声は Whisper 辺りがよろしい)。もう爆笑(倒


2006-05-14

% [OCaml] OCaml の複素数計算

ヒビルテを読んで気になったんで、OCaml でもやってみた。 Complex モジュールには i はあるけど pi や e が無い。 って言うか Complex どころか他のモジュールにも見当たらない。 e はともかく pi も無いのにはびっくりしつつも、Hugs の定義をパクってでっちあげ。

% ocaml
        Objective Caml version 3.09.2

# open Complex;;

# let pi = polar (4. *. atan 1.) 0.;;
val pi : Complex.t = {re = 3.14159265358979312; im = 0.}

# let e = exp one;;                  
val e : Complex.t = {re = 2.71828182845904509; im = 0.}

# pow e (mul i pi);;
- : Complex.t = {re = -1.; im = 1.22464679914735321e-16}

# exp (mul i pi);;
- : Complex.t = {re = -1.; im = 1.22464679914735321e-16}

# log (polar (-1.) 0.);;
- : Complex.t = {re = 0.; im = -3.14159265358979312}

他の言語に比べると、なんてめんどくさいんだ… って感じだけど、逆にそのことに安心感を感じたりするわしはすっかり OCaml に毒されてるってことだろうか(苦笑

% [OCaml] かぶった

mmatsuoka さんとこでも複素数の話をやってた模様。 でも、アプローチが随分違うので、これはこれで良いのではないかと(笑

π が用意されてないのは、用途や分野によって使用する近似値が違ったりするみたいなので、その都度事情にあわせて定義しなさいという事だと好意的に解釈してみたり。(参考-Wikipedia: 円周率の歴史, 円周率)

% [OCaml] さらにかぶった

向井さんとこでも複素数。 ちょっとびっくりしたのが log -1 の結果。

# log { re = -1.; im = 0. };;
- : Complex.t = {re = 0.; im = 3.14159265358979312}

わしのやった方法だと…

# log (polar (-1.) 0.);;
- : Complex.t = {re = 0.; im = -3.14159265358979312}

こうなんだよね。 同じことやってるように思えるのに何で? と思ったら…

# polar (-1.) 0.;;
- : Complex.t = {re = -1.; im = -0.}

こっちは虚数部が -0 になってた。 単に実数から複素数作るために polar 使うのが間違ってるのかな。 よくわかってないで使ってるしなあ(苦笑

% [OCaml][雑談] OCaml のグッタリポイント

上のネタで向井さんも書いてたけど、コメントが (* ~ *) なところはたしかにグッタリ。

ただ、コメントに関してはそのことよりも一行コメントが無いことの方が困る。 まあ、C と違ってネスト可能なんで、本格的に困ることは無いんだけど、やっぱ手軽にちょこっとコメントアウトできる方法が有るのと無いのとでは結構精神的に違いがあると思われ。

% [OCaml][雑談] open したくない人はやっぱりファクトリ関数を定義するのが良いんだろうなあ (グッタリポイントその2)

上記の Complex みたいなモジュールを使う場合、open を使わないといろいろと面倒が多い。 つーか、面倒はともかく例えばレコードを作るときなんか非常に気持ち悪いもんだ。

# let pi = { re = 3.14; im = 0. };;
Unbound record field label re

# let pi : Complex.t = { re = 3.14; im = 0. };;
Unbound record field label re

# let pi = { Complex.re = 3.14; im = 0. };;
val pi : Complex.t = {Complex.re = 3.14; Complex.im = 0.}

なんとかならんもんか、これ。 結局、レコードを素のまま扱うなんてダセーよ… ってことになって、レコードを作る関数を作るはめになる。

# let complex re im = { Complex.re = re; im = im };;
val complex : float -> float -> Complex.t = <fun>

# complex 3.14 0. ;;
- : Complex.t = {Complex.re = 3.14; Complex.im = 0.}

微妙に敗北感を感じたりもするけど、まあ「ちゅーしょーか、じゅーよー」と呪文を唱えて飲み込むのが良かろうて。

% [OCaml] OCaml の有理数

なんとなく Complex をやったら、こっちもやらなきゃないような気がして。

Rational number を扱うには Num モジュールを使う。 Num モジュールは組み込みじゃないので、ライブラリをリンクしてやる必要がある。 ライブラリの名前は num.cma じゃなく nums.cma なので注意。

対話環境で試すときは ocaml コマンドの引数に nums.cma を指定してやるか、#load でロードする。

% ocaml nums.cma

(もしくは)

% ocaml
# #load "nums.cma";;

ただ、これだと Num モジュールに対応したプリティプリンタが無いのでちょっと不便。

# Num.num_of_string "1/2";;
- : Num.num = Ratio <abstr>

GODI を使ってると知らないうちに num_top.cma ってのがインストールされてるので、これも使うと吉。 というか、topfind を使って #require "num" すると、勝手に一緒にロードされるけど。

# #use "topfind";;
# #require "num";;
/usr/local/godi/lib/ocaml/std-lib/nums.cma: loaded
/usr/local/godi/lib/ocaml/pkg-lib/num-top: added to search path
/usr/local/godi/lib/ocaml/pkg-lib/num-top/num_top.cma: loaded
/usr/local/godi/lib/ocaml/pkg-lib/num: added to search path

この状態だと、Num.num の値が読める形で表示される。

# open Num;;           
# num_of_string "1/2";;
- : Num.num = <num 1/2>

num_top.cma が無いときは Num.string_of_num で可視化すると良い。

# let p = string_of_num;;
val p : Num.num -> string = <fun>
# p (num_of_string "1/2");;
- : string = "1/2"

Num.num の定義は、

type num =
| Int of int
| Big_int of Big_int.big_int
| Ratio of Ratio.ratio

のようになっていて、実のところ Ratio モジュールってのを単体で使うことも可能ではあるんだけど、マニュアルに載ってないくらいだから、わりと裏技の部類なんじゃないかと思う。 まあ、使ってもややこしいだけなんで、素直に Num を使っておくべき。 ちなみに同様の隠しモジュールとして Nat なんてのもあるね。 natural number のことらしい。

Num モジュールは基本的には open して使うように作られているっぽい。 演算子は通常のもののお尻に / を付けたもの。 関数は _num を付けたもの。 って感じで名前が付いている。

あとはまあ、マニュアル見ればわかるわ。 もう眠い (投げやり)。

ちょっと変わったアイテムとしては、approx_num_fix と approx_num_exp ってのがあるね。

# let half = (Int 1) // (Int 2);;
val half : Num.num = <num 1/2>
# approx_num_fix 3 half;;
- : string = "+0.500"
# approx_num_exp 3 half;;
- : string = "+0.500e0"

こんな感じのもの。 あと、rational の計算方法を制御する Arith_status ってモジュールもあるけど、なんかよくわからない。

float_of_num があって、num_of_float が無い辺りが浮動小数点数の限界を感じさせるよね。(……させるか?)

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

% soutaro [私はいつもモジュール名から書いてますよw ただ、例えばAbc.tの値にabcとか名前を付けておくと、f abc.Ab..]


2008-05-14

% [雑談] 昨日ちょっと暖かくなって油断してたらまた寒いよ

まあ、昨日にしても北の方では朝方に零下 8 度まで下がったりしたところもあったみたいなんだが、うちのあたりはわりと暖かかったですよ。 北海道は広いにゃー。 で、今度こそこれから普通に暖かく (not "暑く") なっていくのかなーと思ってたら今日になってまた寒いという。

最近のこの日記の中身の無さには自分でもがっかりなんだけど(苦笑)、このところの気候変動の激しさにぐったりしてて、仕事以外のところにつぎ込むバイタリティが残ってないんだよ...orz


2011-05-14

% [game] Condemned 2 City Museum 捜査攻略

ここだけゴールドが取れてなかったが、ようやく何とかなったのでメモ。

  • 3 Did you find any fingerprints on the paper?
  • 1 Do you think Vanhorn nursed his nephew back to health?
  • 2 What about the saw? You said it looked medieval?
  • Camera ID 1501
  • Medieval Tools 13A (カメラの映像を確認した後に展示室の階段付近に案内看板があるのでそれを調べる)
  • 1 Any evidence the metal pieces came from Rachael Mars's body?

頭の数字は選択肢の位置。 13A の看板の存在に気付かなかったせいで今まで Perfect が取れてなかった。 位置的に見逃しやすいし、無視しても話が進むのが結構罠。

ちなみに警備員を殺さないようにするミッションは、自分が殺さなければいいだけなので邪魔な場合は泥棒たちに始末してもらうと良い。


トップ «前の日(05-13) 最新 次の日(05-15)» 追記

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com