サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
パリ五輪
yssk22.hatenadiary.org
CouchApp は普通のファイルシステム上でアプリケーション開発をして、couchapp push コマンドをたたいてデータベース上にアプリケーションをコミットします。 しかしこれ、開発中の時、頻繁にコンソールとエディタを行ったり来たりするので面倒なのです。C-x C-s (保存) したら勝手にpushしてほしい。 ということで、ファイルの変更を検知して自動的にcouchapp push をかましましょう、という話。OSX 前提です。 OS X の FSEvent API を使うと、ディレクトリ単位でファイルの変更を検知できる。 Ruby Cocoa を使えばFSEvent APIのラッパーがあるので、意外と簡単に実装できる。 というわけで書いてみた。といっても、RubyCocoa 初めて使って、Example からコピペしただけ。。。 couchapp のディレクトリに .coucha
書いている最中に下書き保存して休憩したら、下書きが消えたので絵だけ復元しつつ。。。やる気レス。 前回は http://d.hatena.ne.jp/yssk22/20090722#1248283792 の辺りで、partuza で大体 /people/{guid}/{selector}/{pid} の例 がどう取り扱われるかわかったので、@me とかその辺をどう解釈するのか、っていうことを追求しています。 すなわち、partuzaとshindigのソースコードからOpenSocialの認証・認可周りで何やってんの?っていう話です。 src/social/servlet/ApiServlet.php から。 // **** // src/social/servlet/ApiServlet.php // line: 102 // **** public function getSecurity
OpenSocial の RESTAPI には @me というパラメーターがある。これは、「認証済みクライアント自身」をパラメーターとして渡すときに用いるようだ。 例えば、はてダの場合、yssk22 のURIは http://d.hatena.ne.jp/yssk22/ であって、これはクライアントのFirefoxが認証済み(Cookieを発行済み)の状態だろうが、未認証だろうが、常に http://d.hatena.ne.jp/yssk22/ で一意である。 ところが、OpenSocial のスタイルのAPIだと、yssk22 として認証済みのクライアントであれば、http://d.hatena.ne.jp/@me でアクセスしてもよいことになる。つまり、URIが、「認証に関しては」コンテキストを持つのである。 で、この辺のコンテキストの解決はどうやるの?というのがこのエントリの話題。
という検証。 http://d.hatena.ne.jp/yssk22/20090615#1245080242 の続き。CouchDBがインテリジェントにプロセスハンドリングをしてくれるのであれば、External Process に対して連続してリクエストがきても、前のプロセスが終了していなければ、別途プロセスを起動して処理する、とかそんなことをしてくれるかなー、という淡い期待を抱いて。 結論。シングルプロセス。期待ははずれました。つまるところ、普通のWebのURIエンドポイントとして使っちゃ駄目。バッチ処理のリクエスト先とした方がいい。 続きを読む OpenSocial Containerのサーバー側の実装にCouchDBを使おうとすると、JSON-RPCを何とかする必要がでてきます。Shindig のクライアント側(JavaScript)の実装では、JSON-RPCを使っているからで
お時間いただいて話した内容の資料あげときました。後半すっかり話すの忘れてましたが、CouchDB OpenSocial って楽しいと思うんですよ、はい。mixi とか goo Home とか iGoogle ってサイトまるごとレプリケーションできないから、面倒なんじゃー、とか。 http://www.slideshare.net/yssk22/couch-db0623-by-yssk22 目下の使い道は、オンラインゲームのコミュを立てたときに、続編が出たらレプリケーションを唱える、とコミュニティが複製されて、でもちゃんとゲームは分かれていて、とか。。そんなことを考えていたら、FF XIVが、FF XI のコミュニティは引き継ぎたいとか、そんな記事がでていて、これは売れる!と思ってたり。いや、FF のオンラインはやったことないんですけどね。 とりあえずあとこの辺もリンク。 http://gr
認証の話は別の媒体で書くとして、実際どうやってログイン処理をやるの?という話。CouchApp を入れれば、とりあえずOKです。 CouchDBの認証はbasic認証で提供されておりますが、認証ダイアログを出す attemptLogin(win, fail) と 現在認証がすんでいるかどうかを判定する loggedInNow(loggedIn, loggedOut) という2つのメソッドが用意されています。 http://github.com/jchris/couchapp/blob/1d6b96a0535364c61b356d68e08161581339603f/vendor/couchapp/_attachments/jquery.couchapp.js attemptLogin : function(win, fail) { // depends on nasty hack in b
http://thinkingconcurrently.com/2009/05/21/running-bespin-on-the-couch-pt1.html# Railsアプリをブラウザで開発、とかあったと思うんですが、そういうのには全く興味がありませんでした。でも、これは違います。 なぜなら、また一歩、Lotus Notes に近づいているから(違。 というわけではなくて、普通にレプリケーションやリビジョン管理の仕組みを使うと配布プラットフォームもなるのです。 配布プラットフォームになるということは、アプリケーションストア的なこともできまっせ。こんなことをやってみたい人は是非私も誘ってください(ぉぃ。 アプリケーション配布にオーバーレイネットワーク、というのはなんか技術的には微妙そうな気はするんですけれど、それがマーケットとして機能するなら面白そうだと思ってます。って、なんか面白そうだ
適当に mod_proxy で余っているCouchDB用のVMを で〜たべ〜すあずあさ〜びす(棒読 で公開してみる。CouchDBのインストール面倒だけれど使ってみたいよ、な人は適当に遊んでいただいてよろしいかと。 http://relax.webjourney.org/_utils 何も設定していないので、CouchApp で放り込むなり何なり。誰でもいじれるので、当然上書きされたら、適当にロールバックすればいいと思います(compactionはしません)。データベース消されたら終わりだけれど。 とりあえず、当面の目標は Relax Readerおいて、セキュリティ設計していくことですかね。 で、まずCouchAppでpushしてみたところ、最近のApache mod_proxy だと AllowEncodedSlashes On にしておかないと、%2Fを_idに含む場合にうまく動かな
http://blog.livedoor.jp/habuakihiro/archives/65219163.html 羽生さんのERDレッスンとかSQLドリルなどにはかなりお世話になったので、ものすごく興味深く拝読させていただいた。 物心ついたとき?にはRDBMSが当たり前?になっていた時代*1に生まれたこともあっていろいろと思うところがある、ので感想を書き留めておきたい。 これの何が不便かというと、最初に上限を10とかにしてて、たまたまある売上の明細が11件になってしまった場合に格納できないということになるのです。 これは、Excel で売り上げ管理用のフォーム付きシートを作ってみたものの、Excelの表は固定幅なので自由がきかず、Accessを買ってみた、という感覚でしょうか。Access を RDBMS というと怒られるんだけれども、Excel よりはリレーションの概念に近づけるか、
昨日の段階で、CouchDBに登録されているJSONのFeedを表示することはできるようになったので、今度は、CouchDB上でFormを作って巡回するフィードのURIを登録できるようにする。 CouchAppにおいて、アプリケーションサーバーのごとく、ドキュメントから動的にページを生成するには、デザインドキュメントのlists, showsなどを用いるが、それ以外に、_attachments に添付ファイルとしてHTMLをおいておけば、静的なページに対応するのは容易だ。しかも、昨今のjQueryパワーを使えば、十分に動的なページになる。 デフォルトで作成される _attachements/index.html は次のようになっている。 <!DOCTYPE html> <html> <head> <title>Generated CouchApp</title> <link rel="st
Planet CouchDBでCouchDB 0.9.0を使った実践的な例が紹介されています。すばらしい! 詳細はリンク先を見ていただくとして、感想。 Django + PostgreSQL + Ngixn => CouchApp(CouchDB アプリケーションを作るためのJSライブラリ) + Ngixn って、Ngixn って聞いたことあるけどこんな風にプログラマチックにproxyをかけるのね。そりゃ、Djangoいらねぇよ。 っていうか、 Ngixn Configuration がアプリケーションサーバーのコードに見える。Proxy Pass / Rewrite なんて、ActiveRecord#find()に見えちゃうんだけれど。 Email は、external process で MapReduce結果を監視する。ちょうどGW中に似たようなモニタープロセスをRubyスクリプトで
http://www.opensocial.org/page/specs-1 (のリンク先) 超要約。多少意訳(誤解?)しています。間違いがあったら教えてください。 OpenSocial はソーシャルアプリケーションのAPI の共通化が最終目標。 OpenSocial の実装サイトはOpenSocial Containerと呼ばれ、OpenSocial APIを使用して実装されたアプリケーションを動作させることが可能である。 Container 環境というコンテキスト内で、OpenSocialで定義されたJavaScript APIを呼び出すことができる (Container = HTML ページ + 広告を非表示にする もっと読む コメントを書く RESTful Protocol Specを眺めていて、そういえば、WADL*1ってどうなったんだろう、と思ってみたら、終わってますかね、これ
http://couchdb.apache.org/downloads.html 気がついたらリリースしていた。個人的な目玉は以下。 Document validation functions in design documents. Show and list functions for rendering documents and views as developer controlled content-types. いや、これ、Application Server いらねーぜよ、という宣言をしたようなもので。HTMLを返せるようになったのは、すばらしいfeatureです。Rails 3 が出る前に、off Rails しそうな勢いで。 まだ試していないけれど、http://github.com/jchris/couchapp/tree/master あたりを使うと、幸せにjQue
WebJourney用に新しく開発したCouchDB用のデータマッパー"CouchResource"ですが、ちゃんと公開しないとガラパゴスになりそうなので、RubyGem として利用できるようにしよう、と決心をして作業を始めました。 github のアカウントは作成済みである github でリポジトリを作る方法は知っている RubyGem の作り方は知らない 上記スペックの人間が、jewelerというgemの存在を知り、試用してみたら、[これはべんり]だったので記録しておきます。 続きを読む http://gems.github.com/ より。 gemspec のバージョンがあがったらgemをリビルドするよ! とあるので、gemspec の push とリリースはほぼ同じ作業と思った方がよいようだ。ということで release タスクというのがあるわけですね。
「ゴミ箱ちゃんと確認した?」とつっこみを受けて、、あーなるほど、、ゴミ箱にあったという罠、お騒がせしてすいません。。。orz。しかし、気になるリンクもあったので、エントリは修正せずに、以下にまとめます。厳密な検証はしていません。 確認できたのは以下の動作です。 Gmail の Google Docs で開くをクリックするとgmailユーザー(a@gmail.com)がオーナーとしてドキュメントが作成され(ファイル名=ドキュメント名だった)、URL(http://spreadsheets.google.com/ccc?key=hogehoge&gmrcpt)が割り当てられる。 上記 googleからGmail自動送信のメールがa@gmail.com宛に届き、ドキュメントへのURLである http://spreadsheets.google.com/ccc?key=hogehoge&gmrcp
http://d.hatena.ne.jp/starpos/20090214/1234629921 ブクマコメントにしようと思ったが整理をかねて1日記エントリで。いやー、データベースとしての Lotus Notes/Domino はニッチだなぁwww また,せっかく replica があるのに,読み込みの負荷分散もデータベースシステムとしては現状では意識していないのではないかと思われます. そうですね。replication で 負荷分散 を実現するためにはpartitioningに対する何らかのポリシーが必要で、その辺はMLを眺めていてそろそろ検討/実験しようか、といった感じです。とりあえず現状はmod_proxy_balancer で、という感じでしょうか(L4でバランスさせるのは結構つらい。 最近のMLの話題を拾うと、Clustering/Partitioningについては以下が参考
jTemplate を使うにあたって最低限JavaScript側で使いたくなる三つのメソッド。。最初の二つは実装した。 最後のstrftimeは、正直実装面倒くさいので、探したらあった。が、Array に対して for(var i in array) をしている部分があって、Array.prototype が汚染されていると使えないライブラリなのでパッチを作成した。作者に送、、、る方法がないんだけど*1。 以下コードメモ *1:作者のページ、XHTMLがパースエラー、、ソース見てもそれらしきリンクないなぁ... 続きを読む RESTのクライアントが効率的な1次元の順序付き(前,次が定義された)集合を走査するためには(例えばPagination)、、、、 a) GET したリソースのサブセットが何件あって、b) スーパーセットは何件あって、c) サブセットはどこにいるのか(1次元の集合であれ
しばらく読みふけっていきます。fastladder カテゴリで。 http://fastladder.org/download.html にあるソースの 0.2.0 MacOSX のもの。 読み終わったときにはウィジェットができるような気がします。 まずはデータ構造から。といってもmigrationファイルを読むのはアレなので, $ rake db:create $ rake db:migrate $ railroad -i -l -m -M | dot -Tpng > doc/models.png とおもむろにモデルを図にするとわかりやすい。ということでついでに添付。 FeedとItemはそのままRSSなりATOMなりのFeed文書とその中のItemということ。FaviconとCrawlStatusはFeedと1:1なので一緒に観た方がいい。わざわざテーブルを分けている理由は分からなくも
Fixtureも変わっています。大きくは、関連オブジェクトをidではなくhuman readableな名前で記述できるようになった点ですが、このエントリは関係ありません。隠れた変更点?として、fixtureのキャッシュ機能が追加されています。 続きを読む 2008年になりました。カウントダウンTVを見ながらコーディングをしつつ年を越えました。 とりあえず昨年の積み残しで、実際のコードで1.2.3ベースのコードを2.0対応させています。とりあえずは、トップページの表示に問題がないレベルまでいってから rake test:unit かまそうと思っています。 environment.rb が変わっています。こんな感じで、config.action_controller.session = {:session_key => .. , :secret => .. } をつけないと怒られます。 cha
ここにはもうない もうすぐ30歳にもなるし はてなもはてダなのかはてなブログなのかよくわからんし ブログを書く頻度がとてつもなく下がってるし でもSphinx/ReSTで書いたメモは大量にあって公開するのもやぶさかではないし 最近英語で技術文書を書くのが当たり前になってしまったのでもっと鍛錬しないとダメだし ということで、これを気に移動させることにしました。 (2014/03/08 追記) 気がついたらさらに2年たってて CloudFoundry からも Node.js からも離脱しました。 ということで、一からGAE+Goで実装したので今度こそ移転(笑 http://rakugaki.speedland.net/yssk22/ 昨日のことになりますが。github.com でホストされているプロジェクトのトラッキングツールを作って公開しました。 http://yssk22-cf-trac
このページを最初にブックマークしてみませんか?
『Web屋の人の日記 || WebJourney 開発ログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く