XAMP
DL先: http://www.apachefriends.org/jp/xampp.html
Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport System for Win32 and NetWare Systems v3.32, Ming, JpGraph, FileZilla FTP Server, mcrypt, eAccelerator, SQLite, WEB-DAV + mod_auth_mysql.
が含まれているらしい。多いなぁ。
僕は趣味でこちょこちょやるときはZend Serverを使っているので、しばらく使う機会がない かもしれないけど、
一応メモ。
JavaScript idiom
[|| operator]
var middle = stooge["middle-name"] || "(none)";
var status = flight.status || "unknown";
---------------------------------
備忘録
function makeTile(size) {
var table = document.createElement("table");
var tbody = document.createElement("tbody");
for (var i = 0; i < size; ++i) {
var tr = document.createElement("tr");
for (var j = 0; j < size; ++j) {
var td = document.createElement("td");
var cs = new CellState(td);
td.onmouseover = function() { cs.darken(); };
td.onclick = function() { cs.whiten(); };
tr.appendChild(td);
}
tbody.appendChild(tr);
}
table.appendChild(tbody);
return table;
}
td.onmouseover = function() {cs._darken();}; だと、csはmakeTitleオブジェクト内のスロットのcsを参照する -> 結果、onmouseoverで評価されるcsは最後にnewされたcsとなる。
onmouseoverの実行時に評価される?その時のScopeの中のcsを探す。目的のインスタンスはすでに上書きされている。
td.onmouseover = (function(cs_) { return function() { cs_.darken(); }; })(cs);
新しくオブジェクトを作って、スロットを新しく作っている.cs_オブジェクトを新たな内部関数に閉じ込めることができる。
-----------------------------------------------
var CUSTOMOBJ=CUSTOMOBJ || {};
(function(){
var L = CUSTOMOBJ;
var h = {
str : "hoge",
setString : function(str)
{
this.str = str;
},
getString : function()
{
return this.str;
}
};
(function(receive, supply)
{
for (p in supply)
{
if (!receive.hasOwnProperty(p))
{
receive[p] = supply[p];
}
}
})(L, h);
}());
CUSTOMOBJ.setString("ほげ");
alert(CUSTOMOBJ.getString());
YUIで使われている拡張手法。
Globalに定義したCUSTOMOBJを無名関数の中で拡張している。
