SRE本をつくるツーライナー
Site Reliability Engineering をずっと読みたかったのですが、これ結構高くて、英語版でも日本語版でも 5,000 円を超えてしまいます。
一方で、この内容って Web 上に公開されているので、ここで読めば無料ってことになります。 ぼくは未だ奨学金を返還する義務を負っているのであって、なんとかして安くこの本を読みたい。
無料で読めるんだったらそれで良いんだけど、ぼくはこれを Kindle で読みたい。Kindle で読むためには、PDF 化する必要がある。これを楽に PDF 化したいってことで、ワンライナー作りたかったんですけど、あんましうまくいかなくて、ツーライナーになりました。
# 全チャプターを個別に PDF 化する $ curl -s https://landing.google.com/sre/book/index.html \ | pup 'div.content a[href] attr{href}' \ | sed 's/\(\([^/]*\).html\)$/\1 \2.pdf/' \ | sed 's|^|--disable-smart-shrinking --viewport-size 800x600 --zoom 3 --resolve-relative-links https://landing.google.com|' \ | wkhtmltopdf --read-args-from-stdin # 個々のチャプター PDF を結合する /System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output sre.pdf $(ls -tr *.pdf)
結構いろんなツールを使っているから、ワンライナーとか言うには若干卑怯感がありますね…。
だいたい 15 分くらい待てば、600 ページの SRE 本ができあがりです。 作成される PDF ファイルを Kindle に送れば、以下のように Kindle で SRE 本が読めるようになります。
必要なツール
pup
インストールは go get
で。
$ go get github.com/ericchiang/pup
pup は jq
の HTML 版みたいなもんで、HTML ファイルを受け取って CSS Selector でフィルタして返すってことをしてくれるツールです。
SRE 本のチャプターのリンクを抜き出すために使ってます。
$ curl -s https://landing.google.com/sre/book/index.html | pup 'div.content a[href] attr{href}' | head -3 /sre/book/index.html /sre/book/chapters/foreword.html /sre/book/chapters/preface.html
ホントは xmllint --xpath
で抽出できれば良かったんですが、HTML がイケてなくてエラー吐かれた。
wkhtmltopdf
インストールは
$ brew install caskroom/cask/wkhtmltopdf
Google 謹製の HTML ファイルを PDF に変換してくれるツール。 JavaScript の実行とかもできてしまうっぽくて、かなり強そう。
このツール使って PDF 化すると、字がめっちゃ小さくなるので、かなり苦労しました。