最近気になる曲

最近は、流行の歌をiPodに入れる事もあまりなくなったんですが
ここ数日非常に気になる曲が。。。
なので、今日はそれを紹介

サントリー甲乙混和焼酎のCM曲。


エレファントカシマシが歌う
「ハナウタ〜遠い昔からの物語〜」
いや〜CMがまたリアル夫婦の田辺誠一と大塚寧々が出演してます。
ちなみに、以下のアルバムに収録される予定のようです。
iTuneで買いだな!

昇れる太陽(初回限定盤)(DVD付)

昇れる太陽(初回限定盤)(DVD付)

ET-KING/君想う花


ET-KINGの曲は結婚式でも使ったりして、
元々好きなアーティストです。
大黒町Loveってところもww

怒髪天/労働CALLING


ウンガラガッタww
火吹いてるプロジェクトのメンバーは
この気持ちが痛いほど伝わるww

西友CM


クレイジーケンバンドが歌ってるみたいだけど、
発売もなにもされてないからCMオンリー曲かな?
とりあえず好き。

蒼穹のファフナー Shangri-La


このアニメ知ってる訳じゃないんですが、
CR蒼穹のファフナー」 のCMで初めて聞いて
なぜか耳に残ってたんでww
最近のアニメ曲もがんばってるなと率直に感じました。

Android 1.5 の eclipse設定

さて、昨日はSDKのインストールまでを説明しました。
今日は、eclipseのプラグインの更新を説明します。
※ちなみに、環境はMACです。

1.既存プラグインの削除
eclipseを立ち上げて、help > software update
プラグインリストが表示されるので、下記2点をUninstallする
:Android Developer Tools
:Android Editor

2.ADT-0.9をインストール

SDKをダウンロードした所から、ADT Pluginをダウンロードします。
eclipse help > software update で Available Softwareタブを選択します
右側の「Add Site」ボタンをクリックします。
そうすると下記画像のウィンドウがでるので「Archive」をクリックして、
ダウンロードしたファイルを選択します。

あとは、ウィザードのままインストールすればOK。
今までのアプリをデバッグする際は、DebugConfigで下記画像のように
Targetを選択すれば今まで通り、起動できます。

ドイツのプログラミング大会

ちょっと前のニュースですが、ドイツでプログラミング大会が開かれました。
その時の4キロバイト部門の優勝作品

ただただ、驚嘆に値します。
画像、音声、すべてをプログラミングで行っているって・・・
想像できない。SGEEEEEEEEEEEEEEEEEEEE

ちなみに、そのexeがここで落とせます。
実行すると、CPUフル稼働させて処理してるww

開発現場の掟発売記念

さて、今まで会社の上司や同僚にブログ教えてくださいと言われては
拒み続けてきたんですが、上司(id:iad_otomamay)が苦労して
書いていた本が発売されたので宣伝も兼ねてトラバ送りってばらします。

開発現場の掟 (プロの鉄則) エンジニアが現場で生き残るための極意 (開発の現場セレクション)

開発現場の掟 (プロの鉄則) エンジニアが現場で生き残るための極意 (開発の現場セレクション)

なぜ、今回紹介しようかと思ったのかというと、
この本が、id:iad_otomamayさんにとって意味が違っていたからです。


id:iad_otomamayさんの転機、ある女性への思いであったりと*1
こんな形で表現できるid:iad_otomamayさんを実は尊敬している訳です。
フィーリングで生きている私には到底できない芸当です。


上司というよりも、友達w?の感覚のid:iad_otomamayさん
後輩からやたらめったら弄られるキャラのid:iad_otomamayさん


発売記念も兼ねてブログで感謝を述べさえてもらいました。




だから・・・給料あげ(ry

*1:詳しくはトラバ先を参照

Android 1.5 Early Lock

一昨日に、Android 1.5 Early Lockをローカルに入れたので
その時のメモ。

1.ダウンロード

ダウンロードしたら、ローカルの好きな場所においてください。

2.今までのパスを変更
私の環境では、Pathを通していたのでそれを1.5に変更します。

3.emulatorの起動
それではemulatorを起動するんですが、従来のように
そのままでは起動できません。
下記のコマンドで、準備します。
まず、1.1環境を構築

trash$ android create avd --target 1 --name sdk1.1
Android 1.1 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD 'sdk1.1' based on Android 1.1

次に、1.5の環境を構築

trash$ android create avd --target 2 --name sdk1.5
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD 'sdk1.5' based on Android 1.5

nameはただの名前なので、好きな名前にしてもらってOKです。
targetですが、下記で確認できます。

trash$ android list targets
Available Android targets:
[1] Android 1.1
     API level: 2
     Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
[2] Android 1.5
     API level: 3
     Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
[3] Add-on: Google APIs
     Vendor: Google Inc.
     Description: Android + Google APIs
     Based on Android 1.5 (API level 3)
     Libraries:
     * com.google.android.maps (maps.jar)
         API for Google Maps
     Skins: HVGA (default), HVGA-L, QVGA-P, HVGA-P, QVGA-L

さて、これで準備は出来ました。
emulatorの起動は、

$emulator @sdk1.5

1.5で起動します。

起動画面変わってるw


ロケールに日本語選べるし!
4.eclipse plugin
さて、開発環境であるeclipseのプラグインも更新します。

続きは、明日w

キーイベントの取得

今回は、キーイベントを取得して処理するというのを
実装してみます。
本当は、タッチイベントで画面をスライドさせたらっていう
処理がしたかったんですが
とりあえず、キーイベントから勉強の意味もかねて。

まず、メインですが今後タッチイベントなども勉強することを
考えて、ListViewでそれぞれ呼びやすくしておきます。

public class Practice extends Activity implements AdapterView.OnItemClickListener{
	
	private static final String[] MENU= {
		"TuchSample","KeyEventSample","WebKitSample"
	};
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
               android.R.layout.simple_list_item_1, MENU);
        ListView listView = (ListView) findViewById(android.R.id.list);
        
        listView.setAdapter(adapter);
        
        listView.setClickable(true);
        listView.setFocusable(true);
        listView.setOnItemClickListener(this);
    }

    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
       	switch(position) {
    		case 0:
    			break;			
    		case 1:
    			Intent intent = new Intent(this,net.kronosjp.sample.android.keyevent.KeyEventAct.class);
    			startActivityForResult(intent, RESULT_OK);
    			break;
    		default:
    			break;
    	}
    }
}

まあ、これは説明不用ですね。
今はキーイベントが選択された部分だけ実装してます。

次に、実際のキーイベントを取得する画面です。

画像はicon.pngですw

今回は、構成として上記画面表示および、イベント取得として、
Viewを継承したKeyEventViewクラスを作成します。
さらに、KeyEventViewには、View.OnKeyListenerをimplementsしておきます。
とりあえず、Toastを表示して確認するまでの実装です。

public class KeyEventView extends View implements View.OnKeyListener{

	private int w;
	private int h;
	private int x;
	private int y;
	private Bitmap bm;
	private final Paint paint = new Paint();
	
	public KeyEventView(Context context) {
		super(context);
		setFocusable(true);
		setOnKeyListener(this);
		Drawable drw = context.getResources().getDrawable(R.drawable.icon);
		w = drw.getIntrinsicWidth();
		h = drw.getIntrinsicHeight();
		
		bm = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
		Canvas cv = new Canvas(bm);
		
		drw.setBounds(0, 0, w, h);
		drw.draw(cv);
		
	}
	
	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh) {
		w = w/2;
		h = h/2;
	}
	
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		canvas.drawColor(color.background_dark);
		canvas.drawBitmap(bm, x, y,paint);
	}
	
	public boolean onKey(View v, int keyCode, KeyEvent event) {
		int action = event.getAction();
		switch(action) {
		case KeyEvent.ACTION_UP:
			Toast.makeText(getContext(), "ActionUp", Toast.LENGTH_SHORT).show();
			break;
		case KeyEvent.ACTION_DOWN:
			Toast.makeText(getContext(), "ActionDown", Toast.LENGTH_SHORT).show();
			break;
		case KeyEvent.ACTION_MULTIPLE:
			Toast.makeText(getContext(), "ActionMultiple", Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}
		return false;
	}

}

さて説明ですが、コンストラクタでicon.pngの描画してます。
このクラスでのポイントは、onKeyメソッドを使ってることです。
Viewを継承した段階で、onKeyUpメソッドやonKeyDownメソッドをオーバーライドして使えます。
しかし、処理をまとめる意味でonKeyメソッドを使用してみました。
KeyEventクラスにはキーイベント処理判別定数があるんで問題なしでした。

まあ、これでとりあえずは動いたんですが
判別って、上下しかないわけ?
右とか左とか押したら、下判別されたり上判別されたりと色々なわけです(汗

画像を右へ移動とかいう場合はどうするんだろ・・・

もう少し凝った実装して、色々弄ってみるか。
あっ、でも明日はタッチイベントの実装にしよう。

姿勢

さて、4月になり順々にシステムリリースをしている訳なんですが、
私が今、参画しているプロジェクトでの話です。

私は、一つのシステムではなく色々とサブシステムを手伝いながら
渡り歩いています。

ちょうど今手伝っているチームは、要件に対する影響などの
調査漏れ、仕様漏れのせいでかなり稼働が高くなっています。
そこで、私が手伝いに入っている訳です。
ですが・・・チームメンバーに中にはそんな状況なのに


「やることがない」


と言うメンバーがいる。


wせdrftgyふじこlp; orz


実際、やることは沢山あります。
日本人気質っていうのかな・・・
私は、こういう時当人には言わずに
自分でタスクをさばきます。


言うのが面倒になる訳です。
良くチーム状況とタスクを把握すれば
何をやらなければならないなどすぐに分かります。
それが、経験10年以上の人ともなると
そんなのは当たり前かと。


こういう事ってチームメンバーとして言わないと
その人の為にもならないのは分かってるんですが
なかなか言えないもんなんですよね・・


誰か偉い人、良い言い方あったら教えてください。