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

2019年01月11日

VBScript : CAPICOM を使った通常文字列の Base64エンコードと SHA1 と MD5 と SHA256/384/512

Windows10 でCAPICOM.Utilities を使用するには、こちらからダウンロードしてインストールが必要です。

但し 32 ビットでインストールされるので、VBScript で実行する際に、『C:\Windows\SysWOW64\cscript.exe』で実行する必要があります。
( または C:\Windows\SysWOW64\wscript.exe )

ドキュメント

以下の方法と同様で、バイナリファイルの変換に使う事が可能です。(PHPの文字列はバイナリ扱いです)

結果は PHP の関数で同じになる事を確かめています。
( php -r "print hash('sha256','変換する文字列');" )

変換する種類は、こちらの定数を使用します(HashedData.Algorithm)( VBscript で最後に小文字に変換してますが、PHP の結果と合わす為です )

Base64 の変換では、本来良く使われて来た用途としてバイナリデータのテキスト表現で、メールの添付ファイルに使用する際に改行を含めて76文字になるようになっています。CAPIUtil.Base64Encode の仕様もそうなっているので、PHP と比較する為に、ここではわざわざ改行を取り除いています。

それと、CAPICOM.HashedData で作成したオブジェクトを使いまわすとエラーになる事があったので、毎回作成して処理しました。
Set CAPIUtil = Wscript.CreateObject( "CAPICOM.Utilities" )
Set Stream = Wscript.CreateObject("ADODB.Stream")
Set StreamBin = Wscript.CreateObject("ADODB.Stream")

'***********************************
' Base64
'***********************************
Stream.Open
Stream.Charset = "shift_jis"
' shift_jis で入力文字を書き込む
Stream.WriteText "日本語表示OK日本語表示OK日本語表示OK日本語表示OK日本語表示OK"
Stream.Position = 0

' バイナリで開く
StreamBin.Open
StreamBin.Type = 1

' テキストをバイナリに変換
Stream.CopyTo StreamBin
Stream.Close

' 読み込みの為にデータポインタを先頭にセット
StreamBin.Position = 0

str = CAPIUtil.ByteArrayToBinaryString( StreamBin.Read )
str2 = CAPIUtil.Base64Encode( str )
' ' 長い文字列は仕様として、(\r\n を含めて 76文字で) 改行されます
str2 = Replace(str2,vbCrLf,"")

Wscript.Echo str2

'***********************************
' SHA1,SHA256,SHA384,SHA512 と MD5
'***********************************
' SHA1
Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" )
HashedData.Algorithm = 0
HashedData.Hash(str)

Wscript.Echo LCase(HashedData.Value)

' SHA256
Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" )
HashedData.Algorithm = 4
HashedData.Hash(str)

Wscript.Echo LCase(HashedData.Value)

' SHA384
Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" )
HashedData.Algorithm = 5
HashedData.Hash(str)

Wscript.Echo LCase(HashedData.Value)

' SHA512
Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" )
HashedData.Algorithm = 6
HashedData.Hash(str)

Wscript.Echo LCase(HashedData.Value)

' MD5
Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" )
HashedData.Algorithm = 3
HashedData.Hash(str)

Wscript.Echo LCase(HashedData.Value)







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

2019年01月08日

BEASTARS 11 : 決着ついた




いろんな事に決着付いて『しまった』と言わざるを得ない展開で溜息が出た。

ここからどうなるのかは想像も付かないけれど、レゴシが主役でルイが戻って来た以上どこかへ向かって物語は狼煙を上げるんだろうなぁ...

世の中も、自分的にもこれから数年は大きな変化が起きる事が『決まっている』だけに、とても感慨深いお話でした。


凄い・すごい・スゴイ





posted by at 2019-01-08 22:20 | 漫画 | このブログの読者になる | 更新情報をチェックする

2019年01月05日

DAZ3D : このブログのタイトル画像の Iray 化 ( 元は 3Delight )

Iray 化したからといって、良くなるとは限らないですね。



もうちょっとライティングで明暗のメリハリが必要ですね。




仕方無いので、カメラ位置変えて髪を風で流れるようにしてごまかしました






posted by at 2019-01-05 01:07 | Iray DAZ3D DAZStudio イラスト | このブログの読者になる | 更新情報をチェックする

DAZ3D : ツリーハウスの夜

プロトタイプ

ツリーハウスのプロダクトですが、たしか無料で手にいれたものでおせじにも『良いもの』とは言えないのですが、Iray 使った夜の照明ならいろいろごまかせるだろうとやってみました。



これはこれでいいんですが、雰囲気の比較の為に GIMP でスクリーンで明るくしたのが以下の画像。



この時点では木のテクスチャがさすがにちょっとクオリティが悪いです。背景は森の hdri を暗〜〜くして他のプロダクトの街灯みたいなのをくっつけてエミッションでライティングしてます。全体の明るさ調整に球を頭上において Emission でライト化して照明として使用しています。

以下の画像だと、背景の HDRI の様子がより解ります。



イラストAC に投稿したもの



投稿にあたって、壁と扉のシェーダを変更して、基本的な明るさを少し上げています。それでも暗いのは暗いですが、壁紙として使うぶんにはこのくらいでもいいはずです。

猫のポーズテスト



猫のプロダクト(Millennium Cat)は古いものなので、猫単体ではなかなかしんどいので、風景の中に溶け込ませる事をテストしたシーンです。早くに購入していたのになかなか試す機会が無かった専用の拡張ポーズ(Purrfect Poses for the Millennium Cat)のお試しです。





posted by at 2019-01-05 00:41 | Iray DAZ3D DAZStudio イラスト | このブログの読者になる | 更新情報をチェックする

2019年01月04日

Seesaa(またはさくらのブログ) の記事の一括編集内で、各種の設定を一括変更する為のブックマークレット

※ さくらのブログに広告の表示はありません

一括編集状態で実行する必要があります




Sessaa 一括変更

一括編集タブで使用します。検索結果でもいいですし、単純に200件表示でもいいです。

カテゴリの一括変更では、記事一覧を検索で絞ってから一括変更するといいと思います。カテゴリ番号は、そのカテゴリを表示した時の URL の最後の文字列( 例 : 7154748-1.html )のハイフン以降を除いた数字です。
( カテゴリID を数字に変更してカテゴリ変更をクリックします )


javascript:var wnd=document.createElement('iframe');wnd.setAttribute('id','if');wnd.frameBorder=0;document.body.appendChild(wnd);wnd.contentWindow.document.write('<script src=\'https://winofsql.jp/s01.js\' charset=\'shift_jis\'></script>')

// plugin Bookmarklet
// by lightbox

parent.document.getElementById("if").style.position='absolute';
parent.document.getElementById("if").style.width='300px';
parent.document.getElementById("if").style.height='34px';
parent.document.getElementById("if").style.left='0px';
parent.document.getElementById("if").style.top='0px';
parent.document.getElementById("if").style.zIndex=100;
var sLocation = parent.location.host;
var sUrl = parent.location.href;
var doc = parent.document;
var tds = doc.getElementsByTagName("form");
var len = tds.length;
var cnt = 0;
var add = null;
for( i = 0; i < len; i++ ) {
	if ( tds[i].name == 'search_form' ) {
//		cnt++;
//		if ( cnt == 2 ) {
			add = tds[i];
//		}
	}
}
var place = doc.createElement('div');
add.appendChild(place);
str="";
str+="<select id=changetype style=margin-left:5px;> \n";
str+="<option value=\"0\" title=\"受付×/表示×\">×/×</option> \n";
str+="<option value=\"1\" title=\"受付○/表示○\">○/○</option> \n";
str+="<option value=\"2\" title=\"受付×/表示○\">×/○</option> \n";
str+="<option value=\"3\" title=\"受付○(承認制)\">承認制</option> \n";
str+="</select> ";

str+="<select id=changetype2> \n";
str+="<option value=\"0\" selected=\"selected\">無効 / 公開</option> \n";
str+="<option value=\"1\" >有効 / 非公開</option> \n";
str+="</select> ";

str+="<INPUT type=button value='コメント' onClick='wnd.contentWindow.changeTarget(0)'>";
str+="&nbsp;<INPUT type=button value='公開設定' onClick='wnd.contentWindow.changeTarget(1)'>";
str+="&nbsp;<INPUT type=button value='広告の表示' onClick='wnd.contentWindow.changeTarget2()'>";
str+="&nbsp;<INPUT id='target_cat' type=text value='カテゴリID' onclick='this.select();' style='width:80px;'>";
str+="&nbsp;<INPUT type=button value='カテゴリ変更' onClick='wnd.contentWindow.changeTarget3()'>";
place.innerHTML = str


str="";
str+="<head> \n";
str+="<META http-equiv=\"Content-Type\" content=\"text/html; charset=shift_jis\" /> \n";
str+="<style type=text/css> \n";
str+="body { margin:0;background-color:forestgreen;color:white; } \n";
str+="</style> \n";
str+="</head> \n";
str+="<body> \n";

str+=" plugin Bookmarklet by lightbox\n";

str+="</body> \n";

document.write( str );
document.close();

var userAgent = window.navigator.userAgent.toLowerCase();
var appVersion = window.navigator.appVersion.toLowerCase();

function changeTarget(type) {

	var sels = doc.getElementsByTagName("select");
	var len = sels.length;
	var name,namelen,target;
	var value = doc.getElementById("changetype").value;

	// コメント
	if( type == 0 ) {

		for( i = 0; i < len; i++ ) {
			name = sels[i].name;
			namelen = name.length;
			target = name.substr(namelen-7,7)
			if ( target == 'comment' ) {
				doc.getElementsByName(name)[0].value = value;
			}
		}

	}
	// 公開・非公開
	if( type == 1 ) {

		value = doc.getElementById("changetype2").value;
		if ( value == 0 ) {
			value = 1;
		}
		else {
			value = 0;
		}

		for( i = 0; i < len; i++ ) {
			name = sels[i].name;
			namelen = name.length;
			target = name.substr(namelen-4,4)
			if ( target == 'flag' ) {
				doc.getElementsByName(name)[0].value = value;
			}
		}

	}

}
function changeTarget2() {

	var sels = doc.getElementsByTagName("select");
	var len = sels.length;
	var name,namelen,target;
	var value = doc.getElementById("changetype2").value;

	for( i = 0; i < len; i++ ) {
		name = sels[i].name;
		namelen = name.length;
		target = name.substr(namelen-4,4)
		if ( target == 'link' ) {
			doc.getElementsByName(name)[0].value = value;
		}
	}
}


function changeTarget3() {

	var sels = doc.getElementsByTagName("select");
	var len = sels.length;
	var name,namelen,target;
	var value = doc.getElementById("target_cat").value;

	for( i = 0; i < len; i++ ) {
		name = sels[i].name;
		namelen = name.length;
		target = name.substr(namelen-12,4)
		if ( target == '_cat' ) {
			doc.getElementsByName(name)[0].value = value;
		}
	}
}



更新履歴
2012-02-29 : カテゴリID を追加してからの初回投稿
2013-08-23 : 最新の Seesaa と さくらのブログで動作チェック
2015-07-06 : Seesaa と さくらが同じになっていたので、さくら専用を削除
2019-01-04 : 最新の Seesaa と さくらのブログで動作チェック




posted by at 2019-01-04 10:38 | ブックマークレット | このブログの読者になる | 更新情報をチェックする

2019年01月03日

DAZ3D : Juliette Hair の調整

この髪( Juliette Hair )は、$19.95 を $5.39 で買っています。一度使いましたが良くなかったので放置してましたが、他の人が使ってるのを見て調整してみようと思いました。

 出来上がったのが以下の画像です



正直そのまま使うととても印象がイマイチなものが出来上がるのでモーフで調整を入れようとするといいのが無く、本来使わないキャラクタのアジャストがあるにはありますが、正攻法ではありません。

▼ ノーマルの状態


▼ 調整した状態との差



そこで、General なパラメータでサイズ調整をしようとすると、本体を選択しているとえらい事になります...

DAZ の製品ではタマにあるのですが、やりたいモーフがパーツに存在する事があります。そこで今回は head を選択して General のパラメータ調整を行いました。




その他の結果






補足

この衣装は、Doctor Coat Outfit for Genesis 3 Female(s) ですが、H&C Nurse Uniform for Genesis 3 Female(s) と同じくクオリティが低いです。

どちらも Fitting に問題があり、G3 用のプロダクトとは思えないぐらいの調整が必要となります。特に、ポースによって服のシワが破綻するのが腹立つのでほぼつかってません。

イラストAC 用として医療関係のイラストに使おうと思ったんですけど...


ちなみに、以下が Aiko7 でのプロトタイプです。ドクターコートの下のシャツが表に出てしまっています。これは Iray プレビューしないと解りません。単純に専用モーフに Ajust Fit があるのでそれで調整しました。これは、ドクターコートの Fit 先を シャツにする方法もありますが、部分的に破綻する可能性があります( 破綻がカメラの範囲になければ そのほうが確実ですけど )






posted by at 2019-01-03 22:27 | Iray DAZ3D DAZStudio イラスト | このブログの読者になる | 更新情報をチェックする

2019年01月02日

DAZ3D : とてもアニメっぽいデザインの 戦艦 Dominator は作ってて楽しい



以前から戦艦が欲しかったのですが、年末のディスカウントで $6.36 で手に入れたプロダクトです。

Dominator

回りの小型機は、一つ作ってノードインスタンスで量産して角度と位置を調整したものですが、なかなか楽しいレンダレング具合です。( 最後に GIMP で オーバレイ+スクリーン )



ついついこの手のシーンは暗くなりがちですが、イザとなればこのように GIMP でレタッチすればいいのです。

以下の画像は Haze で雰囲気出そうとしてみたものですが、戦艦メインならレンダリング時間を犠牲にしてまで使う効果ではなかったようです。



動力部分のエミッション効果がとてもいい感じです。









posted by at 2019-01-02 23:32 | Iray DAZ3D DAZStudio イラスト | このブログの読者になる | 更新情報をチェックする

DAZ3D : Urban Sprawl 3 / Block 3 : 最近レンダリング開始しておいて他の作業をやる

最近レンダリング開始しておいて他の作業をやる...という事が増えてると言うか、DAZStudio ばかり触ってます。

Urban Sprawl 3



本業のほうは、IT そのものの進歩というか広がりが多き過ぎてどこにポイントを絞ればいいのか悩みます。最近は歳をとったせいもあって、アナログな外堀から攻めるべきかなぁ...と思う今日この頃です。

なんというか、社会人としての基本スペックは最近技術力よりもっと大きいものだと思うのです。だいたい、専門学校から実社会に橋渡しをする中で、元々現場は技術力なんてのはアテにもしていないし、それでも例外な学生はタマには居るのですが。

でも、デキル子はやはり社会人としての基本スペックも自然と高いので、人間形成を手伝うほうが先だと思わざるを得ない場面に最近は遭遇する事が多いわけです。

ああ、独り言になってしまいました。



Urban Sprawl 3 は前から欲しかったんですが、イザ表現に使おうという状況になると、あまりにも現実に近いのでただの風景になりがちです。

それで思うのですが、最近漫画で『異世界』モノが多くあるのですが、どれを取っても風景や登場人物や世界観がファンタジーなので楽しいわけです。風景をレンダリングしていて感じるものとおんなじなんですよね。とりあえず現実より遠いものは切り取りやすいんです。

だから、正直 Urban Sprawl 3 はつまんないです...( どうしよう )






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

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

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

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

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


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

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

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

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

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