ときどきの雑記帖 RE* (新南口)
Flat Top
swift
その考え自体がバイト列志向でダメなの🙅。内部的な扱いはopaqueでないと。python2はそれで大失敗した。python3はUTF-32固定にしたけどそのこと自体まだ懲りてないことの傍証でもある。PerlとRubyはうまくやった。やりすぎなほどうまくやったのがSwift https://t.co/KBD2DCiChb
— Dan Kogai (小飼 弾) (@dankogai) April 30, 2026
というのを見かけ、へーそうなんだと調べてみたものの よくわからんげ
- 【Linux】Swift 6で文字コード変換ができなくなった
- Swiftで色々なテキストエンコーディングのテキストを読む ref: http://qiita.com/studiork/items/b5485e89d7c4350b5abc · GitHub
- 文字と文字列(Strings and Characters) | THE SWIFT PROGRAMMING LANGUAGE(日本語)
- Swiftの文字コード変換プロセスを見てみた
- Swiftでプログラミング。 - 文字列と文字 3|donguri
まあSwiftは縁がないしねえ
C3
C3 | Blog | An evolution, not a revolution
Ruby
ポエムRubyは動的さが足りていないと思うのですが……。 #Crystal - Qiita
埼玉長野
つい最近まで埼玉県と長野県が接しているのを知らなかった😓
〇忘録
割と(?)みかける勘違いらしい
完全ハッシュ
10進6桁の数字をごにょごにょして6文字の文字列(base36)を出力するハッシュ関数、 それも完全ハッシュ関数が必要になったのだけど 自作するのはめんどくせーので、copilotに書かせようとしたところ
「出力範囲の方がでかいので入力をそのまま返せば完全ハッシュ関数に なりますぜ」
という回答が返ってきた。 そりゃまあ確かにそうなんだが、それでは今回の役には立たないので
「出力から入力が推測できない演算を行え」
という条件を追加して返ってきたのがこれ
MASK = 1023 # 10bit
KEYS = [0x123, 0x456, 0x789, 0xABC]
def F(r, k):
return ((r * 1103515245 + k) & MASK)
def secure_perfect_hash(x: int) -> int:
if not (0 <= x <= 999_999):
raise ValueError("out of range")
L = (x >> 10) & MASK
R = x & MASK
for k in KEYS:
L, R = R, L ^ F(R, k)
return (L << 10) | R
def to_base36(n):
chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
s = ""
while n:
n, r = divmod(n, 36)
s = chars[r] + s
return s.zfill(6)
完全ハッシュ関数で検索したらいろいろ見つかったのでメモ
- Knuth multiplicative hash が最小完全ハッシュ関数であることの証明 | メルカリエンジニアリング
- multiplicative hash は完全ではない(証明付) #Python - Qiita
- 最小完全ハッシュ関数の作り方
- ハッシュ関数ひとめぐり - hidekatsu-izuno 日々の記録
NetHack
X68000に移植されたNetHackをそこそこやりこんだのだけど、 バージョンいくつだったんだろう?
功罪
【第9回】フラグのラビリンス ── 構造化プログラムの功罪と、迷宮の地図を持つ男|0C7(ゼロ・シー・セブン)
この内容で「構造化プログラムの功罪」と書かれると フラグが乱立して収集がつかなくなったのは 構造化プログラミングのせい。と読めるのだけど そりゃ違うよなあ
WG 14
| N3878 | 2026/05/03 | Bhakta, | CFP 2026/04/15 Meeting Minutes |
| N3877 | 2026/05/03 | Bhakta, | Sign of 0 returned by fromfp |
新刊近刊
失敗集めてみた
ソフトウェア受託現場の「失敗」集めてみた。 42の失敗事例で学ぶ受託開発のうまい進めかた | 出石 聡史 |本 | 通販 | Amazon
第3弾? 三つまとめたページもあったり ソフトウェア開発現場の「失敗」集めてみた。_3冊セット |本 | 通販 | Amazon
awk
gawk
WG 14で何度か見かけたアレを使うようにしたらしい
Update dfa from gnulib. - gawk.git - gawk
diff --git a/support/dfa.c b/support/dfa.c
index 74ec0008..0bfd8048 100644
--- a/support/dfa.c
+++ b/support/dfa.c
@@ -406,8 +406,9 @@ struct mb_char_classes
{
ptrdiff_t cset;
bool invert;
- char32_t *chars; /* Normal characters. */
idx_t nchars;
+ char32_t *chars /* Normal characters. */
+ _GL_ATTRIBUTE_COUNTED_BY (nchars);
idx_t nchars_alloc;
};
同様の変更がそこかしこで行われている模様
use the counted_by attribute in regex
もうひとつgawkのコミットから
Simplify change to pma.c. - gawk.git - gawk
diff --git a/support/ChangeLog b/support/ChangeLog
index 2c88ae4f..a807e6ac 100644
--- a/support/ChangeLog
+++ b/support/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * pam.c (integrity_check): Cast `nrev' to void. Simpler way to
+ silence the warning, and it actually works.
+
2026-05-01 Arnold D. Robbins <arnold@skeeve.com>
とあり。実際どんな変更をしたかというと
diff --git a/support/pma.c b/support/pma.c
index 75f084ea..29a9def0 100644
--- a/support/pma.c
+++ b/support/pma.c
@@ -231,9 +231,8 @@ static int integrity_check(int line) { // can be slow; intended for debugging s
for (p = f->fnext; p != f; p = p->fnext) { nfwd++; assert(VAF(p)); assert(0 == getbit(p, IU)); }
for (p = f->fprev; p != f; p = p->fprev) { nrev++; assert(VAF(p)); assert(0 == getbit(p, IU)); }
assert(nfwd == nrev); // count should be the same in both directions
- // the following line uses nrev to silence a stupid gcc 16.1 warning.
- if (nfwd != nrev) fprintf(stderr, "%s:%d: shouldn't happen\n",
- __FILE__, __LINE__);
+ // the following line silences a stupid gcc 16.1 warning.
+ (void) nrev;
tf += nfwd;
// check ao sizes against UB
for (p = f->fnext; p != f; p = p->fnext) {
こう。
変更前のコードはなんでこんなことをと思ったのだけど、
どうも以前のgccでは(void) nrev;が期待通り動作しないことがあったので
わざわざこうしていたっぽい?
ref; silence unused variable warning by michaelforney · Pull Request #265 · onetrueawk/awk
countof
Use the counted_by attribute. - gettext.git - GNU gettext
diff --git a/gettext-runtime/src/envsubst.c b/gettext-runtime/src/envsubst.c
index db7693510..4ff05d9d5 100644
--- a/gettext-runtime/src/envsubst.c
+++ b/gettext-runtime/src/envsubst.c
@@ -308,8 +308,9 @@ print_variables (const char *string)
typedef struct string_list_ty string_list_ty;
struct string_list_ty
{
- const char **item;
size_t nitems;
+ const char **item
+ COUNTED_BY (nitems);
size_t nitems_max;
};
regex
regex: fix glibc bug 20381 - gnulib.git - gnulib - GNU portability library
あれ、コミットが消えた?
#何度貼ったかわからない画像を貼る
— ko8 in the sky (@ko8inthesky) May 2, 2026
セーラー服とギランドウ pic.twitter.com/8bYcl5x0mb
図書館情報大
図書館情報大ってどこだよ… pic.twitter.com/cPs93ypOIJ
— いざなぎ (@IzaNagi_08) May 4, 2026
会社の同期入社に図書館情報大出身の人がいたなあ。
use the 〇〇
— タカヒコ (@takahiko_denki) May 3, 2026
夢の跡
案外色んなところにいる星丸 https://t.co/fVxYfkxezD pic.twitter.com/q37BYyQHaL
— カパロイド✈️🦅🚀📸🛳️ (@kaparoid01) May 6, 2026
損害
空母対空母の海戦映画を観てると、お互い2波3波と繰り出す艦載機がゴリゴリ減っていくのがエグい・・・・・・
— 酒樽 蔵之介 (@KulasanM) May 5, 2026
中学高校のころウォーゲームをよくプレイしていたのだけど、 太平洋の空母の戦いを取り上げたゲーム (アヴァロンヒルのFlat Topとか) をプレイすると本当にこんな感じだった。
あと「戦闘機が足りねー」(笑)
ちょっと書いておくと、 戦闘機+急降下爆撃機+雷撃機 がおおむね1/3ずつの配分で空母に搭載されているんだけど、 これだと空母の護衛と 攻撃隊の護衛の両方に十分な数の戦闘機を 配置できないのね。
現実(史実)でも戦争が進むにつれて戦闘機の割合が多くなってたはず (まあほかにもいろいろ理由はあるんだけど)
フラットトップ / 日米航空母艦の戦い レビュー評価など2件(Flat Top)|ボードゲーム情報
この投稿から派生した話題で
確かに。でも大人になると……。
— BARSERGA@C107新刊通販開始中 (@BARSERGA) May 5, 2026
1機あたりの搭乗員、海軍側の雷撃機が3人だったりするのにB-17だと、1機10名。しかも、作戦参加数も多いし、シュヴァインフルト爆撃作戦では、230機中36機(約15.7%)の損耗で360名近くが戦死となると流石に真顔どころか真っ青になるよね……。 https://t.co/1kibDAYBV1
第二次世界大戦中のドイツへの戦略爆撃が題材の映画に 「メンフィス・ベル」があるのだけど これは自分が好きな映画のひとつ
次の祝日は海の日
ゴールデンウィーク終了のお知らせ pic.twitter.com/4Ob0hjI3ij
— goking/山田剛毅 (@goking5) May 5, 2026