01時20分20秒アプリっぽくなる以前HTAコネタで起動時に位置とサイズを設定するTIPS(てほどでもないが)を紹介したが、それにちょっとひねりを加えて、自動的に位置とサイズを記憶、次回自動時にそれを再現するサンプルを書いてみる。なんとなく、デスクトップアプリっぽいしょ?なお、サンプルでは、矩形情報の読み込み・保存にjson.orgのJSONライブラリを利用しているが、単純なシリアライズ・デシリアライズなので自前でメソッドを用意できるなら特にjson.jsは必要ない。処理のタイミングまず、前のエントリでも書いたが、ウィンドウの位置とサイズを設定するタイミングは、HTA:APPLICATIONタグの出現前にしないと気になるちらつきが発生する。json.jsをロード(または同等の機能の定義・ロード)してからhta:applicationが出現するまでに保存したウィンドウ矩形情報のロードロードした矩形情報を元にリサイズと位置の確定の処理をする必要がある。最終的な矩形情報の保存のタイミングだが、後述の通りdocument.bodyのプロパティを参照するので、window.onbeforeunloadにする。onunloadではdocument.bodyへアクセスできないためエラーになる。面倒なのは、ウィンドウの位置とサイズの正確な取得方法だ。IEにはwindow.screenLeft/screenTopというプロパティがあるが、これはウィンドウボーダーとタイトルバーのサイズを除いた情報しか取得できない。サイズについてはdocument.bodyのoffsetWidth/offsetHeightが取得可能なもっとも外側のサイズのようで、これまたタイトルバーやらとの差がある。するかというと起動直後に位置とサイズを調整するのだからその情報を元に、document.bodyのレンダリングがすんだ時点で差分を取得しておく。保存時はその差分を加えた情報を保存する。いう、ややベタな方法をとることにする。プロパティに、測定サイズと実サイズの差を格納する。savePrefは指定オブジェクトのJSONデータを保存する関数。offsetRectの補正値を加える。);の要領で補正した矩形情報を保存する。サンプルコード実際に位置とサイズを自動保存するHTAのサンプルコードは以下のとおり。);}</script></html>まあ、こんな機能なくてもいいんだけど、ちょっとデスクトップアプリ気分に浸れるので。自分いいかげん誰も興味がないだろうが、JSDBのhttp取得をさらに調べた。Keep-Aliveかい!?ローカルホストに環境変数を返すasp設置して試したら、リクエストヘッダに「Connection」の指定がなかった。keep-alive扱いですか。closeを送りつけたらどうなるかを試そうと思ったが、Streamコンストラクタにhttp://渡した場合はリクエストヘッダのカスタマイズができないぽい。HTTP/1.1\r\n').とか書いてあるので以下のようなコードを実行。以前のエントリ(これやこれ)でハングするだなんだぶつぶついっていたのは、HTTPキープアライブのタイムアウト待ち状態だったということのようだ。実際、IISの設定でHTTPキープアライブのタイムアウトを10秒程度にしたら、待ち時間がそのくらいで制御が帰ってきた。自分まあ、このことから、「Stream#read()で一括読み込みしようとしたら、長い長いタイムアウト待ちになる可能性がある」ということになるので、webのリソースを単純に引っ張ってくるにはこの方法は向かないってことになる。恥ずかしいことに(こればっか)、最初のエントリで行単位読み込みのループがうまくいかなかったのはStream#eofを頼りにしていたからと判明。}で、最初のリクエストに対する応答を全部読み込み終わった時点でループを脱出する。まとめJSDBのStreamをhttpで初期化するとHTTPキープアライブアプリケーションとして動作するリクエストヘッダをカスタマイズするにはnet://で初期化して、いちいちリクエストをwriteln()してやる必要がある行単位のループ処理をする場合はcanReadプロパティをみるべしStream#read()なんて不精をするとタイムアウト待ちに巻き込まれる可能性があるので注意といった感じだろうか。13時47分06秒JSDBがらみでちょろちょろ検索かけてたら、シンテック株式会社というCAD製品なんかやっている企業さんに行き着いた。自社製品のオンラインマニュアルに、JSDBリファレンスの日本語訳版も加えておられる模様。Referenceへ飛ぶと、「分類」フレームに「JSDBライブラリー」のリンクがある。見たところ、手持ちのリファレンス(4/27版に付属)のものと若干内容が異なる部分があるみたいなので、バージョンが違うものかもしれないが、dara-jみたいに「英語読むのマンドクセェ」ってな方には助けになるかも。ファンの皆さまへぐあ、やはり引退かぁ。わかっちゃいたけどショックだなぁ。吊ブックマークレットtumblrのキーボードショートカットが便利になっとる。Chrome編dataスキームの画像をブロックしてみるローカルストレージを確認したり消したりするブックマークレットそうそう、いまさらTwitter始めました。(9)このブログについてJavaScriptとかC#とかPHPとか。