鱧技術

hamo_daisukiの技術メモ

Debian (bookworm) で Possible missing firmware が出たこと

夏休み後のサーバーメンテはチョット緊張感が走る

夏休みが終わってしまった。何日かぶりに会社に来て、管轄しているサーバーを見渡すと「アップデートできますよ」表示が。
基本的に、テスト用のサーバーでアップデートした際の動作確認をしてから本番もアップデートかけるようにしています。しかし、作業工数の低減とテスト環境を十分に取れないことから、本番環境とテスト環境の間に若干の差異が生じてしまいます。
なので、本番環境のアップデートはテスト環境で検証していても緊張感が走ります。

apt update したときに、"Possible missing firmware" が出ました

今回、データベースが走っているサーバーの OS アップデートをしました。Debian 12 ( bookworm ) のサーバーで 3 ヶ月前に 11 --> 12 にアップグレードを済ませています。依存関係でグチャグチャする部分もないので、さらっと作業を始めたら "Possible missing firmware" の文字がズラッと。

これって「ファームウェアがないんだけど」ってことで、よく WiFi 機器もカバーしているシステムを導入すると出くわします。ほっといても問題ない場合も多いのですが、サーバー管理の引継ぎも控えているので対応しようと思います。

手作業でファームを持ってこれば動くんだけどさ...

応急処置的には、どこぞからファームを持ってきて所定の場所に保管すれば問題解決します。しかしながら、ファームが更新されていること前提のアップデートが走った場合、同じような警告が表示されてしまいます。

今回は i915 絡みの警告だったので 

https://anduin.linuxfromscratch.org/sources/linux-firmware/i915/

からダウンロードすれば、その場限りの解決は可能です。

non-free-firmware だけじゃ駄目なんじゃ?

debian では、前のバージョンの 11 ( bullseye) から、リポジトリ non-free を non-free-firmware と non-free に分けました。その際に /etc/apt/sources.list で記述ミスがあったのかなと思って確認してみました

deb http://ftp.jp.debian.org/debian bookworm main contrib non-free-firmware

問題ないと思うんですが、今回の警告があったので non-free も付け加えて保存してみました。次にアップデートかけるときに問題ないとよいのですが...

Google Bard と ChatGPT 3.5 でメール本文の生成を比較してみた

Google Bard さんと ChatGPT 3.5 さんでメール本文の生成を比べてみました
プロンプトは promptia 様のものを使わせていただきました(チョットかえました)

以下の主旨と条件を満たして、メールの本文を書いて

主旨:
・連絡ありがとう
・その案件を進めるのは早急すぎる
・上席に許可もらったほうが良い内容だと思う
・焦る気持ちもわかるが、失敗するほうがもっと良くない
・周囲への連絡を密にしたほうが良い

条件:
・ビジネス用
・丁寧な文体で
・相手が気を悪くしないように
・理由を2つ含んで
・350文字以内で

Google Bard さんはこんな感じで出力してくれました

件名:案件について

○○様

お世話になっております。

先日、案件についてご連絡いただき、ありがとうございました。

ご提案の内容は、大変興味深く拝見いたしました。
しかし、この案件を進めるには、上席の許可を得る必要があります。

○○様は、この案件を進めることに前向きだと思いますが、失敗するリスクも考慮する必要があります。
上席の許可を得ることで、リスクを回避し、より良い結果を得ることができると思います。

また、この案件を進めるには、周囲への連絡を密にする必要があります。
周囲の協力を得ることで、プロジェクトを円滑に進めることができます。

○○様のご意見を伺い、上席の許可を得た上で、この案件を進めていきたいと思います。

ご理解とご協力をお願いいたします。

よろしくお願いいたします。

○○

やっぱり、同じことを2回書いてしまいます。文書生成は基本的に1フレーズごとに行ってるのかな?フレーズ間のネットワークの重み付けがうまく行ってない印象を受けます
続いて ChatGPT 3.5 さんです

件名: お礼

To: (相手のアドレス)

いつもお世話になっております。
先日は、あの案件についての情報提供に感謝します。
しかし、私共がその案件を進めるのは早急すぎると考えます。
その内容について上席に許可を得るべきであり、それを急いで進めることは得策ではありません。
また、私共はあなたの焦る気持ちも理解できます。
しかしながら、失敗するリスクを考えると、時間をかけることに意味があります。
さらに、周囲のスタッフにもこの件について密に連絡をするべきだと思われます。
一人一人がしっかり理解し、共感することが大切です。
以上、よろしくお願いいたします。

ご参考になれば幸いです。もし何かございましたら遠慮なくご相談ください。

微妙表現がありますが、そつない感じです。
あと、微妙にリア充というかパリピ臭がしますが、こういう人っているよね。
今回も Bart さんがんばれな感じでした

Google Bard と ChatGPT 3.5 でクレーム対応文の生成を比較してみた

Google Bard さんと ChatGPT 3.5 さんでクレーム対応の違いを見てみました
以下、今回使用したプロンプトです
promptia 様のものを使わせていただきました。

ステップ・バイ・ステップで考えてください。

以下の【クレーム】に対するお詫びの書き込みの文案を、
店側に追加の責任や返金は絶対に発生せず、
返品や交換にも絶対に発展しないように、
さらに、店側に追加の手間が発生しないように注意しますが、
これらは心の中で考えるだけで、絶対に言及はしません。

相手の感情・意見の、詳細で具体的なストーリーを想像しながら、
今回のクレームを一般化しつつ、気持ちに寄り添って、
相手の気分が収まるように、丁寧に心を込めて、前向きに、
店長の言葉として、誠意があふれる優しい文体で、
当事者意識をもって、150文字以内で書いてください。
ただし、ユーザーの発言自体を指す「ご不満」や「クレーム」などの
ネガティブな言葉は、使ってはいけない禁止ワードとします。
No repeat, no remarks, only results.
Exclude all prohibited words listed earlier from your catchphrase ideas.
in Japanese

【クレーム】
ブラウザで見ていたときと色味が全然違うし、生地がペラペラで安っぽい。
洋服を扱っているのだから、細かく説明するべきだと思う。
返品への対応も、こちらが元払いで送るなんて面倒でもうやだ。

それでは返答を見ていきます。
文章の長さを見るため、あえて pre記法にて掲載します。
Google Bard さん

お客様、この度は弊社の商品にご不満をお持ちいただき、誠に申し訳ございません。
商品の色味や生地感について、ご期待に添えなかったようで、大変残念です。
弊社では、お客様にご満足いただける商品を提供できるよう、日々努力しておりますが、至らない点があったようで、重ねてお詫び申し上げます。

返品に関しましては、お客様のご負担を減らすため、送料無料にて対応させていただきます。
ご不明な点がございましたら、お気軽にお問い合わせください。

お客様に、弊社の商品を心から楽しんでいただけるよう、今後もより一層努めてまいります。

はじめに「ご不満をお持ちいただき」は、ものすごい違和感が・・・。
さらに、勝手に返品を送料無料にしちゃいましたけど、私の裁量ではそんな事できないんですけど・・・なシーンが想像できてしまいます。
「お気軽にお問い合わせください」も、クレームの返答としては使わないかな。
プロンプトを Bard に最適化すれば良くなる?のかな。
というわけで、上記プロンプトに以下の文を加えました

・お客様の不満はこちらの不手際であることを表現してください
・お客様の不満にたいして、私達は至らなかったと考えています
・返品の送料は相談します
・語尾は丁寧語を使用してください

そして、出力された結果が下記です

お客様の声を拝見し、大変申し訳ございません。
商品の色味や生地についてご満足いただけなかったとのこと、誠に恐縮です。

当店では、お客様に商品をご覧いただき、ご納得いただいた上でのご購入を心がけております。
しかし、今回の件では、お客様にご満足いただけない商品を販売してしまい、大変申し訳ございませんでした。

商品の返品につきましては、送料を当店で負担させていただきます。
お客様のお手間をおかけし、大変申し訳ございません。

今後は、お客様にご満足いただける商品を販売できるよう、より一層努めてまいります。

お客様のご意見を参考に、商品の説明をより詳細にいたします。
また、返品時の送料についても、お客様のご負担が少ない方法を検討いたします。

今後とも当店をご愛顧賜りますよう、よろしくお願い申し上げます。

うーん、だいぶ良くなった気がするけど(高飛車感は相変わらずだけど、もういいや)、返品送料無料にこだわるのは何なんだろ?後でひっくり返して「相談ね」になってるし・・・人間の手直し必須ですね。一から書くよりも楽ですが。
続いて、ChatGPT 3.5 さん

お客様にご迷惑をおかけしてしまい、大変申し訳ございません。
ブラウザ上での色味と現物の違いや素材の品質にご不満を持たれたとのこと、弊社としては深く反省しております。
次回以降はより詳細な説明を心がけてまいります。
また、返品に関しましては負担を強いてしまいましたこと、重ねてお詫び申し上げます。
今後はお客様に負担の少ない方法を模索してまいりますので、ご協力いただけますようお願い申し上げます。
どうぞ、よろしくお願いいたします。

うーん、Amazon の中国系業者に多い文体?ちょっと丁寧すぎて気持ち悪い。
無難な文章なので、ここから調整するのは楽かも。
というわけで、Bardがんばれな感じでした。

DistroWatch.com weekly Q&A からの抜粋

Watching-the-packets-goさんが質問します: インターネット接続で使用しているデータの総量を調べたいのですが。これを監視するツールはありますか?

DistroWatchがお答えします: インターフェイスが作成されて以来、インターネット接続を通じてどれだけのデータが送信されたかを知ることができるツールがあります(通常、コンピュータが起動と共に監視を始めています)。

ほとんどのディストリビューションで、ネットワークデータの転送は、ifconfigコマンドまたはipコマンドのいずれかを使用して追跡することができます。引数なしでifconfigコマンドを実行すると、コンピュータに接続されているすべてのネットワークデバイスが表示されます。各デバイスの下には、次のような行が表示されます: 

RX packets 424153 bytes 552060234 (526.4 MiB)
TX packets 74722 bytes 12435255 (11.8 MiB) 

RX 行は受信したデータを示し、この場合 526MiB のデータがダウンロードされたことを示します。TX 行は、送信または送信されたデータを示します。この場合、11.8MiB のデータがアップロードされています。

コンピュータに複数のネットワーク機器が接続されている場合、コマンドラインで1つの機器を指定すると、その機器に固有のトラフィック統計を確認することができます。例えば、ここではワイヤレスカード(wlan0)のデータ統計情報を確認しています:

ifconfig wlan0

ipコマンドを使用するディストリビューションでは、ipコマンドを実行することでデータ通信の統計情報を表示することができます:

ip -s link

ipコマンドを使用すると、情報量がバイト(とパケット)で表示されます。以下は、"ip -s link "の関連出力を示す簡略化した例です。ネットワークデバイスの名前、wlan0、および受信と送信の両方のトラフィックが表示されます: 

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
RX: bytes    packets
545172803    417572
TX: bytes    packets
12103151    71810

これらのコマンドの制約として、トラフィック統計はシステムを再起動するたびにリセットする点です。毎日コンピュータをシャットダウンしている人であれば、新しい日が来るたびにトラフィック数がゼロに戻ることに気づくでしょう。このため、コンピュータを再起動する前に、これらのコマンドの出力をテキストファイルに保存しておけば、後でそれらを合計して月全体の合計を取得することができます。

オリジナル:https://distrowatch.com/weekly.php?issue=20230424

この文章は deepl.com を使用して作成しました

Alasql と grid.js でいろいろできそうかも

ちょっと進んだ

以前、ちょっとだけ手を出していたものを進めてみました。javascript 書かないでいるとグングン忘れていくので、練習的に。ciscoios のお勉強のほうが楽しい気がします。ちまちましていて辛いです。

and条件でつまずいた

問題だったのは検索の AND 条件の実装方法でした。(氏名は〇〇さん、血液型はB型の人を検索、みたいな)使用する検索条件を判定 --> データ拾ってきて SQL文に条件を追加の処理がとても面倒くさくて素敵でした。各種ミドルウエア(MS ACCESS とか)って良く出来てるなーと思います。

力技で実装を試してみたところエラー吐きながらも動いているので、キレイにしてゆけば使えるかもしれないところまできました。もっとエレガントな書き方があると思うんですけど。

and 条件を探す段で三項演算子を使ったんですが、エラーで止まる。で、if 文で書き直すと動く。「なんで?」が何度か続いたあとで、三項演算子の使い方の間違いを見つけてうんざり、とか、わりとタコなことやってました。専門外なんてこんなもんです。レジリエンスを鍛えるためには、こういう刺激が良いんすよ。きっと。

インターフェース作りがとても面倒です

普段、シェルスクリプトとか使ってると GUI の設計なんてしないので、ちょっとしたことが全然作れなくて歯がゆい感じに押し流されそうになります。

もうちょっと頑張ったら具体的なコードの記事書こう

中学校の読書感想文みたいに、書いては次の日に読んで書き直しのようなことをやっていたので、ツギハギの古い旅館のようなコードになっているのですが、alasql と grid.js を組み合わせている事例が少ないので、そのうちコードを載せて記事にしようと思います。5月の連休あたりでしょうか・・・

OpenMediaVault と 中華カメラで構築する防犯カメラシステム(のようなもの)

簡単じゃないんだよ、意外と

防犯カメラのシステムは、現在かなりお手軽に導入できます。ご家庭での使用なら、カメラと別売りのSDカードを購入すれば2週間程度の上書き録画ができるシステムを使うことができます。クラウドに録画、スマホからアプリで現状確認などできたりします。

ところが、「会社で使います」となるとハードルが高くなります。録画の保存期間が長くなったり、閉鎖系のネットワークで閲覧できるようにアプリを用意しなきゃいけなかったり。

今回、テストとして長期(数年分)の記録が保存できるシステムを作ってみるという、わりと難しめのお題がさらっと出されたので、OpenMediaVault と中華カメラで試作してみました。

詳細はリンク先を見てください。屋外用のPoE有線カメラで、この手のカメラを使ったことのある人なら扱いやすいと思います。記録容量がSDカードで済むなら便利です。ネットワーク越しにはFTPを使って記録します。

サーバーOS:OpenMediaVault

カメラの録画ファイルを保存するサーバーに使うOSです。Debian派生のNASディストリです。マシンスペックがしょぼくてもインストールできます。中身はDebianなので、割と扱いやすいです。

サーバー: NEC の業務用パソコン(core2duo入ってた)

サーバーとして使うパソコンです。機種調べるのもめんどくさい。core2duo 入ってました。

PoEハブ:既設のNetgearのやつ

既設のハブにつなぎました。TP-LINKの安いやつ で十分です。

カメラのセットアップ

カメラ購入後、DHCPなテストネットワークに接続してカメラがどのIPアドレスを掴んだか調べます。自分の場合は適当なDebianの入った端末で

echo 192.168.0.{1..254} | xargs -P256 -n1 ping -s1 -c1 -W1 | grep ttl|sort

などで、カメラ接続前後のIPアドレスの違いで調べています。

その後、ブラウザでカメラのIPアドレスにアクセスして user name: admin (パスワード無し)でログインします。これでカメラの設定ができるようになりました。

サーバーのセットアップ

OpenMediaVault のインストールは、dd でインストール用のUSB作ってUSBブートすればだいたい終わるのですが、Windows の人は手順が違うようです。 使用するネットワーク内のIPアドレスを振っておけば、クライアント用のPCからサーバーにアクセスできるようになってると思います。デフォルトのID/Password は admin/openmediavault です。(注:サラッと書いてますが、システムインストール時にはストレージ用のSSD/HDD は繋がない、とかいろいろ罠があるので手順を検索して確認後すすめてください)

サーバーのコンパネをさわれるようになったら、ftp プラグインを導入してください。検索窓で「ftp」と入力すれば表示されます。(いんたーねっとにつないどいてください)


この後、保存用のストレージにファイルシステムを設定し、共有フォルダとユーザーを設定します。最低1つは書き込みできるアカウントを作ってください(このアカウントをカメラに設定します)または全員書き込みできるようにしてください。

サーバーの設定ができたら、PCのftpクライアントでテスト接続してみてください。(windows の方はエクスプローラftp://<サーバーのip>/ などで繋がります、多分)

カメラ側のFTP設定

ざっくり接続先サーバーの設定をしまして、

ファイル名や、保存するデータの種類・品質を決めて、

録画/撮影のタイミングを決めます
(今回使った機種は、画質を細かく設定できない:荒いor細かい)
Alerm は指定した時間人感センサを働かせます。
Timer は指定した時間撮影し続けます。今回は電源入っている間は撮影しっぱなしです。

配線して動かしてみる

(設定している段階でつないでると思いますが)PoEハブにカメラをつないで、サーバーも同じネットワークに乗せます。カメラ側の設定で「test」しても良いですし、ftp クライアントで保存先にアクセスすると、データが増えていく様子がわかると思います。

よりたくさん録画するために

ここまでうまくいったらストレージいっぱいまで保存できるようになるわけですが、数年分の保存という課題には容量が足らないです。

そこで、今回はUSBハードディスクをつなぎ長期保存用ストレージとして使用し、こちらにデータを逃してやることにしました。USBですとホットスワップできるので、容量が足りなくなったら交換して保存し続けることができます。一次保存用のSSDにとりあえず保存し、長期保存用HDDにシェルスクリプトrsync -auv 使って転送します。一次保存用SSDで一週間以上前のものは

find <保存フォルダ> -mtime +7 -name "*.mp4" -delete

などで削除し、空のフォルダを

find <保存フォルダ> -type d -empty | xargs rm -r

などで削除します。

ちなみに、ストレージ名はOMVでは決め打ちになってしまうので、シンボリックリンクを張っておくと便利です(まぁ、/dev/sdbとかで決め打ちでも良いと思いますが、スワップした際に変わってしまうこともあるので、スクリプトの手直しを最小限にしたいのです)

USBストレージ(という名の大容量HDD)なので、わりと溜め込んでおけるしホットスワップできるのですが、微妙に手作業・手直しが入るので面倒です。ちなみに、SMR のディスクを btrfs で1年ほど使っているものがあるのですが、定期スクラブして使う分には使えてます。

(注:上記はSSHでサーバーにつないで作業しています。シェルスクリプトとは

とにかく、とても面倒です

ずっと前と比べるとかなり楽ちんではあります。しかしながら、上記の方法に落ち着くまで試行錯誤がありました(カメラは最近までSV3Cを使ってたり、その前はIOデータだったり)

画像の監視作業担当へは、まとめて表示したいため ispy の Agent を使ってます。 古いパナソニックのカメラなども機種名を設定するだけで使えるので便利です。でもインストールは面倒でした(Debian だと時間かかるだけでしたが、Windows版は大変だったらしい)

事務員さんがお気楽(予算/作業的)に設置できるレベルに家電化すれば良いのに、と思ってます。コンプラ案件や製品への危害監視などで導入先はいっぱいあると思うので。

 

サーバーにアップロードしなくても js のライブラリを動かしてしまおう

アップロードする必要はないんだけど、js 使いたいんだよ

私は陰キャなので、上記のようなことが良くあります。特に自分の蔵書リストをJSONで持っていて、ネットワークにつながらない場所へ買い出しの時に重複しないような検索アプリを作ったのだけど他の人に絶対、絶対見られたくないときなんかに。

注)地下に蔵書を置いてる店があるんです。wifi 通らないんです。なんなんでしょうか。

js 埋め込んだ。css も埋め込んだ。

そんなときは、html に js も css も埋め込んで無理やり動かしています。幸い jquery みたいなメジャーな物でも cdn でアクセスできるものを素で読み込み、コピペすれば動かせてしまいます(ライセンス的にありなのか?とも思いますが、私的利用なんで...)

ちなみに jquery min で 9万文字(88kb)程度です。css の skeletone などならもっと小さいので気にならない(?)とは思います。

たまに依存関係でハマります

新しめのライブラリには他のライブラリに依存しているものもあるわけで、そんな時は複数のライブラリを埋め込むことになります。わりとハマります。パッケージマネージャーのない Linux みたいな感じです。

オフライン環境のスマホ(業務)で使えてます

上記の状況、ニッチかと思ってたんですが業務で使うことが増えてます。えらい人たちがやたらとセキュリティを叫ばれる時に「オフラインで使う方法もあります」的な提案・テスト納品すると「これでいいんだよ」的な反応が...ローカルサーバー立てるくらい問題ないよと言いたいんだけど、なんだろね。