oacurl で Twitter OAuth を使ってみた。

Google I/O 2010Google Buzz API が正式に発表されたと聞いて Buzz の API ドキュメントを眺めてたら、なにやら見慣れぬ oacurl ツールが使われているではないですか。(OACurl Cookbook

どうもこの oacurl、OAuth 対応の curl っぽいコマンドラインツールらしい。ということで、Buzz API はスルーして oacurl を触ってみることにしました。

oacurl のインストール

oacurlOACurl 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

MacOSX での Android SDK セットアップと Android の /etc/hosts の編集方法

昨日からちょっと 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 を使うように設定。

Android SDK - Settings

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

Read more

Java から Rails アプリを利用する際に気をつけること

Java から Rails アプリのモデルを呼び出す (MacOSX Leopard) の続き。

まず最初は Rails のロード途中でヒープメモリが足りなくてエラーになりました。Rails アプリは結構なメモリを食う傾向があるので、僕の場合は Java のヒープメモリを 256M にしてやる必要がありました。

java -Xmx256m JSmartfm

次に、なぜか pure ruby の Ruby/MySQL では、SQL の発行はできるのにレスポンスが返って来ないという現象になったので、JDBC を使うことにしました。

Read more

Java から Rails アプリのモデルを呼び出す (MacOSX Leopard)

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

MacOSX に Apache Shindig (Java version)をインストール

Apache Shindig

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

Facebook がリリースした Facebook Connect 対応 Comment Widget を導入

Commenting with Facebook Connect より

Facebook Comments

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 は超えられないくらい。

うん、やっぱ速いと気持ちいいね。

サイドバーをAjaxで呼び出すスクリプトを書きました

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のコードを書いた。

本に載ってる最初のサンプルレベルで、まだ関数型とかそんな雰囲気を感じることも無いレベルだけど、ここまでの感じでは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行だしね。

MacBookにHaskellコンパイラのGHCをインストール

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

昨日Haskell本が届いたので、さっそく今日からHaskellで遊びだしました。

今日は朝と夜の電車で本を読んで、帰って来てからHaskellコンパイラのGHCをインストールしてHello Worldまで。

mainという関数名を久しぶりに見ました。
関数定義に「=」使うのが違和感ありますね。

main = putStrLn "Hello world!"

Read more

MySQL++の使い方

メモメモ。

コンパイルには、以下のオプションが必要。

-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がインストールされている場所。

C++で主成分分析(PCA)を行うための行列演算ライブラリ「MIST」

名古屋大の「MIST」というライブラリを使ってみた。とりあえずライブラリが使えるようになったというレベルだけど。

MOCK関係者はそのうち使うかもなので、その時に参考になればということで、以下環境構築メモ。
(基本はMISTサイトの通りでうまく行ったのだが、一カ所ひっかかったとこがあった)

Read more

Flash(ActionScript2.0)の勉強中です

いまバイト代もらってFlashの勉強さしてもらってます(w

で、最近ちょこちょこFlash8の開発画面と格闘していたのですが、先日いいサイトを見つけました。開発方法も自分に合ってるし、サンプルアプリが現在の目的とぴったり一致してるのも良い♪

JAVAC.JP - HOSHI TETSUYA - 星鉄矢

ここで紹介されてる開発方法は、Flaファイルを編集するのではなく、Flaファイルから外部ActionScriptファイル(main.as+他の必要なASファイル)を読み込ませて、ActionScriptメインで開発する方法。ActionScriptを学ぶにはぴったりの開発方法です。ステージとかムービークリップとか深度とかのFlash独特の概念は説明が無いので、いきなりこのサイトから勉強し始めるのはつらいと思いますが。

サイトではグラフ描画アプリとタンパク質立体構造描画アプリを例に、例題を交えながらActionScriptとFlashを勉強できるようになっています。ドリコムの仕事にも、僕の研究にも、研究室のいくつかの研究にもぴったり。

当面の目標は、XMLファイルのデータからグラフを作るFlashと、タンパク質立体構造を表示するFlashを作ることです。上手くできたら公開してみたいなぁ〜

最終的にはMOCKのデモも?

Read more

研究室のホームページにGoogle Search Cloudなんてどうだろう?

こんなの。ApacheのログをPerlで解析して静的なHTMLファイルとして出力してくれるらしい。次のようなコマンドをクーロンでまわせばよいとのこと。

gscloud.pl -prefix http://example.com -limit 200 logs/access_log > cloud.html

で、こんなのが出来上がる。

google-search-cloud-perl-output.png

これ、研究室のホームページに付けてみると面白いかもしれない。

Google Search Cloud

てかGoogleの検索窓くらいはいるよね。

ISDLのSPEA2のバージョンが上がったのでMOCKもバージョンあげたい

いままでSPEA2+をベースにしてMOCKを開発してたのだけれど、別に+な部分は全然使ってなかったのです。そんな中なんといつの間にかSPEA2が公開されていて、しかも最近SPEA2+とSPEA2どちらもバージョンアップしてるじゃないですか!!

これを機にSPEA2にして、MOCKのための追加部分をプラグイン化して、どうしても本体部分をいじらないといけないところはパッチファイルを用意して...とかしておこうかな。

Read more

DTDとXML Schemaについて学んだ

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からインスタンス作ったりできるのかなぁ〜?

PHPで手作りMVC

現在知的システムデザイン研究室では、4回生が「プログラミング演習」というイベントに取りかかっています。このイベントは主にJAVAでオブジェクト指向やらテストやらに慣れて、プログラミングスキルの向上をはかろうというものです。

我らがウェブコミュニケーショングループではJAVAのSWINGを使ったアウトラインマインドマップエディタもどきと、PHPのウェブブックシェルフを開発してもらっているのですが、なかなか指導院生側が未経験の課題が多く、指導しているこちら側にもよい勉強になっています。

PHPで開発している彼にはMVC設計に基づいた開発をしてもらっているのですが、フレームワークなんぞ何も使わず、すべて手書きでプログラミングしています。(DB接続にPEARのDBだけ使ってますが。)オブジェクト指向もよく分かっていない、PHPなんて初めて触る子なので、なかなか手間取ることが多いです。先週の水曜日、遅ればせながら初めてそのソースを見せてもらったのですが、MVCになってね~!!ということで、急遽システム再構築。もう強制的にメソッド名から変数名からすべて指定して、強引にMODELを作らせました。

Read more

PHPでモデルクラスを自動生成してくれるPHP Object Generator (POG)

Php Object Generator (v2.0.1) - Open Source PHP Code Generator

このサイト、PHPでDBとの接続を行うクラスを自動生成してくれるらしい。DB_DataObjectとはまた違うみたい。どこでDB接続を確立しているのかは不明...

とりあえずPHPでModelを設計する為に、いい勉強になるのでは?

YouTubeにこいつを使ってるMovieがあった。

C++のVectorをresize()するのにてこずった

vector population;
に対して
population.reseze(100);
とかをするためには、IndividualのデフォルトコンストラクタIndividual()が必要。
メモリーサイズの計算に使う模様。

今日はこいつと格闘した。
明後日はInitializerを1度作るだけでいいような設計にする。

Ajaxで動くネットワーク図を書きたいのですが...

Announcement: new Javascript/Canvas Graph libraryっていうツールは見つけましたが、これは静止画を作るようです。
この絵を拡大したり縮小したり、特定の範囲だけを表示したりしたいんですが...

なにかいいツール知ってる方おられましたらお教え下さいm(_ _)m

Ajaxを使うべき6つの場所

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使ってユーザの負担が軽減される場合はいいけど、そうでも無い時はわざわざ使わない方が良い」
ってことかと。
逆に負荷が増加する場合もあるし。