Posted filed under Javascript.

Photo by spud murphy

 先ほどの記事のコードにミスがあり、継承を行うと、親クラスも書き換えてしまうバグがありました。コメントやTwitterで報告いただいた方々ありがとうございます。

 あの後、調べて見れると、あまりスマートに継承を実現する方法は無いみたいですが、ユーザが作ったクラス(StringなどのAtomic型を除く)は下記のコードで継承が行えます。
 特に、Array型を継承するのは、無理なようです。[]を上書きできないので、どうしようも無いみたいです。残念。
Read more »

Posted filed under nodejs.

 自分メモ。Node.jsを、OSX上にインストールする。

node.jsのインストール

curl -O http://s3.amazonaws.com/four.livejournal/20100209/node-v0.1.28.tar.gz
tar xfz node-v0.1.28.tar.gz
cd node-v0.1.28
./configure
make
sudo make install

dbslayerのインストール (要MacPorts)

sudo port install apr apr-util db46

curl -O  http://code.nytimes.com/downloads/dbslayer-beta-12.tgz
tar xfz dbslayer-beta-12.tgz
cd dbslayer
./configure
make
sudo make install

Posted filed under Mac.

 やってしまった。MacBookを机から落とした・・・。

どうせ壊すなら、水没の方がウケが良かっただろうに・・・。

去年でAppleCareも切れたんだよなぁ・・・。はぁ。
Read more »

Posted filed under iPhone.

Photo by -: pranav :-

 iPadが発表され、いろいろなメディアやブログで紹介されています。
ハードウエア的には目立ったところがないため、多くの人に取ってあまり目新しさがなく、残念に思った人も多かったように感じます。

 私がiPadに期待するところは、タブレット型デバイス向けの、新しいユーザインタフェースです。
 うちには、富士通製のWindowsXPのピュアタブレット(キーボードが無くペンだけで操作するタイプ)があります。
ちょっと重いのですが概ね便利で、布団や居間でネットをするときに使っています。

 しかし、普通のWindowsアプリケーションは、マウスでの操作を前提にしているので、余り使いやすくありません。
普通は、Firefoxを起動しっぱなしにしているのですが、いくつかアドオンを入れて、さらに自作のアドオンも使っています。

 iPhoneが成功した一つの要因に、OSXのユーザインタフェースを引き継がずに、小さいタッチパネルディスプレイ用にユーザインタフェースを設計したことがあると思います。
入力方法も画面サイズも違うデバイスですから、PC用とは異なったユーザインタフェースが必要になります。
Read more »

Posted filed under Javascript.

Photo by Aaron Landry

 CSSで、式とかマクロが使えたらなーと思うことがよくあるので、この際だからプリプロセッサを作ろうと思っています。

 文法としては、CSSの構造を大きく変えないで行きます。あくまでプリプロセッサ的な役割で。Sassの様に構文を変えてしまうと、デザイナーの人が取っつき難くなりそうで。

 今のところ、考えている文法の例を下に置きました。誰でも考えそうな所で、includeによる読み込み、ネストをサポート、式と制御構造のサポートを行います。

 このプリプロセッサはサーバサイドで動的に生成するのではなく、一度静的にCSSに変換して使うことを考えています。その為、User agentなど外部からの変数はサポートしません。

 使い方としては、コマンドラインツールによる変換と、Javascriptによる動的な読み込みをサポートする予定です。
開発中は、HTML内に<script src=”ecss_loader.js?test.ecss”></script>と書くことで、サーバに何も導入することなく、動的に拡張されたCSSを読み込むことが出来るようにします。

 文法や機能のアイディア、同じようなプロダクトを知っている!と言う方がいましたら、ぜひコメントお願いします。
Read more »

Posted filed under Ruby.

Photo by Ludovico Cera

 前回、最後にGeohashのエンコード・デコード方法を解説、とか書いたのですが、私が書く前にyuroyoroさんがブログで解説していました。しっかり解説されているので、ぜひ、そちらをご覧ください。

 Geohashのミソは、座標を2進数にして、それを交互に並べる所にあります。そしてそれをBASE32でエンコードすることで、座標を文字列にして表現しています。
 BASE32は、5ビットで1文字なので、Geohashの長さが奇数の場合は、経度の方がビットが短くなります。 (例: 5文字の場合 全25ビット 緯度が13ビット、経度が12ビット)
 そのため、グリッドの大きさが、Geohashが奇数の場合は縦長、偶数の場合は横長になります。
Read more »

Posted filed under Javascript, Ruby.

 なんか世間的に位置情報アプリが流行ってるらしいし、Google App Engine(GAE)も楽しそう。どうせだから、GAEでなんか位置情報アプリでも作ってみよう!と思ってTwitterに書き込んだところ、Geohashという、位置情報のプロトコル?を教えてもらいました。

 これは、その名の通り、位置情報をハッシュで表す規格なのですが、いろいろおもしろい特徴があり、調べているうちに楽しくなってきたので、勢い余ってPure Rubyのライブラリまで書いちゃいました。

 そのあと、結局ライブラリを作ったところで満足して、アプリは何も作らなかったので、せめてGeohashの解説でも書いておこうと思います。
Read more »

Posted filed under ServerSide.

Photo by shindotv

 ここ最近、海外のブログで「NoSQL」という単語をちょこちょこと見るようになりました。

 これは新しいデータベースのムーブメントで、「SQL=リレーショナル」ではないデータベースの事を指しています。

 NoSQL DBサーバの有名な物は、Facebookがリリースした「Cassandra」、Erlangで書かれた「CouchDB」、日本からは、mixiがリリースしている「TokyoTyrant」があります。
 またGoogle App Engineでは、DataStoreというBigTableベースのNoSQLサービスが提供されています。

 ある程度ユーザを集めたコンシューマ向けサービスは、大抵の場合パフォーマンスとの戦いとなります。

 技術誌の中でも「スケールアウト技法」的な記事を目にすることが増えてきたことからも、多くのサイト運営者が、パフォーマンスの問題を抱えていることがわかります。

 多くの場合、問題になるのは、データベースのパフォーマンスです。
Read more »

Posted filed under ServerSide.


 AmazonがAmazon RDSという、MySQL専用のインスタンスをサービス始めました。

 これは、MySQL 5.1がセットアップしてあるインスタンスで、Small(1CPU, 1.7 GBメモリ)〜Quadruple Extra Large(26CPU, 68 GBメモリ)までスペックが提供されています、Smallは$0.11/時 ($81/月)か。Largeだと$0.44時で$327/月なので、通常のEC2よりはちょっと高めの様です。
 EC2と違うのは、ネットワーク代は別でDBへ外部からアクセスした場合には、1GB辺り、Inは$0.10、Outは$0.10〜$0.17掛かります。

 これ以外に、1GB辺り$0.1のストレージ代と、100万IOアクセス辺り$0.1の代がかかります。この辺はEBSと同じみたいですね。
Read more »