たまに掃除は必要!熱暴走…

イメージ
 そんなに暑くないのに… 本日、午前中にオンラインで打合せをしていると、突然マシンがダウン。 一瞬、停電か?と思ったもののディスプレイの電源は入っている。 あれっ?と思い、すぐさまノートで打合せを継続。 その間に、再度マシンの電源を投入。 問題なく起動する。 でも、CPU温度がたまたま目に入り、95℃を超えて徐々に上昇していく。 105℃あたりで再度マシンダウン。 これは、熱暴走によるダウンの可能性が高い。 以前、CPUをRyzen7→9にした頃は、60℃〜70℃程度だった記憶がある。 本当はGW中にSSDの載せ替えを行う予定だったけれど、忙しくて先延ばしにしていた。 その時やっていれば、多分掃除もしただろうに…。 ということで、午後からマシンを解体し、掃除をすることに。 ケース本体のFANはホコリがかなり溜まっている。 GPUのFANは問題ない。 電源とCPU FANはひどい。 一旦、CPU FANを取り外し、きれいにする。ついでにCPUグリスも塗り直しセット。 動作確認すると、投入直後で40℃台。 そりゃ、熱暴走も起こすわけだ。 せっかくバラしたので、SSDの載せ替えを実施。 OSは500GBで、ユーザ領域(/home)は1TBを使用しているもののAIのmodelをいくつも落としていたり、DockerのImageが多種置いてあるため、結構容量を食っている。 今回、2TBのSSD( Hanye SSD ¥17,800- で入手済)を用意してあるので、 1TB→2TB, 500GB→1TBと玉突きで移動させることを計画していたので実施する。 本当は、ddコマンドで移すつもりだったのだけれど、3月にお客さんのところで使いそうだったので、 ORICOのクローン機能付SSDアダプタ を入手済。 裸族のSSD版ですね…。1万円程度の品です。 これに、新品のSSDとこれまでの1TBのSSDを差し込んでクローン開始。 そこそこ時間はかかるものの、放置でOK。 ただ、HanyeのSSDについているヒートシンクが引っかかるため、一旦取り外してクローン後取り付ける必要があった。 続いて、500GB→先程の1TBに書き込み。 ただ、1TB(samsungの980pro)が、先程のクローンでかなり熱くなっていたため、速度低下が激しい感じ。1TB→2TBよりも時間がかかった感じ。 ...

これは使える!テキストツール csvq

GO製 csvq

いつも使えそうなツールをチェックしているのだけれど、久々に使えるものを入手した。

csvファイルをDBのように扱い、sqlで操作可能にする。

インストールはBinaryをダウンロードしてPATHの通ったところに置いて完了。

ちなみに、他の人はどうしているのか分からないけれど、どこに置くのかというのはいつも悩ましい所。
  • /usr/bin
  • /usr/local/bin
あたりが、多いんでしょうか…。
まあ、マルチユーザの場合、パッケージなどで入れたものは、/usr/bin以下に入るだろうし、buildするタイプなどで作法の良いものなら/usr/local/binなどに入れるのが普通だろうなぁ。
 自分の場合は、個人で使用する場合や自作のもので、一時的に使うモノは、~/bin というフォルダを作成していて、ここにポイッと入れて動作テストなどしている。
もちろん、PATHを通しておく必要が有る…。

さて、解凍してcsvqをbin以下に入れれば即実行できる。

こいつ強力すぎる!

実際に試してみると、こいつは便利だ。
試しに次のようなデータを作成してテストしてみた。(user.csvとscore.csv)

データを一覧したければ、
$ csvq
> select * from user;

+----+--------+-----+-------------+
| id |  name  | age |     tel     |
+----+--------+-----+-------------+
| 1  | user1  | 20  | 01011112222 |
| 2  | user2  | 21  | 01011113333 |
| 3  | user3  | 22  | 01011114444 |
| 4  | user4  | 23  | 01011115555 |
| 5  | user5  | 24  | 01011116666 |
| 6  | user6  | 25  | 01011117777 |
| 7  | user7  | 26  | 01011118888 |
| 8  | user8  | 27  | 01011119999 |
| 9  | user9  | 28  | 01022221111 |
| 10 | user10 | 29  | 01022222222 |
+----+--------+-----+-------------+
まんま、mysqlコマンドと同じような表示をしてくれる。
> select * from score;
+----+---------+-------+------------------+
| id | user_id | score |       date       |
+----+---------+-------+------------------+
| 1  | 2       | 100   | 2019/3/12 10:00  |
| 2  | 4       | 200   | 2019/3/12 10:15  |
| 3  | 6       | 300   | 2019/3/12 10:30  |
| 4  | 8       | 400   | 2019/3/12 10:45  |
| 5  | 10      | 500   | 2019/3/12 11:00  |
| 6  | 1       | 600   | 2019/3/12 11:15  |
| 7  | 3       | 700   | 2019/3/12 11:30  |
| 8  | 5       | 800   | 2019/3/12 11:45  |
| 9  | 7       | 900   | 2019/3/12 12:00  |
| 10 | 9       | 1000  | 2019/3/12 12:15  |
+----+---------+-------+------------------+
この2つよく有るパターンのテーブルです。

でもって、joinしてみる。
> select * from user join score on user.id = score.user_id order by score desc;

+----+--------+-----+-------------+----+---------+-------+------------------+
| id |  name  | age |     tel     | id | user_id | score |       date       |
+----+--------+-----+-------------+----+---------+-------+------------------+
| 1  | user1  | 20  | 01011112222 | 6  | 1       | 800   | 2019/3/12 11:15  |
| 5  | user5  | 24  | 01011116666 | 8  | 5       | 800   | 2019/3/12 11:45  |
| 10 | user10 | 29  | 01022222222 | 5  | 10      | 700   | 2019/3/12 11:00  |
| 8  | user8  | 27  | 01011119999 | 4  | 8       | 600   | 2019/3/12 10:45  |
| 9  | user9  | 28  | 01022221111 | 10 | 9       | 600   | 2019/3/12 12:15  |
| 4  | user4  | 23  | 01011115555 | 2  | 4       | 500   | 2019/3/12 10:15  |
| 2  | user2  | 21  | 01011113333 | 1  | 2       | 400   | 2019/3/12 10:00  |
| 7  | user7  | 26  | 01011118888 | 9  | 7       | 300   | 2019/3/12 12:00  |
| 6  | user6  | 25  | 01011117777 | 3  | 6       | 200   | 2019/3/12 10:30  |
| 3  | user3  | 22  | 01011114444 | 7  | 3       | 100   | 2019/3/12 11:30  |
+----+--------+-----+-------------+----+---------+-------+------------------+
うわー、テストするだけなら、これで十分かも…。
ひょっとすると、講義でも使えるかもしれない。
DB無しで、csvファイルだけ用意して、練習するとか…。良いかも!

 とりあえず、sum( ) や avg( ) などは使えるし、他にも関数は大量に用意されている。
マニュアルを見ると、こんなことまで対応しているのかと驚く。
https://mithrandie.github.io/csvq/

もちろん、selectだけでなく、insert/updateなど一通り揃っているので、手軽にテストできそう。

他には、UTF-8にもShift-JISにも対応しているようだし、JSONも扱えるらしい。
区切り記号もカンマ以外にもOKなので、テキストファイルに落とせれば何とかなりそうな気配。

SQL使いたいけど、DBインストールできない人とか、DBから持ってきたデータで検証したいとかという目的にも行けそう。
子プロセスで実行して、SQLiteの代わりに使うとか…。パイプで処理繋いでやれば何とでもなりそうで期待大(笑)


コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

VirtualBoxが異常

MEGAにも弱点があった?