Monthly Archives: June 2008

Crêpe – iPhone/iPod touchを用いた後発医薬品検索、在庫検索システム: 2

cocoa*life » iPhone / iPod touchによる同一成分医薬品検索、在庫検索在庫検索システム Crêpe
で書いた全く趣味で作っているCrêpeのその後ですが、少し書きたいと思います。

添付文書を表示する部分が若干できました。
若干というのはまだ1ページ目しか表示できていないです。
拡大縮小もできていないです(まだどうやってやるのかすら調べていない)。

他店の在庫をいただくときにはだいたい添付文書がありませんので、困るときがあります。
そんなときはこれを使ってみればいいということです。

iPhone / iPod touchの無線LANを利用してその場でダウンロードします1

でも、ポンタールシロップではレンダリングに失敗する。
Safariで見てもレンダリングに失敗するので、たぶんバグ2

それにしても楽しいな。

追記:

PDFファイルは全ページちゃんと表示できるようになりました。
他のものと同じように指でなぞれば、次のページへ行きます。

実装の詳細は書けませんが、簡単でした。

  1. 今後はファイルに変更があるときだけダウンロードする予定 []
  2. ちなみにMacではちゃんと表示される []

たまたまマトリックス・リローデッドを見ていたら

大塚製薬のマルチビタミンのCMがやっていて、何となく曲が良いなぁと思って調べてみたら、(曲じゃなくって)永作さんが出演でした。
こちらで見られます。

ちなみに、曲はイシイモモコさんという方が唄う「わたしと私」という題名だそうです。
イシイモモコさんはハミングキッチンというバンドのボーカルだそうです。
ハミングキッチン-公式ホームページ

永作さんはキュートですね。本当に。

もう一つあとでネットで検索したいと思ったCMがあったのですがどうしても思い出せません。
悔しいことこの上ない。
「び」から始まるなんかだったような気がしたんだけど。
違うかもしれない。

で、やっぱりテレビ番組よりもCMの方がおもしろいですね。
番組の途中でCMが入るのは嫌だけど。
でも、 それでも遙かに普通のテレビ番組よりもできが良いのがまれにあるので(たとえば伊右衛門とかね、このCMも好きだけど)、CMだけ何度も見たいなぁと思ってしまうんですよね。

フリーオが来たらCMを録画したいなぁなんて思います。

Inside Steve’s Brainを読む 2

Inside Steve’s Brainを読む 1の続き。

せっかくなので少しずつ読書記録をつけていきます。
気になるところがあれば、引用していきますので。

Introductionを読みました。
Introductionという名前通り、生い立ちとかこれまでのAppleとかNeXTとかPixarとかについて軽く触れているだけです。

辞書を引くところもあり、面倒なので単語を読み飛ばしてしまうところもあり、辞書を引くよりか、何となくで良いから読み通せばいいかなぁと思っています。

Inside Steve’s Brain
著者: Leander Kahney
ページ数: 304ページ
出版社: Portfolio
発売日: 2008年4月17日

Inside Steve’s Brainを読む 1

先日紹介した、Inside Steve’s Brainですが、勢いに任せて買ってしまいました。

Inside Steve’s Brain
著者: Leander Kahney
ページ数: 304ページ
出版社: Portfolio
発売日: 2008年4月17日

定価で$23.95もするのに、紙質が悪いよーというのは洋書のご愛敬でしょうか?

まだで出だししか読んでいないので何とも言えないところですが、背表紙に興味深いことが書かれていたので写真に撮ってみました。

  • I’m not afraid to start from the beginnig.
  • Creativity is just connecting things.
  • I want to put a ding in the universe.
  • Dylan and Picasso were always risking failure.
  • Software is the user experience.
  • People don’t know what they want until you show it to them.
  • Innovation has nothing to do with how many R&D dollars you have.

なかなか読み進めるのが楽しみな内容になりそうです。

Leopardで割り付け印刷ができない

これブログに書きましたっけ?

Leopardにした直後はなんの問題もなかったのですが、いつの間にか10.5.2を入れたぐらいからですかね?(10.5.2って今調べたら2月11日に出たみたいなのですが、そんな前からなのかはさだかではありません。)割り付け印刷ができなくなりました。いわゆるNアップとかいうやつ。

Macには元々システム自体に割り付け印刷用の設定があってそこを設定するだけだったのですが、それを設定してもプリンタからは1枚ずつ出てくる始末。

したらば、PDFにしたらどうなのか?と思って試してみても同じ。

ドライバを入れ替えてみてもダメ。

Brother, Canon, Epsonの3種類のプリンタがあって、どれも使えない状態です。

mixiを見てみたところ他にもこんな現象になった人がいるようですが、結論が出ていないで終わっています。
[mixi] Macを教える・教わる | 【ハード】2upで印刷できない

本当に困っているのですが、ダメならダメで仕方がないかと諦めている自分もいて(正直システムの再インストールをやる気が起きない)、でも何とかしたいところです。

追記:

アップロードした直後に、TextMateを使っていたら印刷画面が英語なので、英語のダイアログで使われている”Pages per Sheet”で調べればわかるかもしれないと思いました。
ググってみたところ
Apple – Support – Discussions – Lexmark T630 network printer – always prints 2 pages per sheet
というエントリを発見。

そこには ~/Library/Preferences/com.apple.print.* を捨ててみた〜?と書いてあったので、捨ててみました。

できましたー。 なんてこった。

ectoはじめました。

今ではオンラインで使うツールが本当に増えています。

メールはGmailしか使っていませんし(アドレスをもっと考えればよかった)、RSSリーダーはGoogle Reader、CalendarはGoogle Calendar、(最近はあまり使っていないけれども)ブックマークはdel.icio.us。

Viva! クラウドコンピューティング。

それでも、時にオフラインのツールが便利であることは否めません。
たとえばオフラインでも使えることは最たることですが、入力のしやすさであったり、反応の良さであったり。
たとえばGoogle Calendarは最近はもっぱら使わずにiCalで入力してSpanning SyncというツールでGoogle Calendarと同期しています。

このblogも普段はオンラインで書いていました。
書いていたんですが、最近ectoというオフラインで書けるツールを見つけて使い始めました。
infinite-sushi.com – ecto

以前にも書いたことがあるかもしれませんがWordPressというブログシステム?を使っています。
このWordPressは書くときに、独自のキーボードショートカットが割り当てられています。

たとえば、Ctrl + Pで記事の投稿。
でも、Viva! Emacsキーバインドな私は(というほどにはキーボードショートカットは憶えていませんが)、Ctrl + Pは一行上に上がるのよー。

だから、何も考えずにCtrl + Pでやったら勝手に投稿されてということが今までに何度もあって、そんなときは怒り心頭に発する訳です。
Ctrl + Dで<del ・・・>とかいうタグが勝手に挿入されちゃったり。

ちなみにMacで最強にすばらしいことの一つはEmacsキーバインドの一部がCocoaアプリで使えること。
ここで、どのようなキーバインドがあるか紹介されています。
【コラム】OS X ハッキング! (103) Cocoaアプリのキーバインドにこだわる(1)

そんなこんなで、すごくストレスがたまる状況で入力をしていました。
そのため、なんどもGoogleでそのようなキーボードショートカットをなくす方法を調べてみましたが、未だに見つからない。

適当なオフラインで書けるブログエディタがあれば、Cocoaの機能を活かしてEmacsキーバインドが使えるんだと思っていたものの、きちんと調べなかったのか?まともなものを見つけることができませんでした。
純粋なEmacsな人であれば、それはEmacsで書いてEmacsでアップロードすればいいのだよとおっしゃるかもしれませんが・・・。

それにしても、前にectoを見つけたときは全然視界に入らなかったんだよなぁ。
なぜだろうか?

追記:

スクリーンショットを載せるのを忘れていた。

Rubyで自動的にリンクを拾ってくるツールを作ったのだが・・・ 2

先日の続き。
Rubyで自動的にリンクを拾ってきてくるツールを作ったのだが・・・

もう少し具体的に処理内容を書く。

  1. 2万件近くのhtmlファイルをHTTPで取得。
  2. 取得したhtmlを解析し、リンクを見つる。
  3. ある一定条件のリンクであれば、さらにそこから飛んで、とんだ先のhtmlファイルを取得。
  4. その中にある特定条件のリンクを抽出する。

というものである。

このリンクをデータベース化しておく(サーバー側)。
こうすることの利点は2点ある。

  • クライアントアプリが必要なデータにダイレクトにアクセスできるようにする。
  • 将来URLの変更がおこなわれても、クライアント側の修正は不要。

まずはどこに時間がかかったのかを調べようと思って、プロファイラを使うことに決めた。

Rubyのプロファイラには標準でついてくるprofileと、それよりも高速なruby-profがある模様。
profile – Rubyリファレンスマニュアル
ruby-prof

はじめは高速なということに引かれてruby-profをインストール

sudo gem install ruby-prof

使用方法は

ruby -runprof hoge.rb

だそうなので、実際にやってみたところ

ruby: no such file to load -- unprof (LoadError)

と怒られてしまい、うまくいかなかった。

仕方がないので、標準のprofileを使う。
使い方は

ruby -rprofile piyo.rb

今処理の全部をやってしまうと時間がかかりすぎるので100件に絞っておこなった。
プロファイルをやってみたところ(上位5つの処理を抜き出している)

  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 31.08    81.24     81.24      197   412.39   760.41  Hpricot.scan
  7.87   101.82     20.58    18912     1.09    19.36  Hpricot.build_node
  5.75   116.86     15.04    32238     0.47     9.89  Array#each
  5.53   131.31     14.45    99767     0.14     0.19  Hash#[]
  5.26   145.07     13.76   232541     0.06     0.06  Array#[]

こんな結果になって、(右端の% time全体時間のパーセンテージということであるから)が全体の40%ほどがhpricotがhtmlを解析する処理に使われていることがわかる。
プロファイルなしで実際の処理時間を測定してみると、35秒ぐらいかかった 1

どうも正規表現の処理は遅くなさそうだということで、(hpricotを使う前はhtml全体をパースしてしまっていたので、それを止めて)anchorタグだけをパースさせることにする。
参考はたのしいRubyのHTMLパーサー

AnchorTagRegexp = /<a\s+[^>]*(?:href=(?:"([^"]*)"|'([^']*)'|([^'"\s]*)))[^>]*>/mi
response.body.scan(AnchorTagRegexp) { |tag|
  href  = $1 || $2 || $3
}
たのしいRuby 第2版
著者: 高橋征義、後藤裕蔵
ページ数: 489ページ
出版社: ソフトバンククリエイティブ
発売日: 2006年8月5日

結果は、、、同じぐらい。

やはり35秒ぐらいかかる。

ええい、こうなったらもうC++で書いてしまえということで書いてみた。
結果は、、、同じくらい、というかもっと遅い???(ぉぃ
単純にプログラムの書き方が悪いのか?

ちなみにC++ではlibxml2を使って書こうとしたところ、HTMLのパースでエラーがいっぱい出た。
どういうことかというと、たとえば<meta ・・・/>ではなくて、<meta・・・>となっているからタグの対応関係があっていないとか・・・。
厳密に見ないやり方はよくわからなかったので、仕方がないので上で使った正規表現を用いることにした。

使ったもの

  • 正規表現にはboost::regex。
  • HTTPでの通信部分はboost::asio。
  • EUC-JP → UTF-8への変換はiconv。

たぶん、何で書いても速度が変わらないということはネットワークがボトルネックなんだということで、とりあえず今は納得した。
HTTPの同時接続数を増やすというやり方はどうかと思うので、やらないけれども(やっても4接続ぐらいにしておく)。

もう一つやるべきこととすれば、今はデータベースを丸ごと更新しているので(やり方としてはどうかと思う)、更新されている場合にだけリンクを深追いするという方式にすればもう少し速くなるかもしれない。

ただし、このデータベースにURLを入れておくというやり方は止めて、必要なデータをその都度引っ張ってくる方が色々な意味で優しいのではないかと思えてきた。

  1. エントリを書きながら、プログラムを調節すればいいのですが、あとでエントリを書いているため正確な数字がわからない []

人生は長いのだろう

先ほどのエントリを書いたあとに、おもむろに鬼束ちひろの昨年のアルバム「LAS VEGAS」が聴きたくなった。
その一瞬が何もかもだと あなたは教えてくれた人

LAS VEGAS
鬼束ちひろ - LAS VEGAS
アーティスト: 鬼束ちひろ
レーベル: ユニバーサル・シグマ
発売日: 2007年10月31日

1曲目の「Sweet Rosemary」の歌詞にやられる。

作詞者名:鬼束ちひろ 作曲者名:鬼束ちひろ

手紙には何も書かないで
気持ちを飲み込んでしまうから
どうか どうか手を振らないで
振り返らないと決めたから

人生は長いのだろう
貴方のことも思い出すのだろう

時には滲む日々を越えていく
時には雨が洗うのを待つ
遠く 遠くで声が聴こえれば
迷わずに抱き合えるように

人生は長いのだろう
貴方のことも思い出すのだろう
人生は長いのだろう
また誰かの肩を抱くのだろう

ヒッチハイクのように愛を獲得して 口笛を吹いて
町から町へ 町から町へ 涙をこらえて
人生は長いのだろう
貴方のことも思い出すのだろう
人生は長いのだろう
また誰かの肩を抱くのだろう

人生は長いのだろう
貴方のことも思い出すのだろう
人生は長いのだろう
また誰かの肩を抱くのだろう

きっと小さな胸を焦がすのだろう
きっと小さな胸を焦がすのだろう

鬼束ちひろ – Sweet Rosemary in LAS VEGAS

あまりにも今の自分の気持ちというか境遇というか、そういうのにぴったりすぎて笑った。

その一瞬が何もかもだと あなたは教えてくれた人

先日、4月26日に渋谷のオーチャードホールで催された鬼束ちひろの一夜限りのライブ「NINE DIRTS AND SNOW WHITE FLICKERS」で披露された、新曲「蛍」の発売日とそのライブを納めたDVDの発売日が決定しました。

発売日は8月6日。

面倒なので、早速Amazonで注文を入れておきました。

あのライブは本当にすばらしくて、声がきれいで、圧倒されまくりで、魂を揺さぶられました。
cocoa*life>> 鬼束ちひろコンサート

それがDVDになってみられるというのが本当に嬉しいです。
できることならばBlu-rayバージョンも発売して欲しいところですが・・・。


アーティスト: 鬼束ちひろ
レーベル: ユニバーサル・シグマ
発売日: 2008年8月6日
NINE DIRTS AND SNOW WHITE FLICKERS
アーティスト: 鬼束ちひろ
レーベル: ユニバーサル・シグマ
発売日: 2008年8月6日

ちなみにタイトルは「蛍」の歌詞の一部です。
いろんなことを考えてしまう歌詞ですね。