AM中に起床。
掃除したり洗濯したり。
Emacsの31系になる予定のmainブランチをcloneしてパッチ無しの動きを確認できるようにビルドしたり。
ビルド自体は問題無くできたのですが、拙作のsysmonのテキストモードが動かなくなっているなぁ?
というのに気づいて調べたり。どうやら aset関数にマルチバイト文字を指定することができなくなっている模様。
グラフィックスアレイの座標位置にピクセルをセットする感覚で、テキストアレイの文字座標位置の文字を
asetで書き換えるような使い方をしていたのですがダメになったらしい。仕方ないので
substringやらconcatやらを使って切ったり貼ったりする方式に書き換え。釈然とはしていない🙁。
AM中に起床。
何気にJXL画像をEmacsで表示しようとしたら表示できなくなっていたり。
Cygwinの ImageMagickではJXLフォーマットはサポートされていないので 拙作のperlスクリプトで
ラップして見かけ上 JXLフォーマットの読み込みをサポートしている風にしているのですが、
なぜかうまく動かなくなっていたので調べてみたり。
どうやら「magick convert ...」と実行すると
「WARNING: The convert command is deprecated in IMv7, use "magick" instead of "convert" or "magick convert"」
というメッセージが出るようになっているのですが、このメッセージが出ることが悪さをしているようだったので、
「magick」だけにしてみたところ、コマンドラインではうまく動くようになったのですが、
やっぱりEmacs上では表示がうまくできなかったり。なんでだ?🤔
どうやら「magick convert」と「magick」とではコマンド解釈や処理に互換性が無くなっている部分があるようです。
テレワーク。早めに終了。
そういえばと思い、gptelを使って次のようなことをさせてみたり。
以下のようなテキストがあったとして、
| 1 | 1.2.3.4 , 100.101.102.103 | | 2 | 1.2.3.4 , 100.101.102.103 | | 3 | 100.101.102.103 , 1.2.3.4 | | 4 | 1.2.3.4 , 100.101.102.103 | | 5 | 100.101.102.103 , 1.2.3.4 | | 6 | 1.2.3.4 , 100.101.102.103 | | 7 | 1.2.3.4 , 100.101.102.103 | | 8 | 1.2.3.4 , 100.101.102.103 | | 9 | 100.101.102.103 , 1.2.3.4 |
| 1 | 100.101.102.103 , 1.2.3.4 | | 2 | 100.101.102.103 , 1.2.3.4 | | 3 | 1.2.3.4 , 100.101.102.103 | | 4 | 100.101.102.103 , 1.2.3.4 | | 5 | 1.2.3.4 , 100.101.102.103 | | 6 | 100.101.102.103 , 1.2.3.4 | | 7 | 100.101.102.103 , 1.2.3.4 | | 8 | 100.101.102.103 , 1.2.3.4 | | 9 | 1.2.3.4 , 100.101.102.103 |
はい、Emacsでは正規表現置換(query-replace-regexp)とLisp式を組み合わせることで、
文字列Aと文字列Bを一度に入れ替えることが可能です。
以下の手順で操作します:
1.C-M-% (または M-x query-replace-regexp)を入力します。
2.置換対象(Query replace regexp)に次のように入力し、Enter を押します。
\(文字列A\)\|\(文字列B\)
3.置換後(with)に次のように入力し、Enter を押します。
\,(if \1 "文字列B" "文字列A")
※ \, は後に続くLisp式を評価することを意味します。この式は「もし1番目のグループ
(文字列A)にマッチしたら文字列Bに、そうでなければ文字列Aに置き換える」という
処理を行います。
4.あとは通常の置換と同様に、y(置換する)や !(すべて置換する)で進めます。
テレワーク。早めに終了。
BIOSアップデートが来ていたので入れたり。念のためUSB-typeCは本体から外しておいた為か今回も失敗はせず。
テレワーク。気持ち早めに終了。
Emacsのハング確認。パッチをあてたCygwin3.6.6で丸4日ほど Emacsのimage-dired+スライドショーで
負荷確認をしていましたが期待通りハングせず。WindowsUpdateのため一旦終了。
WindowsUpdate後に Winボタンからアプリを探そうとしたら変なカテゴライズをされていて
これまでの縦に全部表示されるメニューが無くなっているようだったり。
表示方法は切り替えられるようですが、自分で分類できないカテゴリ表示なんて誰が使うの?
テレワーク。気持ち遅めに終了。
先日のorg-modeで表をHTMLエクスポートしない記述方法を含んで
「Emacs Org-mode の覚え書き」
を更新してみました。御参考まで。
AM中に起床。
そういえば、org-modeで 表を元にして gnuplotや Rを使ってグラフ画像を描くことができますが、
HTMLなどにエクスポートする際にはグラフ画像だけをエクスポートしたいと思ったとき、
org-modeの8.3以降では方法が分らないという事がありました(以前のメモ)。
何気に検索してみると、AI回答に方法が示されていたので試してみたところ、所望の結果が得られたり。
#+BEGIN_SRC R :var data=R_data :file noexport_test4.png :width 640 :height 400 :results graphics :exports results split.screen(c(1,2)) screen(1);pie(data[,2],labels=data[,1], clockwise=TRUE) screen(2);barplot(data[,2],names.arg=data[,1]) #+END_SRC [[./noexport_test4.png]] *** データテーブル群 :noexport: #+NAME: R_data | a | 0.35 | | b | 0.45 | | c | 0.1 | | d | 0.1 |
AM中に起床。
掃除したり。
ちょっとだけ「Emacsの雑記」を更新しました。
最近のハングの件とか、パッケージのImageMagickが更新されたのに対応したパッチ更新とか、
本文のマイナーな更新を行いました。Emacs本体のパッチの更新はありません。御参考まで。
よく見るとDMDの2.112.0がリリースされてるみたい
(Change Log: 2.112.0)。
インストールして手持ちのコードでICE落ちする件
(以前のメモ1,
以前のメモ2)
がどうなっているか確認してみたのですが、
状況変わらず。
$ dmd -m64 -O -I. -version=Unicode -version=Windows10 -version=IE5 -c GameFrame.d -of=GameFrame.obj tym = x14 Illegal instruction $ dmd --version DMD32 D Compiler v2.112.0 Copyright (C) 1999-2025 by The D Language Foundation, All Rights Reserved written by Walter Bright
AM中に起床。
アパート契約更新にお出かけ。ほどなくして手続き完了。
以前、sortコマンドのフィールドの解釈がよくわからないという事を
記したのですが、そういやと思い ローカルLLMのgpt-oss-safeguard:120bで
「sortコマンドで行頭に任意数の空白文字があるとき、第1フィールドはどういう文字列と解釈されますか?」
と聞いてみたところ、行頭の空白文字は無いものと見なされるという返事が返ってきました。
例として以下のように記されていたのですが、
#+begin_src bash
$ cat file
banana 2
apple 10
cherry 30
# 第1フィールドで文字列比較(行頭空白は無視される)
$ sort -k1 file
apple 10
banana 2
cherry 30
#+end_src
$ cat sorttest.txt
banana 2
apple 10
cherry 30
$ sort -k1 sorttest.txt
banana 2
cherry 30
apple 10
$ cat sorttest.txt
banana 2
apple 10
cherry 30
$ sort -k1 -b sorttest.txt
apple 10
banana 2
cherry 30
テレワーク。早めに終了。
Web巡回して終了。
テレワーク。気持ち早めに終了。
調べごとをして終了。
テレワーク。早めに終了。
調べごとをして終了。
テレワーク。早めに終了。
ちょろり実験コーディング。
AM中に起床。今日までお休み。
掃除したり。
微妙に不調。
AM中に起床。
「オトメの帝国(20)」。まさか2周目に入るとは思っていませんでしたが最終巻です。
「推しが武道館行ってくれたら死ぬ(12)」。
「おまえは好きな相手が同じ次元にいるだけでありがたいと思え」(以前のメモ)
は個人的に名言と思っています😅。この頃はアニメやドラマになるとは全く想像していませんでしたが。
こちらも最終巻です。
AM中に起床。
たまたま観た「ミッシング・リンク」というアニメ映画。ずっとCGアニメーションだと思って
観ていたのですが、エンディングロールでストップモーションアニメーションだというのが分り
マジでか?と思ったりも。
制作スタジオの「ライカ(Laika)」(Wikipedia)
で、画像検索してみると あれもこれもそういやそうだと 気づく感じでした。
Inkscapeでいわゆる等角投影図(アイソメ図)を描く用のグリッド表示ってできるんだっけ?と思って
調べてみたらちゃんとできるようです(参考ページ)。
でも、グリッド設定ではなくて図の角度設定で描いている例も意外と多いみたいです。
先週知った通り、Eテレで放送されていた「AKIRA」を観たり。
今の技術を使うとどうなるだろうか?と思います。
AM中に起床。
ぐうたら過ごして終了。
あけましておめでとうございます。今年もよろしくお願いいたします。
EmacsのIMEパッチと「Copilot Keyboard」の組み合わせで長い文を入力するとスローダウンする件。
なんとなく条件があるっぽい。
一つは「nyan-modeでアニメーション表示をしている」と再現し易いみたい。
再現している状態でウインドウメッセージを観察していると「WM_IME_NOTIFY(0x0282)」だけで
埋め尽くされる状況になっている、という感じの模様。
WM_IME_NOTIFYに絞ってwParamを確認してみたところ、「0xf」というパラメータ値で大量にメッセージが
送られてきているようでした。ただ、この0xfという値のパラメータについては定義が無くて、
どういう目的でどのような時に送られてくるメッセージなのかが分らず。
因みに0xfのパラメータは元のMS-IMEでも送られてくるので「何かわからないけどそういうもの」
なのかも知れません。
nyan-modeとの因果関係がわからないと思ったのですが、もしやと思い
nyan-animation-frame-interval というアニメーション速度を調節するカスタム変数の値を少し大きくしてみた
(==アニメーションスピードを下げた)ところスローダウンが軽減されるようです。
どうやら WM_IME_NOTIFYの発生は Emacs側にも関係しているようで、Emacs側で何かしら描画に関する処理
(例えばnyan-modeの描画だったりカーソルのブリンク表示だったり)が行われるとメッセージが発生しているようです。
nayn-modeを止めて且つカーソルのブリンク表示が止まった状態であれば、Emacs側起因ではメッセージは発生しないようで、
文字入力したタイミングに合わせたメッセージのみが発生しているようでした。
この場合のメッセージ処理はIMEのものしか無い為、待たされてスローダウンすることも無いようです。
いずれにしてもMS-IMEの時には問題になるようなことは無いので、Copilot Keyboard特有の現象のように思えます。
nyan-modeはいつも(nyan-start-animation)で使用しているのですが、(nyan-stop-animation)すると
何も表示されなくなるなぁ?というのに気づいたり。
Emacs29からできるようになった
「C-M-<wheel-up> や C-M-<wheel-down> でフレームやウインドウのサイズはそのままに フレームのフォントを大きくしたり小さくしたりする」
機能に対応する為にパッチを当てていたのですが、アニメーションしない場合の処理がバグっていました。
修行が足りません🥺。
AM中に起床。
EmacsのIMEパッチと「Copilot Keyboard」の組み合わせで長い文を入力するとスローダウンする件を
少し調べてみたのですが当たりは付かず。
そんな訳で今年を振り返り。
AM中に起床。
AI連携した日本語変換って無いのだっけ?と思って検索していたところ、
「Copilot Keyboard」なるものがストアアプリにあるというのを知り少し試してみたり。
結果から言うと変換自体の性能についてはよくわからず。そちらよりも入力ミスを修正するエディタ機能の
ほうがイマイチで、途中で間違えていた部分を変換確定せずに入力し直す方法がわかりませんでした。
また、間違った変換をうっかり確定させてしまった場合に、それを削除する手段もまだ機能していないようです。
あと、EmacsのIMEパッチに原因がありそうですが、40文字程度のひらがな原文を入力したところで
異常に動作が遅くなります。メモ帳ではそんなことにはならないようなので、原因を調べてみる必要が
あるかもしれません。
パルコのパプリカのコラボCM。なぜパプリカ?と思ったのですが色々あるっぽい。
公開20周年で4Kリマスターでリバイバル上映されるというのも関係があるみたい。
PS3とFullHDのディスプレイを買った直後にBlu-Rayソフトとして買って観たのも
それくらい前かと思ったりも。
監督の今敏氏は2010年に亡くなられた(以前のメモ)のですが、
作品は残り続けるだろうと思います。
AM中に起床。
ちょろりお出かけ。
先日のキーボードマクロの記録を調べるのに拙作の kbm-cheat-sheet.el というのを使ってますが、
そういやひとつ前に放流したのは 29系以降の対応が入っていないなぁ?
というのに気づいたり。ついでにデバッグの時に表示の幅が足りなくてコードを弄ったりしていたのを
カスタム変数で変更できるようにしてみました。今のところmasterブランチ(31系)でも使えてそうなので、
放流してみます(kbm-cheat-sheet_251229.tar.xz)。
御参考まで。
気づいていませんでしたが、Inkscapeの1.4.3がリリースされていました。
バグフィックスリリースの模様。
TV放送していた「Avatar: The Way of Water」。ただただ「水スゲー」と思いました。
2009年公開の1作目から2022年公開の本作品までの 13年間で映像技術も大きく進歩した結果なのでしょうか。
一部のシーンでは実写との合成もありそうですが、全部CGと言われても驚きは無い感じかも知れません。
何気に「ime 誤変換を減らす方法」でGoogle検索してみたところ、AI回答の中に
「入力の工夫」として
「こまめに変換する: 長い文章を一括で変換するよりも、文節ごとなど短く区切ってこまめに変換することで、誤変換のリスクを減らせます。」
ということが記されていたのですが、実際のIMEの実装の事を問わなければ「そんな訳ないでしょ?」
と思ったりも。短く区切ると文脈が分からないので単語だけで変換したときの誤変換は増えると思います。
ただし実際に「文脈を読み取っていれば」ですが。
AM中に起床。
掃除したり洗濯したり。
Emacsのキーボードマクロのシーケンスに isearchとIMEパッチによるIMEからの文字列入力を含むと、
with-keyboard-codingというシーケンスが追加されるのですが、マクロ実行するとエラーで停止してしまいます。
例えば以下のようなシーケンスの場合とその時に記録されている内容です。
;C-oはIMEのON/OFFトグルで、C-sで文字「あ(\30102)」を探して「い(\30104)」に書き換える Seq: C-s C-o \30102 <with-keyboard-coding> \30102 C-o C-b C-d C-o \30104 C-o
(defun my-fix-last-kbd-macro ()
"最新のキーボードマクロシーケンスを修正する"
(interactive)
(let ((olist (append last-kbd-macro nil))
(newlist)
)
(while olist
(if (eq 'with-keyboard-coding (car olist))
(setq olist (cddr olist))
)
(when olist
(setq newlist (append newlist (list (car olist))))
(setq olist (cdr olist))
)
)
(setq last-kbd-macro (vconcat newlist))
))
Seq: C-s C-o \30102 C-o C-b C-d C-o \30104 C-o
AM中に起床。
ちょろりお出かけ。
Emacs31系となる予定のmasterブランチを git pullしたり。パッチ類のコンフリクトは発生せず、
ビルドも問題無さそうなのですが、以前、
list-charset-charsでグリフの無い文字の表示が変になっている件は変わらず。
そもそもどういう理屈で HexBox表示と 8進数表示 の差が出ているのかを調べてみることにしました。
どこで何をやっているのか全く見当がつかなかったのですが、w32font.cの中で
GLYPHLESS_DISPLAY_HEX_CODEというenum定義を見つけたので、それを頼りに辿ってみたところ、
どうやら xdicp.c内の 関数lookup_glyphless_char_display() が判定に関係しているというのが判りました。
この関数では渡された 文字コードをキーに Vglyphless_char_display というテーブルと照らし合わせて
グリフの有無(厳密には実際の表示可否はまだ決定できていない)を検査し、
グリフが無ければどのタイプで表示するかを文字毎に関連付けているようです。
因みに、グリフの無い場合の表示タイプには HexBox表示となる GLYPHLESS_DISPLAY_HEX_CODE や
半角豆腐表示となる GLYPHLESS_DISPLAY_EMPTY_BOX などがあるようです。
実際の表示に関係するのは xdisp.c内の 関数get_next_display_element() で、
ここで実際にグリフの有無が決定できるようで、グリフが無い場合は8進数(もしくは16進数)で
表示するという感じになっているようです。コードを読んで初めて知ったのですが、
display-raw-bytes-as-hexという変数をtにすれば8進数表示ではなく16進数表示に切り替えられるようです。
ほぅ....。
さておきここまでで、関数lookup_glyphless_char_display()や 関数get_next_display_element()は
Emacs30.2との違いは無いのと、仕組み的に Vglyphless_char_display というテーブルの内容次第で
どうにでも変わるという所から、テーブルの方に変更が加わっているのではないか?と考えられます。
Vglyphless_char_displayは ELISPからも 変数glyphless-char-display で参照/更新が可能で、
lisp/international/characters.el とかで値を設定したりしているようです。
が、ここでは関係しそうなEmacs30.2との違いが見つけられず。
「(type-of glyphless-char-display)」で調べてみると「char-table」という型のようですが、
参照の仕方がよくわからない🥺。30.2と比べてみれば表示の違いの原因が分かりそうなのですが....
うーん、デバッグコードを仕込んで観察していたのですが読み違えていたかも。
HexBox表示の文字と8進数表示の文字の両方でどうなるかを 関数lookup_glyphless_char_display() で
観察してみたのですが、どちらも Vglyphless_char_display の参照結果は NILP になっていました。
どうやら意図的に表示をコントロールするような場合に使うのか?と思ったりも。
だとすると 変数glyphless-char-display を設定するコードに違いが見当たらないのも納得できます。
メカニズムは判明。
xdisp.c内の 関数get_next_display_element() の中で表示に関する判定がいくつかあるのですが、
とあるif分の条件に「! CHAR_PRINTABLE_P (c)」というのがあり、HexBox表示の場合は0、8進数表示の場合は1
となっているようでした。この関数自体は30.2と違いが無いので、CHAR_PRINTABLE_P(c) の戻り値が
変わっているものと考えられます。printableという単語で気づいたのが、
masterブランチの lisp/international/characters.el に以下のようなコードブロックが追加されていて、
;;; Setting printable-chars. The default is nil for control characters,
;;; otherwise t.
;;; The table is initialized in character.c with a crude approximation,
;;; which considers any non-ASCII character above U+009F to be printable.
;;; Note: this should be consistent with [:print:] character class,
;;; see character.c:printablep.
(let ((table (unicode-property-table-internal 'general-category)))
(when table
(map-char-table (lambda (key val)
;; Cs: Surrogates
;; Cn: Unassigned
(when (memq val '(Cs Cn))
(set-char-table-range printable-chars key nil)))
table)))
commit 68a37760dec83a8126b03bcacc60a96644a6831f
Author: Eli Zaretskii <eliz@gnu.org>
Date: 2025-02-28 23:22:30 +0900
Fix the values and documentation of 'printable-chars' table
* src/character.c (syms_of_character) <printable-chars>: Doc fix.
* lisp/international/characters.el (printable-chars): Fix values
for non-ASCII characters.
* doc/lispref/nonascii.texi (Character Properties): Add
cross-reference for what is a printable character.
* doc/lispref/display.texi (Usual Display):
* doc/lispref/searching.texi (Char Classes): Add indexing.
(Bug#76611)
---
doc/lispref/display.texi | 1 +
doc/lispref/nonascii.texi | 5 ++++-
doc/lispref/searching.texi | 2 ++
lisp/international/characters.el | 16 ++++++++++++++++
src/character.c | 5 +++--
5 files changed, 26 insertions(+), 3 deletions(-)
テレワーク。早めに終了。
Windowsの壁紙にシーギリヤロック(参考Wikipedia)
の写真が表示されていたのですが、こんな「Horizon Zero Dawn」に出てきそうな場所が実際にあるんだと思ったり。
gptel+Ollama+gpt-ossでテキストファイルを読み込ませる事ができるという事を今更ですが知りました。
以前、「EmacsのInfoをAI検索(文章の意味検索)できれば...」
という事を書いたのですが、できるんじゃね?と思い試してみました。
テキスト化するのに docディレクトリ内で「makeinfo --plaintext -o xxxxx.txt emacs.texi」と実行すれば
xxxxx.txtに全文プレーンテキストで出力されます。
で、gptelで生成したxxxxx.txtを指定して、
「このテキストファイルはEmacsの英文マニュアルです。この中にマウスを使って矩形領域を選択する方法が
記されていればその方法を日本語に翻訳して教えてください。」としてみたところ、
「Ctrlキーを押しながら左マウスボタンをドラッグする」という旨の回答が返ってきました。なんか違います🥺。
モデルはgpt-oss-safeguard:120bを使用しました。
因みに git masterブランチを使用したのですが、それでは「14.5 Rectangles」のセクション内に
「 A rectangular region can also be marked using the mouse: click and
drag ‘C-M-mouse-1’ from one corner of the rectangle to the opposite.」
という文言がありますので、これを見つけられれば正解になるハズなのですが....。
世の中にはイケるモデルもあるかも知れませんが、今回試した感じではダメでした。
書いてあるけど見つけられないのか、書き方が悪いのかはよく分かりません。
もう一度「このテキストファイルはEmacsの英文マニュアルです。この中にマウスを使って矩形領域を選択する
方法が記されています。注意深く探してその方法を日本語に翻訳して教えてください。」
としてみましたが、やっぱり「Ctrlキーを押しながら左マウスボタンのドラッグ」という回答だったので、
reasoningを見てみました。翻訳した文言の中に
「標準的なEmacsでは、マウスを使って長方形を設定します。C-M-<drag-mouse-1>長方形領域を設定するには、
を押したままにします(またはM-x rectangle-mark-mode)。」
といった事が記されていて、実際に書かれている内容にカスっているように思えるのですが、
途中で「Mouse-Rectangle」なるノードの記載がある(実際には無い)ような旨が記されていて、
憶測が含まれる形で
「Emacsでは「mouse-set-rectangular-region」がC-<drag-mouse-1>にバインドされていたと思います。」
という謎のmouse-set-rectangular-regionという関数やら、どこが出所かわからない情報で
最終的に「コマンドはおそらくコピーなどのための長方形の領域を設定する「C-<drag-mouse-1>」です。」
と判断しているみたいです。
元の文書も マウス操作についてのセクションがある割にはそこには選択については記されておらず、
矩形のセクションに取ってつけたような文言でマウスの矩形選択操作が記されているわで、
やっぱ元の文書も分かりにくいのかなぁ?と思わなくもありません。
テレワーク。早めに終了。
Web巡回して終了。
テレワーク。早めに終了。
gptelのorg-modeを使用したとき、ローカルの画像ファイルをチャットバッファにドラグ&ドロップすると、
埋め込み画像にするか、リンクとして挿入するかなどを選ぶポップアップメニューが表示されます。
そういうものなのかと思っていたら、org-modeの機能だという事を知りました。
そして、30.1に同梱されているorg-modeから使えるようになった機能だったようで、29.xとかでは使えなかった模様。
gptel+Ollama+gpt-oss-safeguard:120bで指定した桁数だけ円周率を表示するD言語の関数を作成させてみたところ、
// 指定した桁数だけ円周率を表示する関数
void print_pi(int N)
{
// πの小数部分を格納した文字列(必要な桁数まで用意)
immutable string piDigits =
"14159265358979323846264338327950288419716939937510"~
"58209749445923078164062862089986280348253421170679"~
"82148086513282306647093844609550582231725359408128"~
"48111745028410270193852110555964462294895493038196"~
"44288109756659334461284756482337867831652712019091"~
"45648566923460348610454326648213393607260249141273"~
"72458700660631558817488152092096282925409171536436"~
"78925903600113305305488204665213841469519415116094"~
"33057270365759591953092186117381932611793105118548"~
"07446237996274956735188575272489122793818301194912"~
"98336733624406566430860213949463952247371907021798"~
"60943702770539217176293176752384674818467669405132"~
"00056812714526356082778577134275778960917363717872"~
"14684409012249534301465495853710507922796892589235"~
"42019956112129021960864034418159813629774771309960"~
"51870721134999999837297804995105973173281609631859";
// Nが負の場合は0に補正
if (N < 0) N = 0;
// 出力用に必要な桁数がpiDigitsに足りない場合は切り捨て
int maxDigits = piDigits.length;
if (N > maxDigits) N = maxDigits;
// 「3.」と小数部N桁を結合して表示
write("3.");
if (N > 0)
{
write(piDigits[0 .. N]);
}
writeln();
}
テレワーク。早めに終了。
調べごとをして終了。
テレワーク。早めに終了。
H3ロケット8号機の打ち上げ失敗。同じ型の3,4,5号機は成功していたようですが
今回は何か違ったのだろうか?
そういえば以前 gptel+Ollama+oss:20b で矩形選択の
方法を聞いても全然ダメなのが返ってきていたのですが、GoogleのAIモードだとどうだろう?
と思い聞いてみたところ、イケてる回答が返ってきました。
定点観測している「least」のGoogle翻訳。前回は2021年4月
(それより前は
2019年3月,
2016年9月)
ですが、「いらばん少ない」は変わらず。

辞書の改訂はしていないのだろうなと思えます。
AM中に起床。
掃除したり洗濯したり。
ちょろり実験コーディング。
AM中に起床。通院。
VirtualBoxのFedoraでvncserverの起動。
どうにもならなかったので、Xfceというデスクトップ環境
をインストールしてそちらを立ち上げてみることにしたり。でもやっぱりVNCで繋がるものの黒い画面だったのですが、
VirtualBox画面のgnomeデスクトップの方にXfceのメニューバーなどが表示されているという謎な状況になっていたり。
よく分かりませんが、VirtualBox画面ではログインせず vncserverを起動すれば 黒い画面ではなくデスクトップが
表示されました。でも、VNCで表示できている状態で VirtualBox画面でgnomeデスクトップにログインした後、
VNCのXfce側でターミナルアプリを起動するとVNC側ではなくVirtualBox画面側のgnomeデスクトップに
起動したターミナルウインドウが表示されるという謎な状況になりました。
ディスプレイは :0 と :1 で別になっていそうなのですが、表示がめちゃくちゃになっています。なんだこれ?🤔
テレワーク。早めに終了。
気づいてませんでしたがGIMPの3.2RC2が出ている模様
(アナウンス)。
VirtualBoxのFedoraでvncserverを起動して UltraVNCで接続しようとしたのですが繋がらず。
vncserverの起動で実行される xstartupスクリプト の中で /etc/X11/xinit/xinitrc がコアダンプしてる模様。
なんで? gnome-session を実行するように書き換えてみたところ、こちらもエラーが発生していて、
接続はできるのですがウインドウマネージャが無い状態になってて用事にならず。
旧PCで試した時は記憶に残っていないくらい問題なくデスクトップに接続できていたような気がするのですが?🤔
テレワーク。気持ち早めに終了。
sshの-Yオプションを使ってリモートのLinuxマシンからローカルのXサーバー(VcXservを使用)に画面を出そうとしたけど出ず。
一番最後に突っかかっていた原因は Cygwinのbashでログイン前のシェルでの変数DISPLAYが「:0.0」となっている
のが問題だったようです。「export DISPLAY=localhost:0.0」してから「ssh -Y user@host」でログインしたのち、
「emacs-gtk+x11 &」とかすればOKでした。「:0.0」と「localhost:0.0」は同じじゃないのか?🤔
テレワーク。早めに終了。
Web巡回して終了。
テレワーク。早めに終了。
Ollama+gpt-oss-safeguard:120b+gptel で生成させたD言語のコードの中に
bool[][] visited = new bool[][maze_height]; foreach (i; 0 .. maze_height) visited[i] = new bool[maze_width];
bool[][] visited ; visited.length=maze_height; foreach (i; 0 .. maze_height) visited[i].length=maze_width;

テレワーク。気持ち早めに終了。
Web巡回して終了。
AM中に起床。
掃除したり。
先日のソートのコード。flymakeの都合で肝心な箇所のメッセージが削られていて訳が判らない
感じになっていました。エラーメッセージの全文は以下のような感じでした。
C:\D\dmd2\windows\bin\..\..\src\phobos\std\algorithm\sorting.d(1963): Error: static assert: "The return type of the template argument 'less' when used with the binaryFun!less template must be a bool. This is not the case, the returned type is 'int'"
static assert(is(LessRet == bool), "The return type of the template"
^
gptel_test6.d(175): instantiated from here: `sort!((a, b)
{
double angA = atan2(cast(double)a.y - cy, cast(double)a.x - cx);
double angB = atan2(cast(double)b.y - cy, cast(double)b.x - cx);
return angA < angB ? -1 : angA > angB ? 1 : 0;
}
, SwapStrategy.unstable, Point[])`
vertices.sort!((a, b) {
^
vertices.sort!((a, b) {
double angA = atan2(cast(double)a.y - cy, cast(double)a.x - cx);
double angB = atan2(cast(double)b.y - cy, cast(double)b.x - cx);
return angA > angB ; //元→ angA < angB ? -1 : (angA > angB ? 1 : 0);
});
$ cat -n random_test.d
1 import std.stdio;
2 import std.string;
3 import std.random;
4
5 void printRnd(Random rnd)
6 {
7 writeln(uniform(0, 10, rnd));
8 }
9
10 int main(string[] args)
11 {
12 auto rnd = Random(unpredictableSeed);
13
14 for(int i=0; i<10; i++){
15 printRnd(rnd);
16 }
17
18 return 0;
19 }
$ dmd random_test.d
$ ./random_test
6
6
6
6
6
6
6
6
6
6
$ cat -n random_test.d
1 import std.stdio;
2 import std.string;
3 import std.random;
4
5 void printRnd(Random* rnd)
6 {
7 writeln(uniform(0, 10, rnd));
8 }
9
10 int main(string[] args)
11 {
12 auto rnd = Random(unpredictableSeed);
13
14 for(int i=0; i<10; i++){
15 printRnd(&rnd);
16 }
17
18 return 0;
19 }
$ dmd random_test.d
$ ./random_test
2
3
1
5
0
5
4
8
9
6
AM中に起床。
Ollama+gpt-oss-safeguard:120b+gptel でD言語コードを生成させていたのですが、
その中に以下のような感じでソートを行うコードが生成されました。
vertices.sort!((a, b) {
double angA = atan2(cast(double)a.y - cy, cast(double)a.x - cx);
double angB = atan2(cast(double)b.y - cy, cast(double)b.x - cx);
return angA < angB ? -1 : (angA > angB ? 1 : 0);
});
テレワーク。早くもなく遅くもなく終了。
Ollama+qwen3-vl:30b+gptel でいくつか円が描かれた画像を示して、何個の円が描かれているかを数えさせてみたのですが、
数え間違えることの方が多いなぁ?と思ったり。

「この画像には何個の円が描かれていますか?注意深く数えてください。」と記したところ「11個」という
回答でした。正解は16個です。左下に小さな円が描かれているのですが、人間だと見逃す感じかも知れません😅。
が、機械なのでそれを見逃さないのを期待したいところです。
テレワーク。早くもなく遅くもなく終了。
なぜかまたデスクトップPCのFrimwareアップデートが来ていたり。
前回入れたのは11月末頃だったのですが、そういえば
それより前のアップデートは失敗していたので、もしかするとアップデートに失敗していなければ、
こんなに高頻度でアップデートが来る訳ではなかったのかも?と思ったりも。判りませんけど。
よく分かりませんがGitHubが死んでる?
テレワーク。早めに終了。
Web散策していて知った
「第2回 1986年のCOM VS 2023年のAI 「オセロ」 COM後手編 1986 COM VS 2023 AI Othello」
という動画。AIオセロの方はどういうアプリなんだ?とは思ったりも。
テレワーク。早めに終了。
Web巡回して終了。
本日休業。AM中に起床。
掃除したり洗濯したり。
ちょろりお出かけ。思わず文具を購入。
そういえばいわゆる「つけペン」のペン先ってあるかなぁ?と思って近くの比較的大型の
文具店を見てみました。以前、一点物の「ガラスペン」の存在を知り、
その後、文具店で時々見ていると一時的にガラスペンブームがあったのですが、ついでに万年筆タイプのペンも
置かれている感じはあったものの、つけペンはその並びには無いなぁ?
と思ってました。で、今日なにげに見てみると つけペンのセットやペン先が置かれていて、
なんで?と思いながら試しに購入してみました。「カブラペン」の3本入りと「Gペン」の3本入りを
買ってみたのですが、各572円(税込み)でした。1本50円くらいだった記憶しかなかったものですから、
おぅ.....と思ったのは秘密。
引き出しの奥にしまってあった、随分前(多分27年くらい前)に買った「証券用インク」に値札が付いていて
450円って書かれていました。しかし35年くらい前には300円くらいで買えていたので「高くなったなぁ....」と
思ったのですが、現在は税込みで715円らしいのでやっぱり高くなってるなぁとは思ったりも。
致し方なしかも知れません。インクを検索していると
こちら
のような350mlの詰め替え用みたいな商品があるのを知ったり。ほぅ....。製図用だけで証券用のは無いみたい。
そういやPILOTのページでは日本語表記が「インキ」ってなってるな。
どうやら「インク」は英語のinkのカタカナ読みで、「インキ」はオランダ語のinktのカタカナ読みが由来らしい。
粘度の違いで使い分ける場合があるようですが、一般的には「インク」を使う場合が多く、
印刷業界では「インキ」を使う場合があるという感じみたいです。知りませんでした。
帰省から帰着。
全然関係ない流れで セガの「OutRun」が映画化されるらしいのを知ったり
(参考)。
どういう感じになるのか全く想像がつきません。
AM中に起床。
ちょろり帰省。
テレワーク。早めに終了。
調べごとをして終了。
テレワーク。早めに終了。
Web巡回して終了。
テレワーク。早めに終了。
調べごとをして終了。
テレワーク。早めに終了。
gptelでD言語の乱数を使うようなコードを生成させてみたのですが、次のように乱数生成関数を
使用するようなコードが生成されました。
auto rnd = Random(unpredictableSeed);
:
int x0 = cast(int)rnd.uniform(minX, maxX + 1);
auto rnd = Random(unpredictableSeed);
:
int x0 = cast(int)uniform(minX, maxX + 1, rnd);
テレワーク。早めに終了。
C言語で何気に巨大な値を代入しようとしたところ、コンパイラでワーニングが出て、そうなんだっけ?
と思った事があったのでメモ。
$ cat sizet_testc.c
#include <stdlib.h>
#include <stdio.h>
int main()
{
size_t a = 256*1024*1024*1024;
printf("%lld\n",a);
return 0;
}
$ cat sizet_testd.d
import std.stdio;
import std.string;
int main()
{
size_t a = 256*1024*1024*1024;
writef("%d",a);
return 0;
}
| 言語 | コンパイラバージョン | コンパイルオプション | コンパイルメッセージ | 実行表示結果 | |------+----------------------+----------------------+------------------------------------------------------------------------------------+--------------| | C | gcc 13.4.0 | 無し | 警告: integer overflow in expression of type ‘int’ results in ‘0’ [-Woverflow] | 0 | | D | dmd v2.112.0-beta.1 | 無し | [無し] | 0 | | D | dmd v2.112.0-beta.1 | -m64 | [無し] | 0 |
| 言語 | コンパイラバージョン | コンパイルオプション | コンパイルメッセージ | 実行表示結果 | |------+----------------------+----------------------+--------------------------------------------------------------------------------------+--------------| | C | gcc 13.4.0 | 無し | [無し] | 274877906944 | | D | dmd v2.112.0-beta.1 | 無し | Error: cannot implicitly convert expression `274877906944L` of type `long` to `uint` | [実行不可] | | D | dmd v2.112.0-beta.1 | -m64 | [無し] | 274877906944 |