タグ

ブックマーク / yssk22.hatenadiary.org (20)

  • 手始めにMembase調べてみた - Web屋の人の日記 || WebJourney 開発ログ

    Python Hackathon で BigCouch の発表をする予定だったんですが、Membase と CouchOne の合併をうけて、、、Membase のほうに俄然興味が映ってしまったのでその辺をささっと調べて発表してきました。 内容は薄いです... membaseView more presentations from yssk22. が、、、、もうね、 StrategicSqilte3 とかどの辺がStrategicなのかと小一時間問い詰めたいぐらいorzな気分です。 Moxi Proxy とか vBucket Client とかそれなりにいい感じでなので、仕事でも使おうかなーって思ってたんですが、、、すまん、SQLite3 の運用設計なんてしたくないから使いません*1。 *1:この手のセッション系KVSで重要なのってデータのExpirationとそれに伴うメモリ/ディスクか

    手始めにMembase調べてみた - Web屋の人の日記 || WebJourney 開発ログ
  • 絶賛開発中 #2 - Web屋の人の日記 || WebJourney 開発ログ

    とりあえず、rsync すらめんどくさくなったので githubに登録しておく。 yssk22/sunrise - GitHub アプリは CouchDB のレプリケーションでコピーできるけど、コンテナがまだその辺未対応なので。example はこれから作ります。(今あるヤツはさすがにgitにのっけるには的な...) これを書きながら、貯まってきたノウハウは書籍にまとめつつあります。今、既存のJS資産を利用する的な話を書いているところで、 https://github.com/yssk22/sunrise/blob/master/lib/sunrise/vendor/php.js とか見ると、24500行もある、JavaScriptによるPHP関数の実装なんですが、元々クライアント向けに作られていたものを、がっちゃんこして node.js で使えるようにしたものです。メモリに乗っかるので、

    絶賛開発中 #2 - Web屋の人の日記 || WebJourney 開発ログ
  • 絶賛開発中 - Web屋の人の日記 || WebJourney 開発ログ

    今こんなのを作っています。 exports.setup = function(site, done){ site.all('/posts/admin/*', oauth.requiredWith('twitter')); site.install('posts', function(app){ var posts = app.model; site.get('/', $.title('Home'), posts.byTag('news'), $.render('index.ejs')); done(); }); } node.js とCouchDB で動く、アプリケーションコンテナ的な何か。 フロントエンドからサーバーサイド、果てはデータベースまですべてJavaScriptでやってやろーじゃん、的な勢いで。 普通にアプリを作るだけならCouchDBだけでもいいんですが、認証情報を持ちたくな

    絶賛開発中 - Web屋の人の日記 || WebJourney 開発ログ
    nbqx69
    nbqx69 2011/01/05
    express, cradle
  • MongoDB&CouchDB勉強会 - Web屋の人の日記 || WebJourney 開発ログ

    id:doryokujin さんが、MongoDB JPを立ち上げる、ということをお聞きしたので、「まずは勉強会、話はそれからだ。そして俺らも混ぜてくれ」ってことで一緒にやってきました。ほとんどmongoに興味のある人ばっかりでしたけどね。 まぁ、CouchDB当におもしろいところは @mkouhei さんとか @motokazu さんが発表してくれたので、私の方からは、あまりおもしろくないBigCouchの話です。 CouchDB JP & BigCouchView more presentations from yssk22. やっと(皆が普通期待するサーバーサイドの)分散DBとしての機能がBigCouchで徐々に実装されつつあるなぁ、という感じです。分散DBとしての十分な機能をもつらしいんですけどね。 ふり返ってみると、今年の3月にやったOSCは、CouchDB, MongoD

    MongoDB&CouchDB勉強会 - Web屋の人の日記 || WebJourney 開発ログ
  • 2010-11-09

    WebSocket やらない、という選択肢はなさそうなので、家で使っているtwitterボットをパッケージ化しました。 EventEmitter のサブクラスとして再定義しなおして、いろいろできるように。 $ npm install twbotで入ります。 WebSocket のサンプル作るときに使おうと思います。 ちょうどやっている最中に Twitter / cakephper: 英語のTweetを定期的に取得して、Sayに突っ込め ... というのを聴いて、実装してみた。何人か海外の人のtweetみているんだけれど、聴けばいいんじゃね?ってことで。 https://github.com/yssk22/node-twbot/blob/master/lib/plugins/say.js 受け取ったツイートを何も考えずにsayコマンドの入力に与えているだけです。 他にすべてのイベントを Co

    2010-11-09
  • 2010-10-12

    わけあって、URLを丸ごとCouchDBの添付ファイルにコピーする需要があって、せっかくなので node.js で書いてみました。 ちょっと長いのでGistにおいてます。 http://gist.github.com/622432 http://gist.github.com/622432 のコードが常に正常に動くのが node.js クオリティ。 c = c + 1; が常に保証されている (ref: http://www.gnegg.ch/2010/09/why-node-js-excites-me/) さらに ev.emit('end') の発火とイベントリスナーの実行完了までが常に保証されている (ここがびっくり) どの単位でコンテキストスイッチをしているのか、調べる必要がありそうです。

    2010-10-12
  • GData にだってアクセスできるんだぜ - 2010-09-21 - Web屋の人の日記 || WebJourney 開発ログ

    http://atnd.org/events/6359 すでに満杯なのですが、そして、今年からばりばりPython仕事をするようになったのですが、それでもPython Hackathonでnode.js のハンズオンをすることになりました。 Hello World から簡単なWebアプリを書くところまで、データベースは扱うかわかりませんが、扱うとしたらCouchDB。 非同期で動くプログラムのUnitTestの書き方とか Express Web フレームワークとかその辺も広く浅くやろうかなぁと。 自分自身も、実際にコードを書く道具に使うのは始めたばかりですが。 昔々、関数型言語をはじめにやったとき、こういう印象を持ちました。奥に向かって突き進んで戻ってくるような感じ。 その感覚がnode.jsでも味わえます。 node.js の場合、すべてのメソッドが非同期で実行されるので。 var f

    GData にだってアクセスできるんだぜ - 2010-09-21 - Web屋の人の日記 || WebJourney 開発ログ
  • node.jsでTwitter stream を CouchDB に放り込みつつ、ブラウザに垂れ流すアプリを書いてみた - 2010-08-22 - Web屋の人の日記 || WebJourney 開発ログ

    以前 node.jsでTwitter ChiarpUserStreamを閲覧するWebアプリを作った - 酒日記 はてな支店 を見て、おもしろいなぁ、と思っていたので、やってみました。 変更点は 単にtwitter streamを垂れ流すのではなく、一度CouchDBに放り込んで、CouchDB から MapReduce した結果をstreamさせるところです。MapReduce のストリーミングは、HadoopでMapReduce に初めて出会ったときからやりたかったので、CouchDB ありがとう。 デモアプリを http://demo.yssk22.info/twitter-couchdb-streaming においておきました。ブラウザを開きながら CouchDB に関するつぶやきをすると、リアルタイムに表示が更新されるかと思います。 以下詳細です。 インフラ構成 実際の構成は下の

    node.jsでTwitter stream を CouchDB に放り込みつつ、ブラウザに垂れ流すアプリを書いてみた - 2010-08-22 - Web屋の人の日記 || WebJourney 開発ログ
    nbqx69
    nbqx69 2010/08/23
    node.jsでTwitter stream を CouchDB に放り込みつつ、ブラウザに垂れ流すアプリを書いてみた
  • 2010-08-14

    CouchDB をメインのアプリケーションサーバーとして使っているものの、サーバーサイドで他のサービスと連携したいときにはちょっと不便さを感じてしまいます。 そういうときは、イマドキ?のWeb Frameworkの上で、CouchDBをデータベースとして扱えば良いんですが、CouchDB のアプリと密に連携する(一部の機能のためだけだから)ためには言語も同じにした方が良いだろう、ということで、node.js を使い始めています。 とりあえず、認証をtwitterに任せよう。 CouchDBでアプリ作った場合、ユーザーDB自体はCouchDBに保持されます。。これはちょっとやだ。CouchDBのインスタンス毎にユーザー抱えるとか。。。 で、イマドキ、ということで、twitter を認証サーバーとして使うんです。OAuth ができればOKってことで。 PHPとかPythonとかRubyとかJa

    2010-08-14
  • BPStudy #32 CouchDB再入門 - Web屋の人の日記 || WebJourney 開発ログ

    BPStudy32 CouchDB 再入門View more presentations from yssk22. Slideshareにアップしたものの、微妙にフォーマットが崩れたりしてしまいました。オリジナルは http://dl.dropbox.com/u/219436/CouchDB/BPStudy32/BPStudy32-CouchDB.pptx にあるので適当にどうぞ。 必要な分を全部盛りで詰め込んだらちょっとハンズオンの時間が少なくなってしまいました。 http://dl.dropbox.com/u/219436/CouchDB/PythonHackathon3/handson/_build/html/index.html に(作りかけですが)あるので、物足りなかった方はぜひお試しください。 なぜ時間が足りなくなるのか、といえば、ドキュメント指向だとかデータベースがアプリケー

    BPStudy #32 CouchDB再入門 - Web屋の人の日記 || WebJourney 開発ログ
  • CouchDB と HTML5 でMRTG的なことをしてみるテスト。 - Web屋の人の日記 || WebJourney 開発ログ

    ML115をリフレッシュして、完全にCouchDBサーバーにした。いつもLinux入れるときには適当なパフォーマンスモニタツールをいれて、いろいろ集めてほくそ笑んでいるのだが、グラフは canvas で書けるし、データベースは CouchDB で簡単に入るんだから、別に自分でやればいいんじゃね?と、車輪の再発明を試してみました。 これを出すまでにかかった時間は... 15分ぐらい。 とりあえず /proc/ をJSONにする。 最初 awk にしようかと思ったが、JSONに出す、となるとsyntax error が心配だったので、PythonPerl は苦手なので。20行ぐらい。ただJSONにするだけなので、どうでもいいスクリプトです。 #!/usr/bin/env python import json import re from datetime import datetime FI

    CouchDB と HTML5 でMRTG的なことをしてみるテスト。 - Web屋の人の日記 || WebJourney 開発ログ
  • なぜCouchDBなのか - 2010-02-25 - Web屋修行中の人の日記 || WebJourney 開発ログ

    http://blog.madoro.org/mn/54 私もRailsいらねーや、ってくちなので、殆ど同じです。というか、自分で作ったRailsアプリは、仕事のものも含めて、CouchDB への移行したし。 そういうのが嫌で、RDBMSとして正しく使おうと、find()で:includeとか:joinsとか使いだすと、今度はどんどんRoR(Ruby)のコードのSQL成分が増していく。全然楽しくない。 それに加えて、私の周りだとXMLDBサポート、なんてものが入って混沌としていました。XMLいいたいだけだろ的な。XQueryとか、全然人に優しくない。 あとは、RESTの議論というかアプリケーションをみていて、多くのアプリが sql://example.com/ をブラウザでやりたかっただけじゃね?ってところで*1、CouchDBGood Enough Technologyだと思ったわけで

    なぜCouchDBなのか - 2010-02-25 - Web屋修行中の人の日記 || WebJourney 開発ログ
  • 単なる思いつきですが、 - Web屋の人の日記 || WebJourney 開発ログ

    CouchDBをアプリケーションサーバー、MongoDBをデータベースサーバーとして、3層Webシステムを組む、というのは以外と面白いかもしれません。 いままで、WebでCacheといえば、DBから読んだデータのRead Cacheだったわけですが、CouchDBをフロントにおくことで、ユーザーから来たデータをWrite Cacheとして蓄えておいて、適当なタイミングでMongoDBにフラッシュするとか。ドキュメント単位じゃなくても、MapReduce結果のViewをMongoDBにフラッシュすることで、さらにMongoをより効果的に使うことができそうな気もする。 単なる思いつきですが、CouchDB自体はそれはそれでWebアプリのフレームワーク的な使い方もできるので、そんなことをふと考えてみました。

    単なる思いつきですが、 - Web屋の人の日記 || WebJourney 開発ログ
    nbqx69
    nbqx69 2010/02/05
    ouchDBをアプリケーションサーバー、MongoDBをデータベースサーバーとして、3層Webシステムを組む
  • Mongoと比較 - 2010-02-04 - Web屋の人の日記 || WebJourney 開発ログ

    http://blog.madoro.org/mn/35 という記事を読みました。ここ数ヶ月CouchDBで作ったアプリをMongoに移してみたりしたりとかもあったので、もちょっとコメントします。 複雑なViewを作ろうとすると挫折する。(例えば、A:B=1:N と B:C=1:N のような構造で、Cをキーとして、BとAも持ってくるView、とかはたぶん無理。RDBMS的に言うとJoin2回以上は無理、な感じ。) これは、RDBMS的にやろうとするとはまりますね。でも、Webは巨大なデータベースである、と考えるとハイパーリンク先のハイパーリンク先をジョインしたい、という場面はそうそうあるものではない、と思います。そもそもN-Nのような構造とかを作る必要性を感じないので、Viewが複雑になる段階で、データ設計間違えとるやん!と自覚します。一方で、Mongoのほうは、間違えた、という状況が発生

    Mongoと比較 - 2010-02-04 - Web屋の人の日記 || WebJourney 開発ログ
  • [CouchDB][ネタ] これが本当のRDBとの連携(あと少し) - Web屋の人の日記 || WebJourney 開発ログ

    CommonJS 続き。node.js はあまり意味がないというか面倒なので、flusspfered とかいうやつを試してみます。 http://flusspferd.org/ 。JavaScript for C++ とか書いていますが、SpiderMonkeyベースです。。 portsみたらあったので入れてみます。 $ sudo port info flusspferd flusspferd @0.8 (devel) Variants: gmp, readline, sqlite, test Description: flusspferd provides Javascript bindings for C++. Homepage: http://flusspferd.org/ Build Dependencies: cmake Library Dependencies: spiderm

    [CouchDB][ネタ] これが本当のRDBとの連携(あと少し) - Web屋の人の日記 || WebJourney 開発ログ
  • node.js を使ってみる - Web屋の人の日記 || WebJourney 開発ログ

    CommonJSをCouchDB上で動かしてみる試み、ということで、node.js(http://nodejs.org/) を試します。 Mac OS X 10.6, CouchDB 0.10.1, node.js 0.1.26 です。 $ ./configure $ make $ sudo make install でインストール完了。/opt/local/bin/node ができあがっています。 次にCouchDB。 $ curl -X PUT -d '"/usr/local/bin/node /usr/local/share/couchdb/server/main.js"' http://localhost:5984/_config/query_servers/javascriptと設定をしてあげます。local.iniいじってもいいですが、私の開発環境のように、たくさんのlocal

    node.js を使ってみる - Web屋の人の日記 || WebJourney 開発ログ
  • 2010-01-02

    今年もよろしくお願いします。たぶんにもれず、年越しプログラミングをしてました。 昨日、twitter のTLで流れてはっとしたのですが、確かにtwitterの検索結果、履歴がさかのぼれなくなることがあって、これはこれで不便だなぁ、というときがあります。ということで、例によってCouchDBに放り込んじゃいましょう。今回は年も変わったということで、今後触る機会が減るであろうPythonで書きました(去年はPython結構仕事で書いた...)。 twitter の search APItwitter.com/search.json?q=XXX でとれて、認証がいらない、その上、必ず次のページへのリンクを"next_page"というフィールドに含めてくれるので非常に使いやすかったです。pagingをするAPIを提供する場合は、next/prev はHTMLだろうがJSONだろうがXMLだろ

    2010-01-02
    nbqx69
    nbqx69 2010/01/02
    update フィルタと validation のコンビネーションでHTTPを制御する。
  • External Process もっと詳しく - Web屋の人の日記 || WebJourney 開発ログ

    http://d.hatena.ne.jp/yssk22/20090615#1245080242 や http://d.hatena.ne.jp/yssk22/20090708/1247078669 で、CouchDBのURIから外部プロセスをたたき起こすExternal Processについて調べました。最近、あらゆるデータをCouchDBへ、というのが自分の中の流行なので、いろんなバッチスクリプトを書いているわけですが、いつもcronに登録し忘れたり、ファイルシステムイベントの検知スクリプトを起動し忘れたりして、だめだめな自分に気がつきます。 こうなると、CouchDBのExternal Processと組み合わせて使いたくなる。つまり、バッチ系のスクリプトが自動起動するように、external processをしこんでおいて、CouchDBへのアクセスがあったら、裏側で_extern

    External Process もっと詳しく - Web屋の人の日記 || WebJourney 開発ログ
    nbqx69
    nbqx69 2010/01/01
    External Process
  • Hackathon => アメーバナウのなうをCouchDBに複製する。 - Web屋の人の日記 || WebJourney 開発ログ

    やってきました。Hackathon自体は参加者8人とこじんまりでしたが。まぁそれはともかく、アメーバナウのほうも"自分のデータなので”(著作権とかの規約まだ読んでないです)、我が家のCouchDBに放り込んでおきたい。 http://www.nilab.info/zurazure2/001083.html に隠しAPIについて言及されていたので、これを元に作りました。 http://www.yssk22.info/relax/_design/ameba/backup.rb 基的はtwitterでやったときと同じなのですが、メモ。 http://now.ameba.jp/api/entryList/{amebaId} に対して limit=Nで件数が指定できて(デフォルトはN=20)、さらに offset=XX を使えばどの位置から取得するかを指定できる模様。この辺は勘です。ただ、limi

    Hackathon => アメーバナウのなうをCouchDBに複製する。 - Web屋の人の日記 || WebJourney 開発ログ
  • 2009-10-06

    CouchDB 0.9.0 から show/list など、サーバーサイドでレンダリングを行う機能が追加されました。これは普通に使うとすごく使いにくいので、通常はCouchAppを使って次のように書きます。例えば_show/sample を実装するとき。 function(doc, req){ // !code vendor/couchapp/template.js // !json templates/sample return template(templates.sample, {doc : doc}); } couchapp push コマンドでスクリプトをCouchDBにデプロイできますが、// ! が重要なマクロ展開の機能を持っています。 !code により template.js の内容が couchapp push 時に展開され、デザインドキュメントの中に埋め込まれます。こ

    2009-10-06
  • 1