SQLの窓

2010年08月27日


JS : 正規表現置換基本テスト

HTML の記述そのものを、HTML 上で表現する為の文字列の置換のテストを
行う HTML( +JavaScript ) です。

※ /g で全て置換する事が解ると思います。
※ サンプルは、charset=euc-jp であることに注意してください





<html>
<head>
<META http-equiv="Content-type" content="text/html; charset=euc-jp" />
<title>JavaScript 正規表現置換基本テスト</title>
<script type="text/javascript">

function act_replace( ev ) {

	txt = document.getElementsByName("text")[0].value;

	txt = txt.replace( /&/g, "&amp;" );
	txt = txt.replace( /</g, "&lt;" );
	txt = txt.replace( />/g, "&gt;" );

	document.getElementById("area").innerHTML = txt;

}

function act_replace_no( ev ) {

	txt = document.getElementsByName("text")[0].value;

	document.getElementById("area").innerHTML = txt;

}

function act_replace_nog( ev ) {

	txt = document.getElementsByName("text")[0].value;

	txt = txt.replace( /&/, "&amp;" );
	txt = txt.replace( /</, "&lt;" );
	txt = txt.replace( />/, "&gt;" );

	document.getElementById("area").innerHTML = txt;

}

</script>

</head>
<body>

<textarea
	name="text"
	style='width:400px;height:100px;'
>&lt;input type="text"&gt;
&lt;input type="text"&gt;</textarea>
<br />
<input type="button" value="置換する" onclick="act_replace(event);">
<input type="button" value="そのまま" onclick="act_replace_no(event);">
<input type="button" value="g無し置換" onclick="act_replace_nog(event);">
<br />
<pre id="area"></pre>


</body>
</html>



posted by lightbox at 2010-08-27 15:44 | JavaScript 正規表現 | このブログの読者になる | 更新情報をチェックする

2010年08月12日


シャットダウンダイアログを開くスクリプトと、シャットダウンするスクリプト

シャットダウンダイアログを開くスクリプトが二つ、シャットダウンするスクリプトが二つです。

スクリプトと言っても、それぞれひとつづつはコマンドラインで実行するアプリケーションです。 shutdown は、リモートデスクトップで接続している PC をシャットダウンする場合に使用可能です。
これはもともとシャットダウンダイアログを開く為のメソッドを実行しているものです。この後、実際にシャットダウンするには、キーストロークを送る事によって可能です。
Set Shell = Wscript.CreateObject( "Shell.Application" )
Shell.ShutdownWindows()


タスクの強制終了のはずなのですが、エクスプローラは終了する前に確認ダイアログを表示する仕様になっているようで、結果的にひとつ前のコードと同じ動作をしてしまいました。エクスプローラの再起動は こちらのスクリプト で可能ですが、Windows が再起動するのでは無く、エクスプローラのみ再起動します
Set WshShell = Wscript.CreateObject( "WScript.Shell" )
Call WshShell.Run("taskkill /im explorer.exe", 0 )


コマンドプロンプトから実行可能なシャットダウン方法です
Set WshShell = Wscript.CreateObject( "WScript.Shell" )
Call WshShell.Run("shutdown -s -t 0", 0 )


スクリプトを用いた最も汎用的なサンプルです。他の定数を使用して、ログオフやリプートも可能です
Const LOGOFF = 0
Const SHUTDOWN = 1
Const REBOOT = 2
Const FORCED_LOGOFF = 4
Const FORCED_SHUTDOWN = 5
Const FORCED_REBOOT = 6
Const POWEROFF = 8
Const FORCED_POWEROFF = 12

strComputer = "."
Set objWMIService = GetObject("winmgmts:" & _
	"{impersonationLevel=impersonate,(Shutdown)}!\\" & _
	strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
	ObjOperatingSystem.Win32Shutdown(SHUTDOWN)
Next



posted by lightbox at 2010-08-12 17:51 | VBS + Shell | このブログの読者になる | 更新情報をチェックする

Seesaa の仕様変更で、SyntaxHighlighter の先頭行に <!-- MATCH SEESAA : NO FLOATING --> が入ってしまうので対処

こちらでは、shLegacy.js を使って、ページロード終了後では無く、その都度
ソースコードがロードされた直後で適用しているので、shLegacy.js の変更で
うまくいってますが、shLegacy.js を使って無い場合は、shCore.js の中の
highlight の中で実行する必要があると思います
var dp = {
	SyntaxHighlighter : {}
};

dp.SyntaxHighlighter = {
	parseParams: function(
						input,
						showGutter, 
						showControls, 
						collapseAll, 
						firstLine, 
						showColumns
						)
	{
		function getValue(list, name)
		{
			var regex = new XRegExp('^' + name + '\\[(?<value>\\w+)\\]$', 'gi'),
				match = null
				;
			
			for (var i = 0; i < list.length; i++) 
				if ((match = regex.exec(list[i])) != null)
					return match.value;
			
			return null;
		};
		
		function defaultValue(value, def)
		{
			return value != null ? value : def;
		};
		
		function asString(value)
		{
			return value != null ? value.toString() : null;
		};

		var parts = input.split(':'),
			brushName = parts[0],
			options = {},
			straight = { 'true' : 'true' }
			reverse = { 'true' : 'false' },
			result = null,
			defaults = SyntaxHighlighter.defaults
			;
		
		for (var i in parts)
			options[parts[i]] = 'true';

		showGutter = asString(defaultValue(showGutter, defaults.gutter));
		showControls = asString(defaultValue(showControls, defaults.toolbar));
		collapseAll = asString(defaultValue(collapseAll, defaults.collapse)); 
		showColumns = asString(defaultValue(showColumns, defaults.ruler));
		firstLine = asString(defaultValue(firstLine, defaults['first-line'])); 
		
		result = {
			brush			: brushName,
			gutter			: defaultValue(reverse[options.nogutter], showGutter),
			toolbar			: defaultValue(reverse[options.nocontrols], showControls),
			collapse		: defaultValue(straight[options.collapse], collapseAll),
			ruler			: defaultValue(straight[options.showcolumns], showColumns),
			'first-line'	: defaultValue(getValue(parts, 'firstline'), firstLine)
		};
		
		return result;
	},
	
	HighlightAll: function(
						name, 
						showGutter /* optional */, 
						showControls /* optional */, 
						collapseAll /* optional */, 
						firstLine /* optional */, 
						showColumns /* optional */
						)
	{
		function findValue()
		{
			var a = arguments;
			
			for (var i = 0; i < a.length; i++) 
			{
				if (a[i] === null) 
					continue;
				
				if (typeof(a[i]) == 'string' && a[i] != '') 
					return a[i] + '';
				
				if (typeof(a[i]) == 'object' && a[i].value != '') 
					return a[i].value + '';
			}
			
			return null;
		};

		function findTagsByName(list, name, tagName)
		{
			var tags = document.getElementsByTagName(tagName);
			
			for (var i = 0; i < tags.length; i++) 
				if (tags[i].getAttribute('name') == name) 
					list.push(tags[i]);
		}

		var userAgent = window.navigator.userAgent.toLowerCase();
		var appVersion = window.navigator.appVersion.toLowerCase();

		if (userAgent.indexOf("opera") > -1) {
			SyntaxHighlighter.all();
			return;
		}

		var elements = [],
			highlighter = null,
			registered = {},
			propertyName = 'innerHTML'
			;
		
		// for some reason IE doesn't find <pre/> by name, however it does see them just fine by tag name... 
		findTagsByName(elements, name, 'pre');
		findTagsByName(elements, name, 'textarea');

		if (elements.length === 0)
			return;
		
		for (var i = 0; i < elements.length; i++)
		{
			var element = elements[i],
				params = findValue(
					element.attributes['class'], element.className, 
					element.attributes['language'], element.language
					),
				language = ''
				;
			
			if (params === null) 
				continue;

			var str = element.firstChild.nodeValue;
			if ( str == ' MATCH SEESAA : NO FLOATING ' ) {
				element.removeChild( element.firstChild );
			}

			params = dp.SyntaxHighlighter.parseParams(
				params,
				showGutter, 
				showControls, 
				collapseAll, 
				firstLine, 
				showColumns
				);

			SyntaxHighlighter.highlight(params, element);
		}
	}
};



posted by lightbox at 2010-08-12 15:00 | 記録 | このブログの読者になる | 更新情報をチェックする
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 ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり