昔の最近の出来事(2022.09)

2022/09/30

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

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

Emacs 29.1のリリーススケジュールについて MLで語られているらしい (Tentative release schedule for Emacs 29.1)。 今年の11月に 29のブランチを作る暫定目標としたらしい。29系は結構色々弄っている気がする状況を鑑みると、 来年春のリリースというのは、これまでのEmacsのリリースサイクルからいうと結構タイトなスケジュールという気も。 ただ、28.0.90から28.1が出た時と丁度同じサイクルなので、年1回リリースのサイクルを目指す感じになっていくのかしら? それはそれで良いかも知れません。

2022/09/29

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

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

D言語からDirect2DとかDirectWriteとか。先日の64bit幅データの戻り値の件。 C++のワークアラウンドのように「D2D1_SIZE_F GetSize()」ではなくて 「void GetSize(D2D1_SIZE_F*)」というものだという体に書き換えて、「Dではこういうものだと思う事にする」 としました。元々、実験向けの用途でDirectWriteが使いたかっただけなので、 C++と同じように書けないのは気にしない方向で。

という訳で最低限の実験コードは動いた気がしたりも。

DirectWrite test with Dlang

2022/09/28

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

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

D言語からDirect2DとかDirectWriteとか。先日の対応だけではまだ足りない場合がありました。 一部のメソッドの呼び出しに失敗するようだったので調べてみたところ、どうしたもんか困ってみたり。
C言語ヘッダでは以下のようになっている場合がありました。

    571 interface ID2D1Bitmap : public ID2D1Image {
    572 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
    573     STDMETHOD_(D2D1_SIZE_F, GetSize)(void) const PURE;
    574 #else
    575     virtual D2D1_SIZE_F* STDMETHODCALLTYPE GetSize(D2D1_SIZE_F*) const = 0;
    576     D2D1_SIZE_F STDMETHODCALLTYPE GetSize() const {
    577         D2D1_SIZE_F __ret;
    578         GetSize(&__ret);
    579         return __ret;
    580     }
    581 #endif

WIDL_EXPLICIT_AGGREGATE_RETURNS っていうdefineがされているか否かでコードが切り替えられていて、 通常は573行目の方だけが並んでいるのでそれを対応するという感じなのですが、 どうやら else 側の方をどうにかする必要があるみたい。 そもそもこの切り替えは何の為に行っているの?を調べてみたところ、 RenderTarget->GetSize not working というそのものズバリな感じのQ&Aがありました。戻り値が64bitの幅で返せるようなデータ(例えばstruct{INT32;INT32}みたいなのとか)の 返し方がコンパイラとMSのライブラリとで合っていなくてズッコケるという事らしい。 このワークアラウンドが前述 WIDL_EXPLICIT_AGGREGATE_RETURNS の有無で切り替わるという 感じになっていますが、WIDL_EXPLICIT_AGGREGATE_RETURNS 自体は MinGWの w32api/_mingw_mac.h で

/* Enable workaround for ABI incompatibility on affected platforms */
#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
#if defined(__GNUC__) && defined(__cplusplus)
#define  WIDL_EXPLICIT_AGGREGATE_RETURNS
#endif
#endif

てな感じで GNUC且つC++ だったらワークアラウンドが発動するようになってるみたいです。

事情は判った。で、それをD言語(DMDやldc)ではどう対応すれば良いの?が判らず困ったという状況。 DMDならワークアラウンド不要な方でイケないの?と思ったのですがダメみたい。

2022/09/27

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

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

D言語からDirect2DとかDirectWriteとか。なんとなく突破方法が判ったようなそうでもないような。
以下のような修正が必要でした。


メンバーメソッドの並びを変えたら動かんだろってのがそのままになっている所を見ると、実際に使ってはいないのだろう感。 まだコンパイル&実行して死ななくなったって事しか見ていないので道のりは長い....

2022/09/26

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

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

D言語からDirect2DとかDirectWriteとか。んー、なんかダメだ。

2022/09/25

AM中に起床。

掃除したり洗濯したり。

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

D言語からDirect2DとかDirectWriteとか。コンパイルエラーになるのをC言語の結果と比べながら直したり。 例えばD2D1CreateFactory()って関数の場合、C++では実体はWINAPIのようなのですが、テンプレートで包んでいくつか の引数を省略可能にしているのが、aurora/directxの方ではうまく実装されていないようです。 また、Factoryなるものにuuid(Universally Unique Identifier)が付与されていてGUID(だったりIIDだったりREFIIDだったり) で渡すのですが、IDをそもそも間違えているものがあったりで、そのままではさっぱり使えるような気がしなかったり。

直したり足したりしてみたのですが、どうにもならなくなって詰んだ。 こちらの参考ページの順で、 D2D1CreateFactory()による ID2D1Factory型のインスタンス的な物の生成は成功してっぽいのですが、 インスタンスのメソッド(?)となる CreateHwndRenderTarget()を実行すると死にます。 参考ぺージはC++なので「d2d1Factory->CreateHwndRenderTarget(...)」で実行していますが、 D言語では「pD2d1Factory.CreateHwndRenderTarget(...)」で実行しています。 コンパイルエラーはしないのですが、そもそもこれでメソッド(?)実行できるのだろうか?🤔 D言語のメソッド呼び出しと区別が付かないような気がするのですが...?

2022/09/24

AM中に起床。

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

随分待たされましたがエアコン修理。ラジエター部分を全とっかえで復帰。ここ最近は少し涼しくなってしまっているので、 あまり体感できない感じです😓。

調べ事。D言語からDirect2DとかDirectWriteとか使えるのかと思って こちらのバインディング(auroragraphics/directx) を試してみているのですが、そもそもC++での使い方が良く判っていないのに加えて、C++ではテンプレートで包まれているものが D言語では生で使うものしか無いみたいで 対応関係が判らず死亡。

2022/09/23

AM中に起床。

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

竜とそばかすの姫。そういや竜がいきなり悪者設定で登場したのですが、なんでだっけ? がイマイチよく判らなかった気も。格闘ゲームモードで強い奴が居るってだけの事だったのでは?

そういや土嚢の代わりに「水嚢」なるものを浸水対策として使うってのがあるみたいですが、機能するの?と思ったりも。 水を袋に入れたところで比重が同じなので簡単に流されてしまうのでは?
ついでに「水に浮く家」。浮くのはギリ良いとして、元の位置に戻るのだろうか? 水が引いた後、数十センチずれた位置に 移動したり、浮いている最中に流れてきたゴミが家の下に挟まって傾いたりすると、元に戻すのは地獄だよなぁ?とは思ったりも。

2022/09/22

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

東京都コロナ感染者。新規は 8850人。横ばいになってるな。

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

2022/09/21

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

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

Web巡回して終了。

2022/09/20

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

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

台風14号。停電や断水などは地味にダメージが残っている模様。

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

2022/09/19

AM中に起床。

掃除したり。

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

台風14号。かなりゆっくり九州を通過しているように思うのですが、ニュース的には思ったよりも大ごとにはなっていない感じに思ったりも。 まだ被害状況が判っていないだけかもしれませんが。

調べ事。

2022/09/18

AM中に起床。

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

そういえばCygwinで「locale -a」の中に japanese.euc や japanese.sjis が含まれなくなっているなぁ?と思ったり。 少し前まで入っていたと思ったのですが、使う事はほぼ無かったのもあって いつ頃から含まれなくなったのかは不明です。 一時的にLANGなどを指定すればその時だけ切り替えられるという利点はあるのかも。 それよりも、ターミナル出力はutf-8なのにリダイレクトすると シフトJIS出力になるもの(例えば ipconfigとか)は 一貫性が無いので逆に扱いが困る感じに思います。

と記した後にもしやと思って、Cygwin32で locale -a を実行したらjapanese.euc や japanese.sjis が含まれてました。 Cygwin64の locale -a には含まれていなかったというオチでした。 Cygwin32で 意図的に入れた記憶はありませんが何かやったっけ?🤔

2022/09/17

AM中に起床。

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

Cygwinの emacs 28.2パッケージ。ネイティブコンパイルを有効にしたビルドも準備中みたい。

その後、予定通りemacs 28.2-2 のCygwin64パッケージがテストリリースされた模様 ([ANNOUNCEMENT] emacs 28.2-2 (64-bit only, TEST))。 恐らく 28.1の時と同じく当面テスト期間を置くのかなと思われます。

2022/09/16

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

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

Cygwinの emacs 28.2-1が来た模様。今回のリリースもネイティブコンパイルは無しのようです。
そんな訳でビルドしたIMEパッチ版に入れ替える作業を行って移行。ちょろっと使った感じでは問題無さげ。 という訳で明日付けになっていますが 「Emacsの雑記」を28.2ベースに更新してみました。御参考まで。

2022/09/15

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

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

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

2022/09/14

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

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

たまたまザッピングして観たTV番組で「国立映画アーカイブ」 という機関があるのを知りました (参考Wikipedia)。 大量の映画や記録フィルムが保管されているというのを知りました。ほぅ....

2022/09/13

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

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

Emacs-28.2を--with-native-compilationでビルド。native-compilationは Cygwin64のemacs-w32では一応利用可能なのですが、 child_info_fork::abortのメッセージが出た場合は 対象のelnファイルを消して再度コンパイルし直して.... をエラーが出なくなるまで繰り返す必要があります。安定して使えるようになるのに少し手間がかかります。 ただ、やっぱり安定性を求めるなら 28.1と同じく native-compilationは無しの方が良いという個人的な見解は変わりません。 結局、Cygwin64の emacs 28.1-2 はネイティブコンパイルを有効にしたテストリリースが アナウンスされたものの その後正式リリースはされずに今に至る感じです。 .elnにすれば なんでもかんでも圧倒的に速くなるのであれば もっと積極的に使う流れになったかも知れませんが そういうモノでは無かったのが残念な感じには思います。

2022/09/12

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

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

Emacs-28.2が出てる模様(Emacs 28.2 released)。 先月、年末くらいに出るかな?と予想してましたが、 先日準備が進んでそうという流れからのリリースとなってるみたい。 年内に28.1と28.2が出た感じなので思ったよりも大分早かったかも。

Emacs-28.2。IMEパッチを当ててビルドしてみたのですが、いきなりズッコケたりはしない感じ。 28.1.91との差分は地味に多い気がします。

2022/09/11

AM中に起床。

掃除したり洗濯したり。

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

diff -y での異なる行の色付け。diffutils-3.8のソースコードを少し眺めてみたところ、ちょっと弄れば異なる行の色付けが できそうだったので試してみたり。

diff -y カラーリング

取り合えずデフォルトは暗い黄色にしてみました。元々--paletteオプションを使えば色を変えられる仕組みになっていて、 今回の異なる行に対してはdfというキーワードを追加しました。 因みに --paletteのキーワードについては、man diff や diff --help には説明が無いのですが、info diff の方に説明が記されてるようです。
そんな訳でパッチを置いてみます(diff-y_coloring_patch.diff.xz)。 以下のような感じでパッチ適用してビルドすればいけるかと思います。

xz -dc ~/Downloads/diffutils-3.8.tar.xz | tar xf -
cd diffutils-3.8/
xz -dc ~/Downloads/diff-y_coloring_patch.diff.xz | patch -p1
./configure
make

わざわざビルドしてまで使う人が居るとは思えませんが御参考まで。普通に使うにはcolordiffで十分な気もします。
ところで、diffでは色が付かないというWeb記事が結構目についたのですが(その流れでcolordiffに辿り着く訳ですが)、 デフォルトの --color=auto 相当だとTTYへの出力じゃない場合は着色エスケープシーケンスが出力されないのが 知名度を下げているのだろうか?とは思ったりも。

2022/09/10

AM中に起床。

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

エアコンのメーカー診断。結局本体部品を交換する必要があるという事になり、また後日交換作業を行う事に。 保守部品って確保してある訳じゃないんだな。

colordiff。どうやら diff -y の出力か否かの判定をミスる場合があるみたい。-W オプションで幅を広げないと 出力の中央に記されている差分記号をうまく識別できない場合があるようです。また、-rを付加すると色付けが行われないのも 判定をミスっているのが要因のようで、「colordiff --difftype=diffy」で判定を強制すればイケました。 いずれにしても -y の出力フォーマットは後付けで判定するには曖昧なのが原因と考えられるので、 後付けのフィルターで判定するよりは diff本体の方で色付けを決定する方が確実だし簡単だと思います。

2022/09/09

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

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

diffとsdiff。二つのファイルの内容を左右に並べて表示するのに sdiffをよく使うのですが、diffも -yオプションを 使えば sdiffと同等の振舞いになります。今まで習慣で sdiffを使う感じになっていたのですが、sdiffにはできなくて diff -y だとできる事がいくつかあるというのに気づいて、diff -y を使うようにしようかなと思い直したりも。 diff -y でできる事として「--color オプションが使える」、「-r でディレクトリ再帰が使える」が個人的に 使いたくなる所でした。まぁ、どちらも無くても困らないくらいの感じかも知れませんが😅。 ただ、--colorオプションを使った際に、FILE1側のみ存在行と、FILE2側のみ存在行には色が付くのですが、 差分がある行には色が付きません。差分のある行にも色を付けて差分無しと合わせて4色に塗り分けて貰えると 良いのになぁ?と思ったりも。
と記した後にちょろっとWeb検索してみるとcolordiffなるツールの 存在を知りました。Cygwinにもパッケージがありました。使ってみたところdiff -yで差分のある行にも色が 付けられました。diffの代わりとしても動作するようですが、diffの出力を色付けするフィルタとしても機能するようなので、 「diff -y a.txt b.txt | less」でちょっとイマイチに思ったら 「diff -y a.txt b.txt | colordiff | less -R」に置き換えればよいので、diffに --color=always を入力するよりも 楽に思ったりも。ただ、diffの -rオプションを付加すると色付けが行われないようです。なんで?🤔 因みにcolordiffの本体はperlスクリプトのようです。

2022/09/08

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

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

Emacsのmasterブランチで .zstなるファイルをdiredとかで扱う変更が入っているようだったり。 zstdというgzipやxzのようなストリーム系の圧縮プログラムで生成されるファイルの拡張子のようです (参考Wikipedia)。 そういや以前、linuxカーネルをビルドした時に必要だったというのを思い出したり。 何の為に必要だったのかよく分かっていませんでしたけど😓

2022/09/07

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

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

Emacsの28系 git log を眺めていると28.2の準備が進んでいそうな予感。

2022/09/06

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

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

全然関係無い流れで知った動画 「【Full HD】ABENICS : 球状歯車と鞍状歯車の噛み合いに基づく回転3自由度アクティブボールジョイント機構」。 ほぅ....

2022/09/05

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

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

園児バス放置。たった6人の乗り降りを管理できないっておかしくね?

エアコン。電気屋さんに診てもらったのですが、メーカーに診てもらう必要がある重症案件と診断されたため今週は直らない事が確定。 扇風機を貸してくれた。

Web巡回して終了。

2022/09/04

AM中に起床。

掃除したり洗濯したり。

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

エアコンはアパート設備なので大家さんに連絡。電気屋さんが日曜は休みなので今日は耐えるしか🥺

Emacsの29系 git logを眺めていると、image-diredが何やら盛大に書き換えられているようだったり。

2022/09/03

AM中に起床。

買い物にちょろりお出かけ。

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

エアコンが停止。エラーコードを表示しているので死んだ予感。えぇぇ....🥺

ドラマのセリフ「あのプレゼン資料、俺のパソコンに送っといてくれ」。んーーー? 雰囲気として言わんとしている事は分からなくもありませんが、「データを送って」の送り先として 「俺のパソコン」は一般的に意味が通じるものなのだろうか?(通じる訳が無いと信じたい)

TV東京で放送されてた 新美の巨人たちの「ルイス・キャロル「不思議の国のアリス」×篠原ともえ」 (参考)。 これまで挿絵は銅版だと勝手に思っていたのですが、木版(木口木版)だというのを知って驚きました。 木口木版がどういうものかはWikipediaに詳しく記されてます。 因みに「ルイス・キャロルの作品におけるジョン・テニエルのイラスト」が不思議の国のアリスの挿絵の事です。

全然関係無い流れから知った動画 「【機関車】元機関士(運転士)のジーちゃんに、D51機関車を運転させてみた【シミュレーター】」。 元機関士とは言え いきなりイケるというのはスゴい。

2022/09/02

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

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

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

2022/09/01

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

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

調べ事。


TOP PREV