SQLの窓

2011年08月30日


VB.net 2008 : System.Data.Odbc 接続テスト( MySQL 5.1 )

OdbcConnectionStringBuilder を使っている以外は特別なところはありません。
OdbcConnection の使い方と、接続のサンプルです
Imports System.Data.Odbc

Module Module1

	Sub Main()

		' 新しい OdbcConnectionStringBuilder オブジェクトを作成
		Dim builder As New OdbcConnectionStringBuilder()

		' ドライバ文字列をセット ( 波型括弧{} は必要ありません ) 
		' 文字列を正確に取得するには、レジストリ : HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI
		builder.Driver = "MySQL ODBC 5.1 Driver"

		' 接続用のパラメータを追加
		builder.Add("SERVER", "localhost")
		builder.Add("DATABASE", "lightbox")
		builder.Add("UID", "root")
		builder.Add("PWD", "password")

		' 内容を確認
		Console.WriteLine(builder.ConnectionString)

		' 新しい OdbcConnection オブジェクトを作成
		Dim myCon As New OdbcConnection()

		' 接続文字列を設定
		myCon.ConnectionString = builder.ConnectionString

		' 接続を開く
		Try
			myCon.Open()
		Catch ex As OdbcException
			Console.WriteLine("接続エラーです")
			' Console.WriteLine( ex.Message )
			Call ErrorAction( ex )
			Exit Sub
		End Try

		' 接続を閉じる
		myCon.Close()

		' OdbcConnection オブジェクトに使用されているすべてのリソースを解放
		myCon.Dispose()

		' 処理終了
		Console.WriteLine("処理が終了しました")

		' 一時停止
		Console.Write("Enterキーを押して下さい : ")
		Console.ReadLine()

	End Sub

	' ******************************************************
	' エラー処理
	' ******************************************************
	Sub ErrorAction( ex As OdbcException )

		Dim CrLf As String = ControlChars.CrLf
		Dim errorMessages As String = ""
		Dim i As Integer

		For i = 0 To ex.Errors.Count - 1
			errorMessages &= _
				"Index #" & i.ToString() & CrLf _
				& "Message: " & ex.Errors(i).Message & CrLf _
				& "NativeError: " & ex.Errors(i).NativeError.ToString() & CrLf _
				& "Source: " & ex.Errors(i).Source & CrLf _
				& "SQL: " & ex.Errors(i).SQLState & CrLf
		Next i

		Console.WriteLine(errorMessages)

	End Sub

End Module



パラメータは、Microsoft の標準のものを使用していますが、MySQL が定義したものを利用できます。
(例)
        builder.Add("SERVER", "localhost")
        builder.Add("DATABASE", "lightbox")
        builder.Add("USER", "root")
        builder.Add("PASSWORD", "password")
        builder.Add("PORT", "3306")
全てのパラメータ
Parameter Comment
user The user name used to connect to MySQL.
uid Synonymous with user
server The host name of the MySQL server.
database The default database.
option Options that specify how Connector/ODBC should work. See below.
port The TCP/IP port to use if server is not localhost.
initstmt Initial statement. A statement to execute when connecting to MySQL. In version 3.51 the parameter is called stmt. Note, the driver supports the initial statement being executed only at the time of the initial connection.
password The password for the user account on server.
pwd Synonymous with password
socket The Unix socket file or Windows named pipe to connect to if server is localhost.
sslca The path to a file with a list of trust SSL CAs. Added in 3.51.16.
sslcapath The path to a directory that contains trusted SSL CA certificates in PEM format. Added in 3.51.16.
sslcert The name of the SSL certificate file to use for establishing a secure connection. Added in 3.51.16.
sslcipher A list of permissible ciphers to use for SSL encryption. The cipher list has the same format as the openssl ciphers command Added in 3.51.16.
sslkey The name of the SSL key file to use for establishing a secure connection. Added in 3.51.16.
charset キャラクタセット設定
sslverify If set to 1, the SSL certificate will be verified when used with the MySQL connection. If not set, then the default behavior is to ignore SSL certificate verification.
readtimeout The timeout in seconds for attempts to read from the server
writetimeout The timeout in seconds for attempts to write to the server
interactive Enables the CLIENT_INTERACTIVE connection option of mysql_real_connect.
次のステップ

VB.net 2008 : System.Data.Odbc 更新処理( MySQL 5.1 )


タグ:MySQL
posted by lightbox at 2011-08-30 13:55 | VB.NET : データベース | このブログの読者になる | 更新情報をチェックする

2011年08月28日


Firefox で localStorage を編集するアドオン(FireStorage)は、GNU GPL なのでダウンロード(インストール) できるようにしました



Firefox で localStorage を編集するアドオン でソースコードの変更方法を紹介しましたが、一般の人では実現できないので、GNU GPL の元、改変して再配布します。

http://winofsql.jp/download/firestorage-1.0.2b-fx.xpi

■ 新規作成はできません。( Firebug 等で登録して下さい )
■ 変更は、key も value もできます。ダブルクリックで編集可能になります
■ 削除は選択して、一行づつです。左下の x アイコンで削除できます
( この機能がバグっていて動かなかったので改変しました )
■ 再表示は、左下の x の左横のアイコンです
■ バージョンチェックは、Firefox 9.0 まで使えるようにしています



タグ:localStorage
posted by lightbox at 2011-08-28 14:20 | Firefox | このブログの読者になる | 更新情報をチェックする

Firefox6 の postMessage でオブジェクトが引き渡されるのを確認しました

IFRAME で埋め込んだ外部コンテンツから
情報を取得する事ができる postMessage インターフェイス

上記リンク先に実際のコードを埋め込んでテストしました。

▼ 送り出し側です
function postColor() {

	var userAgent = window.navigator.userAgent.toLowerCase();
	var rgb = color.HSV_HEX(hsv);
	var objString = "";

	if (userAgent.indexOf("firefox/6") > -1) {
		objString = { "rgb": rgb, "hsv": { "h": hsv.H, "s": hsv.S, "v": hsv.V }};
		try{
			console.log("オブジェクトを post します (Firefox/6.0) ");
		}
		catch(e){ }
	}
	else {
		objString = '({ "rgb": "'+rgb+'", "hsv": { "h": '+hsv.H+',"s": '+hsv.S+',"v": '+hsv.V+' }})';
	}

	parent.postMessage( objString, "*" );
}


▼ 受け取り側です
function get_post_message(e) {
	var userAgent = window.navigator.userAgent.toLowerCase();
	var result = null;;
	if (userAgent.indexOf("firefox/6") > -1) {
		result = e.data;
	}
	else {
		result = eval(e.data);
	}
	alert(result.rgb + "," + result.hsv.h + "," + result.hsv.s + "," + result.hsv.v );
	document.getElementById("color_cd").value = result.rgb;
}
if ( window.addEventListener ) {
	window.addEventListener('message',get_post_message, false);
}
else {
	window.attachEvent('onmessage',get_post_message);
}



タグ:postMessage
posted by lightbox at 2011-08-28 01:33 | Firefox | このブログの読者になる | 更新情報をチェックする

2011年08月26日


Firefox6 : 気になる変更点、postMessage のオブジェクト引き渡しと、アドレスバーのスクリプトの直接入力

Firefox 6 for developers - MDN Docs

上記リンク先では、全ての変更点が記述されており、いろいろ興味ある内容が
列挙されていますが、最も気になったのが以下です。

window.postMessage() メソッドが structured clone algorithm
を使用するようになり、あるウィンドウから他のウィンドウに
文字列ではなく JavaScript オブジェクトを渡せるようになりま
した
これは実際にやってみると解りますが、使えるべきところに間に合って なかったというのが実際で、オブジェクトが渡せるようになるととても 簡単にクロスドメインのデータ交換が楽になります。 関連する記事 IFRAME で埋め込んだ外部コンテンツから 情報を取得する事ができる postMessage インターフェイス あと、一見「ブックマークレット」が動かないように思える記述がありますが、 アドレスバーに直接入力した時のみそういう仕様であり、HTML 上に既に記述さ れてあるものは、動作します。その延長であるブックマークレットも動作しま した。
•セキュリティの観点から、ユーザーがロケーションバーに
data: URI と javascript: URI を入力した時、現在のページ
のセキュリティコンテキストを受け継がなくなりました。
代わりに、新しい空のセキュリティコンテキストが生成され
ます。これにより、ロケーションバーに入力した javascript: URI
から読み込まれたスクリプトは、DOM メソッドなどへのアク
セスを持たなくなります。
しかし、これらの URI がスクリプトから使用された場合は、
これまでと同じように動作します。
タグ:postMessage
posted by lightbox at 2011-08-26 15:29 | Firefox | このブログの読者になる | 更新情報をチェックする

ローカル記憶域 : window.localStorage

以下は、Microsoft のドキュメントに書かれている説明文です

ローカル記憶域のメカニズムは、複数のウィンドウにまたがり、
現在のセッション以後も存続します。 

localStorage 属性は、ドメインの永続記憶域を提供します。

この属性により、Web アプリケーションはパフォーマンス目的
で約 10 MB のユーザー データ (ドキュメント全体、ユーザー
のメールボックスなど) をクライアントに保存できます。 
格納場所や、容量の仕様としては、ブラウザ毎に違うと思いますが、 データに対するアクセスは単純で全てのブラウザで同じ書き方がで きます。ただ、IE に関してだけで言うと、空文字列または、空文字 と同等とみなされるような参照を使って登録しようとするとエラーが 起きるかもしれません。現在のバージョンでは起きないかもしれない ですが、以前発生していましたので注意して下さい。 ( もし起きる場合は、new String("") をセットします ) 登録(変更)方法 一般的な、「連想配列」として扱います。 localStorage["key文字列"] = 値; 削除方法 localStorage.removeItem("key文字列"); ※ 全て削除は、localStorage.clear(); です。 一覧
localStorage['test'] = 'OK';
localStorage['message'] = 'YES';

var len = localStorage.length;
console.log(len);

var str = "";
for( var i = 0; i < len; i++ ) {
	// キーの値を取得
	str = localStorage.key( i );
	console.log(str + ":" + localStorage[str] );
}

関連する記事

ブラウザ別、localStorage の削除に関わる所作
Firefox で localStorage を編集するアドオン


タグ:localStorage
posted by lightbox at 2011-08-26 14:29 | JavaScript DOM | このブログの読者になる | 更新情報をチェックする

2011年08月25日


Firefox で localStorage を編集するアドオン



https://addons.mozilla.org/en-US/firefox/addon/firestorage/

上のような非常にシンプルなものですが、削除機能がバグで動かなかったり、入力フィールド
が狭かったりしたので、ダウンロードしたファイル( .xpi ) を、.zip に名称変更して、展開
してから中のソースコードを変更して使っています。

再度 .zip に書庫化し、.xpi に拡張子を変更して Firefox のページにドラッグ&ドロップする
とインストールされます。

yllocalstorage.js
remove : function() {
	var list = document.getElementById("yllocalstorage-viewer-list");
	if(list.getSelectedItem(0) != null) {

		var uri = ioService.newURI(content.location.href, "", null);
		var principal = securityManager.getCodebasePrincipal(uri);
		var localStorage = domStorageManager.getLocalStorageForPrincipal(principal, "");
//		dump(list.getSelectedItem(0).firstChild.attributes + "\n");
//		for(x in list.getSelectedItem(0).firstChild.firstChild) {
//			dump(x + "\n");
//		}
		
		localStorage.removeItem(list.getSelectedItem(0).firstChild.firstChild.value);
	}
	this.refresh();
},

cell2.setAttribute('ondblclick', 'this.firstChild.setAttribute("style","display: none"); this.lastChild.setAttribute("style","width:600px;");  this.lastChild.select();');



タグ:localStorage
posted by lightbox at 2011-08-25 15:53 | Firefox | このブログの読者になる | 更新情報をチェックする

2011年08月21日


JavaScript : zIndex の最大値と思われる 0x7FFFFFFF を各ブラウザでテストしました

CSS で書く場合は、2147483647 ですが、CSS では固定で定義するものなので、最初からこの値を使う事はとても考えにくいですが、後から動的に設定する JavaScript として考える場合、0x7FFFFFFF という値は暗記できますし、都合がいいです。( 10進数が欲しい場合は、開発者ツールで console.log(0x7fffffff) を実行 )

実際に IE、Firefox、Chrome、Opera、Safari で、zIndex が 998 で定義されている場所へ、ブックマークレットで新しいエレメントを追加して以下のコードで一番手前に来るかどうかを試しましたが、正しく動作しています。
parent.document.getElementById("if").style.position='absolute';
parent.document.getElementById("if").style.width='650px';
parent.document.getElementById("if").style.height='100px';
parent.document.getElementById("if").style.left='0px';
parent.document.getElementById("if").style.top='0px';
parent.document.getElementById("if").style.zIndex=0x7FFFFFFF;
parent.document.getElementById("if").style.borderColor='#000000';
parent.document.getElementById("if").style.borderWidth='1px';
parent.document.getElementById("if").style.borderStyle='solid';

関連する記事

ブックマークレット : Googleのドメイン内検索を任意のページで実行


posted by lightbox at 2011-08-21 14:29 | JavaScript DOM | このブログの読者になる | 更新情報をチェックする

2011年08月20日


IFRAME で埋め込んだ外部コンテンツから情報を取得する事ができる postMessage インターフェイス

カラーピッカーのライブラリなのですが、ちょっと雑な作りだったので、修正してリリースです。
で紹介したカラーピッカーを http://toolbox.winofsql.jp/color_picker.htm としてホステ
ィングしました。通常ならば、この中で決定した色コードを取得する事はできませんが、
postMessage で親ウインドウに色コードを post するようにしたので、利用する場合は、
その受け取りコードを書くだけで利用可能です。


<script type="text/javascript">
function get_post_message(e) {
	var result = eval(e.data);
	alert(result.rgb + "," + result.hsv.h + "," + result.hsv.s + "," + result.hsv.v );
}
if ( window.addEventListener ) {
	window.addEventListener('message',get_post_message, false);
}
else {
	window.attachEvent('onmessage',get_post_message);
}

</script>
<iframe
	src="http://toolbox.winofsql.jp/color_picker.htm"
	name="myframe"
	frameborder="1"
	scrolling="no"
	width="340"
	height="390"
></iframe>
関連する記事

JS : クロスドメインの IFRAME からデータを JSON 形式で引き渡す


posted by lightbox at 2011-08-20 20:16 | JavaScript コンテンツ | このブログの読者になる | 更新情報をチェックする

2011年08月19日


Picasa と list-style-image を使って、リストのマークをフォントサイズに合わせて拡大・縮小して利用する

list-style-image を使用すると、LI 要素の前に付くマークに任意の画像を指定できますが、フォントのサイズが変わっても、画像はそのままですからバランスが悪い場合があります。

Picasa は、URL にサイズ指定できるので、以下のような運用が可能になります。

  • あああああああああああああああ
  • あああああああああああああああ
  • あああああああああああああああ
  • あああああああああああああああ
  • あああああああああああああああ
  • あああああああああああああああ
  • あああああああああああああああ
  • あああああああああああああああ
  • あああああああああああああああ
  • あああああああああああああああ
こちらは、元の画像です



ここをクリックすると、以下のコードを編集しながらテストする事ができます
<style type="text/css">
.my_li li {
	font-size: 16px;
	list-style-image:url(http://lh4.googleusercontent.com/-K5VtJ3GdFXM/Tk2_0St9H3I/AAAAAAAADSI/Cbp0frLPgyU/s12/li_img.gif)
}
.my_li2 li {
	font-size: 26px;
	list-style-image:url(http://lh4.googleusercontent.com/-K5VtJ3GdFXM/Tk2_0St9H3I/AAAAAAAADSI/Cbp0frLPgyU/s18/li_img.gif)
}
</style>
<ul class="my_li">
<li>あああああああああああああああ</li>
<li>あああああああああああああああ</li>
<li>あああああああああああああああ</li>
<li>あああああああああああああああ</li>
<li>あああああああああああああああ</li>
</ul>
<ul class="my_li2">
<li>あああああああああああああああ</li>
<li>あああああああああああああああ</li>
<li>あああああああああああああああ</li>
<li>あああああああああああああああ</li>
<li>あああああああああああああああ</li>
</ul>



posted by lightbox at 2011-08-19 10:55 | HTML / CSS | このブログの読者になる | 更新情報をチェックする

2011年08月18日


JS : クロスドメインの IFRAME からデータを JSON 形式で引き渡す

以下には、lightbox.on.coocan.jp/message_cd.htm をIFRAME で埋め込んでいます。
当然このブログはドメインが違うので、本来ならばアクセスできませんが、postMessage
の第二引数に "*" を渡す事によって(本来は個別指定)、 どんなドメインへもメッセージ
を送る事ができます。
( 開発者ツールを開いて実行して下さい : IE8 でも動きます )

ただ、送れるメッセージは文字列で一つだけなので、送り出すほうで JSON の文字列を
用意しておいて、こちら側ではそれを eval して利用しています。お互いのドメインの
管理者か同じまたは信頼し合えるならば、この方法で多くのデータを一度にやりとりで
きるはずです。

または、IFRAME 側を、埋め込むだけでどこでも使えるような一つの完全なユニットと
して設計する為に必要です。
データを受け取る為の定義(get_post_message)
※ 実際は、js ライブラリ化して、script 要素で読み込めば使えるようにします
<script type="text/javascript">
function get_post_message(e) {
	var prop;
	var result = eval(e.data);
	try {
		if ( console.dir ) {
			console.dir(result);
		}
		else {
			for( prop in result ) {
				console.log(prop+":"+result[prop]);
			}
		}
	}
	catch(e){}
}
if ( window.addEventListener ) {
	window.addEventListener('message',get_post_message, false);
}
else {
	window.attachEvent('onmessage',get_post_message);
}

</script>
<iframe
	src="http://lightbox.on.coocan.jp/message_cd.htm"
	name="myframe"
	frameborder="1"
	scrolling="yes"
	width="300"
	height="100"
></iframe>

ユニット側
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=EUC-JP">
<script type="text/javascript">
function t_message() {
	var value1 = document.getElementById("message1").value;
	var value2 = document.getElementById("message2").value;
	var objString = '({ "message1": "'+value1+'", "message2": "'+value2+'" })';
	parent.postMessage( objString, "*" );
}
</script>
</head>
<body>

<input
	type="text"
	id="message1"
	style='width:200px;'
	value="日本語表示1"
/>
<br />
<input
	type="text"
	id="message2"
	style='width:200px;'
	value="日本語表示2"
/>
<br />
<input
	type="button"
	value="post"
	onclick='t_message();'
/>

</body>
</html>



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

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

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

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

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


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

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

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

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

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


Windows
container 終わり

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

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり