ときどきの雑記帖 RE* (新南口)
The Ringworld Engineers
平野耕太★大博覧會
MXのボルテスVレガシー枠でのCMでこんなのが開催されるのを知った
メインフレーム
メインフレームはなぜメインフレームと呼ばれるのか(呼ばれるようになったのか)という話
- The origin and unexpected evolution of the word “mainframe” | Hacker News
- The origin and unexpected evolution of the word “mainframe”
APL
「えーあい」はAPLのコード片の解説もやってくれるかな🤔
The APL Challenge | Hacker News
- https://apl.quest might be of interest.
- APL Discord is quite active: https://aplwiki.com/wiki/Chat_rooms_and_forums
- The past challenges are available too: https://dyalog.com/apl-challenge.htm
string interpolation
- F-strings for C++26 proposal [pdf] : r/programming
- https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3412r0.pdf
compound literal
前々回からのコレ、compound literal(複合リテラル)だったようだ
#include <stdio.h>
struct MyStruct {
int val;
};
typedef struct MyStruct MyStruct;
void myFunction(MyStruct **ppmyStruct) {
printf("ppmyStruct = %p, *ppmyStruct = %p, %d\n",
ppmyStruct, *ppmyStruct, (*ppmyStruct)->val);
(*ppmyStruct)->val *= 2;
}
int
main() {
MyStruct myStruct = { .val = 42 };
printf("val = %d\n", myStruct.val);
printf("&myStruct = %p\n", &myStruct);
myFunction(&(MyStruct*){&myStruct});
printf("val = %d\n", myStruct.val);
return 0;
}
見た目がキャストなので(構文規則的にもキャスト式の辺りにある)気がつかなかったけど、
&myStruct
という値を持ったMyStruct*
という型の変数(ただし名前はない)を
作り、そのアドレスを(&演算子を適用することによって)取り出して
関数の引数として渡している。と。
通常のキャスト式だとその結果はlvalueを持たない
(のでなぜ&
がつけられるのだと悩んだ)のだけど、
compund literalはlvalueを持つので&
も適用できる。
というわけ。
ISO/IEC 9899:202y (en) — n3435 working draft のキャスト式(cast-expression)の辺りから追いかけると
6.5.5 Cast operators
Syntax cast-expression: unary-expression ( type-name ) cast-expression
ここからunary-expression
へ行き
6.5.4 Unary operators
Syntax unary-expression: postfix-expression ++ unary-expression -- unary-expression unary-operator cast-expression _Lengthof unary-expression _Lengthof ( type-name ) sizeof unary-expression sizeof ( type-name ) alignof ( type-name ) unary-operator: one of & * + - ~ !
さらにpostfix-expression
へ
6.5.3 Postfix operators
6.5.3.1 General Syntax postfix-expression: primary-expression postfix-expression [ expression ] postfix-expression ( argument-expression-listopt ) postfix-expression . identifier postfix-expression -> identifier postfix-expression ++ postfix-expression -- compound-literal argument-expression-list: assignment-expression argument-expression-list , assignment-expression
そこにcompound-literal
があって
6.5.3.6 Compound literals
Syntax compound-literal: ( storage-class-specifiersopt type-name ) braced-initializer storage-class-specifiers: storage-class-specifier storage-class-specifiers storage-class-specifier
こう。
型名を囲む丸カッコは必須だし、braced-initializer
なので
当然カーリーブレースのペアも必須と。
ポインター変数の例は(たぶん)なかったけど、 compound literalのアドレスをとって関数に渡すのは
EXAMPLE 4 Initializers with designations can be combined with compound literals. Structure objects created using compound literals can be passed to functions without depending on member order:
drawline((struct point){.x=1, .y=1}, (struct point){.x=3, .y=4});
Or, if drawline instead expected pointers to struct point:
drawline(&(struct point){.x=1, .y=1}, &(struct point){.x=3, .y=4});
という例があった。
compound literalそのものは知っていたけど (が、ほとんど使ったことはない)、 こういう使い方は知らなかった😓
悪ノリしていろいろ試してみた😄
#include <stdio.h>
typedef struct S {
char *key;
int val;
} S;
void subfunc1(S *p) {
printf("%s = %d\n", p->key, p->val);
}
void subfunc2(S **p) {
printf("%s = %d\n", (*p)->key, (*p)->val);
}
void subfunc3(S p[]) {
for (int n=0; p[n].key; printf("%s = %d\n", p[n].key, p[n].val), n++)
/**/ ;
}
void subfunc4(S **pp) {
for (; *pp; printf("%s = %d\n", (*pp)->key, (*pp)->val), pp++)
/**/ ;
}
int main() {
subfunc1(&(S){.key = "The", .val = 1});
S s1 = {.key = "quick", .val = 2};
subfunc2(&(S*){&s1});
subfunc3((S[]){{.key = "brown", .val = 3}, {.key = "fox", .val = 4}, {}});
S s4 = {.key = "jumps", .val = 5};
S s3 = {.key = "over", .val = 6};
S s2 = {.key = "the lazy dog", .val = 7};
subfunc4((S*[]){ &s4, &s3, &s2, NULL});
}
平衡三進法
新刊近刊
これは、なかなか面白い本です。ME262の開発には、技術的な課題だけでなく、色々な事情があったという話しを当時の議事録などを使い、書いています。この様な内容は、あまり取り上げられないので、興味があれば一読をお勧めします。 https://t.co/kgApc1xghz
— ケンジ (@GKenjim) February 1, 2025
Source Code: My Beginnings
来年の2月にビル・ゲイツの回顧録『Source Code: My Beginnings』が出るとな - YAMDAS現更新履歴
Amazonで本を探していたら関連する本にこれがでてきた。 もう発売されているようだ。
ストリートコーダー
【重大なお知らせ!】
— freddi(Yuki Aki)@新しい翻訳本発売します (@___freddi___) February 5, 2025
2月末に @stzn3 san と翻訳した「ストリートコーダー」という本を秀和システムより発売します。ソフトウェアエンジニアの現場(ストリート)で生きるために、どういったノウハウが活用できるか詳しく書いています。よかったらご覧ください。
各書店様で予約受付中です… pic.twitter.com/gR8GYz2JG0
manningの本の翻訳本を出しているの何社あるんだろう?
だます技術
【新刊】2025年3月7日発売『だます技術』本体1,400円+税,株式会社ラック 金融犯罪対策センター 小森美武,木村将之,岡本信秀,池田芳輝,海老原章,新林直樹,田中しおり,佐野智弥 著,「自分がひっかかるわけない」 そう思ってる人が,なぜカモになるのか?https://t.co/D0JYZSqWa4 pic.twitter.com/xkOSTPD7RV
— 技術評論社販売促進部 (@gihyo_hansoku) February 5, 2025
awk
{任意のコマンド} | awk 'END{print $0}'
で最後の行を出力とあるけど、ENDアクションで$0を参照してよかったっけ? 時になったので(ry
POSIX的には特に明記されていなかったっぽいので gawkのマニュアルを見ると
7.1.4.2 Input/Output from BEGIN and END Rules
Traditionally, due largely to implementation issues, $0 and NF were undefined inside an END rule. The POSIX standard specifies that NF is available in an END rule. It contains the number of fields from the last input record. Most probably due to an oversight, the standard does not say that $0 is also preserved, although logically one would think that it should be. In fact, all of BWK awk, mawk, and gawk preserve the value of $0 for use in END rules. Be aware, however, that some other implementations and many older versions of Unix awk do not.
とあった。 ふむ。
the standard does not say that $0 is
なのでやっぱり明確には決められていないのか。
gawk
minrxのブランチがそこそこ活発
Update minrx.cpp. - gawk.git - gawk
- if (!best.has_value() && (!r.firstbytes.has_value() || (wcnext != WConv::End && (*r.firstbytes)[(unsigned char) *wconv.cp]))) {
+ if (!best.has_value()) {
そりゃ高速化するだろうけど なんでこれでいいのかよくわからんな(やはりminrx読まんとアレか)
- GitHub - mikehaertel/minrx: Minimal matcher for POSIX Extended Regular Expressions
- Commits ・ mikehaertel/minrx ・ GitHub
FORTRAN Compiler on IBM 704
- 文関数の呼び出し
- 記号表
- 配列
Hugoメモ
描く人、安彦良和
「安彦良和の色調」で塗装してみた「ジークアクス」いい感じです!青なんか成型色なんじゃないかってバッチリの色味!宇宙世紀だから、安彦先生の色と相性いいのかも!
— 【冬の寒さに負けずに塗装する時は換気を】ガイアノーツ (@gaianotes) February 1, 2025
「描く人、安彦良和」
次回は4月19日から青森で開催ということです。 pic.twitter.com/JJC8BCvfEb
近くに巡回してこないかなあ…
と思っていたら
東京会場
会期
2025年 冬
2025年春ごろに発表の予定
おお。
攻殻機動隊 全アニメシリーズ横断展覧会
|◤新情報解禁◢|
— 攻殻機動隊【公式】GHOST IN THE SHELL official (@thegitsofficial) February 5, 2025
============================
攻殻機動隊
全アニメシリーズ横断展覧会
2026年/東京 開催決定
============================
劇場アニメーション「GHOST IN THE SHELL /… pic.twitter.com/kQdb9PKm2p
来年か。
机上の
【新規/げんれい工房】
— 武装商店(12:00~19:30 火曜定休) (@busou) February 3, 2025
・アクリルスタンド「空論(机上専用)」 税込¥770
どこの会議室にも一つは欲しい、需要抜群のアイテムです。
上の方へのプレゼントにおひとついかがですか。 pic.twitter.com/ejGUhFAJwQ
いいな、これ😄
レトロパソコンBASIC愛好会
#拡散希望
— aro (@arohiro74) February 4, 2025
「レトロパソコンBASIC愛好会」YouTubeチャンネル作りました!!
※今上げている動画は以前別チャンネルで発表した物の転載ですhttps://t.co/4mHSoAkO92