Dec 10
llunภาษา array, collection, Java
ไม่รู้มีใครเคยคิดหรือป่าว แต่คำถามนี้เหมือนมันอยู่ในหัวตั้งแต่เริ่มทำงานเลยหละ (หรืออาจจะตั้งแต่รู้จัก Collection API ของจาวาเลยมั้ง) หลายคนอาจจะใช้ Collection แทน Array ไปเลยเพราะมันสะดวกดี สามารถเพิ่มลดได้ง่าย (โดยบางครั้งอาจจะไม่รู้ว่า Collection แต่ละแบบมีลักษณะอย่างไร แต่นั่นไว้เป็นอีกหัวข้อนึงละกัน) และก็สามารถใช้แทน Array ได้แทบทั้งหมด หลายคนอาจจะสงสัยว่า อ้าวแล้วอย่างนี้จะกลับไปใช้ Array ทำไม
จริงๆ Array มันก็มีคุณสมบัติของมันที่ทำให้ชอบหลายๆ อย่างนะ เช่น ประกาศได้ง่าย สามารถกำหนดค่าเริ่มต้นให้มันได้ โดยไม่ต้องคอยไล่เพิ่มทีละตัว และก็มีขอบเขตที่แน่นอน ไม่สามารถเพิ่มได้! และข้อดีอย่างสุดท้ายนี่แหละ ที่เวลาเขียนโปรแกรมแล้วเอามาตัดสินว่าเมื่อไหร่จะใช้ Array หรือ Collection
เวลาเลือกก็ดูจากเมธอดที่เขียนว่าจำเป็นต้องคืนค่าให้เปลี่ยนแปลงชุดข้อมูลนั้นได้หรือป่าว ถ้าคืนค่าไปแล้ว ข้อมูลจะถูกเอาไปเพิ่มหรือลดอีกภายหลังก็จะให้กลับไปเป็น Collection แต่ถ้าไม่ต้องก็ออกไปเป็น Array ซะ เหมือนกันตอนเอาเข้า ถ้าเมธอดนั้น มีไว้เพื่อเพิ่มหรือลดข้อมูล ก็รับมาเป็น Collection ซะ แต่ถ้าไม่จำเป็นก็ขอมาเป็น Array ดีกว่า แต่วิธีตัดสินนี้ไม่สามารถเอาไปใช้กับภาษาอย่าง Javascript หรือ Actionscript ได้ เพราะภาษาเหล่านั้น Array มันเป็น Collection อยู่แล้ว
ยังมีเรื่อง Collection ในภาษาจาวาอีก ที่มีหลายแบบ แต่ก่อนคิดว่าอาจจำมันได้ไม่หมด แต่พอใช้งานมันไปซักระยะ จะเห็นว่าแต่ละตัวมีความหมายและควรเอาไปใช้ยังไง แต่ไว้ว่างๆ (หัวว่างๆ) อีกรอบค่อยมาเขียนต่อละกัน
Oct 17
llunภาษา Compare, Java, rails
เพื่อนชวนให้ไปทำงานด้วย เป็นการเขียนเว็บขึ้นมาแล้ววันนี้ก็นัดเข้าไปคุยว่าจะมีอะไรบ้าง ใช้อะไรทำ สิ่งที่เตรียมไปคือ Framework แบบ Rails แต่เป็นภาษา PHP ชื่อ Symfony และเพื่อนอีกคนเตรียมตัวอย่าง Java Project ไปใช้ Java Spring + Hibernate ลองเอามาชนกัน ก็ได้อะไรหลายๆ อย่างกลับมา
- Spring MVC + Hibernate มันปรับปรุงขึ้นมากด้าน Configuration ดูแล้วชอบอย่างแรง
- ถ้าเอา Rails แบบสำเร็จรูปให้คนเขียน Java + .NET ดูจะเกิดแต่เครื่องหมายคำถาม ว่ามันจะแก้ไขส่วนต่างๆ ได้ยังไง
- Grails อ้วน (หรอ ไม่เคยลองแฮะ ขอสรุปแค่นี้จากที่ได้ยินมาละกัน)
- JSF เป็นอะไรที่น่ากลัวมาก พูดแล้วไม่ค่อยมีคนอยากใช้
- iBatis มันยังอยู่!!!
- Rails จะเทพยังไง ถ้าไม่ลองทำก็ไม่เห็นความเทพของมัน (หรือเพราะตูเสนอให้ดูไม่ดีเองหว่า -*- )
- PHP ง่ายสำหรับสายตาคนทั่วไป แต่ยากสำหรับคนใช้จาวามานาน(มั้ง)
ด้วยข้อสรุปสุดท้ายที่ระยะเวลาในการเรียนรู้ที่ต่ำมาก เพื่อนต้องการแบบทำได้เลย สุดท้ายเลยใช้ Spring + Hibernate ไม่ใช้อะไรแบบค่อนข้างสำเร็จรูปเหมือน Rails ก็ได้ทั้งสองอย่างหละนะ ต่อไปก็ขอดูว่าตอนทำงานร่วมกันหน่อยเถอะว่าจะเป็นยังไง
คราวหน้าจะพยายามชักชวนให้ใช้ hg
ปล. ไปดิโอลสยามวันนี้ทำให้รู้ว่า ด้านบนเค้าเปิดเป็นที่พักเหมือนคอนโดด้วย >,,,< เดินใต้หลังคากระจกเสาโครงเหล็กสีเขียว มาตอนกลางวันคงรู้สึกเหมือนเดินอยู่อีกยุคแน่เลย
Mar 03
llunภาษา concurrent, executor, Java, thread
ขอบันทึกกันลืมหน่อยเนื่องจากสองสามอาทิตย์ที่ผ่านมาเจอไอ้นี่พอสมควร ตั้งแต่เปลี่ยนจาก 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 ยังไง แล้วพอทำงานเสร็จแล้วใช่ว่าจะทิ้งไปเปล่าๆ ก็อาจรับงานใหม่เข้ามาเลย แล้วก็ทำงานต่อ หรือถ้างานมันว่างมากๆ ก็เอาบาง Thread ทิ้งไปบ้างเพื่อประหยัดเนื้อที่โดยมีเวลากำหนดไว้ว่าว่างเท่าไหร่ถึงจะทิ้ง ซึ่งก็ต้องไปลองวัดเอาหละว่าทำแล้วได้ประสิทธิภาพเพิ่มขึ้นเท่าไหร่ ซึ่ง Executor ก็มีหลายแบบอีก แต่ตอนนี้ที่ใช้เป็นตัวเดียว ฮะๆๆ เพราะงั้นเลยไม่เล่าละเอียดละกัน แต่ใน package java.concurrent ก็มีสำเร็จรูปมาให้บ้างแล้ว ทั้งแบบทำงานทีละ Thread หรือ จำกัดจำนวน Thread ที่มีทั้งหมดในระบบ หรือจะค่อยๆ เพิ่มซึ่งก็เหมาะกับงานแต่ละแบบ โดยสร้างได้จาก java.util.concurrent.Executors เป็น static method ให้เรียกใช้สร้างได้เลย (ตอนแรกพิมพ์ผิดประจำเพราะมักสับสนกับ Executor =_=)
นอกจาก Executor แล้วใน java.util.concurrent ยังมีอย่างอื่นอีกที่ใช้จัดการ Thread แต่ยังสำรวจลองเล่นไม่ทั่ว อีกอย่างคงไม่มีใครเข้าไปเจอตัวอื่นๆ บ่อยๆ หรอกมั้ง แค่นี้ก่อนละกัน เริ่มนึกอะไรไม่ค่อยออกหละ ทิ้งไว้ก่อน ไว้มีแรง + นึกได้จะมาเขียนต่อ =_+
Older Entries