Python で型アノテーションを使うとき、なんだかんだ # type: ignore したいときがあると思う。フィールドの全部が optional だけど、実際にはこのコードパスなら絶対 optional じゃない、とか。 API まわり触ってると割とよくある。 if foo is None とか as…
自分は ZSH のプロンプトを以下のように設定して、 現在 root user かどうかを判別できるようにしている。 PROMPT='${prompt_header} %~ %(!. !root! #.>) ' ! は Shell が権限を持ってる時に true になり、その時は ! root ! # が、そうでない時は > を出す…
Homebrew は便利だが、通常ログインしているユーザーでインストールするのでカジュアルに環境を変更できてしまうのがよくないと思っている。 (最近ではオプションが必要になったものの) pip install とかすると break system package してしまうし、セキュ…
Devcontainer を rootless 系のコンテナツールで利用するには podman がおすすめ(Docker rootless だと userns=keep-id がないのでコンテナ内から見たファイルが root 所有になってしまう)。 以前は userns=keep-id などをわざわざ runArgs に追加しないと…
Cloud Run で内部ユーザーを認証する際は IAP を使うが、 今までは LB が必要だった。今月のアップデートで LB がなくても Cloud Run で IAP が使えるようになったので便利という話。 まえがき Cloud Run での内部ユーザー認証・認可 Cloud Run と IAP の組…
Power Automate for Desktop ではショートカットキーを設定することができるので、そのショートカットキーを押すスクリプトを Task Scheduler を経由して実行することで定期実行ができる。 「Power Automate for Desktop Task scheduler」とかで検索すると方…
Powershell で wsl.exe の出力をそのまま操作しようとするとうまく動かない。 PS C:\Windows\System32> wsl.exe --list --running | Select-String "U" Windows Subsystem for Linux Distributions: Ubuntu (Default) PS C:\Windows\System32> wsl.exe --lis…
日本の植生図を見るための Web ビューワー、「シームレス植生図」を作って公開した。 シームレス植生図: https://vg67.map.nonylene.net/ 植生図の楽しさ 植生図というのは、それぞれの土地の植生(生えている植物の集団)を分類して地図に表示したもの。 日…
ISUCON 14 に id:utgwkk, id:wass80 と「ミレニアムサイエンススクール」というチーム名で参加した。 結果は 28875 点で 22 位!去年は fail して最下位だったので反省を活かすことができたのでは? 一昨年に Kibana / Elasticsearch / Filebeat で解析環境…
kubectl に自動で namespaceや context を付与するような wrapper を作るとする。 そんなコマンドのインターフェースとして、 $ kubewrapper [...wrapper flags] [kubectl args / flags] (例) $ kubewrapper -p staging describe pod ... とすると $ kubec…
この方法は使えなくなりました Windows 11 からかはわからないが、WSL2 がしばらく放置していると自動でシャットダウンされるようになった。 ターミナルや VS code を全て閉じるとシャットダウンされる傾向にあるようで、例えば ssh-agent や systemd の ser…
git-browse-remote を長らく使っていたが、最近の Ruby では動かなくなっており、インストール後に手で該当箇所を修正してしのいでいた。 ただ、もう Ruby / Gem はこれにしか使ってなかったというのがあり、環境を新しくした機会に Python で書き直した。 g…
プライベートで Google Cloud を使っていて、今まではあまり IaC は使わずポチポチでやっていた。GKE ぐらいしかまともに使ってるリソースがなかったのでそれでよかったけど、最近 VPS をやめて各種クラウドに寄せるようにしており、クラウドのリソースが増…
かなり昔に Elasticsearch ベースの検索システム(Heineken)を作っていた。 Elasticsearch で部内 Wiki 検索高速化 - Speaker Deck 特に更新せず数年動かしていたのだけど、サーバーの置き換えに伴って Kubernetes に置きたいよねという話になり、ついでに …
去年11月、Smiling Face with Halo というチームで ISUCON 13 に参加した。チームメンバーはいつもの id:utgwkk と id:wass80 。 スコアは 0! よって最下位!! 直前には 73k くらい出てはいた。 ちょっと遅くなってしまったけど、個人的に楽しい問題だったし…
久々に helmfile sync を行った結果、PodSecurityPolicy リソースなんか知らないという理由で Upgrade に失敗した。 $ helmfile dep && helmfile sync ... Error: UPGRADE FAILED: resource mapping not found for name: "descheduler" namespace: "" from "…
curl で通信の内容を見ながら詳細なデバッグをしたいとき、 tcpdump や Wireshark でパケットキャプチャを行うのが定番だと思う。ただ、通信が多い環境だと実際にデバッグしたい通信を絞り込むのが面倒だし、TLS だと暗号化されていてさらに面倒。 curl のオ…
eBPF の tc (classifier) を使ってパケットを触ってみる話をしたので、資料を貼ります。 docs.google.com eBPF は一度慣れるとかなり便利な仕組みで、見るべき場所が分かっていればそれなりに気軽に使うことができる。ただ、ドキュメントがだいぶ整備されて…
この記事は KMC アドベントカレンダー 14 日目の記事です。 adventar.org 前回の記事は id:crashrt さんでした。自分も百舌谷さん好きです! crashrt.hatenablog.com 背景 現在、Kubernetes クラスタに入れる Manifest を Flux (Fluxcd) を使って管理してい…
Kubernetes では kubernetes-dashboard という各種リソースを見るためのダッシュボードが提供されている。 ブラウザ上で色々確認できるので便利なのだが、ログイン時は下のように自身の token か kubeconfig ファイルをアップロードする必要がある。 Kuberne…
今回の ISUCON では Filebeat を使って Nginx のログを Elasticsearch に放り込み、 Kibana ダッシュボードで表示していた。 nonylene.hatenablog.jp なかなか役に立ってよかったものの、 /user/:userID/home のようなパスだと userID に様々な値が入ってし…
ISUCON 12 本選に出場した。結果は 167492 点で 7 位(結果修正後)。そこそこかな? isucon.net アプリケーション周りは utgw の記事を見ると分かりやすいです blog.utgw.net 予選の記事は↓。ブログ賞受賞とのことで、個人スポンサーグッズをもらえるらしい…
今年の ISUCON では Elastic Stack を使って MySQL のスローログを Kibana で可視化したが、いくつか課題があった。 パラメーターによってクエリが分散し、ボトルネックが分かりづらい MySQL スローログは生のクエリが記載されていて、Filebeat の MySQL モ…
ISUCON 12 予選にいつもの id:utgwkk, id:wass80 と :old_noto_innocent: チームで参戦した*1。 結果は 50696 点で本選出場! ここ数回と同様、自分はインフラと分析・観測を担当していた。ただ、毎年似たようなことをやっていてあまり貢献できていないなあ…
環境: Docker の elasticsaerch image 8.3.2 久々に Elasticsearch を Docker で立ち上げると、初期状態でセキュリティ機能が有効になっていて、そのまま curl しても認証が通らず API が打てなかった。 $ curl -k https://localhost:9200/ {"error":{"root_…
最近(2年以上前)、pip がデフォルトで --user でインストールするようになった。 github.com ただ、この機能が有効になるにはいくつかの条件がある。 The user has not explicitly specified otherwise in the command line, environment variable, or a c…
プライベートで GKE を Preemptible VM ベースで運用していた。だいぶ昔に Preemptible VM が Spot VM に変わるよという通知が GCP から来ていて 値段変わらないし 放置していたのだが、GKE のバージョンを上げるついでに Spot VM に変更した。 cloud.google…
TypeScript でオブジェクトのバリデータを作っている。それぞれの値ごとのバリデータは値の特性ごとに様々な関数がある((value: string) => Error[] のような形)。 時折 Optional な値があるものの、バリデータ自体は non-null な値のバリデーションに専念…
Prometheus の AlertManager は Slack などに通知を送る重要なコンポーネントである。 当然 Slack の Webhook URL といった Credential を設定ファイルに書く必要があるのだけど、AlertManager は強い意志で環境変数や複数設定ファイルに対応していないので…
Git でトピックブランチを切るときに、元ブランチで git pull し忘れて古いコミットから生やしてしまうときがある。 最新の変更を認識できなかったり、後々コンフリクトが起きたりと不便なことがままあるので、 Commit 前に HEAD がリモートリポジトリの HEA…