Unyablog.

のにれんのブログ

eBPF: bpf_skb_store_bytes の BPF_F_RECOMPUTE_CSUM は tc_cls の egress では動かなさそう

最近 bpf についてめっちゃ書いてるけど、ドキュメントが弱く検索しても情報がないからです… bpf_skb_store_bytes には BPF_F_RECOMPUTE_CSUM というフラグがあって、ドキュメントによると store 後にチェックサムを更新してくれるらしい。 しかし、これを t…

eBPF: sk_skb は parser と verdict どちらも attach する必要がある

eBPF で sk_skb (BPF_PROG_TYPE_SK_SKB) を使うとき、 parser と verdict どちらも attach する必要がある。一方だけを attach しても上手く動かない。 環境は ArchLinux で Kernel release は 5.7.10-arch1-1。 $ bpftool prog attach pinned /sys/fs/bpf/s…

eBPF: BPF_MAP_TYPE_SK_STORAGE が Invalid argument

Linux の eBPF で BPF_MAP_TYPE_SK_STORAGE を使おうとして、map を定義して bpftool で流し込んだけど Invalid argument でうまく動かなかった。調べてもヒットしなくて長時間費やしたのでメモ。 環境は ArchLinux で Kernel release は 5.7.10-arch1-1。 T…

個人で運用しているサーバーを Kubernetes に整理する

個人で運用している VPS に Kubernetes を乗せて既存のシステム(Web アプリとか Slack Bot とか Cron ジョブとか)をガッと移行した。 もともとは itamae 使って Systemd でサービス立ち上げていたのだけど、ソフトウェア依存とか権限分離とか冪等性とか面…

別のサブドメインの cookie をセットできるのか

できない。 疑問 foo.example.com で Domain=bar.example.com をセットできるのか? Domain=example.com はできる Domain=example.net はできない 答え できない。 The user agent will reject cookies unless the Domain attribute specifies a scope for t…

HTML を LDIF で書くのを HTML で書くために html2ldif を作った

という記事を書きました。まだ3時こしてないので25日です。 ku-ldif.github.io

LDIF で HTML を書くために ldap2html を作った

という記事を書きました。 ku-ldif.github.io

Poetry を使ってみた

この記事は KMC 2 Advent Calendar 2019 3日目の記事ということにしました。 Poetry Python の Dependency Manager は pipenv が有名で、自分もリリース当初から使っていた。ただ、最近はリリースが一年間されておらず、割と不安な状態*1。 最近は pipenv へ…

iTerm2 JISキーボード 文字 拡大 Karabiner-Elements

iTerm2 で文字を拡大するショートカットは ⌘ + である。 JISキーボードでは + は Shift ; を入力することになるので、⌘ + は JIS では Shift ⌘ ; が入力される。 一方 iTerm2 では、Shift ⌘ ; が Open Command History に割り当てられている。このため、JIS…

YAML から JSON に変換するツールを Nim で書き、GitHub Actions でリリースする

最近 config が YAML になっているアプリケーションが多い。ただ、自分は YAML の読み書きが苦手である。 設定を書くには機能が多すぎるのと、(config なので)ネストしやすいのにインデントが関わってくるのが苦手なのだと思う。 何度かハマった結果、これ…

NFS の負荷原因を見る方法

tcpdump でキャプチャする pcap を Wireshark で見て多く通信している先を眺める pcap を strings して中身を見る 多分これが一番早いと思います

VSCode 上で ESLint を使った TypeScript のフォーマット

https://github.com/microsoft/vscode-eslint を入れる VSCode のデフォルトフォーマッタを切る グローバルか、ワークスペース上の .vscode/settings.json などに書くと良い { "typescript.format.enable": false } TypeScript で ESLint が働くようにする "…

ISUCON9 予選に参加した(failed)

最近は O-Ku-Ri-Mo-No Sunday! にはまっている。めっちゃ良くない? ということで先日 ISUCON9 に参加した。 isucon.net チームは :innocent: で id:wass80, id:utgwkk と参加した。 全体的な話は utgwkk の記事を参照。 utgwkk.hateblo.jp 自分のやったこと…

各 OS の 802.1X 認証における RADIUS サーバーの検証方法

最近 802.1X 認証(WPA2 Enterprise)を構築していた。野良 RADIUS サーバーに Credentail を渡さないためには、サーバー証明書などで RADIUS サーバーの検証を行うことが必要である。 各 OS でどう検証できるかを調べたのでメモ。 今回はクライアントにサー…

Ansible で大量のホストに対して実行する場合のメモリ対策

Ansible で大量のホストを対象として Playbook を実行すると、大量の変数を保持する結果、メモリが足りなくなることがある。 以下はその対策。 gather_subset を用いて収集する fact を制限する Ansible は gather_facts(または setup モジュール)で大量の…

systemd 240 と Java の OOM

ArchLinux 上で Debian stretch を systemd-nspawn で立ち上げているのだが、最近 pacman -Syu したら Debian のコンテナで Java が立ち上がらなくなった。 原因 だいたいここに書いてある。 systemd 240 で RLIMIT_NOFILE が大きくなった Debian の PAM で…

レポジトリから直接ダウンロードした deb ファイルを自分で検証する

apt ではなく dpkg を直接インストールするとき、 http://security-cdn.debian.org/ 等から直接 dpkg をダウンロードする。 HTTPで取得した dpkg が改ざんされていないか気になったので自前で検証してみた。 具体的な構造は以下が詳しい。 kmuto.jp GPG Key …

mackerel-plugin-strongswan を作った

Mackerel アドベントカレンダーが空いていたので、半年ほど前に作ったプラグインの話を軽くします。22 23日目の記事です*1。 qiita.com 昨日は sfujiwara さんで、「Mackerel と連携する外形監視エージェント maprobe でマネージドサービスのメトリック収集…

脱 PuTTY をしようとした話

この記事は KMCアドベントカレンダー 11日目の記事です。 adventar.org 昨日は id:nakario_jp さんで、「KMCとボードゲーム「超人ロック」」 でした! nakario.hateblo.jp WSL で脱 PuTTY しようとして便利に暮らしているが、 Windows 側のツール群はまだ無…

tmux の if-shell は sh で実行される

tmux の if-shell ではシェルコマンドの結果に応じて実行するコマンドを変更できる。 今までここにバージョンによって設定を変化させるように書いていたが上手く動いていない時があった。 if-shell "[[ `tmux -V` =~ 2.[1-9]$ ]]" "set -g mouse on" 理由 tm…

ISUCON8 予選・本選に参加しました(チーム名 :thinking_face:)

3年前から参加している ISUCON の、予選と本選に行ってきた。 結果を先に書くと、 5981 点で学生5位、全体では14位だった。 チーム 名前: :thinking_face: メンバー: id:utgwkk, id:wass80 言語: Python ざっくり自分がインフラ担当、 utgw が SQL 等の改善…

This AVD's configuration is missing a kernel file! Please ensure the file "kernel-qemu" is in the same location as your system image.

久しぶりに Android Studio を立ち上げて、公式エミュレータを作って立てたらこの事象に遭遇して立ち上がらなかった。x86_64 だとエミュレーターは立ち上がるが、画面がブラックアウトし、 resizing partition e2fsck failed with exit code 8 とログには出…

zsh: typeset -Ug PATH

Zsh

自分の zshrc 内では、$PATH の重複を排除するために typeset -U PATH と書いていた。 普段はこれで上手く行くが、関数内で source ~/.zshrc すると zshrc 内でエラーが沢山出た。 $ cat ~/.zshrc ... function reload_zshrc { source ~/.zshrc } ... $ relo…

systemd の dbus のパス

よく混乱するのでメモ。 Init としての systemd /run/systemd/private systemd 専用の direct な socket。 なので、ここに投げたら直接 systemd に飛ぶ*1。 systemctl などはここに投げている。 systemd が直接 bind / listen しているので、 dbus-monitor …

Debian で systemd --user 時に dbus-daemon を起動する

systemd を user 単位で動かした際、主に CUI 環境では*1、 dbus-daemon は systemd が内部で用いるものしか生成されない*2。 このような状況で、dbus 経由で systemd 等を触りたい場合は dbus-user-session を入れると良い。 Debian -- stretch の dbus-use…

Jenkins でローカルレポジトリを github のレポジトリに同期する

Jenkins でローカルにあるレポジトリから github に同期したい。pipline で行う場合、 GitPublisher Plugin が使えないので、自分で git push する必要がある。 1. cred-id で github にアクセスするためのユーザー名とトークンを Jenkins の credential に…

Actions on Google SDK を用いた Action の開発で詰まった点

Google Assistant 用のアプリケーションを開発するときは Actions on Google SDK を使う。 よくあるのは Dialogflow 経由で設定して Firebase などで返答を決定するものだが、 Actions on Google SDK というものもある。 これを使えば、json で Action につ…

systemd-nspawn に関するメモ (--as-pid2 / ネットワーク関係)

--as-pid2 指定されたものを pid 2 で実行する。pid 1 には STUBINIT が入り、pid 1 に課せられた仕事を代わりにやってくれる(シグナル処理等)。何か(実質)シングルプロセスで立ち上げたい時はコレ使ってると良さそう。 root@piyo:~# systemd-nspawn --mac…

option が disabled の時の jQuery の select multiple に対する val の挙動

<select multiple> <option>foo</option> <option disabled selected>bar</option> </select> 上のような select を用いた時に、jQuery で選択中の値を取得しようとすると disabled な option は省かれてしまう。 jquery/val.js at 56136897f241db22560b58c3518578ca1453d5c7 · jquery/jquery · GitHub bootstrap-select が上手く動かなくて…

ISUCON7 の予選に出た (95352点)

今年も isucon に参加した。 id:tyage と id:non_117 と一緒に参加した。 isucon.net max 113846、最終的なスコアは 95252 だった。言語は ruby 。今年は社会人枠で出たので本戦には10万点ぐらい足りなかった。 まあ学生の中だけで考えると上の方に位置して…