Git Large File Storage (LFS)

Hugo の画像をどこで管理するかの検討 候補 Git Large File Storage (LFS) Git LFS で画像データなどを管理する際のイメージが湧いていないので調査して整理する https://git-lfs.github.com/ AWS S3 きっかけ Hugo on Vercel で blog を投稿した際に、記事内でつかっている画像 image が build 時大量に up されていて build が重いので何とかしたいと思いました。そもそも バイナリデータを大量に git で管理したくないなぁということで、いくつか候補を挙げて調査してみることにしました。 候補1: Git Large File Storage (LFS) って何だろう Git で画像や動画のような大きなファイルを別サーバーに分けて管理する方法があるらしい?ということで、どういった構成でデータをもつことになるのかザックリ調べました。 文字で読んでもサッパリ分からんだったので図で整理しました。 ローカルで blog(Markdown) を編集して Github に push する push の直前に該当の画像ファイルなどは LFS API を通して Git Large File Storage にアップロード される (Github には画像のオブジェクトハッシュやファイルサイズなどのメタ情報のみ保存される) (text pointer から実体が紐付くイメージで構成図を書いたけど逆にややこしい図になっているな・・) Markdown で書かれた blog text と、Git Large File Storage が vercel に(たぶん)アップロードされる vercel 上で hugo の build によって html に変換される → その際に画像ファイルも都度アップロードされる〜〜〜 ここまで考えて「あれ?LFSで速度改善されないのでは??」と、気づきました。気づいてよかったし、着手前にきちんと調査詰めて要件を満たしているか確認するの大事だなと思いました。

Contribute Anniversary

Contribute Anniversary 先日、初めて OSS に PR を出して merge され、晴れて contributor になれたため経緯を書いていきたいと思います。 該当 PR: https://github.com/kubernetes-sigs/kubespray/pull/8224 経緯 ansible-playbook を実行したら「設定値が適切でないよ」と Error が出たので、Github で PR や issue を眺めて原因を探していました。見慣れたアイコンがあるなぁと思ったら、なんと職場の上司がそのソースコードに対して PR を出していて、わたしの Error 箇所である「適切ではない設定値」が merge されていました。 何よりもまず「わたしの上司コントリビューターなの?!」ということに驚きました。「Error 箇所を特定していたら上司を見つけたよ!すごい!」と、上司へ報告をしに行ったところ、上司は 「この設定で Error したの?もしバグだったら自分の修正が世界中のユーザーに迷惑をかけることになる・・どうしよう」 と落ち込んで(?)いて、確かにそうだな・・大変そう・・と思いながらも 「じゃあこの Error の原因調べるのお願いしますね」 と、丸投げして一週間くらい放置していました。 もし仮に修正が必要なバグがあったとしても、わたしじゃ恐らく原因を突き止められないしなぁという気持ちもありました。 何の音沙汰もなく一週間経ち (世界中の人が使っているツールのはずなのに、わたし以外誰も何も文句を言ってこない。おかしい) と、流石に上司のせいではなく、自分の環境が悪いのだろうなと思い調査してみることにしました。 該当箇所についてドキュメント内を調べたところ「設定値が適切でないよ」と警告が出ていた箇所とは、また別の設定値が出てきました。具体的には、上司が indentfirst=None と設定してたところは first=False と設定するように書かれていました。あれ?やっぱり上司は世界中の人に迷惑をかけているのかな?と不安になりながらも、それらパッケージのおおもとのソースコードを見てみることにしました。 すると、以下のことが分かりました。 現行バージョンでは indentfirst=None、新しいバージョンでは first=False と指定されている indentfirst=None は次期バージョンで Error になるため Warning である 現行バージョンでも first=False の設定を使うことができる つまり、わたしの環境のパッケージのバージョンが一つ飛び抜けて高くなっていて(requirement.txt で様々なパッケージの推奨バージョンは指定されていたのに、どんな構築をすればそうなるんだ?)それが原因で今回の Error が引き起こされていました。上司は世界中の人に迷惑をかけておらず、わたしが自分で掘った穴に勝手に落ちている状態でした。 パッケージのダウングレードをすれば大丈夫そうということが分かったので、これで調査を切り上げようかと思いましたが、上司の出した PR を参考にして少し頑張ればわたしも今回の内容で PR を出せるのでは?と気づきました。

Configure init.el so that twilight-bright-theme works

Theme の設定が効いていない emacs のバージョンを上げてから Theme が効いていない Error を放置していたので何とかしました。ちなみにこの Error を解消したら Theme より下に設定されていたものたちが全て効くようになりました。今回の件で、Error は早めに摘もうという気持ちになりました。 修正箇所 これは emacs のバージョンを上げるたびに起こりうる Error のため、忘れないように手順を残しておきます。 emacs version: 27.2 修正前の init.el ;; Theme (leaf twilight-bright-theme :ensure t) (require 'twilight-bright-theme) (load-theme twilight-bright t) 修正後の init.el ;; Theme (leaf twilight-bright-theme :ensure t) (require 'twilight-bright-theme) (setq custom-theme-directory "~/.emacs.d/elpa/twilight-bright-theme-20130605.843/") (load-theme 'twilight-bright t) 'twilight-bright-theme から Tag jump して /elpa 配下で設定しているフルパスを入手する ※ alt + . setq custom-theme-directory で、1で入手したフルパスを指定する twilight-bright の先頭にシングルクォートを付けてシンボルにする あとは ;; Theme 以下を上から一行ずつ eval して表示を確認していく

Fix checkbox

暫定対処 https://github.com/zwbetz-gh/papercss-hugo-theme hugo の上記 Theme で、Markdown の チェックボックス表記が崩れている状態だった。 custom.css に以下の修正を加えることで解消した。 ul li input { display: inline; } ただ、この修正は根本的な解決にはならない。修正の影響範囲が大きくなってしまうため、予期せぬところでまた表記が崩れる可能性が出てくる。 根本解決への道筋(仮) class 属性を付与してそれぞれ表記を指定する → 修正箇所が増えるけれど影響範囲は小さい hugo の Markdown レンダリングエンジンについて調査する → 大変 良い機会なので、hugo の Theme を何か作ってみたいなぁと思いました。 郷に入っては郷に従え https://github.com/zwbetz-gh/papercss-hugo-theme/blob/master/static/css/paper.css#L745-L781 「ul li xx の場合は」 ul, li, xx, など、それぞれの場合について細かく指定しているようなので暫定的な対処で良さそう。 issue&PR 作成の準備_TODO わたしは手元で既に custom.css に変更を加えてしまっている。 papercss hugo theme を使用して最小構成で作成しなおす 同様の表記崩れがあることを確認する スクショを作成して、暫定対処の内容で issue&PR 作成 感想 hugo のレンダリングエンジンに手を加えるというのは Theme の世界から外れて hugo の修正になってしまう。まずは Theme の中で完結する(つまり暫定対処の)修正をせざるを得ないのかもしれない。 ただ暫定的な対処の場合だと hugo 内で Markdown を表記させる場合には妥当だけれども、Org-mode からリスト表示させる場合は <p></p> で行っているようだった。つまり Org-mode から表示させたときに、この修正は効かなくなってしまう。

css test

test1 test2 *[ ] test3 *[ ] test4 test5 test6 aaa bbb
«« « 1 2 3 4 5 101 » »»