Jessie インストール

インストール (ISK310-Fusion の場合)
・Jessieをインストール
・headlessで運用するのでGUIは要らないが、テスト等含めて、Gnomeも入れてみた。
■BIOS
起動時に
[F1] でBIOSメニュー、
[F12]で起動ドライブの選択。
■インストール
・debian-live-8.0.0-amd64-gnome-desktop.iso を UNetBootIn で USBに焼いてインストール。
・Graphical Installを選択してもテキストモードになる。
・ネットワークのインストールでメッセージ。
 「rtl_nic/rtl8168e-2.fw が無いので、…」
 と怒られるが無視して続行する。
再起動すると、Gnome3が起動してくれる。
とりあえず大きな問題はないようだ。
wheezyのようにfirmware-linux-nonfreeをインストールしなくてもいいようですね。
■sudo
# apt-get install sudo
次でユーザを追加
# visudo
 hoge ALL=(ALL) ALL
■ホームディレクトリの日本語フォルダを英語にする
$ LANG=C xdg-user-dirs-gtk-update
■シェルスクリプトパス(~/sh)の追加
$ vi ~/.bashrc
次を追記
PATH=”$PATH”:~/sh
■sshdの準備
# apt-get install sshd
# vi /etc/ssh/sshd_config
PasswordAuthentication no ← パスワードのみ(RSA key なし)の接続を禁止する
ChallengeResponseAuthentication no ← 公開鍵認証のみ使うので
sshのキーを作成
$ ssh-keygen -t rsa
$ cp ~/.ssh/id_rsa.pud ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
プライベート キー(~/.ssh/id_rsa)をクライアント マシンに移動。
クライアントからの接続は次のように、
$ ssh -i id_rsa hoge@192.168.2.20
■ WOL (マジックパケットで起動する設定)
必要なbiosの設定はマシンにより異なるので割愛。
そんなに分かりにくくはないと思う。
$ su –
でrootになる。
いろいろインストールしておく。
# apt-get install acpid wakeonlan ethtool etherwake
MACアドレスを確認しておく。
# ifconfig
 「ハードウェアアドレス xx:xx:xx:xx:xx:xx」と表示される。
WOL (wake on lan) の設定。
ip アドレスを固定にして、WOLの設定を追記
# vi /etc/network/interfaces
 iface eth0 inet static
 address 192.168.2.20
 network 192.168.2.0
 netmask 255.255.255.0
 broadcast 192.168.2.255
 gateway 192.168.2.xx
 ETHTOOL_OPTS=”wol g”
acpidを開始しておく。
# /etc/init.d/acpid start
 これをしておかないと、shutdownしても、(準備はできているが)電源が落ちない場合がある。
 …Reboot: Power Down
 で止まったままになる場合がある?
普通に終了する。
# shutdown -h now
or
# halt -p

Debian 8 Jessie リリース

なので、とりあえずインストールしてみようとしてたら、
WindowsがUpdateで再起動を繰り返し、不調…
ようやく修復したと思ったら、Grubが起動しない。
ということで、Ubuntu Gnome 15.4 を上書きインストール。
ついでにAndroid Studioをアップデート。
無駄に半日ほど時間を使いました。
もぅ、Windwosをメインマシンから追い出したほうがいいかなぁ。

Objective-c 事始め

まぁ色々ありまして、Objective-cを触ってみることにしました。
Mac買ってXcodeで…というのが定石らしいですが、先立つものが、ねぇ。
とりあえず、GUIまわりは無くても何とかならないものかとGoogleってみたら、
Xcodeの中ではgccが動いてる?
MacOS XはBSD系だし、ということはunix系にも優しいかな…
…debian等でもObjective-cのパッケージがあるんですね。
どうやらNeXT以来(?)、Objective-cはopenな開発環境であるようです。
Objective-c @wiki
gcc 4.6以降ではObjective-C 2.0にも対応しているらしい。
まずは使ってみます。
インストールはこちらを参考に、
http://www.net.c.dendai.ac.jp/programming/objc/kankyo/

> sudo apt-get install gobjc libgnustep-base-dev gnustep gnustep-devel

簡単なコードでテストしてみます。
http://d.hatena.ne.jp/elm200/20080426/1209211127

#import <objc/Object.h>

int main() {
 printf(“Hello World!\n”);
 return 0;
}

とコードを書いてtest1.mで保存、
コンパイルはObjective-cのライブラリを指定して、

> gcc test1.m -lobjc

warningが出ますが、無視して進む。

> ./a.out
Hello World!

動きました。

少しだけ広い世界

とはいえ、広いことはいいことだ?
Nexus5の画面の話です。
How to make your Nexus 5 screen bigger @AndroidPIT
root化する必要なくできるので試してみました。
Android Studioを既に入れてあるので、簡単にできました。
おぉ、画面が広い(笑
いくつかのアプリで画面表示の乱れがありますが、
おおよそもんだいなさそうなので、しばらく使ってみます。

ひどい…

GPS Loggerの続きです。
まぁ、前回のテストで分かっていたことですが、ひどいですね。
今回はTRANSYSTEMのロガー結果と比較してみました。
ほぼ同時にON/OFFしました。
GPS Logger Test
TRANSYSTEM TripMate 850
謹製Loggerは、
1.OnLocationChagedイベントで位置情報の変化を記録し、
2.15秒間隔で変化があればログする。
という設定です。
結果を見ると、
待機状態(?)やバックグラウンドでアプリの挙動を明示的に制御する必要がある、
ということですね (笑。
要はアプリのライフサイクルを知らないといけない。
いずれ消化しないといけないですが、
(私的には)優先順位は高くないので、
後回しにして次のアプリにいくかも。

GPS Logger とりあえず?

なんとなく完成?
疑問形ですが、GPS Loggerです。
テスト ログ
昨日と今日の午前中にコーディングしていて、一通りの道筋はつながりました。
Timerで15秒間隔でGPSのログを取ってます。
TRANSYSTEM TripMate 850と併用してログを比較しようと思ってたのですが、
こちらは電池切れていてログ取れませんでした (w
問題は多々ありますが、後は使いながらいじっていきます。
サーバとhttp通信する辺りは、色々と使えそうなので、他のアプリ作って遊んでみる予定。

AndroidからnginxへHttp通信でファイルを送る

■サーバ
次をそのまま使わせてもらいました。
nginx 1.6.2 + lua-nginx-moduleで簡易ファイルアップローダー
http://symfoware.blog68.fc2.com/blog-entry-1562.html
次のhtmlで確認しました。

<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="upload1" /><br />
<input type="file" name="upload2" /><br />
<input type="submit" value="Upload Files" />
</form>
</body>
</html>

■クライアント (Android)
次のUpload data to the server using MultipartRequestを参考に、
ANDROID HTTP CLIENT:GET,POST,DOWNLOA,UPLOAD MULTIPART REQUEST
http://www.survivingwithandroid.com/2013/05/android-http-downlod-upload-multipart.html
multipartだけど全体のfilenameをつけるために
メソッドconnectForMultipart()に追加、
public void connectForMultipart(String filename) throws Exception {

con.setRequestProperty(“filename”, filename);

}
後はメソッドdoInBackground()を少しいじっただけ、
とりあえず疎通だけできました!
セキュア関係はまだなので、そこを仕上げてからまとめ直します。

OpenResty第一歩

Web APIを使うためにOpenResty
Androidアプリとの通信のためにServer側でWebAPIを使いたい。
ざっとgoogleってみるとnginx+OpenRestyがよく使われているようなので試してみます。
まずは”Hello World!”までね。
ポリシーとしては、現状のnginxをできるだけそのままに、簡単に試してみます。
以下は、実際に行った記録ですが整理されていないので、過不足あるかもです。
参考:
OpenResty
 http://openresty.org/
The Programming Language Lua
 http://www.lua.org/
Lua – ウィキペディア
 http://ja.wikipedia.org/wiki/Lua
lua-nginx-module を使いこなす
 http://qiita.com/kz_takatsu/items/e94805a8e3cc285f9b33
■環境
Debian 7 Wheezy (64bit)
■nginxの設定
nginxが既に動いているので、新たにport 8000を使います。
public_html/test 以下にドキュメントを(必要があれば)置くことに。
nginxの設定に追記。
> sudo vi /etc/nginx/sites-available/default

server {
listen 8000;
location / {
root /home/(user)/public_html/test;
index index.html index.htm;
}
}

> sudo service nginx restart
(url):8000/でアクセスして確認。
■OpenRestyをインストール
参考:How to install OpenResty
 http://www.nginxtips.com/how-to-install-openresty/
> sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make
ngx_openresty-1.7.7.2.tar.gzをダウンロードしてインストール
> tar xzvf ngx_openresty-1.7.7.2.tar.gz
> cd ngx_openresty-1.7.7.2/
> sudo ./configure –with-luajit
> sudo make
> sudo make install
■luaをインストール
> sudo apt-get install lua5.2
■luaJITをインストール
参考:Debian 7 + nginx 1.6.2 + lua-nginx-moduleの環境構築
http://symfoware.blog68.fc2.com/blog-entry-1561.html
LuaJIT-2.0.3をダウンロードしてインストール
> tar zxf LuaJIT-2.0.3.tar.gz
> cd LuaJIT-2.0.3
> sudo make PREFIX=/opt/luajit
> sudo make install
■lua-nginx-module?
次をインストール
> sudo apt-get install nginx-extras
■luaを試してみる
先ほどの/etc/nginx/sites-available/defaultを修正

server {
listen 8000;
location / {
default_type text/html;
content_by_lua 'ngx.say("<p>hello, world</p>")';
}
}

これで8000にアクセスして、”hello, world” が表示された!

サウンド ミキサー周り

Debianを再インストールして、
ラジオを録音しようとしたら入力がマイクになっていた。
サウンドレコーダー(gnome-sound-recorder)の設定に”キャプチャ元”がないし…
以前(Gnome2)の記憶から色々と変わっているようです。
要はミキサーで設定するだけなのですが、整理してみました。
現在の環境は
Machine: Lenovo ThinkPad EDGE E135
OS: Debian Jessie (2015. 2. 1 Net install)
情報源はコチラ
:PulseAudio (日本語) @archlinux
https://wiki.archlinux.org/index.php/PulseAudio_(%E6%97%A5%E6%9C%AC%E8%AA%9E)
ミキサーはPulseAudio音量…(pavucontrol)を使います。
次でインストール
> sudo apt-get install pavucontrol
起動して、録音タブを開いてみると、真っ白。
ちょっと慌てたのですが、(笑
これは現在使用中のものが表示・設定できるのですね。
サウンドレコーダーを起動して、録音を開始すると、
同画面に表示され、設定できるようになりました。
キャプチャー元は3つの選択枝がありました。
1. Monitor of 内部オーディオ デジタルステレオ (HDMI)
2. Monitor of 内部オーディオ アナログステレオ
3. 内部オーディオ アナログステレオ
ここで2.を選択すると、無事録音出来ました。
サウンドレコーダーのClipファイルが、~/Recordings/ にできてますね。
なお、マイク入力をoffにするには、
PulseAudio音量…の入力装置タブで、内部マイクロフォンをミュートにします。