Mt.Kita

Mt.Kita writes 北岳 in Kanji. 北岳 is pronounced as kitadake. This mountain means the north mountain. But the place is the Southern Alps. Mt.Kita is located in the northern part of the Southern Alps. Mt.Kita is the second highest mountain in Japan. However, many Japanese people don’t know this. It is because it exists deep in the mountain. Mt.Kita has a height of 3193m, but it can not be seen very much from the city....

<span title='2019-05-15 23:02:44 +0900 +0900'>5月 15, 2019</span>

fastlyでVary headerをきれいにする

Vary header の内容が冗長性のあるときがある. 例えばこんな感じ Vary: User-Agent, Accept-Encoding, User-Agent とか. こういうのを Vary: User-Agent, Accept-Encoding か Vary: Accept-Encoding, User-Agent したい. かぶってるのを消して追加してしまえば良い. sub vcl_fetch { if (beresp.http.Vary ~ ".*User-Agent.*User-Agent.*") { set beresp.http.Vary = regsuball(beresp.http.Vary, "(,\s*)?User-Agent", ""); set beresp.http.Vary = regsuball(beresp.http.Vary, "^(\s)?(,(\s+)?)+", ""); } if (bresp.http.Vary ~ "^(\s)*$") { set bresp.http.Vary = "User-Agent"; } else { set bresp.http.Vary = bresp.http.Vary + ", User-Agent"; } }

<span title='2019-05-15 07:47:42 +0900 +0900'>5月 15, 2019</span>

gin製のアプリケーションをランダムに止める

私はGo言語でapiを実装するときしばしばgin-gonic/gin を利用します. マイクロサービスとかでapiが死んだときの検証は結構たいへんです. なのでapiが死んだ状態を再現すべく, gin製のアプリケーションがランダムに 404 とか 503 をランダムに返せるようにするMiddlewareを作成した. alcoholics カオスモンキーとかみたいな利用用途を考えている.

<span title='2019-05-06 07:37:09 +0900 +0900'>5月 6, 2019</span>

goenvでインストールしたgoのgopathが$HOME/go/$GO_VERSIONになる

たとえばこんな感じ. $ go env | grep GOPATH GOPATH="/Users/johndoe/go/1.12.0" この仕様になったのに気がついたのはgoの1.12が出た頃だ. 別にgoのversionごとにGOPATHを分けたいわけではないので $HOME/go にGOPATHを戻そうと思う. goenv/libexec/goenv-execでGOPATHを制御しているようで, GOENV_DISABLE_GOPATH=1 を指定すると以前のようにGOPATHを $HOME/go にすることができる.

<span title='2019-03-26 23:38:52 +0900 +0900'>3月 26, 2019</span>

鹿児島旅行 2019/03/23-24

1泊2日で鹿児島を旅した. 開聞岳行こうと思ったが思ったより遠かった. 空港から80kmくらいあった. 鹿児島大きくない? というわけで予定を変更して桜島に行った. 桜島って陸続きだけどなんで島なんだって思っていた. もともとはちゃんと島だったらしい. 大正3年の噴火により大隅半島とつながったらしい. 自然の力ってすごいな. そもそも噴火だけで山が育つの想像できない. 桜島から鹿児島市内へはフェリーを利用した. いつか生きているうちに入山規制が解除されて登れるようになったらいいなと思いながら桜島をあとにした. 一日目の宿泊先は霧島高原国民休養地を利用した. 季節が季節ということもありそこまで混み合ってなくキャンプすることができた. テントは例の如くムーンライトテント2型を利用している. 山岳テントとして利用するには重いが今回みたいにレンタカーを利用するときには特に問題はない. ちなみにレンタカーは想像の3倍くらい社用車だった. 加速よくて運転しやすかったが. 旅行感あまりない. クリックで拡大 鹿児島は南国だから温かいだろうと思っていた. 予想は裏切られ普通に寒かった. mont-bellの化繊の#5の寝袋持っていったら辛かった. 良い子は憶測で行動してはいけない. ガスバーナーでお湯沸かしながら暖を取った. テントの中で使ってるけどちゃんと換気はしてるからね. メーカー的にやっちゃダメだけどやるときはちゃんと換気して自己責任だよ. 最初は前室でやってたけど寒すぎて結局室内でやってしまった. クリックで拡大 お湯を沸かしてプラスチックのボトルに入れて湯たんぽにした. やけどしないように着替えの衣類でくるんで寝袋に入れると寝袋のlimit温度を少し下回っても寝れる. そんな感じで夜を明かすことに成功した. 何度もいうが良い子はちゃんと気温を確認しよう! 二日目は韓国岳へ行った. クリックで拡大 8時半から上りはじめて100分ほどで山頂についた. 大浪池手前までは石の階段で大浪池のあとは木道及び木製の階段が多い山だった. 階段は結構臀部の筋肉を使うのでつらい. とは言えども辛いことばかりではない. 韓国岳は景色が素晴らしい. 半分くらい登ると青い大浪池がある. 山頂からは大浪池と桜島がよく見える. 東側には新燃岳と高千穂峰を望むことができる. 時間があったら高千穂峰も登りたかったが今回は時間が不安だったので見送った. 高千穂峰の形いいものだ. 手前の新燃岳も噴気をあげてて地球の力を感じて良い. 成り立ちが火山の山は森林限界が低く景色が開けてるので気持ちいな. 樹木が覆い茂って生き物の気配を感じる山も良いが違った良さがある. 硫黄臭さや噴気で死を感じることもあるが大地の力強さを感じられる. そういった点で韓国岳は良かった. 次鹿児島を訪れるときは, 高千穂峰に登りたいし遠くてやめた開聞岳にも行きたい.

<span title='2019-03-25 23:51:24 +0900 +0900'>3月 25, 2019</span>

vgo使うとき二段階認証を有効にしたgithubアカウントでプライベートリポジトリのパッケージを利用する

~/.gitconfig に次の内容を記述する $ cat ~/.gitconfig [url "git@github.com:"] insteadOf = https://github.com/ GIT_TERMINAL_PROMPT=1 をつけて go get する $ go get プライベートリポジトリのパッケージ

<span title='2019-02-07 00:36:24 +0900 +0900'>2月 7, 2019</span>

GoのプロジェクトをDockerにするときの設定

GoのプロジェクトをDockerで動かすことがあると思う. 知らんけど. まぁきっとあるんだろう. ちなみに私は何度かある. 私がよく使うDockerfileの設定を書いておく. Dockerのimageをbuildするときに気を使うことが一つだけある. それはimageのサイズを小さくすることである. 何も考えずにGoのプロジェクトをbuildすると多分こんな具合だろう. FROM golang:latest WORKDIR /go/src/hogehoge.com/who/bar COPY . . RUN set -e \ && go build -o /bin/bar main.go WORKDIR / RUN set -e \ && rm -rf /go/src CMD ["bar"] 流石にここまで雑に書くことはなかなか無いだろうが, 一応ビルドして掃除までしている. だが小さくするには不十分である. まずGoのDocker imageがそれなりに大きい. 2018-12-12のlatestの段階で774MBある. $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE golang latest df6ac9d1bf64 3 weeks ago 774MB Goはシングルバイナリのビルド物を生成する. なので実行時にコンパイラは必要ない. GoのbaseになってるDocker imageはDebianである. なのでGoのdocker imageでバイナリを生成してDebianのimageにうつしてやればいいじゃんてなるだろう. Debianのlatestのimageは101MBである. 小さいように見えるがまだダイエットが可能である. alpine Linuxというもっと小さいDocker imageが用意されている....

<span title='2018-12-12 21:56:55 +0900 +0900'>12月 12, 2018</span>

速度制限のできるmessage queueを試験的に作った

12/7 (金) に長野県がやっているときどきナガノの制度を利用して長野県へ行ってきた. 長野県にはよく行く(今年20回くらい?)のだがときどきナガノを利用するのを忘れて普通に行ってしまうミスをしてしまう. 今回は忘れずに利用することができた. 行った場所は八ヶ岳とかの拠点で有名な茅野(今年5回目くらい)で茅野駅直結のワークラボ八ヶ岳を利用した. ここのコワーキングスペースのいいところは駅から近いのと御飯食べれるところが近い, 広いしwi-fi安定してるし人が少なくて静かだということである. とりあえず良い. 多分また利用する機会があるので良さはその時に書くとして, そこで何を作っていたかと言うとmessage queueを実装していた. queue worker式のシステムを構築するとき全体の処理速度を制限したい時がある. そのときworker側で制限するのは大変である. worker側でやるとするとworker同士が通信して誰かが全体の速度計算してみんなにこれ以上通信しないでねって教える必要がある. それは大変そうだし作りたくない. なのでqueueのほうで制限することにした. 作ったものはvalveMQというもので, 裏側がmysqlになっていてアプリケーション側はスケールすることができる. まだ試験的な実装なので設定項目とかは作り込んではいない. そういえばこれだけは言っておきたい. 八ヶ岳Octetのソフトクリームは絶対食べるべき.

<span title='2018-12-11 00:00:00 +0000 UTC'>12月 11, 2018</span>

三つ峠登山

だいぶ書くのが遅くなってしまったが先週の土曜日, つまるところ11/17にヤマノススメでおなじみの三つ峠に登ってきた. 今年の三ツ峠は二回目である. 前回は天気が悪く山頂から何も見えなかったが今回はいい感じに晴れてくれた. コースは登りは三つ峠駅から登り, 下山は河口湖方面へ下った. ヤマノススメの聖地ということもあり三つ峠駅でヤマノススメでお馴染みのキャラクターたちが出迎えてくれた. ヤマノススメではひなたがあおいに富士山をサプライズで見せる計画で登ってたけど三つ峠の駅のホームから富士山見えるし登山道からもいたるところから見えるし『これは隠し通すの無理だわwww』ってなった. これは股のぞきからの富士山である. 結構気温も寒く紅葉はすでに終わったものと思っていたがいい感じに紅葉していた. ヤマノススメであおいちゃんが登ってるとき闇落ちしていたが, 三つ峠の駅の方から三つ峠に登ると結構急登が続く. あおいちゃんは運動苦手な子設定だが実際運動苦手な子が登るとたしかに辛いと思う. 八十八大師のあたりまで行くと急登がほぼ終わるので行く人は頑張ってください. ちなみに日向ぼっこしてるみたいで可愛い. 山頂からは富士山が見えるのはもちろんのこと, 南アルプス, 八ヶ岳などが一望できた. せっかくめっちゃよく見えたのに南アルプス, 八ヶ岳方面の写真を取り忘れた… ちなみに富士山は近いだけあってめちゃくちゃでかい. 写真は山頂からじゃないけど. ヤマノススメでも言及されていたが三つ峠の屏風岩はクライミングの方で有名である. 自分はまだ技術がないので登れないがいずれは屏風岩も挑戦したい.

<span title='2018-11-23 00:00:00 +0000 UTC'>11月 23, 2018</span>

Go言語でjsonとかyamlのvalueだけ暗号化する

これは結構前に作ったネタなんだけども, 何らかのアプリケーションをつくったとき設定をjsonだったりyamlで管理することがある. そのとき秘密情報は隠したいみたいな案件があったとする. 設定ファイルをまるごと暗号化してもいいが, jsonとかだとkeyは暗号化せずvalueだけ暗号化しておいたほうが管理上都合がいい時がある. というわけでcryptexというものを作った. cryptexはmap型のvalue部分のみを暗号化するパッケージである. cryptex自体がサポートする暗号化の手法はrsa暗号とAWSのKMSを利用した暗号である. type Encryptor interface を満たす実装をするとほかの暗号方式にも対応が可能であるように実装してある. 暗号化したり暗号化された情報を復号する機能の他にコマンドラインツールを実装したときに使えるように less で内容を確認する機能や任意のエディタを立ち上げ(デフォルトはnano)て編集する機能を提供している. 編集したりlessで確認するときはユーザーに暗号化と復号を意識しなくてもできるようにしている. 質問やバグ報告はissueから受け付けます. 英語でも日本語でも良い.

<span title='2018-11-16 00:00:00 +0000 UTC'>11月 16, 2018</span>