ハッシュ関数をなんちゃってで理解する

某誌の連載は「とりあえず様子見で3回くらいやってみましょうか」で始めて,今月発売の号で3回掲載になりましたので,終わりました.

担当編集の方々や読者からの反応は悪くは無かったと自負はしているのですが,もっと大枠のところで色々と思うところありまして.主に私の側の問題です.

計算機科学(工学)周りでは,高校生/高専生/(情報工学専攻以外の)大学生には触れる機会がないけれども,プログラミングするなら知らないと辛い概念が結構あります. 私自身も専攻は物理で,計算機科学の高等教育を受けておらず,しんどい思いをしてきました.身に沁みています. 計算機科学の触りを,初学者向けに軽め/短めに解説するという連載の趣旨そのものは,提案した私が言うのもナンですが,良いと思っています. どなたかパクっていただけないかなとも思うのですが…止めた私が言うのもナンですが.

ともあれ,期待して頂いた読者がいらっしゃったかもと思うと,申し訳ない気持ちはあります. エアお詫びを兼ね,「4回目があったとしたら,何を扱うかな」というお題で,小一時間で書いてみました. 編集/校正を通しておらず,イラストもありません. よって,読みづらいかもしれませんが,どうぞ.

Android (X86-jb) でのタッチスクリーンキャリブレーション

Android でのタッチスクリーンのキャリブレーション法について.情報が溢れていそうで,案外無い, あっても,古くて使えない. ので,記録しておきます.

(少なくとも AOSP での)タッチスクリーンサポートは,tslib を用いています. tslib には,ts_calibrate というコマンドがついています. ts_calibrate は,LinuxのフレームバッファとタッチパネルデバイスをLinuxのinputデバイスとを直接アクセスします. Android は,当然ながら,画面を押さえていますので,衝突します. そこで,下記のような手順で実行を行います.

以下,Android-x86.org が提供している x86-jb での手順です.

たぶん ICS 以降の Android の多くで使えるはずですが,中には,tslib を使っていないディストロもあります.(例えば AndroVM) あと,rootが必要です. スマホやパネルコンピュータなど,きちんと製品に作りこまれた状態でも,この方法は使えないかもしれません. (その場合,キャリブレーションツールが必要なら,きちんとしたのがついてくるだろうと思います.)

  1. 普通にAndroidを起動します.
  2. adb shell など用いて,コマンドラインアクセス可能にします.
  3. stop zygote stop bootanim stop surfaceflinger として,zygote サービスを停止します.
  4. 多くの場合,キャリブレーションデータを保存するディレクトリが存在しません.mkdir /data/system/tslibを実行して作ります.
  5. ts_calibrate を実行します.
  6. 言われるままにタッチします.
  7. 念のため,ls /data/system/tslib/pointercal などしてキャリブレーションデータが作成されていることを確認します.
  8. 止めた順番と逆順で,start surfaceflinger start bootanim start zygote として,zygote サービスを再開します.

補足

仮想コンソールがサポートされている場合,上記2の手順で,Alt+F1 などで移動し,作業することもできます. その場合,ts_calibrate を実行する際に必要なのは zygote サービスの停止だけです.