2010年9月16日木曜日

【emacs】文字コード/文字化け

emacsにおいて,各種機能に用いられる文字コードは画面左下に記載されている.左下に

-uuu



-uuS

等と書いてある部分が文字コードを表記している.日本語で使用する主な文字コードは次のように表記される.

u: utf-8
S: shift-jis
E: euc-jp

文字化けが起きている場合,設定されている文字コードと異なる文字コードでファイルを開いたと考えられる.自分のMac内でそのような現象が起きないようにするため,筆者は -uuu で統一するようにしている.

ここで,3つある表記は次の意味を持つ.

-uuu
-123

と各文字に番号を振った場合,それらは以下の意味を持つ.

1: keyboard-cording-system
2: terminal-cording-system
3: buffer-file-cording-system

文字コードを変更する場合はそれぞれの機能を指定して,以下のようにコマンドを打てば良い.

M-x set-keyboard-cording-system
M-x set-terminal-cording-system
M-x set-buffer-file-cording-system

なお,M-xはデフォルトだとエスケープキー+xに割り振られている.

##########################


文字化けが発生している場合,文字コードを変更しても文字化けを直すことは出来ない.文字化けした文字のまま文字コードを変換してしまうため,症状が悪化し,もとの文字に戻せなくなることがある.

文字化けを直す場合は,文字コードを変換するのではなく,文字コードを変換せずに,別な文字コードで開く.文字化けしない文字コードで開くことが出来た後に,デフォルトで使用している文字コードに変換すればよい.

別な文字コードでファイルを開く場合は以下のコマンドを使用する.

他のファイルを開く場合
C-x RET c 文字コード RET C-x C-f

開いてるファイルを開きなおす場合
C-x RET c 文字コード RET C-x C-v RET

C-xはコントロールキー+xであり,RETはエンターキー(リターン)を表す.

2010年9月14日火曜日

【LifeHack】本水没時の対応

先日,風呂に本を落とした.比較的しっかり落とした.ここまでやったのは司馬遼太郎の妖怪以来,読書人生2度目である.

本が水没してブヨブヨになったときの対処法は


1.絞らずに,冷凍庫の中に立てて置く

これにより,基本的に対応可能である(完全に元に戻ることは無い.諸行無常である.)
この際,絞らないことが重要である.お湯に落ちた場合,本を止めている糊が溶け出しているため,外力により本のページがずれたり,取れたりしてしまう.本側面から圧縮力を書けた場合でも,内部応力としてせん断方向に力がかかっている.これにより,本の形状が崩壊する可能性がある.
一方で,水没時に水中から上げた時の水圧や水の抵抗により,同様にページのズレが発生する場合がある.
これに対応するためには

2.冷凍後,レンジで30秒加熱する

冷凍の結果,本がパリパリになっていることが確認出来る.
このときに,上記の理由より,本のページがずれたり,本のページが剥離している場合がある.加えて,水没時の本の吸水量が多い場合はページ同士が固着している事がある.
この場合は,ページのズレや剥離を直そうとせず,加えて絶対にページの固着を外そうとせずに,レンジに入れ,30秒間加熱する.これにより,糊が溶け出し,ページの剥離を直すことが出来る.加えて,ページの固着が解決する.

3.1に戻る.

レンジ加熱後は必ず冷凍庫に戻し,しばし待つ.


これは冷凍庫の温度が水の融点より低いのがポイントである.液体は常に蒸発と凝縮を並列的に行っている.この際,大気が乾燥している時,言い換えると湿度が低い場合は蒸発量が増加する.冷凍庫内の温度が水の融点より低いため,大気中の水分は凝縮,凝固し,庫内表面の霜となる.すなわち,大気中に放散された水分は液体ではなく,固体で存在するようになるため,冷凍庫内の湿度は極めて低くなる.これにより,本表面の水分は大気中に蒸発していく.
また,水分が凝結する際に毛細管現象により本表面ににじみだし,凝結する.(霜柱の原理と同様.) これにより,本の紙面に染みこんだ水が外にでる.
これにより,冷凍庫内の本が乾燥していく.

以上により乾燥しなかった場合は,電子レンジで加熱する.レンジはマイクロ波により水分子を陽動し,ブラウン運動を誘発し,内部から発熱させる.すなわち,レンジは物質内の水分の温度を上げる装置である.究極に乾燥しているものはレンジに入れても温度が上がらない.
紙面は水を多量に含んだ樹脂を整形し,乾燥させることにより製作する.すなわち,レンジで加熱しても,食品などのように温度が上昇することがない.一方で,水没した際に含んだ水分はレンジ加熱により温度があがる.これにより,蒸発量が増え,水分が外部に放出される.また,ページ同士を接着している糊は水分を含むため,レンジ加熱により温度が上昇する.本を製作する際に使用する糊は高温で溶け出す特徴がある(ホットボンドのようなもの).これにより糊が再び紙面にしみこみ,ページ同士を再接着する.

以上が原理である.

ページがずれてしまった場合は,乾燥後,カッター等で切断するしかない.無理に戻しても形状の崩壊を招くだけである.

2010年9月9日木曜日

【Mac】【Android】Android開発環境の構築

Mac で Android アプリを開発するときは,Android SDK + Eclipse が定石のようである.


Eclipse より xcode のほうが使いやすいから,そっちでやりたいのだが・・・


流れとしては,SDKのインストール→Eclipseのインストール→SDKとEclipseの連携の設定→Eclipseの設定→AVD(Android Virtual Deviceかな?)の設定となる.


まずはSDKのインストール


インストールなどに関しては,Android SDK | Android Developers のダウンロードリンク下部にある Quick Start の通りすればよい.
Quick Startには,Eclipse に関しても記述があるのでその通り実行すればインストールから設定まで完了する.


具体的には


1.同じページからandroid-sdk_r06-mac_86.zip をダウンロードする.


2.次に JDK (Jave Developers Kit) をインストールする.versionは 5 または 6 が必要である.Macの場合,初めから入っているのでバージョンの確認をする.Application/Utility/Java Preferencesを実行し,アップレットプラグインが J2SE 5.0 または Jave SE 6.0 がアクティブに成っている場合はインストール不要.必要な場合は Java SE Downloads のページから入れる.


3.Eclipse を Eclipse Downloads からダウンロードし,インストールする.この際,間違わずに Eclipse IDE for Java Developers を選択する.


4.ダウンロードし,解凍した android-sdk-mac_86 を適当な場所におく.今回は /opt/ 以下に置くようにした.(MacPortsのディレクトリを間借りする形で)


5.android-sdk-mac_86/tools にパスを通す.今回は /opt 以下に置いたので,自分の~ディレクトリの .bash_profile 内に以下を書き加える. .bash_profile が無い場合は作成する.

PATH="$PATH":/opt/android-sdk-mac_86/tools
なお,4.で置いたディレクトリにパスを通すため,別な場所に置いた場合/リネームした場合は,その通りに上記パスを変更すればよい.

6.解凍した Eclipse を適当な場所に移動する.今回は Application/ 以下に置いた.

7.Application/eclipse/Eclipse を実行する.ワークスペースの場所を聞かれるので,適宜各個対応されたい.

8.ADT plugin for Eclipse をインストールする.メニューのHelp内にある Install New Software の Work with: のTextFieldに https://dl-ssl.google.com/android/eclipse/ と記入する.少々待つと,中央部にDeveloper Toolsと表示されるので,チェックボックスにチェックをいれ,Nextをクリックし,インストール.途中色々聞かれるのでちゃんと読むこと.英語でもちゃんと読むように.Eclipse 再起動後

9.Eclipse 環境設定内の Android の設定を行う.左側のAndroidを選択する.右側にパスを入力する TextField があるので,Android SDK をおいたディレクトリにパスを通す.このとき,前のように tools にパスを通すのではなく,Android SDK にパスを通すようにする.今回は/opt以下においたので,次のように書く.
/opt/android-sdk-mac_86

これで基本的な開発環境は完成.AVDの設定等は後ほど.

2010年9月5日日曜日

【Processing】基本構造

Processing は基本的に以下の2つの関数をベースにして動作する.
void setup();
void draw();

setup() は起動時に1度だけ実行される関数であり,主に変数や描画エリアの初期化に使用される.一方,draw() は内部処理により発生するループ毎に実行される関数である.draw() 内に NoLoop() を書くとループを行わず,draw() は1度だけ読み込まれる.

setup(), draw() 関数を宣言しなくてもProcessingは動作する.ただし,何も読み込まない何もしないプログラムが完成するだけであるが.

**** ソース例 ****
void setup(){
   size(window_size_x, window_size_y) //ウインドウサイズの設定
}

void draw(){
   background(0); //背景を黒に塗りつぶし.白は255

   hogehogeDrawing(hogehoge); //外部描画関数などを呼び出したり,
   line( hogehoge ); //直接描画内容を書いたりする.
}

【Processing】配列について

配列はポインタを作成した後に,動的メモリ配置で作成しなくてはいけない.

ポインタ宣言は以下の通りである.
type_name value_name[];

動的メモリ配置は以下の通りである.
new type_ name[num];

ここで
type_name:変数の型.int, float
value_name:変数の名前
num:配列の次元
である.

具体的な使い方として,例えば float 型の 2次元配列を作成する場合は以下のようにする.
float hoge[] = new float[2];
int 型の 2×2次元配列は以下のようにする.
int hoge[][] = new int[2][3];

使うときはCと同様に数字で指定すれば配列の値が出てくる.
0から始まるので注意.

ソース例

void draw(){
   float hoge[][] =  new float[2][2];
   int i, j;
   for(i = 0;i < 2;i ++){
      for(j = 0;j < 2;j ++){
          hoge[i][j] = (float)(i * j);
         println(hoge[i][j]);
      }
   }

【Android】自動生成 R.java の更新について

gen [Generated Jave Files] ディレクトリ下に自動で生成される R.java は自動で更新されるが,この自動更新が起きない場合がある.

R.java 内には res/layout/main.xml で作成した GUI の情報が入っている.
この main.xml 内でエラーがある場合は自動更新されない.

R.java が更新されない場合は main.xml のバグを確認する.

【Android】不明エラー

エラー領域に
Unparsed aapt error(s)! Check the console for output.
というエラーが出たときは,右クリックから消去でOK

もう一回発生したら,原因等調べる.

<追記>
.xml編集画面において RUN するとこのエラーが発生する模様.

2010年9月4日土曜日

【Android】main.out.xml

layoutディレクトリ内に main.xml の他に main.out.xml が出来たときには速やかに消す.
デバッガが出力するファイルらしい.あるとランできない.


<追記>
.xml編集画面において RUN するとこのファイルが生成される模様.