"Hello World" - Mad Programmer Diary

รู้จักกับ Garbage Collection ใน Java

Posted by arnondora on January 17th, 2016

เมื่อตอนที่ผมย้ายจากเขียน C แล้วมาเขียน Java ก็ทำให้สงสัยอยู่เรื่องนึงว่า “ใน Java มันมีคำสั่งที่ทำงานกับ Memory โดยตรงมั้ย ?” คำตอบที่ได้มาคือ ไม่มี เพราะ Principle ของตัว Java บอกว่า Robust + Secure เพราะฉะนั้น การที่ Java อนุญาติให้โปรแกรมเมอร์สามารถเข้าถึง Memory ได้โดยตรงอาจจะทำให้โปรแกรมของเรา พัง ได้ ดังนั้นตัว Java จึงต้องมีระบบตัวนึงที่เข้ามาช่วย Allocate และ Release Memory มันมีชื่อว่า Garbage Collection แต่ก่อนอื่นมาดูกันก่อนว่าปกติโปรแกรมที่รันผ่าน JVM จะจัดการ Memory ยังไง JVM จัดการกับ Memory ยังไง ? ก่อนที่เราจะไปรู้กันว่า รถขยะ ของเราทำงานกันอย่างไร เราจะต้องมารู้กันก่อนว่า ปกติแล้ว JVM จัดการ […]

Automated Testing กับการพัฒนาโปรแกรม

Posted by arnondora on January 11th, 2016

ในโลกของการพัฒนาโปรแกรมในปัจจุบัน เราจะเห็นได้ว่า โปรแกรมที่เราเขียนออกมานั้นจะมีความซับซ้อนมากกว่าสมัยก่อน ๆ เป็นอย่างมาก ทำให้การสร้างโปรแกรมที่มีขนาดใหญ่จะต้องพึ่งความสามารถในการสร้างพอสมควร และการทำ Testing ก็ย่อม ทำได้ยากกว่าโปรแกรมเล็ก ๆ แน่นอน ในปัจจุบันเลยมีวิธี Test โปรแกรมของเราอยู่หลาย ๆ วิธี แต่ด้วยความซับซ้อนที่มากขึ้นเรื่อย ๆ ของโปรแกรมที่เราออกแบบ ทำให้ความเสี่ยงที่จะผิดพลาดนั้นย่อมสูงขึ้นตามไปด้วยเช่นกัน แต่ในปัจจุบันตอนนี้เลยมีคำว่า Automated Testing เกิดขึ้นมา เพื่อลดข้อผิดพลาดของมนุษย์ (Human Error) ที่อาจจะเกิดได้ในการพัฒนาโปรแกรม และการทดสอบ ทำไมต้องใช้ Automated Testing ในช่วงแรก ๆ ของการพัฒนา โปรแกรมของเราอาจจะมีขนาดที่ไม่ใหญ่มาก (ย้ำว่า ช่วงแรก ๆ จริง ๆ) อาจจะมี Components หรือ ระบบย่อย ๆ ข้างใน อยู่แค่ไม่กี่ตัว ทำให้เราสามารถทำ Manual Testing ได้ง่าย และความผิดพลาดก็อาจจะเกิดขึ้นได้น้อย เอาล่ะครับ หลังจากที่เราพัฒนาโปรแกรมไปเรื่อย […]

ว่าด้วยเรื่อง Machine Learning

Posted by arnondora on January 8th, 2016

เมื่อช่วงปิดเทอมใหม่ ๆ ก็ มีเวลา แอบไปนั่งเรียน Machine Learning ใน Udacity มา วันนี้เลยจะมาเล่าให้อ่านกันดีกว่า ว่ามันคืออะไรกันแน่น้อ แล้วมันต่างจาก Data Mining กับ AI ยังไง (ว่าแต่รูป Cover มันเกี่ยวอะไรกับเรื่องที่เขียน !!!) Machine Learning คืออะไร ? Machine Learning มันก็คือ การที่เราให้คอมพิวเตอร์เรียนรู้เรื่องอะไรสักเรื่อง โดยที่เราไม่ต้องไปเขียนโปรแกรมเพื่อบอกมันสักบรรทัด ง่าย ๆ จุดมุ่งหมายของเราคือ ให้คอมพิวเตอร์พยายามเข้าใจรูปแบบความสัมพันธ์ของข้อมูล แล้วพยายามตีความว่า ควรทำยังไงกับข้อมูลที่ได้มันมาดี เพราะฉะนั้น ไม่ว่าในอนาคตมันจะมีข้อมูลรูปแบบใหม่ ๆ มา เราก็ไม่จำเป็นที่จะต้องไปนั่งเขียนโปรแกรมใหม่ เพื่อให้มันรองรับข้อมูลรูปแบบใหม่ ๆ แล้ว เพราะว่า ตัวของคอมพิวเตอร์มันสามารถตีความและตอบสนองได้แล้ว มาลองดูตัวอย่างกัน ถ้าผมบอกว่า ถ้าเจอรูปทรงที่เป็น สามเหลี่ยม ให้มัน Print เลข 3 […]

Java 101 – รู้จัก Java เพิ่มกันอีกสักนิด (Introduction) (EP.0)

Posted by arnondora on January 6th, 2016

ในปัจจุบัน ก็คงปฏิเสธไม่ได้ว่า ไม่มีใครที่ไม่รู้จักภาษายอดนิยมอย่าง Java เพราะตอนนี้เป็นภาษาที่ฮิตอยู่อันดับที่ 2 รองจาก Python กันเลยทีเดียว และหลาย ๆ คนก็อาจจะเคยเรียนมาบ้าง หรือกำลังใช้งานมันอย่างชำชองอย่างรุนแรง แต่พอไปถามคนบางคนก็ไม่รู้จริง ๆ ว่า การทำงานของมัน หรือ Concept เป็นอย่างไร วันนี้เราจะมาดูกันว่า Java แท้จริงแล้วมันคืออะไรกันแน่ Java คืออะไร ? ถ้าใครกำลังคิดว่ามันคือ กาแฟ ก็เออใช่ !!! จะบ้าเหรอ พูดถึง Java ในฝั่งของคอมพิวเตอร์ต่างหากเล่า ถ้ามีคนมาถามว่า Java คืออะไร เราจะตอบมันว่ายังไงดี ? จริง ๆ แล้วคำตอบก็ขึ้นอยู่กับว่า จะตอบว่ามันเป็นอะไรดี เพราะว่าตัว Java จริง ๆ แล้วมันไม่ใช่แค่ Programming Language เท่านั้นนะ เพราะว่ามันก็ยังเป็น Platform เหมือนกับ OS […]

รีวิว WD My Passport Ultra

Posted by arnondora on January 5th, 2016

เหตุมันเกิดมาจากว่า เมื่อตอนเดือนธันวาคมในปีที่ผ่านมา External HDD ลูกเก่า My Passport Studio ลูกเก่าก็เริ่มแสดงอาการอันน่ากลัว นั่นคือ เสียบติดบ้าง ไม่ติดบ้าง หลังจากการใช้มา 3 ปีเกือบ 4 ปี ตอนนี้เลยได้ฤกษ์หาลูกใหม่มาสักที เลยไปจัด My Passport Ultra มาแทนซะเลย แกะกล่องกันเลย รูปร่างตัวกล่องก็เป็น Design ง่าย ๆ สีน้ำเงิน มีเขียนชื่อรุ่นเป็น My Passport Ultra โดยตัวที่เอามาให้ดูในวันนี้เป็นขนาด 2 TB ใหญ่เกือบสุดแล้ว แต่ถ้าใครอยากได้ใหญ่กว่านี้ สูงสุดที่ขายจะอยู่ที่ 3 TB กันเลย และบนกล่องก็มีรหัสเอาไว้ไป Redeem เพื่อทดลองใช้งาน Prime Time ซึ่งเป็นบริการพวก Movie Streaming อะไรพวกนี้แหละ เดี๋ยวมารีวิวในคราวถัด ๆ ไป โดยทาง WD […]