ときどきの雑記帖 RE* (新南口)
浅い眠り
立ち読み防止
雑誌、特にコミック雑誌の類は コンビニでも立ち読みできないようにされているところが ほとんどだと思うのだけど、 つい最近になって それまでその立ち読み防止策を取っていなかったとあるコンビニ店舗が 防止策を講じるようになった。
まあその店で立ち読みはしていなかったので影響はないのだけど。
名前
すぐその名前を忘れてしまい、 毎度毎度「ハッブル宇宙望遠鏡の後継」 などで検索して思い出すなど。
コロッケそば
『パトレイバー × 富士そば』コラボ決定!🎉
— 名代富士そば【公式】 (@fujisobar) July 28, 2023
実は、押井守監督と弊社会長は2000年にTITLeという雑誌で対談をしていました♪
今回のコラボ企画では、富士そば全店舗に"コラボポスター"を掲示いたします!お楽しみに🌈
詳細はパトレイバーさんのツイートをチェック👀✨#富士そばパト #コロッケそば https://t.co/1eHFCeQUcj
/#富士そば✖️#パトレイバー
— 機動警察パトレイバー公式 (@patlabor0810) July 28, 2023
コラボ決定!!!🎊
\
お馴染み”#コロッケそば”をフィーチャーしたコラボポスターが全店舗に掲示&コラボ記念グッズのEC販売も!
ぜひお立ち寄りください!
▼実施期間や詳細はコチラhttps://t.co/mwxonnb1s6 #富士そばパト#パトレイバー35周年 https://t.co/A1zUOagrrK pic.twitter.com/n9JWMyoyTO
【#パトレイバー】
— HMV&BOOKS SHIBUYA (@HmvBooksShibuya) July 29, 2023
📢本日よりスタート▶️
6Fフロアにて
『PATLABOR 35周年記念 POP UP SHOP』
を開催🔥
タペストリー展示やガチャガチャ、グッズ販売もございます!
ぜひご来店ください✨#パトレイバー35周年 pic.twitter.com/yC2wM480EP
機動警察パトレイバー:富士そばコラボ コロッケそばポスター登場 - MANTANWEB(まんたんウェブ)
同作のポップアップショップが7月29日、HMV&BOOKS SHIBUYA(東京都渋谷区)にオープンする。 イングラム35周年スペシャルビジュアルの大型タペストリーが展示される。8月15日まで。
HMV&BOOKS SHIBUYA…あそこか (人口密度の高いところ通りたくねえなあ😓)。
Uber Eats
昼過ぎ、炎天下を自転車で疾走していく Uber Eats のにーちゃんを見かける。
マンホールのふた
松江にはアッガイが描かれたそれがあるらしい。
サイクルコンピュータ買うた(お散歩カメラ 2023-07-29) | text.Baldanders.info
Straeberry Perl
長いことバージョンが古いままだったけど 新しいのが出た?
- Strawberry Perl 5.38.0 and 5.36.1 : r/perl
- Release Strawberry Perl 5.38.0 and 5.36.1 · StrawberryPerl/Perl-Dist-Strawberry
Strawberry Perl for Windows に置かれているのは変わっていないっぽい。
新刊近刊
日経ソフトウエア
ア特集2 Pythonが動く仕組みを学ぼう
が結構面白かった。 雑誌の特集記事なので、そもそもの分量が…という問題はあるんだろうけど あまりこういうのは見ないしねえ。
Hさんの近刊
いつものように新刊近刊チェックしていたら 「あの人」の近刊を発見。
「怖いもの見たさ」でちょっと見てみたい😄
Hさんの新刊
他の本を探しているときに面陳されているのを見かけた。 今まで気がつかなかったのだけど先々月あたりに出ていたらしい。
CとC++をまとめて扱う入門書、というそれだけで色々考えちゃうよねえ。
メモ
7/25先行販売:ISBN978-4-320-12567-4 共立出版『データ分析失敗事例集 失敗から学び、成功を手にする』尾花山和哉、株式会社ホクソエム 編 100冊入荷 pic.twitter.com/A5eCf6Dn8U
— ジュンク堂書店池袋本店 PC書担当 (@junkudo_ike_pc) July 25, 2023
7/26先行販売:ISBN978-4-7981-7980-3 翔泳社『なっとく!関数型プログラミング』Michał Płachta著 株式会社クイープ監訳 15冊入荷 pic.twitter.com/Ut2NjGcOJs
— ジュンク堂書店池袋本店 PC書担当 (@junkudo_ike_pc) July 26, 2023
7/26新刊:ISBN978-4-320-12566-7 共立出版 『もっと実用的でないPythonプログラミング ハッカー目線のリアルコーディング』 Lee Vaughan 著 武川文則、永峰宏規 訳 40冊入荷 pic.twitter.com/BYy7XmHOQ2
— ジュンク堂書店池袋本店 PC書担当 (@junkudo_ike_pc) July 26, 2023
「もっと実用的でないPythonプログラミング」、とりあげている題材が結構面白そう。
メイドインアビス
12巻ちゃんは7/31に出るそす!
— つくしあきひと (@tukushiA) July 26, 2023
次の話と、追加の話も入ってるそす📖 https://t.co/GjZbgTZ2M9
11巻を買っていなかったことに気がついたが 漫画『メイドインアビス』Kindleで全巻70%オフ 度し難い名作を一気読み! - KAI-YOU.net を使って70%オフでゲット。
find
つづき。
前回コードを引用するのに使った findutils/find/parser.c at r4.4.2-aix ・ aixoss/findutils は実はちょっと前のバージョンで、現時点での最新は
* Noteworthy changes in release 4.9.0 (2022-02-22) [stable]
これ。
4.4.2と4.9.0とでは
findutils/find/parser.c
static bool
parse_newerXY (const struct parser_table* entry, char **argv, int *arg_ptr)
{
if ('t' == y)
{
if (!parse_datetime (&our_pred->args.reftime.ts,
argv[*arg_ptr],
&options.start_time))
の辺りで微妙に関数名が異なっていたり
findutils/gl/lib/parse-datetime.y
/* The plain interface: run with debug=false and the default timezone. */
bool
parse_datetime (struct timespec *result, char const *p,
struct timespec const *now)
{
char const *tzstring = getenv ("TZ");
timezone_t tz = tzalloc (tzstring);
if (!tz)
return false;
bool ok = parse_datetime_body (result, p, now, 0, tz, tzstring);
tzfree (tz);
return ok;
}
さらに細かい関数に分けられていたりしている。
/* Parse a date/time string, storing the resulting time value into *RESULT.
The string itself is pointed to by P. Return true if successful.
P can be an incomplete or relative time specification; if so, use
*NOW as the basis for the returned time. Default to timezone
TZDEFAULT, which corresponds to tzalloc (TZSTRING). */
static bool
parse_datetime_body (struct timespec *result, char const *p,
struct timespec const *now, unsigned int flags,
timezone_t tzdefault, char const *tzstring)
{
こういった違いはあるのだけど、 このまま古いコードを追いかけることにする (今回の問題に関して影響あるような変更はない。たぶん)。
さてget_dateという関数では
findutils/gnulib/lib/getdate.y at 33a40be76056c57ad8808c7d007f4b95c727b16b · aixoss/findutils
/* Parse a date/time string, storing the resulting time value into *RESULT.
The string itself is pointed to by P. Return true if successful.
P can be an incomplete or relative time specification; if so, use
*NOW as the basis for the returned time. */
bool
get_date (struct timespec *result, char const *p, struct timespec const *now)
{
(略)
if (yyparse (&pc) != 0)
goto fail;
のようにbisonで書かれた構文解析器(yyparse
)を呼び出している。
ということでその構文定義を追いかけてみると
findutils/gnulib/lib/getdate.y at 33a40be76056c57ad8808c7d007f4b95c727b16b · aixoss/findutils
/* We want a reentrant parser, even if the TZ manipulation and the calls to
localtime and gmtime are not reentrant. */
%pure-parser
%parse-param { parser_control *pc }
%lex-param { parser_control *pc }
/* This grammar has 20 shift/reduce conflicts. */
%expect 20
%union
{
long int intval;
textint textintval;
struct timespec timespec;
relative_time rel;
}
%token tAGO tDST
%token tYEAR_UNIT tMONTH_UNIT tHOUR_UNIT tMINUTE_UNIT tSEC_UNIT
%token <intval> tDAY_UNIT
%token <intval> tDAY tDAYZONE tLOCAL_ZONE tMERIDIAN
%token <intval> tMONTH tORDINAL tZONE
%token <textintval> tSNUMBER tUNUMBER
%token <timespec> tSDECIMAL_NUMBER tUDECIMAL_NUMBER
%type <intval> o_colon_minutes o_merid
%type <timespec> seconds signed_seconds unsigned_seconds
%type <rel> relunit relunit_snumber
%%
spec:
timespec
| items
;
timespec:
'@' seconds
{
pc->seconds = $2;
pc->timespec_seen = true;
}
;
items:
/* empty */
| items item
;
item:
time
{ pc->times_seen++; }
| local_zone
{ pc->local_zones_seen++; }
| zone
{ pc->zones_seen++; }
| date
{ pc->dates_seen++; }
| day
{ pc->days_seen++; }
| rel
{ pc->rels_seen = true; }
| number
| hybrid
;
time:
tUNUMBER tMERIDIAN
{
pc->hour = $1.value;
pc->minutes = 0;
pc->seconds.tv_sec = 0;
pc->seconds.tv_nsec = 0;
pc->meridian = $2;
}
| tUNUMBER ':' tUNUMBER o_merid
{
pc->hour = $1.value;
pc->minutes = $3.value;
pc->seconds.tv_sec = 0;
pc->seconds.tv_nsec = 0;
pc->meridian = $4;
}
| tUNUMBER ':' tUNUMBER tSNUMBER o_colon_minutes
{
pc->hour = $1.value;
pc->minutes = $3.value;
pc->seconds.tv_sec = 0;
pc->seconds.tv_nsec = 0;
pc->meridian = MER24;
pc->zones_seen++;
pc->time_zone = time_zone_hhmm ($4, $5);
}
| tUNUMBER ':' tUNUMBER ':' unsigned_seconds o_merid
{
pc->hour = $1.value;
pc->minutes = $3.value;
pc->seconds = $5;
pc->meridian = $6;
}
| tUNUMBER ':' tUNUMBER ':' unsigned_seconds tSNUMBER o_colon_minutes
{
pc->hour = $1.value;
pc->minutes = $3.value;
pc->seconds = $5;
pc->meridian = MER24;
pc->zones_seen++;
pc->time_zone = time_zone_hhmm ($6, $7);
}
;
以下略
で、呼び出した後がこう。
findutils/gnulib/lib/getdate.y at 33a40be76056c57ad8808c7d007f4b95c727b16b · aixoss/findutils
if (yyparse (&pc) != 0)
goto fail;
if (pc.timespec_seen)
*result = pc.seconds;
else
{
if (1 < (pc.times_seen | pc.dates_seen | pc.days_seen | pc.dsts_seen
| (pc.local_zones_seen + pc.zones_seen)))
goto fail;
tm.tm_year = to_year (pc.year) - TM_YEAR_BASE;
tm.tm_mon = pc.month - 1;
tm.tm_mday = pc.day;
if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen))
{
tm.tm_hour = to_hour (pc.hour, pc.meridian);
if (tm.tm_hour < 0)
goto fail;
tm.tm_min = pc.minutes;
tm.tm_sec = pc.seconds.tv_sec;
}
else
{
tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
pc.seconds.tv_nsec = 0;
}
ということで、日付のみで時刻の指定がない
(pc.times_seen
が0)場合の
日時データの時刻は0:00:00になるということで
間違いなさそう。
FORTRAN Compiler on IBM 704
区切り文字(punctuation)をキーにして テーブルを引いて分岐するコードが 二か所あるのだけど
MS090 STZ CHSAVE CLEAR 4F13526
TRA TRBLKA,4 4F13527
*
*punctuation follows non-punctuation
MS091 SLW CHSAVE OP IS IN NEXT ELEMENT, SAVE, 4F13528
CAL BLANK ADD BLANK TO CHARS IN G. 4F13529
ALS 36,2 X 4F13530
ORS G X 4F13531
LDQ G MOVE G TO E+2 AND TO G+1, 4F13532
STQ E+2 X 4F13533
STQ G+1 X 4F13534
TRA TRBLKB,4 NOW BRANCH TO INDIVIDUAL ROUTINE 4F13535 dispatch
注目している区切り文字を読み込んだ場所(位置)によって 変えているということのようだ。
=
を読み込んできたとき、
* '='
MS310 *** MSERR=,0 TXH FOR LEFT, TXL FOR RIGHT OF EQUAL SIGN. 4F13676 TXH/TXL
STZ CHSAVE CLEAR 4F13677
PXD ,0 CLEAR AC 4F136775
LGL 6 GET FIRST CHAR OF SYMBOL. 4F13678
TSX TESTFX+1,1 TEST FOR FIXED OR FLOATING POINT 4F13679
TRA MS322 FLOATING, 4F13680
CAL EIFNO FIXED, PREPARE FORVAL ENTRY. 4F13681
ANA MASK1 X 4F13682
SLW G X 4F13683
TSX TET00,1 MAKE FORVAL ENTRY. 4F13684
6 X 4F13685
TRA MS322 4F13686 move words & go next loop
シンボルが整数型か実数型かで処理が違うのはともかくとして、 整数型のときだけ表に登録しているようなのはなぜだろう? そしてどちらのコースを通ってもMS322で合流する
* '('
MS320 STZ CHSAVE CLEAR CELL FOR OP. 4F13660
MS321 *** MS330,0 TXH ON LEFT, TXL ON RIGHT OF = SIGN. 4F13661 TXH/TXL
TSX SS000X,4 GO PROCESS SUBSCRIPT COMBINATION 4F13662
TSX C0190,4 GET NEXT CHAR. 4F13663
SUB EQUAL TEST FOR EQUAL SIGN. 4F13664
TNZ MSERR= NO, ERROR. 4F13665
*
MS322 LXA L(3),4 MOVE CONTENTS OF E WORDS TO LEFT WORDS. 4F13666
*loop
MS323 LDQ E+3,4 X 4F13667
STQ LEFT+3,4 X 4F13668
TIX MS323,4,1 X 4F13669
*go loop
MS311 CAL TXLOP SET SWITCHES FOR RIGHT SIDE SCAN. 4F13670
STP MS093 X 4F13671
STP MS310 X 4F13672
STP MS321 X 4F13673
SLN 1 TURN = OR ) LITE ON. 4F13674
TRA MS010 GO SCAN NEXT ELEMENT. 4F13675
*
MS320からもMS322にくる流れがあるのがよくわからん。
gfortran
ふと気になってGNU Fortranのソースコードを眺めてみたら 「空白を無視する」というあの辺がらみで いろいろ手間をかけているっぽいのが見て取れた。
- gcc/gcc/fortran/parse.cc at master · gcc-mirror/gcc
- gcc/gcc/fortran/match.cc at master · gcc-mirror/gcc
細かくは追いかけてないので勘違いしてるかも。
ハヤカワSF
在庫が僅少でなかなか流通できなかった作品、長らく品切れだった作品を中心に、ハヤカワ文庫では今後定期的に復刊・重版を進めていきます。写真はジュンク堂書店吉祥寺店様です。この帯が目印。ぜひとも読者皆様のリクエストの声をお聞かせ下さい。https://t.co/EAeEXibuxV pic.twitter.com/FiHUcXyTBI
— 早川書房営業部 (@hykw_sales) July 11, 2023
で、 あなたの復刊リクエストをお聞かせください 「ハヤカワ文庫の名作選プロジェクト」開催中|Hayakawa Books & Magazines(β) を見たら
●復刊作品について
第一弾(2023年7月上旬頃店頭発売)
① 2061年宇宙の旅 アーサー・C・クラーク 著/山高 昭 訳 ② 3001年 終局への旅 アーサー・C・クラーク 著/伊藤典夫 訳 ③ 2010年宇宙の旅(新版) アーサー・C・クラーク 著/伊藤典夫 訳
この辺りも「版元品切れ」だったのかとびっくり (「2001年」はさすがに?)。
そりゃあアレとかアレも「絶版」になるわよねえ。と。
O3
type *ptr;
— _ko1 (@_ko1) July 26, 2023
if (cond) { ptr = malloc(); ... }
else { type on_stack = {...}; ptr = &on_stack; }
func(ptr);
これが、-O0 だと動くのに -O3 で動かない、というのに久々にあたって困ってしまった。なるほどなぁ。
これって、on_stackの寿命の問題。という理解でよいのだっけ?