I got this book from FOWA and left it on my desk (along with other FOWA souvenirs). When I was interested in AIR, I go googling first and never realized that I already have a good AIR guide one-foot-away.
The Adobe Integrated Runtime (AIR) for JavaScript Developers Pocket Guide is written by Adobe developers and published by O’Reilly. It gives a good introduction to develop an AIR application by HTML/JavaScript, not Flash/Flex.
The list price is £9.99 but don’t worry, Adobe has given away this book around to promote AIR. Furthermore, the authors also released the electronics copy under Creative Commons license. Grab it now (PDF link).
I also found one good review of this book from the web.
P.S. I will send this book to elixer as the prize for Blognone 6000th sweepstake.
ได้ยินชื่อเสียงมานาน วันนี้ได้ฤกษ์อ่าน JSON
ให้อธิบายสั้นๆ เนื่องจาก XML มันรก วงเล็บปีกกาเต็มไปหมด ถ้าต้องการแลกเปลี่ยนข้อมูลสั้นๆ ก็ไม่คุ้มที่จะใช้ XML ดังนั้นเราหาวิธีอื่นที่จะอธิบาย object แบบง่ายๆ ดีกว่า JSON ใช้ datatype ของภาษาโปรแกรมที่คนอ่านเข้าใจง่ายกว่า XML แทน แค่นี้เอง
ตอนแรกภาษาโปรแกรมที่ใช้คือ JavaScript (เลยชื่อ JSON) แต่ตอนนี้แทบทุกภาษามี JSON Parser/Generator แล้ว
ถ้ามองในภาพรวม ต้องเอาไปเปรียบเทียบกับ SOAP และ XML-RPC ด้วย
เพื่อความเข้าใจง่าย ดูโค้ดเร็วที่สุด อ่าน เปรียบเทียบ SOAP vs XML-RPC และ โค้ดเดียวกันในรูป JSON
ส่วนบทความ JSON ที่ครอบคลุมและได้คอนเซปต์สุดก็อันนี้ Why JSON isn’t just for JavaScript เดี๋ยวไปลองเขียนโค้ดจริงสักนิด แล้วจะมาบล็อกถึงต่อไป
มีความรู้สึกว่า JSON ต้องดังแบบ RoR ด้วยเหตุผลด้านความเรียบง่ายที่ดันมาถูกที่ถูกเวลา อืม มองในแง่กระบวนการทางสังคมก็น่าสนใจ เป็นการ simplification แบบนึงนี่นะ
Brendan Eich (Mozilla Corporation และคนสร้าง JavaScript) พูดในงาน XTech 2006 เกี่ยวกับ JavaScript 2.0 และอนาคตของเว็บ
สไลด์มาเป็น S5 (เคยเขียนไปแล้ว) เท่าที่ลองพบว่า S5 มันด้อยตรงเลือกหน้าที่ต้องการไม่ได้ ทำได้แค่ไปหน้ากับถอยหลังทีละแผ่น
เนื่องจากสไลด์มันยาว 46 แผ่นแถมมีแต่โค้ด (ตาลายแถมขี้เกียจ) อ่านผ่านๆ ได้ใจความว่าสเปก JavaScript 2.0 เดิมที่เสนอโดย Netscape มาตั้งนานแล้วเสียงตอบรับไม่ดี มีการเปลี่ยนแปลงจากเดิมเยอะ และสืบทอดข้อบกพร่องหลายอย่างจาก Java/C#
Eich จึงเสนอแผนใหม่สำหรับ JavaScript 2 ให้กับ ECMA โดยออกได้อย่างเร็วก็ปลาย 2007 ไม่ทัน Firefox 3 แต่เค้ามองว่าใช้ในอนาคตไกลกว่านั้นอีก
ส่วนเรื่องสเปก มีการแก้บั๊กเก่าโดยเฉพาะบั๊กที่ตัวเลขมันไม่ใช่จำนวนเต็มจริงๆ (อ่านที่ลิ่วเขียน) , syntax และ type ใหม่ๆ หลายตัว เช่น decimal, ตัวสำคัญคือ variable ใหม่ชื่อ "let" ซึ่งจะทำให้บล็อคของโค้ดเขียนง่ายขึ้น มีใช้เยอะเหมือนกันในตัวอย่างโค้ดตามสไลด์
Netvibes เป็นเว็บพอร์ทัลที่ใช้ AJAX/JavaScript หนักมาก วันก่อนเอาให้พี่ต้นกำธรลองเล่นดูก็ชอบใจใหญ่ ส่วนเอฟเฟคต์ที่ง่ายๆ แต่ดูดีคือ title ของเพจที่คลิกแล้วแก้ไขได้เลย
ตรงนี้มันใช้ 2 อย่างผสมกัน คือ JavaScript ไว้แสดงเอฟเฟคต์เดี๋ยวนั้น กับ AJAX ในการส่งค่า title ไปเก็บไว้ที่เซิร์ฟเวอร์
ส่วนของ AJAX นั้นจะทำคล้ายๆ ตัวอย่างนี้ (ใช้ Prototype เป็นไลบรารีซึ่งก็สะดวกดี)
แต่ในส่วนของเอฟเฟคต์ไม่รู้ทำยังไง เลยแกะโค้ดแล้วลองเขียนตามซะเลย
เป็นตัวอย่างการเขียน JavaScript ที่ดี เพราะต้องเรียกใช้ความสามารถหลายอย่าง (โดยเฉพาะ event handler) ถ้าดูในโค้ดจะเห็นว่าส่วนที่เป็น html มีบรรทัดเดียวคือ div และให้ id มันเท่านั้นเอง วิธีทำผมเขียนเป็นคอมเมนต์ไว้ในโค้ดแล้ว
เวลาจะหัดเขียนโปรแกรมภาษาใหม่ซักภาษา เดี๋ยวนี้เรามี tutorial จำพวก Beginner's Guide to ... ซึ่งก็สะดวกมากสำหรับผู้ใช้หน้าใหม่ว่าอะไรเป็นอะไร แต่สำหรับคนที่มีพื้นโปรแกรมมิ่งนิดหน่อยอยู่แล้ว (แบบผม) จะมานั่งอ่านวิธีใช้ for loop, while loop ทุกครั้งมันก็ไม่ใช่เรื่องสนุก พวกนี้ดูตัวอย่างในโค้ดในเขียนตามง่ายกว่าเยอะ สิ่งที่ขาดไป (และยังไม่ค่อยมี) คือ guide ที่บอกว่ามีจุดสำคัญตรงไหนที่เปลี่ยนไปจากภาษาเดิมและ language reference ที่ครบๆ ดีๆ ตะหาก
JavaScript เป็นภาษาที่ออกแบบมาสำหรับเว็บเบราว์เซอร์โดยเฉพาะ ดังนั้นมันจะต่างจากภาษาอื่นๆ ที่ออกแบบมากลาง เพราะแทนที่เอาท์พุทจะออก console มันจะไปออกหน้าต่างของเบราว์เซอร์แทน
สมมติว่าเป็น C# จะใช้
System.Console.WriteLine("Hello");
พอเป็น JavaScript
document.write("Hello"); // สำหรับตัวเพจ
หรือ
window.status("Hello"); // ที่ statusbar ก็ได้
จะเห็นว่าส่วนประกอบของเบราว์เซอร์ (ในกรณีนี้คือ statusbar กรณีอื่นก็พวก urlbar, titlebar, link, form ต่างๆ) จะถือเป็น object ปริยายอยู่แล้ว ดังนั้นอันที่ยากคือเราจะรู้ได้ยังไงว่า JavaScript มันมี object อะไรบ้าง ใครลูกใคร มี property และ method อะไร
ซึ่งมันมหัศจรรย์มากว่าผมหา reference พวกนี้ไม่เจอบนหน้า JavaScript ของ Mozilla.org ซึ่งเป็นคนคุมสเปกของ JavaScript
ใช้ Google เจ้าเก่ากับ Wikipedia เจ้าใหม่ก็ได้อันที่ควรเก็บไว้ดังนี้