hogashi.*

日記から何から

git/gitのリポジトリにはハッシュがdeadbeefなコミットがある

github.com

 GitHub では https://github.com/git/git/commit/deadbeef みたいな URL でコミットの存在を確かめられるので、みなさんもお好きなリポジトリでぜひ。ちなみにこのコミットは This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. らしいので、残念ながら取り込まれたコミットではなさそう。

 deadbeef 、 16進数の例としてよく見るけど名前あるのかなと思ったら magic debug values のひとつということだった。めちゃくちゃバリエーションがある。 C00010FF "Cool off", Indicates Apple iOS app was killed by the operating system in response to a thermal event[22] とか面白い。

en.wikipedia.org

QWERTYキーボードの行をいっこずらす暗号

 突然思いついたのでやってみた、 cleopatra3.dl;zgfz に暗号化できる。 QWERTY キーボードの行で、 1つ下の行の文字に置き換える暗号 (a は z に、 c は 3 になる)。

github.com

 Google で検索するのが下手なのかもだけど、前例がなさそうに見える (けど多分誰かがやってそう)。ひとまず小文字 (というかこの場合 Shift キーを押さない状態のキー) だけは実装した。最近こういう感じで Go の練習をしていて、 Map に素朴に辞書をつくってやってるけど、もうちょっと賢い実装方法があるかも。

 ちなみにこういう「ある字をある別の字に置き換える」暗号は 換字式暗号 - Wikipedia というらしい。シーザー暗号とかかなと思っていたら、意外とエニグマ暗号とかも一種の換字式暗号と書かれていて面白い。

さらに近代のエニグマ他に代表される機械式暗号も、変換ルールを機械の利用により複雑にする技巧を凝らした、換字式暗号の一種と言える。

https://ja.wikipedia.org/wiki/%E6%8F%9B%E5%AD%97%E5%BC%8F%E6%9A%97%E5%8F%B7

 骨に文字書かれた暗号なかったっけと思ったら ネイピアの骨 - Wikipediaスキュタレー - Wikipedia が混ざってた、そしてスキュタレーは転置式暗号といって別の種類らしい (ネイピアの骨のほうはそもそも暗号ではなくて計算の道具)。

ポンペイ展よかった

kyotocity-kyocera.museum

そこにいた。

https://kyotocity-kyocera.museum/exhibition/20220421-20220703

 サムネイルが骸骨で怖い気もするけど、異常な世界を堪能とかではなくて、素朴に暮らしが行われていた様子が (火山の噴火によって) それなりに綺麗に残っていて面白い、という展示だった。サブタイトル(?)の「そこにいた。」というのもそういうことだと思う。
 展示の感じも、わざとらしさはあんまりなくて、こういうのが発見されたよ、こうだったと思うッス、というのが淡々と並んでいてよい。写真も個人利用に限って OK でおおらか。

pompeii2022.jp

 暮らしの内容も、確かにそういうこともあるかもね、こういう感じの前提のもと日々の暮らしが行われているな、のどか、みたいな気持ちになる。個人的に良いなと思ったのは犬のタイル画で*1、芸術家の芸術品なのかと思いきや、実は民家に貼ってある猛犬注意の表示というのが素朴〜って感じだった (つくった人は当時の芸術家とか職人とかそういう感じではあったと思う)。あと日時計は時刻を表す曲線がこうなるのかと思って単純に技術的に(?)面白かった。
 妙な親近感があるので、物販でよくあるデフォルメされた絵とかも納得感があって、こういう感じで過ごしてそうだよね、みたいな感じでかわいいパーカーを買った。この踊っている人は確か酒の神の陽気な従者です(踊っている銅像が残っている)、犬は猛犬注意の犬だと思う。

 こういう暮らしもあったのだね〜、紀元79年とか聞くとかなり昔だけど、意外と暮らせてしまいそうな文明だな〜納得〜、と思いに行くのがおすすめです。

 あと京都市京セラ美術館の建物がかなり特殊で面白いので、それも見てほしい。これは最高の樋です。

*1:多分このポンペイ展のポスターとかにもなってた気がする

MacでAlt押したまま色んなキーを押す

 Mac でミスって Alt キーを押したまま他のキーを押すと妙な文字が入力されて、毎回へ〜って思うので、ひと通り押してみた (US 配列を使っています)。

 (追記) Alt って書いてるけど Mac 的には Option っぽい

abcdefg
å∫ç∂´ƒ©

ABCDEFG
ÅıÇÎ´Ï˝

hijklmn
˙ˆ∆˚¬µ˜

HIJKLMN
ÓˆÔÒ˜

opqrstu
øπœ®ß†¨

OPQRSTU
Ø∏Œ‰Íˇ¨

vwxyz
√∑≈¥Ω

VWXYZ
◊„˛Á¸

1234567890
¡™£¢∞§¶•ªº

!@#$%^&*()
⁄€‹›fifl‡°·‚

`=-[]/,.;\'
`≠–“‘÷≤≥…«æ

~+_{}?<>:|"
`±—”’¿¯˘Ú»Æ

 なるほど〜

issueを立てたら尊いという意識を保つ

 仕事していく上で、意外とこれやってないねとか、新しいことがわかったのでやることが増えましたとかそういうときに、じゃあ新しく issue を立てましょうということになる。やることが増えるので、素朴には嬉しくないように感じる。が、よく考えると、やらないとならないことが発見されただけなので、結局はやるはずだったわけで、最終的にやることになる量は増えていなくて、ふむふむこれもやるのですねといってやっていくだけのはずで、何ならわかって嬉しいはず。なので issue を立てられたら尊いということにしましょうというようなことがチームのふりかえりで話されていて、頭に置きつつ仕事している。どんどん issue を立てていくとやることが爆増して途方もない感じになることもあるけど、これは尊いことのはず、と思ってやっていってみている。もちろん闇雲に issue を立てまくっていくと訳が分からなくなって破滅するので、必要な分に留める必要はありそう。

見えてる一番上の記事のタイトルのSHA-1でブログタイトルの文字色変える

 トップのタイトルはブログを投稿するごとに色が変わって、各記事を見てるときのタイトルは記事ごとに色が違うことになる。透明度も含めて変えているので、運が良ければブログタイトルがめっちゃ薄いときもありそう。編集画面のプレビューで確認できてしまうので、良い色を求めてタイトルを変えてしまうおそれがある状態。
 1秒ごととか日付ごとに変わるようにしてもよかったのだけど、何かに基づいて変わっている感はほしいので、いったん記事タイトルだけを使っている。

 TextEncoder とか ArrayBuffer とかあたりはひと手間感あるなと思っていたけど、使ってみるとちゃんと道具が揃っていて便利な気がする。

const entryTitleText = document.querySelector('.entry-title-link').textContent;
const encodedText = new TextEncoder().encode(entryTitleText);
crypto.subtle.digest('SHA-1', encodedText).then(digest => {
  const rgba = Array.from(new Uint8Array(digest)).slice(0, 4);
  const blogTitle = document.querySelector('#title a');
  blogTitle.style.color = `rgba(${rgba.join(', ')})`;
});

 (追記) その後やっぱりブログタイトルはやめてカラーバーみたいなことにした。せっかく桁がいっぱいあるので、 2色とってグラデーションにしたらちょっと綺麗でよい。グラデーションの角度はハッシュを数値にして合計している (360度を超えても、自然と何回転でもしてくれるので便利)。


const entryTitleText = document.querySelector('.entry-title-link').textContent;
const encodedText = new TextEncoder().encode(entryTitleText);
crypto.subtle.digest('SHA-1', encodedText).then(digest => {
  const digestArrray = Array.from(new Uint8Array(digest));
  const rgba1 = digestArrray.slice(0, 4);
  const rgba2 = digestArrray.slice(4, 8);
  const deg = digestArrray.reduce((cur, sum) => cur + sum);
  const target = document.querySelector('.entry-date');
  target.style.background = `linear-gradient(${deg}deg, rgba(${rgba1.join(', ')}), rgba(${rgba2.join(', ')}))`;
});

Text::XslateでTTerseでも%%で行コードが書けるの知らなかった

 Perl のテンプレートエンジン https://metacpan.org/pod/Text::Xslate にはシンタックスがいくつかある。 Kolon も TTerse も使っていて、 Perl コードを書くのに Kolon では <: ... :>: ... どっちもあるのは知っていたけど、 TTerse では [% ... %] しか知らなかった。

 が、 Text::Xslate::Syntax::TTerse のコードを眺めていたら、 %% ... で行コードを書けるようだった (https://metacpan.org/pod/Text::Xslate::Syntax::TTerse をよく見ると書いてあった)。

https://metacpan.org/pod/Text::Xslate#TEMPLATE-SYNTAX

Kolon

Kolon is the default syntax, using <: ... :> inline code and : ... line code, which is explained in Text::Xslate::Syntax::Kolon.

Metakolon

Metakolon is the same as Kolon except for using [% ... %] inline code and %% ... line code, instead of <: ... :> and : ....

TTerse

TTerse is a syntax that is a subset of Template-Toolkit 2 (and partially TT3), which is explained in Text::Xslate::Syntax::TTerse.

HTMLTemplate

There's HTML::Template compatible layers in CPAN.

Text::Xslate::Syntax::HTMLTemplate is a syntax for HTML::Template.

HTML::Template::Parser is a converter from HTML::Template to Text::Xslate.

https://metacpan.org/pod/Text::Xslate#TEMPLATE-SYNTAX

コードの様子

sub _build_line_start { '%%' }
https://github.com/xslate/p5-Text-Xslate/blob/a7908ee382ed01f3a407fe826f2741de76287d36/lib/Text/Xslate/Syntax/TTerse.pm#L13

https://metacpan.org/pod/Text::Xslate::Syntax::TTerse#DESCRIPTION

TTerse is a subset of the Template-Toolkit 2 (and partially 3) syntax, using [% ... %] tags and %% ... line code.

https://metacpan.org/pod/Text::Xslate::Syntax::TTerse#DESCRIPTION