Windows

謎のウイルス検知が止まらない

Windows では WDS (Windows Desktop Search) を使ってメール、その他を検索している。*1 ある日、トロイの木馬を添付したメールを受け取った。 すると翌日から NOD32 (アンチウイルスソフト) が毎朝ウイルスを検知するようになった。おそらく POP からメール…

IronRuby を使ってみた

仕事で C# を使うことになったので「Ruby on Windows」を見ながら RubyCLR を試してみた。ところが Ruby 1.9.1 に対応していないらしく、require すると SyntaxError が出る。 case when: ... when の : をひたすら ; に置換するなどした。それでも activesu…

Excel をもっと Ruby らしく使いたい

Excel のワークシート名をまとめて取ろうと思った。 require 'win32ole' excel = WIN32OLE.new 'Excel.Applicatin' at_exit{excel.Quit} book = excel.Workbooks.Open 'sample.xls' book.Sheets.map(&:Name) # ~> -:10:in `method_missing': unknown propert…

メモリ不足ではまった

WIN32OLE を使ってタイプライブラリからオブジェクトをもらうテストをしていた。オブジェクトをくれる関数には 8 個の引数があり、その組み合わせは全部で 7290 通り。 arg1 = [0, 1, 2] arg2 = [false, true, nil] ... arg1.product(arg2).product ... 引数…

タイプライブラリから配列を受け取る方法

WIN32OLE を使ってタイプライブラリから配列を受け取りたい。配列を retval で返してくれる関数なら、Ruby からそのまま Enumerable として扱える。 ole_object.func(arg1, arg2).each do |value| # func が返した配列を順番に処理 end ところが、関数に渡さ…

WIN32OLE で使える VARIANT_NAME

常識的なタイプライブラリを使っていると必要ないが、設計のよろしくないタイプライブラリを使うと引数の型をいちいち指定してやらないと関数を呼べないことがある。optional な引数を飛ばして次の引数を指定する場合など。 require 'win32ole' include WIN3…

irb を使ってタイプライブラリを対話的にデバッグ

Microsoft Visual Studio から irb を起動したい。「プロジェクト」-「プロパティ」-「構成プロパティ」-「デバッグ」で設定する。 コマンド d:\Cygwin\usr\local\bin\ruby19.exe コマンド引数 -rwin32ole /usr/local/bin/irb19 Ruby は Cygwin 版 野良ビル…

タイプライブラリのメソッドのシンタックスを調べる

内容は「Win32OLE ことはじめ」から、そのままパクッただけなんだけど。 class WIN32OLE_METHOD def help "#{name}(#{__help_params__.join(', ')}) As #{return_type}" end private def __help_params__ params.map do |p| "#{'[in]' if p.input?}"\ "#{'[o…

irb から WIN32OLE を使うときのおまじない

WIN32OLE を使って Excel のファイルを開いているときに、うっかり irb を終了すると Excel のプロセスが残ってしまう。そこで、このおまじない。 $ irb -rwin32ole irb(main):001:0> excel = WIN32OLE.new 'Excel.Application' => #<WIN32OLE:0x1014ecd0> irb(main):002:0> at_ex</win32ole:0x1014ecd0>…

Microsoft のサポートが素晴しすぎる件

父の使用している PC が「Windows Vista に SP1 を当てると再起動を繰り返す」という罠に嵌った。 Vista SP1のインストールに失敗、起動できなくなりました 上記 URL のような現象になる。「システムの復元」を試みるも「権限がない」というようなエラーで失…

Autorun の禁止チェッカー作ってみた

USB メモリを介して感染するウイルスが流行っているらしく、Microsoft からも対策か公開されている。 Windows で "Autorun レジストリ キーの無効化" の強制を修正する方法 指示通り対策はしたものの、本当にこれで大丈夫なのか不安。 確認する方法はないも…

ダウングレードを検討

Mac mini がリニューアルしたのでポチッとした。 そして、ふと「Intel Mac だから Windows も動くんじゃね?」と思った。*1 そうすれば今使ってる ThinkCentre も処分できるし。Windows Vista は人気がないみたいなので、Windows XP をインストールしたい。 …

WIN32OLE の例外は ASCII-8BIT

本格的に Ruby 1.9.1 に移行してみようと、仕事で使ってるユニットテストを動かしてみた。エンコード絡みのエラーが頻発。 Encoding::CompatibilityError: incompatible character encodings: Windows-31J and ASCII-8BIT もちろんスクリプトは CP932 で書い…

エンコーディングのつづき

ありがたいことに成瀬さんからコメントを頂いたので昨日の続き。 エンコーディング 結論から言うと、コメント頂いた通り、スクリプトを Windows-31J で書けば、何も迷うことはありません。環境変数 LANG が ja_JP.SJIS なのは間違ってるけど、Encoding.defau…

エンコーディング

Ruby 1.9.1 のエンコーディングをいろいろ試してみる。 #!/usr/local/bin/ruby19 # -*- coding: shift_jis; -*- RUBY_VERSION # => "1.9.1" ENV['LANG'] # => "ja_JP.SJIS" __ENCODING__ # => #<Encoding:Shift_JIS> Encoding.default_external # => #<Encoding:Windows-31J> Encoding.default_internal</encoding:windows-31j></encoding:shift_jis>…

VisualStudio のデバッグビルドではまった

あるライブラリを使おうとヘッダファイルを include したら、意味不明なエラーが出た。 (×) 1 error C2059: 構文エラー : '文字列' (×) 2 error C2091: 関数は関数を返せません。 (×) 3 error C2802: 静的なメンバ 'operator new' に仮引数リストがありませ…

日本語 Windows で英語キーボードを使えるようにする

職場で WindowsXP + Office 2003 のテスト環境を使うことになった。VMWare のイメージファイルを受け取って作業を始めると、キーボードが日本語 106/109 になってることに気が付いた。(私が使ってるのは英語キーボード) いつものように [HKEY_LOCAL_MACHINE\…