ときどきの雑記帖 RE* (新南口)
The Final Countdown
また
「ナンバーカード」を聞かされる時季に。
sort
図書館ソートなるソート手法は知らなかった。 英語でもLibrary sortなのね。
- 図書館ソート - Wikipedia
- Library sort - Wikipedia
- Sorting algorithm - Wikipedia
- Cascade merge sort - Wikipedia
- Oscillating merge sort - Wikipedia
- Polyphase merge sort - Wikipedia
OHP
昭和の小学校に必ずあった「OHP」「わら半紙」が知らぬ間に姿を消したワケ | アーバン ライフ メトロ - URBAN LIFE METRO - ULM
つい最近、某所で「OHPシートに(原稿を)コピーしたいんだけど」という会話を耳にしまして。
それをするには機械の設定を変えないといけないんだけど(これは極端に厚い紙とか逆に薄い紙でも同じ)、 昨今ではOHPシート対応の設定できない機種も多いらしい(未確認)。
今でも生産されているんだろうか?>OHPシート
そう言えばお仲間(?)にこんなんもありましたわね スライド映写機 - Wikipedia
pragma once
つづき。
逆に覚えていたとは😅
Think GNU 第 2 回 の 5. 今月のニュース「NeXT 社と gcc 編」 から。
また、NeXT システムの C コンパイラは、gcc をベースにしているとはいうものの GNU C コンパイラの現行のバージョンと互換性が徐々になくなっている。 それは、gcc にとっては扱い方を知らないはずの (知ろうとも思わないが) 新型のプリプロセッサ命令を NeXT が捏造した (あるいは借りた) からである。
(略)
その命令は #import と呼ばれている (らしい)。多くのファイルで使われており、NeXT に最低必要なシステムも含む。後述の理由から、 その命令を〈sys/file.h〉などのように典型的な C 言語プログラムにも入れなければならない。
(略)
gcc はこの命令をある良い理由 (後述) のために認識していない。
(略)
最新の gcc では、これと同様の機能をうまいやり方で実現している。それは #pragma once と呼ばれている。 コンパイル中に各ファイルを多くても 1 度だけインクルードする。 だから、gcc は #pragma once を使うことによってこの情報をプリプロセッサに明示的に与えることができる。 そのため、pragma は多くても 1 回だけインクルードされるべきファイルの中に埋め込まれる。
(略)
GNU C コンパイラの作成者兼保守担当の rms は、こういった問題を考慮した上で、 現在以後の gcc のリリースでは #pragma once をサポートする予定でおり、#import のサポートは全く考えていない。
と言うことで、rmsは#pragma once
を嫌っていたのではなく、
むしろ#import
の導入を避けるためにそれを実装した(これは前回引用していた部分にもありましたわな)
というオハナシ。
#pragma
そのものについてもなにか言っていたような気がするんだけど、それはまた気が向いたら調べる。
j*とかw*とか
Not only is the Internet dead, it’s starting to smell really bad.:2021年11月03日分
それとjkanji/jhira/jkataが「名前が好ましくない」はちょっと意図が汲み取れないですね、 これらの名前がポータブルなのか?という意味と解釈した上で回答すると、これらの日本語locale固有の文字クラスは
「日本語の」というのを表す(強調する)ためにj
をつけたような気がするなあ
→ 26種類しかないアルファベットからその目的で一文字使うのは
既得権益というか先行者利益がすぎるんじゃない?
といった考えからでした>好ましくない名前
む。もうちょっと長々しいイイワケになるかと思ったけど短く収まったな。 まあでも接頭辞みたいに捉えたのは気の回しすぎだったかなあ。
もう一つの方は次回以降で(忘れなければ)。
GNU sed の inplace edit
Not only is the Internet dead, it’s starting to smell really bad.:2021年11月02日分
そんでGNU sedの方もだけど、あたりまえにmkstemp(3)使ってるよね
GNU sedのinplace editで最近(でもないか)セキュリティ絡みの修正があったような… というかすかな記憶があったので ChangeLogをみると
2019-09-05 Assaf Gordon
sed: set correct umask on temporary files
"sed -i" now creates temporary files with correct umask (limited to u=rwx).
Previously sed would incorrectly set umask, and combined with mkostemp
creating file with mode 0600, the result would be a file with
permission mode 0.
Reported by Dr N.W. Filardo <nwf20@cam.ac.uk>:
https://lists.gnu.org/r/sed-devel/2019-08/msg00000.html
"The net effect is that this patch does not do what it says on the tin:
it does not improve the security story at all. Things continue to
function because the subsequent operations are via f*() APIs, which
take the open file handle, and in particular fchmod() will put the
bits back to something sensible.
However, when running atop, for example, fuse-style filesystems which do
not keep open descriptors to underlying files, this is catastrophic:
the underlying file will have I_SRWXU of zero, and so the filesystem
server will be unable to open the file for the fchmod() and that's
the end of that."
ちょっと違ったか。
そう言えば昔GNU sedをいじってVisual C/C++でコンパイルしてごにょごにょ…などということをしていた時期に VCのライブラリにはmkstempがなくて対処のためのてきとーなコードを書いた記憶(遠い目)があるので、 (GNU sedでは)最初から清く正しくmkstemp使っていたのかな…
ということでgithubの(unofficialな)リポジトリ sed/utils.c at master · mirror/sed の履歴をたどって sed/utils.c at ssed · mirror/sed を見ても、どうやら現行のGNU sedのベースになった (と記憶してたんだけどなんか怪しいな? Super-sed - Free Software Directory, The sed (Stream Editor) FAQ - 2.2. What versions of sed are there, and where can I get them?) Super sedからこうだった模様。
sed/utils.c at ssed · mirror/sed
FILE *
ck_mkstemp (p_filename, tmpdir, base, mode)
char **p_filename;
const char *base, *tmpdir;
const char *mode;
{
char *template;
FILE *fp;
int fd;
int save_umask;
if (tmpdir == NULL)
tmpdir = getenv("TMPDIR");
if (tmpdir == NULL)
{
tmpdir = getenv("TMP");
if (tmpdir == NULL)
#ifdef P_tmpdir
tmpdir = P_tmpdir;
#else
tmpdir = "/tmp";
#endif
}
template = xmalloc (strlen (tmpdir) + strlen (base) + 8);
sprintf (template, "%s/%sXXXXXX", tmpdir, base);
/* The ownership might change, so omit some permissions at first
so unauthorized users cannot nip in before the file is ready.
mkstemp forces O_BINARY on cygwin, so use mkostemp instead. */
save_umask = umask (0700);
fd = mkostemp (template, 0);
umask (save_umask);
if (fd == -1)
panic(_("couldn't open temporary file %s: %s"), template, strerror(errno));
*p_filename = template;
fp = fdopen (fd, mode);
register_open_file (fp, template, true);
return fp;
}
名前に反して、ラップしていたのがmkstempじゃなくmkostempだったけどまあお仲間 (Man page of MKSTEMP)だということで。
話が変わるけどdo what it says on the tin
というフレーズがこんなところに
(関連? it says on the tin についての過去記事)。
印字不良
レーザープリンターがおかしい。夏頃から印字が微妙に滲むと思ってはいたのだが、ここに来て酷くなってきた。
— スダ (@sudamin) November 4, 2021
トナー切れじゃないだろうし、ドラムは寿命がまだ90%も残ってるし、ヒーター温度も変えてみたけど変わらんし、コロナ線?とやらの掃除もしたけど直らん… pic.twitter.com/p9PXslTwIR
試しにドラムも交換してみようかと思ったが2万円もするのでギャンブルとしてはさすがに割に合わない気がする。
— スダ (@sudamin) November 6, 2021
というか、そもそもプリンター自体が2.5万円しかしないヤツだし、しかも既に10年選手だし、おまけに後継機が1.5万円なので、どう考えても買い換えコースしか選択肢がないでござる。
表現の問題だろうけどLBPで「滲む」は(その原理上)ないんじゃないかと思ったが 添付画像をぱっと見ではなるほど「滲み」と見えなくもないか。
んで、感光ドラムは元気そうということなら定着器とか転写ベルト(ユニット)辺りが気になるけど、 これを交換となるとやっぱり新規の購入価格を越えてしまいそうな気がする。
あと、(メーカーにもよるのかもしれないけど) 寿命だとか異常があれば警告出してそうではある > 定着器