SVX日記
2024-07-15(Mon) Improving is Entertainment!
どうも最近「ヤル気の低調さ」を自覚する傾向にある。自覚したところで改善は難しいのだが、それはそれで低調なヤル気でやれる事を探したりできないこともないわけで、ダラダラと進められることに手を付けるわけだ。
そういや、メール環境を自作のMaverickに移したはいいが、メールの削除が面倒でゴミメールが3000通くらい溜まってしまっている。実はちょっと前にスレッド単位での削除機能を付けたのだがとても追いつかない。チェックボックスをチェックする操作が面倒すぎるのだ。要するに、画面内の全メールのチェックボックスを一発でチェックする機能が欲しい。
/root/docker/mave/mave # git diff
diff --git a/maverick.rhtml b/maverick.rhtml
index 4127bde..3dec566 100755
--- a/maverick.rhtml
+++ b/maverick.rhtml
@@ -176,6 +176,7 @@ SEARCH_FORM
<H1>Maverick</H1>
<HR>
<FORM action='.' method='post'>
+ <INPUT type='checkbox' id='checkall'>
<INPUT type='hidden' name='folder' value='<%= folder = cgi.params['folder'][0] || 'Inbox' %>'>
<% if(cgi.params['startsq'].size != 0)
%> <INPUT type='hidden' name='startsq' value='<%= sq0 = cgi.params['startsq'][0] %>'>
@@ -189,7 +190,7 @@ SEARCH_FORM
<HR>
<PRE><TT
><% sqs = maverick.each_mail(folder, sq0, n_max = 25) {|mail|
- %><INPUT name='sqs' type='checkbox' value='<%= mail[:SQ] %>'
+ %><INPUT name='sqs' class='mail' type='checkbox' value='<%= mail[:SQ] %>'
><A href='<%= maverick.script %>?view=mail;folder=<%= folder %>;sq=<%= mail[:SQ] %><%= sq0 ? ";startsq=%s" % sq0 : '' %>'><%= CGI.escapeHTML(mail[:ABSTRACT]) %></A
><A href='<%= maverick.script %>?folder=<%= folder %>;sq=<%= mail[:SQ] %><%= sq0 ? ";startsq=%s;" % sq0 : '' %>;req=fold'> < </A>
<% }
@@ -276,5 +277,14 @@ SEARCH_FORM
</BODY>
<% end
maverick.close
-%></HTML>
+%> <SCRIPT type='text/javascript'><!--
+// (chackall = document.getElementById('checkall')).addEventListener('click', () => {
+ checkall.addEventListener('click', () => {
+ mails = document.querySelectorAll('.mail');
+ for(mail of mails) {
+ checkall.checked ? mail.checked = true : mail.checked = false;
+ }
+ });
+ --></SCRIPT>
+</HTML>
ググるのも難しそうだと思ったが、すぐに見つかった。id名は「document.getElementById('id')」しなくても使えるらしい。なんだその場当たり的な仕様は。長すぎて打つの面倒だからそうしましょう、みたいな。やっぱりJavaScriptは好みじゃないな。キラいではないけれど。あ、Pythonはハッキリとキラいです。そのことだけはお付き合いを始める前にあらかじめお断りしておかなくてはと思いまして。えぇ。
またまた。次。オレ用のブックマークサイトの修正。先日からサイトの追加だけができなくなってしまっていた。DBがエラーを吐いている。軽く10年以上も動いていたのに何で? DBが壊れた? ゴミが溜まったか? sqlite3もたいしたことないな。エクスポートしてインポートすれば治るんじゃね?
$ sudo dnf install sqlite
$ sqlite3 remote_bookmark.db
sqlite> .output export.sql
sqlite> .dump
sqlite> .exit
$ sqlite3 import.db
sqlite> .read export.sql
sqlite> .exit
……が、治らない。アレ。ちゃんとエラー内容確認しなきゃダメか……と、マジメに読むと、uniqueキーの制約でinsertに失敗している。サイトへのジャンプの履歴の追加だな。あ。確かに重複している。なんで? あ。先日、移行時にヘンなことしたからか。その時に不整合を入れてしまったんだな。sqlite3のせいではなかった。でも、オレの書いたコードのせいでもない。10年以上も前のオレ、ナイス。
まずはヘッドホン。2年前くらいにちょっと奮発して買ったロジクールのヘッドホンG433BKに輪っかを付ける。頭頂部に穴孔けたいけど、ケーブルが片出しなんだから、ソコには配線があるはずだよね。と、アチコチを眺めると、ネジ発見。なんとトルクスだ。外すと頭の上のクッション部分を外すことができた。ウオッ、凝った作りだなぁ。部品もすごくシッカリしている。そこそこ値段しただけのことはあるな。メクラで穴孔けなくてよかった。ピンバイスでふたつ穴を孔ける。これまた品質のよいプラスチックを使っているだけあって、硬いな。ネジリッコ通して元に戻す。
次はF310というゲームパッド。これもロジクールじゃないか。普通のプラスネジだが、裏に7本もある。パカッとやると機構のほとんどは背面側であった。穴を孔けるのも背面側。ケーブルの少し奥に穴を孔け、やっぱりネジリッコ通して元に戻す。元に戻す時に、ボタン類を全部ブチまけてしまって慌てたのはナイショの話。
ヤル気が低調だった割には、エラく色々なものを改善できてしまった。先日、脳の疲れを癒すいくつかの方法というエントリで、そういう時のために軽いゲームを用意しておくといいようなことを書いたが、そういう時のために軽い課題を用意しておくのも有効なんだな。たいして必要性は高くなくて、そう難易度も高くない作業は、メモだけしてやらずに残しておくのだ。