2015年2月7日土曜日

MacPorts版のInkscape 0.91を軽くする

Inkscape 0.91を使っていてきになるのがレンダリングの遅さによるもたつき。
MacPorts版の Inkscape 0.91_1 をインストールする際に Variants の指定を変更してインストールする。

まずInkscapeをアンインストール
$ sudo port uninstall inkscape

次に quartz と strict と svg2 を指定して、Inkscapeをカスタマイズビルド
quartzを有効化することで表示のもたつきがものすごく改善される。
特に、ノード数が尋常でないとかオブジェクト数が膨大なものを作成している場合はかなり有効だ。

Variantには以下の3つを指定してカスタマイズビルドする
  • quartzはMac OS Xのグラフィックサポートが受けられるようにするもの。Variantのx11とは機能衝突を起こすため、x11と一緒にビルドオプションとして含めることはできない。
  • strictはstrict buildというもので、portfileに厳正に従ってビルドされるもの。自分自身はあまり詳しくporfileを見たわけではないが、とりあえずビルドオプションに含めた次第(よくわかっていないのは反省している)。
  • svg2はメッシュグラデーションなども使える仕様のもので、完全な実装が待たれる機能の一つ。面白そうなのでこれもビルドオプションに含める。(コマンドラインからメッシュグラデーションは使えるらしいが、このビルドオプションを付けると専用のアイコンが追加される)
 以下のコマンドでInkscapeをビルドする
$ sudo port install inkscape +quartz +strict +svg2

# これでかなり表示関連はうまくいくようになる。ディスクイメージで頒布されているInkscape 0.91は手間がかからなくていいがバグフィックスが遅いという問題がある。
# 慣れればMacPorts版の方が面白いと思うね。

2015年2月6日金曜日

【Mac】SSDとTrimコマンドの確実な発行(2015-2-22・内容修正)

 MacでSSDへのTrimコマンドがいつどのようにして発行と実行がなされ、そのあとどうなったのかなどを知る方法は今の所は無い(たぶん)。ではどのようにしてTrimコマンドを発行させて実行させるか、そのあたりについてはなんとなくわかる(たぶん)。

【ゴミ箱を空にする】
 通常の消去での「ゴミ箱を空にする」ではなく、確実に消去する方のオプションを使うことでTrimコマンドの発行を促するという噂がある。確かにそのようなことはあるとは思う。
ただし、ここからが重要なのだが、すぐにTrimコマンドが実行されるわけではなく、例えるならば「次の機会がもしあったらいいね〜」っていうのが「また今度ね〜」っていう程度の微妙な促され具合である。

【 0 Fill 消去】
上記の確実にゴミ箱を空にする(Secure Empty Trash)ではなく、削除するファイルに0で上書きすることで削除する「0 Fill 消去」を行ってもTrimコマンドの発行は促されるかもしれない。
$ sudo srm -rvz ~/.Trash/*
このコマンドではユーザのゴミ箱内のファイルを「0埋めで確実に消去する」という簡単なもの。これも確実にTrimコマンドがすぐに発行されるわけでもない。



 ならば、「積極的にTrimコマンドを発行させる手立てはないのか」、というモヤモヤ感があるが、実は確実に実行する方法はある。

【シングルユーザモードからの fsck -fy 】
 起動時に command + s を押下しているとシングルユーザモードでMacは起動する。黒地に白文字というテキストモードのみでの表示なので、いささか全時代的な見た目になる。
このモードで fsck -fy と打ち込んで実行すると、SSDを起動ディスクに使っていてTrimがオンの場合だけディスクチェックの最後にTrimコマンドの実行が行われる。ただし、処理が長引いてしまい時間超過するとエラーになることがある。エラー終了すると起動ディスクを見失って exit コマンドで再起動をさせられなくなることもある(OS X Yosemiteは reboot コマンドではなく exit コマンドがシングルユーザモード終了と再起動)。その際は涙を拭いながら電源ボタンの長押しでパワーオフにするか、適当に足掻いてもらいたい。

【30分〜1時間以上、何もさせずに放置してスリープに入るように運用】
実はこれが最も安全で確実にTrimコマンドの発行と最適化が行えるのかもしれない。
 省電力設定でスリープまでの時間を30分以上にして放置する。ディスプレイもオフにしてスリープに入るまで何もせずに放置、それだけで色々と最適化され、Trimコマンドもいつの間にか実行されている様子がある。
こういう運用をしていると、上記のシングルユーザモードでの fsck -fy の実行時にTrim処理の時間超過でエラーになることもほぼ無いと言っていい。ということは放置している時間にTrimコマンドが発行され、そして実行されたと考えてもいいだろう。 っていうはずだったが、「確実に」ということはない様子なので訂正。ただし、最適化されるのは本当で、古くからある Hot File Adaptive Clustering によるものだ。

個人で使用しているマシンならば、就寝前にディスプレイだけスリープさせ、あとは1時間後くらいにシステムがスリープするようにするだけでいい。

2015年2月5日木曜日

進捗状況

レイヤの第8層あたりで遅々として進まず。
そんなこんなしているうちに Inkscape 0.91 がリリースされていた(某掲示板で正式リリースを知った)。MacPorts版は今現在までのところ 0.91 は来ておらず、デベロッパ版だけが 0.91 になっている。現在自分が使用しているのは inkscape-devel 0.91.99.13876_0 というもので、開発途中のバージョン。正式版のビルドがアップされるのを待つ毎日だ
追記:MacPorts版の Inkscape 0.91、今朝になったらリストに入ってた。昼過ぎくらいにインストールすることにする。