Goのvet, lint, impotsなど

vet

vet - The Go Programming Language より

コンパイラで見つけられないエラーを検出することができます。

調べててよく出てくるのはfmt.Printf()で適当じゃないフォーマットを指定している場合など

lint

いわゆるlint tool。lintは構文チェッカーとか言われることがある気がするけど、goの場合はfmtもあるしこっちもコンパイラで怒られないしかも実行はできるもので好ましくないものをチェックするものと受け取った。

公開しているメソッドなのにコメントがなにも書いてないとかそういうのを指摘してくれる

goimports

goimports - GoDoc

これはimport周り。 importしてるけど使ってないものを消したり、使ってるけどimportしていないものを追加してくれたりする。便利 しかし、saveする度に走らせるようにしていて、saveを細かくする癖があるとこれから使おうと思ってimport書いておいたものを消されたりする。 importはあとから書く(importしてもらう)気持ちでいるのがよさそう

kotlinのサンプルプロジェクトまとめ(android以外中心)

JetBrainsが作ったプロジェクトたち

maven版とgradle版がある。 中が一つ一つプロジェクトになっていてgradleもkotlinもよく分かっていない身にはとてもありがたい。 ここのを持ってきて拡張していけば色々作れそう。

実用的に広げられそうなのが多くてオススメかな

github.com

Spring bootのプロジェクト

Spring bootをkotlinで使うとしたらというサンプル。永続化にはJPAを使っている

github.com

Ktorのプロジェクト

Kotlinのチームが開発してるということで興味深いKtorを使ったサンプル。 Ktorチームはmavenが好きなのかmavenを使ってる。 mavenはほとんど使ったことないので読むの大変。

github.com

AWS ALBってなに?

ELBとALBの違いってなんだろう。 【新発表】AWS アプリケーションロードバランサー | Amazon Web Services ブログ を読みながら軽く調べたことを書いておく。

f:id:ocactus:20170103110016p:plain

ELBはネットワークレイヤー、ALBはアプリケーションレイヤー

ロードバランサーは一般的にレイヤー4 (ネットワーク)かレイヤー7 (アプリケーション)で実行されます

OSI参照モデルなどで言うレイヤーの違いがあるわけですね。

アプリケーションロードバランサーはHTTPヘッダーにアクセスし、リクエストを異なるバックエンドにルーティングすることができます。

実際に違いが起こるのはこういうところ。ヘッダーにアクセスするのはネットワークレイヤーでは出来ないはず。

なので他にもURLのパスでグルーピングして /api 以下を別グループに分けたりすることが出来る。

他にもたくさん違いはありそうだが、とにかくELBとの違いはレイヤーでそれにともなって出来ることが変わったということのよう。

私はインフラには弱いのだけどせめてどういうものかは知っておこうと思った。