ぶていのログでぶログ

思い出したが吉日

Fukuoka mruby Kaigiでmrubyで始める自作シェルというタイトルで発表した

2022/10/15にオンラインで行われたFukuoka mruby Kaigiに参加しそこでmrubyで始める自作シェルというタイトルで発表しました。 内容的には、このブログで定期的に開発報告しているreddish-shell(自作シェル)の話です。 ワンバイナリでシステムコールを駆使し…

fish-shell向けのopenstack-cliの補完スクリプトを作った

数年前に作りかけで放置していたのだが、数日前に「どうやって使うの?」っとコメントがついて慌てて作った…という感じ。 github.com 使い方 READMEに書いてあるとおりで pip install . して eval "$(openstack complete --shell fish)" すれば使えるように…

Windows11でVmmemWSLのCPU使用率が高くなる

Windows11で休止状態、スリープから復帰するとVmmemWSLプロセスのCPU使用率が高くなりWSLの操作が全くできなくなるという事象が発生した。 この状態になると wsl --shutdown もできずOSごと再起動しないといけなくなるという状態で不便だった。 この問題は以…

Ubuntu 22.04 on WSLをUbuntu 22.10にアップグレードした

Ubuntu 22.10がリリースされた。 ubuntu.com WSL上で動いているUbuntu22.04を22.10にアップグレードした。 デフォルトではアップグレードできないようになっているので、 /etc/update-manager/release-upgrades を修正してアップグレードできるようにしてお…

Windows10/11のWSL2でDocker Engineを使う

最近、私に支給されている会社PCがデスクトップLinuxからWindows*1になったので環境を整えている。 デスクトップLinuxからWindowsになって一番困るのは環境構築である。 しかしながら、最近のWSLはかなりよくできていてデスクトップLinuxと同じような感じで…

Ubuntu22.04でRubyのERROR: OpenSSL::PKey::PKeyError: rsa#set_key= is incompatible with OpenSSL 3.0を回避する

Ubuntu22.04からOpenSSLが3.0になった。 OpenSSL3.0には後方互換があるようだが、いくつかのライブラリではうまく動かない場合がある。 例えば、Rubyのnet-sshである。 この記事のタイトルにあるとおり、ERROR: OpenSSL::PKey::PKeyError: rsa#set_key= is i…

Wasmer CLIでruby.wasmを試してみる

reddish-shellに使えるか技術検証のためにruby.wasmを試してみる。 最終的にはRustに組み込むことになると思うのでランタイムにWasmer - The Universal WebAssembly Runtimeを使う。 WasmerにはCLIがあるのでそれを使ってみる。 Wasmerのインストール手順は…

Sparrow62(+1) v2をPRK Firmwareで動かす

Sparrow62(+1) v2キーボードはRasberry Pi Picoをメインとして構成されている。 Rasberry Pi Picoで動きそしてRuby(Pico Ruby)で動くキーボードファームウェアとしてPRK Firmwareがある。 github.com Sparrow62(+1) v2でPRK Firmwareを動かしてみたという備…

onelogin-ruby-sdk v3.0.0-alpha.1を使う

注意: この記事で紹介しているonelog-ruby-sdk v3.0.0-alpha.1は開発版であり今後大幅に変更される可能性がある OneLoginのAPIをRubyから操作するライブラリとしてonelogin-ruby-sdkがある。 OneLogin公式が提供しているライブラリで安心感があるのだが、こ…

自作キーボードキットSparrow62(+1) v2を組み立てた

4年前くらいにErgoDashを組み立てて以来愛用してきたのだが、ガタが来たのかここ最近調子が悪かった。 具体的には * USBケーブルを下側に抑えないと認識しない * 左右のキーボードをつないでいるTRSケーブルがずれると起動しない * 3キーを押すとedcも入力…

最近の私のissue、Notion、Slackの使い分け

会社において情報を蓄積ツールが複数ある。 GitHub Enterprise(以下GHES)のissue Notion Slack これらの使い分けについて最近うまくできている感じがするのでブログに残しておく 結論 issue: 作業した内容のサマリ、結果を書く Notion: 作業のログをベタで貼…

フレッツ光(VDSL方式)からauひかりマンションタイプGに変更して高速インターネットを手に入れた

こんにちは令和のインターネット! 引越しで1番懸念だった低速インターネット問題が解決した! 嬉しいのでブログに書いておく。 私のインターネット遅すぎ?!(いつもの画像) ことの始まりはモンハン。 モンハンをオンラインでマルチプレイしてたところめち…

Terraformでfor文とfileset関数を使って複数の設定ファイルの読み込みをDRYに書く

Terraformにおいて例えば、A,B,Cという種類のサーバの属性がありそれぞれモジュールで定義されていて、それらに属するサーバが複数あると行った場合、何も考えずに書くと以下のようなコードになると思う。 locals { servers_a = { node-a-1 = "192.168.0.1",…

Ubuntuで使用するカーネルを変更する / grub-set-defaultを有効化する

Ubuntuに限らないが、Linuxディストリビューション(以下、ディストリ)ではLinuxカーネル(以下、カーネル)を起動時に指定して変更することができる。 基本的にはディストリが標準で提供しているカーネルを使えば良いと思うが、カスタムカーネルを入れたい場面…

lsblkでIOスケジューラを確認する

-o オプションに SCHEDを追加するか、もしくは -O オプションをつけることでIOスケジューラを確認できる。 # -o SCHEDの出力例 $ lsblk -o NAME,TYPE,SCHED /dev/vda NAME TYPE SCHED vda disk mq-deadline ├─vda1 part mq-deadline ├─vda14 part mq-deadlin…

PromQLでN日前のグラフと比較する

毎度忘れてそのたびに色々検索するのでブログにメモしておく。 結論から書くとoffset modifierを使うと実現できる。 prometheus.io 例えば、exampleサーバの5分間のCPUの%idleを取りたい場合は以下のように書くと思う。 sum by (mode)(irate(node_cpu_second…

Rust: assertの出力に色を付ける

before/after cargo testで大きめの構造体をassertすると↑のbefore画像みたいにとても長い出力になる。 長すぎてどこに差分があるかわからなくてとても苦労する。 そこで、afterのように色をつけるスクリプトを作ってみた。 #!/usr/bin/env ruby require 'te…

Ubuntuでlivepatchが有効化できない / error: cannot install "canonical-livepatch"が出たときの対処

有償サポートのUbuntu Advantage(以下UA)に契約するといくつかの機能が使えるようになる。 例えば、セキュリティアップデートが5年伸びるExtended Security Maintenance(ESM)や再起動せずにカーネルのパッチを当てられるLivepatchがある。 UAを契約するとト…

kittyからZellijにしてみたけど結局Alacritty+tmuxに戻ってきた

今年のはじめにAlacrittyからkittyに移行しているという記事を書いてそれ以来kittyを使っていたのだが、色々あって結局Alacritty + tmuxな元の環境に戻ってきてしまった。 それまでの変遷とか思ったことを書いておく。 kittyとの出会いと別れ kittyとの出会…

gzip/zgrepの脆弱性CVE-2022-1271を調べた

2022/04/07にgzip/zgrepの脆弱性CVE-2022-1271が見つかった。 cve.mitre.org security.sios.com すでに主要なディストリビューションでは対応が終わっている脆弱性ではあるが、gzip/zgrepがシェルスクリプトで書かれているので、シェル芸人としては気になる…

Chefのruby_blockからリソースを制御する

※ Chef + Knife-Zeroな環境を想定してこの記事を書いている。 かなり特殊な状況ではあるが、chef-clientの実行ユーザがubuntuのときにはubuntuユーザの削除を行わないということがしたい。 想定状況としては、Ubuntu VMを新たに立ち上げてbootstrapをかけ、…

live-migration-notifierをGolangにポーティングした

以前、OpenStackのlive-migrationをSlackに通知するくん通常live-migration通知くんというものを作った。 tech.buty4649.net ブログに書いて依頼、実際に会社のOpenStack環境で安定して稼働していた。 Rubyのアップデートでも特に問題なく稼働していた。 し…

grafana-rrd-serverでcollectdなどのRRDファイルをGrafanaで表示する

会社ではGitHub Enterprise(以下、GHES)を使っている。 GHESの管理コンソールにはMonitorタブがありそこで様々なメトリクスを見ることができる。 ここで見られるデータはcollectdで集計されているらしく外部にcollectdを設置することでexportすることができ…

再起動/削除/変更コマンドの頭に空白をつける

bashやzsh、fishなどではコマンドラインの先頭に空白をつけることで、そのコマンドラインだけhistoryに残さないという機能がある。 以下、fishでの実行例。 # 通常の操作だとhistoryに残る ❯ echo hello hello ❯ history -n 1 echo hello # 頭に空白を入れる…

UTCからJST/JSTからUTCの変換をワンライナーで行う

AWSからくるメンテナンスのお知らせがUTCだったり、ときどきログやグラフのタイムゾーンがUTCになっていたりする。 そんなときにJSTへシュッと変換したくなる。 dateコマンドは現在設定されているタイムゾーンで表示できるのと、-d オプションを指定すること…

Ruby向けのLINSTOR APIクライアントを作った

LINSTORはLINBIT社が出しているSoftware-Defined-Storageを実現するためのミドルウェアである。 もともとはdrbdadmの代替として登場したと記憶しているが、いつのまにかDRBD以外の管理もできたりk8sやOpenStackから利用できるようになっている。 linbit.com …

Alacrittyからkittyに移行している

普段使うターミナルはAlacrittyを使っていた。 速度や機能など特に不満はなかったが、面白そうなのでkittyに移行している。 sw.kovidgoyal.net kittyとは Alacrittyと同じGPUベースのターミナルで、独自の機能としてターミナルプロトコルの拡張がされていた…

2022年抱負

毎年うっすら抱負的なものを考えるものの、ブログなりで表明してこなかったために年末に振り返ることができなかった。 振り返りができないと、何が悪くて目標が達成できなかったのかと分析できないし、次の年につなぐこともできない。 思いつきではあるが、…

FileNameCopyを公開停止します

先程、FileNameCopyの公開停止をVectorに申請して非公開となりました。 今までのご利用ありがとうございました! FileNameCopyとは ほとんどの人は知らないと思うのでFileNameCopyについて説明する。 これは、Windows向けのフリーウェア*1で、15年くらい前(!…

📝 snap版multipassで launch failed: Remote "" is unknown or unreachable. が出たときの対処

snap start/snap stopすれば直ると思われる。 ❯ sudo snap stop multipass Stopped. ❯ sudo snap start multipass Started. 以下、調査ログとか憶測 launch failed: Remote "" is unknown or unreachable. で検索すると真っ先に出てくるのが以下のissue。 gi…