最近のトラックバック

スクリプト Feed

2012年3月25日 (日)

eoblogでのgoogle-code-prettifyの利用

20120227_google
Image by http://icondock.com/
eoblogでgoogle-code-prettifyを利用する方法についてのメモです。
eoblogではbodyタグを改変する事が出来無い事に対する解消法と、
細々とした注意事項を纏めています。

続きを読む »

2012年3月19日 (月)

V8 JavaScript Engine を VS2010 でビルド(GYP版)

20120319a_v8engine01
V8 JavaScript Engineを使おうとVS2010でビルドし始めたら、
えらい迷ったのでビルドの仕方をメモしておきます。

V8 JavaScript Engineは2011年5月2日迄、
VS2005のソリューションファイルが付いていた様です。
しかしその日以降GYPと呼ばれるビルドシステムに移行した様で、
ソリューションファイルは提供されなくなっています。

GYP導入後に於けるVisualStudioに依るビルドですが、
まずGYPを使ってソリューションファイルを生成します。
そのソリューションファイルを使って、
VisualStudioでビルドする形になります。

続きを読む »

2012年2月27日 (月)

google-code-prettify組み込み中

20120227_google
Image by http://icondock.com/
eoblogは制限きついのですが、
google-code-prettifyを組み込めるかテスト中です。

0時55分 追記
1発で成功しました。 出来そうですので、追々スタイルシートやらを詰めて行きます。

3時45分 追記
一通り完成しました。 のちのち遣り方纏めます。

続きを読む »

2006年1月 3日 (火)

JScriptでバイナリ操作(7)

特に更新した所は有りませんが、リンク切れが発生してたので上げ直しておきます。

CBinaryクラス(Version1.4.0)

2005年12月11日 (日)

JScriptでバイナリ操作(6)

Base64系もいつか付けたいと思っていました。
ただ、自前で変換関数作るのは面倒くさいし、
早く成ら無いだろうなぁと後回しにしていました。

しかし、調べてみるとActiveXObjectに変換を行える方法が有る事が分かり、衝動的に作ってしまいました。

CBinaryクラス的には、機能はもうこんなもんで良いんじゃないでしょうか。
今後の機能拡張は継承したクラスで行っていくって感じじゃないですかね。
まぁ、当面は機能追加よりデバッグでしょうかねぇ。

CBinaryクラス(Version1.4.0)

2005年12月10日 (土)

JScriptでバイナリ操作(5)

Text系の関数が実は全く機能していませんでした。
ADODB.Streamの仕様を完全に勘違いしてました。
しかもそれを1ヶ月近く公開してた訳ですからね。
情け無い事この上無いですね。

CBinaryクラス(Version1.3.0)
と言う事で、Text系の関数を(正しく使えば)まともに動作する様に修正しました。
しかし、どうもADODB.Streamの文字コード自動選択機能が当てに成ら無いので、自前で文字コードを設定しなければいけないっぽいです。
内部処理は"Unicode"で処理してるはずなのに文字コード自動判別で"Unicode"が読め無いってどういうことよ。
自前で文字コード解析するのも、それはそれで面倒だしなぁ。

あと、ネットワーク上にあるファイルの取得にも対応しておきました。
これで結構使える物に成ったんじゃないでしょうかね。

2005年11月15日 (火)

JScriptでバイナリ操作(4)

Write関数を改良しようと頑張ってました。
そして改良し終えました。

…遅くなりました、痛恨なり。

結局、旧アルゴリズムに戻したので、改良規模は皆無です。
しかしながら、バックアップ的意味合いでアップロードしておきます。
CBinaryクラス

2005年11月 8日 (火)

JScriptでバイナリ操作(3)

CBinary生成付近をやや改良しました。
CBinaryクラス

生成(コンストラクタ)は型変換(キャスト)として使うべきかなと思い、その様に変更しました。

CBinaryとActiveXObject("ADODB.Stream")を見分ける方法が分かれば、ActiveXObject("ADODB.Stream")からの型変換(キャスト)も出来るんですけどね。

2005年11月 6日 (日)

JScriptでバイナリ操作(2)

JScriptでバイナリ操作を簡単に行える様にするクラスを作成していました。

成果物がこのCBinaryクラスです。
一応、一通り完成しました。

前回のVBScriptの力を借りていた時よりも軽くなったんですが、
色々機能追加していたら殆ど同じ重さになってしまいました。

2005年11月 2日 (水)

JScriptでバイナリ操作

JScriptでWSHを利用していると屡々、バイナリ関連の操作で苦労することが有ります。
“そんなにVBScript使って欲しいのか?”と思うぐらいに、
JScriptではバイナリが扱えません。

個人的にメモリ管理とかしなくて良いスクリプト言語で、
バイナリが操作出来れば結構色々な所で楽が出来ると思ってます。
と言う事で、バイナリ操作を行うクラスを作っていくことにしました。

現在の所、こんな感じです。

<script language="JScript">
//classBinaryIO
// numBytesLump 数字(略可) 処理の単位(1:1バイト,2:2バイト,4:4バイト,8:8バイト)
// numEndian 数字(略可) 処理のエンディアン(0:リトル,1:ビッグ)
function classBinaryIO(numBytesLump, numEndian) {
//property
this.BytesLump = Number( numBytesLump != null ? numBytesLump : 1 ); //1=1;2=2;4=4;8=8;
this.Endian = Number( numEndian != 1 ? -1 : 1 ); //Big=1;Little=-1;
this.Ados = new ActiveXObject("ADODB.Stream");
this.Type = 1;//Binary=1;Text=2;
this.BinaryIndex;

//static-property
//set-method
//get-method
//method
this.Open = Open;
this.Close = Close;
this.Read = Read;
this.Write = Write;
this.WriteAry = WriteAry;
this.IsEOF = IsEOF;

//constructor function
{
this.BinaryIndex = MakeBinaryIndex();
}
//set-method function
//get-method function
//method function
function Open(strFilePath) {
this.Ados.Type = this.Type;
this.Ados.Open();
if (strFilePath != null) {
this.Ados.LoadFromFile(strFilePath);
}
}
function Close(strFilePath) {
if (strFilePath != null) {
this.Ados.SaveToFile(strFilePath, 2);
}
this.Ados.Close();
}
function Read(numData) {
var numBinary = 0;
var aryOut = new Array();
for (var i = 0; i < numData; i++) {
aryOut[i] = 0;
for (var k = 0; k < this.BytesLump; k++) {
if (this.Ados.EOS) {
var error = new Error(0x0001, "EOFに到達しました。")
throw error;
}
numBinary = Number(BinaryRead(this.Ados.Read(1)));
if (this.Endian == 1) { //BigEndian
aryOut[i] <<= 8;
} else { //LittleEndian
numBinary <<= 8 * k;
}
aryOut[i] |= numBinary;
}
}
return aryOut;
}
function Write(numData) {
var numByte = 0;
for (var i = 0; i < this.BytesLump; i++) {
numByte = 0xFF & (numData >> (8 * ((this.Endian == 1)? this.BytesLump - 1 - i: i)));
this.Ados.Write(this.BinaryIndex[numByte]);
}
}
function WriteAry(aryData) {
for (var i = 0; i < aryData.length; i++) {
this.Write(aryData[i]);
}
}
function IsEOF() {
return this.Ados.EOS;
}

//static function
function MakeBinaryIndex() {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var strTempBinarypFile = fso.GetParentFolderName(WScript.ScriptFullName) + "\\" + fso.GetTempName();
var strSemiBinary = "";
/*0x00-0x80*/ for (var i = 0x00; i <= 0x80; i++) strSemiBinary += "_" + VB_Chr(i);
/*0x81-0xFC*/ strSemiBinary += "abcdefghijklmnopqrstuvwxyz央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改";
/*0xFD-0xFF*/ for (var i = 0xFD; i <= 0xFF; i++) strSemiBinary += "_" + VB_Chr(i);
var txtOut = fso.OpenTextFile(strTempBinarypFile, 2/*書込専用*/, true/*不在時作成*/);
txtOut.Write( strSemiBinary );
txtOut.Close();
var BinaryIndex = new Array(0x100)
var ados = new ActiveXObject("ADODB.Stream");
ados.Type = 1;//Binary=1;Text=2;
ados.Open();
ados.LoadFromFile(strTempBinarypFile);
for (var i = 0x00; i <= 0xFF; i++) {
ados.Read(1)
BinaryIndex[i] = ados.Read(1)
}
ados.Close();
fso.DeleteFile(strTempBinarypFile);
return BinaryIndex;
}//MakeBinaryIndex
} //classBinaryIO()
</script>
<script language="VBScript">
FUNCTION BinaryRead(vIn)
BinaryRead = AscB(vIn)
END FUNCTION

FUNCTION VB_Chr(numIn)
VB_Chr = Chr(numIn)
END FUNCTION
</script>

一部VBScriptに逃げてしまいました。
また、一回ファイルに書き出しているなど、はっきり言ってスマートじゃ無いです。
駄目ですね、本末転倒です。
JScriptのみで作り上げないと汎用性が有りませんからね。

もっと簡単に出来そうな資料発見したんで、後日作り直す事にします。

追記:
タブや先頭のスペースは無視されるし、
<とかがまともに表示されないし、
文字参照も通用しないし、
どうやってソースを公開しようか。