フラミナル

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

【備忘】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. この解消法に…

【Terraform】null_resourceでシーケンシャルなterraform リソース作成を実現する

Terraform 内のリソースにおいて depends_on という順序制御の仕組みがあります。しかし同じ module を複数呼び出す際に、シーケンシャルに実行したいケースがあるともいます。(私はありました) もちろん呼び出す module ごとに depends_on を書けば解決す…

格言でわかるITエンジニア「急がば回れ」

ことわざ・故事成語・慣用句などの格言が好きです。 人生の色んな場面で助けられてきました。 今回は 「急がば回れ」 という言葉をつかって、ITエンジニアの戒めを書いてみようと思います。 急がば回れとは - コトバンク ITエンジニアに例える 早く着こうと…

Solidity で同名の関数や変数名を継承したらどうなる?

変数と関数を上書きする 変数と関数を上書きする(多重継承) 変数と関数を上書きする(virtual利用) まとめ 変数と関数を上書きする override1 -> test override2 -> test の場合 override1.sol // SPDX-License-Identifier: MIT pragma solidity >=0.4.22 <0.…

Solidity で無限ループするコントラクトを作ったらどうなる?

最初 payable にする GAS fee を 0 にする インクリメントにしてみる 1024で条件付してみる 面倒なのでネスト回数を指定できるようにした 結論(答え出ていない) 物は試しでやってみた。 最初 // SPDX-License-Identifier: MIT pragma solidity >=0.4.22 <0…

argo-rolloutsが権限不足で起動しない人向け

argo-rollouts がこんな感じのログを発行することがあります。 error retrieving resource lock argo-rollouts/argo-rollouts-controller-lock: leases.coordination.k8s.io "argo-rollouts-controller-lock" is forbidden: User "system:serviceaccount:arg…

memory store for redis の maintenance window を Terraform で設定する

Terraform の google provider 4.9.0 から memory store for redis の maintenance window が設定できるようになりました。 複数の redis を構築する場合は、メンテナンスウインドウをすこしづつずらしたいと思うので工夫した Terraform コードを紹介します…

kubernetesで1TBのディスクをつくったら932GBになった話

小話です。 k8s で1TBのディスクを作りました。 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: example-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1T すると 932GB のボリュームが作られました。 NAME CAPACITY…

Helm パッケージをどうやって OCI 準拠のレジストリに格納しているのか?

OCI について Helm パッケージが OCI 準拠のレジストリに保存できる まとめ Helm OCI をつかった OCI 準拠レジストリへの保存をどのように実施しているのか調べてみました。 OCI について 様々なアーティファクト(Helm や ライブラリ や各種パッケージなど)…

Terraform 本体&provider&module の最新バージョンを取得するコマンド

Provider Registry Protocol | Terraform by HashiCorp terraform curl -sH "Accept: application/vnd.github.v3+json" \\n https://api.github.com/repos/hashicorp/terraform/releases/latest | jq -r ".name" v1.1.3 provider curl -sL 'https://registry…

provider alias を削除したときの挙動を確認する

確認したいこと module に対して alias 名を指定した provider を付与している場合に、これを削除するとどうなるのかを検証したい。 モチベーションとしては公式サイトを見ると provider を明示的に渡す必要が無いので、それにならいたい感じ。 Providers Wi…

関数で使用する変数はいつ宣言すべきか?

シェルスクリプトの変数について、ちょっと試したことを載せます。 #!/bin/bash val1=val1 function test1() { echo $val1 echo $val2 echo $val3 } val2=val2 test1 val3=val3 function の前後に定義した値がどこまで取得できるのかを試してみました。 結果…

Merge Commit を含んだブランチの変更を Squash して綺麗にする

Git

* 0917e6be 2021-12-09 自分 Merge remote-tracking branch 'xxx/main' into 自分のブランチ |\ | * 03234646 2021-12-09 GitHub Merge pull request #xxx | |\ | | * 2514bd4a 2021-12-09 GitHub Merge main into 別の人の作業用ブランチ | | |\ | | |/ | |…

Cloud Monitoringの設定の意味をきちんと理解するまとめ

GCP Cloud Monitoringを利用する際に前提としてわかっておくべき内容を、個人の備忘として残しておきます。適宜追加していくため不完全な内容になっていますがご了承ください。 メトリクスの種類 データの整形 実際にポリシーを読み解く 例1 CPU使用率 Terra…

【備忘】kustomize で resource に外部ディレクトリの一部のリソースを指定する

kubernetes - referring a resource yaml from another directory in kustomization - Stack Overflow . ├── base │ ├── main │ │ ├── kustomization.yaml │ │ └── resource.yaml │ └── stuff │ ├── first.yaml │ └── kustomization.yaml └── cluster └── ku…

GKEでkube-dnsのメトリクスを取りたい話

GCP上のkube-dnsはその裏側にdnsmasqとskydnsが存在しています。 その二つの違いはRedHatの資料に詳しく書かれており OpenShiftの内部DNSについて語る...のではなく、dnsmasqとgdbで遊ぶ話 - 赤帽エンジニアブログ 上記のように紹介されています。GKEだと少…

【備忘】TerraformでGCP monotiringのfilterをうまく設定する方法

cpu_stateでどうにかフィルタするのをTerraformに設定したくて、どうにか辿り着いたTips。 下記のサイトにまとまっている情報をみる。 Legacy Monitoring and Logging agent metrics | Google Cloud 太文字のものはmetric.label.\"cpu_state\"= \"idle\""の…

【Bazel】コンテナイメージのPushをまとめて行う方法

Bazelでコンテナイメージを作成しPushする際に、まとめてPushする方法です。 distroless/BUILD at main · GoogleContainerTools/distroless · GitHub を参考にしました。 事前準備 git clone https://github.com/bazelbuild/examples cd examples/cpp-tutori…

ArgoCD Notificationで失敗検知の時間を短くする方法

ArgoCD Notificationでmanifestの適用後の失敗検知をしていると、10分経たないと通知がされません。これを短くする方法です。 方法 Statefulset / DaemonSetの場合はExceededの処理がArgoCDに見当たらなかったのでその状態にならなさそう。 Deploymentの場合…

【ArgoCD】HPA を使って複数のメトリクスを対象に追加するとOut of Sync状態のままになる

問題 HPA を使うとOut of Sync状態のままになる spec: maxReplicas: 30 metrics: - resource: name: cpu target: averageUtilization: 70 type: Utilization type: Resource - resource: name: memory target: averageUtilization: 70 type: Utilization typ…

【stackdriver】 PUTVALでカスタムメトリクスを送信する(collectd経由)

GoとかPythonでOpenCensusでいちいち書くのが煩わしすぎるので、手軽にシェルでstackdriverでメトリクスを送信する方法です。 元ネタ stackoverflow.com /home/testuser/test.sh duした値を出力するだけです。 #!/bin/bash INTERVAL=10 HOSTNAME=test FOLDER…

gcp_computeを使ったinventoryで動的にグループを作る

gcp_compute を使ってAnsibleのグループを作成するTipsを載せておきます。 GCEの操作 GCEにラベルを付与する(コンソールでもコマンドでも) ansible = true env = development or env = stg or env = production ラベルはなんでもよいし、値もなんでも良い…