SQLの窓

2009年12月31日


JS : テキストエリア内の選択文字列の置き換え

最近、セキュリティ制限やらで prompt が使え無い場合があって、
自分でセキュリティ設定が必要になりますが、それはとりあえず置いておいて、
テキストエリア内の選択文字列をタイトルにしたリンクの作成方法です
<script type="text/javascript">

function createURLLink() {

	var userAgent = window.navigator.userAgent.toLowerCase();
	var appVersion = window.navigator.appVersion.toLowerCase();
	var txt = "";
	var strUrl = "";
	if (userAgent.indexOf("msie") > -1) {

		var objSelectedText = document.selection
		var objTextRange = objSelectedText.createRange( )

		if (objTextRange.text.length == 0 ) {
			return;
		}
		try {
			strUrl = prompt("URLリンク作成","http://");
			if ( strUrl != "" && strUrl != "http://" && strUrl+"" != "null" ) {
				txt = objTextRange.text
				txt = "<a href=\""+strUrl+"\" target=\"_blank\">"+txt+"</a>"
				objTextRange.text = txt;
			}
		}catch( e ){}
	}
	else {
		var obj = document.getElementById("txt091231d")
		var ns = obj.selectionStart;
		var ne = obj.selectionEnd;
		var nl;

		if ( ns != ne ) {
			strUrl = prompt("URLリンク作成","http://");
			if ( strUrl != "" && strUrl != "http://" && strUrl+"" != "null" ) {
				txt = obj.value.substring(ns, ne);
				txt = "<a href=\""+strUrl+"\" target=\"_blank\">"+txt+"</a>"
				nl = txt.length
				txt = obj.value.substring(0, ns)
					+ txt + obj.value.substring(ne,obj.value.length);
				obj.value = txt;
				obj.setSelectionRange(ns,ns+nl);
			}
		}

	}

}

</script>

<TEXTAREA id=txt091231d rows=5 wrap=off cols=50></TEXTAREA>
<input type=button value="リンク作成" onClick='createURLLink()'>




タグ:javascript
posted by lightbox at 2009-12-31 16:14 | JavaScript コンテンツ | このブログの読者になる | 更新情報をチェックする

JS : ブログ内でテキストエリアの作成方法

上はそのまま HTML を書いてますが、下は JavaScript のdocument.write で書き出しています。Seesaa では HTML をそのまま書いてもうまくいくようになっていますが、プログの本文は、アプリケーション的にはテキストエリアなので、ひょっとして場合によってはうまくいかない可能性もあります。そういう場合は JavaScriptバージョンで対応できます
<script type="text/javascript">
str="";
str+="<"+"textarea wrap=off id=txt091231a cols=50 rows=5><"+"\/textarea> ";
document.write(str);
</script>

で、以下のテキストエリアは自作の JavaScript アプリケーションなので、タブが使えます。選択して一括で複数行にタブが挿入できて、SHIFT+TAB で逆にタブを削除できます。
<SCRIPT 
	type="text/javascript"
	src="http://lightbox.on.coocan.jp//tabtextarea.js">
</SCRIPT>
<script type="text/javascript">
createTabTextArea("txt091231c",50,5);
</script>


▲ 使い方です。そのまま使ってもいいし、.js ダウンロードしてもらってもいいです

※ この場合は name 属性しか無いので JavaScript で参照は以下のようになります
document.getElementsByName("txt091231c")[0].value




タグ:javascript
posted by lightbox at 2009-12-31 15:00 | 記録 | このブログの読者になる | 更新情報をチェックする

2009年12月28日


Ruby : Seesaa のブログ設定画面で、Form選択からコンボボックス、ラジオボタン、チェックボックスの設定

ブログを新しく作成した場合、初期設定がけっこうたいへんです。
Ruby に全部やらせてしまおうと以前から思ってましたので、手始めとして
ブログ設定の自動設定を作成しました。

全てうまくいったら WEB サービスして公開します
#!/usr/local/bin/ruby
print "Content-type: text/html\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

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

# 設定ページ
page = agent.get('http://blog.seesaa.jp/pages/my/blog/settings/basics/edit/input')

# 3番目のフォーム
form = page.form_with(:name => 'myform')

# カテゴリコンボボックスを IT/インターネット にセット
form.field_with(:name => 'blog_category_id').value = "41"
# form.field_with(:name => 'blog_category_id').options[1].value

# メールマガジン無し
form.checkbox_with(:name => 'blog__mailmag_text').uncheck
form.checkbox_with(:name => 'blog__mailmag_html').uncheck
form.checkbox_with(:name => 'blog__mailmag_summary').uncheck

# コメントを通知する
form.radiobuttons_with(:name => 'blog__alert_comment')[0].check
form["blog__alert_email"] = "メールアドレス"

# 共有ヘッダを無しでセット
form.radiobuttons_with(:name => 'blog_ext__common_header')[1].check

# 更新
page = form.click_button(form.buttons[1])

print "seesaa : settings_basics : update : ok"





タグ:ruby Mechanize
posted by lightbox at 2009-12-28 02:19 | Ruby | このブログの読者になる | 更新情報をチェックする

2009年12月27日


JavaScript : 正規表現の任意の文字列

解りやすい確実そうな方法が [\s\S]+ でした。
\s : スペース、タブ、フォームフィードなどの任意の空白文字
\S : 空白文字以外の任意の文字

[.\n]+ ができそうですが、JavaScript でエラーになります。
他の言語でおいおいチェックしますが、今回の結果です。

.+ はうまく動くのですが、当然ですが . に改行は含まれません
テキスト全体を /g で検索する場合は注意して下さい。

テキスト全体では、[\s\S]+? の後ろに終わって欲しい文字
または文字列を指定して下さい。これは重要です。








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

JavaScript : g の無い正規表現の結果

/g が無い場合は、配列に結果が入ります。
最初に全ての一致、それ以降はサプマッチです
しかし、ReqExp.$1 にもセットされるので、ループ処理で使う場合しか使いません。
var str = '<A href="URL" target="_blank">テキスト</A>';
var arr = str.match(/<a[\s\S]+?>(.+)<\/a>/i);
alert(arr[0]);
alert(arr[1]);
alert(RegExp.$1);




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

JavaScriptの正規表現

このページのリンクらしき文字列を全て取得します。




function getLink1() {
	var str = document.getElementsByTagName("BODY")[0].innerHTML;
	var arr = str.match(/<a[^>]+>/ig);
	str = "";
	var len = arr.length;
	for( i = 0; i < len; i++ ) {
		str += arr[i] + "\n"
	}
	document.getElementById("resultLinkText").value = str;
}
function getLink2() {
	var str = document.getElementsByTagName("BODY")[0].innerHTML;
	var arr = str.match(/<a[\s\S]+?>/ig);
	str = "";
	var len = arr.length;
	for( i = 0; i < len; i++ ) {
		str += arr[i] + "\n"
	}
	document.getElementById("resultLinkText").value = str;
}

function getLink3() {
	var str = document.getElementsByTagName("BODY")[0].innerHTML;
	var arr = str.match(/<a[\s\S]+?a>/ig);
	var arr2;
	
	str = "";
	var len = arr.length;
	for( i = 0; i < len; i++ ) {
		var arr2 = arr[i].match(/>(.+)</i);
		try {		
			str+= arr2[1] + "\n";
		} catch(e){}
	}
	document.getElementById("resultLinkText").value = str;
}
※ BODY より取得するので、IFRAME 内は対象外です
※ <a[^>]+> は、<a で始まって、> 以外が1つ以上続いて > で終わると言う意味です。
※ <a[\s\S]+?> は、<a で始まって、
任意の文字が1つ以上続いて > で終わる最短の文字列と言う意味です。
※ <a>〜</a> の 〜は単純には取得できません 一旦取得したアンカーより内側の文字列を取得しています ※ /ig の i は、大文字小文字を区別しないという意味です。 ※ /ig の g は、全ての対象を最後まで探すという意味です。 ■ もう少し詳しく JavaScriptの正規表現


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

2009年12月24日


Flex3 : ランタイムエラー #2122 : セキュリティサンドボックス侵害 : checkPolicyFile フラグが設定されませんでした

Flex から URLLoder でデータをロードする場合は、crossdomain.xml
の存在だけで良かったのですが、イメージ (JPG、GIF、または PNG)
を呼び出し元 SWF ファイル自体のドメイン外からロードし、そのイメージ
のコンテンツに BitmapData.draw() を使用してアクセスする予定の場合に、
checkPolicyFile を true にする必要があるのですが、Image コントロールは、
デフォルトではこの設定はなされません。

loaderContext プロパティに LoaderContext のインスタンを設定して
checkPolicyFileを正しく設定する必要がありますが、trustContenttrue
にすると、必要な設定は自動的に行われてコンテンツは正しいセキュリティ
ドメインにロードされます。


しかし、この設定を行うと Image コントロールに crossdomain.xml の
正しい設定の無いドメインの画像は表示されなくなります


ランタイムエラー - ActionScript 3.0 言語およびコンポーネントリファレンス



タグ:トラブル
posted by lightbox at 2009-12-24 22:19 | 記録 | このブログの読者になる | 更新情報をチェックする

DB2 : Express-C 9.7

DB2 を触った事が無いので問題あるかもしれませんが、他の DB の知識と勘で動作確認を行いました。

DB2 Express-C (無償版DB2)

サインアップ無しでも目的等のアンケートのような入力を3種類くらいコンボボックスで選択するだけでダウンロードできます。

db2exc_970_WIN_x86.zip(399 MB)

解凍して setup.exe を実行します。

Db2admin

セットアップが終了すると、使用している自分のユーザに DB2ADMNS グループをコンピュータの管理で追加します。その後、プログラムメニューの「ファースト・ステップ」で新規データベースの作成を実行してテスト用のDBを作成するのですが、ディレクトリの中へDBファイルを入れようとすると、エラーとなるので C:\ としました(C:\DB2 が作成される)。

ODBC ドライバは、インストールで登録されているので必要ならば以上の処理後登録すると接続可能ですが、当面のDBの調査を行うには、以下のツールを実行します。

コントロールセンター
コマンド・エディター


コントロールセンターでスキーマの情報を見る事ができるので、システム表やビューのスキーマ名を確認できます。このスキーマ名で修飾する事によって、ログインユーザーからスキーマ名.テーブル名 でコマンド・エディターを使って参照できます。

サービスは、DB2 が頭に付いたサービス名か6つ登録されていますが、全て手動にしておいて、DB の起動は、コマンド・エディターからstart database manager を実行します。( 停止は、stop database manager )
開始後、対象 DB を追加して処理しますが、停止するには全てのDB2を使用するアプリケーションを終了する必要があります。コマンド・エディターでは、選択されているコンボボックスを空白にしてから、stop database manager を実行します


ドキュメントは、IBM のサイトの「サポート・ダウンロード」から、「SQL リファレンス」と検索すると PDF がダウンロードできるリンクがトップに表示されます( 1巻と2巻と二つ必要です )

CREATE TABLE では、主キー列には not NULL を明示する必要があります


Db2admin2



posted by lightbox at 2009-12-24 17:27 | 記録 | このブログの読者になる | 更新情報をチェックする

2009年12月21日


JavaScript : 正規表現で、PE-100,120 の分解  

PE-100,120 は、座標データです。
Pは通過点で、Eは最終点である事を示します。
-100 と 120 が座標で、これを分解する為に以下のような正規表現を使います。

([^\d]+?)([\-]?\d+),([\-]?\d+)

1) [^\d]+?

1〜n個の数字以外の最短の文字列です。
次のパターンに - が来る場合があり、- も数字以外なので、? が無いと
- もこちら側に来てしまいます。この ? は、正規表現で最も重要な記号です。
\d は数字を表すのですが、JavaScript では d になってしまうので注意です。
JavaScript では、\d は \\d で表す必要があります。
[] は、文字集合を表しており、省略できる場面もありますが、
出来る限り指定したほうが良いでしょう。^ は否定なので文字集合
全てを否定できます。
+ は直前のパターンの文字が1文字以上連続する事を意味します。

() は、後で部分一致として文字列を取り出す為に用います。パターン
中で複数使って、JavaScript では、後で RegExp.$1、RegExp.$2、RegExp.$3、
というように取り出すのが最も直感的で簡単です


2) [\-]?\d+

[\-]は、-文字を示しますが、後の ? は、直前の文字が0文字か1文字で
一致します。良く使われるのが https? で、http でも https でも一致します。
[] の中での - は範囲指定なので、- を示す為に \- となります

3) ,

,( カンマ ) と一致します。


記号(メタキャラクタ)一覧







タグ:正規表現
posted by lightbox at 2009-12-21 03:28 | JavaScript 正規表現 | このブログの読者になる | 更新情報をチェックする

2009年12月17日


JavaScript : 一見バグのように見える正規表現オブジェクトの正しい動作

一つ目の正規表現が一致しません。
"\d" は、結局 "d" なので、正規表現のメタ文字にはなりません。
つまり、一つ目は以下のように指定する必要があります
pat = new RegExp("([^\\d]+?)([\-]?\\d+)\,([\-]?\\d+)");
( 外部から入力される時は \d でいい事になります )
str = "PE-100,120";

pat = new RegExp("([^\d]+?)([\-]?\d+)\,([\-]?\d+)");
alert(str.match( pat ));
alert( RegExp.$1 + "|" + RegExp.$2 + "|" + RegExp.$3 );

pat = new RegExp("([^0-9]+?)([\-]?[0-9]+)\,([\-]?[0-9]+)");
alert(str.match( pat ));
alert( RegExp.$1 + "|" + RegExp.$2 + "|" + RegExp.$3 );

alert(str.match( /([^\d]+?)([\-]?\d+)\,([\-]?\d+)/ ));
alert( RegExp.$1 + "|" + RegExp.$2 + "|" + RegExp.$3 );



タグ:javascript
posted by lightbox at 2009-12-17 01:22 | 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 終わり