土曜日、神田明神、富岡八幡宮、水天宮を見てまわった。

どれも都会の神社の様相で、鎮守の森はないか、あっても小さい。水天宮は改築中らしく、移転していた。

とりあえず行くだけ行ったが、今回行った神社はあまり面白さを感じなかった。

東京都の別表神社はあと東郷神社だけ行ってない。

妙楽寺 (あじさい寺) に行ってみたけど、あまり人もいないし、静かで良かった。あじさいも大変たくさん咲いていた。

短縮 URL なんかだと、Base58 (Base64の中から、表示上まぎらわしい文字を削除したもの) を使ってただの数値を短かくする工夫をしていたりするが、それをもうすこし汎用的に使いたいので書いてみた。

実用性に疑問があるので CPAN にあげてはいない。

経緯

ある文字数制限のあるフィールドに、できるだけ邪魔にならないように数値を埋めこみたいと思った。任意の数字なので、特に bigint になると数字そのままでは文字数がばかにならない。そこで Unicode を使ってエンコードすることを思いついた。バイト数的には不利なのだけれど、文字数による制限であれば、Unicode 文字はたくさんあるのでもっと短くなると考えた。

使う文字セットはなんでもいいけど、ぱっと見で脳が読もうとしない、意味を理解しないものがいいと思い探していたところ、点字だと、なんと丁度 256 文字あるし、ぱっと見がかっこいいのでそれでまず Base256 というのを作った。

ちなみにこれだと '9235113611380768826' という数値 (19文字) は、'⢀⠩⢶⣦⡚⢹⣀⠺' という文字列 (8文字) にエンコードできる。

ただ、Base256 だと汎用性がなく、なおかつ Unicode の点字の文字セットを使うというのだとあまりにもニッチすぎるので、任意の文字セットを使えるようなものならまだマシかと思い BaseN を作った。

  1. トップ
  2. tech
  3. 任意の文字セットで数値をエンコードできる Encode::BaseN