フォト
2008年10月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

« 2006年6月 | トップページ | 2006年8月 »

2006.07.31

VBScript三昧

最近VBScriptとJavaScriptに凝ってます。(ってほどでもない気もしますが。。)
特にIEをコントロールしたり、mdbファイルを扱ってSQLを発行したりすることに

' Access_Tracker.vbs

Dim items(10)
Dim match, matchCol

' mdbファイルの指定
myMdbPath = "c:\work\Access_Tracker.mdb"

' 解析CGIのURL
targetUrl = "http://hpcgi2.nifty.com/XXX/trackerBlog.cgi"

Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate targetUrl
Do While IE.Busy Or IE.ReadyState<>4
WScript.Sleep 100
Loop

Set document=IE.document

document.loginForm.page.Value = "top"

' 最近のアクセスをチェック
document.loginForm.type(9).checked = true


document.loginForm.submit()

Do While IE.Busy Or IE.ReadyState<>4
WScript.Sleep 100
Loop

'デバッグ
'Set document=IE.document
'For Each item In document.All
'' 'WScript.Echo item.tagName
' If item.tagName = "HTML" Then
' WScript.Echo item.InnerHTML
'' WScript.Echo item.InnerText
' End If
'Next

Set tables = Ie.document.getElementsByTagName("TABLE")
' 3番目のテーブルのみ対象
Set targetTable = tables(2)

' mdb関連
Set objADO = CreateObject("ADODB.Connection")
objADO.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& myMdbPath &";"


For Each line In targetTable.getElementsByTagName("TR")
' 1アクセスの処理
Set tds = line.getElementsByTagName("TD")

' tdの要素を配列に入れる
index = 0

For Each td In tds
'WScript.Echo "(" & index & ")[" & td.innerHTML & "]"
If index = 0 Then
items(index) = td.innerText
Else
items(index) = td.innerHtml
End If

index = index + 1
Next

' 検索日付の取得
myDate = items(0)
' 曜日の部分を取り除く
Set regPattern = new RegExp
regPattern.Pattern = "(.*?) \(.*\) (.*)"
tmp = regPattern.Replace(myDate, "$1 " & "$2")
myDate = tmp
Set regPattern = Nothing

' キーワード解析
myQuery = items(6)
if Len(myQuery) > 0 Then
'WScript.Echo "[" & myQuery & "]"
' Google対応
Set regPattern = new RegExp
regPattern.Pattern = "A href=.*?google.*?/search.*?q=(.*?)\&"

Set matchCol = regPattern.Execute(myQuery)
If matchCol.Count > 0 Then
' Googleからのアクセスの場合

'WScript.Echo "[" & myQuery & "]"
Set match = matchCol(0)
tmpBuf = match.SubMatches(0)


regPattern.Pattern = "ie=Shift_JIS"
If regPattern.Test(tmpBuf) Then
' Shift JISの場合はそのまま
strSearch = tmpBuf
Else
With CreateObject("ScriptControl")
.Language = "JScript"
With .CodeObject
On Error Resume Next
strSearch = .decodeURI(tmpBuf)
End With
End With
End If

' +をスペースに変換
regPattern.Pattern = "\+"
regPattern.Global = true
tmp = regPattern.Replace(strSearch, " ")
strSearch = tmp

' %2Fを/に変換
regPattern.Pattern = "%2F"
regPattern.Global = true
tmp = regPattern.Replace(strSearch, "/")
strSearch = tmp

' " target=_blank>http://www.googleを削除する
regPattern.Pattern = "(.*)" & """" & " target=_blank>http://www.google.*"
tmp = regPattern.Replace(strSearch, "$1")
strSearch = tmp

'WScript.Echo "[" & tmpBuf & "]"
'WScript.Echo "<" & strSearch & ">@" & myDate

' mdbに登録
strSqlStmt = "INSERT INTO ACCESS_TRACKER (" & _
"search_date,search_key_phrase" & _
") VALUES (" & _
"'" & myDate & "'," & _
"'" & strSearch & "'" & _
")"
'WScript.Echo "strSqlStmt = " & strSqlStmt
' 重複エラーを事前のOn Error Resume Nextにより回避済み
objADO.Execute strSqlStmt

Else
' Google以外

End If
Set regPattern = Nothing
End If

Next

' 集計結果
On Error Goto 0
strSqlStmt = "select " & _
"search_key_phrase,count(*),sum(search_date) " & _
"from ACCESS_TRACKER " & _
"group by search_key_phrase " & _
"order by 2,3"

Set objADORS = objADO.Execute(strSqlStmt)

Do While Not objADORS.EOF
buf = ""
For i = 0 to objADORS.Fields.Count -1
buf = buf & objADORS(i) & vbTab
Next
WScript.Echo buf
objADORS.MoveNext
Loop

objADORS.Close
Set objADORS = Nothing

' mdbコネクションを切断
objADO.Close
Set objADO = Nothing


function URLDecodeHex(match, hex_digits, pos, source)
'URLDecodeHex = chr("&H" & hex_digits)
URLDecodeHex = "&H" & hex_digits
end function

2006.07.26

AppleScript入門

変数の代入

Set foo to value

Safari使いになる

do JavaScript "document.f1.submit()"

set myText to do JavaScript "document.getElementById('XbcShellBody').innerText" in front document

iモードのページを作る

do shell script "echo \"
" & quoted form of myText & "
\">/Volumes/" & iDiskPath & "/Sites/xboxlivefr.utf8"
try
do shell script "iconv -c -f UTF-8 -t SHIFT_JIS /Volumes/" & iDiskPath & "/Sites/xboxlivefr.utf8 >/Volumes/" & iDiskPath & "/Sites/xboxlivefr.html"
end try

2006.07.24

がーん

PostgreSQLのかなり大事なデータベースが崩壊中!

smartmemo2=# \d No relations found.

SELECT文でいくつかのテーブルは参照可能なので、救えるテーブルは救出中

昨日、ちょうどバックアップとろうとしたところ、
pg_dumpが

pg_dump: schema with OID 2200 does not exist

とエラーになったので、嫌な予感がしたが。。

日頃の行いか?

2006.07.20

やっと見つけた

先週から気になり探していた、Tigerで動くVRMLビュアー
がありました。

Spotlightで「vrml」と入れたらADCのメールが見つかり
そこからたどり着けました。

リンク: FreeWRL VRML/X3D Browser - UNIX & Open Source.

2006.07.18

BlenderがIntel Macに対応

ずいぶんまえから対応していたようですが、
正式?リリース版はこの2.42が初なのでは?

が、ここ2,3日探していたIntel Mac用のVRML2.0に対応
しているビュワーにはなりませんでした。
(VRML1.0対応でした。)

リンク: blender.org :: Blender.

2006.07.09

数年ぶりにMTを動かした

ロンドンモーターショー06】マツダ、ロードスタークーペ 出品!!

久々のMTに加え、多分RSなんてグレードだから、クラッチ
重めな設定な気がするし、とにかく左足がめちゃくちゃ疲れました。

が、峠を流すことを考えるとかなり惹かれるのですが、
23区内の運転を考えると、ATを選ぶしか。。

で、以前BMWの2.2のZ4が発表前には見積もりも
普通にもらえたのですが、今回お邪魔したディーラーでは
あと1ヶ月くらいしないと情報が流れてこないとのことで。

ぜんぜん、交渉は進みませんでした。

リンク: マツダ車お取り扱い販売店 【関東マツダ 方南町店】.

2006.07.04

昔のペースではないですが

Using the QTKit Framework.

少しずつIntel版 Mac miniでCocoaを試す今日この頃。

asashi-net方面の読者様向けの解説:
度々のご訪問ありがとうございます。

この、Mac miniって、向き合い方が微妙なマシンなんです。

例のGWの件のメールの大半を
こいつでやり取りしてました。

連休直前に手元に届き、幸先の良いOKメールの受信を
しましたが、速攻でNGメールも受信してしまいました。

エビデンスメールを保管しております。
機会があれば、後学のためご教授願います。なんちゃって。

« 2006年6月 | トップページ | 2006年8月 »

ようこそ!




  • ブログパーツ


ブログ:ココログ