Ruby

2005年05月09日 月曜日

RSS配信開始

連休中いろいろがんばったおかげで、この日記のRSSを配信できるようにしました。多分今日の修正で所望の動作をするはず。広瀬さん作のmkdiary.rbのRSS生成パッケージrss.tar.gzを配布しますので、mkdiary.rbをご利用の方はつかってやってください。一応ruby-1.6系でもruby-1.8系でも動きます。(追加するパッケージはuconvもしくはrbuconvのみです。)
ドキュメントもあらかた書いたので、多分インストールできると思いますが、ようわからん人はご連絡ください。

Google自分の日記の名前で検索

Google自分の日記の名前で検索してみると、意外な方面の意外な記事にリンクが貼られていたりしてなかなか面白い。やっぱりGoogleで飛んでくるのだろうか?

ApacheのMIME型とcharset設定のメモ

忘れないようにメモ。RSSの配信に伴って、RSSのMIME型を text/xml ; charset=UTF-8とすることにした。(本来ならtext/xml+rss ; charset=UTF-8だろうけど) .htacessファイルに以下のように設定する。
AddType “text/xml ; charset=UTF-8” rss
XHTML 1.1でもこの辺の問題はあるので、非常に悩ましい。(text/xml+xhtmlとかtext/xml+rssとか言ったMIME型をちゃんとサポートしているものは少ないのです。)

2005年04月29日 金曜日

今日はサーバのメンテなど

今日はしばらくやろうと思っていてできなかった、サーバのメンテを行うことにした。(ゆうじさんも凄い勢いでソフトのメンテやってるし。)
僕がやったのはrubyのアップデート。しばらく放置していた1.8.1からCVS版の1.8枝から先端のものを貰ってきた。(1.8.2のバグフィックス版と言うことで。)インストールの注意点としては、iconv関係がそのままインストールできないため、ちょっとソースの書き換えを要する。その程度。前回までiconv関係でずいぶん悩んだが、今回はすっきり解決。
あとはゆうじさんが行ったApache 2.0.53への追従、必要としていたグラフィックライブラリ系のインストールなど。

2005年04月27日 水曜日

訃報と…

先日の列車事故で直接の知人が亡くなったという話は僕の場合はないけれど、以前より世話になっていたドキュメントを書かれた方がなくなられたそうだ。Matzにっきによると、今回の尼崎の事故で石井 勝さんがなくなられたそうだ。(Object Clubの追悼 BBSあたりも参照のこと。)
石井さんは凄く早い段階でXP(eXtreame Programming)を取り上げて分かりやすい記事を書かれており、OOP(Object Oriented Programming)やDesign Patternに関する記事にも、非常に創意工夫のある記事があって、良く参照させていただいてました。このような事故で素晴らしい技術的な記事を書かれる方がなくなられるのは、非常に残念でならない。これまでたびたび役に立ってくれた記事を書かれたことに関して深い感謝と、ご冥福をお祈りします。
あと今回の訃報で思ったのはまつもとさんの日記にもあるように、自分と同世代の若い、まだこれから先がある人が亡くなったことを聞くのは凄く切ないし、悲しい。それともうこのような年になって、死がそんなに遠いところにはなくなってしまったと言う気がしてならない。
またこのように多くの人に役立つ文書を書かれている人は本当に少なく得難い存在であるし、またその書かれた文書が電子媒体の場合は、著者の死ととも(もしくはそう遠くない将来に)にそれらの文書が失われてしまう(石井さんのページの場合はNiftyとの契約が切れたところで無くなってしまうかもしれない)ことについて、何とか永続性を持たせてあげられないものかと考えてしまう。その人が生きてきた証をなんとか残してあげられないものか… この辺がネット媒体、電子媒体の情報の脆弱な部分かなと思わずにいられないのである。(良い方法があればいいけど。)

2005年04月26日 火曜日

Alexandria

本棚を管理するソフトで良いものがないかなあと思っていたが、Unix Userの05年02月号を読んでいると、Alexandriaというソフトが紹介されていた。Debianな環境に早速インストールである。apt-getでサクッと入るのは何とも気軽なものだ…
さて使おうと思ってAmazonの設定をして、ISBN検索(ASIN検索)を行ったところ、なぜかamazon.comの方に検索に行くようだ。どうやら_うまくLocaleが認識されない模様_。で、ソースを眺めてみた。alexandria/book_providers/amazon.rbをBug Tracker #1633に乗っていたパッチのように書き直し。さらにASINでURLを返すメソッドの返り値をamazon.jpに置き換え。とりあえず、現在のsidに納められているバージョンがsargeに反映されるまで、これで使うことにしよう。
で、ISBNを入力してみたのだが、なかなか良い感じ。サクサク入力するかぁと思いきや、目の前に広がる本の山。バーコードリーダーを買うしかないのかな。やっぱし…

2005年04月15日 金曜日

mkdiary用のAmazon書影表示のためのスクリプト

うちの日記用にAmazon書影表示のためのスクリプトを表示させるフィルタを書いてみた。ざっくりSOAP4Rの例題通り。
内容は[ASIN:0123456789]というパターンがあると、AmazonのASIN検索を行って、書影イメージと著者名(ある場合のみ)と書名に置き換えてくれるというものです。(フィルタ動作するところまでしか試してないけど。)たとえばこんな感じ。
[asin:4906391702]
という文字列を

<div class="amazon">
  <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906391702/ref=nosim/XXXXXXXXXX-XX/">
    <img src="http://images-jp.amazon.com/images/P/4906391702.09.MZZZZZZZ.jpg" alt="やさしいEmacs‐Lisp講座" title="やさしいEmacs‐Lisp講座">
  </a><br>
  広瀬 雄二 / <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906391702/ref=nosim/XXXXXXXXXX-XX">やさしいEmacs‐Lisp講座</a>
</div>

と変換する。絵を右に寄せたり、字を変えたりって言うのはclass指定したのでCSSでなんとかなるかなと思っている。(ソースいじってもいいですけど。)
依存するrubyパッケージは、SOAPを用いて通信を行う(クエリーを出す)のでSOAP4Rパッケージと、通信自身がUTF-8で行われるのでuconvパッケージに依存。1.8.1までKconvでUnicode関連の処理ができないこととこのページを書いているサーバにインストールされているnkfが古いので、こういうことになっています。そのうち書き換えるか…多分ruby-1.8系ならSOAP4RだけインストールすればOK。ruby-1.6系にインストールするのは値と大変。僕はもう使ってないので自分で調べてください。
uconvとkconvを併用している理由は、rubyのiconvパッケージのインストールに失敗していることと、うちの日記はISO 2022-JPであるためuconvとkconvを併用せざる得ないため。(SOAP4Rを使ったやりとりはUTF-8だし)しています。なんか大いなる無駄な気がしますが、nkfのラッパーのkconvとかnkfだとUTF-8が使えないし、uconvはEUC−JPとCP932(WindowsのShift-JIS亜種)とUCS-4とUTF-16とUTF-8しか使えない。微妙にEUC-JPしかかぶらないし…
使用上の注意ですが、これを使うにはAmazonのアソシエイト会員(たぶん必須じゃない)とデベロッパー登録をする必要があるので、注意してください。

2004年12月31日 金曜日

今日で2004年もおしまい

毎年こんな見出しで大晦日の日記を書いているわけだが、ついこないだ2003年もおしまいどころか2002年もおしまいなんて言う記事を書いた気がするのは気のせいではない。今年は転職・引越しと人生の転機となる大きな変化のあった1年で、住環境や人間関係もがらっと変化して、めまぐるしい変化があった1年だった。気が付くともう今年もおしまい。今年お世話になった方々はいっぱいいて名前を挙げきれないが、今年1年本当にありがとうございました。来年もよろしくお願いします。
大晦日と言うことで、行く年に思いをはせ、今年はどういう戦いの1年だったか、今年の戦術・戦略とその戦いの成果を主要な分野別にまとめておこう。(と、ほぼ毎年と同じ文章にしてみた。こういうのは毎年そろえておいたほうがよいもので、断じて_手抜きではない_。)

2004年の総括

はじめに概況

2004年の戦況がどのようなものであったか述べていくことにする。前の会社の上司の年賀状には_今年は攻めと成果_と書かれていたのだが、個人的には攻めに攻めた1年だったかと思う。アクティブに変化を求めて行動したが、いまいち成果があったとはいえない。まぁ来年あたりから取り返していきたい。今年から技術系よりは研究系に寄った立場になったので、より注意して形になるように成果を残さねばと思うのである。(これは特に本業について言える話。)
経済的な状況は現段階でほぼ解決した状況(今年はでかい収入と出費があって、これまでのごたごたはほぼ解決したといってよい) 今後は多少余裕はできると思うので今年あたりからちゃんと貯蓄に励もうと思う。なかなか自力で解決できないのだが、残りは車のローンくらいだし…

2004年11月08日 月曜日

いろいろインストール

週末から自宅サーバの各種ソフトのバージョンアップなどを行っている。手始めにRubyを1.6.7から1.8.1へ、最近はやりになりつつあるSchemeの処理系であるGaucheの0.8.1をインストール。どちらもFreeBSDにインストールということで、iconv周りではまってしまった。うーむ、何とかならないもんかなあ。

2004年10月27日 水曜日

今日も地震

今日も関東で揺れを感じました。会社から家まで遠いとどうやって帰ろうかと悩んでしまいます。(今地震になって交通が寸断されたならば、まず荒川を越えるのが厳しそう。)

いろいろインストール予定など

なんだか身の回りのインストール熱が上がっているので、いろいろサーバに仕込んでしまおうかと。いったん考えている大きなものは、
Ruby1.6系からRuby1.8系への入れ替え
もうデファクトなライブラリの追加インストールがめんどくさいので。
Gauche のインストール
やっぱSchemeを使ってみようと言うことで。cosmosには導入済みですが、展開をする。
と言うところ。さらにこまごましたところでは、何個か必要なアプリケーションにぶら下がっているライブラリの入れ替えかな。
zphoto

2004年10月23日 土曜日

お買い物

今日はお買い物に新宿まで行って来ました。(他にも用事があったので新宿でお買い物になったのだが。) 来週の撮影に使えるアイテムと言うことで、室内で使える照明機材を購入することにした。それなりの大きさの外付けストロボがよいなぁと思うのだが、_買えないくらい高い_ので、ハロゲンランプに手を出してみる。(タングステンの写真用ランプは、熱くて危ないし長持ちしないので。) 今日のお買い物の品は以下の通り。

  • LPL / ビデオライト VL-302
  • PHOTOFLEX / Lite Disk (32’’ Translucent)
  • 富士フイルム / LBB8フィルタ
    1つ目はビデオ用ではあるが色温度3200Kの小型のランプ。馬場さんのCAPAの撮影会で使っているのを見て便利かもと思っていたもの。想像以上に明るいというか眩しいかも。2つ目はレフ板にも使えるけど照明光を拡散させるもの。(Translucentって言うのは半透過の白い板です。) 3つ目はライトの色温度を少し青側に振るフィルタ。一応ライトの前に入れてみようと思う。熱的に持たなかったら、方法を今後考える。まぁいろいろお試しなので。家での物撮りにも使えるかな。

mixi RubyコミュニティOFF会

Moonwolfさんにmixiで誘われたので、行ってみました。(新宿に集合) 今回の参加者は4人。Rubyに関わらずいろんなネタの飲み会になって楽しいひととき。僕もぼちぼちRubyを使いこなしていきたいな。

2004年10月07日 木曜日

Excel VBAは究極の「変数 = 箱」モデル

某MLに書いた内容ですが、僕が遭遇したExcelVBA的なものの発想法について。
ExcelVBAでのプログラミングでは、8月8日の日記福盛さんの日記で触れられているように、「VBAでエクセルのマクロを作る初心者がですね、変数の代わりにセルを使うんですよ」と言うような、matz日記で話題になった究極の「変数 = 箱モデル」に相当するようなコードを書く人が結構多い。
つまり、「ExcelVBAは普通のVBと違って、「手動で」かつ「視覚的に」変数領域を割り当 てられる、2次元でアドレス指定するポインタを持つBASICである。」と言い換えても良さそうですし、暴論を言えば、「一流のExcelVBA使いは1次元のポインタしかないCのポインタなど目をつぶって使えないとならない訳だ(暴論)。分からないなどと言わせぬ!」ということになる。まぁ実際に一流の(分かった気になって、有頂天になって、ナニか勘違いしている人_のことを言う)ExcelVBA使いのみなさんはこういうポインタに相当するものには名前をつけたりしなくて「全部直接セル参照」という神業をするので、構造化言語とかOOPとかにジャブ付けの頭しか持ち得ない僕なんかから見るとある意味「すげーっ!」(絶対そうなりたくない)と思ったり、頭の中がどうなっているのかかち割って見てみたいなんて思っている_3流のへっぽこVBA使い_なので、せめて妥協点として、Rangeオブジェ クトに名前をつけてアクセスしたくなっちゃいます。
1次元のRange領域を作ってやれば普通のポインタと同じような感覚(アドレス指定はCellsプロパティで2次元指定できるけど)ですかね。領域の割り当ては自分でやらないと駄目ですが… まぁ_ご利用は計画的に

たとえば「1から10までの話を求めたい」と言う例題を考える。和を求めたいRangeオブジェクトを渡すと「Rangeの和を求めるワークシート関数を文字列として返す関数」なんてものをつくってやれば、少し楽ができそうし、応用もあるのは手を付けてはいけないと思いますねえかな? まぁ実際にこつこつアルゴリズムを書くのではなく、計算などはすでにあるExcelのワークシート関数にしまえと言うことになります。(まぁ_手抜き_とも言う) 和を求めるくらいだとあまりありがたみが出ないが、同じ手間でRangeの最大・最小とか2個のRangeオブジェクトを関数に渡して最小自乗法とかさくっと出来ちゃったりするので、まぁ楽チンですね。(実際は統計関係の計算をするときはExcelのバグを知り尽くしてないと危ないですが。まぁ統計をちゃんとしたい時はExcelは使っちゃいけません。ちゃんと統計ソフトを使いましょう。)
ということでコード例。(基本的にVBでプログラムを書くときは型宣言を必須にしましょう。そうでないと全部Variantになったりしますから。あとDim文の使い方も意図しない型宣言になったりしますので注意しましょう。)