Home

日記
gonzui の php support (00:57)Edit

とくひろさんが、昨日のネタを使って、gonzuiのPHP parserを書いてくれました。試してみたところ、ちゃんとPHPのコードとして認識されcolorizeしてくれるようになりました。ただ、関数とかクラスの定義はうまく認識されていない模様。でも、ここまで動くものがあればあとは自力でいじっても何とかなりそうな感じです。ありがとうございました。

Published At2005-02-01 00:00Updated At2005-02-01 00:00

日記
関数・クラス対応バージョン (13:46)Edit

おお、早くも関数・クラス定義に対応したバージョンにアップデートされましたよ。インポートし直したら、今度はちゃんとPHPの関数使用率統計とかも現れた。

ただ、勢い余ってPEARライブラリをまとめてgonzuiにつっこんでみようかと思ったら、PEARのtgzなアーカイブを食わせるとgonzuiがうまく認識できない模様。いったんtarで展開してからもう一度tgzに固め直してやるとうまく食えるらしいけど、何かアーカイブのフォーマットが違うんだろうか?

ひとまずhttp://gonzui.ishinao.net/以下には自分がチェックしたい公開アーカイブをつっこんでおくけど、それとは別に自分の作ったコードをgonzuiで閲覧できるようにしたプライベートなgonzuiも立ち上げておくと便利そうだな。どうせなら、Subversionリポジトリと適当に同期をとるようにしておくと、さらに便利かも。あるいは単に特定ディレクトリにおかれたtgzファイルをチェックして、更新されていたらremove、importを自動的にしてくれるだけでもいいか。

あと、gonzui用PHPパーサーページが独立した模様。

ところで、gonzuiは基本的には自前で各言語のパーサーを持つというアプローチみたいだけど、このPHPのアプローチみたいに他言語で使いやすいパーサーがある場合は、それを使ってgonzuiに取り込むためのインターフェースを持たせておくと便利かもしれない。インターフェースっていうか中間出力のフォーマットを決めておく感じかな。XMLとかYAMLとか。

Published At2005-02-01 00:00Updated At2005-02-01 00:00

日記
mm_footer.rbとrss_recent.rb改造版 (15:37)Edit

ちゃんとRuby(とtDiary)のお勉強をしてから真面目に書き直そうかと思ってたんだけど、キビシイ督促(笑)を受けたんで、適当バージョンを公開しておきます。

なかにはrss_recent.rbの改造版と、それに依存したmm_footer.rbがあります。rss_recentは、

  • 引数にテンプレート文字列を渡すことで、出力するHTMLを変更できるようにした
  • RSSのcontent:encoded要素を解釈&保存するようにした(require 'rss/content')
  • RSSの取得(パース)失敗時には古いキャッシュを使うようにした
  • アイテムが0のときは空文字列を返すようにした

という改造を施しています。あとデフォルトのテンプレートを従来のものと変えちゃっているんで、置き換えるとrss_recentの出力が変わってしまいます(どう変わるかというと、ここのサイドバーのような内容になります)。

で、mm_footer.rbは改造版rss_recentを使って、各日付のフッタにその日のMMの内容(content:encoded部のみ)を表示するプラグインです。面倒くさいんでMMのユーザーIDは17行目あたりに、

      mm_user = 1 # your MM id

とかしちゃってるんで、それを自分のIDに書き換えて使ってください。というか本当は、プラグインで設定を編集・保存できるようにしつつ、未設定の場合は表示しないようにすればいいんだけどね。ついでにテンプレートもWebインターフェースで変更できるようにしておけばいいんだけどね。

標準のテンプレートでは、<div class="section"><ul class="mm_footer">なんて感じになってるんで、適当にCSS定義を追加して見た目を変えてください。ul.mm_footer span.url {font-size: 80%; color: silver;}とかしておくと、ここの表示みたいな感じでURL文字列が目立たなくなります。

ところでテンプレートに埋め込んだ文字列変数を再評価するのにevalを使っているんだけど、もっと安全な方法ってないのかな? それともsecureの設定で使用できる命令とかが絞られて自動的に安全になる? というかもしかしたらsecure関連の設定によっては、このコードはそのままじゃ動かないかも?

あ、あとcontent:encodedをCGI.escapeHTMLしないで出力してますけど、その場合content:encodedに攻撃コードを入れられることによって、tDiaryをおいているドメインに対して攻撃を受ける危険性があります。一応そういうリスクを念頭に置いた上でご利用ください。

Published At2005-02-01 00:00Updated At2005-02-01 00:00

日記
ジャスト「一太郎」の販売中止を命じる 松下アイコン訴訟で判決 (もっと詳しく) (17:15)Edit

こういうつまらん特許は、行使しようとした結果もめたらその段階で、まずそれが本当に特許として有効な技術なのかどうかの再審査を受けるようにして、それでつまらん内容だと判断されたら簡単に無効化できるようにならないだろうか。

特許の初期審査にコストをかけられないというのは、まあしょうがないとしよう。すでに取得済みのつまらない特許も山のようにあるだろうから、今から入り口を塞いでも手遅れだ。だから、入り口(新規申請)は今まで通りでかまわない。

ただし、それを行使しようとしてもめた場合(裁判になった場合)、特許が有効という前提で侵害されているかどうかを争う前に、まずその特許自体の妥当性を審査するようにする。そうすれば、妥当な技術審査をするべき件数は大幅に減るだろうから、1件あたりにはそれなりのコストをかけられるんじゃないか。

個人的には、その問題について世界中の人が考えた場合、100人以上の人が思いつきそうな技術(手段)は、特許にならない、とかして欲しいな。10人でもいいかも。

Published At2005-02-01 00:00Updated At2005-02-01 00:00

日記
薬をもらいに行った (17:54)Edit

まだ症状は出ていないんだけど、今年はひどいという話だし、そろそろ来だしたという人もいるみたいなんで、花粉症の薬をもらいに行ってきた。ひとまず去年と同じ弱めの薬3週間分。今年も去年みたいに楽に乗り切れるといいんだけどなー。

Published At2005-02-03 00:00Updated At2005-02-03 00:00

日記
Sleipnir用メモ登録スクリプト (18:52)Edit

SleipnirでMMへの登録bookmarkletが動かない(というかbookmarklet一般が動かないんだけど)という嘆き(?)を目にしたんで、Sleipnir用スクリプトのサンプルを。というか、bookmarkletをSleipnirで動かしたい場合は、Sleipnirのスクリプトを(JavaScriptモードで)新規作成して、TODOのところにbookmarkletのJavaScriptコード部分をコピペして、もしwindowオブジェクトを使っているところがあったら、pnir.GetWindowObject(id)に書き換えればだいたい動くんじゃなかろうか? Sleipnirのスクリプトってほとんど使ったことないから知らないけど。

var pnir;
var document;
var id;
pnir     = new ActiveXObject("Sleipnir.API");
id       = pnir.GetDocumentID(pnir.ActiveIndex);
document = pnir.GetDocumentObject(id);
if (document == null)  {
pnir.MessageBox("Document オブジェクトを作成できません");
}
else {
pnir.GetWindowObject(id).open('http://1470.net/mm/memo_form.html?url=' + escape(document.location.href));
document = null;
}
pnir = null;

リンクバーに追加すればSleipnirでもbookmarkletを使えるんだそうな

リンクバーっていつも非表示にしていたから気づかなかった。

Published At2005-02-03 00:00Updated At2005-02-03 00:00

日記
ローカルblogおよびグルーピングサーバー (14:52)Edit

思いつき。自分のローカルPC上でhttpdを動かして、そこでローカルblogを動かす。ローカルblogは、以下のような機能を持つ。

  • 本人は、http://localhost/blog/なんてURLでふつうのblogのようにアクセスできる。もちろんエントリーの投稿とか編集とかもできる。通常はlocalhostのみからアクセスできる(allow from 127.0.0.1)。公開したいエントリーを、http://localhost/blog/public/なんてディレクトリーにマウントすることも可能。そうするとLAN内の他のPCから公開されたエントリーを閲覧することもできる。
  • ローカルblogに投稿されたエントリーのうち指定したものを、インターネット上に公開された(一般的な)blogツールと同期することができる。bloggers APIを使ったり、あるいはベタにフォームでPOSTしたり(その場合は新規投稿以外の動作は保証されない)。つまり、ローカルblogは公開前の下書きとしても利用できる。
  • ローカルblogには、del.cio.usとかMMとかみたいなメモ付きブックマーク的機能もある。また、ローカルblogではメモした時点の外部URLのコンテンツをすべて自動的にローカルバックアップする機能を持つ(MMでは権利関連が面倒なんで実装していない機能)。更新チェックなどの機能もあると便利かもしれない。
  • LAN内にあるローカルblog同士は相互に連携することができる。同じLAN内に接続されたローカルblogの存在を自動的に認識し、LAN内でオンラインのローカルblogそれぞれの更新状況などを取得することができる。また、相互にtrackbackなどを送受信することもできる。
  • ローカルblogを管理するグルーピングサーバーを作ることができる。グルーピングサーバー上にアカウントを持つローカルblogが、そのLANに参加すると、ローカルblogの内容はグルーピングサーバーと同期される。つまり、グルーピングサーバーが存在するLANに接続している間は、ローカルblogはグルーピングサーバー上にマウントされて見える。これによりグルーピングサーバーが存在するLAN上では、あるローカルblogがオフラインのときでも、そのローカルblogのデータ(の同期されたもの)にアクセスできる。
  • グルーピングサーバーは、update pingサーバーやtrackbackセンター、グループに所属するすべてのblogに対する全文検索(estraierのメタ検索とかを応用してもいいかも)などの機能を持つ。

という仕組みで何ができるのかというと、

  • ひとまずインターネットにつながらない環境でも、ローカルPC上で動作するblogツールを使ってエントリーを書くことができる。
  • そこに書かれた記事はそのままではインターネット上に公開されないので、下書きやメモなどの雑多な内容を自由に(blogツールの使用感覚で)書くことができる。
  • インターネット上に公開したい記事は、そのまま外部サーバーと同期をとるだけで、公開することもできる。
  • 下書きや情報収集中に参照した外部URLのデータは、自動的にローカルblog環境にスクラップされていき、後で(オフラインで)閲覧することができる。
  • グルーピングサーバーがあるLAN上にいるときは、ローカルblogがグルーピングサーバー上で管理されることにより、グループウェアの1クライアント的な存在となる。

本当は、ドキュメント管理用のWiki、ファイル管理&履歴管理ツール(subversion)とか、Webメールクライアント(IMAPベース)とか、スケジューラークライアント(iCalベース)とか、デスクトップ検索システム(Estraierベース)と連携させて、ローカルPC上で動作する壮大なインターネットクライアントシステム、というか、Notesみたいなクライアント単体でも動作しサーバーとも連携できるグループウェアシステムの置き換えを妄想していたんだけど、そこまで行くと話がまとまらなくなったんで、ひとまずblog周辺に絞って書いてみた。誰か頑張ってオープンに仕様を切って作ってみませんか。ローカルで動く部分だけならそのうち作りたいけど、連携部分とかグルーピングサーバーの部分まで作る根性はあんまりないんだよなー。

Published At2005-02-04 00:00Updated At2005-02-04 00:00

日記
まとめて開くジェスチャー (15:36)Edit

All-In-One-Gesturesのデフォルト設定で、→↑←というジェスチャーの軌跡で通ったリンクをすべて開く、ってのがあるんだね。これを使うとtextmaniaの未巡回サイト(GOリンクの未読リンク色部分)をまとめて開くのがずいぶん楽になるなー。

Published At2005-02-04 00:00Updated At2005-02-04 00:00

日記
またいかれた (19:00)Edit

金曜日の夕方からまたおかしくなった。USB経由で充電すらできなくなっていたんだけど、ACアダプターにつないだら一応充電できるようになった。単体での再生はできるようになったんだけど、以降(USB接続で)PCで認識できなくなった。ネットで調べるとWindowsでUSB接続は何かと問題が出ることが多いらしいんで、ひとまずfirewireの変換アダプターを買ってきて試してみよう。それでダメなら修理か。

Published At2005-02-06 00:00Updated At2005-02-06 00:00

日記
やっぱり故障らしい (12:32)Edit

IEEE1394の6pin to 4pin変換アダプターを買ってきてつないでみたいんだけど、やっぱり認識してくれない。さらに別のPCに別のUSBケーブル(オクサンのiPod miniのやつ)を使って接続してみたんだけど、やっぱり認識してくれない。ということで完全に本体が故障しているっぽいな。

しかも、そうやって試しているうちに、満充電状態から数分でバッテリーのメモリがふたメモリも減りやがったよ。まだ買ってから1ヶ月ちょっとだし、バッテリーがへたるのには早すぎだよね。以前も満充電から3時間くらいでバッテリー残量がゼロになり、それからもう一度再生ボタンを押してみたらバッテリー残量ゼロのまま、3時間くらい再生できたことがあったし。

おかしな症状が出始めたのって、買ってからすぐだったんだけど、結局騙し騙し1ヶ月ちょっと使って来ちゃったから、今から持っていっても初期不良交換はしてくれないだろうなー。修理扱いは面倒くさそうだなー。ちょっと気合いを入れて交渉してみようかなー。

Published At2005-02-07 00:00Updated At2005-02-07 00:00