はてなキーワード: sudoとは
[Deprecated] WSL2 USBカメラ+他のUSB機器 2022年01月17日
環境:Windows11 + WSL2 5.10.60.1 + Ubuntu20.04
WSL2 Linux Kernel 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 サブシステム ディストリビューション:
追加パッケージをインストール sudo apt install linux-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/
WSL2 USBカメラ+他のUSB機器 2022年09月06日版
WSL2 Linux Kernel 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 はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://github.com/dorssel/usbipd-win/releases/download/v2.3.0/usbipd-win_2.3.0.msi
██████████████████████████████ 10.4 MB / 10.4 MB
> wsl --install --distribution Ubuntu-20.04
[WT] WSLのディストリビューションを起動(WSL2起動用アイコンをマウスでクリックして起動してもよい)
> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
sudo apt install -y linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
> wsl --shutdown
[WT] USBカメラが usbipd に認識されることを確認する (この記事では 2-7)
2-2 056e:00d9 USB 入力デバイス Not attached
2-3 1c4f:0027 USB 入力デバイス Not attached
2-7 1bcf:2284 Full HD webcam, USB microphone Not attached
2-11 0495:3011 ESS USB DAC, 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:00d9 USB 入力デバイス Not attached
2-3 1c4f:0027 USB 入力デバイス Not attached
2-7 1bcf:2284 Full HD webcam, USB microphone Attached - Ubuntu-20.04
2-11 0495:3011 ESS USB DAC, 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:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 1bcf:2284 Sunplus Innovation Technology Inc. Full HD webcam
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ls: cannot access '/dev/video*': No such file or directory
[Ubuntu] USB CameraがWSL内で認識されるようにLinuxカーネルをカスタムビルドする。下記リポジトリの手順通りに実施すると、WSL Linuxカーネルがカスタムビルドされたものに入れ替わる。注意点は、<windows username> の部分だけは各自の環境のWindowsユーザー名に手で書き換える必要が有ること。なお、.wslconfig は 絶対に windows 側で編集してはならない。絶対に。
> wsl --shutdown
[WT] USBカメラが usbipd に認識されることを確認する (この記事では 2-7)
2-2 056e:00d9 USB 入力デバイス Not attached
2-3 1c4f:0027 USB 入力デバイス Not attached
2-7 1bcf:2284 Full HD webcam, USB microphone Not attached
2-11 0495:3011 ESS USB DAC, 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:00d9 USB 入力デバイス Not attached
2-3 1c4f:0027 USB 入力デバイス Not attached
2-7 1bcf:2284 Full HD webcam, USB microphone Attached - Ubuntu-20.04
2-11 0495:3011 ESS USB DAC, USB 入力デバイス Not attached
2-14 8087:0029 インテル(R) ワイヤレス Bluetooth(R) Not attached
[Ubuntu] WSL2上の Ubuntu20.04 の中からUSBカメラが認識されていることを確認する
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 1bcf:2284 Sunplus Innovation Technology Inc. Full HD webcam
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
crw------- 1 root root 81, 0 Sep 6 17:29 /dev/video0
crw------- 1 root root 81, 1 Sep 6 17:29 /dev/video1
[Ubuntu] USBカメラがWSL2の中から認識されることを確認するテストコードを作成する
$ pip install opencv-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/
while True:
ret, frame
ONNX -> TFLite, TensorFlow, Keras, TFJS, CoreML 変換
実装している機能が多すぎるので、この記事に表現していない変換オプションはREADMEを参照。TransformerやSTTやTTSやその他もろもろの一発変換に対応したつもり。onnx-tensorflow より推論効率が高いモデルを生成できる。また、onnx-tensorflowよりも対応しているオペレーションの種類が多い。
コントリビューター
コード量(code = 行)
cloc .
419 text 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 install onnx2tf -U
wget https://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 flatc binary for Ubuntu 20.04+
# https://github.com/PINTO0309/onnx2tf/issues/196
wget https://github.com/PINTO0309/onnx2tf/releases/download/1.7.3/flatc.tar.gz \
&& tar -zxvf flatc.tar.gz \
&& sudo chmod +x flatc \
&& sudo mv flatc /usr/bin/
# Custom flatc binary for Windows
# Set the environment variable paths appropriately on 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
TorchVision (MobileNetV3 Large) -> ONNX -> TFLite (シグネチ
TorchVision
ONNX
&& sudo apt-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-url https://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 -U tensorflow==2.13.0 \
&& pip install torch torchvision torchaudio \
1人2人じゃなく、何人もがプロジェクトの進行やばい、って声を上げてる状態なんだが。
今のやり方だとどう考えても期日に間に合いません。
こうしたらどうでしょう?
作業順番的にここを先にやっておかないと、大量の手待ちが発生します。
いや、最初に合意したスケジュール通りにドキュメントを整備してください。
う〜ん、手空き時間にこっちやっておくか……。
この機能、裏でこういう仕組みとこう言う仕組みが必要なんですが、先に作っておかないと実装できなくなりますよ。
最初に合意したスケジュール通りにドキュメントを整備してください。
大量の手待ち発生。
スケジュールどんどん押していく。
タスク消化率は悪くない?
そりゃ、消化しやすいやつから手をつけてるからそう見えるだけで、未決定なものとか難易度高いタスクがかなり後回しにされてるんだけど、タスクの粒度もバラバラででかいのが残ってるんだけど、それでもタスクの数で消化率出して大丈夫なんか? w
いや、そこじゃねぇだろ。
いや、後から増えてるんじゃなく、もうだいぶ前に指摘してたよね?
………………。
君さ、ガントひいてたよね?
今どれくらいのビハインドなん?
一応してる?
なら手待ちとかそんな頻繁に発生するはずないんだけどな……。
要件仕様書書いて、画面デザイン起こして、ER図書いて、API設計書まで書けば、あとは人海戦術で実装すればOK?
……あー、そう……。
裏で動く部分は考えた?
うん。フレームワークの種別で言えば、一致してはるけど、このサービスが要求する仕様にはマッチしてる?
利用パターン抽出して、どのパターンでも対応できるって確認してるように見えないんだけど。
このサンプル、ドメインロジックにフレームワークの要素ががっちり編み込まれて密結合になってるけど、大丈夫?
え? フレームワークのサンプル参考にしてるんだから、正しい?
………………。
なんだろ?
YouTubeで犬小屋のDIY動画見つつ、2世帯3階建ての家建ててる感が半端ない。
流石にやばいだろ、って真っ当なエンジニアが声を上げてんのに、なんで「ネガティブな発言が多いので、評価できません」とか上から目線で言われるか、全然理解できねぇ。
君らにはどういう世界線が見えてんの?
真顔で言おう。
この規模、複雑度でこの開発プロセスだと、終盤にあちこちで衝突が起こって、その場しのぎの対応するしかできなくて、テストも網羅性を欠くので、全く品質を担保できないんだが……。
これは楽観的というのではなく、無知に起因する無謀だよな。
まぁ、もう無関係の人になるので w
これは再インストールかなあ。
まさか復旧にネットワークが必須というアホなモジュールをubuntuが採用するとは思わなかった。
いかれてるよ。
いつものようにsambaとteratermでubuntu24 LTSにアクセスして作業していたら突然の切断。
そして起動しない。
mount /snap/core22/1908: special device /var/lib/snapd/snaps/core22_1908.snap does not exist.
can't look blockdev
みたいなエラーメッセージが出ていて、よくわからないけどネットワークブートをしたいのか1分カウントダウンをしていた。
ただし、NICを認識していないっぽくてネットワークには出れない。
しかないので、エラーメッセージを手で描き移すという原始人みたいなことをしながらchatgpt先生に聞いてみると、どうやらsnapdが壊れてしまったみたいだ。
このSSDを別のマシンに刺してみると、パーティションは生きているmountもできる。
とりあえずtarでバックアップを取った。SSDのデータは無事らしい。
さて復旧なんだけど・・・これができないんだよな。
/var/lib/snapd/snaps/core22_1908.snap がないならコピーすればいいじゃんということでコピーを試みるも、正常に動作するubuntu24マシンにはそんなファイルはない。
同じUSBからインストールしたOSのはずなのに意味わからん。
しかたないので、chrootしてsnap refresh coreを実行することにした。
sudo mount --bind /dev /mnt/dev sudo mount --bind /dev/pts /mnt/dev/pts sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt # chroot内で snap refresh core
chatgptがいうにはこうやると復旧できるらしいが、失敗!
error: cannot communicate with server: Post "http://localhost/v2/snaps/core": dial unix /run/snapd.socket: connect: no such file or directory
やはり、ちゃんと動く方のubuntu24には snapdはいないようだ。
パーテーションもちゃんと見えるのに、grubとかでkernelは起動しているのに、snapdとかゴミが正しく動作しないだけでOSの再インストールをしないといけなさそうだ。
余計な手間を増やすんじゃないよ。
ubuntuインストーラーのUSBをさして、nic認識させたらCtrl+F1..F6とかでインストーラーから飛び降りてmountして復旧する作戦も試してみた。
snap refresh coreを発行するとやはりエラー。
もう知らん消すと apt purge snapd とやった。
そしたら起動時のエラーは消えたけどやはり緊急モードでしか起動しない。
もういいよ。バックアップを取っているし、再インストールしよう。
やるの、無理(やってやれないことないけど、厳密に計画してウォーターフォールを何回も回さないと無理で、それぞれの計画から要件定義からよほど知見がある人じゃないと無理。そこらへんの素人には無理、なので無理)って指摘したら、「『個人的経験をもとに』ネガティブな発言を繰り返す」扱いされて、マジ呆れた。
DDD、TDD、クリーンアーキテクチャ、マイクロサービス等々、何のために捻り出されたと思ってんだよ。
実際、指摘した通りの現象に陥ってるじゃねぇか。
したら、「陥らないように行動するのが仕事じゃないですか?」
とかわけわからんこと言ってくる。
工学的知見に基づいて、この規模、複雑度のプロジェクトを、画面駆動開発のウォーターフォールでやるのは無理だと言っているのに、ウォーターフォールで解決しろって、お前、何言ってんだよ、と。
# ちなみに、ドメイン駆動開発 with Sudoモデリング を採用していると主張している。いや、Sudoモデリングの時点でドメイン駆動じゃねーじゃねーか w
とか言って、依存関係考えてないから、どこがどうなるか確定した場所が少なすぎて、プロジェクトがスタックし始める。
基礎の組み方、配管の通し方から、同居予定のばあちゃんの1週間の着替えパターンまでを、同一ラインで扱って、全部確定するまで実作業をしないで家を建てるなんてアホウはそうそうおらんぞ。
見た目はびっしりしてるんだけどね。
けどね。
けど……。
昨日、離脱すると正式に決まって、今朝は久しぶりにちゃんと寝れた。
1ヶ月以上、考えすぎて寝れてなかったからな。
まぁ、大体パターンはある。
いわゆる「勝ちに不思議の勝ちあり。負けに不思議の負けなし」ってやつ。
今の現場もそうで、どうしようかなー、ってなってるんだが。
「できるエンジニアはたくさんのサービスやフリーのライブラリを知っている」
ってのが、たぶんでかい。
これの何が良くないのかって言ったら、「そのプロダクトに必要なコンセプトを深掘りしない」ので、個々の小さい処理に引きづられて複雑な構成を前提にしてしまうということと、その複雑な構成をフルにカバーできるさらに複雑でリッチなライブラリなりサービスを、業務経歴書に書けるって理由も大きく影響しつつ、選択して、プロダクトの必要な部分とその複雑な仕様の間を無理ぐり埋めることで、複雑な上に歪んだ、9割以上「間違えた」使い方を、プロダクトの基本部分の凸凹にピッタリと縫い付けてしまって、取り外しできなくしてしまうということの2点だ。
こいつは、DDDとは対極にある手法なんだが、なぜかDDDを採用してますって組織でよくみられる光景だったりする。
つまり、DDDすら、プロダクトのコンセプトを深掘りしないで、カタログ捲って目について、「こいつは業務経歴書に書ける!」ってんで表面的に採用して、大した理解もできないままチームの技術力とのギャップを無理ぐり埋めて誤魔化して、にっちもさっちも行かなくなる。
ってパターンよな。
できるエンジニアはたくさんのサービスやフリーのライブラリを知った上で、そのプロダクトに必要なコンセプトを深掘りして、徹底的に抽象化、簡素化して設計してるんです。
Sudoモデリングみたいな画面帳票駆動の権化みたいなうんこ手法なんて、やりません。
そもそも「たくさんのサービスやフリーのライブラリを知った」ってのも、諸元表とか機能表とか「表」や提供者の広告記事を誦じてるんじゃなく、どういう経緯で設計実装されていて、裏でどういう処理がされていて、どういう癖があるかを把握している、っていう点で、多分別物だったりする。
この辺り、やってる連中は同じことをやってると思い込んでるみたいだけど、やってること、「全く違います」。
今の現場で信奉されているんだが、おいおいおいおい、考える頭がねーな、AIに駆逐されてぇのか? SIer仕草のままじゃねーか。
と呆れてものも言えん。
90年代の、箱庭的な単機能小規模完納プロダクトなら帳票・画面駆動開発で十分だったが、常に成長し続ける宿命を背負った多機能なWebサービスでは、帳票や画面遷移、デザインから立ち上げたら、絶対に発生する手戻り、仕様変更についていけなくなるだろ? ってアンチテーゼとしてドメイン駆動開発が提案されたんだけどな。
手戻り、仕様変更はドメインのコンセプト、概念に沿って発生する。
というのが基本アイディアだ。
帳票・画面という具象はあえて捨象し、コンセプトという抽象に昇華することが本質ということだ。
抽象思考に不自由なエンジニアが、すぐに具象に飛びつきたくなるのはわからんではないが、それによって以前の帳票・画面駆動開発のマイナスが消せてるか? w
画面、帳票のグルーピングをしてるだけじゃねーか w
本当のDDDの観点からすれば、帳票・画面は、ドメインコンセプトの一断面での切り出しに過ぎない。
如何様にも切り出せる。
足りなきゃアトリビュートを追加すれば済む。
手戻り、仕様変更なんて、道端の犬糞の向きを変えるほどの手間ですらない。
一旦ドメインコンセプトを実装したら、他の機能のほとんどは、それをどう適用するか、パラメータレベルの違いしかない。
ドメインコンセプトレベルで検証(テスト)すれば、いくら機能が増えようが、パラメータの検証だけで済む。
Do you understand ?
こちとら、オライリー本のつまみ食いとか三下が書くWeb記事をありがたがって鵜呑みしてやってるわけではない。
他のいろんなエンジニアが同じことに悩み始めていた20年以上前、クライアントの先輩エンジニアにヒントをもらって始めた内容だ。
当時、上司の設計で交渉を続けていたが、毎度毎度仕様変更が入り、何かずれているんでしょうか? と聞いた。
「君は僕たちの業務を理解できてない。僕たちにとって〇〇がどういうものか。僕が足りないと感じるのは、君がその要素を理解できていないからだ」
とヒントをくれて、気がついた。
「僕たちにとって〇〇がどういうものか」
つまり、その業務(ドメイン)のコンセプトを無視したら、利用者が本当に欲しいものが実現できないし、手戻りが発生したら対応できないし、変更についていけない。
そりゃ当然だ。
そのドメインのコンセプトの集合体、「ドメイン世界」と一致してないから。
手戻り、仕様変更、いずれにおいても障害が生じるのは、そのねじれのせいだからだ。
コピペして無意味な消し忘れをしたジュニアのエンジニアをカーゴカルトプログラミングと笑う無能エンジニアをたくさん見てきたが、この手のWebの何の根拠もない言説を鵜呑みにして、検証することもなく、HowToの上っ面だけをなぞる猿こそ、何百倍も罪深いカーゴカルトエンジニアだと、自覚しろよ。
お前のことだよ。
お前の語るのはDDDじゃない?
家にCDがあるんだけど、
100円でCD買ったんだけど、
どうせ音声データを取り出すなら、いい音質で聴きたい
そういう人のために、
Linux だと、
Whipperという、高機能なリッピング用のパッケージがあるよ
でWhipperはすぐにインストールできるよ(Debian系のディストリビューションの場合)
Whipper ではいろいろなことができるけど、
whipper cd 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で使えるようになったんも、いちいち管理者で起動せんで済むからええな