ぶていのログでぶログ

思い出したが吉日

Ruby

mruby-rapidyamlを作った

rfコマンドv1.23.0をリリースしたで書いた通りmruby-rapidyamlを作ったのでそれの紹介記事。 github.com rapidyamlとは? github.com rapidyaml(またはryml)は名前のとおり高速性を謳ったYAMLパーサーである。 rapidyamlのREADMEにはyaml-cppとの速度比較が…

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

前回の記事はこちら。 前回に続いてついにYAMLの色つけ出力に対応した!やったぜ。 また、JSONの色つけ出力も改善し、階層ごとにObject(HASH)のキーの色を変えるようにした。 これで視認性が上がるはず。 以下、変更点の詳細 Features Fix CI error on maco…

rfコマンドv1.22.0 / mruby-yyjson v1.5.0をリリースした

前回の記事はこちら。 前回のアップデートからrfコマンドはv1.21.0からv1.22.0に、mruby-yyjsonはv1.2.0からv1.5.0になった。 このアップデートで念願のjson出力時の色付けに対応した!やったぜ! jsonの色付け対応に併せてminify(-mオプション)にも対応して…

mruby-test-stubを作った

mruby-yyjsonのテストコードを書くために、一部stubしたい部分ができた。 mruby-mtestにはstubする機能なく、mgem-listにもなさそうなので作った。 作ったと言ってもほとんどminitestのポーティングみたいな感じでスッと作れてよかった。 使い方 mrgem.rake…

rf v1.21.0 / mruby-yyjson v1.2.0をリリースした

前回の記事はこちら。 先日リリースしたmruby-yyjsonにいくつか機能追加と不具合の修正したv1.2.0をリリースした。 それに伴ってrfで利用しているmruby-yyjsonのバージョンも上げ、v1.21.0にした。 Features Update mruby-yyjson by @buty4649 in https://g…

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

前回の更新はこちら。 昨日の記事で書いたmruby-yysjonを早速組み込んだのと、ちょっとした不具合の修正をした。 前回からの記事の変更点 Use mruby-yyjson instead of mruby-json by @buty4649 in https://github.com/buty4649/rf/pull/205 fix: bug: file …

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(自作シェル)の話です。 ワンバイナリでシステムコールを駆使し…