__defineGetter__ , __defineSetter__

普通に使えますね。JavaScript でGetter/Setterプロパティを実現するための関数。 Foo.prototypoe.__defineGetter__('prop1', function(){ return '...'; });

sys.inherits で継承を実現

> var sys = require('sys'); > sys.inspect(sys) '{ print: [Function]\n, puts: [Function]\n, debug: [Function]\n, error: [Function]\n, inspect: [Function]\n, p: [Function]\n, log: [Function]\n, exec: [Function]\n, pump: [Function]\n, inherit…

GData にだってアクセスできるんだぜ

Google Calendar API に node.js でアクセスするサンプルです。 Google は JSのクライアント実装を提供してくれていますが、node.js だと使い物にならないので、必要な部分だけ書いてみました。雰囲気だけつかんでいただければ。HTTP Call 自体も非同期なの…

Twitter だって使えるんだぜ。

もう一つ。こちらも必要だったので。 /** * Twitter Client for node.js */ var sys = require('sys'), url = require('url'), querystring = require('querystring'), http = require('http'), crypto = require('crypto'), EventEmitter = require('events…

奥に向かってプログラムを書く、という行為

昔々、関数型言語をはじめにやったとき、こういう印象を持ちました。奥に向かって突き進んで戻ってくるような感じ。その感覚がnode.jsでも味わえます。node.js の場合、すべてのメソッドが非同期で実行されるので。 var foo = hoge(); var bar = piyo(foo); …

Python Hackathon 2010.11 でハンズオンやります。

http://atnd.org/events/6359すでに満杯なのですが、そして、今年からばりばりPythonで仕事をするようになったのですが、それでもPython Hackathonでnode.js のハンズオンをすることになりました。Hello World から簡単なWebアプリを書くところまで、データ…

node.jsでTwitter stream を CouchDB に放り込みつつ、ブラウザに垂れ流すアプリを書いてみた

以前 node.jsでTwitter ChiarpUserStreamを閲覧するWebアプリを作った - 酒日記 はてな支店 を見て、おもしろいなぁ、と思っていたので、やってみました。変更点は 単にtwitter streamを垂れ流すのではなく、一度CouchDBに放り込んで、CouchDB から MapReduc…

npm モジュールを公開してみる

もう一つ。node.js には npm という Ruby の gem、Python の setuptools/pypi、Perl のCPAN、PHPの... 的なモジュールがあります。昨今、使うばっかりじゃダメだ、と思っているので、とりあえず自分がすぐに必要だったHTMLの本文抽出ライブラリを node.js 用…

node.js/express で CouchDB をパワーアップ大作戦

CouchDB をメインのアプリケーションサーバーとして使っているものの、サーバーサイドで他のサービスと連携したいときにはちょっと不便さを感じてしまいます。そういうときは、イマドキ?のWeb Frameworkの上で、CouchDBをデータベースとして扱えば良いんです…

Varnish を CouchDB 用のReverse Proxyに活用する。

ご無沙汰しております、生きています。さて、CouchDB 1.0 がでて、incremental replication もだいぶ安定した感があるので、自宅の CouchDB でロードバランスしたくなりました。Apache mod_proxy_balancer という手もあるのですが、Incremental (MapReduce +…

Futon が動きました。

といってもトップページ+そこからDBを作成するところだけですが。ディスクサイズとかは正直どうやって計算すればいいのかわからないので、後で考えます。update_seq とかdoc countとかはジョブを動かして Eventually Consistency な感じであわせる方向で。ht…

CouchDB Compatible API Service on GAE

元々の目的は、データモデルがいい加減だとスケールする環境でもスケールしなくなるよ!という話のつもりだったんですが。ソースコードを公開しつつチャレンジしていこうと思います。http://github.com/yssk22/gaecouch今できることは README.md に書いてあ…

これはなんだ?

imac:gaecouch yssk22$ curl -X GET http://gaecouch.appspot.com/ {"not_found": "Welcome", "version": "0.11.0"} imac:gaecouch yssk22$ curl -X GET http://gaecouch.appspot.com/a {"reason": "not_found", "error": "no_db_file"} imac:gaecouch yssk2…

たまにはCouchDBの話。TV CM

twitter ではつぶやいていたのを目にしていたのですが、Damien氏にエントリがまとめられています。「Google Ads に CouchIO のCMをサブミットしたら却下された件」→ http://damienkatz.net/2010/05/google_denies_our_commercial.html海の向こうはリアルのTV…

twitter.com をログストレージにする、の続きの続き

我が家の主要なサーバーアプリケーションの一つに、自動録画サーバーがあります。完全に自作のツールで、録画忘れを防止するのに役立ってはいるのですが、このツールも基本はPython(+CouchDB)で記述されているので、ログをtwitterに出すようにしました。とこ…

twitter.com をログストレージにする、の続き

適当にやっていたエラーハンドリングを改善して0.1.1にする、という遊び。140文字を超えるログメッセージは 140文字に切り詰めてはき出すようにしました。これで効率よく内容を伝えるログメッセージを考える習慣が身につくはずです。ちなみに使っていて気が…

もうめんどくさいからtwitter.comをログストレージに使うことにした

ログの設定とかアラートの設定とか、、いろいろあるとは思うんだけれど、自宅のサーバー運用でわざわざファイルに出すとかsyslogに出すとかgrowlで通知とかmailで通知とか、、、もう面倒なので、twitter 全部飛ばすことにしました。 ソース: http://github.c…

hands-on マテリアルのソース

bitbucket.org で公開することにしました。自分的にはSphinxの練習ですが。http://bitbucket.org/yssk22/couchdb-hands-on-materials/src/それに伴いビルド済みHTMLの公開場所も少し変えました。Dropbox で 301 Moved Permanently をやるにはどうしたらいい…

BPStudy #32 CouchDB再入門

BPStudy32 CouchDB 再入門View more presentations from yssk22.Slideshareにアップしたものの、微妙にフォーマットが崩れたりしてしまいました。オリジナルは http://dl.dropbox.com/u/219436/CouchDB/BPStudy32/BPStudy32-CouchDB.pptx にあるので適当にど…

一方素人は重要ということで。

完全自分専用アプリですが、公開しました。mapping.json と rec.json をいじれば、国内ではどこでも使えると思います。http://github.com/yssk22/recstoreくれぐれも録画したものをレプリケーションとか考えたらだめです(というか、CouchDBで 数GB以上のlarge…

つまり、プロになったわけで。

テストを書くのが当たり前になりました。テストはかけばいいってものではありません。書いて実行して結果を報告する必要があります。ということで、 http://github.com/yssk22/crayon/blob/master/spec/suite.js JSpec でもJUnitのXMLレポートを出せるように…

試用期間が終わりました

のでタイトルから修行中を削除しました。リリースも経験したし、もう修行中とかいってられる立場じゃなくなってきています。。。ちょっとこれまでの感想をメモ。 やるべきことが大量に増えた。忙しくなったけど、その代わり休日が充実した。 バイト時代(2000…

0.11 New Feature : セキュリティオブジェクト

データベースごとに構成情報用のセキュリティオブジェクトがvalidation関数で利用できるようになりました。 なんぞこれ、と思って試してみた。要するに validation 関数で、任意の設定情報を利用できるようにする仕組み。この「セキュリティ」にはものすごく…

0.11 でモジュール化とユニットテスト

jspec が優秀なスペックテストをできるので、ヘルパーを用意。 require と log 関数だけはよく使うので用意してあげます。require は配布時とテスト時の違いを吸収できるような変な書き方をしているけれど。Rhino だと load でJSを読み込めますが、require …

0.11 の変更

ChangeLog には書いていないけど、以下のコードが動かなくなっています。 // _design/app/_show/test function(doc, req){ this["hello"] = function(){ return "hello"; }; return hello(); } eval するコンテキストの違いだとは思うのですが、これが意図し…

0.11 新機能 require

ChangeLog に書いていませんが、view サーバーのソースみてたらやっぱりできるみたい。CommonJS 互換なライブラリ呼び出し。デザインドキュメントのJavaScriptで CommonJS スタイルの require を使ってモジュール化したJavaScriptを呼び出せるようになりまし…

0.11 Vote 中なので、ChangeLog を私訳します

まだ機能を使ったわけではないので変な訳があります。http://svn.apache.org/repos/asf/couchdb/tags/0.11.0/CHANGES の r926573 の勝手私訳です。 セキュリティ Cookie による認証とユーザーデータベースの利用がデフォルトになりました。 Futonにサインア…

CommonJS サポート!

http://wiki.apache.org/couchdb/commonjs_modulesということで、デザインドキュメントにモジュールを放り込んでおいて、require("hogehoge") で呼べるようになるようです。先日の録画システムのベンチをしてみたんですが(ML115, Opteron 1800MHz 2 core / 8…

CouchDBで快適録画生活 | 0.8.1 で作ったプログラムを0.10.1に更新

家の録画管理コマンドラインツールが塩漬けで放置されていたので、更新作業をしていました。ほぼスクラッチから作り直しで、しばらくかかりそうです。requirement はこんな感じです。 特定の芸能人がでる番組は見る見ないに関わらず確実に補足。 オンライン(…

dW Japan 10周年

ちょうど大学に入学した頃から、少しづつ読んでいたわけで、もう10周年なのですね。alphaWorks Japan はなくなってしまったけれど、そんなわけで、記事が紹介されていました。 Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とイン…