SQLの窓

2014年05月29日


ドロップシャドウ / フリーフォントで簡単ロゴ作成

フリーフォントで簡単ロゴ作成に、ドロップシャドウ関連の機能補強を行いました。

以前までのドロップシャドウ





テキスト全体を少し薄く表現していましたが、他の機能との連携に必要なので、100% の濃さでテキストを表示するようにしました。

テキストが 100% の濃さのドロップシャドウ





さらに、今まではドロップシャドウの色をテキスト色に合わせていましたが、オプションとして常に黒くできるようにしました。

シャドウ色を常に黒くする





また、文字枠を使いながら、影を付加させる為に影の位置を補正できるようにしました

シャドウの位置を補正する





文字枠の補正にマイナスを指定できるようにしたので、文字をもう一つ複製したような表現が可能になりました。

三重シャドウ





フリーフォントで簡単ロゴ作成で上の画像を再現する

文字枠と背景色を同じにして、ドロップシャドウを調整すると以下のような表現も可能になりました





posted by lightbox at 2014-05-29 23:59 | WEBサービス | このブログの読者になる | 更新情報をチェックする

2014年05月27日


PHP : PDO のエラー処理

概要

PDO エラー処理には3通りあります。

(1) DO::ERRMODE_SILENT
最初はその名の通り、エラーが起きてもなにも起こりません。そのまま実行されますが、エラー情報は設定されていますし、戻り値も正しく返ります。一番簡単でバグさえなければ問題は発生しにくいですが、複雑な問題を確認する為には戻り値とメッセージを常に確認して正しいエラー処理を行う必要があります

(2) PDO::ERRMODE_WARNING
二つ目は、さらにPHPの通常のエラーメッセージを出力させるようにしたバージョンです。初期段階のデバッグに有効です

(3) PDO::ERRMODE_EXCEPTION
三つ目は、try 〜 catch を使うようにしたものですが、慣れていないと扱いは少し難しくなります。しかし、例外によりスクリプトが終了した際には、トランザクションは自動的に ロールバックされるそうです。

前者でどうなるかは未確認ですが、業務アプリケーションならばこちらを選択したほうが良いでしょう。個人の一般の WEB アプリならばそこまで神経質になる必要は無いと思いますので、デフォルトの ERRMODE_SILENT で良いと思います
<?php
$strDriver = "{SQL Native Client}";
$strTarget = "NIGHT_TCP";	// 別名
$strDB = "lightbox";
$strUser = "sa";
$strPass = "passwordpassword";

// **********************************************************
// 接続
// **********************************************************
$Cn = new PDO(
	"odbc:Driver=$strDriver;Server=$strTarget;" .
	"Database=$strDB;Uid=$strUser;Pwd=$strPass;");

	// デフォルトエラーモード
	$Cn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );

	// 存在しない列を更新
	$Query = "update [社員マスタ] set [生年月] = '2005/01/01'";
	$Query .= " where [社員コード] = '0001'";
	$ret = $Cn->exec( $Query );
	if ($ret===false) {
		print_r( $Cn->errorInfo() );
	}


	// エラー表示( デバッグに有効 )
	// 抑制する場合は、@$Cn->exec( $Query );
	$Cn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

	// 存在しない列を更新
	$Query = "update [社員マスタ] set [生年月] = '2005/01/01'";
	$Query .= " where [社員コード] = '0001'";
	$ret = $Cn->exec( $Query );
	if ($ret===false) {
		print_r( $Cn->errorInfo() );
	}

	// try catch 用
	$Cn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

	// 存在しない列を更新
	$Query = "update [社員マスタ] set [生年月] = '2005/01/01'";
	$Query .= " where [社員コード] = '0001'";
	try {
		$ret = $Cn->exec( $Query );
	}
	catch( PDOException $e ) {
		print $e->getMessage();
	}

$Cn = null;

?>



タグ:PDO PHP
posted by lightbox at 2014-05-27 17:25 | PHP + データベース | このブログの読者になる | 更新情報をチェックする

2014年05月23日


VBScript(WMI)によるイベント関数を WMI に登録するタイマー処理

VBScript(WSH) の WScript.CreateObject では、作成したオブジェクトのイベントを受け付ける関数を定義する事ができます。過去、ほとんどそのようなサンプルは現実には無かったのですが、WMI では少なくともタイマー処理として利用可能です。

CreateObject メソッドで strPrefix 引数を指定すると、接続されたオブジェクトが作成されます。これは、オブジェクトのイベントを同期させる場合に便利です。オブジェクトの出力インターフェイスは、オブジェクト作成後にスクリプト ファイルに接続されます。イベント処理関数は、このプリフィックスとイベント名を組み合わせた名前になります。オブジェクト作成時に strPrefix 引数を指定しなかった場合は、ConnectObject メソッドを使ってオブジェクトのイベントを同期させることができます。オブジェクトがイベントを発行すると、WSH は strPrefix + イベント名という形式の名前を持つサブルーチンを呼び出します。たとえば、strPrefix が MYOBJ であり、オブジェクトが OnBegin というイベントを発行した場合、Windows Script Host はスクリプト内の MYOBJ_OnBegin という名前のサブルーチンを呼び出します
タイマー処理
' ********************************************************************
' このセクションは、cscript.exe で処理を強制させるものです
' ********************************************************************
str = WScript.FullName
str = Right( str, 11 )
str = Ucase( str )
if str <> "CSCRIPT.EXE" then
	str = WScript.ScriptFullName
	Set WshShell = CreateObject( "WScript.Shell" )
	Call WshShell.Run( "cmd.exe /c cscript.exe """ & str & """ & pause", 3 )
	WScript.Quit
end if

' ********************************************************************
' 秒単位のログを表示するかどうかのフラグです
' ********************************************************************
Dim Disp : Disp = True	' False にすると、秒単位の表示はしなくなります

' ********************************************************************
' WMI のイベントの定義
' ********************************************************************
Set SINK = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
objWMIService.ExecNotificationQueryAsync _
 SINK, _
 "SELECT * FROM  __InstanceModificationEvent " & _
 "WHERE TargetInstance ISA 'Win32_LocalTime'"

Wscript.Echo "タイマー処理を開始します"
' ********************************************************************
' 停止する為のイベントの定義
' ********************************************************************
Set objMonitor = objWMIService.ExecNotificationQuery( _
	"select * from __InstanceModificationEvent " & _
	"where TargetInstance isa 'Win32_LocalTime' " & _
	" and TargetInstance.Year = 0" _
)

' Wscript.Echo "TargetInstance.Year は 0 にならないので、次の行より後の処理は実行されません"
Set objLatestEvent = objMonitor.NextEvent 
Wscript.Echo "ここは実行されません"

' ********************************************************************
' この処理は、WbemScripting.SWbemSink から呼び出されます
' ********************************************************************
Sub SINK_OnObjectReady(objLatestEvent, objAsyncContext)

	' 10秒毎の処理
	if objLatestEvent.TargetInstance.Second MOD 10 = 0 then
		' ここが 10秒毎に呼び出されます
		Wscript.Echo "秒の余りが 0 の場合にここが実行されます"
		Wscript.Echo "分や時間を使用すると、長いスパンの定期処理に使えます"
	end if

	if Disp then
		' 秒単位に呼び出されるこのルーチンで毎回表示
		Wscript.Echo "Time: " & _
			objLatestEvent.TargetInstance.Hour & ":" & _
			objLatestEvent.TargetInstance.Minute & ":" & _
			objLatestEvent.TargetInstance.Second
	end if
End Sub






posted by lightbox at 2014-05-23 14:34 | VBS + WMI | このブログの読者になる | 更新情報をチェックする
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 終わり