Lorentzca

Lorentzca

Japan
Summary of Terraform v0.9
terraform

Summary of Terraform v0.9

terraform0.9が出ました。 * Terraform 0.9 | HashiCorp tfstateの管理を設定する方法が変わって、これは今のところは後方互換性がありますが0.11で旧方式が廃止されるみたいなので先日移行しました。 * Migration from terraform remote command to terraform backend system 今回はほかに追加された機能についてもためしてみます。本家ブログの流れにだいたい沿って見ていきました。 * Terraform 0.9 | HashiCorp うまく訳せず理解が追いつかないところも多いですがφ(..)メモメモ Backendsについて Backendsという概念が追加されて、これが結構重要そうなので先にまとめてみます。 Backendsとはterraformで管理されたリソースの状態(作成したリソースのIPアドレスのような実際の値)をどのように読み込むか、そしてapplyでどのような処理が実行されるかを決定する機構のようです。 * Backends
7 min read
Migration from terraform remote command to terraform backend system
terraform

Migration from terraform remote command to terraform backend system

先日terraform 0.9がリリースされました。 * Terraform 0.9 | HashiCorp いくつかの面白そうな機能追加・変更がありますが、そのうちの一つとしてtfstateファイル(terraformで管理しているリソースの状態を記録しているjsonファイル)をクラウド管理するためのremoteコマンドが廃止され、代わりにbackendが実装されました。 * Backends - Terraform by HashiCorp backend以外の諸々の機能も気になりますが、今回はひとまずremoteコマンドからbackendへの移行をしてみます。 terraformのドキュメントには各メジャーバージョン毎のアップグレード手順が用意されており、0.9のアップグレード手順でremoteコマンドからbackendへの移行方法を見ることができます。 * Upgrading to Terraform 0.9 - Terraform by HashiCorp 移行方法 今までは以下のようなコマンドでtfstateファイルのクラウド管理設定
2 min read
Work around for powerline not working on Neovim
vim

Work around for powerline not working on Neovim

VimからNeovimに移行しましたがpowerlineをうまく動かせませんでした。 * Move to Neovim and dein.vim そこで、powerlineとは別にvim-airline/vim-airlineを導入してとりあえずの対処とします。 * GitHub - vim-airline/vim-airline Neovimにステータスラインを追加するパッケージはいくつかあると思いますが、vim-airline/vim-airlineはvimのためだけにpowerlineを入れたくない場合にpwoerlineが推奨しているパッケージなので選びました。 You should check out some of the Powerline derivatives. The most lightweight and feature-rich alternative is currently Bailey Ling’s vim-airline project. Features 導入方法 dein.vimでTOMLを使っている場
1 min read
Move to Neovim and dein.vim
vim

Move to Neovim and dein.vim

VimからNeovimに移行したので作業記録を晒します。 * Home - Neovim ついでにvimのプラグインマネージャもNeoBundleからdein.vimに移行しました。 Neovimとは Neovimとは、より軽量にリファクタされたVimクローンです。luajitでより拡張しやすくもなるようです。 Vimと互換性があり、Vimと全く異なったものではないし、そうしていく予定もない、あくまで既存のVimをベースにより使いやすくしたプロダクトのようです。 * About - Neovim dein.vimとは dein.vimとはNeoBundleの後継となる新しいVimのプラグインマネージャで、もちろんNeovimでも使うことが出来ます。 * GitHub - Shougo/dein.vim: Dark powered Vim/Neovim plugin manager NeoBundleと比べより高速になり、使いやすくなっています。例えば、プラグインの管理をTOMLで出来るようになっています。 また、そもそもNeoBun
4 min read
Restore tmux environment after system restart
tmux

Restore tmux environment after system restart

ターミナルマルチプレクサにtmuxを使用しています。OS再起動後も同じtmuxのペインで作業したいので、ちょっと前に教えてもらったtmux-resurrectを入れてみます。 * GitHub - tmux-plugins/tmux-resurrect: Persists tmux environment across system restarts. Tmux Plugin Managerの導入 tmuxのプラグインの追加はTmux Plugin Managerを使うと楽なのでまずはこれを入れます。 * GitHub - tmux-plugins/tpm: Tmux Plugin Manager READMEに従いtpmをインストールしていきます。 * Installation tpmのインストール。 mkdir -p ~/.tmux/plugins git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm tpmの設定を.tmux.confに追加。 # Lis
1 min read
Include configuration file of H2O
h2o

Include configuration file of H2O

このブログのWebサーバはH2Oを使っています。 * h2o - ゆるふわキャンパー 今年1月にH2Oのv2.1.0がリリースされました。新機能の1つとして、設定のincludeに対応しました。 * Release H2O version 2.1.0 · h2o/h2o · GitHub * add include config feature by i110 · Pull Request #1022 · h2o/h2o · GitHub ドキュメントは以下。 * Syntax and Structure - Configure - H2O - the optimized HTTP/2 server yamlのタグとやらを使っているみたいですね。yamlのタグ機能がどんなものなのか確認しようと思ったのですが正直良くわからず...。おいおい調べよう...。 * YAML Ain’t
1 min read
Auto renew SSL Certificate with Certbot(Let’s Encrypt)
letsencrypt

Auto renew SSL Certificate with Certbot(Let’s Encrypt)

このブログのSSL証明書はLet’s Encryptという認証局のものを使っています。Let’s Encryptの証明書を使い始めてしばらく経ちましたがいいかんじです。 * letsencrypt - ゆるふわキャンパー Let’s Encryptについて Let’s Encryptの証明書は無料で提供されており、certbotという証明書の取得や更新をコマンドで行うことの出来るツールが提供されているのが特徴です。神ってことです。 証明書の有効期限は90日(3ヶ月)と短いですが、コマンド一発で証明書を更新できるのでデメリットではありません。 また、証明書を細かくアップデートしていけるということは常に最新の暗号技術を取り入れた証明書を(Let’s Encryptが追随してくれているので)使えるということであり、度々世間を騒がせている弱い暗号方式を使った証明書によって起きる脆弱性に対しても運用上強いはずです。 certbotをインストールする Let’s Encryptの証明書はcertbotを通じて取得、更新を行うので、まずはcertbotを導入します。
6 min read
Install powerline plugin to tmux and Vim
tmux

Install powerline plugin to tmux and Vim

最近開発マシンが新しくなり環境がリセットされ、さっぱりしました。さっぱりしましたが、tmuxとvimとzshは前の環境と同じフィーリングで使いたいです。 私はpowerlineを使っているのでzshはまあ良いにしてもtmuxとvimはdotfileを置くだけでは環境が再現できぬ! というわけでtmuxとvimのpowerlineの導入方法を記録しておきます(毎回導入方法忘れる&昔とだいぶ変わった...)。 細かいpowerlineのカスタマイズは置いておいて、とりあえず最低限powerlineを使えるようにします。 powerlineのインストール(OS X) powerlineそのもののインストールをします(OS X)。 * Installation on OS X — Powerline beta documentation pip install powerline-status powerlineで使うフォントのインストールをします(楽だ!以前は自分でビルドしてた)。 * GitHub - powerline/fonts: Patch
1 min read
Let's Encrypt automatic update failure
letsencrypt

Let's Encrypt automatic update failure

Let's Encryptからこんなメールが来ていました。 Your certificate (or certificates) for the names listed below will expire in 19 days (on 21 Mar 17 04:30 +0000). Please make sure to renew your certificate before then, or visitors to your website will encounter errors. lorentzca.me ... 個人サーバで持ってるドメインのSSL証明書はLet's Encryptのものを使っており、certbotで自動更新しています。certbotは証明書の期限が1ヶ月を切ると証明書をアップデートしてくれます。 なので上のメールのように証明書の期限が残り19日と言うのは異常事態なのです。 Let's Encryptで管理している証明書は4つあり、そのうちの1つで更新がうまく行っていないようです。
3 min read
Move existing 1Password to license version
1password

Move existing 1Password to license version

1PasswordをApp Storeで購入した買い切り版からライセンス版に移行しました。 この2つの1Passwordの違いや、移行方法についてメモしておきます。 買い切り版とライセンス版の違い 違いについて全て把握しているわけではありませんが、以下のような違いがあります。 買い切り版 ライセンス版 ブラウザでの管理ページアクセス(1passwordアカウントの利用) ✕ ◯ 2つ以上の保管庫(Vault)の利用 ○(たぶん) ◯ iCloudやDropboxでのデータ共有 ◯ ✕ 1passwordアカウントでのデータ共有 ✕ ◯ ※ iCloudやDropboxでのデータ共有はライセンス版ではできないですがそもそもする必要がなくなるということなので問題ない 値段の違い * 買い切り版(OSX版): 約7,000円 * ライセンス版: 約300円/月 * ライセンス版(Familys): 約400円/月 ライセンス版のプランの比較は以下を参照(個人なら無印ライセンスで充分)。 * Pricing - 1P
4 min read
Node.js client library for Google BigQuery
nodejs

Node.js client library for Google BigQuery

先日Google Cloud Functionsを試したところ、まだNode.jsしか対応していないことがわかりました。 * Hello Google Cloud Functions やりたいこととして、Google Cloud FunctionsからGoogle BigQueryにためているGCP Billingデータを取得したいというものがあるので、今回はNode.jsでGoogle BigQueryのAPIを叩くところまでやってみます。 GoogleがBigQuery用のクライアントライブラリをNode.jsでも提供しているので、それを使います。 準備 ドキュメントをみながら進めます。 * BigQueryクライアントライブラリ - Node.js まずgcloudコマンドを使ってGCPにログインしておきます。 gcloud beta auth application-default login 次にnpmコマンドでGoogle BigQueryのクライアントライブラリをインストールします。 npm install --save @
1 min read
Impact of Cloudflare's incident on DigitalOcean
digitalocean

Impact of Cloudflare's incident on DigitalOcean

先週(2017/02/03)、Cloudflareでインシデントが発生しました。 * Incident report on memory leak caused by Cloudflare parser bug これを受けて、DigitalOceanからCloudflareのインシデントによるDigitalOceanへの影響について説明する記事が公開されました。 * DigitalOcean, Your Data, and the Cloudflare Vulnerability 先に結論 DigitalOceanから顧客データが流出する事態には(DigitalOceanのセキュリティチームによる調査によると)至っていない。 Cloudflareで何が起きたのか インシデントの記事で詳細まで語られていますが、以下のような経緯がありインシデントが発生したようです(訳が雑・間違っている可能性有り ><)。 何が起きたか HTTPクッキーやauthenticationトークン、HTTP POSTボディの内容などが検索エンジンにキャッシュされてしま
2 min read
Hello Google Cloud Functions
gcp

Hello Google Cloud Functions

AWSのLambda的なものがGoogleにもあった(α版)ので使ってみました。 α版への利用登録 Google Cloud Functionsはまだα版なので利用登録が必要です。 * Google Cloud Functions - Alpha Sign Up 1月前半に申請したのですが、2月後半に「あなたのメールアドレスをホワイトリストに追加したので使ってどうぞ」的なメールが来て使えるようになりました。 APIを有効にする GCP管理画面のAPI Managerから有効にします。非公開APIなので、ホワイトリストに登録されてないと表示すらされないのかな? gcloudコマンドからGoogle Cloud Functionsを使えるようにする gcloudコマンドからα版の機能を使うためのコンポネントをインストールします。 functionをGoogle Cloud Functionsにデプロイするために使います。 gcloud components install alpha Hello worldを実行する
5 min read
Measure typing speed of ErgoDox EZ and usual keyboard
ergodox

Measure typing speed of ErgoDox EZ and usual keyboard

ErgoDox EZを借りて4日経ちました。4日間、業後の2時間くらいをErgoDox EZで作業してブログ記事を書くなどして使ってきました。 * ergodox - ゆるふわキャンパー キーマップもまあデフォルトよりは自分にあったものにできたし、そろそろErgoDox EZを使うことでどれくらいタイピングがいい感じになったか、ベンチマークを取ってみます!! ベンチマークの方法 以下のテキストを打ち込んでどれくらいの時間がかかったかをtimeコマンドで計測してみます。 我に求めよ。 されば汝に諸々の国を嗣業として与え 地の果てを汝のものとして与えん。 汝、黒鉄の杖を持て彼らをうちやぶり 陶工の器物の如くに打ち砕かんと。 されば汝ら諸々の王よさとかれ、 地の審判人よ教えを受けよ。 恐れを持て主に仕え、おののきをもて喜べ。 子に接吻せよ。 おそらくは彼は怒りを放ち、 汝ら途に滅びん。 其の怒りは速やかに 燃えゆべければ。 全て彼により、頼むものは幸いなり。 timeコマンドの結果のフォーマットは以下。 $ echo $TIMEFMT %J %U user
2 min read
Compile ErgoDox keymap
ergodox

Compile ErgoDox keymap

この前はErgoDox EZのキーマップをGUIで設定しました。 * Trying out ErgoDox EZ 今回はErgoDox EZのキーマップをGUIではなく、自分でコンパイルしてみます。 TL;DR 1. ファームウェアリポジトリをダウンロード 2. ここに自分用のディレクトリ作成 3. 作成したディレクトリに自分のkeymap.cを設置 4. /でmake keyboard=ergodox keymap=自分用のディレクトリ名を実行 5. .build/ergodox_ez_自分用のディレクトリ名.hexが作成されるのでTeensy Loader ApplicationでErgoDoxに流し込む 完。 準備 まずファームウェアのリポジトリをダウンロードします。 * GitHub - qmk/qmk_firmware: keyboard controller firmware for Atmel AVR USB family ErgoDox EZのデフォルトキーマップは以下にあるのでこれを参考にします。
2 min read
Push Ergodox's keymap
ergodox

Push Ergodox's keymap

先日ergodoxを借りました。 * Trying out ErgoDox EZ 早速キーボードレイアウトを変えてみました。 とりあえず既存のキーに近い形にしたかったので小指の位置にCtrlキーを置いたりコマンドキーの位置をいじりました。 あと、いちいちピンでリセットボタンを押すのは面倒なので、レイヤー2にリセットキーを置いています。レイヤー2に置いたのはうっかりリセットキーを押してしまうのを防ぐためです。 あと、Alfredを一発で起動できるようにしてみました。Alt+Spaceで起動しているので、以下のようなキー設定を割り当てています。便利!! Layoutをプッシュする Layoutのコードは以下のように「Download this layout」ボタンから入手できます。 中身はこんな感じ。 #include "ergodox.h" #include "debug.h" #include "action_layer.h" #include "version.h" #include "keymap_german.h
3 min read
Trying out ErgoDox EZ
ergodox

Trying out ErgoDox EZ

同僚にErgoDox EZ借りたぞ!!!!!!!! ErgoDoxとは エルゴノミクスキーボードの一種です。エルゴノミクスとは人体工学と訳され、人体の仕組みにあった機械や椅子などを研究する学問です。 要するにErgoDoxとは人間の形にあったキーボードです。 ほかに有名なエルゴノミクスキーボードはKinesis等が挙げられます。 ErgoDoxとErgoDox EZ ErgoDoxはそのハードウェア設計からファームウェアまで全てがオープンソースで公開されており、非常に自由度が高いです。その分ハードルが高く、それならと最初から完成品として提供するお手軽なプロダクトができました。それがErgoDox EZ。 * はじめてのErgoDox EZ購入ガイド - Qiita * ErgoDox EZ: An Incredible Mechanical Ergonomic Keyboard EZ = イージー = Easy (ってことなのか?) ファームウェアについて ErgoDoxを制御(キーマップを定義したりとか)するためのファームウェア
4 min read
Notify Slack when commented on DISQUS
blog

Notify Slack when commented on DISQUS

このブログのコメント欄はDusqusを使っています。 * Install AddThis and DISQUS to Ghost 自分で記事の内容に関する補足を雑に追記するのに使ったりしているのですが、稀に自分以外の人からコメントをいただけることがあります(ありがたい)。 コメントされると一応メールに通知が来るのですが、いまいち気づきにくいのでSlackと連携させてみます。 Zapier ZapierというIFTTTのような異なるウェブアプリを連携させるサービスを使ってみます(デフォルトでSlackとDISQUSを連携させられそうだったので)。 * The best apps. Better together. - Zapier - Zapier IFTTTとの大きな違いは、3つ以上のウェブアプリを連携させられる点でしょうか。 ただし無料プランでは連携は2つまでです。 やってみる SlackとDISQUSを連携させたいので、2つを選択します。 選択したウェブアプリでできる既存のZaps(Zapsと呼ぶらしい)を探しま
2 min read
Arukas provider with Terraform
terraform

Arukas provider with Terraform

以前Windows環境で実行できないという理由で消えてしまったterraformのArukasプロバイダですが、terraform v0.8.7で無事復活したようです!(コメントで気づいた!) * terraform v0.8.3でArukasがサポートされたがv0.8.4で削除されていた 早速使ってみます。 準備 まずArukasのトークンとシークレットキーを取得します。 ドキュメントを見ると環境変数からトークンとシークレットキーを読み込ませられるので設定しておきます。 export ARUKAS_JSON_API_TOKEN=XXXXXXXX export ARUKAS_JSON_API_SECRET=YYYYYYYY 使ってみる 以下のようなtfファイルを作成。 resource "arukas_container" "hello_arukas" { name = "hello_arukas" image = "nginx:latest" instances = 1 memory = 256
5 min read
Sammy The Shark ASCII Art
digitalocean

Sammy The Shark ASCII Art

私のこのブログはDigitalOcean上で動いています。 * digitalocean - ゆるふわキャンパー DigitalOceanには可愛らしいサメのマスコットキャラクターがいて、名前を「Sammy The Shark」(サメのサミー かな?)といいます。 今のサミーはモデルチェンジ後の姿で、以前はもっとどんくさそうなサメでした。 * Sammy The Shark Gets A Birthday Makeover From Simon Oxley サミーの物販もあります。ステッカー欲しい!!! * Accessories - DigitalOcean Store サミーはマスコットキャラクターの割には意外に露出がなく、DigitalOceanの公式トップページにも存在しないし、ブログにも稀にしか出てきません。 その割には風船で飛んだり、ロケットで飛んだり、アクティブな一面があります。 サミーのアスキーアート そんなサミーですが、私は結構好きなので、サーバにログインした際に表示させてみようと思います。 まずサミーのアスキ
2 min read
DigitalOcean has released Load Balancers
digitalocean

DigitalOcean has released Load Balancers

昨日、DigitalOceanからマネージドロードバランサの提供が始まりました! * Load Balancers: Simplifying High Availability ロードバランサの提供はロードマップでも発表されていましたね。思ったより早かった。 * DigitalOcean Roadmap 2017 今まではロードバランサは自前で用意し、ロードバランサの冗長化をFloating IPsを使って行う、というような紹介に留まっていました。 * How To Use Floating IPs on DigitalOcean | DigitalOcean マネージドなロードバランサを使用することでだいぶ楽になりそうですね。 特徴 記事のままですが、以下のような特徴があります。 * TCP、HTTP、HTTPSを負荷分散してくれる * リージョンをまたぐことは出来ない * HTTPSを使う場合はロードバランサまでか、そのバックエンドまでSSLするか選べる * バランサのアルゴリズムを選択できる *
2 min read
Change H2O log format to LTSV
bigquery

Change H2O log format to LTSV

h2oのログをtd-agentを使ってGoogle BigQueryに送っています。 * Send h2o log to BigQuery 今まで私はtd-agentのtailプラグインの設定で、フォーマットを愚直に正規表現で設定していました。 format /(?[^ ]*) (?[^ ]*) (?[^ ]*) (?[^\]]*) (?[^ ]* +\S* +\S*) (?[^ ]*) (?[^ ]*) "(?[^\"]*)" "(?[^\"]*)"/ 課題として、以下の不満がありました。 * 見辛い * h2oのログフォーマットを変えたとき追従して正規表現を書き直さないといけない そこでh2oのアクセスログのフォーマットをLTSVに変更してtd-agentでltsvフォーマットを使えるよ
2 min read
Validate RSS feed
ghost

Validate RSS feed

記事を更新したらslackのRSSアプリでチャンネルに投稿するようにしていたのですが、いつの間にか動いていなかったので調べたところ、RSSが壊れていました。 対応めんどくさいな〜と思っていたらどの部分が壊れているのかわかりやすく表示してくれるサイトがあるので使ってみました。 * Feed Validator for Atom and RSS どうやらMackerel Meetup #9参加レポの記事に不正な文字が入っていたっぽい。 該当箇所を修正すると無事直りました。便利!
1 min read
highlight.js with Ghost
ghost

highlight.js with Ghost

今までコードブロックに書いたコードのシンタックスハイライトはPrismを使っていました。 * Add syntax highlight to Ghost Prismを使うには以下の手順が必要でした。 1. テーマとハイライトしたい言語を選択して、ダウンロードボタンでprism.jsとprism.cssをダウンロードする 2. content/themes/casper/assets/js/、content/themes/casper/assets/css/以下に設置する 3. default.hbsのヘッダでファイルを読み込む このテーマのファイルをいじらなくてはいけない点に不満を持っていました(テーマをアップグレードしたり、別のテーマに変えると消失してしまうので)。 また、ハイライトを有効にする際、language-*と書かなければいけないのも若干面倒でした。 Prism自体は、見た目もきれいで好きなんですけどね...。 といわけで、少なくともヘッダに外部から読み込んで使えるようなもの(CDNでjsを提供しているところ)は無いか探したところ、hig
2 min read