ISUCON10の予選でFAILして学生枠での本戦出場を逃した

こんにちは @p1ass です。

タイトルの通り。@Lorse@km_conner の 3 人で、チーム「釜中の鯖」として ISUCON10 の予選に参加したが、競技終了後の追試に失敗して、学生枠での本戦出場を逃した。めっちゃくやしい…

負けたとはいえ、ブログを書くまでが ISUCON なので、取り組んだ改善をメモっておく。

リポジトリはこれ。

続きを読む

Goのよくあるミスを発見する静的解析ツールを作った話

こんにちは @p1ass です。 Go のよくある間違いとして、ループのイテレーター変数の参照をループの中で使ってしまうという間違いがあります。 イテレーター変数のアドレスは 1 イテレーションごとに変わらないので、その参照をそのまま配列に append すると配列の結果が全て同じ値になるといったことが発生してしまいます。この問題はよくある間違いとして Go の wiki にも取り上げています。しかし、現状では公式でこの間違いを検出する静的解析ツールは用意されていません。

そこで、僕はメルカリのインターン で、イテレーター変数の参照をループ内で使っている箇所を検出する静的解析ツールを作成したのでそれを紹介したいと思います。

続きを読む

はてなブログからHugoに移行にして1年が経った

こんにちは、@p1ass です。

ブログをはてなブログから移行して一年経ったので、色々感想や分かったことを書いていこうと思います。

続きを読む

pupeteer内のReactコンポーネントに変数を渡す

こんにちは、@p1ass です。

タイトルの通り「pupeteer を動かしている Node が持っている変数を、pupeteer 内で動いている React コンポーネントに渡したい」という状況が発生したので、やり方をメモしておきます。

続きを読む

Twitterトレンド1位になった個人開発Webサービスの負荷対応記録

こんにちは、@p1ass です。

この記事は、LT 会のために作った Web サービスが何故かバズって Twitter トレンド 1 位 になってしまい、ひぃひぃ言いながら行った負荷対応をまとめたものになります。 スケーラビリティを全く考慮していない LT 会用の雑な Web サービスを、どのように改善していったのかについてまとめることで、個人開発者の参考になれば良いなと思っています。

なお、ここで書かれている内容は Production Ready なサービスを作る上では当たり前なことがほとんどです。本当の高負荷トラフィックを裁くための知見は出てこないので、予めご了承ください。

続きを読む

プログラミングにおける「勘」とその鍛え方

チーム開発でレビューをしていると、「パット見は問題なさそうだが、なんかバグってそう」と感じることがあります。

これは全く理論的な気づきではなく、直感的な「勘」なのですが、意外と精度良くバグを発見できることが多いです。1

ある時、友人に「そういう勘ってどうやって鍛えるんですか?」と聞かれました。とっさに「経験かな。」と答えたのですが、確信があるかと言われると微妙です。「どういう経験を積めばいいのか?」と聞かれると答えられなかったと思います。

最近、改めてこの話題について考える機会があったので色々考えてみたのですが、「良いコードを読んだ回数に比例して勘が冴えるようになる。」 という結論にたどりつきました。

このブログでは、その結論に至るまでの思考をメモしておこうと思います。

続きを読む

[Go] スライスのfor rangeループ内で新しいスライスにappendしたらバグらせた

久々にポインタ関連でバグらせてしまったので、自戒のためにメモしておく。

tl;dr

  • for rangeループのvalueは常に同じアドレス値を取る。

続きを読む

WebサーバをNginxから証明書自動更新に対応したCaddy 2に移行した

こんにちは、 @p1ass です。

最近、運用していたWebサーバをNginxからCaddyに移行しました。この記事ではCaddyの特徴や移行してみた感想などを書きたいと思います。

続きを読む

レイヤードアーキテクチャを採用した際のWebSocket実装例

こんにちは、 @p1ass です。

先日、レイヤーアーキテクチャを採用しているWeb APIサーバにWebSocketを組み込むことになったのですが、コネクションの管理やどのレイヤーで各機能を管理するか悩んだのでブログにまとめておきます。

使用している言語はGoで、Webフレームワークはechoです。

続きを読む

Docker Contextsを使ってDocker Composeをデプロイする際の注意点

こんにちは、ぷらす( @p1ass )です。

先日、 CAMPHOR- DAY 2020 というオンラインのトークイベントで、「複数サービスを運用しやすい理想のコンテナ環境をVPS上に構築する 」というタイトルで登壇しました。

登壇資料は既にアップロードしていて見られるのですが、端折っている部分の補足をしたいと思います。また、当日頂いた質問についても回答します。

続きを読む