Unyablog.

のにれんのブログ

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万点ぐらい足りなかった。 まあ学生の中だけで考えると上の方に位置して…

systemd-nspawn 235 のコンテナで mlock を行う

systemd-nspwan で Elasticsearch の運用をしている。親のホストは ArchLinux なので新しい systemd が入ってくる。 ある日、 pacman -Syu して systemd を 234 から 235 に上げたら Elasticsearch がエラーで落ちるようになった。 [2017-10-19T07:10:13,955…

sssd: sssd では ldapi は使えない

ドキュメントを読めば ldap[s]://<host>[:port] と書いてあるので当然である…。気をつけましょう。 linux.die.net 特に使える予定もなさそう。 Bug 627763 – sssd: connection problems with ldapi</host>

ldap: "additional info: objectClass: value #0 invalid per syntax"

slapd のセットアップで、ドキュメントに基づいて # cat ~/admin.ldif dn: dc=example,dc=com objectClass: organization objectClass: dcObject dc: example o: example dn: cn=admin,dc=example,dc=com objectClass: organizationalRole cn: admin を ldap…

OCaml 入門途中の感想

最近京大の五十嵐先生が公開しているテキストを使って OCaml に入門していた。 このテキストは object まで行かないので入門したとは言えそうにないが、一区切り付いたので初心を記録する意味で雑に感想を書いておく。 主に Haskell を考えながら書いていま…

pipenv を使ってみる

Python における bundler といえば (超ざっくり言えば) virtualenv になるのですが*1、イマイチ使いにくいなと思っていたら pipenv というものが登場していた。ちょっと使ってみたのでメモ。 何するやつ github.com Pipfile(.lock)を元に良い感じに virtuale…

vim-keymaps でキーマップを簡単に切り替える

vim

Vim のキーマップを簡単に切り替えられるプラグイン、 vim-keymaps を作りました。 github.com 下のように、複数のキーマップを設定することができ、簡単に切り替えることが出来ます。下では <C-k> でキーマップを切り替えています。 今すぐダウンロード! 使い方</c-k>…

zsh の色付き vcs_info を一行上の右端に出す

書いておかないとあとで分からなくなるのでメモ。 序 zsh 便利ですよね。vcs_info も便利ですよね。 vcs_info は名前の通り VCS の情報を出してくれる君です。 zshのターミナルにリポジトリの情報を表示してみる · けんごのお屋敷 本題 最近 zsh のプロンプ…

Shell の pipe と redirection を実装する

新年なので Shell の pipe と redirection を実装した。 前回の記事はこちら nonylene.hatenablog.jp 前回実装してみて、さすがに pipe と redirection ぐらいは実装しておいてもいいのでは?と思って実装してみた。 pipe github.com パイプについての説明は…

Mackerel Agent for Android

この記事は Mackerel アドベントカレンダー 21 日目の記事です。 qiita.com Mackerel について Mackerel とはサーバーを監視するサービスで、Slack などとの連携が便利だったりグラフが美しかったりと良いサービスです。 Mackerel にデータを送るためのサー…