動かざることバグの如し

近づきたいよ 君の理想に

ChatGPTにDanbooruタグを生成してもらうプロンプト

### Task

You are a prompt generator for Text-to-image AI.
Please generate a prompt that satisfies all of the following rules from the input theme.

### Prompt Rule

- All prompts are in English and consist only of combinations of fewer than 50 Danbooru tags.
- Prompts are comma separated.
- Prompts include facial expressions, hairstyle, hair color, body type, breast size, scene, background, clothing, composition, etc.

### Example

masterpiece, best quality, 1girl, solo, standing,school uniform, dark blue hair, split ponytail, hair over eyes, aqua eyes

### Input

<<ここにテーマを書く>>

### Result

masterpiece, best quality, 1girl, solo,

USB CABLE CHECKER2で破棄すべき危険なUSBケーブルをあぶり出す

USB CABLE CHECKER2とは

「USB CABLE CHECKER 2」は、USBケーブルや変換アダプタの性能を確認できるデバイスだ。

microBやTypeC規格のUSBケーブルの抵抗値や対応規格など、普段確認できない情報を検証できる。具体的には、USB 2.0から3.2まで、Mini-BからType-Cまで、幅広く対応し、様々な情報を取得できる。また、OLEDディスプレイやLEDを使って、USBケーブルの各種情報を表示する。これにより、抵抗値の少ない優れたケーブルの選別やデータ転送の可否、OTG/ホスト機能の確認やUSBPDの対応有無など、様々な用途に使える。

Amazon | BitTradeOne ADUSBCIM USB CABLE CHECKER 2 | Bit Trade One | USBケーブル 通販

公式マニュアルも丁寧にGitHubのサイトで見れるがちょっと専門的すぎて分かりづらい。

bit-trade-one/ADUSBCIM-USBCableChecker2: ADUSBCIM

そこでケーブルごとに確認すべき点をメモ

TypeA - MicroUSBケーブルの場合

  • LEDの「2.0」内にある「D-」「D+」が点灯しているかどうか
    • 「VBUS」、「GND」だけしか点灯せず、「D-」、「D+」が消灯していれば、充電専用(データ通信には非対応)

例えば以下のような場合はデータ通信非対応なのでPCに接続してもファイル転送機能は使えない。

picture 1

TypeA - TypeCケーブルの場合

  • UP56K/SOURCE 0.5A」 と表示されているかどうか
    • TypeA - TypeCケーブルの場合56kΩの抵抗を内蔵することが必須
    • ディスプレイに「UP56K/SOURCE 0.5A」と表示されれば、56kΩの抵抗がちゃんと入ってる
    • 「UP10K/SOURCE 3.0A」、「UP22K/SOURCE 1.5A」だけはNG

picture 2

TypeC - TypeCケーブルの場合

転送速度

  • TX1とTX2 RX1とRX2が点灯すれば3.0以上の高速通信
    • USB3.0のLEDがなんにも点灯せず「D+」「D-」のみ点灯さればUSB 2.0速度の通信、つまり遅い
    • TはTransit(送信)、RはReceive(受信)を意味する
    • TX1はRX1と、TX2はRX2とペア
    • 上下反転して接続できるため、行儀が悪い端子だった場合接続の向きによってはTX1/RX1のペアがTX2/RX2のペアになることもある

USB 3.0規格に対応しているケーブルの場合

picture 4

USB 2.0規格にしか対応していないケーブルの場合

picture 3

eMarkerの有無

  • USB 3.1以上のTypeC-TypeCケーブルの場合はディスプレイに「CC:DOWN1K/E-MARKED」必須
    • USB 3.1以上のTypeC-TypeCケーブルにはeMarkerと呼ばれるチップが必須
    • TypeCケーブルでも3.0だったりUSB2.0の場合は必須ではないので表示されてなくても問題ない

<画像準備中>

CCランプの点灯

  • CCが点灯していないとPD規格非対応
    • 昨今のケーブルでは要らない子なので破棄した方がいい

共通

抵抗値

  • 大きければ大きいほど充電効率が悪いケーブルなので小さい方が良い

この画像の場合だと抵抗は125mΩ

picture 3

高すぎるとHIGH表示になる。1000mΩ超えてたら破棄した方がいい

picture 5

Weird cable(奇妙なケーブル)モード

公式ドキュメントいわく

ケーブル、プラグに複数のCCプルアップまたはプルダウン抵抗を発見した場合、ディスプレイの表示は通常とは異なる表示モードに入ります。
この表示モードでは抵抗値は小さく表示されシェルやシールドの状態は表示されなくなり、

1本だけだがあった 当然即捨てた

picture 7

使ってはいけない危険なケーブルの判断基準一覧 まとめ

TypeA - MicroUSBケーブル

  • LEDの「2.0」内にある「D-」「D+」が点灯しているかどうかを確認します。「VBUS」、「GND」だけしか点灯せず、「D-」、「D+」が消灯していれば、充電専用(データ通信には非対応)です。

TypeA - TypeCケーブル

  • UP56K/SOURCE 0.5A」と表示されているかどうかを確認します。TypeA - TypeCケーブルの場合56kΩの抵抗を内蔵することが必須です。「UP10K/SOURCE 3.0A」、「UP22K/SOURCE 1.5A」だけはNGです。

TypeC - TypeCケーブル

  • 転送速度: TX1とTX2 RX1とRX2が点灯すれば3.0以上の高速通信です。USB3.0のLEDがなんにも点灯せず「D+」「D-」のみ点灯さればUSB 2.0速度の通信、つまり遅いです。
  • eMarkerの有無: USB 3.1以上のTypeC-TypeCケーブルの場合はディスプレイに「CC:DOWN1K/E-MARKED」が必須です。
  • CCランプの点灯: CCが点灯していないとPD規格非対応です。

共通

  • 抵抗値: 大きければ大きいほど充電効率が悪いケーブルなので小さい方が良いです。1000mΩ超えてたら破棄した方がいいです。
  • Weird cable(奇妙なケーブル)モード: ケーブル、プラグに複数のCCプルアップまたはプルダウン抵抗を発見した場合、ディスプレイの表示は通常とは異なる表示モードに入ります。

参考リンク

Macbookのファン回転数をコマンドから変更する

環境

やりたいこと

コマンドラインからサクッとファンの回転数を変えたい

方法

smcFanControlに依存しているのでbrewでインストール

$ brew install smcfancontrol --cask

ezfインストール

$ npm install -g ezf

全てのファンの回転速度を最大にする

$ ezf --max

全てのファンの回転を自動制御に戻す

$ ezf --auto

参考リンク

docker compose downをすぐに終了させる方法

結論

docker compose down で速攻で終了させたいなら

version: "3"
services:
  app:
    image: ubuntu
    stop_grace_period: 0s

そもそもdocker compose downはなにしているのか

docker-compose.ymlのstop_grace_periodとはdocker-composeは、複数のコンテナを定義し、実行するためのツールです。

docker-composeでは、YAMLファイルにサービス、ネットワーク、ボリュームなどの設定を記述します。その後、docker-compose upコマンドで一括して起動します。

docker-composeを使うときに、サービスを停止する方法について考えたことはありますか?docker-compose downやdocker-compose stopなどのコマンドを使えば、簡単にサービスを停止できますが、その裏ではどのような処理が行われているのでしょうか?

実は、docker-composeでは、サービスを停止する前に、コンテナに対して2種類のシグナルを送信しています。それが、SIGTERMとSIGKILLです。これらのシグナルについて、簡単に説明しましょう。

SIGTERMとは

SIGTERMは、プロセスに対して終了を要求するシグナルです。このシグナルを受け取ったプロセスは、自分自身を終了するために必要な処理を行います。例えば、ファイルのクローズやメモリの解放などです。この処理は、プロセスによって異なりますが、通常は数秒程度で終わります。しかし、プロセスがSIGTERMを無視したり、終了処理に時間がかかったりする場合もあります。その場合は、SIGKILLが送信されます。

SIGKILLとは

SIGKILLは、プロセスに対して強制終了を命令するシグナルです。このシグナルを受け取ったプロセスは、何も処理せずに即座に終了します。このシグナルは、プロセスが無視できないため、確実にプロセスを終了させることができます。しかし、このシグナルは、プロセスが正常に終了するために必要な処理を行わないため、データの損失や不整合などの問題を引き起こす可能性があります。したがって、このシグナルは、最終手段として使うべきです。

stop_grace_periodとは

では、docker-composeでは、コンテナに対してSIGTERMとSIGKILLのどちらを送信するのでしょうか?

実は、docker-composeでは、両方を送信します。まず、コンテナにSIGTERMを送信し、コンテナが終了するのを待ちます。しかし、コンテナが一定時間内に終了しない場合は、SIGKILLを送信して強制的に終了させます。この一定時間を指定するのが、stop_grace_periodというオプションです。 stop_grace_periodは、docker-compose.ymlのサービスに対するオプションです。このオプションは、サービスを停止する前に、コンテナに送信されるSIGTERMとSIGKILLの間に待機する時間を指定します。デフォルトでは、この時間は10秒です。しかし、stop_grace_periodを設定することで、この時間を変更できます。例えば、以下のように設定すると、この時間を5秒に短縮できます。

version: "3"
services:
  web:
    image: nginx
    stop_grace_period: 5s

また、以下のように設定すると、この時間を0秒に短縮できます。

version: "3"
services:
  web:
    image: nginx
    stop_grace_period: 0s

この場合、コンテナにはSIGTERMとSIGKILLが同時に送信されます。これは、コンテナがすぐに停止することを意味します。

stop_grace_periodのメリットとデメリットstop_grace_periodを設定することで、サービスの停止時間を短縮することができます。これは、開発やテストなどの環境では便利な機能です。しかし、本番環境では、注意が必要です。なぜなら、stop_grace_periodを短くすることで、コンテナが正常に終了するために必要な処理を行う時間がなくなる可能性があるからです。例えば、データベースやメッセージキューなどのコンテナでは、終了処理に時間がかかる場合があります。その場合は、stop_grace_periodを長くすることで、コンテナが安全に終了することを確保する必要があります。

まとめ

docker-composeでは、サービスを停止する前に、コンテナに対してSIGTERMとSIGKILLの2種類のシグナルを送信します。この2つのシグナルの間に待機する時間を指定するのが、stop_grace_periodというオプションです。このオプションを設定することで、サービスの停止時間を短縮することができますが、コンテナが正常に終了するために必要な処理を行う時間がなくなる可能性もあります。したがって、このオプションを使用する場合は、環境やコンテナの種類に応じて、適切な値を設定することが重要です。

ssh越しにsudoでGUIアプリ起動する方法

環境

発端

MacOSからubuntusshしてsshX11 Forwardingを利用してGUIアプリをMacOS側に表示させていた

XQuartzを使っている

GSmartControl を使おうと思って sudo gsmartcontrol してみたがエラーになった

$ sudo gsmartcontrol
X11 connection rejected because of wrong authentication.

(gsmartcontrol:3072): Gtk-WARNING **: 08:10:34.175: cannot open display: localhost:14.0

ちなみにgsmartcontrolは、SMART(Self-Monitoring, Analysis and Reporting Technology)というハードディスクやSSDの健康状態を監視する技術を利用して、ストレージデバイスの状態やパフォーマンスをチェックすることができるツール

解決策

$ sudo DISPLAY=$DISPLAY XAUTHORITY=/home/thr3a/.Xauthority gsmartcontrol

ポイント

  • sudoは、スーパーユーザー(管理者)としてコマンドを実行するためのプログラムです。gsmartcontrolは、デバイスの情報にアクセスするために管理者権限が必要なので、sudoを使っています。
  • DISPLAY=$DISPLAYは、環境変数DISPLAYの値をそのまま引き継ぐという意味です。DISPLAYは、X Window SystemというGUI環境で、どの画面に表示するかを指定するための変数です。この部分は、sudoで実行すると環境変数が引き継がれない場合があるので、明示的に指定しています。
  • XAUTHORITY=/home/thr3a/.Xauthorityは、X Window Systemの認証情報を格納したファイルの場所を指定するものです。このファイルは、ユーザーがログインしたときに自動的に作成されます。この部分も、sudoで実行すると認証情報が失われる場合があるので、明示的に指定しています。

参考リンク