2014/11/24(月)よくわからないビデオカードの話
2014/11/24 17:01
3Dゲーム性能は全く求めていないのでCPU内蔵でもいいかと思っていた。
が、PhotoShopやら動画再生やら考えたときにRADEONとか使うと改善するのでは? と思う場面があった。
その後紆余曲折あって、安物AMDビデオカード、nVidiaビデオカードと使ってみて、存外に動きが違う。しかもどれも一長一短。
どうすりゃいいのか分からないのでとりあえずメモっておく。
なお、完璧に環境揃えてテストしたわけではないので、誤認がある可能性あり。HD3000は細かく覚えてないので嘘がある可能性が高い。ドライバはその時点での最新版(非β)。
そもそも完璧に環境をフラットに出来なさそうではあるが……
試したのは3種。
・HD3000(i5 2500K内蔵)
・玄人志向 GF-GT520-LE1GH DDR3 1024MB(以下GT520)
・Sapphire HD6450 DDR3 512MB(bulk品型番不明、以下HD6450)
HD3000 | HD6450 | GT520 | |
---|---|---|---|
90°回転した拡張ディスプレイ間をまたぐWindowの描画 | 変 | 正常 | かなり変 |
デジタル放送視聴ソフト複数使用時の"CPU"負荷 | 普通 | 普通 | ちょい重い |
デジタル放送視聴ソフト複数使用時の"GPU"負荷 | 普通 | 軽い | 重い |
PhotoShopでOpenGL ON+ブラシを使用 | ? | 遅延大 | 遅延小 |
上から順に。
90°回転した拡張ディスプレイ間をまたぐWindowの描画
マルチディスプレイで、拡張デスクトップ&サブディスプレイを縦に回転して使っている。資料なんかを置くには縦の方が見やすいので。が、どうもウィンドウをディスプレイ間に置くと表示が乱れるカード(ドライバ?)が多い。
良く問題を生じるのがビデオ再生とかで、特にオーバーレイは鬼門(仕方ない気もするが)。
ウィンドウの境を左端として二重に描画してしまっているケースが多い。
GT520だとFireFoxですらこの症状が出る。HD6450は割と思った通りになる。
|デジタル放送視聴ソフト複数使用時のCPU/GPU負荷
デジタル放送視聴ソフトを4つ5つ立ち上げることがある。コーデックとかの設定は、EVR+AMD Video Decoderにしている。CPU負荷では大きな差はなく、HD6450が少し軽いくらい。1窓当たり3~5%くらいのCPU負荷がかかる。どれも再生支援が順当に効いているのか、ビデオカードよりコーデックを変える方が影響がでかい。
問題はGPU負荷。process explorerのGPU usageとかで見ると、4窓でGT520は50%を超え、他のありとあらゆる描画に遅延が生じる。
HD6450だと20%台をうろうろで、特に重くなることはない。HD3000は測っていないが、GT520ほど重くない。
なお、コーデックをMicrosoft DTV-DVD Video Decoderにした方が数字上のCPU負荷は低いのだが、CPU負荷と関係なく、HD6450 + AMDコーデックは再生窓のドラッグが快適だったりするのでさらに厄介。
PhotoShopでOpenGL ON+ブラシを使用
最後にPhotoShopのブラシ。Adobe PhotoShopはCS6(5だっけ?)からOpenGLによるキャンバスの回転やブラシの先端プレビュー、3D機能を実装した。
自分を含む一部の人には待望の機能だったのだが、HD6450だとブラシサイズが小さい場合でもかなり描画遅延する。描画がカーソルを遅れて付いてくる。先端プレビューを非表示にしても改善せず、OpenGLを切ると遅延はなくなる。ただ、キャンバスの回転が無くなるのが厳しい。GT520だと遅延は十分に小さく感じる。
まとめ
で。こういうのはカタログスペックだとホントよくわからない。
ハードの問題か、ドライバーの問題か、OSの問題か、アプリケーションの問題か、あるいはウイルス対策ソフトが邪魔しているのか、自分の使い方の問題か、切り分けるのは極めて難しい。
もちろん内蔵と大して差がないような安いビデオカードでの比較なのであーだこーだ言い難いのだが、アップグレードとして何買ったらいいのかよくわからない。
再生支援が優秀なGeForce? アーキテクチャの新しいRADEON?
答えはなんだろ、あるいは答えはないのか。
とりあえず、来年Broadwell-KかSkylake買うだろうからその時にもう一回見直しかなあ……
2014/10/19(日)サーバ交換
2014/10/19 25:26
故障したのはpanasonic CF-T8EC6AAS。
このシリーズはどうもファンが弱いらしい。中古で買ったものなので耐久性がどうとか言いづらいのだが、うちのは使用しはじめてから1年程度でファンが強烈な異音を発するようになってしまった。ネットにもファン故障の報告多数。
その前に使っていたnx6110は6年稼働していたので、ちょっとがっかり。
nx6110の故障箇所についてはメモって無くておぼろげなのだが、ファンか熱暴走を疑う症状だったように思う。
さて、とりあえず入れ替えなければいけないので秋葉原でノートPCを調達してきた。
今回はPC-VY14A/C-7のOS無しが比較的安く手に入ったのでそれで。
本当はHP 2510pか2530pが欲しかったのだが、予算オーバー気味なのと選べるほど弾がなかったので断念。この2機種1.8インチ HDDのモデルもあって、商品名だけではなかなか判別が付かない。HDDはある程度入れ替えできた方がいいので2.5インチモデルが欲しい。現物見ないで買うと失敗しそうだったので秋葉原に出向いてみたのだが残念だ。
入れ替えは、以下のような手順で実施。
[1]
CF-T8のHDDを取り外し、VY14AにUSBで接続してMiniTool Partition Wizardでディスクコピー。
このコピー、120GBにもかかわらず10時間程度かかった。USB接続が遅かったのか、MiniTool側の遅さなのか判断付かないが、VY14Aも開腹してHDDを取り出した上でドライブコピーした方が良かったかもしれない。
[2]
CF-T8を起動してみたら何となく想像してたけどMBR破損("j"とだけ表示されて止まる)。debianのインストールディスクをrescue modeで起動して/dev/sbaにgrubをインストール。
[3]
これで完了かと思ったらネットワークがつながらない。ifconfigしてもeth0が無い。
dmesg見てると、こんなのがある。
udev: renamed network interface eth0 to eth1これが原因か。
NICのデバイス名(eth0とか)が変わったら? - Practice of Programming
ネットワ-クの基本設定などを確認(Linux版)
を参考に、/etc/udev/rules.d/70-persistent-net.rulesの旧NIC MACアドレスとehe0の紐付けをコメントアウトして再起動したところeth0が復帰した。
修正前の場合でもeth1は居て欲しい気がするのだが、interface周りを調べる時間がない。今回はこれで終わりにする。
作業中に気づいたが、このNICはBroadcom製だった。intelが良かったのだが、致し方なし。
VY14Aについては今のところ大きな不満はないが、HDD(Fujitsu MHZ2120BH)が結構鳴くので安定稼働してきたら結局入れ替えすることになるかも…
2014/08/25(月)HDDコピーメモ
2014/08/25 12:22
やりたいことは、2TB HDDにある2TBシングルパーティション(MBR)のデータを、4TB HDDに4TBシングルパーティション(GPT)切ってそこに全部移すこと。
環境はWindows7 64bit SP1。
元のHDDがMBRであり、かつ換装先がパーティションの条件上GPTになることに注意。
最終的な手順は、
1.元の2TBを取り外す
2.KURO-DACHI/CLONE/U3 で、2TB HDDから4TB HDDにコピー
3.4TB HDDを取り付ける。
4.MiniTool Partition Wizard Home Editionで4TB HDDをMBR -> GPT変換
5.同ツールで4TB HDDの2TBパーティションを拡張して4TBに変更
6.セーフモードで再起動
7.4TBパーティション(4TB HDD)のドライブレターを元の2TBパーティション(2TB HDD)と同一のものに変更
8.再起動
1.で取り外す前にドライブレターを開放しておけば、6~7手順は不要かも。
2.ではKURO-DAICHIでコピーした。
コピー速度がかなり速いので取り外して作業できるときは最近これを採用してる。
PCと安物HDDコピーハードどっちが信用できるかというと難しいけど、速度はだいたい後者の勝ち。
昔PC上のHDD間コピーでbit化けしたトラウマがあるのでPCでのファイルコピーをちょっと信用してないのもある。
もちろん取り外して作業ができるのが前提。
・はまりポイント1
MBR->GPT変換の必要性を忘れていて大混乱。
パーティション拡張しようとして、こけたり変な状態になったり。
2TB超だからソフトが対応してないのかとか考えてしまったが、先に変換しておかないとだめなのだった。
当たり前である。
・はまりポイント2
Windowsは取り外したHDDのドライブレターを記憶していて、取り外し後に通常起動するとそのドライブレターを予約状態("次のドライブ文字を割り当てる"の変更先リストに出てこない)にする。
レジストリいじったりいろいろやってみたけど、直し方がわからなかった。
セーフモードで起動すればとりあえずリストに出てくるので、それで。
・悩みポイント
パーティション変更ツールの定番がわからない。
今回は最新のEASEUSとかAOMEIとか試して、MiniTool Partition Wizard Home Editionを使用した。
以下、悩みリスト。
1.見た目が似たようなツールがたくさんある(おそらくエンジンも共通)
2.バージョンアップで機能が追加されるとは限らない。減るケースもある(特に商用版との絡みと制限がややこしい)
3.Unix系の定番(Parted Magicとか)より勝るのか劣るのかよくわからない
4.インストーラが余計なツールを積極的にインストールしてくるものが多い(天下のOracleもやってるとはいえ)
特に私がめんどくさいと思ってるのは2。
ちゃんと進化してくんだったらどっかの段階で商用版買うんだけどね。
今回使用したのは、MiniTool Partition Wizard Home Edition。
現時点では、
○パーソナルユースなら無料で使える
○2TB超対応
○MBR -> GPT変換機能あり
○パーソナルユースの機能制限は比較的緩そう(Dynamic Disk使わない、Serverで起動しない限りほぼフル機能と思う)
○Windows上からGUIで操作できる
○パーティションサイズ拡張は高速だった
○インストーラで変なもの入れる警告はなかった(入れていないかどうかは精査していない)
×GPT変換前にパーティションサイズを4TBにしようとしたら、通ってしまった上にパーティションサイズがマイナスになる変な状態に(バグ?)
良ソフトの気配。
一方、現時点のEASEUSはインストール時にbaiduを入れてこよう(baiduが悪いってんじゃなく)とするあたりでかなり悪印象だし、パーティション拡張はMiniToolよりかなり時間かかりそうな感じだった(あまりに時間かかってたので途中でプロセス止めてHDDコピーしなおした)。
2014/08/12(火)TOMCAT + logbackで、logback.xmlを外出し
2014/08/12 13:27
logback.xmlをwarの外に追い出そうとしたらプチハマリしたメモ。
環境は、
TOMCAT 7.0.54.0
logback 1.1.2
一応できた。ただし、すっきりとは書けない。
Context定義にVirtualWebappLoaderを追加する。
たとえば、WEB-INF以下にlogback.xmlを置いた場合以下のようになる。
<Context> <Loader className="org.apache.catalina.loader.VirtualWebappLoader" virtualClasspath="C:/foo/bar/WEB-INF" /> <Context/>ここで注意。
必要なのがlogback.xmlだけの場合、ファイル名まで書いてやりたいので次のようにしがち。
virtualClasspath="C:\foo\bar\WEB-INF\logback.xml"しかしこの場合、VirtualWebappLoader側はlogback.xmlを認識するが、logbackがlogback.xmlを読みにいかない模様。
あくまでディレクトリパスを書く必要がある。
絶対パスなのがいまいちな場合、$tomcat.base or $tomcat.homeが使えるのでそれを使ってなんとか相対パスで書く。
(tomcat.home->catalina.homeかもしれないのでRTFM)。
virtualClasspath="${tomcat.home}/webapps/foo/bar/WEB-INF"このどっちもいまいちだと難しい。TOMCATではほかの手が見つからなかった。
アプリケーションサーバを切り替えたほうがいいかもしれない。
アプリケーションルート的な所から相対パスでアクセスしたいという要望はあると思う。
あとはメモ。
virtualClasspathの書き方としては、Windows環境下ではディレクトリ区切り子は"/"でも"\"でもよい。
ディレクトリパス指定時は末尾の区切りはいらない。
Context周りの仕様で怪しいところがあるなら本家ドキュメントで確認。Apache Tomcat 7 Configuration Reference (7.0.55) - The Context Container
Eclipseからプラグイン経由で使う場合、さらにいろいろ留意。
Eclipse+Tomcat Pluginでコンテキスト定義に追加する場合、プロジェクトのプロパティ->Tomcat->全般->その他の情報にLoaderセクションをべたっと貼り付けて、プロジェクト->右クリック->"コンテキスト定義を更新"でよい。
コンテキスト定義をMETA-INF/context.xmlなどで作っていても、現在のEclipseのTomcatプラグインは拾う機能がなさそう。コンテキスト定義更新で%CATALINA_BASE%/conf以下に反映されていないことに注意。META-INF側はconfより優先順位が低く参照されない。
こっから下はおまけ。
動作確認時に%CATALINA_HOME%/conf/logging.propertiesに、ログ出力を追加してTOMCATにログをはかせるようにした。
org.apache.catalina.loader.VirtualWebappLoader.level = ALL org.apache.catalina.loader.VirtualWebappLoader.directory = ${catalina.base}/logsなお、Eclipseから起動したTOMCATはcatalina.*.logとかははかないので注意。
ここら辺は"eclipse, tomcat, ログ"とかで検索してほしい。
2014/08/03(日)Acrobat ProのUpdateに失敗する
2014/08/03 14:47
アップデートに失敗しました キー\.xdp\AcroExch.XDPDoc\ShellNew を作成できません。そのキーへの十分なアクセス権を持っているかどうかを確認するか、またはサポート担当者へお問い合わせ下さい。というメッセージが出て失敗する問題。
環境は、
Windows7 Professional SP1(64bit)
Acrobat Pro 10.1.9
どうも既存のレジストリと衝突している模様。
とりあえず、レジストリエディタで\HKEY_CLASSES_ROOT\.xdpを削除してアップデートしてやると通るようになる。
ただ、アップデート後に該当キーに対してシステム管理者でもアクセス拒否される。この状態が正常かどうか不明。
バックアップをとって、自己責任でよろしく。
2014/06/30(月)debian X周りのメモ
2014/06/30 16:36
ちょっと作業したのでそのメモ。
[ディスプレイデバイスずれ]
PC替えたときに、ディスプレイデバイスの指定を修正していなかった。
# lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)xorg.confを編集。
> diff /etc/X11/xorg.conf.20140630 /etc/X11/xorg.conf 73c73 < BusID "PCI:0:1:0" --- > BusID "PCI:0:2:0"[GNOME周り]
wheezyでデフォルトX環境が変わったせいか、startx後に"Failed to load session "gnome""が出る。
とりあえず、gnome-session-fallbackを入れればいいと言うので、
# aptitude install gnome-session-fallback
で、とりあえず起動するようにはなった。
その他、sshのX11 forward関係のオプションいじって、Xming+putty経由でX画面出るようにした。
いつも通り、sudo関係は適宜読み換えで。
2014/06/13(金)動画作業の覚え書き
2014/06/13 17:05
久々に後輩の動画作業手伝ったのでその作業やらソフトやら。
作業は2212x1244の原画の3色トレス(Hi, 1影あり)、少量の中割。
[作業の流れ]
1.原画整理
原画がスキャン画像で提供された場合、ファイルをリネーム。複数セルある場合、タイムシート指定に従ってセル名+連番とする。修正原画は末尾にs。
pngはdpiを記録できるので意識しておくこと。XnViewでもIrfanViewでもチェック可能。
トリミングが必要ならかける。前回2212x1244で作業したので、これに準拠する形でLO枠の画像から2212x1244を切り出して、同設定で他の画像もトリミング。
2.印刷
常に指示書は見られるようにしておいた方がよいので印刷する。
タイムシートと、指示のある原画をコンタクトシートで印刷。コンタクトシート作成はIrfanView, XnViewで作れる。
デュアルディスプレイ環境であってもタイムシートと原画指示を両方表示しておくのはついめんどくさくなって、指示を見落としがち。というか今回ツメ指定を1つ見落としたのでこれは反省の上で考えた工程。
3.原画トレス
saiの2値ペン/2値消しでトレス。
原画をD&Dして不透明度落としてなぞる。使用するペンツールにショートカットを割り当てておくこと。拡大しすぎると綺麗だが作業効率落ちるのでほどほどに。
修正原画がある場合は、原画と修正原画を別レイヤに入れ乗算で重ねて不透明度を落としまず修正側をトレス。次に元原画の非修正箇所を適宜判断してトレス。
PhotoShop含め他のソフトでも可だが、トレスだけならどのツールでやっても機能面の有無では差が付かない。軽くて2値ペンが綺麗なsaiが優るように思う。
レイヤは分けても分けなくてもいいと思うが、合成するのは簡単なので分ける。黒はbレイヤ、赤はrレイヤ、青はbrレイヤとした。
トレス終わったら、原画レイヤを非表示にして保存。2.で指定を印刷しておかないと、ここで指定を落としてしまう原因になる。
今回自分のトレス能力が想像以上に低くて、100本あたり20分前後かかった。細かいカーブの揺れも全部拾ったのと、拡大しすぎ、やり直しすぎが原因と思う。速度は上げようと思えばいくらでも上がるが精度とのトレードオフ。なかなか難しい。
4.中割
中割に有用なソフトは2014/06現在ベストアンサーがなさげ。
FrameToonとPsAxeが候補。
自分が求める要件は、
(1)PhotoShop/sai/CLIP STUDIO PAINT ライクなペイントI/F
(2)1ピクセルで欠けないドットペン
(3)カスタム可能なオニオンスキン(色つき、色なし、透過枚数、固定参照)
(4)HD解像度以上での作画が可能(3000x2000くらいは欲しい)
(5)複数セルの合成、任意のコマ数、レイヤー機能
(6)外部画像からフレームを生成可能。連番を一括で取り込めたりD&D出来るとなお良い。
(7)軽快なプレビュー
(8)原画の参照が適宜可能ならなお良い
FrameToon(しじあに)は(2)(3)(5)(6)が○で、他が△。かなり条件を満たしているのだが、サポートが打ち切られており厳しいところ。openCanvas3準拠のインターフェースは今にしてみるとかなり使いづらい(回転戻すのがAltキーを単独で押して離すとか)し、カスタマイズも出来ない。Windowを行き来したときに、回転ツールがロックされるバグがある。大解像度で作業するとプレビューが動かない(低解像度でも30秒前後で限界が来る)。プレビュー窓に自動サイズ調整機能がないので大解像度のプレビューが難しい。プレビューも解像度が上がると遅い。書き出し形式が少ない。ホントにちょっと足りないところばかりなので、アップデートが続いていたらと惜しい限り。
PsAxeはPhotoShopのプラグインでレイヤーとタイムライン機能を使って中割をするツール。PhotoShop依存だが、(1)(2)(4)(6)(7)は○、他が△。レイヤーを始終並べ替える作業手順なので、割り間違いに注意する必要がある。複数セル・フレームごとの複数レイヤーの取り扱いはなかなか難しい。作業は白背景で進める必要がある。透明画像を扱う場合、オニオンスキンがうまくいかないので無理。出力時にまとめて透過処理をしなくてはいけない。色オニオンスキンは自前色調整レイヤーとかでやれないことはない。PhotoShopのスクリプト実行速度が遅いこともあって、並べ替えや透過処理にちょいちょい待ち時間が発生する。透過処理や諸々、現在の状態がどうなっているのか分からないケースがままある。ボタン押下ごとに状態トグルしたりするので、慣れはかなり必要。
この2つ以外では。
商用ソフトでは今のところTVPaintがもっとも高機能。PhotoShopと完全互換とも言い難く、キーカスタマイズも微妙に痒いところに手が届かない。100k近くする上、ドングル付きだし、なかなか手が出ない。PAP、ToonBoomは今のところちょっと直感的ではなく、PhotoShop準拠I/Fとはほど遠い。
将来的に期待できるソフトとしては、Krita, SketchBook Proが面白そう。KritaはAnimator Pluginなる物を開発している人がおり、これの成果が出ればTVPaint的なことが出来るかもしれない。当然オープンソースなので、これの作成に参加することも出来るがとりあえず最初のアウトプットは個人開発の雰囲気なので待ち。SketchBook Pro は企業用の2015でFlipBoard機能なるアニメ作成機能が実装された。企業用は試用できないのでまだ出来が分からないが、個人用にも将来的に搭載することが表明されている。早くて今年夏頃?
結局今回は、FrameToonを実作業に持って行くことは難しかったので断念。中割枚数自体も少なかったので、PsAxeを一部使いあとはsaiで乗算不透明度落としで中割した。動きの確認はPremiereで。セル単位での確認なら、画像ビューアでも結構行ける。Massigra, XnView, IrFanViewどれでも。
5.仮撮
Premiereで。今回はライセンスを保有している中では最新のCS6を使用。
psdを取り込んだり、セルを組み合わせて動かすだけの仮撮ならば圧倒的にAfterEffectsよりPremiereの使い勝手がよい。シーケンスレイヤーに並べ替える手間が無く、AEよりワンステップ作業を少なくできる。インターフェースが若干独特なので慣れる必要はある。
Ctrl+Rでデュレーションをいじれるのもよい。単色背景も作れるし便利。
注意点としては、シーケンスで指定したフレームオーダーが容易に変えられないこと。シーケンスで「偶数から」にして出力を「プログレッシブ」にしても強制プログレになったりしないため、線が欠ける。あとから変更が出来ないので、シーケンスを作り直して全素材をコピーし直す必要がある。
仮撮出力はH264が速いのでよいと思う。プロファイル上げきってしまえばHD以上のサイズでも出力できる。
6.出力
納品用にpngで出力、白背景の画像は白を透明にする、pngに解像度(今回は200dpi)を記録する。
Ralphaが強力。psd->pngはRalpha+susie pluginでいける。
Ralphaで全て出来るはずだが、透明色の指定がうまくいかないケースがあったので出力後に必ず確認すること。MassigraやXnViewが確認しやすいように思う。
IrfanViewの一括処理でも透明色設定・解像度記録ができる。ただしIrfanViewも透明色処理に何かバギーなところがあり、色反転したことがあった。やはり確認手順が必要。
確認ポイントは5つくらい。しょっちゅうやってれば削れるだろうけど、たまにしかやらないことなのでこのくらい気をつけて見る必要がある。
・全ファイル揃っているか
・透明色設定が出来ているか(ビューアで透明部分背景色を白以外にして確認)
・全色出力できているか(青・赤線が落ちていないか)
・解像度が記録されているか
・色反転しているフレームがないか
毎回出力ミスるのでまあ鬼門ではある。
zipで固めて納品。
うーん、速度が足りない。
あと、ホントこれが決定版っていう中割ソフトないのな。
2014/05/08(木)x264オプション変えた
2014/05/08 24:28
普段使用しているx264エンコの-threadsオプションを2から1に変更した。
動画エンコと作業を同時にしている時間帯で他の作業が重くなるため。
CPUのコア数を増やせば改善することは明らかだが、intel x86の-E系は現在のラインナップだと100kコースで予算が合わない。消費電力の観点でもイマイチ。
Skylakeデスクトップが6コアになるという噂もあったので、待ってもいいかと思ったのだが最上位でも4コアとの情報が出てきたので色々検討。Haswell-E 6コアが安いとの噂もあるけど、それも先の話なのでとりあえず手を入れて様子見。
4C8T CPUだとエンコそのものは早くなりそうだけど、重さは改善しなさそう。後は何だろ、少しでもボトルネック取り除くためにGPU変えるくらいかなあ。
2014/04/23(水)マルチディスプレイ環境下でのFrameToon
2014/04/23 12:53
マルチディスプレイ環境下で、手描きアニメ作成ソフトFrameToonのタブレット座標検出がうまくいかない。
[環境]
マルチディスプレイタイプ: 拡張デスクトップ
ディスプレイドライバ: intel系
タブレット: intuos4 PTK-840/K0
ドライバ: Driver 6.3.7-5
タブレットのかなり狭い領域が画面に割りあたってしまい、縦横比もずれる。
FrameToonそのものについてはサポートが終わっていて、Webページも消えたソフトなので更新は期待できない。
タブレットドライバ側をアプリケーション指定で調整してもイマイチで悩んでいたのだが、
butimaru ログ: Windows8向けSai用wintabに位置調整追加
これを使うとあっさり解決した。
wintab.dllをFrameToonのフォルダに放り込むだけ。
cal.exeでの位置調整は使用していない。
突き詰めていないので、本家ドライバでも解消手段があるのかもしれないがこっちの方が早そうだ。覚えておこう。
2014/02/26(水)Ruby 1.9以降のirbでBackspaceで表示が崩れる
2014/02/26 27:38
環境はWindows7(64bit)。
消そうとした文字の1文字手前が消えたり、カーソルがプロンプトにめり込んだりとなかなかに怪しい。
画面にフラッシュされるのも数秒程度の遅延がある場合がある。
内部データは正常、あくまで表示が崩れているだけのようだが煩わしいので直したい。
下参照。
ruby - Backspace and arrow keys aren't working in IRB(Git Bash console) on windows machine - Stack Overflow
とりあえずirbで使用しているreadlineライブラリ周りに問題があるのは間違いない。
--noreadlineオプションを使えば問題は解消するが、Up-Keyでのhistory等は効かなくなる。
なんだかめんどくさいなあ。
[2014/03/31追記 ここから]
と上では書いたが、mingw32版でも遅延があった。
irbについては、--noreadlineであっても何か1文字入力すればUp-Keyでhistoryが動くようだ。これでいいことにする。
Windowsの Users\<ユーザ名>以下に設定ファイルを置いてやって、irbはreadline不使用をデフォルトにする。
Users\<ユーザ名>\.irbrc
IRB.conf[:USE_READLINE] = falseついでに、pryも同様の問題を抱えてるので直したい。
が、pryには--noreadlineオプションがない模様。
しゃーないのでコンフィグを怪しげにいじる。
[参考]
Changing Pry.config.input makes the prompt disappear · Issue #821 · pry/pry · GitHub
pry.config.inputをSTDINに差し替えるとreadlineが外せるらしい。
ただし、これをするとプロンプトを自前で表示しないといけない。
以下を参考に、
Rubyistよ、irbを捨ててPryを使おう - TIM Labs
Users\<ユーザ名>\.pryrc
Pry.config.input = STDIN Pry.config.output = STDOUT Pry.config.prompt = [ proc {|target_self, nest_level, pry| nested = (nest_level.zero?) ? '' : ":#{nest_level}" prompt = "[#{pry.input_array.size}] #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}(#{Pry.view_clip(target_self)})#{nested}> " print prompt prompt }, proc {|target_self, nest_level, pry| nested = (nest_level.zero?) ? '' : ":#{nest_level}" prompt = "[#{pry.input_array.size}] #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}(#{Pry.view_clip(target_self)})#{nested}* " print prompt prompt } ]promptの表示を追加。
プロンプト内容はお好みで。
Pry.config.output = STDOUT行が必要かはちゃんと判断していない。
このやり方では入力後に改行が重複出力される問題がある。
また、起動直後にプロンプトがwarningなどと重なるので1回Enterしないといけない。
個人的には許容範囲内だが気になる人は気になるかも。
pry初心者なので、pryの全機能が不足なく動くかは確認していない。
なお、ターミナル上での日本語文字化けが改善するケースがある(追求していない)。
さて、readline周りの挙動は悩ましい。自分でコンパイルすれば直りそうなのだが、やりたくないなあ… やるんだったら配布までやらなきゃだと思うので。
[2014/03/31追記 ここまで]
さて、--noreadlineオプションは記憶しておくとして、Windowsに入れているRubyの措置について考える。
・mswin32版 -> mingw32版にする?
する。PATH環境変数と、スクリプト起動用のexeパスを書き換えた。
とりあえず、mingw32を避けてるのも変なので使ってみるというのが一つ。
mingw32版はcygwin版のようにcygwin周りのファイルが必要ということはないので、mswin32版とほぼ同じように使っていける(はず)。2.1.0が来てないあたり、若干保守的な様子。高速化はmingw32版の方が効いているとのこと。
mswin32版はgemでコンパイルをかけるような場合ではどうもトラブりやすい。pryにしろ、atomicにしろ自分の腕ではgem installに失敗したし、これを打開するためのコストをかけるほどの余裕がない。exerbとかが標準梱包なのは有り難く、gemで追加しない分にはこちらの方が便利か。オフィスでオフラインで使用する場合などではmswin32版の方がうれしいかも。DXRubyが入ってるのも楽しい。
・CP932なrubyスクリプトのエンコードをUTF-8に変える?
変えない。今回は断念して、マジックコメントでWindows-31J指定が入ってないものには追加。
動いてるスクリプトが、コマンドラインから日本語を含むファイル名を受け取って動くようなものが多いため、テストに時間がかかるというのが一つ。
Windowsのファイル名を扱う以上どうしてもSJISで処理したほうが楽だというのも間違いはない。今後UTF-8混じりのファイル名などでバグが起きない限り、既存のスクリプトはこのままにしておいて新規作成分はUTF-8で作ることにする。