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

2014年08月30日

Access.Application ( docmd.TransferText ) でエクスポートとインポート

ドキュメントを読むと、余計わかりにくくなりますが、2番目の引数は省略できます(デフォルトのインポート/エクスポートの仕様を選択する場合は、この引数を空白のままにすることができます)。

一番の問題は、.vbs 内で定義されていない定数を使う事で、.wsf で定数をインポートする場合は別ですが、.vbs では定数をあらかじめ定義しておく必要があります。

AcTextTransferType Enumeration
Const acExportDelim 	= 2	'Export Delimited
Const acExportFixed	= 3	'Export Fixed Width
Const acExportHTML	= 8	'Export HTML
Const acExportMerge	= 4	'Export Microsot Word Merge
Const acImportDelim	= 0	'Import Delimited
Const acImportFixed	= 1	'Import Fixed Width
Const acImportHTML	= 7	'Import HTML
Const acLinkDelim	= 5	'Link Delimited
Const acLinkFixed	= 6	'Link Fixed Width
Const acLinkHTML	= 9	'Link HTML

Set ac = Wscript.CreateObject("Access.Application") 
ac.OpenCurrentDatabase("C:\vbs\mdb\a2010.accdb") 

ac.docmd.TransferText acExportDelim, "", "社員マスタ", "C:\vbs\mdb\doexp.csv", true

ac.docmd.TransferText acImportDelim, "", "社員マスタ", "C:\vbs\mdb\社員マスタ.csv", true

ac.docmd.Closedatabase

最後の true は、一行目がフィールド名である事を示しています

※ このインポート処理では、キーが重複しないもののみインポートされます


posted by at 2014-08-30 12:14 | Comment(0) | VBScript | このブログの読者になる | 更新情報をチェックする

2014年08月26日

VBScript でエクスプローラの再起動

WMI に関しては決まり文句です。GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 以外を使用する事は少ないです。『.』は、自分が実行しているコンピュータですが、違った書き方では、他の PC にログインしてリモートで WMI を実行できます。

For Each objProcess in colProcessList も決まり文句で、目的が一つしか無い事が通常ですが、For Each 内で対象の処理を行う事がほとんどです。

エクスプーラを、Terminate しても実行中のアプリは現状維持するようです。エクスプローラが本体として動作しているフォルダや管理ウインドウはいったん閉じてまたデフォルトの状態で開くようですが細かく確認はしていません。
' 起動用
Set WshShell = Wscript.CreateObject( "WScript.Shell" )
' WMI用
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

' いったん終了させます
Set colProcessList = objWMIService.ExecQuery _ 
	("Select * from Win32_Process Where Name = 'explorer.exe'") 
For Each objProcess in colProcessList
	on error resume next
	objProcess.Terminate() 
	on error goto 0
Next 

' 少し待ちます
Wscript.Sleep(500)
Call WshShell.Run( "explorer.exe" )




タグ:VBScript WMI
posted by at 2014-08-26 22:07 | Comment(0) | VBScript | このブログの読者になる | 更新情報をチェックする

2014年08月21日

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

CAPICOM.Utilities は相当昔からあります。昔はわざわざインストールするものでしたが、自分の環境では既に入っています。( 一般的な Windows ではインストールされないのでダウンロードしてインストールします )

ドキュメント

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

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

SHA256/384/512 動きました。( HashedData.Algorithm )。最後に小文字に変換してますが、PHP の結果と合わす為です。

そもそも、こんな事を調べるような気になったのは、VBScript で Twitter のAPI を呼び出すのに、JavaScript ベースのライブラリを使ったのですが、ネイティブなものが使えないか試したわけですが、肝心の HMAC-SHA1 が見つからないので参考程度です( Twitter では結局 JavaScript のライブラリを VBScript 側から呼び出しました )

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 2014-08-21 23:28 | VBScript | このブログの読者になる | 更新情報をチェックする

2014年08月16日

とてもシンプルで応用実装可能な『LOADING』CSS

すこし変更するだけで、簡単に応用がききそうです。ただ、backface-visibility の効果がイマイチ良く解りません。範囲をラップした DIV 内に収めないと、ページのリンクが効かなくなりました。( ページ全体に対して実行するなら、意味ありますが )

あと、フォントの扱いでいろいろ微妙だったので、フォント部分は画像にしたほうがよさそうです。
Loading


Loading
オリジナルはこちらですが、ここではフォントは Google を使っていません。あと、表示位置レイアウトは調整しています。元々の仕様は、 position: fixed; を使用していて、ページ全体に対して固定位置なんですが、これは固定 DIV 内で使う事を想定して、top 指定だとアニメーションの都合で、上下運動になってます。

ま、これはこれでいいかなと。

下のほうは、bottom 指定なので、上下しません
<style type="text/css">
.quiver {
  position: absolute;
  top: 50px;
  left: 250px;
  width: 100px;
}

.quiver2 {
  position: absolute;
  bottom: 50px;
  left: 250px;
  width: 100px;
}

.arrows {
  -moz-animation: equalizor cubic-bezier(0.77, 0, 0.175, 1) 0.5s alternate-reverse infinite;
  -webkit-animation: equalizor cubic-bezier(0.77, 0, 0.175, 1) 0.5s alternate-reverse infinite;
  animation: equalizor cubic-bezier(0.77, 0, 0.175, 1) 0.5s alternate-reverse infinite;
  vertical-align: baseline;
  display: inline-block;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0 10px 1px 10px;
  border-color: rgba(255, 255, 255, 0) rgba(255, 255, 255, 0) #0b486b rgba(255, 255, 255, 0);
}

.st {
  border-bottom-color: #0b486b;
}

.nd {
  border-bottom-color: #3b8686;
}

.rd {
  border-bottom-color: #79bd9a;
}

.th {
  border-bottom-color: #a8dba8;
}

.fth {
  border-bottom-color: #cff09e;
}

span:nth-child(1) {
  -moz-animation-delay: 0s;
  -webkit-animation-delay: 0s;
  animation-delay: 0s;
}

span:nth-child(2) {
  -moz-animation-delay: 0.1s;
  -webkit-animation-delay: 0.1s;
  animation-delay: 0.1s;
}

span:nth-child(3) {
  -moz-animation-delay: 0.2s;
  -webkit-animation-delay: 0.2s;
  animation-delay: 0.2s;
}

span:nth-child(4) {
  -moz-animation-delay: 0.3s;
  -webkit-animation-delay: 0.3s;
  animation-delay: 0.3s;
}

span:nth-child(5) {
  -moz-animation-delay: 0.4s;
  -webkit-animation-delay: 0.4s;
  animation-delay: 0.4s;
}

@-moz-keyframes equalizor {
  from {
    border-bottom-width: 60px;
  }

  to {
    border-bottom-width: 1px;
  }
}
@-webkit-keyframes equalizor {
  from {
    border-bottom-width: 60px;
  }

  to {
    border-bottom-width: 1px;
  }
}
@keyframes equalizor {
  from {
    border-bottom-width: 60px;
  }

  to {
    border-bottom-width: 1px;
  }
}
.box * {
  -moz-backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.loading {
  display: block;
  font: normal 25px/1em "Merriweather Sans", sans-serif;
  text-transform: uppercase;
  color: #cff09e;
}

</style>
<div class="box" style='width:600px;height:200px;background-color:#141517;position:relative;'>
<div class="quiver"><span class="arrows st"></span><span class="arrows nd"></span><span class="arrows rd"></span><span class="arrows th"></span><span class="arrows fth"></span><span class="loading">Loading</span></div></div>
<br><br>
<div class="box" style='width:600px;height:200px;background-color:#141517;position:relative;'>
<div class="quiver2"><span class="arrows st"></span><span class="arrows nd"></span><span class="arrows rd"></span><span class="arrows th"></span><span class="arrows fth"></span><span class="loading">Loading</span></div></div>



posted by at 2014-08-16 03:42 | Comment(0) | CSS | このブログの読者になる | 更新情報をチェックする

2014年08月13日

jQuery で書かれた、幻想的な動く星座のようなシーン

オリジナルはこちら

とても幻想的でステキなんですが、コードがあまりにも応用しづらいので、ほぼ再現するくらいしか・・・。 ( Three.js で書いてくれたらいいんですけれど )

※ ブログに貼り付けているので、マウスの位置コントロールがずれてます。


タグ:jquery
posted by at 2014-08-13 02:46 | Comment(0) | jQuery | このブログの読者になる | 更新情報をチェックする

2014年08月12日

jQuery の addClass で、CSS で作成するサイフの出来上がる過程を見れるようにしました



オリジナルはこちらです。

ですが、この手の CSS は結局どうなっているか読み解くのは結構面倒な作業です。なので、できるだけ簡単に jQuery で分割作業できないか作ってみましたが、結構汎用性ありそうです。
もともとクラスで分割して定義されている場合、複数クラス指定で無いならば、id として空の状態にしておいて、後からボタンでクラスを追加して行きます。

この時、クラス名を配列で定義しておいて、ボタン作成時にクラス名を value として保存しておけば、クリックされたらそれを取り出して addClass するだけです。
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script type="text/javascript">

var class_set = ["wallet_outer","cash_behind","cash_behind_left","cash_behind_cover","cash_front","cash_front_left","cash_front_right","cash_front_cover","leftshade","leftshadecover","rightshade","rightshadecover","cover","cover2","cover3","buckle","buckleshade","buckleshadecover","buckledropshade","clip"];

$(function(){

	for( i=0; i<class_set.length; i++ ) { 
		$("#button"+(i+1))
			.attr("type", "button")
			.val(class_set[i])
			.click(function(){
				$(this).css(
					 {
						"background-color":"#404040",
						"color":"#FFFFFF",
					}				
				);
				$("#"+this.value).addClass(this.value);
			});
	}

});


for( i=0; i<class_set.length; i++ ) { 
	document.write("<input id=\"button"+(i+1)+"\"> \n" );
}


</script>

<!-- wallet -->
<div class="container">
    <div id="wallet_outer">
      <div id="leftshade"></div>
      <div id="leftshadecover"></div>
      <div id="rightshade"></div>
      <div id="rightshadecover"></div>
      <div id="cover"></div>
      <div id="cover2"></div>
      <div id="cover3"></div>
      <div id="cash_behind"></div>
      <div id="cash_behind_left"></div>
      <div id="cash_behind_cover"></div>
      <div id="cash_front"></div>
      <div id="cash_front_left"></div>
      <div id="cash_front_right"></div>
      <div id="cash_front_cover"></div>
      <div id="buckledropshade"></div>
      <div id="buckle">
        <div id="buckleshade"></div>
        <div id="buckleshadecover"></div>    
        <div id="clip"></div>
      </div>
    </div> 
</div>
<style>
.container {
  margin-top:55px;
}

.wallet_outer {
  width:375px;
  height:300px;
  border:8px solid #111;
  border-radius:30px;
  background:#74593D;
}

.cash_behind {
  border:8px solid #111;
  border-radius:40px 40px 0px 0px;
  background:#5D7D51;
  height:88px;
  width:240px;
  position:absolute;
  margin-top:-35px;
  margin-left:58px;
}

.cash_behind_left {
  border-radius:30px 0px 0px 0px;
  background:#739866;
  height:87px;
  width:40px;
  position:absolute;
  margin-top:-26px;
  margin-left:67px;
}

.cash_behind_cover {
  border-radius:30px 0px 0px 0px;
  background:#5D7D51;
  height:87px;
  width:40px;
  position:absolute;
  margin-top:-26px;
  margin-left:75px;
}


.cash_front {
  border:8px solid #111;
  border-radius:40px 40px 0px 0px;
  background:#739866;
  height:61px;
  width:240px;
  position:absolute;
  margin-top:-8px;
  margin-left:90px;
}

.cash_front_left {
  background:#91B185;
  height:61px;
  width:30px;
  position:absolute;
  margin-left:98px;
  border-radius:35px 0px 0px 0px;
}

.cash_front_right {
  background:#5D7D51;
  height:61px;
  width:30px;
  position:absolute;
  margin-left:307px;
  border-radius:0px 35px 0px 0px;
}

.cash_front_cover {
  border-radius:30px 30px 0px 0px;
  background:#739866;
  height:61px;
  width:222px;
  position:absolute;
  margin-left:107px;
}

.leftshade {
  position:absolute;
  height:300px;
  width:30px;
  background:#806346;
  border-radius:26px 0px 0px 26px;
}

.leftshadecover {
  position:absolute;
  margin-left:13px;
  height:300px;
  width:30px;
  background:#74593D;
  border-radius:26px 0px 0px 26px;
}

.rightshade {
  position:absolute;
  height:300px;
  width:44px;
  margin-left:331px;
  background:#695037;
  border-radius:0px 26px 26px 0px;
}

.rightshadecover {
  position:absolute;
  height:240px;
  width:32px;
  margin-left:331px;
  margin-top:60px;
  background:#74593D;
  border-radius:0px 26px 26px 0px;
}

.cover {
  position:absolute;
  margin-top:-7px;
  margin-left:20px;
  height:60px;
  width:30px;
  background:#695037;
  z-index:3;
  border-radius:40px 0px 0px 40px;
  border:8px solid #111;
}

.cover2 {
  position:absolute;
  margin-top:61px;
  margin-left:307px;
  height:60px;
  width:60px;
  background:#74593D;
  z-index:1;
  border-radius:0px 40px 0px 0px;
  border:8px solid #111;
}

.cover3 {
  position:absolute;
  margin-top:69px;
  margin-left:300px;
  height:31px;
  width:30px;
  background:#74593D;
  z-index:4;
}

.buckle {
  margin-top:100px;
  margin-left:220px;
  width:180px;
  height:100px;
  background:#957657;
  border:8px solid #111;
  border-radius:35px 10px 35px 35px;
  position:absolute;
  z-index:3;
}

.buckleshade {
  background:#AE8F71;
  height:100px;
  width:25px;
  position:absolute;
  margin-left:0px;
  border-radius:40px 0px 0px 40px;
    z-index:1;
}

.buckleshadecover {
  background:#957657;
  height:100px;
  width:35px;
  position:absolute;
  margin-left:10px;
  border-radius:20px 0px 0px 20px;
  z-index:1;
}

.buckledropshade {
  background:#695037;
  height:30px;
  width:140px;
  position:absolute;
  margin-left:225px;
  margin-top:195px;
  border-radius:0px 0px 0px 30px;
  z-index:0;
}

.clip {
  z-index:2;
  border:8px solid #111;
  border-radius:55px;
  position:absolute;
  width:55px;
  height:55px;
  margin-left:20px;
  margin-top:14px;
  background: rgba(255,187,0,1);
background: -moz-linear-gradient(-45deg, rgba(255,187,0,1) 0%, rgba(255,187,0,1) 49%, rgba(240,176,0,1) 54%, rgba(240,176,0,1) 100%);
background: -webkit-gradient(left top, right bottom, color-stop(0%, rgba(255,187,0,1)), color-stop(49%, rgba(255,187,0,1)), color-stop(54%, rgba(240,176,0,1)), color-stop(100%, rgba(240,176,0,1)));
background: -webkit-linear-gradient(-45deg, rgba(255,187,0,1) 0%, rgba(255,187,0,1) 49%, rgba(240,176,0,1) 54%, rgba(240,176,0,1) 100%);
background: -o-linear-gradient(-45deg, rgba(255,187,0,1) 0%, rgba(255,187,0,1) 49%, rgba(240,176,0,1) 54%, rgba(240,176,0,1) 100%);
background: -ms-linear-gradient(-45deg, rgba(255,187,0,1) 0%, rgba(255,187,0,1) 49%, rgba(240,176,0,1) 54%, rgba(240,176,0,1) 100%);
background: linear-gradient(135deg, rgba(255,187,0,1) 0%, rgba(255,187,0,1) 49%, rgba(240,176,0,1) 54%, rgba(240,176,0,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffbb00', endColorstr='#f0b000', GradientType=1 );
}
</style>



タグ:jquery CSS
posted by at 2014-08-12 19:01 | Comment(0) | jQuery | このブログの読者になる | 更新情報をチェックする

CSS 時計

オリジナルは、もっと細かくて実際に動きます(CSSのアニメーション機能で)。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
<style>
ul { list-style:none; margin:0; padding:0 }
#watch {
	width: 600px; 
	font-size:1em; 
	position:relative 
}
#watch .frame-face {
  position:relative;
  width:30em;
  height:30em;
  margin:2em auto;
  border-radius:15em;
  background:-webkit-linear-gradient(top, #f9f9f9,#666);
  background:-moz-linear-gradient(top, #f9f9f9,#666);
  background:linear-gradient(to bottom, #f9f9f9,#666);
  box-shadow:rgba(0,0,0,.8) .5em .5em 4em;
}

/* 白い背景 */
#watch .frame-face:after {
  content:'';
  width:28em;
  height:28em;
  border-radius:14.2em;
  position:absolute;
  top:.9em; left:.9em;
  box-shadow:inset rgba(0,0,0,.2) .2em .2em 1em;
  border:.1em solid rgba(0,0,0,.2);
  background:-webkit-linear-gradient(top, #fff, #ccc);
  background:-moz-linear-gradient(top, #fff, #ccc);
  background:linear-gradient(to bottom, #fff, #ccc);
}

/* 分目盛り */
#watch .minute-marks li {
  display:block;
  width:.2em;
  height:.6em;
  background:#929394;
  position:absolute;
  top:50%; left:50%;
  margin:-.4em 0 0 -.1em;
}


/* 5分単位の数字 */
#watch .digits li {
  font-size:1.6em;
  display:block;
  width:1.6em;
  height:1.6em;
  position:absolute;
  top:50%; left:50%;
  line-height:1.6em;
  text-align:center;
  margin:-.8em 0 0 -.8em;
  font-weight:bold;
}
#watch .digits li:nth-child(1) { transform:translate(3.9em, -6.9em) }
#watch .digits li:nth-child(2) { transform:translate(6.9em, -4em) }
#watch .digits li:nth-child(3) { transform:translate(8em, 0) }
#watch .digits li:nth-child(4) { transform:translate(6.8em, 4em) }
#watch .digits li:nth-child(5) { transform:translate(3.9em, 6.9em) }
#watch .digits li:nth-child(6) { transform:translate(0, 8em) }
#watch .digits li:nth-child(7) { transform:translate(-3.9em, 6.9em) }
#watch .digits li:nth-child(8) { transform:translate(-6.8em, 4em) }
#watch .digits li:nth-child(9) { transform:translate(-8em, 0) }
#watch .digits li:nth-child(10) { transform:translate(-6.9em, -4em) }
#watch .digits li:nth-child(11) { transform:translate(-3.9em, -6.9em) }
#watch .digits li:nth-child(12) { transform:translate(0, -8em) }

/* 短針 */
#watch .hours-hand {
  transform:rotate(90deg);

  width:.8em;
  height:7em;
  border-radius:0 0 .9em .9em;
  background:#232425;
  position:absolute;
  bottom:50%; left:50%;
  margin:0 0 -.8em -.4em;
  box-shadow:#232425 0 0 2px;
  transform-origin:0.4em 6.2em;
  animation:hours 43200s linear 0s infinite;
}
#watch .hours-hand:before {
  content:'';
  background:inherit;
  width:1.8em;
  height:.8em;
  border-radius:0 0 .8em .8em;
  box-shadow:#232425 0 0 1px;
  position:absolute;
  top:-.7em; left:-.5em;
}
#watch .hours-hand:after {
  content:'';
  width:0; height:0;
  border:.9em solid #232425;
  border-width:0 .9em 2.4em .9em;
  border-left-color:transparent;
  border-right-color:transparent;
  position:absolute;
  top:-3.1em; left:-.5em;
}

/* 長針 */
#watch .minutes-hand {
  transform:rotate(0deg);

  width:.8em;
  height:12.5em;
  border-radius:.5em;
  background:#343536;
  position:absolute;
  bottom:50%; left:50%;
  margin:0 0 -1.5em -.4em;
  box-shadow:#343536 0 0 2px;
  transform-origin:0.4em 11em;
  animation:minutes 3600s linear 0s infinite;
}

/* 秒針 */
#watch .seconds-hand {
  transform:rotate(90deg);

  width:.2em;
  height:14em;
  border-radius:.1em .1em 0 0/10em 10em 0 0;
  background:#c00;
  position:absolute;
  bottom:50%; left:50%;
  margin:0 0 -2em -.1em;
  box-shadow:rgba(0,0,0,.8) 0 0 .2em;
  transform-origin:0.1em 12em;
  animation:seconds 60s steps(60, end) 0s infinite;
}
#watch .seconds-hand:before {
  content:'';
  width:.8em;
  height:3em;
  border-radius:.2em .2em .4em .4em/.2em .2em 2em 2em;
  box-shadow:rgba(0,0,0,.8) 0 0 .2em;
  background:inherit;
  position:absolute;
  left:-.35em; bottom:-3em;
}

/* デシタル部分 */
#watch .digital-wrap {
  width:9em;
  height:3em;
  position:absolute;
  top:50%; left:50%;
  margin:3em 0 0 -4.5em;
  overflow:hidden;
}
</style>
<div id="watch">
  <div class="frame-face"></div>
  <ul class="minute-marks">
  </ul>
  <div class="digital-wrap">
  </div>
  <ul class="digits">
    <li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li>
    <li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li>
  </ul>
  <div class="hours-hand"></div>
  <div class="minutes-hand"></div>
  <div class="seconds-hand"></div>
</div>


posted by at 2014-08-12 01:19 | Comment(0) | CSS | このブログの読者になる | 更新情報をチェックする

2014年08月10日

胸を張る



DAZ3D でもそうですが、標準の立ちポーズより、かなり胸張ったほうが立ち姿としてクオリティがアップします。日本のアニメやフィギュア(人形)では、一般的だと思うわけです。たぶん、ジョジョ立ちとかもそういうもんだと思うわけです。

実際、3D では、胸や腰を反らせた後、全体を回転して前方向に回し。顎は引いて、股関節で全体のバランス調整するのがパターンです。





posted by at 2014-08-10 20:27 | Comment(0) | 手書きブログ | このブログの読者になる | 更新情報をチェックする

昔々、夢に出てきた一つ目妖怪

手書きブログで最初に描いた絵の日付をみると、2008/03/29 でした。最近はあまり描いて無いですが、それでも時間さえあればずっと描いていたいほうです。



こいつ、マジで夢に出て来たんですよね・・・良く覚えてるわ。


デザイン的には、我ながらいけてると思ってます。




タグ:妖怪
posted by at 2014-08-10 20:15 | Comment(0) | 手書きブログ | このブログの読者になる | 更新情報をチェックする

2014年08月08日

Three.js : マテリアルで設定される overdraw: true は、セグメントの境界である白い線を消す機能です

Material.js に、コメントで説明があります。

Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer

CanvasRenderer でアンチエイリアシングのギャップを修正するためのフラグだそうです。他のソフトでも同様のものがあったので、その内容は以下のように書かれています。

antialiasing gaps(アンチエイリアスによる隙間)を埋めるために立体表面を広げるか。広げる場合true。それ以外の場合false。
内容は『よりよい描画』のようですし、サンプルではだいたい true のようなので、セットしておくと良いと思います。 ▼ 以下をクリックするとセグメント(5x5)の境界である線を見る事ができます
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="http://winofsql.jp/WinOfSql.ico" />
<style>
body {
	margin: 0;
	overflow: hidden;
}
</style>
</head>
<body>

<div id="container_three"></div>
<script src="three.min_68.js"></script>
<script>

	var v_offset = 0;
	var v_width = window.innerWidth;
	var v_height = window.innerHeight;
	var v_action = 0.05;
	var v_comera_v = 200;
	var v_iamge_url = "image/f1.jpg"
	var v_iamge_url2 = "image/b1.jpg";

	var container;
	var camera, scene, renderer;
	var mesh,mesh_r;
	var mouseX = 0, mouseY = 0;
	var material,texture;
	var material2,texture2;

	init();
	animate();

	// *****************************
	// 構成の設定
	// *****************************
	function init() {

		// *****************************
		// Three.js を実行するコンテナ
		// *****************************
		container = document.getElementById( 'container_three' );

		// *****************************
		// シーン
		// *****************************
		scene = new THREE.Scene();
		scene.position.y = v_offset;

		// *****************************
		// カメラ
		// *****************************
		camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 1, 10000 );
		camera.position.set( 0, v_comera_v, 650 );
		scene.add( camera );

		// *****************************
		// 画像リソースの定義
		// *****************************
		var image = new Image()
		image.onload = function () {

			// 画像がロードされてから処理を行う

			// テクスチャとして画像を処理
			texture = new THREE.Texture( this );
			texture.needsUpdate = true;

			// 立体表面を広げ無い(overdraw: false)
			// テクスチャを使った標準材料
			material = new THREE.MeshBasicMaterial({map: texture, overdraw: false });

			// 平面の表 ( 300 x 300 / セグメントの数 5 x 5 )
			mesh = new THREE.Mesh(new THREE.PlaneGeometry(300, 300, 5, 5), material);
			mesh.rotation.x = 0;
			mesh.rotation.y = 0;
			scene.add(mesh);
			
		};
		image.src = v_iamge_url;

		// *****************************
		// 画像リソースの定義
		// *****************************
		var image2 = new Image()
		image2.onload = function () {

			texture2 = new THREE.Texture( this );
			texture2.needsUpdate = true;

			// に立体表面を広げる
			material2 = new THREE.MeshBasicMaterial({map: texture2, overdraw: true});

			// 平面の裏 ( 300 x 300 / セグメントの数 5 x 5 )
			mesh_r = new THREE.Mesh(new THREE.PlaneGeometry(300, 300, 5, 5), material2);
			mesh_r.rotation.x = 0;
			mesh_r.rotation.y = 180 * Math.PI / 180; // 180°( * Math.PI / 180 が固定 )
			scene.add(mesh_r);
			
		};
		image2.src = v_iamge_url2;


		// *****************************
		// 描画用オブジェクト
		// *****************************
		renderer = new THREE.CanvasRenderer();
		renderer.setSize( v_width, v_height );
		// 背景色
		renderer.setClearColor( 0x404040 );

		// コンテナに、描画オブジェクトの本体を登録
		container.appendChild( renderer.domElement );


		// *****************************
		// マウスイベントの登録
		// *****************************
		document.addEventListener( 'mousemove', onDocumentMouseMove, false );

	}

	// *****************************
	// マウス効果用
	// *****************************
	function onDocumentMouseMove( event ) {

		mouseX = event.clientX;
		mouseY = event.clientY;

	}

	// *****************************
	// 繰り返し
	// *****************************
	function animate() {

		requestAnimationFrame( animate );

		// 初回の呼び出し
		render();

	}

	// *****************************
	// 描画
	// *****************************
	function render() {

		camera.position.x += ( mouseX - camera.position.x - v_width / 2 ) * v_action;
		camera.position.y += ( - mouseY - camera.position.y + (v_offset + v_comera_v +(container.offsetTop-window.pageYOffset))  ) * v_action;
		camera.lookAt( scene.position );

		if ( mesh && mesh_r ) {
			mesh.rotation.y -= 0.005;
			mesh_r.rotation.y -= 0.005;
		}

		renderer.render( scene, camera );

	}


</script>

</body>
</html>



posted by at 2014-08-08 22:08 | Comment(0) | Three.js : ベーシック | このブログの読者になる | 更新情報をチェックする
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