TODO
Table of Contents
why use perl
Q: なぜOpenBSDは未だにPerl使ってるのか
A: OpenBSDが現在もPerlを使っている理由については、いくつかの要因が考えられます。以下に主な理由を挙げます:
### 1. 既存コードの互換性
- OpenBSDのシステム管理スクリプトやツールの一部が、長年にわたってPerlで書かれてきたため、互換性を維持する必要があります。
- 大規模なコードベースを別の言語に書き換えるには多大な労力と時間がかかるため、Perlを使い続けることが現実的とされています。
### 2. Perlのユニックス哲学との親和性
- Perlは「テキスト処理」や「ユーティリティスクリプト」の分野で非常に強力な言語であり、Unix系システムとの相性が良いです。
- OpenBSDのシステム管理者や開発者が扱う典型的なユースケースに、Perlは十分な機能を提供しています。
### 3. 成熟性と安定性
- Perlは長い歴史を持つ言語であり、バグが少なく安定した動作が期待できます。
- OpenBSDは「セキュリティ」と「安定性」を重視しているため、成熟した技術を採用する傾向があります。
### 4. 依存性の軽減
- OpenBSDは可能な限り外部依存を減らす設計思想を持っています。Perlは基本的なシステムツールの一部として組み込まれているため、新たな言語を導入することで追加の依存関係が生じることを避けています。
### 5. Perlは十分に小さく、効率的
- 現代の基準では、Perlの実行環境は軽量であり、OpenBSDのシンプルでコンパクトな設計に合致しています。
- 例えば、PythonやRubyと比較して、Perlはシステムリソースの消費が少ないことがあります。
### 6. 新しいツールへの依存回避
- 最近のプログラミング言語(例えばPythonやGoなど)は、しばしば頻繁な更新や外部ライブラリへの依存を伴うため、セキュリティを重視するOpenBSDプロジェクトの理念に反する場合があります。
- Perlはその設計が安定しており、長期間にわたってほぼ同じ方法で動作します。
### 7. 開発者のスキルセット
- OpenBSDのコミュニティには、Perlを熟知している開発者が多いと考えられます。そのため、既存のスクリプトやツールを保守する際にPerlを使うことが合理的です。
とはいえ、Perlが使われているのは必要最小限の範囲に留まっているとも考えられます。OpenBSDは不要な機能やツールを削減する文化を持っているため、今後も継続的に見直しが行われる可能性があります。ただし、Perlが完全に排除されるかどうかは、現時点では明確ではありません。
Advent Calendar 2024
年末年始のお楽しみはこれ。今年何する? 世の中の動きに追従する為に閲覧。
資格ビジネスだな。コマンドのオプションを暗記させるって、どうよ? そんな事 より manを読める方がよっぽど役にたつぞ。
年寄って所に反応しました。
並列Lispへの取り組み 頑張っておられます
docker
去年からの継続事項、 dockerコンテナとは?仕組みや利用するメリット・基本的な使い方
OpenBSDを調べたら、docker-cliとその仲間達が提供されてた。実験。
ob$ doas docker run hello-world docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See 'docker run --help'.
何これって事でググったら、 Running a Docker Host under OpenBSD using vmd(8) こんなのに遭遇。へぇー、Linuxが、仮想環境で動くのか。 これは試してみるしか。その前に、IOSから起動してhddにインストールって儀式が 必要になるな。
ここに丁寧に解説されてた。 Alpine Linux インストール これはもう、OpenBSDをインストールする儀式そのものだな。
alpine
とりあえずdockerは、うっちゃっておいてLinuxが仮想で動作する事を確認する。 手始めにCDの中身を確認。もちろんvnconfigに助けを求めた。
eq# tree |-- apks | `-- x86_64 | |-- APKINDEX.tar.gz | |-- acct-6.6.4-r2.apk | |-- acct-openrc-6.6.4-r2.apk | |-- acl-libs-2.3.2-r1.apk | |-- agetty-2.40.2-r4.apk : |-- boot | |-- System.map-6.12.1-3-lts | |-- amd-ucode.img : | | |-- libutil.c32 | | |-- mboot.c32 | | `-- syslinux.cfg | `-- vmlinuz-lts `-- efi
ふーん、パッケージは独自な形式、apkなんだな。次は起動。1回目はインストール。 2回目は、動作確認。
eq# vmctl start -cL -i1 -d docker -r ~/alpine-extended-3.21.0-x86_64.iso amd64 : eq# vmctl start -cL -i1 -d docker amd64
Welcome to Alpine Linux 3.21 Kernel 6.12.7-2-lts on an x86_64 (/dev/ttyS0) alp login: root Password: Welcome to Alpine! The Alpine Wiki contains a large amount of how-to guides and general information about administrating Alpine systems. See <https://wiki.alpinelinux.org/>. You can setup the system with the command: setup-alpine You may change this message by editing /etc/motd. alp:~# df -h Filesystem Size Used Available Use% Mounted on devtmpfs 10.0M 0 10.0M 0% /dev shm 233.8M 0 233.8M 0% /dev/shm /dev/vda3 8.6G 131.1M 8.0G 2% / tmpfs 93.5M 124.0K 93.4M 0% /run /dev/vda1 271.1M 32.1M 220.1M 13% /boot tmpfs 233.8M 0 233.8M 0% /tmp alp:~# ifconfig eth0 Link encap:Ethernet HWaddr FE:E1:BB:D1:A8:B8 inet addr:100.64.2.3 Bcast:0.0.0.0 Mask:255.255.255.254 inet6 addr: fe80::fce1:bbff:fed1:a8b8/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:92 errors:0 dropped:0 overruns:0 frame:0 TX packets:103 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:18366 (17.9 KiB) TX bytes:9921 (9.6 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) alp:~# ps awx : 1574 root 0:00 [kworker/R-ext4-] 1762 root 0:00 /sbin/udhcpc -b -R -p /var/run/udhcpc.eth0.pid -i eth0 -x 1852 root 0:00 /sbin/syslogd -t -n 1879 root 0:00 /sbin/acpid -f 1905 root 0:00 /usr/sbin/crond -c /etc/crontabs -f 1931 root 0:00 /usr/sbin/ntpd -d 1934 ntp 0:00 ntpd: ntp engine 1935 ntp 0:00 ntpd: dns engine 1972 root 0:00 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups 1978 root 0:00 /sbin/getty 38400 tty1 1979 root 0:00 /sbin/getty 38400 tty2
極めて小粒なLinuxである。これがdockerな人達に愛される理由なんだろうね。 まあ、土台ですから、余計な機能は邪魔である。
alp:~# apk -h apk-tools 2.14.6, compiled for x86_64. usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...] Package installation and removal: add Add or modify constraints in WORLD and commit changes del Remove constraints from WORLD and commit changes System maintenance: fix Fix, reinstall or upgrade packages without modifying WORLD update Update repository indexes upgrade Install upgrades available from repositories cache Manage the local package cache Querying package information: info Give detailed information about packages or repositories list List packages matching a pattern or other criteria dot Render dependencies as graphviz graphs policy Show repository policy for packages search Search for packages by name or description Repository maintenance: index Create repository index file from packages fetch Download packages from repositories to a local directory manifest Show checksums of package contents verify Verify package integrity and signature Miscellaneous: audit Audit system for changes stats Show statistics about repositories and installations version Compare package versions or perform tests on version strings This apk has coffee making abilities. For more information: man 8 apk
とは言え、皆大好きなpythonとかが無いと泣く人が出てくるだろう。そんな時は パッケージから必要な物を入れる。ruby 3.3.6 なんてのも用意されてた。これは レール屋さんの必需品だな。ああ、きっとRailsが一式dockerで用意されてるに 違いない。面倒だからね。
Matzさんからのクリスマス・プレゼントとして、Ruby 3.4.1 がリリースされました。 詳細は、Ruby 3.4.0 リリース を参照。バージョン名が微妙に違うのは、表記の 修正があったためらしいです。試してガッテンしてみるかな。
lubuntu
いよいよWindows10を潰す計画に乗り出す。WiFiが真面なスピードで動く事を期待 してLinuxです。普通のウブじゃ無駄な動きをするだろうから、 Ubuntuフレーバー10種類総ざらい を調べてみた。CUI屋さんなら、Lubuntuが良さ そう。下記からDLした。そして使い心地の検証の為、VirturalBoxに入れてみた。
Check out the Lubuntu Manual for an installation guide and much more!
sshdが不足してたんで、まずは入れて起動させた。
$ sudo apt install openssh-server $ sudo systemctl enable ssh $ sudo systemctl start ss
audacious、build-essential、mlterm、emacs-nox、tmuxあたりも入れた。一番大事な 端末ソフトはデフォでQTerminalってのが入っているけど、使い勝手が悪かったぞ。 そこで、OpenBSDでも使用してたmltermですよ。/etc/mltermに色々なフォント類が 登録されてた。Debianな皆様、ありがとう。
ログイン時にmltermを開いておいて欲しいぞ。そんな要望が有るなら、スクリプトを作成する。
sakae@ub:~$ cat .mlterm/start #!/bin/sh mlterm &
そして、設定 -> LXQt設定 -> セッション の所で、自動起動のタブを選択しておいて、 上記のスクリプトをフル・パスで登録すれば良い。
menuにfirefox等が登録されているんで、それをツンツンすれば起動する。じゃ、オプションを 特別に付けたい場合はどうする? そんなのは、/usr/share/applications/ にある、firefox.desktopを編集するのさ。が、そんなのは無いぞ。彼は特別で、/snap軍団に 属しているから、そこで探してくれ。
見付かったらそれを、~/.local/share/applications/ にcpして編集。だって/snapは煩雑に 更新されるからね。
Exec=firefox --private-window %u
A-100
安い一体形のパソコンが発売された。ヘコヘコ使うなら、これで十分な気がする。 CPUに拘りなんて無いしね。画面が広いのが嬉しいかな。
dual boot
README
とある本を読んでいたら、BMIに単位が付いていた。Kg / m2 って具合。何これ、計算式の まんまじゃん。式をそのまま解釈すれば、1平方メートル当りにかかる重量、 すなわち圧力(もどき)だな。
正確には、重量じゃなくて、単位面積あたりに加わる力(単位はニュートン)が圧力 (パスカル)って事になってる。で、力の定義は、質量(Kg)に重力加速度(9.8)を乗じた 値らしい。身近な圧力では、毎日お世話になる水道。一般家庭に供給される水道の圧力は、 最低基準:0.1 MPa(10 m 水柱相当)。標準範囲:0.2 MPa ~ 0.6 MPaだそうだ。 また、1気圧はおよそ101,325パスカルだってさ。
で、ふと他の動物はどうよと思ったぞ。
Q: 人間の肥満度はBMIが指標になりますが、犬や猫でこれに相当する指標はありますか?
A: 犬や猫の肥満度を評価するための指標はありますが、**BMI(Body Mass Index)に相当する具体的な計算式**はありません。その代わりに、以下のような方法が主に使用されています。
### 1. ボディ・コンディション・スコア (BCS: Body Condition Score)
- 犬や猫の肥満度や体型を評価するために最も一般的に使用される方法です。
- **1〜9段階**(または1〜5段階)のスコアリングシステムで、理想的な体型を真ん中(5/9または3/5)とします。
- 低いスコア: 痩せすぎ
- 中間のスコア: 理想的な体型
- 高いスコア: 太りすぎ(肥満)
- スコアは視覚的な観察(肋骨が見えるか、ウエストのくびれがあるかなど)と触診(肋骨を触れやすいかどうかなど)で判断されます。
### 2. 筋肉コンディションスコア (MCS: Muscle Condition Score)
- 肥満ではなく筋肉量に焦点を当てた評価方法です。
- 老化や病気による筋肉減少(サルコペニア)の評価に使われます。
- 肥満や痩せ具合だけでなく、全体的な健康状態を把握するのに役立ちます。
### 3. 体重と犬種・猫種の標準体重との比較
- 犬や猫には、犬種や猫種ごとに一般的な標準体重の範囲が知られています。この範囲と比較して、体重が大きく超えていれば肥満と判断されることがあります。
- ただし、個体差(骨格の大きさや筋肉量)も大きいため、体重だけで判断するのは不十分です。
### 4. 体脂肪率の測定
- 特別な機器(例えば、超音波やDXAスキャン)を使って体脂肪率を測定する方法もあります。
- ただし、これらの方法は臨床的な場面や研究で主に使用され、一般的な飼い主には現実的ではありません。
### 5. 胴囲や胸囲の測定
- 犬の場合、胴囲(ウエスト部分の周囲)や胸囲を測定し、適正体重の指標として利用することもあります。
- ただし、この方法も単独では完全な評価は難しいため、BCSなどと併用されます。
### まとめ 犬や猫の肥満度を評価する際には、**BCS(ボディ・コンディション・スコア)**が最も広く利用されています。BMIのような計算式ではなく、視覚的および触覚的な評価が主となります。これに加え、獣医師の診断や体脂肪率測定が行われることもあります。 肥満は犬や猫の健康に重大な影響を与えるため、適切な体型管理が重要です。気になる場合は獣医師に相談して、具体的な評価や対策を教えてもらうのが良いでしょう。