昔の最近の出来事(2022.08)

2022/08/31

テレワーク。少し遅めに終了。

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

「メルカトル図法を実際の面積に直してみた」というTweet。 ロシア、グリーンランド、カナダ(クイーン・エリザベス諸島)、ノルウェー、スウェーデン、フィンランドの 面積が大分小さいのを再認識してしまいます。いや、メルカトル図法が大きく描きすぎているだけか。

2022/08/30

テレワーク。早くもなく遅くもなく終了。

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

乗り遅れてしまいましたが8月28日付けでSAI2の新しいのが出てました。お疲れ様です。今回はバグ修正の模様。

調べ事。わかったようなそうでもないような。

2022/08/29

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

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

調べ事をして終了。

2022/08/28

AM中に起床。

掃除したり洗濯したり。

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

罫線文字の表示。本 日記ページのcharsetをutf-8にするにあたって罫線はなるだけ使わないようにしています。 切り替える前にIEではcharsetがutf-8の場合は言語セットにラテン語ベースが選ばれるのですが、 使用するフォントが Times New Roman と Courier New の為、罫線が半角でレンダリングされてました。 フォントをMSゴシックとかに変更すれば全角罫線でレンダリングされるのですが、辺境のWebページを見る為にブラウザの設定を 変える手間をかける訳がないと思いますので、罫線はなるだけ使わないとしています。
そういや、IEのWindows10でのサポートが切れた現在、Edge(Chromium Edge)とかChromeとかでは罫線表示ってどうなるんだっけ? と思ってみてみました。ChromeやFireFoxの方はMSゴシックっぽい。Edgeの方はフォント設定自体が無いようですが多分MSゴシックの模様。 そんな感じなので、全角罫線で表示されるつもりで使っても イケるっちゃいけるかな?と思ったりも。

┏━━━━━━━┯━━━━━┯━━━━━━━┓
┃あいうえお ん│0123456789│春夏秋冬猪鹿蝶┃
┠───────┼─────┼───────┨
┃/|\_*-+=(){}[]│abcdefghij│〇×△□・☆※┃
┗━━━━━━━┷━━━━━┷━━━━━━━┛

罫線がどのようにレンダリングされるかはフォントによります。 Emacsで全角罫線として編集するのであれば全角表示可能なフォントを設定する必要があります。 いくつか等幅の日本語フォントで表示を確認してみました。

emacs-w32 罫線表示テスト

罫線はいずれも全角でレンダリングされていますが、「PlemolJP HS Text」と「M+ 1m」は「×」の文字が半角で レンダリングされる為、枠がズレるという結果になってます。 「M+ 1m」での「×」は M+ 1m のグリフがそもそも半角になっているようです。 「PlemolJP HS Text」での「×」は何故か「Frank Ruhl Hofshi」というフォントにフォールバックされています。 全角の「×」グリフ自体は存在しているようなのですが謎。他のフォントではそういう事にならないので、 Emacsの設定でこんな事が起こるんだっけ?という気もしますが....🤔。 さておき、結局 見た目じゃない理由で常用できない事もあるので、フォントを変えるって簡単じゃないなぁと思います。

emacs-gtkの方でも試してみたところ、emacs-w32とは違うレンダリング結果になるようです。え~?🤔

emacs-gtk 罫線表示テスト

emacs-gtkの方では「PlemolJP HS Text」での「×」はフォントフォールバックされずに「PlemolJP HS Text」のグリフ(全角)が 使用されています。が、やっぱり幅がズレてます。HackGenもズレ方が同じ所を見ると共通の何かがあるのかも? (PlemolJPHackGenは 作者様が同じという共通点はありますけど)。

2022/08/27

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

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

ASCIIコード 0x5cの表示と読み方。
この文字はフォントによって「¥マーク」か「\(バックスラッシュ)」かのどちらかで表示されます。 日本語フォントだと¥マークで、非日本語フォントだとバックスラッシュで表示される場合が多いかと思います。 個人的には 本物お仕事で使っていたX-Windowがバックスラッシュ表示だったのと、 昔使っていたX68kのフォントもバックスラッシュ表示の物を使っていた(参考)事もあって、 バックスラッシュ表示の方に馴染んでいました。2000年以降、Windowsを使う事がメインになると 等幅の日本語フォントに「MSゴシック」を 使う場面が圧倒的に多くなり、Meadowでも「MSゴシック」を使っていたので、¥マーク表示でも まぁいいかくらいの感じだったと思います。 しかし、Emacsの artist-mode を知って以降は バックスラッシュで表示される等幅フォントじゃないと面倒臭いかもなぁとは思うようになりました。 後に MeiryoKeを知って以降はEmacsでは MeiryoKe_Consoleを使うようになり、 バックスラッシュ表示で今に至る感じです。 そんな訳で Windows標準フォントには「等幅の日本語フォントで ASCIIコード0x5cがバックスラッシュ表示となるもの」は無い (今後も出てくる事は恐らく無い)ので、この条件を満たすフォントを探して使用するか、 Emacsだと日本語文字と英数字とで異なるフォントの混在使用で頑張るしかないのかなと思います。
ところで、バックスラッシュで表示されていても、読みの方は「えん」って読んでしまいます。 入力するのに日本語キーボードで「¥」と記されたキーを押す必要があるのと、音声で会話をする場合に Windowsでは一般的に ¥で表示されている場合がほとんどなので、相手が「は?バックスラッシュ?」ってならないように 自然と脳内変換するという謎の能力が備わったものと思います😓

2022/08/26

テレワーク。早くもなく遅くもなく終了。

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

あまりの眠さに急速停止。

2022/08/25

テレワーク。早くもなく遅くもなく終了。

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

Web巡回して終了。

2022/08/24

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

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

調べ事をして終了。

2022/08/23

テレワーク。早くもなく遅くもなく。

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

そういえば、D言語のフォーラムで 「Please release me」っていう スレッドがありました。 https://dlang.org/サイトをメンテする人が居ないって事なのか?

2022/08/22

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

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

調べ事をして終了。

2022/08/21

AM中に起床。

掃除したり洗濯したり。

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

全然関係無い流れで「Tektronix 4052 Fast Graphics demo」という 動画を知ったり。Tektronix 4052 自体は1970年代後半に発売されたデスクトップコンピュータらしいのですが (参考Wikipedia)、コンピュータ本体そのものよりも ベクタースキャンのストレージチューブディスプレイで表示されているってのが見どころなのかと思います。 ベクタースキャンディスプレイの実機は見たことが無いのですが、 ベクタースキャンのWikipedia によると、一定時間に再描画するものと、蓄電管になっているものとがあり、Tektronix 4052は後者という事みたいです。 蓄電の要素がメモリのような役割となっているので、そこから ストレージチュープ(記憶管) という事なのだろうと思われます。 強い光の点が線を描いていく様が「演出」ではなく実際にそうなっているのが 面白いと思いました。

光速船。単語として聞いたことはあったのですが、ゲームのタイトル名なのかと思ってました😅。 ベクタースキャンを調べた流れからゲーム機だったというのを知りました(参考Wikipedia)。 元々は1982年にアメリカのGeneral Consumer Electronics(GCE)社が「Vectrex」として発売したものを、 1983年7月にバンダイが日本国内用に発売したゲーム機なのだそうな。1983年7月と言えば ファミリーコンピュータ(Wikipedia)と 同世代です。ほぅ....。それにしても、なぜ「光速船」なんだ?とは思ったりも。 ゲームの「FLATOUT」が日本では「レーシングゲーム「注意!!!!」」ってなってる (過去の日記)くらいの違和感があります。

2022/08/20

AM中に起床。

東京都コロナ感染者。新規は 25277人。
感染者の全数把握。医療機関で感染者情報の入力作業が負荷になるって本当かなぁ?診る時に入れるだけなんじゃないの? 現在は7項目の情報を入れるようになっているみたいですが(氏名とか住所とかほぼ本人確認だけの情報みたい。 ワクチン接種回数などは含まれていないので削り過ぎには思えます)、どれだけ面倒で どういう感じで入力しているのかじっくり見てみたい気も。 約2年前に感染者数報告をFAXで行っている話はありましたが、 今年の2月時点でもまだ手書きでFAXを使っている話もあって、 結局のところICTスキルの問題なのか?と思わざるを得ません。 本当に負荷になっているとして、仮にそこを省いた所で 大した余裕が生まれるとは思えませんが。

全然関係無い流れから、DuckstationっていうPlayStation1のエミュレーターで グランツーリスモ2 を動かした 動画を知ったり。 後半に 4K60fpsとエンハンス無しとの同時表示映像があるのですが、3Dモデルのテクスチャ解像度が高すぎじゃね? と思ったり。この動画を見るまでは、昔の解像度に合わせて作られたゲームをエミュレーターで高解像度化した所で 2D表示やテクスチャの解像度が上がる訳ではないので大した意味は無く むしろアラが目立つだけと思っていたのですが、 そうじゃ無いのもあるんだなぁと思い直した次第です。稀な例なのかも知れませんけど。

先日のewwのパッチ。content-typeが最終的にどれでもない場合は「raw-text」 で表示するようにしてみてたのですが、coding-systemの一覧を見てみると「binary」ってのがあるなと思ったり。 という訳で以下のような感じにしてみました。

--- eww.el.orig 2022-08-01 20:29:23.000000000 +0900
+++ eww.el      2022-08-20 11:21:34.583253000 +0900
@@ -550,8 +550,10 @@
            (eww-display-pdf))
           ((string-match-p "\\`image/" (car content-type))
            (eww-display-image buffer))
+          ((string-match-p "\\`text/" (car content-type))
+           (eww-display-raw buffer (or encode charset 'utf-8)))
           (t
-           (eww-display-raw buffer (or encode charset 'utf-8))))
+           (eww-display-raw buffer 'binary)))
          (with-current-buffer buffer
            (plist-put eww-data :url url)
            (eww-update-header-line-format)


表示に違いは無い感じですが、mode-lineや「M-x describe-coding-system」の表示が binaryと なるのでこちらの方が良いかなと思った次第。

2022/08/19

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

東京都コロナ感染者。新規は 27676人。全国がダメなんじゃないか?

Pouetでメガデモ作品を見ていて、 「Acorn Archimedes」っていうパソコンの存在を知ったり(参考Wikipedia)。 ARMを使った最初の汎用ホビーパソコンだそうな。 1987年6月の発売だそうで、日本だとX68000と同世代という事になります。 8MHzのARM2が2個搭載、メモリは512KB、スプライトは無く グラフィックス面しか持たないようです (メガデモ作品を見ているとリッチなグラフィックスハードウェアが搭載されていると勘違いしそうですが😅)。 このパソコンを開発したのは エイコーン・コンピュータ(Wikipedia)で、そこで開発されたCPUがARM。 元々は「Acorn RISC Machine」の略だったんだって。 エイコーンからスピンオフして Advanced RISC Machinesという新会社を設立してから 「Advanced RISC Machine」の略が一般的になっていると思います。

2022/08/18

テレワーク。早くもなく遅くもなく終了。

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

Emacsのarc-modeで手持ちのZIPファイルの閲覧テストをしていて、何気にTrueTypeフォント(.ttf)ファイルを 選択したところImageMagickで表示されたり。サンプル表示っぽい画像にレンダリングされるようです。ほぅ....
.otfや.ttcも .emacsで以下のようにauto-mode-alistに追加すれば表示可能でした。

(add-to-list 'auto-mode-alist '("\\.otf\\'"  . image-mode))
(add-to-list 'auto-mode-alist '("\\.ttc\\'"  . image-mode))

2022/08/17

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

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

Fedoraでarc-mode。日本語文字を含むZIPアーカイブ内のファイルを閲覧できなかったので調べたところ、 関数shell-quote-argument でファイル名を加工する条件を踏んでてそんなファイルはアーカイブに無いって状態になっていました。 Cygwinでもその条件を踏んでうまくいかなかったので、踏まないように条件を追加していたのですが、 そもそも怪しげな条件だったので判定自体を抑止するフラグを導入してみました😓。 そんな訳で置いてみます(arc-mode_patched_20220817a.tar.xz)。 基本的な使い方は前のと変わりません。一応 Fedora(Linux)でも動くようになったつもりです。

2022/08/16

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

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

ewwでファイルを指したURLを表示しようとするとハングする件。 どうやら ewwで特別な対応をしない content-type の場合は 関数eww-display-raw でバッファにファイルを表示する仕組みなのですが、 バイナリファイルの場合でも utf-8などで文字コード変換しようとしていて ハング状態に陥っているようです。 何故文字コード変換でハング状態に陥るのかは判りませんが、バイナリファイルを変換したところで 何か表示できる訳ではないので適当な方法で表示できれば良いんじゃね?と思い、eww.elに以下のようなパッチを当ててみました。

--- eww.el.orig 2022-08-01 20:29:23.000000000 +0900
+++ eww.el      2022-08-16 22:11:40.358782500 +0900
@@ -550,8 +550,10 @@
            (eww-display-pdf))
           ((string-match-p "\\`image/" (car content-type))
            (eww-display-image buffer))
+          ((string-match-p "\\`text/" (car content-type))
+           (eww-display-raw buffer (or encode charset 'utf-8)))
           (t
-           (eww-display-raw buffer (or encode charset 'utf-8))))
+           (eww-display-raw buffer 'raw-text)))
          (with-current-buffer buffer
            (plist-put eww-data :url url)
            (eww-update-header-line-format)

関数eww-render の中でcontent-typeによって動きを変えていて、どれでも無ければ 関数eww-display-raw で 文字コード変換をして表示するというコードだったのを、 content-typeが(html以外の)「text/」の場合はテキストデータという事で元のコードと同じく文字コード変換を適用して表示し、 その他の場合は「'raw-text」で表示するようにしてみました。うっかりバイナリファイルのURLを踏んでハングする罠は 回避できているかなと思います。
因みに、パッチ無しのewwをFedoraのEmacs-28.1で試してみたらハングする事は無いみたい。 Cygwinの方ではバイナリデータをutf-8変換した後の表示でフォントフォールバックに時間がかかっているのかも知れません。 いずれにしても我が家では地雷でしかないのでパッチ版ewwを使う方向で🙂

2022/08/15

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

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

リモート7zファイルのarc-mode閲覧。arc-modeの関数でファイルへの書き出しができるかな?と思ったのですが、 そのものズバリなものは無かったので、それっぽい事をやってそうなコードで対応してみたところ、 上手くリモート7zファイル中のファイル一覧の取得ができました。一覧さえ取得できれば、ファイル閲覧の本体は 特に問題無く動作する模様。 という訳で置いてみます(arc-mode_patched_20220815a.tar.xz)。 基本的な使い方は前のと変わりません。Cygwin向けになってしまっている気がするのも変わりません。 御参考まで。

ewwでtar.xzなどのバイナリファイルを指したURLを選ぶとハング状態に陥るなぁ?と思ったり。「d」でダウンロードはできる所を見ると、 バイナリファイルを何かしらhtmlで開こうとしているとか?🤔

2022/08/14

AM中に起床。

掃除したり洗濯したり。

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

7zの標準入力。-siっていうオプションがあるのですが、現状は xz,gzip,bzip2といったストリーム系の圧縮フォーマットでのみ 作用するみたい。
で、本題。先日、プロセス置換を使えばイケそうに思ったのですが実際ダメだったので調べてみたり。

$ 7z l noext_7zarchive    #★拡張子は無いけど7zアーカイブとして認識できている

7-Zip [64] 15.14 : Copyright (c) 1999-2015 Igor Pavlov : 2015-12-31
p7zip Version 15.14.1 (locale=ja_JP.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz (906E9),ASM,AES-NI)

Scanning the drive for archives:
1 file, 245612 bytes (240 KiB)

Listing archive: noext_7zarchive

--
Path = noext_7zarchive
Type = 7z
Physical Size = 245612
Headers Size = 193
Method = LZMA2:384k
Solid = -
Blocks = 1

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2022-08-12 20:53:26 D....            0            0  マルチバイトdir
2022-08-12 00:05:25 ....A       296563       245419  マルチバイトdir/テスト画像.jpg
------------------- ----- ------------ ------------  ------------------------
2022-08-12 20:53:26             296563       245419  1 files, 1 folders


$ 7z l <(cat noext_7zarchive)   #★プロセス置換だとダメ

7-Zip [64] 15.14 : Copyright (c) 1999-2015 Igor Pavlov : 2015-12-31
p7zip Version 15.14.1 (locale=ja_JP.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz (906E9),ASM,AES-NI)

Scanning the drive for archives:
1 file, 0 bytes

Listing archive: /dev/fd/63


ERROR: /dev/fd/63 : opening : E_FAIL

Errors: 1


System ERROR:
E_FAIL


プロセス置換だと「名前付きパイプ」の扱いになる為 fstat()でファイルサイズを取得できないなど、 レギュラーファイルでは可能な操作ができない(のでガードされている?)のが原因かも知れない。 となると、ローカルの一時ファイルにセーブするみたいな方法で対応するしかないのかも知れません。

ふと思い直し。アーカイブ内ファイル一覧の取得の話は一旦置いといて、ファイルを展開する場合も元になるアーカイブファイルを レギュラーファイルとして置いとかないと、ZIPやLZHも標準入力から元のアーカイブファイルを読み込める訳ではないので展開できないよなぁ? と思ったり。リモートのZIPやLZHファイルの中のファイルを閲覧する時、元のアーカイブファイルってどうなってるんだ?と思って 調べてみると、ローカルのテンポラリファイルを開いているっぽい事が判りました。 ん?てことは、展開する時と同じ仕組みでアーカイブ内ファイル一覧も取得すれば良いんじゃね?と思ったり。

ちょっと調べてみたけど どうやればいいのかよく判らず😓

2022/08/13

AM中に起床。

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

テレビ東京の木曜深夜に放送されている「量産型リコ」っていうドラマ (公式ページ)。 毎回なんやかんやあってプラモを作るドラマです(語彙力無し)。 ドラマの本編よりも「最近のプラモってこんな事になってるの!?」の方に驚いています。 これまでで一番驚いたのは、先日放送された第7話で組み立てていたラブライブの南ことりっていうキャラクターのフィギュアでした (製品ページ)。 第3話の「エヴァンゲリオンの初号機」で色が付いてて接着剤無しにはめ込みだけで作れるようになっているのにも驚いたのですが、 今回のフィギュアは顔のパーツだけで4色入っていて、まつ毛や頬の色が表面塗装じゃなくて ソリッドに色が入り込んで形成されているのにマジでか!?と思った次第です (参考ブログ)。 これ、金型どうなってんの?って感じです。

三項演算子。そういやLISPのような関数型言語では ifも関数なので値を返せます。なので明に三項演算子って無いなと改めて思ったり。 ただ、ifが値を返せるという事以外に、nilのように何も無いって事を表現する値と、 変数に型が無いもしくは返す型の混在をチェックする機構も必要と思われます。

(if nil "a")   ;and press C-j
nil            ;else節はnilが返る。C言語とかでは返すものが無い。

(if nil "a" 1) ;and press C-j
1              ;こちらは数値が返るが

(if t   "a" 1) ;and press C-j
"a"            ;こちらは文字列が返る。戻り値が文字列だったり数値だったりするとC言語とかでは死ぬ例。LISPでもその後で大体死ぬけど😓


単純に「値を返せるifにすれば良いじゃん」という訳にはいかないのかなと想像します。

arc-mode。リモートのZIPやLZHファイルはarc-modeで閲覧できるのですが、7zファイルは直接閲覧できないなぁ?と思って調べてみたり。 ZIPやLZHと違ってファイルの一覧を取得するのに 7zコマンド(の l -slt オプション)を外部実行して、 得られるファイル一覧情報を整形してarc-modeに表示するアーカイブ内ファイル一覧としているようです。 この時、7zコマンドに指定するファイルが「/scp:user@hostname:/pathto/file.7z」という形式になっていて、 そんなファイルは無い→リストが得られない という流れで失敗しているようです。 ファイル自体はバッファに読み込んでいるので、バッファの内容をパイプで7zコマンドに渡せないのか? と思ったのですが、7zの標準入力を使うオプションはアーカイブファイルそのものを標準入力から読み込むようなものでは無いみたい。 unzipコマンドやlhaコマンドもアーカイブ自体を標準入力から読み込む事はできないようなので、もしコマンドを使って アーカイブ内ファイル一覧を取得していたら、7zと同様にリモートのZIPやLZHファイルを閲覧する事はできなかったかも知れません。 ZIPや LZHのアーカイブ内ファイル一覧をELISPで自力取得している理由が解ったような気がしました。 DOSやWindows発祥のアーカイバは UNIX系のコマンドのように ファイル名を「-」にすれば標準入力から読み込むみたいな 仕組みになっていないのが多いと思います。やれば実装は難しく無いように思うのですが、 パイプを使うという文化が無いと標準入力を使うユースケースを そもそも思いついていないという感じなのかも知れません。

そういや以前知ったプロセス置換を使えば一瞬イケそうに思ったのですが 何故かダメみたい...🤔

2022/08/12

昼過ぎ起床。寝すぎ。

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

資金調達にちょろりお出かけ。本屋に寄ったのですが、全然所望の新刊が得られません(既に新刊ではなくなりつつある)。 近所では一番大きな書店なのになんでだ?って感じです。

Emacsの arc-modeでは圧縮アーカイブファイル内のファイルをdiredの感覚で閲覧する事ができます。 しかし、Windowsで生成したZIPファイルに日本語文字列のファイル名が含まれている場合、SJIS(cp932)となっている為か、 ファイル名表示が化ける上に閲覧もできません。これまで閲覧できなくてもあまり気にしなかったのですが、 本物お仕事でいちいち展開するのが面倒臭い場面があったため対応できないものか?と思うに至りました。
unzipのオプションを追加すれば良いんじゃね?くらいに思って調べ始めたら、猛烈に面倒な事になってて くじけそうになりながら どうにか閲覧だけはできるようになったような気がしてみたり。 いくつか面倒な所があったのですが、ざっくり以下のような感じです。


なんか Cygwinの Emacs専用になっている気がしなくもありませんが 置いてみます(arc-mode_patched_20220813a.tar.xz)。 適当な場所に展開してarc-mode.elを読み込めば良いと思います。我が家ではひとまず.emacsに以下のように記しています。

;;-----------------------------------------------------------------
;; arc-mode
;;-----------------------------------------------------------------
(when (version<= "28.0" emacs-version)
  (load "~/.emacs.d/workaround/emacs-28.x/arc-mode.el") ;workaround
  )

使えれば良いという体質なので .elcにもしてない超適当な感じの例ですが よしなに😅。

アーカイブファイルの状況に応じて、いくつかの初期設定を.emacsで変えるのが良い場合があるかも知れません。


Windowsの場合はファイルエクスプローラを使ってZIPファイルを生成すると、アーカイブ内ファイル名は SJIS(cp932)となりますが、 生成する環境によって UTF-8の場合もある為 手動で切り替える手段を設けています。 オリジナルのarc-modeをもっとどうにかしてくれないかなぁ?とは思います。

2022/08/11

AM中に起床。ゴミ捨て。

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

bashコマンドラインで、実行するコマンドに対して一時的に環境変数を変更して実行する事があります。

$ echo $LANG
ja_JP.UTF-8

$ LANG=C ls -l
total 0
-rw-rw-r-- 1 TANE-HP なし 0 Aug 11 11:36 foo.txt

$ ls -l
合計 0
-rw-rw-r-- 1 TANE-HP なし 0  8月 11 11:36 foo.txt

現在のプロセスの環境変数の値はそのままで子プロセスにのみ反映されるので、変えたらまた元に戻す操作は不要なので便利です。
ここでふと、もし「LANG=C」という名前のスクリプトファイルが PATHの中に置かれてたらどうなるだろう?と思ったり。 で、試してみたら以下のような振舞いになるようです。

$ cat -n LANG=C                       #「LANG=C」という名前のスクリプトファイル
     1  #!/bin/bash
     2
     3  echo "I am LANG=C script"
     4  echo "var ${LANG}"
     5  echo "cmd $0 $@"

$ ls -l LANG=C
-rwxrwxrwx 1 TANE-HP なし 75  8月 11 11:43 'LANG=C'

$ echo $PATH | cut -c -10             #PATHに .(カレントディレクトリ)を含めてます
.:/home/TA

$ echo $LANG                          #親(となる)プロセスの環境変数LANGの現在値
ja_JP.UTF-8

$ LANG=C aaa bbb                      #LANG=Cを実行した上で aaaというコマンドを実行しようとしてエラー
bash: aaa: コマンドが見つかりません

$ LANG=C LANG=C aaa bbb
bash: aaa: コマンドが見つかりません   #LANG=Cを二回実行した上で aaa というコマンドを実行しようとしてエラー

$ LANG=C LANG\=C aaa bbb              #「=」をエスケープするとファイルとして認識される
I am LANG=C script
var C
cmd ./LANG=C aaa bbb

$ LANG\=C aaa bbb                     #こちらも「=」をエスケープするとファイルとして認識される
I am LANG=C script
var ja_JP.UTF-8
cmd ./LANG=C aaa bbb


なるほど、解釈の優先度は決まっていて曖昧な事にはならないみたい。 bashは構文的にスペースの要否が重要(あるか無いかで意味が変わる事がある)なので、そこを予め理解しておく事は必要かも知れません。 しかしながら、見た目で 変数への代入かコマンドかが分かりにくくなるので 「=」を名前に含むようなファイルやコマンドは自然に避けるようになるかも知れません。

2022/08/10

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

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

今月のWindows Updateが来てたのですが、そういやテキスト編集などメインで使用しているEmacsを落とす事無く Windowsアップデートの1周期を迎えたのは久しぶりかも。 M-x emacs-uptimeを実行した時の結果は「28 days, 1 hour, 29 minutes, 53 seconds」でした。 あまり難しい事をしてなかったというのもあるかも知れませんが😓

2022/08/09

テレワーク。早くもなく遅くもなく終了。

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

棒状の物の直径を測りたいと思ったのですが デジタルノギスが電池切れで測れず。

2022/08/08

テレワーク。早くもなく遅くもなく終了。

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

ルパン三世の次元大介役だった小林清志氏死去。 半年ほど前にルパン三世part6では勇退してたという話を知った所でした。

2022/08/07

AM中に起床。

掃除したり洗濯したり。

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

PouetAssemblyの結果が出ていたり。 去年に引き続きコロナ影響か作品数は少し減っているようですがそれでも多い方かとは思います。 Revisionが多すぎるというのはさておき。

2022/08/06

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

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

メガデモパーティ―であるところの「Assembly Summer'22」が開催されている模様。 30周年になるのか。 メガデモは、今でも観る為に高性能なビデオカードが必要だったりする訳ですが、現在の様に動画で観る事ができるようになったのは 2000年に入ってからというのを考えると、 1992年当時の作品群を動画で観られるのはありがたいことです。

2022/08/05

テレワーク。早くもなく遅くもなく終了。

東京都コロナ感染者。新規は 37767人。減らないねぇ。

Inkscapeの1.2.1が7月に出ていたのですが、何故か全く気づいていなかったり。

先日、Emacsのフォント選択ダイアログを CF_INACTIVEFONTSフラグを立てて 開けるようにしてみましたが、選べるようになったフォントを眺めていて 「Segoe Script」というのがあるのを知りました。 スクリプト系のフォントのようですが、Emacsで表示すると例えば「小文字のs」を単体で置くと、なんだか読めないなぁ?と思ったり。

Emacs with SegoeScript

で、おもむろにInkscapeで表示してみたところ、どうやら前後の文字や空白かによって形が変わるように レンダリングするフォントのようです。

Segoe Script vs Ink Free

ほぅ....。Emacsでは前後に文字がある場合の字形でのみ表示されている感じのようです。

2022/08/04

テレワーク。早くもなく遅くもなく終了。

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

Web巡回して終了。

2022/08/03

テレワーク。早くもなく遅くもなく終了。

東京都コロナ感染者。新規は 38940人。全国的に全然ダメだな。

Emacs-28.1.91が出たばかりですが、早速更新コミットが行われているようです。

2022/08/02

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

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

先週、Emacs-28.1.91が来る?と思ってたら来た模様 (Emacs pretest 28.1.91 is out)。 なんか早いような?とは思ったのですが、28.0.90から28.0.91の時もこんな感じだったっけ?と思い直したりも。 てか、28.0.91は出ているのに気づいてなかったのですが(過去の日記)😓。

という訳で IMEパッチをあててCygwinでビルドしてみたり。ただしnative-compileは無しで。 ちょろっと使ってみた範囲では特に問題は無さげ。本体の変更は殆ど無くてドキュメントのtypo修正がメインという感じかも。 28.1と同じ感じで進めば年末くらいに28.2が出そうに思ったりも。

2022/08/01

テレワーク。早くもなく遅くもなく終了。

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

lisp/net/shr.el を眺めていて謎に思う所があったり。 shr-current-fontという変数があるのですが、Internal variablesとしてdefvarで宣言されてはいるのですが、 これって変化しそうだけど 結局最初に設定したnilのままだよなぁ?と思ったり。例えば、

(defun shr-tag-pre (dom)
  (let ((shr-folding-mode 'none)
        (shr-current-font 'default))
    (shr-ensure-newline)
    (shr-generic dom)
    (shr-ensure-newline)))

というコードがあるのですが、letでローカル変数として作用しているので、このコードだけ見ると shr-current-fontは未使用変数と同等という感じになっています。そしてグローバル変数のshr-current-fontは何も影響されず。 これで合っているのだろうか?

git log で歴史を辿ってみたところ、shr-current-fontが一番最初に登場したのは 7年ほど前の

commit 656caef3505e11b073d59b9c18d3fd21e199d77c
Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
Date:   Tue Feb 10 16:29:05 2015 +1100

というコミットからのようですが、この時から

 (defun shr-tag-pre (dom)
-  (let ((shr-folding-mode 'none))
+  (let ((shr-folding-mode 'none)
+       (shr-current-font 'default))
     (shr-ensure-newline)
-    (shr-indent)
     (shr-generic dom)
     (shr-ensure-newline)))

のように今のコードとなる変更が加えられて、現在まで変わらずという感じみたい。何かしら影響がある訳でも無く、 悪さをする訳でもない無駄なコードのように思えるのですが、それが故に取り除かれる事も無いという事でしょうか。


TOP PREV