パソコン・インターネット

2018/09/11

Rersort/Ruby v2.94 Released

このところ Refsort/Ruby(リリース実績は新しいほうから *1 *2 *3 *4 *5 *6 *7 *8 *9 *10)のソースファイルを眺めているうちに,ムラムラと湧き上がるものがあって実装をいじっているうちに,辞書ファイルの重複したレコードやラベル,さらには入力の重複レコードを処理する部分を全面的に書き換えました.ただし仕様の変更は実質的に何もありません.

どういう内容かと言うと,まず辞書ファイルに重複したレコードがあると,同一のものが異なる複数の順位を持つことになるので,そもそもソーティングが原理的に成り立ちません.このため,辞書ファイルの読み込み時に重複したレコードを見つけると,従来は最初の重複ペアが見つかった時点でエラーメッセージを出して即座に処理を中止していました.しかし,これはあまり親切なやり方ではないので,辞書ファイルをすべて読み込んだうえで何々というレコードが何行目と何行目と何行目に重複して存在していると網羅的に報告し,それから処理を中止するようにしました.こうすれば辞書ファイルの作者は辞書の修正が容易です.

同様に,辞書ファイル中のラベル(つい最近までマイルストーンと呼んでいたもの)に重複が見つかった場合は,従来は五月雨式に重複ペアを報告しながら処理を続行していたのですが,こちらも辞書ファイルをすべて読み込んだ後で,重複しているラベルを網羅的に報告することにしました.なおラベルが重複しているとは,そのラベルの文字列(コメントを除く)とレベルがともに同一である場合です.またラベルが重複していてもソーティングに不都合はないため,処理はそのまま続行しますが,ソーティング結果には同一のラベルが異なる複数の箇所に現れることになりますので,本来は望ましくありません.辞書ファイルの修正が望ましいところです.

最後に入力の重複です.入力の重複自体には特に問題はなく,入力データとしては十分あり得る話ですし,ソーティング自体にも影響はありません.ユーザーが重複を検知するには -d オプションを使うことにしていますが,従来は重複したペアが見つかるたびに五月雨式に報告していました.しかしこれでは見にくいうえに全体像が分かりにくいので,これも入力をすべて読み終わった後で重複した入力を網羅的に報告し,処理を続行するように改めました.

これらの改訂を入れ込んだ新しい版 v2.94 を近日中にリリースします.またユーザーズガイドも書き直したものをアップロードすることにしました.ユーザーから見た場合には仕様上の変更は何もありませんが,警告文の出かたが見やすいものに変わるので,気づくことがあると思います.なおこの改訂によって処理速度はほとんど影響を受けないことを確認済みです.

| | コメント (0) | トラックバック (0)

2018/08/31

Refsort/Ruby v2.93 to be released

暑さにめげてブログの更新が滞っていますが,それなりに活動はしています.明日9月1日付で,辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby v2.93 をリリースすることにしました.過去のリリース実績は新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 となっています.

改訂と言っても今回は完全に形式的な改訂です.改訂内容は,これまで「埋め込みマイルストーン」と呼んでいたものを「埋め込みラベル」に変更するというものです.これに伴いスクリプト内部の定数や変数の名前を変更していますが,これはユーザーには無関係.ユーザーから見た場合の変更点は,コマンドラインでの埋め込みマイルストーンの出力を指示するための長いオプション名 --milestone と --msindented がそれぞれ --label と --labindented に変更されるというものです.ただし短いオプション名は従来通り -m と -M のままなので,実害は無いと考えています.

これに伴い,ユーザーズガイドも書き直したものをアップロードすることにしました.スクリプトの内容自体には何の変更もありません.仕様も実装もしばらくは変更するつもりが無いので,このまま毎年クリスマスにリリースされる Ruby の新版(今年は v2.6.0)を迎えるものと思います.この新版の目玉は MJIT と呼ばれる加速機構なのですが,Refsort のような短時間で終了してしまう一発モノのスクリプトにはほとんど効果はないと思われます.

本日中に関連ファイルのアップロードを行いたいと思います.

| | コメント (0) | トラックバック (1)

2018/08/13

DSMのdockerでUbuntuをインストール

このところ,太平洋高気圧が日本の東南海上に後退しているせいで,その縁を回り込むように湿度の高い空気が関東地方に流れ込んでいます.そのため毎日じめじめした暑さに見舞われており,不快なことこの上ありません.

さて昨日の記事の続きです.今朝の涼しいうちに,Synology NAS の OS である DiskStation Manager (DSM) 上に docker を導入し,docker コンテナのレポジトリの中から Linux のディストリビューションの一つである Ubuntu そのものの最新版を選択してインストール・起動してみました.

恐る恐るだったのですが,これがあっけないくらいに簡単.Ubuntu があっという間に起動できたのにはあきれてしまいました.しかしコンテナのダウンロード時間が妙に短いなと思った通り,この Ubuntu は minimize されたもので,インタラクティブな操作を行うには unminimize が必要とコンソールに表示されました.そこで実際に実行してみると,たくさんのファイルがダウンロードされ,インストールされていき,Perl も Python も Ruby もインストールされていくではありませんか!

再起動して,使いやすいとは言えないコンソールから自作の Ruby スクリプトを走らせてみると,当然のことのように完璧に走ります.へぇー,docker ってこんなものなのかという良い勉強になりました.しかしこの Ubuntu をワークステーション代わりに日常的に使うのは非力過ぎますし,I/O の扱いや X Window System を走らせるのも面倒くさそうなので,今日のところはこれで終了.これまでよく理解できていなかった docker のことが少しわかったような気がしました.TeX サーバにできるといいなと思いますが,誰かコンテナを作ってくれないかなぁ?

メールサーバやブログサーバを立ち上げることもできるはずなので,これからのお楽しみです.NAS とは言っても,Intel Celeron 4コア (J3455) と 16 GB のメモリを持っていると,できることの幅がぐっと広がります.

| | コメント (1) | トラックバック (0)

2018/08/12

NASを導入しました

昨晩から涼しい北東気流が吹き出して,湿度が高いことを除けば今朝は快適な気温になりました.暑さにめげてもう1か月もブログの更新をサボっていたのですが,この程度の気温であればなんとか記事を書く気にもなろうというものです.

実は今週から新しいNASの運用を始めました.昨年10月にこのブログで報告した通り,それまで FreeNAS をインストールして運用していた NAS Box が障害を起こして動かなくなり,それ以来 NAS の無い生活をしていました.その間専用 NAS を物色していたのですが,目を付けていた Synology DS718+ の値段が結構下がってきたので,思い切って導入することにしたのです.

Nasbox_0001m

この NAS のドライブベイは2つ.従って RAID5 などの運用はできないのですが,Synology Hybrid RAID (SHR) という仮想化された RAID は使えるらしいので,そのオプションを選択し,かつファイルシステムは先進的と言われておりデフォルトでもある btrfs を選択.これで FreeNAS の ZFS と同様気楽にスナップショットをとることができる,はずです.

Windows PC や Linux マシンとのファイルのやり取りには,とりあえず SMB を使用しています.これまでは WiFi ルータにおまけのように付いていた簡易 NAS 機能を使っていたのですが,こいつはあろうことかセキュリティ・リスクが高い SMB_1 しか解釈できなかったのに対して,この NAS の導入により SMB_3 をデフォルトにすることができるので,ルータの NAS 機能は運用を停止し,Windows の機能からも SMB_1 を無効化してしまいました.

ベンチマークテストは走らせていないのですが,高速の誉れ高いファイルコピー・ツールである FastCopy で Winodws PC のユーザー領域のバックアップを取ってみると,だいたい 90 MB/s 程度の速度が出ていますので,NAS としては十分な性能です.

実はこの NAS は多機能で,いろいろなアプリケーションをインストールして,ネットワーク越しにインテリジェントなバックアップやファイルの同期ができたり,仮想 OS や docker をホストしたり,メールサーバや Web サーバーとしても運用できるようにもなっています.そのために RAM も目一杯追加したのですが,これらのお楽しみはこれからおいおい試みていくつもりです.

| | コメント (0) | トラックバック (1)

2018/05/18

(続) Ubuntu 18.04 のインストールに手こずる

昨日の記事で Ubuntu 18.04 のインストールに手こずったことをお伝えしましたが,やはり Evince の件はどうにも納得しがたく,また Web にもそのような不具合の報告が無かったため,時間があるのをよいことに,再インストールを敢行しました.

まずは純正のソフトのみを導入していくと,日本語入力の不便さは相変わらずながらも,どれも問題なく動作します.昨日の不調は何だったんだろうと思えるほど,Evince もサクサクと動くではありませんか?

それでは,ということで,昨日何も考えずに導入した PPA をインストールしてみると,Evince が起動しない不具合が再発しました.これは,システムの標準フォントが変更されたことに伴い,一部のアプリケーションで文字がはみ出て読めなくなってしまうという不具合を改善するためのものです.原因はコイツだ!ということで,この PPA をアンインストールすると,Evince は何事もなかったかのように完璧に動きます.ということで,この PPA はボツにせざるを得ません.まあ,PPA というのは悪く言えば「野良レポジトリ」なので,よく注意して使いましょうという教訓です.もちろん大変有用なものもあり,公式レポジトリを補完する役割も果たしているので,一概に悪いと決めつけるつもりは毛頭ありません.

これ以外では,Ruby のビルド後のテストで,標準時を Locale によって切り替える際の不具合は相変わらず発生しています.太平洋の真ん中あたり,日付変更線ギリギリのタイムゾーン,具体的には UTC+14 というキリバス共和国の Locale がうまくいかないようです.これは Ubuntu の本家システムか,日本語 Remix の設定のいずれかにバグがあるのでしょう.今のところ実害はないので放置しますが,あまり気持ちの良いものではありません.

昨日書いた通り,これらの不具合は時間を経るうちに徐々に改善されていくものと思いますが,早く正常化されるにこしたことはありません.まあ,私としては LaTeX による執筆作業が最優先なので,エディタである VS code,LaTeX 本体や各種ユーティリティが動くことはすでに確認しており,あとは海路の日和を待つだけです.

| | コメント (2) | トラックバック (0)

2018/05/17

Ubuntu 18.04 のインストールに手こずる

Linux の代表的ディストリビューションである Ubuntu は6か月ごとに新しい版がリリースされるのですが,それらは9か月のサポート期間しかありません.そのため半年ごとのインストールに付き合わなければならないですが,2年に1回ずつ,Long Term Support (LTS) という版がリリースされ,これは5年間のサポートが保証されています.

私は最近は専らこの LTS をインストールして使ってきました.すなわち,前回は2016年4月にリリースされた 16.04 LTS をリリース直後にインストールし,今週初めまでそれを使ってきましたが,今週火曜日になってようやく,次の LTS である 18.04 LTS の日本語 Remix 版がリリースされましたので,早速そのインストールを敢行しました.ところが予想外に手こずり,丸一日かけてようやく環境を整えることができました.

まず,インストール DVD を作成してブートしようとするのですが,これが途中でエラーとなります.PC から内臓 DVD ドライブを取っ払ってポータブル DVD ドライブを使っているのがまずいのか,それともそれをつないだ USB ポートに不具合があるのかわかりません.長い時間を費やして何度も試みた挙句ついにブートを断念.仕方なく ISO ファイルを USB スティックにコピーしてブートしてみると,こちらは実にすんなりとインストールが終了します.

早速ログインして環境を整え始めるのですが,日本語入力が変です.IME を起動してもひらがなの入力ができません.マウスで設定をいじると入力できるようになるのですが,ログアウトして再ログインすると元に戻ってしまいます.色々調べると,これはバグの可能性が高いことがわかりましたが,しばらくはこの不便さに付き合うことにしました.

Ubuntu ソフトウェアセンターからエディタ VS Code をインストールして使い始めると,なんと日本語が入力できません.何じゃ?これは?いったんアンインストールし,VS Code の Web サイトから deb パッケージを拾ってきてインストールすると,こちらはまともに動きます.Ubuntu は今回からデスクトップ環境が大きく変わったせいか,まだ十分に周辺まで整備されていない印象を持ちました.

定番のアプリやユーティリティをインストールして,従来同様 Ruby をソースファイルからビルドしましたが,テストでコケます.初めて見るエラーで,Locale によって標準時を切り替えるライブラリのうち,特定の Locale の切り替えがうまくいかないらしい.これまで使ってきた 16.04 LTS 上で同一のソースファイルを使ってビルドしたときには見たことが無いので,これはおそらく OS 側のバグ.仕方がないので,Ubuntu のリポジトリから Ruby をインストールして済ませました.

Screenshotfrom20180517123258

その後,これも最近新しくなったばかりの TeX 環境 TeXLive 2018 をネットワーク経由でインストールします.こちらは非常に順調に行き,Ubuntu に今回から標準搭載されるようになった UTF-8 のフォントシリーズ Noto を使う設定も一発で動き,ソースのコンパイルも PDF ファイルの生成も順調.気分良く PDF ファイルを見ようとしたところでトラブルです.なんと Ubuntu 標準の PDF ビュワーである Evince がウンともスンともいいません.コマンドラインから起動するとコアを吐いて死んでしまいます.古い PDF も一様に見られないので,これは明らかに Evince の不具合です.仕方がないので,Evince から派生して開発されている Atril をインストールしてしのぎます.

ここまでたどり着くのにほぼ一日かかり疲れましたが,今は従来通りの作業ができるようになっています.日本語入力の切り替えは相変わらずですが.

あとひと月もすれば,不具合は解消されていき,今後2年間使い続けるに値する環境が得られると期待しています.やれやれ.

| | コメント (0) | トラックバック (1)

2018/05/02

Windows 10 RS4 で Classic Shell 使えています

Win10_2018_spring

昨日,アップデートできるようになった Windows 10 RS4,通称 “Windows 10 April Update 2018 ” を早速インストールして使っています.アップデートにはかなり長い時間,30分ほどかかりましたが,アップデートが済んでしまえば,何事もなかったかのようにこれまで通り Windows 10 を使うことができてほっとしています.

今回,事前に覚悟を決めていたのは,Windows 8 の時代からお世話になっていた “Classic Shell” が使えなくなってしまうのではないかということです.作者が半年くらい前に開発継続断念を宣言しており,その理由が,Microsoft の Windows 10 開発スピードとその改訂の中身についていけないというものだったので,そろそろ使えなくなってしまうのでは?と危惧していました.

しかし,アップデートしても,Classic Shell は相変わらず使うことができて,非常にうれしく思っています.これでさらに半年間はこの環境を維持できるので,しばらくはこの使い勝手の良い環境を享受したいと思います.

| | コメント (0) | トラックバック (0)

2018/03/31

Refsort/Ruby 2.92 Released

2月12日に,辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Rubyの新版 v2.91 をリリースし,数か月はこのまま落ち着かせるつもりだったのですが,(過去リリースは新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10),Ruby 本体が3月28日に新版 2.5.1 にアップデートされたことを契機として,Refsort の小改良版 2.92 をリリースすることにしました.

今回の改訂でのユーザーにとっての変化点は,埋め込みマイルストーンの書式の変更です.これまでは,マイルストーンのレベルを表す記号列と,マイルストーン本体との間には0個以上の空白を置くというルールにしていたのですが,今回の 2.92 からは,これを1個以上の空白を置かなければならないと改めます.この改訂はマイルストーンの書式の誤りを捕捉しやすくするためのもので,従来よりも広い範囲で書式の誤りを捕捉できるようになりました.細かい実例などはユーザーズガイドに書きましたので,ご覧ください.

このルールの改訂により,古い辞書ファイルの中には書式エラーとなるものが出てくると想定されますが,このルール改訂は至極単純なものなので,エディタの置換機能などを使って簡単に修正できると思います.また,私が2018年以降にリリースしている辞書ファイルは,すでにこのルールに則っていますので,修正は不要です.

ユーザーズガイドも改訂しましたので,同時にアップロードします.これで様々な改訂は一段落したと思いますので,今度こそ当分の間はこの版で運用したいと思います.

| | コメント (0) | トラックバック (2)

2018/02/12

Refsort/Ruby 2.91 Released

つい1週間ほど前に,辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby新版の v2.90 をリリースしたばかりなのですが(過去リリースは新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10),いろいろなケースで実行させてみると,バグとは言えないまでも動作を改善したほうが良い点が見つかり,またエラーメッセージや警告メッセージを充実させたり,コードの最適化を行ったりしたので,最新版として v2.91 をリリースすることにしました.これでしばらくは落ち着くと思います.

今回の改訂でのユーザーにとっての変化点は,インデント付きのマイルストーンを出力する際のレコードの通し番号の位置です.これまでは,通し番号は実質名の左側に空白を1個置いて6桁の幅で出力していました.しかし,インデントが深くなってくると,マイルストーンの階層の中に数字が混在して見にくくなってしまうため,今回の版から書式を改め,通し番号はインデントの深さによらず左端に6桁の幅で寄せて出力することとしました.これにより,通し番号と実質名の間が広く空く場合もありますが,このほうがかえって見やすくなると思いますので,当面はこの書式で試用したいと思います.

また,エラーや警告のメッセージを充実させたり,コーディングを最適化したりして,スクリプトの細かな改善を行っています.

ユーザーズガイドもこれに合わせて改訂しましたので,同時にアップロードします.ユーザーズガイドの今回の目玉は,Windows に Ruby をインストールする手順を巻末の付録で詳しく図解したことです.操作途中のデスクトップの画面のスクリーンショットをたくさん載せました.これにより Ruby を使う敷居がぐっと低くなることを期待しています.

| | コメント (0) | トラックバック (1)

2018/02/03

Refsort/Ruby 2.90 Released

辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10.もう仕様は落ち着いていて機能の追加をするつもりは(ほとんど)なく,細々とバグのメンテナンスを行っている状態です.

前回のリリースは2017年10月21日でしたが,このたび Refsort/Ruby の改訂版である v2.90 をリリースしました.

今回は前回の改訂で積み残しになっていた例外処理の整理整頓と,自前クラスだった埋め込みマイルストーンを,より軽量と思える Struct で実装し直したものです.また辞書ファイル読み込み時の別名の処理を大幅に合理化しました.これらの改善により,前回改訂時に 15% ほど実行速度を低下させていたものを,20% ほどの改善を得ることができて,これまでで最も高速の実装を実現することができました.ぜひこのスピードをお楽しみください.数万レコードの辞書参照型ソーティングが 1-2 秒で完了するのはなかなか快感です.

また今回は実装を見送りましたが,埋め込みマイルストーンの書式の次回での改訂を見込んでいます.それはマイルストーンのレベルを表す記号や数字の後には必ず 1 個以上の空白を置くようにしたい,というものです.現時点ではこの空白がなくてもエラーにはならず,それなりに解釈されますが,次回からはこの空白がないとエラーにする予定です.このような仕様にしたほうが書式の規則が厳密になって,エラーを検出しやすくするのが目的です.

ユーザーズガイドを近日中に改訂してアップロードする予定です.

| | コメント (0) | トラックバック (2)

より以前の記事一覧