地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

2022-09-01から1ヶ月間の記事一覧

特定のローカルブランチをまとめて削除

$ git branch | grep branchname | xargs git branch -d $ git branch | grep -E regex | xargs git branch -d

【Go】aws-sdk-goでクレデンシャルファイルを使った認証

AWS_ACCESS_KEY_IDとAWS_ACCESS_KEYが設定されていなければ自動でクレデンシャルファイルを見に行く。profileの指定が必要なら以下のように書くことで指定が可能 profile_name := "profile_name" sess := session.Must(session.NewSessionWithOptions(sessio…

【Go】LambdaでRDS for MySQLのAuditログをいい感じにS3に置いてくれるやつを書いた

github.com いい感じになるやつ。書き終わってから気づいたけどlocalstackというのがS3互換でAPIが叩けるらしい。今度使ってみよう とりあえずやりたいことをやるにはLambdaが最大スペックでも6コア10GBで最長実行時間が15分というのが結構きついので前段にL…

【Go】パーセンタイルを出すライブラリを書いた

github.com 特定の操作をN回行った際のレイテンシーのMパーセンタイルを取得したいみたいなケースで使えそうかもと思って書いた。ログのレイテンシーとかから計測したり何かしらには使えそう。

【Go】sliceの型変換

キャストでいけるかと思ったがcannot convert s (type string) to type intとなる。rangeで回してあげてる必要がある。 func intToFloat64(i []int) []float64 { f := make([]float64, len(i)) for n := range i { f[n] = float64(i[n]) } return f }

【Go】DNSサーバに対して指定回数のクエリを投げてレイテンシを測るやつを書いた

github.com 100回投げて99番目に遅いレイテンシやavg timeやmin timeなんかをMackerelで可視化できるやつを書いた。ただ昨日書いた以下のような問題(ハッピーアイボールというらしい)があってやりたいことに対しては2回の問い合わせはオーバーヘッドでしか無…

【Go】LookupHostを使って名前解決しようとするとAとAAAAの2回クエリが飛ぶ

r := net.Resolver{} ip, err = r.LookupHost(context.Background(), "google.com") みたいな感じで名前解決をしようとするとAとAAAAの2回クエリが飛ぶので追ってみた。最初は以下が呼ばれる。読むのは2ファイルのみsrc/net/dnsclient_unix.go func (r *Reso…

【PowerDNS】パフォーマンスに効きそうなチューニング

receiver-threads ワーカー数。デフォルト1なので増やさない手はない。CPU数くらいにしておく distributor-threads PowerDNSのバックエンドとのやり取りに使うスレッド数。デフォルトは3なのでIOバウンドなら増やしておくと良さそう。memcachedとかを同一の…

【MySQL】metadatalock

あるトランザクションで触っている最中のテーブルにDDLを発行するとmetadataロック待ちが発生する。以降のmetadataロック待ちのテーブルへのDMLは全て最初のトランザクションが終わるのを待ち続けるという話。 トランザクション1 DML insert mysql> desc tex…

【MySQL】Barracudaのメモ

Barracudaとは innodbのファイルフォーマットの一つ。MySQL 5.1のInnoDB Plugin時代からある圧縮方法 8.0からはデフォルトになる 通常は非圧縮ページがそのままストレージに保存される この機能を使うと圧縮ページを作成しストレージに保存することによって…

mysql 透過的ページ圧縮

透過的ページ圧縮の使い方 テーブル作成時、以下のように、「COMPRESSIONオプション」を付ける。圧縮方式は「lz4」と「zlib」 CREATE TABLE テーブル名 (テーブル列定義など) ENGINE InnoDB COMPRESSION='圧縮方式'; engineers.weddingpark.co.jp

myloaderでERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. myloaderを使っていたら出た。デフォルトパスワードから変えて上げる必要があるらしい ALTER USER 'root'@'localhost' IDENTIFIED BY '新パ…

mysqlpumpを使ってバックアップを取ってみる

mysqlの後継ツールとしてmysqlpumpというものがあるらしいので使ってみた。mysqldumpと違って処理がシリアルな部分を並列化で高速化をしてくれたりと嬉しい機能が色々とあるらしい mysqlpump dev.mysql.com やってみる やってみるとわかるがほぼほぼmysqldum…

C++に入門し始める

PHPとGoあたりに仕事のために入門中だがC++が気になって長いので今度こそ、この機会に入門してみる。とりあえず読めればいいかなくらいで構文を眺めている段階。いつもどおりなんかしらのCLIツールでも書こう。 rinatz.github.io 評判よさそうなのでこれをや…

【C++】外部から基底クラスのメンバ関数呼び出し

派生クラスインスタンスからこの基底クラスのfunc関数を呼び出すには「派生クラスインスタンス.基底クラス::メンバ関数();」という書き方をすることで解決する。 class Base { public: // do something virtual void func(); }; class Derived : public Base…

linux sysfs

/ sys /firmware このディレクトリには、ファームウェアオブジェクトと属性を持つサブディレクトリが含まれています。 / sys / module このディレクトリには、カーネルにロードされる各モジュールのサブディレクトリが含まれています。次に例を示します。