2015/07/27(月)春M(SpringM)でSusie Plug-inが使用できない

2015/07/27 15:00 PC(全般)
春M(SpringM)で、Susieプラグインが使えなくなった問題。

以下前提。

SpringMの組み込み画像ビューア(pview)は、自動的にSusieプラグインを読み込んで使用してくれる。

プラグインのディレクトリはオプション等で指定出来ない。
SpringM上でハードコーディングされたSusieのレジストリを見にいっているようだ。

で、本題。

現在、Susieのサイトで更新されている最新β版Susie

Susie 0.50 beta3(Jan 15,2013)

は内部的にはSusie2扱いで、レジストリの場所・構造・生成タイミングが旧Susie(~0.47)と違う。

[~0.47]
HKEY_CURRENT_USER\Software\takechin\Susie
※起動初回に生成

[0.50~]
HKEY_CURRENT_USER\Software\takechin\Susie2
※インストール時に生成

SpringMは旧Susie(~0.47)のレジストリしか見に行かないため、SpringMでSusieプラグインを使用する場合は1度旧Susieを1回起動してやる必要がある。それから新Susie(0.50~)に更新するか、新Susieとは別に旧Susieを入れっぱなしにしておくかは任意。

幸にして、まだSusie32 ver0.47bが公開されているのでこれを利用すること。

一度旧Susieを起動してしまえば、レジストリには残りっぱなしなのでディレクトリ移動をしない限り問題は起きない。
Windows再インストールの時など、環境作り直し時にはまる可能性があるので注意。

2013/12/13(金)fi-6130のTWAINがフォーカスを取るのを抑止する

2013/12/13 16:27 PC(全般)
fi-6130等、Fujitsuのfi系ドキュメントスキャナのTWAINドライバウィンドウが1枚スキャンするごとにフォーカスを持っていってしまう問題。スキャン中他の作業、特に入力作業が出来ない。

とりあえずAPIフックで対処可能。

Windows API Hooking Tutorial

上を参考に、SetForegroundWindowを握りつぶせば良い。

最初単にグローバルフック(SetWindowsHookEx)でどうにかなるような気がしていたのだが、WM_ACTIVEAPPメッセージを握りつぶそうとしてもうまくいかなかった(WM_ACTIVEAPPが飛んできたタイミングは捕まえられる。そこで元のウィンドウにフォーカス移すのはちょと……)。

実のところWindowsのメッセージ機構の理解にあやしいところがあって、キーボード・マウス以外のメッセージにキャンセル機構がないのか、SetWindowsHookEx自体の制限か、それともWM_ACTIVEAPPメッセージは通知だけで、ウィンドウのアクティブ処理自体はエクスプローラ側の触れない領域にあるのかといったあたり判断できてない。C++でWin32ネイティブアプリ書いて、WndProc内であれこれやってみれば結論が出るんだろうけど、今回は時間がないので次回以降の課題。

.NET系でもマウス・キーボードのグローバルフックがかけられることは覚えておこう。

ソース整理できたらそのうち載せたいけども、元コードのライセンスがわからないな……

2013/11/09(土)HL-5450DNの印刷設定メモ

2013/11/09 4:44 PC(全般)
HL-5450DNの印刷設定のメモ。
メモしておかないと毎回間違えそうなので残しておく。

最近、BrotherのモノクロレーザープリンタHL-5450DNを導入した。

この機種、True 1200dpi出てグラデーションもかなりよいとの評判。
主にマンガ原稿を印刷する用途としても期待していた。

が、どうも期待した結果通りにならない。
あれこれ試した結果、どうも印刷結果に対して設定項目を誤認しやすい(あるいは自分がレーザプリンタの慣習を知らないだけ)名前になっているようだ。

[Brother HL-5450DN seriesのプロパティ->基本設定->印刷設定]
ここの項目が一番印刷結果に影響を与える。

3種類。

"グラフィックス":
プリンタ側でPhotoShopでの誤差拡散に近い二値化処理を行っている。元画像が二値画像なら(おそらく)これで問題無いが、グレースケールではディザ処理がかかる分汚くなる。

"テキスト":
"グラフィックス"のように二値化をかけずに(そのまま?)出力している。元画像のグレスケ部はインクジェットでのグレスケに近いし、二値・トーン部もしっかり出る。

"手動設定"->"システムのハーフトーンを使う":
一定の閾値を境に二値化がかかる。色々設定を弄ってみたのだが、想定と違ってハーフトーンにならなかった。グレスケを出力する場合白に飛ぶか黒につぶれるかどちらかになりそう。

それ以外に、"手動設定"内部に3種類の改善チェックボックスがある。これらについては確認した限りでON/OFFによる大きな差異は見えなかった。基本外す方向で良いような気がする。

ということで、"テキスト"がすさまじく優秀。マンガ原稿の場合、二値化にしろなんにしろ原稿側で処理してしまうのが基本だろう。"グラフィックス"を意図して選ぶ必要はないと思われる。

"グラフィックス"はお手軽にプリンタ機能だけでハーフトーンかけたいときに使うのが良いんだろうねえ。

最後にオマケで5450DNの雑感を書いておく。これまで使っていたのがMultiWriter 2350Nなので、それと比べてっていうところ。

印刷速度や綺麗さは大変優秀。特に1200dpiはすごい。グレースケールがこんなに綺麗に出て、この印刷速度。サイズも、ギリ卓上と名乗れるくらいでコンパクト。

動作音はかなり五月蠅い。静音モードにしないとちょっと夜間は無理。静音モードにした上でなお壁が薄くなければ使えるか。

心配していたオゾン臭や発熱も、2350Nに比べればずっとマシだった。あとは不満になりやすそうな用紙カールとか印刷の濃さがどうなるか。これらもドライバから制御できるようなので、そこは今後といったところ。

本体にパネルがないのでトラブったときが心配だけれども、とりあえず生きてさえいればブラウザからIPアドレス直打ちで設定・確認できるようなので大丈夫だろうか。

2013/05/08(水)libccid VerUpに伴うB-CASカード周りの設定変更

2013/05/08 24:56 PC(Linux)
自宅サーバ(debian)をsqueeze -> wheezyにしたらちょいちょい動かなくなったものがあったので、それ関連の記事。

今回はpcscd, bcs-perl 周りの話。

wheezyにして以降、pcsc_scanしてもカードが出てこない。

原因は、libccidのバージョンが変わった所為でカードリーダを認識しなくなったからのようだ。

[参考]
Linux/テレビ関連/libccid - PukiWiki Plus!

とりあえず、libccid_Info.plistにエントリを追加してpcscdを再起動すれば良い。
$diff /etc/libccid_Info.plist /etc/libccid_Info.plist.orig
328d327
<               <string>0x04E6</string>
554d552
<               <string>0x511A</string>
780d777
<               <string>SCM SCR 3310 NTTCom</string>

#/etc/init.d/pcscd restart
bcs-perl側の名前が"SCM SCR 3310 NTTCom"なのでそのまま入れてやる。

pcsc_scanしてカードの検出、bcs-perl listしてカードの認識が出来てることを確認すること。pcsc_scanがだめならpcsc側のリストをチェック、bcs-perl listがダメならbcs-perl.pl内のカード名($selected_reader)が怪しい。

パッケージ作り直す、unstableにするという方法もあるがうーん、依存の整理とか考えたくない……

[2013/10/11 追記]
後日、カードリーダを指し直したらまたbcs-perl listで取れる名前が変わってしまった。うーん、カードリーダ同じ型番でも取れるものが違うのか、ドライバ周りで細かく変わるものなのか……

bcs-perlを弄って修正。

[参考]
ぼんぼんブログ - ぼんぼん工房

2013/02/21(木)RubyでUTF-8ファイル名&外部コマンド実行

[2017/05/02 追記有り]
Rubyの``やsystemで外部コマンド実行するときに、実行ファイル自体や引数にUTF-8文字(SJISマッピング無し)が渡せないのであれこれ悩んだ問題。

確認はWindows7 64bit & Ruby1.9.3p0(ActiveScriptRuby)

前提。WindowsはファイルシステムがNTFSならUTF-8ファイル名を命名できる。内部コードもUTF-8になっている(はず)。しかし古いAPIを触ったり、INPUT/OUTPUT周りを見るとまだShiftJIS(Windows-31J)が多い。このズレは厄介で、ハマりどころのA代表。特にRubyの場合、UNIX寄りでWindows特有処理のケアはやっぱり甘い…

閑話休題。Windows&UTF-8の扱いが比較的良くなっているRuby1.9系(Dir.globの引数に.encode('utf-8')などでUTF-8文字列を渡すとUTF-8ファイル名が取れる)でも、マジックコメント入れてUTF-8保存しただけだと外部実行が出来ない。
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-

`utf8_filename`
どうにも通らない。SJISマッピング出来るファイルなら、SJISでやればいいだけの話なのだがUTF-8にあってSJISにない文字(U+2661(はーと)とか)が混ざってると動かない。


で、とりあえず色々やってみたのだが、結論から言うと綺麗に書くのは諦めた。

ちゃんと調べるべきなのだが(やってない)、どうもRubyが叩いてるAPI自体が古いんじゃないかという。

unicode - Ruby system() doesn't accept UTF-8? - Stack Overflow

なので、苦肉の策。
バッチファイルを作成して、それを実行する。
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-

open("tmp.bat", "w"){ |fp|
	fp.write("chcp 65001\n")
	fp.write("utf8_filename\n")
}

out = `tmp.bat`
Windowsのバッチ実行ではコードページが合えば、UTF-8ファイル名も通るのでそれを利用する。引数にファイル名を指定するときも同様。\\の数とかダブルクオート囲いとか先頭に./が必要な場合は適切にすること。

うーん、汚すぎて死にそう。

[参考]
Rubyで外部コマンドを実行して結果を受け取る方法あれこれ #Ruby - Qiita

systemuは知らなかった。

[2017/05/02 追記]
やはりきれいには書けていないが、さすがにbatを吐き出すのは汚すぎるということで苦肉の策第二段。小改善してみた。今回はnyagosを使用している。
	out = ""
	Open3.popen3("c:/********/nyagos.exe"){ |stdin, stdout, stderr, thread|
		stdin.puts("chcp 65001")
		stdin.puts("#{COMMAND} \"#{utf8_filename}\"")
		stdin.close
		out = stdout.read
	}
nyagosでなくても良いのだが、cmd.exeやnyaos.exeだとchcp 65001したあとにUTF-8を流し込めない。
ここらへんは、chcp後に貼り付けが出来るかどうかで確認する。

Windows APIを直接叩けば済むような問題に見えるんだよなあ。
ここはまた次回。

2011/07/21(木)DNSを変えた(ZoneEdit-&gt;MyDNS)

2011/07/21 16:34 PC(Linux)
結論から書くと、Dynamic DNSサービスを変更し、ZoneEditの依存度を下げてMyDNSをメインにした。
$whois
がこうなった。
[Name Server]                   ns8.zoneedit.com
[Name Server]                   ns18.zoneedit.com

[Name Server]                   ns0.mydns.jp
[Name Server]                   ns1.mydns.jp
[Name Server]                   ns18.zoneedit.com
経緯としては、Try WiMaxした際にdt8.jpに接続できなかったことに端を発する。WiMaxの自動取得DNSがdt8.jpをタイムアウトしているようなのでざっと調べてみると、ZoneEditの挙動がおかしい。ns18は応答を返すがns8は応答を返さなかった。

ここで色々調べてみたのだが、どうもアクセス元として特定IPアドレスなりドメインなりをns8ははじいているようだ(そうとしか思えない)。下はWindowsのcmd.exe。
>nslookup dt8.jp ns8.zoneedit.com
DNS request timed out.
    timeout was 2 seconds.
*** Can't find server name for address 75.125.10.187: Timed out
Server:  UnKnown
Address:  75.125.10.187

DNS request timed out.
    timeout was 2 seconds.
DNS request timed out.
    timeout was 2 seconds.
*** Request to UnKnown timed-out

>ping ns8.zoneedit.com

Pinging ns8.zoneedit.com [75.125.10.187] with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 75.125.10.187:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
と、こうなる。

自宅(so-net配下)ではnslookup, pingともに通っていたので気づかなかった。

もしかしたら今までこのサイト見られなかったりしたのかも。ごめんなさい。

nslookup(dig)テスト【DNSサーバ接続・応答確認】

上記のサイトでもはねられる。

ということで元々zoneeditは挙動が怪しかったこともあり、できれば乗り換えたいと考えた。個人運営ながらMyDNSがそこそこ長期かつ安定的に運営されている(感謝!)ようなので特に挙動が怪しいns8.zoneedit.comを廃し、MyDNSをメインに差し替えることにした。

しかし、調べてみると現在フルドメイン登録可能なフリーのDDNSがほとんど無くなっている。EveryDNSはDynDNSに吸収されるようだし、概して有料化かサービス停止の流れにあるようだ。無料DDNSは広告プログラムとくっつきづらいのもわかるので、仕方ないかもしれない。

MyDNSもいつまでサービスを提供していてくれるかわからない。将来的にどうするか。

ドメインをVALUE-DOMAINに移管すればVALUE-DOMAINのDDNSが使えるのだが、VALUE-DOMAIN自体が今不安定な状況のようなので今回は控えた。VALUE-DOMAINはいつの間にか安くなっていて、汎用jpに関して現在のレジストラ21-domainと値段がほぼ互角のようだ。経営が安定していることが確認できればVALUE-DOMAINへの移管も手ではある(VALUE-DOMAINのDDNSも不安定という噂があるが)。

自前でネームサーバを立て、フルドメインでない適当なDDNSでドメインを取得し(たとえばxxx.dyndns.org)、それをDNSとしてJPRSなりに登録するという手もある(技術的には可能なはずだが認識に誤りがあるだろうか?)。

話を戻す。とりあえず、1月程度問題がないかどうか確認し、問題ないようだったらZoneEditを全廃することとする。

【追記 2011/11/10】
2011/11/07付けでmydnsに一本化した。
[Name Server]                   ns0.mydns.jp
[Name Server]                   ns1.mydns.jp
さらばzoneedit。

2011/04/24(日)Win7 -&gt; WinXPファイルコピー問題

2011/04/24 11:01 PC(全般)
ファイルコピーや移動しようとしたときに失敗する問題。
環境は、
[コピー元]
メインPC: Windows7(64bit)
[コピー先]
サブPC: WindowsXP SP3

デフォルトsmb経由。

[症状]
・エクスプローラからなら、ネットワークエラーダイアログが出て「アクセス中に問題が発生しました」となる。
・fire file copyからなら、「指定されたネットワーク名は利用できません」となる。

[発生時期]
メインPCをWin7(64bit)に入れ替えた時期か、サブPCのM/Bを替えてNICをRTL8111Eにした時。

さて、確定で切り分けまでしなかったのだが、どうも【解決】ファイル共有での遅延問題
これと同じ問題のようだ。

現在メインPC・サブPCともNICをRealtek RTL8111Eにしたので、ジャンボフレームを共通でMTU=9KB(MAX)としていた。だが、例の問題を思い出すと(Win7でもsmbの仕様が変わってないのなら)、9KBをデフォルトブロックサイズ4356byteで分割すると、奇数回となり最終応答が帰ってこない。Win7のコピー・移動の手順内でリモートディレクトリのブラウジングが走り、その際にパケットが返ってこないとそのネットワークプレースを使えないと見なすのでは?(ちゃんとパケットキャプチャしなかったので想像)

そんなわけで、4536byte分割で必ず偶数回になるようなMTUを設定してやることにする。今回はジャンボフレーム指定できるNICなのでメインPC、サブPCともMTU=8KBとしてみた。

ワオ、解決。

ほかに試したのは、セキュリティソフト全落としで、これは特に変化無し。

ちゃんと検証するならジャンボフレーム4KBの時にどうなるかやればいいんだろうけど…… まあ今回はいいや。ジャンボフレーム指定できないなら、SizReqBuf指定してやればいいよね、きっと。

私が知る限り、これWindows SMBの実装中でもワーストクラスの仕様なのでいろんなところで引っかかってる人出てる気がするな。

[2011/05/10 追記]
上で色々書いたが、そもそもREALTEK RTL8111Eのジャンボフレーム周りの挙動がなんか変。Win7側への転送が極端に遅い。

■Win7(64bit) RTL8111E->WinXP(32bit) RTL8111E
(両者ジャンボフレーム=7KB MTU)
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive X:Drive Size 10MB

Disk Read Write RRead RWrite (KByte/s)
13650 451 46545 476 7130

Copy 2k 32k 256k 1MB (Operations/min)
0 0 0 0 0

Copy 2k 32k 256k 1MB (Kbyte/Sec)
0 0 0 0 0

■WinXP(32bit) RTL8111E->Win7(64bit) RTL8111E
(両者ジャンボフレーム=7KB MTU)
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive T:Drive Size 10MB

Disk Read Write RRead RWrite (KByte/s)
18551 32715 1446 39613 430

Copy 2k 32k 256k 1MB (Operations/min)
0 0 0 0 0

Copy 2k 32k 256k 1MB (Kbyte/Sec)
0 0 0 0 0

■Win7(64bit) RTL8111E->WinXP(32bit) RTL8111E
(両者ジャンボフレーム=無効)
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive X:Drive Size 10MB

Disk Read Write RRead RWrite (KByte/s)
13939 969 46757 901 7130

Copy 2k 32k 256k 1MB (Operations/min)
0 0 0 0 0

Copy 2k 32k 256k 1MB (Kbyte/Sec)
0 0 0 0 0

■Win7(64bit) RTL8111E->WinXP(32bit) RTL8111E
(Win7ジャンボフレーム=無効, WinXPジャンボフレーム=5kB MTU)
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive X:Drive Size 10MB

Disk Read Write RRead RWrite (KByte/s)
33864 62439 19284 46829 6904

Copy 2k 32k 256k 1MB (Operations/min)
0 0 0 0 0

Copy 2k 32k 256k 1MB (Kbyte/Sec)
0 0 0 0 0

ここで気づいた、再現性すらない。てことはドライバだな。

[現状Driver Ver]
Win7: 7.37.1229.2010
WinXP: 5.782.114.2011

調べてみたらWin7用の新しいドライバがあるようなので差し替え。
Win7 Driver Ver:7.37.1229.2010 -> 7.43.321.2011

■Win7(64bit) RTL8111E->WinXP(32bit) RTL8111E
(両者ジャンボフレーム=8kB MTU)
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive X:Drive Size 10MB

Disk Read Write RRead RWrite (KByte/s)
34890 47925 46757 38568 6309

Copy 2k 32k 256k 1MB (Operations/min)
0 0 0 0 0

Copy 2k 32k 256k 1MB (Kbyte/Sec)
0 0 0 0 0

何度か計り直したが、ある程度安定したようだ。蟹め。

2011/02/12(土)DN-UVC252C@Win7(64bit)

2011/02/12 21:57 PC(全般)
OSを替えてしまったので、ドライバがすぐに見つからないものがちらほら。ゲーム画面をPCモニタに出すために購入したキャプチャユニット DN-UVC252CがWindows7 64bitで動くかどうか調査。

ここら辺が詳しい。
iTブログ DN-UVC252C USBコンポーネントキャプチャ 購入レビュー
USBキャプチャーユニット「上海問屋DN-UVC252C」で【MHP3体験版初心者向け解説】狩りに生きる。ロアルドロスvs片手剣編アップしてみました: Log_南信便り(SeesaaBlog)

ここのドライバでいけるようだ。
VideoHome Technology Corp.

今のところ、PeCaTV2で快適に動いている。

2011/02/12(土)lenny-&gt;squeeze入れ替え

2011/02/12 21:22 PC(Linux)
debianがメジャーアップデートして、squeezeがstableにきた。とりあえずアップデートしよう。

squeezeはCONFIG_SYSFS_DEPRECATED=nでないといけないというので、一応kernel作り直した。

色々悩んだけど、お任せでいいや。
aptitude update
aptitude install aptitude
aptitude dist-upgrade
ApacheがApache2になったので設定を移してちょっとおかしいところだけいじって対応。

うーん、ほんとはこんなことじゃないけないんだけどちょっと今時間がないのでこれでいこう。

以下のパッケージが削除されたのでメモ。
1)      dvipdfmx
2)      iceape-gnome-support
3)      initrd-tools
4)      irb1.8
5)      libdatrie0
6)      libdevmapper1.02
7)      libgnomekbd2
8)      libgnomekbdui2
9)      libmetacity0
10)     libreadline-ruby1.8
11)     libslab0
12)     libvorbis0
13)     libxcb-xlib0
14)     libxcb-xlib0-dev
15)     mysql-client
16)     mysql-server
17)     proftpd
18)     python-numeric
19)     racoon
20)     rdoc1.8
21)     rpm
22)     texlive-base-bin
23)     xserver-xorg-video-cyrix
24)     xserver-xorg-video-imstt

2011/02/06(日)リモートデスクトップ後、B-CASカードを認識しなくなる

2011/02/06 23:04 PC(全般)
サブPC(PT2+tvrock)の録画がよく失敗する問題。B-CASカード認識の問題のようなのでカードリーダ替えてみたりしたのだが、どうもうまくいかない。

調べてみたら以下のようなことらしい。

「あったまいいねTVROCK」 - PT1 pt2仕様+FAQ

要するに、リモートデスクトップでつなぐと(仮に同じユーザでのログオンし直しであろうが)カードリーダを切断してしまうらしい。ホスト側ユーザの権限などには依存しない。また、クライアント側にも同じカードが刺さっていればこの問題は起こらない。自宅環境では今まで親機と子機両方にカードが刺さっていたので気づかなかった。

ノートPCにB-CASカード刺すのも厳しいので、とりあえずしばらくはUltraVNCで代用する。リモートデスクトップでつないでしまった場合は再起動で対応。

ローカルLANだとリモートデスクトップの方が圧倒的に快適だが、遠隔制御だとそこまで差はつかない。

他の方法だと、リモートデスクトップにパッチを当てるという裏技もあるようだ(複数ユーザが同時にログオンできるようになる)。ただし、ライセンス的にどうなのって話とtvrock自体が予約リストなどをユーザレベルで管理しているので、別ユーザログインもちょっともめんどくさい。

同一ユーザでログオンするのはさすがに難しいらしく、serverを使わないのであればかなりのハックが必要になるらしい(logon.exeをいじる?)。それこそライセンス的にどうなのって話になるのでこれは基本除外。

あとはうちの場合だとBonCasLinkでB-CAS配信サーバをLinux上に立てるあたり。これもライセンス的にどうなんだろう…… まあ検討はしておこう。時間かかりそうなので、実験的にやるにしてもかなり先の話とする。
OK キャンセル 確認 その他