SQLの窓 イラストAC フリー素材

2013年08月23日

なんらかの設定処理でレジストリのどこが変わったかチェックする



かなり昔からあるレジストリ比較アプリケーションである RegDiff は、コマンドラインから実行できるので、VBScript を使って自動で比較結果のテキストを作成できます。

アプリケーションのインストール情報は複雑すぎて、慣れた人でないとチェックできませんが、レジストリのエントリが一つだけならば、簡単に抽出できます(目的のヒントになるかもしれません)。

それでも、余計なデータはたくさんあるので、全く知らない人には無理です。もともと、使用する自信のある人のみが使えるアプリケーションです。

❶ Regdiff と同じディレクトリにこのスクリプトを置く

❷ まずは実行し、メッセージボックスが表示されたら(解りにくいのでタスクバーに注目して下さい)レジストリが変更されるであろう処理を行ってから、OK ボタンで処理を続行します。

❸ 最後に result.txt が作成されるので、その中の情報より必要な情報をチェックする事ができます( 中間ファイルは削除していますが、残したい場合は スクリプト内の DEL の部分を削除するかコメントにします )
Set WshShell = CreateObject( "WScript.Shell" )

Set Fso = CreateObject( "Scripting.FileSystemObject" )

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

k1 = "HKEY_CLASSES_ROOT"
k2 = "HKEY_CURRENT_USER"
k3 = "HKEY_LOCAL_MACHINE"

Call WshShell.Run( "regedit /e " & strCurPath & "\" & k1 & ".001 " & k1, , True )
Call WshShell.Run( "regedit /e " & strCurPath & "\" & k2 & ".001 " & k2, , True )
Call WshShell.Run( "regedit /e " & strCurPath & "\" & k3 & ".001 " & k3, , True )

MsgBox("処理後 OK で継続   ")

Call WshShell.Run( "regedit /e " & strCurPath & "\" & k1 & ".002 " & k1, , True )
Call WshShell.Run( "regedit /e " & strCurPath & "\" & k2 & ".002 " & k2, , True )
Call WshShell.Run( "regedit /e " & strCurPath & "\" & k3 & ".002 " & k3, , True )

Call WshShell.Run( "REGDIFF " & strCurPath & "\" & k1 & ".001 " & strCurPath & "\" & k1 & ".002 " & k1 & ".diff", , True )
Call WshShell.Run( "REGDIFF " & strCurPath & "\" & k2 & ".001 " & strCurPath & "\" & k2 & ".002 " & k2 & ".diff", , True )
Call WshShell.Run( "REGDIFF " & strCurPath & "\" & k3 & ".001 " & strCurPath & "\" & k3 & ".002 " & k3 & ".diff", , True )

Call WshShell.Run( _
	"cmd.exe /c copy " _
	& strCurPath & "\" & k1 & ".diff + "  _
	& strCurPath & "\" & k2 & ".diff + " _
	& strCurPath & "\" & k3 & ".diff result.txt", 0, True )

Call WshShell.Run( "cmd /c del " & strCurPath & "\*.001", 0, True )
Call WshShell.Run( "cmd /c del " & strCurPath & "\*.002", 0, True )
Call WshShell.Run( "cmd /c del " & strCurPath & "\*.diff", 0, True )

'Call WshShell.Run( """C:\Program Files\tpad092\TeraPad.exe"" result.txt", , True )


変更履歴
2008-10-17 : 初回投稿
2013-08-23 : VBScript 内容の修正( スクリプトのあるディレクトリの取得を追加 )



posted by at 2013-08-23 01:02 | VBScript | このブログの読者になる | 更新情報をチェックする

2013年07月31日

Windows 標準の CDO.Message で(GmailまたはYahoo!メールを使って)簡単にバッチ処理からメールを送る

SSL/465 で暗号化通信をします。
Gmail は、smtp.gmail.com
Yahoo メールは smtp.mail.yahoo.co.jp  ( アカウントは @ の前の部分 )
ファイルを添付する場合は、55行目の下に
Call Cdo.AddAttachment( "ファイルのフルパス" )
と追加します
HTML メールも送りたい場合は、
Cdo.HTMLBody = "HTMLの記述"
です
CC と BCC は、カンマで区切られた複数のアドレスを設定します
Cdo.CC  = """User 1"" , ""User 2"" "
関連する記事 VS2010(C#) : TKMP.DLL(3.1.2)を使った、メール送信テンプレート ▼ 2013-01-06 の記述( 但し、ソースコードは最新にしました ) 一時期 Windows で動かない事ががあったのですが、Windows7 の後継 OS も出たので久しぶりに使ってみたら普通に動きました。この記事の後半にあるダウンロードとソースコードは昔のものですが、動作するのでそのままおいて置きますが、今回新たにテストしたのはメールを送る機能に特化したスクリプトです。 このオブジェクトでは、パスワードの暗号化ができないので個人のメールアドレスでは無く、バッチ処理の結果ログを送る為のメールアドレスを作って運用するのが良い使い方です。 通信全体を暗号化できます ただ、Windows として過去の経緯からして必ず動くと保証できないので、basp21 や他の方法も視野にいれておくといいと思います。他の方法の一つとして、面倒ではありますが、PC に フリーのメールサーバーをインストールして、ユーザーとパスワードのいらない環境で PHP の mb_send_mail を使う方法があります。(過去記事 : PMail Server フリー版 をアプリケーションテスト用に設定 : 2009年6月の記事 ) バッチファイル
@echo off

cscript //Nologo mail.vbs "ここは 題名" "ここは 本文\nです。\n簡単なメッセージを送ります"
VBScript : mail.vbs
' ****************************************************
' 【 対象 : Windows XP 以降 】
' Ping を実行して応答が返って来たら、
' 指定アドレスにメールを送ります
'
' HTML メールは Cdo.Htmlbody を使用します
' "<PRE>" & strBody & "</PRE>" をセットすると
' 良いでしょう )
'
' 添付ファイルは 
' Cdo.AddAttachment( "添付ファイルへのパス" ) を実行します
' ****************************************************
strTarget = "192.168.1.1"

strFrom = "username@gmail.com"
strTo = "宛先"

strServer = "smtp.gmail.com"
nPort = 465
strUser = "username@gmail.com"
strPass = "パスワード"

' ****************************************************
' WMI による PING 処理
' 最大4回リトライ(正常なら1回)
' ****************************************************
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
bReply = false
For I = 1 to 4
	Set colItems = objWMIService.ExecQuery _
		("Select * from Win32_PingStatus " & _
			"Where Address = '" & strTarget & "'")
	For Each objItem in colItems
		if objItem.StatusCode = 0 then 
			bReply = true
			I = 4
			Exit For
		end if
	Next
Next

if bReply then
	strSubject	= strTarget & " は稼動中です"
	strBody = "よろしくお願いします"
else
	strSubject	= strTarget & " は問題があります"
	strBody = "調査をお願いします"
end if

Set Cdo = WScript.CreateObject("CDO.Message")

Cdo.From = strFrom
Cdo.To = strTo
Cdo.Subject	= strSubject
Cdo.Textbody = strBody

Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strServer
Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = nPort
Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true

Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
Cdo.Configuration.Fields.Item _ 
 ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPass

Cdo.Configuration.Fields.Update

on error resume next
Cdo.Send
if Err.Number <> 0 then
	strMessage = Err.Description
else
	strMessage = "送信が完了しました"
end if
on error goto 0

Wscript.Echo strMessage

ここから古い記事の部分



Windows XP 以降で実行可能です。
( Ping 部分 )
※ Mail 送信部分は Windows 2000 以降です。
' ****************************************************
' 【 対象 : Windows XP 以降 】
' Ping を実行して応答が返って来たら、
' 指定アドレスにメールを送ります
'
' HTML メールは Cdo.Htmlbody を使用します
'
' 添付ファイルは 
' Cdo.AddAttachment( "添付ファイルへのパス" ) を実行します
' ****************************************************
strTarget = "192.168.1.1"

strFrom = "xxxx@xxxxxxxxxx"
strTo = "yyyy@yyyyyyyyy"

strServer = "zzzzzzzzzzzzzz"
nPort = 587
strUser = "aaaa"
strPass = "????"

' ****************************************************
' WMI による PING 処理
' 最大4回リトライ(正常なら1回)
' ****************************************************
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
bReply = false
For I = 1 to 4
	Set colItems = objWMIService.ExecQuery _
		("Select * from Win32_PingStatus " & _
			"Where Address = '" & strTarget & "'")
	For Each objItem in colItems
		if objItem.StatusCode = 0 then 
			bReply = true
			I = 4
			Exit For
		end if
	Next
Next

if bReply then
	strSubject	= strTarget & " は稼動中です"
	strBody = "よろしくお願いします"
else
	strSubject	= strTarget & " は問題があります"
	strBody = "調査をお願いします"
end if

Set Cdo = WScript.CreateObject("CDO.Message")

Cdo.From = strFrom
Cdo.To = strTo
Cdo.Subject	= strSubject
Cdo.Textbody = strBody

Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strServer
Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = nPort

Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
Cdo.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
Cdo.Configuration.Fields.Item _ 
 ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPass

Cdo.Configuration.Fields.Update

on error resume next
Cdo.Send
if Err.Number <> 0 then
	strMessage = Err.Description
else
	strMessage = "送信が完了しました"
end if
on error goto 0

Wscript.Echo strMessage
関連する Microsoft ドキュメント

CdoSendUsing Enum

関連する記事

IE拡張メニューで取得したテキストをメールで送る(CDO.Message版)

更新履歴
初回投稿 : 不明
2013-01-06 : 部分変更
2013-07-26 : Gmail をベースにして、SSL/465 で暗号化処理
2013-07-31 : Yahoo でテストして、添付ファイル、HTMLメール、CC、BCC の使い方を追加


posted by at 2013-07-31 15:58 | VBScript | このブログの読者になる | 更新情報をチェックする

2010年08月19日

WMI プログラミングの友


WMI Query ( HTML アプリケーション )

WMI の情報を取り出すのは何をするにしても面倒ですが、これなら SQL を書く感覚で簡単に使えます。SQL ほど万能ではありませんか、思った情報にたどりつくのはさほど難しくは無いでしょう


●使用方法

 ・サーバーフィールドには対象のサーバー名を指定してください、
  空ならば自分のパソコンが対象になります

 ・クエリにはWQLを書いてください
  クエリ表示の中から選ぶことが可能です。また、クエリ内でWQLを記述することも可能です
  Ex) select * from Win32_Service where Caption like 'A%'
    でCaption項目にある先頭がAであるデータを参照します
  WQLについては下記URLを参照してください
  http://msdn.microsoft.com/en-us/library/aa394606.aspx

 ・ユーザフィールドにはサーバーのユーザ名を指定してください

 ・パスワードフィールドにはサーバーのパスワードを指定してください

 ・件数制限で表示する件数を指定できます

 ・リセットをクリックすると、クエリ内と表示をリセットします

 ・一覧をクリックすると、クエリによって参照されたデータを表示します。

 ・クリップボードをクリックすると、参照されたデータを元にテーブル形式(HTML)で
  クリップボードに保存します。
  htmの中に貼り付けたら参照されたデータのテーブルが作成されます
  excelの中に貼り付けることも可能です

●フリーズが発生したら

 タスクマネージャーを起動後、プロセスタブを選択し、
 「mshta.exe」を終了してください
posted by at 2010-08-19 00:00 | VBScript | このブログの読者になる | 更新情報をチェックする

2010年08月18日

RegDiff + VBScript : ほぼ全自動なレジストリ差分チェック

Regdiff4
RegDiff をダウンロードしてアプリケーションのインストール前後のレジストリの差分をチェックするスクリプト

以下のメッセージボックスが表示されてから、Windows に影響の出ると思われる処理をして、後は最後にメモ帳で差分が表示されます。

Regdiff2


こういう使い方するはずなので、単独で使う事はまず無いと思います

レジストリ差分作成 「RegDiff」概要


posted by at 2010-08-18 00:00 | VBScript | このブログの読者になる | 更新情報をチェックする

2010年08月02日

PHP + VBS 信頼してレジストリエディタを開くページ



レジストリのパスからその場所をレジストリエディタで開くスクリプトがダウンロードできます。つまり、自分のサイトに置けば、IE ならばそのまま開いて実行できます。( 自分自身は信頼できますからね )

http://toolbox.winofsql.jp/regopen.php

また、実際のフォルダも含めて、開くのに時間のかかる場所で有用なものを一覧にしているのが

超めんどくさいフォルダを開く

です。良かったら使ってみて下さい。

というか、ユーザーテンポラリフォルダはたまに削除しないとけっこうな容量になります。また、一度どんなファイルが作成されているかをチェックしてもるのもいいと思います。

ユーザのテンポラリ

また、こんなのもデスクトップのショートカットにして置いておくと便利だと思います

IEが最後にダウンロードしたディレクトリ


posted by at 2010-08-02 00:00 | VBScript | このブログの読者になる | 更新情報をチェックする

2009年10月28日

VBS : SQLServer : Microsoft.Jet.OLEDB.4.0を使った必殺技。Excelへ入出力


VBS : SQLServerよりExcel へエクスポート(Excel製品は必要ありません)


この方法は気がつきにくいんですが、とても便利です。SQLServer というよりも、Microsoft の
JET を中心として、SQLServer と Excel に外部リンクを動的に作る方法です。元々、Access の
外部リンクの仕様から来てるので、別々の DB 間で結合という結構とんでもない処理も可能です。

接続文字列の仕様はそもそも、DAO から来てまして、Access の SQL では in 句による外部
参照もありますが、こちらのほうが何でもありです。というか、Access で外部リンクを作成して、
システムテーブルの接続情報を見てもらうと解りますが、こうなってますので。

これ使うと、ODBC ドライバさえちゃんと作られておれば、Access の SQL で全ての DB と同時
結合やら select into やらできるので、運用する立場の人は泣いて喜ぶと思います。
で、この処理は10年以上前から使ってますが、ちゃんと書くのは初めてですね・・・そういえば。

Oracle はちょっとクセがあります。接続文字でユーザ(スキーマ) を指定しているにもかかわらず、
さらに修飾としてスキーマ名を続けないと、別スキーマで同一オブジェクト名があるとエラーになります。
どちらかというと、Microsoft の ODBC ドライバのほうが信頼感あります。Oracle に対するドライバ
は、Framework でも用意しているところから見ても、きちんと Microsoft の看板かかげてサポート
しています。昔は、精度のある列名でまともに動かなかったので、Oracle に対するいやがらせかいな・・・・
なんて思った時期もありました。現場でそういうトラブルは実際にありましたし。




SQLServer の OPENDATASOURCE 関数による Excel の参照


もう一つは純正接続で、外部のデータソースを見に行く方法です。
こちらは読み込むだけでせいいっぱいというか、デフォルトでは使え無い上に、
「できれば使わせたく無い」という主旨がミエミエのものになっていますが、
解る人ならすぐ使えます。でも、JET 使ったほうがいいと思いますけれど。




posted by at 2009-10-28 19:41 | VBScript | このブログの読者になる | 更新情報をチェックする

2009年10月23日

SQLite3:日本語販売管理データ(sqlite3のファイルと元データのMDBとコンバート用のスクリプト)



SQLite3 : 日本語販売管理データ



テーブル名 タイプ 作成 更新 件数   
1 V_商品一覧 VIEW 2005/09/13 1:50:36 2005/09/13 1:50:36 100
2 V_売上日付 VIEW 2005/09/13 1:50:36 2005/09/13 1:50:36 1
3 V_得意先台帳 VIEW 2005/09/13 1:50:36 2005/09/13 1:50:36 2463
4 V_社員一覧 VIEW 2005/09/13 1:50:36 2005/09/13 1:50:36 50
5 コード名称マスタ TABLE 2005/09/13 1:49:04 2005/09/13 1:49:04 17
6 コントロールマスタ TABLE 2005/09/13 1:49:04 2005/09/13 1:49:04 1
7 メッセージマスタ TABLE 2005/09/13 1:49:04 2005/09/13 1:49:04 13
8 取引データ TABLE 2005/09/13 1:49:04 2005/09/13 1:49:04 2463
9 商品マスタ TABLE 2005/09/13 1:49:04 2005/09/13 1:49:04 100
10 商品分類マスタ TABLE 2005/09/13 1:49:04 2005/09/13 1:49:04 29
11 得意先マスタ TABLE 2005/09/13 1:49:04 2005/09/13 1:49:04 50
12 社員マスタ TABLE 2005/09/13 1:49:04 2005/09/13 1:49:04 50
13 郵便番号マスタ TABLE 2005/09/13 1:57:58 2005/09/13 1:57:58 3715


以上のデータを同名のテーブルでカタログしています( db1.sqlite3 )
CREATE 文は、スクリプトの中にありますが、SQLServer の形式でテストして
そのまま動いていますが、NVARCHAR は VARCHAR( TEXT ) になるようです。

細かいテストはしていませんが、VARCHAR の桁指定も正しく動作しているようですし、
日付型も無いはずなのにそれなりに動いているようですが・・・・・






posted by at 2009-10-23 15:08 | VBScript | このブログの読者になる | 更新情報をチェックする

2009年10月19日

VBS : SQLExpress (SQLServer) 2005接続と通常処理


VBS : SQLExpress(SQLServer) 2005 接続と通常処理

SQLExpress は、SQLServerのフリー版( 旧MSDE )ですが、4G のサイズ制限とGUIツール類が殆ど無い事を除けば、とても快適に利用する事ができます。

但し困った事があって、それは、とても設定が解りづらい上に、Microsoft の純正ですから、OS と親和性が高く、それゆえに、プログラムからの利用方法のバリエーションがとても多い事です。

少なくとも純正接続と、ODBC 接続があつて、Java 等からでは ODBC でないと接続できませんし、プロトコルも、TCP/IP と 名前付きパイプがあって、接続オプションも信頼接続とかいろいろありますし・・・・

で、悩んでも仕方無いので片っ端から接続と処理サンプルを作ろうと思い、まずはVBScript です。



posted by at 2009-10-19 20:51 | VBScript | このブログの読者になる | 更新情報をチェックする

2009年10月06日

VBScript:IIS7の仮想ディレクトリ登録


VBScript : IIS7 の 仮想ディレクトリ登録


VistaのIISなんて使う事も無かったので知らなかったんですが、IIS6 と全く違うのでびっくり。
そもそも、IIS6 用に作ったIIS 仮想ディレクトリを作成する VBScript( WSH )がエラーになります。
XPが乗ってるPCの調子が悪いので、Vista を使ってるのですが、日々何かをするたびに、
問題が発生します・・・・

とにかくこの件はなんとかなりましたが、まだ未調査なものも。
で、元々 Vista に諦めてる人が多いせいなのか、結構情報少ないという感触です。

今日一つ解った事で、Rundll32.exe に渡す引数のファイルがカレントディレクトリのファイル
がXPで動いてたのが、Vista で動きませんでした。





posted by at 2009-10-06 21:44 | VBScript | このブログの読者になる | 更新情報をチェックする

2009年08月27日

パスが通るフォルダに置いて、コマンドとして利用できる、数メガの比較的小さなファイルをダウンロードするhttpget.vbs


WEBのファイルをコマンドラインからダウンロードするスクリプト : httpget.vbs ( 2〜3メガまでが目安 )


vbs をパスの通るディレクトリに置くというのはなかなか誰もやらないと思うのですが、コマンドが増えると思えば、内容によっては使ってみてもいいのでは無いのでしょうか。

それでも、既存の PATH 環境変数にあるディレクトリと言えば、windows のディレクトリだったりするので、避けたい気持ちは良く解ります。そういう場合は、専用のディレクトリを作って、そこに PATH を通せはいいのですが、これが一般的に言って面倒なはずです。

PATH 環境変数について知っていても面倒ですから、PATH 環境変数メンテナンス : Redmond Path という選択肢も微妙ではあります。で、最近作ったのがパッチ処理支援パッケージで、httpget.vbs のような自作コマンドをインストールできるディレクトリを作成して、PATH 環境変数にも自動登録してしまおうというものになっています。(スクリプトが存在するディレクトリをユーザ環境変数の PATH へ登録)

これからちょいちょいコマンド増やして行こうと思っています。転載が可能なフリーソフトなんかも、オンラインでインストールしたり、自作の exe や vbs や bat や hta なんかいっぱいありますので。インストールフォルダである、Program Files と同じドライブの laylaClass というディレクトリは、手書きブログのカスタムパレットツールで使用しているのですが、これはユーザさんとのやりとりで紆余曲折の上この場所になったので、vista でも比較的動作が信頼できる事を想定しています。
( vista のテストは常に一番最後ですけれど )


以下はファイルのダンプ中です( all vbscript )
Usercmd
laylaClass バッチ処理支援パッケージ 


とにかく、PATH が通ってる ユーザディレクトリがあると何かと都合のいい事が多いです。単純なフリーソフトならば、全部そこへコピーしてしまえば良いですし、PHP ですらそのままコピーしてしまうと、さらにコマンドの出来る幅が無茶苦茶増えます。

まず手始めに、今日調べたのはコマンドライン用のメール送信ソフトです。Basp21 でスクリプトを作成する手もあるのですが、パスワードがバレバレになるので、SMAIL 4.09 が良さそうです。検証は明日以降になりますが、ドキュメントや作者さんのHP 見た限りでは、ほぼ完璧なツールに思えますね。

コマンドラインで実行できるメールの用途は、一般的にバッチジョブのログや結果の通知です。業務でいろいろやる場合では欠かせないもので、これらの処理をできるかできないかでは会社レベルでの作業効率に雲泥の差がでます。多少無理してでも導入すべきですね。



posted by at 2009-08-27 20:15 | VBScript | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX