mltermで、TERM=xterm-256colorを自動的に設定させる

いまだにterminal emulatorとして何を使えば良いのか良く分からないでいる。 別に英語と日本語が表示できれば良いし、贅沢を言えばヨーロッパの言語にあるアクセント記号が付いたラテンアルファベットが表示されれば、ほぼ十分だ。 キリル文字で書かれたロシア語を読みたい時はあるが、Firefoxで表示されれば良く、terminal emulatorで表示できなくて困ったことはない。

さすがに今になってktermというのも気が引けるし(UTF-8にも対応しているバージョンがあるので、悪い選択肢ではないはずではある)、xtermは何だか使いにくい気がしてしまう。 かと言って、vteベースのgnome-terminalを使って快適な感じもしない。 と言うことで、消去法的ではあるのだが、mltermを使っている。

mltermで1つ不満だったのは、256色表示ができるはずなのに、それを有効化できていないということだった。 Changelogを眺めてみると、~/.mlterm/mainに、termtype=xterm-256colorという行を追加すれけば良かった。 これによって、mltermでecho $TERMを実行すると、xterm-256colorと表示されるようになり、256色表示もできるようになる。

無料でキリスト教の聖書を読む

残念ながら生粋の無神論者なので、宗教を信じていないし、神に祈らないし、宗教の儀式にも付き合い以上の関与もしないのだが、宗教がどういうものなのかには興味がある。 岩波講座 宗教を斜め読みする程度の興味しかないのだが。

とは言っても、いくつか聖典的なものは読んでおきたいと言う気持ちは持っていた。 と言うことで調べてみると、旧約聖書と新約聖書はYouVersionというAndroid appで無料で読むことができるらしいと分かった。

実際にインストールして、ログインしてみると、以下のような日本語訳の聖書を読むことができた。英語以外にもネパール語やビルマ語、ペルシア語、スワヒリ語などでも聖書を読むことができるようだ。

  • 新共同訳 (聖書 新共同訳)
  • 口語訳 (聖書 口語訳)
  • 口語訳 (japnese: 聖書 口語訳)
  • JA1955
  • JCB (リビングバイブル)
  • ERV訳 (ERV訳 --読みやすい聖書--)
  • NJB (新改訳)

口語訳が2つあるのは良く分からない。創世記の最初の部分だけ見ると同じな気がするが、ちゃんと比較はしていない。

とりあえず新共同訳を読むのが良いように見えたので、これを読んでみることにしよう。 ダウンロードしてみると、「聖書 新共同訳 旧約聖書続編付き」と書かれているので、旧約聖書の外典も含まれているのであろう。 少なくとも新共同訳は朗読機能もあって、text to speech機能ではなく人間が朗読しているようだった。 これで聞いてみるのも良いかもしれない。

旧約聖書とは言ってもユダヤ教的視点で日本語訳されているのではないような気がするので、あくまでキリスト教の聖書一式が読めるのだというのが現時点での理解である。

w3mでウェブを検索する

GoogleBingがJavaScriptが使えないと検索できなくなって久しい。 w3mでウェブを検索するのが難しくなってしまった。

DuckDuckGoはJavaScriptなしでも検索できる。 以下のように実行すれば、検索画面を開くことができる。

$ w3m https://duckduckgo.com/

pkgsrc/print/py-pdfを使って、PDFファイル中のハイパーリンクを抽出する

とある自治体が法令に基づいて公開しているPDFファイル一式を入手したかったのだが、そのPDFファイルへのリンク先が1つのPDFファイル中のハイパーリンクという形でしか提供されていなかった。 と言うことで、pkgsrc/textproc/py-pdfからpy314-pdf-6.7.0をインストールして抽出することにした。

と言うことで、以下のようなスクリプトを書いてみた。

$ cat extract-hyperlinks.py
#!/usr/pkg/bin/python3.14
#
# Usage:
# $ cd /usr/pkgsrc/textproc/py-pdf
# $ make install
# $ ./extract-hyperlinks.py target.pdf > links.txt
# $ wget -i links.txt

import sys
from pypdf import PdfReader

pdfpath = sys.argv[1]

reader = PdfReader(pdfpath)

for page in reader.pages:
  if '/Annots' in page:
    for annot in page['/Annots']:
      annotation = annot.get_object()
      if "/A" in annotation and "/URI" in annotation["/A"]:
        uri = annotation["/A"]["/URI"]

        print(f"{uri}")

以下のように利用すれば良い。

$ python3.14 extract-hyperlinks.py ../hyperlinks.pdf > links.txt

Metabaseでlog4jを使ってログを出力する

pkgsrc/www/metabaseを最新にアップデートするのは怠けているのだが、手元ではほぼ常に最新版を使っている。 pkgsrc/www/metabaseのインストールするrcスクリプトには、log4jによりログを出力する設定が含まれている。 また、そのrcスクリプトが利用するlog4j2.xmlという設定ファイルの雛形も含まれている。 なので、pkgsrcからMetabaseをインストールすれば、/var/log/metabase/metabase.logに、設定されたようにログが出力される。

log4jによりログを出力するのは、私の用途では重要なのだが、少なくとも私がMetabaseを使い始めた時にはあまり情報がなかったように思う。 もうずいぶんと前の話なので、今は十分に説明するウェブページが世間にはあるようだ。

Grafanaには、BASIC認証を設定できない

Grafanaを簡単にどういうものか説明できるほど良く理解していないが、私の使い方で言えば、時系列データを保存しているデータベースがあって、その内容を折れ線グラフでプロットして、その値によってアラートを出すように設定できるダッシュボードのウェブページである。 ビジネス・インテリジェンス・システムのようなものであるような気もする。

私は、少し古いがpkgsrc/www/grafanaから11.0.0をインストールし、データベースは、pkgsrc/databases/influxdbを手元でアップデートしてInfluxDB 1.8.10をインストールして使っている。 ウェブサーバーがないと使えない訳ではないと思うが、Apache httpdをリバースプロキシーとして利用している。

Grafanaには、もちろんログイン機能があって、ログインしなければダッシュボードを見ることはできない。 そもそもやりたかったのは、そもそもGrafanaのログイン画面へ行くこともできないようにすることだった。 そうだとすると、一番簡単なのは、BASIC認証を設定することであるように思えた。

しかし、BASIC認証は使えない。 と言うのは、ユーザー追加をする際に、Grafana自体が自身のAPIを利用する場合にBASIC認証を利用しているからであるようである。 Apache httpdでBASIC認証した上で、ユーザー追加をすると、追加したユーザーでしかログインできなくなるばかりか、そのユーザーからログアウトすることもできなくなってしまう。

おとなしく、Grafana備え付けのログイン画面を使っておくのが一番良さそうである。

Windows 11でwgetを使ってhttpsなウェブサイトから情報を取得する

Windows 11でhttpsなウェブサイトから情報を取得したいのだが、ウェブ上にある多くの古いwgetのWindows用のバイナリーは、TLS 1.2以降に対応しておらず私の接続先には利用できなかった。 また、このwgetを動かす環境は、ユーザー認証付きのHTTPプロキシーサーバーを経由しないとイントラネット外のウェブサイトへ接続することはできない。 このような状況でWindows 11のマシンでwgetを利用する方法を書いておく。

wgetのバイナリーを入手する

Windows binaries of GNU Wgetで公開されているwgetバイナリーは、新しいTLSのバージョンにも対応していた。 他にもおそらく使えるバイナリーを配布している所はあるかもしれないが、具体的には確認していない。

具体的には、バージョン1.21.4のバイナリーをダウンロードして利用した。

設定値をファイルに格納する

ユーザー認証付きHTTPプロキシーサーバーを利用する必要があり、これらを毎回コマンドライン引数として入力するのは煩雑になる。 また、パスワードをコマンドライン引数として与えるのも、パスワードが画面上に表示されてしまい、うれしくない。

ということで、設定値はwgetrc.txtというテキストファイルに予め記入しておくことにした。 その内容は以下のようにした。

> type wgetrc.txt
use_proxy=on
http_proxy=http://10.1.1.1:8080/
https_proxy=http://10.1.1.1:8080/
proxy_user=(YOUR USERID)
proxy_password=(YOUR PASSWORD)
check_certificate=off

ここで、check_certificate=offはTLS証明書のチェックを省略している。 これは良い習慣ではない。

実行例

このwgetrc.txtファイルを使いつつ、ウェブサイトから情報を取得するには、以下のようにすれば良い。

> wget.exe --config=wgetrc.txt -nc -r https://www.ryoon.net/

mltermで、TERM=xterm-256colorを自動的に設定させる

いまだにterminal emulatorとして何を使えば良いのか良く分からないでいる。 別に英語と日本語が表示できれば良いし、贅沢を言えばヨーロッパの言語にあるアクセント記号が付いたラテンアルファベットが表示されれば、ほぼ十分だ。 キリル文字で書かれたロシア語を読...