2005-04-03 (Sun) [長年日記]
_ ximapd
とりあえず、名前はximapdに。
$ /usr/local/bin/project-name ximapd ximapd: ximapd.nu domain : not registered ximapd.ac domain : not registered google count : 2 sourceforge.jp : not registered ximapd.net domain : not registered ximapd.org domain : not registered ximapd.com domain : not registered savannah.gnu.org : not registered sourceforge.net : not registered ximapd.info domain : not registered ximapd.cc domain : not registered ximapd.to domain : not registered ximapd.jp domain : not registered ximapd.gr.jp domain: not registered freshmeat.net : not registered raa.ruby-lang.org : not registered
すばらしい。
で、Thunderbirdからとりあえずアクセスできるようになった。 本当ならばんざーいと言うところである。 しかし、ここで問題が。
計画では、
- INBOXは通常はMLのメールは表示しない(UIDは歯抜けになる)
- ただし、INBOXで検索を行った時はMLも含む全メールを検索
となるはずだった。 ところが、Thunderbirdは、検索結果に含まれるUIDが、以前に そのメールボックスで1:*をFETCHした結果に含まれていない ものだった場合、無視してくれるようだ。 うーん、知らないUIDだったら検索後にFETCHしてくれよ。
どうしよっかなあ。
追記:
- INBOXの検索時にServer Side Saved Search Folderを作成
- 作成されたフォルダを参照
という手順なら全フォルダの検索ができそう。 でも面倒だよなあ。
といって、Thunderbirdの機能で全フォルダの検索をやらせると、当然ながら フォルダごとに検索することになってしまう。うーん、うーん。
2005-04-04 (Mon) [長年日記]
_ CHECK, STOREを実装
CHECK, STOREを実装。
やっぱり、INBOXとは別にALLみたいなメールボックスを作った方が いいかもしれない。 でもFETCH 1:*みたいなのに真面目に返事してたら遅いよなあ。
たださんがチャレンジされているようですが、現状のximapdを使うのは いろんな意味であぶないので気を付けてくださいねー > みなさん
2005-04-05 (Tue) [長年日記]
_ STATUSを実装
ximapd.rb自体がバージョンアップしていたのか。
[ただのにっき(2005-04-05)より引用]
というか、たださんの日記を見てあわてて直しました。
最新にしてリトライ。INBOXやらINBOX.Trashやらmlやらが見えた。さっきと違うところ止まったが。って、STATUSコマンドはまだ未実装じゃん!:
[ただのにっき(2005-04-05)より引用]
とりあえず、いいかげんに実装しました。UNSEENは0しか返しませんけど。
あとは、INBOXにメールを放り込む方法さえわかれば(笑)。
[ただのにっき(2005-04-05)より引用]
$ ximapd.rb --import filename $ ximapd.rb --import < filename $ ximapd.rb --import dirname
みたいな感じでインポートできるかもしれません。
しかし、次はBODYのFETCHでコケると予想;p
2005-04-07 (Thu) [長年日記]
_ RENAME
RENAMEを実装。
_ queriesフォルダ
queriesフォルダの下にメールボックスを作ると、メールボックス名を (Rastの)検索クエリとして検索するようにしてみた。 たとえば、`queries/from : shugo@ruby-lang.org'だと`from : shugo@ruby-lang.org'というクエリ(From:にshugo@ruby-lang.orgが含まれるメール)の検索結果をメールボックスとして作成する。 もちろん、新しく来たメールもどんどん追加される。 queriesフォルダの外に移動したり、フォルダ名自体を変えてしまってもOK。
ちなみに、既存のdata_dirがある場合は、mailbox.dbの`mailboxes:'という部分に、
queries: flags: "\\Noselect"
のようなエントリを追加する必要があります。
_ SUBSCRIBE/UNSUBSCRIBE
NOOPとして実装。
_ procmail
ちなみに、procmailでspamなどを振り分けて、ちゃんと読みそうなメール だけをximapdにimportしている。 spamのためだけに検索を使わないメールボックスを実装するのが面倒なので...。 Rastが十分にスケールしてくれればspamも突っ込むんだけど、一日数千通ペースは苦しいだろうなあ。
2005-04-08 (Fri) [長年日記]
_ UNSEEN
STATUSコマンドでちゃんとしたUNSEENの値を返すようにした。 Thunderbirdの新着メールチェックがちゃんと動くようになった気がする。
_ FETCH
(UID FETCHではなく)FETCHを実装。
_ glasses valley
かずひこさん夫妻とglasses valleyのメインストアへ。
残念ながら、オーナーもFreudenhausのデザイナーの人も食事に出ているとのことだったが、何点かの新作を見ることができた。といっても、前のモデルも知らないけど。 店長さんも言ってたけど、テンプルが格好良いです。
帰りにとある事情でプジョーを運転させてもらったけどいきなりエンスト。 その後も何回もウインカーと間違えてワイパーを作動させてしまった(右ハンドルだけどウインカーだけ逆なのだ)。
2005-04-09 (Sat) [長年日記]
_ かけっこ
子どもを近所の子と遊ばせていたらかけっこがはじまった。うちの子ときたら、遅い遅い。まあ、女の子だから、まだいいか。でも下の子も不安だなあ。
_ gimme glasses
娘とふたたびglasses valleyへ。昨日は到着が遅れていた分の眼鏡もちゃんと届いていた。 今度はStefan Flatscherさんにもお目にかかることができた。娘のことを"She's beautiful"と言われ照れる。彼も年の近いお子さんがいるそうだ。
おだてられたせいというわけでもないが、買うつもりはなかったのに、買うハメになってしまった。 gimme glassesというスイスのブランドだが、同じくStefanさんのデザイン。Freudenhausの新作にも魅かれたが、入手できるのが8月になるのと、 なかなかお値段が...*1ということでパス。仕上ったら日記で自慢します。
*1 まだ決まっていないけど4万くらいになりそう、との話
2005-04-10 (Sun) [長年日記]
_ ruby-prof-0.2
バグフィックスのみ。
Debian sidな人は、以下のapt-lineでapt-get install libprof-ruby1.8できます:)
deb http://shugo.net/debian/libprof-ruby ./
2005-04-11 (Mon) [長年日記]
_ Becky!対応
FETCHが実装されるとBecky!で読めるかな〜と思ったが、相変わらず一覧が出ない。エラーはEXPUNGEでしか出てないんだが。何がいけないんだろう。つーか、未読が2000件とか出てる時点でなんか変(笑)。またメールボックス作り直してみるか?
Thunderbirdでの動作はだいぶ良好で、UNSEEN実装のおかげでMLの未読が出るようになった! 便利! でもなぜか、こっちもINBOXの一覧が出なくなっちゃった!(こっちはINBOXだけ) なんでや……orz。
[ただのにっき(2005-04-11)より引用]
うーん、何ででしょうね。 Becky!はSEARCHで未取得メールをチェックするようなのでSEARCHの結果がおかしいとか。 ximapd.rb -dのログをいただければ何かわかるかもしれません。 EXPUNGEはとりあえずNOOPとして実装しました(そんなんばっかり)。
あと、自分のThunderbirdではINBOXの一覧はちゃんと出ますね。 INBOXの未読管理は何かおかしいんですけど、SELECTのuntagged responseでUNSEENを返してないからかなあ。
_ Projects
TracMultipleProjectsを参考に、複数のプロジェクトをApacheの設定は1つにして管理するようにしてみた。 mod_pythonを使わなくてもできたのか、ってmod_rewrite使えばそりゃできるよな。
_ ruby-profのstack_tが衝突
バグフィックスしてリリースしたとたんに、新たなバグレポートが。 Mac OS 10.3.8のsys/signal.hにも定義されているらしい。
prof.cの中だけならOKかと思ったが、甘かった。
2005-04-12 (Tue) [長年日記]
_ Rast 検索 for tDiary
インデックスの更新部分を、squeeze.rb プラグインを元にして、コマンドとしてもプラグインとしても動作するようにしました。もう少しだけ Rast 開発チームの中で検証したら公開できるかな。
[ふぇみにん日記 - Rast 検索 for tDiary (2) , 会社説明会 , 先週の Amazon ご注文より引用]
人柱になってみました。 tDiary 2.0.0だといくつか問題がありましたけど、何とか動いたようです。
2005-04-13 (Wed) [長年日記]
_ 環境変数の復元
restore environment variables. (closes #9)
[[65] (changeset) - mod_ruby - Tracより引用]
スクリプトの実行後に環境変数を復元するよう修正。
_ メンテナンス作業のお知らせ
Thu Apr 14 12:00:00 JST 2005にサーバのメンテンス作業を行います。短時間アクセスできなくなる可能性がありますが、あしからず御了承ください。
[メンテナンス作業のお知らせ - オブジェクト指向言語Rubyより引用]
というわけで、よろしくお願いします。
2005-04-14 (Thu) [長年日記]
_ Firefoxのフォント表示
かなり前からだけど、Firefoxのフォント表示が時々おかしくなって 右のような感じになる。 コピー&ペーストすると、ちゃんと、
[mod_ruby] 環境変数の復元
のようになるので、文字コード変換の問題ではなくてフォントの問題なのかな。再起動すれば元に戻るけど、何とかならんですかねえ。
_ メンテナンス作業失敗
無事終わった(ほんとはVirtualHostの設定忘れてたりしたけど)と 思っていたら、逆引の設定がされてないことを同僚に指摘されて、 慌てて設定。 御迷惑をおかけしました。
_ mobileimap
mobileimapを使うには、FETCHでENVELOPEをサポートしないといけなかったり、(UID SEARCHじゃない)SEARCHとか、(UID STOREじゃない)STOREとかをサポートしないといけないようだ。 何となくそんな予感はしていたのだが。
_ Digitune [おぉ!はじめて同じ症状に悩んでいる人を見つけました>Firefox。 僕も結構前から気になっていたんですが、その後 ..]
_ shugo [なるほど、最近gtkまわりのパッケージはupdateしてなかったりするので、試してみます。]
_ ay [原因は別にあるとは思うのですが手元の環境では/etc/fonts/fonts.confを書き換えることで回避できるよ..]
_ 通りすがり [え、肉の日リリースじゃないんですか?>ximapd それとフォントの問題ってこれのことですかね? http://ha..]
_ shugo [apt-get dist-upgradeしてもだめでした。 http://hanzubon.jp/node/23は..]
2005-04-15 (Fri) [長年日記]
_ Unicode Normalizationはかな文字を正しく正規化するか?
UAX#15によると、compatibility decompositionを適用した結果、全角濁点(0x309b)は、半角スペース(0x20)+半角濁点(0x3099)に置き換えられる。だから、たとえば「タ゛」(0x30bf 0x309b)は0x30bf 0x20 0x3099となる。
[ものがたり (diary for AtsushiEno)より引用]
Rast的には、309B(KATAKANA-HIRAGANA VOICED SOUND MARK)などは3099(COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK)に変換して しまった方がいいかも。
追記:
しかし、やっぱり何にも考えずに結合文字にしちゃうのはまずいような気がする。 教えて、エラい人。
_ gimme glassesなど
出来上がったので取りに行って来た。いいでしょう。
かけてみると何かちょっとずれた感じがして、何度か調整して もらったけど、途中からよくわからなくなって来た。 気になるようだったらいつでも調整してくれるとのこと。
さて、この機会に、コレクションを公開しよう。
まず、最初に買ったLunor。*1
最初にして一番高価。たぶん、二度と買えないだろう。 ほんとはテンプルが金属のみのやつも欲しいんだけど。
別売りのクリップオンを装着すると、右のようにサングラスとしても使える。 ただし、外した時の持ち運びが面倒。
次に買ったのがBeausoleil。セルのが欲しくて、色がきれいなこれに決めた。 写真ではよくわからないけど。
ちなみに歪んでるように見えるのは写真のせいではなくてほんとに歪んでいる。
次は、ic! berlin。 アルミ製で、蝶番がネジを使わない構造になっているところが変わっている。
これだけカラーレンズ(グリーン)で、夏はこれがメイン。 でもサングラスとしてはあまり役に立たない。 しかも、道路交通法的には夜は使えないらしい。
最後は、Theo。
誕生日に奥さんに買ってもらったもの。 しばらくかけないうちに持ってるのを忘れていたのはナイショだ。
一番形が変わっているのがこれで、かずひこさん曰く勝負眼鏡らしい。
こうして見ると、結構たくさん買ったなあ。 父の日に親父に買ったOliver Peoplesを合わせると6本。いいお客さんだ。
ちなみに、実は、運転時と休みに出かける時にしか眼鏡はかけなかったりするのだが、 もったいないですかね。
*1 ほんとは学生のころにしょぼいセルフレームの眼鏡を買ったことがあるけど、ほとんどかけなかった。
2005-04-17 (Sun) [長年日記]
_ TMailにencoded wordをデコードさせない
ようにするため、以下のようなハックを。
module TMail def Decoder.decode(str, encoding = nil) return str end end
parserでdecoderが切替えられるようになっていると、iconvを使った decoderなんかも用意できたりしてうれしいかもしれない。
しかし、ximapd的にはTMailはオーバスペックな気もして来たなあ (とはいえ、自分で書くのはメンドイ)。
2005-04-18 (Mon) [長年日記]
_ Normalization Forms KD and KC Examples
追記: ていうか別に同一でない文字列としてもいいんじゃん?と考えることもできそうだけど、UAX#15のA1.3 Normalization Forms KD and KC Examplesでは、NFKCではこれらは同一の文字列になる、と明言してしまっているのよね。というかそもそもそこが疑問の出発点だったわけでして。
[ものがたり (diary for AtsushiEno)より引用]
A1.3 Normalization Forms KD and KC Examplesのtenは、 Table 3: Character Abbreviationによると、 KATAKANA-HIRAGANA VOICED SOUND MARK(309B)ではなく COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK(3099)のようなので、 UNICODE的にはこれでよかったりするんじゃないでしょうか。
で、これが望ましい仕様かどうかを論じるほどの見識は自分には なかったりするわけですが:(
ちなみに、JISX0208の濁点(212B)は309Bにマッピングされているらしい。 そういうものなんですかね。
2005-04-19 (Tue) [長年日記]
_ Becky!
HEADがBecky!で動くようになった気がする。
_ Wanderlust
Wanderlustでも動くようになった気がする。
_ spam対応
spamはヘッダの一部(SubjectとかDateとか)だけインデックスに登録 するのがいいかな。 それでインデックスがどれくらい大きくなるだろうか。
2005-04-20 (Wed) [長年日記]
_ Ruby syntax colorizer for enscript
RAAから消えてたけど、これかなあ。
適用してみたけど、 配色が今一つ好みでない。 やっぱり予約語は赤くないと。
追記: code.cssで変更できた。
2005-04-21 (Thu) [長年日記]
_ Firefox 1.0.3でtDiaryQuoteが動かない
JavaScript Consoleを見ると、
var focusedWindow = document.commandDispatcher.focusedWindow; selection = focusedWindow.__proto__.getSelection.call(focusedWindow).toString();
という部分でエラーになっているようだ。
Error: uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: chrome://tdiaryquote/content/tdiaryquoteOverlay.js :: anonymous :: line 69" data: no]
こんなことしていいのかなと不安に思ってた部分ではあるんだけど。 うーん、どうすればいいんだ?
_ queries以下のフォルダ名の変更
INBOXやmlの内容はちゃんと読める。queryの中、フォルダ名を変更するとクエリの内容まで変わっちゃうみたいだけど、これって前は変わらなかったんじゃ?
[ただのにっき(2005-04-21)より引用]
Becky!でフォルダを作ると、一時的に適当な名前でフォルダを作ってからユーザが 指定した名前にRENAMEするようなので、このような挙動に変更しました。 クエリを変えたくない時は、queriesフォルダの外に移動してください。
メールの削除ができない……のはまだ未実装だからだな(↓)。
[ただのにっき(2005-04-21)より引用]
そうです、えへん。
Becky!からだと、INBOXに(--importによって)あとから「追加」されたメールが現れない。
[ただのにっき(2005-04-21)より引用]
もしかして、Becky!って明示的にコマンドを発行しなくても、サーバ側からメールボックスの変更(メールの追加とか)が通知されることを期待してるのかも。 RFC3501の`5.2. Mailbox Size and Message Status Updates'あたりに、
A server MUST send mailbox size updates automatically if a mailbox size change is observed during the processing of a command.
なんて書いてあるので、ほんとはやらなきゃいけないんですけど、手抜きしてます。
_ Railsはじめました
Railsを評価中。 あまり時間がないので、明日中には採用するか決めたい。
Railsはテーブルやカラムの名前を付ける際に慣習に従わないと面倒なことに なるようだが、幸い自分の今までのスタイルで行けそうだ。ラッキー。
テーブルにprimary keyがないといけない*1 のは何とかならないのかなあ。
あるいは、
create table questions ( id integer primary key, question varchar(256) ); create table answers ( question_id integer, number integer, answer varchar(256), primary key (question_id, number) );
のようなテーブルがある時に、
class Answer < ActiveRecord::Base def self.primary_key return "question_id", "number" end end
みたいにできないかな。
*1 少なくともfixtureが上手く動かないみたい。
_ Howto Use Boolean Columns in Rails
Railsはtrue/falseを1/0にマッピングするため、PostgreSQLでboolean型を使う場合、fixtureに
a_fixture: int_col: 1 bool_col: true
と書くとNG。
a_fixture: int_col: 1 bool_col: "true"
のように書かないといけないらしい。
The boolean type is nonstandard and, in postgresql 4.7 at least, the db will give an error if you try to put an int instead of a bool in.
ん、SQL92とかになかったっけ?
_ fixtureとprimary key
modelを作らなければ、primary keyがなくてもちゃんとfixtureが機能するみたい。 つまり、Railsから直接見る必要のない中間テーブルにはprimary keyがなくても いいってことだな。
_ @@@@ [selection = focusedWindow.getSelection().toString(); こうかな?..]
2005-04-22 (Fri) [長年日記]
_ pagination
Webアプリケーションでは、リストが長くなった時に複数ページに分けて、 「次へ」「前へ」のようなナビゲーションを行うことが多い。 たとえば、Googleの検索結果みたいな。
これって結構面倒なのだが、Railsではpaginateというメソッドによって 簡単に実装できる。
まずは、コントローラ側のコードに、
def list @question_pages, @questions = paginate(:question, :per_page => 5, :conditions => "category_id = 1", :order_by => "date desc") end
のように書いておく。
paginateの第一引数にはモデルの名前*1、 第二引数には以下のようなオプションを指定できる。
- class_name
- モデルのクラス名
- per_page
- 一ページあたりの行数
- conditions
- where句
- order_by
- order by句
- join
- join句
- parameter
- ページ番号を指定するためのパラメータの名前
で、テンプレートに、
<ul> <% for question in @questions %> <li><%=h question.message %> <% end %> </ul> <%= link_to "前へ", { :page => @question_pages.current.previous } if @question_pages.current.previous %> <%= link_to "次へ", { :page => @question_pages.current.next } if @question_pages.current.next %>
と書いておけば、後は勝手にやってくれる。これはラクだなあ。
*1 :foo_barみたいな指定から適当にFooBarのようなクラス名に変換されるらしい
_ pagination with ajax
さらに、ajaxによるpaginationもできるらしい。 こっちは試してないけど。
_ 速度
あまり他の人の参考にはならないけど、手元の「自前なんちゃって フレームワーク+mod_ruby」なプログラムにくらべて、ほぼ同等 (ちょっと機能は劣る)の「Rails+FastCGI」なプログラム(もちろんproduction環境) は二倍くらい遅かった。
普通ならぜんぜん問題ないんだけど、今回はちょっとスピードがいるんだよな。 どうしよう。
ちなみに、
FastCgiConfig -maxClassProcesses 10 -maxProcesses 50 -minProcesses 5
のような設定なのにプロセスが一つしか動いてなかったので、たんにチューニング できてないだけという可能性も高いけど。
ただ、Rails+mod_rubyはRails+FastCGIよりさらに二倍ほど遅かった (DBのコネクションを使い回してなかったりする?)ので、FastCGIのせいではないかも。
あるいは、アプリケーションの処理が軽ければ軽いほど、FastCGIのオーバーへッドが 効いてくるということはあるかもしれない。
_ 高速化
プロファイルを取ると、PGconn#execとModule#public_instance_methodsが 上位に来ていた。 前者に関しては、クエリの結果をキャッシュすることでクエリの発行を減らし、 後者に関しては、AppliationController#action_methodsを以下のように再定義して 高速化。
class MyController < AppliationController ... @@action_methods = public_instance_methods - hidden_actions def action_methods return @@action_methods end end
これで、自前フレームワーク+mod_rubyの1.5倍程度の実行時間に収まった。 実際には、DBのレコードが増えるともっと差は縮まるだろう。
あと、pagenateは、
select count(*) from foo where bar = 1 select * from foo where bar = 1 order by baz limit 5 offset 0
のように2回SQLを発行するようだが、
select * from foo where bar = 1 order by baz limit 6 offset 0
のように「1ページあたりの行数 + 1」行分をlimitで指定すれば、 「次へ」を表示するべきかどうかがわかるから、クエリの発行を1回で 済ませることができそうだ。
ページ数を表示したり、Googleみたいに各ページへのリンクを表示したり するとなると、また話が違って来るが。
2005-04-23 (Sat) [長年日記]
_ mailbox.db crashed
mailbox.dbがとんだ:(
リリース前にはもうちょっとマシにしないと。
- signalをまともに処理する。
- mailbox.dbからstatusなどを分離してもうちょっとマシな構造にする。
2005-04-24 (Sun) [長年日記]
_ action以外のメソッドをpublicにしてはいけない
何となく、以下のaction_methodsの実装を見て気になっていたのだが、 Railsのコントローラのメソッドでpublicなものは、すべてaction として扱われてしまう(=外部から呼び出し可能になる)ようだ。
def action_methods @action_methods ||= (self.class.public_instance_methods - self.class.hidden_actions) end
これって周知されてる?
気持ちはわからなくもないけど、メソッドの可視性をそのまま使ってしまうのは あまりよくないと思う。
def show ... end action_method :show
とかの方がよかったんじゃないかなあ。
まあ、でも、Railsっぽいなという気はする。 Railsを使う時は、Railsの慣習をよく知っておかないと危険かもしれない。 適当にやってても動いてしまうだけに。
自分は、
def action_methods return ["list", "show", ...] end
とでもしとくかな。 public_instance_methodsのコスト *1 を免れるし。
*1 Railsでpublic_instance_methodsが遅いのは、mix-inを多用しているせいかもしれない。
_ image_tagと絶対URI
image_tag(というかcompute_public_auth)にhttp://hostname/path/to/fileのような 絶対URIを渡しても、相対パスとして扱われてしまうようだ。
そういうもの?
_ たかはし [コントローラの可視性はサービスの可視性と一致するはず、という前提に立てば、action_methodを別途設けてしま..]
_ shugo [しかし、privateなんて使わねーよというRubyユーザも多いわけで、 「 コントローラの可視性はサービスの可視性..]
_ ささだ [on_hoge で hoge というサービス,でいーと思うんだけどなぁ.規約万歳なら.]
_ shugo [それだとだいぶ問題は少ないですねえ。 でもまつもとさんはon_hogeとか嫌いって言ってたような。 いや、do_h..]
_ たかはし [DHHの発言を見つけました。↓これですね。 http://one.textdrive.com/pipermail/r..]
_ shugo [そうですねえ。 SQL/Javascript injectionやらの話も含めた`Secure Programmi..]
2005-04-26 (Tue) [長年日記]
_ Multi-VM instance
とりあえず,目標として考えているのは mod_ruby が複数アプリ ケーションを扱えるようにするための機構です. 現在は,1 Ruby プロセスを共有するようになっているため, mod_ruby で複数アプリケーションを動かすと,グローバルな何か は全部共有されてしまいます.たとえば,String クラスを再定義 すると,どのアプリケーションでもそうなってしまう.これをな んとかしたい.
[yarv-dev:471より引用]
わーい。
しかし、mod_rubyの場合は(普通のMPMだと)複数プロセスなので、 (プロセス数 * アプリケーション数)分のメモリが必要になってしまうなあ。
Stringうんぬんに関してはselector namespaceを作ってくれてもいいですよ。
_ Action Web Service
独自プロトコルによる通信部分もAction Web Serviceで置き換えたくなってきた。 やばい、そんな時間ないってば。
2005-04-27 (Wed) [長年日記]
_ handle SIGTERM/SIGINT safely
これでDBが壊れるリスクが減った、はず。
いろいろ考えた *1 けど、結局、sync.rbで排他制御しつつ、例外でセッション毎のスレッドとやり取りすることにした。
追記:
うまく行ったと思ったけど、止まらないケースがあるな。うーむ。
さらに追記:
IDLEコマンドを実行中のセッションがロックを握ったまま止まっていたせいでした:(
*1 スレッドの代りにforkを使うようにしてシグナルで子プロセスとやり取りしようかなとか
_ Anonymous CVSサービス再開のお知らせ
Anonymous CVSサービスを再開しました。
[Anonymous CVSサービス再開のお知らせ - オブジェクト指向言語Rubyより引用]
というわけで、ようやく再開できました。
_ #1205 ([PATCH] encoding/min_messages support for PostgreSQL)
database.ymlでencodingとmin_messagesを指定するためのパッチを 送ってみた。
development: adapter: postgresql database: rails_development host: localhost username: postgres password: encoding: UTF8 min_messages: ERROR
のように指定するもの。
2005-04-28 (Thu) [長年日記]
_ Better late than never
というSubjectのメールが来て、何かと思ったらspamだった:(
Are you looking for that extra special something in the bed-room?
No.
_ #1210 ([PATCH] fix soap_action_base to use @request.relative_url_root)
Railsをトップレベルで動かしていない場合に、ActionWebServiceが作るWSDLのURIがおかしかったので、パッチをポスト。
_ CPU使用率100%
今朝、出社したらCPU使用率が100%に張り付きっぱなしで、犯人はximapdだった。おまけにximapd --importのプロセスも山ほど。KILLしたものの、再立ち上げ後も同様の現象が再発。こりゃ、DBが壊れたかのぅ。
[ただのにっき(2005-04-27)より引用]
ごめんなさい。ごめんなさい。ごめんなさい。
Berkeley DBが壊れてロックがかかりっぱなしになってるとかですかねえ。
_ ActionWebServiceで日本語を扱うには$KCODE = 'u'が必要
$KCODE = 'n'だと、xsd:base64になっちゃうみたい。
ActionWebServiceというかSOAP4Rかな。 前からこうでしたっけ?
_ inflection
ActionWebServiceにはinflectionという機能があって、list_usersのような名前の メソッドをWebサービスではListUsersのように自動的にCamelCaseにして提供することが できる。*1
でも、戻り値の構造体のメンバ名には適用されないようだ。 何か中途半端だけど、仕様なのかねえ。
*1 もちろん、無効にもできる。
_ #1211 ([PATCH] charset for SOAP responses)
今度はSOAPのレスポンスのContent-Typeにcharsetパラメタを付加するパッチ。 これがないと、.NETにUTF-8の文字列を上手く渡せない。
ほんとは、Content-Transfer-EncodingとかContent-Dispositionも 気になるけど、まあ、いいか。
_ rast-0.1.0 リリース
DBの構造に変更があるため、scripts/rast-db-convertでDBをコンバートする 必要があります。
とくに、ximapdを使っている方は、
$ ruby scripts/rast-db-convert ~/ximapd/index
とするのを忘れずに!
ちなみに、rast-0.1.0には今日対応したので、ximapdはHEADにしてください。
_ exit!のデフォルトの終了コードは1
知らなかった。
_ yohgaki [> 食べていくためには仕方ありません:( 悪魔に魂を... (違 いや、よくある話ですね。 # このケースもWAIの..]
_ [ああ、shugoさんが汚れていく…]
_ shugo [身も心もぼろぼろですよ。]
_ nahi [db3 locks! とかくだらないことを書きにきたらsoap4rネタが。そうなんですよ、内部CESは適当に選んで、..]
_ nahi [iconvがなくて$KCODE = 'EUC'だったりするとEUCになります。ていうかRailsでは自分で作ってるの..]
_ ただただし [気にしないでください >100% 週末は止めておきます(笑)]
_ shugo [どうするのがいいんでしょうねえ > $KCODE はい、それがいいかと:) > 週末はとめる]
2005-04-29 (Fri) [長年日記]
_ ximapd-0.0.0 released
2005-04-29 version 0.0.0をリリースしました。
[Japanese - ximapd - Tracより引用]
というわけで、結局29日になってしまいました:(
簡単なドキュメントもプロジェクトページに置いてます。 品質についてはバージョン番号から察してください:p
_ 帰省
5/4までは実家に帰っているので、たぶん何にもしません。
2005-04-30 (Sat) [長年日記]
_ 須彌壇収骨
祖父の遺骨を須弥壇に納めるために、実家の家族と東本願寺へ。
大きなビルのようなものができていて驚いたが、御影堂の修復工事のため 全体が覆われているのだそうだ。 この工事のため、遺骨は仮収骨所に納めていただいた。
後でお斉をいただいたのだが、食前のことば・食後のことばとかなつかしいなあ。
ちなみに、こんなの。
食前のことば:
み光のもと、われ今、幸いに この清き食をうく いただきます
食後のことば:
われ今、この浄き食を終わりて 心ゆたかに、力身にみつ ごちそうさま
あと、恩徳讃のオルガンなんかも流れたりして。
ありがたい教えなどはぜんぜん覚えていないのだが、こういうことは記憶に残るものですね。
_ ただただし [/home/sho/ximapd/db/__db.001: No such file or directory --..]
_ shugo [ディレクトリ構造が変わりましたので、一度/home/sho/ximapdを削除してください。]