2010年3月27日土曜日

[android]Android ndk をいじってみる

メモです。

とりあえず、ここからndkを落としてきます。
http://developer.android.com/intl/ja/sdk/ndk/index.html


あとは、下記を参考にして、ビルドします。
http://d.hatena.ne.jp/bs-android/20090707/

気をつけなければいけないのは、Cファイル(hello-jni だったら、hello-jni.c)を書き換えたら、

make APP=hello-jni

のように、makeを通し、EclipseもF5を押してRefrechしてからビルドしないといけません。ここを忘れてはまりました。

2010年3月24日水曜日

Clojure 再帰

Clojureの再帰の書き方

(loop [result [] x 5]
  (if (zero? x)
    result
    (recur (conj result x) (dec x))))
-> [5 4 3 2 1]

loopは別にループをさせるわけではなく、[]に変数の束縛を作って、その後のS式を評価するもので、letとほぼ同じ。ただ、loopは、recurを読んだときに、loopを指定された引数で実行して、再帰を実現するようです。

Clojure マップ

Clojureには、マップというキーと値をペアとして持つコレクションがあります。
例えば、
{"x" "a" "y" "b"}
とかき、xがキーでその対応する値がa, yがキーでその対応する値がbとなります。キーと値を交互に書くわけです。

キーにはキーワード(:xxx)がよくつかわれます。
{ :first-name "Saki" :family-name "Aibu"}
みたいに。

マップは関数としても使えます。

(def girl { :first-name "Saki" :family-name "Aibu"})
(girl :first-name)
みたいに。

で、Clojureには分配束縛っていうものがあって、必要なものだけバインドすることができます。

(defn greet-author [{fname :first-name}]
  (println "Hello, " fname ))
(greet-author {:first-name "Saki" :family-name "Aibu"})
とかくと、
Hello,Saki
と表示されます。

分配束縛はマップ以外にも使えます。

(let [[x y] [1 2 3]]
  [x y])
これは、[1 2]になります。

2010年3月23日火曜日

Clojure勉強中



「プログラミングClojure」を読みはじめました。

今日はちょっとだけ、2章の真ん中あたりまで読みました。

LISPとの目立った違いは、
  • 関数の書き方が、 (defn func [arg] body)
    のように defn で定義するのと、引数が[]であること。
  • 無名関数の書き方がlamdaじゃなくてfn
  • かっこが少なくて済む
    (cond (< x 10) "less" (> x 10) "more")
    みたいに
です。(まあ、全部shibuya.lispで聞いた話ですが。。。詳細はhttp://shibuya.lisp-users.org/2010/03/21/sltt-5-mov-2/を見た方がいいと思います。。)

「初めての人のためのLISP」が読み終わったばっかりなので、
できれば、ClojureとCommon Lispと、あとSchemeとを比べたいなーっと思ってます。
(時間作ってやりたいな。。。)

2010年3月22日月曜日

Shibuya.lisp テクニカルトーク #5に行ってきました。

Shibuya.lisp テクニカルトーク #5に行ってきました。初参戦!

Shibuya.lispのテクニカルトークは毎回「行きたい!」と思ってたのですが、
ぼやぼやしていていつも満員になっていたので、すごく楽しみでした。

今回は Clojure の話が多かったです。
Clojure は defnとか、引数に[]を使うとか、ちょっと癖のある記法だったので、
敬遠していたのですが、
yshigeruさんの話はわかりやすかったし、hayamizさんが Clojure のいいところの説明をしてくれたので、
すげー興味が湧きました。
それに、JavaVM上で動くってことはGAEでも動くし(これは深町さんもおっしゃってました)、もしかしたらAndroid上でも動くので、覚えておいて損はないかもって思いました。(JVMってすげー。)

で、結局その場で「プログラミングClojure」買っちゃいました☆
読まなくちゃ。

あとコードバトンのコードは読んで勉強したいなと思います。
できれば、次があれば参加したいな!!

本当に楽しかったです!次回も参加したいな!今度は懇親会も出たいな。

2010年3月21日日曜日

[android]AndroidでWebページを表示する方法

AndroidでWEBページを表示する方法

1.マニフェストファイルに以下を追加
<uses-permission android:name="android.permission.INTERNET"&rt;</uses-permission&rt;

2.コードを以下のように記述

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class HelloWebkit extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        WebView webView = new WebView(this);
        webView.loadUrl("http://www.yahoo.co.jp");
        setContentView(webView);
    }
}
たぶんこれでOK

2010年3月14日日曜日

初めての人のためのLISP



買っちゃった!