フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

Go の Option パターンを generics と reflect でシンプルにしてみる

Goではインスタンスを生成する New に対していろんなパターンで作成をするために、よく Option パターンと呼ばれる書き方をします。 こんな感じです。(WithXXX で設定したい内容を付与できる) package main import ( "fmt" ) func main() { p := NewProduct(…

Open Saves をざっと眺める

Open Saves の概要: ゲーム向けのオープンソースのクラウドネイティブ ストレージ | Google Cloud Blog が紹介されていたのでみてみます。 開発チームが Cloud Storage 、Memorystore 、Firestore のいずれのストレージ ソリューションを使用するかについて…

Javaで-128~127のIntegerを==で比較するとtrueになる理由

以下のサイトで解説されています。 https://programming.guide/java/boxed-values-equality.html https://stackoverflow.com/questions/3131136/integers-caching-in-java Integer クラスでは -128〜127 の値の場合はJVM の起動時に上記の範囲の Integer オ…

【備忘】spanner の mutation と Statement DML のどちらを使うか

完全にメモ とあるソシャゲのAPIサーバで Spanner を使った。 このとき元々は Mutation を利用していたのだが、以下の理由で Statement DML に変えた。 もともと API サーバではクライアントからのリクエストを処理し、その結果に応じてミッションやアチーブ…

CloudFlareの記事を読んでTCPでIP固定の場合の挙動をまとめる(IP_BIND_ADDRESS_NO_PORT)

おっしゃるとおり、古典的な TCP/IP スタックの場合は、エフェメラルポートを確保してから connect(2) するので、クライアントとして同時接続数はポートの数に律速されます。一方で、linux の場合は IP_BIND_ADDRESS_NO_PORT というオプションがあり、これを…

浮動小数点演算について軽くまとめる

固定小数点 浮動小数点 という2種類の概念がある。 固定小数点 固定小数点は int(32bit) や long(64bit) といった固定桁数の中で表現可能な範囲で小数を表現する方式。そのためこの範囲の計算に収まる限りは誤差が発生しない。 ただし算術の結果、int や lon…

Seekable OCI (SOCI) をちょっと調べた

コンテナイメージを遅延読み込みする Seekable OCI の紹介 AWS が出してきた lazy loading に関する記事。 lazy loading は etargz あたりの話を前紹介したが、それとは異なるアプローチをしたのが SOCI とのこと。 blog.framinal.life 公式の説明によると s…

pflag がどのように args を取得しているのかを追う

Go の pflag パッケージってどうやって引数を処理してるんだろうが気になったので、ちょっと調べてみました。 引数を配列にして返すだけのコードを書いてみます。 package main import ( "fmt" flag "github.com/spf13/pflag" ) type Args struct { Paths []…

GitHub Pull Request で diff 結果が多すぎても表示させる

stackoverflow.com PR の末尾に .patch をつけるだけ https://github.com/JustinTulloss/zeromq.node/pull/47 だとしたら https://github.com/JustinTulloss/zeromq.node/pull/47.patch とする

The Graph は何を解決するのか?何が便利なのか?まとめてみた

はじめに&注意 対象読者 ブロックチェーンの課題とThe Graph が解決すること 背景 The Graph が解決すること The Graph の概念 The Graph のシステムアーキテクチャ データを貯める仕組み サブグラフ(SubGraph) とは クエリ関連の仕組み The Graph のインセ…

Google Professional Cloud Developer(PCD) に合格したので振り返り

スキル 勉強期間 勉強方法 感想 スキル インフラエンジニア歴 10年 得意領域:サーバ、k8s、セキュリティ、クラウド、IoTなど 持ってる資格 クラウド:AWS Solution Architect Professional / Google Cloud Architect Associate サーバ / NW:LPIC2 / ネスペ…

PodDisruptionBudget設定時にでる「Cannot evict pod as it would violate the pod's disruption budget.」の解消法

Pod に PodDisruptionBudget(PDB)設定時に以下のエラーがでました。 error when evicting pods/"nginx-deployment-bc88786fd-fq8wv" -n "pdb-test" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget. この解消法に…