昔の最近の出来事(2021.08)

2021/08/31

テレワーク。早めに終了。

東京都コロナ感染者。新規は 2909人。

先日知った、bashの「Process Substitution(プロセス置換)」という仕組み。 早速バイナリファイルの微妙な差分を確認するのに使ってみたり。

$ diff <(hexdump -v -C old.bin) <(hexdump -v -C new.bin)

便利です。所でこの仕組みはいつ頃からあったのだろうか?と思って少し調べてみたり。 Googleで検索してみると 「bashのmanページ日本語訳」 が2001年の文書のようで、この時点で存在していたようです。ただ、使い方のページになると 2010年より前だと数が少なく(単に消滅しているだけかも知れません。例えばGeoCitiesの閉鎖と共に失われたとか)、 2010年以降だとそれなりに存在するという感じのようです。 OSによっては設定しないと有効にならないという場合もあるようですが、 マイナーな便利機能という感じで紹介されている例が多いかも😅。 確かに単一入力ならばパイプで繋ぐ方が簡単なので、diffのように必ず1つはファイルを 指定しなくてはならない場合に限られるかも知れません。一つ思ったのは /dev/fd/* の下に ファイルディスクリプタとして開かれる為か ファイル名を変えたり指定する事はできません。 この為、拡張子で動きを変えるようなプログラムではギリ使えません。 拡張子を指定(追加)できれば無敵かも知れません🙂

2021/08/30

夏休み。早めに起床。

ワクチン接種1回目を実施。注射自体は痛くなかったですが、時間が経つと 腕を動かした時にちょっと痛い感じ。 これがいわゆる「筋肉痛のような」って事か。

東京都コロナ感染者。新規は 1915人。絶対的には少なくは無いけど今月の中では一番少ない。
感染拡大しては収まる度に思うのですが、やればできるんだから最初からやれよ感しか無い。 新規感染がゼロにならない以上 感染予防の手を緩めて良いタイミングは今まで一度も無い。

TGAの様子を調べる過程でEmacsで外部コンバーターを使って画像表示する時の動きが想定と違っているのが判ったり。 バッファの内容をコンバーターにはパイプ渡ししていると思っていたのですが、どうやら ファイルのバッファへの読み込みを行うと同時にファイル名をコンバーターにも渡していました。 つまり、バッファ読み込みと表示画像生成は独立に行われているという事です。 JXRやBPGもファイル名渡しになっていたので、Emacsで表示ができなかったのは 「convert -list format」で得られる対応画像フォーマットの一覧にJXRとBPGが出てこない事が 直接の原因だったようです。なので、BPGとJXRの場合にconvertが標準入力から 読み込めないのは表示できない事とは関係無かった模様。修行が足りません。 以前放流したwrapped_convert_210815b.tar.xzで 結果的にEmacsでのBPGとJXRの表示に対しては問題ありません。

話は戻って ImageMagickで TGAの表示が変な件。wrapped_convertを改造して TGAだった場合は GraphicsMagickを使うようにして様子を見てみたり。因みに、このときに入力データに「tga:-」が指定されていたら gmを発動するように改造したのに何故か反応しなくてファイル渡しになっていたのが判明したという流れでした😓 さておき、gmでも殆どのTGAは大丈夫なのですが、アルファ付きのグレースケールTGA画像はやっぱり変換できないようです。 アルファ付きのフルカラーTGA画像はOKなのでもうあと一つという感じ。 IrfanViewもアルファ付きのグレースケールTGAはダメで、そのTGAを生成したGIMP (とそのデータをリファレンスにしたTANE自作のTGAローダー)でしか表示できるものが無くて、 そもそも一般的ではないのか?という感じです。

ImageMagickの TGA読み込み。coders/tga.cがTGAの読み書きを行うコードのようです。 少し書き換えたりしながら様子を見たところ、以下の二点の問題がありそうです。


前者について、BMPフォーマットの読み込みコード(coders/bmp.c)を参考に見てみたとこ、データを読み込み終えた後に 高さが負の場合は画像を上下反転するというコードになっているようでした。なので、TGAについても 同じようにしてみました。ただし、TGAフォーマットのフラグには左右の方向についても指定が可能なのですが、 左右反転については保留。やり方が判らないとも言う🥺。
アルファ付きグレースケールについては条件を正確に見て 対応した解釈をするようにしてみました。 因みに、IrfanViewも同じく 5:5:5形式のRGB画像と固定解釈しているんじゃないかと推測されます。

対応してみたImageMagickを使って外部コンバーター起動での表示はOKそう。 でも、 ImageMagickを有効にして組み込んだEmacsでは、何故か今度はこちらが上下逆に表示されたり😓。あれぇ? アルファ付きのグレースケース画像についても色は大丈夫そうなのですが上下が逆。なのでDLLの差し替えは反映されています。 確かに、ImageMagickを有効にしたEmacsだとTGAの上下は合ってたような気がしたのですが、外部のconvertを使うと 上下が逆になってました。convertで上下逆になっていたのを直したら、ImageMagick組み込みのEmacsがダメになったという感じ。 因みにdisplayコマンドも上下逆に表示されていたのが直ったので、Emacsが上下逆に表示してるんじゃないか?という疑惑が浮上🤔。

どうやら、Emacsでは MagickAutoOrientImage()という関数で画像の向きを取得しているっぽい。 で、画像自体は上下反転したものの orientation はそのままだったので、 Emacsでは「auto orientの上下反転と、画像の上下反転を二重に適用」してしまい上下反転で表示される結果になったようです。 なんか正解がよく判らない感じになってますが、上下反転したのでorientationも反転した情報に置き換えると convertを介する表示も 組み込みImageMagickでの表示も良好になりました。 しかしながら、画像の情報としてはorientationが変更されてしまうので「convert orig.tga new.tga」 で変換すると格納方向が逆で保存される為、元に戻らなくなります。これじゃない感🤔

再度convertコマンドのオプションを眺めてみたところ「-auto-orient」というオプションがあるのが判りました。 使うならこれだ。という訳で、次のようにするのが正解と思われ。


なんかごちゃごちゃしてますが、これまでに気づいたTGAファイル表示の問題点はオールクリア。 Emacsでの画像ファイル表示が強まった😆。テキストエディタだけど...😓

2021/08/29

AM中に起床。

掃除したり洗濯したり。

東京都コロナ感染者。新規は 3081人。お盆休み明け後の人流増加が今後どう見えるか。
そういや病床数の話や救急対応逼迫の話を全然しなくなった気がします。結局、騒動にしか興味が無いという事なのか。

ImageMagickで TGAの読み込みが変なのを少し調べてみたり。でも原因は掴めず。

2021/08/28

起きたら午後もいい時間。寝すぎ。

東京都コロナ感染者。新規は 3581人。

Cygwinのemacs-X11でのフォント。X11の場合 ~/.fonts というディレクトリがあればその中に フォントファイルが入っているという体でフォントファイルを読み込むようです。 しかし、Windows10の 1809以降、デフォルトのフォントインストール先が ユーザー毎のディレクトリに 変更されました。この為、以前は ~/.fonts を /cygdrive/c/Windows/Fonts へのシンボリックリンク にしておけば良かったのですが、そうするとユーザー毎のディレクトリにインストール されたフォントは参照できず、逆にユーザーの方に変更するとシステムフォントが参照できないという 状態になっていました。そこで、システムとユーザの両方のフォントファイルへのシンボリックリンクを 一つのディレクトリに生成するスクリプトを作成してみました。

#!/bin/bash

LANG=ja_JP.UTF-8

fontpathlist=(
    "/cygdrive/c/Users/ユーザー名/AppData/Local/Microsoft/Windows/Fonts"
    "/cygdrive/c/Windows/Fonts"
)

fontdir="./fonts"

if [ ! -d $fontdir ]; then
    echo "Error: font directory ($fontdir) is not exist."
    exit 1
fi

pushd $fontdir >/dev/null

files=()
while read -r file ; do
    files+=("${file}")
done < <(find . -type l)
for file in "${files[@]}" ; do
    /bin/rm "$file"
done

for fontpath in "${fontpathlist[@]}" ; do
    files=()
    while read -r file ; do
        files+=("${file}")
    done < <(ls -1 $fontpath/*.*)
    for file in "${files[@]}" ; do
        ln -s "$file" .
    done
done

exit 0

任意のディレクトリで実行する想定です。 予めユーザーのフォントパスの「ユーザー名」を各自ディレクトリパスに合わせて変更しておくことと、 カレントディレクトリに「fonts」というディレクトリを作成しておくことが必要です。 うまく生成されたかは「ls -l fonts」とかでディレクトリの中を確認してみてください。 うまく生成されているようだったら ~/.fonts が無い事を確認した上で 「mv fonts ~/.fonts」で ~/.fonts に置けばイケるんじゃないかと思います。

今回のスクリプト作成にあたりハメられたのは、やはり「空白文字を含むファイル名」。 ファイル一覧の配列を生成するのに while read にパイプ渡しする方法 (厳密には仮想的な一時ファイルを介している感じのようですが)を初めて知りました (参考1, 参考2)。 奥が深い....でも流石にトリックが行き過ぎている感じがするのは否めません😅。 因みに /bin/sh だと構文エラーになるようだったので、/bin/bash を使用する必要があるようです。

先日知った show-paren-mode ですが シェルスクリプトの if に対応する fi、while,for に対応する done にも反応するようです。思ってもいない所にも 便利に作用するのには感心します🙂

2021/08/27

夏休み。AM中に起床。

東京都コロナ感染者。新規は 4227人。ここ数日、数が似てるなぁ?
予約無しでワクチン接種。いや、200とか300のキャパだとそうなるわな。 予約する方式の場合でも予約が取れないとかなってる今の状況に加えて、事前告知したら殺到するのは容易に 想像できそうなもんですが.....。 もしや「単なるポーズ」だったんだけど、そんな事を言えるハズも無いので「想定外」って言ってるのかも知れません。 ただ、仮に 単なるポーズ だったとしても「抽選にする」のはもっとダメだろという気がします。 2回目どうすんの?とか考えてるのだろうか? しかしながら、このシステムに従って炎天下のなか高密度な長蛇の列を作って並んでしまう方もどうなの?という気はします。 結果的に無駄に出歩くきっかけになるのでは?とは思ったりも。

結構色んな場面で思うのですが、単純に「数百」って数に「凄く多い」って感覚を持っている人が多すぎないか?と感じます。 令和2年の東京都の人口(資料) を見てみると、都内の20歳台の日本人は約155万人なので、そのうちの200人は 0.012% になります。 これを100回(≒約3ヵ月とみなす)繰り返してもやっと 1.2% と言うレベルなので、 やってるうちにならないスループットなのは自明に思えます。「単なるポーズ」じゃなくて本気で想定外 だったのならば、一体どういう見積もりで想定したんだ?という感じに思えます。

Webを散策していたら「PlemolJP」というフォントの存在を知ったり (Qiita記事, GitHubサイト)。 以前IBM Plexの日本語文字が来た事を記したのですが、 PlemolJPは等幅の「IBM Plex Mono」と日本語文字を含む「IBM Plex Sans JP」とを合成したフォントセットだそうです。 「IBM Plex Mono」はイタリック体を含んだ等幅フォントなのが良いなと思っていたのですが、 「IBM Plex Mono JP」は無いんだ...と思ってました。PlemolJPではIBM Plex Monoのイタリック体が含まれています。 で、早速Emacsで様子を見てみたのですが、先日の「Segoe UI Emoji」の幅をどうにも合わせられず🥺。 うまくいかない物です。ただ、日本語文字を含んだ等幅フォントとして選択肢が増えるのはありがたい所です。

2021/08/26

本日少し遅めの夏休み。AM中に起床。

東京都コロナ感染者。新規は 4704人。まだ横ばいか。ただ人出がまた増えているようなので 来週は増加傾向に転じる可能性はあるのかも。

絵文字を使うような文書では等幅を気にする場面は無かったのですが、org-tableの中に絵文字を 入れた時にテーブルの幅が合わなくなるなぁ?と思って調節してみたり。以下のようにしてみたところ、

  (add-to-list 'face-font-rescale-alist
               '(".*Segoe UI Emoji.*" . 0.765)
               )

ぱっと見の幅は合ってる感じになりました。

絵文字フォントサイズ調節

「0.765」は text-scale-adjust(C-x C-0 , C-x C-+ , C-x C--) で4段階まで拡大してもズレない という値を探し出したという感じです。ただし5段階目からは少しズレます。また縮小方向は1段階目で 大きくズレますが2段階目では一応合った感じになります。 ベースとするフォントやサイズ、ディスプレイスケーリングによって最適値は違うみたいですが、 我が家ではこれが良さそうだという値として採用しました。 ただ、絵文字のサイズが大分小さいなぁ?という印象です。 プロポーショナルフォントと混在させるのであれば、調節はしない方が良いかも知れません。

そういえば、Emacsのフォントサイズ調節に関連するWebページを見ていると、 大抵の場合 半角ASCII文字と全角日本語文字とで違うフォントを混在させるという条件で色々苦労するハメになるようです。 加えて半角ASCII文字と全角日本語文字の幅の比率を1:2にしようとすると調整の無間地獄に陥る感じになるようです。 選べるという事と自分の要件に合うか否かは別なので、TANEの場合は色々試してみては結局 MeiryoKe_Consoleに戻るを繰り返してしまいます。 色んな意味でフォントの設定って難しいなぁと思います。そう考えるとMeiryoKe_Consoleが肌に合ったのは幸運だったのかも知れません😅。

2021/08/25

テレワーク。早めに終了。

東京都コロナ感染者。新規は 4228人。
それにしてもニュース番組的なものでコロナ関連の報道(特に病床が足りないとか)をした後に 「感染者を減らすのが一番です。みんなで感染対策を徹底しましょう」的な事は全然言わないなぁ? 「言葉が伝わっていない」とか 人の事を言える立場か?と感じる事がなくもありません。

今さらかも知れませんが Emacsの show-paren-mode というモードを知ったり。 対応する括弧をハイライトしたり、括弧で囲まれた領域をハイライトできます。 ちょっと使って便利だったので 即デフォルトONにしてしまいました🙂。 Emacsのgitログを歴史探索してみると、今から23年前に最初のコミットが行われたモードのようです。 歴史を重ねて今に至るものの一つかも知れません。歴史を重ねているEmacsのモードは珍しくないとは思いますが、 そうだとしても 今も便利に使えるのはありがたい事です。

2021/08/24

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 4220人。

パラリンピック開会式。二週間弱を乗り切ればコロナの影響を大きく受ける案件が片付くという感じなのかも。

全然関係無い流れで正七角形のWikipediaから 折り紙で作図できるというのを知ったり。ほぅ.....

2021/08/23

テレワーク。早めに終了。

東京都コロナ感染者。新規は 2447人。ノイズの可能性大。
ワクチン接種しないという自由。 ワクチン未接種の人の入店を断るケースがあったとして、「入店を断るという自由」に対しては どう考えているのだろうと思ったりも。 「ワクチン未接種の方の入店をお断りしていますが、ワクチンを接種していたとしても コロナに感染していない可能性も、コロナに感染しない可能性もゼロとは言えない状況です。 当店でも来店いただいた全てのお客様がコロナに感染していない事を保証する事はできません。 しかしながら ワクチン未接種の場合 接種している場合に比べて重症化リスクが高い事を鑑みますと、 未接種の方の入店をお断りさせていただくのが お客様の健康の為と判断しました。」 と説明されたとして、それに対して何て言うだろう?

ちょろっと設定追加。

2021/08/22

AM中に起床。

掃除したり洗濯したり。
自転車修理。いわゆる虫ゴムの劣化でタイヤの空気が即抜ける状態になってました😖。 一番近所の量販店でも歩くと距離があるので暑さで死亡。ひとまず交換部材を調達して修理完了。 急を要している時でなくて良かったかも知れぬ。

東京都コロナ感染者。新規は 4392人。
TVの街頭インタビューで「周りは危機感をあまり感じていない」的なニュアンスの回答をする人。 ところであなたはなぜ今この人の多い場所に居るんですか? ってのは気になる。 わざわざ人の多い所に出ている人は、自分に対する言い訳として「周りもそんなもんですよ?」って言っている ようにも聞こえます。恐らくダメなのはこういう所なのだろうと思います。 自分事になっていないとも言える訳ですが、政治だとかリーダーシップだとか 自分(達)の事を除外した所に要因があるという 考え方では結局ダメだったでしょ?と思います。

先日の org-table のfaceに等幅フォントを指定する件。 日本語文字を含んだ場合に我が家の設定ではうまくいかない場合がありました。 具体的には日本語文字のフォントを変更すると org-tableの日本語文字も連動して変わってしまうという感じ。 org-table に含まれる文字のフォントは変わって欲しくないのが期待値です。 フォントフォールバックに頼ればそれとなくうまくいくのですが、 とても遅くなる場合があるのと、制御できない為に「それじゃないフォント」で表示される事があるのが個人的にイマイチでした。 結局、フォントセットを使う感じにしてみたり。org-tableのfaceに関する部分は以下のような感じ。

(setq myFixedPitchFont "MeiryoKe_Console")

(set-face-attribute 'fixed-pitch nil :family myFixedPitchFont)
(create-fontset-from-ascii-font myFixedPitchFont nil "fixed")
(set-fontset-font   "fontset-fixed" 'japanese-jisx0208 (font-spec :family myFixedPitchFont))
(set-face-attribute 'fixed-pitch nil :fontset "fontset-fixed")

; 以下 (require 'org) の後

(set-face-attribute 'org-table  nil :family myFixedPitchFont :weight 'normal :slant 'normal :underline nil)
(set-face-attribute 'org-table  nil :fontset "fontset-fixed" :weight 'normal :slant 'normal :underline nil)

上記を含みつつ、テーブルに日本語文字を入れてみた結果が以下。

org-tableのfaceに等幅フォントを指定 その2

普段使いのフォントが 等幅の MeiryoKe_Console なので org-table が崩れる事は無いのですが、 こういう事もできますよという例って事で🙂

2021/08/21

AM中に起床。

東京都コロナ感染者。新規は 5074人。ダメだ。

LDCコンパイラを1.27.1(dmd 2.097.2相当)に、DMDコンパイラを2.097.2にアップデートしてみたり。 さておき、2.097.1の時にも思ったのですがDMDの方でバージョン表示すると、

$ dmd --version
DMD32 D Compiler v2.097.2-dirty
Copyright (C) 1999-2021 by The D Language Foundation, All Rights Reserved written by Walter Bright

と表示されるのですが「dirty」ってなんだ?というのがちょっと気になってます。

そういえば Emacsでプロポーショナルフォントを使った時のタブ文字の幅って何を基準にしているのだろう? と思ったり。少なくとも半角空白文字では無さそう。 Web検索してみるとタブ幅の設定について色々ある事を知りました(Emacs講座 -第8回- タブ幅)。 ほぅ.....

org-modeの org-table は等幅フォント前提で半角空白文字やハイフンを使って整形されるので プロポーショナルフォントを使うとほぼ100% 表示が崩れます。 で、ふと思いついたのが「org-tableの faceだけ等幅フォントを指定すれば良いんじゃね?」という事。 以下のようなのを.emacsに記してみたり。

(setq myFixedPitchFont "MeiryoKe_Console")
(set-face-attribute 'org-table  nil :family myFixedPitchFont :weight 'normal :slant 'normal :underline nil)

この例では以下のようにorg-tableは MeiryoKe_Console で表示されるようになりました。

org-tableのfaceに等幅フォントを指定

2021/08/20

テレワーク。早めに終了。

東京都コロナ感染者。新規は 5405人。ダメだ。
ロックダウン。欧米では行われていましたが、例えばイギリスではやってると言われていた割には効果が全然出ない事があったと 思います(以前の日記)。特にイギリスは物理的にも島国なのに。 理論上、人同士の接触が無くなれば感染しなくなる(家族ならばクリーンな人の集まり、もしくはクラスター感染となっても 外に漏れない)訳ですから、せいぜい2週間もすれば新規感染者数はゼロ近くになるハズです。でもその結果が全然出てないようでした。 原因は判っているのだろうか? もし「正しいロックダウンのやり方」というのがあるのならば、 そこは押さえておかないと失敗するだろうと思われます。

そういえば、医学的または科学的な理由によりワクチン接種できないって具体的にどういう例があるのだろう? 厚生労働省の 「新型コロナワクチンQ&A」というページがあって ワクチン接種の成分に対して重度の過敏症(いわゆるアレルギー) ってのは まぁ解りますが、どれくらいの人が該当するのかしら? ほぼ居ない感じだとは思いますけど。一応 接種券にはワクチンの説明書が同封されていて成分表も記されていますが、 これを見て該当するか否かを判断できるのは、自身のアレルギーを把握してる人だけだろうとは思いました。 それ以外は医学的でも科学的でもない理由なのだろうと思います。

Web巡回して終了。

2021/08/19

テレワーク。早めに終了。

東京都コロナ感染者。新規は 5534人。隣接県もまだダメだ。
それにしても新規感染者数が減らないねぇ。8月3日に(明には言ってませんが実質) 「感染したら死ぬと意識しろ」って 割と分かりやすい宣告をされたと思っているのですが、今時点でも感染している人ってのは どういう生活様式のどういう意識の人なのか? やっぱり判りません。 以前も記しましたが、入院できないみたいな報道を見る度に 「この人の感染原因はなんだったのだろう?」に対するコメントは無いなぁ?と思います。

ちょろり調べ事。

2021/08/18

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 5386人。全国もダメだ。
感染者一人でニュージーランド全土でロックダウン。これを書いている時点では5人くらいになっているようですが それはさておき、 人口は約500万人(参考Wikipedia) で最大都市のオークランドの人口密度は2719人/km^2(参考Wikipedia)だそうです。 以前調べた東京都の特別区(いわゆる23区)の人口は 約960万人で人口密度は約15000人/km^2でした。人口密度に対して対策実施の難易度は急激に上がるのでは ないかと考えられます。単純に「マネすりゃいいじゃん」と言う人はスケールの違いを把握せずに言ってると毎度思うのですが、 誰も突っ込まないなぁとも毎度思います。

ちょろり調べ事。

2021/08/17

テレワーク。早めに終了。

東京都コロナ感染者。新規は 4377人。ダメだ。
緊急事態宣言延長。休業要請を出したりできるので延長自体に意味はあるとは思います。 しかし、今の感染拡大要因である日本国民の行動に対しては何のペナルティも制限力もありません。 各自の気持ちから来る言い分よりも、科学(というかアルゴリズム)に基づいた 感染拡大の抑制に 効果のある行動を取る事を 全員が最優先にすれば、そもそも今のような状況にはならないと思います。

今の状況を例えると「やらなくては終わらない宿題をやらない子供」と「宿題ヤレって言っている親」 みたいな関係になっているように思えます。結局、自分がやらないと終わる訳ないのに、 やらずに後で自分に返ってくるというパターン。それに加えて何やら「親の教育方法が悪い」みたいな 事を言う謎の人物が居るという感じ。 子供==日本国民、親==政府、謎の人物==マスコミやコメンテーター という感じだと思ってます。特に謎の人物の発言は「もっともらしい事を言っているようで、 よく聞くと具体的で実現可能な方法を教授している訳ではない」という所がポイントになるかと思います。 にも関わらず、子供は「(よく解ってないけど自分の事は棚に上げて) そうだそうだ」って言っている状況。 では、既に前述のような状況になっているとして、親の立場で 今からどうやれば子供に宿題をやらせられるか? 必ずうまくいく方法を答えよ。という問題。 子供が「宿題はやるものです」と理解して行動していればそもそも問題にはなり得ないですが。

Web巡回して終了。

2021/08/16

テレワーク。早めに終了。

東京都コロナ感染者。新規は 2962人。月曜だけどダメだ。隣接県もダメだ。

ちょろりコーディング。

2021/08/15

AM中に起床。

掃除したり洗濯したり。

東京都コロナ感染者。新規は 4295人。ダメだな。

wrapped_convert。マイナーな更新を行いました (wrapped_convert_210815b.tar.xz)。
JXRおよびBPGにおいてデコーダーとエンコーダーの存在チェックを行って、「-list format」 オプション指定時の Read/Writeフラグに反映するようにしてみました。 デコーダーが存在しない場合は Emacsでは Fundamental モードで開くようになります。 因みに、lisp/image/image-converter.el を使った外部コンバーターによる画像表示では、 (ImageMagickの場合)「convert -list format」で変換可能なフォーマットをチェックして このリストに無いフォーマットは表示できないという仕組みになっているようです。 素のconvertコマンドでは 何故かJXRもBPGもリストに出てこないので、 どうやってもEmacsでは「表示できないという認識」になってしまうようです。 ただし JXRとBPGは標準入力を受け付けられない問題もあるので「-list format」だけの問題では無かったですが😓
ところで、色々な所でチェックが入っている為か、うまく画像表示できない場合に(裏を返せば上手く表示できる場合でも) 何が原因なのか判らない(例えば、画像と認識する拡張子を リスト変数 image-file-name-extensions に 追加しなくてはならないのか、auto-mode-alist に追加しなくてはならないのか、 変数 image-use-external-converter がtになっていないのか、 convertコマンド自体が対応していないフォーマットなのか、今回のJXRやBPGのように対応していても それがEmacsで判るようになっていないのか、デコーダーのコマンドが無いからなのか、 ワーニングメッセージが邪魔をして変換後の画像データが壊れているのか、 convertコマンドの対応の問題なのか(今回だとJXRとBPGは標準入力からの受付けは失敗する)、 これら以外の理由があるのか.....)のは面倒臭いかもなぁとは思いました。

2021/08/14

AM中に起床。

東京都コロナ感染者。新規は 5094人。ダメだな。隣接県も全然ダメだ。
今新規に感染している人はどういう生活様式の人なんだ? そろそろ「経路不明の割合」は「嘘の言い訳をする人の割合」として反映されているんじゃないか? と勘ぐってしまいます。

先日のスクリプト(wrapped_convert)。もう少し手持ちのファイルでテストしていたらいくつか表示に 失敗するケースがありました。
一つは以前BMPファイルでメッセージが出る件の別のケース。 正確な所は判りませんがどうやら 終了コードは0だけどメッセージがSTDERRに出る場合があるようなのですが、 そのメッセージ文字列がSTDOUTと混ざってEmacsのバッファ上で不当なPNGデータになっているものと推測します。 BMPの件もあるし表示できるのが優先であるべきと考えて STDERRを封印するという強硬手段で対応😓。 もしconvertコマンド本体で前述対処を行うのは「Emacsの為だけに?」と思う所ですが、 この橋渡しスクリプトでやる分には躊躇無しという事で😅
もう一つは空白文字を含んだファイル名が指定された場合に convertコマンドに渡した引数が壊れるという あるある😓。 コマンドラインシェルをメインで使っていると 空白文字を含んだファイル名は 指定する事自体が 面倒臭いので事実上作る事も無いのですが、Windowsだと空白文字もマルチバイト文字も節操無く使ってくるので 油断してるとハメられます。修行が足りません。
という訳でアップデート版を置いてみます (wrapped_convert_210814a.tar.xz)。御参考まで。

そういえば今回のスクリプトを作成する上で、 以前ビルドして入れっぱなしのまま殆ど使う事の無かった libsixelのimg2sixelコマンドが 非常に重宝しました。

wrapped_convert。すんません、バグらかしてました。修正版を置きます (wrapped_convert_210815a.tar.xz)。 指定した引数をぶっ壊してconvertコマンドに渡してました。それに起因して Emacsが JXRとBPGを読み込み可能なファイルと認識しなくなっていました。修行が足りません。

2021/08/13

テレワーク。早めに終了。

東京都コロナ感染者。新規は 5773人。全然ダメだな。 今の状況に対して世の中は一体どういう意識なんだ?今だに行動が変わらないとかバカなのか?

以前調べたJXRとBPGファイルをEmacsで表示する件の実験結果。 --without-imagemagickな Emacsで外部コマンドでImageMagickを使用して画像表示する際、 JXRとBPGがうまく表示できないのをどうにかしてみるスクリプトを作ってみました (wrapped_convert_210813a.tar.xz)。 perlスクリプトです。Cygwin32と パッケージ版 emacs-w32 と emacs-X11 を使って確認しました。 ImageMagickのconvertコマンドの他に、実行にperlが必要なのとスクリプトの中からcatコマンドとかを 子プロセス実行するので、UNIXライクな環境での使用を想定しています。スクリプトファイルの 始めの方に使い方を記してあります。 極めて特殊な用途への対応ですが、お役に立てるようでしたら幸いです。

2021/08/12

テレワーク。早めに終了。

東京都コロナ感染者。新規は 4989人。ダメだな。
災害レベル。人災だがな。1年以上前から感染拡大は人災だと思ってますが。

実験。色々突っかかり所はあったけどうまくいったような気が。

2021/08/11

テレワーク。早めに終了。

東京都コロナ感染者。新規は 4200人。ダメだな。全国的にも。
TV報道などで自宅療養の様子が映っている事があります。感染したら大変っていう事が 言いたいのだろうとは思うものの、個人的には「感染原因はなんだったのだろう?」と 毎度思いながら見ています。理由によっては心象は大分違うだろうなと想像します。 1年以上前から思っている事ですが、 感染者を腫れ物扱いし過ぎに思えます。

ちょろり実験の仕込み。

2021/08/10

テレワーク。早めに終了。

東京都コロナ感染者。新規は 2612人。
それにしても医療従事者の人達は、予防する方法があるにもかかわらず今感染する人達をどう思っているのだろう? TVに出ている医療従事者の人達は言葉を選ぶ為か、話を聞いてても「どうかしてるよ....神かよ」という感じの事を言うのですが、 もし「医療従事者が"死ねばいいのにと思う感染理由"ベスト100」に答えてもらえるとしたら どういうものがあるだろう?と思います。だって、若い医療従事者の人達だって居る訳じゃん? それが同じ年代の くだらない理由で感染した奴に 病床が足りないとか救急車を呼んでも来ないとか救急車に乗っても収容先が無いとか言われて 「うるせーーっ!」ってならないのは逆におかしいと感じます。

ImageMagickで外部コマンドを使って画像読み込みや書き込みを行う仕組みがどうなっているのか調べてみたり。 MagickCore/delegate.c ってコードにXML風の記述でコマンド列をハードコーディングしているようです。 この中でJXRの読み込み(デコード)を行う際、pnmファイルにセーブしているようだったり。 ん?ヘルプではbmpかtifにしか変換できないように記されているのですが?と思ってjxrlibのコードを調べてみると なんかイケそうで、実際にppmなファイル名を指定するとデコードもエンコードもイケました。 ほぅ........って、ImageMagickを調べる手が止まる😓

Web散策していてたまたま見つけた 動画(Windows Task Manager Runs Doom (896 cores))。 ヤバっ!何これ!?

2021/08/09

AM中に起床。

掃除したり。

東京都コロナ感染者。新規は 2884人。
それにしてもコロナの報道の類では「感染したらどうするんだ、重症化したらどうするんだ」しか言わないなぁ? 感染予防を徹底する旨は 「感染予防を徹底する事が一番なのですが、自宅療養者数が....。しかし、感染予防を徹底する事が一番の対策です。」 というように感染したらどうしようの前置きと後置きで必ず予防の徹底を言うようにした方が良いんじゃないか? あと、ここ二週間とこの先二週間で感染した人はどう考えても無防備に動いたか、どんくさい感染対策でうつしたもしくはうつされたという 事だろうと考えます。くだらない理由で感染しているようだったら吊るし上げた方が良いんじゃないか? とは思います。どうにも、コメンテーターの言い分を聞いていると、 病床が足りない話からは必ず政府の対応批判に持っていく展開になるように思えるのですが、 人出が多いとかには何も言いません。下手したら仕方ないくらいに言う事があります。 感染拡大の直接の原因である「人」に対して何か言う事を意図的に避けているように感じます。

久しぶりにPS4を立ち上げたらコントローラーがハングった状態(正確にはペアリングを繰り返している?)になったり。 どうすりゃ復帰できるんだっけ?と調べて、コントローラーのリセットボタン(楊枝で押すタイプ)を押す方法 で復帰。 そういや以前CC2のWindowsアップデートで妙になった のですが、完全なPOFFを行わないとうまく復帰しなかった事がありました。 最近のゲーム機のコントローラーも取り外し不可能な電池で動いているので、ハングった時の対処は 面倒臭いなぁ?と思ったりも。電源プラグや電池の抜き挿しによる復帰は 単純で確実な方法だと改めて感じます。

2021/08/08

AM中に起床。

東京都コロナ感染者。新規は 4066人。

オリンピック閉会。まだパラの方があるけどね。

emacs-X11で表示できない画像ファイルがある件。 BMPファイルがダメなのは 標準の lisp/image.el 中の image-type-file-name-regexps というリスト変数に .bmpが含まれていて、これを元に?外部コマンドに頼らずに表示可能だと判断したから? 表示しようとするも表示不可能だった?という感じみたい。.bmpの要素を削除すれば外部コマンド経由で表示できるようになりました。 てかなんで .bmpは自力でイケるって事にしているんだ?とは思ったりも。 少しgitで歴史探索をしてみたところ約16年前に 今の 変数 image-type-file-name-regexps と その初期値を与えるコードが追加されたようですが、その時点で .bmp は含まれていて今に至るようです。

EmacsでのBMP画像ファイルの表示について少し調べてみたり。 こちらのサイトのメモによると、 Meadowでは直接BMPイメージを扱えていたようです。 記憶には無かったのですが、手持ちのMeadow3バイナリで試してみると確かにBMPファイルは直接表示できます。 また、メモのようにRLE圧縮されたBMPは表示できないようです。 さておき、Meadowでしかできない事なので本家Emacsの lisp/image.el の中の image-type-file-name-regexps に入っているのは おかしくね? ってのは思ったりも。そんな訳で .emacsで以下のように

(setq image-type-file-name-regexps
      '(("\\.png\\'" . png)
        ("\\.gif\\'" . gif)
        ("\\.jpe?g\\'" . jpeg)
;        ("\\.bmp\\'" . bmp)
        ("\\.xpm\\'" . xpm)
        ("\\.pbm\\'" . pbm)
        ("\\.xbm\\'" . xbm)
        ("\\.ps\\'" . postscript)
        ("\\.tiff?\\'" . tiff)
        ("\\.svgz?\\'" . svg)
        ))

常に bmpを外した image-type-file-name-regexps を上書きするという暴挙に出てみました😅。ひとまず --without-imagemagick な emacs-X11 でBMPファイルだけ 外部コマンド経由での表示が阻まれる問題は 解消しました。ただ、RLE圧縮されたBMPは表示に失敗するようです。一応PNG変換はできているようですが 何やらconvertコマンドがエラーを検出するようです。

$ convert 8bit_palette_RLE.bmp png:- > /dev/null ; echo $?
convert: length and filesize do not match `8bit_palette_RLE.bmp' @ error/bmp.c/ReadBMPImage/845.
1

なんかうまくいかないなぁ?🤔
ImageMagickのソースコードを見てみたところ、どうやら「length and filesize do not match」のメッセージを エラーとして扱わないようにできるっぽい事が判ったり。以下のようにすれば良い模様。

$ convert -define bmp:ignore-filesize=1 8bit_palette_RLE.bmp png:- > /dev/null ; echo $?
0

という訳で、.emacsに以下も追加。

(setq image-converter--converters
      '((graphicsmagick :command ("gm" "convert") :probe ("-list" "format"))
        (ffmpeg :command "ffmpeg" :probe "-decoders")
        (imagemagick :command ("convert" "-define" "bmp:ignore-filesize=1") :probe ("-list" "format"))))

一応BMPの問題点はオールクリア。しかし色々と闇が深すぎる。以前にも記しましたが実際にはできるのに それがすぐに判らないと、できない判定される可能性が高いのは勿体ない話です。

その後、JXRとBPGの表示ができないのは多分こうじゃないか?というのが判ったような。 --with-imagemagick な emacs-w32では、実はJXRもBPGも外部コマンドによる表示ではなかった模様。 例えば

(add-to-list 'auto-mode-alist '("\\.bpg$"  . image-mode))

を追加したのですが、どうやらファイルの拡張子からimage-modeを起動するのを認識するだけで、 実際の表示は組み込まれたImageMagickで行われていた(正確にはライブラリの中でデコーダを外部起動している?)ようです。 この為、mode-lineには「Image[imagemagick]」と表示されていました。 で、ここからは推測になりますが、 --without-imagemagick な emacs-X11では、ファイル拡張子からimage-modeを起動する のは同じですが、その後のconvertコマンドのJXRとBPGへの対応の都合で失敗しているんじゃないかと思われます。 具体的には、Emacsで外部コマンドで表示する際、画像ファイルをバッファに読み込んだ後、 バッファの内容をパイプ渡しによって、例えばJXRの場合「 convert jxr:- png:- 」の様に標準入力から読み込み、 PNGに変換したものを標準出力から得るような動きを行っているようです。 しかし、convertコマンドでのJXRとBPGの対応は標準入力をサポートできていないようです。 例えば「convert test.bpg png:-」はイケますが「cat test.bpg | convert bpg:- png:-」はイケません。 これが外部コマンドでJXRとBPGを表示できない直接の原因になっているんじゃないかと推測します。 因みに、外部コマンドで表示できた場合はmode-lineに「Image[image-convert]」と表示されるようです。
という訳で、なんかやれば対応できるだろうとは思いますが、emacs-X11でも --with-imagemagick で ビルドすればイケるので「それじゃダメなの?」とは思うし思われるかも知れません。 因みに、jp2, heic, webp 辺りは外部コマンド表示でもイケるので、まぁ困る事は無いかな?という気はします。 個人的な見解です。

2021/08/07

昼過ぎ起床。寝すぎ。

東京都コロナ感染者。新規は 4566人。
そういや新規感染者数と重傷者数について。なんかミスリードしてたかも?と思ったりも。 「新規感染者数は20~30代が多い」って話と「重傷者数は60代以上が多い」がごちゃまぜになっていると、 何が多いって話をしていたのかよく判らんなぁ?という気がしてきました。 「ワクチン接種が進んで高齢者の重傷者数は減っている」は事実かも知れませんが、 高齢者の新規感染者数は元々多くは無かったのかも? もし「高齢者がワクチン接種を行う事で、ワクチン接種をしていない若者と同じくらいに"重症化率が下がるだけ"」 だと考えれば、 20代~30代の新規感染者数の多いのは大分前から変わらないのかも。 また、「ワクチン接種しててもデルタ株には感染するもの」だとすれば、20~30代のワクチン接種が進んだとしても、 感染予防はこれまで通りに続けなければ やっぱり感染拡大してしまう(ただし重症化する割合は減るだろう) という事になると思われます。 ワクチン接種後、試しに一瞬だけ感染予防の手を緩めてみた(マスクしなくて良いとか)その結果が、イギリスやフランス、北米などで 再拡大している(た)状況なのだろうと思われます。
東京都福祉保健局のページに 「最新のモニタリング項目の分析・総括コメントについて」 というページがありました。この中に「【感染状況】①-2 新規陽性者数(年代別)」という割合で示したグラフがありました。 割合なので数の方は判りません。この為、「高齢者の新規感染者数が減って、他が相対的に増えている」のか 「20代の新規感染者数が増えて、他が相対的に減っている」のか「その両方」なのかは区別が付きません。 ただ、ワクチン接種が本格的に始まったのは5月に入ってからの話だった点を考えると、 6月に入ってから60代以上の新規感染者数の割合が減っている事はワクチン接種との因果関係があるようには見えるように思います。 しかしながら、元々60代以上の新規感染者は全体の割合で見ても少なかった所を見ると、 「高齢者は重傷化しやすい」という所から高齢者も新規感染者数がそれなりの人数は居るかのようなバイアスがかかっていたかも知れません。

何気にemacs-X11で最近追加した画像フォーマットのファイル表示を試してみた所、なんかうまく表示できない場合があったり。 Cygwinパッケージの emacs-X11はImageMagickが有効になっていないようなので、ネイティブ表示できない画像ファイルは 全て外部コンバーターで表示されると思ったのですが、何故かコンバーターを通して表示できるものと表示できないものとがあるっぽい。 webpやheicはうまく表示されるのに、jxrやbpgがダメなのに加えてbmpもダメ。少なくとも野良ビルドした emacs-w32ではjxrやbpgは外部コンバーターを通して表示しているので基本的にはemacs-X11でも同じだと思うのですが....なんでだ?🤔

2021/08/06

テレワーク。早めに終了。

東京都コロナ感染者。新規は 4515人。隣接県もダメだ。てか全国的にダメだ。

スポーツクライミング女子。ボルダリング。こんなの無理だろと思ったら一撃って。スゴ。 ところで、ボルダリングは綱無しで登ってましたが、完登するとまぁまぁな高さがあるように思いました。 ちょうど見てなかったのですが、あれ、どうやって降りたんだろう?🤔

2021/08/05

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 5042人。ダメだねぇ。

Web巡回して終了。

2021/08/04

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 4166人。
自宅療養中に重症化したらどうするんだ?って事ばかり。そもそも感染しなければ関係無い話なのに。 これまでのフンワリした傾向から思うに、感染した人は「感染したらどうしよう?」って思って行動していたかは怪しいと勘ぐっています。 無防備なまま動いて感染した例ばっかりじゃないの? という前提で思い直してみると、今感染していない人で重症化したらどうするんだって 言っている人は「甘い行動で感染する予定でもあるのか?」と思えてきます。 さておき、ニュースとかで 最後に「感染予防を徹底しましょう」とか言うかな?と思って見てるけど言わないなぁ? そういうところ。ダメだわ...と感じます。

そういや Emacs-28.0.50。27.1が出るより前から何やらWindowsのバイナリが存在しているようだったり、 27じゃなくて28?って思う事があったのですが、今のところ特に28.0.50のソースコードがアーカイブになっている訳ではありません。 どうやらGitリポジトリの master のバージョンが 28.0.50になっているようで、現時点では 28.0.50は masterブランチと同義だと 勝手に理解してみました。だとすると、28.0.50と言っても clone/pull した時期によって違うのかもなぁ?とは思ったりも。 さておき、 Emacs28.1のリリーススケジュールに触れた 投稿がされてるようです。 順調に行けば9月に 28のブランチが生成されるようなので、そこから 28.0.50、28.0.90、....という感じで ソースアーカイブが何度かリリースされていくと思われます。今までの感じだと早くて 28.1のリリースは来年の3月かな?と予想しています。

POV-Ray。今年の7月29日で 30周年だったのか。3.8.0のbeta1が来ている模様。 因みに 3.7がリリースされたのは2013年11月でした。 3.8.0のリリースを楽しみにしたいところ。

2021/08/03

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 3709人。
中等症以下は自宅療養。 因みに症状の医師と一般人との意識ギャップの話は 以前知った通り。 中等症は更に軽症寄りの1と重症寄りの2があって、最悪「まだ意識はあるが下手すると死ぬ」という認識。 というのを踏まえると、大分強い措置に出たなという感想。でもいいんじゃないですか? 短絡的に解釈されて「医療崩壊しているのか?」とか突っ込まれるのだろうと思いますが、 そういう事ではなくて「感染したら死ぬという意識で生活しろ」という事を突きつけられているのだと思います。 「感染したらどうするんだ?」の前に「感染しないようにするにはどうすれば良いんだ?」を考えて行動しろって 言われているのだと思えば、別に変な事を言っている気はしません。 「お願いする事しか出来ない」のが判っていて法的罰則が無いのをいい事にナメてたでしょ? 「文句はやる事やってから言え。でないと死ぬよ? やる事やってれば文句を言う事にはならなかったハズだがな」 というのが今の状況に思えます。 「感染したら死ぬって意識」については以前 記した事がありました。具体的にどうやれば多くの人がそういう意識を持てるかは判っていませんでしたけど。

何気に「走幅跳」って今どれくらい跳べるものなの?と思って調べてみたら 走幅跳のWikipediaに 世界歴代の記録が記されていたり。意外にも1位のマイク・パウエルの出した8m95は1991年8月30日の話で 30年間更新されていないようです。当時の記録としても凄いのは判るのですが、記録更新されない時間が経つほどに 尋常じゃ無い感が増していると改めて思ったりも。

2021/08/02

テレワーク。早めに終了。

東京都コロナ感染者。新規は 2195人。神奈川がダメだな。

BPG画像ファイルのエンコーダー。Makefileを見てみるとx265のエンコーダーを使用するような感じみたいなのですが、 これをコメントアウトして、その下の行に記されていたJCTVC codeってのを使うようにしてみたところビルドに成功しました。 「(best quality but slow)」とコメントに記されていたのですが H.265は ISO/IECのMPEGとITU-TのVCEGによる研究開発チームJCT-VC (Joint Collaborative Team on Video Coding) によって提案 されたらしいので、このBPGのソースコード内ではx265とjctvcは単に実装の違いか?と思ったりも。詳しい事はよく判りません。

2021/08/01

AM中に起床。

掃除したり洗濯したり。

東京都コロナ感染者。新規は 3058人。
どうも今新規感染する人は防御意識が猛烈に低いんじゃないかという疑惑 (参考)。 ここでは大分前から 感染経路不明については「大概気を付けてる中で変わった事をした心当たりくらいあるだろ?」と思っているのですが、 やっぱり「心当たりがあり過ぎて判らない」だけという事なんじゃないか?と勘ぐらざるを得ません。 ここでは何度も記しますが「今感染する奴はアホ」って風潮を植え付けた方が良いんじゃないかと思います。 あと、忘れられてそうなのは「ネットで情報を得られる」は「自ら取りに行けば」という条件がある点。 「情報はネットで得られるのでTVは見ません」って今の若者っぽさを醸し出そうとしている人は隠れ情報弱者の可能性を拭えません。 色眼鏡を通した個人的な感想です。

大分前BPGって画像ファイルフォーマットを 知ったのですが、 その後どうにか0.9.6をコンパイルしてそのままほったらかしになってました。 で、こちらも JXRと同じく ImageMagick 7ではエンコーダ/デコーダを外部コマンドとして実行する事で間接的なサポートが行われている のを知りました。2018年4月12日付けの0.9.8が最新のリリースのようですが、Cygwin32でビルドしてみたところ ズッコケるようだったり。bpgdecの方はビルドできたのですが、bpgencの方はビルドできず。 0.9.6でどうやってビルドしたかを思い出せず😅。なんかx86_64専用になっているような気も。 ひとまずビルドできたデコーダーだけを /usr/local/bin とかに突っ込んで、.emacsに

(add-to-list 'auto-mode-alist '("\\.bpg$"  . image-mode))
(setq image-converter 'imagemagick)
(setq image-use-external-converter t)

を記して表示は可能となりました🙂


TOP PREV