ときどきの雑記帖 RE* (新南口)
御機嫌如何
中島みゆき展
中島みゆき展がグランフロント大阪で開催 - デビュー〜現在の活動をたどる | マイナビニュース
というのを見かけ、大阪かあ近くでやってくれないかなあと思いつつ先を読んでいくと
同展は、アーティスト・中島みゆきさんの展覧会。6月23日まで埼玉県・角川武蔵野ミュージアムにて開催しており、その巡回展となる。
なんだってー
中島みゆき展 「時代」2024 めぐるめぐるよ時代は巡る|角川武蔵野ミュージアム
2024年04月20日[土] 〜 2024年06月23日[日]
ぐはっ。 全然気がつかなかった orz
まあこの期間だとあらかじめ知っていたとしても 行けたかどうかは微妙だなあ…
マイコン博物館
近いうちに行きたいわねえ
#マイコン博物館 をオープンいたします
— 夢の図書館+マイコン博物館+模ラ博物館(公式) Microcomputer Museum Japan (@Dream_Library_) June 21, 2024
6月22日 土曜日からご利用できます
予約ページからご予約をお願いします
6月22日、23日は、当日利用の予約も受け付けます
予約確定のメール連絡を受信してから移動開始してくださいhttps://t.co/hiApsV2Qan
1日利用:大人1000円,中学高校生500円,小学生 無料 pic.twitter.com/C6ty1Vs61q
ジオンの脅威
テレ玉での今週の放送。
ギレンが演説で言ってることが劇場版と結構違っている?
新刊近刊
3か月でマスターする数学
いよいよ放送開始っすね。
大好評シリーズ第2弾
— NHK Eテレ編集部 (@nhk_Etele) June 19, 2024
【#3か月でマスターする数学】
6月26日から始まります!
3人の数学教育のプロが、それぞれのアプローチで数学の楽しさや奥深さをじっくりレクチャー👆#Eテレ 毎週(水)夜9:30~
ぜひご覧ください📺#秋山仁 #横山明日希 #ヨビノリたくみ #3マス数学https://t.co/ft8xTfBXil pic.twitter.com/T8hQLEH1UB
発売前重版かかってるみたいです‼
— 書泉_MATH (@rikoushonotana) June 19, 2024
本日発売
『3か月でマスターする数学』秋山仁 横山明日希 ヨビノリたくみ(NHK出版)
三平方の定理、確率、図形など、中学・高校数学でつまずきがちなテーマをわかりやすく解説。日常で役立つ数学的思考法も紹介。
書泉オンライン⇩https://t.co/rqzUwEELew pic.twitter.com/pJpO8kz00P
関数型ドメインモデリング
6月28日発売の新刊『関数型ドメインモデリング』の見本が届いた! pic.twitter.com/15eEsIb3oG
— Kahei Suzuki (@kahei) June 21, 2024
「F#で」というところが気になるので 出たらチェックする😄
awk
gawk
gawkのリポジトリ gawk.git - gawk に feature/printf-fixes というブランチが増えていた(ような気がする)のだけど なんだろう、これ。
とメーリングリストの方を見ると Bugs in printf/sprintf formatted output から始まったスレッドに関連したものらしい
Re: Bugs in printf/sprintf formatted output に
Please see the branch feature/printf-fixes in the Git repo. I think I have addressed all your concerns. In particular, I think that test/printf-corners.awk covers the relevant cases. If not, please let me know.
This branch is relative to gawk-5.3-stable and will be merged to that branch once it’s ready.
とあった。
それはさておきcsvモード関連でのバグ修正一つ。
Fix a bug in io.c:csvscan - gawk.git - gawk
diff --git a/ChangeLog b/ChangeLog
index dc32709..b165890 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2024-06-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (csvscan): Add a missing buffer overrun check. Restores
+ `AwKBUFSIZE=42 make check' to passing. :-)
+
2024-06-16 Arnold D. Robbins <arnold@skeeve.com>
* interpret.h (r_interpret): Op_push: When converting a
diff --git a/io.c b/io.c
index 20bafde..bb24dca 100644
--- a/io.c
+++ b/io.c
@@ -3854,7 +3854,7 @@ csvscan(IOBUF *iop, struct recmatch *recm, SCANSTATE *state)
/* look for a newline outside quotes */
do {
- while (*bp != rs) {
+ while (*bp != rs && bp < iop->dataend) {
if (*bp == '\"')
in_quote = ! in_quote;
bp++;
まあそりゃそうだよねえ>buffer overrun check
ところでChangeLogにあるAWKBUFSIZE
はgawkの動作を制御する環境変数の一つ
(AwkBUFSIZE
と小文字になっている部分があるのはなにかの手違いだろう。たぶん)で、
AwKBUFSIZE=42 make check
としてチェックすることで
今回のバグを見つけやすくなる。
Other Environment Variables (The GNU Awk User’s Guide)
AWKBUFSIZE
This variable only affects gawk on POSIX-compliant systems. With a value of ‘exact’, gawk uses the size of each input file as the size of the memory buffer to allocate for I/O. Otherwise, the value should be a number, and gawk uses that number as the size of the buffer to allocate. (When this variable is not set, gawk uses the smaller of the file’s size and the “default” blocksize, which is usually the filesystem’s I/O blocksize.)
FORTRAN Compiler on IBM 704
FORTRAN IIコンパイラーのソースコード読みは放置して 脇道(?)にそれてばかりの気もするけど それはそれ
例の0.1問題(謎)に関係するあれこれを眺めていてふと気になったのが、 COBOLが最初に載ったマシンってBCD演算機能を持っていたのか ということ。 FORTRAN(とLisp)が最初に載ったマシンにはなかったようだし (1401でついたらしい)、 言語仕様とハードウェアの実装とどちらが先なのかなあ。と
COBOL
んで、簡単に調べると最初期にCOBOLが書かれたUNIVACのマシンには 360で見られるようなそれとは違うけれども 十進演算の機能を持っていたようだ。
- 二進化十進表現 - Wikipedia
- IBM 1401 - Wikipedia
- Grace Hopper - Wikipedia
- UNIVAC I - Wikipedia
- 3増し符号 - Wikipedia
そもそもUNIVACには「COBOLのおばちゃま」(Grace Hopper)が深くかかわっていたらしく なるほどそういう流れか。という感じもする。 ただ、Grace Hopperは「Mother of COBOL」じゃない という話(意見)もあるように、 FLOW-MATIC辺りも見ておかないと 十進演算機能の搭載とGrace Hopperの関係は わからないかもしれない。
Decimal128
なんか聞くところによるとJavaScriptにもdecimal128を入れようという話もあるらしい?
- Announcing decimal128: JavaScript implementation of Decimal128
- proposal-decimal/decimal128-reference.md at main · tc39/proposal-decimal
gcc options
GCCのiquoteオプションについて - FPGA開発日記
自分もこのオプションを(たぶん)知らなかったので、 いつ頃からあるものなのだろうかと調べてみたら 4.9.4のマニュアル Preprocessor Options - Using the GNU Compiler Collection (GCC) にも載っているくらいなので、 かなり昔からあったのは間違いなさそう (これ以上遡って調べる気は(今のところは)ない)
DeepL
元々は /usr は user の略に決まってるじゃん?ホームディレクトリを置く場所だったんだから #Linux - Qiita
本筋はさておき /usr の意味が変わった理由 のところの訳
/usr の意味が変わった理由
You know how Ken Thompson and Dennis Ritchie created Unix on a PDP-7 in 1969? Well around 1971 they upgraded to a PDP-11 with a pair of RK05 disk packs (1.5 megabytes each) for storage.
When the operating system grew too big to fit on the first RK05 disk pack (their root filesystem) they let it leak into the second one, which is where all the user home directories lived (which is why the mount was called /usr). They replicated all the OS directories under there (/bin, /sbin, /lib, /tmp…) and wrote files to those new directories because their original disk was out of space. When they got a third disk, they mounted it on /home and relocated all the user directories to there so the OS could consume all the space on both disks and grow to THREE WHOLE MEGABYTES (ooooh!).
DeepL訳 1969年にケン・トンプソンとデニス・リッチーがPDP-7でUnixを作ったのをご存知だろうか。 1971年頃、 彼らはPDP-11にアップグレードし、ストレージとしてRK05ディスク・パック(各1.5メガバイト)を2組搭載した。メガバイト) を搭載したPDP-11にアップグレードした。オペレーティング・システムが大きくなりすぎて、最初のRK05ディスク・パック (ルート・ファイルシステム)に収まらなくなったとき、彼らはそれを2番目のディスク・パックに流出させた。 その下にすべてのOSディレクトリ(/bin、/sbin、/lib、/tmp…)を複製し、元のディスクが容量不足だったため、 それらの新しいディレクトリにファイルを書き込んだ。 3台目のディスクを手に入れたとき、彼らはそれを/homeにマウントし、 すべてのユーザー・ディレクトリをそこに移した。OSは両方のディスクの容量を消費し、3メガバイトに成長した。
なんかひでえ訳だなあ。DeepLの翻訳ってそんなもんなんだっけ?
ところで 記事中で紹介されている リンク先のPDF にあるコードをみるとなかなか興味深い
手で打ち込んだのでミスがある可能性あり。また、コメント部分は一部を除いて入力していない
idata:
/root
41/
140016
.byte 7,1
9f-.-2
41.
<..\0\0\0\0\0\0>
41.
<.\0\0\0\0\0\0\0>
42.
<dev\0\0\0\0\0>
43.
<bin\0\0\0\0\0>
44.
<etc\0\0\0\0\0>
45.
<usr\0\0\0\0\0>
46.
<tmp\0\0\0\0\0>
9:
/ device directory
42.
140016
.byte 2,1
9f-.-2
41.
<..\0\0\0\0\0\0>
42.
<.\0\0\0\0\0\0\0>
01.
<tty\0\0\0\0\0>
02.
<ppt\0\0\0\0\0>
03.
<mem\0\0\0\0\0>
04.
<rf0\0\0\0\0\0>
05.
<rk0\0\0\0\0\0>
06.
<tap0\0\0\0\0>
07.
<tap1\0\0\0\0>
08.
<tap2\0\0\0\0>
09.
<tap3\0\0\0\0>
09.
<tap3\0\0\0\0>
10.
<tap4\0\0\0\0>
11.
<tap5\0\0\0\0>
12.
<tap6\0\0\0\0>
13.
<tap7\0\0\0\0>
14.
<tty0\0\0\0\0>
15.
<tty1\0\0\0\0>
16.
<tty2\0\0\0\0>
17.
<tty3\0\0\0\0>
18.
<tty4\0\0\0\0>
19.
<tty5\0\0\0\0>
20.
<tty6\0\0\0\0>
21.
<tty7\0\0\0\0>
22.
<lpr\0\0\0\0\0>
01.
<tty8\0\0\0\0> / really tty
9:
/ binary directory
43.
140016
.byte 2,3
9f-.-2
41.
<..\0\0\0\0\0\0>
43.
<.\0\0\0\0\0\0\0>
9:
/ etcetra directory
44.
140016
.byte 2,3
9f-.-2
41.
<..\0\0\0\0\0\0>
44.
<.\0\0\0\0\0\0\0>
47.
<init\0\0\0\0>
9:
/ user directory
45.
140016
.byte 2,1
9f-.-2
41.
<..\0\0\0\0\0\0>
45.
<.\0\0\0\0\0\0\0>
9:
/ temporary directory
46.
140017
.byte 2,1
9f-.-2
41.
<..\0\0\0\0\0\0>
46.
<.\0\0\0\0\0\0\0>
9:
/ initialization program
47.
100036
.byte 1,3
0f-.-2
8:
sys break; 0
sys open:; 6f-8b+core; 0
mov r0,r1
sys seek; 65.; 0
1:
mov r1,r0
sys read; 9f-8b+core; 512
mov 9f,r5 / size
beq 1f
sys creat; 9f-8b+core+4; 0
mov r0,r2
movb 9f+2,0f
sys chmod; 9f-8b+core+4; 0:..
movb 9f+3,0f
sys chown; 9f-8b+core+4; 0:..
2:
tst r5
beq 2f
mov r1,r0
sys read; 9f-8n+core; 512.
mov $512.,0f
cmp r5, $512.
bhi 3f
mov r5,0f
3:
mov r2,r0
sys write; 9f-8b+core; 0
sub r0,r5
br 2b
2:
mov r2,r0
sys close
sys exec; 5f-8b+core; 4f-8b+core
sys exit
4:
5f-8b+core
5:
</etc/init\0>
6:
</dev/tap0\0>
.even
9:
/ end of initializayion data
0
エントリ最後(47)のところにある プログラムコードがなんなのかよくわからん。 なんでここに置かれているんだろう? というのはスルーして 問題のusrのところだけ見てみると
/ user directory
45. このディレクトリのi-node番号
140016 ディレクトリの属性
.byte 2,1 リンク数とownerのID?
9f-.-2 大きさ
41. 親ディレクトリのi-node番号
<..\0\0\0\0\0\0> 親ディレクトリへのリンク
45. 自分自身のi-node番号
<.\0\0\0\0\0\0\0> 自分自身へのリンク
9: ラベル
こんな感じで、これを
mov $idata,r0 /
mov $u.off,u.fofp /
/
1:
mov (r0)+,t1 /
beq 1f
jsr r0,imap
bisb mq,(r2) /
/
jsr r0,iget / read
/
mov (r0)+,i.flgs /
/
movb (r0)+,i.nlks /
movb (r0)+,i.uid /
jsr r0.setimod /
/
movb (r0)+,u.count /
/
mov r0, u.base /
clr u.off /
add u.count,r0 /
jsr r0,write1 /
br 1b /
というコードでごにょごにょ(謎)と
属性はビットごとに意味を持っていてその内容は以下の通り
p.104
The flags are as follows
100000 i-node is allocated
040000 directory
020000 file has been modified (always on)
010000 large file
000040 set user ID on execution
000020 executable
000010 read, owner
000004 write, owner
000002 read, non-owner
000001 write, non-owner
p.117
flags (1 word) for the gile are coded as follows;
bit 0 set indicates - write, non-owner
" 1 - read, non-owner
" 2 " - write, owner
" 3 " - read, owner
" 4 " - executable
" 5 " - set user ID on execution
" 6 " - These bits are not assigned
" 7 " - "
" 8 " - "
" 9 " - "
" 10 " - "
" 11 " - "
" 12 " - Large file
" 13 " - file has been modifiled (always on)
" 14 " - directorie
" 15 " - i-node is allocated
晴Code雨Doc
昔読んだ本で「晴Code雨Doc(意味:晴れた日はコードを書き、雨の日はドキュメントを読む)」というプログラマー仕草が紹介されていたのを思い出した。 https://t.co/PpHZsDH9Uj
— いちかわ(ICHI)@夏コミ(C104)8/12(2日目)西さ34a (@atsuyuki1kawa) June 3, 2024
気になって検索したところ 作者(?)さんのページらしきものがあった。
鹿島田ー新川崎
首都圏にありがちな、徒歩2〜3分で簡単に乗り換えできる距離にありながら、駅名がまるっきり違う夫婦別姓みたいな駅。結構そそられるのである。 pic.twitter.com/OqxCjK54Or
— 咲来さん@ (@sakkurusan) June 20, 2024
鹿島田から新川崎(あるいはその逆)は 「徒歩2~3分で簡単に乗り換え」するのは無理じゃないかなあ
ジェダイの○○
ジェダイの復讐のVHSを見る。帰還ではない。これだッこの誰だか知らない初めて見るおじさん! pic.twitter.com/6X6J1uPDaf
— 味噌グラム (@misogram) June 16, 2024
⋀丼
帰りの電車の中で考えていた料理です。 pic.twitter.com/gJaHbFXY1a
— takl (@takl) June 22, 2024