fc2ブログ

t100のプログラミング脱出作戦

自分のプログラミング脳をプログラムにして、いつかプログラミングから脱出してやるぞっ!とか夢見ながら、日々プログラム作っていく 百野 貴博 の日記です!今は、屋号『百蔵。』として、Silverlight・WPFを追跡中です! (2007/09/30)
クロージャーのチュートリアル(What's a Closure?)
JavaScriptのクロージャーを解説した、What's a Closure? という素晴らしいエントリーを見つけましたので、翻訳に挑戦してみました!(`・ω・´)9m

これは凄く分かりやすかったです!
クロージャーって何だろうって思っている方なら、きっと
「あぁ。クロージャーってそんな感じなんだ。素敵(*´д`*)」
ってなるんじゃないかと思います!

内容は12の章に分かれていて、本家サイトでは章の終わりにコードを書くミニテストが用意されています。
これも、とても勉強になります。

面白そうだけど、英語読むのはちょっとパワーも時間もかかるし面倒という方は、ぜひ下記翻訳と合わせて楽しんで頂けると嬉しいです!

Let's クロージャー!

(゚∀゚)
⇒続きを読む ヽ(´ー`)ノ
スポンサーサイト



テーマ: プログラミング - ジャンル: コンピュータ

Clojureの"->"マクロ(右矢印みたいなやつ)
Clojureのサンプルコードを見ていたら、時々 (-> xxx yyy) みたいなコードに出会うことがあります。

これ、、、なんですのん。ヽ(;´д`)ノ


プログラミングClojure本にも書いてないし、グーグル先生に聞こうにも記号だからうまく検索できな、、、
と思ったら、「Clojure arrow」 のキーワードで遂に解説ページを発見!(・∀・)わーい

Understanding the Clojure -> macro

どうも、関数を連続で呼び出す為のマクロみたいです。
上記ページをかいつまむと、こんな感じです。


例えば、こんな式があったとします。

(-> (Math/sqrt 25) int list)



これは、次のように解釈されます。

1.(Math/sqrt 25) が実行されます。 25 の平方根で、5.0 が戻り値です。(`・ω・´)9m
2.int 関数に5.0が渡されます。結果は 5 (整数値)になりますね。
3.list 関数に、5 が渡されます。 5を持ったリスト (5) になります。


同じ内容を、いつものS式に書きなおすとこうなります。

(list (int (Math/sqrt 25)))



おおっ。なんか分かってしまったでしょうか?

この、-> マクロは、"thread" と呼ばれるそうです。(Java.lang.Thread とは別の意味です)
動作としては、中に含まれるフォームを順に実行し、結果を次の一番外側のS式の2番目の引数として渡します。
#たいていの場合、S式の一番目は関数なので、”2番目の引数”とは関数の第一引数と読み替えてOKだと思います。


おお。めっちゃ便利やん。めっちゃ読みやすいやん。


また、このマクロを使った式を書く場合に
Clojureプログラマ達(Clojurians?)は、引数が渡される場所を明示するためにカンマを書くことがあるようです。

例えば、こんな感じに。

(-> (/ 144 12) (/ ,,, 2 3) str keyword list)
=> (:2)

(-> (/ 144 12) (* ,,, 4 (/ 2 3)) str keyword (list ,,, :33))
=> (:32 :33)


↑ 2番目の例で、(/ 144 12) の結果が、次の (* ,,, 4 (/ 2 3)) の一番外側の * の引数になっています。 内側にある / の引数にはなっていないです。
「一番外側のS式の2番目の引数」とは、こういう意味なんですね。

Clojureでは、カンマは空白とみなされます。
ですので、上記のカンマも処理としての意味は無く、読みやすさのために記号として書いているだけです。
#カンマを書くことで、その場所に代入するよう制御できるという意味ではないです。

また、記述するカンマの数も特に決まりは無いようで、好みの問題ということでした。(元のブログによると)



これは、読みやすいコードの為の強力な武器になりそうですね!!

それではまた!!(*゚∀゚)=3

テーマ: プログラミング - ジャンル: コンピュータ

leiningen のプラグインを作る。
Clojureのビルドツール Leiningen (ライニンジェン?)のプラグインの作り方をまとめてみました。(`・ω・´)9m

Leiningen は、Clojureで書かれたビルドツールでMavenのようなものです。
#といいつつ、自分はMavenを実務でちゃんと使ったことないですがっ・・・(・∀・;)


プラグインは、Leiningen にタスクを追加する仕組みです。
Leiningenのタスクは、leiningen.$TASK という名前空間に$TASKという名前で関数を定義するという命名ルールになっています。
この命名規則に従って関数を作成すれば、あとはクラスパスに追加するだけでLeiningenで使えるようになります。
簡単ですね!


では、さっそくmyplugin という名前で簡単なプラグインを作ってみましょう!(*´д`*)

てってけてけてけてってってーん。
てってけてけてけてってってーん。(三分クッキングのテーマで)

⇒続きを読む ヽ(´ー`)ノ

テーマ: プログラミング - ジャンル: コンピュータ

XperiaでHello World
1年ぶりくらいでAndroid開発を再開しました。

今日は、Android SDKで作ったHello WorldをXperiaで動かすところまで出来たので、簡単にメモを残しておきたいと思います。
今回は、アプリが形になるところまで行きたいな!


ちなみに書籍は下記を使いつつ勉強しています。

ただ、実機へのアプリのインストールはネット経由で解説されていて、USB接続でデバッグや実機への転送部分が少し手薄だったようなので、この部分は他の方のブログを参考にさせて頂きました。

ネットの情報も本も充実していて助かりますねー。

ゼロからのAndroidアプリケーション開発入門ゼロからのAndroidアプリケーション開発入門
(2011/01/13)
鈴木 哲哉

商品詳細を見る



開発は、Windows7 32bit で行っています。

■開発環境のインストール
下記ソフトウェアをインストールしました。

- Eclipse Helios (3.6.1) の Eclipse IDE for Java Developers
- Android SDK の installer_r09-windows.exe

Eclipseのダウンロードはこちら
Android SDKのダウンロードはこちら

Android SDKはインストーラーだったので、Program Files/Android 以下にインストールされました。
Eclipse はZipを解凍して展開だったのですが、書籍が Program File 以下にコピーして解説していたので従いました。

結構珍しいパターンだなー。大体、Cドライブ直下とかが多いのに。
最近のWindowsは、権限がうるさいので Program Files以下にアプリがある倍、実は管理者権限で実行していないと正しく動きません(プログラムが自動更新できないとか)とかあって、面倒くさいですよね。

ぶつぶつ

最後に、Android SDK の tools フォルダにパスを通しておきます。


■Eclipseの環境設定

Eclipseの環境設定(Android SDKと連携するプラグインのインストール等)は、私は本を見ながらやったのですが、こちらのブログでもスクリーンショット付で詳しく解説してくださっています。

手順も私がやったのとほぼ同じです。

Android 開発環境の構築 Android SDKのインストールからXperiaの開発環境構築まで


Eclipse環境が出来てしまえば、エミュレーターでHelo Worldまではスグいけると思います。


■Xperia との接続

Xperia をUSB接続してデバッグできるようにするのも、基本的には上記サイトで書かれていた手順のとおりです。

ただ、デバッグ用のUSBドライバが、Xperia のOSを2.1 にアップデートした後ではうまく使えないみたいです。
#CDBrowser\Drivers.zip のファイルだとうまくインストールできません。

私の場合は、下記手順でUSBドライバをインストールしました。
- 管理者権限でエクスプローラーを実行し、上記Drivers.zip に含まれる DPInst.exe を実行
- インストールに失敗しましたダイアログが出るので、Windows Update を使ってドライバを探す 的なオプションを有効にする
すると、Windows Updateから適切なドライバばダウンロードされます。

■ ADB コマンドを使えるようにする。

実機を使ったデバッグや、USB経由で実機へのアプリのインストールは、Android SDKに含まれる adb というツールを使います。

このツール、今までは Android SDK の tools フォルダ以下にあったようなのですが、私が入れたSDKでは代わりに
「adb_has_moved.txt」というテキストファイルが置かれていました。(・ω・) 移動しとる。

どうも、Android SDK の platform-tools というフォルダに移動したようです。
もし、このフォルダが見当たらない場合は、SDK and AVD Manager を起動して、Android SDK Platform-tools をインストールする必要があります。
さらに、platform-tools にもパスを通しておくとよいでしょう。(adb コマンドを使うので)


とりあえず以上で、Eclipseで作成したHello World アプリがXperiaに転送できました。

#adb コマンドを使ったアプリの転送方法も、上記ブログで解説されていた通り下記コマンドでOKでした。

>adb -d install -r [作ったアプリ名].apk

おお。Xperiaに二つ目のHello Worldアプリがインストールされました。(ダメ)

実機で動くと、やはり実感がわくなー。
明日からいろんな機能を触ってみようっと。


JavaScript でゲームループを作る (The Game Loop)
Javascript Game Development - The Game Loop

こちらのブログで面白そうな記事を見つけたので、翻訳に挑戦してみます。

訳がヘタレなのはご容赦下さい。(´・ω・`)
誤訳を見つけたら教えて頂けると嬉しいです!
⇒続きを読む ヽ(´ー`)ノ