
はてなキーワード:Sudoとは
GeminiDeep Researchで本当の話なのか調査させ、はてな匿名ダイアリーへ投稿出来るように要約させた
はてな匿名ダイアリーを指定したら口調が勝手に変わって吹いたw
2025年末、「娘のはじめてPCにLinux」という議論がネット上で波紋を呼んだ。これは単なるOSオタクの戯言ではない。 「エリート層は子供にRaspberry Pi(ラズベリーパイ)を与えて"支配側"へ育て、一般家庭や公教育はiPadを与えて"消費側"に留め置く」という、現代の身分制度(デジタル階級社会)への警告だ。
本稿は、英国王立協会やGIGAスクール構想の実態、労働市場データを分析した「公教育の機能不全と家庭内資源動員に関する調査報告書」の要約である。結論から言えば、「中流以下の家庭こそ、なけなしの金を払ってでも子供にLinuxを触らせろ」ということになる。
かつてのデジタルデバイドは「ネットに繋がるか否か」だった。スマホ普及後の現代における格差は、「コンピュータの制御権(Root権限)を持っているか否か」である。
英国王立協会はすでに2012年の段階で「学校のICT教育はオフィスソフトの使い方しか教えていない」と酷評している。 その結果、富裕層の私立校では専門家を雇ってRaspberry PiやAI活用を教え、貧困地域の公立校では管理が楽なiPadを配って終わり、という絶望的な「質の乖離」が起きている。米国でも同様に、富裕層の子供ほど「消費的なスクリーン(TikTokやYouTube)」から離れ、ChromeOSやRaspberry PiやUbuntuなどを導入し創造的なプログラミング教育を受けている。
日本の金のある自治体の公立小中学校で配られたiPadは、MDM(管理ツール)によってガチガチに制限されている。 逆に、ChromeOSはLinuxベースであり開発環境として優秀なのだが、教育委員会は「セキュリティ」と「管理コスト」を理由にその扉(ChromeOSやLinuxでの創造的な授業)を諦めた。 結果、公立校の生徒はiPadで「Web閲覧」と「ドリルアプリ」しかできない。
一方で、開成や筑駒といったエリート校の生徒は、制限のない環境でサーバーを構築し、Unityでゲームを作り、競技プログラミングに没頭している。iPadの 「サンドボックス(砂場)」の中で遊ばされている公立校生と、システムの内側に触れているエリート校生。このスタート地点の差は、10年後に致命的な「年収の差」となって現れる。
「社会に出ればWindowsだろ?」というのは20年前の常識だ。現代の高付加価値インフラ(AWS、Google Cloud、AI開発、IoT)は、ほぼ全てLinuxで動いている。
GUI(マウス操作)はAIにとってコストが高いが、CLI(コマンド操作)はAIへの命令(プロンプト)そのものであるため、相性が抜群に良い。Linuxを学ぶことは、「AI時代におけるコンピュータへの正しい命令作法」を学ぶことと同義だ。
「MOS(Microsoft Office Specialist)」というフィルター機能は低下し、GithubやPixiv、Youtubeなどでのクリエイティブな活動履歴(何を作れるか)がパスポートになる。貧困・中流層がこの壁を越える唯一の武器が「技術力(ポートフォリオ)」だ。
中流以下の公教育が頼りにならない以上、家庭で動くしかない。幸い、Linuxの世界は「金はかからないが、知恵と時間はかかる」。これは資金力のない家庭にとって最大の勝機だ。
30万円のMacBookは不要。企業落ちの中古ビジネスPC(ThinkPad X250/X260等)なら、秋葉原や通販で1.5万〜3万円で買える。Windows11が入らない型落ちこそ、軽量なLinuxには最高の機体だ。Raspberry Pi 4や400の中古も良い選択肢となる。
親が教えられないなら、CoderDojo(無料のプログラミング道場)のようなコミュニティに子供を連れて行けばいい。そこには「技術を楽しんでいる変な大人」がいる。その出会いが重要だ。
「壊れるから触るな」ではなく、「壊してもOSを入れ直せば直るから、好きにいじれ」と言って管理者権限(Sudo)を与えること。YouTubeを見る端末を、YouTubeを作る端末に変えること。
高価なiPadを買い与えて安心するのではなく、1万円の中古PCを与えて「黒い画面」に向かう子供を応援すること。 その小さな投資が、子供を「デジタル小作人」から救う唯一の手段になるかもしれない。
運用開始までのことしか考えないで、その後のことを考えないのは、日本人に強い員数主義の発露かな?
故障やなんか考えたら、保守部品のロジスティクスくらい、提供前に当然のように準備しとけよ。
とにかく納品日までに頭数(機能)だけ揃えろ。
ってSIer仕草しか知らんプロマネ、エンジニアが大量にWebサービス界隈に流入してきて、大規模うんこ製造機と化してるから、システム界隈でもむちゃくちゃ迷惑してる。
SIerあがりと言うか、崩れというか、のプロマネは、99%、
「今回のプロジェクト、DDD(ドメイン駆動開発)採用していますので、よろしくお願いします」
っていうのと同じ口で、
「この画面、帳票以外の余計なことは考えないでください。やらないでください。Fixした基本設計を変更しないでください」
って頭おかしいことを平気で言う。
DDDは画面帳票駆動開発に対するアンチテーゼなんだが、なぜ画面帳票ベースのSUDOモデリングとか言うケッタイな手法を、鼻をおっ広げてドヤ顔で推進、実施しとるんだ?
[Deprecated] WSL2USBカメラ+他のUSB機器2022年01月17日
環境:Windows11 + WSL2 5.10.60.1 +Ubuntu20.04
WSL2LinuxKernel 5.10.60.1からKernelモジュールにUSBIP対応が標準的に組み込まれた
2022年01月17日時点の最新カーネルは 5.10.74.3
以下すべての手順のWindows Terminal を使用する箇所は管理者権限で実行
WSLのカーネルアップデートとusbipd-win のインストール
Windows Terminalで実行
> wsl --update
> wsl --status
>winget install --interactive --exact dorssel.usbipd-win
WSLのディストリビューションを起動(WSL2起動用アイコンをマウスでクリックして起動してもよい)
> wsl --list
Linux 用Windows サブシステムディストリビューション:
追加パッケージをインストールsudoapt installlinux-tools-5.4.0-77-generic hwdata
visudo で secure_path の先頭に /usr/lib/linux-tools/5.4.0-77-generic: を追記する。
visudo で編集するファイルは、ダブルコーテーションの入力漏れやコロンをセミコロンに打ち間違えたりするとsudo が必要なコマンド類が一切使用できなくなるので慎重に実施する
私は深夜に寝ぼけてコロンをセミコロンに打ち間違えてaptコマンドすら実行できなくなりました
参考
https://www.imdb.com/de/list/ls599665082/
https://www.imdb.com/de/list/ls599665082/copy/
https://www.imdb.com/de/list/ls599665597/
WSL2USBカメラ+他のUSB機器2022年09月06日版
WSL2LinuxKernel 5.10.60.1からKernelモジュールにUSBIP対応が標準的に組み込まれたらしいが、Microsoft公式が提供しているKernelや手順ををそのまま使用すると動作しない
2022年09月06日時点の最新カーネルは 5.15.62.1 だが、wsl --update で展開されるバージョンが 5.10.102.1 だったため 5.10.102.1 を使用する
以下すべての手順のWindows Terminal を使用する箇所は管理者権限 で実行
以下、[WT] はWindows Terminal、[Ubuntu] はUbuntu側のbashを表す
WSLのカーネルアップデートとusbipd-win のインストール
> wsl --update
> wsl --status
>winget install --interactive --exact dorssel.usbipd-win
見つかりましたusbipd-win [dorssel.usbipd-win]バージョン 2.3.0
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloadinghttps://github.com/dorssel/usbipd-win/releases/download/v2.3.0/usbipd-win_2.3.0.msi
██████████████████████████████10.4MB /10.4MB
> wsl --install --distributionUbuntu-20.04
[WT] WSLのディストリビューションを起動(WSL2起動用アイコンをマウスでクリックして起動してもよい)
> wsl --list
Linux 用Windows サブシステムディストリビューション:
sudoapt install -ylinux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbipusbip /usr/lib/linux-tools/5.4.0-77-generic/usbip20
> wsl --shutdown
[WT]USBカメラがusbipd に認識されることを確認する (この記事では 2-7)
2-2 056e:00d9USB入力デバイス Not attached
2-3 1c4f:0027USB入力デバイス Not attached
2-7 1bcf:2284 FullHDwebcam,USBmicrophone Not attached
2-11 0495:3011ESSUSBDAC,USB入力デバイス Not attached
2-14 8087:0029インテル(R)ワイヤレスBluetooth(R) Not attached
[WT]USBカメラをUbuntu側にアタッチする(アタッチに成功した場合は何も表示されない)
>usbipd wsl attach --busid 2-7
>
[WT]USBカメラが正常にアタッチされていることを確認する(Attached と表示されていれば成功)
2-2 056e:00d9USB入力デバイス Not attached
2-3 1c4f:0027USB入力デバイス Not attached
2-7 1bcf:2284 FullHDwebcam,USBmicrophone Attached -Ubuntu-20.04
2-11 0495:3011ESSUSBDAC,USB入力デバイス Not attached
2-14 8087:0029インテル(R)ワイヤレスBluetooth(R) Not attached
[Ubuntu]Ubuntuのbashにログオンした既定のユーザを videoグループに所属させる。なお、WSLを起動した時点で既に追加されているメッセージが表示される。
[Ubuntu] WSL2上のUbuntu20.04 の中からUSBカメラが認識されていることを確認する。lsusbコマンドを経由すると正常にUSBカメラが認識されているが、/dev/video* にはUSBカメラが列挙されない
Bus 002 Device 001:ID 1d6b:0003Linux Foundation 3.0roothub
Bus 001 Device 003:ID 1bcf:2284Sunplus Innovation Technology Inc. FullHDwebcam
Bus 001 Device 001:ID 1d6b:0002Linux Foundation2.0roothub
ls: cannotaccess '/dev/video*': No such file or directory
[Ubuntu]USB CameraがWSL内で認識されるようにLinuxカーネルをカスタムビルドする。下記リポジトリの手順通りに実施すると、WSLLinuxカーネルがカスタムビルドされたものに入れ替わる。注意点は、<windowsusername> の部分だけは各自の環境のWindowsユーザー名に手で書き換える必要が有ること。なお、.wslconfig は絶対にwindows 側で編集してはならない。絶対に。
> wsl --shutdown
[WT]USBカメラがusbipd に認識されることを確認する (この記事では 2-7)
2-2 056e:00d9USB入力デバイス Not attached
2-3 1c4f:0027USB入力デバイス Not attached
2-7 1bcf:2284 FullHDwebcam,USBmicrophone Not attached
2-11 0495:3011ESSUSBDAC,USB入力デバイス Not attached
2-14 8087:0029インテル(R)ワイヤレスBluetooth(R) Not attached
[WT]USBカメラをUbuntu側にアタッチする(アタッチに成功した場合は何も表示されない)
>usbipd wsl attach --busid 2-7
>
https://www.imdb.com/de/list/ls599665017/
https://www.imdb.com/de/list/ls599665017/copy/
[WT]USBカメラが正常にアタッチされていることを確認する(Attached と表示されていれば成功)
2-2 056e:00d9USB入力デバイス Not attached
2-3 1c4f:0027USB入力デバイス Not attached
2-7 1bcf:2284 FullHDwebcam,USBmicrophone Attached -Ubuntu-20.04
2-11 0495:3011ESSUSBDAC,USB入力デバイス Not attached
2-14 8087:0029インテル(R)ワイヤレスBluetooth(R) Not attached
[Ubuntu] WSL2上のUbuntu20.04 の中からUSBカメラが認識されていることを確認する
Bus 002 Device 001:ID 1d6b:0003Linux Foundation 3.0roothub
Bus 001 Device 003:ID 1bcf:2284Sunplus Innovation Technology Inc. FullHDwebcam
Bus 001 Device 001:ID 1d6b:0002Linux Foundation2.0roothub
crw------- 1rootroot 81, 0 Sep 617:29 /dev/video0
crw------- 1rootroot 81, 1 Sep 617:29 /dev/video1
[Ubuntu]USBカメラがWSL2の中から認識されることを確認するテストコードを作成する
$ pip installopencv-contrib-python
$ cat << 'EOT'> ${HOME}/usbcam_test.py
import cv2
W=640
H=480
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G'))
#cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('Y','U','Y','V'))
cap.set(cv2.CAP_PROP_FRAME_WIDTH, W)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, H)
https://www.imdb.com/de/list/ls599660855/
https://www.imdb.com/de/list/ls599660855/copy/
whileTrue:
ret, frame
ONNX -> TFLite,TensorFlow, Keras, TFJS, CoreML 変換
実装している機能が多すぎるので、この記事に表現していない変換オプションはREADMEを参照。TransformerやSTTやTTSやその他もろもろの一発変換に対応したつもり。onnx-tensorflow より推論効率が高いモデルを生成できる。また、onnx-tensorflowよりも対応しているオペレーションの種類が多い。
コントリビューター
コード量(code = 行)
cloc .
419text files.
414 unique files.
174 files ignored.
----------------------------------------
Language files blank comment code
----------------------------------------
YAML 7 42 79 586
Dockerfile 1 6 3 38
----------------------------------------
SUM: 340 5320 6719 42974
----------------------------------------
onnx==1.13.1
simple_onnx_processing_tools
tensorflow==2.13.0rc0
ghcr.io/pinto0309/onnx2tf:latest
pip
pip installonnx2tf -U
wgethttps://github.com/PINTO0309/onnx2tf/releases/download/0.0.2/resnet18-v1-7.onnx
2-2. 基本の「き」
TFLite を出力。
2-3. 基本の「ほ」
TFLite変換 + 完全体の saved_model を出力。
onnx2tf -i resnet18-v1-7.onnx -osd
2-4. 基本の「ん」
onnx2tf -i resnet18-v1-7.onnx -cotof
2-5. Keras
.h5 はイロイロと問題があるので、現状最新のフォーマット keras_v3フォーマットで出力。
onnx2tf -i resnet18-v1-7.onnx -okv3
.h5 を生成するとき。
https://www.imdb.com/es/list/ls599679681/
https://www.imdb.com/es/list/ls599679681/copy/
onnx2tf -i resnet18-v1-7.onnx -oh5
# Custom flatcbinary forUbuntu20.04+
#https://github.com/PINTO0309/onnx2tf/issues/196
wgethttps://github.com/PINTO0309/onnx2tf/releases/download/1.7.3/flatc.tar.gz \
&&tar -zxvf flatc.tar.gz \
&&sudo chmod +x flatc \
&&sudomv flatc /usr/bin/
# Custom flatcbinary forWindows
#Set the environment variable paths appropriatelyon your own.
#https://github.com/PINTO0309/onnx2tf/issues/196
https://github.com/PINTO0309/onnx2tf/releases/download/1.7.3/flatc.exe
onnx2tf -i resnet18-v1-7.onnx -coion
https://www.imdb.com/es/list/ls599679368/
TorchVision (MobileNetV3 Large) -> ONNX -> TFLite (シグネチ
TorchVision
ONNX
&&sudoapt-get install -y flatbuffers-compiler
https://github.com/saiyaara-firmytt-hqq
pip install -U onnx==1.14.0 \
&&python -m pip install onnx_graphsurgeon \
--index-urlhttps://pypi.ngc.nvidia.com \
&& pip install -U onnx-graphsurgeon \
&& pip install -U onnxruntime==1.15.1 \
&& pip install -U onnxsim==0.4.33 \
&& pip install -U simple_onnx_processing_tools \
&& pip install -U onnx2tf \
&& pip install -U h5py==3.7.0 \
&& pip install -U psutil==5.9.5 \
&& pip install -Utensorflow==2.13.0 \
&& pip install torch torchvision torchaudio \
--index-urlhttps://download.pytorch.org/whl/cpu
1人2人じゃなく、何人もがプロジェクトの進行やばい、って声を上げてる状態なんだが。
今のやり方だとどう考えても期日に間に合いません。
こうしたらどうでしょう?
作業順番的にここを先にやっておかないと、大量の手待ちが発生します。
いや、最初に合意したスケジュール通りにドキュメントを整備してください。
う〜ん、手空き時間にこっちやっておくか……。
この機能、裏でこういう仕組みとこう言う仕組みが必要なんですが、先に作っておかないと実装できなくなりますよ。
最初に合意したスケジュール通りにドキュメントを整備してください。
大量の手待ち発生。
スケジュールどんどん押していく。
タスク消化率は悪くない?
そりゃ、消化しやすいやつから手をつけてるからそう見えるだけで、未決定なものとか難易度高いタスクがかなり後回しにされてるんだけど、タスクの粒度もバラバラででかいのが残ってるんだけど、それでもタスクの数で消化率出して大丈夫なんか? w
いや、そこじゃねぇだろ。
いや、後から増えてるんじゃなく、もうだいぶ前に指摘してたよね?
………………。
君さ、ガントひいてたよね?
今どれくらいのビハインドなん?
一応してる?
なら手待ちとかそんな頻繁に発生するはずないんだけどな……。
要件仕様書書いて、画面デザイン起こして、ER図書いて、API設計書まで書けば、あとは人海戦術で実装すればOK?
……あー、そう……。
裏で動く部分は考えた?
うん。フレームワークの種別で言えば、一致してはるけど、このサービスが要求する仕様にはマッチしてる?
利用パターン抽出して、どのパターンでも対応できるって確認してるように見えないんだけど。
このサンプル、ドメインロジックにフレームワークの要素ががっちり編み込まれて密結合になってるけど、大丈夫?
………………。
なんだろ?
YouTubeで犬小屋のDIY動画見つつ、2世帯3階建ての家建ててる感が半端ない。
流石にやばいだろ、って真っ当なエンジニアが声を上げてんのに、なんで「ネガティブな発言が多いので、評価できません」とか上から目線で言われるか、全然理解できねぇ。
君らにはどういう世界線が見えてんの?
真顔で言おう。
この規模、複雑度でこの開発プロセスだと、終盤にあちこちで衝突が起こって、その場しのぎの対応するしかできなくて、テストも網羅性を欠くので、全く品質を担保できないんだが……。
これは楽観的というのではなく、無知に起因する無謀だよな。
まぁ、もう無関係の人になるので w
これは再インストールかなあ。
まさか復旧にネットワークが必須というアホなモジュールをubuntuが採用するとは思わなかった。
いかれてるよ。
いつものようにsambaとteratermでubuntu24LTSにアクセスして作業していたら突然の切断。
そして起動しない。
mount /snap/core22/1908: special device /var/lib/snapd/snaps/core22_1908.snapdoes not exist.
can'tlook blockdev
みたいなエラーメッセージが出ていて、よくわからないけどネットワークブートをしたいのか1分カウントダウンをしていた。
ただし、NICを認識していないっぽくてネットワークには出れない。
しかないので、エラーメッセージを手で描き移すという原始人みたいなことをしながらchatgpt先生に聞いてみると、どうやらsnapdが壊れてしまったみたいだ。
このSSDを別のマシンに刺してみると、パーティションは生きているmountもできる。
とりあえずtarでバックアップを取った。SSDのデータは無事らしい。
さて復旧なんだけど・・・これができないんだよな。
/var/lib/snapd/snaps/core22_1908.snap がないならコピーすればいいじゃんということでコピーを試みるも、正常に動作するubuntu24マシンにはそんなファイルはない。
同じUSBからインストールしたOSのはずなのに意味わからん。
しかたないので、chrootしてsnap refreshcoreを実行することにした。
sudo mount --bind /dev /mnt/devsudo mount --bind /dev/pts /mnt/dev/ptssudo mount --bind /proc /mnt/procsudo mount --bind /sys /mnt/syssudochroot /mnt#chroot内でsnap refreshcore
chatgptがいうにはこうやると復旧できるらしいが、失敗!
error: cannot communicate with server: Post "http://localhost/v2/snaps/core": dialunix /run/snapd.socket:connect: no such file or directory
やはり、ちゃんと動く方のubuntu24にはsnapdはいないようだ。
パーテーションもちゃんと見えるのに、grubとかでkernelは起動しているのに、snapdとかゴミが正しく動作しないだけでOSの再インストールをしないといけなさそうだ。
余計な手間を増やすんじゃないよ。
ubuntuインストーラーのUSBをさして、nic認識させたらCtrl+F1..F6とかでインストーラーから飛び降りてmountして復旧する作戦も試してみた。
そしたら起動時のエラーは消えたけどやはり緊急モードでしか起動しない。
もういいよ。バックアップを取っているし、再インストールしよう。
やるの、無理(やってやれないことないけど、厳密に計画してウォーターフォールを何回も回さないと無理で、それぞれの計画から要件定義からよほど知見がある人じゃないと無理。そこらへんの素人には無理、なので無理)って指摘したら、「『個人的経験をもとに』ネガティブな発言を繰り返す」扱いされて、マジ呆れた。
DDD、TDD、クリーンアーキテクチャ、マイクロサービス等々、何のために捻り出されたと思ってんだよ。
実際、指摘した通りの現象に陥ってるじゃねぇか。
したら、「陥らないように行動するのが仕事じゃないですか?」
とかわけわからんこと言ってくる。
工学的知見に基づいて、この規模、複雑度のプロジェクトを、画面駆動開発のウォーターフォールでやるのは無理だと言っているのに、ウォーターフォールで解決しろって、お前、何言ってんだよ、と。
# ちなみに、ドメイン駆動開発 withSudoモデリング を採用していると主張している。いや、Sudoモデリングの時点でドメイン駆動じゃねーじゃねーか w
とか言って、依存関係考えてないから、どこがどうなるか確定した場所が少なすぎて、プロジェクトがスタックし始める。
基礎の組み方、配管の通し方から、同居予定のばあちゃんの1週間の着替えパターンまでを、同一ラインで扱って、全部確定するまで実作業をしないで家を建てるなんてアホウはそうそうおらんぞ。
見た目はびっしりしてるんだけどね。
けどね。
けど……。
昨日、離脱すると正式に決まって、今朝は久しぶりにちゃんと寝れた。
1ヶ月以上、考えすぎて寝れてなかったからな。
まぁ、大体パターンはある。
いわゆる「勝ちに不思議の勝ちあり。負けに不思議の負けなし」ってやつ。
今の現場もそうで、どうしようかなー、ってなってるんだが。
「できるエンジニアはたくさんのサービスやフリーのライブラリを知っている」
ってのが、たぶんでかい。
これの何が良くないのかって言ったら、「そのプロダクトに必要なコンセプトを深掘りしない」ので、個々の小さい処理に引きづられて複雑な構成を前提にしてしまうということと、その複雑な構成をフルにカバーできるさらに複雑でリッチなライブラリなりサービスを、業務経歴書に書けるって理由も大きく影響しつつ、選択して、プロダクトの必要な部分とその複雑な仕様の間を無理ぐり埋めることで、複雑な上に歪んだ、9割以上「間違えた」使い方を、プロダクトの基本部分の凸凹にピッタリと縫い付けてしまって、取り外しできなくしてしまうということの2点だ。
こいつは、DDDとは対極にある手法なんだが、なぜかDDDを採用してますって組織でよくみられる光景だったりする。
つまり、DDDすら、プロダクトのコンセプトを深掘りしないで、カタログ捲って目について、「こいつは業務経歴書に書ける!」ってんで表面的に採用して、大した理解もできないままチームの技術力とのギャップを無理ぐり埋めて誤魔化して、にっちもさっちも行かなくなる。
ってパターンよな。
できるエンジニアはたくさんのサービスやフリーのライブラリを知った上で、そのプロダクトに必要なコンセプトを深掘りして、徹底的に抽象化、簡素化して設計してるんです。
Sudoモデリングみたいな画面帳票駆動の権化みたいなうんこ手法なんて、やりません。
そもそも「たくさんのサービスやフリーのライブラリを知った」ってのも、諸元表とか機能表とか「表」や提供者の広告記事を誦じてるんじゃなく、どういう経緯で設計実装されていて、裏でどういう処理がされていて、どういう癖があるかを把握している、っていう点で、多分別物だったりする。
この辺り、やってる連中は同じことをやってると思い込んでるみたいだけど、やってること、「全く違います」。
今の現場で信奉されているんだが、おいおいおいおい、考える頭がねーな、AIに駆逐されてぇのか?SIer仕草のままじゃねーか。
と呆れてものも言えん。
90年代の、箱庭的な単機能小規模完納プロダクトなら帳票・画面駆動開発で十分だったが、常に成長し続ける宿命を背負った多機能なWebサービスでは、帳票や画面遷移、デザインから立ち上げたら、絶対に発生する手戻り、仕様変更についていけなくなるだろ? ってアンチテーゼとしてドメイン駆動開発が提案されたんだけどな。
手戻り、仕様変更はドメインのコンセプト、概念に沿って発生する。
というのが基本アイディアだ。
帳票・画面という具象はあえて捨象し、コンセプトという抽象に昇華することが本質ということだ。
抽象思考に不自由なエンジニアが、すぐに具象に飛びつきたくなるのはわからんではないが、それによって以前の帳票・画面駆動開発のマイナスが消せてるか? w
画面、帳票のグルーピングをしてるだけじゃねーか w
本当のDDDの観点からすれば、帳票・画面は、ドメインコンセプトの一断面での切り出しに過ぎない。
如何様にも切り出せる。
足りなきゃアトリビュートを追加すれば済む。
手戻り、仕様変更なんて、道端の犬糞の向きを変えるほどの手間ですらない。
一旦ドメインコンセプトを実装したら、他の機能のほとんどは、それをどう適用するか、パラメータレベルの違いしかない。
ドメインコンセプトレベルで検証(テスト)すれば、いくら機能が増えようが、パラメータの検証だけで済む。
Doyou understand ?
こちとら、オライリー本のつまみ食いとか三下が書くWeb記事をありがたがって鵜呑みしてやってるわけではない。
他のいろんなエンジニアが同じことに悩み始めていた20年以上前、クライアントの先輩エンジニアにヒントをもらって始めた内容だ。
当時、上司の設計で交渉を続けていたが、毎度毎度仕様変更が入り、何かずれているんでしょうか? と聞いた。
「君は僕たちの業務を理解できてない。僕たちにとって〇〇がどういうものか。僕が足りないと感じるのは、君がその要素を理解できていないからだ」
とヒントをくれて、気がついた。
「僕たちにとって〇〇がどういうものか」
つまり、その業務(ドメイン)のコンセプトを無視したら、利用者が本当に欲しいものが実現できないし、手戻りが発生したら対応できないし、変更についていけない。
そりゃ当然だ。
そのドメインのコンセプトの集合体、「ドメイン世界」と一致してないから。
手戻り、仕様変更、いずれにおいても障害が生じるのは、そのねじれのせいだからだ。
コピペして無意味な消し忘れをしたジュニアのエンジニアをカーゴカルトプログラミングと笑う無能エンジニアをたくさん見てきたが、この手のWebの何の根拠もない言説を鵜呑みにして、検証することもなく、HowToの上っ面だけをなぞる猿こそ、何百倍も罪深いカーゴカルトエンジニアだと、自覚しろよ。
お前のことだよ。
お前の語るのはDDDじゃない?
家にCDがあるんだけど、
100円でCD買ったんだけど、
どうせ音声データを取り出すなら、いい音質で聴きたい
そういう人のために、
Linux だと、
Whipperという、高機能なリッピング用のパッケージがあるよ
でWhipperはすぐにインストールできるよ(Debian系のディストリビューションの場合)
Whipper ではいろいろなことができるけど、
whippercd info
デフォルト設定だと、flacというファイル形式でデータを取り出すようになっているよ
アルバム名、曲名、アーティスト名とかのデータを付加したファイルを作ってくれるよ
珍しいCDとか古いCDだと、whipperがメタデータを見つけられないことがあるよ
その時はエラーメッセージが出て、MusicbrainzというサイトにCDを登録するようお勧めされるよ
MusicbrainzはフリーのCDメタデータのデータベースだよ
(エラーメッセージの下の方に、だいたい、CDDBというデータベースから見つかった、正しい情報が載っているよ、でもこれはそのままでは使えない)
表示されているMusicbrainzのURLをブラウザに貼り付けると、CDの登録画面に行くよ
膨大な情報の中から探しているCDをかなりの確度で探し出してくれるよ
登録が終わったら、もう一回
を実行するよ
そしたらメタデータがきれいに入った状態で音声データファイルが作成できるよ
これだけ
Whipper は読み取りエラーを最小にして、
CDから忠実に音声データを取り出すことを優先して作られてるから、
気長に待とう
ChatGPTとシェルスクリプトを使って、自分でメタデータを一括入力する方法があるよ
それはまた別の機会に
しゃーない、ワイがおすすめのインプレス記事貼るゾンビになるやで
ASMR好き編集部員、4400円で“ASMRの魅力が味わえる”AZLA「AIM C」使ってみた - AV Watch[Sponsored]
イヤピだけで1500円くらいの価値あると思うからお得やで…いやこれ6ペアやん、もっと価値あるで
このシリーズ2ペアでも1000円ちょいしてたやつの改良版やねん
【特集】Windows 11最新版「24H2」にアップデートする価値はある?新機能まとめて紹介!Windows 10は選択の余地なし - PC Watch
ワイが使えそうと思った追加機能は、エクスプローラーのタブ右クリからの複製と、スマホやタブをPCカメラ代わりにする設定やな
あとsudoコマンドがターミナルやPowershellで使えるようになったんも、いちいち管理者で起動せんで済むからええな