CPUクロックの動的変更 

PCのCPUクロックっていうのは動的に変更する仕組みが入っているっていうのは知ってはいたけれども、自分が思っていたよりもずっと負荷状況に応じてリアルタイムに変更されるんだね。
Windows10のタスクマネージャを見ると、現在のCPUクロック(GHz)が表示される。これを眺めていると随分と簡単にクロック数が上下しているのが見てとれる。
大昔、PC-9801なんか、クロック数5MHzと8MHzの切り換えのために物理スイッチがついていたんだよなぁ。電源を切ってからでないと切り換えちゃ駄目な奴だった気がする。
随分と進歩したもんだ。

今年度も残り僅か、頑張るぜ 

今年度も残り僅かですが、年度末ともなると色々と仕事が立て込んでしまうものでやる気も50%OFF、トラブル発生率20%アップてなもんです。

でもまー、日頃の50%のやる気でもとにかく始めてしまえば仕事もこなせるわけですから、仕事を始めるところにその日の90%の努力と工夫をつぎ込んでいきたい次第でございます。いい感じにスタートできれば大抵の仕事はそつなくこなすことができるわけで、これも自分の日頃の積み重ねが活きているわけですよ。偉いなー、自分。

そういうわけで、仕事よりも仕事を始めることに90%の力を注ぐとして、それはうまくいったとしても、やはり季節の変わり目、ちょっと失敗すると暑すぎたり寒すぎたりと洋服のセレクションを間違ってしまうこともある訳です。そんなこんなで風邪などをひかないよう、栄養を無理矢理採ってこの年度末、年度始めの七面倒くさい時期を無事に乗り切っていきたい、そんな風に考える今日この頃であります。

CookieClicker Ver2 

CookieClickerがバージョン2にバージョンアップしました。色々な要素が追加され、BuildingやHeavenlyChipsのバランスが大幅に見直されています。
こんな感じ
キャプチャ
decillion cookiesってすげえな、10^30って事か?

Windows ServerのDHCPログが腐っている話 

Windows Server(ここでは2012ね)のDHCPサーバは、珍しくテキストファイルでログを出力する。これ自体はいいことで、イベントビューアのようなGUIでもCUIでも取り扱いの極めて面倒くさいログ形式ではないのは、腐ったガラクタの山の中にひと鉢の花が咲いているように感じられる。とはいえこれはMSがそうしたくてそうしたというのではないように思える。きっとどこかから持ってきた(フリーの)DHCPサーバソースコードを改造してWindows用のDHCPサーバにしたんじゃないだろうか、そしてログ出力部分までは書き換えるなかっただけではないだろうか。だから元々のテキストファイルへの出力ということになっているんではないだろうか。まぁ、どんな出自だろうがDHCPサーバは問題なく動作しているので、それはプログラムとして一番素晴らしいことではある。御託を並べてがたがた言うよりもきちんと動作してみせるのが一番いい。

しかしながらWindowsという腐りきったOSにおいては、テキストログといえどもマトモな形式ではない。生えているのは美しいバラの花ではなく、ジメジメした暗い場所に生える見た目の悪いゼニゴケだ。

なにせこのログファイル、ファイル名からして腐っている。

DhcpSrvLog-Mon.log
DhcpSrvLog-Tue.log
DhcpSrvLog-Wed.log
 :



という様にファイル名に曜日を含めて自動的に出力先ファイルを切り替えやがる。どうやってもログの保存期間は1週間を超えることができないではないか。何が嬉しくてこんな馬鹿な形式にしたんだよ。どうして1週間以上のログファイル保存は不要だと仕様で決めたのか、決めた奴の頭を叩いてやりたい。

せめてDhcpSrvLog-YYYYMMDD.logにしておけばいいだろうに。古いログを自動で削除することができないとかですか? それってあまりにヘボい理由だよね……

ログファイルの中身もヘボい。日本語で書いてあるのでスクリプトで処理するのが異常に面倒臭い。日本人だってログ出力に日本語を使うのなんてのは少ないぜ? 日立製とかのプログラムは日本語で出力するのかもしれないけれどさ、拝承。

中身はCSVなんだけど、カラムの並び順もおかしい。まずIDが出現する。IDというのはDHCPサーバで起きたイベントの種類を表すイベントIDなんだけど、どうしてこれを1番最初のカラムに持ってくるのか? 普通は日時だろ?
IDの次には日付、時刻がきて、その次にはいきなり説明だよ! どうして説明なんだよ!? フリーフォーマットの説明はさ、一番最後のカラムに持ってくればプログラムで処理しやすいし、テキストを人間の目で見た時にもカラムがずれにくくて見やすいのに、どうして前半に持ってくるのか?

次がIPアドレス、ホスト名、MACアドレスと来るんだけど、これもまずMACアドレス、次にIPアドレス、最後にホスト名とするべきじゃないのか? 感覚的にもそうだけれど、ホスト名が一番書式の自由度が高く、文字数が多くなったり少なくなったりするので、後ろに持ってきたほうが見やすくもなるのだ。
その後はよくわからないカラムが続く。トランザクションID、QResult、プロベーション時刻、相関ID、DHCID。そもそもここらへん具体的な説明はどこかに存在しているんだろうか? 妙なカタカナにしちゃうからよくわからないんだよな、日本人は"プロベーション"なんてカタカナ使わないぜ? カタカナだから英語ではどんな綴りなのかすぐにはわからないじゃないか。

もうちょっと運用するときのことを考えた作りにするのが当然だと思うのだが、Windowsだから仕方ない。いつだってこんな感じだし、これからだって改善されることはないだろう。だって奴ら、自分たちでは作って売るだけで、自分たちで運用しないんだもの。そういうところを改善する動機がないんだよな。

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%


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

最近Adobe Readerが暴走する件について 

最近複数台のPCでAdobe Readerが利用終了後、CPUコアを一つ使いきって暴走し続けているのを見つけた。
多分、最近のバージョンアップで出るようになったんだろうと思う。
症状だけ見ると、新バージョンのバグのようだけれども、どうなんだろう?