makotofのブログ
Amebaでブログを始めよう!

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を使っているので、しばらく使う機会がないかもしれないけど、

一応メモ。

Diff ツール

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を無名関数の中で拡張している。