みよんみよんのボツ絵リサイクル。。。 |
本来なら、 pixivFANBOX のほうでやるべきなんですが、 以前の記事のような「楽しいイラスト(?)」が1つもで出てこないという、とってもつまらない話になるのかなと思い、この過疎ブログで文章だけをだらだら~と書いていくことにしますた。
そんなわけで、#InstanceTicker の込み入ったことをするコミッター weepjp でございます。
はい滑りましたね。きっとバナナの皮でも落ちてたんですかねって、知らんがな。
そんなわけで、以前の記事からようやく日の目を見るような状況となってから数日経ちましたので、書いてみようかなと。。
そんな新しくなった「#InstanceTicker 2021」について語ります。
旧新のちがい
キューシン♪
求心♪
はい。滑ったあ。
TSV から SQLite へ
まず、並べる順番をドメインの名前順(サブドメインを含まない形)で、高速で出したいという希望から、SQL にしたのですが、そこまで大規模なコンテンツでもないし、SQL といっても「PostgreSQL」や「MySQL」の亜種だとか、選ぶことに悩むほど種類がたくさんあったことと、小規模さをアピールする(?)ため SQLite にしました。早い話が身の丈にあったものを選んだわけです。
TSVだと、並べる順番を手動で書いていく原始的な必要があるため、かったるかったし、よく順番をまちがっていましたね。。
とは言え、編集は Google スプレッドシート上で行われており、こちらでは「同一鯖が既に存在しないか」や「不調になったタイミングの履歴」や「アイコンファイルを base64 にしたものの格納」を行っており、それらをコピペするというスタイルは、 TSV のときと編集過程はあんましかわってません。
だもんで、PHP を使って Web上で編集ということは一切しないことになってます。
SQLite ファイルの中身(冒頭)はこんな感じです。 冒頭には、デフォルトの値が格納されています(詳細後述)。 |
以前は PHP 編集によく使うテキストエディター「Mery」にコピペして TSV に保存してましたが、現在は「DB Browser for SQLite」にコピペして SQLite に保存しています。
「DB Browser for SQLite」へのコピペに関して、注意すべき点は「1番先頭の1つのセルを選択してからコピペを行わないといけない」のが難点でして、一般的なソフトウェアのような扱いで全選択してからコピペすると処理落ちしますので、ここをみてマネしようとかアホなことを考えてる人はちょっと要注意です(んな人などいないことを心から願う)。
デフォルト値も SQLite で管理
当初は、デフォルトとインスタンスとは、テーブルを別途にして書いてたんですが、やってて効率的ではないなと思いました。
あるときに、インスタンスの固有番号を62種類の英数字(0-9, a-z, A-Z)を割り振った「62進数」の2桁文字にすれば、CSS で使用する文字数を大幅に削減できるなと考えました。(なお、f0代 や F0代 に関しては注意が必要になりました。だって fk や Fk があるんだからこれはまじファックだわと)
なぜなら、3桁やら4桁ある数値の固有番号がたった2桁というか2文字で済むんだよ? それが1000項目以上を数回繰り返されるんだから、積もり積もって削減できるんだから、これはやらない手はないと思い、62進数最高ってなりました。 なお、なぜ64進数にしなかったのは base64 と名前が紛らわしいからと、base64 で使用される「-」「_」「+」などの文字列の扱いが不安だったので、シンプルに英数字(0-9, a-z, A-Z)の62進数にしたのです。なお、 3843 (ZZ) まで2桁みたいですので、そこを超えたら3桁 3844 (100) です。。
で、1桁文字分の(0を除いて)60項目が空いたので、そこにデフォルト値でも書いとけば効率的ではないかと、書いて読み込んだら格段に処理スピードが上がってびっくりしました。
SNSの種類も60まで増えていくわけないもんねえ(これが地獄の始まりでしたとならないことを願うばかり)。おいらって天才?(ばーーーか)
アイコン画像を別ドメインで参照
「34.wtf」という短かしいドメインを、 Cloudflare で取得しました。たまたま空いててすごいけど、あやしいドメインにしか見えない。 wtf は what the fuck の略かな?
これで、フォルダや拡張子の必要のないURL構成にします。
- Misskey のデフォルトアイコンが表示される→ https://34.wtf/4
- :don: こと 末代鯖 のアイコンが表示させる→ https://34.wtf/13
これで、CSS 文字数をさらに減らしますが、その分キャッシュバスティングを仕込んだらそれほど文字数変わらないっていう話ですが。。
以上です
まぁ、とりあえずこんだけの報告です。
なお、Type-1 が 画像に白の境界線を入れるという手間がありましたが、著作権的に微妙かなと思い、白背景に変更されたとかそういうバッドエンディングストーリーは割愛しました。
今後とも、#InstanceTicker を、ご愛顧賜りますよう。よろしく。しなちく。