ときどきの雑記帖 RE* (新南口)
ひぐらしのなく頃に
日傘
買った。
上野動物園モノレール
結局廃止で決まりなのか。
2022年11月、東京都建設局は「恩賜上野動物園新たな乗り物の整備に関する基本方針」を策定。 上野動物園モノレールの代替となる新たな乗り物(小型モノレール等のコンパクトな乗り物を想定)を整備するとともに、 現存の上野動物園モノレール施設は原則として都が撤去するとしていた。
「コンパクトな乗り物」というのが良くわからんけど ちょっと前に記事になっていた。
上野動物園モノレール設備撤去「コンパクトな乗り物」新たに整備へ | マイナビニュース
閉館
何度か行ったことがあるけど、閉館かあ。
7 segment
Quoraで知ったそのはじめ。 そんな昔からあったのか。
7セグメントディスプレイの特許は、早いもので1908年に出願されたものがある[4]。しかし、 実際に世に広く使われるようになったのは、LEDやLCDが一般化した1970年代からである。 電子的手段によらずに7セグメントディスプレイのような書体を看板などで使うことがあり、 デジタル数字などと呼ぶ。
アメリカ合衆国特許第 974,943号、F.W. Wood のその特許では「4」を表示するのに対角線上のセグメントを使っており、 正確には8セグメントディスプレイになっている。
広く使われるようになった頃には特許は切れてた。ということですかね。
Micro VAX
会員登録していないと読めない部分で Micro VAXが話に出てきてちょっと遠い目に (最近頻繁にそうなる)。
イッツー
対面を「トイメン」、両面テープを「リャンメン」と言う人がたまにいるんですがなんなんですか??
— ふわてゃん🍋もうだめだ (@ikegpg) July 23, 2023
最近になって(でもないか?)、 一通、一気通貫というのを割と見かけたり聞いたりするようになった気がする。
個人的には手間のわりに点数は高くないので、手役としてはあまり好きじゃないんだけど😄
ワンチャン
[B! 言葉] 「飲み会で『二人飲み』のことを『タイマン』と言ったら驚かれた」→1on1=タイマンは独特の用法らしい
で
もうワンチャンを麻雀用語として認識できない人のほうがずっと多いしタイマンの語義をマジメに追求したところでな、 という気持ちがある(それはそれとしてこの用法の独自性はありますね)
というのを見かけ、ああ「ワンチャン(ワンチャンス)」も 麻雀由来か。と思い出すなど。
ハスキーの散歩
帰宅中、ハスキー(っぽい犬)を散歩させているのを見かけた。 この時期ハスキーの中の人(ってなんですか)もタイヘンだよねえ。 元々が寒いところの犬なのに かなりの運動させなきゃいけない犬種だし。
わしゃわしゃ
会社の敷地で鳴いているセミ(たくさんいる)の鳴き声が、 家の近くでは聞かないような鳴き声なんだけど 何ゼミなんだろう、あれ。
子供電話相談室
「山びこ学校」無着成恭さん死去 生活綴方を実践、ラジオでも人気:朝日新聞デジタル
インターフェース
再来月発売の号の特集でChatGPTを取り上げるらしい。
新刊近刊
コンパクトデータ構造
㊗️発売まであと2日📔
— 講談社サイエンティフィク🖋️📔 (@kspub_kodansha) July 24, 2023
新刊見本(約1.4kgのドンキ)が編集部に届きました🎉どうぞよろしくお願いいたします🙇♀️
『コンパクトデータ構造 実践的アプローチ』 https://t.co/qLhiZVSOmj pic.twitter.com/wMds1rP2l8
ざっとでも中身を確認したいところだけど、 値段からしてシュリンクパックされて店頭に出されるよねえこれ (それはもっともなことだとは思う)。
Mojo
Introduction to Mojo Programming Language
strlcpy and strlcat
strlcpyとstrlcatがglibcに入ったことについてのコメントをさらに。
Hell froze over: strlcpy() and strlcat() have been added to glibc. It only took about 25 years. https://t.co/hgwS8T5bd4
— Frank ⚡ (@jedisct1) July 18, 2023
If I find one (1) performance bug moving forward where someone blindly uses strlcpy because “I am glad that the C standard finally has a secure way of dealing with strings” I am going to vandalize the houses of the glibc and Austin Group members
— Saagar Jha (@_saagarjha) July 18, 2023
なかなかに過激な表現だったり内容だったり😓
strncat
んで、ふと気になってstrncatの仕様を確かめた。
strncat() も同様だが、以下の点が異なる。
- src のうち最大 n バイトが使用される。
- src が n バイト以上の場合、 src はヌル終端されている必要はない。
strcat() と同じく、dest に格納される結果の文字列は常にヌル終端される。
src が n バイト以上の場合、 strncat() は dest に n+1 バイトを書き込む (src からの n バイトと終端のヌルバイトである)。 したがって、dest の大きさは最低でも strlen(dest)+n+1 でなければ ならない。
strncat() の簡単な実装は以下のような感じであろう:
char * strncat(char *dest, const char *src, size_t n) {
size_t dest_len = strlen(dest);
size_t i;
for (i = 0 ; i < n && src[i] != '\0' ; i++)
dest[dest_len + i] = src[i];
dest[dest_len + i] = '\0';
return dest;
}
こっちはstrncpyと違ってnulバイトは一つしか書かんのだね (しかも必ず書かれる)。
find
findのタイムスタンプによるフィルタ実験。
— IT勉強中 (@IT41408082) July 21, 2023
-newermt は指定日時より新しいファイルを抽出する。時刻指定しない場合は00:00:00と同等になるようだ。
図で20230720のファイルだけを抽出したければ
-newermt "20230719 23:59:59" ! -newermt "20230720 23:59:59"
のように、時刻指定が必要っぽい。 pic.twitter.com/t39Lsnta0X
こういう、ちょっと動かして 「~のようだ」で片づけるのが以下略なので(ry
-newer reference 対象ファイルの最終更新時間が、 reference ファイルの最終更新時間よりも、 最新であるかどうかをテストします。 reference がシンボリックリンクであって、 -H または -L オプションが有効である場合は、 リンク先ファイルの更新時間が用いられます。
-newrtmt
というのがよくわからなかったのだけど
-newerXY reference
対象ファイルのタイムスタンプ X が、 reference ファイルのタイムスタンプ Y より、 新しいかどうかをテストします。 X と Y の位置に記述する文字は、 以下の文字とします。
a reference ファイルのアクセス時間 B reference ファイルの生成時間 c reference ファイルの i ノードステータスが変更された時間 m reference ファイルの内容更新時間 t reference に直接時間表現が書かれたとして解釈
これでm
とt
を指定したということか。
組み合わせによっては、 無効になるものも発生します。 たとえば、 X に t を指定しても無効です。 またシステムによっては、 特定の組み合わせを実装していない場合があります。 たとえば B は、 すべてのシステムでサポートされているわけではありません。 指定された XY の組み合わせが、 無効や未サポートの場合は、 致命的エラーが発生します。 時間表現は、 GNU date における -d オプションに対する引数と同様のものとして解釈されます。 参照ファイルの生成時間を使用しようとて、 その生成時間が決定できなかった場合は、 致命的エラーになります。 また、 対象ファイルの生成時間を参照するテストを用いた際に、 生成時間が不明な場合は、 そのテストは失敗します。
opengroupの方でも確認してみると こちらには見当たらなかった。GNU拡張?
-newer file
The primary shall evaluate as true if the modification time of the current file is more recent than the modification time of the file named by the pathname file.
でソースコードをざっと眺めてみたところ
findutils/find/parser.c at r4.4.2-aix · aixoss/findutils
static boolean parse_newer PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_newerXY PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_noleaf PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_nogroup PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
^newerXY
を処理する独立した関数があるようだ。
どんな関数だろうかと見てみたら意外に(?)長かった😄
findutils/find/parser.c at r4.4.2-aix · aixoss/findutils
static boolean
parse_newerXY (const struct parser_table* entry, char **argv, int *arg_ptr)
{
(void) argv;
(void) arg_ptr;
if ((argv == NULL) || (argv[*arg_ptr] == NULL))
{
return false;
}
else if (8u != strlen(argv[*arg_ptr]))
{
return false;
}
else
{
char x, y;
const char validchars[] = "aBcmt";
assert (0 == strncmp("-newer", argv[*arg_ptr], 6));
x = argv[*arg_ptr][6];
y = argv[*arg_ptr][7];
#if !defined(HAVE_STRUCT_STAT_ST_BIRTHTIME) && !defined(HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC) && !defined(HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC)
if ('B' == x || 'B' == y)
{
error(0, 0,
_("This system does not provide a way to find the birth time of a file."));
return false;
}
#endif
/* -newertY (for any Y) is invalid. */
if (x == 't'
|| 0 == strchr(validchars, x)
|| 0 == strchr( validchars, y))
{
return false;
}
else
{
struct predicate *our_pred;
/* Because this item is ARG_SPECIAL_PARSE, we have to advance arg_ptr
* past the test name (for most other tests, this is already done)
*/
if (argv[1+*arg_ptr] == NULL)
{
error(1, 0, _("The %s test needs an argument"),
quotearg_n_style(0, options.err_quoting_style, argv[*arg_ptr]));
}
else
{
(*arg_ptr)++;
}
our_pred = insert_primary (entry);
switch (x)
{
case 'a':
our_pred->args.reftime.xval = XVAL_ATIME;
break;
case 'B':
our_pred->args.reftime.xval = XVAL_BIRTHTIME;
break;
case 'c':
our_pred->args.reftime.xval = XVAL_CTIME;
break;
case 'm':
our_pred->args.reftime.xval = XVAL_MTIME;
break;
default:
assert (strchr(validchars, x));
assert (0);
}
if ('t' == y)
{
if (!get_date(&our_pred->args.reftime.ts,
argv[*arg_ptr],
&options.start_time))
{
error(1, 0,
_("I cannot figure out how to interpret %s as a date or time"),
quotearg_n_style(0, options.err_quoting_style, argv[*arg_ptr]));
}
}
else
{
struct stat stat_newer;
/* Stat the named file. */
set_stat_placeholders(&stat_newer);
if ((*options.xstat) (argv[*arg_ptr], &stat_newer))
fatal_file_error(argv[*arg_ptr]);
if (!get_stat_Ytime(&stat_newer, y, &our_pred->args.reftime.ts))
{
/* We cannot extract a timestamp from the struct stat. */
error(1, 0, _("Cannot obtain birth time of file %s"),
safely_quote_err_filename(0, argv[*arg_ptr]));
}
}
our_pred->args.reftime.kind = COMP_GT;
our_pred->est_success_rate = estimate_timestamp_success_rate(our_pred->args.reftime.ts.tv_sec);
(*arg_ptr)++;
assert (our_pred->pred_func != NULL);
assert (our_pred->pred_func == pred_newerXY);
assert (our_pred->need_stat);
return true;
}
}
}
ところでこの関数眺めてたら
if ('t' == y)
{
if (!get_date(&our_pred->args.reftime.ts,
argv[*arg_ptr],
&options.start_time))
{
error(1, 0,
_("I cannot figure out how to interpret %s as a date or time"),
quotearg_n_style(0, options.err_quoting_style, argv[*arg_ptr]));
}
}
Yoda condition?
それでいてちょっと前の
/* -newertY (for any Y) is invalid. */
if (x == 't'
|| 0 == strchr(validchars, x)
|| 0 == strchr( validchars, y))
はふつーの順序なのはよくわからん🤔
FORTRAN Compiler on IBM 704
シェアポ
そんな略し方するんか…
そんな御社でも!!!
— サバ山修司 (@kyuruz69545945) July 16, 2023
シェアポの共有はできるはず!!!
Excelを!!!シェアポにいれて!!!
共有しましょう!!!!
RPA
それでは聞いてください。
— さっきぃ@システムエンジニア (@sakky_hs) July 16, 2023
「ディスプレイサイズが変わっただけで自動化アプリが動かなくなった」
「あるある」だわ…
○○な抵抗
廊下の野良ホワイトボードに「無駄な抵抗」を描いておいたら、知らないうちにいろいろ書き足されていた pic.twitter.com/9Twanq8caE
— 葉月糸 (@hadzukishi_phys) July 19, 2023
「組織的な抵抗」がちょっと好き😄
カーペットモンスター
日本では「妖怪パーツ隠し」と恐れられているもののけは海外では「カーペットモンスター」と呼ばれているらしい…。 pic.twitter.com/MjaXRFK9R4
— ナオ@紙模型静岡工場 (@Nao_paper) July 18, 2023
Zig
2020年にZig言語コミュニティとZenという言語製品を提供するコネクトフリー社の間で騒動が起きた。この騒動の過程にて、日本の特許庁に「ZIG」という商標の出願をコネクトフリー側が行なっていたことが明らかになったhttps://t.co/cfXse0v00K
— Shuji Sado (佐渡 秀治) (@shujisado) July 20, 2023
自作CPUでインベーダー計画
「自作CPUでインベーダー計画」の状況。
— スダ (@sudamin) July 23, 2023
CPU … たぶんOK
RAM・ROM …OK
VRAM …OK
描画支援回路 …OK
割り込み … たぶんOK
I/O(スイッチ)…未着工
I/O(効果音)…未着工
色セロハン …購入済
こんなところ。
手を付けてから一週間、延べ10時間くらいか。
ここまでは意外にすんなり来れた印象
動かしている(動かそうとしている)インベーダーのプログラムはどこから持ってきたのだろう? ソースコード公開とかはされてないよね? と疑問を持っていたのだけど
「スペースインベーダーの動かしかた」的な薄い本のネタを一瞬だけ考えたのだけど、インベーダーのバイナリなんて普通は入手できないじゃん、って事で断念。
— スダ (@sudamin) July 25, 2023
ちなみに自分はジャンク基板のROMから吸い上げた。 pic.twitter.com/eUnp8p7s7h
— スダ (@sudamin) July 25, 2023
でもちょっと読んでみたい😄 >「スペースインベーダーの動かしかた」的な薄い本
TAROMAN
【#TAROMAN 最新情報】
— NHK びじゅつ委員長 (@nhk_bijutsu) July 24, 2023
2022年7月に"彼"が来て、はや1年…
特別番組「帰ってくれ タローマン」完成です!
総合 8/5(土)夜11時~11時29分
前日に特別放送も決定!
総合 8/4(金)
午前1時20分~ #タローマン ①~⑩
午前2時10分~ タローマンヒストリア
お見逃しなく!https://t.co/wVv7pVYUlP
の創りかた
あと「8080互換CPUの創りかた」というネタも頭をよぎったが、絶対に薄い本では済まないので諦めた。
— スダ (@sudamin) July 25, 2023
なお、本家「CPUの創りかた」は20周年記念で8/1限定で500円祭りをするそうです。 https://t.co/7FhJwdyAXm
これですか Manatee7周年カウントダウンセール開催中! IT書籍が最大50%OFF!!|Tech Book Zone Manatee
The Thing
なんと!「遊星からの物体X(1982)」が地上波で8/1に放送される! pic.twitter.com/7w6SNxY5hV
— クロケット (@crocket8314) July 25, 2023