2003-06-19 863歩

λ [tDiary] makehina-di.rb プラグインの仕様

void GraphicWizardsLair( void ); //を読んで確認した。

配布されている状態のmakehina-di.rbだとツッコミの投稿でも hina.di が更新されてしまう。 修正しないとな。

λ [Windows] WMI による Windows の管理

「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特許切れたのは関係オオアリと思うし。

本日のTrackBacks(全2件) []
λ システム管理な雑記 -- Sleeve notes of a sysadmin --:メモ: スクリプトによるイベントログの加工 (2004-06-18 12:50)

メモ: スクリプトによるイベントログの加工

λ システム管理な雑記 -- Sleeve notes of a sysadmin --:メモ: スクリプトによるイベントログの加工 (2004-06-18 12:50)

メモ: スクリプトによるイベントログの加工