ときどきの雑記帖 RE* (新南口)
Beat It
Zガンダム@テレ玉
「ダカールの日」
- メロウド
- それがわかるまで7年かかった
- アジス中尉
- シャアの演説
- セイラさん
- 人身御供
ジェリドがバイアランに乗っていたので 前回の機体もバイアランだな。きっと (しかし松葉づえついてたような状態でMSに乗るのかね)
次回 「レコアの気配」
ガンダムつながりで。
髙山文彦監督インタビュー!
— 荒川直人 (@nao_arakawa) November 13, 2025
「泣ける」の評価に「失敗だった」 戦後世代がガンダムで描いたもの:朝日新聞 https://t.co/pHRqSAejEH
「泣ける」の評価に「失敗だった」 戦後世代がガンダムで描いたものhttps://t.co/Zk3Tc2sqiy
— シャア専用ブログ (@Char_Tweet) November 13, 2025
高山 今、『ポケットの中の戦争』は「泣ける」とか言われますが、泣かすために作ったんじゃないのに……。それはもう、作り手としての失敗です。完全にメロドラマになってしまっているという pic.twitter.com/2hHcZCyfIp
有料記事がプレゼントされました!11月14日 8:55まで全文お読みいただけます
— 雪見バーガー (@H926) November 12, 2025
「ボトムズ」監督が語るアニメと戦争 異色の主人公生んだ二つの時代:朝日新聞 https://t.co/HgtrGFBON7
scprintf
VCのライブラリにはこんな関数があるらしい (先頭にアンダースコアがあることからわかるように思い切り非標準)
- _scprintf、_scprintf_l、_scwprintf、_scwprintf_l | Microsoft Learn
- _vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l | Microsoft Learn
Excel
「MSG1」という名前を使ったら意図通りの動作をせず、 なんでだろうとしばらく悩んでしまったのだけど、 A1形式のセル番地として正当なものだったからだった😄
Bite The Bullet
苦痛に耐えてとか言った意味だそうな>Bite The Bullet
- The Linux Kernel Looks To “Bite The Bullet” In Enabling Microsoft C Extensions : r/programming
- The Linux Kernel Looks to “Bite the Bullet” in Enabling Microsoft C Extensions | Hacker News
- The Linux Kernel Looks To “Bite The Bullet” In Enabling Microsoft C Extensions - Phoronix
具体的にどんなコードでそれが必要になったのかわからんな
+struct slub_counters {
+ union {
+ unsigned long counters;
+ struct {
+ unsigned inuse:16;
+ unsigned objects:15;
+ unsigned frozen:1;
+ };
+ };
+};
これ?
- Clang Compiler User’s Manual - Clang 22.0.0git documentation
- C Dialect Options (Using the GNU Compiler Collection (GCC))
delimiter
そういや qw// とか s/// とかって qw() みたいにカッコでも書けるけど閉じカッコ単体ってデリミタにできるんかな
— D.Aoki (Amamori) (@VienosNotes) November 2, 2025
— D.Aoki (Amamori) (@VienosNotes) November 2, 2025
セミコロンすら使えるのか、改行いれるとビジュアルがやばい pic.twitter.com/O7UiKERlEh
— D.Aoki (Amamori) (@VienosNotes) November 2, 2025
5.000のyylexをみるとこんな感じのコードが出てくる
case KEY_q:
s = scan_str(s);
if (!s)
missingterm((char*)0);
yylval.ival = OP_CONST;
TERM(sublex_start());
case KEY_quotemeta:
UNI(OP_QUOTEMETA);
case KEY_qw:
s = scan_str(s);
if (!s)
missingterm((char*)0);
force_next(')');
nextval[nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, q(lex_stuff));
lex_stuff = Nullsv;
force_next(THING);
force_next(',');
nextval[nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, newSVpv(" ",1));
force_next(THING);
force_next('(');
yylval.ival = OP_SPLIT;
CLINE;
expect = XTERM;
bufptr = s;
last_lop = oldbufptr;
last_lop_op = OP_SPLIT;
return FUNC;
case KEY_qq:
s = scan_str(s);
if (!s)
missingterm((char*)0);
yylval.ival = OP_STRINGIFY;
if (SvIVX(lex_stuff) == '\'')
SvIVX(lex_stuff) = 0; /* qq'$foo' should intepolate */
TERM(sublex_start());
case KEY_qx:
s = scan_str(s);
if (!s)
missingterm((char*)0);
yylval.ival = OP_BACKTICK;
set_csh();
TERM(sublex_start());
で、scan_strをみるとこう
static char *
scan_str(start)
char *start;
{
SV *sv;
char *tmps;
register char *s = start;
register char term;
register char *to;
I32 brackets = 1;
if (isSPACE(*s))
s = skipspace(s);
CLINE;
term = *s;
multi_start = curcop->cop_line;
multi_open = term;
if (term && (tmps = strchr("([{< )]}> )]}>",term)))
term = tmps[5];
multi_close = term;
sv = NEWSV(87,80);
sv_upgrade(sv, SVt_PVIV);
SvIVX(sv) = term;
(void)SvPOK_only(sv); /* validate pointer */
s++;
for (;;) {
SvGROW(sv, SvCUR(sv) + (bufend - s) + 1);
to = SvPVX(sv)+SvCUR(sv);
if (multi_open == multi_close) {
for (; s < bufend; s++,to++) {
if (*s == '\n' && !rsfp)
curcop->cop_line++;
if (*s == '\\' && s+1 < bufend && term != '\\') {
if (s[1] == term)
s++;
else
*to++ = *s++;
}
else if (*s == term)
break;
*to = *s;
}
}
else {
for (; s < bufend; s++,to++) {
if (*s == '\n' && !rsfp)
curcop->cop_line++;
if (*s == '\\' && s+1 < bufend && term != '\\') {
if (s[1] == term)
s++;
else
*to++ = *s++;
}
else if (*s == term && --brackets <= 0)
break;
else if (*s == multi_open)
brackets++;
*to = *s;
}
}
*to = '\0';
SvCUR_set(sv, to - SvPVX(sv));
if (s < bufend) break; /* string ends on this line? */
if (!rsfp ||
!(oldoldbufptr = oldbufptr = s = sv_gets(linestr, rsfp, 0))) {
curcop->cop_line = multi_start;
return Nullch;
}
curcop->cop_line++;
if (perldb && curstash != debstash) {
SV *sv = NEWSV(88,0);
sv_upgrade(sv, SVt_PVMG);
sv_setsv(sv,linestr);
av_store(GvAV(curcop->cop_filegv),
(I32)curcop->cop_line, sv);
}
bufend = SvPVX(linestr) + SvCUR(linestr);
}
multi_end = curcop->cop_line;
s++;
if (SvCUR(sv) + 5 < SvLEN(sv)) {
SvLEN_set(sv, SvCUR(sv) + 1);
Renew(SvPVX(sv), SvLEN(sv), char);
}
if (lex_stuff)
lex_repl = sv;
else
lex_stuff = sv;
return s;
}
基本的には最新バージョンでも同じなんだけど、 だいぶ「毛深く」なっているのであえて一番古いところで(笑)
strchr("([{< )]}> )]}>",term) で閉じカッコ類が2回出てくるのが
ちょっと引っかかる(なぜそうなっているかはわかる)けど、それは脇に置いて。
カッコ類のペアが使えるようになったのは 5.000からすこしあと(5.002とか)だったような気がしたのだけど、 アーカイブを見る限りでは5.000からだったようで。
qrとごっちゃになっていたのかもしれない
新刊近刊
In Kotlin from Scratch
Kotlin isn’t just for Android. In Kotlin from Scratch, you’ll build 37 projects that explore math, physics, and algorithms to strengthen your coding skills.https://t.co/4FQOaCPcvW pic.twitter.com/pc1PFCqDB7
— No Starch Press (@nostarch) November 13, 2025
Sutskever’s List
Sutskever's List - Richard Heimann https://t.co/ldhpP5WWWl すごい本がでるな.イリヤ・サツキバーがQUAKE/DOOMクリエイターのジョン・カーマックに渡した「これを読めば今のAI研究の90%が理解できるようになる」研究論文30報のリストを,研究コミュニティが推測し,その論文を解説した本だそう. pic.twitter.com/fuJBjQOMcF
— Yuta Kashino (@yutakashino) November 12, 2025
Trigger Happy
【注目記事】古今東西のコントローラ200種以上を取り上げた海外書籍が11月17日に発売。FC以前から最新のJoy-Conまで500枚以上の写真で紹介https://t.co/ySJJsVb5e0… pic.twitter.com/0oOBJiP2Bi
— 4Gamer (@4GamerNews) November 13, 2025
Trigger Happy: A Visual Celebration of Video Game Controllers | Bitmap Books
サイバースティックもあるかな?
確率ピクト図鑑
目で見て体感できる 確率ピクト図鑑 | 堀口智之 |本 | 通販 | Amazon
awk
goawk
No action is equivalent to { print $0 } · Issue #261 · benhoyt/goawk
echo bug? | goawk '1 {}' outputs bug?
echo bug? | goawk '{}' no output
となるのは意図的か? という質問(ちゃんとコードを読んでいて該当箇所も指摘している)
// No action is equivalent to { print $0 }
if len(action.Body) == 0 {
err := p.printLine(p.output, p.line)
if err != nil {
return err
}
continue
}
パターンに対応するアクションがないことを
len(action.Body) == 0で判定しようとしているけど、
それだと「空のアクション」でも真になっちゃうということか
var body []Opcode
- if len(action.Stmts) > 0 {
- c := compiler{resolved: resolved, program: p, indexes: indexes}
- c.stmts(action.Stmts)
- body = c.finish()
- } else if len(action.Pattern) == 0 {
- // No action and no pattern (a bare '{}') should have at least one
+ switch {
+ case action.Stmts == nil:
+ // No action block, interpreter will treat this as '{ print $0 }'
+ case len(action.Stmts) == 0:
+ // Empty action block (a bare '{}') should have at least one
// opcode, otherwise interpreter will treat it as no action, which
// would be evaluated as '{ print $0 }'.
c := compiler{resolved: resolved, program: p, indexes: indexes}
c.add(Nop)
body = c.finish()
+ default:
+ // Regular body such as `{ print $1 }`
+ c := compiler{resolved: resolved, program: p, indexes: indexes}
+ c.stmts(action.Stmts)
+ body = c.finish()
}
なるほど?
和氏の璧
日本でも馴染み深い和氏の璧なんかもあって良い展示が多い印象だった。
— 囚人🧸 (@pwpVum3dB676U6C) November 12, 2025
思いもよらず、藺相如に思いを馳せてしまった pic.twitter.com/V4tDJkGAhf
そんなの来てたのかぁー>大阪万博