Archive | ภาษา RSS feed for this section

Lua

หลังจากเล่น Prosody มาได้ซักพักก็พบความมหัศจรรย์หลายอย่าง โดยเฉพาะ Lua ที่ Prosody ใช้เขียน ที่รู้สึกมหัศจรรย์เพราะว่ามันทำให้รู้สึกว่า Java มันอ้วนไปเลย เพราะจะเขียนยังไงให้เล็กเท่าไหร่ มันก็ใช้แรมน้อยกว่า Lua ไม่ได้เลย (แต่เร็วกว่าหรือป่าวอีกเรื่องนึง) โดยเฉพาะโปรแกรมเล็กๆ อย่าง XMPP Bot ซึ่งก็พอรู้อยู่แล้วอ่ะนะ นอกจากเรื่อง Memory ที่ Lua ทำให้ประทับใจแล้วก็มีเรื่องหน้าตาภาษาที่เรียนรู้ง่าย อาจเป็นเพราะคุันเคยกับ Javascript อยู่แล้วด้วย เพราะหน้าตาแทบจะเหมือนกัน ต่างกันพวกประกาศตัวแปรเล็กน้อย กับ Thread ที่เรียกต่างจากชาวบ้าน ส่วนการสร้าง Class, Object ต่างๆ เรียกว่าเหมือน Javascript เลยดีกว่า ตอนนี้ก็คิดเล่นๆ ว่าจะลองเขียนโปรแกรมเล็กๆ ซักตัวมาลองเชื่อม Prosody กับ Caldavd เข้าด้วยกันโดยไม่ต้องผ่าน WordPress เหมือนจะเป็น Project ทดลองมากกว่า เพราะอยากลอง 0mq เป็นการเฉพาะ [...]

Read full story Comments { 0 }

[Java] Runtime.exec() stream

ได้งานประหลาดมาอย่างพี่บอกว่า process Java เปิด PIPE เต็มไปหมดหามาให้หน่อยเกิดจากอะไร ช่วยกันขุดไปมาสามคนสุดท้ายพบว่ามาจาก Runtime.exec() ที่เปิด Stream ให้ทีเดียว 3 Stream แล้วโค้ดเก่าที่เอามาใช้ดันปิดแค่อันเดียวที่ดึงผลลัพธ์ออกมา สิ่งที่เกิดขึ้นคือถ้า Process ทำงานไปเรื่อยๆ แล้วเรียก Runtime.exec() ซ้ำไปมา PIPE ก็จะโผล่ขึ้นมาเรื่อยๆ ประมาณนี้ วิธีแก้ก็ง่ายๆ ได้ Process ออกมาเสร็จใช้แล้วก็ปิด Stream ที่ให้มาด้วยซะ เช่นๆ คำถามคือถ้าไม่ปิดจะเกิดอะไรขึ้นมั้ย จากเท่าที่สังเกตคือ ถ้าไม่ยอมปิดมันก็จะหายไปอย่างเงียบๆ เมื่อถึงเวลาหนึ่งแต่เพื่อความปลอดภัย ใช้แล้วก็ปิดเถอะ

Read full story Comments { 6 }

[Flex] Redispatch event

@arzeknight มาถามเกี่ยวกับ event ว่าทำไม redispatch แล้ว object มันไม่เหมือนต้นฉบับ โค้ดก็ง่ายๆ จาก Class ด้านบนถ้ามี Controller อื่นมา handle CustomEvent.SAMPLE ต่อ event ที่ได้ไม่จำเป็นต้องเป็น Class เดียวกับที่ dispatch มาตั้งแต่ต้น เพราะสิ่งที่ Flex ทำถ้าหากมีการ redispatch คือสั่ง clone event object นั้น เพราะฉะนั้นหากใช้ redispatch บ่อยๆ + custom event อย่าลืม implements clone ก่อนที่จะงงว่าทำไมได้ Object นี้ออกมาแทน

Read full story Comments { 0 }

Play! Suspend Job

เวลาเจอ request ที่ต้องประมวลผลนานกว่าปกติ ถ้าใช้ method ปกติ handle Play! จะยกเลิก thread นั้นทิ้งทำให้ไม่ได้ผลลัพธ์อย่างที่ต้องการ เช่นย่อภาพ หรือหมุนภาพแล้วต้องการรู้ว่าเสร็จเมื่อไหร่เพื่อเอามาแสดง คนทำ Play! ก็คงรู้เลยทำ Suspend Job ไว้ให้สำหรับงานแบบนี้โดยเฉพาะ ลองดูตัวอย่างหมุนภาพด้านล่าง เริ่มจาก class ที่ทำหน้าที่ในการหมุนภาพไปทางขวาเก้าสิบองศา จากนั้น controller ที่รับ request มาเพื่อหมุนภาพ ใน Play! ยังมี Job อีกสองแบบคือ Bootstrap Job และ Scheduler Job ซึ่งใช้บ่อยพอสมควรเหมือนกันและก็ทำหน้าที่ตามชื่อคือ ทำงานตอนเริ่มต้น หรือ ตามเวลาที่กำหนด หน้าตาก็จะคล้ายกับ Suspend Job ไว้มีเวลาอีกจะค่อยๆ มาเขียนไว้อีกที

Read full story Comments { 0 }

JPA "IN" Query

หลายครั้งที่ผมใช้ Collection เป็น field ใน Persistent object ของ JPA แต่ก่อนที่รู้จัก JPA ใหม่ ๆ เวลาจะ query อะไรก็มักจะสร้าง reference กลับไปยัง object หลักทุกครั้งเพื่อให้อ้างอิงกลับได้ พึ่งมารู้ไม่นานว่ามี Keyword IN เพื่อใช้สำหรับตรวจหา parent ที่ object อยู่ใน collection ของมัน * Code ทั้งหมดจะอิงตาม Play Framework จากโค้ดด้านบนถ้าต้องการหาว่า องุ่นอยู่ในตะกร้าไหนสามารถหาได้โดยใช้ IN ช่วยคือ เหมือนจะเคยจดไปแล้วแต่หาไม่เจอ จดไว้อีกทีกันลืม เผื่อเพื่อนถามด้วย

Read full story Comments { 0 }