たまにvimを使ってると、保存したいのか知らんが間違ってCtrl+Sを押してしまうことがあります。するとターミナルがフリーズしますね。Puttyに限らずターミナルエミュレータ全般の話のようですが。
Ctrl+Qを押せば復活するんですが、今でもたまに押してしまって面倒なので、AutoHotKeyでガードするようにしました。
#IfWinActive, ahk_class PuTTY
{
^s:: Send, {}
}
たまにvimを使ってると、保存したいのか知らんが間違ってCtrl+Sを押してしまうことがあります。するとターミナルがフリーズしますね。Puttyに限らずターミナルエミュレータ全般の話のようですが。
Ctrl+Qを押せば復活するんですが、今でもたまに押してしまって面倒なので、AutoHotKeyでガードするようにしました。
#IfWinActive, ahk_class PuTTY
{
^s:: Send, {}
}
JsMockitoとかJSMockとか色々あるようですが、変にDSLのようなものを覚えるのも面倒だったのでスパッとモックできるようにしてみました。
機能は任意の関数を、別の関数で一時的に置き換えるだけです。Ajaxを使うような関数のユニットテストなどがやりやすくなります。
// Mock.makeで関数を置き換え。
// 最初の引数は関数名で、次は関数オブジェクト。
Mock.make("some_func", new_func);
// some_funcを呼ぶとnew_funcが実行される
some_func();
// Mock.revertで元に戻る
Mock.revert("some_func");
// Mock.revert_allで全てのモックが元に戻る
Mock.revert_all();
// prompt()をモックしてみる
Mock.make("prompt", function(title, text){
return "あばびぶべー!";
});
var name = prompt("What's your name?")
console.log(name); //=> "あばびぶべー!"
Mock.revert("prompt"); // これでもとに戻った
test("#save saves the text", function(){
var ajax_called = false;
// $.ajaxをモックする。
Mock.make("$.ajax", function(opts){
ajax_called = true;
// $.ajaxが呼ばれたときにオプションが適切かどうかをassertする
equals(opts.url, "/jsapi/pages/set_title");
equals(opts.type, "post");
equals(opts.data.id, page_id);
equals(opts.data.title, new_title);
// successコールバックを呼ぶ。
opts.success({success:true}, null, null);
});
// MyLibrary.saveは$.ajaxを呼ぶはず。
MyLibrary.save(25, "This is the new text.");
ok(ajax_called, "Ajax was called.");
});
var Mock = {
store: {},
make: function(funcname, newfunc){
if (this.store[funcname]==undefined){
this.store[funcname] = (function(){
return eval(funcname);
}).apply(arguments.caller);
}
(function(){
eval(funcname+"=newfunc;");
}).apply(arguments.caller);
},
revert: function(funcname){
if(this.store[funcname]!=undefined){
var self = this;
(function(){
eval(funcname+"=self.store[funcname];");
}).apply(arguments.caller);
this.store[funcname] = undefined;
}
},
revert_all: function(){
for(var funcname in this.store){
this.revert(funcname);
}
},
};
できません。
つまりscaleXやrotationは必ず(0,0)を基準点として行われる。
別の基準点でスケールや回転をしたい場合はtransform.matrixに新しいMatrixをセットする必要がある。
var mat:Matrix = new Matrix(); mat.translate(-50, -50); mat.rotate(45*Math.PI/180); mat.translate(50, 50); mat.concat(_sp.transform.matrix); myobj.transform.matrix = mat;
参考:DisplayObject – ActionScript 3.0 Language and Components Reference
テクニカルなドキュメントを書くなら何を書くべきか、という記事。
Writing great documentation: what to write.
元記事でも言われてるが、トピックガイドというのは公式ドキュメントに含まれてることが少ない気がする。そういえば一番役に立つのは全体を見渡せるし具体例にも触れられるトピックガイドなのかも。たとえばプログラミング言語やフレームワークなどの場合、いくらリファレンスが充実していても、トピックガイドがないと膨大なモジュールのうちどれを使えばいいのかが分からなかったりする。
ドキュメントの自動生成については元記事と同意しかねるかな。リファレンスなら自動生成でいいでしょと思う。残りの部分はそもそも手で書くしかないわけだし。
Djangoのドキュメントが優れてるらしい。僕がこれまでに見た中で優れたドキュメントといえば…。うーむ。何があったかな。The Subversion Book?CodeIgniterのドキュメントも良かったと思う。
Flash CS5がリリースされたということで。
物理エンジンってついてたんや。
Flash内のASエディタはCS3では割と使いにくいので是非とも新しいのを使ってみたい。
ソース:Flash CS5 First Look: Adobe Drops a Hefty Update Into Stormy Waters| Webmonkey | Wired.com.
ちなみにInDesign CS5ではe-bookを作りやすくなったらしい。
InDesign CS5 introduces interactivity to page layout – Yahoo! News