Archive for 10月, 2016

MusicBeeからgmusicbrowser(GMB)への移行は、かなり終わりに近く、もうMusicBeeは関係なくなって、GMBに閉じた話になっている。ただ、いつものことだが、ゴールは見えると遠ざかるもので、動作確認でいろいろな問題が出て来て、なかなか終わらない。予想外にも今日はほとんど全部使ってしまったのだが、あと少しでようやく本物のUSBメモリで試せそうな感じだ。以下に、つまづいたことを書く。

全体的な動作確認

ファイル名のクォート("や`や/などの特殊な文字を無効にする処理)がまだ不完全だった。これの対応はどうも場当たり的で良くないので、根本的に別の方法にした方がいい気がする。同期プログラムからOSのコマンドを呼ぶ(system()など)時に、ファイル名をシェルに解釈させないようにすれば、クォートしなくてもうまく行くように思うので、あとで何とかしたい。(が、そう思っていて実際にやったことは少ない・・・) → シェルに特殊文字を解釈させないようにする方法はないようなので、簡単には行かなそうだ。system()などを使わなければいいのだろうか? (23:28)

詳細な動作確認-エンコードしたファイルの確認

音量の正規化が全く駄目だった。再生ゲインはピーク値で決まっている訳ではないので、ファイルからピーク値のタグを抽出して、それで音量を調整しても駄目で、トラックの再生ゲインのタグの値で調整すべきだった。ffmpegにはタグに書かれたトラックの再生ゲインで音量を調整する機能がないので、soxiで(アーティスト名などのタグと同時に)トラックの再生ゲインのタグを抽出して、その値からffmpegに指定する音量の値を計算することにした(再生ゲインのタグがない場合は諦めるが、実際には、すべての手持ちファイルには再生ゲインのタグが入っている/入れるので、問題はない)。なお、exiftoolは処理が遅いので、基本的には使わないことにした(soxiで文字化けする場合は諦める)。

今、何となく、エンコードと音量の正規化にはffmpegでなくsoxを使った方がいい気がして来たので、あとで考えよう。soxが文字化けするのはMP3だけだろうから、その時だけ特別な処理をすれば良さそうだ。→ 残念ながら、soxはアルバムアートの埋め込みができないので、使えない。(23:25)

ポータブルHDDにポップス全曲(約1万曲)を同期して確認

処理が遅過ぎた。最初の同期では、1万曲をエンコードするのに約4時間掛かった。全部エンコードしたのだから仕方ないのだが、エンコードしない場合(更新ファイルの確認のみ)にも遅かった。1万曲で約1000秒(17分)掛かった。いろいろ調べたところ、上に書いたように、exiftoolが遅かった。それをsoxiに換えたところ、約10倍高速になった。ただし、soxiはMP3の再生ゲインタグを抽出できないので、その場合はexiftoolも使うことにした。

また、下に書いた、子プロセスの終了判定がうまく行かないために入れた処理も遅かったのだが、原因が分かったので省けた。現在は、(エンコードしない場合)1万曲で約100秒(1.7分)で済むようになった。これでもまだ遅い気がするので、あとで何とかしたい。

その他に、ファイル名のクォートの問題も再発したし、タグからアーティスト名を抽出する処理にバグがあったりもした。

それから、GUIのキャンセルの検出処理がうまく行かなかった。子プロセスの終了を判定する関数(pcntl_waitpid())が期待どおりに動かず、かなり手こずったのだが、結局は、それに渡すプロセスIDが異なっていたことが分かった。

なお、最初の同期(エンコード処理)時のシステム負荷なども調べたので、以下に書く。

  • CPU使用率: 約80% (同時処理数=5)
  • CPU温度: 約60℃
  • メモリ使用率: 約20%
  • GMBの音切れ: なし
  • 同期対象ファイル一覧のサイズ: 約1.5MB
  • 結果のログのサイズ: 3.7MB
  • ディスク使用量: 約55GB/約1万曲

使用率80%で動かし続けると、さすがにCPU温度が上がって、ファンが少しうるさくなる。でも、BIOSにファン回転数の調整機能があるようなので、安心だ。ファイル一覧のサイズは思ったより小さくて、同期プログラムなどは問題なく動作した。ただ、ログをエディタ(kate)にペーストしたらハングしてしまったのには、結構がっかりした。

その他の問題

  • キャンセル(処理の中止要求)の検出のためにzenityのプログレスの終了を待つつもりが、全部の子プロセスを待っていて、並列処理しているエンコードプロセスの終了でキャンセル処理してしまった。
  • [GMB] 再生中に再生ゲインがoffになることがあるようだ。メニューの表示と実際が合っていない。原因不明なので、追って調査する。
  • [GMB] 再生するだけでファイルが更新されて、同期対象になってしまう。プラグインalbuminfoが自動的にジャンルを更新しているので、一旦、albuminfoとartistinfoを使うのを止めた。あとで更に調査して修正したい。
  • [zenity] LANG=Cで起動して、日本語のディレクトリを選択すると、出力が"?????"になる。→ zenityは日本語(LANG=ja_JP.utf8)で起動することにした。
  • [zenity] プログレスのウインドウのサイズが大きくなる。原因不明。文字列(ファイル名)が長過ぎるからか。

今後

少し使ってみて、不要にファイルが更新されないことを確認してから、実際に車で使っているUSBメモリに全曲を同期して、カーナビで再生できることを確認したら、終了となる予定。ただ、上述のように、改良したい点もあるので、ゴールはもう少し先になりそうだ。

その後、いろいろ良さそうなアイデアが浮かんだので、これが完成する前に第2版に着手しそうだ。最もいい考えは以下だ。

この同期プログラムをGMBから呼ぶ時に使っているexportというプラグインには、曲のファイル名や情報をCSVやM3U形式で書き出す機能があるのだが、(必要ならそれを改造して)同期の時に使うタグ情報(アーティスト名、アルバム名、トラックの再生ゲイン値)を書き出せば、音楽ファイルのタグを読む必要がなくなるから、今の数倍〜10倍高速になりそう!

それから、もし上が駄目でも、次の案もいい。

今は音楽ファイルのタグは外部プログラム(exiftoolやsoxi)で抽出しているが、実はPHPのライブラリでも取得可能だ。php-getid3というライブラリはいろいろなフォーマットに対応しているから使えそうだ。これを使えば、外部プログラムを呼ばなくて済むので、数倍高速になる可能性が高い。

更に、もし外部プログラムを使わないで済めば、特殊文字のクォートが不要になるので、プログラムが「マトモ」になる。ただ、ffmpegは必ず使うので、特殊文字の展開をしないsystem()関数を作る必要はある。

そして、そろそろプログラムの改良や修正が怖くなってきた(間違ったら戻れない)ので、GitやSVNのようなバージョン管理システムを入れようかと思っている。→ ローカルだけで使うのであれば、Gitがとても楽なことが分かったので、それにした。GUIはSmartGitを試している。(10/31 22:55, 11/1 6:39)

  •   0
  •   0

(いけ好かないブロガーの題より)

Window10、大規模アップデートの配信が決定。3D性能を大幅強化 (ママ)

近頃は押し売りが流行っているのか。3Dって、そんなに需要があったっけ? 一家に一台、3Dプリンタでもないだろうに。MSはこれから流行らそうとしているのか。あるいは、Windowsを使う「クリエーター」がそんなに居るのか。

なんでだかは分からないが、とにかく本質を見失っている。そして、みんなそういうのに振り回されて、「Windows 10 ***版で***するには/しないには」なんて記事やアプリが増えるのだろう。もちろん、そういうのはLinuxでもあるが、Windowsのは多過ぎるし、変更が頻繁過ぎるし、そもそも変更の必要性が疑問だ。そんなにいつも苦労させられるのなら使わなければいいのにと思うが、他に手軽に使えるOSはMacの以外にないから、どうしようもないのだろう。

そのMacにしても、つまらない改良だか「進歩」だかなんだか知らないが、OSの名前を変えたりファンクションキーなんて取るに足らないものをなくして胸を張っているのは片腹痛い。笑いのネタにすらならない。しかも、エスケープキーまでなくすなんて、全く分かってない。意識高い系の集団が、「僕ら最先端でかっこいいでしょ」って、内輪受けしているだけだ。そして、それをありがたがって使う人たちが沢山居るのが信じられない。

いい加減、下らないテクノロジー遊びは止めろと言いたい。

PS. 元ネタの題は誤っている(正しくは"Windows")のだが、まとめサイトに出ているのはこういう類が多い。まとめサイトでなく、元の掲示板に間違って投稿されているのだろうが、「もっと落ち着けよ!」って言いたい。

(10/29 7:31 若干加筆・修正)

  •   0
  •   0

久しぶりにCuRAZYから。あそこは基本的にはおもしろいんだけど、近頃は意識高い系のネタがあって、ちょっと鼻白むことがあるけど、たまに「なるほど」と思うものがあるから、止める気にはならない。

【親は監督でなく観客になろう】心から参考にしたい成功の秘訣8選

最初の水木しげるの言葉、「しないではいられないことをし続けなさい」がいい。ていうか、僕は子供の頃からそうだったので、「やっぱりそれで良かったのか」と、今更ながら安心している。

今だって、(眠かろうが疲れようが、おもしろい)プログラミングをしないでは居られないw ブログだって、別に義務とか習慣で書いている訳ではなく、書くのが止められないのだ。

PS. 残念ながら、ピアノ(演奏)はそうではなかったが、まあ仕方ない。自覚はあるから、納得しているし。

  •   0
  •   2

昨日辺りから、MusicBeeからgmusicbrowser(GMB)への移行に関して残っていた、USBメモリなどのデバイスに曲を同期(転送)する機能を作る作業が捗って、基本機能がほとんどできた。

機能概要は以下のとおり。(MusicBeeのデバイス同期機能にならった)

  • 転送対象: GMBの管理している曲。特にフィルタ(=自動プレイリスト)の結果の曲。
  • 転送先: USBメモリなど (Linuxのディレクトリなら何でも可)
  • 転送時の処理: MP3でないファイルはMP3に変換して転送する。
  • その他: 同期先にあって同期元にないファイルは削除する。

どのようにGMBに組み込む(連携させる)か、いろいろ考えたのだが、GMBのexportプラグインを改造することにした。これには多くのメリットがあった。

  • プラグインなので、(外部コマンドを自分で起動するなどせずに)GMBからシームレスに起動できるようになった。
  • GMBのプレイリストをファイルに保存する機能があるので、それを使って、同期対象のファイル一覧を作れる。(当初は自分でプレイリストを保存する手順が必要かと思っていたのが、不要になった。)
  • 外部コマンドを呼ぶ機能もあるので、それにならって、実際に同期を行う外部プログラムを起動できる。
  • 設定機能もあるので、同期機能の設定を作る時の参考になる。

それからいろいろ検討した結果、以下のような作業・処理手順を実現することにした。

  1. デバイス(USBメモリ)を挿す。
  2. GMBで、同期対象のプレイリスト(フィルタ)や曲を右クリックして、"Sync to directory"を選択する。
  3. (以下の処理が終わるまで、GMBは待ち状態になる。)
  4. 同期プログラムは、指定された曲に対して、以下の処理を実行する。
    1. その曲が同期先(デバイス)にある場合には、何もしない。(同名だが内容が違う場合に備えて、ファイル名以外にタイムスタンプでも判定する: ホストの日時 > メモリの日時 → 転送する)。
    2. その曲が同期先にない場合、曲のフォーマットがMP3でなければMP3にし、トラックの最大値を統一する(例: -0.9dBになるように、データを増幅する)。同時に、再生ゲインのタグを除去して、同期先にコピーする。
  5. 同期プログラムは、同期先にあって同期元にないファイルを削除する。

ある程度実装した後、以下の問題が見つかったので、対処した。

  • GMBは同期プログラム(外部プログラム)の終了を待たない。→ 同期結果が分からない。→ 同期するプログラムで、途中経過や結果のダイアログを出すことにした。
  • 同期元のトップディレクトリは一つでないので、それを元に同期先のトップディレクトリを設定してはいけない。→ 同期するプログラムで、同期先のトップを指定するようにし、トップ下のディレクトリは曲のタグ(アーティスト、アルバム)から生成するようにした。
  • どうやって同期先のトップディレクトリの指定をするか。→ GUIプログラムzenityでファイル選択ダイアログを出すことにした。
  • 元のファイルにトラックの最大値(REPLAYGAIN_TRACK_PEAKなど)がある場合は、改めて最大値を求めずにそれを使えばいい。
  • SOXでは日本語のMP3のタグ(アーティストなど)が文字化けする。→ ffmpegを使うことにした。
  • カーナビでアルバムアートを表示させたいので、MP3にアルバムアートを埋め込む必要がある(埋め込まないと、カーナビには表示されないため)。→ オリジナルのディレクトリからアルバムアート(cover.jpgなど)を探して、縮小してMP3に埋め込むことにした。
  • 処理(特にMP3へのエンコード処理)が遅い。→ とりあえず、ffmpegを2スレッドで並列化した(-threads 2)。本当はファイルごとに別プロセスで処理するといいのだろうが、結構面倒だ。→ その後、MP3には-threadsは効果がないことが分かったので、止めた。(10/28 5:53)

以下、実装時の細かい話を書く。

  • 同期先のファイル名は、同期元のファイル名のsuffix(拡張子)を"mp3"に置換して生成している。が、今思えば、タグから作っても良かったかも知れないし、通し番号でも良かったかも知れない。
  • ファイル名によっては、特殊な文字("や()など)が入っているため、外部コマンドに渡す際にファイル名をクォートする処理が必要だった。
  • 同様に、USBメモリはVFATなので、同期先のファイル名中の、VFATで使えない文字は"_"に変換するようにした。
  • 再生ゲインタグの抽出にはexiftoolを使った(-s2)。ffmpegでも可能だが、exiftoolの方が速かったためである。
  • FLACとMP3では再生ゲインタグの名前や記法が異なるので(下の例を参照)、両方に対応した。
    • FLAC: REPLAYGAIN_TRACK_PEAK: 0.921652
    • MP3: User Defined Text               : (replaygain_track_peak) 0.921652
  • 同期元に再生ゲインタグがない場合に最大音量を求めるのには、ffmpegを使った(-af volumedetect)。この場合は、エンコードの前に追加処理として行うため、処理が遅くなる。
  • ffmpegでの音量の正規化は、loudnormフィルタがちゃんとしているようだが、車で聴くのにそこまでする必要はないため、MusicBee同様、volumeフィルタで最大値を設定することにした(例: volume=-0.5dB)。← volumeに指定するのは絶対値でなく増減なので、最大音量近くを意図して-0.5dBを指定するのは誤っている。(10/29 18:29)
  • 再生ゲインの計算は単純な最大値ではないようなので、元のファイルに再生ゲインタグがない場合は、警告を出して、正規化を諦めるようにした。ffmpegでloudnormフィルタを使えば求められるが、それにしてもGMBで再生ゲインを求めたファイルと音量差ができると考えたからだ。そもそも、元のファイルはすべて再生ゲインタグを入れている前提なので、問題は生じないはずである。(10/29 18:29)
  • 不要なタグの削除は、エンコード時にffmpegで行った。(例: -metadata REPLAYGAIN_ALBUM_GAIN=)
  • 少しでも小さいファイルサイズで音質を良くするため、MP3は可変ビットレート(例: -q:a 3)でエンコードした。ちょっと聴いた限りでは、音質に問題はなかった。品質に3を指定した場合、平均ビットレートは約180kbps程度になり、ファイルサイズはFLACの1/5程度になった。
  • アルバムアートの埋め込みも、エンコード時にffmpegで行った。
  • アルバムアートの埋め込み前に、convertコマンドを使って256x256画素にしている。元のサイズがそれより小さい場合は処理しないようにしたいが、今はいつも処理している。→ その後、縮小のみをする方法が見つかったので、元のサイズが最小サイズより小さい場合は、拡大しないようにした。(例: -resize "256x256>") (10/29 18:35)
  • 上述のように、ffmpegでさまざまな処理を一気にしているため、ffmpegを起動するコマンドラインがかなり長くなった。
  • 同期先にあって同期元にないファイルの削除は以下のようにしている。
    1. 同期の前に、同期先のファイル一覧を取得する。
    2. 同期中に、同期またはスキップしたファイル一覧を保存しておく。
    3. 同期終了後に2つの一覧を比較し、同期したファイル一覧にないファイルを削除する。
  • 削除機能の基本動作は問題なかったが、ファイル数が多い場合に使用メモリ量や負荷が高くなる可能性があるので、要注意だ。

実装後、この同期プログラムで作成したMP3ファイルがカーナビで再生でき、アルバムアートも表示されることを確認した。

以下、操作時の画面キャプチャを示す。

最後に、同期機能に関して以下のような残件はあるが、現在のところ、GMBに大きな問題はなく、この先にもあるとは思えないので、MusicBeeからGMBへの移行は完了したと考えてよいだろう。

  1. 同期プログラムのオプションを実装する。
  2. exportプラグインの設定画面で同期のオプションを設定できるようにする。
  3. 細かい調整・高速化
  4. 全体的な動作確認
  5. 詳細な動作確認
  6. 実際に使っているUSBメモリにフル同期(全曲を同期)してみる。
    1. 所要時間を測る。
    2. 使用メモリ量を測る。
    3. カーナビで再生を確認する。

上の1, 2を実装し、同期中のファイル名を表示し、同期結果に実行ログも表示できるようにした。(10/27 21:46)

3の高速化について、ffmpegのマルチスレッド指定(-threads)は効果がなかったので、複数ファイルのエンコードを同時に実行できるようにしてみた。すると、曲にもよるが、6ファイル(プロセス)を同時に処理した場合には、約3-4倍高速になることが分かったので、6プロセスでの並行処理を採用することにした。以下に、いくつかの測定結果を示す。(CPU=Core i7-2600, 転送元=HDD, 転送先=SSD)

・ポップス 28曲 (Blondie, FLAC, 125MB)

  • 1プロセス: 112s → 4s/曲, 1.1MB/s
  • 2プロセス: 65s → 2.3s/曲, 1.9MB/s
  • 4プロセス: 39s → 1.4s/曲, 3.2MB/s: 1プロセスの約3倍速
  • 6プロセス: 29s → 1s/曲, 4.3MB/s: 1プロセスの3.9倍速

・クラシック 6曲 (ブロンフマン, FLAC, 313MB)

  • 1プロセス: 81s → 13.5s/曲, 3.9MB/s
  • 2プロセス: 49s → 8.2s曲, 6.3MB/s
  • 4プロセス: 34s → 5.7s/曲, 9.2MB/s: 1プロセスの2.4倍速
  • 6プロセス: 26s → 4.3s/曲, 12MB/s : 1プロセスの3倍速

なお、6プロセス同時の場合、CPU使用率は75%程度まで上昇した。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-28_21-42-49-1

ここまでやって大分良くなったし、プログラムもなかなか本格的になったのだが、まだまだ9.75合目程度で、完成までにはもう少しある。そして、ここからは結構辛い。。。(10/28 22:25)

 

PS. これが完成して気が向いたら、他の改良・修正(主なものは以下のとおり)と一緒に作者に送ってみようかと思っている。(僕からすれば、)寄付よりはいいかなと思う。

  • 再生ゲインモード(off/album/track)の切り替えを(設定画面でなく)メニューで行えるようにした。(頻繁に使うため)
  • 「今の曲が終わったら停止のon/off」を行う内部コマンドを追加した。(リモコンで行いたいため)
  • 設定の"Remember playing position between sessions"をonにしている時、次回起動時に再生を開始しないようにした。(文面通りにした)
  • Queueの"Stop after this song"がonの時、再生終了後、次の曲に進む(ただし、停止のまま)ようにした。(次回の再生時に次の曲に進める手間を省くため。MusicBeeに合わせた)

そして、オープンソースプログラムは自分でいろいろ改良・修正できるので、やっぱりすごくいいと思う。そして、GMBはプログラマーにとって、最高の音楽プレーヤーだと思う。

(23:30 加筆・修正; 10/27 5:35 少し加筆;10/28 5:53 ffmpegの-threadsについて追記;10/28 22:25 並列処理について追記; 10/29 7:24 わずかに修正; 10/29 18:35 再生ゲインタグがない場合とアルバムアートのサイズが小さい場合について更新)

  •   0
  •   1

音楽プレーヤーと並んで重要な、Linuxでのクラウドバックアップサービスが大体決まった。そもそも選択肢はほとんどなかったのだが、CrashPlanにすることにした。

必要な条件は、以下だ。

  • 容量無制限
  • 転送速度が遅過ぎない。
  • (現在のBackblazeに比べて、)費用が高過ぎない。

約1週間、CrashPlanとAltDriveを同時に動かして、使い勝手を比較した。その結果、以下のことが分かった。

  • AltDriveは転送速度がかなり遅い。CrashPlanの1/2程度しか出ず、遅過ぎる。以下は、約6日間の転送データ量から求めた、(私の環境での)実転送速度である。なお、平日の昼間はPCを止めていたので、連続稼働時よりも遅いことに注意が必要である。
    • AltDrive: 24GB/日 (278KB/s)
    • CrashPlan: 55GB/日 (637KB/s)
  • どちらも、なぜか転送を止めている時間がある。特に、CrashPlanは頻繁に接続が切断されている。それがなければ、もっと高速になるのだが。
  • どちらもJavaで書かれており、Linux Mintで問題なく動いた。CPU負荷やメモリ使用量は、どちらもそれほど高くない。
  • UIはCrashPlanの方が綺麗だが、使い勝手はどちらも同様である。
  • AltDriveは若干安定性が悪い(バックアップが停まって再開しないことがあった。その時、アプリはハングしていた)。
  • CrashPlanの状態表示は余りあてにならない。例えば、転送が停まっている時でも、最後の速度が表示され続けている。

BackBlazeのB2というストレージサービスも検討したのだが、以下の問題やリスクがあるので止めた。

  • B2用のバックアッププログラムが要る。: 自分で用意することになるのだろうが、音楽や画像などと違って気が抜けない。
  • データの暗号化は自分で行う必要がある。: これも気が抜けない。
  • バックアップ実行間隔の設定が難しいし、バックアップ中はPCを止められない。
  • 料金が従量制なので、どのくらい掛かるか読めない。

※なお、BackBlazeはWineでは動かなかった。

  •   0
  •   0

疲れたので、この週末はプログラミングは休むつもりで居たが、Linux移行作業は進めていた。しかも、気付いたら、散歩や掃除などの予定していたことを何もせずに、プログラミングしていて日が暮れていたという体たらくである。

が、そのおかげで、MusicBee(MB)からgmusicbrowser(GMB)への移行がかなり捗った。MB関連で残っていたのは、以下である。

  1. 音楽ファイルの管理の移行
  2. デバイスとの同期
  3. GMBのリモコン(I/Oデータ USB-IRUNIT2)対応

それらのうち、1と3ができた。

まず、音楽ファイルの管理の移行での問題点は以下だった。

  1. GMBはWAVとWMAをサポートしていないので、一覧に出ず、再生できない。
  2. MBのカスタムタグのGMBへの移行。

WAVとWMAの件は、基本的には単純で、それらをFLACに変換すれば良い。なお、それら以外にGMBのサポートしていないフォーマットは使っていなかった。

手順としては、MBの自動プレイリストでWAVとWMAのファイルを抽出(検索)して、それらに対してフォーマット変換を行った。ちょっと面倒だったのは、変換したファイルをサブディレクトリに入れたかったのだができなかったことと、WAVには再生ゲイン(その曲の音量の最大値のようなもの。いろいろな曲の音量を揃える時に使う)の値が入っていないので、変換後に計算する必要があったこと程度だ。

サブディレクトリについては、おそらく、MBの変数を使えばできたのだろうが、入力画面には出ず、どうせヘルプドキュメントもなく、調べるのが面倒だったので、同じディレクトリで我慢した。WAVなどが同じディレクトリにあっても、GMBはそれらを認識しないのだから、自分でディレクトリを見ない限り、問題はない。

その量は膨大で、約8600個(約220GB)もあり、全ファイル数の半分以上だった。変換には4スレッドで約5時間掛かった。FLACに変換後のサイズは約70GBだった。なかなか気持ちよく圧縮された。もちろん、HDDにはまだ余裕があるし、何かの間違いがあるかも知れないので、元のファイルは消していない。なお、WMA(ロスレス)からFLACへの変換がロスレスなのかちょっと心配はあるが、どっちにしても聞き分けられないので、問題はない。この処理によって、念願だった、GMBでビートルズの曲が聴けるようになった。

なお、再生ゲインの計算は約2000ファイルに対して実施し、約30分掛かった。

次に、カスタムタグの移行を行った。カスタムタグは、MBだけの特別なタグで、基本的にはファイルに書き込まれていないので、ファイルを移しただけではGMBは認識しない。また、ファイルに書き込んでいるカスタムタグでも、GMBは「やれば表示できる」程度で検索やソートには使えないので、何らかの対応をする必要がある。それにはいくつかの方法があるのだが、以下のようにした。

  • 値が1/0のタグ (例: 「この曲を無視する」)
    1. 自動プレイリストで、対象の(値が1の)ファイルを検索する。
    2. ファイル一覧を通常のプレイリストにエクスポートする。
    3. それをGMBでインポートして、その中の曲に対して、GMBのラベルを設定する。
  • 値が任意のタグ (例: 購入日)
    • いい解決策がなかったのだが、幸い、音楽ファイルではタグも対象のファイル数も少なかったので、手で、一般的なタグであるコメントに追記した。
    • ビデオファイルにはいくつかのカスタムタグがある(例: ソース)のだが、GMBはビデオが扱えないため、別アプリで対応する必要があるので保留にした。

なお、プレイリストは、MBの設定では"M3U(#EXT)"形式で、絶対パス・UNIX形式でエクスポートし、エディタでパスを修正した。M3U(#EXT)形式でないと、GMBではインポートできない。ファイルの先頭に"#EXTM3U"が必要なようだ。なお、UNIX形式にしても、パスの先頭にドライブ名が残るなど、そのままでは使えなかった。相対パスにしても、ドライブが複数あるためにパスが間抜けになっていて、便利ではなかった。この辺りは、もう少し何とかすべきだろうが、Windowsでしか動かないプログラムに求めるのは酷だろう。

それから、余計なファイルを削除したり無効化したり、タイトルなどが文字化けしたファイルに対応した後、ファイルの過不足のチェックをした。概ね問題はなかったのだが、移行前後のファイル数に若干違いがあった。全体としては、GMBの方が数十個多かった。どうしてかは良く分からないが、誤差の範囲だろうし、少ないよりはいいだろうw いや、実際には、デジタルなので誤差はないはずなのだが、まあ、聴いた時におかしければ対処するから問題ない。そのためにも、オリジナルのファイルは残しておくのだ。

あと、どういう訳かアルバムアートが出ない曲が結構あったので、手で登録したり、なぜか再生ゲインが入ってない曲があったので再度計算したり、同じアーティストでも微妙に異なる綴り(例: "the"と"The")のせいで別人に扱われているのを、手で修正したりした。

リモコン対応は比較的楽だったが、問題点は以下だった。

  • どうやってリモコンとGMBをつなぐか。
  • GMBにないコマンド(今の曲が終わったら停止のon/off)をどうするか。

リモコンとGMBの接続には、以下の方法がある。

  • キーボードのシミュレーション (MBでやっていた方式)
  • MPRIS2
  • DBus

キーボードのシミュレーションはいろいろと面倒なので、却下した。例えば、キーを送る前にGMBのウインドウを探したり、ウインドウマネージャのホットキーを無効にしたりする必要がある。

次に、MPRIS2とDBusはどちらでもいいのだが、GMBにないコマンドを追加する可能性があったので、メッセージの仕様に自由がある(仕様がない)DBusにした。DBusだと、GMBのRunCommandコマンドでほとんど何でもできる一方、MPRIS2は(下位ではDBusを使っているのだが)、仕様にあるコマンドが少なくてできることが余りなく、わざわざ規格を決めたメリットがあるのか、ちょっと疑問だ。

リモコンのキーを読んでDBusで送信するプログラムは、以前試しに作ったものがあったので、改良程度でできた。ただ、思わぬ問題が起こった。リモコンのキーを押すと、ウインドウマネージャが終了するらしく、ログアウトしてしまうのだ。

この原因は良く分からないのだが、おそらく、リモコンのキーがキーとしては滅茶苦茶(文字でなく、バイナリデータ)なので、ウインドウマネージャが誤動作して落ちるのではないかと思う。検索したら、運良く対処方法が見つかった。xinputというコマンドで、リモコンを除外すれば良い。除外するには、リモコンのデバイス名などを調べる必要があった(USB接続なので、デバイス名が変わる可能性があるため)ので、ちょっと手間が掛かった。udevadmやlsusbといったコマンドを使った。

(2016/10/29 7:06 追記) しばらく使っていると、xinputでの除外設定が解除されてしまうようなので(以前あった、xmodmapで変更したキー配置が戻るのと同様か?)、XOrg (X Window Systemのサーバー)の設定にリモコンを無視する設定を追加して、恒久的な対応をした。以下に設定例を示す。

/usr/share/X11/xorg.conf.d/10-evdev.confに追加:
 Section "InputClass"
   Identifier "bad device"
   MatchProduct "I-O DATA DEVICE,INC. USB-IRUNIT2"
   Option "ignore" "on"
 EndSection

なお、リモコンはudevというプログラムでLinuxに自動的に登録されるのだが、デフォルトでは管理者(root)以外はアクセスできない。そのため、リモコンを認識した後で、他人もアクセスできるようにする処理をudevに設定を追加した。

それからリモコン関係の機能追加をした。まず、面倒だと思っていた「今の曲が終わったら停止のon/off」コマンドをGMBに追加した。「今の曲が終わった後の動作の指定」のコマンドはあったので、それのコピーと修正(現在の状態を元に、新しい状態を設定する)でできた。更に、Windowsでやっていた、リモコンの電源ボタンで休止する機能も付けて、リモコンは完璧になった。

今気になっているのは、あるプレイリストを再生中に別の曲が入ってしまう問題である。例えば、ポップスのプレイリストを聴いているのに、途中でクラシックが入ることがあった。やっぱり原因はわからないのだが、GMBの設定で、「現在の楽曲は常にプレイリストにある」と「最新の楽曲」をoffにしてみたら、今のところ再発していない。それにしても、どちらも意味不明な訳ではあるが、自分でやる気はしないので、文句は言わない。ただ、設定がなくて英語にできないのが、ちょっと不便だ。Linuxのデスクトップアプリは、OSの言語設定に合わせるのが流儀なのかも知れない。

もう一つ気になっているのは、戻れる曲数に限度があることだ。1曲程度しか戻れない。シャフルしているせいだろうか。まあ、戻ることは滅多にないので、問題ではない。

という訳で、残ったのはデバイス(USBメモリ)との同期だけのはずだ。それについては、方法を考えた。基本的には、soxというオーディオファイル処理プログラムと、デバイスとホスト間のファイル同期処理(デバイスにないファイルだけを転送する)を併用すればできそうだ。

もちろん、ファイル同期プログラムは世の中にいくつもあるのだが、以下の特別な処理が必要なので、使えない。

  • デバイスに転送する時に、MP3でないものをMP3に変換する。
  • 再生ゲインを恒久化する(タグの数値でなく、データ自体を増幅する)。
  • 再生ゲインのタグを除去する。

ファイルの同期はデジカメでもやったので、それほど難しくないだろうから、あとは実装するだけだ。

そして今は、MusicBeeでなくgmusicbrowserで音楽を掛けている。VirtualBoxとその上のWindows 7を動かさずに済むようになったおかげで、メモリ使用率は12%程度に減り、平常時のCPU負荷も2%程度に減った。全くいいことづくめだ。更に、GMBに再生ゲインの切り替えメニューを追加できれば、差し当たっては言うことは何もない。最高の音楽プレーヤーのできあがりだ。

その後やる気が出て、GMBに再生ゲインの切り替えメニューを追加できた。先日試しに作ったコードがそのまま使えた。今は設定するだけで、現在の状態(off/アルバム/トラック)は表示できないが、結構便利になった。あと、ダウンロードしたソースだとなぜか英語表記になっていて、更に都合がいい。(23:44)

20161023-gmb-add-rg-1

その後、ちょっと苦労したが、なんとか再生ゲインの切り替えメニューに現在の状態を表示できた。まったくPerlは判じ物で、どうなっているのか理解できないが、便利なのは認める。(10/25 4:15)

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-25_04-13-07-1

  •   0
  •   0

市内の公園で爆発騒ぎ。自分だけでなく、自宅まで燃やしたようだ。その公園は遠いけど、ちょっと散歩に行ってみたいと思っていたところだ。やっぱり、この街も、「地方だから安心」とは言えなくなって来た。。。

デジカメ(IXY Digital 3000IS)の電池が寿命らしく、充電してもすぐに警告が出るようになったので、交換した。もう7年も使ったのだから、確かに寿命なのだろう。ちなみに、Amazonは値段は安かったのだが、「偽物が届いた」という書き込みが多かったので、ヨドバシにした。偽物を売る店を放置しているようでは、全く買う気が起こらない。

ヨドバシは、留守でも受け取れるようにとメール便にしたのだが、昨日注文して今日届いていたので、結構感動した。やっぱり、(少なくとも僕の中では)Amazonは終わりだ。慢心は良くない。特に理由がない限り、商品の検索とWishlistでの商品メモ機能だけを使うことにしよう。

もちろん、ヨドバシだって、未来永劫この良さが続くはずはない。要は、「気に入った」とか思って特定の団体に入れ込まないことが重要なのだろう。団体には人間以上に心がないので、こっちが気に入ってもそうでなくても全く関係なく、彼らの都合で変わるのだ。

僕らに必要なのは、そういう団体の裏をかくような、ずる賢さとか強さとか柔軟性なのだろう。

  •   0
  •   0

(ここのところ、しばらく寝不足続きで疲れたので、この週末はLinux移行関連のプログラミングは休み(のつもり))

先日からWindowsの音楽プレーヤーMusicBeeのLinuxでの代替に、gmusicbrowser(GMB)を試している。絶対的な機能の豊富さではMusicBeeに敵わないのだが、使い込むにつれ、なかなか侮れない奴だという気がしてきた。

一番のいいところは、MusicBeeと違ってオープンソースだという点だ。プログラムは比較的コンパクトだから、気に入らないところはその箇所を探して自分で改良できる。Perlで書かれているのでビルドが不要だし、インストールすら不要だから、手軽に試せる。実は僕はPerlは苦手で(何といっても読みにくい!)、今までほとんど使っていなかったのだが、昨日、初心者向けの解説ページを参考に(実は、普通の変数と配列に区別があることすら知らなかった)リプレイゲインの切り替えメニューを付けてみたら、何とかできてしまった(もちろん、それをちゃんと使える物にするには、結構手間が掛かる)。同様に、ウインドウのレイアウトもテキストファイルで書かれているので、自由に変更できる。プラグインももちろんPerlで作れる。だから、WMAやWAV対応も自分でできそうな気がしてきた(面倒だけど)。

繰り返しになるが、オープンソースでコンパクトだから、仮に開発が終わってしまっても、ちょっとした不具合は自分で直せそうだし、機能追加もできそうだ。ドキュメントは余りないが、ソースを見れば何とかなる。とにかく、要望でもバグでもいちいち作者に「お願い」するのは面倒なのだ! しかも、大抵は却下されるし、MusicBeeの作者とは指向も違っていたから、最後は頼む気も起こらなかった。

それから、便利な機能が意外に多いのにも感心した。デスクトップウィジェット(プラグイン)なんて、邪魔なだけで使わないだろうと思っていたのだが、試してみたら意外にいい。MusicBeeのコンパクトプレーヤーやミニプレーヤーの代わりになりそうだ。(MPRISに対応しているから、命令を送信するすプログラムを作れば)リモコンにも容易に対応可能だし、(実際に便利かは不明だが)任意のCD取り込みプログラムを起動することもできる。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-22_08-52-15-2-1

gmusicbrowserのメインウインドウ(左)とデスクトップウィジェット(右上)

 

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-22_08-44-07-1

gmusicbrowserのデスクトップウィジェット

要は、僕ら(Unix使い)にとっての「普通」から逸れずに作られているということなのだろう。だから素直に使えるし改造もできる。Windowsのようにイライラすることはまずない。もちろん、機能不足やバグや気に入らない点はあるのだが、自分で直せる可能性があるのは、欠点を隠して余りある。こんなに魅力的なソフトが普及していないなんて、ちょっともったいないと思った。まあ、そのメリットが活かせるのはUnixのプログラマーだけなのだろうが。

(10:49 加筆・修正、16:06 わずかに修正)

PS. 今気付いたが、GMBには、音量メーターだのスペアナだのビジュアリゼーションなどの、派手だけど役に立たない要素がない。せいぜいあるのは、上に書いたデスクトップウィジェットや、通知の表示程度で、それだってオプションだ。それから、もちろんのことだが、最大化して起動したり、ウインドウを閉じても終わらない(設定で可能)ということはない。それらは、僕にとって、GMBの好感度を高める一因になっているようだ。(13:35)

PS2. 気が向いたので、ちょっと話は逸れるが、Unixの文化なり思想についてちょっと書く。僕の経験や理解では、Unixでは「派手は糞」だ。できるだけ「静かに」すべきなのだ。まあ、昔はGUIなんてなかったから、そうするのは、(コマンドラインの)プログラムの出力程度だったが、とにかく、無駄なメッセージはだらだら出さないのが常識だった。極端な(でも、ごく普通の)例では、処理が成功しても、(問題がない限り)何も出さない。もちろん、うるさく出すように指定されれば(普通は"-v"(verbose)とか"-d"(debug)などのオプション)、言われたとおりいくらでも出す。どっかの窓とか林檎の会社の作法とは全く異なる。

あとは、「普通とか常識を守る」だ。とにかく、外側(例: 起動方法、表示・データ入出力の仕方、設定ファイルの書式)に関しては、作法に従ってプログラムを作る。そうじゃないのは、糞(=イケてない・ダサい)だ。これもどこぞの会社とは全く逆だ。

ではなぜ、一見アナーキーにも思えるプログラマーたちにそんな堅苦しいことを押し付けているかというと、ひたすら作業効率を上げるためだ(と僕は理解している)。ユニーク(独自)なのは、プログラムの内容だけで十分で、見てくれなんて無意味だし、使い勝手は普通が一番。そうしておけば、例えそのプログラムを使ったことがなくたって使えるし(覚えておく必要があるのは、どんなプログラムにも、簡単な使い方とかオプション一覧を出す"-h"(help)というオプションがあることと、manコマンドでマニュアルを表示することだけ)、他のプログラムと組み合わせることで、いくらでも機能を拡張できるのだ。

時は流れて、LinuxはUnixの一種といえども、段々そういう思想が薄れて来ている気がするのが、ちょっと寂しい。(16:45)

  •   0
  •   0

画像取り込みプログラムはちゃんと動くようになって、完成したと思っていたのだが、それについての投稿をしようとした時点で、思わぬ問題(の可能性)が見つかって、あと少しの状態である。それが、MusicBeeからgmusicbrowserへの移行に気を取られて中断しているのだが、現時点での話を書く。

当初から希望していた取り込み手順は、以下のとおり。

  1. カメラやスマフォをPCに接続すると自動認識されて、取り込みウインドウが出る。
  2. ウインドウには、前回以降に撮影された画像だけが表示される。
  3. 取り込みボタンで、それらを取り込める。
  4. 取り込んだ画像は、画像の撮影年月日の名前のディレクトリ(例: "2016/2016_10_21")に格納される。
  5. 取り込んだファイルの最終更新日時は、撮影日時になる。

絶対に落とせない点は以下のとおり。

  • 取り込んだ画像は、カメラに残す。(間違ってPCで消してしまっても、カメラのストレージがフルになって消さない限り、オリジナルが復活可能なので)
  • それでも、前回取り込んだ画像は再度取り込むことはない。(自分で取り込む画像を1枚ずつ選択するのは論外)
  • 取り込んだ画像は、画像の撮影日の名前のディレクトリ(例: "2016/2016_10_21")に入る。
  • 取り込んだ画像の最終更新日時は撮影日時になる。(EXIFの情報でも十分なのだが、最終更新日時を使うとPNGも同じ扱いができるので、便利)

もちろん、それらを実現できる既存のプログラムを探したのだが、なかった。特に、「前回取り込んだ画像は再度取り込むことはない」と「画像の撮影日の名前のフォルダに入る」と「最終更新日時が撮影日時になる」をすべて実現できるものはなかった。

それで、作ることにした。もちろん、全部自分で作ったわけではなく、主要なところは以下の既存のソフトを使った。

  • gphoto2 : カメラからの画像取り込み
  • exiftool : 画像ファイルの処理 (撮影日時の抽出など)

これだけ書けば十分ではあるが、ちょっと苦労・工夫した点を書く。

gphoto2には新しい(取り込んでいない)画像だけを取り込むオプション(--new)があるが、効かない場合がある(例: iPhone)ので、それは使わずに、自分で実装した。取り込み済みファイル一覧を保存しておいて、取り込みのたびに、カメラ内の画像一覧と比較して、新しいものだけを取り込むようにした。

なお、ファイル一覧のサイズが大きくなり過ぎることを心配したが、現在のところ問題なさそうだ。1000-2000枚(正確な数は数えていない)の一覧ではサイズは100KB未満である。

この時、複数のカメラを持っている場合、画像ファイル名(例: "IMG_0123.JPG")が重複する可能性があるので、カメラの製品名とシリアル番号からカメラの識別記号を生成して(シリアル番号をそのまま出すのは嫌だし長くなるので、CRC32でダイジェスト値を生成した。例: "1234567890")、カメラ別にファイル一覧を保存するようにした。

gphoto2は取り込んだ画像の保存先を指定できないようなので、撮影日の名前のフォルダに移す処理は、exiftoolを使って自分で作った。exiftoolは、移す先に同じ名前のファイルがあるとエラーになって中断するので、同じ名前のファイルがあった場合の処理を追加した。

この時、上述のとおり、別のカメラとのファイル名の重複の可能性があるので、ファイル名にカメラの識別記号を追加するようにした(例: "IMG_0123.JPG" → "IMG_0123_1234567890.JPG")。

それから、デジカメでは問題ないが、スマフォ(例: Android)からは関係のないファイルが一覧に来ることがあるので、取り込むファイルの種類(MIMEタイプ)を指定して、フィルタリングするようにした。

更に、Nexus 4はファイル名が長過ぎてgphoto2のファイル一覧のフォーマットが崩れてしまうことがあるうえに、画素数が入っていないことがあるので、それへの対応も追加した。

ここまでは、(GUI関係を除いて)10/16にできたのだが、その後、問題(の可能性)に気付いてしまった。カメラを長く使って、撮影した画像が1万枚以上になると、ファイル名が最初に戻るのである(例: "IMG_9999.JPG"の次は"IMG_0001.JPG")。親ディレクトリが異なっているから区別可能なのだが、一覧を取り込んだ際に親ディレクトリを無視してしまうので、特に、取り込み済みファイル一覧で重複してしまう。

それに対応するため、いくつかの案を考えた。

  1. 親ディレクトリ名もカメラ識別記号の生成要素にする。
  2. 保存するファイル名に撮影日時を追加する。
  3. 保存するファイル名に親ディレクトリ名(の一部)を追加する(例: "100")。
  4. 取り込み済みのファイル名と重複していたら、ファイル名に通し番号を追加する。

今は案1と3が有望である。が、かなり長く使っているCanonのデジカメですら、まだ番号は3000番台で急ぐ必要がないので、なかなかやる気が出ずに居る。忘れて使っているうちに、「あれ? 取り込めない?」とか思って慌てるパターンかも知れないw 時間が経つと、既存のデータ構造を変更するのが大変になるので、早目に手を打った方がいいのではあるが。。。

PS. 前の投稿の画像は、このプログラムを使って取り込んだ。

  •   0
  •   0

昨夜、PCのメモリを増設した。今のマザーボード(ASUS P8H67-Vに実装できる最大の量の32GB (DDR3-1600, 8GBx4)にした。既存の16GB(4GBx4)は撤去して、全部交換となった。

新しいメモリは、調べたところ、安くて評判も悪くなかった、Silicon PowerのSP016GBLTU160N22DA (8GBx2)を2組にした。約1.3万円だった。ちなみに、このPCを組み立てた2011年には、8GB(4GBx2)で約9000円だった。メーカーが違うから正確には比較できないが、大分安くなったようだ。

ケースを開けたら、1枚のメモリはCPUクーラーのヒートシンクの下だったので、「CPUクーラーを外さないと駄目か?」と嫌な予感がしたが、そのまま無事に取り外せた。ただ、CPUクーラー周辺はケーブルが密集していて、作業には神経を使った。取り付けは30分くらいで終わった。

無事に起動し、BIOSで32GBがちゃんと認識された。なお、メモリの仕様はDDR3-1600だが、1333MHzで認識されていた。おそらくBIOSの設定で変えられるのだろうが、僕自身は1333で何も問題を感じておらず、これを買う時も1333を探していた(が、安いのはなかった)ので、そのまま使うことにした。

今気付いたのだが、2枚ペアになったメモリはペアのメモリスロットに挿すべきだった。でも、もうどれがどれか分からないし、面倒だし、問題は起こっていないので、止めておく。

寝る前にメモリテスト(MemTest86)を起動して、起きてから調べたら、エラーはないようだが画面が崩れていた。これは、以前(去年のことなのに全く忘れていた)と同じ現象で、MemTest86のバージョンを新しくすれば直るようなので、今日の出勤前に最新版を起動させようと思う。

もちろん、Linuxも無事に起動した。ただ、休止できるようにするのに手こずった。休止する時、メモリはスワップ領域に保存されるので、メモリを増やしたらスワップ領域も増やさないと駄目なので、(スワップパーティションを拡げるのが面倒なので)スワップファイルを作ったのだが、休止できなかった。

それで、スワップファイルでは駄目かと思って、GPartedでスワップパーティションを拡げたのだが、それでも駄目だった。どうやら、休止の準備をするプログラムの一部(元のPCのWi-Fiのものと、自作の、USB 3.0で勝手に復帰しないようにするもの)がエラーになっていたからのようで、修正したら休止できるようになった。だが、それまでは問題なく動いていたのに、なぜ今になって駄目になったのだろうか? 謎はあるのだが、まあ、ちゃんと動いたから良しとする。

そして、当然ながら、増設後のメモリの空き容量は大幅に増えた。それまでは使用率が約50%(空き=約8GB)だったのが、今は23%程度(空き=約24GB)で、想定どおりである。

ところで、少し前までは、このメインPCはもう5年も使っていて、そろそろ寿命だろうから、Linuxに移行後(来年辺り)に買い換えるつもりでいた。でも、いろいろ調べたり考えたりして、何もなければ使い続けることにした。

その理由は、以下である。

まず、良く「PCの寿命は5年」と言われているが、そうでもないという情報(説)があったことだ。このページではPCの故障に関する論文が紹介されていて、確かに使用開始から5年辺りまでは故障数が増え続けるが、それ以後はそうでもないとのことだ。

そして、意外にも、HDDよりCPUの方が故障しやすいという情報が載っている(論文は1990年代のもので、かなり古いのだが、昔のHDDの方が今より丈夫だったとは思えないから、まだ意味はあると思う)。僕も、HDDの故障が一番ありそうだと思っていたのだが、どうやらそうでもないようだ。

それはともかく、HDDのような機械部品やコンデンサは、時間と共に劣化するのは確実なので、いつかは壊れるだろう。それについては、次のように考えた。

仮に何かの部品が壊れて使えなくなったとしても、家にはもらったPCが何台もあって、(それらは古いとはいえ、)全部が同時に壊れてどれも使えなくなる可能性は0に近いから、壊れたらそれらを一時的に代わりに使って、部品交換や買い替えすればいいのではないかと。

そして、交換部品を注文するのは、代わりのPCでも、急ぐなら会社のPCでもスマフォでもできる。どれも駄目とかとても急ぐ場合には、本物の店に買いに行けばいい。通販で買う時のIDやパスワードはパスワードマネージャの暗号化データになっているので、ストレージ(HDDやSSD)を適切にバックアップしていれば復旧可能だ。

よって、ストレージの動作状況(SMARTの値: これもあてにならないという情報はある)を監視しつつ、随時バックアップしていれば、大きな問題は起こらないと考えた。

そもそも、PCを買い換えたり組み立ててるのはおもしろいけれど、とても面倒だ。作業自体も最良の物を選ぶのも面倒だ。さまざまなリスクがあるから、必要がなければやりたくない。

そういう訳で、このPCには、完全に壊れる(部品が連続して壊れるなど)か、性能の限界に達するか(これはあり得ないだろう)、僕が飽きるまで頑張ってもらうことにした。そして、Windowsよりはましになったが、VivaldiやVirtualBoxはメモリを食うので、快適に使える期間を少しでも長くするため、メモリを増やしておこうと思ったのだ。増やすのは今でなくても、実際に困ってからでいいのだが、DDR3規格は古いものになっているので、時間が経つと値段が上がったり入手困難になりそうな気がしたので、早目に交換することにした。

 

PS. 関係ないが、今使っている画像管理ソフトXnViewMPからは、ブログ投稿への画像のドラッグ・ドロップができず、不便だ。ソフトごとに一長一短だな。

PS2. 最新のMemTest86でチェックしたところ、問題なく終了していた。一安心。(10/21 19:39)

PS3. その後、なぜか、休止後の復帰時に状態が戻らずに再起動するようになってしまった。BIOSの更新も含めていろいろ試したが駄目で、Ubuntuのコミュニティでようやく対処方法が分かった。どうやら、OS(カーネル)の起動時のパラメタがおかしくなってしまったようで、/etc/default/grubに休止データの保存先(スワップ領域)を設定してから起動時のgrubの設定ファイル(/boot/grub/grub.cfg)を作り直したら直った。スワップ領域を拡げた時にスワップ領域のデバイス名が変わって、その設定が無効になってしまったのだろう。でも、確かに昨夜までは復帰できていた気がするのだが、それは気のせいだったか。。。(10/22 8:13)

  •   0
  •   0

いろいろな苦労と発見の末、デジカメからの画像取り込みプログラム(スクリプト)の初版ができた。いろいろ改良したいことはあるが、とりあえず、落とせないポイントをすべておさえて、ちゃんとデジカメやスマフォから取り込めるようになったので、一安心だ。それについて詳しく書きたいのだが、風邪のせいかだるくなって来たので、その前に、画像より100倍重要な音楽プレーヤーについて、再び書くことにする。

以前も探したのだが、もしかして見落としがあるかも知れないと思って、さっきまで散々探していた。が、やっぱり、(僕にとって)MusicBeeを置き換えられるものはLinuxにはない。もちろん、どれも曲は再生できるし、それなりの画面は表示されるのだが、必要な機能(例: 自動プレイリストやギャップレス再生)が抜けていたり、あっても貧弱だったり、使いにくかったりするのだ。

試したうちではClementineが筋がいいように感じたのだが、なぜか、再生と表示がおかしくなってしまったので却下した。AmaroKは次点とは言えども論外で、それ以外は論外未満だ。

個々のアプリについて書くと長くなるから、以下に、全体を通して受け入れ難かったポイントを書く。

  • 音飛びする。
  • 再生がおかしい(リピートでないのに、何度も同じ曲が掛かることがある。表示と再生の曲が違う)。
  • 曲間にギャップができる。
  • 曲が認識されない、認識される曲が少ない。
  • 曲の順番が滅茶苦茶に表示される。
  • 自動プレイリスト機能がないか貧弱。
  • 通知の表示や音などが鬱陶しい。
  • ウインドウを閉じても終わらない。終わる設定がない。
  • 操作が直感的でない。マウスのボタン操作が微妙で、誤操作を誘発する。
  • 設定ができないか、項目が貧弱。
  • 表示がしょぼい。デザインの趣味が悪い。
  • (英語圏のアプリなのに)アーティスト名やタイトルの"The"が無視されずにソートされる(例: ビートルズがBでなくTのところに出る)。

無いものは仕方ないので、当面はMusicBeeを使うが、ClementineやAmarocKを試した時に、「やっぱり、ネイティブは便利でいい」感じがしたので、諦めずに探し続けよう。

それにしても、Linux陣営は、各自が好き勝手に作ってないで、共同でいいものを作ったほうが絶対に得策だと思うのだが、きっと、みんな「俺様」だから無理なんだろうな。KDEだのQtだのGnomeだの、各種流派の主張や長所はあるんだろうけど、そんなことより、数は少なくても質の高いアプリを作った方がいいと思う。「『ちょっと作ってみた』から出す」時代はもう終わっているのだ。こんな調子では、LinuxがWindowsに勝つ日は来ないかも知れない。今はいいチャンスだと思うのに。。。

その後もしつこく検索していたら、いくつか追加候補が見つかった。その中で良さそうなものを試したが、どれも肝心な点(特に、音飛びとギャップレス再生)が駄目だった。まともに動かないものもあった。それから、何となく感じるものがあって、試すまでもないと思っていたgmusicbrowserをダメモトで試したら、意外に良かった。MusicBeeの機能が全部ある訳ではないし、いろいろ荒削りではあるが、基本機能がちゃんとしていて可能性があるので、いろいろ試している。(10/18 6:37)

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-18_05-51-23-1-2

約1日間、gmusicbrowser(略してGMB。MusicBeeはMBなので、不思議なつながりがある)で試しに音楽を聴いているのだが、聴くだけなら全く問題はなかった。シャフルで聴いていたので、ギャップレス再生については分からないが、音飛びは全く感じなかった。それで、GMBに不足している以下の重要な機能が何とかなれば、移ろうと思っている。

  1. CDの取り込み
  2. CDDBで曲情報やアルバムアートを取得して、取り込んだ曲に付ける。
  3. 取り込んだ曲の再生ゲイン(音量)の計算
  4. 特定のプレイリストの曲を、デバイス(USBメモリ)に同期する。
  5. 同期と同時に、MP3へのフォーマット変換と音量の正規化を行う。

ところが、1-3について随分しつこく探したのだが、これというものがなかった。取り込み速度が遅過ぎたり、アルバムアートが取れなかったり、再生ゲインができなかったりというのばかりだ。

でも、よく考えると、僕はもうCDから脱却したので、頻繁に取り込むことはないだろうから、それらの機能はあまり重要ではなく、取り込む時だけMusicBeeを使えばいいのかも知れない。もう少し考えよう。

あと、4と5ができるプログラムはまだ探していないが、なければ自分で作ろうと思っている。

それから、GMBはWindows系のフォーマット(WMAとWAV)に対応していないのだが、それについては、FLACに変換すれば問題ないと思っている。それらは全部で8600曲、210GBくらいあるのだが、待てば終わるだろうから大きな問題ではない。(10/20 0:06)

  •   2
  •   2

今日は、午後にデジカメからの画像取り込みプログラムを完成させようという意気込みだったのだが、思わぬ道草をしていて、まったく進まなかった。発端は、「パスワード入力なしでLinuxを休止させたい」というわがままだった。

もちろん、普通のデスクトップLinuxは、休止ボタン(アイコン)をクリックするだけで休止する。しかし、僕のではVirtualBoxが動いているので、そのまま休止させると、VirtualBox上のWindowsが壊れることがあるため、休止する前にVirtualBoxを閉じる(状態を保存する)必要がある。その仕組みは以前作ったのだが、休止するコマンドはスーパーユーザでないと実行できないため、休止のたびにパスワードを入れる必要があった。でも、毎回そんな面倒なことはしたくないので、何とかしたかったのだ。

調べたら、sudoコマンドの設定ファイルに、パスワードなしで実行できるコマンドを記載すればいいことが分かって、さっそく対応して快適になった。それでいい気になって、今度は、Windowsの時にはリモコンで休止できたのを、Linuxでもやりたくなってしまった。これは結構難しい。というのは、リモコンは基本的にMusicBeeの制御用なので、今は(論理的に)VirtualBoxにつながっているから、Linuxからはキーを取得できないのだ。

どうするか考えた。それで、リモコンを一旦Linuxで受けて、休止以外のキーをVirtualBoxに転送しようと思い、WindowsでMusicBeeにリモコンを渡すのに使っているプログラムEventGhostのWebserverプラグインを使い、LinuxからNW経由でhttpでリモコンの情報を渡せばいいことが分かり、実際に試したらできそうなことが分かった。しかし、買い物帰りに、たった1個のキーのために全体的に仕組みを作り変えるのが面倒になり、別の案を思いついた。

リモコンは今までどおりWindowsで受けて、休止のキーだけはLinuxに渡すのだ。で、NW経由で受け渡すのがまっとうなのだが、たった1個のキーなので、それすら面倒なので、共有ファイルを使うという荒業を使った。EventGhostで、休止のキーを受けたら、Linuxとの共有ディレクトリに特定の名前のファイルを作り、それに「休止が要求されたよ」ということを書き込む。Linux側は、定期的に共有ディレクトリを見て、その休止要求のファイルがあったら、そのファイルを削除して、休止処理を実施するのだ。

簡単な仕組みなのですぐにできたのだが、変なところにはまってしまった。なぜか、Linux側の休止要求監視プログラムを止めるとVirtualBoxも止まってしまうのだ。どうしてかは未だに理解できないのだが、プロセスの親子関係に起因する、良くあることなので、試行錯誤して直した。

なんてことをやったり、別な改良やトラブル対応をしたり、食事したりしていたら、もうこんな時間になってしまった。プログラミングしていると、時間が経つのがすごく速くて驚く。でも、まあ、Windowsと同じように、リモコンのボタンを押すだけで休止するようになったので、気分爽快になった。

というところで題につながる訳である。実際には、題を考えている時にこの曲が掛かっていて、とても懐かしかったらなのであるが。まあ、実際にはキール(未だに見たことすらない)で乾杯なんてしたことないし、当時はビールのCMで流れていたので、「ビールで乾杯」と思い込んでいた。今にして思えば、バブル崩壊後なのに、なぜか景気が良かった気がする。

 

PS. ついでに、Linux Mintへの暫定移行後、約1週間使って気付いたことを書く。

  • 移行後、全くWindows PCを起動しなかった。データさえあれば、どのPCであろうが関係ないということだろう。
  • Linuxのカレンダーアプリには、ろくなのがない。Thunderbirdがイマイチなのだが、それ以上のものはない。中でもKOrganizerは最悪だった。
  • Web版EvernoteとNixNote2の相性は最悪だ。Webで書いたノートをNixNote2で開くと文字化けしてしまって、直らない。Webで開いても化けたままだ。
  • Vivaldiはウインドウに勝手な装飾をしている。タイトルバーや右上のアイコン(閉じるなど)まで変えるのはセンスが悪いと思う。しかも、変えたデザインは余り良くなく、そのせいで(枠に影がつかなくなって)、Vivaldiのウインドウが重なった時に上下の区別がつかなくなって、不便だった。これは設定の「通常のウインドウを使用する」をonにすれば普通の状態になる。それにしてもひどい日本語訳で、意味が分からなかった。
  • FirefoxもChromeも、まともにwebをPDF化できるアドオンがなくなってしまった。それで、ブログページのバックアップはWindwosのAcrobatに頼るしかない。
  • Linuxに、Windowsのような「最近使ったファイル」がないのが、意外に不便だ。ただ、ちゃんとした実装は結構難しそうだ。
  • (10/16 18:26 書き忘れていたので追記)ブログサーバにログインするのに、TeraTermなんて腐ったソフトじゃなくて、ごく普通のLinuxのターミナルからsshコマンドでできるのは、ものすごく当たり前のことなんだけど、Windowsのせいで長らくできていなくて、我慢を強いられていたことだったので、結構感動した。「あ、もう変なアプリは要らないんだ!」って。いや、空気のように当たり前のことなんだけどね・・・
  •   1
  •   1

初めに書いておくが、デジカメやスマフォの画像をLinuxにただ取り込めばいいのであれば、大体どんな画像管理ソフトを使ったってできるから、以下を読む必要はない。ただ、僕は使い慣れたCanon CameraWindowやWindowsの手順で取り込みたいので、それをLinuxでも実現しようと、いろいろ苦労してみたのだ。全く同じにはできなかったのだが、「まあ許せる」レベルになったので、その手順を書く。OSはLinux Mint Xfceである。

まず、僕の希望する取り込み手順を示す。これはWindowsでやっていたことだ。

  1. カメラやスマフォをPCに接続すると自動認識されて、取り込みウインドウが出る。
  2. ウインドウには、前回以降に撮影された画像だけが表示される。
  3. 取り込みボタンで、それらを取り込める。
  4. 取り込んだ画像は、画像の撮影年月日の名前のフォルダ(例: "2016_10_11")に格納される。
  5. 取り込んだファイルの最終更新日時は、撮影日時になる。

ポイントは以下である。

  • 取り込んだ画像は、カメラに残す。(間違ってPCで消してしまっても、カードがフルになって消さない限りオリジナルが復活可能なので)
  • それでも、前回取り込んだ画像は再度取り込むことはない。(自分で取り込む画像を1枚ずつ選択するのは論外)
  • 取り込んだ画像は、画像の撮影日の名前のフォルダに入る。
  • 取り込んだ画像の最終更新日時は、撮影日時になる。(EXIFの情報でも十分なのだが、最終更新日時を使うとPNGも同じ扱いができるので、便利)

残念ながら、そのままは実現できなかった。以下に、現在までに考えた、Linuxでの手順とコメントを示す。

  1. カメラやスマフォをPCに接続すると自動認識されて、digiKamの画像取り込みウインドウが出る。
    • 残念ながら、XnViewMPでは取り込みができないので、取り込みだけはdigiKamを使う。
  2. ウインドウには、前回の取り込み以降に撮影された画像だけが表示される。
  3. 取り込み開始ボタンで、それらを取り込める。
  4. 取り込んだ画像の格納先は、取り込んだ画像用一時フォルダ(例: "Imported")とする。
  5. 取り込んだファイルの最終更新日時は、取り込んだ日時になる。
  6. 取り込んだ画像を画像の撮影月日の名前のフォルダ(例: "10_11")に格納し直すため、XnViewMPの「インポートとソート」で、それぞれ画像の撮影日のフォルダにコピー(または移動)する。
    • XnViewMPでは"2016_10_11"のようなフォルダ名は付けられないので、月日で我慢することにした。
    • XnViewMPの似たような機能「一括変換」だと、画像を圧縮し直すのか、ファイルサイズがかなり小さく(1/10くらいに)なってしまうので、注意が必要。
  7. コピー(または移動)の済んだ一時フォルダ中の画像を削除するか、別のフォルダに移動して、後で削除する。

なお、ファイルの最終更新日時は撮影日時にならないので、あとでタイムスタンプの変更をするか、今後はファイルの更新日時は使わないことにする(EXIF情報だけを使う)かを決める必要があるが、今はまだ決まっていない。

ただ、最終更新日時を使うなら、一時フォルダから本来のフォルダ(撮影年月日)にコピー(または移動)し、同時に最終更新日時も撮影日時に修正するプログラムを(exiftoolのようなツールを使って)作ることも考えている。

その後、検索したり試したりしていたら、gphoto2とexiftoolを使うと、ほとんど希望どおりの手順が実現できそうなことが分かった。どちらもGUIじゃなくてCUI(コマンドライン)だけど、全然問題ない。しかも、zenityとかいう便利なプログラムを使えば、CUIプログラムからダイアログなどが出せることも分かった。世の中には便利なツールがいっぱいあるものだな。「ライフハック」とは全然言えないけど、物好きにとってはものすごい収穫だ。

ただ、実現の可能性は十分あっても、ちゃんとしたプログラムにするには結構な時間を食うので、寝る時間とか食べる時間とかゆっくりする時間がどんどん減っていて、もう若くない身体にはなかなかしんどい。 (10/12 20:13)

上から約3日経ち、大体目処は立っているのだが、まだ完成していない。この段階は、おもしろいのだが、いろいろなアイデアが浮かび過ぎて、それらを試したりすると疲れたりもする。また、(実際にプログラミングをしている人ならわかるだろうが、)完成に詰めていく作業というのは、結構な忍耐力が要る。とにかく、いかに人間が馬鹿で無能で間違いやすいかということを、計算機に思い知らされるのだ。今は、そんな、楽しくも辛い段階に居る。

それと並行して、MusicBeeから脱却する(Linuxで動けばそんな必要はないんだけどね)アイデアも浮かんできた。他のプレーヤー(例: AmaroK)で不足する機能は、画像と同様に、外部プログラムを使って補えるのではないだろうか? Linuxには、音楽ファイルののタグや波形の処理(例: フォーマット変換)をするプログラムはいくらでもありそうだから、うまく組み合わせればできそうな気がしている。(10/15 14:28)

  •   0
  •   0

昨日から、Windows 7からLinuxへの暫定移行作業(「トライアル」ってやつか)を開始した。移行はまだ途中だが、予想外にうまくいったこともあるし、そうでないこともあった。ここでは、今までのメモを書く。ちなみに、この投稿は完全にLinux環境で書いている。

準備・OSの入れ替え:

  • Windowsのシステムディスクは、容量不足になって使っていなかったIntelのSSD(容量約120GB)にコピーすることにした。コピーツール(E_seUS ToDo Backupの無料版)でクローンしたら、全く問題なく別のPC(元Linux評価用PC: Vision-HT)で起動した。以前は、GPTのディスクのコピーは有料版でないと駄目だった覚えがあるが、大丈夫になったのか。
  • Intel SSDの容量がギリギリだったので、コピー前に、不要なファイルを削除した。ただ、約20GBも食っている\Windows\winsxsを消すことができないので、ちょっと苦労した。大きかったのは、\Windows\tempやlogsやEvernoteのディレクトリだった。また、休止しないようにして、hiberfile.sysも消した。休止しないようにする方法が分からなかったが、調べたら、コマンドラインで"powercfg.exe /h off"を実行するとのこと(なんで、こういうのがGUIになってないのか、理解に苦しむ)。
  • メインPCにシステムディスク(ADataのSSD)ごと移したLinuxは、全く問題なく起動した。
  • Vision-HTに移したWindowsも問題なく起動したのだが、ファンの音がうるさかった。最高速になっているようだった。それで、添付のCDから"Extreme tuning"とかいうプログラムをインストールし、ファンの動作設定をしたら、静かになった。最初、この名前ではファンには関係ないと思って諦めかけたのだが、試してよかった。ファンの回転数を下げても、CPU温度は43°C程度と問題なかった。

設定・調整:

  • キーボードの配置の変更(CapsLock→ Ctrl; Ctrl → Home; Windows → End)に、予想外に苦労した。xmodmapやxkbを使って変更できたのだが、しばらくすると元に戻ってしまい、とてもイライラした。いろいろ調べて、Xfceの設定で、キーボードを「システムデフォルト」にすると戻らなそうなのでしてみたら、今のところは大丈夫だ。→ 駄目になってしまった。AutoHotKeyのようなアプリで対応できるかな。(12:21) → デフォルトの日本語キーボードの配置を変更したら、今のところはうまく行っている。(10/10 4:23)
  • なお、Windowsキー(左下)はXfceが使っていて、押すとメニューが開くため、設定で右のメニューキーに変更した。
  • 上の設定はVirtualBox上のWindowsには効かないので、WindowsでAutoHotKeyを動かし、同様の設定をした。
  • VirtualBox上のMusicBee 2.5は問題なく動き、音も出た。しかし、たまに音飛びがする。試行錯誤し、以下のようにしたら、今のところは大丈夫だ。もちろん、曲の入ったディスクに頻繁にアクセスすると飛ぶのは、今まで同様。
    • 曲のファイルはVirtualBoxのファイル共有でなく、Samba(LinuxのWindows互換のファイル共有機能)でマウントする。
    • VirtualBoxのオーディオドライバーはALSAにする。
  • ただし、MusicBeeの使うオーディオインタフェースをWASAPIにすると、再生開始時に若干飛ぶことがある。MusicBee 2.5でも3でも同じだ。DirectSoundだと問題ないのだが、どちらがいいのか、悩ましいところだ。VirtualBoxでも、Windowsのカーネルミキサを通さないので、WASAPIは意味があると思っているのだが。ASIO4ALLだったらどうなんだろう? → ASIO4ALLは無意味だった。逆に音がおかしくなる。また、DirectSoundでも頭が欠けることがあるし、コントロールパネルで出す音がおかしい(歪んだり途切れたり)。何かが根本的におかしいのかも。 (10/10 4:25) → いろいろ試したのだが、どうも、VirtualBoxを最新版(5.1)にしたための可能性が高い。apt-getでインストールできる5.0では、再生直後の音切れや、コントロールパネルでの雑音の問題が緩和できた。また、OSの省電力機能のせいという可能性もあると読んだので、CPUのガバナー(governor)というのを省電力からパフォーマンスに変更したのだが、余り効果はない感じだ。また、ALSAミキサー(alsamixer)で自動ミュートもoffにしたが、これも効果はない感じだった。ただ、このシステムは本来Pulse Audioのようなので、そっちに同様な設定があるのかも知れない。 (10/11 19:49)
  • 昔使っていたオーディオインタフェース、ESI MAYA44 XTeを試したのだが、Linuxのドライバがないようだ。PCI版の古いものはあるが、動くかわからないし、入れるのが面倒なので、止めた。
  • MusicBee制御用リモコンでも苦労した。どうしても、VirtualBoxがリモコンを認識しなかったのだ。これは、以前も苦労したことで(それをすっかり忘れていた)、グループの設定の問題だった。自分をグループ"vboxusers"に追加して再ログインすれば認識するようになり、従来通りMusicBeeを制御できるようになった。
  • 昔使っていたメールソフトBeckyは、問題なくWineで動いた。単純素直な作りのものは動くようだ。(あるかどうか不明だが)過去メールを見る時に使うだけだが。
  • ブラウザ(Vivaldi, Firefox, Chrome)のブックマークなどの環境は単純なコピーでできた。が、Vivaldiの拡張機能のセッショマネージャのセッション情報がどこに入っているか分からず、移動できなかった。そのため、履歴などを見て、最後の状態を手で復活させた。
  • RoboFormのデータをKeePass2に入れるのも、前に作ったスクリプトで問題なくできた。ただ、古い情報が多過ぎてKeePass2の起動が遅くなるので、整理が必要だ。
  • データ量が大きいのと、SSDの寿命を縮める可能性があるので、VirtualBoxの仮想ディスクはHDDに移動した。そうしたら、Windowsの起動が目に見えて遅くなった。
  • 画面の右端にウインドウを合わせると最大化してしまうので、設定エディターのxfwm4の"tile on move"をoffにした。
  • NTFSをls(ディレクトリ一覧)すると、ディレクトリが反転色になって見にくいので、色を付けるaliasをやめた。初心者がよくやるような(僕も昔やった)、余計な設定がいろいろ入っていた。
  • Vision-HTでのWindows 7は、Windowsの認証を求められた。電話を使う面倒な操作が要るかと思ったが、クリックだけで通った。頻繁でないからか。

TODO:

  • Linuxを休止できるか試す(また起動しなくなるかも知れないので、結構怖い)。→ 休止できた。長期的に確認する。 (10/10 8:42) → 起動しないことは起こっていないが、休止後、勝手に起動することがある。Windowsでもあった気がするが、LANかUSBが関係しているようだ。あり得ないのだが、とりあえず、WOL (Wake on LAN)しないようにしてみた。(10/10 20:54) → やはり、LANは関係ないようだ。それはそうで、自分では覚えがなくて他に誰も居ないのに、WOLパケットが頻繁に出ているのなら、そのLANは乗っ取られているということだ。しかも、休止した直後にタイミング良くそんなパケットが来ることもあり得ない。調べたら、この現象(休止直後に勝手に復帰する)は結構多いようで、USB3.0 IFが関係している可能性があるようだ。それで、USB3.0での復帰を止めて試している。(10/11 19:41)
  • digiKamの、カメラからの画像取り込み機能を何とかする。: 取り込み先はトップディレクトリしか指定できないが、Windows同様、撮影日のディレクトリに分けて入れたい。 → 想定外のことがあったが、大体何とかなった。後で詳しく書く予定(→ 10/11 20:58: 記述した)。なお、digiKamだけでは駄目だったので、XnViewMPも併用することにした。 (10/10 20:34)
  • Windowsの画像の移行: ACDSeeのキャプションを埋め込むのと、ショートカットをシンボリック・リンクに変更する必要がある。
  • SSD・HDDの寿命・状態チェックプログラムを作って、定期的に実行してチェックする。
  • その他
    • ScanSnapを使えるようにする。 → 済み (10/10 8:42)
    • QuiteRSS, Windows操作用リモートデスクトップビューアのインストール
    • calibreのデータ移行 → 済み (10/10 8:42)
    • ローカルメールサーバの変更 (外部に出さなくて済む) → 済み (10/10 8:42)

気づいたこと:

  • Linux
    • 表示・操作全般
      • OSの起動が結構速い感じ。
      • ブラウザのフォントは綺麗で問題ない。が、行間がちょっと狭い。フォントによるのかな。→ 綺麗だと思って好んで使っていたフォントは"Noto Sans CJK JP"などなのだが、今日の昼間にニュースを読んでいて、NotoフォントはGoogle製であることを知って、ちょっと複雑な気分になった。だって、あの会社が喜んで社会貢献なんてする訳ないじゃないか。絶対裏があるんだよ。例えば、いろいろなコミュニティに影響力を確保するためとか。ある日突然、「フォントの使用条件を変更する。嫌なら使うな」とか言われたら、言うことを聞かざるを得なくなってしまいそうだ。。。でもまあ、その時はその時で、他にもいいフォントが出ているかも知れない。 (10/11 20:30)
      • アナログ時計だけでは、正確な時刻(日記に書くので必要)も日付も分からず、不便なことに気づいたので、デジタル時計も出したら、縦書きになってしまった。何とかしたい。両方出すなんて、昔のデジアナ腕時計のようだ。。。 → 懐かしのxclockを使った(タイトルバーが余計なので、devilspieというプログラムで削除した)。また、パネルのアナログ時計は小さいので、Cairo-clockにした。更に、devilspieでそれらを最上層に表示かつ半透明にした。取って付けた感は満載であるが、実用にはなる。ちなみに、Conkyも検討したが、あまりにも腐っているので止めた。(10/10 8:35) → Cairo-clockも腐っていた(起動時に表示位置を指定すると、表示が崩れる)ので、アナログ時計も懐かしのoclockを使うことにした。それらを、丁度空いている、MusicBeeのコンパクトプレーヤーの下部のエリアに置いた。最上位層に出す代わりに、透明度を75%くらいにして、下にウインドウが出てもそれほど不便でないようにした。oclock(下の画像の上)はX Window Systemが発達し出した頃(1990年代)のソフトでかなり古いけど、外観はCairo-clockより美しいと思う。 (10/11 19:52)
      • %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-11_19-49-43-1
      • 日本語変換モードが左側に出るのは慣れない。Windowsのが下に出ているのも紛らわしい。 → Windows(のタスクバーを)サブディスプレイに出すことにした。
      • マウスホイールの速度が調整できず、何度も回さないといけなくて指が疲れるので、何とかしたい。→ 試行錯誤の結果、imwheelというプログラムで速度を3倍に速くすることができた。2.5倍とかの微妙な調整はできないようだが、指は疲れなくなった。(10/10 8:27) → これの副作用か、Page Up/Downのキーが大きく上下するようになってしまった。(10/10 8:48) → imwheelは加速度を検出する訳ではないので、例えば画像管理ソフトで表示する画像を前後させる時に、複数枚の移動になってしまうのが不便なので使うのを止めて、特にスクロールで指が疲れるブラウザを、マウスジェスチャでページを上下にスクロールできるようにした。まあ、それだったらキーボードで上下させた方が楽な気もするが… (10/11 19:31)
    • キー配置変更の問題
      • KeePassだけキー配置が変わらなかったので、起動するタイミングかと思い、キー変更前の待ちを止めてみた。→ 上述のようにこれは無意味だった。(10/10 8:27)
    •  VirtualBox
      • 画像メモリサイズが不足すると、画面が小さくなる(高さが小さくなった)ようなので、100MBに増やしたら、2画面ともOKになった。 → 画像メモリサイズは関係なく、2画面でシームレスモードが良くないようだ。シームレスモードは1画面でも今ひとつなので、とりあえず、普通の(ウインドウ)モードで使っている。(10/10 4:28) → やはり、シームレスモードは良くないので、ちょっと不便だが、普通のモードにする。(10/10 8:29) → 普通のモードだと、MusicBeeをアクティブにすると、Windowsの仮想デスクトップになっているVirtualBoxのウインドウが上になって他のLinuxのウインドウを隠してしまうので、devilspieで常に最下層に出すようにした。MusicBeeなどを最大化して操作する時は、他のアプリ(たいていはThunderbird)を最小化すれば良い。(10/11 20時)
      • VirtualBoxのアプリを操作すると、マウスのフォーカスがおかしくなることが多い。シームレスモードだから?
      • MusicBeeを最大化すると、Linuxのウインドウの下に隠れてしまって見えない。シームレスモードとサブディスプレイにタスクバーを出しているせい?
      • Windows 7の問題なのかも知れないが、(上述のとおり)サウンドがおかしく、どうしても直らない。特に、コントロールパネルのサウンドの「テスト」ですら、変な音になるので、何かがおかしくなっているようだ。不思議なのは、MusicBeeでWASAPIでなら、まともな音が出ることだ(ただ、しばらく再生していると駄目になる感じ)。このことから、Windowsのミキサー周辺がおかしくなったように思う。(10/10 20:40) → 上述のとおり、どうもVirtualBox最新版とOS(Linux Mint= Ubuntu)の相性の問題のようだ。(10/11 20:03)
    • MusicBee
      • カバー・アートが出ないものがあった。再スキャンしても駄目だった。VirtualBoxの共有フォルダが重複していたせいかも知れない。
    • digiKam
      • digiKamは起動時に画像ファイル名を指定できないので、ビューアになれないので、別にビューアを選ぶ必要がある。 → メインではXnViewMPを使うことにした。(10/10 20:36)
      • 一括処理でメタデータやデータベースを指定するとハングする。: 新版に期待する。→ メインではXnViewMPを使うことにした。(10/10 20:36)
      • ツールチップの配色が悪くて表示される文字が読めない。テーマの設定ができないので、色の変更もできない。: 新版に期待する。→ メインではXnViewMPを使うことにした。(10/10 20:36)
      • 画像数が多いと起動が遅い。→ digiKamはカメラからの画像取り込みだけに使い、メインではXnViewMPを使うことにした。(10/10 20:36)
    • Thunderbird
      • 起動時、(サブでなく)メインディスプレイにしか出てこない。ちょっと間抜け。
      • 定期メール受信がされないことがある。設定をコピーしたせいか? → 気のせいだったようだ。(10/10 4:22)
      • デフォルトブラウザが内部でFirefoxに固定されていて、Linuxの設定を見ていない。それは設定エディタでないと変更できないのが嫌らしい。しかも、4箇所もある! しかも、2箇所は無駄で、再入力する必要があった。何とも常識外れで馬鹿だし、デフォルト検索エンジンの問題もあって、MSと同じ臭いがする。(10/10 20:45)
    •  その他のアプリ
      • Web版EvernoteのコピペがWindowsと違ってちゃんとしているのがすごくいい。純正アプリもWindowsのVivaldiも、ペーストした文字列の前後に、たちの悪い空白が入るが、Linuxでは大丈夫だ。なんとも不思議ではあるが、(今のところ)Linuxに移行した一番のメリットかも知れないw
      • ACDSeeはWineでは動かなかった。
    • その他
      • NTFSはほとんど完全にLinuxのディスクとして使える。単一ユーザで使っているので、設定すればユーザ・グループ名もそれらしく出るし、シンボリック・リンクも使えるので、便利だ。
      • VirtualBox上のWindowsを起動した後に、共有フォルダのマウントに失敗するので、ここ(スクリプトに微妙な誤りがあるので注意)を参考に、マウント前に数秒の待ちを入れた。(10/10 8:47)
    •  システムの負荷状況
      • CPU負荷: 通常時10%前後: 低くはない。
        • VirtualBoxのCPU負荷が高く(topコマンドの%CPUは33程度)、次はVivaldiを操作した時。
      • CPU温度: 41℃前後(室温: 26℃前後): Linuxにファン制御プログラムは入れておらず、BIOSが制御をしているのかしてないのか分からないが、今は問題ない。
      • メモリ使用率: 50%前後 (全16GB): やはり、結構食う感じ。
      • システムディスクの使用率: 58% (全100GB): VirtualBoxの仮想ディスクを削除すればかなり減る。
  • Windows (Vision-HT)
    • NWがつながらないせいで時刻が狂ったのが、なぜか、自動で直らなかったので、手で直した。しばらく待てば直ったのかも。
  • その他
    • iCloudのログインページの構成が変で、KeePassから自動入力できず、不便だ。やっぱり林檎は腐っている。が、金はたんまり払っているので、とりあえず使う。

最後に、恒例のスクリーンショット最新版。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-09_10-46-52_v1

左:メイン、右: サブディスプレイ

 

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-10_08-39-41_1

改良後 (10/10 8:40)

 

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-11_20-06-14-1

時計の変更後 (10/11 20:09)

これらの画像が、digiKamなどからVivaldiに「普通に」ドラッグドロップできたので、ちょっと感心した。X11(というか、その上が頑張っているんだろうが)も随分進歩したものだ。

PS. 自分で書いた文章を読んで、やっぱりLinuxは、普通の人が「ただでWindowsの代わりになるじゃん!」なんて軽いノリで使えるものではないことを実感する。物好きが楽しみながら使うものだろう。少なくとも今は。

 

(2020/6/3 15:52 依頼がしつこいので、一部ソフトのベンダー名を伏せた。)

  •   1
  •   1

犬は好きじゃないが、「ドッグフードを食べる」という言葉があるのを思い出した(キャットフードだったら良かったのにw)。

余談: 上のリンク先は大嫌いなMicrosoftの話なのだが、ドッグフードを食べるのを社員に奨励している割には、大昔から製品の質が低いままで向上していないのは、みんな食べる振りをして捨てているからではないかと推測する。実際、例えば自社製のセキュリティソフトなんて、本当に使っているのだろうか? ファイアウォールがかなり強固なのか。

Linux移行のための実用性確認作業は一段落して、目標の「打倒! Windows」は、今はまだ完全には叶わないけれど、かなりいいところまで行けることが分かった。時間が経てば、完全にWindowsから脱却できる可能性は0ではない気がする。

それで、計画より1年近く早いけど、LinuxをVNCで操作するのは余り快適でないうえに本質的でないところに問題が出るので、そろそろLinuxに乗り換えて実際に使い出してみたくなった。今考えているのは、メインPCとLinux評価用PCのシステムディスクを交換するだけという、実に安直な方法だ。ただ、何となく、そのままではうまく起動しないような気がする(特にWindows)。最悪の場合、システムがおかしくなって起動しなくなる可能性もあるので、少し躊躇している。まあ、バックアップしておけば、何もかも駄目になることはないだろうとは思う。

やるとすれば、この週末の連休だ。ドライブにも行きたいが、Windowsからの脱却の方がおもしろい気がするのでw

以下、かなり長くなるが、誰かの参考になるかも知れないので、移行先のLinux環境の概要と、気付いた点などを書く。

移行先のLinux環境などの概要:

  • 評価に使ったPC (ASRock Vision HT 321B)のハード構成
    • CPU: Core i5-3210M (2.5GHz, 2コア 4スレッド, Ivy Bridge)
    • メモリ: 16GB (DDR3)
    • SSD: AData 128GB
    • ディスプレイIF: HDMI, DVI
    • 光オーディオ出力あり
    • Wi-Fi: 802.11 a/b/g/n
    • 光ドライブ: LiteOn BDコンボドライブ (BDは再生のみ)
  • 暫定移行先PC (現在のメインPC、組み立て品)のハード構成
    • CPU: Core i7-2600 (3.4GHz, 4コア 8スレッド, Sandy Bridge)
    • メモリ: 16GB (DDR3)
    • SSD: 東芝 256GB (ただし、評価用PCのと入れ替える予定)
    • ディスプレイIF: HDMI, DVI他
    • 光オーディオ出力あり
    • 光ドライブ: パイオニア BDスーパードライブ
  • Linuxのディストリビューション: Linux Mint 18 Xfce
    • 気に入った点 : 結局は、重視していたことは実用になっていない。。。
      • セッションの保存(終了時にデスクトップの状態が保存されて、起動後に復帰する): 実際には、保存できないアプリも結構ある。
      • ハイバネート(休止)がメニューに出る。: 実際には、評価用PCと相性が悪いのか、実用にはならなかった。
      • パネル(Windowsのタスクバーに相当)をウインドウ左端に配置できて、見栄えも悪くない。
      • アナログ時計がパネルに出る。
      • ブートUSBが作成可能。: 実際に作ったことはない。
  • アプリ類
    • ネイティブのアプリ
      • Vivaldi (ブラウザ)
      • KeePass (パスワードマネージャー, RoboFormの代替) : 問題があると思っていたのは誤解だった。Vivaldiとの連携のため、KeePassHttmとchromeIPassも使う。
      • Thunderbird (メール・スケジュール・アドレス帳)
      • digiKam (画像管理, ACDSeeの代替)
      • VLC (DVD Video再生)
      • Kate (テキストエディタ, Notepad++の代替): 追加パッケージは多かったが、悪くない。ただ、KDEのせいかXfceとの相性は悪い(メニューに出ない)。次点はjEdit, Geany。
      • QuiteRss (RSSリーダー, SharpReaderの代替) : Windows版は駄目だったが、Linux版はそれなりに動く。他のは今一つだった。
      • qpdfview (PDFリーダー, Adobe Readerの代替)
      • 自作のバックアッププログラム (BackupF2Fの代替) : 既存のアプリも使えるが、結局、自作が一番きめ細かく調整できていい。rsyncを使用している。
      • ClamAV (セキュリティソフト): ESET Smart Securityの代替にはならないが、他にない。
      • calibre (電子書籍管理)
      • LibreOffice (Microsoft Word, Excelの代替) : Calc(Excel相当)は結構互換性が悪い感じ。まあ、自宅で仕事はしないので、そこそこ使えれば何でもいい。
      • Dropbox (クラウドストレージ) : 結構メモリを食うので、余り使いたくない。
    • Wineで動かすWindowsアプリ : Linuxで動かない/代替がないもの。
      • DEQ2496remote + ローランドのMIDI-USBインタフェース (グライコDEQ2496の制御用)
      • Speaker Workshop (オーディオの周波数特性調整用)
    • VirtualBox上のWindows 7で動かすアプリ : Wineでは動かないもの。
      • MusicBee (音楽プレーヤー) : これが一番重要なのだが、Linux版の予定は全くなし。。。Wineで動くと言われているが、僕の環境では実用にならなかった。
      • I/Oデータのリモコン + EventGhost (MusicBeeの制御用)
      • ScanSnap用ソフト (本・書類のスキャン用) : Wineでインストールできて起動もするのだが、WineがUSBデバイスをサポートしないため、スキャンができない。
      • iTunes (非常用) : 通常はiPhoneとiCloudだけで済ませる予定。
  • アプリが不要な物
    • アナログ時計DXの代替 : パネルにアナログ時計が表示できる。
    • FTPサーバをドライブとしてマウント(FTP Net Driveの代替) : コマンドやファイルマネージャ(Thunar)でできるはずだし、用途はブログサーバのバックアップなので、rsyncだけでできる。
    • FTPツール(FFFTPの代替) : 上と同様に、ファイルマネージャでできる。
  • 未評価の物
    • クラウドバックアップサービス: AltDriveまたはCrashPlan : Windowsで使っているBackBlazeの更新の頃(来年の春頃)に評価する。でも、早期に使い始めるかも知れない。
    • マウスジェスチャプログラム(かざぐるマウスの代替): EasystrokeやGestikkを評価予定(使うのはファイルマネージャ程度なので、なくても可)。
    • Audacity (音楽ファイルの編集)、音楽ファイルのタグ編集ツール : 使う時に試す。
    • GUIのSVNツール : 過去のリポジトリの移行のために。もう、ほとんど使っていないが、使う時にRapidSVNなどを試す。
    • プリンタ : プリンタはないし、家で印刷する予定はまずない。
  • 諦めたこと・継続調査中のこと
    • MusicBeeと同等の音楽プレーヤー : 現在はないが、いつか出て来るのを待っている。
    • まともなセキュリティソフト : 商用で、個人向けかつ最新OSに対応する物はまずない。ちょっと心細い。Symantecが出しているようなのだが、評価版をダウンロードしたらEXE(Windows用)だったので、やる気が感じられない。
    • Evernoteのアプリ : NixNote2は不安定で、純正アプリはWineで動くが、メモリを食い過ぎるのでweb版を利用する。別の良いサービス(LinuxとiPhoneのアプリがあるもの)が出るのを待っている。なお、現存の類似サービスではWizNoteが最も良いが、中国系で信頼性や情報漏洩に不安があるので、却下した。
    • BD(ディスク)の再生 : どうしても、ディスクは再生できないようだ(ディスクじゃなければ再生可能かも知れないが、詳細は省略)。WineでBDプレーヤーアプリを動かすことも試したが、安定して再生できるものはなかった。最も可能性があったのは、Leawo Blu-ray Playerだった。
    • Adobe Acrobat : Wineでは動かず、代替アプリはどれも今一つだったので、主な用途であるwebのPDF化はFirefoxかChromeで行うことにする(ChromeのPDF化アドオンは、Vivaldiではちゃんと動かない物が多い)。
    • 非純正ソフトを用いたScanSnapでのスキャン: VueScanは結構いいのだが、OCRが日本語非対応なので諦めた。次点はgscan2pdfだが、両面同時スキャンができないなどの欠点が多い。どちらも、OCR結果のテキストがPDFに入らずに、別のテキストファイルになるのも残念。

気付いた点・覚え書き:

  • Linuxアプリ・プログラム
    • パスワードマネージャーはいろいろあるが、どれも今一つだった。そして、クラウドには保存したくないので、実際には選択肢が少ない。EnPassは不安定なので却下した。WineでのRoboFormが駄目なら、(誤解のせいで)使うのを止めたKeePassにせざるを得ないかも知れないと思っていたが、KeePassに問題がなかったので、使うことにした。(10/6)
    • NixNote2は重くて実用的でない。
    • Dropboxは意外にメモリを消費する(RSS=300MB, VSZ=3GB)ので、別のがあれば移りたい。iPhoneとPCのデータ共有程度にしか使っていないので。→ iPhoneとPCのデータ共有にはiCloudを使うことにして、Dropboxは基本的に使わないことにした。(10/6)
    • Wineには謎が多い。信じられないほどすんなり動く物があるが、全く動かない物も多い。あと、USBデバイスは基本的にサポートされていない。
    • Thunderbirdのアドレス帳(CardDAV)用のプラグイン、Inverse SOGO Connectorがなくなっていたので、CardBookを使った。
    • rsyncはかなり有用だ。「今までのWindowsでの苦労は何だったんだろう」という感じ。処理も高速でいい。特にブログサーバからの転送速度はFTP Net Driveの2倍以上出た。
    • jEdit (テキストエディタ)は結構メモリを食うのが嫌だったが、他のはどれも今一つだったので候補にしたのだが、なんとなく鬱陶しいのと古臭い感じが気に入らなかったので、一日で止めた。
  • Linux Mint
    • FirefoxやThunderbirdの検索エンジンにGoogleが選べない(選択肢にない)。DuckDuckGoとかBingとか、変なのになっている。お金(寄付)の問題らしいが、変更を面倒にしているのは嫌らしい。
    • FirefoxやThunderbirdなどのUIが英語。別にいいけど、何でだろう?
    • 日本語が変なところがある。
    • なぜか、シャットダウンに時間が掛かることがある。
    • Xfceのセッション保存は完全ではない。保存されないアプリがある。
    • パネルの設定で消えないアプリは/usr/share/applications/に入っている。
    • システムの情報表示(タスクマネージャのグラフ)は、内蔵のよりMultiload-ngがいい感じ。ただし、メモリの使用率だけは今一つ(バッファ・キャッシュが含まれてしまう)なので、自分で作った。
  • VNC
    • 休止に弱い。復帰後に接続できないことあり。Wi-Fiの問題かも。
    • 起動後にVNCサーバ(x11vnc)がハングすることがある。キーボード・マウスをつないで、再起動するしかない。
    • キー(特に"|")が入らないことや、勝手にリピートする(特に"\")ことがある。
    • マウスのフォーカスが外れたり外れなかったりすることが結構多くて、イライラする。
    • キャッシュのせいでウインドウサイズが縦長になってしまうので、AutoHotKeyで、起動後に自動で適切なサイズに変更するようにした。
  • VirtualBox
    • VirtualBoxの仮想マシン(VM)を停めないと、Linuxを再起動・シャットダウンできない。: 再起動・シャットダウンの前にVMの状態を保存するスクリプトを作った。
    • VMを停めるか保存せずにLinuxを休止すると、再開後にWindowsでマウントしているUSBドライブがエラーになる。
    • VirtualBoxの起動は "virtualbox --startvm VM名"、VMの状態の保存は"vboxmanage controlvm VM名 savestate"。
    • Windows 7の仮想HDDは、ほとんど何も入れていないのに、30GBでは足りない。Windowsが約24GB(うちWinSxSが約13GB)も食うため。
    • VirtualBox上のWindowsからCDのイジェクトはできない。
    • オーディオデバイスは、ALSAの方がPulseAudioより音切れしにくい(MusicBee/Windows 7)。
  • Vision HT: HWの相性や性能の点で、メインPCには向かない。
    • 休止・復旧は問題が多い。
      • 休止からの復帰後にWi-Fiが停まることがある。
      • 休止すると、電源が入らなくなることがある。ボタン電池を抜いて不揮発性メモリをリセットすれば直るが、電池なしでは起動しない。
    • HDビデオの再生は結構きつい(VLC)。画像にノイズ(斜線のような感じ)が乗ることがある。(良く観るなら)高速なシステムにした方が良さそう。
    • MusicBeeでリッピング後の音量正規化が重いのと、VirtualBoxに占有されるコアがあるので、コア数を増やすべき。
    • VirtualBoxを動かすので、メモリは増やした方がいい感じ。32GBがいいか。
    • センサが正しいなら、CPU温度が結構高くなる。アイドル状態で約55℃(メインPCでは40℃程度)。筐体が小さいせいか。
    • ADataのSSDの寿命や信頼性が不明なので、メインPCに移植後は、定期的に寿命情報をチェックする予定。
  • その他
    • ScanSnapは、クラウドに直接保存するタイプにすれば、Linuxでも大丈夫かも知れない。これには気付かなかった。
    • Windows 7は、フォルダの共有サーバ機能(SMB)が貧弱。Linuxから細かいファイルを大量に書き込むと共有が停まってしまい、Windowsを再起動しないと直らない。
    • 現在のディスク使用量は約51GB。うち、ホームディレクトリが42GB(うちVirtualBoxの仮想HDDが32GB)なので、システムの使用量は10GB程度。

最後に、現在のデスクトップ画像:

(10/6 7:53 エディタをjEditからKateに変更、さまざまな加筆修正。19:55 RoboFormからKeePassに移行し、Dropboxの代わりにiCloudを使うことにした。)

  •   0
  •   0

近頃は、重い病気になった芸能人が、インターネットで逐一状況だの思いだのを報告して、「頑張って偉い」とか「気丈だ」とか思われて、みんなが感動するような風潮があるが、何となく変な感じがする。

確かに本人は頑張っているのだろうけど、別に、逐一報告しなくたっていいじゃないか。そんな暇があったら、「もっと自分の人生を生きろ!」と言いたい。

  •   2
  •   0

WineでWindowsのブラウザとRoboFormをLinuxで動かすとして、ふと「セキュリティは大丈夫なのかな?」と思ったら、なんだか訳が分からなくなってきた。

まず、Wineを使うかどうかに関わらず、Linuxでネイティブなブラウザを動かしていても、危険はある。その危険は、まずはブラウザの欠陥(セキュリティホール)が原因だ。その欠陥のために、例えば「悪意のあるページから、任意の命令を実行できる穴」があったら大変だ。自分のファイルが全部削除されたり、自分のファイルをネットに送信される可能だってある。

では、なんでWindowsでは安心していたかというと、ブラウザ自体の強度は同じ程度だろうが、セキュリティソフト(Webフィルタのような機能)があったからだ。Windows自体のセキュリティはクソなのだが、セキュリティソフトのために安心できていたのだ。とは言え、現代はセキュリティソフトだって完全ではない。とは言え、何もないよりはあった方がいいだろう。

結局、インターネットにアクセスする時は、OSの良し悪しは関係なくて、セキュリティソフトが一番重要なのかということなのかー!? ← 今ここ

(20:21 追記) 少し考えたのでまとめると、以下のようになる。

  1. セキュリティソフトはあった方が良いが、あったとしても世の中の悪意あるサイトやプログラムを完璧に把握できるとは思えないので、完全性は期待せず、リスクに備える方が良い。
  2. セキュリティ問題の改善のため、重要なソフトは常に更新する(実際には問題が増える可能性もあるので、難しい)。
  3. 侵入されて情報流出が起こっても、致命的な事態にならないようにしておく。
  4. 侵入されて情報の削除や書き換えが起こっても、回復可能にしておく。
  5. 不必要なインターネットアクセスをしたり受理しないように、各種設定に常に注意する。
  6. 不審なプロセスが起動していないか、常に監視する。

このうち、1-5は、実際には今までも実施して来た。3は、この問題の元になった、パスワード管理ツールである。流出したら被害が大きい情報は、パスワード管理ツールで暗号化している。4は、ローカルやクラウドにバックアップして来た。

だから、Linuxに移ったとしても、今までの延長線でリスクに備えればいいような気がして来た。そして、Linuxはソフトウェア構成が単純なので、6の不審なプロセスの監視はしやすいと考えられる。

それで、Windowsを使い続けるデメリット(セキュリティリスクの大きさ、経済的な問題、気分の悪さなど)とLinuxに移った時のデメリットを比較して最終的に判断すればいいのだろう。

そもそもの原因は、webが高機能になったことが大きいように思う。昔は「紙芝居」だったのに、今ではクライアント側で動くようになって、ブラウザが高機能・複雑になり過ぎて、セキュリティリスクが増してしまったのだ。だから、今、クライアント側で行う処理を簡素にして、ページの生成は主にサーバ側で行うことを復活させてみるといいように思う。そうすると、かなり見栄えが悪くなってしまうのだが。

  •   1
  •   2

(2016/10/6 19:45 訂正) 本稿の記述に私の誤解がありました。KeePassとchromeIPassとKeepassHttpのマスターパスワードの扱いに問題はありません。chromeIPassでブラウザの画面に表示されるのは、接続する時に入力したDBの識別子であって、マスターパスワードではありません。同様に、KeepassHttpがDBに保存するのも、おそらくブラウザと通信するための鍵であって、マスターパスワードではないでしょう。よって本稿は無意味となります。また、誤解を生まないために、関連箇所を取り消し線で訂正します。

Linuxで使うパスワード管理ツールは、一昨日、KeePassに決めたのだが、早くも気が変わった。というのは、KeePassはカスタムフィールドの扱いが良くない以外に、(関連プログラムのchromeIPassとKeepassHttpも含めて)マスターパスワードの扱いが非常識なのだ。具体的には、マスターパスワードをプログラムやブラウザの画面に平文で表示したり、DBに書き込んだりするのだそんないい加減なものは使いたくない。よく、みんな文句を言わずに使っているものだ。

それで、以下の候補を再検討した。

  • LastPass: かなり使いやすいが、クラウドは嫌だし、UIが本質的に脆弱なようなので(→ LostPass)、却下。
  • Keeper: 使うのにちょっと手間が掛かるが、基本的な機能はRoboFormと遜色ない。
  • Enpass: 動作が不安定だったので、却下。

しかし、Keeperにはちょっとした問題がある。他のアプリからデータ移行する際、CSV(あるいはTSV)中の改行を正しく扱えないのだ。具体的には、普通のCSVでは、""でくくればフィールド内に改行を書けるのだが、Keeperは認識しないで新しい行(レコード)とみなしてしまう。また、Keeper自身はCSVファイルを書く時には改行を"\n"と表記するが、それを読み込むと、改行にならずに"\n"と表示される。つまり、バグがあるのだ。CSVに"\\n"とかを書いても駄目だった。

KeeperはJavaで書かれているので、逆コンパイルしてコードを見て、いじってみる箇所("\n"を改行に変換している所)は分かったのだが、ビルドができないので諦めた。JREのバージョンを変えても直らなかったので、サポート依頼を出した。

取り得る手段は以下だ。

  1. 改行を我慢しつつ、Keeperの修正を待つ。
  2. Keeperに取り込んでから、改行を手で修正する。
  3. Keeperに取り込んでから、WindowsやLinuxの自動操作ツール(自動でマウスを動かしたり、キーボードを打つなど)を使って、改行を自動修正する。
  4. WineでRoboFormとブラウザを動かす。

手での修正は、データ数が数百なので大変だ。自動操作ツールを使うのはかなり難しそうだし、リスキーだ。Wineはやっぱり不安定で、今日はRoboFormすらうまく動かなかった。あとは、KeeperのDBを読み込んで暗号化を解除して、改行を修正して再度保存できればいいが、それができるならKeeperは脆弱だということになる。(あ、ソースがあるから、それを参考にしてプログラムを作ればできるのか? なんて考えたら、廃人への直行便だw)

という訳で手詰まり状態だが、時間はたっぷりあるので、試行錯誤しつつ待つかな。。。

(13:20 追記) その後、プログラムを無理やり変更(バイナリパッチ)しても効果がなく、そのモジュールをまるごと抜いてもエラーにならなかったので、更に調べたところ、別のモジュールが使われていることが分かった。そして、そこでは"\n"の変換を全くせずに、ただ読み込んでいるだけだから、何をしても無駄だったのだ。それで、とりあえずやれることと言えば、以下である。

  1. Keeperの修正を待つ。
  2. Keeperを自分で修正する。

Keeperの修正は、(多くのソフトベンダーのように、)余り期待できない。大抵は、「OSのバージョンは」とか「再現しない」とか「再インストールして下さい」とか関係ないことを言われ続けて、こっちがブチ切れるパターンだ。問題のあるプログラムの箇所を見せて指摘したいくらいだが、逆コンパイルは違法だったりライセンス条件違反なことが多いので、控えるしかない。まあ、気長に待って、その間に自分でビルドできるようになろうか。

(10/2 4:50追記) Keeperは無料版でもクラウドを使っていることが分かった。サイトでは、無料版は「ローカルのパスワードストレージ」としか書いてないのを信じていたから試したのだが、実際には、Linuxでしかデータを入れてないのに、Windows似もインストールしたら同じデータが出て来た。データディレクトリを消しても、ログインすると復活する。要は、別のソフトを作らずに手を抜いて、何度も広告を出して(クラウドを使うとうたっている)有料版に入らせようとしているのだ。確かに無料版ばかり使われたのでは利益にならないが、重要なところを誤魔化す会社は信用ならないし、ソフトも、上に書いたようにバグがあって今一つ信頼性がないので、止める。クラウドを使うなら、LasstPassの方が使いやすいからいい。

(10/2 10:54追記) LastPassを検討したのだが、使い勝手はいいのだが、データをクラウドに保存するため、バックアップするにはCSVでエクスポートするしかなく、それでは安全に保存できないので諦めた。クラウドだけで充分という考え方もあるだろうが、今までの経験上、単一の保存場所で安心することはできない。それから、無料版は一つのデバイスからしか使えないと書いてあったが、実際には、デスクトップPCは区別しないようで、同じアカウントでWindowsからもLinuxからもログインできてしまった。ということは、全世界のPCからログインできることになるので、好ましくない。なので、当面はWineでRoboFormとFirefoxを動かしつつ、他にいいのが出ないか、様子を伺うことにした。

それにしてもだ、Javaのプログラムはこんなに簡単に逆コンパイルできてしまって、大丈夫なのだろうか? 見て動作が分かるのだ。ノウハウ(があるとすれば)は流出するし、下手に作って中に暗号の鍵が入ってたら解読されまくるし、もし、自分でビルドできるようになるのであれば、勝手に改変されたものが出回るではないか(例えば、この例なら、僕はしないけど、「インポート機能改良版」とか言ってVectorとかSource Forgeなどに出すとかあり得る話だ)。多くのダウンロードサイトなんて、中身を確認しているかどうか不明だし、ユーザーだって、ダウンロードしたプログラムのチェックサムなんかを確認することはないだろうから、簡単に悪いことができてしまう。

そもそも、Javaのプログラム(classファイル)をバイナリパッチしても、プログラムをまとめたファイル(jarファイル)からモジュールを抜いても、全く検知されずに動いてしまったのは、果たして問題ないのか。多くのLinuxのネイティブなプログラムも、バイナリパッチしてもそのまま動くが、Javaはセキュリティが強いことを標榜していなかったか? せめて、jarは実行前にチェックサムか何かを確認すべきだろうと思う。もう何十年も遅い話だけど。。。

ちょっと気になるところだ。

PS. もしKeeperをビルドできるなら、広告みたいな鬱陶しい点があるし、データを勝手にクラウドにアップロードしかねないので、そういう機能をカットした私家版を作りたいw (13:28)

気になったので、Eclipseという開発環境でビルドできるか試したのだが、残念ながら、逆コンパイルしたソースは完全ではないようで、無理だった。具体的には、コンストラクタ(簡単に言うと、そのモジュールのデータを生成する部分)が不足していた。あとは、問題となっているモジュールを自分で作って入れ替えるとかいう話になるが、さすがに無理なので(なんとなくダチョウ倶楽部を思い出すがw)、止めておく。

そして、再度、RoboFormとブラウザをWineで動かしてみたが、RoboFormとFirefoxをWindow XPモードで動かす場合だけちゃんと動いた。そして、VivaldiもChromeも駄目だった。XPだと将来は対応されなくなる可能性が高いから、イマイチだ。Firefoxもフォントが汚くて、ちょっとどうかなあという感じだ。まあ、もう少し悪あがきしてみたい。(16:33)

(10/2 4:57 題を変更)

  •   0
  •   1

僕にとって、車の左側は鬼門だ。

昨日の出勤時、いつも寄るコンビニの駐車場に入ろうとしたら、突然、「ドンッ」だったか、大きな音がした。びっくりして左のミラーを見たら、どうも、縁石に擦ったようだった。瞬間的だったので良く見えなかったが、後ろの部品が外れたような雰囲気だったので、すごくまずい気分になった。

駐車場に停めて確認したら、幸い、外れているような箇所はなく、ホイールとタイヤが擦れていた程度だった。が、会社で良く見たら、ホイールの傷は結構深く、ボディー下部のスポイラーにも長い擦りキズが付いていたので、ショックを受けた。それで、昨日は朝から「人生終わったよ・・・」みたいな暗澹たる気分で居た。

ちょっと見ただけでは分からないけど、そのままにしておくのは気分的に嫌だし、直すにしても高そう(スポイラーが5万円くらい?)だから、どうしたらいいか考えていたが、まとまらなかった。でも、帰路に、ディーラーに、直すならいくらくらい掛かるかとか、安く直す方法はないかとか聞いてみれば、いい方法が見つかるかも知れないと思って、少し気が楽になった。気軽に相談できるディーラーで良かったと思う。

それに、相手がいる訳ではないし、ドアが凹んだとか傷ついたとかじゃないから目立たないし、スポイラーのおかげで金属部分へのダメージはなかっただろうから、錆びる心配はないから塗装は不要だろうし、タイヤもパンクしなかった(後で空気が抜けるかも知れないが、近いうちに交換予定だったので問題ない)ことを考えると、ついていたと思う。

思えば、前のVITAでは紀伊半島で縁石に擦ってパンクさせたし、その前のシルビアでも、電柱の支持ワイヤーにミラーを擦ったり駐車場の柱にバンパーを擦ったり、今の車を買ったばかりの頃に左折時に縁石にホイールを擦ったり、その他にも左折で出るときにたまに後輪を段差から落としたりと、昔から左には滅法弱い。自覚があるのでいつも注意しているのだが、時々やってしまう。まったく、見えないところは怖い。

そして、近頃はLinux移行に夢中になっていて寝不足で疲れていたのと、風邪でぼーっとしていたのが悪かったのだろう。あと、近頃は運転に慢心があったようにも思う。ただ、それにしても、なぜあんな広い入口で擦ったのか、いまだに分からない。傷は結構長い(前ドアの中央下部から後輪まで)ので、随分手前から曲がってしまったたように思えるが、そんな失敗をするものだろうか? 何とも不思議だ。

いずれにしても、やっぱりハインリッヒの法則は成り立っているのだろうから、重大事故が起こらないように注意しないといけないと思う。最終的には自動運転車なのかな。

PS. 昨夜は、こんな時には、ポールに"Hey Jude"を歌ってもらいたいなあと思った。

PS2. ディーラーに見てもらったら、予想通り、スポイラーが擦れているだけでボディ(金属部分)には問題ないから、(僕が我慢できれば)修理の必要はないとのことだった(交換には5万円前後掛かるようだ)。まあ、良かった。それから、別件だが、ハンドルを深く切ると異音(軽い「ギー」という音)がすることがあるのも見てもらったのだが、再現せず、特に異常もないので、様子を見ることになった(エアバックの配線の摺動部分ではないかということだった)。しかし、なんと、ディーラーから出ようとする時に出た。が、面倒だったので、まあ「様子見」とする。

そのディーラーは、いつものように、行くとホッとした。そして、丁度、無料点検キャンペーンで点検してもらい、去年同様、シクラメンの鉢をもらった。へえ、あれからもう1年近いのか。早いものだな。(10/10 20:31)

  •   0
  •   0