เว็บ Eclipse ล่วงไปซะแล้วว่าจะไปโหลดรุ่นใหม่มาลองเล่นซะหน่อย ~ ~” แต่ทำให้รู้ว่าเว็บ Eclipse ใช้ Drupal ^^! แต่เข้าไปก่อนล่มบอกว่าจะดาวโหลดต้องบริจาคก่อนด้วยอ่ะ 35$ ขึ้นไป(บังคับบริจาคถึงโหลดได้ เอ๊ะ แบบนี้ไม่เรียกบริจาคแล้วไช่มะ – -”)
Flex RegExpValidator
ตอนแรกว่าจะทำ custom validator เองซะแล้วแต่พี่บอกว่าใช้ตัวนี้ได้ก็เลยนั่งงม regular expression ใหม่ จากของเดิมสมัยจาวาเวลาจะ validate string อะไรก็ตามจะใช้ [\p{L}\p{M}]+ เพื่อตรวจสอบว่าข้อมูลที่ใส่เข้ามานั้นเป็นตัวอักษรหรือป่าว แต่ Flex ดันไม่มีกลุ่ม unicode validator ให้ซะงั้น เลยต้องเลี่ยงด้วยวิธีอื่น แต่แล้วก็ต้องปวดหัวอีกเพราะว่าใส่แค่ [^\W]+ มันดันไม่พอ เพราะมันไม่ได้ validate ทั้งข้อความให้แต่จะแบ่งเป็นช่วงๆ ถ้ามีช่วงไหนถูกตาม pattern ก็ถือว่าถูกทั้งประโยค พี่ก็บอกว่าใน regular expression มีสัญลักษณ์อีกสองตัวที่เข้ามาช่วยคือ ^ กับ $ ใส่ไว้หน้ากับหลังรูปแบบจะเป็นการบอกว่าให้ตรวจทั้งประโยคว่าตรงตาม pattern หรือไม่ผลสุดท้ายก็เลยได้เป็น ^[^\W]+$ ดูแปลกๆ ไม่ค่อยคุ้นตาเพราะคงไม่ค่อยมีใครใช้ ^$ กันซักเท่าไหร่หรอก จากด้านบนผลที่ได้ก็เกือบเทียบเท่า [\p{L}\p{M}]+ หละคือตัดเอาเครื่องหมายประหลาดๆ ออกทั้งหมดเหลือแต่ตัวอักษร ตัวเลขและก็ ‘_’ เหมาะสำหรับเอาไว้ตั้งชื่อต่างๆ ยิ่งนัก แล้วก็ ไม่ต้องสร้าง custom [...]
List กับ ArrayCollection
ช่วงนี้กำลังแก้ Checkbox อย่างจริงๆจังๆ แล้วก็เจอปัญหาตามมามากมาย เริ่มจาก Checkbox ไม่เปลี่ยนหลังจากเลือกไปแล้วเพราะว่า method updateDisplayList ของ renderer ยังไม่ถูกเรียกเมื่อเราคลิกที่ List วิธีที่จะทำให้มันเรียกก็ต้องเซท array กลับไปอีกที แต่ปัญหาใหญ่ที่สุดที่เจอแล้วก็นั่งแก้กับ @iporsut อยู่ซะนานเลยคือเรื่อง List กับ ArrayCollection เรื่องเกิดขึ้นเมื่อตัวข้อมูลที่ใช้อยู่มันดันใช้ข้ามประเภทของ ListBase คือ List กับ DataGrid แล้วทีนี้ DataGrid มันสามารถสั่งเรียงข้อมูลได้โดยกดที่หัวแถว สิ่งที่มันทำคือสร้างวัตถุ Sort แล้วยัดเข้าไปที่ ArrayCollection แล้วสั่ง refresh ซะซึ่งข้อมูลที่ออกมาทั้ง List และ DataGrid ก็ดูเรียงสวยงามดี แต่ว่า List ผมกับ method click ที่ใช้สำหรับแสดง Checkbox ด้วยจะใช้ไม่ได้อีกเลย ตอนแรกก็งงว่าทำไม ลองไล่ดูแล้วก็พบว่า array ที่ผมใช้รับ item [...]
Flex reference กับ Garbage collector
เคยเขียนไปบ้างแล้วเกี่ยวกับ Reference ต่างๆ ใ น Flex ว่าควรจะใช้ Weak reference ให้หมดเมื่อมีการเพิ่ม EventListener ต่างๆ เข้าไปแต่เมื่อสองวันก่อนก็เจอเหตุไม่คาดฝันเข้าเพราะกำลังสร้าง Mock แล้วทดสอบปรากฏว่าฟังก์ชั่น ที่มันควรจะทำมันดันถูกลบไปก่อน เหตุผลก็เนื่องจากว่า ก่อนที่ Flex จะวาดอะไรก็ตามมันจะไปเรียก Garbage collector มาเก็บกวาดทีนึง ดังนั้น หากมีการใช้ Weak reference ก่อนขั้นตอนนี้ซึ่งก็คือ ก่อน Commit properties วัตถุต่างๆ จะถูกกวาดไปจนหมดก่อนที่จะได้วาดออกมาเป็นภาพ วันนั้นก็นั่งแก้ นั่งงง แล้วก็ลองส่งข้อความไปใน twetter ดูแล้วก็เหมือนเกิดเป็นหัวข้อใหม่ คุยกับ @iporsut เกี่ยวกับเรื่องนี้ยาวพอสมควร(ยาวสำหรับผมนะ ;p คนอื่นอาจเห็นว่าไม่ยาว) แล้ว @iporsut ก็ได้ข้อสรุปมาว่า Weak reference นั้นไว้แก้ปัญหาเรื่อง Circular reference (การอ้างอิงวัตถุวนไปวนมา) จริงๆ @iporsut ยังไม่ได้เขียนสรุปอะไรมากหรอก [...]
concat กับ push
หลังจากหาวิธีแก้มานานว่าทำยังไงดีที่จะเพิ่มข้อมูลใส่ Array ให้เร็วขึ้นเพราะว่า ถ้าใช้ฟังก์ชั่นมาตรฐานทั่วไปในการต่อ Array สองอันเข้าด้วยกันชื่อฟังก์ชั่นที่นึกถึงอย่างแรกเลยก็คือ concat แต่ว่าปัญหาเกิดขึ้นเมื่อ Array ที่ใช้มันใหญ่ขึ้น เวลาที่ใช้ในการ concat ก็จะช้าลงๆ แบบรับไม่ได้เลยหละ ซึ่งก็ยังไม่ได้แงะลงไปว่า concat มันทำอะไร แต่ตอนนี้เจอฟังก์ชั่นใหม่ที่ใช้แทนกันได้แล้วนั่นคือ push นั่นเอง ข้อแตกต่างระหว่างสองอันนี้คือ concat จะเชื่อม Array เข้าด้วยกัน แต่ push เป็นแค่การเพิ่มข้อมูลไปท้าย Array ดังนั้นหากใช้ push ต้องไล่ข้อมูลใน Array ที่จะเอามาเชื่อมทีละตัวเอาออกมาแล้วค่อยยัดเข้ามาใหม่ ดูแล้วมันก็น่าจะทำเหมือนกันแต่ปรากฏว่าไล่วนเอง เร็วกว่ากันเยอะเลย – -” public function generatePush(event:MouseEvent):void { var average:Number = 0 var total:int = 10000 var na:Array = new Array() [...]