« 2005年04月 | 過去ログ一覧 | 2005年06月 »

2005-05-06 (Fri)

ScrapMemo

KamiWiki ってのを触ってみたら、WEB上のメモ取り環境も結構使いやすく出来そうジャンって思ったので、今まで使っていた RandomNote の構想を元にして JavaScript メインで作ってみました。

これ http://espion.just-size.jp/files/js/smemo/

データは全て XML で管理するようにしました。今回始めて XML を使ってみたので、根本的に誤った事をしているかもしれません。もし変な事に気が付いたら、教えて下さい。

一応 Wiki の文法が使えます。ここの処理は完全に独立しているので、自分用の好きな文法を作ったりするのも簡単なんじゃないかと思います。ベースは hail2u.netPure JavaScript Wiki Like Formatter です。作者の kyo さんには快く使用の許可を頂きました。感謝です。

フォーマッタが Pure JavaScript なお陰で、プレビューを見ながら編集する事が出来ます。結構便利です。

このスクリプトも Ajax な感じで作ったので、画面遷移無しで大量のデータを取り扱えます。個人用のメモがどの程度の規模になるのか想像出来ませんが、4MBくらいのテキストデータではまだまだ快適に扱えるようです。

JavaScript が使えない環境や、古めかしいブラウザでは表示出来ませんが、データをただ表示するだけのビューワ的なものは簡単に作れそうな感じなので、そういう CGI を経由して補助的にアクセスするというのもアリかもしれません。

△トップ | コメント (0) | トラックバック(0)

2005-05-12 (Thu)

Firefox でのローカルキャッシュと If-Modified-Since

ScrapMemo は静的 XML ファイルを扱ってるわけでして、そうなると、やっぱり更新時刻のチェックとかローカルキャッシュの事も考えないといけないわけなので、XMLHttpRequest と If-Modified-Since に書いてある事を参考にして処理を組み込んでみました。

で、apache のログを確認しながらちゃんと動くか見ていたのですが、IE では期待通りに動作してくれるんだけど、Firefox では稀にサーバへ全く何のリクエストも送信しなくなってしまう事があり、なんでだろうと調べてみたら、ローカルキャッシュの Expires の時刻を過ぎない場合はサーバへはアクセスしないでローカルキャッシュから読み込むと言う動作をしている事がわかりました。

しかも、どうやら Expires の時刻は、Last modified を元にして計算しているようで、あまり頻繁に更新されないファイルに関しては期間が長めになるようです。

普通は気にならないかもしれませんが、私はかなり神経質なので、自分でファイルを更新した事がわかっているのに、ローカルキャッシュから読み込むなんて許せません。動的なシステムなんだから、やっぱ更新はすぐ検知して欲しいものです。

こんな時 HTML ファイルだったら、META タグとか使って「キャッシュしないでね」とか言うヘッダを入れればいいのか?と思って、XML で同じように出来るかどうかを調べてみたんですが、全然わかりません。なかなかわかんなくて、いい加減ムカツイて来たので、.htaccess で Expires ヘッダの処理を制御する事にしました。

以下は、Apache2 で mod_expires を有効にして、ExpiresByType が使えるようになるまでの流れです。

まず、mod_expires を使えるようにします。多分標準のモジュールなので、a2enmod expires とやれば有効になります。

.htaccess で mod_expires のディレクティブが使えるようにします。apache2.conf とかどこかそこらへんで、AllowOverride に Indexes を追加します。

適当なディレクトリに .htaccess を設置します。Expires の値を Last Modified + 1時間に設定する場合はこんな感じ。書式については ドキュメント 参照。

ExpiresActive On
ExpiresByType text/xml "modification plus 1 hours"
ExpiresByType application/xml "modification plus 1 hours"

自分の所の localhost では、text/xml じゃなくて、application/xml だったので、両方指定してます(これで結構はまった)。

Expires の値を小さくすると、Firefox でも IE と同じように毎回サーバへリクエストを送信するようになりました。ちゃんと If-Modified-Since の処理をさせているので、ファイルが更新されていない場合は 304 ステータスで処理されるようです。

とりあえず確実に更新が検知出来るようになりましたが、こんなやり方をしても良いものなの?!

△トップ | コメント (0) | トラックバック(1)

2005-05-16 (Mon)

Greasemonkey 用スクリプト

Greasemonkey は、WEBサイトの閲覧時に特定の JavaScript を自動的に実行するようにしてくれる Firefox 用の拡張です。

これを使うと、例えば全ての target=_blank を無効にしたり、2chの ime.nu リンクを無効にしたり、スクリプトを用意しさえすれば、どんな事でも可能になります。

既存のスクリプトに関しては、Firefox まとめサイト内のページ が詳しいです。

というわけで、私が作ったもの。

特に注意書きがない限りは、全てのスクリプトは BSD ライセンス です。

AccessCountBar (2006-12-27更新)
ウェブブラウジングの履歴みたいなものを視覚的に表示する。
livedoorClipRelated (2006-10-03更新)
livedoor clip にクリップ追加時にそのサイトの注目のクリップも一緒に表示する。
HatebRelated (2006-10-03更新)
はてなブックマークにブックマーク追加時にそのサイトの注目のエントリも一緒に表示する。
livedoorReader No Midoku (2006-09-28更新)
livedoorReader のHTMLタイトルをフィードの未読数のみの表示にする。
Show Keybind In Gmail (2006-09-28更新)
Gmail のショートカットキーを表示する。
MixiFixer for manage_friend (2006-07-26更新)
mixiマイミクシィ管理 を使いやすくしてくれる。
Google Calendar Wheel Viewer (2008-04-17更新)
Google Calendar で、マウスホイールを使って日付の範囲を移動出来るようにしてくれるスクリプト。
Hide Google Calendar Navi (2006-09-29更新)
Google Calendar の左側のナビゲーションの表示を切り替える機能を追加するスクリプト。
Google My Cache (2006-07-27更新)
表示したページを全て Google Bookmarks に登録する。
Highlight Hatena Graph Table Header (2006-02-21更新)
はてなグラフ のデータ編集画面で、マウスカーソル位置のセルの「日付」と「グラフの種類」をハイライト表示する。
Deny Rakuten News (2006-12-24更新)
楽天市場 の注文確認画面のメルマガ購読のチェックを自動オフにする。
Last Visited Checker (2005-05-31更新)
指定したページに訪問時刻の Cookie をセットして、次回訪問時に前回訪問時の時刻がすぐにわかるようにする。
Mixi Organizer (2006-05-17更新)
mixi 上で、リンクの色分けで未読管理、等をしてくれるようにするスクリプト。
Popup Alt (2006-05-09更新)
画像の属性の一つである ALT をポップアップ表示してくれるようになるスクリプト。

* 宣伝

ISBN:4798015350:images

Greasemonkey の解説書を書いたので、ここに宣伝させてもらいます。内容については、「「Greasemonkeyスクリプティング TIPS&SAMPLES」と言う本を書きました」と言う記事に書いてあるので、そちらをお読み下さい。

まだ本書を購入していない場合でも、書籍の サポートページ の充実ぶりは必見です。書籍内で紹介しているオリジナルスクリプトは全てここからダウンロードする事が出来ますし、他の方が作成したスクリプトも多数紹介しています。本書購入に先だってサンプル用の PDF を閲覧する事も出来ます。Greasemonkey のユーザなら、一度は見ておいた方が良いでしょう。


△トップ | コメント (0) | トラックバック(4)

2005-05-17 (Tue)

Greasemonkey 用スクリプト - Mixi Organizer

※Greasemonkey は Firefox 用の拡張機能です。詳しくは Firefox まとめサイト で確認して下さい。

リンクの色分けがしたい人は mixi を見やすくする userContent.css に書かれている方法を使った方が安全です。

このスクリプトをインストールすると、mixi で訪問済みのリンクを色分けして表示してくれるようになり、既読か未読かがすぐにわかるようになります。

日記が外部ブログの場合に、リンクの下線が通常のものとは異なる線になります。

「日記コメント記入履歴」と「コミュニティ最新書きこみ」の欄は、新着書き込みがあった場合に自動的に未読状態になります。この機能はオフィシャルで提供されるようになったので、廃止されました。

最新日記一覧ページにある過去の日記一覧を見るための本マークの機能を、トップページ(home.pl)にも追加します。

» 続きを読む...

△トップ | コメント (10) | トラックバック(1)

Greasemonkey 用スクリプト - Popup Alt

※Greasemonkey は Firefox 用の拡張機能です。詳しくは Firefox まとめサイト で確認して下さい。

このスクリプトをインストールすると、画像の ALT 属性をマウスでポップアップしてくれるようになります。通常は全く必要の無いものですが、まれにこの情報がポップアップする事を前提に構成しているサイトが存在する為、ポップアップした方が便利な場合があります。

Popup ALT Attributes ほどの機能はいらないけど、ALT をポップアップしたいと言う人にお勧めです。

追記: GreaseMonkeyUserScripts に ALT Tooltips てのが登録されていますね。こういう単純なものは既に誰か作ってるかぁ。

» 続きを読む...

△トップ | コメント (0) | トラックバック(0)

2005-05-21 (Sat)

Ajax で Wiki もどき

ScrapMemo に、普通の Wiki っぽくページ名がそのページへのリンクになるような処理を組み込んでみました。

http://espion.just-size.jp/files/js/smemo/wiki/

ようするに、記法とかを使わないでも特定のページへのリンクになる、みたいな。

やっぱ WikiFarm っぽい機能を採り入れて、ちゃんとまとめたいものは Wiki mode を使って、その他は検索メインで管理するっていう方法が出来たら結構便利かもしれない。

△トップ | コメント (0) | トラックバック(0)

2005-05-31 (Tue)

Greasemonkey 用スクリプト - Last Visited Checker

※Greasemonkey は Firefox 用の拡張機能です。詳しくは Firefox まとめサイト で確認して下さい。

指定したサイトの、前回訪問時の時刻がすぐにわかるようになります。

頻繁にサイトの巡回をしていると、前回自分が見に行った時の時刻が思い出せなくて、どこまで読んだのかわからなくてムカツク事はないですか?私はあります。だから、前回訪問時の時刻を記録しておいて表示してくれるスクリプトを作りました。

このスクリプトをインストールすると、Included pages で指定したサイトにアクセスした際に Cookie に時刻を保存し、次回訪問時にその時刻を表示してくれるようになります。画面の左下にひっそりと出るので邪魔になりません。

前回の訪問から10分以上経過していなければ、訪問時刻は更新されません。

前回の訪問だけでなく、前々回の訪問時刻も表示されます。

Cookie を使って訪問時刻を管理しているので、Included pages を * にして、全てのページを対象にすると Cookie が最終訪問時刻のデータばかりになってしまうので、あまりお勧め出来ません。

Cookie には、「LastVisited1」「LastVisited2」として保存されているので、手動で削除する場合は参考にして下さい。

ちなみに、私は Included pages に http://1470.net/mm/* を指定しています。新着リスト を良く見るのですが、似たような登録が並んでる事も多く、すぐにどこまで見たのかわからなくなってしまいます。でも、これからはこのスクリプトのお陰でそんな心配とはおさらば出来そうです。

» 続きを読む...

△トップ | コメント (0) | トラックバック(0)

 
Copyright (C) Kyosuke Takayama, Some rights reserved.