Goのvet, lint, impotsなど
vet
vet - The Go Programming Language より
コンパイラで見つけられないエラーを検出することができます。
調べててよく出てくるのはfmt.Printf()
で適当じゃないフォーマットを指定している場合など
lint
いわゆるlint tool。lintは構文チェッカーとか言われることがある気がするけど、goの場合はfmtもあるしこっちもコンパイラで怒られないしかも実行はできるもので好ましくないものをチェックするものと受け取った。
公開しているメソッドなのにコメントがなにも書いてないとかそういうのを指摘してくれる
goimports
これはimport
周り。
importしてるけど使ってないものを消したり、使ってるけどimportしていないものを追加してくれたりする。便利
しかし、saveする度に走らせるようにしていて、saveを細かくする癖があるとこれから使おうと思ってimport書いておいたものを消されたりする。
importはあとから書く(importしてもらう)気持ちでいるのがよさそう
kotlinのサンプルプロジェクトまとめ(android以外中心)
JetBrainsが作ったプロジェクトたち
maven版とgradle版がある。 中が一つ一つプロジェクトになっていてgradleもkotlinもよく分かっていない身にはとてもありがたい。 ここのを持ってきて拡張していけば色々作れそう。
実用的に広げられそうなのが多くてオススメかな
- 単純なhello world
- いくつものandroidアプリ
- javaとkotlinの混成
Spring bootのプロジェクト
Spring bootをkotlinで使うとしたらというサンプル。永続化にはJPAを使っている
Ktorのプロジェクト
Kotlinのチームが開発してるということで興味深いKtorを使ったサンプル。 Ktorチームはmavenが好きなのかmavenを使ってる。 mavenはほとんど使ったことないので読むの大変。
AWS ALBってなに?
ELBとALBの違いってなんだろう。 【新発表】AWS アプリケーションロードバランサー | Amazon Web Services ブログ を読みながら軽く調べたことを書いておく。
ELBはネットワークレイヤー、ALBはアプリケーションレイヤー
ロードバランサーは一般的にレイヤー4 (ネットワーク)かレイヤー7 (アプリケーション)で実行されます
OSI参照モデルなどで言うレイヤーの違いがあるわけですね。
アプリケーションロードバランサーはHTTPヘッダーにアクセスし、リクエストを異なるバックエンドにルーティングすることができます。
実際に違いが起こるのはこういうところ。ヘッダーにアクセスするのはネットワークレイヤーでは出来ないはず。
なので他にもURLのパスでグルーピングして /api
以下を別グループに分けたりすることが出来る。
他にもたくさん違いはありそうだが、とにかくELBとの違いはレイヤーでそれにともなって出来ることが変わったということのよう。
私はインフラには弱いのだけどせめてどういうものかは知っておこうと思った。
PythonのREPLでファイルを読み込む
file.py
の中身を読んでPythonのREPLを呼び出す方法
$ python -i file.py