@if(0)==(0) ECHO OFF
CScript.exe //NoLogo //E:JScript "%~f0" %*
GOTO :EOF
@end
function wsock_ConnectionRequest(reqId) {
if (socket.State != 0/* closed */) socket.Close();
socket.Accept(reqId);
}
function wsock_DataArrival(bytesTotal) {
var data = script.Run('GetData', socket, bytesTotal);
socket.SendData([
"HTTP/1.1 200 OK",
"Connection: closed",
"Content-Type: text/html;",
"",
"Hello World! " + new Date(),
""
].join("\n"));
// 相手が閉じてくれないので閉じたいけど待たないとレスポンスが無くなる
WScript.Sleep(1000);
socket.Close();
socket.Listen();
}
var socket = WScript.CreateObject('MSWinsock.Winsock', 'wsock_');
var script = WScript.CreateObject('ScriptControl');
script.language = 'VBScript';
script.AddObject('WScript', WScript);
script.AddCode([
'Function GetData(socket, bytesTotal):',
' Dim data:',
' socket.GetData data, vbString, bytesTotal:',
' GetData = data:',
'End Function'
].join(''));
socket.Bind(8080);
socket.Listen();
while (socket.State != 9/* error */) {
WScript.Sleep(100);
}
// vim:set ft=javascript:
GetDataがByRefなので、ScriptControlを使ってます。2009/08/25
バッチファイルで簡易Webサーバを起動する。
ネタ的にはZIGOROuさんかhasegawaさんのネタっぽいが...
2009/08/16
XSLTを使ったAmazon最速検索が動くようになった。
furyu-teiさんの記事でXSLTの場合はendpointを変えないといけない事が分かった。
AmazonのProduct Advertising API認証プロキシ(REST版・GAE用)ソースお陰様で動くようになりました。
XSLTを使用する場合(Styleオプション指定時)、http://webservices.amazon.co.jp/onca/xmlやhttp://ecs.amazonaws.jp/onca/xmlで指定すると認証エラーに。専用のエンドポイント(http://xml-jp.amznxslt.com/onca/xml)の指定が必要らしい。
http://d.hatena.ne.jp/furyu-tei/20090703/paproxy
XSLとjQuery/HTMLだけで作る、amazon最速検索
2009/07/30
IEとFirefox/Google Chromeでクリック/ダブルクリックの発生回数が異なる。
こまったねー。
例えば、divにclickとdblclickを両方割り当てた場合、「トンッ、トントン!」とクリックとダブルクリックを発生させた場合
上の例で言えば
例えば、divにclickとdblclickを両方割り当てた場合、「トンッ、トントン!」とクリックとダブルクリックを発生させた場合
- Firefox/Google Chromeだと「トントン」で2クリックが発生
- IEだと「トントン」では1クリックしか発生しない
<html>
<head>
<script type="text/javascript">
(function() {
var reg = function(e, t, f) {
if (window.attachEvent)
e.attachEvent('on'+t, f);
else
e.addEventListener(t, f, false);
};
reg(window, 'load', function(e) {
var c1 = 0, c2 = 0;
var panel = document.getElementById('click-panel');
var updateStatus = function() {
panel.innerHTML = "click:" + c1 + " dblclick:" + c2;
};
reg(panel, 'click', function() { c1++; updateStatus() });
reg(panel, 'dblclick', function() { c2++; updateStatus() });
reg(panel, 'mouseout', function() { c1 = c2 = 0; updateStatus() });
updateStatus();
});
})();
</script>
</head>
<body>
<div id="click-panel" style="background: blue; width: 600; height: 300"></div>
<body>
</html>
例えば、図を描きたい場合にクリックで多角形を描き、ダブルクリックで完了なんてユーザインタフェースは良くある話。上の例で言えば
- Firefox/Google Chromeは「click:3 dblclick:1」
- IEだとは「click:2 dblclick:1」

