hogashi.*

日記から何から

 最近散歩の頻度がちょっとだけ上がっている。川は遠いと思って歩いていると意外と近いし、川岸を歩いているとめちゃくちゃ歩ける。

f:id:hogashi:20210611212341j:plain
川の上に信号機が浮いてて妙

 散歩したときの様子。ちゃんと見ると妙。

f:id:hogashi:20210611212322j:plain
鴨川

 割と暗くて、人はまばらなものの割といる。

f:id:hogashi:20210611212311j:plain
蛍 OFF
f:id:hogashi:20210611212300j:plain
蛍 ON

 わかりづらすぎるけど素朴に光っててよかった。

f:id:hogashi:20210611212249j:plainf:id:hogashi:20210611212330j:plain
街灯に葉が被ってて風情がある

 肉眼だと目がうまい具合に光量を調節してくれるので、暗い中に光が滲んで綺麗に見える。

 悪夢はのべつという生活なのだけど、悪夢を見る悪夢は多分めちゃくちゃ久しぶりに見た。入れ子の深い方は支離滅裂度が少し増していて、しかも深い方から起きてからの展開が浅い方でかなりあって最悪だった。内容は忘れたいので毎度覚えないことにしている。

 なぜか疲れ果てて夕方倒れるように寝て深夜起きるということが続いていて、電気は煌々、かけ布団はなしみたいな寝方をしていた (それでも5時間とか寝ていた、そういうタイプではある)。いずれにしても根本原因は疲れっぽい。梅雨が始まって以来体調がもとに戻りきらなくて困っている。

 

梅雨快晴知恩寺銀閣寺

f:id:hogashi:20210530220025j:plainf:id:hogashi:20210530220036j:plainf:id:hogashi:20210530220048j:plainf:id:hogashi:20210530220101j:plainf:id:hogashi:20210530220112j:plainf:id:hogashi:20210530220124j:plainf:id:hogashi:20210530220141j:plainf:id:hogashi:20210530220150j:plainf:id:hogashi:20210530220201j:plainf:id:hogashi:20210530220212j:plainf:id:hogashi:20210530220237j:plainf:id:hogashi:20210530220251j:plainf:id:hogashi:20210530232441j:plainf:id:hogashi:20210530220332j:plainf:id:hogashi:20210530221031j:plainf:id:hogashi:20210530221040j:plainf:id:hogashi:20210530221053j:plainf:id:hogashi:20210530221106j:plainf:id:hogashi:20210530221118j:plainf:id:hogashi:20210530221130j:plainf:id:hogashi:20210530221145j:plain

文字読むの助走要る

 記事とか本とか、読むのに気持ちの助走がめちゃくちゃ必要になってきていて、なんでなのかと思っていたけど、読んだということにするにはそれなりに内容をちゃんと噛み砕けないと、後でこれ読んだんだどうだったみたいなのを他人から聞かれたり自分で振り返ったりするときに全く思い出せなくて、それは読んでないじゃん、となるのが嫌だなと思っているんだろうなと思った。噛み砕けたら一番いいけど、それに気を取られて助走つかずに結局全く読まないということもあるので、まず雑に読むというか見るくらいの活動をしたい。しかしちゃんと読むというのは別に意識しないとすべてを雑に見るだけになってしまいそうで、それも困る。

RegExp match indicesためした

 Chrome 90 で入っていた RegExp match indices (https://www.chromestatus.com/feature/6558676666023936) というのを見てへ〜と思ったのでちょろっとおためしした*1

f:id:hogashi:20210507151501p:plain
devtools でおためしした様子

 さっと見た感じでは、マッチしたものそれぞれについて、その登場範囲を配列で返してくれるというものらしい。上の 3つ目の例 ('123aaaabbbb'.match(/(aa)+(?<bee>b)/d))だとこういう感じになっていそう ↓

  • (aa)+(?<bee>b) (全体) にマッチするのは
    • aaaab で (最初を 0文字目として) 3〜7文字目
    • なので [3, 8]
  • (aa) にマッチするのは
    • aa (後半の方) で 5〜6文字目
    • なので [5, 7]
      • 繰り返しだと最後にマッチしたものになってこうなっている?
  • (?<bee>b) にマッチするのは
    • b (最初の1文字) で 7文字目
    • なので [7, 8]

 範囲の感じで終わり側の数字が 1つ多いのは、 GitHub の例を見る限り slice とかでそのまま使えて便利になっています、というように見える。

const re1 = /a+(?<Z>z)?/d;

// indices are relative to start of the input string:
const s1 = "xaaaz";
const m1 = re1.exec(s1);
m1.indices[0][0] === 1;
m1.indices[0][1] === 5;
s1.slice(...m1.indices[0]) === "aaaz";
https://github.com/tc39/proposal-regexp-match-indices#examples

 indices つけるの大変なので /d フラグを明に指定しないとやりません、という仕様らしい。まさにこれがほしいぜというときにつけてあげると小粒に便利そう。 (ところで Chrome Devtools を見ていると /dシンタックスハイライトがまだあたってなさそう……)

As producing this array is expensive, the `.indices` property is only present when the /d flag is passed.

https://www.chromestatus.com/feature/6558676666023936

 GitHub の方には、なんで /d なのかというところに、 d 使っていいのかみたいなことも書かれていた (https://github.com/tc39/proposal-regexp-match-indices#why-use-d-for-the-regexp-flag) 。 indices という単語から取ろうとしたけど、いまある i とかを避けつつ、他の正規表現エンジンも見て d がすでに意味バラバラなので、まあいいかな、みたいな感じになっていそう?

 あとそれに伴って他の正規表現エンジンでの様子をまとめていておもしろい (https://github.com/tc39/proposal-regexp-match-indices/blob/master/flags_comparison.md)。リンクもあるので各エンジンのドキュメントへのリンクまとめみたいになっている……。

www.chromestatus.com

github.com

*1:バージョン: 90.0.4430.93(Official Build) (x86_64)

pt-query-digestのJSON出力の型書いた

 型を公開する練習として、 pt-query-digest *1--output json したときに出力される JSON の型を書いてみた。 JSON.parse() したものにつける型を想定している。

github.com

 index.d.ts とかを書いて、 package.jsontypes として指定しておくと完成らしい。 npm に公開しなくても、とりあえず yarn add -D https://github.com/hogashi/types-pt-query-digest-output-json とかやるとインストールできるのでさっと作ってみるには気楽。

www.typescriptlang.org

 値としては数値なはずだけどプロパティによって number だったり string だったりすることがあってちょっと難しい。ちゃんとコード読んでるわけでもないので、意外と null になるじゃんみたいなものもあったりしそう。あと pt-query-digest の v3.0 時点でもまだ開発中ということなので急に変わったりもしそうではある。

json output was introduced in 2.2.1 and is still in development, so the data structure may change in future versions.

https://www.percona.com/doc/percona-toolkit/3.0/pt-query-digest.html#options&:~:text=json%20output%20was%20introduced%20in%202.2.1%20and%20is%20still%20in%20development