2007年6月 1日

Google Gears

昨日のGoogle Developer Dayで発表されたWebアプリをオフラインで使える技術です。 実装としてはローカルサーバとローカルデータベース(SQLite)とJavaScript(非同期通信)となっております。 素晴らしい技術だとは思うのですが、自分のような複数PC持ちには微妙かも知れないなぁ、と。 ローカルキャッシュは名前の通り、ローカルに保持され、次回オンライン時にサーバにアップロードされるわけですから、あるPCを使う最初と最後は必ずオンラインでないと、整合性が保てなくなるわけです。 仮にGoogle Docが対応したとして、通勤電車の地下鉄で文章を書いて、帰宅後に続きをやろうとしたら、いったんノートPCを起動してアップロードしたあと、改めて自宅のPCで開きなおす必要があるわけで、なんかスマートじゃないよねぇ、と感じます。 ブラウザから出来ることとしては最高レベルの内容だとは思うので、これ以上はOS側の対応が必要ですね。PCがスリープ状態でも定期的にオンラインに成れないかチェックして、可能ならローカルキャッシュをアップロードするような機能。 まずはGoogle Gears(もしくは類似技術)が普及してからになるんでしょうが、そんな未来がやってきたら最高だなぁ、と思うのです。

2007年6月 5日

LL魂のチケットを購入しました

開催案内 | Event | Lightweight Language Spirit ruby-listにチケット販売開始告知が流れたので、慌てて会社付近のローソンへ行って購入しました。 今週末はRubyKaigi2007もあるし、どちらも楽しみです。

NANA MIZUKI LIVE MUSEUM×UNIVERSE 届いた

明日発売なのに、Amazonが今日届けてくれました。 ライヴ自体には行ってない上に、情報を集めていなかったので、ブックレットに「甲賀忍法帳」があってビックリ!「陰陽座」というバンドの曲なんですが、同タイトルのアニメのOPです。EDが水樹奈々さんだったので、その繋がりでライブで歌われたようです。2006年のライブなので、普通のファンはとっくに知っているんだろうけど、自分は今日初めて知りました。これはうれしいサプライズです。友達に「陰陽座」ファンが多いので、良く聴く/歌う曲なんですよ。 さて、DVD4枚組、総再生時間6時間弱。今日中に消化することは不可能なこの分量。楽しんできます。
NANA MIZUKI LIVE MUSEUM×UNIVERSE
NANA MIZUKI LIVE MUSEUM×UNIVERSE
  • アーチスト: 水樹奈々
  • 発売元: キングレコード
  • レーベル: キングレコード
  • スタジオ: キングレコード
  • メーカー: キングレコード
  • 価格: ¥ 5,828 (25% OFF)
  • 発売日: 2007/06/06
  • 売上ランキング: 14
  • おすすめ度 5.0

2007年6月 6日

NANA MIZUKI LIVE MUSEUM×UNIVERSE 一気に見た

DVD4枚中2枚ぐらいにしておこうと思っていたのですが、気が付いたら一気に見ていました。楽しすぎて、ディスク終了=次のディスクを入れる、という選択肢しか浮かばない。というか選択肢すら出ない。おかげで、20時から26時までぶっ通しでした。充実充実。 平行してiPod用に変換していたのですが、オーディオトラックが2つあるにも関わらず、何も考えず上を選んでいたところ、完成した動画ファイルはオーディオ・コメンタリティの方だったことが発覚。全やり直しになっちゃいました。オーディオ・コメンタリティ入りって初じゃないですかね?これでもう1周することが決定しました。

2007年6月 7日

Advanced/W-ZERO3[es]

ウィルコム、無線LAN対応の「Advanced/W-ZERO3[es]」 午前中からニュースサイトでF5を連打してました(笑) サプライズはないけど、esユーザとしては順当な強化バージョンですね。価格の面さえ問題なければ、買い替えると思います。 今月末にヨドバシに行って予約しなくては。

2007年6月 8日

Amazonプライム 課金しました

Amazon.co.jpが今日から始めた新サービス「Amazonプライム」。年会費3900円でお急ぎ便を含む送料が0円になると言うサービスです。 Amazon.co.jp:Amazonプライムの会員登録 先日、近所の書店が2軒連続で潰れたこともあり、Amazonの利用が増えていたのですが、配送に数日かかったり、1500円以上頼む必要が(送料を0円にするために)あったり、ちょっと不便を感じていたので、課金(登録?)してみました。 3900円というと高い感じがしますが、自宅から秋葉原にいくと往復で460円かかることを考えると、年間9回以上は本を買うためだけに秋葉原に行っているので、お買い得と言えなくもない。時間も節約できます。代わりに偶然良書と出会うチャンスも減りますけど。 唯一の難点は自宅マンションには配達ボックスがないこと。せっかくお急ぎ便が定額になるのに恩恵を受けられるのは休日だけというのが残念です。個人で設置できるのないかしら。

2007年6月 9日

Ruby Kaigi 2007 第一日目 午前

img052.jpg 今、お昼休みでご飯を食べながら書いてます。 あとで清書するとして覚え書き。
  • プロジェクタは2台。右がプレゼン資料で、左がIRC表示。リアルタイムでツッコミや翻訳が表示される。とてもおもしろい。/li>
  • ささださん Ruby1.9 雲の上のお話。ただただ感心して聞くばかり。
  • 安定版Ruby 地味な安定版マネージャーのモチベーションの秘密は、コミット内容のチェックらしい。縁の下の力持ち、感謝。
  • マニュアル刷新 人手不足らしい。応募してみようかしら。軽い気持ちだと迷惑だろうし、ちゃんと考える。
  • JRuby Sunのエンジニアさんお二人。とても聞き取りやすい英語。質疑応答まで全部英語で驚いた。みんな、英語出来るんだねぇ。

Ruby Kaigi 2007 第一日目 午後

帰宅して、風呂入って、洗濯して、夕飯食べたら、もう22時です。このまま寝てしまいたいところですが、ざっとでも感想を書かないと、後日書こうとしたときに苦労しそうなので、頑張って書きます。 オフィシャルのログが強すぎるので、個人的感想だけでいいや、と開き直れて楽。 日本 Ruby 会議 2007 - RubyKaigi2007速報ログ ほぼリアルタイムで更新されてましたよ。すごすぎ。
  • まつもとさんの基調講演 初めての生「愛」講座。 Matzかっこいい。
  • 他言語ライブラリの利用 他言語の利用法をいくつか、それぞれの長所と短所。
  • Cより速いRubyプログラム パフォーマンスチューニングのお話。IRCでのつっこみが激しかった。
  • YAR(V)I Ruby1.9で採用されるVMのお話。これも突っ込み厳しめ。
  • rubyでする Web scrapping - Hpricot と mechanize そして scRubyt 実例のスライドで本日最大級の拍手と爆笑。まじめな話から唐突すぎて意表を突かれました。
  • Thw World in 30 Minutes 文字コード(Unicode)のお話。前半は何とかわかったけど、後半の合成文字とかはピンと来なかった。
  • Rinda: Answering the RubyConf and RubyKaigi dRuby本買う。
  • 以下、Lightning Talks
    • 数値データ管理・解析・可視化アプリケーション "Gfdnavi"。コンピュータと機器の精度が急激に増した結果、データ量が増え、解析・共有が大変になったので、なんとかしましょう、というお話。学会で共通フォーマットを策定したりはしないんすかね。
    • Software is Made of Design and Communication。マインドマップのすごいひと。手元の紙をビデオカメラで撮ってプロジェクタに表示し、リアルタイムで書き込んでいくのはおもしろかったです。
    • 「Ruby+Miyako」でおもろいプレゼン アニメネタが多かったのですが、爆笑してはいけないような気がしたので、笑いをかみ殺してました。チョココロネ。
    • Rubyでファミコンプログラミング Rubyコードからファミコンアセンブラを生成。プレゼンツールを作った。すごすぎ。
    • Ruby on Railsでデータマイニング おもしろそうなアプリケーションなので興味津々。プレゼン中に画面写真がなかったのが惜しまれます。後で試す。
    • Rubyのパーサーを拡張して "end" の対応付けをチェックする (山野 ゆき菜) 発表者重要(笑)
    • マルチコアプロセッサでのRubyプログラムの高速実行方式 並列化出来る部分をdRubyで行ったところ、8並列で6.67倍の速度が出たよ。8時間かかった作業がなんと1時間に!!しかしC言語なら12秒。
    • 「地域資源」Rubyと島根県の産業振興の取り組み Matzの地元、島根の方。お堅いプレゼンかな、と思っていたのに、予想外におもしろかったです。
    • 5分で作るCometチャット これは(良い意味で)ひどい
    • データで予想する Ruby のリリース Matzいぢり
    • 第2日本Rubyの会について Matzいぢり2

2007年6月10日

Ruby Kaigi 2007 第二日目 午前

二日目の開始でございます。関係者席を除くと最前列の中央を確保。最高の環境です。頑張って吸収しよう。
  • もっと仕事で使うRuby (後藤 謙太郎(ごとけん))
    • 仕事で使うRuby(ワンライナー)
    • Linux+Zsh
    • Unixパイプ ようやく詳しい分野が来たw
    • ワンライナーからスクリプトに昇格した例
    • Rubyを糊として
    • 手をかけて新製品にw
  • JRuby on Rails でエンタープライズ Ruby (高井 直人)
    • JRubyブームに水を差す(笑)
    • 今日の目玉は日本語で話す(笑)
    • Javaでinterfaceを作成し、Rubyで実装。DSLにいいんじゃないか?
    • JRuby on Rails 98%のテストを通過
    • GoldSpike Survlet Container(GlassFish,Jetty,Tomcat)の上にRailsServletが乗っている
    • GoldSpike SingleWarファイルに出来る(個人的にはツボ)
    • Grizzly on Rails=Glassfish appserv-http-engine, IO Framework, JRuby Support
    • なぜJava? → Monitoring(JMX) C(Mongrel)では出来ない。RCM(リソース管理)。AsyncFilter(非同期フィルタ)
    • Webrick<Mongrel<Grizzly<Mongrel(C)
    • Railsが選ばなかったものはセンスがいい
    • Javaの世界で成熟したエンタープライズ技術を(JRubyを使って)Railsに組み込む
    • 「グラスに水が半分しか入っていない」ではなく「グラスに水が半分も入っている」と考えてほしい
  • OpenWFEru, a Ruby workflow engine (John Mettraux)
    • オープンソースでかかれたワークフロー管理?
    • 元々はJavaだったのをRubyに書き直した
    • アプリケーション?ソリューション?
    • なんのために使うの?
    • ビジネスプロセスの最適化
    • 参加者よりもプロセスの方がすぐ変わる
    • プロセスは一級市民だ
    • プロセスが一級市民な世界といえばOS
    • OpenWFEruはビジネスプロセスのOSだ!
  • AP4R : Ruby のための非同期メッセージングライブラリ (篠原 俊一 / 加藤 究)
    • AP4R=軽量なメッセージング
    • 特徴=軽量・堅牢
    • 優先度の高いものから処理する
    • 負荷分散
    • メッセージが消えたり、重複したりしてはだめ、確実な配送保証
    • デモ
    • AP4Rのイメージキャラクター「まじろう」
    • 適用事例
    • Working with Rails Blog投稿のフィードをキュー。非同期で取得 → スケールできる。フィードの種類に柔軟に対応
    • 社内サイト 新しいアプリはRailsで作りたいが、現行アプリはJava。早くてリッチなUI。Ruby・Javaのデータ変換。UIから重い処理を分離。JavaからRubyを呼び出す。
    • IRCでまじろう大人気
    • ユーザへの等々に不要な処理は非同期か
    • 別のトランザクションでよいか?
    • 外部呼び出し(遅い・不安定)
    • シンプルAPI
    • Railsとシームレスに連携
関さんのdRuby本買いました。近くの座席でお見かけしたので、サインをお願いしよう。

Ruby Kaigi 2007 第二日目 午後

午後でございます。そろそろ電池の残り量が不安です。昨日、電源が使えることを確認したのに、ACアダプタを忘れてしまった。モッタイナイ。
  • スポンサーセッション
    • 日本IBM システム・エンジニアリング RubyとDB2
      • Starter Toolkit for DB2 on Rails
      • DB2版Instant Railsのようなもの
      • WindowsとLinuxに提供
      • Intel Macの方は、Windowsを入れて試してください
      • gem install ibm_db
    • ニフティ
      • @nifty TimeLine β
      • http://timeline.nifty.com/
      • はてブ 590user
      • 「ニフティらしくないサービス」(良い意味で)
      • Railsで開発
      • 企画/開発一体型のトライアル
      • 技術系社員の技術力向上
      • Web開発プラットフォームの選定
      • 開発スタイル「本業の間に」
      • 「木曜はRailsの日」
      • アジャイル開発
      • システム構成 各種データについて
    • 楽天
      • Railsの導入を進めています
      • Rubyを社内標準の一つに
      • Rubyで独自の研究開発を行う
      • テクノロジー施策 「エンジニアが中心か?」「テクノロジーに貢献するか?」
      • 3月15日 Rubyプロジェクトサービスリリース
      • 5月31日 まつもとさんの技術フェロー就任
      • RadRails+CVS
      • Rubyサイコー!!!
      • 生産性が1.6倍〜3倍
      • 6月 Rubyプロジェクト第二弾 複数サービス+標準化
      • エンジニア60人以上を対象にRuby勉強会
    • NaCl
      • Network Applied Communication Laboratory(ネットワーク応用通信研究所)
      • 「えぬ・えー・しー・える」(「なくる」じゃないよ!)
      • 松江本社・東京支社・松江オープンソースラボサテライトオフィス
      • 業務内容
      • 研究
      • システムインテグレーション
      • 保守・運用
      • 教育・コンサルティング
      • まつもとゆきひろ氏在籍
      • http://www.ruby-lang.orgなどを提供
      • Rubyを業務に利用
      • Do not control
      • Spec(仕様)
      • Source
      • Matz 「do not control」というよりは「can not control」
    • (株)アスタリクス
      • 「アスタリスク」じゃなくて「アスタリクス」
      • Rails製CMS Rubricks
      • XOOPSを参考に開発
      • MITライセンス
      • Bizca
      • ビジネスマン向け社内システム
      • Rubricksで作られている
      • SaaS(Software as a Service)で公開
      • 6月末からサービス開始
      • Rubricks0.6は6月から7月にリリース
    • インフォテリア(株)
      • LimeChat・Ring開発
      • Cometサーバ
      • Java6で実装したが、パフォーマンス悪
      • Cで4週間で開発
      • epollでI/O multiplexingはシングルスレッドでも十分な性能が出る
      • Cは機能拡張が大変なので、今後はRubyで作りたい
      • Rubyでのボトルネックは、select&fd_set
    • (株)ドリコム
      • Rubyは仕事で使えますか?
      • やっと答えが出た/li>
      • 使えます
      • 以上
      • お知らせ
      • Award on Rails 2007
      • 優勝賞金100万円
      • 6/8エントリ
      • 7月から受付
      • 審査Matz
      • サーバ貸し出します
      • 去年との違い
      • 海外からの参加もOK
      • 開発を支援
      • 初心者講習会 7月
      • 開発合宿 8月から9月
      • Babie!!
      • Rails限定
      • BOON!
  • Inside Ruby/Tk (永井 秀利)
    • Ruby/TkとはRubyに標準添付されているグラフィックライブラリ
    • Tcl/Tkの全機能をRubyに移植したもの
    • 手軽にGUIを作成できるスクリプト言語
    • 標準構成は比較的コンパクト
    • 拡張ライブラリが多数
    • 欠点 真に使いこなすのは難しいかも
  • Hello Ruby-GNOME2 World (武藤 昌夫(むとう まさお))
    • Ruby-GNOME2の紹介
    • GNOMEの提供するライブラリをRubyからアクセスできるようにしたもの
    • X Windowベースのデスクトップ(ry
    • 何ができるの?
    • 画像処理
    • GUIツールキット
    • マルチプラットフォーム(Linux FreeBSD Mac Win)
    • RubyらしいAPI
    • Graphics 様々なフォーマットの画像・文字を扱う強力な画像処理ライブラリ群
    • Xと関係ない(Webアプリでも使えます)
    • rcario(ext) 超強力描画エンジン
    • GdxPixbuf 画像の読み込み保存
    • RSVG PDF
    • Widgets ボタンやラベルなどのGUI部品
    • GDK 主要なWidgets
    • GDK SoruceView シンタックスハイライト
    • GNOME Canvas
    • GtkGLExt
    • GtkMozEmbed
    • プレゼンツール Ruby−GNOME2で作ったラビット
    • GConf Winのレジストリのようなもの
    • Ruby-GetText-Package(ext) メッセージのローカライズ
    • Glade GUIビルダを使ったRapidアプリ開発
  • VisualuRuby計画(仮称)によるWindowsでのGUI開発 (nyasu)
    • Windows用GUI作成ライブラリ
    • Windows等のクラス化
    • イベント配送
    • sourceforgeでの開発
    • イベント受信方法
    • VBライク
    • ハンドラはFormオブジェクトのメソッド/li>
    • 長所 (昔の)Windows APIと相性が良い
    • 拡張容易
    • Windows用ライブラリ利用可能
    • 環境構築・配布が容易 他のDLLが不要
    • FormDegignerがある
    • 短所 メソッドの命名 作者すら混乱
    • 定数やAPIのラッブが不十分
    • レイアウトマネージャが弱い
    • GUIのコンポーネントが古い
    • 将来 インストール数が増加
    • 老兵は死なず、消え去るのみ??
    • 所感・雑感 思ったより使われている
    • vruby!=GUIを使う人(?)
  • RubyCocoa - RubyによるMac OS Xソフトウェア開発 (藤本 尚邦)
    • RubyCocoaとは?
    • RubyCocoaでできること
    • Ruby拡張ライブラリとして使う
    • Mac OS X nativeなアプリの開発
    • irbでCocoaをつつく
    • darkroom.rb WebKitフレームワークを使って指定されたURLをスクリーンキャプチャ
    • MailDemoActiveRecordBindings OS Xアプリケーション Railsの機能をアプリで利用
    • Wiiリモコン用プレゼンツール
    • CocoaはObjective-Cだが、Rubyでもいいんじゃ? → そのためのブリッジがRubyCocoa
    • 今年秋に1.0リリース
  • モテる Ruby!Ruby で画像編集のあの手この手 (舘野 祐一)
    • Ruby界隈で女性→デザイナ→画像→画像編集が出来ればモテる!
    • Rubyの画像ライブラリ
    • Ruby/GD,GD2
    • ImageScience
    • rcairo
    • RMagick
    • ImageMagickのRubyBinding
    • API
    • Document
    • Sample
    • 欠点 API大杉
    • 入れるのが大変
    • やりたいことが見つからないドキュメント
    • メモリリーク・微妙にバギー
    • はてなセリフ
    • favicon2
    • Polarize
    • StarMaker
    Ruby/SDLとその周辺 (大林 一平(ohai) / 原 悠(yhara))
    • Rubyでゲームを作るためのライブラリ
    • SDL(Simple DirectMedia Layer)のラッパ
    • SDLとは?
    • クロスプラットフォームなマルチメディアライブラリ
    • 様々なバックエンド(DirectX, GDI, X)
    • 様々な言語のライブラリ
    • 何が出来るか?
    • 2D高速描画
    • キーボード、マウス、ジョイパッド
    • 音声出力
    • 文字列描画
    • 何が出来ないか?
    • 高水準なGUI(ボタンなど)
    • 音声入力
    • 高度な画像加工・PNGの出力
    • 特徴
    • SDLのAPIに比較的忠実
    • 高速なAPIと便利だけど遅いAPIの両方を提供
    • 危険な機能は使えないように
    • それ以外はできるだけ機能を網羅
    • 高いポータビリティ
    • Ruby/SDL スタータキット
    • HSPの簡単さをRuby/SDLで実現
    rcairo (須藤 功平)
    • プレゼン画面下でウサギとカメがレース(Rabbit)
    • cairo(C)のRubyBinding
    • 1API, Multi-Output
    • 高品質
    • アンチエイリアス
    • アルファチャンネル
    • 拡大・縮小(ry
    私はいかにRubyでメディア・アート作品をつくり、しかも一円も損をしなかったか (えと こういちろう)
    • メディア・アート作品をRubyで作る
    • PS2ゲームの自動生成にRubyを使用
    • SGL
  • Island Ruby, or How To Survive Invasions, Immigrants, and Cultural Attacks(島国としてのRuby、我々はいかにして侵攻・移民・文化的侵略から生き延びるか)
    • 英語を聞き取ることと、拍手をすることで精一杯(笑) 技術に結びついているプレゼンではなく、心のプレゼン。最後のプレゼンにふさわしい内容。
閉幕後にdRuby本の著者の関 将俊さんにサインいただきました。巨体のヤツがいきなり話かけてしまってすいません。会話の内容を用意してなくてすいません。サインだけ頂いてすごすごと帰ってしまってすいません。サイン、ありがとうございました。dRuby役立てます。

「サイエンス夜話 不思議な科学の世界を語り明かす」 読了

「体系的に勉強しなくても興味本位でつまみ食いでも良いじゃない」という科学の本でした。 自分にとってはこれは目から鱗という考え方で、素人でも科学に興味があるなら、素人なりに努力しなくてはいけないモノだと決めつけていました。しかし、この本はそれをあっさりと否定。科学のおいしいところだけつまみ食いさせてくれます。 本書は説明口調ではなく、居酒屋で近くの席に座った二人組の会話を盗み聞きするという小説風味になっています。科学について説明できるほどの知識を持った男と、それよりは程度が落ちるにしても一般人よりは科学に詳しい聞き手の男。そして、自分たちと同じ程度の知識しか持っていない盗み聞きしている男。自分は最後の盗み聞き男より、ちょっとマシという程度の知識レベルだったのですが、これがまさに作者側が想定している読者層なのではないかと思います。 この本を読む必要がないほど知識があることはないけど、一般の人よりは科学について興味がある。自分より上と下の登場人物を用意してくれることによって、「ダメだ、理解できない」と投げることも、「簡単すぎる」と感じることもない。登場人物の発言が「そうそう、底がわからなかったんだよ」と「そうそう、そこはそういうことだよね」になっており、気がついたら、グイグイと読み進めていました。 科学にちょっと興味があるけど、難しすぎて投げてしまった人にはお薦めの良書。 3時間半ぐらいで読み終わりました。
サイエンス夜話 不思議な科学の世界を語り明かす
サイエンス夜話 不思議な科学の世界を語り明かす
  • 発売元: ソフトバンククリエイティブ
  • レーベル: ソフトバンククリエイティブ
  • スタジオ: ソフトバンククリエイティブ
  • メーカー: ソフトバンククリエイティブ
  • 価格: ¥ 1,000
  • 発売日: 2007/05/16
  • 売上ランキング: 4039
  • おすすめ度 3.0

2007年6月11日

DebianにScrubytをInstallしてみた

先日のRubyKaigi2007で朴 芝印さんがプレゼンしていたWebScrappingTool「scRubyt」をインストールしてみました。プレゼンでは「gem install」でOKとのことでしたが、結構はまりました。 日本 Ruby 会議 2007 「rubyでする Web scrapping - Hpricot と mechanize そして scRubyt (朴 芝印)」 まず、scRubytの公式サイトはこちらです。 scRUBYt! - a Simple to Learn and Use, yet Powerful Web Scraping Toolkit Written in Ruby 朴さんのサイトも探してみたのですが(プレゼン資料欲しい!)、見つからず。後日にでもRubyKaigi2007のサイトに登録されるといいなぁ、と言ってみる。 公式サイトに従ってインストール。インストール先の環境はDebian 3.1.r5です。パッケージは標準インストール時からいくつか追加してあります(ZLibとか)。同じ手順で行えば完璧にうまくいくという資料にはなってないです。申し訳ない。
su - root
gem install mechanize
gem install parsetree ruby2ruby
gem install scrubyt
gem install ParseTreeReloaded
最後の1行は公式サイトのインストール方法には記載されていないので注意してください。公式フォーラムに解決策が載っています。 LoadError: no such file to load -- parse_tree_reloaded - scRUBYt! これで問題ないはずなんですが、自分の環境にopensslが入ってなかったので、もうひとハマり。結局opensslの開発向けパッケージを入れて、Rubyを再コンパイルしたらうまくいきました。せっかくなので、最新パッチを適用してみます。(RubyKaigi2007開催中にリアルタイムリリースされた品です)
sudo apt-get install openssl libssl0.9.7 libssl-dev
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p36.tar.gz
tar zxvf ruby-1.8.6-p36.tar.gz
cd ruby-1.8.6-p36
./configure
make
make test
sudo make install
これでirbでrequire 'scrubyt'が成功。ようやく遊べる。

Scrubyt ファーストインプレッション

半日ほど触ってみました。ドキュメントや機能に不足を感じる部分はありますが、ソースコードを読めばわかる程度の分量です。非常に楽しいライブラリでした。

早速、自サイトから読書履歴を抽出するスクリプトを作ってみました。

require 'rubygems'
require 'scrubyt'

mysite_data= Scrubyt::Extractor.define do
        fetch 'http://blog.studiohff.net/'
        click_link '読書'

        book do
                date '2007/06/10 22:06:34'
                title '「サイエンス夜話 不思議な科学の世界を語り明かす」 読了'
                readtime '3時間半'
        end
end

mysite_data.to_xml.write(open('result.xml', 'w'), 1)

出力はこんな感じ

  <root>
    <book>
      <date>2007/06/10 22:06:34</date>
      <title>「サイエンス夜話 不思議な科学の世界を語り明かす」 読了</title>
      <readtime>3時間半</readtime>
    </book>
    <book>
      <date>2007/04/24 01:36:13</date>
      <title>「Subversion 実践入門 第2版」を第1版と読み比べてみた</title>
    </book>

ハマった原因のほとんどは、英文読解能力の不足。公式サイトのサンプルがもっと多いと、英語が読めなくても雰囲気が掴めるので助かるなぁ、とは思います。

機能面で不足していると感じたのは、

  • 取得結果への編集
    今のところ、リードオンリーです。作成者も問題と認識しておりTODOになっているようなので、近いうちに改善するでしょう。
  • イテレータ
    mysite_data.book[0].dataという表現が出来るのに、mysite_data.book.each doは使えない。配列っぽくアクセス出来るなら、イテレータは欲しいところです。

2007年6月13日

「入門 医療経済学」 読了

なんとか意地と気合いだけで読み切った、という感じ。今の医療制度への疑問と、今後への不安から購入した本だったのですが、この密度で「入門」というのはちょっとしんどい。内容自体は(理解出来ていませんが)、非常によく調べられていると思います。残念ながら自分にはレベルが高すぎたようです。真の「入門」本を待っています。 何とか理解できた明るい内容は「インターネットなどの情報交換手段や主要な病気の移り変わり(結核から生活習慣病へ)により、医者と患者の力の差が減少しつつある。今後は、不要に高額な医療を行う医者にはリピータが減少することが予想され、医者にとっても不要に高額な医療は行わないことへのインセンティブとなり、良い方向に進んでいく」というぐらいでした。 読書時間:5時間
入門 医療経済学―「いのち」と効率の両立を求めて
入門 医療経済学―「いのち」と効率の両立を求めて
  • 発売元: 中央公論新社
  • レーベル: 中央公論新社
  • スタジオ: 中央公論新社
  • メーカー: 中央公論新社
  • 価格: ¥ 861
  • 発売日: 2006/06
  • 売上ランキング: 67602
  • おすすめ度 4.0

「食い逃げされてもバイトは雇うな 禁じられた数字 〈上〉」 読了

昨日は重たい本だったので、今日は軽く読める本を選んでみた。1時間半ぐらいで読了。 数字についての本。感覚に訴えかける数字の使い方をしろ、という章と、数字のトリックに惑わされるな、という章で構成されている。自分としては後者の方が興味ありで、ほとんど知っている例だったけど、楽しく読めた。 上巻は数字の使い方で、下巻は数字の悪用らしい。どんな内容になるんだろうか。発売が楽しみだ。
食い逃げされてもバイトは雇うな 禁じられた数字 〈上〉
食い逃げされてもバイトは雇うな 禁じられた数字 〈上〉
  • 発売元: 光文社
  • レーベル: 光文社
  • スタジオ: 光文社
  • メーカー: 光文社
  • 価格: ¥ 735
  • 発売日: 2007/04/17
  • 売上ランキング: 27
  • おすすめ度 4.0

2007年6月14日

Amazon 予約注文でもお急ぎ便を使えるようにしてくれよ

Amazonプライムに登録してから、ゲームやDVDなどもAmazonで購入していこうと考えていたのですが、予約注文との相性がよくないようです。 ゲームなどはなるべく早く手にしたいものですから、お急ぎ便を指定することが多いのですが、予約注文の場合、お急ぎ便の指定は出来ないようなのです。調べてみたところ、商人が入荷してから発送されるまでのわずかな時間の間に配送方法の変更手続きを行えば、お急ぎ便で配送されるようです。どうせなら最初から「可能ならお急ぎ便で送る」というオプションが欲しいところです。自動化できる処理を人間が(しかも時間に追われて)行うなんてナンセンスです。 こちらのサイトが非常によくまとめられており、参考になりました。 Desire for wealth: 2007年06月 アーカイブ とりあえずAmazonには改善要望を送っておこうと思います。

2007年6月18日

ニコニコ動画 プレミアム会員

今日からニコニコ動画がγテストからRCになりました。 同時にプレミアム会員の募集も開始されました。月額525円でプレミアム会員専用の高画質サーバに接続される他、いろいろと増えるようです。 ニコニコ動画には、どう考えても月額525円以上お世話になっているので、あまり深く考えず課金しました。 回線コストを負担できるぐらいには稼げるといいのですが。終わっちゃやだよー。

2007年6月19日

「法令遵守」が日本を滅ぼす 読了

3時間ほどで読了。非常にためになった。日本の司法・立法の問題点がわかりやすく書いてありました。ライブドア事件や村上ファンド事件で「なんかこれっておかしいよなぁ」と思った方には是非読んで欲しいです。
「法令遵守」が日本を滅ぼす
「法令遵守」が日本を滅ぼす
  • 発売元: 新潮社
  • レーベル: 新潮社
  • スタジオ: 新潮社
  • メーカー: 新潮社
  • 価格: ¥ 714
  • 発売日: 2007/01/16
  • 売上ランキング: 903
  • おすすめ度 4.5

初めてのJavaScript―Ajax&DOM対応 読了

名著。読書時間は8時間ほど。 JavaScriptにはどうも苦手意識がありました。C言語からプログラム世界に入ったのですが、そのころのJavaScriptは本当にしょぼくて、数時間もあれば学習可能な代物でした。大しておもしろいことも出来ないので、そのままJavaScriptのことは忘れていました。 んで、時は流れ、GoogleMapから始まったAjaxブームです。慌てて情報を集めてみますが、約10年ぶりのJavaScriptは標準規格がないことやブラウザ互換の確保のため、バッドノウハウの巣窟となっており、どこから取りかかっていいのかさっぱりわからない状態。それでも本気で取り組めば出来たのでしょうが、「JavaScriptを体系的に勉強できる良書はないかなぁ」と愚痴って終わっていました。その頃出ていた本と言えば、「ウィンドウタイトルを変える」とか「タイマーイベントを実行する」などを実現するためのレシピ本ばかりでした。体系的にしっかり学ばないと落ち着かない質なのです。 んで、この本が出ること知り、すぐに購入しました。予想通りの良書でした。さすがオライリー!! 目次はこんな感じです。
  1. JavaScriptの第一歩
  2. データ型と変数
  3. 演算子と文
  4. JavaScriptのオブジェクト
  5. 関数
  6. イベント
  7. フォームとJiT検証
  8. サンドボックスとクッキー
  9. ブラウザオブジェクト
  10. オブジェクトドキュメントモデル
  11. カスタムオブジェクトの作成
  12. スタイルの操作
  13. Ajaxの基礎
  14. JavaScriptライブラリ
1章から5章までがプログラミング言語としてJavaScriptのしっかりとした解説。6章から10章までがブラウザ上で動作すると特殊な特徴を持った言語であるJavaScriptの解説。11章から14章までがAjax以降のJavaScriptで必要な基礎知識となっています。 前半で基礎を固めて、中盤で実用に乗せ、後半で薄く浅く基礎知識。「初めての」と冠するに相応しいキレイな作りだと思います。(初めて扱うプログラム言語としてのJavaScript、ではないのがポイント) 次はサンプルを入力しながらもう1週します。
初めてのJavaScript―Ajax&DOM対応
初めてのJavaScript―Ajax&DOM対応
  • 発売元: オライリージャパン
  • レーベル: オライリージャパン
  • スタジオ: オライリージャパン
  • メーカー: オライリージャパン
  • 価格: ¥ 2,730
  • 発売日: 2007/05
  • 売上ランキング: 1629
  • おすすめ度 5.0

2007年6月24日

WEB+DB PRESS Vol.39 読了

Amazonから届いたので、興味のあるところだけ流し読み。2時間
WEB+DB PRESS Vol.39
WEB+DB PRESS Vol.39
  • 発売元: 技術評論社
  • レーベル: 技術評論社
  • スタジオ: 技術評論社
  • メーカー: 技術評論社
  • 価格: ¥ 1,554
  • 発売日: 2007/06/22
  • 売上ランキング: 85

2007年6月27日

Lighttpdのインストールがうまくいきません

自作アプリがとりあえずの完成を見たので、公開用に準備をしました。構成はLighttpd+Mongrel。評価はしていないけど、評判がいいので、とりあえずこれで。Mongrelはgemで終了したんですが、Lighttpdで数時間ハマり、未だ解決せず。 2番目は粘れば解決出来そうな雰囲気はあるんですが、素人がTRY&ERRORで直すには怖いなぁ。 次は、開発版のパッケージを取得してみよう。今からやるとまた明け方までやってそうなので、明日に回す。 プログラマとしてはノリノリで徹夜したいんですが、社会人としてはちゃんと睡眠を取って仕事に行かないといけないのが辛いところです。

2007年6月28日

Lighttpd インストール

とりあえずこんな感じで・・・。
wget http://apt.utsl.gen.nz/debian/pool/sarge-i386/lighttpd_1.4.5-1_i386.deb
dpkg -i lighttpd_1.4.5-1_i386.deb
Stable版のパッケージが出ていないので、wgetで取得して手動インストール。これが最適な解とは思えませんが、とりあえずこれで。

2007年6月30日

Railsでhelperをテストする

Railsの開発でちょっとしたhelperを作った。レコードの日付と現在日付を比較して、一定の期間毎に違うCSSクラス名を返す。各CSSクラスでは背景色だけが違い、それによって視覚化できるというもの。 簡単ではあるんだけど、日付を4つのパターンに分解するので、境界が多い。コードも甘いような気がするので、後々のリファクタリングのために、テストを自動化しておこうと思った。
def get_tr_class( result )
  return "tr_past" if result.release_date.blank?

  now_term      = 14 # Days
  future_border = now_term.days.since.strftime('%Y/%m/%d')
  today         = Time.now.strftime('%Y/%m/%d')
  past_border   = now_term.days.ago.strftime('%Y/%m/%d')

  if result.release_date < past_border
    "tr_past"
  elsif result.release_date > future_border
    "tr_future"
  elsif result.release_date <= future_border && result.release_date > today
    "tr_soon"
  else
    "tr_now"
  end
end
ところが、Railsってhelperのテストを行う箇所がないのですね。行いたいテストはunitテスト程度の単純なもの。functionalテストでデータを用意し、responseから該当部分を探すという手もあるけど、ちょっと大袈裟すぎ。 色々考えた結果、プリミティブなオブジェクトを作って、それにhelperの機能を追加してみた。
def test_get_tr_class
  helper = Object.new.extend(ReleaseHelper)
  r = Result.new( :release_date => 15.days.since.strftime('%Y/%m/%d') )
  assert_equal "tr_future", helper.get_tr_class( r )
  r = Result.new( :release_date => 14.days.since.strftime('%Y/%m/%d') )
  assert_equal "tr_soon", helper.get_tr_class( r )
  r = Result.new( :release_date =>  1.days.since.strftime('%Y/%m/%d') )
  assert_equal "tr_soon", helper.get_tr_class( r )
  r = Result.new( :release_date =>  Time.now.strftime('%Y/%m/%d') )
  assert_equal "tr_now", helper.get_tr_class( r )
  r = Result.new( :release_date =>  1.days.ago.strftime('%Y/%m/%d') )
  assert_equal "tr_now", helper.get_tr_class( r )
  r = Result.new( :release_date => 14.days.ago.strftime('%Y/%m/%d') )
  assert_equal "tr_now", helper.get_tr_class( r )
  r = Result.new( :release_date => 15.days.ago.strftime('%Y/%m/%d') )
  assert_equal "tr_past", helper.get_tr_class( r )
  r = Result.new # release_date is blank
  assert_equal "tr_past", helper.get_tr_class( r )
end
テストは機能的にはunitレベルといえ、helper自体がControllerに属するのでfunctionalに追加した。 この方法で正しいのでしょうか?「俺はこうやってるよ」などの意見を伺いたいです。