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

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

変化しないものはゆっくり死んでいくのか

以下のスライドを久々に読んでいたが今の自分に色々と刺さる内容が多くて面白かった。 speakerdeck.com なぜシステムを継続改善していくのか 実装当時に最適解と考えられていたものが時間経過とともに最適とは評価され得なくなるから 現状サービスがうまく動…

dnsdistでDoHを扱う

DoHの用途 DNS over HTTPS(DoH)は、従来のDNSプロトコル(UDPやTCP)を使用せずに、HTTPやHTTPSを介してDNSクエリとレスポンスを暗号化して送信するプロトコルです。DoHは以下のような用途で使用されます。 dnsdist.org dnsdistを使えば自前でDoHやDoTのサ…

dnsdistに入門する

github.com dnsdistは、高パフォーマンスで柔軟なDNSプロキシとロードバランサです。PowerDNSプロジェクトによって開発され、オープンソースで利用可能です。dnsdistは、DNSトラフィックの制御、トラフィックの分散、セキュリティの向上など、さまざまな目的…

UDP関連のカーネルパラメータメモ

net.ipv4.udp_early_demux UDPの早期デマルチプレクサ(early demultiplexer)を有効にする net.ipv4.udp_l3mdev_accept = 0 レイヤー3マルチデバイス(l3mdev)でのUDP受信を無効にする net.ipv4.udp_mem = 185844 247793 371688 UDPメモリ使用量の制御(最…

デバッグ用のMySQL

FROM ubuntu:trusty as builder RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install build-essential cmake wget curl libncurses5-dev -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' && \ wget htt…

EC2インスタンスのWebサービスへのサクセスをCloudFrontだけに限定する方法

EC2インスタンスのセキュリティグループを設定する EC2インスタンスのセキュリティグループに、CloudFrontからのアクセスを許可するインバウンドルールを追加する インバウンドルールでのソースIPアドレスを、CloudFrontのオリジンのIPレンジに制限する。こ…

iterm2にコピーモードがあった

ebc-2in2crc.hatenablog.jp 全然知らなかったがこんな機能があったとは。iterm2は人生初Macでずっと使っているのでこんな便利機能があるとは...tmuxでいいじゃんというのは置いておいても便利なので使っていこう。

14インチ MBPが軽すぎてすごい

会社のPCが16インチから14インチになった。2.1キロくらいから1.6キロまで軽くなってすごい持ち運びがしやすくなってよい。仕事で東京に行く機会が結構あるので軽ければ軽いほどよい。 1泊とか2泊とかするような出張でも極限まで軽くしていきたいのでリュック…

MySQLのOOM調査に使ったスクリプト

#!/bin/bash while true; do date ps aux | grep [m]ysqld echo "####"; mysql -e "select * from sys.memory_global_by_current_bytes where current_alloc LIKE '%GiB%';" echo "####"; mysql -e "select * from sys.memory_by_thread_by_current_bytes wh…

外構に手を出し始めた

作業部屋、寝室、リビング、和室と自分が使ってる部屋のインテリアはなんとなく好みにしたのでやることがなくなってしまった。次はエクステリアということでやり始める。 ということで第一弾はカーゲートと門扉を付けてみた。完全にオープン外構になっていて…

Go ConferenceでLTしてきた

gocon.jp LTをしてきた。2021年にチームでGoをやっていくぞと言ってこれまでやってきた話をした。TLの盛り上がり見てるだけでも楽しくてとても良い日だなと運営の方にとても感謝。来年もネタ作ってプロポーザル出したい。 気になったセッション 「Go Style G…

ブログを書く機会が減った

ブログを書く機会が減った。直近だと分かりやすく減っている。今まで書くネタといえばミドルウェアのソースを読んでみたとか技術の入門してみた記事が多かったがその辺はChatGPTに聞けば大体答えてくれるという感じなったから。沸くように出てきたネタもChat…

M2チップ搭載MacBookを使い始める

仕事用PCがついにM2 ProになったIntel Macしか使ったことなかったのでセットアップをやっている。使いたいツールは大体すでに配布されていたりして便利。M1出たばっかの頃は自分でビルドしたりが大変そうだったがもうそんなのもなさそうでよかった。 ディス…

hex string のエンディアンを変換する

>|echo 1234abcd | python -c "import sys; print(bytes.fromhex(sys.stdin.readline().rstrip())[::-1].hex())"| cdab3412 |

Opentelemetryに触れ始める

opentelemetry.io Opentelemetryは、クラウドネイティブアプリケーションの監視やトレーシングを実装するためのオープンソースのプロジェクトです。これは、分散システムやマイクロサービスアーキテクチャでよく使われるアプリケーションの視覚化とトラブル…

【Terraform】現在時刻を文字列として扱う

locals { now_utc = timestamp() now_jst = timeadd(local.now_utc, "9h") datetime = formatdate("YYYYMMDDhhmmss", local.now_jst) } output "datetime"{ value = local.datetime }

【Terraform】httpリクエストの結果を使ってなにかしたいときに使えるprovider

github.com 公式で提供されていた。以下のようにurlを書いてhttpリクエストのヘッダーやオプションを書くことでレスポンスを得ることができる。 data "http" "example" { url = "https://checkpoint-api.hashicorp.com/v1/check/terraform" # Optional reque…

wavをmp3に一括変換する

ディレクトリ配下のwavをmp3にしたいケースが数年ぶりに出てきたので打った。 for file in *.wav ; do ffmpeg -i $file ${file%.wav}.mp3 ; done; 10年前ならターミナルなんて使えなかったのでワンライナーでやろうなんて思うことが無かったと思うと成長した…

詳解システムパフォーマンス 第2版を読み終えた

www.oreilly.co.jp 一日1章とか少しずつ読んでいたらついに読み終わってしまった。読み始めたのが3月末なので丸2ヶ月くらいかかって読んだ。 対戦よろしくお願いします pic.twitter.com/6LVu1mu7VA— RyuichiWatanabe@gurasan (@ryuichi_1208) 2023年3月24日 …

いつか使えそうなbpftrace1行プログラミング

# シグナルの送信を検知する $ bpftrace -e 't:syscalls:sys_enter_kill {time("%H:%M:%s "); printf("%s (PID %d) send a SIG %d to `PID %d\n", comm, pid, args->sig, args->pid);}' # pid別にシステムコールの回数を調べる $ bpftrace -e 'tracepoint:ra…

いつか使えそうなbpftrace1行プログラミング

# シグナルの送信を検知する $ bpftrace -e 't:syscalls:sys_enter_kill {time("%H:%M:%s "); printf("%s (PID %d) send a SIG %d to `PID %d\n", comm, pid, args->sig, args->pid);}' # pid別にシステムコールの回数を調べる $ bpftrace -e 'tracepoint:ra…

Ubuntuのパッケージでインストールされたファイル一覧を表示する

dpkg -L パッケージ名 apt-file search ファイル名を使ってパッケージを探すこともできる

Using filesortとUsing temporary

Using filesortとUsing temporaryは最悪な組み合わせ Using filesortはソートに必要な領域がメモリ上に乗り切らずに物理ファイルに書き出しソートを行う。 Using temporaryはクエリを実行するのにテンポラリテーブルが作られる。 リアルタイム処理を行うよう…

Cが早い理由

早い理由 ・ポインタを扱えるから ・処理は自分で書いた行だけだから ・インタプリタ言語だと内部的に処理が増える ・GCがある。参照の計算がある。Cは自分でfree。 ・メモリアクセスが制限。制限部分が遅い ・歴史が長い分最適化(アセンブリレベル)されてる

Amazon Linux 2023のglibc

パッケージ名 Amazon Linux 2 Amazon Linux 2023 glibc 2.26 2.34 gcc 7.3 11.3 binutils 2.29 2.39 gccが結構違う。OpenSSL 3だったりと結構アップデートするのに必要な作業が多そう。

Web系のインフラエンジニア職として読んでおくとよさそうな本たち

1~2年目辺りで読んでおくとよさそうな本たち www.kinokuniya.co.jp www.kinokuniya.co.jp www.kinokuniya.co.jp www.kinokuniya.co.jp www.kinokuniya.co.jp www.kinokuniya.co.jp www.kinokuniya.co.jp www.kinokuniya.co.jp www.kinokuniya.co.jp www.kino…

CPUでsystemが高いときにみるもの

access.redhat.com この辺が初手だったが最近だとbpftraceなんかも割と最初の方に出てくるっぽい。負荷を生成させて調査して〜みたいなのは軽くやってみたが確かに便利な側面はありそう。今度なんかあったら使ってみよう。 atmarkit.itmedia.co.jp

詳解 システム・パフォーマンス 第2版を読み始めた

対戦よろしくお願いします pic.twitter.com/6LVu1mu7VA— RyuichiWatanabe@gurasan (@ryuichi_1208) 2023年3月24日 一人読書会をやっている。1版との違いは結構あってNetflixでどう使われているかが結構はいっているのが特徴。どこかで感想戦とかやっている場…

【Go】HasSuffix

strings.HasSuffix(s, suffix string) bool: このメソッドは、文字列 's' が指定された接尾辞 'suffix' で終わるかどうかをチェックできる package main import ( "fmt" "strings" ) func main() { var str = "hello world" var suffix = "world" var result…

【Terraform】秘匿情報をSSMから取得する

こんな感じで取得できる data "aws_secretsmanager_secret_version" "db" { secret_id = "test" } locals { credentials = jsondecode(data.aws_secretsmanager_secret_version.db.secret_string) } resource "aws_db_instance" "example" { instance_class …