トップ 最新 追記   RSS 1.0 FEED  

Journal InTime


2004-09-01 (Wed) [長年日記]

_ 型パラメタとAttribute

がーん、型パラメタを含むTypeオブジェクトはAttributeにできないのか (まあ、それはそうか)。

イテレータの戻り値の型をAttributeに保存してたけど、どうしよう。 Attribute使わずに、引数を増やしちゃうのが簡単かな。

Tags: babel

_ たこのない明石焼

会社の後輩に「明石焼はたこ入ってないものですよね」と言われた。 え、明石って言ったらたこなんじゃないんですか。

明石で食べたらしいけど、ぼられたんじゃないのかなあ。

Tags:

2004-09-03 (Fri) [長年日記]

_ ワンライナー

beryllium 側で移行する passwd と shadow を調べるために 以下のスクリプトを考えたのですが, 2 つ目の Ruby インタープリタ呼出しは一行で書けずに ";" を使ってしまいました.

[雄也の?日坊主日記(2004-09-03)より引用]

$ ruby -e 'print open("/etc/shadow").grep(/^(?:#{$<.map {|l| l.split(/:/)[0]}.join("|")})/)'

とか。

あと、一つ目は

$ ruby -F: -ane 'print if $F[3] == "100"' /etc/passwd

の方が楽かも。

Tags: Ruby

_ ぐりとぐら

ぐりとぐら [ぐりとぐらの絵本] (こどものとも傑作集)

子供のために購入。

カステラが食べたくなった。

Tags:

2004-09-06 (Mon) [長年日記]

_ Mono: A Developer's Notebook

買わずに済みそうだな。

で、どういう内容かというと、こういう内容だそうです。

MS.NETを全く触らない人向けのC#の説明なんかも入っているし(知っている人が今更読むものではない)、gtk#やglade#やgecko#といったMonoにしかないコンポーネント(Commons.Xml.Relaxngとかw)の説明も入っている。NUnitの使い方なんかも、MS系の書籍では読めないだろう。ランタイムの設計がどうとか、GACの設計がどうといった、monoならではの難易度の高い話が書かれている本ではない(個人的にはそういうのが一番読みたいのだけど)。

[Place Under Glacier: Mono: A developer's Notebookより引用]

最後の部分、同感。

Tags:

2004-09-07 (Tue) [長年日記]

_ 無償ソフトウェア ガイドライン

Debianプロジェクトは声明の中で、Microsoftのライセンス条項は同プロジェクトの無償ソフトウェア ガイドラインとは相容れないとしている。同プロジェクトは今後、Sender IDを実装せず、これを実装するほかのソフトウェアでも同標準はサポートしない。

[DebianもSender IDを拒否 - CNET Japanより引用]

「無償ソフトウェア ガイドライン」って。

Tags: Debian

_ LispのCLUへの影響

(モデル的には)全部参照で、GCをサポートしてる、ってところかなあ。

Tags: 言語

_ ペアプログラミング

ひさびさにペアプロ。 今回は新人(かずひこさんではない)とのペア。

技術的には難しいことはしないで済みそうだが、仕様がなかなか まとまらないのがちょっとつらい...。

Tags: 仕事
本日のツッコミ(全2件) [ツッコミを入れる]

_ まつもと [もう直ってますね。無償ソフトウェアガイドライン。]

_ shugo [おお、ほんとだ。 書いてみるもんですね(違]


2004-09-10 (Fri) [長年日記]

_ fml

ああ、fml いやですよね。

[Rubyist Magazine - 0001-Rubyist Hotlinksより引用]

何てこと言ってるんだ、この人は。

fmlにはとてもお世話になってます。 だいたいPerlが書けないバカが悪いんです。 ロクに勉強もせずに悪口言うなんてサイテーです。

よし、今年はPerlを覚えよう。 *1

Tags: 言語

*1  perl -pe 's/foo/bar/g'くらいなら書けるんですが

_ Shugo daimyo

いやあ、大名プログラマとしてそんなに有名だったとは。


2004-09-13 (Mon) [長年日記]

_ サーバ移転

雄也君に破壊される前にこの日記のサーバを移転した。

Tags: その他

_ レーベル移転

警察署の通りに移転したらしい。 9/17オープンで、9/15にレセプションパーティがあるそうだ。

Tags: その他

2004-09-14 (Tue) [長年日記]

_ 今日の Amazon

何かアレなことになっている。 これもるびま効果だろうか。

Tags: その他

2004-09-15 (Wed) [長年日記]

_ mod_rubyがささる

ruby_1_8ブランチのHEAD + Apache 2.0.50 + mod_ruby svn headの 組み合わせで、ささることがあるようだ。 gdbをアタッチしてbtしてみるも、よくわからず。 条件も特定できない。

(gdb) bt  
#0  0x403d0670 in mallopt () from /lib/tls/libc.so.6
#1  0x00000038 in ?? ()
#2  0x404938a8 in __after_morecore_hook () from /lib/tls/libc.so.6
...
#27 0x40714278 in __JCR_LIST__ () from /usr/local/lib/libruby1.8.2.so.1.8
#28 0x00000000 in ?? ()
#29 0x00009344 in ?? ()
#30 0xbfff6818 in ?? ()
#31 0x4069f347 in ruby_xmalloc (size=120) at gc.c:116

明日、まつもとさんに相談してみよう。

boronもこいつのせいかなあ。

追記:

以下のようなスクリプトでSEGVした。

#!/usr/bin/ruby -Ksd

require "webrick/cgi"
require "search/namazu"

class MyCGI < WEBrick::CGI
  def do_GET(req, res)
    100.times {
      result = Search::Namazu.search("ruby", ["/home/shugo/tmp/index"])
    }
    ary = []
    10000.times {
      ary.push(Object.new)
    }
    res["content-type"] = "text/plain"
    res.body = "hello"
  end
end

cgi = MyCGI.new
cgi.start

今度はまともなバックトレースが取れた。

(gdb) bt
#0  0x403c1741 in st_free_table (table=0x82024b8) at st.c:219
#1  0x40371f60 in obj_free (obj=1079314672) at gc.c:1153
#2  0x40371a39 in gc_sweep () at gc.c:1021
#3  0x40372479 in rb_gc () at gc.c:1387
#4  0x40370daa in rb_newobj () at gc.c:376
#5  0x403739d6 in hash_alloc (klass=1078233508) at hash.c:183
#6  0x40373a64 in rb_hash_new () at hash.c:195
#7  0x4056007e in result_make_fields (idxid=0, docid=75, field_list=1078070448)
    at namazu.c:373
#8  0x405601e3 in result_make_hlist (hlist=0xbfff9e68, fields=1078070448)
    at namazu.c:394
#9  0x405604ea in search_main (search_0=1078070428) at namazu.c:480
#10 0x4035b904 in rb_ensure (b_proc=0x405603a0 <search_main>, data1=3221200480,
    e_proc=0x40560610 <search_ensure>, data2=3221200480) at eval.c:5184
#11 0x405606aa in namazu_f_search (argc=1836017711, argv=0x6d6f682f,
    self=1079103052) at namazu.c:502

どうも、Search::Namazu.searchの中でGCが起きた時に落ちてるっぽい。

(gdb) list
214         int i;
215
216         for(i = 0; i < table->num_bins; i++) {
217             ptr = table->bins[i];
218             while (ptr != 0) {
219                 next = ptr->next;
220                 free(ptr);
221                 ptr = next;
222             }
223         }
(gdb) p ptr
$10 = (st_table_entry *) 0x6d6f682f
(gdb) p *ptr
Cannot access memory at address 0x6d6f682f

ptrの値がおかしいようだ。 さて、だれが悪いのだろう。

Tags: mod_ruby Ruby
本日のツッコミ(全2件) [ツッコミを入れる]

_ まつもと [デバッガであちこちのぞいて見ないと何ともいえませんね。 GCのバグか拡張ライブラリのバグかどちらかでしょう。 個人的..]

_ shugo [私も後者を期待(失礼)してるんですが...。 (Debian的に)]


2004-09-18 (Sat) [長年日記]

_ search-namazuとENV

mod_rubyを使わなくても、以下のスクリプトで落ちることを確認。

require "search/namazu"

VAL = "x" * 100
(1..100).each do |i|
  p i
  ("A00".."A99").each do |name|
    ENV[name] = VAL
  end
  result = Search::Namazu.search("ruby", ["/home/shugo/tmp/index"])
  10000.times {
    Object.new
  }
  ENV.clear
end

ちょっと条件を変えるとささったりする。

どうもlibnmzのnmz_set_lang()でsetenv()を使っているのが原因のようだ。 RubyのENVの実装って、拡張ライブラリなどでsetenv()を使わないことを 前提にしていたような気がする。

試しに以下のようにnmz_set_lang()をruby_setenv()で置き換えると 落ちなくなるようだ。

 
--- namazu.c.orig     2004-09-19 01:21:14.000000000 +0900
+++ namazu.c  2004-09-19 01:35:42.000000000 +0900
@@ -301,7 +301,7 @@ static void process_lang(VALUE lang)

        if(!NIL_P(lang))
                slang = StringValuePtr(lang);
-     nmz_set_lang(slang);
+     ruby_setenv("LANG", slang);
 }

 static VALUE process_fields(VALUE fields)

うーん、どうしたもんだか。

Tags: Ruby mod_ruby

2004-09-19 (Sun) [長年日記]

_ 散髪

でこっぱち

奥さんが息子の散髪をしたのだが、前髪をちょっと切り過ぎて、 でこっぱちぶりが一段と増してしまった。 まあ、男の子だからいいか。

Tags: 家族

_ マスカルポーネチーズ

マスカルポーネチーズ

ラパンという高級スーパー*1で ティラミス用にマスカルポーネチーズを購入。 これ一個で1000円ですよ。 こころなしか、客層も他のスーパーと違うような気が。

いろんなスーパーに行ったけど、結局ここにしかなかった。 百貨店にもないってのはなあ...。

Tags:

*1  かずひこさん御用達らしい。


2004-09-20 (Mon) [長年日記]

_ ログハウス

ログハウス

奥さんと長女の誕生日、にはちょっと早いが、多岐町のログハウスに宿泊。 ログハウスはフィンランド製だそうだが、できて間もないようで、 とてもきれいだった。

サウナ

内部の設備も充実していて、サウナ(写真右)があったり、 IHクッキングヒーターまであったり。 IHクッキングヒーターなのは、きっとガスコンロより掃除が 楽だからだろう。

掃除と言えば、利用の手引きみたいなのに、帰りに自分たちで 掃除してから帰るように書いてあるくせに *1、 ホテルとかによくある「お客様が快適に過ごせるよう、私たちが 掃除しました」みたいな紙が置いてあるのはどうかと。

Tags: 家族

*1  掃除機や、トイレの掃除道具まで置いてあった


2004-09-21 (Tue) [長年日記]

_ キララ多伎

ビーチを歩いたり、海鮮たこやきを食べたり、近くの「いちじく温泉」に入ったり

[ふぇみにん日記 - キララ多伎より引用]

しようと思ったら、道の駅も温泉も休みだった:( *1

結局、なぜかジャスコの火曜市に。

Tags: 家族

*1  かずひこさんとはニアミスだったようだ。

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

_ かずひこ [私達も帰りにジャスコに寄りましたよ :)]

_ shugo [おお、そうでしたか。 やっぱり時代はジャスコなのか。]


2004-09-23 (Thu) [長年日記]

_ modruby.net Hiki

modruby.netにHikiを導入

Wikiを使うのははじめてで、勝手がよくわからず。

RD+スタイルを使っているのだが、応答するプロセスによって 「==」が<h2>になったり<h4>になったりするようだ。 ひょっとしてtDiaryと名前がかぶってる?

Tags: mod_ruby

_ リビンズ山根

という米子の家具屋さんに食器棚を見に行って来た。 名前はださいが、わりといい感じのものが、安く売られていた。

帰りにホバートにも行ってみたのだが、思ったより安いものの、 くらべるとやっぱりぜんぜん違うお値段。 庶民はおとなしくしとこう。

Tags: 買い物

_ tDiaryのRDスタイル

コードを見てみたら、

class Headline
   MARK2LEVEL["="] = 3
   MARK2LEVEL["=="] = 4
   MARK2LEVEL["==="] = 5
   MARK2LEVEL["===="] = 6
end 

なんてしてるじゃないですか(Headlineはrdtoolで定義されてるクラス)。 だから、tDiaryが動いた後で、Hikiの方の見出しのレベルが変わっちゃうんだな。

このへんはHikiのRD+スタイルみたいにした方がマナーがいいと思います。

<URL:/tmp/rd_style.rb.diff>

Tags: Ruby

_ Google AdSense

modruby.netに入れてみた。 あんまり期待できないけど。

Tags: その他
本日のツッコミ(全2件) [ツッコミを入れる]

_ うえち [rd_style.rb のパッチいただいて commit しました。ありがとうございます。]

_ shugo [こちらこそありがとうございました。]


2004-09-24 (Fri) [長年日記]

_ libapreqのインクルード

Debianのlibapreqパッケージにもれなくperl bindingが付いてくるのが 嫌で、svn headにlibapreq本体を取りこんでみた。

元のlibapreqは、Apache2では動かない*1ので、 ちょっと手を加えてApache1/Apache2の両方で使えるようにした。 あと、元のと名前がぶつからないように、関数名にプリフィックスを 付けておいた。

Tags: mod_ruby

*1  libapreq2なら対応してるけど、Apache2専用

_ Webアプリケーションフレームワーク

ちょっとWebアプリケーションフレームワークを作ってみようかな。

  • クエリの解析やHTMLの生成などを行うフロントエンドは、mod_ruby上 (CGIでもいいけど重そう)で動かす。
  • ロジックは、アプリケーション毎に独立したプロセスで動かす。
  • コンポーネントのサポート。
  • イベントドリブン。
  • セッションには継続を使う。したがって、アプリケーションは同時に 1つのリクエストしか処理できない。クライアントとの入出力はmod_ruby 側でやるから、あまり問題はない(と思いたい)。

要は、Webアプリケーションが書くのが嫌いなので、なるべく 普通のGUIアプリケーションっぽくしたいのだ。

セッションに継続を使うのは、イベントハンドラから別の画面に 遷移した後で、もとの画面に戻ってくる時に、イベントハンドラの 元の場所に戻ってきたいから。 上手く行くかどうかは、あまり深く考えてない。

継続を使うのは、リクエスト毎に、復元と保存が一回ずつだけなので、 速度的なコストはたいしたことないだろうけど、メモリ食いそうだな。

Tags: Ruby

_ Google AdSense

日記にも入れてみた。

Tags: その他

_ 継続

とか言ってる間に、継続自体がばっさり削除されそうな予感

Tags: Ruby

_ mod_securityでreferer spamよけ

1000以上もくらっていたので、こんな感じにしてみた。

SecFilterSelective HTTP_REFERER "foo|bar|baz"

fooなどの部分はアレな単語で置き換えてください。

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

_ まつもと [いや、削るつもりは(まだ)ないんだけど。 なんか制約をつけたら安全になるかも、とは考えてます。 問題はどんな制約が妥..]

_ shugo [robustでないイテレータを実行中には、callcc禁止フラグを立てるとかですかねえ。]


2004-09-25 (Sat) [長年日記]

_ callccの制限

$SAFE >= 4では、callccそのものを禁止してしまう、というのは 乱暴すぎるだろうか。

Tags: Ruby

_ $SAFEと拡張ライブラリ

拡張ライブラリでは、$SAFEが考慮されてないことが多いので、

require "postgres"
require "readline"
$SAFE = 4
conn = PGconn.connect("localhost", 5432, "","","dbname", "username")        
Readline.readline(conn.exec("select current_timestamp")[0][0] + "\n")'

出力結果:

2004-09-25 01:44:34.247251+09

なんてことができてしまう。

C API(rb_define_method()とか)で定義したメソッドは、 デフォルトで、$SAFE >= 4では実行不可にしてしまうというのはどうだろう。

Tags: Ruby

_ lithium.ruby-lang.orgダウン

lithium(ruby-lang.orgのMLを提供)が14:00ごろから落ちていたようだ。 かずひこさんに復旧していただいた。多謝。

ログを見ると、ext3のエラーが出ていたようだけど、ハードウェアの エラーらしきものはないようだ。うーん、原因は何だろうな。 はっ、もしかしてY君か...

Tags: Ruby

2004-09-26 (Sun) [長年日記]

_ 「春雨」と「ビーフン」の違い

奥さんに聞かれて調べてみた。

# 「春雨」・・・・・・ 緑豆、えんどう豆、甘藷、また馬鈴薯などのデンプンが主原料のもの

# 「ビーフン」・・・ 米が原料

[「春雨」と「ビーフン」の違いより引用]

なるほど。

Tags:

_ mod_ruby-1.2.3

リリースしました。

Tags: mod_ruby

2004-09-27 (Mon) [長年日記]

_ SecFilterEngine

mod_securityの設定で

SecFilterEngine On

としていた部分を

SecFilterEngine DynamicOnly

にした*1ら、ツッコミができないようになっていたようだ。 かずひこさんに教えていただいて発覚。

*1  動的コンテンツに対するリクエストのみフィルタリングする という意味

_ 嘔吐反射

歯医者で歯の掃除をしてもらう。

自分は嘔吐反射があるので、かなりの苦痛を伴う。 歯医者というと、痛いのが嫌だという人がいるけど、ちょっとくらい 痛い方が気が紛れていい。 あんまり痛いのも嫌だけど。

Tags: その他

_ Re: mod_ruby-1.2.3 released

案の上バグがあったようだ。

I'm getting the following when trying to compile it on Mac OS X (10.3):

(snip)

mod_ruby.c:906: warning: implicit declaration of function `_NSGetEnviron'

[Re: mod_ruby-1.2.3 releasedより引用]

Mac OS Xでビルドができなくなっていたらしい。 また、やってしまった。

でも、こういうのってリリースしないとなかなか見つからないんだよな。

Tags: mod_ruby

_ mod_ruby-1.2.4 リリース

というわけでリリース。

_ ML services will be stop for maintenance

ML services will be stop for maintenance on Tue Sep 28 11:00 (UTC). The services will be restart within 30 minutes, I hope.

[ML services will be stop for maintenanceより引用]

がー、英語が変だった...。

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

_ ま2 [あー辛いですよねー > 嘔吐反射 口の端にひっかける器具とか,口の中の水を吸い上げるホース(?)が舌に当たったりする..]

_ shugo [はい、つらいっす。 このつらさは、ない人にはなかなかわかんないでしょうね。]


2004-09-28 (Tue) [長年日記]

_ mod_securityでreferer spamよけ(2)

ホスト名が30文字以上なやつは蹴ることに。

SecFilterSelective HTTP_REFERER "http:/[a-zA-Z_-]{30}" "deny,nolog,status:403"

パス部の//が/に正規化されるのは知ってたけど、http://もhttp:/に なっちゃうのは知らなくて、はまった。


2004-09-29 (Wed) [長年日記]

_ Hashを使ったコードのテスト

Hashを使ったコードは、繰り返しの順序が不定なため、テストを 書きにくい時がある。 そういう時は、テストコードでHash#eachを再定義してしまえばよい。

class Hash
  def each(&block)
    to_a.sort_by { |k,v| k.to_s }.each(&block)
  end
end

テストの方に入れるのがポイント。

Tags: Ruby

_ chroot環境のアップデート

今はcronでやってるけど、/etc/apt/apt.conf.d/にスクリプト を置く方がスマートに実現できそうな気がする (けど、今はやる時間がないのでメモ)。

Post-Invokeでごにょごにょやればいいのかな。

Tags: Debian

_ 奥さんの誕生日

ケーキ

というわけで、みんなが忙しそうな中、とっとと帰った(ごめんなさい)。

ひさびさにシャンパンを飲んだり、奥さんが自分で焼いたケーキを食べたり。

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

_ はら [なああああるほどぉぉぉ>Hash]


2004-09-30 (Thu) [長年日記]

_ ブリエキャセロール

ブリエキャセロール

一日遅れで、奥さんへのプレゼントが届いた。

といっても奥さんが自分で選んで自分で注文したので今一つ実感がない。 と思っていたら、コンビニ用の払込票を渡されて実感が湧きました。

シールを剥がしたらルクルーゼにそっくりで、名前もブルジョアっぽい けど、箱にさりげなく「MADE IN CHINA」の文字が。

Tags: 買い物