SQLの窓

2010年01月06日


VBS : FileZilla用誰にでも使える拡張子ランチャー

FileZilla Client 用に作りましたが、どこでも使えると思います。ただ、呼び出し方は wscript.exe の正しい位置をパスで指定して "" で囲う事が重要です

▼ 例
"C:\Windows\System32\wscript.exe" "C:\user\runext.vbs"



FileZilla は、設定したエディタで開くと、その開かれたファイルは監視されて更新されるとアップロードするかどうか聞いてきます。つまり、直接サーバーのファイルを更新するような作業ができます。ただ、エディタを一つしか指定できないので、このようなランチャーを登録してやると、テキストも画像も変更した後にすぐサーバへアップロードできます。また、複数開いても全て監視されるので、更新されたものが対象となります。とても便利です。
Set WshShell = WScript.CreateObject("WScript.Shell")

Dim aData,strExt,strExe
strExt = ""
aData = Split( Wscript.Arguments(0), "." )
if Ubound( aData ) > 0 then
	strExt = UCase( aData( Ubound( aData ) ) )
end if

' 拡張子別エディタ
if strExt = "JPG" then
	strExe = "MSPAINT.EXE"
	RunExt( strExe )
	Wscript.Quit
end if
if strExt = "JPEG" then
	strExe = "MSPAINT.EXE"
	RunExt( strExe )
	Wscript.Quit
end if
if strExt = "PNG" then
	strExe = "MSPAINT.EXE"
	RunExt( strExe )
	Wscript.Quit
end if
if strExt = "GIF" then
	strExe = "MSPAINT.EXE"
	RunExt( strExe )
	Wscript.Quit
end if

' デフォルトのエディタ
strExe = "C:\Program Files\tpad093\TeraPad.exe"
RunExt( strExe )

Function RunExt( path )

	WshShell.Run( """" & path & """" & " " _
		& """" & Wscript.Arguments(0) & """" )

End Function

関連する記事

FileZilla FTP クライアントのサーバー情報の引っ越し作業

WEB 上のファイルに使用できる文字と FileZilla





posted by lightbox at 2010-01-06 19:35 | VBScript | このブログの読者になる | 更新情報をチェックする

Firefox拡張のバージョン制限の直接書き換え

手書きブログのほうで、Firefox の拡張を使ったアプリケーション
を配布しているのですが、Firefox がバージョンアップする毎にそこだけ
変更してリリースしています。

これは、裏を返せばご自分で変更すれば済むという事でもあるのですが、
何せ面倒な処理です。でも、どうしても動かないものを動かせたい場合は
有効かもしれません。

1) まずバージョン制限が記述されている install.rdf をエディタで開く

エディタはなんでもいいのですが、そのフォルダが面倒くさい場所にあります。
以下のスクリプトで途中まで開く事ができます
ブラウザでダウンロード
開いた場所に、vt9dkllz.default というようにランダムな文字列を使用した
フォルダがあるのでその中に入ると、extensions というアプリケーション用
のフォルダがあり、さらにその中に個別のフォルダがあります。それぞれの
フォルダ内に install.rdf があるので、それをエディタで開きます。

2) <em:maxVersion>3.6.*</em:maxVersion> という記述を変更する

XML になっていますので数字のところだけを変更します。
上記記述ですと、3.6 は動きますが、3.7 では動きません


3) extensions.rdf を削除する

install.rdf を変更しただけでは、適用されません。
vt9dkllz.default 等のフォルダ内にある extensions.rdf
を削除して Firefox を再起動させます



関連する記事
めんどくさいフォルダを開く
【VBS】システムディレクトリを取得する為の Shell オブジェクトの壁



posted by lightbox at 2010-01-06 17:21 | Firefox | このブログの読者になる | 更新情報をチェックする

よくある理科実験(吊られた3つの金属球)ですが、びっくりしたので。

へえ・・・・


ちょっとおもしろかった。
後、鏡に映すと反対になるけれど、そうならない映し方。


#答え : L字型のあわせ鏡



タグ:うんちく
posted by lightbox at 2010-01-06 16:29 | 記録 | このブログの読者になる | 更新情報をチェックする

JUGEM で先頭から2件だけタイトルの下に広告を出す方法

この方法は、本来テンプレートが無く自由な位置に設置出来ない場合に、JavaScript を使って場所の移動を行って表示するものです。( その方法を使ってもいいかどうかは、広告を提供しているシステム側で確認しておく必要があります )

昔はこれでも良かった場合でも、最近はやはり固定位置に設置する必要があると思います。( JavaScript による方法は、間違ってクリックしてしまう可能性が大きいからです )

JUGEM は、有料版でないと広告を設置できないと思いますが、タイトルのような設置のテストを画像リンクでやってきました。
<div id="ad3" style='margin-left: 0px;margin-bottom: 25px;border: #a0a0a0 1px solid; padding: 8px; text-align: left'>
<table>
<tr>
<td valign=top>

<!--広告 : メイン -->
<a href="http://winofsql.jp" target="_blank"><img src="http://winofsql.jp/image/winofsql3.png" galleryimg="no" style='border-style:solid;border-width:1px;border-color:#000000' alt="HOME" title="HOME" /></a>

</td>
<td valign=top style='padding:20px;width:240px;'>

<div style='float:right;'>

<!--広告 : オプション -->

</div>

</td>
</tr>
</table>
</div>

<div id="ad4" style='margin-left: 0px;margin-bottom: 25px;border: #a0a0a0 1px solid; padding: 8px; text-align: left'>
<table>
<tr>
<td valign=top>

<!--広告 : メイン -->
<a href="http://winofsql.jp" target="_blank"><img src="http://winofsql.jp/image/winofsql3.png" galleryimg="no" style='border-style:solid;border-width:1px;border-color:#000000' alt="HOME" title="HOME" /></a>

</td>
<td valign=top style='padding:20px;width:240px;'>

<div style='float:right;'>

<!--広告 : オプション -->

</div>

</td>
</tr>
</TABLE>
</div>


<script type="text/javascript" charset="shift_jis">


try {
	var setTarget1 = 1;
	var setTarget2 = 2;
}
catch(e){}

try {
	var blogtxtbase,blogtxt;
	var baseDiv = document.getElementById("main");
	var len = baseDiv.getElementsByTagName("DIV").length;
	var len2,content_idx,content_idx2,content_cnt=0;
	for( content_idx = 0; content_idx < len; content_idx++ ) {
		if ( baseDiv.getElementsByTagName("DIV")[content_idx].className == 'entry_area' ) {
			content_cnt++;
			if ( content_cnt == setTarget1 ) {
				blogtxtbase = baseDiv.getElementsByTagName("DIV")[content_idx];
				len2 = blogtxtbase.getElementsByTagName("DIV").length
				for( content_idx2 = 0; content_idx2 < len2; content_idx2++ ) {
					if ( blogtxtbase.getElementsByTagName("DIV")[content_idx2].className = 'entry' ) {
						blogtxt = blogtxtbase.getElementsByTagName("DIV")[content_idx2];
						if ( document.getElementById("ad3") ) {
							blogtxtbase.insertBefore(document.getElementById("ad3"),blogtxt);
						}
						break;
					}
				}
			}
			if ( content_cnt == setTarget2 ) {
				blogtxtbase = baseDiv.getElementsByTagName("DIV")[content_idx];
				len2 = blogtxtbase.getElementsByTagName("DIV").length
				for( content_idx2 = 0; content_idx2 < len2; content_idx2++ ) {
					if ( blogtxtbase.getElementsByTagName("DIV")[content_idx2].className == 'entry' ) {

						blogtxt = blogtxtbase.getElementsByTagName("DIV")[content_idx2];
						blogtxtbase.insertBefore(document.getElementById("ad4"),blogtxt);
						break;
					}
				}
				break;
			}
		}
	}

}
catch(e){}

</script>

Seesaa は、複数のブログが作成できるので、何かあった時に一括対応できるように、設置する JavaScript 部分を外部にする仕様になっていますが、JUGEM では一か所に全て記述しています。

テンプレートによって動かない可能性はあります。



posted by lightbox at 2010-01-06 14:15 | 記録 | このブログの読者になる | 更新情報をチェックする

2010年01月04日


Seesaa で先頭から2件だけタイトルの下に広告を出す方法やその他の正攻法

この方法は、本来テンプレートが無く自由な位置に設置出来ない場合に、JavaScript を使って場所の移動を行って表示するものです。( その方法を使ってもいいかどうかは、広告を提供しているシステム側で確認しておく必要があります )

昔はこれでも良かった場合でも、最近はやはり固定位置に設置する必要があると思います。( JavaScript による方法は、間違ってクリックしてしまう可能性が大きいからです )

Seesaa では、独自タグによって、メインインデックス、記事、カテゴリ、アーカイブ毎に広告位置を変更する事ができます。JavaScript では無くそうした方法を取るほうが現在では推奨されます。

最も簡単な方法は、メインインデックスページの記事数を 1 にして、記事テンプレート内で固定にする方法です。こうしておけば、ページ内の広告数に制限があっても特に問題は出ません。

また、Seesaa では、メインインデックス と 記事の下に同一カテゴリ内に記事が2つ以上ある場合に表示されるセクションがあるので、先頭記事のみ記事の後に表示する事もできます。( この方法を使うと、メインインデックス と 記事で共通化できます。( 記事前に表示する場合はメインインデックスでは、全体 HTML で、記事では必ず記事は一つなので、記事テンプレート内で好きな場所です。)


▼ 以下は古い JavaScript のサンプルです
<div id="ad3" style='margin-left: 0px;margin-bottom: 25px;border: #a0a0a0 1px solid; padding: 8px; text-align: left'>
<table>
<tr>
<td valign=top>

<!--広告 : メイン -->

</td>
<td valign=top style='padding:20px;width:240px;'>

<div style='float:right;'>

<!--広告 : オプション -->

</div>

</td>
</tr>
</table>
</div>

<div style='margin-left:30px;margin-top:20px;margin-right:20px;'>
<div id="ad4" style='margin-left: 0px;margin-bottom: 25px;border: #a0a0a0 1px solid; padding: 8px; text-align: left'>
<table>
<tr>
<td valign=top>

<!--広告 : メイン -->

</td>
<td valign=top style='padding:20px;width:240px;'>

<div style='float:right;'>

<!--広告 : オプション -->

</div>

</td>
</tr>
</TABLE>
</div>
</div>


<script type="text/javascript" src="Seesaaにアップロードしたad.jsのURL" charset="shift_jis"></script>


以下は ad.js です
try {
	var setTarget1 = 1;
	var setTarget2 = 2;
}
catch(e){}

try {
	var blogtxtbase,blogtxt;
	var baseDiv = document.getElementById("content");
	var len = baseDiv.getElementsByTagName("DIV").length;
	var len2,content_idx,content_idx2,content_cnt=0;
	for( content_idx = 0; content_idx < len; content_idx++ ) {
		if ( baseDiv.getElementsByTagName("DIV")[content_idx].className == 'blogbody' ) {
			content_cnt++;
			if ( content_cnt == setTarget1 ) {
				blogtxtbase = baseDiv.getElementsByTagName("DIV")[content_idx];
				len2 = blogtxtbase.getElementsByTagName("DIV").length
				for( content_idx2 = 0; content_idx2 < len2; content_idx2++ ) {
					if ( blogtxtbase.getElementsByTagName("DIV")[content_idx2].className == 'text' ) {
						blogtxt = blogtxtbase.getElementsByTagName("DIV")[content_idx2];
						if ( document.getElementById("ad3") ) {
							blogtxtbase.insertBefore(document.getElementById("ad3"),blogtxt);
						}
						break;
					}
				}
			}
			if ( content_cnt == setTarget2 ) {
				blogtxtbase = baseDiv.getElementsByTagName("DIV")[content_idx];
				len2 = blogtxtbase.getElementsByTagName("DIV").length
				for( content_idx2 = 0; content_idx2 < len2; content_idx2++ ) {
					if ( blogtxtbase.getElementsByTagName("DIV")[content_idx2].className == 'text' ) {
						blogtxt = blogtxtbase.getElementsByTagName("DIV")[content_idx2];
						blogtxtbase.insertBefore(document.getElementById("ad4"),blogtxt);
						break;
					}
				}
				break;
			}
		}
	}

}
catch(e){}







Seesaa独自タグ簡易リファレンス

タグ:Seesaa 広告
posted by lightbox at 2010-01-04 19:23 | Seesaa プログ管理支援 | このブログの読者になる | 更新情報をチェックする

Ruby : Seesaa の複数のブログの現在の訪問者数とページビューの一覧

実際10以上作ってますが、良く使っているのは6つくらい。
でも、順番にアクセス解析見て行くのはとても面倒なので作りました。

以下のサンプルだけで言えば、ループ処理にできますが、
実際今後の運用では個別になると思うのであえてそのままです。

テストの為今日時々実行してみましたが、
※ さすがに混んでる時間帯はサーバーエラーになりますね

実際は、ひとつづつ CRON に登録して、ログを見るように
したほうが良いです。でないと、一つでもかなり待つ事になります。
#!/usr/local/bin/ruby
print "Content-type: text/html; Charset=shift_jis\n\n"

require "cgi"
cgi = CGI.new

ENV['GEM_HOME']="/home/lightbox/gems"
$LOAD_PATH.push('/home/lightbox/lib')

require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new
#seesaa にログイン
page = agent.get("https://ssl.seesaa.jp/www/pages/welcome/login/input")
form = page.forms.first
form["member__email"] = "メールアドレス"
form["member__password"] = "パスワード"
form.submit

print "<pre>"


# 対象ブログのページ
page = agent.get('https://blog.seesaa.jp/pages/my/blog/home/?blog_id=ブログ番号')
page = agent.get('https://blog.seesaa.jp/pages/my/blog/access_log/report/index?log_type=file')

/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
print "logical error   " +  $1 + "/" + $2 + "\n"

# 対象ブログのページ
page = agent.get('https://blog.seesaa.jp/pages/my/blog/home/?blog_id=ブログ番号')
page = agent.get('https://blog.seesaa.jp/pages/my/blog/access_log/report/index?log_type=file')

/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
print "ARGUS   " +  $1 + "/" + $2 + "\n"

# 対象ブログのページ
page = agent.get('https://blog.seesaa.jp/pages/my/blog/home/?blog_id=ブログ番号')
page = agent.get('https://blog.seesaa.jp/pages/my/blog/access_log/report/index?log_type=file')

/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
print "手パレ   " +  $1 + "/" + $2 + "\n"

# 対象ブログのページ
page = agent.get('https://blog.seesaa.jp/pages/my/blog/home/?blog_id=ブログ番号')
page = agent.get('https://blog.seesaa.jp/pages/my/blog/access_log/report/index?log_type=file')

/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
print "画狼   " +  $1 + "/" + $2 + "\n"

# 対象ブログのページ
page = agent.get('https://blog.seesaa.jp/pages/my/blog/home/?blog_id=ブログ番号')
page = agent.get('https://blog.seesaa.jp/pages/my/blog/access_log/report/index?log_type=file')

/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
print "琴線   " +  $1 + "/" + $2 + "\n"

# 対象ブログのページ
page = agent.get('https://blog.seesaa.jp/pages/my/blog/home/?blog_id=ブログ番号')
page = agent.get('https://blog.seesaa.jp/pages/my/blog/access_log/report/index?log_type=file')

/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
print "アプリ   " +  $1 + "/" + $2 + "\n"


print "</pre>"

print "最新アクセスリスト一覧"

#print page.body

/m は、. と \s に改行コードをマッチさせる為に使用しています。
( ページ全体を一つの文字列として処理 )




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

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

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

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

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


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

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

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

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

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



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり