このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

2008-11-01から1ヶ月間の記事一覧

Makefileで使うかどうか?

mkdir -p は便利、という意見と、使うな、という意見がある。 -p, --parents 引き数に指定した各々の directory で、存在しない親ディレクトリも含めて作成する。作成された親ディレクトリのアクセス権は、 umask の値に `u+wx' としたものが設定される。す…

Makeターゲット

標準的なのは、次くらいで十分だろう。 all -- 必要なもの一式を全部作る。デフォルトターゲット。 clean -- ほぼallの反対。生成に時間がかかるファイルや、ほとんど変更しないファイルは消さなくてもよい。 distclean -- 配布に含まれていなかった全てのフ…

文化と伝統

バージョンをvsnと表記する(いまだに馴染めない^^;)。 「アプリケーション」が独特な意味を持つ(いまだに馴染めない^^;)。 libはアプリケーション群を意味する(馴染んだ)。 シェルとmakeをヘビーに使う(もう大変だよ)。 全体に古風(年寄り向きとも…

シェルとかコマンドとか

シェル変数への代入は、=の両側空白なし。FOO=bar 、FOO='bar baz' とか。 $$はシェルのPID、一時ファイル名によく使う。Makefile上では$$$$ install -d は便利 でも、installよりcpのほうが便利なときが多い。 cp -R my/dir your/ と cp -R my/dir/* your/d…

∃同値と∀同値

恒等射、同型射、圏同値を与える関手などを総称して、同値性セル(equivalence cell)と呼ぶことにする。A, Bのあいだに、i:A→B と、(iに対して一意的とは限らない)i#があって、 i;i# 〜 idA i#;i 〜 idB となることが同値性セルの条件。ここで、〜 は、適…

rpc.erl

%% This code used to reside in net.erl, but has now been moved to%% a searate module. s/searate/separate/

アプリケーションのメカニズムと作り方

悔やまれた件、もう一度調べた。基本的には、「OTP設計原理」を読めばよいのだ。次の概念を理解しよう。 アプリケーション OTP-ST(監視ツリー) OTP-STアプリケーション トップスーパーバイザ アプリケーションコントローラ・プロセス アプリケーションマス…

高次骨格はホモトピーか?

で、さらに15分ほど考えた。f:A→B, g:C→Dだとして、B 〜C であったとき、cod(f)≠dom(g) でも f;g を定義できるか? これが問題になる。結論を言えば「できない」。これはホモトピーとの類似を追いかけてみるとわかる。i:B〜C, j:B〜C であるとき、i〜j とは…

なんで鳥山明キャラ?

シェンロン ブルードラゴン 亀仙人 まっ、いいか。

高次骨格と高次亜群

1日15分くらいずつ考えている感じだな。高次骨格の構成はそれほど単純じゃないかもな。Cが2-圏として、C1をCの1-セルの集合だとする(1以下のセルではない)。C0の同値(2-同値)をもとにして、C1にも普通の同値関係を入れられるが、期待した構造とはどうも…

高次骨格の基本推論

高次骨格はずっと気になっている。高次ラッセル/バーンサイド代数というとカッコイイかも知れない。以下、ある種の同値関係と簡単な推論図に関してメモ。Cを2-圏とする。話を簡単にするために厳密(strict case)とする。Cのホム圏C(A, B)は圏だから、この…

EDoc関係

edoc:read_source/{1, 2} -- これは便利だ! 他にも意外に便利な関数があるかもよ。@headerfile を読む検索パスは、{includes, Path} where Path = [string()] オプションで指定される。includesはEPPの処理のときも共通に使われる。{doc_path, Path} where …

序数と基数の問題

本編に書こうと予定してるが、どうなるか? とりあえメモしておく。Ordは順序集合と単調写像(order preserving maps)の圏。離散順序を付ける関手 D:Set→Ordと忘却関手U:Ord→Setは随伴。Dは埋め込みと考えられるから、その像=離散順序集合の部分圏をDOrd⊆O…

undefだとわかるまで

動的呼び出し Mod:func(Arg) がundefで失敗するまでに、とんでもない時間がかかる。

コードリーディング

stdlib/proc_lib.erlを読むといいかも。

clash と crash と crush

意味も似てるし綴りも似てる。こりゃ間違うよな。 clash 衝突 crash 衝突、破壊、墜落、崩壊 crush つぶれる、崩壊、壊滅 flushも綴りに注意。

erl_callとEPMD幽霊

erl_call -s -sname test とかして、testノードが起動してないと、erl_callがERTSを起動しようとする(-s (startかな)オプションによる)。これが失敗した場合、どうもクリーンナップができてないようで、testというノードのエントリーがEPMDに残るようだ…

-nameオプションのロングネーム

ついでに書いておかなかった件。曖昧な記憶によると: -name node1@localhost -- ドメイン名にドットがないと、どっかで構文エラー。 -name node1@128.0.0.1 -- 忘れた。 -name node1@192.160.0.33 (ホントのIPアドレス) -- 忘れた。ダメだったかな。 -nam…

ついでに書いておく!

本編で「ErlangとJavaのあいだでリモートメッセージング」という記事を書いたとき、ERTSノードのロングネームについてかなり調べた。が、書かなかった。あれは書いておくべきだった。ついでにメモしておけば、今ごろ再度調べる手間は省けたものを!!!

ERL_WINDOW_TITLE けっこう便利

> werl -env ERL_WINDOW_TITLE "Test and Debug"

ERL_LIBS

ERL_LIBSが実在しないディレクトリを指すとwerlがクラッシュ。

format_error

stdlib/src/shell.erlに次のような行がある。 io:fwrite("** ~w: ~s **\n", [Line,apply(Mod,format_error,[What])]),Whatがエラーreasonで、対応するモジュールModのformat_error/1 を呼び出して 人間可読エラーメッセージを生成している。同じ手法は: ker…

deep lists, io data

io_libのman: Type:chars() = [char() | chars()]Function:char_list(Term) -> bool() Returns true if Term is a flat list of characters, otherwise it returns false.deep_char_list(Term) -> bool() Returns true if Term is a, possibly deep, list o…

EDoc、どうもダメ

%% @doc シリアライズ・ドライバ. %% %% @docfile "serialize.edoc"これはクラッシュしてしまう。日本語のせいではなくて、@docと@docfileは共存させられないようだ。

バーンサイドよりラッセルだろう

圏の骨格代数を、一部でバーンサイド代数と呼ぶが、集合圏のバーンサイド半環は、基数の代数ってことになる。基数が集合の同型類だと指摘したのは確かラッセルだよね。「3とは、この世にある『3つのモノからなる集まり』すべてからなる類」とか言っていた。…

コマンドライン引数

werl hi -myapp foo bar baz -myapp hoge -- fuga 1> init:get_plain_arguments(). ["fuga"] 2> init:get_arguments(). [{root,["C:\\INSTAL~1\\ERL56~1.4"]}, {progname,["erl"]}, {home,["C:\\Documents and Settings\\Hiyama\\Work","hi"]}, {myapp,["foo…

EDocエラクナイ

@typeによる型定義に長い説明を付けたいのだが、それができない。@docは、どこに書いても次の関数にかかってしまう。

-type属性

kernel/include/file.hrl で使われている。型に、pos_integer(), non_neg_integer() なんてのも使われている。

ライブラリモジュールの名前

file_libじゃなくて、filelib。まー、そういうこともあるよね。ところで、libはツマンネー。あれはなんだ?

見つかった!

stdlib/erl_posix_msg.erl : message(e2big) -> "argument list too long"; message(eacces) -> "permission denied"; message(eaddrinuse) -> "address already in use"; message(eaddrnotavail) -> "can't assign requested address"; message(eadv) -> "a…