GoogleCalendar API for Ruby

RubyOnRailsでGoogleCalendar API使いたいなぁ〜と思って、GCalendar APIのRuby版を探し歩いていると、こんなの発見!!
Googleが公開しているJavaやC#のAPI程の機能は無いけれど、とりあえず一通りの処理はできるようだ。
明日からこれで遊んでみよ〜

helgaorg - Ruby GCalendar API

Webコミ班のプログラミング演習

Ruby on Railsでやりたいな。
何がいいって

・速い

まずJavaはアプリケーションサーバの設定からしないといけない。RailsはWebrickとかLighttpdとか勝手にサーバがついてくるので10分で環境設定&HelloWorld終了。

・速い!!

Javaだとオブジェクトのやりとりの前にオブジェクトの振る舞いを書かないといけない。でもWebアプリでオブジェクトがする振る舞いって実は大抵同じようなこと(特にController)。RailsのScaffoldコマンドはこの振るまいを書く手間を大幅に減らしてくれる。

・速い!!!!

Webアプリって開発のフローが大抵はDB=>Model=>Controller=>Viewってなるんだけど実はDB設計の時点で半分くらい終ってる。Webアプリ作るならここの勉強が必須!!そのためにもDBができればScaffoldコマンド
だけで取りあえず動くRailsのような環境が理想。JavaだとDB設計から実際にViewに行くまでに時間がかかりすぎる。

・しつこいくらい速い!!!!!!

スクリプトだからソース書き換えたら即反映される(Developmentモード)。Javaのデプロイみたいな作業はいらない。アプリケーションが動き出すまでのスピードも、動き出した後のスピードも、Railsの方が圧倒的に速い。

・きっと覚えるのも速い!!!!!!!!!!!

とりあえずRailsのルールに乗っ取っていれば、ORMとかMVCとか詳しく知らなくてもアプリケーションは動く。そして動くと解る。解ると覚える。

・いたれりつくせり

Ajax?すぺしゃるじぇねれーたとか使えば一瞬じゃん。MVCモデル?MVCに従わずにRailsなんて使えません。Test?じゃあTestモード使おう。リファクタリング?じゃぁスクリプト言語の方がいいですよね。はじめてのWebアプリをJavaでつくる意味ってなんだろう??

最小全域木(Minimum Spanning Tree)と格闘

普通にやると0(N^3)の計算量になってしまった...orz
O(N*LogN)の計算量で解けるらしいのだが、ヒープが良く分からない。
とりあえずO(N^2)まで頑張って効率化して、今日のところはO(N^2)で勘弁してやることにする。

が、ここでもっと致命的なことが発覚!!
10,000×10,000のdouble型の配列なんてメモリーにのりきらないよ!!!!
最小全域木以前に全データ間の距離がメモリーにのせられない。
初期化処理の最初の段階でスワップが...orz

もちろん適時距離計算すればいいんだけど、それはそれで計算負荷がかかりすぎる。
1万件以上のデータが出てきたらDB使うくらいしか思いつかない。
そして最終的に扱うデータ数は25万件!!

Read more