ぶていのログでぶログ

思い出したが吉日

(Linuxデスクトップ) CapsLock <-> Ctrlの入れ替えをudevで行うようにした

GMOペパボアドベントカレンダー2021。今日から始まりました! …が、これはその記事ではないです。doewくんの記事楽しみですね。 さて、本題。 今まで、CapsLock <-> Ctrlの入れ替えをgnomeの機能の行っていた。 具体的には以下のコマンドを実行する、もしく…

Rustでmrubyの拡張を書く

reddish-shellでRustからmrubyを呼び出すことができたので、逆もできないかと思って試してみたらすんなりできたのでメモしておく。 前提: rust-mruby crateを使う mrubyのAPIをRustから呼び出すためには、mruby.hをRustで定義し直す必要がある。 拙作のrust-…

reddish-shell 開発進捗 v0.11.0 | Rust化完了

満足するところまで作れたのでv.0.11.0をマージした。 Rustで作り直す前にはあった機能を一部実装していない*1があるが、一旦区切りをつけたかったのでマージした。 割り切り重要。Done is better than perfect. いや意味するところは違うと思うけど…。 前回…

reddish-shell v0.11.0-beta4 開発進捗 | パイプライン、バックグラウンド実行、コマンド置換の実装

最近の開発状況をば。 コミット * e8e8867 Add command substitute * 3e7b5fe Moved internally reserved fd * a0c531f Improve pipeline and background * 7bb1db7 Improve background process and pipeline * 4d39b7f Replace FdSize to RawFd * 1cf7c73 I…

シグナルマスクのビット列をシグナル名に変換する

psコマンドの -o sigmask や、/proc/$pid/statusのSig〜は16進数の文字列で表示されていて、該当するbit数のシグナルにフラグが立っているというような見方になっている。 例えば、ps -o sigmaskで1の位が3ならHUP(1)とINT(2)がマスクされていることになる。…

reddish-shell v0.11.0-beta3 開発進捗 | コマンドの実装とRust 1.56.0

今の進捗↓ コマンドの実行を実装 変数を利用できるようにした cmd1 && cmd2 と cmd1 || cmd2を実装 if/unless/while/until/for文を実装 コマンド履歴機能を有効化 Rust 1.56.0 / 2021 editionを使うようにした 最低限の機能を実装したので少しはシェルっぽく…

Ubuntu 16.04でtftpdがunknown option -?を出力するときの対処

tftpdを削除してtftpd-hpaを入れ直す $ sudo apt install -y tftpd-hpa # tftpdも一緒に削除される 経緯 cobblerサーバをメンテしていたらtftpdが起動していないことに気がついた。 tftpdはxinetd(!)経由で起動されているので jounalctl -fu xinetd したとこ…

reddish-shell v0.11.0-beta2 開発進捗 | パーサーとレキサーの再実装完了

前回書いたとおりRustで再実装をしているのだけど、パーサーとレキサーの再実装ができた。 Rustでの再実装前と同等の機能までは実装できると思うが、%記法については実装を見送った。 github.com %記法の実装見送りについて Rubyっぽい記法を取り込みたいと…

Rustのprintln!やformat!で{}を出力する

println!やformat!のプレースホルダとして使われている {} がうまく出力できなくて悩んでいたけど、解決したのでメモしておく。 結論から書くと2つ重ねるとエスケープされるのだった。 { を出力したいなら {{ 、 } を出力したいなら}} とすればよい。

reddish-shell v0.11.0? 開発進捗 | Rustで再実装

久しぶりにreddish-shellのアップデート(?)なのだけど、Rustで再実装している。 なんでまた…っと思われるかもしれないが、意図が明確にあってそれは高速化である。 前にブログに書いたかもしれない*1けど、今のreddishは果てしなく遅い。 原因はいくつかある…