Linux で Bookey

誰かが試してるだろうと思って検索してみたけど見つけられないよ。ということで Wine 0.9.10 でやってみた。

とりあえず mfc42.dll がないと動きません。どうにか入手して .wine/drive_c/windows/system32/ にコピーしておきました。

% cd .wine/drive_c/Program\ Files/
% lha x bookey007b.lzh
% cd bookey007b
% wine bookey.exe

一応動いているようです。 url のドラッグアンドドロップは出来無いけど、これは仕様がないかな。

あれ、MM/Memodel.icio.us を同期させてると、同期の途中で落ちるな。"同期しますか"ダイアログがでて一括で同期しちゃうのがダメなんだろうか。

それと終了しても bookey.inf が作成されてないよ。というか何もファイルが作成されてないな。うーんどうしよう。

追記 2006/04/05

http://www.winehq.org/site/download から 0.9.11 を入手したところ、bookey.inf が作成されるようになりました。

Symbol#to_proc

これはいいな。すごいな。

irb(main):001:0> class Symbol; def to_proc; Proc.new{|obj,*args| obj.send(self,*args)}; end; end
irb(main):002:0> require 'bigdecimal'
irb(main):003:0> require 'bigdecimal/util'
irb(main):004:0> [0.5,0.25,0.125].map(&:to_d)
=> [#<BigDecimal:b7e516d8,'0.5E0',4(8)>, #<BigDecimal:b7e51674,'0.25E0',4(8)>, #<BigDecimal:b7e51598,'0.125E0',4(8)>]
irb(main):006:0> [0.5,0.25,0.125].map(&:to_d).map(&:to_r)
=> [Rational(1, 2), Rational(1, 4), Rational(1, 8)]
irb(main):007:0> require 'mathn'
irb(main):008:0> [0.5,0.25,0.125].map(&:to_d).map(&:to_r).map(&:inspect)
=> ["1/2", "1/4", "1/8"]
irb(main):009:0> ["foo","","bar"].any?(&:empty?)
=> true
irb(main):010:0> ["foo","","bar"].reject(&:empty?)
=> ["foo", "bar"]
irb(main):011:0> ["foo","","bar"].reject(&:empty?).any?(&:empty?)
=> false
irb(main):012:0> [["foo",2],["bar",3]].map(&:*)
=> ["foofoo", "barbarbar"]
irb(main):013:0> {"foo"=>2, "bar"=>3}.map(&:*)
=> ["foofoo", "barbarbar"]

楽しいな。

TypeError: can't dump hash with default proc

ブロックで初期値を決めてる Hash オブジェクトを PStore で保存しようとしたら怒られた。ぶらさがってる Proc が Marshal.dump できないためだった。

こういう場合はどうすればいいんだろう。Object#marshal_dump と Obj#marshal_load(obj) を使えばいいんだろうか。

いや、transaction 内で出し入れするときに merge すればいいのか。

ソーシャルブックマークをクロスポスト

はてブとか MM/memo にポストする CGIRuby で書いてみた。

やっぱりサービスにするには怖いっていうかイヤだなと書いてて思った。なぜかっていうと他人様のパスワードを保存するのはちょっと危険すぎるかな、と。自分のパスワードでも嫌なんだから。 というわけでポストする度にユーザネームとパスワードを入力する羽目になります。これはかなり面倒臭い。

んで今のところは、ローカルの WEBrick HTTP サーバでサーブレットとして使うという中途半端な使い方はどうだろうかと考え中。上記 tar ball の server.rb がそれです。興味のある方はどうぞ。

なお、はてなの認証には id:toward:20051225:ruby_hatena_wsse を勝手に使わせていただいてます。*1 また、MM/memo へのポストには [観] TypeKey による認証 を参考にさせて頂きました。ありがとうございました。

追記

とりあえず、ポストに失敗しても何も言ってくれないのはなんとかしないといけないのかな。

追記2

あー、Cookie 覚えとけばいいのかな?うんにゃ、認証とデータのPOSTが一括してる場合は駄目なのか。

*1:いいのかな

from ins to xyz

罠にはまってしまったのか。以下は愚痴。

並行六面体をつくる三つのベクトル {\bf a}, {\bf b}, {\bf c} を基底とする空間の座標をデカルト座標に変換する行列を考えてたんだけど、どうにもすっきりしない。

\left( \begin{array}{l} {\bf a} \\ {\bf b} \\ {\bf c} \end{array} \right) \left( \begin{array}{lll} {\bf a} &amp; {\bf b} &amp; {\bf c} \end{array} \right)

みたいなテンソルからどうにかならんかと思ってたんだが、幾何的に考えたほうが無難なようだ。

OpenBabel のソースだと、
\left (\begin{array}{ccc} a &amp; 0 &amp; 0 \\ b \cos\gamma &amp; b \sin\gamma &amp; 0 \\ c \cos\beta &amp; \frac{c (\cos\alpha - \cos\beta \cos\gamma)}{\sin\gamma} &amp; c (1 - \cos^2\alpha - \cos^2\beta - \cos^2\gamma + 2 \cos\alpha \cos\beta \cos\gamma) \end{array}\right)
ってなってた。なんでこうなるのかまだ判ってないので、正直使うのがちょっと恐い。特に z軸関係が。