ラベル windows の投稿を表示しています。 すべての投稿を表示
ラベル windows の投稿を表示しています。 すべての投稿を表示

2011年7月21日木曜日

(小ネタ)IEの512byte問題。圧縮転送したらさらに問題

■概要

通常HTTPリクエストに対して成功した場合は、HTTPレスポンスコード200で返答します。しかし「ページが見つからない場合」は通常404で返します。

しかしカスタマイズした404.html等を準備し、レスポンスコード404で返しても、IEは下記のような残念な画面を表示される事があります。



準備したhtmlを表示したいので何とかする必要があります。

■説明

IEには特別な仕様があり、「HTTPエラーメッセージを簡易表示する(デフォルトはオン)」というオプションの機能により「512byte」以下のContent-Lengthで返信した場合は文字通り「簡易表示」してしまいます。

またこの仕様はたちの悪い事に「圧縮転送後のサイズが512byte」になります。よってgzip転送を行うとそれなりのサイズで返信しても「簡易表示」される可能性があります。

よって
  • 無駄な内容を追加して圧縮後も512byteを超えるようにする
  • 圧縮転送設定を上記の場合はオフにする
のような対処がいります。

■参考

http://neta.ywcafe.net/000558.html

2011年1月29日土曜日

CoffeeScriptをWindowsで使う

■概要

CoffeeScript面白いのですが、*nix系でしか利用できない。と思ってましたが、*.coffee -> *.jsのコンパイルだけならWindowsでも可能な方法を発見したのでご報告します!

■方法

http://jashkenas.github.com/coffee-script/ からcoffee-scriptをダウンロード。
・解凍して、extras/coffee-script.jsを取り出す。
・coffee-script.jsと同じフォルダに、下記の様な感じでcoffee-scriptコンパイラを利用するスクリプトを作成する
  ※色々処理はしょってるので要注意!

// compiler.js
var fs = WScript.CreateObject("Scripting.FileSystemObject"); 

//coffeescriptを読み込んで評価
var path = WScript.ScriptFullName.replace(WScript.ScriptName,"");
eval(fs.OpenTextFile(path + "coffee-script.js", 1).ReadAll()); 

//
// ここからメインです。
//
var args = WScript.Arguments;
if (args.length == 0) {
  WScript.Echo("error: please Drag And Drop *.coffee file!");
} else {
  for (var i = 0; i < args.length; i++) {
    var src      = fs.OpenTextFile(args.Item(i), 1).ReadAll();
    var compiled = CoffeeScript.compile(src);
    var file     = args.Item(i).replace(".coffee", ".js");
    fs.OpenTextFile(file, 2, true).Write(compiled);
  }
}

・*.coffeeなファイルをドラッグ & ドロップすると、*.coffeeと同じフォルダに*.jsが出来上がります!

■参考

・JScriptでimport スマートにできないかなぁ http://d.hatena.ne.jp/TakamiChie/20080403/1207227691

■2011/01/29 12:45

書き込み時に新規作成フラグtrueがついていませんでしたので修正しました。