เพื่อนชวนให้ไปทำงานด้วย เป็นการเขียนเว็บขึ้นมาแล้ววันนี้ก็นัดเข้าไปคุยว่าจะมีอะไรบ้าง ใช้อะไรทำ สิ่งที่เตรียมไปคือ Framework แบบ Rails แต่เป็นภาษา PHP ชื่อ Symfony และเพื่อนอีกคนเตรียมตัวอย่าง Java Project ไปใช้ Java Spring + Hibernate ลองเอามาชนกัน ก็ได้อะไรหลายๆ อย่างกลับมา Spring MVC + Hibernate มันปรับปรุงขึ้นมากด้าน Configuration ดูแล้วชอบอย่างแรง ถ้าเอา Rails แบบสำเร็จรูปให้คนเขียน Java + .NET ดูจะเกิดแต่เครื่องหมายคำถาม ว่ามันจะแก้ไขส่วนต่างๆ ได้ยังไง Grails อ้วน (หรอ ไม่เคยลองแฮะ ขอสรุปแค่นี้จากที่ได้ยินมาละกัน) JSF เป็นอะไรที่น่ากลัวมาก พูดแล้วไม่ค่อยมีคนอยากใช้ iBatis มันยังอยู่!!! Rails จะเทพยังไง ถ้าไม่ลองทำก็ไม่เห็นความเทพของมัน (หรือเพราะตูเสนอให้ดูไม่ดีเองหว่า -*- ) PHP [...]
java.util.concurrent.Executor
ขอบันทึกกันลืมหน่อยเนื่องจากสองสามอาทิตย์ที่ผ่านมาเจอไอ้นี่พอสมควร ตั้งแต่เปลี่ยนจาก library เก่าของ douglea มาเป็น java.util.concurrent เพื่อให้ใช้กับ Java 6 ได้ต้ังแต่นั้นมาก็เจอมาอีกมากมายเลย =_= ปกติเวลาใช้ Thread ในจาวาก็จะมีคำอยู่แค่สี่-ห้าคำผุดขึ้นมา เช่น synchronized, wait, notify, Runnable, Thread หมดและ ง่ายๆ ก็ใช้แค่นี้แหละ เวลาต้องการสร้าง Thread ใหม่ก็ new Thread ขึ้นมาจะ extends หรือ implements Runnable อะไรก็ว่าไปแต่ว่า Process ของแต่ละโปรแกรมใช่ว่าจะมี Thread ได้ไม่จำกัดจำนวน หากโปรแกรมที่ทำงานไปนานๆ หรืออาจจะตลอดเวลาตั้งแต่เปิดเครื่องแล้วมีการ new Thread ขึ้นมาเรื่อยๆ รับรองได้มีบั๊กลึกลับโผล่ขึ้นมาแน่นอนที่อาจทำให้ Process ตายได้แบบไม่รู้ตัว Executor เลยมาจัดการเรื่องนี้โดยมาจัดลำดับให้ว่าสร้าง Thread ยังไง แล้วพอทำงานเสร็จแล้วใช่ว่าจะทิ้งไปเปล่าๆ ก็อาจรับงานใหม่เข้ามาเลย แล้วก็ทำงานต่อ หรือถ้างานมันว่างมากๆ [...]
ANT_OPTS
แต่ก่อนพยายามจะใส่ไปใน ant config file เลยแต่ว่าไม่สำเร็จ ทำทีก็ต้องค้นใหม่ที เลยเอามาแปะไว้กันตัวเองลืมซะเลย $export ANT_OPTS=”-Xmx1024M -Xms512M” Xmx1024M ไว้สำหรับกำหนดขนาดหน่วยความจำมากที่สุดที่ยอมให้ ant ใช้เวลาคอมไพล์ Xms256M ไว้สำหรับกำหนดขนาดหน่วนความจำเริ่มต้นที่จะให้ ant ใช้ได้ ที่ต้องทำเพราะช่วงหลังขนาดโปรเจค Flex มันใหญ่มากซะจนค่ามาตรฐานมันไม่พอจนคอมไพล์แล้วเกิด “java.lang.OutOfMemoryError: Java heap space” ว่าจะใส่เป็น option ถาวรใน environment variable แต่ก็ไม่ได้คอมไพล์บ่อยๆ ด้วยสิ ปล่อยมันไว้แบบนี้ต่อไปละกัน ยังไงก็จดไว้แล้ว ^^!
Is singleton really bad?
I had read article about singleton in Action last week. It told about how bad singleton is and why don’t use it with a little example in another site. It told singleton isn’t different from static method and it gives another responsibility to object. Oh, why they think about it like this. I think singleton [...]
Flex abstract class
อาทิตย์นี้นั่งเขียน Cache ให้ Flex โดยการเอาโค้ดที่อยู่ในฝั่งจาวามาดัดแปลงนิดหน่อย(ฝั่งจาวาก็เขียนเอง ฝั่ง Flex ก็เขียนเอง – -”) แต่ว่าด้วยความเคยชินในรูปแบบของจาวาทำให้อยากเขียนให้ Flex มันมี Abstract class ด้วยก็เลยนั่งขุดๆ หาว่าจะทำยังไงได้บ้าง สุดท้ายเลยไปดูว่า Abstract class มันมีคุณสมบัติยังไงบ้างแทน ท่าทางจะง่ายกว่า ^^! Abstract class ในฝั่งจาวาจริงๆ แล้วมันก็มีคุณสมบัติง่ายๆ คือสร้างตรงๆ ไม่ได้ด้วยคีย์เวิร์ด new ต้องเอาไปสืบทอดต่อ แล้วสร้างลูกขึ้นมาแทน ไว้สำหรับนิยามพฤติกรรมพื้นฐานที่ลูกน่าจะมีเหมือนกันเอาไว้ และก็สามารถกำหนดพฤติกรรมบางอย่างได้ด้วย โดยให้ลูกเอาไปทำต่อเองว่าลูกแต่ละตัวพฤติกรรมเดียวกันนี้ จะมีลักษณะท่าทางยังไง อย่างอื่นก็เหมือนคลาสโดยทั่วไป คราวนี้มาฝั่ง Flex ค้นๆ ใน Google ดูเหมือนจะมีคนทำไว้บ้างแล้วโดยการบังคับใน Constructor ให้ไล่เช็คว่า มีการเขียน function หรือป่าว ถ้าไม่มีก็โวยวายออกมาแต่ว่ามันต้องใช้ของเพิ่มเติมนี่สิ สุดท้ายเลยเล่นง่ายได้โค้ดออกมาตามด้านล่าง class AbstractClass { function AbstractClass():void [...]