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

2017/06/25

Refsort/Ruby v2.62 Released

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

前回のリリースはつい最近,今年2017年の6月,長年埋もれていたバグが発覚したため,慌ててその部分だけを修正したのですが,これは埋め込みマイルストーンの機能拡張でもやろうかと思って,スクリプトをいじっているうちに発見したものです.

バグの修正後,元々やろうと思っていた埋め込みマイルストーンの機能拡張を実装して未公開版としてリリースし,さらにそのスクリプトを最適化したものを v2.62 としてリリースします.

今回の機能拡張は,2点あります.まず,辞書ファイルの埋め込みマイルストーンの書式を拡張したもので,従来はレベルを表すのに,

#!m >>>>>[....]

などと書いて,レベルが5であると示していたのですが,レベルが深くなるにつれてこの書き方では煩雑になるだけでなく,レベルの視認も難しくなるため,新たに

#!m >5 [....]

という書き方も受け入れることにしました.これがまず第1点.

第2点目は,埋め込みマイルストーンを出力する際に,新たなオプション -M を設け,マイルストーンのレベルに応じてインデントを付けるようにしました.とりあえず,インデントは 半角2文字分/レベル としていますが,ソースコード1か所の修正で簡単に変更できます.出力はこんな感じになります.

[GALLIFORMES; キジ目]

 [Phasianidae; キジ科]

   [Bambusicola; コジュケイ属] # "Gould"

    コジュケイ

[ANSERIFORMES; カモ目]

 [Anatidae; カモ科]

   [Cygnus; ハクチョウ属] # "Garsault"

    コブハクチョウ

    コハクチョウ

    オオハクチョウ

   [Anas; マガモ属] # "Linnaeus"

    オカヨシガモ

    ヨシガモ

    ヒドリガモ

    マガモ

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

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

2017/06/10

Refsort/Ruby v2.52 Released

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

前回のリリースはつい最近,今年2017年の4月だったのですが,埋め込みマイルストーンの機能拡張でもやろうかと思ってスクリプトをいじっているうちに,私の理解不足から正規表現にバグがあることが発覚しましたので,慌てて応急処置をとったのが今回のリリースです.

幸いなことに,私がこれまでリリースした辞書ファイルを使う限りにおいては,このバグが顕在化することはなく人畜無害なのですが,とにかく明瞭なバグなので修正版をリリースします.

どういう箇所かというと,辞書ファイルを読み込んだり最終的な出力処理を行うときに,埋め込みマイルストーンを探す必要があるのですが,このときに正規表現内でキャプチャと後方参照を使います.その後方参照を文字クラスの中でも使えると誤解していたのが間違いでした.例えば以下のような表現です.

/^(#!m\s*(\S)\2*[^\\2][^#]*)/

ここで \2 というのは (\S) でキャプチャした非空白文字をそのあとで参照するためのものなのですが,これを文字クラス [...] の中でも使えると誤解していました.これは間違いなので,以下のように修正しました.

/^(#!m\s*(\S)\2*(?!\2)\S[^#]*)/

ここで,(?!\2)\S というのがミソで,これは否定先読みという表現.詳しい説明は省きますが,\2 ではない非空白文字一文字を表現したことになり,私が意図したとおりの動作をすることを確認しました.これは Ruby のユーザーズフォーラムで質問し,ある方から親切に教えていただいたので何とか修正できた次第です.

繰り返しになりますが,機能の追加は何もなく,Ruby の最新版 v2.4.1p111 で動作することを確認しています.

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

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

2017/04/30

Refsort/Ruby 2.51 Released

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

前回のリリースは昨年2016年の7月だったのですが,今回の変更は,Windows用のRuby実行環境である Rubyinstaller の更新が滞ったことに端を発しています.この Rubyinstaller に代わって,別の作者が更新を買って出て,Rubyinstaller2 なるものをリリースし始めました.

ところが,この作者の実装はエンコーディングに癖があって,Windows なのにデフォルトの外部エンコーディング Encoding.default_external を強引に UTF-8 に決め打ちしているのです.欧州のユーザ,特に Rails の開発者にとって,エンコーディングは UTF-8 しか眼中にないらしく,他のエンコーディングを使う理由は無いでしょ!と問答無用のノートが付けられています.

しかし,これは Ruby レファレンスマニュアルの記述とは食い違いますし,これまで作成してきたスクリプトの中には動かなくなるものが出てきます.そして,現に Refsort/Ruby がそうなってしまうのです.そこで,文句を言いつつも,この実行環境でも問題なく動くように修正したものが今回の Refsort/Ruby です.

繰り返しになりますが,機能の追加は何もなく,Ruby の最新版 v2.4.1p111 で動作することを確認しています.

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

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

2016/12/30

バックアップ体制を刷新

パソコンを使っていると,ごくたまにですがHDDが突然故障したり,バックアップを取っておいたつもりのフロッピーディスクやHDDが読めなくなっていたりするものです.このときは本当に泣きたい気分になるのですが,その時に泣かずに済むようにするには,普段からバックアップを取っておくしかありません.

私の自宅のPC環境のバックアップの変遷を書くと以下のようになります.

最初期
フロッピーディスクを20枚ほど用意し,バックアップ用のユーティリティソフトウェアを使ってユーザデータのみをバックアップ.システムやアプリケーションのバックアップは取らず.これが毎週日曜日夕方のルーチンワークだった.

MO期
大容量(最初は128MB/枚,最終的には1.3GB/枚)の光磁気ディスク数枚を使って,ユーザデータのみをバックアップ.ここでもシステムやアプリケーションのバックアップは取らず.光磁気ディスクの書き込みの遅さにイライラした.

リムーバブルHDD期
最初のころは40GB程度,現在では1TB程度のリムーバブルHDDを使って,主としてユーザデータをバックアップ.可能であればシステムやアプリケーションの設定のバックアップも取る.速度の問題はなかったが,毎回USBケーブルを持ち出してつないだり外したりが億劫.これは今も続く.

試行錯誤期
様々なデバイスと接続方法を試行錯誤していた時期.最初はWindows Home Server 2011を主なバックアップ先として,システムとユーザデータをすべてバックアップ.さらに大事をとって,ユーザーデータは300GB程度のリムーバブルHDDにすべてバックアップ.

ところが,WHS 2011のサポートが2016年4月で終了したため,サーバーに使っていたマシンにFreeNASをインストールし,バックアップ用のNASとして使い始めるも,効率的な使い方は今も試行錯誤中.

さらに,内臓HDDを2台追加して,Windowsに備わっている仮想プロビジョニング対応の記憶域プールを双方向ミラーで構成し,これを自動Scrubbing対応のReFSでフォーマット.そしてこれをファイル履歴用のドライブとして運用開始.これでユーザデータを履歴も含めて自動的にバックアップ.MacOSのタイムマシン相当の機能.

さらにさらに,余っていた5インチベイに,SATA接続の2.5インチと3.5インチの2台のHDDを着脱可能なアダプタを取り付け,現在は2.5インチのHDD 1台を接続し,毎週1回,深夜に自動で全ユーザデータとアプリケーションの設定,さらにWindowsのシステムイメージをバックアップ中.

現状
上記の記憶域プールへファイル履歴を常時取得.Scrubbingも自動なので非常に楽.ただしごく稀にバックアップできないファイルがあり,万能ではない.

FreeNASへ全ユーザデータとシステムイメージを定期的に手動でバックアップ.手動なので面倒.自動化したい.

USB接続のリムーバブルHDDへ,全ユーザのデータとシステムイメージを定期的に手動でバックアップ.これも面倒なので,出来るだけ廃止したいが,非常時にサッと持ち出せるバックアップも必要なので,悩みどころ.

5インチベイに常時取り付けてあるリムーバブルHDDに,全ユーザーデータとシステムイメージを自動でバックアップ.これが上記の悩みを解決してほしいと期待している.

こうやって整理してみると,まあ,いろいろと試行錯誤してきたことがわかります.しかも,この試行錯誤はまだまだ続きます.もっと手間を省き,しかも確実にバックアップが取れるようにしたいからです.現在は,安全のためにかなり冗長なバックアップ体制を取っています.これをどこまで自動バックアップに任せても大丈夫かを検証していく必要があります.現在週末ごとに手動で行っているバックアップをできるだけ早く廃止するのが次の目標です.

現在では2.5インチのHDDも非常に安くなり,1TBが6,000円程度で買えるようになったので,USBインターフェース付きのケースに入れても8,000円でおつりがくるほどになりました.20年ほど前にフロッピーディスクをとっかえひっかえドライブに入れていた頃からは想像もできない容量をバックアップしているのですが,本質的には問題は解決していません.バックアップの悩みはコンピュータの歴史が始まると同時に発生したはずで,きっと将来も悩み続けることでしょう.

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

2016/08/17

メインマシンのバックアップ体制を刷新しました

今から2週間ちょっと前にWindowsのファイル履歴の稼働を開始したことをポストしましたが,実は,問題含みで運用を開始していました.正確には知りませんが,Windows は 8.1 の頃から新しいファイルシステム ReFS をクライアント OS にも載せるようになっていました.これは NTFS の後継ではないものの,信頼性や耐久性が要求されるサーバー OS のために開発された新しいファイルシステムで,自動修復や,ビット腐敗や書き込まれて時間が経ったセクターを自動的に書き直して鮮度を保つ機能(Scrub)など,高信頼のバックアップを求める向きには魅力的な機能を持っています.

このファイルシステムが,クライアント OS に対しても,記憶域プールであれば使用可能になっているのです.Windows 10 にアップデートした時点で早速手を出してみたのは言うまでもありません.ところが,wbadmin コマンドを用いてシステムイメージのバックアップを取ろうと思っても,ReFS への書き込みが許されていないのです.これでは一体何のためのファイルシステムなのだろう?と憤慨してみたものの,当分はそのままの仕様で運用するしかありません.

ほどなく Anniversary Update をインストールして,念のため再度確認しましたが,やはりシステムイメージを書き込むことはできません.そこで,方針を転換し,以下のようなバックアップ体制を取ることにしました.

  1. 記憶域プール(双方向ミラー)は ReFS でフォーマットし,ファイル履歴専用とする.自動修復などが可能なため,長期間の差分履歴をとるのに最も適したファイルシステムであることを生かす.
  2. システムイメージのバックアップは,NTFS でフォーマットしたリムーバブル HDD に定期的にバックアップする.
  3. ユーザのファイルも,同様にリムーバブル HDD に定期的にバックアップする.
  4. ユーザが独自にインストールしたフリーソフトなど,ローカルなアプリケーションも,同様にリムーバブル HDD に定期的にバックアップする.

そして,(2)(3)(4)はバッチファイルを組んで自動化し,それらをタスクスケジューラに登録して深夜に自動実行させる,という具合にしました.元々 (1) はバックグラウンドで自動実行されているので手間はかかりませんし,(2)-(4)も寝る前にリムーバブル HDD をスロットに突っ込んでシステムをスリープにしておけばあとは自動です.

この体制でしばらく運用してみるつもりです.ReFS については,NTFS との互換性はないので,途中で何か不都合が出てくるのかもしれませんが,まだまだ発展途上のファイルシステムなので,今後の改良も期待できると思います.

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

2016/08/15

Windows 10 をクリーンインストールし直しました

一週間ほど前に Windows 10 の Anniversary Update をインストールしたことを報告しましたが,どうも調子が悪いところが何点か見つかったので,夏休みで時間に余裕があることもあり,まっさらな状態からクリーンインストールし直しました.完全なクリーンインストールなので,種々のアプリケーションもすべてインストールし直さなければならず,非常に手間がかかる作業なのですが,アップデートでいろいろなゴミがファイルシステムの中に発生しているのは気持ち悪いし,ディスク容量もその分減るので,思い切ってやってしまいました.

一連の作業で元の環境を取り戻すにはには少なくとも丸一日,余裕を見ると2日間は必要です.そのため,部屋に閉じこもって黙々と作業を続けました.一通り完成した後でもいろいろな設定を試したりしていると時間がかかるものです.何か所か動作不審なところがあったので,とっておきのコマンド

dism /online /cleanup-image /restorehealth
sfc /scannow
を実行して修復すると,一応まともに動くようになりました.やれやれ.

インストール後に Windows Update が走ったので,ビルド番号を確認してみると,Anniversary Update 直後の 14393.10 から 14393.51 に上がっていました.へぇ?

今回のアップデートの収穫の一つは,実はコマンド・コンソールです.これまで,このコンソールのスクロールがあまりに遅くてイライラしていたのですが,今回のアップデートでは Linux のコンソールとまでは行きませんが,それに次ぐ程度に速くなりました.例えば,3万行を超えるテキストファイルをコンソールに出力させると,以前はスクロールに10秒以上もかかっていたのですが,今回のアップデート後は2秒以内で終わるようになりました.これは精神衛生上非常に好ましい変化です.派手な機能だけではなく,こういう一見地味で遺物のようなツールであっても,プログラマーにとっては重要なツールが強化されるのは大歓迎です.

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

2016/08/07

Windows 10 version 1607 build 14393.10 にアップデートしました

昨年秋の version 1511 から約10か月ぶりのアップデートで, Windows 10 が少し新しくなりました.Windows Update でダウンロードし,何度か再起動を繰り返して30分ほどで化粧直しが終わりました.

これからも Windows 10 はこのような “ちょこちょこ直し” を繰り返して変化していくことが宣言されており,まあ,これが厳密には On-Premises でありながらも SaaS (Software as a Service) に近いソフトウェアの提供形態なのでしょう.Adobe の Photoshop などはすでに数年前からこのようになっていますし,Microsoft の Office はすでに狭い意味での SaaS に移行済みですので,Microsoft の OS 系も遅ればせながらビジネスモデルを修正しつつあるということのようです.

化粧直ししたといっても,私は今回の目玉機能である Ink などを全く使っていないので,あまりご利益を感じられないのですが,しかし今後のアップデートの土台となるバージョンなので,これにしておかないわけにはいかないのです.

早速一つ不具合を発見したのですが,まだ解決策が見つかっていません.記憶域スペースに双方向ミラーのボリュームを作って,そこにファイル履歴をため込むように指定したのですが,こちらは順調のようです.

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

2016/08/01

Windows のファイル履歴がようやく稼働

今年3月末に,HDD 2台を増設して “記憶域プール” を作成してミラーリング機能を持った仮想ディスクを作り,それをターゲットにして “ファイル履歴” を取るという記事をアップしました.

Filehistorypanel

その後,Windows 10 に移行後もファイル履歴の試行を続けてきました.私自身のファイルは問題なく履歴が取れていることが確認できていたのですが,家人のファイルがどうしてもエラーとなって履歴が取れないという状態が続いていました.従って, “まるで使い物にならない!” と捨て台詞をはいてほかのバックアップソフトに走ることも何度か考えました.

この週末,少し時間に余裕が取れたので,家人のファイル・ツリーのどのフォルダ,どのファイルが悪さをしているのか,徹底的に調べてみることにしました.ファイル履歴がコケる原因はいくつか特定されており,それを知るとマイクロソフトともあろう大企業を何やら非常に情けなく感じてしまうのですが,ひらがな,全角カタカナ,半角カタカナで同一の名前のファイルを含むフォルダは履歴を取れない,同様に,全角英数字と半角英数字で同一の名前があっても同様にエラーとなる,などという症状がわかっています.

これを手掛かりに,ファイル履歴の対象からまず全てのフォルダを除外しておき,フォルダを一つずつ対象に入れてエラーが出ないか確認するという地道な作業を繰り返していきます.数時間はかかりましたが,ようやく,前記の通りの全角と半角で同一の名前のファイルがいくつかのフォルダで見つかりました.これらのファイル名を修正すると,すべてのフォルダでファイル履歴が問題なく取れることが確認できました.

これで Mac OS の Time Machineとほぼ同等の機能が Windows でも使用できることになりました.履歴を取得する間隔はデフォルトで 1 時間に設定されているので,ちょっとした作業をしてファイルを更新したとしても,その前後の履歴が取れる可能性は十分高いと言えます.

おりしも,Windows 10 リリース一周年の大型アップデート “Redstone 1” が 8 月 2 日にリリースを予定されています.このアップデートでファイル履歴が改善されるという事前予想はないのですが,たとえ無くても今のままで運用していけるはずです.

そしてもちろん,このシステムお任せのファイル履歴以外に,タスクスケジューラを用いた定期バックアップを毎日,さらに週次で手動によるオフライン完全バックアップも取っており,データの保全については何とかこれで合格点かなと思っています.

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

2016/05/07

Ubuntu 16.04 LTS に乗り換えました

Windows 10 に乗り換えるのと同時に,ワークステーションの OS を,Ubuntu 15.10 から 16.04 LTS に乗り換えました.今回の版は LTS (Long Term Support) なので,少なくとも2年間は使い続けることができます.まあ,その間にはいろいろと新しい機能や枠組みの変化があって,新しい版に乗り換えざるを得なくなると思いますが,それでも,長期間のサポートが受けられる保証があるのは心強いことです.

Screenshotfrom20160507125137

LTS では大きな冒険はしないというポリシーなので,それまでの最新版 15.10 と比べて特段の変化は感じられません.C コンパイラPython などの言語系,GNOME デスクトップアプリケーションはそれなりに細かくバージョンが上がっていますが,いずれもバグフィックスのレベル.

一方,今回はハードウェアを換装し,これまで Windows を載せてメインマシンとして使ってきた CPU とメモリ,そして WHS2011 マシンで使っていた SSD を流用し,ハードウェアのグレードアップを行いました.SSD の威力は素晴らしく,ブートマネージャの GRUB の画面からログイン画面が出るまで 5 秒とかかりません.これは本当にすごいことです.

このワークステーションの使い道は,以前はデータ処理,信号処理アルゴリズムの開発などだったのですが,すでにそのような動機は失ってしまい,最近ではもっぱら自分史を LaTeX でタイプセットしながら書き進めるためのプラットフォームと化しています.

今から30年前,世の中に出て間もない TeX-83 を VAX-11/VMS 上で使っているときには,1ページ,また1ページとタイプセットが進んでいく様子を VT100 の画面で見ることができたのですが,今では自宅のパソコンの能力で,100ページくらいのタイプセットが1秒とかかりません.この30年間のハードウェアとソフトウェアの進歩は本当に恐ろしいくらいです.

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

2016/05/04

Windows10に乗り換えました

特に必要性は感じていなかったのですが,Windows 7Winodows 8 系列のライセンスからの無償アップグレードの期限が7月下旬と近づいてきていること,新しいハードウェアへの換装を計画していたこと,そしてまとまった時間が取れるのが5月の連休くらいしかないことなどから,ハードウェアの換装と Windows 10 へのアップグレードを一気に敢行しました.

Win10_desktop

ただし今回インストールしたのは Current Branch Build 10586 という昨年11月にリリースされた安定版で,最新の Preview 版ではありません.これは何よりも安定性を重視したためです.したがって,Windows 10 の目玉機能のいくつか,例えば Cortana はまだその機能を十分には発揮していないようです.

また,新しいブラウザの Edge は非常に高速できびきび動くものの,メニューや各種機能を使おうとするとメニュー階層を降りるのに何度もクリックしなければならないため,なかなか慣れることができません.しばらくは Internet Explorer 11 と併用して慣れていこうと思います.

一方,ハードウェアは最新の Skylake Core-i7 に換装し,かつ値段が下がったメモリは,夢の DDR4 32GB を実装しました.これでどんなに大きな画像ファイルをレタッチしても,メモリ不足になることはないはず.また,システムファイルはこれまで使ってきた SSD を流用してインストールしましたので,相変わらず高速起動でアプリケーションもきびきびと動きます.

さらに,いくらスタートボタンが復活したといっても,使いにくさは相変わらずなので,これまで Windows 8.1 でもさんざんお世話になってきた Classic Shell をインストールし,Windows 7 時代のインターフェースで快適にショートカットを使えています.

Windows 10 は夏ごろに大規模なアップデートが予定されているので,それによってかなりの機能が補充されることを期待しています.それまではライセンスが新しくなった Windows 8.1 として使っていくつもりです.

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

より以前の記事一覧