SVX日記
2005-02-02(Wed) オイラも短いケーブル好き
昨日の「ミッキーマウスコードと100V用プラグを使ったちょっとしたアイデア」とはなんのことはない、短い電源ケーブルを作るというネタである。ぶっちゃけてしまえば、オイラが時々訪れる「闘わないプログラマ」といサイトの「短いケーブル好き」というコラムのアイデアのパクりである。
ここんトコ激しくYRPへ通い、その都度ノートPCを持って行ったのだが、オイラ愛用のソフトスーツケースが小さいために、ノートPCとACアダプタ、アヒルメモリ、無線玉マウスを入れると、ほとんどギリギリ。あとはH"ケーブル、USBケーブルとACアダプタ用の電源ケーブルを押し込むというアリサマである。
一番ムダに場所を取っているのは間違いなくアヒルメモリなのだが、電源ケーブルもかなりウザイ。だいたい、ACアダプタからノートまでのケーブルに結構な長さが確保されているのに、なんでACアダプタからコンセントまでにもコレマタ長い線が必要なのか? 特に100V側はケーブルがゴツいので取り扱いが面倒なのである。上記のコラムを書いたLeptonさんはブツブツ文句を言いつつも自作するコトはまったく考えていないようだが、こんなもん欲しけれりゃ作ってしまえばいいのである。
工作というのもおこがましい。チョン切って、被覆をムいて、ネジ止めするだけである。しかしこれは想像以上にヤッホーである。ソフトスーツケースにポンと放りこめる大きさじゃなぁ〜い……だけど……もうYRPに行くことは(たぶん)ないんですけど〜ッ!! 残念ッ!! 無駄になったケーブル斬りィッ!!
さて、これを作っていてちょっと疑問に思ったのが「アース」である。もともとオイラのノートPC、COMPACのARMADAのACケーブルはアース付3Pプラグに変換プラグを介して2Pプラグ&アース線という形状になっている。このアース線というヤツ、オイラはちゃんと接続している人を見たことがないのだが、いったいどうなっとるんじゃ? この際だ、要るのか、要らんのか、ハッキリしよーじゃねーか。
で、いろいろググっていると、だんだんわかってきた。家庭には、赤色、白色、黒色の電力線がきており「赤と白」または「黒と白」の組み合わせで100Vの交流電圧が得られ「赤と黒」の組み合わせだと200Vの交流電圧が得られるということである。でもって、赤と黒は触ると感電するのだが、白は接地しているので感電しないらしい。また、一般的なコンセントは穴の大きさが左右で微妙に異なり、大きいほうが白に接続されているらしい。つまり、大きいほうの穴に指を突っ込んでも、感電はしないというコトになる。
となると「白=アース」であるから、3Pコンセントなんて難しくもなんともない、アース線は穴の大きいほうと内部でつながっているだけのコトなのである。というわけで、このトリビア(?)言い換えるとこういうコトになります……「プラグのアース線をどちらかの極につなげてしまい、ソッチの極をコンセントの常に穴の大きいほうに刺すなら、3Pコンセントと同じコトになる」。
で、実験である。さきほどチョン切ったACプラグ側のケーブルをコンセントに刺し、両極間の電圧をテスターで計測、100Vであることを確認。こんどは片極と「台所の水道の蛇口」との間の電圧を測定、大きな穴側の極との電圧が0V、小さな穴側の極との電圧が100Vであることを確認する。実際の実験結果では、0V、100Vというハッキリした値にはならず、8V、80Vくらいではあったが、ま、接触抵抗とかイロイロあるんだろう、実験は成功といってよいのではないだろうか。
以上、電気に詳しい人なら当たり前のコトと思われるが、ズバリ上記のコトが書いてあるサイトは見つからなかった。よって「もしかして間違っているかもしれない」が、例によって責任は持たないのでそのつもりでヒトツよろしくである。
んでもって、今日はまだまだネタが続く。例のシチズンのナビホークを電池交換に出した際、計算尺が歪んじまった件は無償で修理してくれる旨の返事が来た。途中に郵送を挟んでいるため、ヘタすると責任の押し付け合いになるんじゃないかと危惧していたので、すばやく色よい対応をしてくれたのがとても嬉しい。こちらも例のシチズン関連のプロジェクトを進捗するコトでせめてものお返しをする(?)かな。
ライブドアからの返事も来た。先日参加したパブリック・ジャーナリストの研修を修了したので、修了証書を添付するとのコト。ファイル形式はpdf。ちゃんとオイラの名前が入っており、社長の堀江氏の名前も社印も押してあった。ちょっとギャグが入ってるような気もするけど……。既に記事も受け付けてもらえるんだそうだ。何をニュースにするかなぁ。「近所の沼に浮いているスワンが一新された」とかいうネタでもいいのかなぁ……別に一新されてないからダメだケド。ま、しばらくイロイロを眼を配ろうかな。
最後に、最近ハマっていた「スカイハイ」を最後まで観ますた。先日は「新たな物語のスタイルを確立した」とまでホメたのに、イイ意味でそれを裏切ってキタ。なんと最後の3話は、3話ブチ抜きでいつものストーリーとはちょっと違う展開を見せるのである。主人公のイズコはあくまでナビゲータ役なのだと思っていたら、最後はチャンと主人公として絡んでくるとは。これは神林長平の連作形式を思わせるな。短編集かと思ったら、ちゃんと終わりがあるのだから。
2008-02-02(Sat) 買い物
大方の予想を裏切って、帰りは自由席、ちょうど飛び込んできた700系に飛び乗った……のはいいが、なんと喫煙車。以前は吸ってたオイラだし、座った当初はさほど気にならなかったのだが、あちらこちらで噴煙が吹き上がると苦痛になってきた。アカン。2時間は持たん。例によって、ずっと前にレンタル(?)した「ゆれる」を観始めたトコだったのだが、席を立ってしまった。隣の車両の自由席の空きに賭ける。よかった。どうにかスベり込めた。
2021-02-02(Tue) 手軽にコンテナ間で情報共有、時計製作進行中
/root/docker # mkdir gdbm_writer
/root/docker # cd gdbm_writer
/root/docker/gdbm_writer # git clone https://gitlab.com/Furutanian/sinatra_skelton
/root/docker/gdbm_writer # ln -s sinatra_skelton/Dockerfile .
/root/docker/gdbm_writer # cp sinatra_skelton/docker-compose.yml .
/root/docker/gdbm_writer # vi docker-compose.yml
/root/docker/gdbm_writer # diff sinatra_skelton/docker-compose.yml docker-compose.yml
< sinatra_skelton-alpha
> sinatra_skelton-alpha-writer
/root/docker/gdbm_writer # mkdir pv; chown 1000:1000 pv
/root/docker/gdbm_writer # vi sinatra_skelton/gdbm_writer.rb
/root/docker/gdbm_writer # cat sinatra_skelton/gdbm_writer.rb
#!/usr/bin/env ruby
require 'gdbm'
db = GDBM.new('data/time.gdbm')
loop {
db['now'] = Time.now.to_s
sleep 1
}
/root/docker/gdbm_writer # chmod 755 sinatra_skelton/gdbm_writer.rb
/root/docker/gdbm_writer # vi sinatra_skelton/gdbm_reader.rb
/root/docker/gdbm_writer # cat sinatra_skelton/gdbm_reader.rb
#!/usr/bin/env ruby
require 'gdbm'
db = GDBM.new('data/time.gdbm', 0666, GDBM::NOLOCK | GDBM::READER)
loop {
p db['now']
sleep 1
}
/root/docker/gdbm_writer # chmod 755 sinatra_skelton/gdbm_reader.rb
/root/docker/gdbm_writer # docker-compose build
/root/docker/gdbm_writer # docker-compose up -d
/root/docker/gdbm_writer # cd ..
/root/docker # cp -a gdbm_writer gdbm_reader
/root/docker # cd gdbm_reader
/root/docker/gdbm_reader # vi docker-compose.yml
/root/docker/gdbm_reader # diff sinatra_skelton/docker-compose.yml docker-compose.yml
< sinatra_skelton-alpha
> sinatra_skelton-alpha-reader
< - 8080:8080
> - 8081:8080
/root/docker/gdbm_reader # docker-compose up -d
/root/docker/gdbm_reader # cd ..
/root/docker # docker exec -it sinatra_skelton-alpha-writer /bin/bash
[user@4dc50fc6e6a7 sinatra_skelton]$ ./gdbm_writer.rb
/root/docker # docker exec -it sinatra_skelton-alpha-reader /bin/bash
[user@c0a2ec346ec8 sinatra_skelton]$ ./gdbm_reader.rb
Traceback (most recent call last):
2: from gdbm_reader.rb:5:in `<main>'
1: from gdbm_reader.rb:5:in `new'
gdbm_reader.rb:5:in `initialize': No such file or directory - data/time.gdbm (Errno::ENOENT)
/root/docker # ln gdbm_writer/pv/time.gdbm gdbm_reader/pv
/root/docker # docker exec -it sinatra_skelton-alpha-reader /bin/bash
[user@c0a2ec346ec8 sinatra_skelton]$ ./gdbm_reader.rb
"2021-02-02 20:29:28 +0900"
"2021-02-02 20:29:28 +0900"
"2021-02-02 20:29:28 +0900"
:
それと面白いのは、ファイルを更新する側では、データベースファイルを開きっぱなしにして、その内容を毎秒のように更新しているのだが、ファイルを参照する側では、参照開始時点の内容に固定され(ているように見え)ること。相手がデータベースだと考えれば、好ましい挙動かもしれない。
[user@c0a2ec346ec8 sinatra_skelton]$ ./gdbm_writer.rb
Traceback (most recent call last):
2: from gdbm_writer.rb:5:in `<main>'
1: from gdbm_writer.rb:5:in `new'
gdbm_writer.rb:5:in `initialize': Resource temporarily unavailable - data/time.gdbm (Errno::EAGAIN)
それと、家の電波掛時計の調子が悪かったり、テレワークのために始業終業のチャイムが鳴ってほしかったり、筋トレのインターバルのためにサッと秒数を読み取りたかったり、ずーっと購入したまま放置してあった16セグのLEDを活用したかったり、久々にハンダゴテを握りたかったり、ということで、デジタル置時計を作ることにした。
先々週の金曜(1/22)に具体的な構想を始めてから、PICによる制御ソフトとハンダ付けを同時進行で進めているのだが、オレ史上で最大のハンダ付け点数である。ヤケクソ面倒くさい。普通はこのレベルならプリント基板を発注するわなぁ……。
早く製作しないと、せっかく買った16セグのLEDの部品が遺品になってしまう、と思ったのだが、いつ購入したものなのやら記録がない。と、このブログを検索すると、なんか違う16セグも購入してるやんけ……確かに部品棚に残ってるわ……。
2022-02-02(Wed) 4回目の減量期を終了
年末の状況からしばらくして増量期に入っている。まぁ、昼と夜に食う米の量を多くしているだけなのであるが。
2024-02-02(Fri) ハスに構えつつAIをカジってみる
計算機の最底辺部分から理解している自分からすると、平均的な日本人のAIに対する期待は少々過大であるように感じる。まぁ、自分が現在所属する「割と日本を代表するIT企業である○○」の平均的な社員のそれも、ほぼ似たようなものと感じるので、無理もないところであろうが。
IT技術に関する知識レベルが完全にゼロである自分の母親は、8bit機が主流の頃ですら「(オセロなどで)コンピュータに勝てるわけないでしょ」とノタマっていた。総じて仕組みに疎いほど、仕組みに対する期待が高い傾向にあると言えるだろう。そういうことなので自分のAIへの期待は平均よりだいぶ低い。それらしく模倣をしているだけにしか見えないのだ。まぁ、それらしく模倣ができることはスゴいことなのだけれど。
そのように、ややAIに対して否定的な自分であるが、なぜか「AI調査チームの長」をやらされることになった。あまり積極勧誘もしなかったのでメンバも数人。チーム名は「AIを診る会」と命名した。「診る」とか「桜?」とかいうあたりに皮肉を込めている。仕事の一環ではあるが、楽しむことが第一、という基本方針。そうしても咎められないし、関連書籍もホイと買ってくれるあたりは、ウチの会社もそこそこだと思えるが。
基本、自分はメンバを誘導することが責務なのだが、自分で手を動かさずにいるのは性に合わない。なので、少しは何かをやろうと、買った書籍が「初めてのTensorFlow.js」であった。やはりAIの基本は多項式。Pythonには吐気がするが、CoffeeScriptがある限りJavaScriptが許せるという自分にとって、JavaScriptでTensorFlowが使えるというのは天の恵みと思えたのである。
ところが、だ。この本は内容が薄い(と最初は思った)。サンプルを動かすだけで、肝心の機械学習の方法についてほとんど触れられていない。機械学習を行う記述がないまま、画像認識に進んでしまっている。そういう「使うだけ」っていうのは、自分の指向ではないのだ(と最初は思った)。
んが、実際にサンプルを動かしてみて気づいたのである。既に「AIはゼロから組み上げるものではないのだ」ということに。暗号通信を伴うプログラムを作る時、暗号技術の学習から始めるべきか? 3D表示を伴うゲームを作る時、ベクトル演算の学習から始めるべきか? ノーである。普通は既存のライブラリを使うべきなのだ。写真中の物体識別を行いたい時は、それ用の既存のモデルである「Inception v3」を使うべきなのだ(いや、基盤部分に取り組むのも価値のある仕事だけれども)。
今回、AIの調査を始めて最大の収穫が、上記の事実に気づいたことなのであった。それに気づいた後に「初めてのTensorFlow.js」を読み直せば、実にバランスのよい内容であると思える。実用的な使い方を示した後には、訓練方法にも触れているし、既存のモデルに独自の学習内容を加える「転移学習」も扱っているのだから(まだ十分に読んでないけど)。
で、写真中の物体識別のサンプルを動かしてみると、なかなかにいい感じの識別具合であり、ムズムズと自分のものにしたくなってくるのである。自分にとって「自分のものにしたくなる」とは、自分が自由に使える状態にするということである。具体的には、ブラウザ上で動いていてもその先はないので、Node.jsで手元で動くようにサンプルを改変し、環境ごとコンテナ化し、PV経由で写真を食わせられるようにし、連続して識別ができるようにし、CoffeeScript化し、結果をテキストファイルに出力できるような状態にする、ということである。
というわけで、コンテナの定義ファイルを置いておく。
# 1
carton, /var/lib/pv/svxdiaryimages2023/s20230128_0.jpg, 1
envelope, /var/lib/pv/svxdiaryimages2023/s20230128_0.jpg, 2
packet, /var/lib/pv/svxdiaryimages2023/s20230128_0.jpg, 3
# 2
shower cap, /var/lib/pv/svxdiaryimages2023/s20230128_1.jpg, 1
envelope, /var/lib/pv/svxdiaryimages2023/s20230128_1.jpg, 2
plastic bag, /var/lib/pv/svxdiaryimages2023/s20230128_1.jpg, 3
:
上記までくれば、それをHTMLに変換するスクリプトを書くのは容易であり、変換した結果がこれである。
「sports car」で絞り込まず、2023年の全ての写真を判別した結果がこれである。「Inception v3」は海外で訓練されたモデルであり、識別結果は1001の英名詞に限られるので、やや不自然な識別結果も含まれるが、それでも高水準の識別結果であると思える。例えば「ごはん」は「mashed potato」と識別されているが、見た目も位置づけ(?) も大きく間違ってはいない。
ちなみに、このブログは外部のVPSで独自に動かしているものなので、手元のコンテナに画像データを食わせるため、VPSの「/home/user」上に「cp -lr」で画像のハードリンクを含むディレクトリを作成し、そこを「sshfs」でリモートmountし、それをPVとしてポイントして処理を行った。なので、今回は画像のベタなコピーを行うことなく処理を完了している。我ながら、これはノウハウだな(別にVPS上でコンテナを動かしてもよかったのだけれども)。













