Article (記事)

iPhoneアプリ開発

02.03.09 | Permalink | Comment?

iPhoneアプリ開発でこんなことやりたいのだけど、どうやるんだっけ?ってのがちょくちょくでてきます。逆引きのリファレンス逆引きiPhoneSDK - WIKIが参考になります。

Tags:

Article (記事)

「ビジュアライジング・データ」 日本の郵便番号をマッピング

01.10.09 | Permalink | Comment?

“ビジュアライジング・データ ―Processingによる情報視覚化手法” にアメリカの郵便番号の緯度経度を平面上にマッピングし、キーボードからの郵便番号入力にしたがって、入力した郵便番号に部分一致するポイントをインタラクティブに表示するサンプルが載っています。
例えば、「2」と入力すると、郵便番号が「2」から始まるエリアがハイライトされ、それ以外が暗くなります。続けて「1」と入力すると「21」と続くエリアが絞り込まれてハイライトされます。
ズーム機能をオンにすると、一致したエリアになめらかにズームし、郵便番号の緯度経度といった無機質なデータをとても美しく表示してくれます。
本書はProcessingによるデータ表示の手法だけでなく、オンライン上にあるデータを取得し、解析し、不要なデータを削除するフィルタリングの手法についても書かれており、自分で応用してさまざまなデータを視覚化していくことができるようになるでしょう。
このサンプルを参考に日本の郵便番号で試してみることにしました。アメリカの郵便番号は5桁ですが、日本は7桁なのでより精緻なマップを得ることができることを期待しています。
郵便番号から緯度経度データ取得
郵便番号は郵政局のwebサイトからダウンロードできますが、残念なことに緯度経度情報が含まれていません。GoogleMapsAPIのGeocordingを使って地名から緯度経度情報を取得する簡単なスクリプトをRubyでつくりました。
データ量が多いので、同じIPからリクエスト続けていると5000件程度でGoogleMapsから拒否されるようになるので、自動的にプロキシを変更するように、データ取得をどこからでもレジュームできるように作っておくとよいでしょう。
郵便番号リストは住所に(その他)と入っていたり(1丁目〜10丁目)、(ビル名何階)と書いてあったり表記がばらばらなので、Geocordingに投げて緯度経度が戻ってこないものは今回は無視することにしました。マッピングに必要なデータは十分な得られました。
Processingプログラム修正
本書のサンプルが外部データを取得して表示するようにつくられているため、ほとんどそのままで利用できます。アメリカの郵便番号が5桁なので、日本の郵便番号7桁に合うようにいくつか修正します。
実行
日本が浮かび上がりました。人口の密な地域はポイントもたくさんありますし、郵便番号の緯度経度だけから山脈がなんとなくわかったりとおもしろいです。9からはじまる郵便番号は沖縄と北陸、南東北まとめて割り振られたりします。
いくつかGeocordingが突飛な緯度経度を返しているようで、7からはじまる郵便番号がぽつっと関東にあったりするので、はずれ値をフィルタリングする処理を追加する必要がありそうです。
もうひとつの問題はデバイスフォントをつかって日本語が表示できない。。vlwというフォントファイルを日本語含めて作成することはできるようなのですが、フォントも配布となるとサイズが大きくなってしまうので。
データビジュアライジング
この本とても勉強になります。いろいろと刺激されてなにか作りたくなります。おすすめです!

“ビジュアライジング・データ ―Processingによる情報視覚化手法”
追記:
・いくつか外れ値がある
・日本語表示できない。
と問題がありますが、アプレットをアップしましたのでぜひお試しください。フォーカスがあたっている状態で郵便番号を入力すると、一致したエリアがハイライトされます。ズームモードに入るには右下の「ZOOM」をクリックします。

Tags: ,

Article (記事)

GAEOアプリをDashcodeでiPhone/iPodTouch対応

12.19.08 | Permalink | Comment?

Dashcodeすばらしい。iPhone/iPodTouch向けのWEBサイトを簡単に作ることができます。GUIでパーツを配置するだけでデザインの編集ができます。
デバッガ機能も充実していて、ブレークポイント、スタックトレースなど豊富なデバック機能を活用することができます。
今回はGoogleAppEngineOil(GAEO)で作成していたアプリケーションのフロントにiPhone/iPodTouch用のテンプレートを作成しました。
GAEOではBaseControllerに_is_iphoneというフラグを持っているため、今回はiPhone/iPodTouchからのアクセスは/touchというアドレスにリダイレクトします。if self._is_iphone: self.redirect(”/touch”)
TouchControllerのindexテンプレートにDashcodeで作成したindex.htmlを設定します。
app.yamlでDashcodeで生成したjsやcss、画像などを正しく読めるように設定します。
iPhone/iPodTouchでデータを取得するには、Dashcodeでmain.jsからXMLHttpRequestを通してデータを取得するようになるため、GAEOからはテキスト/JSON形式でデータを返すようにしました。

def get_hello_data(self):

self.render(text=Hellodata.getTestData())

Tags: , ,

Article (記事)

OSXにLaTeX環境(Emacs+YaTex+LaTex+TeXShop)を構築してPDFプレビューする

12.10.08 | Permalink | Comment?

めんどうなことはせずにとにかくTeX環境をOSX上に構築したい人向けです。OSX10.5(Leopald)にMacPort環境を構築していて既に、CarbonEmacsを使っている前提で書いています。
もしも、以前にteTeXやpTeXなどをインストールしようとしていた場合はすべてアンインストールしておいてください。残っているとインストール途中にエラーが発生します。
インストール
portも最新になるようにsudo port selfupgradeしておきます。
pTexをインストールします。かなり時間がかかります。

sudo port install pTeX +hiragino +otf +utf8 +motif +macosx

TeXShopをダウンロードしdmgをバインドし、アプリケーションにコピーしてインストールします。
TexShopを起動して、環境設定を開きます。
「設定プロファイル」からTexShop標準を選択し標準のプロファイルをロードします。
「エンコーディング」をUTF-8に変更します。
「プレビュー」タブの「外部エディタ」「プレビューの自動更新」にチェックを入れます。
「内部設定」タブの「パス設定」(pdf)、Distiller(Ghostscript)両方を/opt/local/binに変更します。
「TeX + dvips + distiller」の「TeXプログラム」を~/Library/TeXShop/bin/ptex2pdf-utf8に変更します。
下の「LaTexプログラム」を~/Library/TeXShop/bin/platex2pdf-utf8にします。
「タイプセット」タブを開いて「ディフォルトのスクリプト」を「TeX + Ghostscript」に変更します。
ターミナルを開いて

$ cp ~/Library/TeXShop/bin/ptex2pdf-euc ~/Library/TeXShop/bin/ptex2pdf-utf8
$ cp ~/Library/TeXShop/bin/platex2pdf-euc ~/Library/TeXShop/bin/platex2pdf-utf8

と入力します。
TexShopを再起動します。
TexShopで動作確認
TeXShopが起動したら、テキスト入力画面に

\documentclass[12pt]{jarticle}
\begin{document}

\title{タイトル}
\author{テスト}
\date{\today}
\maketitle

ハローLaTeX

\end{document}

と入力し、保存します。上部にある「タイプセット」をクリックすると、TeXがコンパイルされPDFが表示されます。
Emacs+YaTeX設定
Emacsを起動し、「Help」-「Carbon Emacs Package」-「Net-Install」-「YaTeX」を選択し、YaTeXをインストールします。
~/.emacs.elに次の行を追加します。

;;Tex
(setq auto-mode-alist
(cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
(setq tex-command "~/Library/TeXShop/bin/platex2pdf-utf8" dvi2-command "open -a TexShop")

emacsを起動し、hellotex.texファイルを作成します。
先ほどと同じように

\documentclass[12pt]{jarticle}
\begin{document}

\title{タイトル}
\author{テスト}
\date{\today}
\maketitle

ハローLaTeX

\end{document}

と入力し保存します。
C-t jでコンパイルした後、C-t pでプレビューができることを確認してください。
YaTexには様々な便利な機能がありますので「YaTeX World」の野鳥入門を一通り試してみるとよいでしょう。
texファイルの変更後はC-t jでコンパイルし、プレビュー画面に移動することで自動更新してくれますが、バックグラウンドで再読み込みしたい場合はSKIMがよさそうです。
SKIMをダウンロードして、インストール。「Preference」の「Sync」タブの「Check for file changes」にチェックを入れ、「PDF-TeX Sync support」の「Preset:」から「Emacs」を選択します。
~/.emacs.elのdvi2-command “open -a TexShop”をdvi2-command [...]

Tags: ,

Article (記事)

GoogleAppEngineOil 0.1安定板 0.2アップデート

09.27.08 | Permalink | Comment?

ようやくベータが外れ、GoogleAppEngineOil(GAEO)のバージョン0.1の安定板リリースされています。
更に進行中の0.2には次のような機能が追加されています。
1. respond_toサポート
ルーティングルールに r.connect(’:controller/:action/:id.:format’)と書くことで、次のようにrespond_toメソッドを利用できます。

self.respond_to(
html=lambda: self.render('<h1>Hello World</h1>'),
js=lambda: self.render(script='alert("hello, world")')
)

http://www.example.com/foo/bar.htmlの場合は<h1>Hello World</h1>の行をhttp://example.com/foo/bar.jsの場合はjavascriptの行を実行させることができます。
2. XHRリクエスト判別
GAEOはX-Requested-WithをつかってXMLHttpRequestオブジェクトによってリクエストされたか調べます。
self._is_xhrでTRUE/FALSEを判別できます。
3. renderメソッドにscriptタイプ追加
self.render(script=”alert(’!’”)のようにして、text/javascriptデータを送信できます。
4. RESTメソッド
self._request_methodを使用して’get’, ‘put’, ‘head’などのリクエストメソッドを判別できます。
Railsにできるだけ近づこうとしているのでしょうか。今後ともGAEO楽しみです。

Tags: ,

Article (記事)

Google App Engineで予約管理アプリケーションを作ってみた

09.15.08 | Permalink | Comment?

GoogleAppEngine(GAE)とGoogleAppEngineOil(GAEO)がだいたいわかったところで、簡単な顧客&予約管理アプリケーションを作ってみました。
RubyonRailsになれていると、ちょっとしたことに詰まったりしてしまいます。RoRとGAEOの対応表なんかがあればよいな。
リレーションモデルではないとされているGAEのデータストレージもGAEOのBaseModel.belongs_to()を使うことで、RoRっぽく簡単にリレーションを利用できました。
最後にjQueryをつかって使いやすいUIにしてみました。
GoogleAppEngineかなり使えます。

Tags:

Article (記事)

Google App Engine Oil入門1

09.02.08 | Permalink | Comment?

GoogleAppEngineを使い始めたらぜひGoogleAppEigineOilを導入してみましょう。
このオイルはGoogleAppEngineをより簡単に利用するためのMVCフレームワークを提供してくれるため、より少ない設定、コーディングでアプリケーションを作成できるようになります。
Google App Engine Oilのサイトにチュートリアル基本編が用意されているので、それに従ってすすめてみます。
Google App Engine Oilインストール
まずはGoogle App Engine Oilのサイトからgaeo-trunk-rxx.zipファイルをダウンロードし、適当なディレクトリに配置します。私は ~/sdk/gaeoに配置しました。
実行権限を付加します。

chmod +x ~/sdk/gaeo/bin/*

環境変数設定
~/.bashrcを開いて次のようにパスを設定します。

export GAEO_HOME='/home/ericsk/sdk/gaeo' # put your installation directory here.
export PATH='${GAEO_HOME}/bin:${PATH}'

ターミナルを開いて変更を反映します。

source ~/.bashrc

gaeo.pyとタイプして、実行してみましょう。次のように表示されたら正常にインストールできています。エラーが発生した場合は、Pythonのバージョンが2.5以上か確認してみてください。

Usage: /home/ericsk/sdk/gaeo/bin/gaeo.py &amp;amp;amp;amp;amp;amp;amp;amp;lt;project name&amp;amp;amp;amp;amp;amp;amp;amp;gt;

ハローワールド
新しいアプリケーションを早速作成してみましょう。ワーキングディレクトリに移動し、gaeo.py helloとタイプします。

&amp;amp;amp;amp;amp;amp;amp;amp;gt;gaeo.py hello

The &amp;amp;amp;amp;amp;amp;amp;amp;quot;hello&amp;amp;amp;amp;amp;amp;amp;amp;quot; project has been created.

これだけで基本的なアプリケーションが準備されています。
自動生成されたファイル
app.yaml, favicon.ico, main.py
app.yamlとmain.pyがApp Engineアプリケーションのメインファイルとなります。app.yamlとmain.pyを編集してアプリケーションの設定を変更することができます。 favicon.icoは〜のファイルです。ブラウザによって最初にfavicon.icoを取得しようとするので、エラーにログが残るのを防ぐために作成されています。
application/
アプリケーションコード(コントローラー、モデル、テンプレート)がこのディレクトリに配置されます。
assets/
app.yaml内で、画像、スタイルシート、Javascriptファイルのような静的なファイルをそれぞれ、assets/img、assets/css、and assets/js
ディレクトリに配置すると設定しています。foo.pngをassets/imgディレクトリに配置したら、http:///img/foo.pngでアクセスすることができます。スタイルシートやJavascriptファイルも同様です。
gaeo/
Google App Engine Oil(GAEO)のコアライブラリです。新しいGAEOがリリースされれば、このディレクトリを新しいものに置き換えるだけでアップデートすることができます。SVNをつかって常に最新版を利用することもできます。
最新のGAEOライブラリはhttp://google-app-engine-oil.googlecode.com/svn/trunk/gaeo にあります。
GoogleAppEngineLuncherでこのhelloアプリケーションを指定して実行します。
http://localhost:8080/ にアクセスし、正しく動作している事が確認できます。
初期画面に表示されているファイルは/application/template/welcome/index.htmlに置かれています。

Tags: , ,

Article (記事)

OSXでGoogle App Engineをはじめる

08.31.08 | Permalink | Comment?

GoogleAppEngineとはGoogle社拡張性に飛んだサーバーを利用してアプリケーションを配置することのできるサービスで、非常に簡単にwebアプリケーションを数百万規模のユーザーへ提供することができます。
現在はPythonを使ってアプリケーションを開発することができます。
早速OSXに開発環境を用意してみます。
開発環境
OSX LeopardであればPython2.5が標準でインストールされてます。
ターミナルを立ち上げ

python

と入力。

Python 2.5.1 (r251:54863, Mar  7 2008, 03:19:34)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.

と表示されればOK。GoogleAppEngineにはPython2.5以上が必要ですので、2.4以下であればpythonのウェブサイトから最新版をダウンロードしてインストールしてください。
GoogleAppEngineのインストール
http://code.google.com/intl/ja/appengine/downloads.html
GoogleAppEngineサイトからOSX版をダウンロードし、dmgを開いてGoogleAppEngineLuncherをApplicationsフォルダに移動します。GUIのランチャーを起動して簡単に、ローカルサーバーの起動、停止、appspotに配置できるようになっています。
本家のチュートリアルがわかりやすいので、これに従って進みましょう。
helloworldディレクトリは ~/appengine/helloworldとしました。
GoogleAppEngineLuncherの+アイコンをクリックして、作成したディレクトリを指定します。RunボタンとStopボタンでローカルサーバーを起動してアプリケーションをテストすることができます。
ローカルでテストが終われば、Deployボタンを押すだけでアプリケーションをインターネット上に公開することができます。
公開されているAPIの中でしかプログラムを作成できませんが、ユーザー管理、データ管理、画像編集、メール送信など基本的なAPIは用意されており、これほど簡単にGoogleのサーバーインフラを利用できるのはとても魅力的です。

Tags: ,

Article (記事)

あなたのコードに使うべき21のRubyトリック

06.03.08 | Permalink | Comment?

rubyinside.comに 21 Ruby Tricks You Should Be Using In Your Own Codeという記事が掲載されていました。
よりRubyコードをシンプルに読みやすくするために覚えておいて損はないですね。
勉強になりましたので抄訳しました。
1 - 正規表現にマッチした文字を抜き出す簡単な方法
文字列から正規表現にマッチした文字を抜き出す場合、通常はmatchもソッドを使いますが、次のようなショートカット方法もあります。

email = “Fred Bloggs <fred@bloggs.com>”email.match(/<(.*?)>/)[1] # => “fred@bloggs.com”email[/<(.*?)>/, 1] # => “fred@bloggs.com”email.match(/(x)/)[1] [...]

Tags:

Article (記事)

Arduinoコンテスト2008

06.02.08 | Permalink | Comment?

Arduinoをつかった各種ハードウェアのコンテスト結果優勝者の映像が公開されています。
Arduinoを使ったドアのロックシステムやGPSと連動した方向指示機、ロボットなどおもしろいソリューションが公開されています。

Tags: ,
« Previous Entries