hogashi.*

日記から何から

pull requestをつくるときはそれをやらないとどう困るかを書いている

 仕事でコードを書くときは大抵 pull request にしてレビュワーに見てくださいって言うことになる。 description には「これをやらないと (今のままでは) こう困る」というのを書くように意識している。
 多分こんなことは本やインターネットで無限に言われていると思うけどやっぱりそうだなと思って書く。

 pull request をつくった身からするとどうしても変更に意識がいきがちで、「これがやりたい」「ここをこう変えた」ということを description にまず書くのだけど、レビューする立場から見ると「今の何がいけないのか」がわからない。変更しなくて済むならそれが一番*1なので、いや〜どうしても変えないと困るんですよね、という点を理解したい。
 なので、 (さっきまず書いた内容に加えて) 「今のこれが壊れてて困る」「これがやりたいけど今のこの機能だとこれが足りない」みたいなことをなんとかして書くことにしている。実際それを書こうとして、いやよく考えたら今のままで困らないじゃん、ということに気づいたり、指摘できたりすることもある。

 これは issue とか相談ごとでも同じだと思っていて、「どう困っているか」さえ書かれていれば、「どうしたいのか」は一緒に考えたらよいので、「どうしたいのか」は別に書かれてなくてもよい (案があるなら書いておくとお得)。あと逆にレビューするときも、「この変更だとこう困るのでこうしませんか」と書けると、お互いに理解できて嬉しいはず。

*1:プログラマ三大美徳の怠惰だと思う

インディジョーンズレイダース失われたアーク見た

 何回目かわからないけどまた見た。めっちゃ面白かった。

 子どものころにテレビでやってて見て、おもしろいし親も好きなのでその後も時折テレビで見て、大学の図書館に DVD があったのでたまに見て、という感じで結構見ている。回数でいうとダイハードのほうが多いとは思う。ところで Blu-ray めっちゃ安い。

 昔から思ってたけど、全編通じてアーク自体がしっかり映るカットがほとんどない。これは今思うとかなりよくて、おいそれと目に入れるものではないことがわかるし、想像が膨らむ。ゴルゴ13でも、最も偉い人の顔だけ隠れたまま漫画が進行したりする。

 専門的な知識を専門用語を使って流暢に説明しているところを見るのが好きなので、インディジョーンズの講義シーンはかなり好きだったのだけど、今回英語字幕*1で見たところマジで意味不明でよかった。はるばる来たお偉方にタニスとラーの杖とアークの説明をするところもマーカスと一緒に流暢に説明していて最高。

 前見たときよりも短く感じた。たぶん結構記憶にあったからだと思う。一番好きなシーンは、イントロのジャングルから脱出までと、神への敬意で1カダム引くことが判明するところと、地図の部屋で字を読んで刺す場所こっちじゃんってなってからアークの場所がわかるまで。特にアークの場所がわかるところは毎回感動する。

 昔の映画、意味を含ませたものを画面にしれっと映して主張しないところが良い。地図の部屋でも、ドイツのみなさまはここだと思ってますっていう落書きとか、すでに杖を刺した跡とかを、しれっと映して説明しない。インディジョーンズの顔と、特に止まることもなく流れるカメラワークで、自然にあっこれは……と気づけるのが楽しい。

*1:DVD だと英語字幕にできるので楽しい、翻訳で漏れた単語や微妙なニュアンスを感じ取ることができる

ASCIIコード表でZとaの間には記号がある

 ASCII コード表で、大文字 Z と小文字 a の間には [ \ ] ^ _ ` の 6つの記号が含まれている。正規表現[A-z] とか指定してしまうと、アルファベットだけではなくこれらの記号も含まれてしまうことになる。

www.cs.cmu.edu

 なんでこれを見てたかというと、それが原因となった脆弱性shell-quote - npm という npm パッケージで出ていたからなのだった (修正バージョンはすでに出ている) https://nvd.nist.gov/vuln/detail/CVE-2021-42740 。バッククオートが含まれているのでコマンドインジェクションということだった。

 ちなみに bash ではこれで確認できて便利、と思ったけどバックスラッシュが出てなかった。

$ echo {Z..a}
Z [  ] ^ _ ` a

 ASCII コードで大文字にすぐ続けて小文字にしなかったの、 16進数でキリよく 0x41 を A 、 0x61 を a にしたかったからなんだろうか……とか考えていた。
 (追記) 1ビットだけ変えれば大文字小文字を変換できて便利ということかもと教えてもらった、なるほど

 寝てると悪夢をよく見る。基本的には寝て起きるときに気分が良いことがないので、何が悪夢かというと難しいけど、少なくとも夢を見たことを覚えていて、その内容によって気分が悪くなったものを悪夢と思っている。ごくたまに良い夢も見るけど、(記憶できている)割合ではほとんど悪夢といってよさそう。

 一番長いこと苦しんでいる悪夢はサッカーをやる夢で、いつもまったくうまくいかずに惨めになるというもの。足にボールが当たらないし、当たってもあさっての方向に飛んでいってしまう。
 実際に中学生までサッカーをやっていて、夢の通りまったくうまくならずにやめてしまったので、そういう夢を見るのもしかたがないとは思う。しかしこれが相当堪えていたのか、幼稚園から中学生までの長い期間だったからか、やめてずいぶん経ついまもよく夢に見る。困る。
 サッカー自体は好きで、見ることもある。サッカー選手がずるいことをしているのは嫌いで、ユニフォームをひっぱったり時間を稼いだりしているのを目にすると大抵落ち込んで見るのをやめる。勝ち負けに対してその程度の熱量だったからうまくならなかったのかもしれない。

 夢の内容はできるだけ覚えないことにしている。悪夢は何回も見たくないし、良い夢であっても奇妙なことには変わりないので、生活の記憶に混ぜ込みたくない。できるだけ見えないところで記憶を整理してほしい、と脳にお願いしたい。
 ところで、その記憶の整理によってものごとを忘れてしまうこと自体は困る。楽しかったことを思い返すのは楽しいし、覚えている知識を使って何かすることも多い。しかし嫌なことは忘れたいし、頭に色んな心配が同時に載っていると気分は滅入る。正気を保つために鈍感になる、みたいな話があって、個人的には鈍感でいることで他人に迷惑はかけたくないのであんまり同意したくないのだけど、やはりある程度はしかたなさそう。
 この週末まではかなり色々考えていたようで、週末延々寝続けた結果、無事いくつか忘れたようだった。

お題「気分転換」

Scrapbox記法からMarkdown記法に変換するCLI書いた

www.npmjs.com

 Yet Another Scrapbox2Markdown @hogashi/sb2md を TypeScript で書いた GitHub - hogashi/sb2md: scrapbox to markdown
 既存研究は Scrapbox → Markdown 変換ツールまとめ - wataash's blog などを参照していて、ざっと見て標準入力から入力できるものがなくて困っていたので作った。さくっとメモ程度に書いた Scrapbox 記法の文章の一部とか、社内で使ってる Scrapbox のページとかを Markdown 記法にしたいことがあるので、ページにアクセスするタイプの CLI だと不便なことがあるのだった。

 既存研究に GitHub - progfay/scrapbox-parser: Scrapbox notation → JavaScript Object というのがあって、↑の記事でもこれを使ってみてはどうかと書かれていたので、じゃあやってみるかとやってみた。 @progfay/scrapbox-parser は便利で、 Scrapbox 記法をパースしてオブジェクトにしてくれるので、オブジェクトのタイプごとに対応する Markdown 記法を書いてあげたら終了した。 YouTube とか見ながらだらっと書いて、最初のコミットから 4時間でできあがった。カッとなってやったのでテストがまだない。

 バンドラに esbuild を使ってみていて、素朴な TypeScript のスクリプトのバンドルには何も設定しなくても特に不便なことがないことがわかった。癖で tsc --init してしまったけどこれも不要だったかも。
 npm パッケージで CLI をつくるのは初めてで、 package.jsonbin フィールドに (shebang を足した) cli.js を指定したらよい、みたいな世界観なのは素朴 package.json | npm Docs"build:bin": "echo '#!/usr/bin/env node' | cat - dist/index.js > bin/cli.js" みたいなことしてるけど、もっとシュッとした方法がありそうな気がしていて、業界標準が知りたい。

スマートフォン ホーム画面 こだわり ゆるい

 ここ数年は落ち着きを大事にしていて、日常でよく目にするホーム画面 (最近待ち受け画面って言わなくなったのかな) もものを少なくしている。一時期は時計のみだった。当然画面は 1枚。ちなみにデジタル時計とアナログ時計で、認識できる時刻の感覚がちょっと違うので、補完しあっている。
 とはいえ瞬時にやりたいことくらいは許容したのが今。 Podcast のアプリ (特に NHK ラジオニュースは毎朝聞くのでショートカットも) と、電気やエアコンの操作アプリを置いている *1

 近年のスマートフォンは画面が大きくなった *2ので、片手では指が届かない範囲がある。なので、瞬時じゃないけどよく使うアプリはフォルダで下に置く。 Twitter クライアント、ブラウザ、 Kindle *3 など *4
 メインの Twitter クライアントはフォルダにも入れてない (左から 2番目なのは右手親指で押しやすいから)。一番右は最近開いたアプリが勝手に出るゾーンで、これもそれなりに便利 *5
 下の Google バーはデフォルトからあって、雑に検索するのと Google Lens の起動に便利。

 背景は神社のお焚き上げ (好きなので)。お焚き上げを見にいけるごとに写真を撮って、背景を変えているので、変わるスパンは 1年くらい。

 使わないアプリは積極的に消すので、ホーム画面に載せていないアプリも一覧から探して使うけど、頻度が多いとたまに限界を超えてホーム画面に入れる。ホーム画面からどれを降ろすか、あるいはどういう構成にするか考えることになる。

blog.hatenablog.com

*1:あと Android の機能として At a glance ってやつが一番上にいるけど、これが何をしてくれるのか試そうと思ってデフォルトから置いたまま。今思うとほぼ気にしてないので消してもよさそう

*2:こうやってスクリーンショットを貼り付けても縦に長い

*3:最近はゴルゴ13の単行本を順番に読む2週目が終わりそう

*4:真ん中が 16個、左と右が 4個ずつ

*5:Twitter 公式クライアントは基本的に通知を見るために使う