Home > 2009年06月

2009年06月

iPod touchでnavitimeにアクセスできない

UserAgentを見てるらしく、
touch.navitime.co.jpに転送されて、
「去年の12月で終了しましたよー」って言われる。

ちょっと前まで普通にPC用サイトにアクセスできた気がするけど勘違いか?

とにかく早めに解除されることを祈ります。

やっぱUAで分けちゃうのはイマイチかな、と改めて思いました。
(ユーザに選択肢を残しといて欲しい。touch/iPhoneならJS普通に動くからPCサイト使えるんだし。)

ブラウザが落ちた時textareaの内容が消えちゃうのがショックなので、cookieに保存しておくという無謀な試み

自作JSエディタのテストがてらブログを書いてたら、
Firefoxが落ちた。(3になってからIE6レベルに落ちるようになって困ってます…)

当然textareaにしたためていたブログの内容は消えちゃうわけです。

これはショックということで対策を考えました。

  1. アドオンでsqliteに保存(出来るのか?)
  2. location.hashに保存
  3. cookieに保存

1が出来ればいろんなサイトに使えてよさそうだけど、ハードル高いので今回は除外。
(Jetpackで作れるようになるとありがたいなー)

2は…トリッキーなのでやめときましょう。

まぁ3が妥当ですねー。じゃ、早速。

テキスト圧縮

クッキーの最大サイズは4096バイトらしいので小さくしなくちゃいけません。

そこで、高度な JavaScript 技集からJSでzipできちゃうスーパーライブラリを拝借してきます。

var value = textarea.value;
var data = utf16to8(value);
data = zip_deflate(data);
data = base64encode(data);

とやれば、そこそこサイズを小さくできます。

ちなみに

var data2 = base64decode(data);
data2 = zip_inflate(data2);
data2 = utf8to16(data2);

で戻せます。

Cookieに保存

Cookieへの保存はjquery.cookie.jsで行います。

保存のタイミングはエディタのイベントと合わせてtextarea.onkeyupにします。
(onchangeはJSからの変更の時に発生しないので使ってない)

最後にこれが一番重要ですが、上記の通りcookieにはサイズ制限がありますので、
保存する前に長さをチェックし、(余裕を持たせて)4000バイトより大きければあきらめることにします。

これをまとめると以下のコードになります。

editor.keyup(function() {

	var value = this.value;
	
    	var data = utf16to8(value);
    	data = zip_deflate(data);
     	data = base64encode(data);

	var size = data.length;

	if(size <= 4000) {
		$.cookie('t', data, { 'expires': 1 });
	}
	
	$('#byte').val(size);
	$('#byte2').val(document.cookie.length);
	$('#cookie').val(document.cookie);
	
});

デモはこちらから。

textareaの内容をcookieに保存

以上、どう考えても実用には耐えないと思いますが…。

記事のsummaryを書くのを止めました

ネタバレどうのこうのより、
自分で記事書いてるとき何かつまんなくなるという、
致命的なデメリットがあることが判明したので。

そもそもタイトルでわかるようにするのがベストだろうし。

※ あと、タイトル→本文を続けて文章にするというスタイルを使えないのが
  一番のストレスでした。

OP initiated(っていうか第三者initiated?)でOpenID Launcherなるサービスを作ろうとした

summary

OP initiatedを利用すれば、
「このRPにこのOPでログイン」
っていうボタンが作れるんじゃ?と言う話。

OP-Initiated Flow(2) - r-weblifeの下記の部分を読んで、

■ 今回やってみて気づいたこと

『OP側の実装はそんなに大変ではなさそう』

   1. return_toを知る
   2. Statelessモードの認証要求を自分自身のエンドポイントに送信
   3. OP駆動のときだけRP確認画面を省略?

「RPのreturn_toを調べて、statelessなリクエストをOPに送りつければ、
指定したRPにログインされられる」という当たり前なことに今さら気づいた。
(第三者initiatedとでも言っておきましょうか・・・)

というわけで、RP一覧+このOPログインボタンを並べたランチャー的なものを作れば、
OpenID普及に一役買えるのでは…なんて思って作ってみました。

OpenID Laucher

結果は…見ての通り惨敗です。

OpenID - Wikipediaの一覧を上から試していってたんですが、
認証失敗しまくりで心折れちゃいました。

そんなこんなで今までの作品の中で一番と言っていいほど、
ものすごく中途半端な状態での公開となりました。

return_toをもっと簡単に調べれる時代が来たら、再挑戦したいと思います。
※ 手動で調べてたらかなり体力かかりました^^
  XRDSから機械的に取ってくれば楽なんだろうけど、
  そのXRDSを返してくれるURLがわからんから結局人力調査が…

追記 2009/06/07 14:00

わざわざreturn_to調べてOPに送り付けなくても、
RP側のOpenIDログイン用のリクエストを叩けばよかったのか…?
(JanRainでいうtry_auth.php?~みたいなの)

追記 2009/06/10 21:00

OP駆動→OP initiatedに改めました。
業務連絡、OP initiated と言う言い回しで!

追記 2009/06/11 23:00

タイトルミスってました。

[メモ]ResutfulDB、OP駆動

今日のお気に入り。

MOONGIFT: » CouchDBを使ったチャットシステム「Toast」:オープンソースを毎日紹介
RESTfulなDB。おもしろい。

その他参考
Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とインストール


OP-Initiated Flow(2) - r-weblife
最近気になってるOP駆動。OpenIDを使ってスムーズなSSO。JALとかこういう実装なのかな?

PHP OpenID Server(OP駆動ログインページ)

RPのreturn_toを指定して、Statelessモード(Associationなし)で自分(OP)にログイン要求する。

http://r-weblife.sakura.ne.jp/server/server.php/OPinit?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.sreg.required=nickname%2Cemail%2Cfullname%2Cdob%2Cgender%2Cpostcode%2Ccountry%2Clanguage%2Ctimezone&openid.realm=http%3A%2F%2Fr-weblife.sakura.ne.jp%2F&openid.mode=checkid_setup&openid.return_to=http%3A%2F%2Fr-weblife.sakura.ne.jp%2Flibraries%2Fphp-openid-2.1.3%2Fexamples%2Fconsumer%2Ffinish_auth.php%3F&openid.identity=http%3A%2F%2Fr-weblife.sakura.ne.jp%2Fserver%2Fserver.php%2Fidpage%3Fuser%3Dtestuser&openid.claimed_id=http%3A%2F%2Fr-weblife.sakura.ne.jp%2Fserver%2Fserver.php%2Fidpage%3Fuser%3Dtestuser

sregなしでも(当然)動く。

http://r-weblife.sakura.ne.jp/server/server.php/OPinit?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.realm=http%3A%2F%2Fr-weblife.sakura.ne.jp%2F&openid.mode=checkid_setup&openid.return_to=http%3A%2F%2Fr-weblife.sakura.ne.jp%2Flibraries%2Fphp-openid-2.1.3%2Fexamples%2Fconsumer%2Ffinish_auth.php%3F&openid.identity=http%3A%2F%2Fr-weblife.sakura.ne.jp%2Fserver%2Fserver.php%2Fidpage%3Fuser%3Dtestuser&openid.claimed_id=http%3A%2F%2Fr-weblife.sakura.ne.jp%2Fserver%2Fserver.php%2Fidpage%3Fuser%3Dtestuser

JavaScriptでよく使う書き方。 - こせきの技術日記
正規表現リテラルは静的。これははまりそう。

JavaScriptで起こりがちなよくあるミスを早期発見する - 素人がプログラミングを勉強するブログ
Firebugでデバッグ支援。オブジェクト末尾のカンマはFirefoxだと動いちゃってわかりづらいので、警告してくれると助かる。

Home > 2009年06月

Page Top