ときどきの雑記帖 RE* (新南口)
いてつくはどう
とほほのPowerShell入門
「とほほ」氏の解説サイトに「とほほのPowerShell入門」が追加 ほか - ダイジェストニュース - 窓の杜
着実に増えているなあ
IBM 360とかMC68000とか
Storing data in pointers - Muxup
F1
ついに記録が破られた! 不滅と思われた1988年マクラーレン・ホンダ“16戦15勝”の最高勝率記録をレッドブルが更新。22戦21勝で勝率95.45%
ちょっと前にレッドブルが年間17勝目を挙げたというニュースを見かけて、 いったい今は年間何戦やっているんだ と思ったのだけど(調べなかった) 22戦もやっているのか。
Qiita
数日前に、その少し前から自分にとっては割と面白い投稿を していた人がいきなり(?)アカウントごとすべての投稿を消してしまい、 「ありゃ」な事態に。 ううむ読み返したい記事があったのだが(OneTabで保存していたタブにあった)。
Luaのテーブルの空チェック
luaってテーブルが空かどうかの判定に next(a_table) == nil ってしなきゃいかんのですか…
— さく (@sakuro) November 27, 2023
え、なにそれ。 と調べてみたら確かにそうらしい。
- efficient way to determine if a Lua table is empty (contains no entries)? · GitHub
- Lua: Detecting Empty Tables in Lua
- Re: Checking if Table is Empty (C API)
- Lua Next | How does next() Function Work in Lua Programming?
完璧な1セント硬貨
わざわざ名付けなくても「完璧な1セント硬貨」って呼ばれてる問題だなあと。 https://t.co/mBEmTzHuuy
— どみにをん525 (@Dominion525) November 27, 2023
へー、と思いつつググると ピクサーで使われていた(る)言葉らしい。 そう言えばピクサーに関する本で見たような覚えも?🤔
- Webデザインにおける「神は細部に宿る」と「完璧な1セント硬貨」 - 株式会社グローバルゲート公式ブログ
- クリエイターは必ず読もう。【ピクサー流 創造するちから】を読んだら凄かった。 - meycoのUX&UIデザイン技術メモ
フジタ
メモ。 軽井沢の美術館にも行きたいんだよなあ
- 藤田嗣治は蛍光発光が異なる3種の「白」を使い分けていた - 再評価につながる発見 | TECH+(テックプラス)
- レオナール・フジタ(藤田嗣治)が描いた肌質感の秘密を、蛍光スペクトル解析によって解明 | 公益財団法人ポーラ美術振興財団ポーラ美術館のプレスリリース
新刊近刊
ネリマ
投資マンガ「お嬢様 投資をはじめる!」が12/15に発売です。
— スダ (@sudamin) November 28, 2023
10年がかりで描いた同人誌「ネリマ証券」の書籍化です。めでたいのです。
ちなみに「CPUの創りかた」以来20年ぶりの書籍で、あといちおう漫画家デビュー?です。
全3巻で、まずは1巻と2巻が同時発売となります。https://t.co/kMxAqfBnE0
技術者倫理
他の本を探しているときにたまたまこの本が目に入ったから書く。 というわけでもないんですが、 「エンジニアが読むべき~」な本でこういうのを挙げる人を見たことがないですね (いたらごめん)。
その筋(どれ)の専門教育を受けた人なら この辺の話もきちんと抑えているとは思うのだけど以下略
まあ「自分の値段(≠価値)」を上げるようなものではない(たぶん)しねえ
awk
gawk
gawkのマニュアルの最新版を眺めていたらこんなくだりに出会った。
For decades, anyone wishing to work with CSV files and awk had to “roll their own” solution. (For an example, see Defining Fields by Content). In 2023, Brian Kernighan decided to add CSV support to his version of awk. In order to keep up, gawk too provides the same support as his version. To use CSV data, invoke gawk with either of the -k or –csv options.
どういった経緯で
Brian Kernighan decided to add CSV support
となったのかも知りたいところだけど
それはおいといて
Carriage-Return–Line-Feed Line Endings In CSV File
\r\n is the invention of the devil.
— Brian Kernighan
わはは。
そしてそのすぐあとに
The behavior of the split() function (not formally discussed yet, see String-Manipulation Functions) differs slightly when processing CSV files. When called with two arguments (‘split(string, array)’), split() does CSV-based splitting. Otherwise, it behaves normally.
などとあったので(ry
split(string, array [, fieldsep [, seps ] ])
If gawk is invoked with –csv, then a two-argument call to split() splits the string using the CSV parsing rules as described in Working With Comma Separated Value Files. With three and four arguments, split() works as just described. The four-argument call makes no sense, since each element of seps would simply consist of a string containing a comma.
で
/* do_split --- implement split(), semantics are same as for field splitting */
NODE *
do_split(int nargs)
{
NODE *src, *arr, *sep, *fs, *tmp, *sep_arr = NULL;
char *s;
long (*parseit)(long, char **, int, NODE *,
Regexp *, Setfunc, NODE *, NODE *, bool);
Regexp *rp = NULL;
さくっと略
if (do_csv && (sep->re_flags & FS_DFLT) != 0 && nargs == 3) {
fs = NULL;
parseit = comma_parse_field;
} else if ((sep->re_flags & FS_DFLT) != 0
&& current_field_sep() == Using_FS
&& ! RS_is_null) {
parseit = parse_field;
fs = force_string(FS_node->var_value);
rp = FS_regexp;
} else {
fs = sep->re_exp;
if (fs->stlen == 0) {
static bool warned = false;
parseit = null_parse_field;
if (do_lint && ! warned) {
warned = true;
lintwarn(_("split: null string for third arg is a non-standard extension"));
}
} else if (fs->stlen == 1 && (sep->re_flags & CONSTANT) == 0) {
if (fs->stptr[0] == ' ') {
parseit = def_parse_field;
} else
parseit = sc_parse_field;
} else {
parseit = re_parse_field;
rp = re_update(sep);
}
}
s = src->stptr;
tmp = make_number((AWKNUM) (*parseit)(UNLIMITED, &s, (int) src->stlen,
fs, rp, set_element, arr, sep_arr, false));
src = POP_SCALAR(); /* really pop off stack */
DEREF(src);
return tmp;
}
csvモードのときにparseitに代入されているのは
comma_parse_field
で、
それはどんなものかというと
/*
* comma_parse_field --- CSV parsing same as BWK awk.
*
* This is called both from get_field() and from do_split()
* via (*parse_field)(). This variation is for when FS is a comma,
* we do very basic CSV parsing, the same as BWK awk.
*/
static long
comma_parse_field(long up_to, /* parse only up to this field number */
char **buf, /* on input: string to parse; on output: point to start next */
int len,
NODE *fs,
Regexp *rp ATTRIBUTE_UNUSED,
Setfunc set, /* routine to set the value of the parsed field */
NODE *n,
NODE *sep_arr, /* array of field separators (maybe NULL) */
bool in_middle ATTRIBUTE_UNUSED)
{
(関数本体の子コードは略)なるほど。
FORTRAN Compiler on IBM 704
クエスト
自分がタスク管理に利用しているRedmineの「チケット」って名前を全て「クエスト」にしたら悲しさがマシマシになったんです…… pic.twitter.com/6VOWBItbaY
— 手動人形 (@Manualmaton) November 27, 2023
年末年始
お正月はとちぎで過ごしなさいっていうことか https://t.co/LIoU8d0dTn
— Junya Ogino (荻野淳也) (@ogijun) November 27, 2023
栃木…宇都宮…はっ
にしても元日から発動篇って…