appjet

AppJet: App Directoryチェックしたけどおもしろいのない。フレームワークの紹介でよくあるsocial bookmarkつくりましたみたいなのとかがあった。

imagethiefとかつくってるjdっていうひとのがアイディア的にはおもしろかった。storageには画像もそのまま詰め込める。


tumblr timelineのやつ、パラメータとれるようにした。dispatchPatternっていうやつでパラメータを扱う。使い勝手悪い。chart APIの円のサイズ、どうも書き方間違ってるっぽくて、数に応じて大きくなってない。めんどくさくて調べてない。


tumblrは別にどうでもよくて、任意のサービスで誰がいつそのアクションを起こしたのかを視覚的に見たいことがよくあって(見たいというよりは、そういうことがお手軽にできる手段がないことに不満がある)、だからtumblrのpostされた時間を取り出している部分を、ひとつの関数で作る。時間の配列を返す。なんでもRSSのアプローチでいける気もする。E4Xないと厳しい。

そこでbrazilさんにTwitter / 33: @ku 外部においてwgetすればっていうのを思い出して、その関数を外においてevalして時間を得るようにしたら、タイムラインを作るっていうアプリケーションの上に、プラグインのようなものを別に管理されているページ上に書いて作れる。たとえば、del.icio.usでブックマークがpostされた時間を配列で返す関数を作る。それをなんらかの方法でベースになるタイムラインを作るアプリケーションに登録する。データを取り出すためのサービスを提供しているURLを探すためのDNSみたいなのを作って、ベースのタイムラインを作るアプリケーションは、渡されたパラメータをキーにしてデータを取り出すサービスを提供しているURLを探すためのDNSに問い合わせをする。URLが帰ってくる。そのタイムラインのアプリケーションはそのURLからjsのコードを読み出してその関数を実行する。結果を得る。ちょうどデスクトップアプリケーションにプラグインを追加して仕えるようなかんじで、DNSプラグインを登録して、呼び出せば、タイムラインのアプリケーション本体がなにか対応したりすることなく、del.ici.usでのタイムラインも表示できるようになる。


セキュリティ。PHPでもやろう思えばできた。リモートからincludeしたやつを実行。SITEINFOがXPathだったのがjsのコードになっただけ。安全には実行できない。でも"安全"ってなんだろう。storageに入ってるデータを読み書きされてデータが壊れたり、もれたりすること、無限ループ、へんなリクエストを出されること。
wgetでとってきたコードをevalするとき、当然外部も内部も区別なんてない。ただevalする前に

wget = function () {} 

なんてして呼ばれたくない関数は潰せば呼ばれなくなる。それで無限ループ以外は回避できそうな気もする。ほんとにできるかは未検証。



Firefoxを動かすのに使うjavascriptがサーバでも動くというところがningとはちがうところで、そこに何かあったりする気がするけどまだなにも思いつかず。


aaronっていうひとはなかのひとみたいなんだけど、つくってるものがふつうで、appjetだとこうやっておかしなものがつくれるぜ!!っていうかんじというわけではないのかなとおもった。cloneはできるけどそれだとURLがかわっちゃう(ブログラム的にはインターフェイスの名前が変わっちゃう)のでappjet自体はwikiとは違うと思った。ひとつのものがみんなで書き換えられるからこそ価値が出て、コピーを作るともういちどDNSみたいなものでそれを一元的にアクセスする方法が必要になって、みんなでひとつのものを自由に変えていきたいならそのDNSみたいなやつがやっぱりwikiになるしかない。cloneじゃできない。クラスとインスタンスの違いかとも思った。よく考えてない。インスタンスはポインタで繋げておかないとどこにあるのかわからない。





E4X

changelog

E4X is disabled in the JavaScript interpreter.

って書いてあった。