ときどきの雑記帖 RE* (新南口)
追憶売ります
今週のしずえさん
「たい焼き」
問題とは直接関係ないんだけど、前振りで知った衝撃(?)の事実。
マジですかい。
紅まどんな
某スーパーマーケットで今シーズン初目撃。
昨シーズンは買い損ねた(油断してたら店頭から姿を消していた)ので今シーズンこそ。 とは思うものの、やっぱたけーなあ。
チケットショップ
それほど安くなっていたわけでもないのだけど、 チケットショップで美術展なんかの前売り券を買ってから 行くということをここ数年やっていたが ここ2年ほどは例のアレ(現在進行中)でご無沙汰だった。
とあるもの(前売り券の類ではない)を買いによく行っていたチケットショップを久しぶりに覗いてみたら…
質屋かというくらいそっち方面(どこ)の品物で溢れていて前売り券の類は皆無。 ある程度予想はしていたけど、びっくりしつつ納得してしまった。
A tale of Java Hash Tables
タイトルから予想していたのとちょっと違ったけど面白かった。
- A tale of Java Hash Tables 元記事
- A tale of Java Hash Tables reddit
- A Tale of Java Hash Tables Hacker News| Hacker News
Programming Language | Hash table algorithm | Source(s) |
---|---|---|
Python | Open Addressing | dictobject.c |
Ruby | Open Addressing | st.c |
Rust | Open Addressing | map.rs |
Java | Separate Chaining | HashMap.java |
Go | Separate Chaining | maphash.go |
C# | Separate Chaining | Dictionary.cs |
C++ | Separate Chaining | hashtable.h |
Perlがないのはまあ、そうなのかと納得してしまう。か?
計装
近刊のこの本のタイトル
実践バイナリ解析 バイナリ計装、解析、逆アセンブリのためのLinuxツールの作り方
にある「計装」って聞きなれない単語だなあと思ったので調べた。
原著は多分これ
で、
Practical Binary Analysis: Build Your Own Linux Tools for Binary Instrumentation, Analysis, and Disassembly
が原著のタイトルなのでInstrumentation を計装としたのだろうけど (実際辞書にもその訳語はある)、どうなんだろうねえ🤔
- instrumentationの意味 - goo辞書 英和和英
- instrumentationの意味・使い方・読み方|英辞郎 on the WEB
- Instrumentation (Java Platform SE 6)
bison
しまもん | はすみきん | [Ruby Advent Calendar 2021] PicoRubyあるいはRuby言語のコンパイラについて
みなさんご存じのとおり、CRubyは(mrubyも)YACCというパーサジェネレータを使用しています。 YACCは、BISONと呼ばれることもあります。
YACCをGNUプロジェクトが引き継いだときに、BISONという名前に変わったのだろうと思います。繰り返しますが、 この記事は何も調べないで記憶と思い込みで書いています。
BISONのどこかのバージョンで、生成されるパーサがリエントラントになりました。 逆にいうと、YACC時代はリエントラントではなかった、ということです。
Rubyの開発が開始された前世紀の時点で、YACC/BISONがリエントラントになっていたかどうかわかりませんが、 すくなくともFreeBSDでもRubyをビルドできるようにするためには、古い「バークレーYACC」(?) が読めるparse.yを書く必要があっただろうと想像しています。 CRubyのparse.yが再帰呼び出しを使用していないのには、 このへんの経緯もあるのかもしれませんし、ないのかもしれません。もともと再帰する必要などないのでしょう(なにもわからない)。
どこからツッコミ(訂正)入れたらいいかわからん…
__flexarr
最近glibcのlocale関連のコードをちまちまと読んでいるのですが、 localeinfo.h というファイルで見慣れないものを発見。
glibc/localeinfo.h at 895ef79e04a953cac1493863bcae29ad85657ee1 · lattera/glibc
/* Structure describing locale data in core for a category. */
struct __locale_data
{
const char *name;
const char *filedata; /* Region mapping the file data. */
off_t filesize; /* Size of the file (and the region). */
enum /* Flavor of storage used for those. */
{
ld_malloced, /* Both are malloc'd. */
ld_mapped, /* name is malloc'd, filedata mmap'd */
ld_archive /* Both point into mmap'd archive regions. */
} alloc;
/* This provides a slot for category-specific code to cache data computed
about this locale. That code can set a cleanup function to deallocate
the data. */
struct
{
void (*cleanup) (struct __locale_data *);
union
{
void *data;
struct lc_time_data *time;
const struct gconv_fcts *ctype;
};
} private;
unsigned int usage_count; /* Counter for users. */
int use_translit; /* Nonzero if the mb*towv*() and wc*tomb()
functions should use transliteration. */
unsigned int nstrings; /* Number of strings below. */
union locale_data_value
{
const uint32_t *wstr;
const char *string;
unsigned int word; /* Note endian issues vs 64-bit pointers. */
}
values __flexarr; /* Items, usually pointers into `filedata'. */
};
この構造体定義の最後にある __flexarr
とは?
ということで検索してみたがろくにひっかからねえ…
- c - 什么是 __flexarr 以及 c 程序员如何/为什么使用它? - IT工具网
- inotifyによるLinuxファイルシステムイベントの監視 - BLuE AND PuRE
- What is __flexarr and how/why do c programmers use it? - Stack Overflow
結局のところ、[]
や [0]
に置き換えられるものらしい。
つまり
struct hoge {
int size;
char body[0];
};
のような、大きさが可変の構造体を定義するためのもの。と。
C99的には[]
でいいらしいけど
[0]
って書いちゃうかなあ(というほどこの手法を使う機会はない)。
あと、むかーしそのどちらも許されなくて[1]
とされていたものをいじったことがあったかな。
前述のリンクのうちstackoverflowのものの先にある回答で触れられている
Question 2.6
の質問では[1]
が使われてますね。
銀河の歴史がまた一ページ
宇宙暦745年12月5日09:50 第二次ティアマト星域会戦がはじまった。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 5, 2021
宇宙暦745年12月6日14:30 銀河帝国軍のミュッケンベルガー中将が旗艦コーアマルクを突出させるも、自由惑星同盟軍第十一艦隊(司令官コープ中将)による集中砲火を浴びて戦死した。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 6, 2021
宇宙暦745年12月7日18時 この時点で、自由惑星同盟軍宇宙艦隊司令部内部での対立はきわめて深刻なものとなっていた。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 7, 2021