2013年07月11日


Twitter(API1.1) の投稿に関して、VS2010、VS2012、Android、VBScript、PHP の言語でサンプルを作成しました

posted by at 2013-07-11 21:22 | Comment(0) | HTTP | このブログの読者になる | 更新情報をチェックする

2010年08月17日


リダイレクトな、301、302、303、307

やりたいのは通常「ずっと変わります」です。

基本的には、301 でずっと、302で一時的です。
ただ、仕様的には4つを使い分ける事が可能になっています。

詳細を自分で確認するのはここがベストなようなのでリンクです。

こちらは現在消失しましたが、WEBアーカイブで見る事ができるとても詳しいページです

▼ 簡単な内容ならこちらから
HTTPステータスコード

.htaccess 的には、
Redirect permanent 前のURL 新しいURL

ですが、意味的に 新しいURL は、http:// で指定する事になると思います。
PHP では、以下のように実行します。

header( "Location: URL",TRUE,301 );

TRUE は、リダイレクトとは別の意味があります。
( FALSE を指定すると、同じ型の 複数のヘッダを強制的に生成します )

PHP: header - Manual


posted by at 2010-08-17 22:38 | Comment(0) | HTTP | このブログの読者になる | 更新情報をチェックする

2010年06月26日


VBScript : maglog 既存記事ページの取得

次に、投稿( 更新 ) するつもりです。
アップロードのフォーマットは調査済です。

とにかく死ぬほど重たいので、アプリでコントロールするようにと思っていますが、
それでもやはり重たいので、最終的には VB.net でスレッドにする必要があるかも
解りません( あまり長い場合は終了してリトライ )

この手の作業用のスケルトンを作ったので、そのテストも兼ねています。
なので、Function 部分はいずれ、ホスティングしてすっきりするつもりです
<JOB>
<COMMENT>
************************************************************
■ maglog 記事ページ読み出し

base : WEB アクセススケルトン( web_access.wsf )

■ 著作権その他

このプログラムはフリーです。どうぞ自由に御使用ください。
著作権は作者である私(lightbox)が保有しています。
また、本ソフトを運用した結果については、作者は一切責任を
負えせんのでご了承ください。
************************************************************
</COMMENT>

<OBJECT id="objHTTP" progid="Msxml2.XMLHTTP" />
<OBJECT id="Stream" progid="ADODB.Stream" />
<OBJECT id="Stream2" progid="ADODB.Stream" />
<OBJECT id="StreamBin" progid="ADODB.Stream" />
<OBJECT id="Fso" progid="Scripting.FileSystemObject" />

<SCRIPT language=VBScript>
' ***********************************************************
' 処理開始
' ***********************************************************
bDebug = False

user = "ユーザー"
pass = "パスワード"

strBlogName = "lightbox"
strArticleNo = "713301"

strTargetUrl1 = "http://maglog.jp/"&strBlogName&"/index.php?&module=Login&action=LoginDef"
strTargetUrl2 = "https://passport.vector.co.jp/passport/passport.php?p=VP_PROC_LOGIN_EXECUTE&f=VT"
strTargetUrl3 = "http://maglog.jp/"&strBlogName&"/index.php?module=Article&action=Edit&article_id="&strArticleNo

' 追加書き込み
Set LogFile = Fso.OpenTextFile( "web_access.log", 8, True )
LogFile.WriteLine( "処理を開始しました" )

' ***********************************************************
' (1) : GET
' ***********************************************************
Call objHTTP.Open("GET",strTargetUrl1, False)
Call objHTTP.Send()

strHeaders = objHTTP.getAllResponseHeaders()
LogFile.WriteLine( strHeaders & vbCrLf )
if bDebug then
	Wscript.Echo strHeaders
end if
Call WriteBinData("page1.htm", objHTTP.responseBody )


' ***********************************************************
' (2) : POST
' ***********************************************************
Call objHTTP.Open("POST",strTargetUrl2,False)
' POST 用ヘッダ
Call objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
strData = ""
strData = strData & "VP_UID="&user
strData = strData & "&VP_PW="&pass
Call objHTTP.SetRequestHeader("Content-Length",Len(strData))
Call objHTTP.Send(strData)

strHeaders = objHTTP.getAllResponseHeaders()
LogFile.WriteLine( strHeaders & vbCrLf )
if bDebug then
	Wscript.Echo strHeaders
end if
Call WriteBinData("page2.htm", objHTTP.responseBody )

' ***********************************************************
' (3) : GET
' ***********************************************************
Call objHTTP.Open("GET",strTargetUrl3, False)
Call objHTTP.Send()

strHeaders = objHTTP.getAllResponseHeaders()
LogFile.WriteLine( strHeaders & vbCrLf )
if bDebug then
	Wscript.Echo strHeaders
end if
Call WriteBinData("page3.htm", objHTTP.responseBody )


' ***********************************************************
' 処理終了
' ***********************************************************
LogFile.WriteLine( "処理を終了しました" & vbCrLf & vbCrLf )
LogFile.Close()
Wscript.Echo "処理が終了しました"
Wscript.Quit




' ***********************************************************
' ソース内テキストデータの取得
' ***********************************************************
Function GetMyText( strName )

	GetMyText = RegTrim(GetResource(strName))

End Function

' ***********************************************************
' 文字列前後の漢字スペースを含むホワイトスペースの削除
' ***********************************************************
Function RegTrim( strValue )

	Dim regEx, str

	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Pattern = "^[ \s]+"
	str = regEx.Replace( strValue, "" )
	regEx.Pattern = "[ \s]+$"
	RegTrim = regEx.Replace( str, "" )

End Function

' ***********************************************************
' ランダムな文字列
' ***********************************************************
Function Nonce( )

	Dim base_str,str,I,nLen,Random
	base_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	base_str = base_str & "abcdefghijklmnopqrstuvwxyz0123456789"

	nLen = Len(base_str)

	str = ""
	For I = 1 to 32
		Randomize
		Random = 1 + Int(Rnd * nLen)
		str = str & Mid(base_str,Random,1)
	Next

	Nonce = str

End function

' ********************************************************** 
' Unix タイムスタンプ 
' ********************************************************** 
Function UnixTimestamp( )

	UnixTimestamp = DateDiff("s", "1970/1/1 0:00:00",DateAdd("h",-9,now)) 

End Function

' ***********************************************************
' boundary 作成 ( Unix タイムスタンプ そのままでも可 )
' ***********************************************************
Function GetBoundary( )

	GetBoundary = "---------------------------" & UnixTimestamp()

End Function

' ***********************************************************
' バイナリデータの保存( 上書き )
' ***********************************************************
Function WriteBinData( strFile, BinData )

	Stream.Open
	Stream.Type = 1 ' バイナリ
	Stream.Write BinData
	Stream.SaveToFile strFile, 2
	Stream.Close

End Function

' ***********************************************************
' fromCharset を toCharset に変換して URLエンコード
' ※ 全ての文字をパーセントエンコーディングします
' ***********************************************************
Function URLEncode(str,fromCharset,toCharset)

	Stream.Open
	Stream.Charset = fromCharset
	Stream.WriteText str
	' コピーの為にデータポインタを先頭にセット
	Stream.Position = 0
 
	Stream2.Open
	Stream2.Charset = toCharset
	Stream.CopyTo Stream2
	Stream.Close

	' コピーの為にデータポインタを先頭にセット
	Stream2.Position = 0

	' バイナリで開く
	StreamBin.Open
 	StreamBin.Type = 1

	' テキストをバイナリに変換
	Stream2.CopyTo StreamBin
	Stream2.Close

	' 読み込みの為にデータポインタを先頭にセット
	StreamBin.Position = 0

	Buffer = ""
	if UCase( toCharset ) = "UTF-8" then
		StreamBin.Read(3)
	end if
	Do while not StreamBin.EOS
		LineBuffer = StreamBin.Read(16)
 
		For i = 1 to LenB( LineBuffer )
			CWork = MidB(LineBuffer,i,1)
			Cwork = AscB(Cwork)
			Cwork = Hex(Cwork)
			Cwork = Ucase(Cwork)
			if Len(Cwork) = 1 then
				Buffer = Buffer & "%0" & Cwork
			else
				Buffer = Buffer & "%" & Cwork
			end if
		Next
 
	Loop

	StreamBin.Close

	URLEncode = Buffer

End Function

' ***********************************************************
' 仕様を明確にする為に単純変換
' ***********************************************************
Function rfc3986_convert(str)

	Dim strResult,I,strWork

	strResult = str

	strResult = Replace(strResult,"%2D", "-")
	strResult = Replace(strResult,"%2E", ".")

	' 0〜9
	For I = &H30 to &H39
		strWork = Hex(I)
		strWork = "%" & Ucase(strWork)
		strResult = Replace(strResult,strWork, Chr(I))
	Next

	' A〜Z
	For I = &H41 to &H5A
		strWork = Hex(I)
		strWork = "%" & Ucase(strWork)
		strResult = Replace(strResult,strWork, Chr(I))
	Next

	strResult = Replace(strResult,"%5F", "_")

	' a〜z
	For I = &H61 to &H7A
		strWork = Hex(I)
		strWork = "%" & Ucase(strWork)
		strResult = Replace(strResult,strWork, Chr(I))
	Next

	strResult = Replace(strResult,"%7E", "~")
	
	rfc3986_convert = strResult

End Function
</SCRIPT>

<COMMENT>
************************************************************
 ソース内テキストデータ
************************************************************
</COMMENT>
<RESOURCE id="myTextData">
<![CDATA[
]]>
</RESOURCE>

</JOB>



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

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

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

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

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


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

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

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

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

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