2014年10月1日水曜日

[他]複数のWebサーバからログをコピーする

負荷分散などでWebサーバが複数台あるシステムがあります。で、トラブル発生→ログ収集だ。となった時、いちいちファイルログファイルをコピーするのは非常に面倒です。ということで、Windowsマシンなら大体動作するVBScriptで、複数のサーバからログをコピーするスクリプトを作ってみました。 ログのコピーと言っても、大量になっちゃうので、当日を含む過去4日に更新されたタイムスタンプのもの。という縛りをつけてみました。

'-------------------------------------------------
' c:\temp\>cscript logcopy.vbs
'-------------------------------------------------
Option Explicit

'-------------------------------------------------
'ログ保存場所
Const COPY_DIR = ".\logs\"

'過去何日分か(過去3日分)
Dim TARGET_DATE: TARGET_DATE = DateAdd("d", -3, Date)

'-------------------------------------------------
'対象
'-------------------------------------------------
Dim WEB_SERVERS: WEB_SERVERS = Array( _
"192.168.1.1", _
"192.168.1.2", _
"192.168.1.3", _
"192.168.1.4", _
"192.168.1.5", _
"192.168.1.6")
Dim LOG_PATH: LOG_PATH = "\d$\mysystem\WebLog"


'-------------------------------------------------
'処理
'-------------------------------------------------
Call InitDir(COPY_DIR)

Dim server

' V5サーバのログコピー
For Each server In WEB_SERVERS
    Call CopyFiles(server, COPY_DIR & server, LOG_PATH)
Next


'-----------------
'ファイルコピー
'指定ディレクトリのファイルをコピーする
'-----------------
Sub CopyFiles(server, dest, targetPath)
    Dim path: path = "\\" & server & targetPath
    WScript.Echo "CopyFiles  path= " & path
    Call InitDir(dest)

    Dim objFso:Set objFso = CreateObject("Scripting.FileSystemObject")

    Dim objShell: Set objShell = CreateObject("Shell.Application")
    Dim objFolder : Set objFolder = objShell.Namespace(path)
    Dim objFolderItems: Set objFolderItems = objFolder.Items()
    Dim objItem
    Dim idx


    For idx = 0 To objFolderItems.Count - 1
        Set objItem = objFolderItems.Item(idx)

        If objItem.IsFolder = True Then
            Call CopyFiles(server, objFso.BuildPath(dest, objItem.Name), objFso.BuildPath(targetPath, objItem.Name))
        Else
           If IsCopyFile(objItem) = True Then
             Call objFso.CopyFile(objItem.path, objFso.BuildPath(dest, objItem.Name))
           End If
        End If

    Next

End Sub

'-----------------
'ファイルコピー判定
'過去N日分のファイルをコピーする
'-----------------
Function IsCopyFile(fileObj)

    If fileObj.ModifyDate >= TARGET_DATE Then
        IsCopyFile = True
    Else
        IsCopyFile = False
    End If

End Function


'-----------------
'ディレクトリがなければ作成
'-----------------
Sub InitDir(target)
    Dim objFso:Set objFso = CreateObject("Scripting.FileSystemObject")

    If objFso.FolderExists(target) = False Then
        objFso.Createfolder (target)
    End If

End Sub

2014年6月22日日曜日

[他]広告費を寄付しました

以前作ったAndroidアプリの広告費がPaypalへ振り込まれました。
ドル払いっていうのも一つの理由ですが、セルビアの話を聞いてそのまま振り込みました。

今回の広告費も微々たるものですが、また収益が上がったら寄付する予定です。
最近忙しくて更新が滞っています。また落ち着いた日々の疑問や発見を記録したいものです。

2014年5月24日土曜日

[他]WebAPIを疎通する

今どきのWebAPIは、Rest形式でかつGETで動作するため、ブラウザで簡単に疎通確認できます。
 しかし、SOAPなどPOST形式のI/Fもあります。これを、疎通するためにアプリケーションが必要になる場合があります。 また、テスト用のHTMLを置けないケースもあるでしょう。
 Windows環境において、インタフェースまでの通信経路に問題がないかを確認するためには、 VBスクリプトを使うのが気軽でよいです。でコードはこんな感じ。
Dim objXML
Dim intRet
Dim strURL
Dim strKey

strURL = "http://jlp.yahooapis.jp"
strKey = "sentence=%e7%a9%ba%e5%89%8d%e7%b5%b6%e5%be%8c"

MsgBox ("url=" & strURL)

MsgBox (strKey)

Set objXML = CreateObject("MSXML2.ServerXMLHTTP")
objXML.Open "POST", strURL, False
objXML.setRequestHeader "Content-Type", " application/x-www-form-urlencoded"
objXML.setRequestHeader "Content-Length", "length"
objXML.send strKey

intRet = objXML.Status
MsgBox ("stat=" & intRet)
MsgBox (objXML.responseText)
まぁ今どきはPS(パワーシェル)を使うんでしょうけど。。。

2014年4月20日日曜日

[他]windows8.1にADBドライバをインストールする

Windows8.1にadbドライバをインストールしようとすると、

「指定されたカタログファイルにファイルのハッシュがありません。ファイルが壊れているか、改ざんされた可能性があります。」

って出てきてドライバを設定することができません。

で、これを回避するためには、「ドライバー署名の強制を無効化」なる手続きをする必要があります。この手順がたいへんかったるいというか、google先生に聞いてもバージョンによって微妙に手順が異なり、簡単にはたどり着けません。

でも、世の中には面倒なことを2度としたくない人たちがいます。その面倒な処理をワンクリックで行ける用にしてくれるつーるがこちら。

15 seconds ADB Installer 

私のマシンでは15秒かかりませんでした。。。
唯一気になるのが、どこに何がインストールされたかよくわからない点。

とはいえ、XDAの人たち。すごいですねぇ。


2014年1月24日金曜日

[他]広告費を寄付しました

このページにある、広告(Google AdSense)の広告費が今日振り込まれました。
収益が支払可能になるまで約一年かかりました。
もらった広告費は、そのままユニセフに寄付しました。

広告費と言っても微々たるものですが、また収益が上がったら寄付する予定です。
ということで、安心して広告をクリックして下さい。