Google I/O 2010 で Google Buzz API が正式に発表されたと聞いて Buzz の API ドキュメントを眺めてたら、なにやら見慣れぬ oacurl ツールが使われているではないですか。(OACurl Cookbook)
どうもこの oacurl、OAuth 対応の curl っぽいコマンドラインツールらしい。ということで、Buzz API はスルーして oacurl を触ってみることにしました。
oacurl のインストール
oacurl、OACurl Cookbook でそれぞれ別のインストール方法が紹介されているので、どちらでも好きな方を選択します。以降は oacurl 本家サイトの方法でインストールしているという前提で話を進めます。
Twitter OAuth Consumer の設定
まずは Consumer 登録。
なぜか callback_url=oob の場合 oacurl が java.lang.NullPointerException でエラーになるので、ここでは Application Type を Client ではなく Browser にしてください。oacurl はコマンドラインツールですが、callback_url=http://localhost:XXXX として callback を受け取ることもできます。
その後 Twitter 用のプロパティファイルを作成します。(~/.oacurl.twitter.properties)
requestTokenUrl=http://twitter.com/oauth/request_token
userAuthorizationUrl=http://twitter.com/oauth/authorize
accessTokenUrl=http://twitter.com/oauth/access_token
Read more
昨日からちょっと Smart.fm Android アプリのデバッグのお仕事が入ったので、Android SDK をセットアップして Emulator にアプリをインストールしました。
インストール自体は簡単だけど、実際に Emulator を立ち上げるまでに少しハマり、Android で /etc/hosts をいじったりするところまではかなりハマったので、忘れないうちにメモメモ。
Download & Install Android SDK
Android SDK | Android Developers から、MacOSX 用の SDK をダウンロード。ダウンロードされたディレクトリごと適当な場所に配置して、SDK_ROOT/tools に PATH を通しておく。
Install Android SDK Components
次に Adding SDK Components | Android Developers にある通り、SDK Componets とかいうのをインストールする。
まずは以下のコマンドで Android SDK and AVD Manager を立ち上げる。(たぶん AVD は Android Virtual Device の略)
android
どうも僕の環境では HTTPS 経由だと失敗するので、Settings から HTTP を使うように設定。

ちょっと時間がかかるけど、Available Packages からとりあえず全パッケージをインストールしておく。僕の環境でインストールされたパッケージ一覧はこちら。
Read more

Java から Rails アプリのモデルを呼び出す (MacOSX Leopard) の続き。
まず最初は Rails のロード途中でヒープメモリが足りなくてエラーになりました。Rails アプリは結構なメモリを食う傾向があるので、僕の場合は Java のヒープメモリを 256M にしてやる必要がありました。
java -Xmx256m JSmartfm
次に、なぜか pure ruby の Ruby/MySQL では、SQL の発行はできるのにレスポンスが返って来ないという現象になったので、JDBC を使うことにしました。
Read more

Shindig Java 版から Rails アプリのモデルにアクセスする為に、Java から Ruby を呼び出すという技にチャレンジしてみました。
なんだか org.jruby.* を使う方法もあるようですが、とりあえず今回は Java 6 の Java Scripting とかいうのを使ってみました。
以下、手順をざっとおさらい。
- JRuby のインストール
-
JSR233 Engines の Ruby エンジンは JRuby 1.1 系にしか対応していないらしいので、JRuby のバージョンを 1.3.0 から 1.1.6 に落とす。
これは jruby-bin-1.1.6.tar.gz をダウンロード&解凍して、JRUBY_HOME を置き換えるだけ。
- JSR233 Engines のインストール
-
jsr223-engines.tar.gz をダウンロードして、適当な場所 (ここでは JSR233_ENGINE_HOME とする) に配置するだけ。
Read more

Mac に Apache Shindig をインストールしたので、ログをメモ。
- Java version up
-
多分これはしなくても大丈夫だけど、Java の version が 1.5 系だったので、この機会に 1.6 に update。
Leopard では以下のシンボリックリンクを張り替えるのではなく
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
以下のアプリから version up するらしい。
/Applications/Utilities/Java/Java Preferences
- maven をインストール
-
maven は Java 版 rake+gem みたいなものらしい。Mac には maven が最初から入っているのだけど、一応 port 経由でインストール。
sudo port install maven2
- jetty をインストール
-
jetty は Tomcat みたいなアプリケーションサーバ、かな?とりあえず port でインストールできる。
sudo port install jetty
ここまでで必要な環境はそろっている、はず。ここからが shindig。
Read more
Commenting with Facebook Connect より

Facebook Connect を利用したコメントフォームをプログラミング無しで簡単に導入できるようになったので、早速このブログにも導入。Disqus よりは Facebook 利用者の方が多いだろうということで、Disqus Comment Widget は削除しました。
Facebook Comment Widget の設置方法は以下の通り。
Read more
サイトが軽いというのは気持ちがいいものです。ということで、京の路も応答時間を高速化してみました。
京の路の場合、一番効果が大きかったのは、FC2 のアクセスカウンターとアクセス解析を外したことです。FC2 の両サービスを外すだけで、応答時間は約半分になりました。
次に、trackword とナビゲーションバー、サイドバーを window.onload でロードするようにしました。こちらは言うほど大した時間はかかってなかったのですが、まぁ気持ち的に。
それから複数ある CSS をヘッダから直接読み込むようにして、JavaScript を全部ページの最後部で呼び出すようにしました。iPhone でアクセスされたときは逆効果だけど、まぁそれほど多くないのでいいかなと。
あと重いのは AdSense ですが、まぁこれはしょうがないかな。
これでトップページの応答時間はだいたい1.0秒を切るようになって、速いときだと0.5秒を切れるようになりました。速さ的には、Yahoo! Japan のトップページは超えたけど、Google は超えられないくらい。
うん、やっぱ速いと気持ちいいね。
JavaScriptのオブジェクト指向とAjaxの動作原理の勉強のために、このブログのサイドバー呼び出しスクリプトをオブジェクト指向的なスクリプトに書き直しました。
コードは「外部HTMLをAjaxで読みこんで表示するAjaxViewer » RAILS PRESS」にあげてあります。(もっときれいに書く方法など、フィードバックいただけるとうれしいです)
このスクリプトを使えば、MovableTypeの再構築時のサイドバー生成の負荷を劇的に減らせます。
使い方は、このスクリプトを読み込んで、
<div id="hogehoge"></div>
というDOMに
http://example.com/menu.html
というHTMLを吐き出す時には、
var menu = new AjaxViewer('hogehoge');
menu.load('http://example.com/menu.html');
という感じでこのスクリプトを呼び出してやります。
もし気に入ったら、自由に使ってやってください。
先日Haskell本を買って、昨日初めてHaskellのコードを書いた。
本に載ってる最初のサンプルレベルで、まだ関数型とかそんな雰囲気を感じることも無いレベルだけど、ここまでの感じではHaskellってRubyやPerlよりCやJavaに近い感じ。
mainがあったり、型をちゃんと気にしないといけなかったり。
コンパイルしたらデフォルトでa.outができるのも、ずいぶん前にそんな言語に触れたような触れなかったような。。。ターミナルで自分で書いたプログラムをコンパイルしたのなんて、どれくらいぶりだろう?
putStrとprintで引数の制約が違うのには違和感を感じる。
main = do cs <- getContents
print $ length $ lines cs
putStr $ length $ lines cs -- This Line has Error!!
でも、JavaやCと比べれば、まだずいぶんとなじみやすい。
main = putStrLn "Hello World!!"
って1行だしね。
ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

昨日Haskell本が届いたので、さっそく今日からHaskellで遊びだしました。
今日は朝と夜の電車で本を読んで、帰って来てからHaskellコンパイラのGHCをインストールしてHello Worldまで。
mainという関数名を久しぶりに見ました。
関数定義に「=」使うのが違和感ありますね。
main = putStrLn "Hello world!"
Read more
メモメモ。
コンパイルには、以下のオプションが必要。
-I/usr/local/include -L/usr/local/lib -I/usr/local/mysql/include -L/usr/local/mysql/lib
ここで
/usr/local/includeと/usr/local/libはMySQL++がインストールされている場所。
/usr/local/mysql/includeと/usr/local/mysql/libはMySQLがインストールされている場所。
名古屋大の「MIST」というライブラリを使ってみた。とりあえずライブラリが使えるようになったというレベルだけど。
MOCK関係者はそのうち使うかもなので、その時に参考になればということで、以下環境構築メモ。
(基本はMISTサイトの通りでうまく行ったのだが、一カ所ひっかかったとこがあった)
Read more
いまバイト代もらってFlashの勉強さしてもらってます(w
で、最近ちょこちょこFlash8の開発画面と格闘していたのですが、先日いいサイトを見つけました。開発方法も自分に合ってるし、サンプルアプリが現在の目的とぴったり一致してるのも良い♪
JAVAC.JP - HOSHI TETSUYA - 星鉄矢
ここで紹介されてる開発方法は、Flaファイルを編集するのではなく、Flaファイルから外部ActionScriptファイル(main.as+他の必要なASファイル)を読み込ませて、ActionScriptメインで開発する方法。ActionScriptを学ぶにはぴったりの開発方法です。ステージとかムービークリップとか深度とかのFlash独特の概念は説明が無いので、いきなりこのサイトから勉強し始めるのはつらいと思いますが。
サイトではグラフ描画アプリとタンパク質立体構造描画アプリを例に、例題を交えながらActionScriptとFlashを勉強できるようになっています。ドリコムの仕事にも、僕の研究にも、研究室のいくつかの研究にもぴったり。
当面の目標は、XMLファイルのデータからグラフを作るFlashと、タンパク質立体構造を表示するFlashを作ることです。上手くできたら公開してみたいなぁ〜
最終的にはMOCKのデモも?
Read more
こんなの。ApacheのログをPerlで解析して静的なHTMLファイルとして出力してくれるらしい。次のようなコマンドをクーロンでまわせばよいとのこと。
gscloud.pl -prefix http://example.com -limit 200 logs/access_log > cloud.html
で、こんなのが出来上がる。

これ、研究室のホームページに付けてみると面白いかもしれない。
Google Search Cloud
てかGoogleの検索窓くらいはいるよね。
いままでSPEA2+をベースにしてMOCKを開発してたのだけれど、別に+な部分は全然使ってなかったのです。そんな中なんといつの間にかSPEA2が公開されていて、しかも最近SPEA2+とSPEA2どちらもバージョンアップしてるじゃないですか!!
これを機にSPEA2にして、MOCKのための追加部分をプラグイン化して、どうしても本体部分をいじらないといけないところはパッチファイルを用意して...とかしておこうかな。
Read more
Webコミグループの勉強会で、ワトソン先生に教わった。
途中からTAしもしゃか登場で、のんちゃんおおいに惑わされる(笑
DTDとかXML Schemaとかは、結局SQLと同じだね。
O/Rマッピングの技術レベルを考えると、やはりJavaよりRubyの方がXMLに向いているのでは無いかと思った。
てか動的にクラス宣言ができるってのが強いのか。
@person_schema = XML.Schema.new("http://xsd.example.com/Person")
@person = @person_schema.to_class
(このコードは超適当なイメージですが、Rubyだとおそらくこんな感じで使えるはず。)
とかでクラス作れるってのがすごい。
JavaだとXML Schemaからクラス作るのってどうやるんだろうか?
Javaでもコンパイル無しにXML Schemaからインスタンス作ったりできるのかなぁ〜?
現在知的システムデザイン研究室では、4回生が「プログラミング演習」というイベントに取りかかっています。このイベントは主にJAVAでオブジェクト指向やらテストやらに慣れて、プログラミングスキルの向上をはかろうというものです。
我らがウェブコミュニケーショングループではJAVAのSWINGを使ったアウトラインマインドマップエディタもどきと、PHPのウェブブックシェルフを開発してもらっているのですが、なかなか指導院生側が未経験の課題が多く、指導しているこちら側にもよい勉強になっています。
PHPで開発している彼にはMVC設計に基づいた開発をしてもらっているのですが、フレームワークなんぞ何も使わず、すべて手書きでプログラミングしています。(DB接続にPEARのDBだけ使ってますが。)オブジェクト指向もよく分かっていない、PHPなんて初めて触る子なので、なかなか手間取ることが多いです。先週の水曜日、遅ればせながら初めてそのソースを見せてもらったのですが、MVCになってね~!!ということで、急遽システム再構築。もう強制的にメソッド名から変数名からすべて指定して、強引にMODELを作らせました。
Read more
Php Object Generator (v2.0.1) - Open Source PHP Code Generator
このサイト、PHPでDBとの接続を行うクラスを自動生成してくれるらしい。DB_DataObjectとはまた違うみたい。どこでDB接続を確立しているのかは不明...
とりあえずPHPでModelを設計する為に、いい勉強になるのでは?
YouTubeにこいつを使ってるMovieがあった。
vector population;
に対して
population.reseze(100);
とかをするためには、IndividualのデフォルトコンストラクタIndividual()が必要。
メモリーサイズの計算に使う模様。
今日はこいつと格闘した。
明後日はInitializerを1度作るだけでいいような設計にする。
Announcement: new Javascript/Canvas Graph libraryっていうツールは見つけましたが、これは静止画を作るようです。
この絵を拡大したり縮小したり、特定の範囲だけを表示したりしたいんですが...
なにかいいツール知ってる方おられましたらお教え下さいm(_ _)m
Ajaxian: 6 Places You Must Use Ajax
こういう時にはAjaxを使いましょう
1. Form driven interaction
Flickrやdel.icio.usの編集フォーム
2. Deep hierarchical tree navigation
BBSのスレッド表示
3. Rapid user-to-user communication
Gmailの「新着メールの確認」自動化
4. Voting, Yes/No boxes, Ratings submissions
ネット投票。Blogのコメントなんかもこれになるか?
5. Filtering and involved data manipulation
データフィルタリングとか、ソーティングとか。MTのエントリー管理画面なんかがそれになるか?
6. Commonly entered text hints/autocompletion
テキスト補完など。del.icio.usのtagとかGmailのアドレスとか。
逆にこういうところでは使わないようにしましょうってのもある。
個人の開発者には参考程度の資料だけど、企業やチーム単位の開発者には必須の規約かと思います。
要するに、
「Ajax使ってユーザの負担が軽減される場合はいいけど、そうでも無い時はわざわざ使わない方が良い」
ってことかと。
逆に負荷が増加する場合もあるし。