/ 最近 .rdf 追記 編集 設定 本棚

脳log[20170307]



2017年03月07日 (火) [Vista] 昨日知ったこと。Scripting.FileSystemObjectでバイナリファイルを Unicodeファイルとして読んだとき、それは UTF-16LEと UTF-16BEのどちらとも解釈されうるが、先頭の2バイトを見てもそれはわからない。それならいっそ「UTF-16LEにしか対応していません」の方がよっぽどましなんですよ。どうして UTF-16BEとして解釈されたのかがわからないから、バイトを並べ替える必要があるのかないのか判断がつけづらい。■Scripting.FileSystemObjectが返す Fileオブジェクトのタイムスタンプ(DateLastModifiedとか)が組み込み型の Dateではない謎の型なのって結構な罠。new Date(File.DateLastModified) みたいに Date型のコンストラクタに渡す以外の使い道が見つけられないのに、その唯一の使用法が載っていない。■今日知ったこと。WScript.Arguments.Namedが返す WshNamedオブジェクトは名前付きのコマンドラインオプションに名前でアクセスするために用意されてるんだけど、名前のリストを列挙するメンバーがドキュメントには存在していない。数字を引数にしたり添え字にしたりしても何も引き出せないし、JavaScriptらしく for...in しても列挙できない。この、JavaScriptになじまない感じ、DateLastModifiedを Dateでラップする感じ、フォルダやファイルのコレクションを Enumeratorでラップするのと同じ感じ……。new Enumerator(WScript.Arguments.Named) でキーを列挙できるんだね。初めて知ったよ。WSH5.6の HTMLヘルプの更新日時が 2001年だっていうから、16年目の発見!■まだわかっていないこと。Dateのコンストラクタのひとつが year, month, date,...というパラメータのリストを受けとるんだけど、手元に "2017-03-07".split("-") したような配列がある場合、Functionオブジェクトの applyメソッドを使って引数リストを配列で与えたくなる。だってそうすると変数に入った文字列が時分秒まで含んでいた場合もひっくるめて "2017-03-07 23:34:00".split(/[- :]/) で処理できるから。でも new演算子ってちょっとなじみが悪くて、この場合に組み合わせて使えない感じ。■あ、だめだ。monthは 0-11の範囲の数字なんだった。splitしたそのままでは使えない。