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

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

SRE LoungeとSRE NEXTの忘年会に行ってきた

sre-lounge.connpass.com への参加とSRE NEXTの忘年会に行ってきました。SRE Loungeは初参加だったのですがどのセッションも学びがあってよかったです。最近CUEに入門したのですが#CUEでキュッとできるという発表を聞いてキュッとやってみたいなと思いました…

【ポエム】穴の空いたバケツに水を万杯に入れるには

穴の空いたバケツがあったとしてそこに水を入れるとどうなるだろうか。答えは簡単で水はただ流れ落ちて溜まることことはない。そんなわかり切ったことをと思うかもしれないが実生活でも意図せず起きてしまいがちな問題である。わかりやすい例で言うと貯金な…

【MySQL】InnoDBはどのようにデータの破損を検出しているのか

この記事は「MySQL Advent Calendar 2023」の14日目の記事です! 一言で書くと InnoDBはdiskに書くときページ単位でCRC計算してるそれを使って検出してる 本文 MySQLに限った話ではないですがデータ自体が破損するケースは往々にしてあります。よくある(?)例…

【CUE】入門してみる

cuelang.org CNDTの懇親会の二次会とセッションでも触れられていたCUE言語ですが名前しか知らないが1日に2回も聞くってことはどこかで役に立つかも?ということでメモを置いておきます。 CUE言語とは? CUE is an open source language, with a rich set of …

Mackerel関連の好きなプラグイン/ツールTOP5

この記事はMackerel Advent Calendar 2023の11日目の記事になります!今年からお話をいただきMackerelアンバサダープログラムに参加させていただいています。せっかくなので個人的に好きなMackerelプラグインTOP5を書いていきます!! 5位 mashiike/shimesab…

カーネルトレースツールの雑メモ

perf、ftrace、SystemTap、kprobe、uprobe、DTraceあたりについてのメモ perf: Linuxカーネルに組み込まれているパフォーマンス解析ツールです。CPUサイクル、命令カウント、キャッシュミスなど、様々なハードウェアレベルのイベントを測定することができま…

【MySQL】レプリケーションはバックアップになり得ない理由

この記事は「🎅GMOペパボエンジニア Advent Calendar 2023」の9日目です!Otelについて書こうと思っていたら完全に忘れていたのでこちらです! 本文 MySQLにはレプリケーションによって同期されたデータベースサーバを構築する機能があって高可用性や負荷分散…

【BCC】killsnoopでシグナルの送信元と結果を監視する

github.com 突如死んでるプロセスがあってシグナルを受けてるのところまではわかったがどこから受けてるのかがわからず困っていたらkillsnoopというツールがbccにあったので使ってみた。これはkill(2)によって送信されるシグナルを追跡する機能を提供してい…

【Perl】ファイルの末尾の改行が2つ以上なら1つにしなければ追加するワンライナー

perl -pi -e 'BEGIN{undef $/;} s/\n*\z/\n/' filename.txt BEGIN{undef $/;} ファイル全体を一つの文字列として扱う。特殊変数$/(入力レコードセパレータ)を未定義にする s/\n*\z/\n/ ファイルの末尾にある0個以上の改行(\n*)を単一の改行(\n)に置換

【Linux】firewalldがnftablesを使えるようになったのはいつか

この記事はLinux Advent Calendar 2023の3日目の記事です。 firewalld.org 2018年7月12日にリリースされた0.6.0から利用が可能になっているのがリリースノートからわかった。ちなみにFirewallBackendを切り替えることでiptablesとnftablesの切り替えはできる…

【WASM】WebAssemblyに再入門してみた

この記事はGMOペパボエンジニア Advent Calendar 2023とWebAssembly Advent Calendar 2023の2日目の記事です! 目次 目次 背景 WASM WASMとは WebAssembly テキスト形式 特徴 WASMの歴史 どれくらいの性能なのか 安全性 触ってみる WASIとは 現在はPreview版…

【入門】Journal

この記事は Linux Advent Calendar 2023 の1日目の記事です! journalとは journalとはsystemd環境におけるログ管理システムjournaldによって出力されたログファイルを指します。journalとういう言葉自体は訳すと「雑誌,学術誌,会報,新聞」らしいです。sy…

【Go】otelでspanにattributeを付ける

SetAttributesを使うことで実現できる。例えば以下はtraceの情報にAddという関数の引数をattributeにつけることで情報が追加される。 package calc import ( "context" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" ) var tracer = ote…

【CLI】jqでlessして色をつけたい

lessに-Rをつけて -R or --RAW-CONTROL-CHARS Like -r, but only ANSI "color" escape sequences and OSC 8 hyperlink sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly, provided that there are no escape …

サービス稼働中にMySQLのプライマリDBがメジャーアップデートされたらどうなるのか

考えただけでも恐ろしいが考えてみる。どれくらいのダウンがありそうだろうか。ざっと考えると1~4までは大体決まった作業になりそう。ただ問題は5でこれを焦りながらやるのはメンタルやられそうだなぁと思った。いやーそうならないようにしよう。 1. シャッ…

【Go】GOOS=wasip1でビルドしたwasmでTCPサーバを起動する

github.com wasip1ではネットワーク関連の機能が一部しかサポートされてないので使えないと思っていたがstealthrocket/netを使うことでできる模様。 こんな感じのDockerfileを用意しておく。このライブラリではWasmEdgeをサポートしているらしいのでそちらを…

fzfで画像のプレビューが可能になった

github.com 結構欲しかったやつでめっちゃとても便利。撮った写真をDropboxとかNASに移すときにFinderだと常にリスト表示してるのでCLIで操作できたらなと思っていたので嬉しい。0.44.0を入れれば使える。

Redisの25倍のスループットを出したDragonflyのロマン

目次 目次 書いた背景 Dragonflyとは スループット25倍の話 計測方法次第ではRedisと性能差はそこまでないってこと? どうやって性能を出しているのか ロックマネージャーとは VLLの実装をGoで書いてもらった まとめ/感想 参考資料 書いた背景 ChatGPTで論文…

Cache-Control: max-age=Xがない時のブラウザキャッシュ

レスポンスにCache-Control: max-ageがない場合って何も考えずにクライアントにキャッシュされないと思っていたがどうやらそうではないらしい。この挙動自体はRFCでも定義されている。HTTP は可能な限りキャッシュするように設計されているので、Cache-Contr…

【ポエム】アウトプットへのネガティブコメントはどう受け取るのが良いのか

前職時代の後輩と久々に飲みにいってブログ書くと炎上とかまさかりが怖くて〜みたいな話をしていて色々考えがまとまってなかったので書いてみる。「この考えは間違っている」や「こんなのも知らないのか」とか「こんなのやってる暇あるなら仕事しろ」とか今…

【MySQL】slaveでもbinlogを更新するにはlog-slave-updatesが必要

dev.mysql.com リードレプリカでbinlogが更新されないなぁと思っていたらlog-slave-updatesがオフになっていて更新されていなかった。これはレプリケーションソースサーバーから受信した更新を、レプリカ独自のバイナリログに記録するかどうかを決めるための…

php-fpmのセッションの保存先

[Session] session.save_handler = memcache こんな感じで定義することでファイル以外のハンドラを設定することができる。 www.php.net 上記のサンプルだと以下のライブラリを使うように設定してある PECL :: Package :: memcache ちなみにmemcacheとmemcach…

三陸沿岸道路ドライブですずめの戸締りの聖地巡礼をしてきた

すずめの戸締りのブルーレイを買って見返してたら割と近場に色々あることに気づき久々の長時間運転で回ってきた。朝に行こうって決めてホテル取って300キロくらいの中距離ドライブだったけどあんま疲れなくてまだギリギリ20代であることに感謝の気持ちが芽生…

【MySQL】mysql can't reopen union

MySQLの仕様として一時テーブルはテーブルを再オープンできないので一つのクエリ内では複数回参照するということができない。 mysql> desc employee_table; +---------------+--------------+------+-----+---------+----------------+ | Field | Type | Nul…

mysqlslapを使ったロードエミュレーション

dev.mysql.com mysqlslapは,MySQLの負荷をエミュレーションできるクライアントアプリケーション。MySQLが公式でサポートしているツールになります。並列実行数やSQLの自動生成など機能豊富で色々な負荷試験ができそうです。MySQLをインストールすると、デフ…

performance_schema.data_locksとperformance_schema.data_lock_waits

今更すぎるがMySQL 8.0から入ったperformance_schema.data_locks・performance_schema.data_lock_waitsあたりを学んでメモしていく。 performance_schema.data_locks dev.mysql.com performance_schema.data_locks は、MySQLデータベースのパフォーマンス監…

Performance InsightsとPerformance Schema

docs.aws.amazon.com RDS for MySQLでも使えるPerformance InsightsだがPerformance Schemaを有効化している状態だとソースレベルの処理時間が取れないということがわかった。オンにしているとこんな感じでイベント単位の処理時間しか見えない。もちろんこれ…

opentelemetry-go-instrumentationで自動計装を試す

github.com 対象のアプリケーションを書く net/httpを簡単なwebサーバをターゲットにします。 package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello") } func main() { http.Handle…

共有ライブラリをプロセスを再起動させずに更新させたい

動的ライブラリはプロセスの起動時にリンクされ以降はメモリにマップされたものを使い続けます。ただ動的とはいえプロセスを起動した後にライブラリを更新したとしても起動済みのプロセスには何もしなければ置き換わることはありません。再起動がしやすい環…

Vue.jsに入門し始めた

思い切ってなんかを始めようと思ってVue.jsに入門し始めた。フロントエンドは新卒研修とちょっとだけ開発をしたくらいで正直なんもわからんので0からやっていく。始めようと思った経緯は特にないけどしばらく入門してなんか作ってみようかなぁと思う。