SQLの窓

2013年06月28日

GIMP : 『フィルタ』『下塗り』『自然』『炎(フラクタルアート)』




形状は、背景白のキャンバスで確認しておいて、背景透明のキャンバスで書き出します(カラーマップを透明)。失敗して違う色で書き出されても、単色塗りで変換すればいいです。

あるいは、黒のキャンバスに書き出してから黒を透明化してから単色塗りで変換してもいいです。

出来上がったものを3枚用意して、『オレンジ』『オレンジ』『黄色』で、『覆い焼き』『オーバレイ』『標準』で重ねて、最後に黒のレイヤーを置きます。


posted by at 2013-06-28 22:55 | GIMP | このブログの読者になる | 更新情報をチェックする

2013年06月27日

GIMP のフィルタで炎を作成する方法

How to create a flame in the filter of GIMP

1024 x 768 で作成しています



❶ ソリッドノイズでベースを作成



これを使うのはあまりにも有名ですが、工夫をいくつか追加します。
関連する記事
GIMP の『ソリッドノイズ』で炎を作る

❷ 白を透明化 ❸ 対話的歪めで適当に雰囲気を作る( 出来はここ次第 ) 左右の渦巻きで、炎のところどころを捻った後、移動やその他の効果をお好みで ❹ 上部を消しゴムに透明度を設定して炎の上部として明確にする これは後から(❻)まとめてやってもいいです ❺ 半分に縮小して、下部に二つ重ねる 厳密にやりたい場合は、二つの別のソリッドノイズから作成して貼り付けます。 ❻ 再び、対話的歪めで境界(境界部分で渦巻き効果を適用等)をあいまいにして、にじみでさらに補修しながら、透過度を設定した消しゴムでバランス調整 白いレイヤーを後ろに置いて編集します。『にじみ』ツールで上下に動かして境界を無くして行き、消しゴムで濃い部分を薄くしてお好みの明暗を作成します ❼ レイヤーをコピーして、一枚をオレンジ、もう一枚を黄色に色を変更して、オレンジをさらにコピーして3枚のレイヤーにします。
関連する記事
GIMP で爆炎画像作成
※ 一般的に使う色合いはリンク先の画像から解ります(RGB)にあります

❽ 上から、『覆い焼き』『オーバーレイ』『標準』として、黒のレイヤーを一番下に置きます 今作ったものです
posted by at 2013-06-27 22:15 | GIMP | このブログの読者になる | 更新情報をチェックする

Android(4.2.2) ADT Nexus 7 エミュレータで 日付ダイアログ

Nexus X で 480 x 800。 Nexus 7 で、800 x 1280 なんで、表示領域の差は相当大きいです。





※ RAM がデフォルト表示の 1024 では警告が出ていたので、768 に変更しています



Nexus X での日付ダイアログ



関連する記事Android 4.2.2(ADT) : class MyDatePicker extends DatePickerDialogAndroid : 日付ダイアログをインナーで使う( 完了ボタンをクリックした場合としない場合の対応 )


posted by at 2013-06-27 17:27 | Android | このブログの読者になる | 更新情報をチェックする

2013年06月18日

Google Chrome のベタなブックマークエクスポート



ブックマークマネージャから、『管理』を開いて一番下です。

ログインして同期するより、管理が確実です、

特に、Google Chrome の挙動がおかしい場合に、設定ファイルを削除して Google Chrome を初期化する方法がありますが、その場合に最も最適です。( 初期化前にエクスポート )


posted by at 2013-06-18 23:59 | Google Chrome | このブログの読者になる | 更新情報をチェックする

2013年06月17日

Windows7 を立ち上げたら、何故か画面が真っ黒・・・・。さてどうしたか。

どうやら、ログイン画面にはなっているようなので、

TAB して Enter

ダメなら ESC 

TAB して Enter

などと繰り返しているうちに、シャットダウンしました。

※ 右下にシャットダウン用のアイコンがある。

イベントビュアーでログ見たら異常なし。やっぱり、64ビットってなんか気持ち悪い・・・・気がする


posted by at 2013-06-17 00:55 | Windows | このブログの読者になる | 更新情報をチェックする

2013年06月16日

うっそーーな猫。

たまに、『猫』の動画探しするんですが・・・・爆笑したのは初めてです。




で、なんだか平和な動画。でも、濡れた猫の尻尾って・・・・先が・・・






posted by at 2013-06-16 23:09 | 動画 | このブログの読者になる | 更新情報をチェックする

2013年06月15日

さくらインターネット公式『リダイレクト』に関する対処方法

mod_rewriteを使ったアクセス制御

❶ URL書き換えリダイレクト( .../va003334/... => .../VA003334/... に利用しました )
❷ 初期ドメインにアクセスがあった場合独自ドメインへリダイレクトさせる
❸ スマートフォン振り分け その1
❹ スマートフォン振り分け その2



posted by at 2013-06-15 20:52 | インターネット | このブログの読者になる | 更新情報をチェックする

実用的かどうかは置いておいて、修正画面のデータの初期表示について

関連する記事

実用的かどうかは置いておいて、2ページ画面遷移の更新アプリの雛形について


データフィールドには、check.php からのリダイレクト用に $_GET を埋め込んであります。ここでは、name(アカウント) が主キーになるので、その値で DB を読み込んで、結果を $_GET にセットしています。
<?php
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

db_action();

function db_action() {

	if ( trim( $_GET['name'] ) == "" ) {
		$_GET['err'] = "名前が指定されていません";
		return;
	}

	$connect = mysql_connect( "localhost", "root", "password" );
	if ( $connect === FALSE ) {
		$_GET['err'] = "データベースの接続に失敗しました";
		return;
	}
	mysql_set_charset('utf8');

	mysql_select_db( "lightbox", $connect );

	// $_GET['name'] は安全であるという前提
	$query = "select * from transition where name = '{$_GET['name']}'";
	$rows = mysql_query( $query, $connect );
	if ( $rows === FALSE ) {
		$_GET['err'] = "データベースに正しくアクセスではませんでした";
		return;
	}
	$row = mysql_fetch_array( $rows );
	if ( $row === FALSE ) {
		$_GET['err'] = "対象データが存在しませんでした";
		return;
	}

	$_GET['comment'] = $row['comment'];
	
	mysql_close( $connect );

}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>

function check() {

	var pass = document.getElementById("pass").value;
	var text = document.getElementById("comment").value;

	if ( pass.trim() == "" ) {
		alert("パスワードが未入力です");
		document.getElementById("pass").focus();
		return false;
	}
	if ( text.length < 20 ) {
		alert("20文字以上の入力をお願いします");
		document.getElementById("comment").focus();
		document.getElementById("comment").select();
		return false;
	}

}
</script>
</head>
<body>
<span style="color:#ff0000;font-weight:bold;"><?= $_GET['err'] ?></span>
<form action="check.php" method="post" onsubmit="return check();"> 
	名前 <br>
	<input
		type="text"
		id="name"
		name="name"
		readonly
		style="background-color:#c0c0c0;"
		value="<?= $_GET['name'] ?>"><br> 

	備考 <br>
	<textarea
		id="comment"
		name="comment"
		style="width:400px;height:100px;"
		><?= $_GET['comment'] ?></textarea><br>

	パスワード<br>
	<input
		type="password"
		id="pass"
		name="pass"><br>

<br>
<hr>

	<input type="submit" name="submit" value="送信"> 
</form>
</body>
</html>




posted by at 2013-06-15 18:44 | PHP | このブログの読者になる | 更新情報をチェックする

実用的かどうかは置いておいて、2ページ画面遷移の更新アプリの雛形について

入力チェックを JavaScript と PHP と双方で行っています。

JavaScript の入力チェック

JavaScript のチェックは、フォームの onsubmit イベントを使用するオーソドックスなものです。( 文字列に対する trim メソッドは、現在では一般的に実装されていると思います )

JavaScript のエラー処理

入力エラーが発生すると、送信処理をキャンセルして、focus メソッドで、フォーカスをそのフィールドに移動させます。また、入力値が残るようなエラーの場合は、select メソッドを実行します

エラーが無ければ、check.php へデータを送信します。

PHP の入力チェックとエラー処理

check.php では、再度エラーチェックを行って、エラーがあれば、現在の値を url にセットした上で エラーメッセージも付加して form.php へリダイレクトします。

リダイレクトされた場合は、入力画面へ戻って、入力値は保持され、エラーメッセージが表示されます

正常終了後の処理

check.php でエラーがなければ、入力値を使って更新処理を行って、更新が正常終了したメッセージを check.php のページで行っていますが、このままでは F5 の再表示で再投稿に可能性があるので、通常は最終ページを作成してそこにリダイレクトします。

正常終了後の第三ページ

最終リダイレクト先は、form.php でもかまいませんが、第三ページを作成したほうが簡単になります。

ここでの入力画面の前提

この、form.php では、他のページから名前のみを GET で指定して画面遷移して来る事を想定しているので、第三ページを作成するほうが良いと思います。

第三ページでは、その他のページや元のページへナビゲートする為のリンクを用意するといいと思います

入力ページ(FORM)
<?php
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>

function check() {

	if ( !confirm("更新しますか?") ) {
		return false;
	}

	var pass = document.getElementById("pass").value;
	var text = document.getElementById("comment").value;

	if ( pass.trim() == "" ) {
		alert("パスワードが未入力です");
		document.getElementById("pass").focus();
		return false;
	}
	if ( text.length < 20 ) {
		alert("20文字以上の入力をお願いします");
		document.getElementById("comment").focus();
		document.getElementById("comment").select();
		return false;
	}

}
</script>
</head>
<body>
<span style="color:#ff0000;font-weight:bold;"><?= $_GET['err'] ?></span>
<form action="check.php" method="post" onsubmit="return check();"> 
	名前 <br>
	<input
		type="text"
		id="name"
		name="name"
		readonly
		style="background-color:#c0c0c0;"
		value="<?= $_GET['name'] ?>"><br> 

	備考 <br>
	<textarea
		id="comment"
		name="comment"
		style="width:400px;height:100px;"
		><?= $_GET['comment'] ?></textarea><br>

	パスワード<br>
	<input
		type="password"
		id="pass"
		name="pass"><br>

<br>
<hr>

	<input type="submit" name="submit" value="送信"> 
</form>
</body>
</html>



更新ページ
<?php

if ( trim($_POST['name']) == "" ) {
	$url = "form.php?";
	$url .= "name=" . urlencode($_POST['name']);
	$url .= "&comment=" . urlencode($_POST['comment']);
	$url .= "&err=" . urlencode("名前が未入力です");
	header( "Location: $url" );
	exit();
}

if ( strlen($_POST['pass']) > 20 ) {
	$url = "form.php?";
	$url .= "name=" . urlencode($_POST['name']);
	$url .= "&comment=" . urlencode($_POST['comment']);
	$url .= "&err=" . urlencode("パスワードは、20文字以内で入力してください");
	header( "Location: $url" );
	exit();
}


?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
更新が終了しました
</body>
</html>



posted by at 2013-06-15 16:45 | PHP | このブログの読者になる | 更新情報をチェックする

document.getElementById の代替え

document.getElementById が正当である事は解ってるのですが、とにかくタイプミスしやすいので、簡単に代替えされている方は多いと思うのですが、その手間を考えると、結局 Google が ホスティングしている jQuery を使ったほうが早いなぁ・・・といつも思います。
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script type="text/javascript">
// *************************************
// 代替コード
// *************************************
var $id = function(s) { return document.getElementById(s); }


// *************************************
// 代替コードを使う
// *************************************
function TestLocal() {
	alert( $id("mydata").value );
}

// *************************************
// jQuery を使う
// *************************************
function TestJquery() {
	alert( $("#mydata").val() );
}

</script>
<input type="text" id="mydata" >
<input type="button" value="Test local" onclick="TestLocal();">
<input type="button" value="Test jQuery" onclick="TestJquery();">




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

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

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

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

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


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

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

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

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

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


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX