木曜日, 28 9 月 2006

Pager Pluginを使う この記事(Pager Pluginを使う)を「はてなブックマーク」に追加 この記事をクリップ! この記事(Pager Pluginを使う)を「del.icio.us」に追加

以前からblojsomを使っていて、エントリ一覧で「次のページ」や
「前のページ」を見るための機能がなぜないんだろうと思っていました。
今は10件ずつの表示にしていますが10件表示されてそれで終わり。
以前のエントリを見るにはカレンダーをぽちぽちクリックして見ていくしかないんですね。
件数制限なしで表示するようにすれば当然以前のエントリが見られますが
全てのエントリが表示されてしまい、どえらく重くなるし…。

blojsom標準の機能に「次のページ」を出せる機能はないようなので
これはプラグイン作るしかないかーと思って何か参考になるプラグインがないかと
blojsom公式のプラグイン一覧を見ていると既にPager Pluginというそのものズバリのプラグインがあるし!
作る前にここ見ておいて良かったー…。

使用するにはまずここからpagerplugin-0.2.jarを落としてきて/WEB-INF/libに入れます。

次に/WEB-INF/plugin.propertiesへ
pager=com.mbledug.blojsom.plugin.pager.FilterPlugin
と設定を追加し
/WEB-INF/(ユーザーID)/plugin.propertiesに
html.blojsom-plugin-chain=..., calendar, ..., pager, ..., limiter, ...
とpagerを書き加えます。
ここでポイントなのが既にcalendarとlimiterがチェインされていればその間に書き加えた方がよい、
ということだそうです。

で次に/WEB-INF/(ユーザーID)/pager.propertiesというファイルを作りその中に
page-size=10
とだけ書いておきます。
ここでの右辺数値は1ページに表示させる上限の数になっています。
この場合だと10件まで表示するようになります。

最後に/WEB-INF/web.xmlへ
<init-param>
        <param-name>plugin-pager</param-name>
        <param-value>pager.properties</param-value>
</init-param>
と先ほど作った設定ファイルをプラグインが読み込むようにしてあげれば準備完了です。
反映させるにはコンテナを再起動する必要があります。

あとは「次のページ」のナビげージョンを表示させたいテンプレートの位置に
#parse("pager.vm")
と書いて、jarファイル内にあるpager.vmを/WEB-INF/(ユーザーID)/templatesに置けば終わりです。
pager.vmの中身はそんなに難しくない表示を変えることも簡単にできると思います。

使ってみた感想は、そうそうこれが欲しかったのよ!コレコレ!
という感じでとても重宝しています。次のページktkr!
でもこれってblojsomがデフォルトで持っているべき機能なんじゃないの…?
Posted by tsujitako at 10:23 午後 in Java/blojsom/

金曜日, 22 9 月 2006

YouTube動画のタイムライン画像を作る この記事(YouTube動画のタイムライン画像を作る)を「はてなブックマーク」に追加 この記事をクリップ! この記事(YouTube動画のタイムライン画像を作る)を「del.icio.us」に追加

YouTubeの動画を一定時間ごとに画像として書き出したら便利かなと思って作ってみました。
使い方はYouTube動画のURL(http://www.youtube.com/watch?v=xxxxxとか
http://www.youtube.com/v/xxxxxとか)を入力し作成ボタンを押せば勝手に画像を作ってくれます。
現在の設定では約5秒ごとに画像として書き出すようにしているので
大まかなシーンの確認程度には使えるんじゃないでしょうか。

ただあまりにも長い動画だとダウンロードに時間が掛かりすぎ回線の中の人に怒られるので
25MB(だいたい10分程度?)までの動画だけに制限している状態です。
そうでなくても線が細いので急いでる時は素直に動画を見た方がいいと思います。
また一度変換した画像はキャッシュされるので同じURLを入力すると待たずに画像が表示されます。

サンプルとして”言葉にできない”動画のURLを入れているので
そのままボタンを押すと 画像変換結果がすぐ見れます。
言葉にできないwバロッシュwww

追記: 久しぶりに見たらなんか動かなくなってたので修正しました。
   YouTubeの仕様がちょっと変更されてたみたい。


Posted by tsujitako at 12:30 午前 in Ajax/

水曜日, 13 9 月 2006

Cometを実装してみる? この記事(Cometを実装してみる?)を「はてなブックマーク」に追加 この記事をクリップ! この記事(Cometを実装してみる?)を「del.icio.us」に追加

先日、Lingrというサイトを見てちょっと感動してしまいました。
上記のサイトで何が出来るのかというといわゆるチャットなんですが
Cometという技術を使っていてブラウザとサーバ間の通信が非同期で行われているそうです。
試してみると確かに自分以外の人の発言がリアルタイムに表示されてサクサク気持ちいいです。
確認のためブラウザを2つ立ち上げて片方で発言すると即座にもう片方に表示されます、素晴らしい!

ここで使われているCometという技術は従来ブツ切りであったブラウザとWebサーバ間の接続を
維持した状態でデータのやり取りを行うということらしいです。(詳しくは知らない…)
そのためブラウザからのプル型だけでなく任意のタイミングでサーバからデータを送信できる
プッシュ型での通信も行えるため他の書き込みも即座に表示されていたわけです。

このCometとても気になって色々調べては見ましたが具体的な実装方法が見つかりませんでした。
もしかしたら海外のサイトをくまなく探したらあるのかも知れません…。
サーバと接続を維持したまま…うーんどうするんだろう分からない、HTTPじゃ無理じゃないの?
でLingrを眺めていてどういうデータが流れているのかtcpdumpで見ていると何となく分かった気が。
どうやらAjaxでWebサーバに接続した後、そのまま何もレスポンスを返さず待機しているようです。
そして何らかのイベント(発言など)が起こった時にサーバ側で待機していたプロセスを再開し
ブラウザにレスポンスを返してそれが表示されたらまた裏でWebサーバに接続して待機する…、
それの繰り返しによりまるでプッシュ型の通信を行っているかのように見えているみたいです。
推測なので実はちょっと違うのかも知れませんが。

それなら自分でもCometの実装ができるかもと思い作ったら出来ました。Lingrと同じでチャットですけど…。
今回はサーバ側Servletを使いましたが他の言語でも出来ると思います、きっと。
動作のフローはまずブラウザからAjaxでWebサーバに接続を行います。
接続を行ったらServletの中でwait()をかけます、タイムアウトは30秒にしました。
そして入室や発言の動作でリクエストを送るとサーバ側では入室/発言のメッセージをServletContextに保存し
notifyAll()でwait状態になっているスレッドを再開させ各スレッドがServletContextから
保存されているメッセージを読み出してそれをクライアントに返すというだけの仕組みです。

ちゃんと検証していないのでブラウザによっては挙動が変かも知れません。
場合によっては死んだコネクションが残りブラウザが不安定になるかもです。
IEとFirefoxなど違う種類のブラウザでこのページを同時に開き
片方で発言すればもう片方のブラウザでもすぐに表示が行われるのが確認できると思います。


Connecting...

便利!これは夢がひろがりんぐな技術ですよ!と言いたいんですが
少なくとクライアントの数はサーバと持続した接続が必要なわけで
サーバ側のリソースをどうするか考えなくちゃダメですよね。
従来のWebアプリケーションを作る場合とは違う考え方が必要そうです。

Technorati Tags:

Posted by tsujitako at 11:22 午後 in Ajax/

木曜日, 7 9 月 2006

SCIM + Anthy この記事(SCIM + Anthy)を「はてなブックマーク」に追加 この記事をクリップ! この記事(SCIM + Anthy)を「del.icio.us」に追加

んーかなり久しぶりの更新…
それはさておき、このブログを置いてるサーバは一応Xも動かしていてたまにターミナルで作業したりしてるんですが
ごくごくたまーに日本語を打つ必要があるときもあるんですね、緊急のメール返信とか。
でもYDLを4.1にしてからなぜかkinput2が無くなってしまい日本語を入力できないでいました。
Cannaは入ってるのにIMは入ってない、どういうこった。

仕方ないのでkinput2をインストールしようとも考えたんですが調べていると
SCIM + Anthyがアツイらしいので変換エンジンごと入れ替えることにしました。
余談ですがインストール方法などを調べていると大半の方がapt-getやyumを使ってインストールされてるんですよね。
YDL4.1にもyumはありますがupdateの中身はup2dateが2つあるだけで全く使えません。
yumの「y」はYellowdogの「y」なのに…。

さてインストールにあたり以下のソースtarボールを落としてきました。
anthy-7900.tar.gz
scim-1.4.4.tar.gz
scim-anthy-1.2.0.tar.gz

上から順にインストールを行っていきます。
$ tar zxvf anthy-7900.tar.gz
$ cd  anthy-7900
$ make
# make install 

$ tar zxvf scim-1.4.4.tar.gz
$ cd scim-1.4.4
$ ./configure 
$ make
# make install 

$ tar zxvf scim-anthy-1.2.0.tar.gz
$ cd scim-anthy-1.2.0
$ env PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure 
$ make
# make install 
で、無事インストールが終わったら以下のコマンドでSCIMを立ち上げます。
$ setenv GTK_IM_MODULE scim
$ scim -d
立ち上がりました、問題なさそうです。
試しにFirefoxなどGTKアプリケーションを立ち上げて変換できるか試してみます。
んんん…できない、Shift+SpaceでもCtl+Spacheでも切り替わらない、なぜに?Why?
色々調べた結果、gtk.immodulesを更新しなければダメみたい。
gtk.immodulesの中身はgtk-query-immodules-2.0-32の実行結果を入れればいいから
# gtk-query-immodules-2.0-32 > /etc/gtk-2.0/gtk.immodules
でOK…かなと思ったけどダメでした。
どうやらYDLの場合はgtk.immodulesのパスが異なっていて
# gtk-query-immodules-2.0-32 > /etc/gtk-2.0/powerpc-yellowdog-linux-gnu/gtk.immodules
とすると、めでたく変換できるようになりました。

Anthyは噂通り変換効率が良く、Cannaよりかなり賢いような気が。
これならメールもサクサク書けてストレスが溜まらず済みそうです。



Anthyキタコレ

Technorati Tags:

Posted by tsujitako at 12:57 午前 in Linux/