void GraphicWizardsLair( void ); //を読んで確認した。
配布されている状態のmakehina-di.rbだとツッコミの投稿でも hina.di が更新されてしまう。 修正しないとな。
「WMI での Windows NT のログ イベントの収集」に書いてあるのはリアルタイム収集の例でさりげなく高度。
たまたまリソースキットのない環境だったので、記録されているイベントをタブ区切りで出力する スクリプトを作成した。 リソースキットの dumpel を使えばイベントログをテキストで持ってこれるらしいし、 Ruby邪道編が手元にあれば間違いなくActiveRubyScriptで書いていたんだが、 Web上のサンプルはVB系だらけだったためVBScriptになってしまった。 LogDate関数やCRLFcutter関数なんかRubyだったら間違いなく1〜2行のところが10行以上でとてもみずらい。
' WMIでやってくる時刻は YYYYMMDDhhmmss.xxxxxx+540 形式の文字列
' +540はタイムゾーンの事であろうが、とりあえず無視。
' イベントログに複数タイムゾーンで記録されることは多分ない。
Function LogDate(strValue)
Dim strYear, strMonth, strDay
Dim strHour, strMin, strSec, strMicroSec
strYear = Mid(strValue, 1, 4)
strMonth = Mid(strValue, 5, 2)
strDay = Mid(strValue, 7, 2)
strHour = Mid(strValue, 9, 2)
strMin = Mid(strValue, 11, 2)
strSec = Mid(strValue, 13, 2)
strMicroSec = Mid(strValue, 16, 6)
LogDate = CDate(strYear & "/" & strMonth & "/" & strDay & " " & strHour & ":" & strMin & ":" & strSec)
End Function
Function CRLFcutter(strValue)
Dim regEx
Set regEx = New RegExp
regEx.IgnoreCase = False ' 大文字と小文字を区別
regEx.Global = True ' 文字列全体を検索する
regEx.Pattern = "\s+$" ' 末尾の改行は削除
str2 = regEx.Replace(strValue, "")
regEx.Pattern = "[\r\n]+" ' 連続する改行文字を1つの \n に変換
CRLFcutter = regEx.Replace(str2, "\n")
Set regEx = Nothing
End Function
' Win32_NTLogEventの詳細は以下を参照
' http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_ntlogevent.asp
Sub DoWriteEvent(wherestr, ByRef Service)
Set NtLogEvents = Service.ExecQuery("Select * From Win32_NTLogEvent " & wherestr)
For Each ev In NtLogEvents
WScript.Echo LogDate(ev.TimeGenerated) & vbTab & ev.SourceName & vbTab & CRLFcutter(ev.Message)
Next
Set NtLogEvents = Nothing
End Sub
' **************** メインルーチン ここから ****************
Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer
' Set Service = Locator.ConnectServer("HogeMachine", , "Administrator", "password" ' リモートマシンに接続する時はこっち
Call DoWriteEvent("WHERE SourceName='MsiInstaller' AND LogFile='Application' AND TimeGenerated > '20030601'", Service)
Call DoWriteEvent("WHERE SourceName='W32Time' AND LogFile='System' AND TimeGenerated > '20030601'", Service)
Set Service = Nothing
Set Locator = Nothing
スクリプト化することで、特定の文字列が来たらメール出すような仕掛けはやりやすくなる。
個人的には漢字のフォントフェースには著作権はあって然るべきと思っています。 JISに制定されている文字全てをデザインするというのは並々ならぬ労力を伴うし、 楽しい作業じゃないと思うから。 英数ひらカタぐらいなら Just For Fun の範囲だと思うけど。
「英数ひらカタ+α」ぐらいでコンテストした結果、漢字全体のデザインに税金投入みたいなのがいいなあ。
あとクリエイターの権利は守られるべきだが、著作権の有効期限は特許と同じ20年が妥当ではないかと。 暗号技術のブレイクとRSA特許切れたのは関係オオアリと思うし。