2011/09/24

ConnectBotを飼い慣らす

前回、フォント周りを変更して以降、
初めてサーバーメンテ実戦があった。

感想としては、
  • やっぱり画面サイズ強制は必須!
  • 入力文字フォントピッチの計算が、1文字分狂っていてどこまで入力内容が繋がっているか判読しづらい
  • ネットワークレスポンスが悪い時に、応答待ちか表示されない
不満を口にするなら、手を動かす。

1.画面サイズ強制
入力値永続化を実装するのは面倒なので、
初期値を実機に適した値で書き換える。
006SHのランドスケープでは、133x15が適している。
変更作業自体は、/res/layout/dia_resize.xml 中の
/LinearLayout/EditText[android:id="@+id/width"]

/LinearLayout/EditText[android:id="@+id/height"]

android:text属性値をそれぞれ書き換えるのみ

2.入力文字フォントピッチの修正
AVDで動かす分には感じなかった問題。どうも端末依存臭い。
それなら、いっそこの機能自体を書き換える。
/src/org/connectbot/TerminalView.java 203行付近の
int x = cursorColumn * bridge.charWidth;

int x = (cursorColumn > 0 ? cursorColumn -1 : cursorColumn) * bridge.charWidth;
に変更してお茶を濁した。

他は、とりあえず我慢する。

2011/09/23

オレオレ仮想アプライアンスを作ってみた

仮想アプライアンスキットを作成・公開出来るサービスIZUMO出雲が公開された。
Ubuntuベースキットのみとなっている点は、今後CentOSも検討しているらしい。
どんなディストロでもいいけれど、本気でアプライアンスやるなら、息が長いバージョンを採用すべきと思われる。
が、キット作成HowToページではその辺りを触れていない…
ま、いいか。
採用判断は、導入する本人や承認するその上長な訳で。
At Your Own Risk.

とりあえず、誰もキット登録をしていないので、
さっそく登録してみた。
取り掛かる前は、簡単だろうと思っていたものの、色々と試行錯誤してしまった。

まず、キット作成HowToにどこまで準拠すべきなのか。
ユーザー名やパスワード、ディレクトリ構成など枚挙にいまとがない。
真面目に仕事としてサーバー構築をやったことがある人には分かるけれど、
構築作業の成果物をどこまで詳細に明文化するかで作業ボリュームは全く変わる。

次に、マニュアル。
一般的なソフトウェア開発では、紙芝居やポンチ絵とメモ書きで纏めることが多いシロモノ。
中の人が作ったチュートリアル(マニュアル)見た途端、やる気が一気に失せた。
ターゲットユーザーが微妙過ぎです。
フォーラムの数少ない投稿から見ても、ユーザー層がエンスーやライトユーザーなど混じっているように感じる。
アプライアンス=素人向けなんだろうか?
色々考えだすと面倒なので、それっぽく体裁を整えてみた。

で、実際に登録したのは、
IZUMOに登録したLEMP仮想アプライアンス















LEMP ( Linux + Nginx + MySQL + PHP )キット
しばらく前からNginxネタをやりたいと思っていた所だったので、
実証実験を兼ねてやってみた。
これを利用する方々、皆さん人柱ですw
Nginxバージョンが古くて問題が多いようであれば、本家パッケージを検討したい。
PHPは、fpmを採用した。
今更、spawn-cgiなんて面倒。
APCなどのモダンなPHPアプリで使いそうなものは、あえて導入していない。
その辺は、LEMPどうこうの範囲じゃなくて、投入するアプリの仕様と判断した。
no battery included!

それにしても、テキトーに登録した割に初ユーザー仮想アプライアンスとして掲載されていることに
驚いてしまった。
中の人は、懐が深いんだなぁ。
今後、オレオレ仮想アプライアンスが大量に登録されて、中の人が忙殺されないことを願いたい。
後、某AppStoreのレビュアーみたいに傍若無人な対応も。

2011/09/10

ConnectBotのフォント変更

AndroidでSSHと言ったら、まず候補に上がるConnectBot
ハードウェアキーボード非搭載の端末では、
色々使い勝手の問題があるものの、Hacker's Keyboardを入れると実用性が増す。
更にもう一歩踏み込んでみた。

[やりたいこと]

  1. ターミナルのフォント変更
  2. ターミナルスクリーンサイズの固定
[ 結果(WVGA@AVD) ]
ConnectBot+Hacker's Keyboard オリジナル

ConnectBot+Hacker's Keyboard +TakaoGothic

1. ターミナルのフォント変更
大体の*nixでは、ターミナルでのフォントとプラットフォーム自体のフォントは別管理されている。
けれど、Androidでは色々な都合で好みのフォントが利用できないことが多い。
但し、アプリ限定であれば、多少イケル!という話。
幸いにして、ConnectBotはCanvasを主体にゴリゴリ実装されている?為、
簡単に変更できた。
まずは、ConnectBotソースを用意する。
ターミナルフォントには、Takaoフォントを利用しているので、
これを利用する。

次に、ソースをテキトーに展開して、
  • assetsに「TakaoGothic.ttf」、
  • toolsに「progaurd.jar」( README参照 )
を設置する。

最後に、「TerminalBridge.java」中、
defaultPaint.setTypeface(Typeface.MONOSPACE);

defaultPaint.setTypeface(Typeface.createFromAsset( manager.getAssets() , "TakaoGothic.ttf"));
に変更する。

後は、ビルドしてAVDや実機に投入する。

2.ターミナルスクリーンサイズの固定
これをやらないと、006sh実機ではスクリーン上にソフトウェアキーボードが乗ってしまって、
キーボードでターミナル末尾が見えない上になってしまっていた。
色々とソースを眺めたり、ググっている最中に「サイズ強制」メニューの存在を初めて知った・・・
画面スケールは、ボリューム操作キーで自動スケール、「サイズ強制」で指定画面サイズにスケールする仕様らしい。
但し、固定したサイズの永続化は実装されていないので、
セッション再接続時に再設定が必要な仕様となっている。
ここは実装したかったけれど、時間都合で諦めた。
とりあえず、当面は端末毎に最適値を覚えて接続時に手入力で我慢する。

以上で、少しはマシな環境が構築できた