Refsort/Ruby v2.70 Released
辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12 *13 *14).もう仕様は落ち着いていて機能の追加をするつもりは(ほとんど)なく,細々とバグのメンテナンスを行っている状態です.
前回のリリースはつい先週2017年7月2日だったので立て続けの改訂ですが,Refsort/Ruby の改訂版である v2.70 をリリースしました.
今回の改訂内容は2点.一つは出力様式に関するものです.Refsort では,-e オプションや -t オプションを使用した場合,入力された文字列を内部で数値型や日付時刻型に変換し,それを基準にソーティングを行っていたのですが,問題はさらに -u オプションを加えた場合,型変換後のオブジェクトを出力するという,少々恥ずかしい不適切な仕様でした.このような使い方はあまり行わないので,これまで問題が顕在化することはありませんでした.しかし,最近 -t オプションを新たに実装し,テストを繰り返すうちにこの不具合が発覚.そのため,ロジックの深いところに手を入れて,どのようなオプションを使ったとしても,出力時には入力された文字列をそのままの形で出力するようにしました.
例えば,10, 20, 50, 50+, 100, 100+, 100++ という数値が一行に一つずつ書かれている入力を考えてみます.これを -e オプションでソートすると,全ての文字列は浮動小数点型の数値 10.0, 20.0, 50.0, 50.0, 100.0, 100.0 に変換され,比較・ソートされます.これを出力するときに,-u オプションがなければ,従来の仕様でも入力行をそのまま出力するので,10, 20, 50, 50+, 100, 100+, 100++ が出力されて問題なかったのですが,-u オプションを加えると,型変換後のデータ 10.0, 20.0, 50.0, 50.0, 100.0, 100.0 が出力されてしまっていました.
今回の改訂では,-u オプションを付けたとしても,10, 20, 50, 50+, 100, 100+, 100++ が出力されるようにしたものです.日付時刻のデータにしても同様です.
もう一つの改訂内容は,これは完全に内部的なものですが,出力処理を行っている部分に論理の冗長な部分があり,速度を阻害しているように見えたので,冗長な部分を取り除きスクリプトを最適化しました.これもアルゴリズムのかなり深いところに手を入れています.はるか昔に書いた部分なので思い出すのに一苦労しました.将来のためにソースコード中にコメントを残しておきました.
このところ,-M オプション,-e オプションと -t オプションに関係する部分の不具合を直してきましたが,これで一段落付いたと思いますので,Refsort 本体の改訂は一休みできると思います.
| 固定リンク | 0
「パソコン・インターネット」カテゴリの記事
- Windows11 24H2 にアップデート(2024.10.05)
- WSL2 をインストールして使っています(2024.06.19)
- Windows 再インストール時に VMD でハマる(2024.04.13)
- Microsoft Teamsの複雑な仕様がやっとわかった(2023.08.20)
- Xeonマシンを組みたくなった(2023.05.21)
「自然」カテゴリの記事
- ガガンボ(2025.06.05)
- 強風の五月晴れ(2025.04.27)
- コガモとアカメガシワ(2025.04.26)
- ムナグロ御一行様お着き(2025.04.26)
- フジが満開(2025.04.24)
「IT関連情報」カテゴリの記事
- IOC List v15.1 Released(2025.03.12)
- 日本鳥類目録第8版に準拠したRefsort/Ruby用辞書ファイル(2024.10.13)
- Windows11 24H2 にアップデート(2024.10.05)
- IOC List v14.2 Released(2024.08.27)
- Ruby を自力ビルドしてみた(2024.07.25)
コメント