Tag Go

複数のRSSや任意の情報をまとめて1つのRSSやJSONを生成するライブラリを作成した

5 min read | #Go #RSS #OSS

こんにちは @p1ass です。

皆さん RSS 使ってますか?RSS を使えば簡単にブログの更新を受け取れたりして便利ですよね。

でも、流れてくる情報多くて辛かったり、RSS に対応していないサイトの情報を受け取りたかったりすることがたまにありませんか?

そんな悩みを解決するための Go のライブラリを 1 年前に作ったのですが、ブログに書く機会を逃していたので、今更ですが紹介記事を書きます。

発表スライドはこちらです。

続きを読む

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

8 min read | #ISUCON #Go

こんにちは @p1ass です。

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

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

リポジトリはこれ。

続きを読む

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

5 min read | #Go #静的解析 #OSS

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

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

続きを読む

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

8 min read | #Go #GCP #Cloud Run

こんにちは、@p1ass です。

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

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

続きを読む

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

2 min read | #Go

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

tl;dr

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

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

8 min read | #GitHub #Go #WebSocket

こんにちは、 @p1ass です。

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

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

続きを読む

Kubernetesのイメージタグの更新を楽にするCLIツールをGoで作った

6 min read | #Go #mikku #Kubernetes #Semantic Versioning

この記事は CAMPHOR- Advent Calendar 2019 の 11 日目の記事です。

はじめに

こんにちは、 @p1ass です。

今回は自分が作った mikku という CLI ツールを紹介をします。

mikku はセマンティックバージョニングで管理しているリポジトリの管理や、Kubenetes のマニフェストにかかれている Docker イメージのタグの更新を楽にする CLI ツールです。

この記事では mikku の特徴、開発することにしたモチベーションや苦労した点などを紹介したいと思います。

続きを読む

Goでデータベースにアクセスするにはどんなライブラリがベストか考える

8 min read | #Go #MySQL

この記事は Go5 Advent Calendar 2019 の 1 日目の記事です。

はじめに

Go のメジャーバージョンはいつの間にか 5 まで到達していたようですね、@p1ass です。

Go でデータベースにアクセスするときに使うライブラリは database/sql や  それをラップした sqlx , gorm , gorp など様々なライブラリがありますが、皆さんはどのライブラリを使っていますか?

おそらく様々な理由があってどれか(ここに挙げられていないものかもしれない)を使っているでしょう。 しかし、それは本当にベストな選択だったのでしょうか?

この記事では、Go でデータベースをアクセスする際に、どんな機能が必要かを考えつつ、上に挙げたのライブラリを比較していきます。 あくまでこの記事で述べるのは僕個人の意見ですが、この記事を通して皆さんが改めてライブラリ選定を考えるきっかけになれば幸いです。

続きを読む

ドメインロジックと永続化処理を分離する設計改善を行って得られた知見

6 min read | #Go #GAE #GCP #datastore #アカツキ #インターン

こんにちは、株式会社アカツキでインターンしている @p1ass です。

今回は、ゲーム内仮想通貨管理サービスの設計改善を行った上で分かった、コードの可読性やテスタビリティを向上させる設計方法や、実際の作業を行う上で苦労したポイントを紹介します。

続きを読む

初参加のISUCON9 予選で敗北した

4 min read | #ISUCON #Go #MySQL #Nginx

こんにちは @p1ass です。
9 月 8 日に同じく CAMPHOR- の運営である tomoyat1 さんと ISUCON9 の予選に出場してきました。

結果は惨敗でしたが、来年に向けて今年やったことを備忘録として残しておきます。

続きを読む