Like as Windows
Table of Contents
ナショからパナへ
電動バリカンが壊れた。いや充電の電池がへたって、散髪中に馬力が出なくなって しまったんだ。その場は、AC電源から充電しつつ難を逃がれた。 AC給電で使えば、まだまだ延命出来るんだけど、美容師(女房ですが)のたっての 要望で、新調した。4480円也。安いのは2000円台から有ったけど、パナソニックの 奴にした。だって、旧機は、ナショナル製だったから、同一ブランドね。
社名が変更されたのは、2008年10月だそうだから、少くとも16年は使っていた事 になる。十分に元を取ったな。これからも、4回ぐらい散髪して貰えば、元金を 回収できるぞ。そんな、みみっちい事より、床屋で待つと言う苦痛から逃れ られる方が重要だ。
大体、電池の切れ目が、縁の切れ目って事が多い。IIJがスマホのアレコレに付いて ユーザー・アンケートを取ったそうな。その一項目に、スマホをどれぐらいの頻度 で、変更しますかの問い。平均で4年周期らしい。で、その理由は? 自損(液晶割れ、水没等)で、修理高額の為、辞退するを除けば、 電池がヘタッた が一番多く、二番目は、OSがアップデート出来なくなったから、らしい。 何だか、SDGsに反してるね。
myenv
OpenBSDをWindows並に使う作戦を遂行してるんだけど、ちと不便な所が有ったので 修正しておく。Xを起動した時の、Window回りね。
eq$ cat .xinitrc if [ -x /usr/local/bin/dbus-launch -a -z "${DBUS_SESSION_BUS_ADDRESS}" ]; then eval `dbus-launch --sh-syntax --exit-with-session` fi setxkbmap -option ctrl:nocaps & xsetroot -solid '#000080' & export LANG=ja_JP.UTF-8 mlterm -g 80x36 & exec fvwm
xsetrootを追加して、背景画面を青色に設定した。mltermに -g オプションを付けて 端末サイズを縦方向一杯にした。オイラーみたいに、テキストと格闘する人は、横長 のディスプレーより、縦長の方が有り難いんだけど、往々にして、映画とかを見る のに最適な物しかない。外部ディスプレーを奮発すれば、希望は叶うのかな。 なお、xtermを利用したかったんだけど、闇が有るみたいで、色々試したけど、 望みの機能は実現出来なかった。
.fvwmrc
MenuStyle #4d4d4d #bebebe #e7e7e7 12x24 fvwm #MenuStyle #4d4d4d #bebebe #e7e7e7 -adobe-times-bold-r-*-*-12-*-*-*-*-*-*-* fvwm
そして、fvwmのメニュー・フォントが極小だったので、特大に変更して見易くした。 昔の設定は、画面サイズが1024x768ぐらいまでを想定してるんで、現代には似わない。
現代と言えば、xfceぐらいを入れるのが標準ぽいけど、それは却下だ。 訳ワカメなプロセスが走りすぎ。サイズが大きすぎる。マウスでファイルを蹴飛ばして 起動とか、手掴みでファイルをドロップするなんて、野蛮過ぎる(個人の感想です)。 そして、それを実現する為にオブジェクト指向が導入されてる(蹴飛ばした時、どの アプリを起動するか、ファイル自身が保持してる)。はっきり言って、オイラーは 関数型人間さ。
ddskk
emacsとセットで使うSKKは、辞書の成長と共になる。辞書への登録、語句の検索順 を自動保存する様になっている。何も指定しないと、$HOME下になる。それで困る のは、河豚板がそれをセーブしてくれない事(ええ、河豚板終了時に自動保存 される方法は承知)。これをスマートに解決するには、SKKが保存する辞書を、 河豚板の管理エリア外にすれば良い。そんな事できるのか? 考えていても解決しないので、 DDSKK 6.10. 辞書関連 を参照。
(setq skk-user-directory "/mnt/my/ddskk")
これで、解決。
eq$ cd /mnt/my/ddskk/ eq$ ls -ltr total 31 -rw------- 1 sakae wheel 7543 Nov 7 07:59 jisyo.bak -rw------- 1 sakae wheel 7559 Nov 7 08:13 jisyo -rw-r--r-- 1 sakae wheel 420 Nov 7 08:13 record eq$ cat record Thu Nov 7 08:13:57 2024 登録: 0 確定: 52 確定率: 100% 語数: 464 Wed Nov 6 16:44:23 2024 登録: 2 確定: 180 確定率: 98% 語数: 431 Wed Nov 6 06:38:33 2024 登録: 1 確定: 73 確定率: 98% 語数: 294 Tue Nov 5 16:49:42 2024 登録: 2 確定: 113 確定率: 98% 語数: 265 Mon Nov 4 08:44:26 2024 登録: 0 確定: 1 確定率: 100% 語数: 1
まだ、成長途中であります。これから、どんどん大きくなるぞ。
about mixer
Windows 10の置き換えに向けて着々と微調整を進めています。その関連として デフォの音量設定が有ります。少々smalltolkぎみで、都度sndioctlしてたんだ けど、そりゃ無いでしょう。デフォの音量を起動時から大きくしておきたい。 調べてみたら、/etc/example/mixer.confなんて例が用意されてた。他にも 色々有るぞ。それを、/etcの下に持ってきて、微調整。
eq$ cat /etc/mixerctl.conf # $OpenBSD: mixerctl.conf,v 1.1 2014/07/16 13:21:33 deraadt Exp $ # # mixerctl(1) configurable parameters. See mixerctl.conf(5) for details. # # output volume value for most audio cards outputs.master=180
例では、200になってたけど、少し下げておいた。
原稿の出来ばえ確認
これ、今迄サーバー側で稼動させてるWeb serverに転送して、それを眺めていた。 そんな無駄はしたくない。かと言って、serverを稼動させるのも大袈裟。 そんな時は、pythonの簡易サーバーですよ。
server='python3 -m http.server 8080'
こんなエイリアスを用意。原稿のhtmlが有る所で起動。それから、ブラウザーで、 http://localhost:8080/ するだけ。
firefox but chrome …
河豚板のfirefox挙動がおかしいと、作者さんに訴えた所、下記の案内を頂いた。
Garbled Firefox in FuguIta 6.7
これって、firefox用のカーネル権利使用許可証だな。これで便利に使えそう。 このURLにも案内が有るchromeも同様な事情を抱えているんだな。
eq$ ls /etc/firefox/ pledge.content pledge.rdd unveil.content unveil.rdd pledge.gpu pledge.socket unveil.gpu unveil.socket pledge.main pledge.utility unveil.main unveil.utility eq$
これ、firefoxを安全にOpenBSD上で使う為の緩和策だな。本音では、firefoxなんて 使って欲しくないんだろうけど。。。まあ、時流に乗っておかないと、見向きもされ ないOSに認定されちゃうからねぇ。w3mでも使ってろ、ってか。
ならば、これを理解した上で、chromeも入れてみるか。得意のnoto-fontsでたっぷりと時間を 費やし、おまけにその他のパッケージも多数導入された。1Gぐらい/usr/localが 増加したんではなかろうか? ここの増加は即、boot時間の増加に繋がる。 それは、イヤだなあ。たかがNHK+を視聴する為だけに、chromeを入れるなんて、 まっぴら御免だ。まあ、chromeは、その場で翻訳って便利な機能が有ったりするんで 捨てがたいのは、事実なんですけどね。でも、firefoxだって、検索した時に 翻訳を指定すればいい(あるいは、翻訳アプリにURLを貼り付けて翻訳させる)んで、何とかなるさーーと、しておこう。
mount and umount
河豚板の管理外のエリアを自分用に使っているので、起動時からマウントしておいて 欲しい。そんな時は、
eq$ cat /etc/rc.local mount /dev/sd1d /mnt
と、記述しておけば良い。じゃ、終了する時は? そりゃ、/etc/rc.shutdownで umountしとけばいいんでないかい? 河豚板になるべく影響を与えない場所でね。 でも、単純にumountするのも考えもの。ちと、実験しとく。
eq# umount /mnt eq# umount /mnt umount: /mnt: not currently mounted eq# echo $? 1
既にumountされたものを、再度umount 当然のエラーになる。ここまではいい。
eq# umount /mnt umount: /mnt: Device busy eq# echo $? 1
/mntエリア内に、誰かが滞在してる場合、当然のエラー。迂闊にumountしちゃうと まずい。しかも、umountの二重実行と区別がつかない。
運用で回避出来る可能性が大きい。tmuxで複数の端末(shell)を起動してる。そこから cd /mnt/myなんて風に使っているんで、端末を終了しちゃえば、おのずと/mnt/myから 退出する事になる。
心配なら、強制発動かな。
eq# head rc.shutdown force_umount=No # set Yes for forced umount /ram at shutdown force_resync=No # set Yes to re-sync at shutdown sync; sync; sync # for me, for you, for god sleep 3 umount -f /mnt
resync=YESにしておくと、河豚板の終了時に、変更したファイルを保存し、再起動時 に復元してくれる便利な機能が提供されている。が、オイラーはあえてこの機能は 利用していない。だって、悪い事をすると、その証拠が次回に出現しちゃうから。
たとえば、coreなんかが出来た時、それを持ち越しても嬉しくない。必要なら、 自分で安置所に保管しとけよ、で、いいじゃん。とか、気に入ったパッケージを 入れてみたものの、思いの他巨大だったので、やっぱり止めたなんて事が有る からね。必要だったら、手動で更新するに限る。これが、河豚板の最大の利点 と思うぞ。
悪い一例で、syspatchしたらどうなる?
eq$ doas syspatch Sorry, syspatch does not work correctly on FuguIta. Please use fiupdate utility to apply patch.
あらら、ちゃんと防御されてた。無理に突破してみる? それより、もっと有用な奴をやれ。
ああ、ここまででWindows上で活動してたのを、OpenBSDに移動できたと思う。 最後の確認は、この記事がOpenBSD側からlftpでアップロード出来るかだな。
以下の項は、余禄になります。
make search key=hoge
何かの時、パッケージを検索したい事が有るだろう。一番簡単なのは、ports.tgz を入れちゃう事。でも、細々したファイルが展開されちゃって、起動時間の遅延 に直結しちゃう。それは、是非とも避けたいぞ(src.tgz,sys.tgzもそうね)。 そんな訳なんで、 サーバーから、portsを持って来ておいたんだ。
eq$ cd /mnt/my/7.6/ports/ eq$ make search key=firefox *** Parse error in /mnt/my/7.6/ports: Could not find /usr/ports/infrastructure/mk/bsd.port.subdir.mk (<bsd.port.subdir.mk>:5)
この通り、検索させてくれない。
eq$ PORTSDIR=/mnt/my/7.6/ports make search key=firefox Please install portslist pkg_add portslist *** Error 1 in /mnt/my/7.6/ports (Makefile:85 '/usr/local/share/ports-INDEX': @exit 1)
少しは進化したな。このエラーを眺めると、インディクス・ファイルが必要みたい。 サーバー側から輸入したら、無事に動いた。最終的には、/usr/local/shareを避け た所に、配置したいぞ。現状は、
eq$ wc /usr/local/share/ports-INDEX 11496 202451 3702274 /usr/local/share/ports-INDEX
こんくらい有るかね。メモリーは大事に利用しましょう。
eq$ head -7777 /usr/local/share/ports-INDEX | tail -1 | tr '|' '\n' wesng-1.0.2.1p0 security/wesng Windows Exploit Suggester - Next Generation security/wesng/pkg/DESCR The OpenBSD ports mailing-list <ports@openbsd.org> security lang/python archivers/unzip devel/py-build,python3 devel/py-installer,python3 devel/py-setuptools,python3 devel/py-wheel,python3 lang/python/3 graphics/py-termcolor,python3 lang/python/3 textproc/py-chardet,python3 any ? y y
どんな内容が詰っているか、目出度い7777件目をダンプしてみた。
eq$ sed -n '7777p' /usr/local/share/ports-INDEX | tr '|' '\n'
どうせやるなら、こちらの方がずっとスマート。-n で、表示を抑止、7777p で、その 行だけ表示。この方がシステムへの負担は少ないね。
判りそうで分からん並びだ なあ。それより、INDEXを河豚板エリアから外せ。それには、何処で指定してるか調べろ。
eq$ grep ports-INDEX -r . ./bin/outdated-perl-ports: open (PORTS, '<', "/usr/local/share/ports-INDEX") ./bin/outdated-perl-ports: or die "can't open /usr/local/share/ports-INDEX: $!";
これとはマッチしないなあ。ports(7)を詳細に眺めろって事ですかね?
昔馴染み
これまた懐かしい人に出会ってしまった。
楽しいねぇ、こういうの。
現状で使える言語系は、python3,elispしか無い。ちょっと寂しいな。血圧グラフはgo製 なんだけど、i386機でamd64用のバイナリーを作成しちゃったんだ。だから、amd64な マシンには、goの環境は(幸いな事に?)入っていない。
これから、ちょっと悪戯してみる。lisp-2系だけじゃ寂しいので、guile3を独自に コンパイルしてみたい。
eq$ cd /mnt/my/7.6/ports/lang/guile3 eq$ PORTSDIR=/mnt/my/7.6/ports make configure you don't have permission to write into /mnt/my/7.6/ports/pobj/locks (1000, 1000 1000 0 5 20 118) *** Error 1 in /mnt/my/7.6/ports/lang/guile3 (/mnt/my/7.6/ports/infrastructure/mk/bsd.port.mk:2704 'configure': @lock=guile3-3.0.9; export ...)
ports-treeをサーバー側からそのまま持てきたので、root様の持ち物になっているんだな。 rootになってコンパイルするか、一般ユーザーでコンパイル出来る様に改変しちゃうか、 それが問題だ。この二択って、NHKでやってる、英雄達の選択みたいだな。オイラーの 答は、一般ユーザーでもコンパイル出来るように、です。何たって、その方が簡単 ですから。そしてインストールで変な所にされてしまうのを検出する為です。
eq$ make configure ===> Building from scratch guile3-3.0.9 ===> guile3-3.0.9 depends on: gmake-* - not found ===> Verifying install for gmake-* in devel/gmake ===> Building from scratch gmake-4.4.1 ===> Checking files for gmake-4.4.1 >> Fetch https://ftpmirror.gnu.org/make/make-4.4.1.tar.lz make-4.4.1.tar.lz 100% |********************************| 1275 KB 00:12 >> (SHA256) make-4.4.1.tar.lz: OK ===> gmake-4.4.1 depends on: dwz-* - not found ===> Verifying install for dwz-* in devel/dwz ===> Building from scratch dwz-0.15 ===> Checking files for dwz-0.15 : ===> Installing dwz-0.15 from /mnt/my/7.6/ports/packages/amd64/all/ pkg_add: pkg_add must be run as root
guileをコンパイルするには、gmakeが必要、それをコンパイルするには、dwzが必要。 だから、先にそれをやっとくね。で、dwzをインストールしようとして、失敗。 やはり、先に、コンパイル環境(この場合ならgmake)を普通にインストールしとけって 事だな。まあ、それがgnu系と付き合う時の常識ってもんです。他にどんな常識が必要 だろう? そんなのdebianとかで、開発環境のエッセンスを確認すればいいんでないかい。 そこまでしなくても、必要時に導入って事でいいだろう。emacsと素直に連携できるパッケージ版の gdbも頭に浮んだけど却下だな。デフォで用意されてるgdbでlayout {src,asm,reg}すれ ば、何とかなる。
それから、個別には、
WANTLIB += c curses ffi gc gmp iconv intl m pthread readline WANTLIB += unistring
なんてのもMakefileに記述されてる材料だ。先は長いぞ。gmakeをパッケージから入れた。 そしたら、無事にconfigureが成功。先人の知恵であるpatchが適用されて、これで、普通 にtar玉を取ってきて、configureが出来た状態になった訳だ。後は、普通にgmakeするだけ。
portsの下は、こんなワーキング・エリアが増えているはず。
drwxr-xr-x 3 sakae wheel 512 Nov 7 09:06 packages/ drwxr-xr-x 3 sakae wheel 512 Nov 7 09:07 plist/ drwxr-xr-x 3 sakae wheel 512 Nov 7 09:07 bulk/ drwxr-xr-x 6 sakae wheel 512 Nov 7 16:15 pobj/ drwxr-xr-x 2 sakae wheel 512 Nov 7 16:15 distfiles/
目当ては、pobj/guile3-3.0.9/guile3-3.0.9/の中。ここの中のconfig.logに、portsシステムが 代行してくれた、configureのパラメータが記録されてる。一度眺めておこう。
This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by GNU Guile configure 3.0.9, which was generated by GNU Autoconf 2.71. Invocation command line was $ ./configure --enable-jit=no --program-suffix=3.0 --prefix=/usr/local --sysc\ onfdir=/etc --mandir=/usr/local/man --infodir=/usr/local/info --localstatedir=/\ var --disable-silent-rules --disable-gtk-doc :
インストール先は、/usr/localが決め打ちなのかな、ブツブツ。LOCALBASE って環境変数を設定すると、変更出来るけど、それはそれで闇が深い。 まあいい、通して演技を してもらおう。
eq$ gmake : CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh '/mnt/my/7.6/ports/pobj/guile3-3.0.9/guile-3.0.9/build-aux/missing' aclocal-1.16 -I m4 /mnt/my/7.6/ports/pobj/guile3-3.0.9/guile-3.0.9/build-aux/missing[81]: aclocal-1.16: not found WARNING: 'aclocal-1.16' is missing on your system. You should only need it if you modified 'acinclude.m4' or 'configure.ac' or m4 files included by 'configure.ac'. The 'aclocal' program is part of the GNU Automake package: <https://www.gnu.org/software/automake> It also requires GNU Autoconf, GNU m4 and Perl in order to run: <https://www.gnu.org/software/autoconf> <https://www.gnu.org/software/m4/> <https://www.perl.org/> gmake: *** [Makefile:2072: aclocal.m4] エラー 127
まだ、足りないねぇ。一番新らしいautoconfを入れてから、再度make configureから 遣り直し。コンパイル中にmini-guileが動くようになったのを確認後、独自なconfigureを実行。
eq$ ./configure --prefix=/mnt/opt --enable-mini-gmp --enable-jit=no --enable-jit=no --disable-silent-rules : checking whether getitimer(ITIMER_VIRTUAL) is usable... yes configure: error: GNU libunistring is required, please install it.
格闘が初まるぞ。
README
世界を変える100の技術 なんて本を読んだ。 AIの技術支援によって、色々な分野がめざましく発展してる。
オイラーが注目したのは、故障予測AI。AWSのアマゾンが積極的に推進してる。 モーターのヘタリを予測。あらかじめ加速度センサーを取り付けで、正常時の 動作を取得。それを標準にして、継続的にモニター。変化が閾値を越えたら、 そろそろ故障かもと提示してくれる。そして、どういうメンテナンスが必要 かも、教えてくれる。 この項の説明で初めて知ったんだけど、機械振動の測定・評価に関する国際規格が ISO20816として定義されているそうだ。何だかRFCみたいだな。
オイラーも昔、同様な事を考えていた。センサーを取り付けて、振動を 検出。時間・ドメインで観測する限り、雑音しか表示しないだろう。そこで、 FFTしちゃって周波数・ドメインに変換。こうすれば、何かが見えて 来るんではなかろうかと。発想は良かったんだけど、世の中の技術がそこまで 追従出来なかったんだな。
この他、オイラーの知らない技術が盛り沢山で面白かったぞ。 もう一つ面白いと思ったのは、電気味覚と言う技術。微弱な電流を流す ストローや箸を使って食物を口に運ぶと味変すると言う、イグ・ノーベル賞が 発端。キリンHDが実用化を目指しているそうだ。 子供の頃、乾電池を舐めて、味変した楽しい記憶。 開発中のその箸を使うと、塩味を強く感じるらしい。自然と減塩できるとか。 何でも醤油ピチャ・ピチャしないと気が済まない、青森の友人に推薦したいぞ。 こういう研究、楽しくていいよね。