転送メールのspam対策を考えていたら、gmail でフィルタリングすればいい、と教えてもらった。おーー。素晴らしい。
これで、spam がぐっと減った。
http://journal.mycom.co.jp/articles/2006/05/18/javaone5/
JRuby のほうが扱いが大きい。
Rubyist Magazine - 日本 Ruby カンファレンス 2006 特別号 をリリースしました。
プレゼントが嫌に豪華です。7/7 までです。必見です。
でも、今回は担当じゃないから、俺も応募できるんだろうか。
宣伝ヨロ。
qmail に、理由があって送れないメールがキューにたまりまくりなんだけど、解決したので送れる様になったので、全部吐き出させたいんだが、一気に吐き出させる方法はあるんだろうか。
あった。
qmail-tcpok して、qmail-send プロセスに SIGALRM を投げるらしい。
みんな編集後記なんて読まないのね...。
qmail でサーバ側で spam をはじく方法を考えているんだけど、これは、というものが無い。なんとかならないかな。なんか、手軽で「絶対クロ」というようなものをはじく仕組みはないですかねぇ。
spam といえば、コメントspam対策、有効だったんだろうか。あれから一度も来ていない。ラッキー。
パッチが必要、と聞いてひいていた http://k2net.hakuba.jp/qgrey/ は、qmail にパッチをあてるんじゃない、ということに気づいて、導入してみた。
結構弾いてますね。いい感じだ。
namikilab.ac.jp のメールアドレスは、全部 atdot.net へ転送して読んでいるんだけど、こいつらは上記フィルタではひっかからない。どうしたもんかなぁ。
転送メールに対して、弾くにはなんか方法あるのかなぁ。
rubyconf どうしよう...。6/30 か。
結局、最後は仕事を引き受けてしまう / やってしまうダメな俺。
結局、自分の理想とすることを追い求めようとすると、自分が手を動かさないと出来なくて。で、それはある程度の規模で破綻するので、やっぱりダメなわけで。
すでに破綻している、とか言われたりして。まだ、そこまでは行っていないです。
マネージメントは C++ のテンプレートより困難。うぬ、まったく。
さて、(使う側、使われる側双方が)ボランティアの場合と、お仕事の場合、どちらがよりマネージメントが困難なんだろう。
void func1(void){} void func2(int i){} void func3(int i, int j){} typedef struct { union { struct { void (*func)(void); } s1; struct { void (*func)(int i); char *arg1; } s2; struct { void (*func)(int i, int j); char *arg1; char *arg2; } s3; }u; } type; main(){ type t[] = { {.u.s1 = func1}, {.u.s2 = func2, "foo"}, {.u.s3 = func3, "foo", "bar"}, }; return 0; }
これだと怒られなかった(gcc 3.4.4)。
[ruby-dev:28875] について、どちらが読みやすいかアンケート。
明らかに読みづらい、とまではいかないと思うんだけどなぁ。
RubyKaigi2006 の音声切り出し作業。今週中、職場で終わった後3時間くらいで終わった。やっぱりデータがでかいととり回しが大変。
ボランティアを無償での労務提供とするなら、金でなだめすかすという手段が封じられてる分だけボランティアの方が困難なんじゃないでしょうか。
おもしろい質問だ。もし、それが(楽しい、経験上有意義、必要など)の個人的な理由があればむしろボランティアのほうがマネージメントしやすい可能性が高いと思います。でもその一方、そういう目的意識のせいで発揮される自発性がマネージメント側の意向に沿わない場合には暴走する危険性が常に付いて回ります。……やっぱり金のほうが安定か。
LLのチケット買い忘れた。
BCDって未だに何に使うのかよくわからないんだよな。
LLのチケット買えた。
ふと、
T_ISTRING ->ptr :: allocated string buffer ->len :: length ->hash:: hash(self) T_STRING ->ptr :: ImmutableStringBody ->len :: length ->val :: ptr to immutable string object (for GC/mark)
こんなのはどうだろう、と思った。
実装してみようかしらん。こうすれば、文字列操作にロックが不要になる。が、ゴミは増えるなあ。
自分のパネルディスカッションの映像を見る。うーむ。こういうのは初めてだが、やっぱり恥ずかしい。
実は未だに農工大に atdot.net マシンを置いているんですが、もって行く先を探しています。どっか無いですかねぇ。
宣伝:
第39回情報科学若手の会開催のご案内 情報科学若手の会は,情報科学に携わる学生,若手研究者,社会人の ディスカッションと交流の会です.幅広い分野から参加者を募り,互い の交流を深めることで新たな発想が生まれることを目指しています. インフォーマルな雰囲気ですので.これから研究を始めるという方も是 非ご参加下さい. 詳細は,情報科学若手の会のWeb ページをご覧ください. http://wakate.aitea.net/ 限られた時間ですが,この会が有意義なものになるよう,皆様のご参 加をお待ちしております. なお,今年度の招待講演は筑波大学の前田敦司先生をお迎えする予定 です. 招待講演者: 筑波大学 大学院 システム情報工学研究科 コンピュータサイエンス専攻 助教授 前田敦司先生 日時: 2006年9月16日(土)〜18日(月) 二日間のみの参加も可能です.参加申込みの際に併せてご連絡 ください. 会場: 富士CALM (山梨県富士吉田市) http://www.mfi.or.jp/fujicalm/index.htm (無線Lanなど利用可能です) 定員: 30 名 参加費(食費・宿泊費込): 学生15,000 円,社会人18,000 円 (遠方からの参加者には交通費補助をする予定です) 参加申込み: 参加希望の方は下記の情報を参加申込みアドレスにお送り下さい. - 氏名,性別,所属(学生の場合学年も),メールアドレス, 出発都道府県 - 参加者として氏名・所属をWeb 上に掲載してもよいか (運営の都合,参加者に配布される名簿には名前・所属に 関しては必ず掲載させていただきます.) - 宿泊の部屋割りにあたって,喫煙の考慮が必要な方はその旨 - 食事にあたってアレルギー等がある方はその旨 - 発表をしていただける方はその旨(可能であれば題目,要旨) 参加申込み先アドレス: attend2006@wakate.aitea.net 申込み締切り: 2006年7月31日 (月) (締切り前でも定員になり次第,締切らせていただきます) 主催: プログラミングシンポジウム委員会 情報科学若手の会幹事: 上坂明未(フェリス女学院大学) 笹田耕一(東京大学) 鈴木宏哉(慶應義塾大学) 松浦知史(奈良先端科学技術大学院大学) 松田耕史(東京工業大学) 三輪誠(東京大学)
転載歓迎。
ハードウェア(その頃はファームウェアになってたけど)でBCD演算するマシン使ったことあるけど、COBOL最適化と考えれば良いのだと思います。(のBCDで合ってるかな?)10進演算で誤差が出ない、桁数が無制限、表示文字に変換するのが高速(4ビット単位にばらして上位にF(EBCDIC)とか3(ASCII)とか入れれば良い)とかがメリットのはずです。
4bitチップとかで電卓作ってた頃も大事だったよ>BCD
所属が東大になっとる!
うーむ、やっぱり、手が冷たいときにストーブに手をあてて「手がつめてー」というのは変ではなかろうか、とか思いながら眠れない、というわけではないが、現実逃避中。
あぁ、そういえば RubyConf どうしよう。
ううむ、スライドさえ作ればまつもとさんが英語で発表してくれたりするんだろうか(しねーよ)。
OOP なれって何だ...。別の言語なれ、ではなかろうか。
むぅ。短いコメントがかけなくなってしまった。どうしたもんだか。
ちょっと工夫した。
世の中にはいろんな立場の人が居て、いろんな考え方があって、いろんな制限なりなんなりがあって。
どうにも、ゆるい、ゆるい世界に居たものだから、その辺の感覚が全然わからなくて、はまりすぎ。勉強勉強。リスク管理できてなさ杉。
あぁ、どうやって生きていこうかなあ。
spam 対策を考えないとなぁ。どうしたもんか。
checked な checkbox を用意してみた。これ、意味あるんだろうか。spam 屋さんは、テキトーにフォームに値を突っ込んでいるんではないかと想像してやってみたんだが。
IO#async_read は AsyncEvent オブジェクトを返すのはどうだろう、そういえば、今のRubyでもThread使えばできるよなぁ、とか思って書いてみたら、Threadのラッパーにしかならなかった。しょぼん。
http://www.loudthinking.com/arc/000592.html
おお。俺の名前が書いてある。なんでだろ。まぁ何はともあれアリガトー>david。
例えば、以下のコードをメインスレッドで呼ぶと
f.asynch_read{|data| # data になんかする }
ブロックの部分もメインスレッドで実行されるという事ですか。 で、finalizer みたいにいつ実行されるかは分からないということでしょうか。
あるサイズ毎に与えられたブロックを実行するメソッドがあると便利だと思います。 aio だと while buf = f.read(1024) とか書けないので。
f.aynch_each(1024){|data| # 1024byte読み込む毎に実行される。 }
main thread で呼ばれるかどうかは自明じゃないですよねぇ。でも、$_ とか考え出すと、同じスレッドじゃないとダメかも。あと、Thread#[] か。asynch_read_each かなぁ。メソッド名は。
お仕事をしているような、していないような。
Parrot IO の略で pio としているのは、IO の文脈としていかがなものか。
asynch io を使うとどうなるのか、ちょっと考えてみた。
open(...){|f| f.asynch_read{|data| # data になんかする done = true } # block が実行したとは限らない while done == false # busy loop end }
busy loop は明らかに無駄。じゃぁ、なんか待つprimitiveを、ということかもしれないが、では何で待つんだろう。ううむ。
というわけで、Parrot を調査中なんだけど、いろいろ考えていたのが、うーむなるほど、という感じでいろいろやっている。考えていたインタプリタ(VM)の作り方をきちんとやってくれていた、という感じ。
たとえば、起動オプションで interpreter core の種類を変えられる。
http://www.parrotcode.org/docs/running.html より。
この両者は、コールスレッディングなんだよね。
で、この3者は YARV が採用しているタイプ。-S がふつーの switch 文で、-g が表引きの computed gotoで、-C が先にアドレス解決しておくやつ。
CGP のほうは、アドレス表をどうやって関数の外側に出すのかという(些細な)問題があるんだけれど、Parrot ではグローバル変数に代入していた。なるほど!
で、ちょっと試してみると、fast-core が速いんだよねぇ。うむむ。
fast-core、つまり call threading の場合、関数を呼んでいくんだけど、そのとき PC は誰が計算するんだ、とかを悩んでいたんだけど、Parrot の場合、各関数が次の PC を返すんだね。
# define DO_OP(PC,INTERP) (PC = ((INTERP->op_func_table)[*PC])(PC,INTERP))
こんなのがあって、これを繰り返すという仕組み。なるほどなぁ。YARV もこうしちゃおうかなぁ。
もうちょっと進めて、
pc = &iseq[0]; while (pc) { pc = (*pc)(args); }
なんてやっちゃってもいいかも。
毎回 op_func_table を参照することで、このオペレータ表を変えれば独自のものが簡単にできる、というのは結構大きな利点ですねぇ。
ちなみに、args として何を渡すか、というのは結構難しい問題で、いっぱい渡すとコストがかかるし、渡さないとそれはそれでダメだし、と悩ましいわけです。YARV で call threading を嫌っているのは、渡す変数をどうしたもんかなぁ、というところで悩んでいるわけです。もうちょっと具体的にいうと、cfp をどうやって渡したもんかな、と悩むわけです。thread だけ渡すことにして、cfp は thread 経由で取得、ということにしてもいいけど、そうすると間接アクセスが一つ増えて嫌だなぁ、という感じ。しかし、現実問題そうするしかないよなぁ。
さて、どうしよ。
ちなみに、これらのファイルは、YARV と同じように(いや、誰でも考えるけど)全部自動生成されます。YARV ではコンパイル時のオプションでどれかを選ぶけど、Parrot の場合はいろんなバージョンのソースを出力して、全部リンクしているようです。富豪だ。
libparrot.so は 10MB 弱。でかいなー。
こう?
open(...){|f| m = Mutex.new.lock f.asynch_read{|data| # data になんかする m.unlock } m.lock }
http://plas.fit.qut.edu.au/Ruby.NET/。
おお。
さ、最高学府の自負...。ガクブル。
一度、「Rails はなぜ動くのか」という文章を書いてみたい(で、内容は YARV Maniacs)。
http://www.wgz.org/chromatic/talks/parrot_sdl/index.html おー。
Haskell 触りたくても chm がないとなぁ、と思ったら、あった。
http://park7.wakwak.com/~blackbox/
素晴らしい。これで Haskell 初心者になることが出来る。
Skypeで会議。うーん、色々課題が。
昨日職場に行くと、どでかいプラズマディスプレイが置いてあって、会議室の工事をしていた。うへー。
で、これ幸いと取り込み作業をするために借りてきたスゴ録でRubyKaigiの様子を見る。とりあえずLT見た。大画面でいい音で、素敵。俺、来年は映像見るだけでいいかも。
誰か「映像・音声」編集を無料で行うためのソフトウェアを知りませんかね。Mac OSX と Windows XP マシンがあります。
久々に timedia。
自分が欲しいものがないと、後先をあんまり考えないで作ってしまう(るびま、RubyKaigi、仮想化実装技術勉強会など)のは悪い癖だよなぁ。
それは良い癖だとおもいます。
ささださんの悪い癖が世界を豊かにしているわけだ。be evil!
作ったものが成功したり持続できたり完成させられるのは才能ですよ
わたしなど自分が何を欲しいのか分らなかったりすることもままあるので、わたしにとっては嬉しい癖だと思います。
後先考えていて、きちんとできるんならいいんでしょうが。今まで成功していたのはフォローしてくれる人たちのおかげです。
味方が揃う、ってのは絶対に運だけじゃないと思いますし、それを活かせてるんだから決して悪くはないのでは
そういえば、森田さんに昨日会ったとき、雰囲気変わりましたね、って言われたのだけれど、ひげを剃ってるからかなあ。
その節はどうも。たぶん、久しぶりにお会いしたからだと思います。
VIP まつもとさんの講演を拝聴。
... ちょっと寝てしまった。
逆転裁判の新作が出るらしく、電車の中に宣伝がはってあったのだが、そこにクイズが。どう考えても明白な答えが出るので、あまりにまともすぎるはずがない、と一生懸命考えたが、しかしそのまんまな答えだったということで、竹内先生憤慨。
追記:新作じゃなくて、値下げだそうで。
そういえば、今更ながら、ハッカーと画家を買った。
一「所」懸命デスヨ。とか言ってみたり。今日もがんばるぞー。
無事、終わった。本当に、無事で、本当に、本当に、本当によかった。
関係者の皆様、参加者の皆様、本当に、本当に、本当にありがとうございました。
終わった後、ちょっと泣きそうになった。
アンケート にご協力くださいませ。
連帯感みたいなものがあるというのは、やっぱりマイノリティだから?
貴社って何処だろ。
planet なんとかに補足されない、中の人。
せっかくなので、目に付いた人にマイミク申請をしてみる。見落としもたくさんあると思うので、良かったらマイミクになってください。
RubyKaigi ばかりにかかずらって仕事をしていなかったのがばれたのか、「お前暇してるだろう」ということで、新しいプロジェクトに投入される予感。そして萩谷(はぎゃ)先生とミーティング。
DHH と会うよりも緊張した。
おつかれさまでした。
あ、mixiにアカウントあるんですか?
あ、そうそう。http://blog.uievolution.co.jp/2006/06/ruby2.html ではささださんが発表したことになってますよ(笑) コメントすると蹴られるし、blog持っていないのでトラバも打てません。
ありますよー。ko1 です。その blog の件、気づいてたんだけど、同様にコメントできずに指摘できず。どうしたもんだか。
ういうい。ではマイミク申請出しますのでよろしければ受け取ってください。
FreeBSD で、シグナルの扱いが違うらしく、きちんと動いてくれない。どうしてくれよう。
FreeBSD で、-lpthread つければ十分かと思ったんだけど、-lc_r って必要なんだろうか?
man を見る限り、-lpthread で足りているように見える。
うーん、やっぱり -lc_r が必要な気がする。うーん。
libc_r と libpthread の違いはなんなんだろう。libthr は 1:1 モデル、ということはわかったんだけど。
man pthread には、
INSTALLATION The current FreeBSD POSIX thread implementation is built in three libraries, Reentrant C Library (libc_r, -lc_r), POSIX Threads Library (libpthread, -lpthread), and 1:1 Threading Library (libthr, -lthr). They contain both thread-safe versions of Standard C Library (libc, -lc) func- tions and the thread functions. Threaded applications are linked with one of these libraries.
とあるから、-lpthread か -lc_r のどちらかでよさそうだな。じゃあ、なんでほかのスレッドで printf するだけで abort するのか ...。
ふむぅ。-lpthread じゃなくて -lthr だと普通に動くな。
KSE が ...?
やっぱりよくわからないので VMware に入れてみた。64bit/SMP でやっていたんだけど、32bit/single だと、また事情が変わるかもしれない。
MLといいながら、ただの alias なのは止めて欲しい ...。いや、フォルダ振り分けが自動で行かないので。
http://www.osdl.jp/seminar0613/ を今日知ったんだけれど、さくっと満員だった。ガーン。
私も応募したいです > プレゼント