Archive | ภาษา RSS feed for this section

The Art of Unit Testing

ตอนเริ่มทำงานใหม่ ๆ ผมก็พอรู้จัก Unit Test มาบ้างแล้ว แต่ที่รู้จักคือมีแค่ Assertion ธรรมดา สร้างไว้เพื่อทดสอบโค้ดส่วนต่าง ๆ ว่าสิ่งที่ต้องการสร้างนั้นทำงานถูกต้อง เหมือนเวลาเขียนโค้ดแล้วอยากรู้ว่าสิ่งที่เราคิดทำงานถูก ก็จะไปสร้างโปรแกรมเล็ก ๆ มี main แล้วใส่โค้ดส่วนนั้นไว้ลองรันดู แต่หลังจากเริ่มทำงาน สิ่งที่รู็จักเพิ่มขึ้นคือการตั้งค่าต่าง ๆ เพื่อทำให้ Unit Test เดิมสามารถทำงานได้ ช่วงแรกก็พยายามที่จะรัน รู้สึกตื่นเต้นว่ามีเทคนิคต่าง ๆ เยอะเลย มีการกำหนด setup เพื่อสร้าง Object ต่าง ๆ ก่อนทดสอบ มี Class ที่สร้างมาเพื่อใช้ในการทดสอบโดยเฉพาะเรียกว่า Mock แต่กว่าจะรันพวกนี้ได้แต่ละครั้ง เหนื่อยมาก จนสุดท้ายก็เลิกทำ และเลิกเขียนไป หลัง ๆ มีน้องเข้ามาใหม่ ก็พยายามให้น้องเขียน Unit Test แต่ลดพวก dependency พวกนี้ลง ให้มันจบใน Unit [...]

Read full story Comments { 1 }

Flex 4 State

จดไว้กันลืม อันนี้เล่นมาเมื่อคืน อยากรู้มากว่ามันดีขึ้นยังไง พอลองใช้จริงต้องบอกว่าสุดยอดเลยกับ State แบบใหม่ (แต่คนเขียน Flex 3 คงเศร้าใจ เพราะเห็นแล้วบอกได้คำเดียวว่า ย้ายมา Flex 4 เมื่อไหร่ เขียนใหม่หมดแน่นอน!) State ใน Flex 4 ทำให้มองง่ายขึ้นจาก Flex 3 ที่มองว่า State คือชุดของการทำงานที่เปลี่ยนไปในช่วงต่างๆ เช่น State A ให้ เพิ่มหรือลบ Component X ออกจาก Component Y เป็น State คือตัวบอกว่า สถานะนี้ มี Component ไรบ้าง และมีค่าอะไรบ้าง อ่านแล้วอาจงง ๆ ลองดู Code ด้านล่างเปรียบเทียบกันระหว่าง Flex 3 และ Flex 4 ละกัน [...]

Read full story Comments { 0 }

Adobe Flash Builder 4

ได้เล่นตั้งแต่เมื่อวาน ตอนแรกคิดว่าจะไม่ได้ใช้ แต่ยังไงก็เอามาลองหน่อย ไป ๆ มา ๆ License ที่ขอจาก Adobe ตอนที่มันยังเป็น Beta 2 อยู่ดันใช้ได้ด้วยซะงั้น ตอนนี้ก็เลยได้ใช้ฟรีไปเรื่อย ๆ ก็เอามาเขียนซักหน่อยว่ามันมีอะไรดีขึ้นบ้าง สำหรับรูปทั้งหมดอัดอยู่ล่างๆ รวมกัน หลายรูปหน่อย สิ่งที่เพิ่มมาใน Flex 4 คนที่เขียน Actionscript เยอะๆ อาจไม่ค่อยได้ประโยชน์เท่าไหร่ แต่สำหรับคนที่ใช้ MXML แล้ว เรียกได้ว่าเปลี่ยนแปลงขึ้นมาก ทั้งการจัดการ State ที่ดีขึ้น ง่ายกว่าเดิมมาก หรือ Component ชุดใหม่ที่มีการจัดการหน้าตาที่ดีขึ้น สามารถ Export จาก Photoshop หรือ Illustrator ได้เลย โดยดาวโหลด Template จากเว็บ Adobe มา สำหรับ Flash Builder ที่ออกมาใหม่ เรียกได้ว่าปรับปรุงมาเพื่อให้รองรับกับ [...]

Read full story Comments { 0 }

Call JS function from Flash

งานอย่างนึงที่ต้องทำผ่านมาคือเรียกโปรแกรมที่เขียนด้วย Adobe AIR จากเว็บ แต่เรียกอย่างเดียวมันธรรมดาไป ต้องมีการรับค่าจากฟอร์มในเว็บด้วย! ตอนแรกก็คิดว่าไม่ยาก ที่ไหนได้เจออิทธิฤทธ์ของ IE6 เข้าไปถึงกับงงเลยทีเดียว แต่จะเขียนแล้วก็เขียนถึงวิธีเรียกทั้งหมดเลยละกัน ใน Flex framework มีคลาสสำหรับติดต่อกับ Javascript จะใช้เรียกฟังก์ชั่น หรือจะให้ฟังก์ชั่น Javascript มาเรียกใน Flash คือ flash.external.ExternalInterface เวลาเรียกฟังก์ชั่น Javascript จาก Flash ก็ง่ายๆ ด้วยคำสั่ง ExternalInterface.call(“javascriptFunctionName”, “argument1″, “argument2″, … , “argumentN”) แต่ความยากไม่ได้อยู่ที่ตรงนี้ สิ่งที่ทำพลาดจนทำให้ต้องจดคือสิ่งที่อยู่ใน HTML เพราะบราวเซอร์แต่ละตัวเห็น tag object embed ต่างกัน สุดท้ายแล้วทางที่ดีคือคัดลอกเอาจากใน Flex API Document มานั่นแหละ ปลอดภัยที่สุด ลองมาดูของจริงเลยละกัน Javascript ในหน้านี้หน้าตาเป็นอย่างด้านล่าง เมื่อกดปุ่มด้านล่าง จะเรียก function [...]

Read full story Comments { 1 }

Function declaration style and variable scope problem

เป็นปัญหาที่ยังไม่สามารถทำให้เกิดขึ้นอีกในโค้ดแบบอื่นได้ แต่เอามาเขียนไว้ก่อนเพราะมันสร้างความปวดหัวให้กับคนเขียน Javascript มาก่อนมากมาย และไม่รู้จะเจอมันอีกทีเหมื่อไหร่ แต่ไม่สามารถเอาโค้ดต้นฉบับทั้งก้อนมาใส่ในนี้ได้ เลยขอแค่เล่าแล้วเอา stacktrace มาแปะใส่ไว้ละกัน เหตุการณ์เริ่มต้นเกิดจาก @pitiphong_p เจอบั๊กหนึ่งที่ไม่รู็จะแก้อย่างไรเข้าเพราะใน Flash Builder Debugger บอกว่าตัวแปรต่างๆ มีค่าครบสมบุรณ์หมด แต่ error บอกไม่สามารถหาตัวแปรนั้นได้ [Fault] exception, information=TypeError: Error #1010: A term is undefined and has no properties. Fault, CheckboxListRenderer.as:21 21 data.selected = checkbox.selected (fdb) bt #0 this = [Object 32588233, class='global'].(event=[Object 659079665, class='flash.events::Event']) at CheckboxListRenderer.as:21 #1 EventDispatcher/dispatchEventFunction() at :0 [...]

Read full story Comments { 3 }