- lftp の mirror がちゃんと動かないのを調査。
-- ファイルを更新しても転送しない何で?
-- 1日以上差が有ると転送するみたい... 意味不明。
-- 解決した:http://d.hatena.ne.jp/shidho/20070604
set ftp:use-mdtm no
set ftp:timezone -9


- IE6 の透明PNG対応。
-- AlphaImageLoader も iepngfix も効かねー
-- やり方間違ってる?

- FireFoxのIFRAMEの隙間の調査。
-- なんか 4px ぐらい下側に隙間ができる..
-- padding,margin: 0px なのに。

- github.com, sourceforge.jp の検討。
-- github.com 勧められましたが英語にびびりまくり。

- frame に<- ->ボタンつけたい。
- ドキュメントの基盤拡張の項。
- テスト作成


Subject: IEでもyieldが使えるよん
Content-type: lovelog/text
Tags: JavaScript
Date: 2009/11/07
Public: yes

さて公開した WSJS ですが目玉機能はIEでもyieldが使える事です。
yieldは非常に便利ですがFirefoxでは使えますがIEでは使えないので実質使えない物とされていました。
いわいる 「IE氏んでくれ」 ってやつです。

で、何とかIEでもyieldが使えないかと考えて作ったのがEXJSと言う機能です。
これは勝手に仕様拡張したJavaScriptをサーバ側で通常のJavaScriptにコンパイルしてブラウザに返す仕組みです。
通常のJavaScriptの機能を越えた拡張はできませんが非同期処理は手動で実装して行っている訳ですからコンパイルして生成する事も可能です。

使い方はこんな感じです。
チュートリアルから:

function slide(item) {
var x = item.offsetLeft;
var xadd = 10;
var xmax = item.offsetParent.offsetWidth-item.offsetWidth;
while (true) {
yield sleep(__This, 50);
{
x += xadd;
if (x < 0 || x>xmax) xadd = -xadd;
item.style.left = x+"px";
}
}
}
function sleep(_this, wait) {
setTimeout(function(){
try{_this.next();}catch(e){
if (e != StopIteration) alert(e.message);
}
}, wait);
}


ここで __This は独自の拡張でジェネレータの生成したイテレータを指します。 これが無いと結構めんどくさいコードになってしまいます。

詳しくはホームページのチュートリアルを見てください。

yieldに付いての情報は、この辺りをどうぞ。
http://blog.s2factory.co.jp/umeta/2008/03/javascript-yield.html
http://piro.sakura.ne.jp/latest/blosxom/webtech/javascript/2006-08-07_yield.htm
http://labs.cybozu.co.jp/blog/kazuho/archives/2007/05/coopthread.php
http://d.hatena.ne.jp/amachang/20060805/1154743229
http://route477.net/d/?date=20080303