Win32OLEでインストール済みソフトウェア一覧を取得してみたよ
リーマンは時折無駄としか思えない人力作業を強制させられるときがあります。インベントリを人力で調べるなんて拷問ですよ。
ささっとvbsを書いて終わりのつもりだったのですが妙に遅い...半端ではない遅さ。
hostname = "remote_host" set locator = CreateObject("WbemScripting.SWbemLocator") Set wmi = locator.ConnectServer(hostname, "ROOT\cimv2", "user", "password") Set items = wmi.ExecQuery("Select * from Win32_Product",,48) For Each item in items Wscript.Echo "Caption: " & item.Caption Wscript.Echo "Version: " & item.Version Next
どうやら win32_productクラスがよくないようです。「win32_product slow」とググるとワンサカ出てきます。MSI経由で情報を取得するため、超がつくほど遅いようです。
インストール済みアプリケーションの情報取得はレジストリ経由の方が速そう。ただx86とx64のアプリケーションは別のレジストリで管理しているので注意が必要です。
require 'win32ole' require 'socket' module REG arch = ENV["PROCESSOR_ARCHITECTURE"] == "AMD64" ? x64 : "x86" UNINSTALLS = if arch == "x64" [ "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\uninstall", "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\uninstall", ] else [ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\uninstall", ] end HKEY_CLASSES_ROOT = 0x80000000 HKCR = 0x80000000 HKEY_CURRENT_USER = 0x80000001 HKCU = 0x80000001 HKEY_LOCAL_MACHINE = 0x80000002 HKLM = 0x80000002 HKEY_USERS = 0x80000003 HKEY_CURRENT_CONFIG = 0x80000005 HKEY_DYN_DATA = 0x80000006 end include REG # File activesupport/lib/active_support/core_ext/hash/keys.rb class Hash def symbolize_keys! keys.each do |key| self[(key.to_sym rescue key) || key] = delete(key) end self end end class Software def initialize(hostname = ".", opt = {}) wmi = conn_server(hostname, opt) @reg = wmi.Get("StdRegProv") end def conn_server(hostname, opt) locator = WIN32OLE.new("WbemScripting.SWbemLocator") if Socket.gethostname == hostname || "." == hostname locator.ConnectServer("." ,"root\\default") else locator.ConnectServer(hostname ,"root\\default", opt[:user], opt[:pass]) end end def each_subkey in_param = @reg.Methods_("EnumKey").InParameters.SpawnInstance_() in_param.hDefKey = REG::HKLM REG::UNINSTALLS.each {|key| in_param.sSubKeyName = key out_param = @reg.ExecMethod_("EnumKey", in_param) out_param.sNames.each {|subkey| yield key + "\\" + subkey } } end def each_products in_param = @reg.Methods_("GetStringValue").InParameters.SpawnInstance_() in_param.hDefKey = REG::HKLM self.each_subkey {|key| product = {} in_param.sSubKeyName = key %w(DisplayVersion DisplayName).each {|label| in_param.sValueName = label out_param = @reg.ExecMethod_("GetStringValue",in_param) product[label] = out_param.sValue.to_s } yield product.symbolize_keys! } end end
こういうのはWin32OLEで書くほうが楽しいです。こんなかんじで実行すればOK.
so = Software.new so.each_products {|h| next if h[:DisplayName].empty? p h }
暑すぎるのでLinuxで使えるパワフルなシステムモニタツールを並べてみた
今年は本当に暑いです。こんなに暑いとキーボードを叩く気分にならんですよ。コンソールで叩くやつだけを挙げておきます。
top
みんな大好きtopコマンド。
htop
みんな超好きhtopコマンド。
atop
個人的にあまり使うことがないatopコマンド。
nmon
AIXのtopasっぽくてあまり好きじゃないnmonコマンド。
slmon
ああ、あったね。slmonコマンド。
dstat
便利!dstatコマンド。
xentop
番外っぽいけど、Xenに付いているtopコマンド。たまに使う。
esxtop
これも番外っぽいやつ。esxiに付いているtopコマンド。おうちのesxiは消してしまったのでキャプチャ取れね。
月額380円の Wi2(ワイツー) 300を使ってみた
Docomo-Wifiが使えるエリアはまだまだ少なくて正直イライラしています。JR駅前のカフェで駅よりの席に座ると駅のWifiがギリギリつながり「ラッキー!」「すぐ切れやがる」という生活はもううんざりしてきたので、月額380円で使いたい放題の Wi2 を申し込みました。
今だとビックカメラ特典でなんと2ヶ月は無料だそうです。でもたかが760円ぐらい、馬券の買い目1点より少ないので、どうったことはないですけど。
http://www.biccamera.com/bicbic/jsp/w/service/wi2/index.jsp
まずは、近所の電源が使えるサンマルクカフェに行って、ベトナムコーヒーのLを頼んで、電源の席を確保して使ってみました。
http://www.musen-lan.com/speed/
380円にしては十分な速度だと思います。Wi2の自動接続サービスにLinuxがないのが悲しいですが、そこは手打ちか適当なスクリプトでも書いて対応したいと思います。
XenServer6.2で俺的にはほぼ完璧になった
ついに Xenserver 6.2 がリリースです。
http://www.xenserver.org/
http://sourceforge.jp/magazine/13/06/28/151500
OSS化されたXenServer 6.2は従来のXenServer Free Editionより高機能になっていて、従来は有償版のみで使えたHA, Dynamic Memory Control,Storage XenMotion等もフリーで使えます。
— Satoshi SHIMAZAKI (@smzksts) 2013, 6月 26
XenServer6.2がOSSになったことが理由なのか知りませんが、有償の機能だったHA(High Availability)やDMC(Dynamic Memory Control) も普通に使えるっぽいです。VMwareやHyper-Vではメモリバルーニングやダイナミックメモリは無償版でも普通に使えいたけどXenServerの無償版ライセンスでは使えなかったので、非常に嬉しいです。
私がXenServerを押している理由は、vCenterやSystemCenterのようなものを導入しなくても、ホストのどれか1つが統合管理(Control Domain)してくれるので、別途サーバを用意する必要がないというところです。無償で統合管理の機能があるので、VMテンプレートやライブマイグレーションも普通に使えます。だいたいはXenServerで事足りるのですが、メモリ管理だけは他の仮想化製品(無償版)と比べて若干の機能不足を感じていましたが、XenServer6.2でやっと無償でDMCが使えるので、これでほぼ完璧になりましたよ!!
無償版だと使えなかったDMCのタブの内容。
DMCはメモリの下限と上限を設定するだけ。
やったね!
Google Reader カウントダウン
ログインしてこの画面がでるとやっぱり悲しくなる。Googleリーダーってヘビーユーザーがたくさんいたと思うけど、そういう結果になるとGoogle依存な人も離れてしまうんではなかろうかと。
Googleノートブック、iGoogleなど、なんども痛い目をみた。だから僕はGoogleドライブやGoogle+は使わない。
情熱プログラマーを読んで
毎年、ゴールデンウイークに実家へ帰省すると、ゲーセンレトロゲームとラーメンの毎日になっちゃうので、今年こそはスタイリッシュにコメダ珈琲で読書をしようと考えていました。読んだのは「情熱プログラマー」です。
感想
この本では自分自身を製品と考え4つの側面から話を説明していました。
- 市場を選ぶ
- 製品に投資する
- 実行に移す
- 製品を売り込む
みんな当たり前のことだね。でもやっぱりこれを行うのは難しい。どんなに理にかなっていても、人間は弱いからやっぱり難しい。
愛せ、さもなくば捨てよ
(中略)...
有り余るほどの教育を受けながら期待はずれな働きしかできない同僚と、僕との違い。それは情熱だ。熱中できるかどうか。
彼らには自分がなぜIT分野にいるか自覚がなかった。彼らはコンピュータプログラミングをやっていれば良い給料がもらえそうだとか、親に勧められたからとか、大学でそれ以外の専攻科目を思いつかなかったっていう理由で進路を決めたんだろう。それが彼らのパフォーマンスにあらわれていたんだ。
うん、仕事はパッションだ。
休み明けはパッション3割増にする。
- 作者: Chad Fowler,でびあんぐる
- 出版社/メーカー: オーム社
- 発売日: 2010/02/26
- メディア: 単行本(ソフトカバー)
- 購入: 24人 クリック: 683回
- この商品を含むブログ (121件) を見る
NTT-X に DELL PowerEdge T320 登場
PowerEdge T320 : Front Bezel - YouTube
NTT-X に DELL PowerEdge T320 がついに登場しましたね。22,980円のようです。
http://nttxstore.jp/_II_DE14232807
スペックシートをみると、HDDのスロット8つ、メモリバンクも6つ。まったくもって素晴らしい。
http://www.dell.com/downloads/global/products/pedge/t320_spec_sheet.pdf
Processors | Intel® Xeon® processor E5-2400 product family Intel Xeon processor E5-1410 Intel Pentium® processor 1400 product family |
---|---|
Memory1 | Up to 192GB (6 DIMM slots): 2GB/4GB/8GB/16GB/32GB DDR3 up to 1600MT/s |
Embedded NIC | Broadcom® 5720 Dual Port 1Gb LOM |
CPUは Pentium 1400 Series というやつですがよく知りません。"メモリがたくさん搭載できるけどGPUはないCeleron G550" というイメージでいます。
http://ark.intel.com/ja/compare/67415,53418