ODBCのトレースログの出力はユーザ別かコンピュータ全体かに関わらず常にユーザ別

これに気づかずハマリにはまったのでメモ。

[すべてのユーザー ID のコンピューター全体のトレース]にチェックを入れれば[ログ ファイルのパス]に指定したファイルに全てのユーザのトレースログが出力されると思い込んでいたのですが、どうやら常にユーザ別のパスに出力されるらしい。

f:id:ymkn:20140224012532p:plain

どういうことかというと、ODBCを使ってDBアクセスを行うサービスservice_aをhoge_userというユーザで実行しているときに、メンテナンス用ユーザfuga_userでservice_aのODBCのトレースログを取得しようとして、fuga_userでODBC アドミニストレータを起動して上記画面の[すべてのユーザー ID のコンピューター全体のトレース]にチェックを入れ[トレースの開始]を押下しても、
[ログ ファイルのパス]に一切トレースが出力されない、という話。

どこにログが出ているのかというと、serivce_aを動かしているhoge_userの[ログ ファイルのパス]に指定された場所である。なんてこった。

[ログ ファイルのパス]は通常%TEMP%¥<数字>¥SQL.LOGとなっているので、そこを見に行けば良い。管理上場所を変更したい場合は、hoge_userでログインしてODBC アドミニストレータを起動し、[ログ ファイルのパス]を変更すれば良い。

hoge_userでログインできないときは・・

やっかいなのはhoge_userがサービス実行専用に設計されていて、デスクトップログインを許可していない場合。ODBCアドミニストレータの設定の実体は下記レジストリキーにある。

ユーザ別な設定: HKEY_CURRENT_USER\Software\ODBC\
グローバルな設定: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\

[ログ ファイルのパス]はユーザ個別の設定なので、HEKY_CURRENT_USERのほうにある。ただ、HEKY_CURRENT_USERは現在ログイン中のユーザのレジストリである。今回修正したいのはログインできないhoge_userのもの。HEKY_USERSからhoge_userのツリーを探す必要があるが、面倒なことにユーザ名ではなくSIDでツリーが分けられている。つまり、hoge_userのSIDを調べる必要がある。

下記サイトのようにして、HKEY_LOCAL_MACHINE以下のキーから各ユーザのSIDを推測し、目的の値を修正すれば良い。

参考:レジストリキーのSIDからユーザアカウントを識別する方法 | Tipstour

Android開発はじめました

普段の業務ではかすりもしないジャンルだけれど、いい加減無視し続けてもいられないモバイル開発。というわけでAndroid開発の勉強がてらアプリを作ってみることに。大変ローペースだけれども三日坊主はこえたっぽいので、非公開でつけていた開発日誌を公開にしてみる。

家族ToDo(仮)開発日誌

まずは動くものができるのを最優先に、コピペプログラミング上等でゆっくりやってます。

郵便局からの荷物を宅配BOXで受け取った際の確認電話を拒否する方法

確認電話を受けた際に、今後の連絡は不要である旨を伝えたところ了解してもらえた。
(それ以降、宅配BOXで受け取るような郵便物がないので、本当に連絡しない運用になったのかは不明であるが)

宅配BOXに入れた旨記載した伝票が郵便受けに入っているので、電話までしてフォローするのは過剰と感じるが(実際、ヤマトとか佐川はやらないし)、郵便局の顧客層を考えると致したがない運用なのでしょう。

ともあれ、このような個人的に重要度が低いと思っている電話が仕事中にかかってくると大変鬱陶しいので、同じような悩みを抱えている方はぜひおためしください。

自宅サーバのvSphere Hypervisor (ESXi) 5.0を5.5、6.0へアップデートした

アップデートの方法はいろいろあるが、次のような理由から今回は「esxcli」を使用する方法をとった。

  • Update Managerは導入していない
  • CD/DVDは簡単だが、サーバにモニタを繋ぐ必要があり却下*1
  • 対象ホストが1台のみであるため、スクリプトやAuto Deployによる自動化は大げさ

手順

  1. VMware vSphere」のダウンロードページから「VMware ESXi 5.5」を開き、zip形式のアップデートモジュール (ESXi Offline Bundle, VMware-ESXi-5.5.0-1331820-depot.zip) を入手する。「VMware vSphere Hypervisor (ESXi)」のダウンロードページからでは入手できないので注意。
  2. vSphere Clientを起動し、データストアにzipファイルを転送。「セキュリティプロファイル」からSSHとesxcliを起動する
  3. ゲストを全て停止し、メンテナンスモードに変更する。
  4. SSHクライアントを起動し、ESXiに接続。下記コマンドを実行してアップデートを適用する*2
  5. ESXiを再起動。メンテナンスモードから復帰させ、ゲストを起動する。
esxcli software vib install -d zipファイルのフルパス(相対パスだとダメ)

でOK。

さらに、JVN#13154935: VMware ESX および ESXi において任意のファイルにアクセス可能な問題脆弱性に対処するために、同様の手順でこのパッチも適用した。

2014/01/05追記

今下記サイトを見直して気づいたけど5.0.xから5.5へのesxcliによるアップグレードはサポート対象外っぽい(5.1.xからはOK)。今のところ特に問題なさげですが、今後試される方はCD/DVDあたりの方法をとるのが無難かもしれません。

http://pubs.vmware.com/vsphere-55/topic/com.vmware.vsphere.upgrade.doc/GUID-FE668788-1F32-4CB2-845C-5547DD59EB48.html

2016/06/05追記

最近5.5から5.5 Update 3に上げた。下記サイトを参考に、esxcli software profile updateで一発。事前にZIPをダウンロードする必要すら無かったのね。超楽ちん。

参考:VMware ESXi 5.5を5.5 Update2にアップデートする | 俺的備忘録 〜なんかいろいろ〜

esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-5.5.0-20150902001-standard

-pオプションに指定すべきImage Profile名は、各パッチのKBに記載がある。例えば今回の5.5から5.5 Update 3へのKBは下記。

VMware ESXi 5.5, Patch ESXi550-Update03: ESXi 5.5 Complete Update 3 (2110231) | VMware KB

2016/06/12追記

CentOS7を動かしたかったので6.0へアップデートした。

esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-6.0.0-20160302001-standard

6.0以降はvSphere Clientが使えなくなると思い込んでいたけどそんなことないのね。古いバージョンのvSphere Clientで接続したら、自動で適切なバージョンのClientがダウンロードできたよ。

*1:サーバ側がDVI-Iのみ、モニタ側がHDMIとRGBしかなく、これらを繋ぐケーブルがなかった・・

*2:このコマンドだと再インストールに近い形になるので、カスタムドライバを入れている場合は消えてしまうとのこと。参考:[VMware][備忘録] esxcliコマンドそれぞれ。そのようなケースでは「esxcli software profile update」が良いらしい。

作業効率優先ならThinkpad Bluetooth ワイヤレス・トラックポイントキーボード

家のPCのキーボードはMicrosoft Wedge Mobile Keyboardを使用していた。しかしながら、Microsoft Sculpt Touch MouseとWedge Mobile Keyboardの残念なところでも書いたように、ブログ書いたりプログラム書いたりなどキーボードを激しく使用するシチュエーションでは使いにくさを感じるのを否定できない。

というわけで作業効率重視でよいBluetoothキーボードを探したところ・・掲題のキーボードにたどり着いたというわけです。

f:id:ymkn:20131103220701j:plain

一般的なところについては世の中の人がすでにいろいろ書いてくれているので、個人的なポイントについて。

良かった点

  • 薄くて軽い! ザ・板という感じ。意外と所有感あり。素材はいつもの樹脂なので普通。
  • デフォルトでは、ファンクションキーはWindows8的機能が割り当てられていて、通常のファンクションキーとして動作させるにはFnキーとの同時押しが必要だが、この動作を切り替える機能がついているので良かった

悪かった点

  • 6列配列時代のThinkpadがベースなので、7列時代ユーザーとしては一部キー配置に違和感あり。ファンクションキーが全体的に左寄りなのと、PgDn・PgUpがカーソルキー隣にあって誤爆しやすい
  • Bluetoothモデルは、あくまでBluetoothキーボードとしてしか使えない。USB穴ついてますが単なる充電ポートである。USB版は別に出ているので、そちらを買うべし
  • 高い。1万2千円て。クーポンで5000円くらい割引あったみたいですが、知らずに定価で買ってショック

この記事もこのキーボードで書いてますが、やっぱり使いやすいですね。私の場合は仕事でThinkpad使ってるので身に染みついているというのもありますが。今後、家での作業はこれのおかけではかどりそうです。


US配列がいい人はこっち。

追記

書き忘れた。自分にとって意外な発見だったのだけど、チルトスタンドは立てない方が圧倒的に使いやすい。はじめ立てて使っていたら、自分の思った場所にキーがないことが多くてうまく打鍵できなかった。スタンドを閉じたら全て解決、不思議に思ったけどよくよく考えてみれば、Thinkpadは斜めになってないですからね。チルトスタンドを立てたことでキーボードに傾斜がついて、自分の体に染みついたキーの距離感が狂ったのでしょう。いやー。ここまで体が覚えているとは恐るべし、Thinkpad

アルミ+レザーの質感がGood! BluetoothスピーカーLuxa2 GROOVY

自宅のWindows8機のPCケースとしてAbee cubic E60を衝動買いしたのはAcer Aspire easyStore H340をWindows 8デスクトップ機に改造する (後日談) : 廃熱問題とRadeon HD 7750とSimCity - ymknの日記で書いたとおり。これで物欲に悩まされる日もしばらくは来るまい、そう思っていたわけですが、一ついいものを買うと周りのものも同じレベルに引き上げたくなるのが人の性。

というわけで買っちゃいました、BluetoothスピーカーLUXA2 Groovy Wireless Stereo Speaker

f:id:ymkn:20131102151315j:plain

Abee acubic E60のアルミの外観によく合う!*1 というかこっちの方が質感高い! 取っ手のレザーがまた映えます。

機能的には最近よく見る一般的なポータブルBluetoothスピーカーです(プロファイルは2.1+EDR)。バッテリー内蔵で連続再生3時間。充電にはUSBケーブルを使います(同梱)。Bluetoothだけじゃなくてステレオミニプラグでも入力可能。

マイクもついているので、PCでSkypeとかやる人にはいいかもしれないですね。ヘッドセットつけなくていいので快適そうです。私Skypeやってないのでレビューできませんが。

音質はまあそこそこな感じです。ちょっとこもり気味な印象。音とか詳しくないんであれですが。すくなくとも今まで聞いてたPCモニタ内蔵のオマケスピーカー2Wよりは遙かにいい音出てます。

まあ見た目は抜群にかっこいいです。そこですね。このスピーカーの価値は。ただ結構なお値段(私が買ったときは1万2千円くらい)なので、さらに人を選ぶ感じに思います。

あとこのLuxa2ってブランド、PCケースも作っているぽくて、Abeeより正直こっちの方がかっこいい。やっぱヘアライン加工重要ですよ。

*1:写真はMacbook Proですが

Microsoft Wedge Mobile KeyboardのFnキーを(擬似的に)ロックする

前回の記事でも書いたとおり、Microsoft Wedge Mobile Keyboardはファンクションキーのデフォルトの挙動がWindows8的なショートカットキーになっておりかつFnキーの押し下げ状態をロックすることもできないため、ファンクションキーを多用する人にとってはつらい仕様となっています。

で、なんとかならんかと試行錯誤した結果、AutoHotkeyを使うことで、擬似的にFnキーをロックしたような状態を作り出すことに成功しました。

これでFnキーを押さなくても、ファンクションキーを通常のファンクションキーとして使うことができるようになります。同じ悩みを持つものよ、レッツトライだ。

注意

正確にはFnキーをロックしているわけではなく、Fnなしで送られてきたファンクションキーの入力をフックして通常のファンクションキー入力に置換してWindowsに送り直す、ということをやっています。そのためAutoHotKeyが動いている間は置換しているWindows8的ショートカットキーは使えなくなります。

下記スクリプトではF9-F12についても上記の対応をしているので、PrnScn、Home、End、Pg Upキーも使えなくなります。好みで追加したり外したりしてください。

手順

1. AutoHotkeyをインストールする。
2. [Edit Script]メニューをクリックして開く「AutoHotKey.ahk」の内容を、下記の通りに修正する。

; Convert Windows 8 Function Keys Event To General Function Keys Event
; by http://ymkn.hatenablog.com/

Media_Play_Pause::F1
Volume_Mute::F2
Volume_Down::F3
Volume_Up::F4
$*#Q::
{
	Send, {Blind}{F5}
	return
}
$*#H::
{
	Send, {Blind}{F6}
	return
}
$*#K::
{
	Send, {Blind}{F7}
	return
}
$*#I::
{
	Send, {Blind}{F8}
	return
}
PrintScreen::F9
Home::F10
End::F11
PgUp::F12

3. AutoHotKey.ahkをスタートアップに登録する。


これでOK。もう見た目だけの残念な子なんて言わせない!