_____ปกติผมพยายามจะตั้งใจอ่าน paper ที่สนใจให้ได้อย่างน้อยวันละ 1 paper ตั้งใจทำอย่างนี้มาสองเดือนแล้วครับ แต่ก่อนก็อ่านแต่เป็นแนวอ่านทีเดียวรวด เจออันไหนดี save เก็บไว้แต่พอไปได้ฟังนักวิจัยท่านหนึ่งพูดไว้ถึงเรื่องการพัฒนาความรู้ และวิธีการจัดการองค์ความรู้ผมจึงเริ่มเปลี่ยน ตั้งใจอยากจะสร้างกิจวัตรเสียใหม่ ไม่ใช่พอจะต้องเขียน paper ก็โหมอ่านทีละหลายสิบ paper ผลเสียที่ต้องยอมรับคือไม่อิน ไม่สามารถเก็บรานละเอียดได้ดี แต่แล้ววันนี้ก็ไม่ได้อ่านอะไรใหม่ เพราะมัวแต่นั้งแปล TIMEs online ตอนแรกว่าจะไม่อ่านจนจบเอาเข้าจริงๆมันอินเลยเสียเวลานั่งอ่านซะ จริงๆแล้วก็กลัวว่าจะไม่มีเรื่องไปโม้กับคนอื่น ส่วนเนื้อหาเป็นอย่างไรอยากรู้เอาไว้คุยกันหลังไมค์จะดีกว่า

______แวะเข้ามาเรื่องของเราบ้างดีกว่าก่อนที่จะออกเขมรไปซะก่อน ตั้งใจจะแวะเอาข่าวของ Google Javascript toolsbox ที่วันนี้ google ได้ปล่อยเวอร์ชั่น opensource มาแล้ว จากเดิมที่เป็น compression javascript สำหรับนักพัฒนา web application ที่ต้องใช้ ajax แล้วยังไม่มี lib คู่ใจผมว่า google js นี้ก็ไม่เลยนะครับ เร็วและใช้งานได้ดีทีเดียวและเป็นไลบารีตัวเดียวกับที่ google ใช้ใน application หลายตัว js lib ที่ว่านี้เรียกว่า Closure ผมชอบในเรื่องของการประมวลผล xml แบบ DOM และส่วนของ การทำงานกับ json มาก และความสามารถ cross-browser compatible ท่านที่สนใจแวะไปดาวน์โหลด code ได้ที่ http://code.google.com/p/closure-library/source/checkout แต่ผมไม่แนะนำให้แกะเพราะมันซับซ้อนมากจริงๆ ถ้ามีเวลาว่างมากก็น่าจะลอง  หรือท่านสามารถใช้ความสามารถของ closure-compiler ในการ optimze javascript เพื่อให้เล็กและเร็วได้อีกด้วย

1

_______ตัวอย่างผมมี code ภาษา javascript สำหรับ process ข้อมูล Geojson ด้วย ajax ยาวประมาณ 100 บรรทัด ผมลอง compress เหลือประมาณ 30 บรรทัด

_____ส่วนการใช้งานของ Closure ก็ไม่ยากครับ สไตล์ API แบบ Google Map ผมมีตัวอย่าง code ง่ายจาก doc ของ google มาฝากครับ

<html>
<head>
<title>goog.ui.Checkbox</title>
<script src=”../base.js“></script>
<script>
goog.require(‘goog.dom’);
goog.require(‘goog.events’);
goog.require(‘goog.ui.Checkbox’);
goog.require(‘goog.ui.Checkbox.State’);
</script>
<link rel=”stylesheet” href=”css/demo.css“>
<link rel=”stylesheet” href=”css/checkbox.css“>
</head>
<body>
<h1>goog.ui.Checkbox</h1>
<p>This is a tri-state checkbox.</p>
<div><span id=”all”></span>root</div>
<div style=”margin-left: 1em;”>
<div><span id=”leaf1″></span>leaf 1</div>
<div><span id=”leaf2″></span>leaf 2</div>
</div>
<script>
var all = new goog.ui.Checkbox();
all.decorate(goog.dom.$(‘all’));
all.setLabel(all.getElement().parentNode);
var leaf1 = new goog.ui.Checkbox();
leaf1.decorate(goog.dom.$(‘leaf1’));
leaf1.setLabel(leaf1.getElement().parentNode);
var leaf2 = new goog.ui.Checkbox();
leaf2.decorate(goog.dom.$(‘leaf2’));
leaf2.setLabel(leaf2.getElement().parentNode);
function rootChanged(e) {
leaf1.setChecked(all.getChecked());
leaf2.setChecked(all.getChecked());
}
function leafChanged(e) {
var same = leaf1.getChecked() == leaf2.getChecked();
all.setChecked(same ? leaf1.getChecked() :
goog.ui.Checkbox.State.UNDETERMINED);
}
goog.events.listen(all, goog.ui.Component.EventType.CHANGE, rootChanged);
goog.events.listen(leaf1, goog.ui.Component.EventType.CHANGE, leafChanged);
goog.events.listen(leaf2, goog.ui.Component.EventType.CHANGE, leafChanged);
</script>
</body>
</html>

อ้างอิงจาก

http://arstechnica.com/open-source/news/2009/11/google-opens-up-its-javascript-development-toolbox-to-all.ars