横書き日記

Code Server を使ったブログおよびメモ環境を整備するプロジェクト。

Tasks:

  • Chromebook からの SSH port forwarding を設定する
    • SecureShell は壊れたら browsing data を clear したのち about://restart すべし :-(
    • PWA で動かすと Ctrl+Space が取られてしまうので Ctrl+Shift+Space で日本語入力に切り替える。
  • Blog post のドラフトを新しく作る vscode の拡張(?) を書く
  • WP の今年分をインポートする
  • oauth2-proxy の裏に隠してコンテンツを公開する
  • 友達の皆様向けに oauth2-proxy を設定する
  • 手順の文書化
  • Code blog のスタイル調整
  • ドラフトトップページの整理
  • 非公開メモおきばをつくる
  • single.html に日付を入れる
  • pages の目次を作る
  • Wrap-up を書く
  • 変更のお知らせ
  • title に日付を入れる

Stretch:

  • vscode の拡張を強化
    • Fragments のファイルを開く
    • Wiki page のファイルを作る
  • Wikilink 相当の Hugo shortcode を作る
  • Confluence のコンテンツをコピーする (手動?)
  • VM の夜間自動 shutdown を設定する
  • VM の起動用ウェブ UI をたてる

2021/11/19 #11

  • 目覚ましつけ忘れて寝坊。
  • まとめ
  • そしてお手紙送付。これにて横書き日記はおしまい。めでたしめでたし。
  • さて縦書日記に戻りたいが、微妙に家の細事が滞っている。そっちが先。

2021/11/18 #10

  • さて、友人向け公開だけでなく、メモ目的で自分にだけ見えるページというのが欲しい。 しかし Hugo ではそういう複数の可視性をサポートしていないので、何らかの工夫が必要。
  • 「自分にだけ」の部分は「localhost 用にレンダリングした場合」という形で表現できる。 code-server の VM で ‘hugo serve’ した port を forward しているので。
  • しかし「表示しない」をどうしたものかなあ・・・
  • disableKinds を使えるかと思ったが、自分で kind を定義できないのでダメ。
  • publishDate を未来にすれば ‘-F’ オプションを使うことで自分だけに見えるページは作れる、まあアリだけど、もうちょっとなんとかならないか。
  • buildExpired / expiryDate についても同様だが・・・こっちの方がちょっとだけ扱いやすい気もするな。“0000-01-01” とかにすればいいわけで。これでいいかなあ。
  • というわけで WP から移行してきた個人的な記録に expiryDate をつける。
  • あとは vscode 拡張のテンプレにも最初から expiryDate をつけておこう。消すのは簡単だからね。
  • できた。
  • 今週一杯使うと書いたけど、もうやることないね。まとめを書いてお知らせして、おしまいだな。年末になったらマージして public にも公開しましょう。誰も読まないだろうけど。

2021/11/17 #9

  • さて一応 CI も動いたし一通りのことはできたが、せっかくなので今週は細かいブログの調整とかをするかな。
  • まずは 文書化.
  • Code snippets のスタイルが崩壊しているのをなんとかせねば・・・。
  • げ。インポートスクリプトのバグで前に公開したものたちまで非公開になっているな・・・。 直すべし・・・。
  • といったところで終了。

2021/11/16 #8

  • 家の用事を片付けていたらもう 5 時。
  • 基本的には動いているのだが、どうせなら Dockerfile の multi-stage build というのを試してみようかなあ。
  • できた。どっちがいいかと言われると正直どうでもいいが、Dockerfile に閉じるのはいいのかもしれない。まあ一度やってみたかったので満足です。

2021/11/15 #7

  • さてなぜイメージに正しくファイルが入ってないのか調べましょう。
  • 単に hugo -D -F してなかっただけの模様…
  • イメージが巨大化した (+50MB)。 昔のドラフト日記に png がいっぱい貼り付けてあるため・・・。
  • さて認証。自分だけにしか公開していないはずが、なんかデバッグユーザで 普通に見えてしまうな。結局 oauth2-proxy 側できちんと弾かないとダメっぽい・・・。
  • それでもダメ。 ログを見てもファイルを読むのに失敗した様子はない。 oauth2-proxy のコードで --authenticated-emails-file の振る舞いを調べると --email-domain が一致しているのでも通過できるらしい. --maill-domain を削除。でめでたく 403 が帰るようになった。
  • というわけでマニュアルのデプロイはできるようになりました。 次はこいつを CI したい。 GitHub Actions でいくか Cloud Builds でいくか。 Cloud Run との相性では Cloud Builds なのだが、 なんか GitHub からコードを持ってくるのがすごいめんどくさかった気がするのだよなー昔。今はマシになったのだろうか。
  • ドキュメントを読むとさすがにできるっぽいのでやってみたいところだが、ビルドを Dockerfile に押し込めるか外でやるかが悩ましいな・・・。とりあえず Hugo は毎回ダウンロードしないで third_party あたりにコミットしとこう。
  • 手元の gcloud builds submit は動いたので、今度はこれを GitHub に紐付ける必要があります。
  • ビルド(デプロイ)に二分半。遅いのをなんとかしたい気もするが大半の時間が docker push/pull なので特にできることもないかなあ。
  • Multi-stage Dockerfile にすうと cloudbuild.yaml を簡素化できそうだが・・・。 イメージサイズの再現には役に立たないな。やめ。

2021/11/14 #6

  • 前日が遅かったため寝坊。
  • さて、前日は Cloud Builds に突撃しようとしていたが、まずは手動で作ったイメージを gcr.io に push して Cloud Run を動かしてみようではないか。
  • GCP, Container Registory は終了で Artifact Registory になったらしい。名前変える意味あんのか・・・。
  • gcr.io じゃなくて us-west3-docker.pkg.dev らしい…
  • Cloud Run の domain-mapping は Pre-GA だったのか。そして us-west3 は未対応らしい :-( おもむろに us-west1 に追加。Artifact はもう west3 のままでいいです…
  • 唯一の AWS 依存であるところの Route 53 でドメインを設定. Cloud Domain に移そうかと一瞬思わなくもないが、めんどくさいな。Roue 53 で何一つ困らないし。dodgson.org じゃないドメインをとる暁には試してあげよう。むしろ kzys のやってる App Runner でも使って見る方が正しい課外活動にも思えるけれど。
  • Domain mapping の設定がが帰ってこないので App Runner のドキュメントを冷やかすものなり。Heroku みたいに Git (というか GitHub) にコードを push すると deploy されるタイプと、Docker イメージを push すると deploy されるタイプの二種類があるらしい。docker push すると勝手にデプロイされるのはひと手間少なくて便利だね。Cloud Run は docker push と cloud run deploy はわかれているので。
  • 20 分後にようやく設定完了。そしてイメージに HTML が入ってないっぽい雰囲気。時間切れ。

2021/11/13 #5

  • 引き続きインポート作業。昔書いた Python のコードがひどい・・。 前向きにいうと Python の fluency は数年前よりは上がっている。
  • というわけでインポート終了。ドラフトやメモも含めてインポートしたためゴミだらけだが、 まあいいです。
  • さて次のステップは Netflify に push か。しかし改めて考えるにこれ Netlify にすべきなのだろうか・・・企業秘密ではないにせよあまり不特定多数に見られたいわけでもないもの(愚痴とか)も含まれている。oauth2-proxy の後ろに隠すとは言え、裏にある Netlify の URL をさわると見えてしまう。むしろ oauth-proxy の Docker image に HTML とかをつっこんで push する方がよくね?
  • ただ oauth2 proxy はデバッグがだいぶ面倒なのでちょっと気が引けるなあ・・・。とかいってると進まないのでとりあえず突撃すべし。
  • とりあえず Message Passing で使っているこの Dockerfile を起点になんとかしたいわけだが・・・どうすればいいのかな。というと Hugo の public を ADD すればいいのか。
  • 今回は gmail.com で auth したいんだけど、Google 側はどうやって設定するのだろうね・・・。これ か。
  • Google OAuth の設定は触るたびに面倒になっていて、今はテストユーザに限った テストモードでない限りレビューが必要らしい・・・・が、 このテストユーザ機能はそのままブログの認証に使えるじゃん。 oauth2-proxy でユーザを絞らなくて良いのは偶然便利。
  • うげ gcloud builds submit するには Dockefile の中で hugo からの generation をしないといけないのか。さて・・・。
    • Option 1: docker push で手元で作ったイメージを gcr.io に push する
    • Option 2: gcloud builds submit できるようになんとかする
  • なんとなく gcloud builds でちゃんと動くようにしておくのが筋な気がするが、 そもそも Cloud Builds のことを完全に忘れてしまったのでその復習からやらないといかん。
  • といったところで今日は時間切れ。先は長いなあ・・・。

2021/11/12 #4

  • 昨日は夜が遅かったので寝坊。まあいいです。
  • WP インポートするぞ!インポートのスクリプトはあるが、 今までと違って公開してないものも (draft として) import してみるべし。
  • しかしその前に今年分の公開/非公開フラグをつけ直さないといけない・・・。愚痴の皆さんには非公開になっていただく。

2021/11/11 #3

  • Extension 続き。
  • スタブ作成できた。20 行じゃないけど 50 行くらい。async/await のおかげでめちゃ手続き的にまっすぐ書けるし “VS” Code だけあって TS よくわからん素人でも生産性高いし、世の中に腐るほど手本はあるし、ブログやメモ書くの支援するくらいなら拡張は自分で揃えられそうな予感。
  • つぎ、いまいるファイルを rename する拡張。
  • できた。もう Emacs Lisp を懐かしむ日も来るまい(もともと全然詳しくないだけに。)
  • さてパッケージファイルを作って code-server に持っていきます。
  • Hello From YokogakiX.
  • コードはこんなかんじね.
  • さて、では WP のコンテンツ今年分をこのブログにインポートしましょう。
  • といったところで時間切れ・・・。

2021/11/10 #2

  • さてブログのドラフト書き支援 VSCode 拡張を考えます。
  • が、ドキュメントを読んでいて気付いたがテンプレ挿入は Snippets というのが使えるのかな?
  • つかえた!いいじゃん。しかも blog のレポジトリにチェックインしておけるじゃん。
  • つぎはファイルをいい感じの日付ディレクトリに作りたい。なんかコマンドを実行すると /content/post/2021/11/10/untiled.md のようなファイルができるとかにしたい。
  • この untiled.md を rename するのは手動でやるか・・・と思ったがそういうコマンドはなく、拡張を入れる必要があるらしい。
  • そして code-server は Marketplace が使えない!といっても大半の拡張は GitHub にあるので sideload すればいい気がする。
  • この vscoe-fileutils のコードを真似して書けばいいかな・・・とおもったがなんか妙に大げさだね。20 行くらいで書けてほしいんだけど・・・。勉強がてらこれを参考に自分の拡張として実装しなおすのがいいかな。
  • というわけで拡張の stub を作りましょう・・・。
  • Packaging / publishing のセクションを読むに、雑に extension のディレクトリを sideload しておくことはできず、vsix というパッケージにする必要があるらしい。まあいい。ただ拡張の開発は code-server ではやりずらそうなので、おとなしく手元でやりましょう。
  • F5 でエディタの別インスタンスを起動して開発するの、Visual Studio ですねえ。
  • 気がつくと extension id を tategakix にしてしまった。縦じゃない…

2021/11/09 #1

  • とりあえず VM をたてて laptop から書き始めるところまではきたぞ。
  • Chromebook でも動いた。SSH のキーを登録するのに戸惑ったが 公式資料 などを見てなんとかなった。public key と private key 両方が必要というのが罠。
  • これで仕事中もちょっとメモを読み書きできるようになったので、最低限のラインにはたどり着いたといえる。