昔の最近の出来事(2024.11)

2024/11/30

AM中に起床。

タイピングplus。リトルドラゴンが出ていたのですが、時間的に大丈夫そうだな と思いきや しばらく別の事をしてたら討伐に失敗してました。絶妙なHP設定のように思ったりも。

訳あってEmacsからHTTPアクセスをする方法を調べてました。 Emacs組み込みの 関数url-retrieve や 関数url-retrieve-synchronously を使う方法が ありますが、curlコマンドを 関数call-processで外部実行する方が 実行速度が若干早いように思ったりも。 Cygwinは forkが遅いので 全く期待をしていなかったのですが 意外には思ったりも。
関数url-retrieve-synchronously を使った場合に サーバーの動きから察するに Emacsからリクエストが出るのに一拍時間がかかっているように思ったりも。 url-retrieve-synchronously は url-retrieve にレスポンスの待ち合わせを行なう ようにした実装のようなので、結局一番奥にあるのは url-retrieve になる訳ですが、 そこからすぐにリクエストが出ないという事なのだろうか?🤔

2024/11/29

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

調べ事をして終了。

2024/11/28

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

そういや Emacsの 30.0.92がリリースされてから1ヵ月経ったので、そろそろ 次が出るのかなぁ?と思ったりも。

2024/11/27

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

Emacsの calcで順列(permutation)や組み合わせ(combination)の計算が出来るハズと 思ったのですが関数名が判りませんでした。結論から言うと perm(n,m)と choose(n,m) で、「(calc-eval "perm(5,2)")」や「(calc-eval "choose(5,2)")」で計算できたのですが、 combinationの方を「comb」という文字列で検索して見つけることができず、 chooseの方というのに気づくのに時間を要してしまいました。 CalcのInfoもよく読めば書いてあるのですが、もうちょいうまく探せないものかなぁ?とは思ったりも。

因みにEdgeの Copilotで 「テキストエディタのEmacsではcalc-eval関数を使用して計算ができますが、combinationを計算するにはcalc-eval関数にどのような引数を与えればよいですか?」 と聞いてみたら

Emacsのcalc-eval関数を使用して組み合わせ(コンビネーション)を計算するには、以下のように引数を指定します。

emacs-lisp
(calc-eval "C(n, k)" '("n" . 5) '("k" . 3))

この例では、nが5、kが3の組み合わせを計算します。calc-eval関数の第一引数に計算式を文字列として渡し、第二引数以降に変数とその値をペアで指定します。

という「emacs-lispってこんな雰囲気でしょ?知らんけど」的なウルトラ雑な答え (もちろん期待した結果は得られず)が返ってきたので そっとウインドウを閉じました。

そういえば、以前 calc-evalでの乗除の演算順位が変ってのに 気づいていたのですが、combinationの件を調べるのにInfoを見ていると、 「3.1.2 Algebraic-Style Calculations」の文中に 「*Notice:* Calc gives ‘/’ lower precedence than ‘*’, so that ‘a/b*c’ is interpreted as ‘a/(b*c)’; this is not standard across all computer languages. (Google翻訳: *注意:* Calc では「/」の優先順位が「*」よりも低いため、「a/b*c」は「a/(b*c)」として解釈されます。これはすべてのコンピュータ言語で標準ではありません。)」 という注意書きが記されていました。注意書きがあるのでInfo読めって事なのかも知れませんが、 まぁ面倒くさいなとは思います。一般的な演算優先順にすれば注意書きも不要だろうにとは思いますが。

2024/11/26

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

Web巡回して終了。

2024/11/25

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

Web巡回して終了。

2024/11/24

AM中に起床。

掃除したり洗濯したり。

タイピングplus。深夜に出現したボス討伐は失敗してしまうことが多いようです。 ところでボス討伐に成功するか失敗するかで何か変わるのだろうか? 報酬で武器がもらえるか否かの違いがありそうではありますが。

先日のリモートディレクトリのdiredでglobstarを使えるか?の件。 lisp/dired.el を見た感じ、リモートディレクトリの場合は /bin/sh を使うように ハードコーディングされているようです。 Fedora40では /bin/sh は bash へのシンボリックリンクなので、 dired-enable-globstar-in-shellの方に 「(add-to-list 'dired-enable-globstar-in-shell '("sh" . "shopt -s globstar"))」 のような感じで shにオプションを追加するように設定するのが良さそうです。 で、リモートディレクトリでも **/*.jpg のように使えるようになりました。 しかし、マルチバイト文字を使ったファイル名がクオートされた表示になるようなので、 更にdired-listing-switchesで指定される ls オプションに 「--literal --show-control-chars」を追加する事で ファイル名が化ける事も無くなりました。 因みに、このオプションについては 以前 find-dired/find-name-diredで 同じくファイル名にマルチバイト文字を使った場合のクオートを コントロールした時と同じ話のようです。 なんだか今回知ったglobstarの設定を行なうことで、find-diredの出番が無くなりそうですが、 先日記した通り それぞれ出来る事と出来ない事があるようなので 要件に合わせて使い分けるという方向で。

2024/11/23

AM中に起床。

SAI2の新しいのが出ていたり。おつかれさまです。バグ修正がメインの模様。

何気にEmacsのInfoを読んでいて、「globstar」なる shellのサポートの存在を知りました。 例えば「~/foo/**/*.el」と書くと「**」の部分は再帰的にディレクトリを走査すると いう意味になるそうで、「find ~/foo -name '*.el'」と"ほぼ"同じ結果が得られるようです。 CygwinのbashではデフォルトはOFFになっているようです。

$ shopt -p | grep globstar
shopt -u globstar                #現在の値は無効

$ shopt -s globstar              #有効にする

$ shopt -p | grep globstar
shopt -s globstar                #有効になっている

$ shopt -u globstar              #無効にする

$ shopt -p | grep globstar
shopt -u globstar                #無効になっている

例えば Emacsのソースコードのディレクトリで *.el ファイルを探した場合、以下のようになりました。

$ shopt -p | grep globstar
shopt -u globstar               #globstar無効

$ diff -y -W 80 <(ls -d ./**/*.el| sort) <(find . -name '*.el'| sort) | head
                                      > ./.dir-locals.el
./admin/admin.el                        ./admin/admin.el
./admin/authors.el                      ./admin/authors.el
                                      > ./admin/charsets/mule-charsets.el    #findはサブディレクトリが潜れる
./admin/cus-test.el                     ./admin/cus-test.el
./admin/find-gc.el                      ./admin/find-gc.el
./admin/gitmerge.el                     ./admin/gitmerge.el
./admin/last-chance.el                  ./admin/last-chance.el
./admin/syncdoc-type-hierarchy.el       ./admin/syncdoc-type-hierarchy.el
                                      > ./admin/unidata/unidata-gen.el

$ shopt -s globstar             #globstar有効

$ diff -y -W 80 <(ls -d ./**/*.el| sort) <(find . -name '*.el'| sort) | head
                                      > ./.dir-locals.el
./admin/admin.el                        ./admin/admin.el
./admin/authors.el                      ./admin/authors.el
./admin/charsets/mule-charsets.el       ./admin/charsets/mule-charsets.el    #**によりサブディレクトリを潜れている
./admin/cus-test.el                     ./admin/cus-test.el
./admin/find-gc.el                      ./admin/find-gc.el
./admin/gitmerge.el                     ./admin/gitmerge.el
./admin/last-chance.el                  ./admin/last-chance.el
./admin/syncdoc-type-hierarchy.el       ./admin/syncdoc-type-hierarchy.el
./admin/unidata/unidata-gen.el          ./admin/unidata/unidata-gen.el

$ diff <(ls -d ./**/*.el| sort) <(find . -name '*.el'| sort)
0a1
> ./.dir-locals.el
2012a2014
> ./test/lisp/files-resources/.dir-locals.el
2165a2168
> ./test/lisp/progmodes/project-resources/.dir-locals.el


ドット始まりのファイルは globstarが有効でもshell展開の対象にはならないようです (最初に"ほぼ"と記したのはここにかかってます)。 なので、git管理されたディレクトリでfindを実行すると .gitディレクトリ内も探してしまう ような事は起こらないと考えられます。 また、find-diredだと lsオプションの --group-directories-first が条件によって効かない という事がありましたが(以前のメモ) そういう事も無いようです。 shellのオプションなので Emacsの diredで有効にするには カスタム変数 dired-maybe-use-globstar を nil以外に設定すれば良いようです。 ただ、TRAMPとかリモートディレクトリで同じ事をしたいと思うと、えーっと....ってなってます...

2024/11/22

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

Web巡回して終了。

2024/11/21

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

Edgeのアップデートを適用したらディスプレイが省電力OFF→復帰したときに ウインドウ位置がズレるようになって毎回元に戻す手間が発生しています。 こんなところバグらかさないで欲しいなぁ。

2024/11/20

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

Web巡回して終了。

2024/11/19

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

タイピングplus。伸びない。

2024/11/18

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

朝イチから蛍光灯が切れてしまって一日中薄暗い状態でした。 数年前に交換したのですが、日中もずっと点灯しているのもあってか寿命が来るのが早い気も。 面倒くさいのはスリムタイプの丸型蛍光管のため、近所の店には置いてなくて 少し離れた 家電量販店まで調達に行かなくてはならないところ。で、調達して交換。 いつ切れるか判らないのと切れてからすぐに調達できるとも限らないので、 ストック分も買ってみたのですが、2組で 1万円を超える値段で 蛍光灯ってこんなに高かったっけ? と思ったりも。

2024/11/17

昼過ぎ起床。寝すぎ。

掃除したり洗濯したり。

Emacsの org-mode から Rを使ってグラフ画像を生成するコードが動かなくなっているのに気づいたり。 Rのモジュール dllが見つけられないようなのですが、ファイル自体は存在していてなんで?って感じ。 org-modeからしか起動したことがないのでどうやって調べれば?という感じに。

Rを単体起動して、プロンプトから PNGファイル設定「png("r_test.png", width=640, height=480)」を 行なってみたところ、エラーが再現するようだったり。 /usr/lib/R/modules/R_X11.dll と /usr/lib/R/library/grDevices/libs/cairo.dll は存在は しているようですが、ロードに失敗しているようだったので lddで調べてみた所、 どちらも「libfontconfig-1.dll => not found」という事のようでした。 cygfontconfig-1.dll は存在していてそちらはロードされてそうなのですが、 libfontconfig-1.dllって何?🤔って感じ。

無理矢理 /usr/x86_64-w64-mingw32/sys-root/mingw/bin/ の下のDLLを ひとまずorgファイルと 同じディレクトリに仮置きして解決するか調べてみたり。 libfontconfig-1.dllをコピーするだけだと ldd上はなんとなく解決するようですが、 libfontconfig-1.dllが更に依存するDLLを調べられません。 どうやって調べたもんかと思い Web検索してみると「cygcheck /usr/lib/R/modules/R_X11.dll」 とかやれば依存ツリーを全てチェックできるというのを知りました。ひとまず 「cygcheck: track_down: could not find xxxxx.dll」のメッセージが無くなるまで 依存DLLを /usr/x86_64-w64-mingw32/sys-root/mingw/bin/ からコピーしてみたところ ひとまず動くようになりました。正しい対応方法とは思えない。

2024/11/16

AM中に起床。

タイピングplus。長時間やっているとだんだん伸びなくなってきます🥺。 寿司打を試しにやってみると何故かこちらも伸びません🥺。 タイピングplusと寿司打とでは文章的な打ち難さの違いがあるようには感じます。

2024/11/15

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

Web巡回して終了。

2024/11/14

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

Wings3Dの2.4がリリースされているのに気づいたり。 Released Nov 2024 となっているので、具体的にいつのリリースかは判りませんが、11/1~11/14 の間だろうと思われます。ちょろっと触ってみた感じでは 2.3との違いは判りませんでした。 年一回リリースになっているのかも(2.3のリリースに気づいた時のメモ)。 変更点の一覧を見てもモデリングに関する変更は無さそうです。そういやBlenderもしばらく触っていないな....

2024/11/13

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

WindowsUpdate。の前にそういや今月は長かったなぁ?と思い 主編集に起動している Emacsの稼働時間を「M-x emacs-uptime」で見ると「34 days, 23 hours, 42 minutes, 29 seconds」 でした。そんだけ。

2024/11/12

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

Web巡回して終了。

2024/11/11

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

Web巡回して終了。

2024/11/10

AM中に起床。

掃除したり。

気づていなかったのですが、11月6日付けで GIMPの 3.0 RC1 がリリースされている模様 (GIMP 3.0 RC1 Released)。 インストールしてみたのですが、2.99.16と同じく 起動時にコンソールウインドウが開くようです。 ちょろっと使ってみたのですが、何故かクリップボードから新規画像の生成に失敗します (「クリップボードには貼り付けられる画像データがありません。」と怒られる)。

「MFゴースト」の流れからなんとなく観ている「わたしの幸せな結婚」というアニメ。 んんん? なにやら超能力を使い始めたぞ? どういう世界観?

2024/11/09

AM中に起床。

「オーイ!とんぼ」のアニメ。ゴルフのことはさっぱりわからないのですが、 おもしろくて観てしまいます。

タイピングplus。また ボスランクCの リトルドラゴンに遭遇したのですが、 時間的にプレイしている人が少ないのか全然削れないなぁ?と思いながらしばらくやってました。 で、このままでは間に合わないかも?と思う感じのところで、30分ほど他の事をして、 再び戻ってみるともう少しで倒せるまでに急展開していたり。 やっぱり時間帯によるのかなぁ?とは思ったりも。
そういえば、400kpm以上出せる人がザラに居る事は以前にも 記した通りなのですが、自分でプレイ中にリアルタイムで表示される kpm値の瞬間最大値でも 400kpmなんて出ないのですが😓。

2024/11/08

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

Emacsの materブランチの変更を眺めていると、yank-mediaというクリップボードの 画像データ貼り付けが Windowsビルドでも使えるようになりそうです。 Cecilio Pardo さんて方がWindows向けの強化を色々行なっているようで、 先週 知ったカラー絵文字対応も 氏の手によるものです。 Emacs 31の Windows向けビルドは色々と楽しみな感じになりそうです😃 (まだ Emacs 30.1は出てませんけど)。

2024/11/07

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

そういえば、D言語のコンパイラ リリースが 2.110.0がpreviewのまま止まっているなぁ? と思ったり。去年とか今年の7月までは月1回リリースが行なわれていたので、 何かしらリリースサイクルを変えたのかしら?と 思っていたのですが、 どうやら人的要因でリリースが止まっているみたい (関連Forumスレッド)。

全然関係無い流れで、ssh接続した状態で「~.」と入力すると接続切断されるというのを知りました (パスワードの1文字目に「~(チルダ)」を使って痛い目にあった)。 bashコマンドラインを使っていると、「~/」や「./」をよく使うし、「.」と「/」は キーが隣り合わせな訳ですが、「~/」を「~.」って打ち間違えたことはないなぁ?とは思ったりも。 一瞬、危険と隣り合わせっぽいようにも思ったのですが それほどではないのかも?

2024/11/06

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

ちょろり調べ事。

2024/11/05

テレワーク。早めに終了

clipsave。Officeスイートのツールでクリップボードに入れたデータは 32bitのDIBとして 得られるのですが、透明度がデタラメで変な表示になったり全面透明のPNG画像になるようだったり。 バグっているようなのですが判断する方法も無いので、オプションを追加して 24bitPNGでセーブ できるようにしてみました(clipsave_241105a.tar.xz)。 御参考まで。

2024/11/04

AM中に起床。

掃除したり洗濯したり。

先日のプログラムをもう少しだけ見直し。 こんなもんかなって感じになったので放流してみます (clipsave_241104a.tar.xz)。 コンパイルする必要があるので面倒くさいですが 興味がありましたら遊んでみてください。

一応、透明度付き画像のPNG保存にも対応しています。「Win+Shift+S」で非矩形切り出しした場合も Emacsでは よしなに表示されるようです。

画像貼り付けテスト on Emacs

これまで、ウインドウ画像のスナップショットを取るのに、

  1. ALT+PrintScreen で対象ウインドウ画像をクリップボードに保存する。
  2. GIMPを起動して、「編集→クリップボードから生成→画像」で貼り付け。
  3. 「ファイル→名前を付けてエクスポート→...」でPNGファイルに保存。

とやっていました。しかし、特に編集の必要が無いのであれば、clipsaveだけでPNGファイルに 保存できるので 随分らくちんになった気がします。

2024/11/03

AM中に起床。

クリップボードの画像データをPNGファイルにセーブするプログラムを作ってみたり。 実験をD言語で行なったのですが、実際に使うにあたって Cygwinファイルパスに相互変換するのが面倒くさいのと、 自前のD言語画像ライブラリは今回用事の無い画像フォーマット対応が含まれている為、 C言語で書き直して PNGセーブだけ行なえるようにしてみました。 一応、こちらの「Automatic screenshot insertion」 という org-mode でクリップボード画像をPNGセーブして orgの画像ファイル表示に 利用するローカルコマンドにも使える事を確認してみています。

エラーハンドリングを入れたりコマンドラインオプションを追加したりして整えてみたり。

2024/11/02

AM中に起床。

Win32APIでクリップボードのデータを取得する方法を調べたり。 フォーマットを検査するのにEnumClipboardFormats(0)を使ったところ、 0xc009や 0xc10bといった値が返ってくる場合があって これらが何なのかよく判らなかったり。 0xc009は例えばファイルエクスプローラで画像ファイルをCtrl-Cでコピーしたり Win+Shift+S でスクリーンショット画像をコピーした場合に返って来て、 0xc10bはブラウザで表示されたテキスト文字列をコピーした場合に返ってくるようです。 GetClipboardData()にフォーマットを指定して取り出せるようなので、 どのようなフォーマットで格納されているのかは関係が無いのかも知れませんが そういうものなのか?

2024/11/01

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

眠くて死亡。


TOP PREV