過去のページ Page 1 of 38 未来のページ

nna774.net(つまり、このページのこと)をHonoで書き直した。

今まではmiddleman, middleman-blogを使って書いてたが、手元でビルドが成功しない状況が続いていた。

一方並行してHonoの話をイベントで何度か聞いていた。 それがv4でついにSSG(Server Side Generation)に対応したということで、乗換えてみることにした。

いくつかの問題があるものの、一旦全てworkaroundすることができたので、乗り換えることに成功した。

気付いている問題

app.get('/パス/', ...)

のようなパスにマルチバイト文字列を渡した場合、内部には/パス/のように登録されるが、アクセスする際に/%E3%83%91%E3%82%B9/のようにエンコードされるためか、マッチされない。

encodeURIしたパスを登録して、ファイルに書き出す際にdecodeURIすることでごまかしている。

app.get('/feed.xml', ...)

のようなコードからSSGすると、feed.xml.htmlが生成される。 https://github.com/honojs/hono/pull/2236によって直っているように思うのだが、これを含んだバージョンを使っても発生する。index.html.htmlのようにhtmlが2つにはならなくなったのに。 ビルド後にrenameでごまかしている。

踏んだものはこれぐらいか。

普段

普段はScrapboxのほうにブログを書いているが、ひさしぶりにこちらを更新するのもわるくない感じがするので、記事を書く際にはこっちを使ってもいいのかもしれない……と思ってきた。 最後の記事が2018年か……という気持ちにはなってしまった。

ISUCON8

:money_with_wings: のチームでISUCON8に出てきました。 学生枠で出たかったけど、人望が無くてチームが組めなかったので、 出るのあきらめるかなー とおもっていたところ、 去年卒業した人たちに連れられて社会人枠で出場。 社会人枠では厳しいだろうなー と思っていたけど厳しかったですね。

score

scores

結果は17000点ぐらい。

レポジトリはここ

準備

今回は前日にmitamaeを準備していった。 → タグ 準備してたのに、前もってmitamaeを流してもらったりしていなかったのは普通によくなかったな という反省です。

前日にいくつかslack reminderを仕込んでいた。

Image from Gyazo

事前に読んでいたmackerelの外形監視が便利というのを見てしかけたもの。

Image from Gyazo

意外と手詰りじゃなかった。

Image from Gyazo

再起動テストは大切。 普通にしてたらsystemdで問題無いはずだけどボケててenableしてなくて死 とかこわい……。

Image from Gyazo

netdataはやっぱり便利。

本番

新社会人の残り二人は東京であつまって、私は京都の自宅でリモートという形でやっていた。 Slack call意外と行けますね。

9:45ぐらいに目覚めてギリギリ。

最初は公開鍵で入れるようにしたりnetdata入れたり(この2つはレシピ準備してた)、ruby実装に切り替えたり外形監視の設定をしたり、deployの設定をしたりであわただしくいつものをする感じ。 その間にアプリを眺めてもらったりしていた。

おちついて見てみるとh2oで動いていたので、一瞬でnginxに切り替える。 nginx用のレシピも仮なものは準備していたけれども、 入っていないことなんか無いとおもっていたので package 'nginx' をあわてて追記して入れる。

ベンチマーカを流しながらnetdataを眺めていると、メモリが厳しく、死ぬほどswapしたりして厳しい感じだった(これ、結局leakがあった感じなんですか……?)。 その時ぐらいにunicornにpumaから変更してるんだけれど、なんでメモリが厳しいのに変えたのだっけ……?

とりあえずメモリが厳しかったので、DBを3のインスタンスに移したり、static fileはnginxで返すような設定を入れる。

遅いリクエストは、nginxのapptimeで見ていたけれども、メモリがswapして遅いものとの区別が付きづらいのが少しつらかった。

dbを3にして1と2でappを動かしたら、initializeがデフォルトだとlocalでしか走らないので、鈴木 明さんのconflictが発生するので、 雑に3でinitするようにしたが、 終了後の打ち上げでinit.shの中で -h で済むと言われて「たしかに……」となっていた。

apptimeを相変わらず眺めたり、ベンチマーカのvalidationを眺めたりすると /admin/ が遅いなということに気づいたので(13:52ごろ)、 そのへんになってやっと私もコードを眺めて3重のN+1ということに気づき直してもらう。

Image from Gyazo

手づまりじゃなかった。

そこを改善することで7000点ぐらい? まで上がった。

/admin/api/reports/events/11/sales のdead lockは発生するなとは気づいていたが、 確率的にしか発生しなかったのでとりあえず後回しとされたところ、そのまま終了した。

その後しばらくはあまりぱっとする変更は入れられなかったが、 謎のtransactionを消したら一気に14000ぐらい? まで上がったように思う。 結局このtransactionだけは「自然に書くとこうはならんやろ」という感じがして、 なんで囲まれていたのかよくわからなった(実は深淵な理由がある?)。

あとはDBのレイテンシがでかい? からか、DBクエリの削減(これこれ)でちょっと上がった気がする?

適当にexplainしてそれっぽくalter tableをする(ぜんぜんDBについての知見を持っていない)などの活動をして、終了して結果17000点で終了 (「次でラストにするか」と言って回したのが死ぬほどswapして4000点台を出したので、あわててappをrestartして回しなおして17:59:26にこの点数が無事出るなどのドキドキがあったりしたなどはあったが)。

今回は急造チームということもあり、けっこう全体を見るなどして大変だった。 「私ができそうなところはだいたいやったなー」という感じにはなってこの点数だったので、 「普通の学生ぐらいの筋力かー」というきもちになったので、 もっとやっていく必要がありますね……。 とりあえず各位のwrite upを読んでやっていきましょう……。

来年も多分学生なので(そろそろ卒業したい)、 次こそはまた本戦に行きたいですね……(社会人枠で勝てるぐらい強くなりましょう(むずかしそう……))。

沖縄旅行編の続編です。 前回の記事から読むと良いかもしれません。

0日目

フェリーターミナルを出港します。

テープカットしてるところはじめて実際に見た。

新幹線車両に特別な思い入れはないですが、 新幹線も巨大なものが動く系のおもしろさがあります(しかもなんと高速に動きます)。

前日睡眠失敗していたので、船の中で寝て起きたら奄美大島周辺です。 奄美大島とかも一回降り立ってみたい……。

1日目

船、けっこう速いですね。

無事到着。

新幹線の終点です。

荷物を送ろうとした際の会話です。

市電に乗りたかったので無駄に鹿児島駅に来る。

ななつ星、一度だけたまたま見たことあるけれども、一度ぐらいは乗ってみたいものですね…………。

New photo by 久我山菜々
New photo by 久我山菜々
New photo by 久我山菜々

2016/9/13に湯布院駅でほんとに一瞬だけ見れたななつ星です。 自分の乗る列車の発車直前に気づいたのでほとんど写真は取れなかった。 多分まいてつのグランドルートで走らせてるのもななつ星が元ネタですね。 死ぬまでに乗れると良いですね。

それは置いておいて、鹿児島中央駅です。

指宿のたまて箱に乗ります。

すーぐに車内販売のたべものを買う~

奈良県民はすぐに海で大喜びします。

観光特急で50分しか乗れないのはちょっと物足りないですね。

普通列車を乗り継いで行きます。

らしいです。

途中下車しようかなと思ってたけど、撮影の為停車してくれるらしいのでうれしい。

これで最西端、最南端をまわれたので、北と東も行きたいですね。

ここが果てです。

鰹すきなので、すごく満足度が高かった……。 普通にそういう意味ではまた行きたいですね。 1時間半しか滞在できなかったですし(1時間半滞在できるのは長い方ではあるけれど)(普段はしばしば即座に折り返し列車が出るのでそれに乗ってしまう)。

今回塗った分です。

さぁ、帰りましょう。

地図でこういうの見るのすきです。

最南端の電停。

九州のコンビニで肉まん買うと酢醤油がついてくるの、すきです。

せっかくなので桜島に行きます。

温泉に入ります。

JAPWを読んで初めて知りました。

旅行先でテレビをつけてみて、「チャンネル数すくないな~」ってやつよくやります。

湯楽館ってとこに泊まりました。 実質ネカフェ。でも温泉に入れるから良かったですね。 地方だから安いし。

2日目

はやとの風に乗っていきます。

急いでない旅行なので、観光特急はのんびりしたほうがうれしいです。

さつまゴールド。さつまいものビール

嘉例川駅、がんばれば鹿児島空港から徒歩連絡もできそうですね。

列車が走っていることでパスが生じることがすきなので、あんまり上に何が走っているかの興味は無いです。 でもキハ40シリーズにのんびり乗るのはすきです。 まぁこれも普段乗らないから出る感想なだけかもですが……。

ここには以前来たことがあります。 この時に一瞬だけ足を踏み入れていました。

ここの以前来た時に存在は知っていたけど、入ってみたかったとこですね。

今回の旅行はこの過酷な記事で予習してたところとかをなぞる感じでたのしかったですね。 一度5日で北海道まで行くやつやってみたい……。

ここから先は、この時とかに一度来てるところです。

肥薩線はほんとすき。

バイト先の名刺です。

人吉、すき……。

まいてつまたしたいですね。

つかれてるのでのんびりします。

今回も人吉ゲストハウス堺にて宿泊。

3日目

味噌や醤油、おつけものなどいろいろ買ってしまいました(重い)。

おまんじゅうを大量に買って一人で食べます。

みそまんがおいしかったです。

B級っぽいイチゴでしたがおいしかったです。

ツイートするとクリアファイルがもらえました。

人吉駅の名物駅弁くりめし弁当です。 それと焼酎の飲み比べのセット。

1周年のハンカチをつい買ってしまいました。

球磨川の景色ほんとすき。 球磨川下りとかもやってみたいですね。

これほんとすき(くまモンって書こうとしたのをタイポしてます)。

ネット早得7が安すぎて、乗車券部分が重複してるけど、特急券を単独で買うよりも安いんですよね……。

新幹線ははやいので博多です。

へにょへにょの博多のうどんだいすきなので、30分ぐらいしかないのに牧のうどんへ行きます。

そしてさくらです。 4列なので快適ですね。 同額なのでのぞみには乗る気にはなれません。

電車で一駅。

今回はここにて終了ですね。 旅行記がいっぱい溜まってるのでどんどん書いていかないと……。

沖縄に行ったので、そろそろ旅行パートを書きましょう。

そろそろ1月ぐらい経つんだよなぁ。

1日目

まずは関空に行きます。 これは京都駅よりはるかに乗ります。 自分のお金で関空に行く時は、いつも関空アクセスきっぷだったので、 この時点でまず旅行感がかなりあります。

これには乗りません。

そう思いませんか?

551を食べながら、ビールを飲み、眠っていると関空です。

落ちませんでした。

とりあえずフードコート的なとろでオリオンビールを飲みます。

"旅行感"は大切です。

沖縄1日目はAirBnBにみんなで泊まるみたいなムーブに混ぜてもらったのでそこで泊まりました。 夜遅くまで飲酒を行いました。

2日目

お昼ぐらいに起きて国際通りにくり出します。 実は沖縄に来るのは2回目で、2年前に一度来ているのですが、 まぁ国際通りにも来たことがあります。 2度め雑に来ても普通に良いですね。

ひさしぶりにアニメイトに行きました。 けもフレコラボしてる時に来たかったですね。

泡盛にとうがらしをつけたやつ is 島とうがらし です。 自分用におみやげとして1瓶買って帰りました。 おでんとかにかけて食べています。

歩いてたらDPZで読んだことのある建物が登場してびっくりした。

泡盛の入ったソフトクリームを食べます。

その後首里城に行きます。 前回の取り残しの世界遺産です。 残る沖縄の世界遺産は首里城の近くのやつ1つです。

これは首里城にあった王の座る椅子です。

これは首里城にあったかしこい自販機。

首里城の近くでタクシーの運転手と喋っていたらおしえてもらった石畳です(タクシーには乗らなかった)。

これはそこの風景です。

別件で沖縄に来ていたKMCのOBの人につれられてせんべろです。

前回泊まったとこと同じとこに泊まります。 ここです。 前回は800円のプランで布団はなかったけど、今回は1300円のプランで布団があります。

3日目

「車借りてどっかいってもいいかもね~」とか言ってたけど、昨晩泥酔したので二日酔いで死んでいました。 「まぁ沖縄はいつでも来れるしな」みたいな気持ちもあり。

おひるすぎぐらいまで宿でVTuberの動画をみつづけて、 元気になってきたのでりっかりっか湯に行きます。

のんびりしてYAPCの前夜祭に。 交流ポイントが切れていたので、KMCやnotaの人とのんびりしていました。

前夜祭後に微妙におなかがすいていたのでステーキを食べます。 沖縄のステーキは安い。 2年前にも来てたけど、入店するまで完全に忘れていました。

今日も前日と同じ1300円の宿。

4日目

雨。 YAPC本番だったので、基本的に室内だったのでまぁ困らなかったけれども。

YAPCについては前回の記事で書いたということにしといてください。

5日目

始発に乗ってフェリーターミナルへ。 沖縄脱出です。

長くなってきたので、このへんで一旦切って次の九州編に続くとしましょう。

ブログを書くまでがYAPCです。

今回学生支援制度にて、旅費の支援を頂けたので、豪華な旅行ができました(?)。 スポンサー企業の方々、ありがとうございました。

以下気になったトークとか

Webサービスを監視するときに僕達が考えたこと

監視は大切。

普段から家の中のマシンをmackerelやUptime Robotで監視したりしていますが、 mackerelは非課金だと1日しかログが残らないので、 刹那的な監視にしか使えない(家で使うには1800円/hostはちょっときびしい)のがちょっと悲しいです。 真面目にZabbixを立ててやっていくしかないのか……という気もしますが、 ちゃんと運用していくのは大変だしな と悩む日々です。

https://gyazo.com/bf74dd49970ffcfb21ed80d7b71e5642

これは日次のNASのバックアップがちゃんと動いている様子。

https://gyazo.com/559f212e87a81ca463fba35f2af3cf40

これは何故か一瞬落ちてる様子。

「狼少年」問題にはいつも困っていて、長期的なデータ蓄積がやっぱ必用か……となっている日々です。

CPU利用率がずっと5%なのも障害

これははじめて聞いたけど、なるほどとなった。

GraphQL をプロダクション導入した結果

GraphQL、一瞬触ったことはあるけど、全然まだよくわかっていないし、 RESTと比べての利点もわかっていない……。 DTDのついたXML、schemaのあるjsonみたいな感じ……?(わかっていない) なんか流行りそうなのではないかという予想を良く見るし、どこかでちゃんとわかっておきたい……。

そろそろPerlでのHTTP/2について触れたい

HTTP2、中の実装をまだよくわかっていないのでおもしろかった。 なんとなくnginxで有効にしたりして使ってはいるが……。

Inlineモジュールの世界

やばい。 一生使わなさそうではあるけれども、おもしろい話だった。 おもしろコードを書いてみるときとかにはワンチャンある……?

思いは言葉に。

良かった。 思いを言葉にしていくのは大切なので、私もブログを綴っていきます。 誰かが読むのを想定しているというというより、 旅行記を後で参照できたら便利だよね ぐらいの気持ちで自分用に書いているようなところがあります。

意外と自分の過去の記事を見返すと良かったりもします。 Twitterに高頻度でポストするので、 そっちに書いてしまって満足してブログを書かないようなこともよくあるので気をつけてはいます (まぁそちらもしばしば参照するので、それでも良いのかもしれないのですが)。

はてなブログさんの最近のhttps対応、ありがとうございます。 これではてなブログを利用できない理由はなくなったので、 別のブログを作ったり、今のブログを移行したりする際は是非使わせて頂くとおもいます。 何卒よろしくお願いします。

ノベルティ

DeNAさんの入れてくれいた、Qiの充電器、丁度買おうかと悩んでいたところだったので非常に嬉しかったです。 買っていなくてよかった!

(けっこう値段しますよねこれ……。めっちゃ安く見積っても、入場者全員に配ることを考えるとそこそこの金額に……とか考えてビビっていました)

会場

OISTさんの会場はそれぞれの席にテーブルと電源があり、いい環境だったな……と思っていました。 ネットワークも、ゲスト用の無線APが飛んでいて、非常に便利な設備ですごい……と関心していました。 雰囲気も良く、非常におしゃれでうらやましかったです。

最後に

非常にトークも楽しめましたし、沖縄も楽しかったです。 スタッフの皆様、学生支援スポンサー企業の皆様、スピーカーの皆様、他の参加者の皆様、ありがとうございました。

次は東京! 行きやすそう。行くぞ。

観光編はまだ別の記事で書きます。

過去のページ Page 1 of 38 未来のページ