はな音楽教室ポイントサイトのクレジットカード案件の過去の還元実績まとめサイト内検索testこれは何?このブログに投稿されたすべての写真を一度に見るカテゴリー「perl」の8件の記事2009.01.29cicindelaの簡単な使い方ハマッたので、メモがてら情報共有。オフィシャルサイトを含めいろんなサイトでデモを利用することの記事は多いんだけど、じゃあ、実際に自分のデータを料理したい場合はどうするの?って情報が少ない。ステップ1)環境構築これは、オフィシャルサイトにあるとおりにやればOK。Code一カ所ハマッた時のメモ。オフィシャルにまとまった解説がない。プロジェクト名を決める。↓のデモサイトの通りにやれば良い。-uroot「cicindela_clip_db」のところをプロジェクト名にする。今回ならば「cicindela_blog_db」。設定ファイルもはデモサイトの通りだとだめ。lib/Cicindela/Config/_common.pmを開いて↓のコメントアウトを解除する。},で、「datasource」の箇所を自分のローカルにあるデータベースの設定に変更する。「cicindela_clip_db」はさっき自分で作ったDB名ね。今回ならば「cicindela_blog_db」。あと、「clip_simple」の箇所を自分のプロジェクト名に変更する。今回なら「blog」。ステップ3)ログデータを記録するセットアップしてApacheを起動するともう大丈夫。↓みたいなURLをたたくとログが記録されるんだけど、httpのステータスコードが204だから一瞬とまどう。200じゃないんだね。http://(ベースURL)/cicindela/record?set=(セット名)&op=insert_pick&user_id=1&item_id=2http://localhost/cicindela/record?set=blog&op=insert_pick&user_id=1&item_id=2ここでいう「セット名」ってのが初めて登場するんだけど、ようは自分が決めたプロジェクト名。今回で言うと「blog」。設定ファイルに記述したものと一緒にする。上記http通信でちゃんとログが記録されているかの確認方法が公式ドキュメントでは見あたらない。実際は「picks_buffer」のテーブルにいる。ステップ5)バッチを実行するログを記録すると、すぐにでも↓のようなURLをたたいてみたくなるけど、グッと我慢してバッチを2つ実行する必要がある。ないと、関連情報は出てこない。http://localhost/cicindela/recommend?op=for_item&set=blog&item_id=1実際は↓の2つのバッチを実行する必要がある。./bin/flush_buffers.pl./bin/batch.plこれのうち、「./bin/flush_buffers.pl」がハマル。ちなみに僕は3時間くらいハマッた。いう風に書いてあるから。これを見ると「batch.pl」だけ実行すればいいように思っちゃう。batch.plを実行する前にflush_buffers.plが必要。ちなみに僕は「flush_buffers.pl」を実行する必要があるってことを↓のページで見つけた。http://cicindela2.googlecode.com/svn/wiki/FilterChain.wikiソースコード読んでいて「extracted_picks」ってのを使っているなと思って検索したらヒットした感じ。==」ってのがすごくわかりやすい。これ、公式ドキュメントの一番わかりやすいところに書いておいて欲しいと思った。ステップ6)Apacheのログを食わせる実際に自分のプロダクトでcicindelaを使おうと思ったら、Apacheのログを食わせるのが楽だと思う。[あとで書く]って書いてあるだけ。本当ならばsession_idをuser_idと見立てるのが良いんだろうけど、手元にそんなログはないので、IPアドレスをuser_idとしてみた。IPアドレスをuser_idとする場合は、IPアドレスは文字列だから、cicindelaに特別な設定が必要。それは公式ドキュメントにもある通り、以下の通りにする。利用できるようになります。item_idはURLのPATH、ディレクトリ名、ファイル名とかそういうので良いと思う。ちなみに僕のプロダクトはURLにidが含まれているからそれを抽出した。./log/log4cicindela.txtで、上記コマンドで生成したlog4cicindela.txtを↓見たいなrubyスクリプトでcicindelaに入れた。80).start{|http|http.get("/cicindela/record?set=oshiete&op=insert_pick&user_id=#{user_id}&item_id=#{item_id}")}}で、ログを食わせたら、さっきも書いたとおり、下の2つのバッチを忘れずに。EDGE(どうでもいいけど、↑のページにcicindelaっていうテキスト(文字)がなくて、コピペできなくて困った。directoryと、エラー。おまえのログを見て解決。http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patchとか。あと、忘却防止のためにこの記事にもメモ。(0)Tweet2006.03.27LacoocanでperlからSQLiteに接続する(2)perlでDBに接続するだけならばDBIを使ってガリガリとコネクション処理とSQL文を書いていけばいいのだけれども、やっぱりここではO/Rマッパーを使っていきたい。perlでO/RマッパーといったらClass::DBIなんだけれども、ここはLacoocan。telnetできないから、モジュールのインストールが激しくめんどくさい。Class::DBIは色々と依存関係が強いモジュール群だからさらにめんどくさい。楽したくてO/Rマッパーを使うのだから、やっぱりめんどくさいことはしたくない。それに、LacoocanでClass::DBIがうまく動くかどうか謎だし。search.cpan.orgというのを発見。TypeでつかわれているSixApartが作っているO/RマッパーをCPANで一般向けに公開したものだ。うおー、MTのO/Rマッパー使いたいけどライセンス的にNGだよなぁって思って残念がっていたところなんだよねー。SixApart最高〜、ってことで、早速使わせて貰うことにする。思ったけど、まったくドキュメントが書いていねぇ...。MTのソースコードを参考にしてみるかと思ってみたんだけど、なんか微妙に使い方が違う気がする??ってことで、ソース読んで調べても良いけど、時間短縮のためにGoogleで調べてみる。Error:Data::ObjectDriverを遊んでみる(↑、暴想ブックマークで「obj」って検索したら出てきた!便利だ(自己満足)。)んで、まあ、このサイトの人の通りに書いてみようと思ったんだけど、いくつか疑問点が。'dbi:SQLite:/homepage/projects/bookmark/bookmark.db'って書けばよかった。*.dbのファイルパスを書けば良いみたい。一度も設定した覚えがないからだ。空にして設定したら普通に接続できた。具体的には以下の通り。'',あとは、普通にやって普通にできた。モジュールの依存関係は2つだけあって、Class::TriggerとClass::Data::Inheritableを追加にインストールした。サンプルアプリケーションとサンプルデータベースを用意してアップロードした。http://weblog.news.coocan.jp/projects/bookmark/app/db_test.cgiこれは、DBに接続して保存して読み込みしている。ここまでできればあとの応用はいくらでもきくし、アイデア次第といったところだ。Lacoocanなのでスケーラビリティとかスピードとかは限界がミエミエなので、個人専用のツールとしてアイデア勝負で色々とかゆいところにきくアプリケーションを作っていくのが似合っているのだと思う。(0)Tweet2006.03.25LacoocanでperlからSQLiteに接続する(1)暴想ブックマークをこれ以上バージョンアップさせようとすると、データベースとの連携が欲しくなる。凄く頑張ってテキストベースですすめても良いのかもしれないけれども、やっぱりDBと連携させた方が楽だしわかりやすい。我らがラクーカンではSQLliteしかないうえに、telnet接続できない。これは結構大変な話だ。第一に僕はSQLiteを生まれて一度も使ったことがない。いうことで、お勉強開始だ。SQLiteはとても楽ちんでライトなデータベースとして有名だ。1つのデータベースは1つのファイルでしかない。お気軽に作成できるし、お気軽にコピーできる。基本的な使い方はこのページを参考にした。データベースと会話するプログラムで、とりあえず触ってみないとお話にならない。TigerにはSQLiteが最初からインストールされているから超楽ちんだ。./bookmark.dbってやれば、bookmark.dbができあがる。tableとかやればOK。もって、SQLiteの一番凄いところとして、ファイルをコピーするだけでDBの移動ができるって事。僕はラクーカンでMTを使っているのだけれども、そのMTはSQLiteで動いている。いうことで、/mt/mt.dbというファイルをFTP接続でローカルに持ってくる。mt.dbってMacのターミナルからコマンドを打つと、mt.dbに接続できる。mt_entry;とかやれば、ちゃんと応答が返ってくる。逆に、さっき作った、bookmark.dbもFTPでラクーカンに持って行けば、ちゃんと動く。次は、perlから実際にデータベースに接続する方法だ。0.3ということで、バージョンアップしました。段々まともになってきた。日付情報は滅茶苦茶重要なメタ情報だ。重要なメタ情報は検索できなくてはいけない。昨日(3月16日)にブックマークしたアレを探したいという時には、検索窓に「-03-16」と入力すればいい。こんな感じで、日付を文字列型の検索ボックスに入力して検索するスタイルは結構珍しいのではないかと思うけど、どうだろう?でも、使ってみるとその便利さは一目瞭然だ。あるプルダウン型の日付の絞り込みは不便すぎる。今年を検索する場合は「2006-」と検索すればいい。今月は「-03-」や「2006-03」だ。ブックマークツールを作っていて気がついたのだけれども、URLというのはとても貴重なメタ情報だ。昨日インプレスの記事で見たページをもう一回見たいなぁ、、でもタイトルとか忘れちゃった...ってときは「impress.co.jp」とかで検索すれば、インプレスの記事がダダダと出てくる。これって、結構良いのではないかと思ってはてなブックマークで実験してみたら同じ事ができた、、残念。この暴想ブックマークツールの検索はもっと便利だ。それは、URL検索と記事タイトル検索が同時にできると言うこと。インプレスで書かれたヨドバシに関する記事を読み直したいと思って検索するとする。ヨドバシ関連の記事は沢山ブックマークしてあって、その中からインプレスの記事だけを探したいのだ。ヨドバシ」と検索すればいい。javascript」って検索すればいい。今実験したらはてなブックマークではできなかった。ちなみに、これらの検索と同時にさっき紹介した日付検索も同時に使うことができる。任天堂」とかって検索すればOK。全てのメタ情報を一つの検索窓から串刺し検索できるっていうわけだ。いうわけで、いつものようにご自由におためし下さい。登録用ブックマークレットはこちら。ver0.3結果の表示画面はここにあります。0.2というわけで、俺様ブックマークツールをバージョンアップした。ツールにちゃんと名前がないと何かと不便だよなぁと言うことで、単純に暴想ブックマークと命名してみた。うーむ、もっと言い名前はないかな。liタグを利用して描画するようにした(ずいぶんと見やすくなった)・空白のブックマークが作られないように修正ブラウザ上でマウスを使って一緒に保存しておきたいなぁと思ったテキスト情報を選択しておくだけで、ブックマークレット実行時に自動的にブックマークツールに登録されます。これは便利!例えばこのサイトを見て下さい。大河原克行の「パソコン業界、東奔西走」このサイトの記事が面白いと感じてブックマークしようとしても従来のバージョンだと、“大河原克行の「パソコン業界、東奔西走」”としか登録されなくてまったく意味がわかりません。ところが、この記事の副題である“ヨドバシ、ビックと真っ向勝負を挑むヤマダ電機”ってのを一緒に登録しておくととってもわかりやすくなる!もちろん、タイトルだけでいいやって場合は従来通り何も考えずにブックマークレットを実行するだけでいい。必要な時だけ、引用して保存しておきたいテキスト情報をマウスで選択するだけ。ポップアップ画面とか出てこないし、コピペする必要もない。いうことで、従来のコンセプトを一切崩すことなくメタ情報を追加することができた。いうことで、前回と同様自由に試してみて構わないので、色々と遊んでみて下さい。登録用ブックマークレットはこちら。暴想ブックマーク(なおゆき、読め)結果の表示画面はここにあります。ソーシャルブックマークとかが気になりつつもどうも使う気になれなかった。なんかしっくりこない。なんかめんどくさそう。ことで、だったら自分が一番欲しいと思うブックマークツールを作ってみようと思って作ってみている。自分が欲しいものってどんなのだろうかと考えてみると・できるだけ簡単にブックマークできる・できるだけ余計なことを考えずにブックマークできる・Webの閲覧リズムを阻害することなくブックマークできる・できるだけ簡単に、高速に検索できる・シンプル・別にソーシャルじゃなくていいという感じだ。もって、僕はタグ(タギング)については以下のように考えている。タグ、タギングについての私見ようは、自分でタグとか入力しなくていいし、させないインタフェースがもっとも素晴らしい。メタ情報はツールが勝手に取得、生成してくれればいいし、それが正しい。これらのことを全てまとめて第一弾のデモを作ってみた。自分が気になったページをブックマークするには、以下のBookMarkletを利用する。BookMark(なおゆき、読め)使って貰えればすぐにわかるけど、ブックマークレットを実行しても何も起きない。クリックしたらそれで終わりだ。もって、自分がブックマークした結果はこのページに表示される。ブックマークシンプルだ。検索ボックスがあって、あとはブックマークのリストが新着順に表示される。何でもシンプルすぎるし、これに付け加えたい機能は山ほどあるけれども、とりあえず僕が目指しているコアはこれにつきると思う。わけで、このデータベースというか、この実験ブックマークレットはお試しなので、気になった方はご自由に使ってみてください。(1)Tweet2005.10.28CPANのロゴが10周年になっている!CPANのロゴがケーキですよ。Site10年なんですねぇ。僕が使い始めてから1年くらいですが...。暴想コメントお待ちしていますお気軽に!せっかくだし、是非!初めての方でも、知り合いじゃない人(他人)でもどうぞ。コメントをもらって迷惑に思うことはありません。逆に、とても嬉しいですし、励みになります。パルシステムのユーザーの人は是非おすすめ商品とか教えてください!最近、インターポットで遊んでいます。みんなも一緒にプレイしよう!友達申請してね。流はこちら太陽光発電(ソーラーパネル)。