ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

お酒はもう嫌

2010年11月21日 15時15分39秒 | 独り言
一昨日の夜、研究室のお誕生日会に遅れて参加。
食べ物は既にほとんど無く、アルコール度数の高いお酒のみの状態。

勧められるがままにすきっ腹にアルコール度数50%超えるようなお酒が入っていき、
それから数時間後、いつの間にか意識を失っていました。

気を失いつつ、2回嘔吐していたようです。
1回目は研究室、2回目は自宅の布団に運び込まれた後布団の上で。
強烈な二日酔いと戦いながら、汚れたシャツなどを洗濯し、
布団カバーと枕カバーをはずして洗い、干してからまたトイレで吐きました。
吐いたといっても食べ物が入ってなかったので、
とんでもなく苦い、そしてほんのり酸っぱいよくわからない液体が出てきました。

調べたら、酸っぱいのは胃液で、
苦いのは胃の更に奥から逆流してきた胆汁らしいですね。
なのでよくわからない液体は胃液と胆汁の混ざったものだったと。

そしてトイレでまた暫く気を失ってました(寝てました)。
意識虚ろな状態で、
「あ、これが急性アルコール中毒ってやつなのかな。
ここで帰らぬ人となっちゃうのかな。」
などと考えながら、走馬灯のようなものを見た気がします。

それ以降もかなり苦しい状態が続き、
深く速い呼吸で苦しさを紛らわしたりしていました。

そして丸一日休み、今日は昼に起床して
牛丼大盛りとフライドチキンを食べてようやく回復しました。
Wikipediaを見たら、影響の項目で
「意識の喪失」の後は「昏睡、死」のみであり、ゾッとしました。
もうこんな苦しい思いも危険な思いもしたくないので、
強いお酒を勧められても絶対に断ることにします。

生きててよかった~

教授「『power』を『力』って訳したら文系だよね」

2010年11月20日 16時26分47秒 | 科学
(昨日)
英語の論文を訳す授業で
「power」を「力」と訳している学生がいて
教授が
「forceじゃないんだからさ、ちゃんと訳そうよ。
文系ならそれで正しいでしょうけど、
我々工学屋がpowerを力って訳しちゃマズいよね。」

こういう発言にはドキッとさせられます。
ここで急に振られて、正解を答えることができなかったら
色々なものを失う気がしてならなくて、ものすごくこわばります。
(失うものなんてないのに)

そんなこと考えてると冷静に考えられなくなり、更にこわばり、
ますます冷静に考えられなくなり、という負のスパイラル。
もうちょっとこの性格なんとかしたい。

ちなみに正解は「仕事率」。

AndroidでUI部品乗っけたりイベントハンドラいじったりして遊んでみた

2010年11月19日 17時21分09秒 | ソフト開発日記
AndroidはじめてなのにいきなりOpenGL ESから
入ろうとしてたのが間違いだと思い、
とりあえずいろいろ機能確認してみることに。

日経ソフトウェア2010年1月号を参考に、簡単なコードを書いてみました。
1番下のボタンをクリックすると、他のUI部品の状態を
エディット・テキスト領域に表示する単純なプログラムです。

結果、画像のようにうまくいきました。
AndroidはJavaベースであり、Javaはかじっているため
「UI部品のインスタンス生成、リスナー設定」
「レイアウトの設定」
「addViewメソッドで部品を追加」
を抵抗なく理解できました。よかった。

地味にちょっと戸惑ったのは、
チェックボックスやトグルボタンの選択を判定するメソッドが、
○○.isSelected()ではなく、○○.isChecked()であった点。
isSelected()メソッドも普通にあったので、isChecked()になかなか気づきませんでした。
isSelected()はフォーカスあたっているかどうかを判定するとかなのかな?

以下にソースコードのメモ。
ここのブログに張り付けるとインデント無くなるの何とかならないかな。

==========================================================================================

package testapp.app;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.*;
import android.widget.*;

public class HelloWorldActivity extends Activity implements OnClickListener, OnKeyListener {

public EditText edit;
public RadioButton radio1, radio2;
public ToggleButton toggle;
public CheckBox checkBox;
public SeekBar seekBar;
public Spinner spinner;
public Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//エディットテキスト
edit = new EditText(this);
edit.setText("さんぷる");
edit.setOnKeyListener(this);

//ラジオボタン
RadioGroup group = new RadioGroup(this);
radio1 = new RadioButton(this);
radio1.setText("らじお1");
group.addView(radio1);
radio2 = new RadioButton(this);
radio2.setText("らじお2");
group.addView(radio2);

//トグルボタン
toggle = new ToggleButton(this);

//チェックボックス
checkBox = new CheckBox(this);
checkBox.setText("ちぇっく");

//シークバー
seekBar = new SeekBar(this);

//スピナー
spinner = new Spinner(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("あか");
adapter.add("みどり");
adapter.add("あお");
spinner.setAdapter(adapter);

//ボタン
button = new Button(this);
button.setText("ぼたん");
button.setOnClickListener(this);


//レイアウトの設定
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
layout.addView(edit);
layout.addView(group);
layout.addView(toggle);
layout.addView(checkBox);
layout.addView(seekBar);
layout.addView(spinner);
layout.addView(button);

}

//ボタンが押された時の処理
public void onClick(View v){
edit.setText("Button Pushed\n");

//ラジオボタン判定
if (radio1.isChecked()){
edit.append("radio = 1, ");
}else if (radio2.isChecked()){
edit.append("radio = 2, ");
}else {
edit.append("radio = off, ");
}

//トグルボタン判定
if (toggle.isChecked()){
edit.append("toggle = ON");
}else {
edit.append("toggle = OFF");
}

//チェックボックス判定
if (checkBox.isChecked()){
edit.append("check = ON\n");
}else {
edit.append("check = OFF\n");
}

//シークバー判定
edit.append("seek = " + seekBar.getProgress() + ", ");

//スピナー判定
switch(spinner.getSelectedItemPosition()){
case 0:
edit.append("spinner = Red");
break;
case 1:
edit.append("spinner = Green");
break;
case 2:
edit.append("spinner = Blue");
break;
default:
edit.append("spinner = ERR");
}


}

public boolean onKey(View v, int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_ENTER){
return true;
}
return false;
}
}

OpenGL ES 2.0 を早速使いたい その2

2010年11月18日 14時51分50秒 | ソフト開発日記
・・・NetBeansでやろうとしてもどうもうまくいきませんでした。
そもそも、Androidの開発にNetBeansのGUIエディタは使えない気がするので
ひとまずEclipseで環境を整えました。
その手順メモ。

③Eclipseのインストール
Eclipseをダウンロードして、Cとかに解凍します。
以降、日本語化されたEclipseを想定(今回Eclipse3.6.1を適用)。

④ADTのインストール
ADT(Android Development Tools)をインストール。
ツールバーの[ヘルプ] → [新規ソフトウェアのインストール] → [追加] と進み、
名前は適当に入れてロケーションには
「http://dl-ssl.google.com/android/eclipse/」
または、「https://dl-ssl.google.com/android/eclipse/」
と入力し、[OK]を押す。

作業対象が先ほど追加したリポジトリになっていることを確認し、
[保留中]となっているのを待つ。
(ひたすら待ってても何も変わらない場合は、
作業対象のコンボボックスのリストを表示させるとパッと表示されるかもしれません。)

[Developer Tools]が表示されたらチェックして、[次へ]等を押しまくりインストール。
インストール後の再起動が終わったら、
ツールバーの[ウィンドウ] → [設定] → [Android] と進み
AndroidのSDK Locationを、SDKを入れた場所に設定。
(私の場合、「C:\android-sdk-windows」)

⑤Androidエミュレータ(Android Virtual Device:アンドロイド仮想デバイス)
最後に、
ツールバーの[ウィンドウ] → [Android AVD Manager] を選択し
[New]ボタンで適当な名前と、Targetに開発したいAndroidのバージョンを設定し、
[Create AVD]ボタンでアンドロイドエミュレータの設定完了。
(私はauのIS01を想定しているので、Android1.6を選択。)

ちなみに仮想マシンはJava VMではなくてDalvik VMという特別なものを使うらしい。

⑥実行
サンプルコードを入力して、実行してみました。
すると上の画像のように、Android自体はちゃんと動いてくれました。
(初回起動には約1分程度、何回か起動してたら20秒くらいに。)

しかし、作成したアプリケーションはちゃんと動いてくれませんでした。
文字は表示されるものの、図形が表示されない。
SDKのインストール間違ったのかな・・。

出てきた警告文を調べると

[2010-11-18 14:50:31 - HelloQuad] WARNING: Application does not specify an API level requirement!
[2010-11-18 14:50:31 - HelloQuad] Device API version is 4 (Android 1.6)


の2つ。ここまで来るだけでそこそこ疲れたので、ちょこっと休憩します。

OpenGL ES 2.0 を早速使いたい

2010年11月17日 16時00分30秒 | ソフト開発日記
図書館に購入してもらった
「OpenGL ES 2.0 プログラミングガイド」
を片手に、ちょっといじってみることに。

そして前書きを読んでいると、

「読者のみなさんには,コンピュータグラフィックスに関する
  しっかりした理解があるものとします.
「基本的な3Dの考え方は理解されていることを期待します.
「CやC++には慣れ親しんでいるということを前提とし,

と、ちょっと「ウッ」と不安になることが書かれていました。
プログラミングは独学のため偏った知識しかないですが、
とりあえず気にしないことにします。

そしてまず、
・Android2.0以降でないとOpenGL ES 2.0を直接使えないということ。
・そして先日購入したauのIS01のOSはAndroid1.6であるということ。
・IS01のOSがAndroid2.0以上にアップデートされる見込みはないということ。
・Android2.0未満ではOpenGL ES 1.0が使えるということ。
を知りました。

とりあえず、主要な機能はES2.0とES1.0であまり変わってないことを期待して
Android1.6のIS01向けにES1.0を使用したアプリを作っていこうと思います。

以下、環境設定メモ。
「Android SDK」「Java開発キット」「統合開発環境」が必要ということですが、
普段Java使っているため、ダウンロード&インストールするのは「Android SDK」のみ。

①Android SDKのダウンロード
ぐぐって最初に出てきたサイト
http://developer.android.com/sdk/index.html
から、OSに合った最新版のようなものをダウンロード。
Cドライブ直下とかに解凍しました。

②環境Pathの設定
[マイコンピュータ右クリック]→[システムの詳細設定]→[環境変数]へ移動。
Windows7だとマイコンピュータ右クリックした時に出てくる画面が
結構変わっててびっくりした。けどそこ以外は大体同じでした。

システム環境変数のPathを編集し、末尾に
「;C:\android-sdk-windows\tools」等とさっき解凍したファイルのtoolフォルダのパスを追加。

続いて、統合開発環境としてEclipseおよびEclipse用のプラグインが用意されていますが
なんとかしてNetBeansを使いたい(NetBeansで楽したい)。
今日はこれからNetBeansでAndroid開発できるようになるまでネットを漁ります。