✖
バックエンドかえてからメタデータ(ogpとかもろもろ)がちゃんと入っておらず、はてブのタイトルとかがおかしくなっていた。なおしたつもり。
結構いろいろなおしまくっている
- sitemap.xml / feed.xml は encoding/xml で出すように
- html/template だと XML の PI が出せなかったり、そもそもXML用じゃないので問題がある。text/template は論外
- 関連エントリを 2-gram かつより効率良い実装に書き換え。
- エントリ数が1万弱なので、そんなに困ってはいないのだけどやりたくて
DB の DATE 型にしてあるカラムを TEXT 型にする
go-sqlite3 だと DATE を time.Time にしてくれちゃうが、それだと困るという。DBをそのままで持ってくる前提で、元々 CAST(date AS TEXT) as date とかで頑張っていたけど、これが sqlc と非常に相性が悪い。CAST するとそのクエリ専用の型が作られてしまう。そして共通の型に詰め替えるという手間 (コピー) が発生する。
sqlc の overrides とかでなんとかならないかと思ったが、go-sqlite3 の時点で time.Time になっちゃうのと、特にドライバオプションで切り替えることもできなそうなので、諦めて TEXT にすることにした。
ただ SQLite はカラムの型変更が ALTER TABLE でできない。知らなかった。
ということでめんどいことに……
BEGIN TRANSACTION;
-- 1. Create new table with TEXT type for date
CREATE TABLE entries_new (
id INTEGER PRIMARY KEY,
...
);
-- 2. Copy data from old table
INSERT INTO entries_new (id, title, body, formatted_body, path, format, date, created_at, modified_at, publish_at, status)
SELECT id, title, body, formatted_body, path, format, CAST(date AS TEXT), created_at, modified_at, publish_at, status
FROM entries;
-- 3. Drop old table and rename new table
DROP TABLE entries;
ALTER TABLE entries_new RENAME TO entries;
-- 4. Re-create indexes
CREATE INDEX index_date ON entries (date, path);
...
COMMIT;関連エントリー
- 関連画像を表示 libpuzzle の Perl binding である Image::Libpuzzle を使って関連画像を実装してみた。pHash や ...
- Lightroom のカタログを SQLite で読んで統計を出したりする .lrcat っていったい何なのか カタログファイルの実体である lrcat は SQLite の DB ファイルそのもの。sqlite3 ...
- Terrarium に Terrarium を Terrarium する Terrarium ほんとは自分自身を deploy するやつを deploy したかったんだけどやめた。やる気が失せたので書いたところだけ記録しておく。 #[...
- Fastly の Terrarium 環境で Rust を使ってカウンタを書いてみた Terrarium は Fastly の WebAssembly を実行してくれるお試し環境みたいなやつ。ちょっと前に話題になった Luce...
- Prometheus から VictoriaMetrics への移行(Ubuntu, systemd) 自宅ラズパイのメトリクスとかセンサー類を VPS 上の prometheus に溜めているけど、1年分で12GBぐらいと、用途の割にかなり大...