PCBSD
長年使っている血圧計が壊れた。会社勤めしてる時に、出入りの業者さんが在庫整理 特別価格の2500円だったかで売ってくれたやつ。もう5年は優に使ってるから、十分に 元を取っているな。
新しいのを仕入れてこなければ。家電ショップに行ったら、あるわあるわ、安いのは 旅行用の携帯のやつ3000円ぐらいから、高いやつは2万円ぐらいまで。メーカーは、 テルモ、オムロン、パナソニックだったかな。年寄り需要を当て込んでの激戦区です。
体重計は、オムロン対タニタの対決でタニタに軍配を上げたので、今回はオムロンを チョイスしてみた。在庫整理っぽいやつで、3660円。今まで使っていたのと同機能で、 1月分のメモリー付き。
高機能のやつは、青歯で、パソコンへ測定データを転送出来るようになってたり、USB 経由でWebに転送してグラフ表示出来たりするみたいだけど、そんな贅沢しなくたって おいらは大丈夫。測定データを紙にメモしといて、10日分まとめて、キーパンチですよ。 後はPythonにお任せで、統計処理だね。
ipadのアプリを漁ってる時、無料の血圧ノートってのが有ったんで、ちょっと使ってみたけど、 入力が面倒で止めちゃった。いちいち入力する所をツンツンするなんてCUIな人間には 耐えられないですから。
今回の血圧計にパンフレットが付いてて、WellnessLink へ誘っていた。会員登録は無料みたいだけど、アンドドロドロイド推進派なのね。 まあ、自分のデータは自分で管理するから利用はしませんけど。
でも、血圧グラフの表示方法は学ぶべき点があるなあ。今までは高・低血圧値を2本の折れ線グラフで 表示してた。オムロンでは、ローソクチャート宜しく表示してる。これだと、高・低の血圧差も 一発でくっきりと視認出来るな。こういう棒グラフはどうやって描く?
最初に高血圧のデータを黒棒で書く。次に、低血圧のデータを白棒で書く。これで、 ろーそくチャートと言うか、宙に浮かんで棒になるな。pythonのグラフライブラリィー、matplotlibで やってみよっと。
子の面倒
前回知ったDeb専を見てたら、gdbを使って、forkしたプログラムの子供の部分を追跡 出来る事を知った。参考にやってみる。実験プログラムは下記
1 #include <stdio.h> /* printf, stderr, fprintf */ 2 #include <sys/types.h> /* pid_t */ 3 #include <unistd.h> /* _exit, fork */ 4 #include <stdlib.h> /* exit */ 5 6 int 7 main(void) 8 { 9 pid_t pid; 10 11 pid = fork(); 12 13 if (pid == 0) { // child 14 int j; 15 for (j = 0; j < 5; j++) { 16 printf("child: %d\n", j); 17 } 18 _exit(0); 19 } else { // parent 20 int i; 21 for (i = 0; i < 5; i++) { 22 printf("parent: %d\n", i); 23 } 24 exit(0); 25 } 26 return 0; 27 }
mainの中で、すぐに子を生み、親子揃って、番号を唱えるっていう辛気くさいやつです。
sakae@debian7:~/t$ gdb -q a.out Reading symbols from /home/sakae/t/a.out...done. (gdb) b main Breakpoint 1 at 0x80484b5: file fork.c, line 11. (gdb) b 16 Breakpoint 2 at 0x80484cf: file fork.c, line 16. (gdb) b 22 Breakpoint 3 at 0x8048505: file fork.c, line 22. (gdb) run Starting program: /home/sakae/t/a.out Breakpoint 1, main () at fork.c:11 11 pid = fork(); (gdb) c Continuing. Breakpoint 3, main () at fork.c:22 22 printf("parent: %d\n", i); (gdb) child: 0 child: 1 child: 2 child: 3 child: 4 Continuing. parent: 0 Breakpoint 3, main () at fork.c:22 22 printf("parent: %d\n", i); parent: 1 Breakpoint 3, main () at fork.c:22 22 printf("parent: %d\n", i);
何も設定しないと、gdbは親の方しか相手してくれません。困ったものです。こういう時は 普通、子の方に待ち時間を入れておいて、待ってる間に子のpidを調べて、gdbをアタッチ するってのが常套手段でした。 面倒ですね。
(gdb) set follow-fork-mode child (gdb) run Starting program: /home/sakae/t/a.out Breakpoint 1, main () at fork.c:11 11 pid = fork(); (gdb) c Continuing. [New process 4003] parent: 0 parent: 1 parent: 2 parent: 3 parent: 4 [Switching to process 4003] Breakpoint 2, main () at fork.c:16 16 printf("child: %d\n", j); (gdb) c Continuing. child: 0 Breakpoint 2, main () at fork.c:16 16 printf("child: %d\n", j);
gdbに子供を追っかけるよって指示すると、今度は、子供の方に注目してくれました。 子供が死ぬまで、gdbはけなげにfollowしてくれます。親の方を追いかけるようにするには 、set follow-fork-mode parent です。
followとか聞くと、ツイターを思い出しますが、おいらはツイターも顔本も嫌いなんで、 こちらのfollowなら、大歓迎ですよ。
PCBSD
FreeBSDのメーリングリストを久しぶりに読んでいたら、PCBSDを熱く薦める人が居た。その 人曰く、FreeBSDでサーバーだけじゃつまんないしょ。FreeBSDでDeskTopしたっていいじゃない。 Linuxはみんなやってる訳なんだから。それもそうだな。やってみんべ。(これで何度目だ?)
PCBSD Downloadへ行ってVMWARE版のDiskを 落としてくる。 jaist.ac.jpあたりから落とすのがよかろう。V-box版もあるからお好きに どうぞ。
2.4Gあったんで、無線経由だと15分ぐらいかかったかな。展開するのにまた15分ぐらい。 仮想マシンを作る。メモリーは豪華に1Gを割り当て。OSは後で入れるって事で、ダミーDISKを 作成。そうやって準備してから、展開したDiskファイルをダミーDISKに上書き。
こうしておいて起動。初回は、画面のサイズ、rootのパスワード、ユーザーの登録。使う言語、使う場所 (アジアの中の東京)を指定。これで使えるようになる。
/etc/rc.confをいじって、sshdをイネーブルにし、em0のNICにdhcpでIP Addressを振るようにし、 ファイアーヲールに22番の穴を開けるようにしたら、外側から覗けるようになった。
デフォではKDEが起動してくるけど、使えるようになるまでの待ち時間が長くてイライラ。
記念にDiskの状態をば
[sakae@pcbsd] ~% df -h Filesystem Size Used Avail Capacity Mounted on /dev/label/rootfs0 2G 316M 1.5G 17% / devfs 1.0k 1.0k 0B 100% /dev /dev/label/var0 2G 310M 1.5G 17% /var /dev/label/usr0 28G 7G 19G 27% /usr procfs 4.0k 4.0k 0B 100% /proc linprocfs 4.0k 4.0k 0B 100% /compat/linux/proc
イライラは体にも、マシンにも負担(メモリー大喰いで、300Mも使ってる)をかけるので、 ケチケチ作戦発動。使いもしない産婆さんとか印刷系は殺す。青歯なんてのも殺す。 おまけで、gdmも殺す。使いたい時だけ、Xが上がればいいや。どんなマネージャが動くねん?
ヒントを教えてもらいましょ。startまで入力して後はTABを押し、候補を列挙。
[sakae@pcbsd] ~% start start-pulseaudio-kde startkde startx start-pulseaudio-x11 startkde4 startxfce4 startfluxbox startlxde
ふむ、Debianとかとマネージャは合わせておくかな。ってんで、.xinitrc に
konsole & startlxde
とだけ設定。Xを使う時だけ、startx する事にしましたよ。rootユーザーだと、startkdeが お勧め。rootはcshって調子狂うなあ。chshしてみるか。
AppCafeなんて言うパッケージインストーラが付いてた(これって、pbiと言う、 独自パッケージコマンドのGUIラッパー)。 一般ユーザー権限でも アプリをインストール出来るのね。どんな仕組みになってるか追ってみると、、、
HomeDirにbinを自動的に用意。その中にはリンクファイルが出来ていて、本体は、/usr/pbi って所に入ってた。このdirは、ルートさんとオペレータ権限がある人が操作出来るのね。
[sakae@pcbsd /usr/pbi]$ ls -a ./ .pbiwrapper-i386 r-i386/ ../ etc/ scala-i386/ .hashdir/ gawk-i386/ share/ .hashdir-sakae/ gnuplot-i386/ [sakae@pcbsd /usr/pbi]$ ls -a gawk-i386/ ./ .xdg-mime/ libdata/ ../ bin/ libexec/ .auto-external-links etc/ man/ .pbi-hash-list gauk.png sbin/ .sbin/ include/ share/ .xdg-desktop/ info/ www/ .xdg-menu/ lib/
こんな具合に、それぞれのパッケージが完全に独立するような作りになってた。だから、 パッケージを気楽にuninstallしても、問題が他に波及する事は無い。ドットファイルに 管理情報とかを埋め込んでいるのね。
正にDiskのbit単価が安いんで、富豪的に使いましょって方針で管理してんだな。こういう のもありだな。(心情的には、もったいないって貧乏根性が見え隠れしてますが)
日本語のmanも読めるといいなってんで、pkg addしたんだけど、manpath.configが無いよと 言われてjmanが起動しない。古いFreeBSDから借りてきた。こういうの盲点だね。 どんな内容かと言うと
MANDATORY_MANPATH /usr/share/man MANDATORY_MANPATH /usr/share/openssl/man OPTIONAL_MANPATH /usr/local/man MANPATH_MAP /bin /usr/share/man MANPATH_MAP /usr/bin /usr/share/man MANPATH_MAP /usr/local/bin /usr/local/man
manの原稿の在り処と、コマンドの対応表だね。これって、jmanだけが使ってるのね。 パッケージに入れておいて欲しいな。このソースは、src/gnu/usr.bin/man/manpath/manpath.config,v に置いてあるはずなんだけど、今見たら無かったぞ。
マイブーム
近頃のipadアプリの我が家のブームは、 漢字力診断ってやつです。 女房がはまっていて、風呂に入るのを忘れてやってますよ。 ドロドロイド版も有るようですから、一粒で2度美味しい、アプリ作成SDKでも使って 作られているのかな。
読み取りは、まあ楽だけど、書き取りが難しい。これもそれも、自分で筆を持って 字を書かない環境になっちゃからだな。パソコンは人間の能力を退化させますよ。
写経なんてアプリを 使って鍛えないとだめかな。
漢字バージョンもいいけど、横文字バージョンの豆単みたいなのはないかな? 探して みると、有りそうで余りないのね。無料のやつが。有料のやつは有りますよ。 でも、こういったモバイル端末に有料のアプリは、皆さん余り入れていないようです。
平均で、4.8本が有料あぷり、18本が無料あぷりらしいです。おいらの場合も大体、平均 ぐらいだな。うかうかしてると、あぷりも値上げされるぞ。そして誰も買わなくなった。
あぷるは干上がってしまう可能性があるんで、慎重に値上げを検討中って所かな。