VanillaOS 3を試す

イメージ
以前仮想マシンで試したものの、あまり時間が取れず、しっかり使えていなかった。 余っている(テスト用においてある)Thinkpad x390に実際に入れて試してみた。 Vanilla OS ところが、サイトに行ってみると少し前(2026-08-24)にUpdateされており2→3へと2年ぶりの更新。 簡単に言うとイミュータブルなOSで、OS本体の書き換えは基本的にできず、A/Bパターンで起動する必要がある。 Aでインストールしたものは、Bに入れられ、起動時にBを選択するとインストール後の状態で使える仕組み。不具合があればまたAに戻せるというもの。 若干、コマンド類が変わってしまっているらしい。 イミュータブルなOSは、これまでにも試したものの日本語がうまく扱えないなど常用するには結構厳しいものがあった。 とはいえ、時間の経過で様々なアプリケーションがFlatpakやAppImageで出揃ってきたので、今回テストすることにした。 インストーラ自体は小さく、起動用のUSBに書き込んで起動すればOK。 インストール完了後、マシン名やユーザ名を入力することで、環境設定は完了。 基本的にはFlatpakでインストールするのが正しい使い方らしいので、必要そうなものを入れてみた。 vscode Brave Browser LMStudio DBeaver-ce Thunderird Obsidian opencode LibreOffice など・・・ どれも、サクサクと動作して気持ちいい。 日本語環境 さて、問題は日本語環境だが、調べてみるとflatpakにmozcもfcitx5も存在していた。 これんらばと思い、入れてみる。 https://note.kurodigi.com/vanillaos-fcitx5-mozc/ が、vanillaOS2の記事のようだけれども、同じ手順でOKだった。 すばらしい。 いつも使用しているmozcが動作するようになった。 ところが、LMStudioでハマった… flatpak特有の問題 LMStudioはすんなり入り、LMLinkでローカルのAIサーバも使用可能。 で、URLを指定したときにWEBサイトを取りに行かせて、処理させるMCPでハマった。 https://github.com/modelcontextprotocol/servers...

これは使える!テキストツール 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の代わりに使うとか…。パイプで処理繋いでやれば何とでもなりそうで期待大(笑)


コメント

このブログの人気の投稿

MEGAにも弱点があった?

Ubuntu24.04 でGUIが死んだ

VirtualBoxでUSBを使う方法が分かった!