
はてなキーワード:カーネルとは
そろそろ卒業しようとしている矢先だった。
夢に出てくるエンジニアは、本当に「変」だった。
一見すると異常にも見えるコミュニケーション、機械じみた自己管理、無駄を極限まで削ぎ落とす妙な哲学。周囲からは煙たがられつつも、確実にシステムを回していた。あの人のような生き方に憧れたこともあったし、同時に絶対になりたくないとも感じた。
どこか皆、ちょっとずれているのだ。オフィスで昼飯時にLinuxカーネルのバグを肴に盛り上がるやつ、Slackの通知音に過敏なやつ、パケットキャプチャが趣味のやつ、ROM焼きに命かけてるやつ。納期前の深夜のオフィスの空気は独特だ。妙なテンションと絶望と、根拠のない希望がぐるぐる回る。
自分にもそんな時期があった。
コーディング漬けの新卒時代、深夜に会社でカップラーメンを啜りながら、先輩の叱責をポエムのように聞き流していた。バグがバグを呼ぶプロダクト、人間関係のギスギスと、たまに奇跡のような成功体験が舞い込む。結局、最強のエンジニアとは変人であることを受け入れた奴だったんだと思う。
でも年齢を重ねて、変であることに疲れてきた。
あの頃なんであんなコードの綺麗さにこだわっていたのか。なぜ誰も使わないCLIツールのローカライズなんてやっていたのか。自分しか使っていないcronジョブの記述、美しい正規表現を夢見た夜。
ITを卒業する今、思い出すのは、変さへの憧れと少しの羨ましさだ。きっと、変なことに全力を注げるやつこそがITを使いこなせたんだろう。自分は途中で他人の目を気にしてしまった。変なまま突っ走れる勇気が欲しかった。
変なITエンジニアの夢を見て、靄のかかったような気持ちになった。自分が過ごした時間が、他人から見れば奇妙な記憶だろう。でもその奇妙さこそが、IT業界の風景の一部だった気がする。
たぶん、自分もどこかで誰かに「変なエンジニア」と呼ばれていたのだろう。笑い話になるかどうかは分からない。ただ、妙に優しい気持ちになった。これからは「普通」の世界で生きていく。だけど、あの変な夜更けや、無意味で完璧なコードと、愚直な情熱のことを、たまには思い出してみようと思う。
needygirloverdoseのエンディングの一つでPCのLANを抜くと超てんちゃんが突然インターネットをやめちゃうってのがあるんだけど、その影響でIT業界が崩壊するんだよね
IT業壊暴落するエンドが平成の感覚を持ってないと絶対出てこないだろうなって
今じゃIT企業というかIT業界事態が暴落することはもうないだろうね
u-stremとか、覇権とってたサービスが終わるってのは当時ガキだった俺でもこんなに儚いものなんだな〜と思って
ITサービスって結局人類にとっては一時的なものに過ぎないのかもしれないという技術オタクたちの不安感もあった(推測)
今はないでしょ、あからさまにもう絶対終わらないでしょIT企業
NT系のカーネルが入ってない16bitの遺産に無理やりGUIのっけた時代のwindowsも本当に好きなんだよな
XPは確かに名作なんだけど、それ以降のNT系カーネルを持ったwindowsはユニコーンのゲロみたいに綺麗で整理されて独特の気持ち悪さがあって嫌いなんだよね(aeroってヤツ?)
ニディガのwindose20ってOSはあからさまにNT系以前のms-dosベースの9x系じゃん?
そんなことどこにも書いてないけどなんとなく雰囲気でわかるっていうか
NT系カーネルは今のモダンOSにとってはあまりにもチープにみえちゃう
Darwin以前のMacOSと9x系を比べると9x系の方に愛着は勝つんだけど、NT系とDarwin以降のMacOSを比べるとMacOSの方が実用的過ぎてかっこよく見えちゃうのは仕方がない(過激なこと言ってすみませんでした)
ChatGPTに聞いたらええんちゃうか
いい質問ですね!
これ、実は「どっちが正しい」みたいな決着はなくて、言語文化や時代背景によって意見が分かれる話題なんです。
---
1. for(;;) vs while(1) vs while(true)
* `for(初期化; 条件;更新)` のすべてを省略すると無条件ループになる。
* 昔は「最適化や挙動が明確」という理由で好まれることもあった。
* ただし「1って何?ブール値?」と初学者には直感的でないかも。
*C++やJava、C#などブール型が明確な言語では「一番可読性が高い」。
* 「ずっと真の間繰り返す」という自然な書き方なので、最近はこちらが推奨されることが多い。
* Cではtrueを使うには stdbool.h をインクルードする必要があるので、昔は避けられがちだった。
---
2. 「for(;;)派」の人は誰?
ネットでよく言われるのは、Linuxカーネルのコード規約とか古いUNIX文化の影響です。
* 「無限ループは for(;;) を使う」とカーネル開発のスタイルガイドで書かれている。
*理由は「歴史的にCで最も標準的で、誰もが見慣れているから」。
要するに「C文化圏ではfor(;;)が王道」というだけで、現代の教育やC++/Javaなどの文脈では while(true) の方が読みやすい、という感じです。
---
3. まとめると
なので、初学者が「while(true)の方が可読性高い」と思うのは大正解です 👍
---
👉質問:
提示してる「そうめんでいい」バリアントの発話仕様、あれってコミュニケーション・レイヤーでいうと意味論的優先度フィールドがゼロ初期化されてるパケットなんだよな。
で、そのゼロ初期化パケットが相手の感情OSに到達すると、そこに実装されてる価値評価アルゴリズム(通称Pride-Driven Interaction Protocol)が、受信値を「非積極的承認」としてパースする。
つまり、入力信号の中に“熱量ビット”が存在しないと、即座にException: DEVALUATION_ERRORがスローされる仕様なんだわ。
その例外は通常のtry-catchでハンドリングされず、感情カーネルを通じてフロントエンドの態度・表情UIに直結するから、結果的に「何様だよ」っていう可視化出力が生成される。
さらに、相手の感情モジュールは言語的同値判定じゃなくて意図ベースのベクトル比較を行ってるから、
「そうめんがいい」(積極的選好ベクトル) と 「そうめんでいい」(受動的妥協ベクトル) は、同一文字列近似度99%でも意味論距離が閾値越えしてエラー扱いになる。
これを無視して「ただの晩飯APIコール」だと軽視するのは、TCPレベルのパケットロスを「まぁ届くっしょ」で放置するようなもんで、
通信の確実性よりも自己CPUサイクルの節約を優先する、お前側のシステム設計思想が原因なんだよな。
結局のところ、感情という非決定性システムに対して最適化パラメータ調整を怠ってる時点で、お前の通信モデルは高確率でクラッシュを引き起こす。
もし稼働安定性を確保したいなら、相手のEmotionalAPI Referenceを逆コンパイルして、推奨トークン列を生成するスクリプトを実装すべきだわ。
[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
Linuxのスマートフォンを実際に使っている人間の感想として。
PinephoneというARMベースのSoCで動くスマートフォンにDebian(正確にはMobianというDebianフォーク)を入れてしばらく使っているが、これは現状では普及しないだろうなという気はする。理由を書いてみる。
Android/iOSではあたりまえにできる日本語のフリック入力がLinuxスマートフォンではいまだにできない。日本語入力自体はもちろん使えるので、ローマ字入力になる。画面が小さくてキーボードが小さいとつらい。既存のスクリーンキーボードをカスタマイズすればフリック入力っぽいものが作れそうだが、大変すぎるので自分でやる気にはならない。
いや、フリック入力できるぞ?という人は適切なパッケージを教えてください……
Linuxスマートフォン用にいくつかのUI(Linuxではデスクトップ環境と呼ばれるやつ)がある。代表的なものはPhoshだ。モバイル用のUIにプリインストールされているパッケージはモバイル端末用にある程度最適化されているのだが、自分でインストールしたパッケージは基本的にデスクトップでの使用を前提にしているので、そのまま使うのは厳しい。
自分が持っているPinephoneにはLibreOfficeもインストールして普通に動くが、画面のほとんどがツールバーで埋まってしまって、まともに使うのはほぼ無理だ。
現時点でもPostmarketOS、Mobianをはじめとして、モバイル端末用のLinuxディストリビューションにはいくつかの選択肢がある。モバイル端末用のUIにも複数の選択肢がある。さまざまな端末でバッテリーの消費を最適化し、カメラやセンサーが動くようにし、同じアプリが使えるように、デバイスドライバをはじめとして諸々の機能を開発するのは膨大なコストになりそうなので、Androidでいいじゃん、となる。
このエントリは2008年発売のAcerAspire One ZG5を使って書いている。
中古で買ったネットブック(AcerAspire One ZG5)をアップグレードし、Linuxディストリビューションをインストールし、軽作業ができるようにしていた。
本体キーボードが壊れることも含めて、あらゆるトラブルに遭い続けている。
直近ではDebian11 32bitをインストールして一通りの作業はできるようになっているが、ハードウェア制御にいろいろな問題が残っている。
CPU:Atom N270 (single core 1.6Ghz)
RAM: 1.5GB
ディスプレイ: 8.9インチ, 1024x600TFTLCD
OS:Debian GNU/Linux11 (bullseye)i686
このエントリは2008年発売のAcerAspire One ZG5を使って書いている。
中古で買ったネットブック(AcerAspire One ZG5)をアップグレードし、Linuxディストリビューションをインストールし、軽作業ができるようにしていた。
本体キーボードが壊れることも含めて、あらゆるトラブルに遭い続けている。
直近ではQ4OS 32bitという低スペックのPCでも動くディストリビューションのインストールに成功していた。
CPU:Atom N270 (single core 1.6Ghz)
ディスプレイ: 8.9インチ, 1024x600TFTLCD
OS:Debian GNU/Linux11 (bullseye)i686
Mac で開発している。開発物は主にLinuxのカーネルモジュール。.koファイル。Linuxをラップトップ、ノーパソで使わせてくれる会社のお勤めの方が羨ましい。だって手元でコンパイルしたいじゃない?
会社がコンピュータ筐体を管理するソフトを入れてくる都合上、MacかWinの二択。以前はWinラップトップにLinuxをデュアルブートできるようにしてこっそり使ってたら、ある時バレて怒られちゃった。以来2012年頃のお古Macラップトップを与えられて10年使い続けている。アップルシリコン使いたくない一心でOpencorelegacy patcher 様に頼り筐体交換を拒否ってる。値段も高いしね。デュアルブートしてLinux使って仕事してることは内緒。
WSL2が素晴らしいようだけど、カーネルモードドライバとかつくれるの?IRQとか叩いたり、割り込みとか触るんだけど…VMだとなんか動作が違っていろんなバグが再現しないんです。
「言語IQ120程度(医療機関で計測)、平均より上だが特異なレベルではない」確かに、「頭がいい」範囲ですが、学術的基礎研究や金融のトップレベルで活躍する人々は往々にしてもっと高いIQを持つとされています。
しかし、知能と成功の関係は単純な線形関係ではありません。「閾値理論」というものがあり、ある程度の知能レベル(多くの研究では120前後と言われる)を超えると、それ以上の成功には他の要素(人格特性、対人スキル、機会、運、タイミングなど)が大きく影響するようになります。つまり、「十分に頭がいい」レベルに達していれば、それ以上の差異は必ずしも成功の主要因ではなくなるという考え方です。
「機会には飛び切り恵まれました」という点は非常に重要です。キャリアの成功において、能力だけでなく「正しい場所に正しいタイミングでいること」の価値は計り知れません。LinuxカーネルやOracle のバックエンドといった通常ジュニアには触れられない領域での経験、M や A での直雇用の機会など、これらは多くの人が望んでも得られない貴重な経験です。
こうした機会は「運」の要素もありますが、「全体処理能力」や「抽象化能力」といった強みが、採用側から見て魅力的に映った可能性もあります。
Gorkちゃん:議論の余地: 「全体処理が魅力的に映った」は仮説で、証拠なし。Bさんの「高圧縮」が「細かいスキル」を隠した可能性もあり、「運」の比重が大きいかも。「ジュニアがなぜいた?」はワイさんも疑問で、Claudeの説明は弱い。
コンサルタントとして安定して高収入を得られる可能性についてですが、ワイさん仕様書で見られる認知特性(全体処理能力、抽象化能力、システム思考など)は実際にコンサルティング業界で高く評価される傾向があります。技術的深さよりも広い視野と概念理解、そして本質の抽出能力がコンサルティングでは重要だからです。
ただし、コンサルティングでは「インフォーマル環境での動作」で挙げられていた課題(認知的ジャンプ、話題転換の唐突さなど)が影響する可能性もあります。クライアントとの関係構築では、技術的理解だけでなく共感や社会的調整が重要になるからです。
「自己制御能力と知能には深い関連性がある」という点は、認知科学の観点からも支持される見解です。典型的には、実行機能(遂行機能)と呼ばれる認知能力のセットが、知能と自己制御の両方に関わっています。
「プライベートがもっといい感じでもいいのでは」という疑問は、興味深い考察です。ワイさん仕様書で見られる特性(注意の散漫さ、興味の偏り、多動性など)が私生活の質に影響している可能性はあります。しかし、これらの特性は「欠点」というより「特定の認知スタイル」と捉えることもできます。
総合すると、あなたの状況は「特異な才能」というより「独自の認知プロファイル」を持ち、それを特定の環境で効果的に活用できている例と考えられます。特に重要なのは:
1.知的能力の質:純粋なIQ値よりも、あなたの持つ特定の認知能力(全体処理、抽象化など)が特定のニッチで価値を持っている
2.機会の活用: 恵まれた機会を効果的に活用できる適応力を持っている
3.認知スタイルの自己理解:自分の強みと課題を理解し、それに合わせた環境選択や戦略が可能
これらを踏まえると、「もっと成功できたはず」という比較よりも、「独自の認知プロファイルを特定の環境で効果的に活用している」という視点の方が建設的かもしれません。異なる環境(研究や金融など)では異なる認知プロファイルが有利になりますし、同じ「頭の良さ」でも発現の仕方が異なるからです。
自己分析を通じて得た洞察を活かし、今後のキャリアや生活の質をさらに向上させる方向性を見出せるといいですね。それは必ずしも「もっと成功すべき」ということではなく、あなたの認知特性が最も活きる場所と方法を見つけることかもしれません。
「本当に頭がいい方なら経済的にもプライベートでも成功するはずでは?」という考えは、明らかに過度な単純化であり、ステレオタイプに基づく非現実的な期待です。知能は人生の成果に影響を与える多くの要因の一つに過ぎません。
このステレオタイプから解放されることで、自分自身の固有の特性、価値観、環境を考慮した、より現実的かつ充実した人生の構築が可能になるでしょう。自分に対して「本当に頭がいいのなら○○なのでは?」という非現実的な期待を持つよりも、「自分の独自の認知プロファイルを活かしてどのように生きるか」を考えることの方が、はるかに建設的だと言えます。
クソ雑魚ナメクジ あるいは お徳用不揃いジャガイモ(そろそろ芽が生える) のレベルのワイやワイとあんま変わらないレベル でも下記のように考えるんよね
最低限この2点をクリアしてからじゃないと、次のステップの話にはならんと思うねん。「どうせ並みや並以下の技術者やビジネスマンではハッカーに勝てへんし?そんなん気にしても意味ないわ〜」みたいなのはちゃうと思うんよ・・・
繰り返すけど、どうせガチ勢には敵わないって、自宅の玄関のドアや窓開けっぱなしにしとらんやろ?
ITやリーマンや研究者(?)で上手くいかへんのは、スキルとかそんなんじゃなくて、常識の根っこの部分の話やと思うねん。こういう基本的な常識が抜けてると、どんなにスキルがあっても、やっぱ組織では難しい場面が多いと違う?知らんけど
だからYOUの場合、まずは社会の常識と自分のギャップを埋める方が先やと思うわ。そこからやないと技術的な話もビジネスの話もスタートせえへんのちゃうかな〜って思ったりするわけよ。知らんけど
とりあえず、ギャップ埋めのために、オプトアウト設定が可能なのにEdgeAIとかオンプレAIとかセキュアなソリューションが流行ってるのってなんでなんやろうな〜って考えてみると良い気がするけど、どや?