甲州高尾山に登った

6/2 に甲州高尾山に登った. 東京都の高尾山のように駅からアクセスできる山である. 全行程はおおよそ5時間くらいで勝沼ぶどう郷からそのまま歩いて行けるのでとても登りやすい山といえる. 高低差は660mほど累積標高差は1000m弱で登山をはじめて間もない人には少し大変かもしれない. ルートによっては土砂崩れや倒木により道が見えない場所があるのでGPSで地図を表示させながら行かないと簡単に道に迷える箇所があるので注意が必要である. 甲州高尾山は1100mほどの低山であるが景色はあなどれない. 山頂付近の尾根は麓の市街や南アルプスを見渡せ, 空中散歩をしている気分にさせられる. はじめての稜線歩きをするには良い山であると思う. 下山は大善寺の方のルートを利用した. 嘆かわしいことに大量の太陽光パネルが並んでいる. 土砂崩れとか心配になるがどうなのだろうか. 環境問題について一瞬考えさせられる. 勝沼ぶどう郷はワインの産地である. 私は下山後ぶどうの丘へ行った. ぶどうの丘は温泉施設もあり, 露天風呂が素晴らしいものだった. 勝沼のぶどう畑を見下ろしながら湯船につかれるのである. 登山の疲れを温泉で癒やしたあとぶどうの丘でワインを楽しんだ. 勝沼ぶどう郷は山好きにもワイン好きにもいい街だった.

6月 6, 2019

初心者ほど登る山を自分で決めたほうがいいと思う

山を登るきっかけはいろいろあると思う. たとえば人に誘われたり, 健康のためにのぼったり. 私は人に誘われて登り始めた. はじめのうちは人が計画した登山計画をもとに登山をしていた. 受動的な登山だった. ちゃんと登山計画を自分で立てたのは2年目からだった. 自分で登る山を決めると何が良いか? まず, 興味のある山を自分で見つけられる. どんな山でもいい. 以前登った山から見てきれいだった山. 近場で行きやすい山. 人に聞いてよかったと言ってた山. 少なくとも人に計画を決めてもらうよりしっかり興味が山に向く. 人が立てた計画による登山は, 山に向かう移動から登山だが, 自分で計画する登山は工程を考えるところから登山である. 登る山を決めて, 交通手段をきめて何時に下山を決めてなど そこからすでに楽しい. 地図を見ながら山のことを想像するだけで楽しく, 実際山に行くと想像と照らし合わせながら登るのでより印象深い登山になる. ヤマノススメでひなたがあおいに登る山を決めさせる回がある. あのひなたの行動は初心者であるあおいを山にハマらせるにあたって合理的であると言える.

6月 5, 2019

trivyの利用を開始した

最近話題になってる脆弱性検知ツールのtrivyを利用した. 流れてきには次のような感じである. docker imageのbuild trivyでのscan okだったらregistryにpush trivyはそのままスキャンすると検出してもしなくても exit code として 0 を返す. CircleCI上で検出したときに落とす時は 0 以外を返す必要がある. なので --exit-code 1 を指定する. 好みの問題ではあるが重要度の低い脆弱性は一旦出さないようにしている. --severity HIGH,CRITICAL のように指定すると HIGH , CRITICAL のみを検出できる. OSに入ってるlibraryに脆弱性が存在しているがまだ対応しているバージョンがないというときがある. そういうものを出されても対応ができないので検出しないようにしている. --ignore-unfixed と指定することで対応バージョンが存在しないものを検出結果から除外できる. 実際に利用しているオプションはこうである. $ trivy --exit-code 1 --quiet --severity HIGH,CRITICAL --auto-refresh --ignore-unfixed -c --auto-refresh $DOCKER_IMAGE_REPO:$CIRCLE_BRANCH

5月 29, 2019

燕岳に行った

5月の18, 19日に燕岳へ行ってきた. 過去に5回ほど行こうとしたのだがなかなか天気に恵まれずやっと行くことができた. 行きはアルペン号に乗って行った. アルペン号の座席数は21席ほどでそこまで大きいバスではなかったが足は伸ばしやすくそれなりに寝ることができた. まぁ隣の席に人がいなかったというのも大きい. 竹橋の毎日新聞社から乗車した. 毎日新聞社の建物はコンビニが入っているので, 行動食を入手することもできた. バスは23時に出発し翌日の朝5:30ごろに中房温泉に到着した. 登山届はネットから提出していたのでそのまま到着とともに登山を開始した. 燕岳は最初から急な方の山である. なので結構ゆっくり目に歩いた. 最初は雪もなく夏山を歩いてるような感じであった. 第三ベンチをこえて少ししたあたりから雪が突然増えた. なのでそこからはアイゼンを利用した. 多くの人は合戦小屋まではアイゼンを付けずに登っていたが私は自信がないのでさっさとつけたのである. 合戦小屋より上は完全な雪山であった. まぁ厳冬期のような厳しい寒さはなくむしろ暑かった. 曇ってたとはいえ私は半袖で行動していた. もちろん防寒着はおいてきたわけではなくザックに入れてある. 暖かいとはいえ油断をしてはいけない. 合戦尾根は雪は多いものの気温が高かったため雪の踏み抜きが多かった. なので想像以上に体力を要した. 合戦小屋から燕山荘までは1時間30分程度で到着した. 小屋の前は雪はなかった. テント場はしっかり雪が残っていた. 10時ごろに燕山荘についたのだが, 予定通りだった. 計画ではその後大天井岳をピストンする予定だったが想像より疲れてたので燕岳山頂をピストンしてその後小屋でゆっくりした. 二日目はご来光を見ようと思ったが地平線付近の雲が多く見ることができなかった. しかし景色は悪くなかった. 満月と北アルプスのコラボレーションを見ることができた. また朝日に照らされる燕岳もいいものだった. 燕山荘で朝食をいただき, その後すぐに中房温泉へと下山をした. 下山のときは雪が凍っていた. なので合戦小屋までは踏み抜くことなく快適に歩行できた. 合戦小屋より下は気温が高かったのかそこまで雪は固くなかった. 下山は8時頃だった. 山を安全圏まで降りたときの開放感はやはりいいものである. 山の中が嫌いというわけではなく, 外界には外界の良さがある. 燕岳に次来るときは多分夏だと思う. その時は表銀座縦走をやりたいと思う. 美しい槍ヶ岳を見せられたから仕方のないことだ. 以下は今回の燕岳の写真である.

5月 21, 2019

jwtを利用したサービスでログイン時にfastlyのcacheを有効にする

ログインユーザーにもcacheを効かせたいときがある. その時はjwt tokenの値を利用してcacheを作れば良い. jwt tokenの名前を jwt_token しよう. まずjwt tokenから値を抜き出す. sub vcl_recv { if (req.http.Cookie ~ "jwt_token=.*") { set req.http.X-TOKEN = regsub(re.group.0, "\;.*", ""); } } 次にcacheのkeyとなるhashを生成する. sub vcl_hash { if (req.http.X-TOKEN) { set req.hash += req.http.X-TOKEN; } set req.hash += req.url; } これでjwt tokenを利用してcacheが作られます. ちなみにログインのたびにjwt tokenは変わるのでログインごとにcacheが破棄されるような挙動になる.

5月 16, 2019

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....

5月 15, 2019

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"; } }

5月 15, 2019

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

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

5月 6, 2019

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 にすることができる.

3月 26, 2019

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

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

3月 25, 2019