Vaio type P(VPCP11ALJ)にUbuntu10.04インストール

タイトルのとおりVaio type PへのUbuntuインストール。
なんで、10.10じゃないんだ!!

10.10-netbook, 10.10-desktopを試して見たけど・・・
Unable to find a medium containing a live file system
ってエラーが出て、「F6」でオプションいじってもダメってことで、そっちは改めてトライすることにしました。Windows潰したあとだったんで、早急に必要だったのさっとという言い訳(^^;

10.04はそれほど問題なく、USBからインストールできました。
まぁ、インストールだけなら以前からやってたんだけど、問題はポインティングデバイスを認識しないこと!!
でもようやっと、情報が色々出てきたんで再度トライ。

結論から言うと、ポインティングデバイスサウンドもできましたーーー!

ここからは、単純に手順。

1.Ubuntuインストール

2.アップデートマネージャでカーネルをアップデート

カーネル上げずにやってもダメだったので、2.6.32-26にアップデート

3./etc/default/grubにオプション追加

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nopnp i8042.noloop"

これでポインティングデバイスはおk

次はサウンド
これは単純で、ドライバを入れるだけ。

add-apt-repository ppa:ubuntu-audio-dev/ppa
apt-get update
apt-get install linux-alsa-driver-modules-2.6.32-26-generic

modules移行は、"uname -r"で自分の環境に合ったものを選択。

ついでに・・・
Firefoxプラグインは、adobeから落としたtar.gzを展開して以下のように配置すればyoutubeとかも見れるようになる。

/usr/lib/firefox-addons/plugins/libflashplayer.so

これだけだと、描画が遅いんで、psbいれないとダメかなぁ

コンポーネントの配置あれこれ

先日心が折れてから、少しまが開いたけどボタンを設置してみる。

その際に、今まではViewとかを自前でインスタンス生成してたけど、layoutを使用してコンポーネントを配置してみた。

とりあえず、サンプルはButtonクラスを使用した場合だけど、Viewでも似たようなもの。
ただし、継承したりして独自実装した場合はXMLの記述が異なるが、それは機会があれば説明する。

LinearLayout layout = new LinearLayout(this);
layout.setBackgroundColor(Color.WHITE);
layout.setOrientation(LinearLayout.VERTICAL);
this.setContentView(layout);

// ボタンの作成
Button button = new Button(this);
button.setText("ボタン");
button.setOnClickListener(this);
button.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
));
layout.addView(button);

見てのとおり、LinearLayoutとButtonのインスタンスを生成して、こねこねしている。LinearLayoutは、子コンポーネントを直線上に配置するレイアウトクラス。

そして、以下がlayout/main.xmlを使用した場合。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/layout"
    android:orientation="vertical"
    android:background="#ffffff"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
>
    <Button
        android:text="ボタン"
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    >
    </Button>
</LinearLayout>

XMLのパラメータは、自前でインスタンスを生成する場合とほぼ一致するので、
それほど悩まないと思う。

this.setContentView(R.layout.main);
Button button = (Button) this.findViewById(R.id.button);

そして、onCreate()に実装するコードは、たったこれだけになる。
this.findViewById()で欲しいオブジェクトを指定すれば、自前で生成しなくても取得できるので、イベントハンドラの設定などもできる。

ちなみにButtonでキャストしてるのは、findViewById()で取得するとViewで返ってくるみたいなので。

どっちが推奨されている書き方なのかは知らないけど、おそらく後者ではないかと思う。
「コードを書かないということは、バグがないということ」なので・・・
でも、書くコードが少ないと比例してモチベも下がる(´・ω・`)

ボタンのイベント処理

今日もAndroid!!!

で、今日はボタンを置いて、イベント処理してみようってことでコードを書きかき・・・
抽象化して、chain処理とlistener作って・・・と考えて、コードを書いてみた。
まだ途中だけど、実装クラスまで作ってイベント処理して一応できそうな感じ。

public abstract class TouchButton
{
    private TouchButton next            = null;
    private TouchButtonListner callback = null;

    public TouchButton() {
    }

    public TouchButton chain(TouchButton touchButton) {
        this.next = touchButton;
        return this.next;
    }

    public final void onTouchEvent(MotionEvent event) {
        if (this.checkEvent(event))
            this.callback.onTouch();
        else if (this.next != null)
            this.next.onTouchEvent(event);
    }

    public final void onDrawButton(Canvas canvas) {
        this.drawButton(canvas);
        if (this.next != null)
            this.next.onDrawButton(canvas);
    }

    public final void setTouchButtonListener(TouchButtonListener listener) {
        this.callback = listener;
    }

    protected abstract void drawButton(Canvas canvas);

    protected abstract boolean checkEvent(MotionEvent event);

}

・・・でも、Androidってボタンクラスあるのね。しかも、ちゃんとイベント処理もできるやつ・・・(´・ω・`)

折れたよ、今日は・・・orz
ちゃんと調べなかったオレが悪いんだけどね。

明日は、正規のボタンクラスで実装しようっと。

Hadoopに入門

最近Hadoopが気になってるので動かしてみる。
知らずに動かすのもなんなので色々調べて、なんとなく分散ファイルシステムについて理解した気になってから・・・

自宅のCentOSにインストールをトライ。
すでに色々入ってるので、細かいものははしょって、今回いれたのは以下のもの

jdk-6u23-linux-x64
hadoop-0.21.0

jdkは展開と実行だけという簡単仕様なので省略。
で、以下が起動までの流れ。

Hadoop実行用ユーザの作成

# useradd -u 1030 hadoop

Hadoopの展開と設置

hadoop$ tar xfz hadoop-0.21.0.tar.gz
# mv hadoop-0.21.0 /usr/local
# ln -s /usr/local/hadoop-0.21.0 /usr/local/hadoop

core-site.xmlの編集

hadoop$ vi /usr/local/hadoop/conf/core-site.xml



fs.default.name
hdfs://localhost:9000

hdfs-site.xmlの編集

hadoop$ vi /usr/local/hadoop/conf/hdfs-site.xml



dfs.replication
1

mapred-site.xmlの編集

hadoop$ vi /usr/local/hadoop/conf/mapred-site.xml



mapred.job.tracker
localhost:9001

hadoop-env.shの編集

hadoop$ vi /usr/local/hadoop/conf/hadoop-env.sh

コメントを外して、パスの修正を実施

# The java implementation to use. Required.
export JAVA_HOME=/usr/java/default

Hadoopは通信にSSHを使用するそうなので、証明書の作成

hadoop$ mkdir ~/.ssh
hadoop$ ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa
hadoop$ cp -p ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
hadoop$ chmod 700 ~/.ssh
hadoop$ chmod 611 ~/.ssh/authorized_keys
hadoop$ chmod 600 ~/.ssh/id_dsa

で、1回ログインしておく

hadoop$ ssh localhost

最後に、HDFS領域の初期化。
デフォルトで、/tmp/hadoop-hadoopを使用するようなので、変更方法を今度調べよう。

hadoop$ /usr/local/hadoop/bin/hadoop namenode -format

とりあえず擬似分散モードで起動

hadoop$ /usr/local/hadoop/bin/start-all.sh

色々動いている風なので、"top"、"netstat -na"で確認してみる。
動いてる(・∀・)

あとは、WEBベースの管理画面へレッツアクセスヽ(´ー`)ノ

http://your.host.name:50070/dfshealth.jsp
http://your.host.name:50030/jobtracker.jsp

仕様の勉強に時間がかかったので、今日はここまで!

ドハマリ

線と線を結ぶための傾き計算にドハマリ・・・

ドットを10単位で描画していたのだが、傾き計算で除算するのを忘れてたorz

もう、画面でドットが飛ぶ飛ぶwww

2時間も悩んだよorz

int slope = (int)(this.current[1] - this.previous[1]) / (this.current[0] - this.previous[0]);
int slope = (int)(this.current[1] - this.previous[1]) / (this.current[0] - this.previous[0]) / this.pointSize;

開発開始

今年のオレは一味違うぜっ!!ってことで、開発日記的なものをつけてみる。
とは言いつつも、過去の日記は最大1ヶ月(宿題)程度の人間だが、
日記はサボっても開発は続けていくぜ。

以前からちょこちょことはやっていたのだが・・・
Androidアプリの開発などをやってみようと思う。

まずは開発環境の準備から。といっても、すでにあるので説明だけ。

Eclipe3.3(Europa)
Android SDK
JDK

このあたりは、親切なサイトがたくさんあるので、簡単にインストールできる。

そして、実機は虎の子、Xperia

このあたりが揃っていれば、すぐにでも開発は開始できる。

Android Marketへのデベロッパー登録も必要だけれど、これは何かしらが
完成したら追々やっていくつもり。

ではでは、何を創るかというと・・・マ○モ的な何か。
あれ欲しいんだけど、意外と高いんだよねーってことで創ることにした。

なんだか、ダラダラ書いてしまったので、開発開始は次回!