Windows7へAutoCAD LT 2007を移行しました
自分が使用する職場PCをWindows XP ProfessionalからWindows 7 Professional x64へ移行中です。
AutoCAD LT 2007を移行したときに問題になった点をメモしておきます。
- ポータブルライセンスユーティリティが無反応
- .dwgファイルををダブルクリックで開こうとすると「プログラムにコマンドを送信しているときに、エラーが発生しました。」ダイアログが必ず表示される
以下の対応で一応どちらも回避できました。
しばらく様子見してみて、不具合が出るようなら別の対応を検討してみます。
WindowsXPのクラッシュダンプ
STOPエラー(KERNEL_STACK_INPAGE_ERROR) - enduser’s monthly reportの関連です。
今回の日記の要点を3行でまとめるなら以下のとおりです。
- WindowsXPはSTOPエラーが起きると(既定の設定では)クラッシュダンプを生成する。
- クラッシュダンプは Debugging Tools for Windows で解析できる。
- 解析結果の英語をちゃんと読むと役に立つ情報が書いてあることがある。
STOPエラー対応例(イベントログから)
前回の記事(STOPエラー(KERNEL_STACK_INPAGE_ERROR) - enduser’s monthly report)の関連です。
STOPエラーが発生した後でイベントログから対応方法を確認した例となります。
STOPエラー(KERNEL_STACK_INPAGE_ERROR)
そろそろ寝るかというところでブルースクリーンが発生。
その後、BIOSでHDDが認識できているのに A disk read error occurred. まで発生。
心底焦りました。
対応として、ケースを開けてSATAケーブルをつなぎなおしたら無事起動できました。
イベントログのシステムログには以下のとおりきっちり記録が残っていました。
(EventID:11) Diskエラー(4分間で15回)
イベントの種類: エラー
イベント ソース: Disk
イベント カテゴリ: なし
イベント ID: 11
日付: 2011/12/18
時刻: 1:35:10
ユーザー: N/A
コンピュータ:
説明:
ドライバは \Device\Harddisk0\D でコントローラ エラーを検出しました。
(EventID:5) atapiエラー(5分間で2回)
イベントの種類: エラー
イベント ソース: atapi
イベント カテゴリ: なし
イベント ID: 5
日付: 2011/12/18
時刻: 1:36:01
ユーザー: N/A
コンピュータ:
説明:
\Device\Ide\IdePort2 でパリティ エラーが検出されました。
STOPエラーの内容
イベントの種類: 情報
イベント ソース: Save Dump
イベント カテゴリ: なし
イベント ID: 1001
日付: 2011/12/18
時刻: 1:48:38
ユーザー: N/A
コンピュータ:
説明:
このコンピュータはバグチェック後、再起動されました。バグチェック: 0x00000077 (0x00000001, 0x5d388900, 0x00000000, 0xb2d05960) ダンプが保存されました: C:\WINDOWS\Minidump\Mini121811-01.dmp
SATAケーブルになってから、ケーブルが原因でのこのエラーがけっこうが発生するようになった気がします。
次回は、PC起動後にHDDに残っていた内容からエラーの対応方法を確認した手順を書いておきたいと思います。
WindowsXPでblockdiagを使うときの.blockdiagrcの保存場所
WindowsXPでblockdiagを使うときのフォント設定 - enduser’s monthly reportの続きです。
前回の記事を書くのと前後して、blockdiag作者の方とTwitterでやりとりができました。
いろいろ勝手な要望を出しましたが、かなり今後のリリースに取り込んでもらえそう。
要望が反映されるという体験自体が非常に珍しいので、すなおにうれしいですね。
今回は、Windows環境独特の問題についてひとつ。
blockdiagサイトに以下の記述があります。
$HOME/.blockdiagrc ファイルに設定を書くことで 常に同じフォントを利用することができます。
通常WindowsXPにはHOME環境変数は存在ないため、.blockdiagrc の配置場所を blockdiag に通知できません。
(この問題、作者から「HOME環境変数を参照しているだけです」とhintを聞くまで、かなりはまってしまいました)
Linux系列でホームディレクトリは $HOME で参照できます。
これに対し、WindowsXPでホームディレクトリは %USERPROFILE% で参照します。
そこで、当面の対策として環境変数 HOME を追加し、%USERPROFILE% と同じ場所を指すように設定することにしました。
(12/16 10:55追記)%USERPROFILE%と%APPDATA%のどちらに配置するか悩みましたが、.付きファイルはほぼ%USERPROFILE%直下に作成されていたため、%USERPROFILE%を選定しました。
- [システムのプロパティ]を開きます。
- [詳細設定]タブの[環境変数]ボタンをクリックします。
- ユーザー環境変数とシステム環境変数の両方に HOME という変数が存在しないことを確認します。
- [新規]ボタンが2つありますが、上側(ユーザー環境変数側)の[新規]ボタンをクリックします。
- 「変数名」に HOME と入力、「変数値」に %USERPROFILE% と入力して[OK]-[OK]-[OK]とクリックし、開いた画面を閉じます。
- コマンドプロンプトを開いて echo %HOME% と入力しEnterし、ディレクトリ名が表示されれば成功です。
コマンドプロンプトの実行イメージは以下のとおりです。
C:\>echo %USERPROFILE% C:\Documents and Settings\hogehoge C:\>echo %HOME% C:\Documents and Settings\hogehoge C:\>
これで C:\Documents and Settings\hogehoge ディレクトリに .blockdiagrc を置くことで、blockdiag が自動的に .blockdiagrc を読み込んでくれるようになります。
さて、.htaccess .blockdiagrc など、linux系列では一般的な . から始まるファイル名は Windowsエクスプローラでは作成できません。
そのため、普通に任意のファイル名でファイル保存後、コマンドプロンプト上で REN コマンドを使い、あとから .blockdiagrc へとファイル名を変更するとよいでしょう。
また、.blockdiagrc の文字コードは現時点では UTF-8(BOMなし)にしておくのが無難です。
今後のリリースで対応していただけるそうですが、UTF-8(BOMあり)では読み込み時にエラーが発生しました。
(BOMありにする利点があるようなら対応を考えればいい問題だと思っています)
blockdiag は急速な進歩を遂げつつあると感じます。
より快適に使用できるよう、なにか気づいたことがあったら今後もフィードバックしていきたいものです。
WindowsXPでblockdiagを使うときのフォント設定
ブロック図生成ツール blockdiag(http://blockdiag.com/ja/blockdiag/) を使ってみました。
Windows XP Professional の環境に python 2.7、easy_install、sphinx 1.1.2、blockdiag 1.1.1 の順でインストールしました。
配置を気にせずにブロック図を生成できるので、とても便利なツールだと感じています。
このツールを使う上で、フォント設定に関わり何点か引っかかったことがあるので、備忘録として残しておこうと思います。
「こんなの常識じゃないか」というような内容かと思いますが、俺のようにこの程度で引っかかるユーザーもいるだろうということで。
blockdiag生成のたびにフォントファイルを指定しなければいけない
勝手な思い込みで、%Windir%\Fonts にあるフォント設定を自動的に参照してくれるだろうと思っていました。
欧文フォントは(どれか特定してはいませんが)自動的に読み込んでいました。
日本語フォントは、ぐぐったところどうやら msmincho.ttf は自動参照してくれるらしいです。
しかし、うちの場合MicrosoftのJIS2004互換フォントをインストールした環境なので、ファイル名が msmin04.ttc になっていました。
この場合は自動的に読み込んではくれない模様で、明示的に指定してやる必要がありました。
- hello world.txt
blockdiag { "Hello world!"; //ASCIIサンプル "ようこそ!"; //日本語サンプル }
- 実行結果
C:\sphinx\blockdiag>blockdiag "hello world.txt" ERROR: UnicodeEncodeError caught (check your font settings) C:\sphinx\blockdiag>blockdiag -f %windir%\fonts\msmin04.ttc "hello world.txt" C:\sphinx\blockdiag>
MS Pゴシック、MS P明朝、MS UIゴシックを使うのに手間をかける必要がある
ttcフォントを指定した場合、フォントコレクションの1番目のフォントしか使用できません。
(どうやら仕様のような気がしています)
具体的には、下表の"コレクション1"しか使用できないということです。
その他のフォントを使用したい場合、ttcファイルからコレクションごとのttfファイルを生成してやる必要があります。
フォント名 | コレクション1 | コレクション2 | コレクション3 |
---|---|---|---|
msgoth04.ttc | MS ゴシック | MS Pゴシック | MS UIゴシック |
msmin04.ttc | MS 明朝 | MS P明朝 |
フォントマップの文字コードについて
blockdiag 1.1.0からfontmapの考え方が導入されました。
図中でフォントを切り替えるため、以下のようにフォントマップを定義しています。
- fontmaprc
[fontmap] ms-serif = C:\sphinx\blockdiag\ttf\mspmincho.ttf ; MS P明朝 ms-sansserif = C:\sphinx\blockdiag\ttf\mspgothic.ttf ; MS Pゴシック ms-monospace = C:\sphinx\blockdiag\ttf\msmincho.ttf ; MS 明朝 msg-monospace = C:\sphinx\blockdiag\ttf\msgothic.ttf ; MS ゴシック msu-sansserif = C:\sphinx\blockdiag\ttf\msuigothic.ttf ; MS UIゴシック
このファイルを生成するにあたり、文字コードの問題で2点ほど引っかかりました。
UTF-8 の先頭にU+FEFFがあると --fontmap で読み込めない
fontmap を含め、テキストを作成するにあたり UnEditor というソフトを使用しています。
UnEditorには、保存時の文字コード(UTF-8)指定に「UTF-8(BOM有)」と「UTF-8(BOM無)」の2種類がありました。
ここで「UTF-8(BOM有)」で保存すると、以下のとおりエラーが発生します。
- fonts.txt
blockdiag { default_fontsize = 24; default_fontfamily = "ms-serif"; A[label = "MS P明朝", width = 300]; B[label = "MS Pゴシック", width = 300, fontfamily = "ms-sansserif"]; C[label = "MS 明朝", width = 300, fontfamily = "ms-monospace"]; D[label = "MS ゴシック", width = 300, fontfamily = "msg-monospace"]; E[label = "MS UIゴシック", width = 300, fontfamily = "msu-sansserif"]; }
- 実行結果
C:\sphinx\blockdiag>blockdiag --fontmap=fontmaprc fonts.txt ERROR: File contains no section headers. file: fontmaprc, line: 1 u'\ufeff[fontmap]\r\n' C:\sphinx\blockdiag>
「UTF-8(BOM有)」で保存すると、ファイル先頭3バイトに U+FEFF というコードが付加されるのがバイナリエディタで確認できました。
この3バイトを処理しようとして失敗している模様です。
fonts.txt は UTF-8(BOM有)で保存してあっても問題なかったため、ちょっと気づくのに時間がかかりました。