2008-01-01から1年間の記事一覧

常駐したプロセスを停止する際は、exit(normal) を使った方が、お行儀が良い?

Supervisor の停止を下記の通り書いていたら・・・ stop() -> case whereis(?MODULE) of Pid when pid(Pid) -> exit(Pid, shutdown), ok; _ -> not_started end. Common Test で怒られてしまった。Application の stop は怒られないなーと思い source を追っ…

git-svn で branch を扱う

一応、メモ。 branch ごと clone する SourceForge から kai を取得する例。 $ git svn clone https://kai.svn.sourceforge.net/svnroot/kai -T trunk -b branches -t tags branch が増えた場合 git svn rebase は、現在の作業 branch を更新するだけなので…

Erlang の Meta Programming 機能を smerl で簡単に実現する

個人的な意見であり、決して一般的な意見ではないと思うのだけれど、Erlang 言語でプログラムをしていると、高階関数やメタ機能の利用が面倒で困る。 つい最近も、ちょっとしたモジュールを書いている際、モジュールへ動的に関数を追加できれば、コード行数…

TTSite で作った MyApp::View::TT を Catalyst::View::Templated を使うように書き換えてみた

package MyApp::View::TT; use strict; use warnings; use base 'Catalyst::View::Templated'; use Template; MyApp->config->{'View::TT'} = { EVAL_PERL => 0, TEMPLATE_EXTENSION => '.tt2', CATALYST_VAR => 'c', INCLUDE_PATH => [ MyApp->path_to('roo…

Erlang で Apache worker MPM っぽいことを OTP っぽく実装してみた

たけまる / Erlang で Apache worker MPM っぽいこと accept 待ちのプロセスを supervisor 配下に置いてみました。tcp_server.hrl -author('cooldaemon@gmail.com'). -define(MAX_TIME, 60). -define(SHUTDOWN_WAITING_TIME, 2000). -define(MAX_ACCEPT, 100…

CentOS 5.1 に perl 5.10 を yum から入れる(ついでに、MySQL 5.0 も・・・)

CentOS 5.1 で、ローカル環境向け yum リポジトリサーバを作ってみる - cooldaemonの備忘録 の続き。 CentOS 5.1 向けの RPM に perl 5.10 は存在しないので Fedora から SRPM をもらってきて、RPM を作る事にする。 ローカルにビルド環境を作る root で作業…

CentOS 5.1 で、ローカル環境向け yum リポジトリサーバを作ってみる

大人の事情で、仕方なく CentOS を使うハメになりイロイロ勉強中。Linux なんて触りたくないなぁ(w; apache のインストール リポジトリを HTTP で配布する事にしたので、apache を入れてみる。 $ yum -y install httpd 適当に httpd.conf を設定して起動し…

Erlang 分散処理勉強会の LT 資料を公開します

http://labs.miu.vc/svn/cooldaemon/doc/mochiwebLT.pdf SlideShare に上げようとしたのですが、重くて断念しました orz という事で、株式会社 MIU 様の公開リポジトリをお借りしました。ご好意感謝致します。> drkazu 社長 SlideShare にあげた。http://www…

ManPageView にタブ分割する TMan を勝手に追加してみた

vim

vim+manpageviewで補完を便利に - はこべにっき# manをvimの中でみるためのプラグイン,manpageviewを導入してみた. おー便利!と思って導入してみたら、man をかなり大きく表示してしまい、補完の為だけに表示しておくのは邪魔な気がしました。 そこで、ma…

OSX 10.5.3 で MacPorts から入れた Erlang が動かない件の応急処理

下記、最新版では改善されたそうです。"osx10.5.3でMacPortsから入れたerlangが動くようになった! - Inquisitive!"Mac OS X 10.5.3 にあげたら MacPorts の Erlangが動かない ... - Twisted Mind /opt/local/bin/erl が動かなくなったので、あきらめました…

mochiweb を試す

ほぼ、source を読み終わったので、使い方の解説を何回かに分けて記述して行こうと思う。 とりあえず今回は、mochiweb のデモを動かすまでの手順の紹介。まずは、svn で mochiweb 本体をダウンロードし make する。 $ svn checkout http://mochiweb.googleco…

Gauche の環境を整える為、rlwrap と vim で利用する辞書と、vim で利用する syntax ファイルを生成する

まずは、こちらから make_gosh_completions.scm を頂く。 なんとなく、下記のように書き換えて、名前を gosh_dict_maker.scm として保存。 #!/usr/bin/env gosh (use gauche.interactive) (define (main args) (let loop ((line (read-line))) (if (eof-obje…

Gauche-dbd-mysql-0.2.2 をインストールする localports を作ってみた

現在、MacPorts から Gauche-dbd-mysql をインストールすると 0.2.1 が入ってしまう。 0.2.1 は MySQL5 に対応してないらしいので 0.2.2 を入れたい。 そこで、既存の Gauche-dbd-mysql の Portfile を少しだけ修正して 0.2.2 が入るようにしてみた。 Portfi…

git 用の vim プラグインを入れてみた

vcscommand.vim が git 対応になっていたので更新。 ついでに COMMIT_EDITMSG ファイルを開く際に一工夫してくれる git-commit を入れてみた。インストール後、.vimrc に下記を加えると・・・ let git_diff_spawn_mode=1 autocmd BufNewFile,BufRead COMMIT_…

左プロンプトに git のブランチとステータスを、右プロンプトに git リポジトリとそれ以外のディレクトリを色分けして表示

下記を参考に、自分なりにやってみたんだけど・・・ show current git branch on zsh prompt (2) - Bart's Blog function git_branch() { local git_dir branch git_dir=$(git rev-parse --git-dir 2> /dev/null) || return if test -d "$git_dir/../.dotest…

erlang の OO もどきの仕様(これっていつから?)

下記のコードのように、-module の二つ目の引数にリストを渡すと・・・ -module(new_test, [Test1, Test2, Test3]). -author('cooldaemon@gmail.com'). -export([get/1]). get(test1) -> Test1; get(test2) -> Test2; get(test3) -> Test3. new/3 が定義され…

開発中は reloader を使うべし

mochiweb に付属の reloader を使うと、更新のあった module を再読み込みしてくれるので、デバックの手間が少し減る。 source の中身 gen_server として常駐する。 timer:send_interval/2 を使って自分自身に一秒間隔でメッセージ doit を送る。 doit を受…

適当だけど補完用の辞書ファイルを作った

mxml.dict 作り方 まずは、こちらを参考に Flex3 のリファレンスをローカル環境にダウンロード。 Flex3のヘルプ続き - 0x廃棄階層 - 統治局 2008/04/17に取得した http://ss-o.net/txt/Flex3LangrefUrlList.txtを置いておきます。 wget -i Flex3LangrefUrlLi…

MVC の実現の仕方(私の場合)

以下のエントリを拝見させて頂いて、思った事のメモ。 MVCのモデルはDBじゃなくてもいいんだよ - D-6 相変わらず根無し個人差があるかとは思いますが、Catalyst を使っていると、 C のテストを書く行為を、私は、そんなに苦に感じない。ただ、C は URI リ…

perl erlang プロセス間で直接メッセージを送受信する

単純に erl_interface を Inline::C から使っただけなんですが(w; erlang 側の準備 特別な準備は無し。 とりあえず、送受信するプロセスを適当に作っておく。 -module(pingpong). -compile(export_all). start() -> register(pingpong, spawn(?MODULE, loo…

erl_interface メモ

C と Erlang ノード上のプロセスの間で、直接メッセージを送受信できる便利なライブラリ erl_interface を試したみた。 以下、メモと言うより code snippets。pingpong.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include "erl_interf</arpa/inet.h></netinet/in.h></sys/socket.h></string.h></stdlib.h></stdio.h>…

シンタックスを 5.10 対応にした(添削希望)

早く、公式 で対応して欲しい。 diff ~/.vim/syntax/perl.vim.org ~/.vim/syntax/perl.vim/syntax/perl.vim 74a75,77 > syn match perlConditional "\<given\>" > syn match perlConditional "\<when\>" > syn match perlConditional "\<default\>" 76c79 < syn keyword perlCondition</default\></when\></given\>…

RESTfull な I/F を持つストレージを作った

yaws 調査の為、試しに RESTfull な I/F を持つストレージを作ってみたので晒してみる。 インストール % svn co http://labs.miu.vc/svn/cooldaemon/erl/ssd/trunk/ ssd % cd ssd % makemake を実行する前に、Makefile 内の yaws のインストール先を編集する…

embedded モードで appmods 使う

Yaws を embedded モードで動かす為のメモ(適当) appmods で使う為のモジュール 適当に、arg を出力するモジュールを準備する。 -module(put_arg). -author('cooldaemon@gmail.com'). -include("/path/to/yaws/include/yaws_api.hrl"). -export([out/1]). ou…

リスト内のタプルのキーが重複する場合の lists:filter/2 と list:keysearch/3 の速度比較

yaws で遊んでいたのですが、GET で a=b&a=c みたいな引数を渡すと yaws_api:parse_query(Arg) を実行した際の戻り値が [{"a","b"}, {"a","c"}] となるので、リスト内のタプルのキーが重複する場合は、どうやったら素早くタプルを取り出せるのかなぁと思い、…

テスト用 DB の準備を行うモジュールを作った

Catalyst 本を参考に、やっつけで書いてみた。 Catalyst 本との違いは fixture に対応している点。 使い方(Test::WWW::Mechanize::Catalyst と連携等)や解説は、近いうちに書く。後で Helper にする。 package MyApp::Test::Database; use strict; use warni…

emo を設置してみた

http://blog-emotion.com/emo/ さて、どんなもんだろうか?

Common Test

まだ、解らない事だらけだが、使い始める所まで辿り着いたのでメモを残す。 run_test コマンドの準備 run_test とは、名前の通り、テストを実行してくれるコマンドで、実際は、erl コマンドを実行するシェルスクリプト。 作業は、Common Test がインストール…

catalyst 本が届いた

170ページしかないので半日で読めた。 ほぼ、知っている内容ばかりだったけど、Chapter 8 の Testing がとても良かった。(今度、日記に書こうっと) その他は、Catalyst::Controller::REST、Jemplate、PAR 辺りが面白かったかな?(現在、js は Mochikit を…

pre-commit hook で (コメントを YAML 化 | Perl::Tidy を使って source を整形 | Perl::Critic を使って source を評価)

タイトルにあるような事を行うモジュールを作ってみました。 source http://labs.miu.vc/svn/cooldaemon/perl/SVN-Hook-PreCommit/ POD が雛形そのまんま。 使い方 モジュールをインストールした後に、下記を /path/to/hooks/pre-commit として保存する。 #!…