Post

2020-10-20 01:20:34

Kubernetesドキュメントのリーディングーコンセプトのまとめ

概要Kubernetesを本格的にキャッチアップしていくためにドキュメントを読んだので、オレオレメモを残す。日本語を翻訳ページを参照しつつ、翻訳が気になるところは英語を確認しているが、やや分かりづらい表現もあるかもしれない。Kubernetesドキュメントを駆け足で流し読みしたいときに役立つかも...全部は長いのでメモ書きはコンセプトの章だけにする。 kubernetes.io Kubernetesとは何か?cf. Kubernetesとは何か? Kubernetesとは何か? 宣言的な構成管理 自動化の促進 コンテナ化されたワークロードやサービスの管理のためのプラットフォーム 過去を振り返...

インフラストラクチャ

Docker コンテナ Kubernetes

2020-09-29 01:53:39

Golangでインメモリなキャッシュを実装する

概要Golangのインメモリキャッシュのライブラリは良さそうなものが存在するが、軽量でシンプルなもので十分だったので自前で実装してみた。 実装要件 複数のデータを保持することができる。 期限付きのデータをメモリに保持することができる。期限が来たらメモリから破棄されること。 キャッシュへの同時参照、更新を考慮し、データのロックが意識されていること。 初期設計※github.com - bmf-san/go-snippets/architecture_design/cache/cache.goに置いてあるが、転載。 最初に思いついた感じで実装したもの。 package main import...

プログラミング

Golang キャッシュ

2020-09-15 00:31:41

Go CodeReviewCommentsのまとめ

概要github.com - CodeReviewCommentsを読んでメモしておきたいことをまとめる。 Comment Sentences コメントの終わりはピリオドで終わるようにする。 golang.org - commentary Copying 別のパッケージから構造体をコピーするときは、予期しない参照に気を付ける。 メソッドがポインタの値に関連付けられているならTではなく*Tを使うようにする。 Crypt Rand 鍵の生成にmath/randを使ってはいけない。crypto/randのReaderを使う。 文字列として扱いたい場合は16進数かbase64エンコードする。...

プログラミング

Golang コードレビュー 

2020-09-13 23:11:46

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK 基礎編 スクラムってなに? はじめに アジャイル開発とは? スクラムってなんだろう? 機能や要求を並べ替える プロダクトの責任者は誰? 動作するプロダクトを開発する 短く区切って繰り返す 頻繁に計画する スプリントごとに完成させていく 毎日状況を確認する できあがったプロダクトを確認する もっとうまくできるはず 縁の下の力持ち まとめ 実践編 どうやればうまくいくの? Scene No.00|開発したいものの概要と人物紹介|よし、始めようか!! Scene No.01|ロールを現場にあてはめる|プロダクトオーナーは誰だ!? Scene No...

アジャイル スクラム

2020-09-13 21:42:38

ISUCON10に参加してきた

ISUCON10に参加してきた。ISUCON参加は2年ぶり2回目。 前回は2人チームで参加したが、今回は3人チームで参加した。 やったこと 予選マニュアルやレギュレーションの内容確認 SSH接続の確認 githubに登録している鍵で接続可能だった。今回は踏み台サーバーが用意されていた。 プロセスの確認 APIのエンドポイントやUIを確認 DB確認 デプロイ整備 アプリケーションのデプロイ、schemaの管理をmake一発できるように。 alp導入 MySQLの一般クエリログ、スロークエリログの調整、各種パラメータの調整 Nginxの設定調整 初回ベンチマーカー実行 作業  クエリのチ...

ポエム

ISUCON ISUCON10

2020-09-11 01:40:01

JWTとは

概要JWTについて調べたことをまとめておく。OAuthやOpen ID Connectなど実際の利用事例については触れない。 JWTとはJWT(JSON Web Token)は、JSONデータ構造を用いたURLセーフなClaim(JWTを用いたJSONオブジェクトはClaim Setと呼ばれる)を表現するフォーマット。JWTでは、デジタル署名またはメッセージ認証コード(MAC)を用いたJWS(JSON Web Signature)、あるいは暗号化を用いたJWE(JSON Web Encryption)が利用される。 JWT、JWS、JWEのそれぞれのRFCは下記の通り。ietf.org - r...

プログラミング

JWT

2020-09-08 03:05:50

gRPCとはーGolangでgRPCに入門するー

概要GolangでgRPCに入門する。 gRPCとはgRPCとは、Googleが開発したRPC※実現のためのプロトコル。HTTP/2の利用を前提としている。 gRPCではGoogleが開発しているProtocol BuffersというIDL(インターフェース定義言語)でAPI仕様を定義するシリアライズフォーマットを使用する。 gRPCの通信方式にはHTTP/2の仕様に則った4つのパターンがある。 Unary RPCs 1リクエスト1レスポンス Server Streming RPCs 1リクエスト複数レスポンス サーバープッシュ(HTTP/2の仕組みで、コンテンツをサーバーからプッシュす...

プログラミング

Golang gRPC マイクロサービス HTTP/2 RPC

2020-08-25 21:54:32

リトルエンディアン・ビッグエンディアン・ミドルエンディアン・バイエンディアンの違いについて

概要リトルエンディアンとビッグエンディアンの違いについてまとめる。 エンディアンとは 複数のバイトの並びの方式をエンディアン、またはバイトオーダーと呼ぶ データをメモリ上にロードするときの配置の仕方  エンディアンはCPUやプロトコル、OSによってそれぞれ決まっている 異なるシステム間やネットワーク間でデータをやりとりする際にエンディアンによる問題が発生しやすい ex. バイナリを解析したいときなどエンディアン変換が必要となる ビッグエンディアン メモリの下位アドレスから順番に、データの上位バイトから下位バイトの順で配置していく方式 ex. 16進数 00 01 02 03 → 00 0...

コンピューターアーキテクチャ

メモリー

2020-08-24 22:37:03

孤児プロセスとゾンビプロセスの違い

概要Dockerを触っていたらorphan(孤児の意)というプロセスの存在を知ったのでゾンビプロセスとの違いを調べてみた。 ゾンビプロセスとは 処理が終了した子プロセス プロセステーブルに残った状態で親プロセスのwaitを待つ システムリソースは使用しないが、PIDは保持される ゾンビプロセスが大量に増えると、使用可能なPIDが減り、他のプロセスを起動できなくなる ゾンビプロセスの確認方法 ps auxでstatがZ、末尾がdefunctのものがゾンビプロセス ps -ef | grep defunctでゾンビプロセスだけ出力 ゾンビプロセスのkill 親プロセスをkillする 孤児...

コンピューターアーキテクチャ

UNIX プロセス

2020-08-11 16:43:20

Golang×chromedp×slack botでslackの絵文字自動生成ボットをつくってみた

概要Golang×chromedp×slack botでslackの絵文字自動生成ボットをつくってみた。 作ったものslackでbotにパラメータを付けたメンションを飛ばすと画像を生成してくれるだけのもの。内部的には、パラメータを元にcanvasで画像を生成、ヘッドレスブラウザでスクショを撮って画像を保存、slackに投稿、といった感じ。 github.com - emoji-generator-slack-app 使い方等はREADMEを見ればなんとなくわかるはず... 週末にハッカソン的ノリでつくったため、バグが残ってしまっている...https://github.com/bmf-san/...

プログラミング

Golang Slack chrome chromedp emoji slack-bot