昔の最近の出来事(2023.03)

2023/03/31

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

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

そういえば ONEPIECE で ベガパンクの猫(サテライト)として6人のキャラクターが出てきますが、 まだ色は分からないなぁ?と思ったりも。 以前にも何度か(1,2) ONEPIECEキャラクターの色について触れた事がありますが、 ジェルマ66の幹部(イチジ、ニジ、ヨンジ、レイジュ)とサンジが 何気に戦隊モノのカラーリングになってたのは そうくるかと思わされた所です。 悪の組織だけど😅

2023/03/30

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

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

調べ事。うーん、やっぱりわからん。

2023/03/29

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

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

調べ事。うーん、わからん。

2023/03/28

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

東京都コロナ感染者。新規は 1001人。4桁だと目立つな。

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

2023/03/27

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

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

調べ事をして終了。

2023/03/26

AM中に起床。

掃除したり洗濯したり。

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

絵文字フォントの確認をするのに切り替えが面倒臭いと感じる場面があったので、フォントファミリ名を指定して 切り替えられるような関数(コマンド)を書いてみたり。って作るとすぐに使う用事は無くなるのですが😅

2023/03/25

昼前起床。寝すぎ。

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

ゴードン・ムーア氏死去(参考)。94歳ですか。

Cygwin3.4.3と3.4.6では emacs-w32上で拙作のsysmon をSVG描画モードで動かしていると emacs本体のプロセスサイズが徐々に大きくなっていき、数日で数GBに達してしまうため長時間起動しておく 事ができません(参考;初回遭遇)。この為、3.3.6にダウングレードして使用しています。 これと関係があるのかどうかは判りませんが 「Cygwin 3.4.3 and 3.5.0... hangs in make, top, procps, ls /proc/PID/...」 というMLのスレッドがあって、バージョンから察するに何かしら関係があるんじゃないかなぁ?と思ったりも。 原因に到達するようなコメントは付いていないようなので今のところ進展は無いようですが、 何かしら関係があるかも?という感じでトラッキングしてみよう。

なんだか昨日からgnu.org関係のサイトが不調な気が?

AIイラスト動画。サムネイルだけを見て Adobe Illustratorでのイラスト作成動画なのかと思ったら 人工知能の方でした。 「日本一わかりやすいStableDiffusion WebUI AUTOMATIC1111(ローカル版)のインストール方法と基本的な使い方」。 面白いなとは思ったのですが、ベースイラストを上手く弄っているという感じがしなくはありません。 学習元データが分からないのでなんとも言えませんが、その中に 元の絵ってこれだよね? ってのが ある感じなんじゃないかなぁ?とは思ったりも。 色々パラメータを指定して得られたベスト画像は、結局 生成したものじゃなくて 元絵の中の一枚に完全に 一致する感じだったりして。わかりませんけど。

そういや本日でへっぽこページは23周年を迎えました。毎度見てくださっている方々に感謝いたします。 ふにゃふにゃしたページですがこれからもよろしくお願い致します🙂

2023/03/24

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

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

Web巡回して終了。

2023/03/23

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

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

Emacsのcaseのインデントコントロール。.emacsに設定を書く方法以外にも、「C-c C-o」にc-set-offsetコマンドが 割当たっていて、case文の行で実行すると現在のインデントを任意の設定に変更できるようです。ほぅ...。 c-modeの完成度の高さに c-ts-modeはまだ及んでいないようにも思えるのですが果たして。

2023/03/22

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

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

Emacsのc-modeでcaseのインデントをコントロールする設定があるのを知りました (5.19 How do I change the indentation for switch?)。 マジでか....😅。c-modeをベースにしているプログラムモード(例えばd-modeとか)は .emacsに記すと一斉に影響を受けるようです。 因みに Meadow2(Emacs21.1相当; 20年くらい前)の infoの「Emacs FAQ」には記されていた(そして今も)ので 随分前から出来たようです。むぅ。
ところで、Emacs29のブランチで c-ts-modeで caseのインデントを行わないようになる変更が加えられたようなのですが (Add missing indent rule for c-ts-mode)、 前述のような設定で有効/無効を切り替えられるようにもなっていなさそうに思ったりも。

2023/03/21

AM中に起床。

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

Web散策していて知った アハルテケ(参考Wikipedia) って品種の馬のツイート動画。 CGみたい。

Emacs29のブランチ。ここ数日落ち着いてきた感じも。

2023/03/20

AM中に起床。本日はお休み。

掃除したり。買い物にお出かけしたり。

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

競プロでは配列の全要素を舐めるとか結果を集約するといった操作が必要になる場面が特に多いように感じます。 それもあってか、動作確認の中で 配列の中身を表示したくなる場面があるのですが、これまであまり使って来なかった UFCS(Uniform Function Call Syntax) (参考Wikipedia, D言語マニュアル)を使うと forやforeachを使わなくても良い感じに 整形表示を繰り返す事ができて便利だなぁと思ったりも。 ただ、やり過ぎるとどこで間違っているのかを(デバッガでは)観察するのが大変そうなので、 確実に使い方が分かっているものに限定して使う感じかな?とは思ったりも。

2023/03/19

昼前起床。

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

D言語のマニュアルを眺めていて「Foreach Range Statement」 なるものがあるなと思ったり。 for文で「for(int i=0;i<N;i++){}」を「foreach(i;0..N){}」みたいに書ける という感じかなと。ただ、ダウンカウントはできない(文法的にエラーにはならないけど何もしないで抜けるループになる) ようなのと、個人的に「x..N」のNは最後の要素番号+1の数(xが0の時に限りNは要素数と等しい)なのが 毎回混乱するので、結局for文を使ってしまう感じかも知れません。

2023/03/18

昼前起床。

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

先週TVの番組表を見ていてたまたま気づいたTV東京で放送されている 「プラモにめされて」(公式) という番組。早朝に近い方の深夜なので録画で観たのですが面白かったです。 とは言え先週気づいたのでほぼ見逃している上にあと数回で終わりです😅。 以前 、「量産型リコ」っていうプラモを作るドラマが 放送されていたのですが 何か関係あるのだろうか? (「量産型リコ」と「プラモにめされて」のエンディングテーマはどちらも LINKL PLANETの「ツクッテクミタテテ」って曲みたいですけど)

「プラモにめされて」で紹介されていたジオラマ作品を見ていて思い出したのですが、 TANEが子供の頃にも いくつかジオラマが飾ってあるプラモ屋がありました。その中に 戦場の情景ジオラマで兵隊フィギュアを使った作品が飾ってあったのですが、フィギュア自体は5cmも 無いくらいのサイズにも関わらず 丸眼鏡をかけていて(全身フィギュアなので頭部サイズは 推して知るべし)、その丸眼鏡のフレームがほぼ髪の毛くらいの太さ(それより細いかも?)で 丸いフレームやツルとの接合も 継ぎ目が見当たらなくて(接着剤を盛った跡なども無し)、 一体どうやって作ったんだ?というのが今だ謎のままです。

競プロ。先日の問題(こちら)の 解説が理解できていなかったのですが、どうやら正三角形を変形して考えれば良く、パターンも絞る事ができるという事みたい。 実装してみたところ巨大な入力パラメータでも一瞬で答えが出る感じに。 自分で考えた方法と違い過ぎたので直ぐに理解ができなかったという感じだったかも。 でもこの問題の最適解を初見で導き出せるものなのだろうか?とは思ったりも。

2023/03/17

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

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

競プロ。先日の問題(因みにこちら)の 解法アルゴリズムはこれでイケるんじゃね?と実装してみたり。 結局 書くのに大分時間がかかったのですが一応答えの出るものになったような気も。

という所で解答を見てみたところ、コードの例は無く数学的なアルゴリズムで解くっぽい(解説を読んでもよく判らない....🥺)。 力ずくのアルゴリズムでやったので全然ダメでした😓。
今回の問題は「AtCoder Grand Contest(AGC)」って クラス(?)のものらしいのですが、110分内で A~Fの6問を解くということみたい。 1問ですら数時間を要しているTANEには 時間内では全く出来る気がしません。

2023/03/16

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

東京都コロナ感染者。新規は 680人。前から思っているのですが、漸近するのって何故なんですかね?

そういえば Windows10の20H2でMS-IMEの単語登録ダイアログが EmacsのIMEパッチで開けなくなって 随分経つのですが(以前の日記; Windows10のアップデートでMS-IMEがレベルダウンしたのが原因)、 そういや全然直る気配が無いなぁ?と思ったり。結局、「以前のバージョンのMicrosoft IMEを使う」をONにする ワークアラウンドが恒久対処化されるのだろうか? ところで「以前のバージョンのMicrosoft IMEを使う」というスイッチはWindows11でも同じなのかしら?

競プロの問題で面白そうなのがあったので少し考え始めてみたのですがまとまらず。

2023/03/15

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

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

dlang-ts-modeのテストも兼ねて競プロの解答コーディングしてみたり。普通に使う範囲では大丈夫そう。

2023/03/14

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

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

dlang-ts-mode。これまで if文の条件式を複数行にした場合のインデントがうまく動かなかったのですが、 新しい c-ts-mode の一部を移植してみたところ、思った感じにインデントされるようになったり。

2023/03/13

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

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

Emacs29のブランチの今日時点のをビルドしてみたり。パッチ類はひとまずリジェクトされる事無く当たり、 ビルドもエラー無く完了。ただ、起動してみたところ、

⛔ Warning (treesit): Cannot activate tree-sitter, because language grammar for cpp is unavailable (not-found): (libtree-sitter-cpp libtree-sitter-cpp.dll) No such file or directory [2 times]

というワーニングメッセージが表示されるようだったり。いや、実際にそんなものはインストールしていないのですが、 そもそもどこで 必要としているのかよく判らず。
そういや以前 libtree-sitter-* をインストールする treesit-install-language-grammarというコマンドが追加されていたな?と思い試してみたのですが エラーしてうまくインストールできませんでした。git cloneが出来ているのか分からない、コンパイルコマンドが分からない、 コンパイルコマンドのオプションが変更できないなど、面倒臭くなってしまったので手動で https://github.com/tree-sitter/tree-sitter-cppを clone&コンパイルして /usr/local/bin/に突っ込んで対応。起動時のワーニングメッセージはひとまず出なくなりました。 「Emacs28から29にアップデートしたら起動時にメッセージが出るようになった」的な移行トラブルになるかも知れません。

で、自作のdlang-ts-modeを確認してみる訳ですが、ものの見事に動かなくなっています。もー、なんなの?😩
調べた結果、変数名やファイルの名前が変わっているせいでエラーになっていたので対応。 変数名に至っては二回変えているせいで 一回では直らずなんで?ってなりました。

2023/03/12

AM中に起床。

掃除したり洗濯したり。

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

先日知った twemoji-colr ってモノクロでレンダリングするとどうなるんだ? と思って確認してみた(以前付けたスイッチが役に立つとは)ところ、 全く何も表示されないようです。以前 「Twitter Color Emoji SVGinOT」 で表示確認したときはアウトラインは表示されていたのですが、twemoji-colrはそうなっていない模様。 何気に Segoe UI Emoji スゴイって感じる所です。

Emacs29のブランチのgit logを眺めていたら lisp/progmodes/python.el で「case」というキーワードに対して 何かやってそうというのに気づいたり。薄い知識でpythonは switch/case ステートメントが無いらしい という認識だったのですが、python 3.10から match/case という switch/caseに相当する構文が使えるようになっているのを知りました。 Cygwinのは3.9だったのでFedoraの方で試してみました。

$ python3 --version
Python 3.10.10

$ cat ./match_case_test.py
#!/usr/bin/python3

import sys

args = sys.argv

msg=''
match args[1]:
    case 'a' | 'b':
        msg = "args[1] is 'a' or 'b'"
    case 'b':
        msg = "args[1] is 'b'"
    case _:
        msg = "default " + args[1]
print(msg)

$ ./match_case_test.py a
args[1] is 'a' or 'b'

$ ./match_case_test.py b
args[1] is 'a' or 'b'

$ ./match_case_test.py x
default x

pythonはインデントでブロックを明示しなくてはならない都合もあってか、以前 記した「caseをインデントしない」ようには書けないっぽい。また、フォールスルーではないのでbreakは不要 なようです。caseに「|」でor条件で並べてもフォールスルーっぽくはできないみたい(最初にマッチした条件のブロックしか実行されない)。 ただ、caseの or条件はバグを埋め込む可能性が高くなる(迂闊に条件を足すとどこを通るかだんだん分かり難くなる) 気がするので乱用は避けた方が良いかも知れません。

Emacs29のブランチ。treesitter関連の更新が落ち着いて来た気もするので、 そろそろ新しいのでビルドを試してみようかなぁと思ったりも。 とは言え、gitから最新を持ってくると どれも29.0.60になるのでそろそろ29.0.90が来て欲しい所です。

2023/03/11

昼過ぎ起床。寝すぎ。

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

そういえばと思い、モノクロの絵文字フォントであるNoto Emojiを 入れてみたり。Emacs29ではデフォルトで認識する(emacs -Q 起動とかでも大丈夫)みたい。 さておき、emacs-w32 の拙作カラー絵文字表示パッチで Segoe UI Emoji を普段使いしていますが、 Segoe UI Emojiでは一部の合字(例えば黒猫(🐈‍⬛) 白熊(🐻‍❄️) 黒い鳥(🐦‍⬛) など)や 新しい絵文字(溶ける顔(🫠) 涙の笑顔(🥲) 震える顔(🫨) など) は表示できません。 そんな訳で確認用にとNoto Emojiを試してみたのですが、Segoe UI Emojiにグリフが無い場合の フォールバック用にも使える感じにしてみました。Emacsでの絵文字表示が強まった気も。
ところで Noto Emoji はモノクロ向けデザインという理由があるのかどうか判りませんが 人の絵がミニオンズみたいです。

Noto Emoji Emacs表示

性別や年齢もグリフからは区別が付かないものもありそうなので、コピペするような場合は 他の絵文字フォントで表示可能なブラウザ等で確認した方が良さそうに思ったりも。

そういや Google Chromeって何故 Noto Color Emojiで表示しないんだろう?と一瞬思ったのですが、 Windowsに Noto Color Emojiをインストールできないからかと思い直したりも。

検索していてtwemoji-colrという絵文字フォントの存在を知りました。 Twemojiをベースに Segoe UI Emoji と同じ COLR/CPAL フォーマットに変換したフォントらしい。ビルド済みのTTFファイルがあったので試してみました。

twemoji-colr Emacs表示

拙作のカラー絵文字パッチも大丈夫そう。さておき、COLR/CPAL フォントの選択肢の一つとして利用できそうです。 個人的には Segoe UI Emoji で表示できない合字の絵文字を確認するのに使えそうです。

「🍤」の絵文字の説明に「エビの天ぷら」と記されているページがあって、言われてみれば エビ天もエビフライも「fried shrimp」っちゃそうかもなぁ?と思ったり。 材料の違いとしてはパン粉を使うか否か(参考ページ) ですが、油で揚げる事に違いはありません。 英辞郎でfried shrimpを調べてみると エビ天の方は deep-fried shrimp とか deep-fried tempura shrimp ってのがあるみたい。 という訳で、絵文字の🍤は fried shrimp と定義しているようなのでエビ天ではなくエビフライの方という結論。

2023/03/10

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

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

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

2023/03/09

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

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

調べ事をして終了。

2023/03/08

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

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

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

2023/03/07

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

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

H3ロケット打ち上げ失敗。前回のは第1段エンジンの制御系トラブルだったようですが、 今回の第2段エンジンでも同じような話の可能性はあるのだろうか?

先日のbashスクリプトで正規表現マッチの実験。先日はCygwinのbashで試していたのですが、もしやと思って Fedoraで試してみたらこちらは期待通りに大文字小文字を区別する感じでした。

$ cat ./regex_test.sh
#!/bin/bash

for arg in "$@" ; do
    if [[ ${arg} =~ ^[1-9]+[0-9]*$ ]]; then
        echo "${arg} is a number of more than 1"
    elif [[ ${arg} =~ ^[a-z]+$ ]]; then
        echo "${arg} is a downcase word."
    else
        echo ${arg}
    fi
done

exit 0

$ ./regex_test.sh abc Abc ABC
abc is a downcase word.
Abc
ABC


むぅ🤔。大文字小文字を区別するか否かを shoptコマンドで切り替える事ができるようですが、 現在の設定を確認してみても関係しそうな設定は同じだったり。

Fedora bash cygwin bash
$ shopt | grep case
nocaseglob      off
nocasematch     off

$ /bin/bash --version
GNU bash, バージョン 5.2.15(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2022 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ shopt | grep case
nocaseglob      off
nocasematch     off

$ /bin/bash --version
GNU bash, バージョン 4.4.12(3)-release (x86_64-unknown-cygwin)
Copyright (C) 2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

よく見るとCygwinのbashって結構古いんだな。さておき、環境だか設定だかの問題だというのは解ったのですが、 ただの文字列マッチの結果が異なるとか面倒臭いな。Windowsのファイルシステムはファイル名やフォルダ名が case-insensitiveなのは承知の上なのですが、(できるハズの)shoptによる動作切り替えも Cygwinのbashは何故かできないっぽいのがなんとも。

2023/03/06

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

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

調べ事。bashスクリプト内で文字列の正規表現マッチの実験を行っていたのですが、こうなるんだっけ?という感じだったり。

$ cat ./regex_test.sh
#!/bin/bash

for arg in "$@" ; do
    if [[ ${arg} =~ ^[1-9]+[0-9]*$ ]]; then
        echo "${arg} is a number of more than 1"
    elif [[ ${arg} =~ ^[a-z]+$ ]]; then
        echo "${arg} is a downcase word."
    else
        echo ${arg}
    fi
done

exit 0

$ ./regex_test.sh  abc Abc ABC
abc is a downcase word.
Abc is a downcase word.
ABC is a downcase word.


全て大文字の引数「ABC」や大文字を含む「Abc」は正規表現「^[a-z]+$」にはマッチしないのを期待したのですが、 大文字小文字を区別していないように見えます。
「^[a-z]+$」を「^[A-Z]+$」にすると以下のようになりました。

$ cat ./regex_test2.sh
#!/bin/bash

for arg in "$@" ; do
    if [[ ${arg} =~ ^[1-9]+[0-9]*$ ]]; then
        echo "${arg} is a number of more than 1"
    elif [[ ${arg} =~ ^[A-Z]+$ ]]; then
        echo "${arg} is a upcase word."
    else
        echo ${arg}
    fi
done

exit 0

$ ./regex_test2.sh abc Abc ABC
abc
Abc is a upcase word.
ABC is a upcase word.


全て小文字の場合はマッチしないようですが、大文字と小文字が混在の場合もマッチします。 こんなんなんだっけ?🤔

sedで試すと以下のような感じ。

$ echo -e "abc\nAbc\nABC" | sed '/^[a-z]\+$/p;d'
abc

$ echo -e "abc\nAbc\nABC" | sed '/^[A-Z]\+$/p;d'
ABC

$ echo -e "abc\nAbc\nABC" | sed '/^[a-zA-Z]\+$/p;d'
abc
Abc
ABC


これは期待通り。「^[a-z]\+$」は小文字だけの行がマッチ、「^[A-Z]\+$」は大文字だけの行がマッチします。 混在を許す場合は「^[a-zA-Z]\+$」ってする。こうなっていないと大文字だけのワードや小文字だけのワードに マッチさせる事はできないと思うのですが?

2023/03/05

昼前起床。

掃除したり洗濯したり。

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

競プロ。あぁ、単純に二進数をフラグに見立てれば良いと気づくのに一晩かかりました😓。 これまでの流れから、グラフ探索とかややこしいやり方で考え始めてしまったのですが、 そうじゃなくても良いじゃん?とすぐに気づきませんでした。修行が足りません。 ひとまず思いついたアルゴリズムで実装して、いくつかある入力例については大丈夫そう。 で、回答の解説を見てみたところ、コードは無かったのですが「尺取り法」なるアルゴリズムを 使うともっと効率が良くなるらしい。尺取り法ってどういうアルゴリズム? そんな感じ。

「ONE PIECE(105)」。今巻でワノ国編は完結しましたが、新章の入口が色々てんこ盛りで整理が追い付きません😅。

2023/03/04

昼前起床。

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

競プロ。手順のイメージは思い浮かぶのですが実装へ落とし込むアルゴリズムが思い浮かばず。 組み合わせの抽出も苦手です🥺。

2023/03/03

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

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

Web巡回して終了。

2023/03/02

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

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

Web巡回して終了。

2023/03/01

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

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

Cygwinを3.4.6でのメモリリークの状況。プロセスサイズが縮む要素は無さそうだったので、3.3.6にダウングレード。 3.3.6だとやっぱりプロセスサイズが増える感じではありません。これ、どうしたもんかなぁ?


TOP PREV