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

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

2023-01-01から1年間の記事一覧

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

すずめの戸締りのブルーレイを買って見返してたら割と近場に色々あることに気づき久々の長時間運転で回ってきた。朝に行こうって決めてホテル取って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からやっていく。始めようと思った経緯は特にないけどしばらく入門してなんか作ってみようかなぁと思う。

memcachedでproxy機能を使う

github.com ビルド FROM ubuntu:23.10 RUN apt-get -y update \ && apt-get -y install \ vim \ autotools-dev \ automake \ build-essential \ libtool \ libevent-dev \ libssl-dev \ libboost-all-dev RUN apt-get -y install \ git \ wget \ && wget htt…

glibcを2.38をビルドインストールするとに出たエラーメッセージ

configure: error: you must configure in a separate build directory ディレクトリを分ける必要があるらしい configure: error: *** These critical programs are missing or too old: make gawk bison python *** Check the INSTALL file for required ve…

SQLのジョイン

ハッシュジョイン: 片側のテーブル(データベースが小さいと見積もられるテーブル)の結合キー項目で、メモリ上のハッシュテーブルにデータを格納する。もう片方のテーブルを読み込みながら、ハッシュテーブルと突き合わせる。ハッシュテーブルを作成する処…

技術書を読む

2023年目標・AWS SAP取得・年間50冊は本を読む・年間100記事以上ブログ書く・カンファレンス登壇・体重75キロあたりを維持する— RyuichiWatanabe@gurasan (@ryuichi_1208) 2022年12月30日 今年の目標だった年間50冊の技術書読了を達成していた。これらの本の…

SRE NEXTのスタッフをやった

9月29日に行われたSRE NEXT 2023にスタッフで参加しましたので振り返りとかを書きました。 sre-next.dev SRE NEXTとは 信頼性に関するプラクティスに深い関心を持つエンジニアのためのカンファレンスです。 同じくコミュニティベースのSRE勉強会である「SRE …

トランザクション分離レベル

www.infoq.com トランザクション分離レベルってREAD UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLEあたりは知っていたが実はそれ以外にも仕様があるらしい。ちなみに現場で使ったのはREAD COMMITTED、REPEATABLE READぐらい(ポスグレとMySQL…

【MySQL】一貫性非ロック読み取りが嬉しいケースに関する考え

dev.mysql.com この機能の嬉しいポイントはなんだろうって考えていた。機能の概要としてはトランザクション開始時点のIDを割り振ってそのID移行のレコードはスナップショットを読むというもの。複数テーブルから一貫したデータを読みたいケースってなんだろ…

head baseかtail baseか

分散トレースのサンプリングを見ているとhead baseやtail baseという言葉が出てくる。 前者はサンプリングするデータの一番最初にfilterにかけるという手法。トレースはランダムにサンプリングしたり特定のアトリビュートに基づいてサンプリングをする。トレ…

error decoding 'exporters': unknown type: "jaeger" for id

jaeger exporterなくなったの?ってびっくりしたがjaegerがotlpにnativeサポートしたためdeprecatedになっていたらしい。先週でた0.85.0で削除されたとのこと - `jaegerreceiver,jaegerremotesamplingextension`: Add featuregates to replace Thrift-gen wi…

分割統治法を使ってタスクをこなす

大きかったり難しい課題をこなすとき、課題を細分化して簡単な課題に落とし込むことは、問題解決の基本の考えです。分割統治法の考えあたりが個人的にはとても参考になったりしました。この方法はタスク自体を細かく分けて進めやすくするだけでなく大きなタ…

【MySQL】binlogとredoログの2PC

Auroraにはenhanced binary logというのがあるのか。2PCの一部をストレージでやる。https://t.co/pE4Gmnw7mr— RyuichiWatanabe@gurasan (@ryuichi_1208) 2023年9月17日 Auroraの機能で2PCに対する最適化を行うというのがあった。そういえばbinlogとredoログ…

leakey bucket

github.com go-redisを用いたレートリミットのうちleakey bucketを使った実装。rateLimit()でレートリミットを実現している。設定しているのはredis_rateでどれくらいの流量を通すかを決定している。 package main import ( "errors" "fmt" "log" "net/http"…

【ポエム】専任か兼任か

何かのプロジェクトに関わる際に専任の方が良いのか兼任で別のプロジェクトをやりながら兼任でやるのが良いのかについてのポエム。個人的には兼任的な働き方が良いと思っている。 専任か兼任か 兼任のメリットとして「多様な経験を得ることができる」という…

Clear Linux

Clear Linuxは、Intelによって開発されたLinuxディストリビューションで、Clangでビルドされたカーネルを採用している。Intelプラットフォーム向けに最適化されており、高性能を重視しているらしい。

Prometheus が OpenTelemetry メトリクスをサポートしたので触ってみた

horovits.medium.com 先日公式リリースでサポートした話と次のリリースで入るって言ってたやつがリリースされていた。 github.com Dockerfile Docker Imageまだなかったのでバイナリを持ってくる必要があった。 FROM ubuntu:22.04 RUN apt-get update -y \ &…

何かを辞める大変さ

何かを始めるのと同じようにに何かを辞めるのって難しいと感じる日々を過ごしている。仕事を通して実感したのだがこれは別に仕事に限らず日常生活においても言えることであると気づいた。サンクコストの呪縛というやつなのか。 www.nli-research.co.jp

【Go】クライアント切断を検知する

pkg.go.dev Request.Context()を使うことでクライアントが切断したことをアプリケーションから検知することができる。一般的なhttpでの処理は以下のようになっている。そのうち5番まで処理が進んだ状態でそこから処理キャンセルをすることができるというので…

ingress-nginxでOpenTracingを試す

kubernetes.github.io ingress-nginxにはOpenTracingを入れれるオプションがあったので使ってみる 環境 kind ingressのデプロイ $ kubectl apply -f https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/master/deploy/single/all-in-one…

HTTP/3を試したい

コネクションマイグレーションは新幹線乗るたびに早く普及して欲しいと思っている(通信環境安定化もして欲しい、、)https://t.co/N4OQxmGCD8— RyuichiWatanabe@gurasan (@ryuichi_1208) 2023年8月18日 こんな投稿があったりして手元で試すにはどうやれば良い…

kubebuilder関連のメモ

kubebuilder kubernetes-sigs/kubebuilder Kubernetesを拡張するためのカスタムコントローラー/オペレーターを開発するためのフレームワーク client-go kubernetes/client-go KubernetesのAPIを実行するためのgoのモジュール controller-tools kubernetes-si…

OpenTelemetryのリンクメモ

open-telemetry/opentelemetry-collector OpenTelemetry Collectorのコアコードが置いてある open-telemetry/opentelemetry-collector-contrib コレクターの実験的およびベンダー固有の拡張機能が含まれている docker-composeとかサクッと試す場合はこっちを…

OpenTelemetryでCPU使用率やメモリ使用量などを取ってみる

opentelemetry-collectorでCPU使用率やメモリ使用量を取ることもできるのでそちらを使ってみます。 hostmetricsreceiverを使う CPUやメモリなどを取るにはhostmetricsreceiverというreciverが用意されているのでそちらを使います。設定もシンプルで取りたい…