AM中に起床。
掃除したり洗濯したり。
そういえばと思い今更ですが検索した
「REALFORCE TYPING CHAMPIONSHIP 2025」。
おかしな速度(褒め)なのは以前にも思った事ですが、
史上最年少って小学生らしい。すげぇ....。
で、最近は上位ランカーが多くて全然見ていなかったのですが、
「タイピングplus」のランキング上位に 大会に出場していた選手と思われる
人たちが居るなぁと思ったり。
TANE自身は一応毎日1回以上は練習しているものの、サービス全体平均スコアくらいを維持するので精一杯です😅。
ところで、8月21日くらいから練習記録の練習時間が妙な時間を表示するようになってますがバグか?
Emacsハングの件。結局程度の差はあるけど、どのようなビルドでもハングはするという感じに見えます。
そこでスレッドのバックトレースを取れるのを知ったので、それで何か分からないかと少し調べてみました。
何度か再現させて観察してみたところ、ハングが再現した後にいくつかのスレッドが終了しているように
思いました。
Id Target Id Frame * 1 Thread 27424.0x369c "emacs-30.2.1" 0x00007fff14b12352 in _cygtls::lock (this=<optimized out>) at /home/TANE-HP/develop/work/cygwin/newlib-cygwin/winsup/cygwin/local_includes/cygtls.h:245 2 Thread 27424.0x5514 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 3 Thread 27424.0x2c14 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 4 Thread 27424.0x2ce4 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 5 Thread 27424.0x2fa8 "sig" 0x00007fffc5547f7a in RaiseException () from /cygdrive/c/WINDOWS/System32/KERNELBASE.dll 6 Thread 27424.0x2b2c 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 7 Thread 27424.0x6350 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 8 Thread 27424.0x4b20 "timerfd" 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 9 Thread 27424.0x4dec "gmain" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 10 Thread 27424.0x6698 "pipesel" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 11 Thread 27424.0x315c "itimer" 0x00007fffc5547f7a in RaiseException () from /cygdrive/c/WINDOWS/System32/KERNELBASE.dll 12 Thread 27424.0x5178 0x00007fffc52d1324 in win32u!NtUserGetMessage () from /cygdrive/c/WINDOWS/System32/win32u.dll 13 Thread 27424.0x4dd4 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 16 Thread 27424.0x672c 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 17 Thread 27424.0x2b54 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 18 Thread 27424.0x3594 "waitproc" 0x00007fffc7da2974 in ntdll!ZwReadFile () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 19 Thread 27424.0x173c 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 20 Thread 27424.0x2350 "pipesel" 0x00007fffc7da2934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 21 Thread 27424.0x39c4 "[pango] fontcon" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 22 Thread 27424.0x2f8c "emacs-30.2.1" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 23 Thread 27424.0x1e1c "emacs-30.2.1" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 24 Thread 27424.0x4124 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll [Thread 27424.0x2c14 exited with code 0] [Thread 27424.0x5514 exited with code 0] [Thread 27424.0x2ce4 exited with code 0] [New Thread 27424.0x634c]
: Thread 4 (Thread 27424.0x2ce4): #0 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #1 0x00007fffc7cd259e in ntdll!RtlAcquireSRWLockExclusive () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #2 0x00007fffc68ae8d7 in KERNEL32!BaseThreadInitThunk () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL #3 0x00007fffc7c7c34c in ntdll!RtlUserThreadStart () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #4 0x0000000000000000 in ?? () Thread 3 (Thread 27424.0x2c14): #0 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #1 0x00007fffc7cd259e in ntdll!RtlAcquireSRWLockExclusive () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #2 0x00007fffc68ae8d7 in KERNEL32!BaseThreadInitThunk () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL #3 0x00007fffc7c7c34c in ntdll!RtlUserThreadStart () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #4 0x0000000000000000 in ?? () Thread 2 (Thread 27424.0x5514): #0 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #1 0x00007fffc7cd259e in ntdll!RtlAcquireSRWLockExclusive () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #2 0x00007fffc68ae8d7 in KERNEL32!BaseThreadInitThunk () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL #3 0x00007fffc7c7c34c in ntdll!RtlUserThreadStart () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #4 0x0000000000000000 in ?? () :
(gdb) b CreateThread Breakpoint 1 at 0x1007173f0 (gdb) run Starting program: /home/TANE-HP/develop/work/emacs-30.2/emacs-30.2-ime/hangtest-emacs-30.2/src/emacs-30.2.1.exe [New Thread 19000.0x43c4] [New Thread 19000.0x5490] [New Thread 19000.0x5a4c] Thread 1 hit Breakpoint 1.2, 0x00007fffc68b3107 in KERNEL32!CreateThread () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL (gdb) info threads Id Target Id Frame * 1 Thread 19000.0x27e8 0x00007fffc68b3107 in KERNEL32!CreateThread () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL 2 Thread 19000.0x43c4 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 3 Thread 19000.0x5490 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 4 Thread 19000.0x5a4c 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (gdb) thread apply all bt Thread 4 (Thread 19000.0x5a4c): #0 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #1 0x00007fffc7cd259e in ntdll!RtlAcquireSRWLockExclusive () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #2 0x00007fffc68ae8d7 in KERNEL32!BaseThreadInitThunk () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL #3 0x00007fffc7c7c34c in ntdll!RtlUserThreadStart () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #4 0x0000000000000000 in ?? () Thread 3 (Thread 19000.0x5490): #0 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #1 0x00007fffc7cd259e in ntdll!RtlAcquireSRWLockExclusive () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #2 0x00007fffc68ae8d7 in KERNEL32!BaseThreadInitThunk () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL #3 0x00007fffc7c7c34c in ntdll!RtlUserThreadStart () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #4 0x0000000000000000 in ?? () Thread 2 (Thread 19000.0x43c4): #0 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #1 0x00007fffc7cd259e in ntdll!RtlAcquireSRWLockExclusive () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #2 0x00007fffc68ae8d7 in KERNEL32!BaseThreadInitThunk () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL #3 0x00007fffc7c7c34c in ntdll!RtlUserThreadStart () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #4 0x0000000000000000 in ?? () Thread 1 (Thread 19000.0x27e8): #0 0x00007fffc68b3107 in KERNEL32!CreateThread () from /cygdrive/c/WINDOWS/System32/KERNEL32.DLL #1 0x00007fff14af50e3 in cygthread::create (this=this@entry=0x7fff14cf54e0 <threads>) at ../../../../newlib-cygwin/winsup/cygwin/cygthread.cc:299 #2 0x00007fff14af515d in cygthread::async_create (arg=140733542520032) at ../../../../newlib-cygwin/winsup/cygwin/cygthread.cc:273 #3 0x00007fffc7cb1b93 in ntdll!RtlDeleteElementGenericTableAvlEx () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #4 0x00007fffc7da67be in ntdll!KiUserApcDispatcher () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #5 0x00007fffc7da6304 in ntdll!ZwTestAlert () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #6 0x00007fffc7ca37e6 in ntdll!EtwEventWriteNoRegistration () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #7 0x00007fffc7ca367e in ntdll!EtwEventWriteNoRegistration () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #8 0x00007fffc7c75fce in ntdll!LdrInitializeThunk () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll #9 0x0000000000000000 in ?? () (gdb)
AM中に起床。
午前中に通院。
Emacsハングの件。
| imagemagick | native-image-api | rsvg | IMEpatch | ハング再現 | その他 | |-------------+------------------+---------+----------+------------+--------------------| | without | without | without | with | する | パッチ有り | | without | without | without | without | する | パッチ有り | | without | - | - | - | する | パッチ無し | | - | - | - | - | する | オリジナルバイナリ | ※Cygwin 3.6.5相当(commit a5f96c196 (HEAD -> cygwin-3_6-branch, origin/cygwin-3_6-branch))にSIGTRAP回避パッチを当てたもの ※ベースのconfigureオプションは「--prefix=/usr --with-w32 --with-native-compilation=no」 ※観察の為にgdb上で動かし SIGTRAPをトリガに info threads を表示する(参考) ※IMEpatchは src/config.h を手で変える方式 ※「-」は選択不能でwithoutと同等
$ cat signal-stress.c #include <assert.h> #include <sys/time.h> #include <signal.h> #include <stdio.h> long SmartScheduleInterval = 1; /* ms */ long SmartScheduleTime = 0; static void SmartScheduleTimer(int sig) { if (sig != 0) SmartScheduleTime += SmartScheduleInterval; } void SmartScheduleStartTimer(void) { struct itimerval timer; timer.it_interval.tv_sec = 0; timer.it_interval.tv_usec = SmartScheduleInterval * 1000; timer.it_value.tv_sec = 0; timer.it_value.tv_usec = SmartScheduleInterval * 1000; setitimer(ITIMER_REAL, &timer, 0); } int main() { /* Set up the timer signal function */ struct sigaction act; act.sa_handler = SmartScheduleTimer; sigemptyset(&act.sa_mask); sigaddset(&act.sa_mask, SIGALRM); if (sigaction(SIGALRM, &act, 0) < 0) { perror("sigaction failed"); return -1; } /* start timer */ SmartScheduleStartTimer(); /* Loop forever, doing tests which should always succeed, with lots of signals */ int x = 0; int i = 0; while (1) { x = i; int j = x; if (j != i) { printf("failed: %d isn't equal to %d, apparently\n", i, j); break; } i++; } return 0; } $ gcc signal-stress.c -Wall -O0 -g $ ./a Alarm clock $ ※エラーしないと終了しないプログラムなのに、コードに無い文字列を表示して終了してしまう。
テレワーク。早めに終了。
Emacsハングの件。
Cygwinパッケージ の オリジナルemacs-w32(組み込みImageMagick無し、組み込みRSVG描画無し)
だと3.6.5相当の野良ビルドしたCygwinでもハングせず。
IME/他パッチをあてて、ImageMagick無し、組み込みRSVG無し にしてみたのですがハングします。
むむ。--with-native-image-api を付けていたり IMEパッチも有効なので、もっとオリジナルの
emacs-w32に寄せてみるとどうなるのだろう?と思って試してみる事に。
テレワーク。早めに終了。
先日のEmacsで起動されるスレッドの観察。ハングは再現していたのですが 何か掴む事はできず。
ただ、killコマンドが 「bash: kill: (1775) - Permission denied」てな感じでエラーしていて、
何やらシグナルを送れない状況になっているのか?と思ったりも。
正確に権限の問題なのか、理由はともかくシグナルを送れない状況を権限の問題と丸めてしまっているのかは判らず。
ハング前に表示されていた最後のスレッド一覧は以下のようになっていました。
Thread 1 "emacs-30.2.1" hit Catchpoint 1 (signal SIGSTOP), 0x00007fffbf618019 in WindowsCodecs!WICSetEncoderFormat_Proxy () from /cygdrive/c/WINDOWS/SYSTEM32/WindowsCodecs.dll Id Target Id Frame * 1 Thread 8512.0x10ac "emacs-30.2.1" 0x00007fffbf618019 in WindowsCodecs!WICSetEncoderFormat_Proxy () from /cygdrive/c/WINDOWS/SYSTEM32/WindowsCodecs.dll 2 Thread 8512.0x6c64 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 3 Thread 8512.0x31a4 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 4 Thread 8512.0x3960 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 5 Thread 8512.0x6298 "sig" 0x00007fffc5547f7a in RaiseException () from /cygdrive/c/WINDOWS/System32/KERNELBASE.dll 6 Thread 8512.0x56dc 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 7 Thread 8512.0x2a6c 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 8 Thread 8512.0x6f68 "timerfd" 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 9 Thread 8512.0x1e08 "gmain" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 10 Thread 8512.0x6e54 "pipesel" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 11 Thread 8512.0x3284 "itimer" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 12 Thread 8512.0x651c 0x00007fffc52d1324 in win32u!NtUserGetMessage () from /cygdrive/c/WINDOWS/System32/win32u.dll 13 Thread 8512.0x26f8 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 16 Thread 8512.0x4130 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 17 Thread 8512.0x5cd8 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 18 Thread 8512.0x1c8 "waitproc" 0x00007fffc7da2974 in ntdll!ZwReadFile () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 19 Thread 8512.0x54e8 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 20 Thread 8512.0x3458 "pipesel" 0x00007fffc7da2934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 21 Thread 8512.0x62bc "[pango] fontcon" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 22 Thread 8512.0xe78 "emacs-30.2.1" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 23 Thread 8512.0x6f9c "emacs-30.2.1" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 30 Thread 8512.0x5258 "emacs-30.2.1" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 31 Thread 8512.0x6ed0 "emacs-30.2.1" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 32 Thread 8512.0x3308 "emacs-30.2.1" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll [New Thread 8512.0x1da8]
Thread 1 "emacs-30.2.1" hit Catchpoint 1 (signal SIGSTOP), 0x00007ffb8ff8acc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/windows/System32/win32u.dll Id Target Id Frame * 1 Thread 37036.0x622c "emacs-30.2.1" 0x00007ffb8ff8acc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/windows/System32/win32u.dll 2 Thread 37036.0x4ad8 0x00007ffb92386564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 3 Thread 37036.0x2200 0x00007ffb92386564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 4 Thread 37036.0x8dbc 0x00007ffb92386564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 5 Thread 37036.0x8600 "sig" 0x00007ffb8faf7f7a in RaiseException () from /cygdrive/c/windows/System32/KERNELBASE.dll 6 Thread 37036.0x73dc 0x00007ffb92386564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 7 Thread 37036.0xdd0 0x00007ffb92386564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 8 Thread 37036.0x1f80 "timerfd" 0x00007ffb8ff8acc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/windows/System32/win32u.dll 9 Thread 37036.0x70ec "gmain" 0x00007ffb92383404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 10 Thread 37036.0x6c68 "itimer" 0x00007ffb92383404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 11 Thread 37036.0x15c8 "pipesel" 0x00007ffb92383404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 12 Thread 37036.0x8ee4 0x00007ffb8ff81324 in win32u!NtUserGetMessage () from /cygdrive/c/windows/System32/win32u.dll 14 Thread 37036.0x9538 "waitproc" 0x00007ffb92382974 in ntdll!ZwReadFile () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 15 Thread 37036.0x7c50 0x00007ffb8ff8acc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/windows/System32/win32u.dll 16 Thread 37036.0x5d30 "pipesel" 0x00007ffb92383404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 17 Thread 37036.0x85fc "[pango] fontcon" 0x00007ffb92383404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 18 Thread 37036.0x5d0c "ptym" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 19 Thread 37036.0x782c "ptymf" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 20 Thread 37036.0x6a00 "ptym" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 21 Thread 37036.0x5a14 "ptym" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 22 Thread 37036.0x4288 "ptymf" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 23 Thread 37036.0x89c4 "ptymf" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 24 Thread 37036.0x5a0c "itimer" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 25 Thread 37036.0x7388 "waitproc" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 26 Thread 37036.0x7b28 "pipesel" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 27 Thread 37036.0x7c18 "ptymf" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 28 Thread 37036.0x8a64 "ptymf" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 29 Thread 37036.0x904 "waitproc" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 30 Thread 37036.0x3b1c "itimer" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 31 Thread 37036.0x8634 "waitproc" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 32 Thread 37036.0x5b40 "waitproc" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 33 Thread 37036.0x95a8 "waitproc" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 34 Thread 37036.0x7d9c "waitproc" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 35 Thread 37036.0x2288 "pipesel" 0x00007ffb92382934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 36 Thread 37036.0x5b30 "emacs-30.2.1" 0x00007ffb92383404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 37 Thread 37036.0x8f20 "emacs-30.2.1" 0x00007ffb92383404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/windows/SYSTEM32/ntdll.dll 38 Thread 37036.0x6b58 0x00007ffb92386564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/windows/SYSTEM32/ntdll.dll [Thread 37036.0x2200 exited with code 0] [Thread 37036.0x8dbc exited with code 0] [Thread 37036.0x4ad8 exited with code 0] [New Thread 37036.0x7cdc]
テレワーク。早めに終了。
先日、gdbで handleコマンドにより シグナル受信時の振る舞いを変えられるのを知りましたが、
シグナルを受信した時に 任意のgdbコマンドを実行できないのか?と思ったり。
Web検索で見つけられなかったので Copilotで聞いてみたら、catch signal と commands の組み合わせで
実現できるという答えが返ってきました。
(gdb) catch signal SIGSTOP Catchpoint 1 (signal SIGSTOP) (gdb) commands 1 Type commands for breakpoint(s) 1, one per line. End with a line saying just "end". >info threads >continue >end (gdb) run
テレワーク。気持ち早めに終了。
Cygwin 3.6.3-1以降で Emacsがハングする件。
如何せんハング状態に陥っていると、 strace -p でアタッチしてもそのまま何もできない状況になるし、
gdb -p でアタッチしても同様に C-z で SIGSTOPを送ることもできません。
でも、なにやら大量にスレッドが生成されているようなので、どこで生成されているのだろうか?と思ったり。
src/systhread.c:sys_thread_create() が呼ばれているのだろうかと思い、ブレークポイントを設定しても
止まる気配が無し。どこでスレッドが生成されているのかよくわからず🤔。
gdb上で動かして、適当なところで C-z で止めてから info threadコマンドを実行してみたところ、
以下のようなスレッドが生成されているようでした。
(gdb) info threads Id Target Id Frame * 1 Thread 28184.0x5f0c "emacs" 0x00007fffc52d1344 in win32u!NtUserMessageCall () from /cygdrive/c/WINDOWS/System32/win32u.dll 2 Thread 28184.0x4828 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 3 Thread 28184.0x69b0 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 4 Thread 28184.0x6390 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 5 Thread 28184.0x5fc0 "sig" 0x00007fffc5547f7a in RaiseException () from /cygdrive/c/WINDOWS/System32/KERNELBASE.dll 6 Thread 28184.0x3050 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 7 Thread 28184.0xf60 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 8 Thread 28184.0x6f38 "timerfd" 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 9 Thread 28184.0x2184 "gmain" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 10 Thread 28184.0x2d68 "pipesel" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 11 Thread 28184.0x6b34 "itimer" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 12 Thread 28184.0x5684 0x00007fffc52d1324 in win32u!NtUserGetMessage () from /cygdrive/c/WINDOWS/System32/win32u.dll 13 Thread 28184.0xef8 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 16 Thread 28184.0x6db0 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 17 Thread 28184.0x704 0x00007fffc7da6564 in ntdll!ZwWaitForWorkViaWorkerFactory () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 18 Thread 28184.0x4268 "waitproc" 0x00007fffc7da2974 in ntdll!ZwReadFile () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 19 Thread 28184.0x3450 0x00007fffc52dacc4 in win32u!NtUserMsgWaitForMultipleObjectsEx () from /cygdrive/c/WINDOWS/System32/win32u.dll 20 Thread 28184.0x5b1c "pipesel" 0x00007fffc7da2934 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll 21 Thread 28184.0x64c8 "[pango] fontcon" 0x00007fffc7da3404 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (gdb)
テレワーク。早めに終了。
Cygwin 3.6.3-1以降で Emacsがハングする件。
先日の続きで
謎のSIGTRAP対応をしたリリースされていない野良ビルド Cygwin 3.6.5相当でハング再現の様子見していたのですが、
やっぱり3.6.3以前よりも再現性が高いです。
あと、一度だけで契機は判りませんが「Fontconfig warning: using without calling FcInit()」というメッセージが
起動したターミナルに表示された事がありました。
少し前にpangoや fontconfigが何か関係している可能性を考えたのですが、
何かあるのか?と思ったり。原因では無く影響を受けた結果かも知れないのでなんとも言えませんが....🤔
特に何も掴めず🥺。
AM中に起床。
Cygwin 3.6.3-1以降で Emacsがハングする件。
昨日のCygwin 3.6.2-1に相当する 野良ビルドしたcygwin1.dllでハング再現しない事を確認していたのですが、
ハング再現してました🥺。むむ。
ただし、2つのEmacsのうち一つだけハング再現で、もう一つは朝まで耐えていた感じではありますか。
ちょっと話は逸れて gdbで実行すると謎のSIGTRAPが発生する件。3.6.3-1では試していなかったというのに
気づいたのでパッケージでCygwin 3.6.3-1を再インストールして確認。総合結果で言うと以下のような感じ。
| Version | 謎のSIGTRAP | 備考 | 備考(Emacsハング) | |-----------+-------------+------------+------------------------------| | 3.6.1-1 | ? | パッケージ | ハングしない | | 3.6.2-1 | 発生しない | パッケージ | (パッケージ版は)ハングしない | | 3.6.3-1 | 発生しない | パッケージ | ハングする | | 3.6.4-1 | 発生する | パッケージ | ハングする | | 3.6.5相当 | 発生する | 野良ビルド | ハングする |
AM中に起床。
直ぐには出ないだろうと思っていたら、Cygwinパッケージに emacs 30.2-1 がもう来ていたり。マジか😓。
ひとまず「Emacsの雑記」を Emacs-30.2ベースに更新してみました。
御参考まで。まだ Cygwinのバージョンとの組み合わせでハングする件は解決できていないので、
先日のワークアラウンド方法を但し書きとして記してます。
話は Cygwin 3.6.3-1以降で Emacsがハングする件に戻る🥺。
調査しているノートPCは Cygwin 3.6.3-1の一つ前が Cygwin 3.6.1-1だったのですが、3.6.1-1まで戻しても
ハングは再現しませんでした(なので「Emacsの雑記」には
3.6.1-1まで戻すのもワークアラウンドとしています)。
で、3.6.1-1でも gdb上で実行すれば SIGTRAPは発生しません。3.6.3-1以降だと 謎のSIGTRAPが発生するのと
ハングは関係があるのじゃないか?と思い始めたりも。
SIGTRAPを受け取ると一応 gdbの操作は可能で バックトレースも表示できるのですが、シグナルの発生源は
判らんなぁ?と思ったりも。何かしらデバッガ上で発生源を調べられるかと思いきや方法が見当たらず。むぅ🤔
ハング調査のノートPCのEmacsを30.2-1にアップデートしてみたり。Cygwin本体のバージョンを上げたり下げたり
していると、関係無いパケージも更新するかしないかを指示しなくてはならないのが面倒臭いから。それだけ😓。
でもやっぱりハングは再現します。やっぱり原因は Cygwin側にあると考えるのが打倒だろうか....
Cygwinを野良ビルドしてみる事に。ひとまず先日調べた cygwin-3_6-branch の
HEAD(まだリリースされていない3.6.5に相当)で試してみたり。
一度もCygwinをビルドしたことの無いノートPCだったので、ツールのインストールが足りなかったのを追加したり、
以前ハマった「shilka」ってコマンドが無くてビルドに失敗するのを
回避手順で対応したり。ひとまず new-cygwin1.dll のビルドは成功。
3.6.4-1と入れ替えて(rebaseは無し)様子を見てみることに。
gdbで実行すると 謎のSIGTRAPが発生する件は ビルドしたcygwin1.dllにしても再現するようです🤔。
Emacsを起動して様子見中に Cygwin の git logを眺めていたところ、何やらデッドロック案件が修正されているみたい。
もしこれが関係しているのだとすると、様子見中のEmacsはハングしない事が期待できるかも?......
と期待したのですが、やっぱりハングが再現しました🥺。
Cygwin 3.6.2-1に相当するコミットをcheckoutしてビルド。野良ビルドしてもこのバージョンならハング再現しないのか?
を確認してみる事に。何故かビルドに失敗したのですが、Cygwin 3.6.2-1の 後にw32apiが13.0.0-1になった為
ヘッダの二重定義が発生している模様。手でちょっと直して対応。
gdbで実行すると パッケージのCygwin 3.6.2-1と同じく 謎のSIGTRAPが発生する事は無いようです。
少なくとも謎のSIGTRAPについては面倒ですがどのコミットで発生するようになるかを特定する事は可能かも。
Emacsの方は見ている範囲ではハング再現はせず。再現しないのが期待ですが、一応一晩放置で様子見する事に。
AM中に起床。
Emacs 30.2のリリースアナウンス
(Emacs 30.2 released)。
メンテナンスリリースという位置づけのようです。結局昨日は深夜までアクセス可能になりませんでした🥺。
Cygwinパッケージの libglibのバージョンを libglib2.0_0-2.85.x-1(今年の5月末~のリリース) よりも前の
libglib2.0_0-2.84.1-1(今年の4月頃リリース) まで戻したいと思ったのですがインストーラーで選択できず。
ローカルにはダウンロードしたアーカイブファイルがあるので再インストール可能なハズですが。
しかたないので選択可能な範囲で一番古い libglib2.0_0-2.85.1-1 まで戻して様子見。
うーむ、やっぱりハングが再現します。libglibじゃない可能性もあるのですが、やっぱりもっと古いのに戻したい。
という訳でlibglib2.0_0-2.84.1-1のアーカイブ(runtimeとdevel)を展開して手動インストールした後、
適当にCygwin本体を再インストールしてrebaseを実行。
一応ファイルの日付は4月になっている事と、野良ビルドしたemacs-w32は再ビルドしなくても起動できたので様子見。
glibを4月のまで戻してもやっぱりハングが再現しました🥺。
先日も記したのですが、glibは最新のままでCygwin本体を 3.6.2-1まで戻せば動くので、
glibが原因では無いかも知れません。困った。
現時点のワークアラウンドは以下のいずれかになるかと思います。
: 80 381962734 [sig] emacs-30.1.1 1052 sigpacket::process: signal 14, signal handler 0x1005F9BB0 41 381962775 [sig] emacs-30.1.1 1052 sigpacket::setup_handler: suspending thread, tls 0x7FFFFCE00, _main_tls 0x7FFFFCE00 107 381962882 [[pango] fontcon] emacs-30.1.1 1052 set_signal_mask: setmask C082006, newmask 0, mask_bits C082006 64 381962946 [sig] emacs-30.1.1 1052 _cygtls::inside_kernel: pc 0x7FFFC52D1364, h 0x7FFFC52D0000, inside_kernel 1 61 381963007 [[pango] fontcon] emacs-30.1.1 1052 sig_send: sendsig 0x13C, pid 1052, signal -71, its_me 1 48 381963055 [sig] emacs-30.1.1 1052 sigpacket::setup_handler: couldn't interrupt. trying again. 101 381963156 [[pango] fontcon] emacs-30.1.1 1052 sig_send: wakeup 0x125C 42 381963198 [sig] emacs-30.1.1 1052 sigpacket::setup_handler: suspending thread, tls 0x7FFFFCE00, _main_tls 0x7FFFFCE00
AM中に起床。
Cygwin 3.6.3-1以降で Emacsがハングする件。
まずCygwinパッケージのemacs-w32の .pdmp ですが、例えば 30.1 であれば
「/usr/libexec/emacs/30.1/x86_64-pc-cygwin/emacs-*.pdmp」に配置されていた模様。
なので、pdump対応を外している訳では無かったみたい。
なのですが、、、configureオプションに「--with-dumping=none」を追加してダンプを抑止した
実行バイナリだとハングが すぐには再現しなくなりました。むぅ🤔
その後、色々試してみたり。見かけ上、
$ git branch * cygwin-3_6-branch main $ git diff cygwin-3.6.2 cygwin-3.6.3 diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 622aaa95a..961a98c78 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -11,7 +11,7 @@ details. */ changes to the DLL and is mainly informative in nature. */ #define CYGWIN_VERSION_DLL_MAJOR 3006 -#define CYGWIN_VERSION_DLL_MINOR 2 +#define CYGWIN_VERSION_DLL_MINOR 3 /* CYGWIN_VERSION_DLL_COMBINED gives us a single number representing the combined DLL major and minor numbers. */ diff --git a/winsup/cygwin/release/3.6.3 b/winsup/cygwin/release/3.6.3 new file mode 100644 index 000000000..60031e5b0 --- /dev/null +++ b/winsup/cygwin/release/3.6.3 @@ -0,0 +1,5 @@ +Fixes: +------ + +- Fix "There are no available terminals" error with AzureAD accounts. + Addresses: https://cygwin.com/pipermail/cygwin/2025-May/258214.html diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 83883f9f6..ffe71ee07 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -1996,10 +1996,6 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) if (sid_id_auth (sid) == 5 /* SECURITY_NT_AUTHORITY */ && sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID) break; - /* AzureAD SIDs */ - if (sid_id_auth (sid) == 12 /* AzureAD ID */ - && sid_sub_auth (sid, 0) == 1 /* Azure ID base RID */) - break; /* Samba user/group SIDs */ if (sid_id_auth (sid) == 22) break;
AM中に起床。
そういえば Unicode 16.0 で追加される絵文字に
東日本で言うところの「スコップ」、西日本で言うところの「シャベル」が追加されますが、
絵文字の説明的にはどっちになるんだ?と思い、Emacs 31.0.50 の admin/unidata/emoji-sequences.txt
を調べてみたところ、0x1FA8Fに対応する絵文字は「shovel」と記されていました。
シャベルのWikipedia
によると、「日本のJISでは足をかける部分があるものをシャベル、無い物をスコップとしている」
ようなので、東日本の方が逆なのかも。スコップはオランダ語らしいので 英語圏の人には分からない。
また、「園芸用こて」は英語で trowel らしいので、やっぱりスコップは通じないのかも。
シャベルの事を調べていて、JIS(Japanese Industrial Standards)の日本語呼びが
「日本工業規格」から「日本産業規格」になっていたらしい
(日本産業規格のWikipedia)のを知ったり。
industrialは工業/産業どちらの意味もあるのでJISはそのままの模様。
JISマークも変わったりしているようですが、Unicodeに旧JISマーク「〄」が刻まれているのはそのままみたい。
JISマークのUnicode文字が割り当てられている経緯に
MacJapanese(Wikipedia)なるAppleの独自ShiftJIS拡張が
関係しているらしい。そういえば以前、
「㌀」や「㍇」なんて誰得なんだ?と思った事がありましたが MacJapaneseが起源となっているようです。
今回、旧JISマークのようなロゴマークをUnicode文字に入れてるのは迂闊だよなぁ?と思ったのですが、
「㌀」や「㍇」の時にも思った「なんで?」の犯人はMacJapaneseだったのか。
Windows Update。ノートPCのアップデートだけ何故か異常に遅いのは変わらず。
Cygwin 3.6.3-1以降で Emacsがハングする件。
普段使いのデスクトップPCで調べるのは色々と作業の邪魔になるのでノートPCで確認してみる事に。
Cygwin 3.6.3-1まで入れてあったのですが、3.6.4-1にアップデートして Emacsをいくつか起動して再現するかを
試してみたり。やっぱり契機は判りませんが再現はする模様。で、とりあえず gdbを挟んでみるかと試してみたところ、
run実行したら何故か起動途中くらいで SIGTRAPが発生して止まったり。なんだこれ?🤔
continueで続けると、ちょっとするとまた SIGTRAPが発生するという感じで全然普通に動く様子がなかったり。
止まる場所は決まっていなさげ。むむ。
これを受けて、ハングの発生しない Cygwin 3.6.2-1 のデスクトップPCで 同じく gdb上で動かしてみたところ、
SIGTRAPが発生するような事はありませんでした。もしかしてハングと関係ある?🤔
様子を見始めたら少し模様が付いている感じに見えたり。
AM中に起床。
Emacsのキー割り当てとして「\C-z」には「scroll-down」コマンドを割り当てています
(Emacs24以降から(?)scroll-down-commandになっていたらしい。さっき知りました😅)。
元々 X68kの μEmacs で previous-page という scroll-downに相当するページ単位のスクロールに
割当たっていたのが由来で設定しています。 Emacsでは「\C-v」が「scroll-up-command」が割当たっていて、
これは X68kの μEmacsでも 「\C-v」に同じ動作の「next-page」が割当たっていたのですが、
Emacsでの「scroll-down-command」が「\M-v」に割当たっているのは
(Metaキーは ESCキーを使った2ストローク入力だったのもあり) "無いわー"と思ったのと、
サスペンドなんて頻繁に行わないだろ?という理由から、X68kの設定を逆輸入する形で
「\C-z」への「scroll-down」割り当てを30年以上前から行っています。
で、この「\C-z」への割り当てって何由来だろう?と思って調べたのですが出所は分からず。
X68kの μEmacs では ED.Xのキーバインドが少し混ざっているので、ED.X由来か?とも思ったのですが
そういう訳でも無いっぽい。
さておき、一般的に scroll-down-commandに相当する操作は「\M-v」のまま使っているのだろうか?🤔
先に記した通り ESC押しの2ストローク操作は論外にしても、CtrlとALTを押し分けるのも結構難しいように思います。
今になってX68kのμEmacsのキーバインドを調べたのですが、罫線描画のモード(バインド)があったのか...とか、
grepモードがあったのか...とか、「M-x describe-bindings」って使えたのか...など、
全然使いこなせていなかったかも知れんなぁ と思ったりも😓。
そういえば何か違和感があったのですが、Edgeで使用しているデフォルトフォントが「Noto Sans/Serif JP」になっているなぁ?
と思ったり。Webで調べると4月には変わっていたようですが、Windows10には適用されていなさげだった事と、
新PC(Windows11)への乗り換えを行った 5月時点では既に変化点が無い状態だったので気づいていませんでした😅。
きっかけは
「\(ASCII 0x5c)」が「¥(円マーク)」じゃなくて「\(バックスラッシュ)」で
表示されていたので気づきました。Microsoftが表示互換を損なうようなデフォルト変更を入れてくるとは思いませんでした。
固定幅フォントは去年変更された BIZ UDGothic のままなのでpreタグ内は
\(ASCII 0x5c)
AM中に起床。
先日、いくつか知らないフォントがあって挙げてみたのですが、fontタグで指定してもうまく反映できない
フォントがありました。例えば「Bodoni MT Poster Compressed」というフォントで、
フォントファイルは「BOD_PSTC.TTF」が対応していると思われるのですが、
Windowsのフォント設定で探すと 完全名「Bodoni MT」のフォントファミリに属していて
face違いという扱いのようです。しかし、メタデータのフォントフェイスを選択することができて、
「Poster Compressed」を選択すると完全名は「Bodoni MT Poster Compressed」となります。なんだこりゃ?🤔
Emacs上ではファミリ名「Bodoni MT Poster Compressed」を指定すれば表示できる、つまり
「Bodoni MT」とは別ファミリという扱いになっています。
仮に同ファミリの別faceの扱いだとして、WeightでもSlant(italic,oblique)でも無い パラメータで指定するのか?🤔
そういえば、UNIXのラインエディタに「ed」がありますが、
X68kに標準で付属していたフルスクリーンのテキストエディタも「ED(ED.X)」だったなと思ったり。
これまでX68kの話の文脈から UNIXのedを連想した事は無いなと思ったりも。
X68kのEDのキーバインドってどんなだったっけ?と思って検索してみたら、
AI回答に X68kでラインエディタの edを操作するような例が出てきて、
「X68000のテキストエディタ「ed」のキーバインドについてですね。edはUNIX系OSで使われる基本的なテキストエディタで、X68000にも搭載されていました。具体的なキーバインドは、標準的なUNIX版edとほぼ同じです。」
と記されていたので、うーん?🤔 ってなりました。X68kの話の文脈でも UNIXのedを連想するのは
AIはどういう学習をしたんだ?とは思ったりも。
AM中に起床。
掃除したり。
何気にフォントの一覧を眺めていて、こんなフォントありましたっけ?と思ったり。
Windows10とWindows11とで「c:\Windows\Fonts」を比べてみて、気になったものをザックリ挙げてみました。
以下の表はfontタグのface指定を使っていますが、
Windows11じゃないとフォントが存在しなくてうまく表示できないかも知れません。
ファミリ名(完全名) | 表示例 |
---|---|
Berlin Sans FB | Berlin Sans FB: This is a pen. 012345 |
Bernard MT Condensed | Bernard MT Condensed: This is a pen. 012345 |
Broadway | Broadway: This is a pen. 012345 |
Brush Script MT | Brush Script MT: This is a pen. 012345 |
Chiller | Chiller: This is a pen. 012345 |
Colonna MT | Colonna MT: This is a pen. 012345 |
Cooper Black | Cooper Black: This is a pen. 012345 |
Curlz MT | Curlz MT: This is a pen. 012345 |
Felix Titling | Felix Titling: This is a pen. 012345 |
Forte | Forte: This is a pen. 012345 |
Gigi | Gigi: This is a pen. 012345 |
Goudy Stout | Goudy Stout: This is a pen. 012345 |
Harlow Solid | Harlow Solid: This is a pen. 012345 |
Jokerman | Jokerman: This is a pen. 012345 |
Juice ITC | Juice ITC: This is a pen. 012345 |
Magneto | Magneto: This is a pen. 012345 |
Matura MT Script Capitals | Matura MT Script Capitals: This is a pen. 012345 |
Onyx | Onyx: This is a pen. 012345 |
Ravie | Ravie: This is a pen. 012345 |
Rage | Rage Italic: This is a pen. 012345 |
Rockwell | Rockewll: This is a pen. 012345 |
Script MT | Script MT: This is a pen. 012345 |
Showcard Gothic | Showcard Gothic: This is a pen. 012345 |
Stencil | Stencil: This is a pen. 012345 |
Viner Hand ITC | Viner Hand ITC: This is a pen. 012345 |
Vivaldi | Vivaldi: This is a pen. 012345 |
Vladimir Script | Vladimir Script: This is a pen. 012345 |
AM中に起床。
「新美の巨人たち」。伊藤若冲と円山応挙が割とご近所さん(距離にして200mくらい)だったらしい。
交流の記録は無いみたいですが 若冲の方が17歳年上だったようなので、まぁそれなら直接の交流は
無いかも知れないなぁとは思ったりも。
テレワーク。早めに終了。
先日、ビデオゲームは残すのが大変と記したのですが、そういやオンラインサービスのみのゲームは
サービス終了とともに遊ぶこと自体ができなくなる物もあるよなぁ?と思ったり。
かろうじてブログや動画配信で記録として残る場合は あるかも知れませんが、ゲーム進行の無いような
コミュニケーションゲームだと ほとんどは思い出にしか残らない(そしていつか忘れられる)と思います。
もしかすると、今から30年後は 1980~1990年代のゲームは遊べるのに 2010~2020年代のゲーム(特にスマホゲーム)は
ほとんど遊べないという状況になっているかも知れません。
テレワーク。早めに終了。
「グラディウス オリジン コレクション」てのが発売されているらしい
(公式ページ)。
グラディウス、II、III、沙羅曼蛇、LIFE FORCE、2、他と、
新作として沙羅曼蛇IIIが収録されているらしい。グラディウスIVは? 90年代前半までのタイトルなのか?
と思ったのですが、完全な再現が難しかったので未収録とした模様
(参考記事)。
そういや グラディウスVはナンバリングタイトルだけど PS2専用で移植もされていません。
あと、言われてみれば今年はシリーズ40周年なのか。
大分前、30年とか50年とかに渡って出たら
それはそれでスゴい と書いた事がありましたが、
既にビデオゲームは 本や音楽や映画と変わらないなとは思ったりも。
ただ、メディア的に残すのが大変という問題はあるかも知れませんが。
テレワーク。早めに終了。
調べごとをして終了。
テレワーク。早くもなく遅くもなく終了。
Web巡回して終了。
テレワーク。気持ち早めに終了。
そういえば、Copilotと言われると Microsoft Copilot と GitHub Copilot がありますが、
単にCopilotというとどちらを指すかは文脈によるかも。用途は全く違うので混ざることは無いかも知れませんが。
現在では、恐竜は鳥類の祖先という事になってますが、海に棲んでいた首長竜は爬虫類に分類されていて
恐竜では無いらしい。「ドラえもん のび太の恐竜」に出てくるピー助はフタバスズキリュウという
設定でしたが、現在の分類に従うと ピー助は恐竜では無いという事になります。
そこ変わるのか....とは思ったりも。
AM中に起床。
掃除したり洗濯したり。
そういえば、ラッコって日本では 鳥羽水族館のメス2頭だけになっているらしい。
海外から輸入する事もできなくなっているようなので、このままだと日本で見られなくなるのは時間の問題のようです。
ところで、Windows11の Fluent Emoji では カワウソに相当する OTTER の絵文字のデザインは
ラッコのように描かれています(🦦)。ラッコは英語で Sea otter なのだそうな。
カワウソと兼用でも良いのかも知れませんが、背泳ぎで手に何か持っていると ラッコにしか見えない不思議。
Google検索でAIの回答に「ラッコの絵文字は、一般的に「🦭」で表されます。」って記されていたのですが、
それはアザラシだろ?とは思ったりも。AIは絵文字を絵として認識していないのだろうか?🤔
MSのCopilotに「🦦は何の絵文字ですか?」って聞いたら「ラッコの絵文字です」って答えが返ってきました。
ラッコと認識しているのもあるかも知れませんが「この絵文字を元に絵を描けますか?」って聞いたら、
って絵が描かれました。器用なもんです。結局 絵文字の絵を見てラッコと判断しているのか、文字コードに
ラッコが紐づけられているのかは判断できません...
そうだ、それも聞いてみればいいじゃん?と思い
「Microsoft Copilotは絵文字のテキストを絵として認識しているのですか?それとも文字コードに対応した意味として認識しているのですか?」と聞いてみたら
「Copilotは🦦のような絵文字を、画像そのものではなく「Unicodeで定義された文字コード」として処理します。その上でコンテキストや学習データに基づき、ある種の“意味”や“概念”として理解しています。」
という回答でした。文字コードにラッコが紐づけられているということらしい。どうも OTTER の絵文字は
ラッコっぽく描かれた絵の方が多いようなので、人類も ラッコとカワウソの区別が付いていないようには思ったりも。
AM中に起床。
何気に調べごとをしていて、node.jsは CygwinでビルドできるというAI回答が出てきたので、
マジで?と思って試してみたらダメでした🥺。大分古いバージョンでビルドできていた事があったようですが
今はできそうに無いです。検索してみてもWindowsのバイナリを使用する....みたいな方向に向いているのですが、
Cygwinからだとファイルパスの問題が解決できない場合があるので、結局用事にならない事の方が多い気がします。
テレワーク。早めに終了。
そういえば「ASSEMBLY SUMMER'25」が
始まっているもよう。メインのCOMPOは日本時間の深夜から早朝という感じだと思うので、
Pouetで結果を見る感じになるかも知れませんが。
テレワーク。早めに終了。
そういえば、Emacsの pretest 30.1.90が5月18日頃に出たのですが
(以前のメモ)、約2.5ヵ月ほど経過しました。
次(30.1.91?)は出るのだろうか? 30.1は今年の2月23日頃のリリースだったので、
8月で約6ヵ月になる所を鑑みると、時期的にはそろそろ 30.2に向けて動きがあるか?と
勝手に予想したりも。
masterブランチの状況はあまりよく分からず。ただ、盛大に変更が加わっているようなので
30系から31系の移行では色々面倒な対応が必要になりそうな予感はします。
特に使用する側の観点で、lexical-binding のワーニングメッセージが出るのは目ざわり
(そして対応も面倒; 以前のメモ; やりよう無い場合あり)なので
(既に存在しているのかも知れませんが)30系以前の動きに戻す設定を用意してくれないだろうか?
とは思う所です。
テレワーク。早めに終了。
津波。いつから津波警報が出ていたのかは判りませんが、夕方時点で都心では電車が運休になってて、
そんなに?と思ったりも。
東京MXのTVCMで
「銀河特急 ミルキー☆サブウェイ 銀河の果てまでいってきました!展」
てのが流れていますが、そもそもこれって何?と思って調べてみたり。
亀山陽平氏の個人製作のショートアニメーション作品「ミルキー☆ハイウェイ」の続編にあたるのが
「銀河特急 ミルキー☆サブウェイ」という事らしい。
公式ページはこちらのようですが、
それよりも 東京MXで本編放送中というのを知りました😅。PARCOでのイベントのCMは目にするのですが、
番組のCMは見たこと無いのと、6分の枠なので地デジの番組表では文字が表示できる高さになっておらず、
番組の存在が見た目では判りませんでした😓。YouTubeでも観られるようだったので
見逃した分を観てみたのですが、ほとんど一人で制作!?ってマジっすか....そんな感じ。
テレワーク。早めに終了。
NHK総合で放送されているドラマ
「舟を編む 〜私、辞書つくります〜」
を何気に観ています。劇中で「セレンディピティ」
(参考Wikipedia)
という言葉が出てきたのですが、こういう状況を表す言葉があるのかというのを知りました。
そういえば、2016年にノイタミナ枠でアニメ放送もされていましたが
(以前のメモ;情報無し😓)、内容をすっかり忘れてしまっていました。
アニメ版で紙の話をこんなにしてたっけ?と思っていたのですが、
こちらのアニメ版のあらすじから、
ドラマは13年経った時点の話を膨らませているようです。
ドラマは新たな感じで観ています。
kotlinというかSwing。マウスのホイールイベントの中に 修飾キー(Ctrl,Shift,ALT)の状態を示す
メンバー変数があるという事で、試しにprintln()で表示するようにしてみたのですが、
以下のようなワーニングメッセージが出ました。
$ make imgview_test.jar kotlinc -Wextra -include-runtime imgview_test.kt -d imgview_test.jar imgview_test.kt:131:54: warning: 'val modifiers: Int' is deprecated. Deprecated in Java. println("Wheel ${e.x} ${e.y} ${e.modifiers}") ^^^^^^^^^
テレワーク。早めに終了。
宇宙兄弟(45)。ストーリー的に成功する事は予想できるのですが、実際にこういう事故が起こったら
今の人類は うまく対応できるだろうか?とは思ったりも。宇宙兄弟の物語上は2029年7月30日の出来事ですが、
現実世界の4年後だとしても、月面への探査機投入も思い通りにいかない現実の現状を鑑みますに、
月軌道上で人を回収するなんて事は大分難しいミッションには違い無いと想像します。
次巻で完結ですが発売は約1年先になるみたい。
AM中に起床。
掃除したり洗濯したり。
kotlinというかSwing。ある JPanelコンポーネントにスクロールバーを付けたいとき、
JScrollPane に JPanelコンポーネントをはめ込むイメージで使うようですが、
JPanelコンポーネント内の処理の結果に従って、スクロール位置を補正したいと思ったとき、
どうやってやるんだ?というのがイマイチよく解らなかったり。
Win32APIだと スクロールバーのついたウインドウという考え方なので、
スクロールバーの付いたJPanelコンポーネントのスクロール位置を再設定するみたいに
できないのか?と考えてしまいます。
仕方ないので、「val scpane = JScrollPane(mypanel)」のように自前パネルをJScrollPane
にはめ込んだ後に、「mypanel.parentscpane = scpane」のように相互参照できるようにした上で、
mypanel内から parentscpane を介して JViewportを取得したり設定したりすれば
イケるっちゃイケそうなのですが、Swing的に一般的な方法なのだろうか?🤔
AM中に起床。
お出かけ。風が熱風🥵。
Emacs起動時の引数にファイルやディレクトリを指定すればそれを開いて起動できますが、
Tramp経由のリモートファイルを指定して開くこともできるというのを知りました。
よく考えれば そりゃできるよね という感じですが😅。
テレワーク。早めに終了。
調べごとをして終了。
テレワーク。気持ち早めに終了。
Emacsハングの件。先日 Cygwin 3.6.4に戻して様子見していたのですが、やっぱりEmacsのハングが発生します。
困るのは明確な操作トリガーがはっきりしていない事と操作不能な状態に陥る事。
デバッガを使って調べる事もできません。
というか、Cygwin本体の問題だと ほとんどの場合 デバッガがうまく機能しません🥺。
と言うわけで、当面は Cygwin 3.6.2に戻して使うしかありません。Emacsでなくても良いので誰かに
同じ事象が発見されて修正されるのを期待するか.....
テレワーク。気持ち早めに終了。
Emacsを起動してほったらかしておくとハング状態に陥る件。3.6.3から最新のCygwin 3.6.4-1にすると症状が
悪化している感じだったので、バージョンを3.6.2まで下げて様子見してましたが、
ここ数日でハングする事はありませんでした。見かけ上は 3.6.2を 3.6.3にするとハング現象が発現する感じですが、
cygwin 3.6.3-1の
変更点でそんな事になるのか?はよくわかりません。
Cygwinを3.6.4に戻して、Emacsをビルドし直した実行ファイルでどうなるか?を様子見してみることに。
テレワーク。早めに終了。
田宮俊作氏死去。90歳だったそうな。
調べごと。掴めず。
AM中に起床。
山手線内でのバッテリー発火。スマホ本体のバッテリーなのかモバイルバッテリーなのか、
TVの報道はどっちにも取れる場合があってよくわからす。スマホ本体のバッテリーだと問題視される箇所が
変わってくるかも? ところで、そもそもモバイルバッテリーって必要か?🤔
スマホデビューして半年くらいで言うのもなんですが、1日もたない状況なんてあるわけないと思えるのですが。
flymakeのkotlin対応。少し使ってみた範囲では大丈夫そうな感じなので放流してみます
(kotlincfm_250721a.tar.xz)。
使い方は kotlincfm.pl というperlスクリプトの最初の方にutf-8の日本語で記してあります。
Cygwinで使用する為のスクリプトなので、他のプラットフォームでは用事にならないと思います。
ご参考まで。
AM中に起床。
掃除したり洗濯したり。
先日椅子の下に敷いていたラグマットを交換したのですが、ラグマットだけではなくフローリングワックスが
ダメージを受けて剥がれていたためワックスがけを実施。掃除したり乾かしたり時間がかかりましたがひとまず完了。
他にもワックスが剥がれている所はあるのですが、水場との動線がややこしい部屋構造で
ルートを間違えると動けなくなってしまうのもあり 腰がなかなか上がりません😓。
投票へ。部屋を出て戻るまでピッタリ14分。時間とタイミングが良かったのか待ち行列無しでラッキー。
目を離すとEmacsがハングしている件。昨日Cygwinを最新の3.6.4-1にアップデートしてWindows11も
再起動してみたのですが、何やら少し起こりやすくなっているような? Cygwinを3.6.2まで下げてみる事に。
また様子見。
そういえば、以前、Web散策しているとディスプレイが
ブラックアウトするという現象があったのですが、
その後にディスプレイが故障してしまいました。
新しいディスプレイになったりゴタゴタしていてすっかり忘れていたのですが、
そういやブラックアウトしなくなったような?と思ったりも。NVIDIAドライバのアップデートは行っていませんが、
ディスプレイ交換とWindowsUpdateがあったので何が原因だったのか判りませんが、
今思うに ディスプレイ故障の予兆だったのだろうか?と思い返したりも。
今頃なのですが、gcc-15.1には gcobolという COBOLのフロントエンドが実装されているらしい
(GCC 15 Release Series Changes, New Features, and Fixes)。
どういう経緯で実装されることになったのかはよく分からず。そういえば Rustは gcc-14.1で
gcc-rustが実験的に入っていましたが(以前のメモ)
15.1では正式に入っているっぽい。Cygwinネイティブターゲットへの移植はまだ行われていないようですが、
イケそうな感じになりつつあるようです
(Experimental cygwin host support #137819)。
kotlin。ワーニングの直し方がよく分からない場合があります。
Swingで ファイル名のドラッグ&ドロップ処理を調べると、AI回答のコードが動きそうだったので
使用してみる事にしたのですが、以下のようなコードでワーニングが出ました。
val files = transferable.getTransferData(DataFlavor.javaFileListFlavor) as List<File>
@Suppress("UNCHECKED_CAST") val files = transferable.getTransferData(DataFlavor.javaFileListFlavor) as List<File>
AM中に起床。
kotlinのflymake対応。Makefile内でコンパイルに使用する一時ファイル名を元に、
出力するjarファイル名の生成と削除を行う事でゴミを手動で消さなくても良いように考えてみたり。
flymakeに連携の取れたMakefileを書かなくてはならないのは面倒かもなぁとは思ったりも。
まぁ、一度書けば終わりではありますが。
libGDXのプロジェクトでflymakeを使う。まだ使えてませんが🥺。
ひとまず単一 .ktファイルをチェックできるのですが、libGDX由来のクラスなどの場所が不明なので
コンパイルエラーになります。何かしら kotlincにライブラリパスを指定すれば良いのだろうと
思った訳ですが、gradle でのビルドでkotlincにどういう引数を与えているのかがよく判りません。
--infoなどで実行しているコマンドラインなどが調べられるかと思ったのですが、コンパイラへの引数はおろか
kotlincを実行しているか否かすら判りません。なにこれ?🤔
結局 gradleから情報を引き出す事はできませんでしたが、
kotlinc のコマンドラインに -classpath で.jarファイルを指定すれば良いらしいのが判ったり。
ただし、何も無い状態からはチェックできないので、gradleで一度ビルドした後に
「find . -iname '*.jar'」とかでファイルの位置を調べて
例えば gdx-1.13.1.jar を -classpathに指定するように Makefileを書き換えるという感じで、
libGDXのサンプルコードをflymakeでチェックする事ができるようにはなりました。
1テンポ待たされる感じはありますが、ちょろっと変えては「./gradlew run」で確認するよりは
遥かにマシになったように思います。
少しテストをしていたのですが、エラーメッセージに改行が含まれる場合にうまく動きませんでした。
Emacsのflymakeの表示でもエラーメッセージの最初の改行までしか表示されなくて、
エラーはしているが肝心の 原因を指す部分が表示されていない事があったため、
結局フィルタースクリプト側で 改行を空白文字に変換して対応したり。面倒臭すぎる。
kotlinc のオプションに -Wextra という細かいチェックを行うオプションがあるようだったので
試しに指定してみたところ なにやら色々指摘されたり。その中に直し方がよくわからないのがありました。
exitmenuitem.addActionListener { kotlin.system.exitProcess(0) }
本日休業。
通院。めっちゃ待つ事になると言われてたけど めっちゃ待たされた😅。
kotlin。先日のFloatのようなのはflymakeで編集しながら確認できないのだっけ?と思ったのですが、
LSPを使う面倒臭い方法しか出てこないなぁ?と思ったり。また、kotlincには gccで言うところの
-fsyntax-only みたいなオプションも付いていなさげ。
それ以前に kotlincもgradleも実行速度が遅すぎるように思います。
Google検索のAI回答によると、「./gradlew classes」でコンパイルだけ実行する代用になるらしい。
でも 9秒かかる。遅い。「./gradlew compile」もイケるっぽい。こちらは 6秒。やっぱり遅い。
そしてターゲットとなるソースコードだけをコンパイルする方法が判らず。
更にGoogle検索のAI回答に --include-buildオプションを使って
「gradle classes --include-build=path/to/your/file.java」みたいにするという、
「そうだよそういうので良いんだよ」と思えるのが出てきたのですが、
実際に実行してみると「path/to/your/file.javaは ディレクトリじゃない」と怒られました。ガッカリ🥺。
ターゲットとなるソースファイルのコンパイル結果を機械的に取得したいだけなのに、
なんでこんなに面倒臭いんだ?🤔 理解に苦しむ。
単一の .ktコードに限り flymakeを使えるようにしてみたり。
Cygwinの Emacsで使う都合もあって、DMDの時の様にエラーメッセージのファイルパスをCygwinパスに変換する
外付けのフィルタースクリプトは必要です(以前のメモ)。
加えて、kotlincは ファイルをフルパスで指定しても、エラーメッセージでは 勝手にディレクトリパスの表示が無くなる為、
Emacs上で開いているファイルバッファと紐づけができなくなってました。エラーメッセージのファイルパスは
フルパスになるように加工する必要もありました。ただ、コンパイルだけを行う事ができない為、
Foo_XXXXXXXXXXXXXXX_flymakeKt.class といった感じファイルなどをチェックの度に生成されます。
ソースファイルの中身をパースしないと関連付けられないファイルを生成する為、自動で消す事ができなくて
手動で消すしかない感じになってます....
それにしても、こんな面倒臭いコンパイラの挙動に世の中のIDEは頑張って対応しているのだろうか?🤔
コンパイラのメッセージ書式や文法チェックだけを行う場合の挙動を標準化すれば良いのにと思わなくはありません。
テレワーク。早めに終了。
kotlin。libGDXのサンプルをちょろっと弄ったり。SpriteBatch.draw(img,x,y)の
xとyはFloat型で指定する必要があったので、「var x: Float = 0」のように変数xの初期値を
設定して使おうとしたところコンパイルエラー。「var x: Float = 0f」のように書く必要があるらしく、
暗黙に型変換されないみたい。「var x: Float = 0.0」とすると、0.0は Doubleと解釈されるようで、
Floatの場合は何をやるにも fを付けないとダメっぽい。面倒くせぇ....🥺。
Float型の変数との演算「x + 1」みたいなのは fを付けなくても大丈夫そうなので、
型推論が行われる場面はあるようですが。
kotlinには三項演算子が無いみたい。代わりに if式で「x = if(条件) a else b」のように記すらしい。
テレワーク。早めに終了。
随分前に買ったラグマットですが、
椅子のキャスターで轢き続けた結果、椅子の足で描く円形に布地に穴が空き始めたので
チェアマットをネット購入していました。それが届いたので敷き替え。
前のラグマットはタタミ一畳分だったのですが、それよりは少し小さいものの
丁度収まるサイズで良い感じ。
kotlin向けにlibGDXのプロジェクト生成。ADD-ONSの LANGUAGESに Kotlinを追加し、
TEMPLATEに Kotlin Logoか Kotlinを選べば良いみたい。ビルドは「./gradlew run」で良さそう。
libGDXの作法なのか、ApplicationAdapterってクラスを継承した Mainってクラスの中に書いていくのは
Javaの場合と同じようです。
テレワーク。早めに終了。
kotlinというかjava? libGDXというゲームフレームワークがあるのを知ったので
試しに使ってみたり。
何かしらインストーラーでインストールするのかと思いきや、プロジェクトのセットアッププログラムを実行して
指定したディレクトリ下にひな形となるファイル群を生成し、生成されたプロジェクトのディレクトリ下で
ビルドするというものらしい。何やらIDEにいちいちインポートしないとビルドできないのか?とも思ったのですが、
コマンドラインでのビルドも可能みたいなのでひとまずそれで試してみたり。
公式ドキュメントを見ずに別のページに「./gradlew desktop:run」と実行すればPC用にビルドして実行できる
っぽかったので試してみたら何やらエラー。desktopが無いという事だったのですが、そういうことではなくて、
公式ドキュメントにあるように
プロジェクトの構成に合わせて指定しなくてはならないという事みたい。
あと単純に「./gradlew run」でもよしなにビルド&実行されるようですが、良しなになるようになっているから
(勝手に)期待した風に実行されるという事みたい。
「A Simple Game」のページを見たところ、
奥まった所に置かれている Main.java が本体コードのようで、同ページの最後の「Full Example Code」に
差し替えて(packageを自分のに合わせる事と、画像ファイルやmp3ファイルを所定のアセット置き場に置く必要がありました)
みたところ ビルド&実行に成功したので、ひとまず Main.javaを弄れば良さげという事が判りました。
kotlin向けやAndroid向けを選んでプロジェクト生成を行えば、それらをターゲットとしたプロジェクトに
なるようですが まだそこまでは試せず。
テレワーク。早めに終了。
調べごとをして終了。
AM中に起床。
掃除したり洗濯したり。
kotlin。特に進展なし。kotlinよりも Swingの方がよく分かっていないのを調べる時間が長い気も。
AM中に起床。
生活備品を調達にお出かけ。洗剤を調達しようとしたのですが、一番近い店ではなぜかほとんどが液体洗剤
に置き換わってて、いつもの粉洗剤が見当たらず。少し遠くの店で調達できたのですが、今ってそういう感じに
なっているのだろうか?🤔 帰ってから我が家の洗濯機って液体洗剤イケるんだっけ?と思い
取扱説明書を見てみたら、粉洗剤と同じ投入口に入れれば良い模様。知らんかった。
粉洗剤に特化してるのかと勝手に思ってました😓。
kotlin。まだ要領つかめず。クラスをインスタンス化するのに new を使わないようなのですが、
(人間が)関数と区別がつかないような?と思ったりも。あとUnicodeの扱いがイマイチよくわからず。
ボタンのテキストに絵文字を使ったら表示されなかったり、ソースコードはutf8で書いてても
println()での表示はSJISになってるようだったりと、D言語でもDMDやldc2を使った時と同じく
よくわからない所で文字コードの変換が行われているようにも思えたり。
ボタンのテキストもprintln()も、chcpコマンドで 65001を指定すれば大丈夫そうだったりするものの、
それってアプリでは制御できないじゃん?と思ったりも。謎。
getComponents()で得たコンポーネントから .getClass().getName() で元のクラス名を取得しようとしたら
何故か getClass()など無いと怒られました。インスタンスの構造(?)が kotlinか javaかで違うようで
kotlinの場合は .javaClass.getName()に読み替える必要があるみたい。
kotlinで Swingを使うからハマるのか?🤔
テレワーク。早めに終了。
今日のGoogle検索のトップページのDoodleはラーメンを称えてって事らしいのですが、
なんで今日?と思ったら7月11日はラーメンの日らしい
(参考ページ)。
2017年に正式制定されたようです。ほぅ....
唐突に「Android Studio」をインストールしてみたり。ひとまず
こちら
を見ながら動かしてみているのですが、イマイチ要領が得られない感じです🥺。
そもそも kotlinがよく分かっていないので、
kotlincを使ってコード単体で実験してみたり。どうやらJavaのコードを置き換え可能な感じで書けるらしいと
いう事でJavaコードと見比べながら試してみているのですが、なんか見た目が大分違うので対応が付けられない
感じです。今のところkotlinではその文法になっているのに合理性をあまり感じられません。
D言語のときは合理性しか感じなかったような気がするのですが。
テレワーク。早めに終了。
調べごとをして終了。
テレワーク。早めに終了。
少し前にタスクバーのボタンにマウスカーソルをかざすと
ファイルエクスプローラのアイコンが何故か表示される現象があったのですが、
WindowsUpdate後に再起動したら再現しなくなっていたり。何か変な状態に陥っていたのだろうか?🤔
テレワーク。早めに終了。
Web巡回して終了。
本日休業。AM中に起床。
色々用事を済ませて一日終了。
AM中に起床。
掃除したり洗濯したり。
スマホに ICカードの読み取り機能があるのを知ったり。何故かスマホの説明書には書かれていないようですが。
調べごとをして終了。
AM中に起床。
買い物にお出かけ。先週くらいからサイドテーブルを探していたのですが、
丁度良さげなサイズのを見つけたので購入。ギリギリ持ち帰り可能と判断したのですが、
流石に腕が死ぬかと思った😓。新PCで液晶タブレットを使えるようにケーブルを延長しましたが
(以前のメモ)、ローテーブルでは配置や姿勢に無理がありました。
今回買ったサイドテーブルは椅子に座って丁度良い高さのテーブルなので、
長時間作業だったり作業机としても使えそう。よき。
Windows11のタスクバーのどれかのタスクボタンにマウスカーソルをかざすと、
それまで表示されていなかったファイルエクスプローラのアイコンが表示されます。
「タスクバーのボタンをまとめラベルを非表示にする」の設定を「なし」にして
タスクボタンをバラしているのですが、アイコン表示が割り込んでくるのでボタンの幅が変わってしまうため、
場合によっては 一つ右隣のボタンの上にカーソルが乗ってしまう場合があります。
なんか邪魔に感じるのですが、挙動を変えるスイッチは見当たらず。
そういや新しいディスプレイは HDMIポートの方はHDRに対応しているらしいという事で、
1年以上ぶりくらいにPS4の電源を入れて確かめてみたり。因みにPS4はスタンバイにしてると夜中に静電スイッチが
雄叫びを上げるようになったため電源を抜いたままにしていました。
システムウェアのアップデートが必要だったり、PSplusもウォレットの残高不足で自動更新されず
期限切れになってました。ところで、システムウェアのアップデート内容がQRコードで示されるようになっていて、
その場では詳細の確認ができないようになっていました。単純になんで?🤔とは思ったりも。
で、GTsportを起動してみたのですが、アップデートを先に行う必要があったり。
しばらく待って終わったので起動してみたところ、オンラインサービスは終わってました😅。
一旦そこは良しとして HDRの方ですが、光の輝度がまぶしい感じに表示されていてHDRになっているようでした。
壊れたひとつ前のディスプレイもHDR対応だったのですが、まぶしいと感じた記憶は無かったので、
7~8年ほど前とは様子が違うのか?と思ったりも。ただ、HDRがONになっているとPS4のファンが高速回転になりました。
GTsportを終了すれば通常回転に戻る感じです。
また、前のディスプレイでは HDMI2.0で接続すると 数分後に映像が出なくなるという現象がありました
(以前のメモ)。
今回はちょろっと確認しただけなので、また後で確かめてみようかと。
テレワーク。早めに終了。
調べ事をして終了。
テレワーク。早めに終了。
ディスプレイ。昼過ぎに届きました。サイズもデザインも前のに似た感じの
「Dell 27 Plus 4Kモニター - S2725QS」というのにしてみました。約35000円也。
色味の第一印象は「ちょっと黄色寄り」だなぁと思いました。
因みに 壊れたのはDell製のUP2718Qという製品でしたが、これはどの色にも寄っていなかったので
ハイエンドディスプレイってこういう事なのか?と思った所でした。
これまでの感じだと、EIZOのは緑寄り、テレビですがREGZAは青寄りといった感じだったので、
製品やメーカーによって何かしら特性はあるのかな?と思ったりも。
今回購入したディスプレイは 120Hz対応なので、違いを見比べられないか?と思ったのですが、
YouTubeって120fps対応はしていないのか。
手持ちのアプリでは一応120fpsになってるなぁ?くらいの確認はできるのですが、倍速で描画されてるので
スムーズかどうかを見比べる感じでは無い気も。
そういえば、ディスプレイにHDMIケーブルが付属していたのですが「ULTRA HIGH SPEED」というタグが付いていました。
「ウルトラハイスピード」ってなんぞ?と思って調べてみたところ、
HDMI2.1の 8K60Hzや 4K120Hzに対応する 48Gbps伝送可能なケーブルみたいです。
因みに、「プレミアムハイスピード」は4K60HzやHDRに対応する 18Gbps伝送可能なケーブルで、
我が家では色々と4K対応するのに HDMIケーブルのほとんどを交換しました😓。
フルHD(1920x1080)解像度ならば120Hzだとしても、プレミアムハイスピードで十分だと思います。
新PCはDisplayPort接続なのですが幸い 8K60Hz/4K120Hz対応のケーブルになっています。
古いデスクトップPCのときに NVIDIAドライバをアップデートしたらDP出力が映らなくなってしまったのですが
(以前のメモ)、
その後もアップデートで直る気配が無さそうだったので、ケーブルを変えてどうにかなるとも思えないけど
オーバースペック気味のケーブルでダメだったらドライバが直るのを待つしかないと、
ダメ元で交換したら映るようになってしまって、ケーブルって関係あるの?!と思った事がありました。
よもやそのケーブルを4K120Hz対応で使う事になるとは想像もしていませんでしたけれども。
テレワーク。早めに終了。
先日発注したディスプレイは出荷済みになってるようですが、今日届く予定になってて本当か?
と思ったりも。少なくともまだ配送業者ではトラッキングが始まっていないと思われ(18:30時点)。
その後、結局21:30頃に営業所に集荷されたようなので やっぱり届くのは明日。
昼までには届くんじゃなかろうかと思ったりも。
テレワーク。早めに終了。
普段使いしているディスプレイが突然死。普通に使っていたところ 突然画面の下半分がインターレース
のように偶数(奇数かも)ラインだけが映らない感じに。むぅ。
ひとまず液タブで対応してみてるのですが 流石に無理があるので、新しいのをWebで調達してみる事に。
壊れたディスプレイは27インチ/4Kで 入力ポートが DP×2, HDMI×2 あるのですが、
同じ感じのは無さそうだったので、27インチ/4Kで DP×1, HDMI×2 のを選んでみました。
最近のはベゼルが細くなっているので32インチもギリギリイケるか?と思ったのですが、
入力ポート要件が合うものが無かったので見送り。
故障したディスプレイを買った2017年頃は、
4k/60Hzに対応しているかどうかを見分けるのが難しくて、安いと思ったら30Hzまでしか
対応していないとか、スペック表からHDMI2.0対応かどうかが判らないとか
色々罠があったように思います。
それにしても液晶ディスプレイが壊れるとは想定外だったなぁ....🥺