Category 開発

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 コンポーネントに渡したい」という状況が発生したので、やり方をメモしておきます。

続きを読む

[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上に構築する 」というタイトルで登壇しました。

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

続きを読む

GitHub APIを使ってブランチを新規作成する

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

先日、GitHub APIを使用してgitのブランチを作成しようとしたのですが、純粋にブランチを作成するAPIが生えておらず、色々調べた結果作成できることが分かってのでメモを残しておきます。

続きを読む

僕がコンピュータサイエンスに関して知らないこと

こんにちは、 @p1ass です。

最近、Twitter上で、「コンピュータサイエンスについて学びたい」みたいな話をよく見るのですが、僕もその1人です。

コンピュータサイエンスの学科に所属してないので、「独学で学ばないといけない」という気持ちはあるのですが、 「じゃあ一体何を学べばいいんだ?」 となってしまったので、自分なりに知らないことを挙げていきます。

挙げたものが本当にコンピュータサイエンスなのかどうかの確証はないです。

続きを読む