GAE Go1.11 のdev_appserver.pyでホットリロードが効かないとき

Go

GAE Go1.11 の dev_appserver.py でホットリロードが効かないなーというとき、dev_appserver.py実行時に以下のメッセージが出力されてました。最後の1行が出力されているとホットリロードが効きません。 $ dev_appserver.py dev.yaml INFO 2019-09-22 10:30:…

SQLアンチパターン・ジェイウォークのクエリをシェルでやる

SQLアンチパターンという本があります。 その本の1章がジェイウォーク(信号無視)。ジェイウォークで紹介されているようなデータがtsvファイルとして手元にある場合に、SQLではなくシェルでなんとかするお話です。 ジェイウォーク tsvファイル SQL vs シェ…

MQTTサーバーを実装しながらGoを学ぶ - その12 Contextを使ったgoroutineの停止

前回、別goroutineで発生したエラーハンドリングをしました。具体的にはサブスクライバへの書き込みでエラーが発生した場合にサブスクリプションの削除処理するようにしました。今回は、 context.Context を使ってgoroutineを停止することで、クライアントが…

MQTTサーバーを実装しながらGoを学ぶ - その11 goroutineのエラーハンドリング, map, goroutineセーフ

前回の続き。別のgoroutineで発生したエラーをerror channelを使ってハンドリングしてみたいと思います。ハンドリングの処理でmapを使ったのですが、goroutineセーフにするため sync.Map を使ってみました。 目次。 handleSub でエラー 別goroutineを受け取…

MQTTサーバーを実装しながらGoを学ぶ - その10 type, "chan<-"と"<-chan"

前回、goroutine, channel, selectを使って Broker を実装しました。この Broker をサーバーで利用し、MQTTでメッセージを配送してみます。 その前に <-chan chan<- []byte という型が読みづらいので type を使って対応します。その後、読み書き可能なchanne…