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

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) | トラックバック (1)

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)

2017/10/28

Refsort/Ruby 2.80 Released

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

前回のリリースは約3か月前の2017年7月9日でしたが,このたび Refsort/Ruby の改訂版である v2.80 をリリースしました.

実は,今回の改訂は非常に難産でした.そもそも,Refsort の原型は今から10数年前に作成し,そこから機能を加えるごとにコードを建て増し建て増ししていったので,山あいの温泉旅館のように非常に見通しの悪いスクリプトになっていました.そこで1年ほど前から,自前のクラスやメソッドを定義してスクリプト全体をできる限りモジュール化し,さらに例外処理も Ruby の作法に則ったものに統一した新版を書き始めていたのです.

しかし,まず例外処理でつまづきました.モジュール化すると構造はきれいになるのですが,メソッドの階層を深く下ったところで例外を発生させると,それを最上層までもっていって,ファイルを閉じたり配列やハッシュをクリアしたりという後始末をしなければならないので,非常に煩雑でコードの量が増えてしまいます.仕方がないので,モジュール化の階層はできる限り浅くして,例外もできる限り最上層で発生させるようにしました.

次につまづいたのは実行速度です.格好よく自前のクラスを定義して,その中でインスタンス変数をたくさん定義し,それをメソッドで呼び出して使うのは快適なのですが,実行速度が大幅に落ちることがわかりました.Refsort はあくまでソーティング・フィルタなので,あまりトロトロと走らせるわけにもいきません.そこで,涙をのんで自前クラスは最小限にせざるを得ませんでした.そういうわけで,v2.80 は v2.70 に比べると速度が約 15% ほど低下しています.

一つだけ大幅に改良した点は,埋め込みマイルストーンの処理についてです.ここも過去のスクリプトでは温泉旅館の新別館のような扱いだったのですが,今回はマイルストーンのために自前のクラスを定義し,オブジェクトとして扱うことでコードの見通しを大幅に改善しました.

また従来は,出力時には出力候補のリスト全体をまず1回スキャンしてマイルストーンの階層構造を解析し,出力すべきマイルストーンを抜き出したうえで,2回目のスキャンでリストを出力するという2パス構造にしていたのですが,これが非常にわかりにくく,自分でも過去のコードをよく読めない事態に陥っていたので,これをゼロから書き直し,非常に素直な1パス構造に改めました.

仕様を1点だけ改訂しました.それはマイルストーンのコメントに関するもので,従来はマイルストーンのコメントは,それが番号付きやダブルコメント (##) でない限りは,そのまま出力していたのですが,今後は,マイルストーンのコメントは取り除いて出力することにしました.これは,マイルストーンにコメントが付いていると,リストがごちゃごちゃして見にくくなってしまうためです.

そういうわけで,今回の改訂はユーザにとっては非常に小さな変更でしかありませんが,内部的にはある程度手が加わり,将来の改良に向けた準備を進めた版であるとご理解いただければ幸いです.


さて,余談ですが,IOC の Web サイトに耳寄りな情報が掲載されました.以下引用です.

ANNOUNCEMENT (Oct 21, 2017): NO 7.4! Effective today, we are shifting to a semiannual revision schedule. Our next release will be 8.1 in January 2018, followed by 8.2 in late July or early August 2018. A step towards improved alignment with the Clements/eBird world list is one of the motivations for this change. We will continue to post working revisions regularly on the Updates web pages, so please keep up the flow of comments and corrections. Thank you!

従来の慣習に従えば,IOC List は四半期ごとに改訂されるので,前回7月末の改訂の後は10月末に v7.4 が出るはずでした.ところが,この版は出ません!なぜかというと,今後は年4回ではなく年2回の改訂頻度に改める,という方針変更を行ったそうです.従って,次の版は年が明けた2018年1月に v8.1 が出る,ということになります.

さらに,これは年初からアナウンスされていたことですが,代表的な鳥類分類体系の間で,それらを統合しようという機運が盛り上がってきており,それが2018年の IOC 総会の円卓会議で議論されるというのです.これにより,鳥類分類の世界に大きな変化が訪れることになりそうで,私自身は心配半分,期待半分といったところです.

さらに,余計な心配をさせていただくと,日本鳥学会がこの変化の波に置いていかれはしまいかと気を揉んでいます.前回の改訂からすでに5年が過ぎていますが,次の改訂に関して何のアナウンスもありません.世界の動きに対して,意見を言う,見識を示す,参画するという動きを示してほしいと思います.

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

2017/10/15

NAS boxの障害の顛末

話は今をさかのぼることちょうど5年,震災の翌年にホームサーバでも立ち上げようと思い立ち(*1),ちょうどMicrosoftからWindows Home Server 2011 (Vail)が発売されて間もなかったので,低電力のCPUをMini-ITXのマザーボードに乗せ,NAS用の高耐久性を謳って発売されたWestern DigitalのHDDであるRedを2台搭載して,小さなNAS Boxを組み上げたのでした.(*2)

このNAS boxはそれなりに順調に動き,メインPCのシステム・バックアップとユーザ領域を毎晩バックアップし,アクセスがないときはスリープして電力を節約しながらも24時間連続で稼働させていました.使い勝手も悪くなかったので,私としては後継のホームサーバ用OSが出てくるのを楽しみに待っていました.

ところが,Microsoftはコアなユーザがいたにも関わらず,Windows Home Server 2011のサポートを2016年4月に打ち切ったので,そこからハードウェアはそのままで,フリーのNAS専用OSであるFreeNASに乗り換え,複数のマシンのシステムとユーザ領域のバックアップに使ってきました.このあたりの推移は過去のこの記事に書いた通りです.

FreeNASは大規模なアップデートを企んで新しい版Corralを出そうとしたものの,完成度が低くて実使用に耐えないと判断され,開発責任者が変わり,慌ててロードマップを書き直し,現在も精力的に大規模アップデートに向けて開発が続けられています.おそらく年内には,当初目論んでいたレベルの版である11.1がリリースされるだろうと思います.

てなことを考えていたある日,FreeNASのダッシュボードに赤いアラームが点滅しているではありませんか.内容を見てみると,HDDの1台に障害が発生しているとのこと.このHDDはOSによって自動的に切り離されてしまったようです.

問題の切り分けのためにNAS boxを開け,まずはマザーボードのディスク・インターフェースの障害を疑い,空いているインターフェースに切り替えて再起動させてみました.すると何の問題もなく動くではありませんか.しばらくはこのままの構成で運用しようと思ったのですが,しばらくすると再び赤いアラームが点滅しています.HDDのセクターエラーが発生しているようです.

ここでHDDの障害であることは確実になったのですが,さりとて代替のHDDを買ってきてこの古いハードウェアを延命する気にもなれません.NAS boxの構築から5年が経っているので,どうせだったらHDDも大容量のものに替え,さらにハードウェア全体を新調して,そこにFreeNAS 11.1を載せたいところです.

しかし,最近ハードウェアは値上がり気味.特にメモリが高騰してます.しかも,FreeNASの最大のウリであるZFSというファイルシステムはメモリ食いで有名で,最低でも16GB,出来ることなら32GB程度を載せるのが良いとされているので,直ちにNAS boxを換装という決断ができません.

というわけで,古いハードウェアのうち,売れるものは売り払い,メモリをはじめとするハードウェアが少し安くなるのを待っている状態です.情けない...

どうせFreeNAS 11.1がリリースされるのは年末ころなので,その完成度具合を確かめてからでも遅くありません.それまではホームサーバが無い生活が続き,寂しい気はしますが,まぁ,こういうこともあると思うしかありません.

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

2017/07/09

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) | トラックバック (5)

2017/07/02

Refsort/Ruby v2.63 Released

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

前回のリリースはつい先週,2017年の6月25日だったのですが,今回の修正は2点.一つは,辞書を参照しないソーティングのオプションに,文字エンコーディングそのものに基づくソーティングである -a オプションと,数値の大小に基づくソーティングである -e オプションに加えて,日付時刻に基づく新たなオプション -t を設けたことです.このオプションは,日付時刻の国際標準である ISO 8601 に準拠した文字列を日付時刻と認識して,その昇順にソートするというものです.日付はグレゴリオ暦に基づいていますので,グレゴリオ暦が制定される以前の年代については少々注意が必要ですが,基本的にどのような紀元前の年代であっても,あるいははるかな未来であっても,対応は可能なはずです.

もう一つの修正は実にマイナーなもので気付くこともないと思いますが,数値の大小に基づく -e オプションにおいて,数値が整数であれば整数型のオブジェクトである Integer として扱い,その結果として,出力するときにも整数として出力し,余分な .0 付加しない洗練されたものになっています.

日付時刻の -t オプションは,私自身これまで全く使用したことがなかったので,もう一段の最適化が必要ではないかと思っていますが,とりあえずリリースしてしまいます.

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

より以前の記事一覧