スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Keylay00が、WindowsUpdateで不都合が出た 

Keylay00 ver3.2.0.1 (Windows7 Pro 64bit) を使っているんだけど、先日のWindowsUpdateでうまく動かなくなった。
Keylay00は、Windows用のキー割り当ての変更プログラムで、GUIで分かりやすくキー設定を変更でき、アプリケーションやアプリケーションのサブウィンドウごとにキー割当を切り換えたり、マウス操作をキーに割り当てたり、キーにマウス操作を割り当てたりすることもできたりして便利にいつも使用している。

症状は、マウスクリックに別のキーを割り当てていると、マウスクリックが右も左も全く利かないというもの。 キー割当を解除すればOKなんだけど、マウスをクリックできないので解除操作できないという。

結局キー割当をしていなかった別の管理者ユーザでログイン、アンインストールして再インストールした。C:\Users\USERNAME\AppData\Local\Keylay00\ を削除でもOK。

まだ修正版の公開はされていないようなので、マウスクリックへのキー割当をしない状態での使用している。修正版が公開されるといいんだけれど。

スポンサーサイト

VirtualBoxを試してみた。 

VirtualBoxを試してみた。

VirtualBoxがMSから売却されて、Sunに移り、SunがOracleに買収されて現在はVirtualBoxはOracleの提供するOSSとなっている。MSのものではなくなっているのでVirtualBoxを試してみた。

ちょうどある程度管理環境の変わったCentOS7を使い始めてみたいと思っていた所、VMを作るためのソフトウェアが欲しかったので渡りに船だった。新しいマシンを用意する必要もないし。

最新版4.3.14はインストール後の最初の起動でエラーが出て起動に失敗し、使えない状態だった。ぐぐってみたところ、何やらセキュリティ向上のための工夫をしたためにうまく動かなくなっているらしい。俺の環境Windows7 64bit(Intel)という普通の環境なんだけどな……。Celeronにはインストールするな、ということなんでしょうか?

「一個前のバージョン4.3.12を使うとうまく動くよ」という情報を入手したので、入手。SourceForgeからダウンロード、インストールするとうまく起動しました。新しいVMを作成、インストールするOSの種類と32bit/64bit、VMファイルの保存先、スナップショットの保存先などを設定。CentOS7のインストールISOをJAISTから入手して、先ほどのVMのDVDドライブの接続先ファイルとして設定。

VMゲストの電源を投入すると普通にインストーラが起動しました。普通にインストールを続けていった所、CentOS7がインストールされました。結構これってお手軽でいいね。

Google End-To-EndとPGPによるメール暗号化 

ちょっと前になるけれどGoogleがEnd-To-Endを開発中であることを発表した。

End-To-EndはChromeとGmail用のOpenPGPによるメール暗号化プラグインであるとのこと。今まで有用であることが分かっていながら全く普及しなかったPGP/GPGを、ChromeとGmailがサポートすることで広く普及する可能性が出てきたわけだ。
いろいろな国の諜報機関が盗聴していたり、インターネットサービス提供会社に対してサービス用の秘密鍵を諜報機関へ渡すよう要求するなんてことが行われている。

日本人なのでこうしたことは国内ではあまり起きにくいと思っているのだけれど、マルウェアやら標的型攻撃やらで情報漏洩する可能性があるわけなので、諸々に備えて暗号化しておくことは有用だと思うわけ。

だから同じPGP/GPGを自分のメーラで利用してみようと思ったりしたのだけれど、BeckyってPGP/GPGプラグイン古! すっごい古い!  ナニコレ! うまく動くのかよ? ThunderbirdであればプラグインのEnigmailが鉄板のご様子。こちらはまあ大丈夫そうな雰囲気。Beckyどうしよう?

バッチファイルのif文がやっぱり腐っている話 

聞いて欲しい。
下記のバッチファイルは期待した"_2_"を出力せず、"__"を出力する。

set FOO=0
set BAZ=
if "%FOO%"=="0" ( set VAR=1 )
if "%VAR%"=="1" ( set BAZ=2 )
echo _%BAZ%_


何が悪いのか。この行

if "%FOO%"=="0" ( set VAR=1 )


の最後の')'の前のスペースがいけないのだ。なんと%VAR%の値は "1 "(1の後ろにスペースが入っている) になっている。
バッチファイルにはまともなif文も存在していないんだよ、勘弁してくれ!
仕方がないのでより安全な対策として、以下のように書くことにする。

if "%FOO%"=="0" (
set VAR=1
)


こう書けばごく当たり前に動作する。

set FOO=0
set BAZ=
if "%FOO%"=="0" (
set VAR=1
)
if "%VAR%"=="1" (
set BAZ=2
)
echo _%BAZ%_

なんでこんなMSDOSもさにあらんというようなチープ極まりない制限がメモリ4GBytesとか乗せているPC用のOSで残っているんだよ。本当、バッチファイルはどうかしている。

Windowsのバッチファイルは文法が腐りきっていてハマった 

Windowsのバッチファイルは文法が腐りきっていてハマったという話。

みんなWindowsバッチファイルなんか書かないだろうから簡単に説明すると、Windowsバッチファイルではif文は簡単に言うと以下の様な構成になる。

if "%VAR%"=="STRING" (
    文1
    文2
    :
)


なので、変数に値を代入して算術演算する以下の様な文を書いてみた。

set AAA=
set BBB=0
set VAR=STRING
if "%VAR%"=="STRING" (
    set AAA=10
    set /a BBB=%AAA%+20
)
echo %BBB%



このバッチファイルは期待される値30ではなくて20と出力します。10+20=20になるのです、意味が分かりません。
こんな短い文のどこに間違いが入り込む余地があるのかという位短いけれど、echo文を追加してバッチファイルの実行を追いかけてみると、set AAA=10 で値が代入されるのだけれど、次の行になると変数AAAの値が消え失せてしまうのだ。

で、ようやくto_dk notebookを見つけたのだけれど、とてもびっくりした。

バッチファイルではif文の()内の変数代入は、()から出た後に有効になる。

なん…だと…?
if文の()の中で代入した変数の値は、()の中で参照してはいけないという"仕様"と来たもんだ。これって、MSDOSの頃の貧弱なハードウェア上に実装しなければならなかったという制限のために、仕方なく我慢して作った仕様だよね。
その後ずっとほったらかしにしたままなんじゃねぇか、まともじゃないよ!

とにかくも正しく動作させるためには以下のように変更する必要がある。

set AAA=
set BBB=0
set VAR=STRING
if "%VAR%"=="STRING" (
    set AAA=10
)
set /a BBB=%AAA%+20
echo %BBB%


やれやれ、だからバッチファイルなんか書きたくないんだよ!

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。