2014年7月1日火曜日

またブラウザで指紋認証ができなくなった・・・

以前、「Google ChromeでAuthenTec TrueSuiteが動かなくなった」と書いた件、また発生しました。
今回も実際はChromeじゃなくて、Ironなんですが、このIronは自動的にアップデートされないので手動でアップデートするのですが、今回この手動アップデート後に現象が出るようになりました。しばらくアップデートをサボっていたので、Ver.27→Ver.35への大幅バージョンアップだったので、またまたJavaScriptに渡されるオブジェクトの型や内容が変わったのだろうと推測出来ました。

調べてみますと、今回はonMessageとonDisconnectに渡される引数の型に変更があったようなので、これに合うようにTrueSuiteの方のスクリプトを書き換えました(画像中の赤で囲んだ部分を追加)。


これで、ちゃんと指紋認証の確認ダイアログがでるようになりました。

2014年6月24日火曜日

ブートしなくなったWindows 8.1の復旧

最近、またThinkPad Edge E430を使い始めています。やはり、「U」版のCPUとはキビキビ感が違いますから。

そのE430ですが、なぜか起動しなくなりました。UEFI BIOS画面が出て、Windowsの旗が表示されたところで、すぐに電源が落ちてしまいます。玉がグルグル回るアニメーションが出る直前のことです。
見た目の症状としては、以前の「休止状態から復帰しない」と同じですが、今度はもっと重症です。以前は、再度電源を入れると「休止状態からの復帰」ではなく「コールドブート」で起動していたのですが、今回は何回やってもまったく起動しません。

このThinkPadはシステム用のSSDと、データ用のHDDのデュアルドライブで運用しているのですが、不思議なことにデータ用HDDを外すと起動するようになります。その後、そのHDDを再びつけても、ちゃんと起動できます。しかし、「何かの拍子」にまた起動しなくなってしまいます。その都度HDDを外したりつけたりしていましたが、あまりにも不便です(その後気づいたのですが、修復ディスクやWindows8インストールディスクから起動して、「Windows8(8.1)へ進む」とすることでも、起動できるようです)

試行錯誤していくうちに、その「何かの拍子」が何か分かりました。「高速スタートアップ」を有効にしてシャットダウンした場合と、休止状態にした場合です。その操作をしたあとは、Windows8.1が起動しなくなることに気づきました。一方、「再起動」と「SHIFTキーを押しながらシャットダウン(=完全シャットダウン)」のときは、ちゃんと起動できます。

これに気づいてgoogleって見ますと、皆さん同じ症状で困っているようですね。しかも、外付けUSB-HDDの内容が飛ぶとか、怖い話もあるではありませんか!
しかし、どのページを見ても「高速スタートアップは無効する」というような対処療法的な解決策しか載っていませんでした。確かに、SSDを使っていると高速スタートアップのご利益はあまり無さそうですが、高速スタートアップを無効にしたところで、休止状態から復帰できないことに変わりはないので、私としては全然問題解決になっていないです。

いろいろと調査&試行錯誤した結果、ようやく解決策を見つけました!
私のThinkPadの場合は、BCDストアを少しいじってやると直りましたので、紹介します。


  • 修正ポイントその1-bootmgrのあるボリュームが明示的に指定されていなかった

    もともとそうだったのか、何かのタイミング(怪しいのはWindows8.1 Updateのとき?)にそうなったのかは定かではありませんが、BCDストアの「Windows ブート マネージャ」に存在すべき(だと思う)deviceエントリがありませんでしたので、下記のように追加しました。

    Windows ブート マネージャー                                    
    --------------------------------                             
    identifier              {bootmgr}                            
    device                  partition=\Device\HarddiskVolume1    
    path                    \EFI\Microsoft\Boot\bootmgfw.efi     
    description             Windows Boot Manager                 
    locale                  ja-JP                                
    inherit                 {globalsettings}                     
    integrityservices       Enable                               
    default                 {current}                            
    resumeobject            {e47973bb-8254-11e3-9794-f7a2787aa3d1}
    displayorder            {current}                            
    toolsdisplayorder       {memdiag}                            
    timeout                 5                                    
    HarddiskVolumeのあとの数値は、PCによって異なる可能性が高いです。ここには、EFIパー ティションを指定します。
    正しく指定されているかを確認する方法の一つは、そのEFIパーティションにドライブレターを与える方法です。diskpartを起動して、EFIパーティションをselectしたら、assign LETTER=sなどのようにドライブレターを割り振ります。その後、bcdedit /set {bootmgr} device partition=\Device\HarddiskVolume? コマンドで適当な番号を設定した後、再度bcdedit /enum コマンドで確認した時に、device  partition=S:と表示されていたら正解です。

  • 修正ポイントその2-「休止状態からの再開」にあるinheritエントリを削除する

    これについては、こちらの情報を参考にしました。Windows Vista SP1での情報ですが、症状は似ています。Microsoftは、Vistaでの間違いをまたWindows8でも繰り返したのでしょうか?

    bcdedit /enum bootappコマンドなどで、ブートアプリケーション一覧を表示させて、「休止状態からの再開」に対するidentifier(GUID)を覚えておきます。
    そして、bcdedit /deletevalue {GUID} inheritコマンドを実行します。

このトラブル解析のおかげで、BCDに関する知識がだいぶん深まった気がします。
いままで気付かなかったのは、BCDは単に「エントリ=値」の関係を覚えているだけに過ぎないこと、いくつかの「エントリ」は起動すべき実行ファイルを指すなど重要な意味を持っているけれど、それ以外のエントリはブートするアプリに固有の情報でしかないこと、です。できれば、個々のエントリについてもう少し詳しい意味・解説が知りたいところですが、今はなんとかブートできるようになっただけで「おなかいっぱい」なので、後日調査することにします。


2014年5月27日火曜日

今更ながらムラーノ(PZ50)の乗り心地で感じたこと・・・

先日、ティアナに乗る機会があったのですが、ちょっとビックリしました。すごく静かだったんです。

ティアナは、そこそこの価格に抑えてありますが、いちおう「ラグジュアリーサルーン車」としての位置づけと理解していましたので、乗り心地はまずまずいいのだろうと思っていましたが、まさかムラーノよりもはるかに快適だとは思ってもみませんでした。

まず、アイドリングが静かでほとんどエンジン音が聞こえず、振動もわずかだったです。

それから一番驚いたのは、遅くてもある程度の速度を出していても、多少の段差であれば静かにタタンッと軽く踏み越えて、嫌な突き上げはなく、音や振動が社内で響いたり残ったりすることもなく、一発でスッと収めてくれます。それでいて、フワフワして乗り味ではなく、しっかりと路面を捉えている感じがあるのは私好みでした。

一方、ムラーノときたらどうでしょう。
検索するとムラーノは「多少の突き上げはあるけれど、ロールは少なく静かである」「段差越えも気にならない」というような評価が多いのですが、私の感想としては、

  • 段差を越えた後に残るダッダッダッという振動と音が酷い
  • アイドリング中もポコポコというようなこもった音が社内に響いていて、むしろ走っている時の方が静かと感じる
という感じで、この二点についてはティアナにボロ負けしていると思います。
「多少の突き上げ」に関しては私自身固めのセッテイングが好きなので、これまで「そんなもん」と思っていましたが、ティアナみたいなセッティングが可能ならそうしたいくらいです。車格も重量も違うので、それは物理的にムリなんだろうな。

あと、確かに走行中は高速走行であっても、ムラーノの方が静かだとは思います。高速走行時の安定性・直進性もムラーノに軍配でしょう。しかし、いかんせん上に書いた二点が悔しい!「すごく良い」と評価している人もいるようなので、これは個体差なのかなぁ。つまり、ハ・ズ・レを引いているということなのでしょうか。
でも、他の部分は気に入っているので、少なくともあと2年、10万kmは走りますよ。

2014年5月2日金曜日

マルチキャストパケットの受信方法

自分向けの備忘録なので、要点のみとします。


  1. ソケットを生成する
  2. IPADDR_ANY+任意のポート番号で、bindする
  3. setsockoptにIPPROTO_IP/IP_ADD_MEMBERSHIPを指定して、マルチキャストグループからのメッセージを受け取れるようにする。
  4. 必要に応じて、3を繰り返す。
  5. recvfromでパケットを受け取る
これで、あとはファイアウォールを正しく設定すれば受信できました。

が、上の手順3~4で複数のマルチキャストグループを指定した場合は、受け取ったパケットがどのグループ宛だったのかが分かりません。

今回は、複数のグループからのマルチキャストパケットのグループを区別して受け取りたかったので、検索した結果、次のような方法があることを知りました。
  1. ソケットを生成する。
  2. setsockoptにSOL_SOCKET/SO_REUSEADDRを指定して、一つのポートに複数のソケットをbindできるようにする
  3. IPADDR_ANY+任意のポート番号で、bindする
  4. setsockoptにIPPROTO_IP/IP_ADD_MEMBERSHIPを指定して、マルチキャストグループからのメッセージを受け取れるようにする。
  5. 必要に応じて1~4を繰り返し、グループ毎に別々のソケットを用意する。
  6. 個々のソケットでrecvfromなどで受信する
要点は、複数のソケットを用意することと、それらのソケットに同じポート番号をbindできるようにSO_REUSEADDRフラグをセットすることでした。

2014年4月9日水曜日

ネットワークドライブ上のファイルをゴミ箱に入れる方法

あまり美しくない方法ですが、Windowsでネットワークドライブ上のファイルを削除した時に、ゴミ箱に入れる方法を見つけました。そういうことを実現するフリーソフトを使うという手もありますが、今回はWindows標準の機能のみを使い、右クリック→削除のほか、DELETEキーでの操作にも対応できます。

(方法)
次の手順で、2つのディレクトリを作成します。

  1. 管理者権限でコマンドプロンプトを起動します。
  2. 適当なディレクトリに移動して、次の2つのコマンドを実行します。
  • mklink /D first_dir \\server\share-name
  • mklink /J target_dir first_dir

first_dirtarget_dirは任意の名前を指定してください。
また、\\server\share-nameはネットワークドライブのあるサーバー名と共有名を適宜入れてください。

この操作で、2つのディレクトリ(というか、一つはシンボリックリンクで、もう一つはジャンクション)ができます。2つ目のtarget_dirを経由して削除したファイルはゴミ箱に入ります。しかし、1つ目のfirst_dir以下から削除するとゴミ箱には入りません。

“ネットワークドライブ”というくらいですから、ディレクトリ上にマウントされたネットワークドライブではなく、固定のドライブ名を与えたいと思う人も多いでしょう。↑で作ったtarget_dirを更にsubstコマンドでドライブ名を与えることは可能(substを実行するときは管理者権限ではなく、一般ユーザで行ってください)ですが、そのドライブから削除した場合はゴミ箱に入ってくれなかったです・・・残念。

ちなみに、ここで使ったmklinkコマンドは、Windows Vista以降でのみ使用できます。

2014年3月27日木曜日

休止状態から復帰しない現象の続き

こちら(http://morizzos-buglife.blogspot.jp/2014/02/blog-post.html)に書いた「休止状態から復帰しない」現象は、現在も起きています。

少し前はなぜか直っていました。特に何か対策をしたわけではありませんでした。
しかしその後、また復帰しなくなってしまいました。この時も、何か変化があったわけではないと思うのですが。Windows Updateは手動でアップデートするように設定を変えていますから、勝手に何らかのアップデートがあったわけではありません。ですから、Windows Updateの前後で状況が変わったのであれば、気がつくはずです。

この問題は、イベントビューワにも何も残らないので調査のしようがないのですが、今回一つだけ進展がありました。

「システムの詳細設定」-->「起動と回復」にあるシステムエラー時の動作を「自動的に再起動しない」ように設定すると、勝手に電源が切れて再起動することはなくなり、起動時のロゴ(富士通のロゴ)のまま固まってしまうことが分かりました。

この設定が効いているということは、要はWindowsのブルースクリーン相当の問題が発生して、Windows自体が再起動をかけていた、ということになります。ただし、実際にはブルースクリーンが表示されるわけではないので、どのドライバ(モジュール)がエラーを起こしたかがまったくわかりません。また、ダンプファイルが残るわけでもないので、ことさらどうしようもないです。

2014年2月18日火曜日

休止状態から復帰しない

LIFEBOOK WS2/Mですが、休止状態から復帰しなくなりました。OSはWindows 8.1です。

「休止状態」「復帰しない」などのキーワードで検索するといろいろ見つかるのですが、私のところでの症状と一致するものは見つかりませんでした。その「症状」というのは・・・


  • 休止状態から電源ボタンを押すと、起動画面(富士通のロゴ)出たあと、電源が勝手に切れて復帰しない。
というものです。UEFI BIOSの初期化状態から抜けて、Windows8起動時のグルグル玉が回るアニメーションが出るかというタイミングで電源が切れていまいます。実際には、そのグルグル玉は見えないです。

その後、再度電源を入れるとちゃんと起動しますが、休止からの復帰ではなく、コールドブートです。休止前の状態は失われてしまっていました。

イベントビューワには、何のエラーも報告されていないので、どうやって調査したらよいかわかりませんでしたが、少なくとも最初の頃はちゃんと休止状態→復帰ができていたので、追加アプリ&ドライバのインストールか、Windows Updateのあとにおかしくなったのだと思います。

いろいろ試行錯誤の末、どの段階でこんな現象がでるようになったのかが分かりました。それは、
KB2912390(http://support.microsoft.com/kb/2912390)をインストールしたら発生することが分かりした。これをアンインストールすると、休止状態から復帰できるようになりました。

このKB2912390は、Direct2Dのセキュリティに関係したパッチのようですが、それがなぜ休止状態からの復帰に影響があるのかは不明です。どちらにしろ、このパッチはしばらくインストールしないでおこうと思います。

このパッチは、他のWindows8なPCにもインストールされていますが、そちらでは問題が起きていませんので、LIFEBOOK WS2/Mに固有の問題ではないかと思われます。おそらくBIOSレベルで何か問題を抱えているのではないかと推測しています。そうなると、富士通さんが問題に気づいて新しいBIOSをリリースしてくれるまでは、どうしようもないですね。


(2014年2月28日:追記)

同じ現象が、ThinkPad edge E430でも起きました。休止状態から再起動しようとすると、最初にWindowsの旗で出た直後くらいに電源が落ちます。その後再度電源ボタンを押すと、コールドブートしました。
KB2912390がインストールされていたので、アンインストールしました。すると、この現象は出なくなりました。

しかし、Direct2D関係のfixが、なぜ休止状態からの復帰の影響するのでしょうね?本当にナゾです。


(2014年3月3日:再度追記)

また、休止状態から復帰しないようになりました。電源を入れても、富士通のロゴのあと、すぐに電源が切れてしまいます。

コールドブートして、windows updateの履歴を見ても、↑で問題がある(と思っていた)KB2912390は入っておらず、アンインストールされたままです。これ以外にも、この問題を起こすパッチがあるのかもしれないと思い、windows updateの履歴から次々とアンインストールしてみました。すると、すべてのパッチをアンインストールしても休止状態から起動しません。やはり、PC固有(LIFEBOOK WS2/M)の問題なんでしょうか・・・

パッチを全部アンインストールした状態で使うわけにもいかないので、再度windows updateをかけてKB2912390を含む「重要」なアップデートをすべてインストールしました。すると・・・

休止状態の問題はなくなっていました。問題と思っていたKB2912390をインストールしていても、です。いったい、何だったんでしょうか?

いつも言っていることですが、「PCはダマシダマシ使うもの」なので、とりあえず動けばOKです。


(2014年3月10日:再々度追記)

またまた、休止状態から復帰しないようなってしまいました。
今度は、KB2912390をアンインストールしても、アップデート全部アンインストール→再度インストールしても、直らないです。本当に、いったい何なんでしょうか?ちょっと困りました。

2014年2月15日土曜日

LIFEBOOK WS2(SH90/M)のタッチパッド(クリックパッド)改善法

以前、LIFEBOOK WS2のタッチパッドの反応が悪いと書きましたが、こちらの情報を見つけて調整したところ、まずまずの感じになりました。要は、初期設定が良くなかったということのようです。

Synaptics ClickPadの調整のポイントは次の3点でした。

  1. クリックのためのタッピング操作を検知する範囲の設定
  2. タッピング時の圧力の感度
  3. ある操作から別の操作を検知し始めるまでのインターバル時間
まず、1のタッピング操作範囲の設定ですが、誤反応を恐れてか、初期状態ではタッピングをクリックと判定する範囲がかなり狭めに設定されていました。この範囲外でタッピングしても利かないことに気が付きませんでした。特に、2本指でのタッピングでは、大きな私の手では簡単に範囲から外れてしまいます。
2のタッピング時の圧力の感度についても、急いで操作するときは比較的軽くタッピングすることになるので、できるだけ弱い圧力でも検知するように調整しました。
最後のインターバル時間ですが、例えばスライド操作でカーソルをボタンの上に動かしたら、すぐにボタンを押したいですが、このインターバル時間が長く設定されていると、カーソル移動→(タッピングによる)クリックまでの操作に少し待ち時間を入れなくてはいけません。これを短く設定すれば、すばやく操作ができそうです。
以上の調整は、すべてSmartSenseというところで調整出来ました。「マウスのプロパティ」を開いて「設定」を押す。Synaptics ClickPadの設定画面が開いたら、SmartSenseを選択して、その右の歯車アイコンをクリックします。私の場合は、次のような感じにしました。

2014年2月13日木曜日

Google ChromeでAuthenTec TrueSuiteが動かなくなった

Google Chromeと書きましたが、実際に使っているのはIronの方です。同じChromium系ということで・・・。

処理速度やタッチパッドの操作性に不満がありながらもLIFEBOOK WS2/Mを使っているのですが、もう一つの不満があったのが指紋認証ソフトです。富士通のPCらしく、OmniPassというソフトがプリインストールされているのですが、まずこれがInternet Explorerにしか対応していない点がイマイチなところですね。それから、Webサイトのログイン認証で使う時ですが、ユーザIDとパスワードを覚えさせるのに、「どのテキストボックス」に「何を入れるか」をユーザIDとパスワードの両方についていちいち指定しなければならない。更に、入力後に「どのボタンを押すか?」も指定できるのだけれど、OmniPassがそのボタンを押してくれたことがない。とにかく、手間がかかるわりには、あまり楽になっていない気がします。

その点、AuthenTec TrueSuiteの方は、ユーザIDとパスワードを入力したと思われるWebサイトに来ると自動的にその内容を覚えてくれる(いちおう、覚えるかどうかの確認だけは出る)し、次回そのサイトに来ると、自動的にポップアップが出てきて指を通せば、必要な項目を入れてログインまでしてくれる。これは非常に使い勝手がいい。だからこそ、こんな書き込みをしたのです。OmniPassもこのくらい対応してくれて、Chromeにも対応してくれるといいのですがね。

話がだいぶんそれました。Ironをバージョンアップしたあたりから、TrueSuiteのログオン時ポップアップが出なくなってしまいました。しかし、自力で治せることが分かりましたので、紹介します。

Chromeの「拡張機能」タブを開いて、デベロッパモードに切り替えると、コンソールに次のようなエラーが確認されました。

websiteLogonBG.jsというJavaScriptの20行目でエラーが発生しているようです。更にそのソースを見てみると、
のようになっていて、port.tabの型が不明なので、idというメンバが見つからないということのようです。もしかすると、Chromeから渡される変数portの型が変わったのかも知れません。

そこで、ブレークポイントを設定してJavaScriptを止めて、変数portの中身を見てみました。型はPort型で以前とは変わっていないようですが、その中にtabというメンバが存在していません。その代わり、port.senderの中にtabというメンバが見つかりました。Port型の構造が変わったのでしょうか・・・。
とりあえず、問題のwebsiteLogonBG.jsスクリプト中のport.tabという部分を、すべてport.sender.tabに変更してみます。ChromeのExtensionは、ディレクトリ

  • %USERPROFILE%\AppData\Local\Chromium\User Data\Default\Extensions
にある(ただし、↑のはIronの場合)ということなので、その下を探してみるとありました。
そして、問題のJavaScriptを修正して、Ironを再起動すると・・

 直りました!


ログオンするサイトにいくと、True Suiteのポップアップが出るようになり、指紋を読ませるだけでログオンできるようになりました。

Chromeの拡張機能についての仕組みも少し勉強ができてよかったです。

2014年2月7日金曜日

ムラーノ、20万km突破

遂に20万kmの大台に乗りましたので、記念撮影です。


これまで、ドライブシャフトのブーツが破れるとかのマイナートラブルは多少ありましたが、致命的なトラブルはなかったです。次の車検が近づいていますが、もう1回車検を通してもう2年乗るつもりです。次々回の車検時には30万kmに到達しているでしょうか?ここまで来ると、どこまで走れるのか、もっともっと試してみたくもなります。

とはいえ、やはりこの燃費とハイオク仕様はキツイです。乗り換えも検討するのですが「コレだ!」と思えるような車がなかなかなくて。
でも最近は、ゴルフ7がなかなか良さそうな感じです。走行性能、乗り心地、装備どれをとっても評価はいいですしね。ただ、ゴルフ5/6のDSGトラブルの話はちょくちょくネットで見かけるので、そこだけがネックです。原因不明でいきなり走れなくなる状況というのは、ちょっと国産車であればあり得ないレベルだと考えています。車は趣味じゃなくて、完全に生活必需品(通勤手段)なので、壊れない(壊れにくい)ツールであることが第一条件になりますね。ゴルフ7でそういった不具合が解消されているなら、次々回の車検時にもう一度検討してみたいです。今から2年以上経てば、そういった不具合の情報が出揃うと思いますので。