ときどきの雑記帖 RE* (新南口)
あの夏で待ってる
ハンズ
渋谷はまだ行っていないけど 新宿は6月の半ば(リニューアルオープン前)に行ってきた。
ハンズ新宿店、6月29日リニューアルオープン “推し活”グッズ注力のワケ:意欲的な取り組み(1/2 ページ) - ITmedia ビジネスオンライン
オープン前なのでアレ(ってなんですか)だけど だいぶ雰囲気が変わるであろう気配はあったな。 ところで某所ではその数日後に行ったときも 「東急ハンズ」のままだったのですがそれは (今行ったら違うかもしれない)。
ミンミンゼミ
今季初遭遇。
仮面ライダーアマゾン@MX
仮面ライダーアマゾン:怪奇性の強いシリーズ第4作 TOKYO MXで“HD版”放送スタート - MANTANWEB(まんたんウェブ)
「迷走」とまでは言わないけど無印から続けて観ていくとなんというかその。 本放送当時はどう観ていたのか記憶にないなあ (観てはいたはず)。
今日の遠い目
アニメ『あの夏で待ってる』小諸市で街中メモリアル展開催 最後の「なつまち連」も! | マグミクス
2012年に放送されたTVアニメ『あの夏で待ってる』の舞台となった長野県小諸市で、2023年7月22日(土)より同年9月10日(日)までの期間、 「『あの夏で待ってる』街中メモリアル展 in 小諸」が開催されます。
2012年…
小諸と言えば例のネコ様のお店もあったし、ちょっと行ってみるかなあ。
brass
Red Hat’s open source rot took root when IBM walked in • The Register
という記事に
Big Blue’s top brass either don’t get it or don’t care
という見出しがあり、このbrass
はなんじゃろか
と気になったので辞書をひくと
brassの意味・使い方・読み方|英辞郎 on the WEB
高級将校(連中)、軍の幹部、お偉方◆【語源】将校の階級章の材質が真ちゅうだったことから。
企業の幹部[トップ]、上層部
へー。
新刊近刊
ChatGPT
某書店の平台(の一つ)に置かれた本の大半に AIとかChatGPTの文字が大きく書かれていて以下略。
岡野原さんの本をとっとと読まないとだわ。
クジラ飛行机さん
(某氏にはかなわないとは言え) この人もわりと色々な方面の本を出し続けているけど やはりというかなんというかこの種の本を出すと。
Amazon.co.jp: クジラ飛行机:作品一覧、著者略歴
表現論入門
現物を確認。 値段から想像していたより 小ぶりでページ数も少なかった。 が、黄色表紙の本だからなあ。
タロウ
Qからエースまで(「怪奇大作戦」もあったけど)来て、 タロウも。と。レオまでやるんだろうか (その後はさすがに…)?
あれ、Qとマンがない?
いや、あるよなあ。なんで一覧に出てこない?
gawk
しばらくチェックしていなかったけど いくつか気になるコミットがあったのでメモ。
diff --git a/field.c b/field.c
index 6d07faa..d4e6b1f 100644
--- a/field.c
+++ b/field.c
@@ -812,7 +812,9 @@ comma_parse_field(long up_to, /* parse only up to this field number */
nf = 0;
if (len == 0) {
- (*set)(++nf, newfield, 0L, n);
+ // Don't set the field.
+ // echo | gawk --csv '{ print NF }'
+ // should print 0.
return nf;
}
これはまあそうかという動作だな。
diff --git a/doc/gawk.info b/doc/gawk.info
index 8a79dec..ef749d2 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -2345,6 +2345,26 @@ onto the next line. However, the backslash-newline combination is never
even noticed because it is “hidden” inside the comment. Thus, the
‘BEGIN’ is noted as a syntax error.
+ Backslash continuation comes into play in an additional, unexpected
+situation. Consider:
+
+ gawk -F'\
+ a' '...'
+
+This command line assigns a value to ‘FS’. But what value? There are
+several possibilities, and in fact different versions of ‘awk’ do
+different things. ‘gawk’ treats this as if it were written:
+
+ BEGIN { FS = "\
+ a"
+ }
+ ...
+
+In short, the backslash and newline are removed, assigning ‘"a"’ to
+‘FS’. This same treatment applies to variable assignments made with the
+‘-v’ option (*note Options::) and to regular command-line variable
+assignments (*note Assignment Options::).
ん、This same treatment applies to variable assignments made with the‘-v’ option
にちょっと引っかかるものがあるな。
diff --git a/main.c b/main.c
index c48feaf..e660da1 100644
--- a/main.c
+++ b/main.c
@@ -791,7 +791,7 @@ cmdline_fs(char *str)
str[0] = '\t';
}
- *tmp = make_str_node(str, strlen(str), SCAN); /* do process escapes */
+ *tmp = make_str_node(str, strlen(str), SCAN | ELIDE_BACK_NL); /* do process escapes */
set_FS();
}
ELIDE_BACK_NL
って見覚えのない名前だな(ってすべてを暗記しているわけでもないが)。
environ
プロセスが保有する環境変数をcatでみると見づらいけど、あのコマンドのあのオプションを使うとキレイに出力できることを知って、目から鱗。あのコマンドがこんな使い方ができるなんて。 pic.twitter.com/QPQ39OjT4f
— Yutaka Hirata (@yutakakn) June 21, 2023
よく目から鱗が落ちる人だなあ という些細な茶々(ツッコミ)はさておき(自分もよく「驚い」てるし😄)、 環境変数を確かめるならprintenv(1)辺りでいいような気もするけど `/proc/‘を覗きに行ってるのは深い意味があるんだろうか? 以前のpsのツイートのときにbusybox云々ということを言っていたから これもその流れかな(調べない)。
んで、そのprintenvがどうやって環境変数(の名前と内容)を得ているのか 気になったので(ry
printenv(1)
coreutils/printenv.c
を見たところなぞの大域変数environ
を参照しているようだ。
printenv.c
coreutils/src/printenv.c at master · coreutils/coreutils · GitHub
if (optind >= argc)
{
for (env = environ; *env != nullptr; ++env)
printf ("%s%c", *env, opt_nul_terminate_output ? '\0' : '\n');
ok = true;
}
else
{
int matches = 0;
for (i = optind; i < argc; ++i)
{
bool matched = false;
/* 'printenv a=b' is silent, even if 'a=b=c' is in environ. */
if (strchr (argv[i], '='))
continue;
for (env = environ; *env; ++env)
{
ep = *env;
ap = argv[i];
while (*ep != '\0' && *ap != '\0' && *ep++ == *ap++)
{
if (*ep == '=' && *ap == '\0')
{
printf ("%s%c", ep + 1,
opt_nul_terminate_output ? '\0' : '\n');
matched = true;
break;
}
}
}
matches += matched;
}
ok = (matches == argc - optind);
}
glibc/posix/environ.c
/* This file just defines the `__environ' variable (and alias `environ'). */
#include <unistd.h>
#include <stddef.h>
/* This must be initialized; we cannot have a weak alias into bss. */
char **__environ = NULL;
weak_alias (__environ, environ)
/* The SVR4 ABI says `_environ' will be the name to use
in case the user overrides the weak alias `environ'. */
weak_alias (__environ, _environ)
Cのmain関数のプロトタイプ宣言(の一つ)にあった
char **envp
みたいなもん? と思いつつ調べると
- ENV31-C. 環境変数へのポインタを無効にするかもしれない操作の後で、そのポインタを参照しない
- main の引数 | Microsoft Learn
- Program Arguments (The GNU C Library)
POSIX.1 does not allow this three-argument form, so to be portable it is best to write main to take two arguments, and use the value of environ.
なるほど。第三引数が使えるとは限らないとは覚えていたが
use the value of environ
は知らなかった(か忘れていたか)
ww
ついでにpsのオプションのww
について
pipeする必要なし
— cannabis_c4 (@cannabis_c4) June 19, 2023
ps -elfww
でOK
src/bin/ps/ps.c at master · openbsd/src · GitHub を見るとこんな判定をしている
case 'w':
if (wflag)
termwidth = UNLIMITED;
else if (termwidth < 131)
termwidth = 131;
wflag = 1;
break;
2回(以上)wオプションを指定すると表示幅を無制限にすると。
古事記マニュアルを確認しても
w Wide output. Use this option twice for unlimited width.
-w Wide output. Use this option twice for unlimited width.
--width n
Set screen width.
そのように記載があった。
ところでcoreutilsにpsが見当たらなかったので、Ubuntuのpsの出力
kbk@toybox4:~$ ps --help
Usage:
ps [options]
Try 'ps --help <simple|list|output|threads|misc|all>'
or 'ps --help <s|l|o|t|m|a>'
for additional help text.
For more details see ps(1).
kbk@toybox4:~$ ps --version
ps from procps-ng UNKNOWN
kbk@toybox4:~$ man 1 ps
からprocps-ngを調べると
AUTHOR
ps was originally written by Branko Lankester (lankeste fwi.uva.nl). Michael K. Johnson (johnsonm redhat.com)
re-wrote it significantly to use the proc filesystem, changing a few things in the process. Michael Shields
(mjshield nyx.cs.du.edu) added the pid-list feature. Charles Blake (cblake bbn.com) added multi-level sort‐
ing, the dirent-style library, the device name-to-number mmaped database, the approximate binary search di‐
rectly on System.map, and many code and documentation cleanups. David Mossberger-Tang wrote the generic BFD
support for psupdate. Albert Cahalan (albert users.sf.net) rewrote ps for full Unix98 and BSD support, along
with some ugly hacks for obsolete and foreign syntax.
Please send bug reports to (procps freelists.org). No subscription is required or suggested.
ふむ。
- Monitor your Linux system in your terminal with procps-ng | Opensource.com
- procps-ng / procps · GitLab
- ps (UNIX) - Wikipedia
- psコマンドに潜むBSDとSystemVの系譜|unknown protocol
- environ(7) - Linux manual page
FORTRAN Compiler on IBM 704
-0
704では0に+0と-0の二種類があるという 話は何度か出しているけれども、 ふとこんな抜き出しをしてみた。
>grep -A2 -e "^.\{7\}CLS L(0)" fort1.asm
CLS L(0) PREPARE TO SET I TO -0. 4F10471
C0152 STO I SET I = +0, OR -0. 4F10472
CLA 2G PICKUP NEXT CHARACTER, 4F10473
--
CLS L(0) SET E = -0 4F13483
STO E X 4F13484
LXA L(6),2 SET IR2 FOR SIX CHARS. 4F13485
--
CLS L(0) 4F13872
STO LAMBDA+9,A STO -0 IN LAMBDA+3(L+3) 4F13873
SLN 1 4F13874
--
CLS L(0) 4F13894
STO LAMBDA+3,A STO -0 IN LAMBDA+3(L+1) 4F13895
SLN 1 4F13896
--
CLS L(0) 4F13902
STO LAMBDA+9,A STO -0 IN LAMBDA+3(L+3) 4F13903
SLN 1 4F13904
--
CLS L(0) 4F13945
STO LAMBDA+6,A 4F13946
SLN 1 4F13947
後ろ四つと前二つは別のグループっぽい? 0,3,6,9とか麻雀のスジぽくもあるな😄
↑でも使っているI
について。
I
REM C0150,2/ CALLS=C0190,DIAG,C0180,C0160. CALLER=C0100. 4F10455
REM C0150 INSPECTS 1ST NB CHAR STARTING IN MQ. IF NUMERIC, SETS I4F10456
REM = 0, AND CONVERTS SUCCESSIVE NUMERICS TO BINARY. IF NON- 4F10457
REM NUMERIC, SETS I = -O, AND PACKS INTO 1G SUCCESSIVE CHARACTERS4F10458
REM UNTIL A ,()= OR ENDMK IS MET, AND LEFT IN THE AC. 4F10459
C0150 SXD C015X,2 SAVE THE C(XR2). 4F10460
TSX C0190,4 * TEST 1ST NON-BLANK CHARACTER 4F10461
CAS L(9) FOR NUMERIC OR NON-NUMERIC. 4F10462
C015X TXI C0151,0,** IF NON-NUMERIC, TRANSFER. 4F10463
NOP IF NUMERIC, THEN 4F10464
TSX C0180,2 * GO CONVERT TO BINARY. 4F10465
STO 2G SAVE NEXT NON-NUERIC CHARACTER. 4F10466
CLA L(0) PREPARE TO SET I TO +0. 4F10467
FWA TXI C0152,0,** GO SET I FOR NUMERIC. 4F10468
C0151 TSX C0160,2 * ASSEMBLE NON-NUMERICS IN 1G. 4F10469
STO 1G SAVE PUNCTUATION MARK, AND 4F10470
CLS L(0) PREPARE TO SET I TO -0. 4F10471
C0152 STO I SET I = +0, OR -0. 4F10472
CLA 2G PICKUP NEXT CHARACTER, 4F10473
LXD C015X,2 RESTORE THE C(XR2), AND 4F10474
TRA 1,2 * RETURN TO CALLER. 4F10475
REM END OF PROGRAM C0150. 4F10476
REM C0100/ CALLS=GETIFN,C0190,TEST..,C0180,C0160,C0150,TET00. 4F11804
REM C0100 PROCESSES DO STATEMENTS. 4F11805
C0100 TSX GETIFN,4 * GET INTERNAL FORMULA NUMBER IN 1C. 4F11806
TSX C0190,4 * OBTAIN 1ST NON-BLANK CHARACTER 4F11807
TSX TESTI0,4 * WHICH SHOULD BE NUMERIC. 4F11808
TSX C0180,2 * OBTAIN IN 1G THE BIN EQUIV OF BETA.4F11809
STO 2G SAVE THE 1ST CHAR OF SUBSCRIPT. 4F11810
CLA 1G TAKE CONVERTED RESULT FOR BETA 4F11811
STA 1C AND STORE IN ADDR OF 1C. 4F11812
CLA 2G 1C IS NOW COMPETE EXCEPT FOR TAG. 4F11813
TSX C0160,2 * OBTAIN IN 1G THE SUBSCRIPT. 4F11814
CLA 1G STORE SUBSCRIPT 4F11815
STO 1C+1 IN 1C+1. 4F11816
TSX C0150,2 * OBTIAN IN 1G THE PROPER N1. 4F11817
CLA 1G STORE N1 4F11818
STO 1C+2 IN 1C+2. 4F11819
CAL I OBTAIN I IN LOGICAL ACC AND 4F11820
ARS 18 STORE IN POS 18 OF 1C 4F11821
ORS 1C 0 IF NUMERIC, OR 1 IF NON-NUMERIC. 4F11822
TSX C0150,2 * OBTAIN IN 1G THE PROPER N2. 4F11823
TSX TESTA0,4 * TEST THE AC FOR COMMA OR ENDMARK. 4F11824
TNZ C0113 IF ENDMARK, THEN 4F11825
RQL 31 CREATE ONE IN MQ FOR N3 4F11826
STQ RESIDU AND PLACE IN RESIDU. 4F11827
C0113 CLA 1G STORE N2 4F11828
STO 1C+3 IN 1C+3. 4F11829
CAL I OBTAIN I IN LOG ACC AND 4F11830
ARS 19 STORE IN POS 19 OF 1C 4F11831
ORS 1C 0 IF NUMERIC, OR 1 IF NON-NUMERIC. 4F11832
TSX C0150,2 * OBTAIN IN 1G THE PROPER N3. 4F11833
TSX TESTD0,4 * THE AC SHOULD CONTIAN AN ENDMARK. 4F11834
CLA 1G STORE N3 4F11835
STO 1C+4 IN 1C+4. 4F11836
CAL I OBTAIN I IN LOG ACC AND 4F11837
ARS 20 STORE IN POS 20 OF 1C 4F11838
ORS 1C 0 IF NUMERIC, OR 1 IF NON-NUMERIC. 4F11839
TSX TET00,1 * GO TO TET PROGRAM TO ENTER 4F11840
PZE 1 1C,1C+1,..1C+4 IN TDO TABLE 1. 4F11841
TXI CA010,0 * EXTI TO PROCESS NEXT STATEMENT. 4F11842
REM END OF PROGRAM C0100. 4F11843
うーむ、なにがなにやら😓
ところでOBTIAN
はOBTAIN
のtypoだよね。たぶん。
博士学生の気分を味わえるゲーム "PhD Simulator" - 基本的にやることはひたすら論文を読んで、過労死に注意しながら実験するだけ。あとは運。https://t.co/zppiBkPehz
— 新山祐介 (Yusuke Shinyama) (@mootastic) July 5, 2023
malloc/free論争n回め
この話題は荒れるので戸締りしとこ https://t.co/BOnsU3lfRi
— AoiMoe a.k.aしお兄P (@AoiMoe) July 5, 2023
正確にはmalloc/free論争とは違うのだけど そこはそれ。
メモ
Linuxカーネルにおける深刻な権限昇格の新たな脆弱性StackRot/CVE-2023-3269についての技術的情報が明らかになっている。6/15発見で、バージョン6.1-6.4に影響。安定版カーネルへのパッチは7/1に提供されており、発見者は攻撃コードを添えた詳細を月末までに公開予定。 https://t.co/tDFE5vY9aI…
— kokumօtօ (@__kokumoto) July 6, 2023
- New StackRot Linux kernel flaw allows privilege escalation
- Maple Tree — The Linux Kernel documentation
- Blog Theme - Details
- Introducing maple trees [LWN.net]
千石
— muneto (@muneto21c) July 8, 2023