SQLの窓 イラストAC フリー素材

2015年11月30日

mysqli で使用していた PHP のアプリを mdb で使用する為の簡易クラス

完全ではありませんが、一通りのテストは完了しています。まだまだバージョンアップすべき部分もありますが、とりあえず学校が後二日で冬休みになるので、学生が家で手軽に勉強できるように作成しました。

ODBC + MDB なので、ソースコードを SHIFT_JIS にするとここで行っているキャラクタセットの変換は必要無くなるのですが、いろいろと今時は全て UTF-8N で揃えたほうが学生の為に良いので、内部で変換しています。
$connect_string = "Provider=MSDASQL;";
$connect_string .= "Driver={Microsoft Access Driver (*.mdb)};";
$connect_string .= "dbq={$rpath}hanbaic.mdb;charSet=MS932;";
$connect = new odbc_mdb($connect_string);

class odbc_result {

	var $connect;
	var $result;
	var $num_rows;

	function odbc_result( $connect, $result ) {
		$this->connect = $connect;
		$this->result = $result;
		$this->num_rows = 0;
	}

// ***************************
// フェッチ
// ***************************
	function fetch_array( $dummy ) {

		$row = odbc_fetch_array( $this->result );
		if ( $row === false ) {
			return false;
		}

		$new_row = array();
		foreach( $row as $k => $v ) {
			$new_row[$this->connect->utf8($k)] = $this->connect->utf8($v);
		}
	
		return $new_row;
	}

	function fetch_all( $dummy ) {

		$all_row = array();

		while ($row = odbc_fetch_array( $this->result )) {
			$new_row = array();
			foreach( $row as $k => $v ) {
				$new_row[$this->connect->utf8($k)] = $this->connect->utf8($v);
			}
			$all_row[] = (object)$new_row;
		}

		return $all_row;
	}

}

class odbc_mdb {
 
	var $connect;
	var $result;
 
	function odbc_mdb( $connect_string ) {
		$this->connect = odbc_connect( $connect_string, "", "" );
	}
 
// ***************************
// キャラクタ変換
// ***************************
function utf8($str) {

	return mb_convert_encoding($str,"utf-8","MS932");
}
function sjis($str) {

	return mb_convert_encoding($str,"MS932", "utf-8");
}

// ***************************
// 接続解除
// ***************************
	function close( ) {
		odbc_close( $this->connect );
	}
 
// ***************************
// クエリー
// ***************************
	function query( $sql_query ) {

		$this->result = odbc_exec( $this->connect, $this->sjis($sql_query) );
		return new odbc_result( $this, $this->result );
	}

// ***************************
// 実行
// ***************************
	function exec( $sql_exec ) {
		$ret = odbc_exec( $this->connect, $this->sjis($sql_exec) );
		return $ret;
	}
 
 
}


関連する記事

実運用では無く、学習用の WWWサーバーとしてはこれ以外に無い『AN HTTP Server』ですが、古いソフトなので使い方にコツがあります



タグ:PHP DB MDB ODBC microsoft
posted by at 2015-11-30 22:35 | PHP+DB | このブログの読者になる | 更新情報をチェックする

2015年11月27日

もうすぐクリスマスなんで

時間があれば、20人くらい作りたいですが、今日はとりあえず。


 

やってみて解ったのは、一人より複数でクリスマースガールするほうが華やかで絵になりますね

▼ Iray でもレンダリングしてみました

 



posted by at 2015-11-27 02:16 | DAZ3D | このブログの読者になる | 更新情報をチェックする

DAZ3D で Quad Tank が無料になってたので手に入れました。わりといい感じです



 

3Delight でレンダリングするとしょぼいですが、NVIDIA Iray だとノーマルでもそれなりです。もちろん簡単なレタッチは GIMP で行いましたが、いい感じです。

Quad Tank の Product Store Page よりずっといい仕上がりかもしれないです。


posted by at 2015-11-27 01:48 | DAZ3D | このブログの読者になる | 更新情報をチェックする

2015年11月20日

tableMagic : 単純に JSON から TABLE、TR、TH、TR、TD を作成する jQuery のプラグイン

デモページ

ダウンロードページ

純国産プラグインです。使用方法も日本語です。

とにかく、元データとして JSON を想定していて、とりあえず TABLE を作成したい場合に便利です。ここから他のプラグインで加工するベースにするといいと思います。

注意事項

圧縮バージョンが配布されていないので、必要ならば自分で行う必要がありますが、packer ではエラーになるので、Online JavaScript/CSS Compressor を使用しました

サンプルコード
<script src="tableMagic/js/jquery.tablemagic-min.js"></script>

<link rel="stylesheet" href="css.php">
<style>
.trEven {
	background-color: #FFFFFF;
}
.trOdd {
	background-color: #F1F4F8;
}

#target table * {
	font-family: "ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic Pro","メイリオ",Meiryo,"MS Pゴシック",Verdana,Arial,Helvetica,sans-serif;
	font-size: 16px;
}
#target table {
	border-collapse: collapse;
	border-style: solid;
	border-color: #000000;
	border-width: 1px;
	background-color: #FFFFFF;
}
#target table td {
	padding: 5px;
	border-style: solid;
	border-color: #000000;
	border-width: 1px;
	white-space: nowrap;
}
#target table th {
	padding: 5px;
	border-style: solid;
	border-color: #000000;
	border-width: 1px;
	background-color: silver;
	white-space: nowrap;
}
</style>
<script>
// jQuery 初期処理
$(function() {

	$.get("syain.php?cond=" , function(data){

		$('#target').tableMagic(
			data,
			{
				firstColTd2Th: false
			}
		);


		customTable();

	});



});

function customTable() {

		$("table").find("th").eq(6).css("text-align", "right");
		$("table").find("th").eq(7).css("text-align", "right");

		$("table").find("tr").each( function(){
			$(this).find("td").eq(6).css("text-align", "right");
			$(this).find("td").eq(7).css("text-align", "right");

			var kyuyo = $(this).find("td").eq(6).text();
			kyuyo = parseInt(kyuyo,10);
			kyuyo = kyuyo.toLocaleString();
			$(this).find("td").eq(6).text(kyuyo);

			var teate = $(this).find("td").eq(7).text();
			if ( teate != "" ) {
				teate = parseInt(teate,10);
				teate = teate.toLocaleString();
			}
			$(this).find("td").eq(7).text(teate);

		} );
}


</script>
</head>
<body>

<div id="target"></div>


customTable は、直接関係ありません。出来上がったテーブル内のデータを後から jQuery でカスタマイズしています。

firstColTd2Th: false は、デフォルトでは先頭列が TH になってしまうので変更しています。( テーブルの見栄えは、好みで CSS で変更するといいでしょう )



posted by at 2015-11-20 21:40 | jQuery | このブログの読者になる | 更新情報をチェックする

2015年11月19日

雪を降らす snowstorm.js の 特定 DIV 内での実装

何故か、単純に指定するとズレるので、いろいろやってみました。が、どうも DIV の下で雪が止まってくれません。けっこう適当なライブラリですね。

と、思ったら snowStorm.flakeBottom = 500; を指定したらうまく行きました。

ページ全体でのデモ

ふふふふふ
雪のキャラクタを変更して、雪の結晶を使って CSS アニメーションで回転させています
<style>
@-webkit-keyframes snow-rotate {
  0% { -webkit-transform: rotate(0deg); }
  100% { -webkit-transform: rotate(360deg); }
}
@-moz-keyframes snow-rotate {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@-o-keyframes snow-rotate {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes snow-rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
.mysnow {
	color:#e0e0e0!important;
	-webkit-animation: 1.85s snow-rotate steps(8) infinite;
	-moz-animation: 1.85s snow-rotate steps(8) infinite;
	-o-animation: 1.85s snow-rotate steps(8) infinite;
	animation: 1.85s snow-rotate steps(8) infinite;

}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Snowstorm/20131208/snowstorm-min.js"></script>
<div style="width:500px;overflow:hidden; margin:60px auto">
<div id="snow_container" style="width:540px;overflow:hidden;position:relative;">
<img src="https://lh3.googleusercontent.com/-om6S8qEPmiQ/VZetF28tQnI/AAAAAAAAbPc/x1aQ7Uj2QVU/s500-Ic42/143594651057721985634.jpg">
</div>
ふふふふふ

</div>
<script>
snowStorm.excludeMobile = false;
snowStorm.animationInterval = 50;
snowStorm.flakesMax = 64;
snowStorm.className = "mysnow"
snowStorm.flakeWidth = 16;
snowStorm.flakeHeight = 16;
snowStorm.snowCharacter = '&#10052;';
snowStorm.targetElement = 'snow_container';
snowStorm.flakeBottom = 500;
</script>

snowstorm.js


タグ:javascript
posted by at 2015-11-19 17:06 | JavaScript | このブログの読者になる | 更新情報をチェックする

2015年11月15日

Android Studio 1.4.1 : Android 純正 Data Binding テンプレート



▼ Google の英文説明
Data Binding Guide : Android Developers

開始メニューからのインポート時の注意事項

Android Studio のバグで、バインド用のクラスでエラーが出ると思いますが、そのまま動作するはずです。エラーを無くすには、activity_main.xml を変更すると参照エラーは消えます。( variable 要素を削ったり戻したりして確認しました )
しかし、メソッドの参照エラーが残るので、いったんプロジェクトを閉じてから、再度開くと正常に戻ると思います。

また、SDK の場所が違うので、以下のようなダイアログが出ますが、自動的に修復するようです



Data Binding の注意事項

1) 全て UTF-8 を使用しましょう
2) クラスから画面へ一方通行です
3) 画面定義内に日本語を使用してはいけません
4) 細かい技は使わないほうが吉です( Google Gson に任せましょう )

テンプレートの概要



1) 元データとして WEB を想定しています
2) 通信用のデータフォーマットは、JSON です
3) WEB 側は PHP を使用しています( PHP ソースコードも同梱 : app\web の中です。AN HTTP Server で直接その場所を atest としてエイリアスを作成してテストしています )
4) AN HTTP Server でテストしています( AN HTTP Server のダウンロードと注意事項はこちらから )
5) JSON の処理に、Google Gson を使用しています
6) データベースの定義は同梱していませんが、『コード、氏名、フリガナ』という簡単なテーブルです
7) 実機は、API 19: Android 4.4 (KitKat) を想定しています。必要ならば、Min Sdk を下げて下さい
8) 実機の場合、WiFi で接続して、IP アドレスで PC にアクセスしてテストしました



タグ:android PHP
posted by at 2015-11-15 00:42 | Android | このブログの読者になる | 更新情報をチェックする

2015年11月14日

とても凄い可愛い、ダンス動画



tumblr 経由なので、ソースが何で、何がどうなのか良くわかりませんが、Twitter に動画投稿できるのは今日解りました。長いものは無理なので、部分的にトリミングするように指示が出たのでやってみました。本編は相当長いので、そちらを見たほうが楽しいです。

動画のダウンロードは、Google Chrome の network でリンクを取得すればたいていは可能です( アンカー作って、右クリックからダウンロード )


posted by at 2015-11-14 02:45 | 写真・動画 | このブログの読者になる | 更新情報をチェックする

滑らかなスクロール(scroll bar)を提供する jQuery プラグイン jQuery.NiceScroll

デモページ

CDNホスティングなので、ダウンロード不要

https://cdnjs.com/libraries/jquery.nicescroll


概要

Nicescroll is a jquery plugin, for nice scrollbars with a very similar ios/mobile style.

IOS のような、スクロールバーインターフェイスを jQuery のプラグインとして実現しています。

ページや DIV に関して簡単に実装できます
$(function() {

	$( "#story" )
		.css({
			width: "700px",
			height: "200px",
			whiteSpace: "pre-wrap"
		});

	$( "html,#story" ).niceScroll();

});

その他、いろいろオプションがあるようですが、DIV に対してスクロール可能なコンテンツを実装したい場合に便利です。幅と高さを固定してプラグインすると、自動的に思ったようなコンテンツとして表示できます。


posted by at 2015-11-14 01:14 | jQuery | このブログの読者になる | 更新情報をチェックする

2015年11月06日

Excel の罫線って保護できるのかぁ。というか、シートを保護して、使うセルだけ保護解除。

正直 Excel はそれほど詳しいものでは無い。普通そう。設計書作るのに必殺ワザや、裏技必要無い。

で、『勝手にフォーマット変える人がいるので、なんとかしたい』って言われて困った。その人曰く、できるはずなんですけど・・・・と言われて調べると、『できない』と言い切ってる人をインターネットで見つける。

おかしい。

もっと、調べる。すると・・・、『結果的に罫線は保護されるよ』と言う書き込みに出会ったので実際やってみると、たしかに。しかも、シートの保護にはパスワードも設定できるので、確かにフォーマットは保護されるのね。そういや、そうか。

▼ 最初にする事

使うセルのロックを解除しておいて、シートの保護に備える。

▼ シートの保護




なるほどねぇ。

やはり、Excel は偉大。Word 嫌い



タグ:EXCEL 罫線
posted by at 2015-11-06 01:12 | Microsoft Office | このブログの読者になる | 更新情報をチェックする

Microsoft アカウントの不審なサインイン、IPが自分のもの、覚え無い、あーー怖い

ちょっとビビった

-----------------------------------------------------------------------
Microsoft アカウント xx*****@hotmail.co.jp への最近のサインインに関して、不審な点が見られました。お客様の安全のために、お客様ご本人であることを改めて確認させていただく必要があります。

サインイン情報:
国/地域: 日本
IP アドレス: xxx.xxx.xxx.xxx
日時: 2015/11/03 5:28 (GMT)

お客様がこれを実行した場合は、このメールを無視しても問題ありません。

お客様がこれを実行した覚えがない場合、悪意のあるユーザーがお客様のパスワードを使っている可能性があります。最近のアクティビティをご確認のうえ、手順に従って必要な対策を講じてください。

最近のアクティビティ https://account.live.com/activity をご確認ください。

セキュリティ通知を受け取る場所を変更するには、ここ https://account.live.com/SecurityNotifications/Update をクリックしてください。

サービスのご利用ありがとうございます。
Microsoft アカウント チーム 
-----------------------------------------------------------------------

初めての経験。確かに、Microsoft のパスワードは簡単すぎるものを使用していたけれど、IP アドレスは自分のものだったので、すぐに調べたら IPアドレスは偽装可能だと言う事がわかり、また一つ賢くなった。とにかく、すぐパスワードは変更したけれど、Microsoft は本当に日本人に不親切。『いいかげんにしろ』と、何度も心の中でつぶやいたのでした。

自分では無い自分の IPアドレスが使ったブラウザは、普段使わないブラウザで明確だったけれど、時間は日本時間じゃないのでめんどくせーと思った。

そもそも、Microsoft は最近 Windows10 のアップデート騒ぎで業界では評判悪いと思うよ。

▼ こいつ。


とにかく、いろいろやるよりまず『ちゃんとしたパスワード』を設定する事ですが、自分は重要さに伴って何段階かのパスワードを利用しています。

1) どうでもいいもの
2) どうでもいいけど良く使うサービス
ここから、長くて想像不可なもの
3) 多少大事に思っているもの
4) 絶対に漏れては困る普段使うもの
5) 自分でも覚えていない、金銭の絡むもの

で、今回 3) に変更です
( 実際は、それに複数文字追加しています。なんか、Microsoft のシステムがおかしくって、3回パスワード変更するハメになって、以前使ったパスワードは使えませんとか言われてしまったので )

最近のアクティビティの表示は、『アカウント設定』内の『セキュリティとプライバシー』タブ内にあります。まあ、ありがたい機能ですが、やるならもっと『どんな操作が行われたか』を表示して欲しいもんですが。

無料でできるウィルスチェック

こういう時は、根本的なものも確認しておきます。

トレンドマイクロ オンラインスキャン 無料でチェックだけしてくれます。もし感染していたら購入すればいいので。その後一応『Windows Defender』(コントロールパネル) でチェックです

もちろん何も無かったです


結論として、最近思うのは『この先本当に Microsoft は大丈夫なの?』という現実です

#Windows Phone ってどうなったんだ? > Microsoft


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

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

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

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

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


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

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

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

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

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