ぶていのログでぶログ

思い出したが吉日

Ruby

mruby-yyjsonを作った

前記事に続いてmrubyネタ yyjsonという高速でC言語から扱えるJSONライブラリがある。 github.com mattn.kaoriya.net これをmrubyから使えるようにしたmruby-yyjsonを作った github.com きっかけ rfではmruby-jsonを使っている。 mruby-jsonの処理速度に不満…

rfコマンドv1.18.1をリリースした / rfコマンドハンドブックの公開

久しぶりの更新。前回の更新はこちら。 今回のアップデートは機能の追加とかではなくmrubyのアップデートのみ。 mrubyで以下のPRがマージされたのでアップデートしたという感じ。 Fixed Binding#eval that failed to assign to the same variable by dearblu…

rfコマンドv1.18.0をリリースした

前回の更新はこちら。 あまり更新内容はないけど、細かくバージョンアップしていくポリシーなので気にしない。 What's Changed Features Update text filter to join array with spaces instead of newlines by @buty4649 in https://github.com/buty4649/r…

rfコマンドv1.17.0をリリースした

前回の更新はこちら。 rfコマンドのv1.17.0をリリースした。リリースしたのは1月の末なのだが、私が新型コロナウィルスに罹患してダウンしていたのでブログの更新が遅れた…。健康第一 Features Remove BufferedIO due to performance issues, introduce new…

rfを作っているときに得られたmrubyでCLIツール作成のTips

この記事はmrubyファミリー Advent Calendar 2023の22日目の記事です。 昨日は@kurod1492(黒谷 明大)さんのPicoRubyでMatz葉がにロボコンに挑戦でした。 私はrfというRubyで書けるCLIのテキストフィルタツールを作っています。 詳しくは昨日の記事を参照して…

rfコマンドの紹介: Rubyでテキスト処理を便利に

この記事はRuby Advent Calendar 2023の21日目の記事です。 Rubyでワンライナーでテキストの処理をしたいと思ったことはありませんか?ありますよね! そういったときに便利に使えるCLIツールのrfを作ったので紹介します。 モチベーション 具体例 インストー…

rfコマンド v1.13.0をリリースした

前回ブログを書いたときはv1.6.0だったので7個くらいアップデートした。 今回までのアップデートでかなり実用的な機能を実装したので常用にも耐えられるのではなかろうと思う。 v1.7.0だけリリースビルドをミスったのでv1.7.1になっている。しょうがない git…

rfコマンド v1.6.0をリリースした / Rubyでかけるワンライナーツール

前回ブログで書いたときはv1.4.0だったのでそこから2つほどバージョンアップした。 意識的にrfコマンドを普段遣いしていて*1気になったところと、jqコマンドのオプションの互換性を意識した変更をした。 github.com *2 github.com 主な変更点 -A オプション…

RubyのYAML.dumpは改行の前にスペースを置くとエスケープされる

RubyのオブジェクトをYAML.dumpしてYAMLの設定ファイルを作るというコードを書いているときに、掲題の挙動に気がついた。 通常、複数行が含まれる文字列をYAML.dumpすると |- を使った表記になる。 $ ruby -ryaml -e 'puts YAML.dump("foo" => "a\nb")' --- …

rfコマンドv1.4.0をリリースした

rfコマンドを普段遣いしていて気になったところをちょくちょく直していて、先程v1.4.0をリリースした。 前回ブログを書いたときはv1.1.0だったので3つほどバージョンアップした。 github.com github.com github.com 以下では、このバージョンアップによる変…

Ubuntu 22.04までのlibyamlだとvalueがないHashのキーをダンプすると空白が入る

root@e5432af20b73:/# ruby -v ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu] root@e5432af20b73:/# dpkg -l | grep libyaml ii libyaml-0-2:amd64 0.2.2-1build2 amd64 Fast YAML 1.1 parser and emitter library root@e5432af20b73…

rfコマンドv1.1.0をリリースした

github.com rfコマンドのv1.1.0をリリースした。 もう少し機能を追加してからにしようと思ったけど、サクサクリリースしていこう精神でバージョンを上げた。 以下、追加された機能や変更点の説明をする。 バイナリをstripしてファイルサイズを少し減らした c…

rfコマンドv1.0.0をリリースした / Rubyのコードでplain text/JSON/YAMLを整形できるCLIツール

Rubyのコードでplain text/JSON/YAMLを整形できるrfコマンドを作っている。 このrfコマンドのv1.0.0をリリースした。 といいつつも、前回のv0.2.0から大きく機能を増やしたということはなく、バグの除去やテスト環境の構築のみになっている。 だが、v0.3.0、…

CLIツールのテストフレームArubaを使うときのTips

前回の記事でrfというツールを作っていることを書いた。 記事を書いた時点ではテストコードが一切なかった。 さすがに、テストコードがないのは今後開発を続けていくのは不安なのでArubaを使ってテストコードを書いた。 github.com Arubaはあまり使い方を紹…

Rubyのコードでplain text/JSON/YAMLを整形できるrfコマンドを作った

github.com 2023/05/15追記: リポジトリのリンクを追加(thx: id:k1low !!) モチベーション 私はcliでテキストを編集するときはawk/sedを使い、JSONはjq、YAMLはyqを使っている。 それぞれ単純な処理ならあまり苦労せず使えるのだが、複雑な処理をしたい場合…

Ruby LSPのバージョンマネージャーにrtxを使う

Shopifyが出しているRuby LSPのVSCode拡張をrtx(asdf clone)で動かしてみようというのがこの記事。 code.visualstudio.com 結論 以下の実行ファイルをasdfという名前にしてPATHの通っているディレクトリに配置すれば動くはず。 #!/bin/bash if [[ "$1" == "e…

AtCoder Beginner Contest 295(ABC295)に参加した

先週にに引き続き今週も参加。 atcoder.jp 私の回答 atcoder.jp C問題までACしたがD問題でTLEした。 以下感想。 A - Probably English 雑に puts gets.match(/and|not|that|the|you/) ? "Yes" : "No" みたいなコードを書いたら見事WAした 単語を分割して規…

AtCoder Beginner Contest 294(ABC294)に参加した

最近、会社のSlackにある競プロチャンネルにジョインしたのもあって、久しぶりに競プロ熱が戻ってきたので参加している。 昨日行われたABC294に参加したのでその感想とか。 なお、問題の意図や解き方を解説するものではなく個人の感想です。またABC294のネタ…

mrubyを使ってWASMバイナリを作る

Zigで簡単クロスコンパイル 2022を読んでZigを使えばクロスコンパイルできることを知る -> Zigを使えばWASMバイナリが作れる ->つまりmrubyでWASMバイナリが作れるのでは?っと思いついたのでやってみたら、条件付きでWASMバイナリにクロスコンパイルできた…

rake testのseed値を固定する

rake testでは初期値を変更することでテストの順番をランダム化したりしている。 時々特定のseed値の場合だけテストが落ちる*1ということがある。 そういうときにseed値を固定したいことがある。 毎回忘れるのでメモしておく。 $ SEED=$SEED bundle exec rak…

mitamae+hochoで自宅Linuxサーバを管理するときのTips

この記事はRubyアドベントカレンダー2022の12/22の記事とLinuxアドベントカレンダー2022の12/15の記事です。 最近自宅サーバ熱が高まり、microk8sを使ったクラスタを組んでいたりする。 私の職業柄、すべてのサーバをコードで管理したいのでmitamaeとhochoで…

Mackerelでサーバインベントリを取得する / mipsel向けのmackerel-agentを作った

この記事はMackerel Advent Calendar 2022の12/21の記事です。 昨日はid:stefafafanさんのMackerelのサービスメトリックを簡単に投稿するためのGitHub Actionsを作ったでした。 GitHub Actionsを使ってMackerelにサービスメトリックを投稿するという内容でし…

MinitestをRSpec風に書く

この記事はRuby Advent Calendar 2022の12/6の記事です。 最近、Ruby on Railsを使って初めて1からWebシステムを作っている。 Railsではデフォルトで*1Minitestのテストコードが生成される。 システムを作成しはじめた当初はデフォルトであるMinitestで書い…

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

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

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公式が提供しているライブラリで安心感があるのだが、こ…

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

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

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

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