ときどきの雑記帖 RE* (新南口)
タチムカウ
Wi-Fiルーター
リプレース から一週間、先代で時々発生していた回線切断が全然起きていないので やっぱりルーターのハードウェアの問題だったぽい。
走れ歌謡曲
ラジオの番組表を見ていたら深夜の文化放送に「走れ歌謡曲」がなくて 見慣れない番組名があったので検索してみたら
昭和から平成、令和と時代が変わり、番組も役割を終える時がきたと感じておりました。
非常に名残り惜しいですが、『日野ミッドナイトグラフィティ 走れ!歌謡曲』は2021年3月を以て終了いたします。
今年の3月に終わってたのか!
(昨年の1回目の緊急事態宣言が出ていた時期はよく聴いていたのだった)
書泉グランデ
レジが集中されてからブックタワーの方はまだ行ってないけど、グランデの方に行ってきた。
模様替えのせいもあるのか通路が広くなったような気がした。 あと需要があるからなんだろうけど鉄道関連の面積が広くなったなあと。
で、追悼コーナーができていて初めて知ったのだけど フランク・ウィリアムズ亡くなられていたのね。
- ウィリアムズF1チーム創設者、フランク卿が死去…享年79歳 | F1ニュース速報/解説【Formula1-Data】
- フランク・ウイリアムズ追悼のため、名車『FW07』がF1サウジアラビアGPで特別走行へ
bit
Not only is the Internet dead, it’s starting to smell really bad.:2021年12月11日分 Not only is the Internet dead, it’s starting to smell really bad.:2021年12月11日分
というか本誌より別冊とか特別号の電子化をですね…
別冊や特別号(の電子版)を、という発言はちらほら見かけましたね。 わたしもいくつか読みたいもの(国会図書館にもなかった。と思う)があったりするので(ry
Not only is the Internet dead, it’s starting to smell really bad.:2021年12月11日分
いいかプログラマを名乗るなら決してSQLから逃げるな(箴言)。
ぎく。
glob zsh 17(終)
前回 出てきた
- NULLGLOB
- CSHNULLGLOB
- NOMATCH
この辺のシンボルについて。
shell : nullglobがデフォルトではないのはなぜですか?
今、歴史上の注意事項は、Bourneシェルによって実際にはが壊れていました。 UNIXの以前のバージョンでは、グロビングは/etc /globヘルパーとそのヘルパーが振舞ったc: globsが任意の任意の任意のファイルに一致しない場合は、コマンドを失敗させ、それ以外の場合は一致しないようにglobsを削除します。
だから今日の状況は、Bourneシェルで行われた不正な決定によるものです。
検索で上位に出てくる勝手翻訳サイトのものだけど 訳文に笑ってしまったので紹介。
翻訳元は多分ここ shell - Why is nullglob not default? - Unix & Linux Stack Exchange
もういっちょう。
暴走した猫を殺す方法?
If問題のファイルには、信号を送信するデータが非常に多く含まれており、信号が終了する前に実際にcatに到達する可能性があります。 実際に観察しているのは、端末の速度が有限であるということです。catはデータを端末に送信し、 端末がすべてのデータを表示するまでに時間がかかります。 通常は、それぞれの出力ウィンドウ全体を何らかの方法で再描画する必要があることを忘れないでください…
デフォルトやオプションの設定でどうglobの結果が変わるのかを知らなかったので ちょっと調べたのだけどマニュアルを地道に調べるのが一番早かったというオチ。
【 shopt 】コマンド(応用編その3)――パス名展開ができなかった場合の動作を変更する:Linux基本コマンドTips(364) - @IT
nullglob パス名展開ができなかった場合、空文字列にする(本文を参照)
パス名展開に失敗した場合はエラーにする
「ls .txt」のように、「」記号や「?」記号を使ってパスを指定すると、 当てはまるファイル名やディレクトリ名にbashが置き換えてから実行します。これを「パス名展開」と呼びます。
bashでは、パス名展開ができなかった場合、つまり、該当するファイルやディレクトリがなかった場合は、 指定した文字列をそのままコマンドの引数として実行します(※11)。
※11 zshの場合、パス名展開ができなかった時点でエラーとなり、コマンドを実行しない。 zshのシェル変数「nomatch」を無効にするとbash同様に、指定した文字列を引数としてコマンドを実行する。
シェル変数「failglob」を有効にすると、パス名展開ができなかった時点でエラーとなり、コマンドを実行しなくなります。
adb - Why zsh tries to expand * and bash does not? - Stack Overflow
bashのワイルドカード展開は該当するファイルが無いと*が展開されずに残る - Qiita
zshの場合はどうなるの?
こうなる。
bash zsh パターン文字列を残す デフォルト setopt NO_NOMATCH 0個の文字列として展開 shopt -s nullglob setopt NULL_GLOB エラーにする shopt -s failglob デフォルト
ということでマニュアルの zsh: 16 Options
16.2.3 Expansion and Globbing
から、関係ありそうなものを抜き出してみる (カッコやアングルブラケットの意味は元記事(マニュアル)を参照してくだせい)。
BAD_PATTERN (+2) <C> <Z>
If a pattern for filename generation is badly formed, print an error message. (If this option is unset, the pattern will be left unchanged.)
CSH_NULL_GLOB <C>
If a pattern for filename generation has no matches, delete the pattern from the argument list; do not report an error unless all the patterns in a command have no matches. Overrides NOMATCH.
NOMATCH (+3) <C> <Z>
If a pattern for filename generation has no matches, print an error, instead of leaving it unchanged in the argument list. This also applies to file expansion of an initial ‘~’ or ‘=’.
NULL_GLOB (-G)
If a pattern for filename generation has no matches, delete the pattern from the argument list instead of reporting an error. Overrides NOMATCH.
デフォルトではNOMATCHの動作、つまり パターンにマッチする名前のファイルがなかった場合にはエラーを出力する。
NULL_GLOBが有効な場合は空になる(引数リストから削除される)。
CSH_NULL_GLOBが有効な場合は、空になるのはNULL_GLOBと一緒だけど コマンドに含まれるパターンすべてがマッチしなかったときにエラーになる?
マニュアルには明記されていない(と思う)のだけど、 上記の三つともが有効でなかった(setoptされていない)場合に 「パターンそのままの文字列になる」という動作をするっぽい?
これを踏まえて
zsh/glob.c at 00d20ed15e18f5af682f0daec140d6b8383c479a · zsh-users/zsh
/* Deal with failures to match depending on options */
if (matchct)
badcshglob |= 2; /* at least one cmd. line expansion O.K. */
else if (!gf_nullglob) {
if (isset(CSHNULLGLOB)) {
badcshglob |= 1; /* at least one cmd. line expansion failed */
} else if (isset(NOMATCH)) {
zerr("no matches found: %s", ostr);
zfree(matchbuf, 0);
restore_globstate(saved);
return;
} else {
/* treat as an ordinary string */
untokenize(matchptr->name = dupstring(ostr));
matchptr++;
matchct = 1;
}
}
のあとをみていくと 直後はglob結果のソートなのでスキップして
if (!(gf_sortlist[0].tp & GS_NONE)) {
/*
* Get the strings to use for sorting by executing
* the code chunk. We allow more than one of these.
*/
省略
/* Sort arguments in to lexical (and possibly numeric) order. *
* This is reversed to facilitate insertion into the list. */
qsort((void *) & matchbuf[0], matchct, sizeof(struct gmatch),
(int (*) _((const void *, const void *)))gmatchcmp);
}
そしてここもスキップして
if (first < 0) {
first += matchct;
if (first < 0)
first = 0;
}
if (end < 0)
end += matchct + 1;
else if (end > matchct)
end = matchct;
if ((end -= first) > 0) {
if (gf_sortlist[0].tp & GS_NONE) {
/* Match list was never reversed, so insert back to front. */
matchptr = matchbuf + matchct - first - 1;
while (end-- > 0) {
/* insert matches in the arg list */
insert_glob_match(list, node, matchptr->name);
matchptr--;
}
} else {
matchptr = matchbuf + matchct - first - end;
while (end-- > 0) {
/* insert matches in the arg list */
insert_glob_match(list, node, matchptr->name);
matchptr++;
}
}
最後のelse ifに注目
} else if (!badcshglob && !isset(NOMATCH) && matchct == 1) {
insert_glob_match(list, node, (--matchptr)->name);
}
zfree(matchbuf, 0);
restore_globstate(saved);
badcshglobが0 かつ NOMATCHがセットされていない かつ matchctが1 のときに
パターンがそのままコピーされる。と
(パターンにマッチする名前のファイルがみつからなかった場合は
scannerから戻ってきた時点ではmatchctが0だけど
/* treat as an ordinary string */とあるelse節で1にしている)。
このif~else ifで参照されているfirstやendという変数は
関数の先頭付近で次のように宣言されているのだけど
zsh/glob.c at 00d20ed15e18f5af682f0daec140d6b8383c479a · zsh-users/zsh
int first = 0, end = -1; /* index of first match to return */
/* and index+1 of the last match */
操作しているのは次の一か所だけ。
zsh/glob.c at 00d20ed15e18f5af682f0daec140d6b8383c479a · zsh-users/zsh
case '[':
case Inbrack:
{
char *os = --s;
struct value v;
v.isarr = SCANPM_WANTVALS;
v.pm = NULL;
v.end = -1;
v.flags = 0;
if (getindex(&s, &v, 0) || s == os) {
zerr("invalid subscript");
restore_globstate(saved);
return;
}
first = v.start;
end = v.end;
break;
}
これを詳しく追いかけていくのは面倒なので、 これにてzsh編終了(長かった)。
Hugoメモ
0.88.1→0.90.1に更新して起動してみたら警告が山ほど出てきた。 数はたくさんだけど原因はどれも同じで 最初の方を抜き出すとこんな感じ (時刻やディレクトリ名は適当にいじってます)。
Start building sites …
hugo v0.90.1-48907889+extended windows/amd64 BuildDate=2021-12-10T10:56:41Z VendorInfo=gohugoio
WARN 2021/12/11 hh:mm:ss The "tweet" shortcode will soon require two named parameters: user and id. See "C:\content\post\2020\t2011-4.md:25:1"
WARN 2021/12/11 hh:mm:00 The "tweet" shortcode will soon require two named parameters: user and id. See "C:\content\post\2020\t2012-3.md:18:1"
WARN 2021/12/11 hh:mm:00 The "tweet" shortcode will soon require two named parameters: user and id. See "C:\content\post\2021\t2101-10.md:127:1"
どこで変わったのだろうと調べてみると0.89.0へ上がった時点らしい。
Release v0.89.0 · gohugoio/hugo
のNotesに
We have updated the Twitter shortcode to use Twitter’s new API. See this issue for details.
というのがあった。そしてthis issueとはこれ。
Update Twitter shortcode oEmbed endpoint by jmooring · Pull Request #9106 · gohugoio/hugo
The existing endpoint will be retired and removed on November 23, 2021. References: https://twittercommunity.com/t/consolidating-the-oembed-functionality/154690 https://developer.twitter.com/en/docs/twitter-for-websites/oembed-api#Embedded This is a backward compatible change. The existing endpoint requires a single parameter: the id of the tweet. The new endpoint requires two parameters: the id of the tweet, and the user with whom it is associated. For the moment, if you supply the wrong user, the request will be redirected (with a small delay) to the correct user/id pair. This behavior is undocumented, but we will take advantage of it as Hugo site authors transition to the new syntax. {{< tweet 1453110110599868418 >}} --> still works, throws warning, deprecate at some point {{< tweet user="SanDiegoZoo" id="1453110110599868418" >}} --> new syntax
めんどくせーーー
銀河の歴史がまた一ページ
宇宙暦745年12月11日18:27 銀河帝国軍コーゼル艦隊は抵抗を続けていたが、自由惑星同盟軍のフレデリック・ジャスパー中将とウォレス・ウォーリック中将が連携した攻勢を側面に受けて、限界に達した。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 11, 2021
宇宙暦745年12月11日18:36 銀河帝国軍コーゼル大将の旗艦ディアーリウムが3本の砲火を同時に受け、コーゼル大将は戦死した。情報主任参謀シュテッケル少将の指示を受けたケーフェンヒラー中佐は自由惑星同盟軍に対し降伏し、捕虜となった。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 11, 2021
宇宙暦745年12月11日18:52 銀河帝国軍のなかで最後まで組織的抵抗を続けていたシュタイエルマルク艦隊が敗走を開始した。これと前後して第二次ティアマト星域会戦の勝敗は完全に決した。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 11, 2021
宇宙暦745年12月11日19:07 自由惑星同盟軍総旗艦「ハードラック」に飛び込んだ流れ弾により生じた爆発で転倒した作戦参謀ヒース少佐が起き上がった。その直後に発生した二次爆発で飛来したセラミック片が、アッシュビー大将の腹部を切り裂いた。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 11, 2021
宇宙暦745年12月11日19:09 駆け付けた軍医が、自由惑星同盟軍宇宙艦隊司令長官アッシュビー大将の出血性ショックによる戦死を確認した。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 11, 2021
宇宙暦745年12月11日19:37 アッシュビー大将と同時に負傷した作戦主任参謀フェルナンデス少将が死亡した。#外伝4巻 #第二次ティアマト星域会戦
— 今日は何の日@銀英伝bot (@logh_today) December 11, 2021
そう言えば
前述の仕様変更に伴うshortcodeの書き換えをしていたときにこんなツイートがあったのを思い出した。
ファンの皆様お待たせ致しました。この冬「MOONLIGHT MILE 」の物語を再開します!再び吾郎、ロストマン、歩に会いに行きますので皆様お付き合い下さい!
— 太田垣康男 (@ohtagakiyasuo) May 13, 2021
サンダーボルトが終わる気配がまだ(あまり)見えないんすけど、 いつまでが「冬」なんだろう…
追記
元々スペリオールで連載されていたのが休止→サンダーボルト連載開始 だったので、再開もスペリオールだと思ったら違った。
#太田垣康男 MOONLIGHT MILE【予告】 - 太田垣康男のマンガ - pixiv