ช่วงนี้หลายๆคนคงได้ยินข่าว AlphaGo เอาชนะแชมป์โลกอย่างLee Sedol หลายๆคนคงสงสัยเหมือนผม ว่าเจ้า AlphaGo ที่ว่านี่ทำงานยังไง ทีมงานของ Deep Mind ได้มีการเผยแพร่ไว้อย่างละเอียด[1] หลายคนอาจจะเคยเห็นบทความนี้แล้ว แต่ติดปัญหาที่ไม่ได้มีพื้นฐานทางด้าน AI ทำให้ทำความเข้าใจได้ยาก เพราะศัพท์ต่างๆที่ใช้นั้นเป็นศัพท์เฉพาะเยอะมาก (Monte Carlo Search Tree, Supervised Learning, Reinforced Learning, etc.) บทความนี้จะทำการอธิบายเทคนิคการอ่านตาเดินล่วงหน้าที่ AlphaGo ใช้ (Monte Carlo Search Tree – MCST) โดยจะไม่ลงไปในระดับคณิตศาสตร์หรือตัวทฤษฏีมาก แค่อธิบายให้เห็นถึงหลักการคร่าวๆ เพื่อให้คนทั่วไปที่ไม่ได้มีพื้นฐานทางด้าน AI พอเข้าใจเทคนิคเหล่านี้ได้ในระดับหนึ่ง MCST เป็นแค่เทคนิคนึงที่ AlphaGo ใช้เท่านั้น สำหรับใครที่ต้องการทำความเข้าใจให้ลึกลงกว่านี้ ลองเช็คลิ้งก์บทความจริง[1] ด้านล่างสุดดูครับ การอ่านตาถัดๆไปด้วยการจำลองรูปแบบการเล่น จะตอบคำถามนี้ได้ เราต้องเข้าใจกันก่อนว่าคอมพิวเตอร์เล่นบอร์ดเกมต่างๆยังไง เราจะเริ่มจากเกมง่ายๆอย่าง “โอเอ็กซ์” (Tic-Tac-Toe) กันก่อนครับ (ใครไม่รู้จักลองไปเล่นดูที่นี่ครับ http://playtictactoe.org/ ) กระดานโอเอ็กซ์ มีทั้งหมดเก้าช่อง …
Read More »Chadchapol V.
เรียนรู้วิธีการจ้างโปรแกรมเมอร์ จากบริษัทไอทีที่ประสบความสำเร็จ
งานด้านการพัฒนาซอฟท์แวร์ สิ่งที่สำคัญที่สุดคือ “คน” ครับ ถ้าจ้างคนได้ถูก ให้อิสระและอำนาจในการตัดสินใจที่ถูกต้องกับเขา เรื่องกระบวนการ เรื่องเครื่องมือต่างๆ ทุกอย่างจะตามมาเอง เวลาบริษัทไอทีใหญ่ๆที่เทคโอเวอร์บริษัทเล็กๆ เรื่องแรกที่ต้องคิดก่อนเลย คือทำยังไงให้คนในบริษัทไม่ลาออก เพราะต่อให้ได้ซอฟท์แวร์และ Infrastructure ทุกอย่างไป ถ้าคนพัฒนาหายหมด โปรดักต์ก็ไปไหนไม่ได้ แต่บริษัทไอทีหลายๆบริษัท กลับปฏิบัติกับคนเหมือนเป็นฟันเฟือง ไปเสียเงินและเวลาไปกับเรื่องกระบวนการและเครื่องมือต่างๆ มากกว่าที่ควรจะเป็น ในขณะที่การจัดการทรัพยากรบุคคล ซึ่งควรจะเป็นเรื่องที่สำคัญที่สุด กลับถูกมองข้ามไป บทความนี้เราจะมาพูดถึงการหาและจ้างโปรแกรมเมอร์ (Recruitment) ซึ่งถือเป็นหนึ่งหัวใจหลักในการบริหารทรัพยากรบุคคล หัวข้อต่างๆที่ผมยกมานี้ เป็นข้อปฏิบัติที่ผมเห็นบริษัทไอทีชั้นนำ ทั้งขนาดใหญ่และขนาดเล็ก
Read More »ตัวอย่างการออกแบบ Frontend Architecture ในเว็บแอพพลิเคชั่นขนาดใหญ่
การออกแบบสถาปัตยกรรมในส่วนของ Frontend เป็นเรื่องที่หลายๆคนมองข้ามไป ทั้งๆที่ Frontend มีบทบาทสำคัญมากในเว็บปัจจุบัน สมัยก่อน เราอาจทนใช้เว็บที่โหลดช้าหรือใช้งานยากได้ เพราะไม่มีตัวเลือกมาก แต่ในปัจจุบัน คู่แข่งโผล่รายใหม่ๆขึ้นมาแทบทุกวัน ผู้ใช้เว็บมีตัวเลือกมากขึ้น ส่วน Frontend ที่ผู้ใช้ต้องติดต่อด้วยตลอดเวลานั้นสามารถชี้เป็นชี้ตายให้กับธุรกิจได้เลย ด้วยเหตุนี้ ความซับซ้อนของโค้ดเริ่มย้ายจากฝั่ง Backend มายังฝั่ง Frontend มากขึ้นเรื่อยๆ หาก Frontend Architecture ถูกออกแบบไว้ไม่ดี การจะขยับขยายเว็บหรือทีมจะทำได้ลำบากมาก บทความนี้จะกล่าวยกตัวอย่างรูปแบบของสถาปัตยกรรม Frontend ของเว็บแอพพลิเคชั่นต่างๆ โดยจะเน้นถึงความเป็นมา และชี้ให้เห็นถึงข้อดีข้อเสียของรูปแบบต่างๆ ผู้อ่านควรมีประสบการณ์ในการทำเว็บแอพพลิเคชั่นขนาดกลาง – ใหญ่ และมีความเข้าใจในเรื่อง Continuous integration เบื้องต้น
Read More »ทำความรู้จักกับ Microservices สถาปัตยกรรมระบบที่ทั้งนักพัฒนา และผู้ดูแลระบบควรรู้จัก
ช่วงสองสามปีที่ผ่านมา หลายๆคนคงได้ยินคำว่า Microservices มาไม่มากก็น้อย ในวงการไอทีต่างประเทศ สถาปัตยกรรมแบบ Microservices ได้ถูกนำมาใช้งานในบริษัทใหญ่ๆ (Amazon, Netflix ) มาเป็นเวลาหลายปีแล้ว ช่วง 2-3 ปีที่ผ่านมา แนวคิดของสถาปัตยกรรมแบบนี้เริ่มตื่นตัว และถูกนำไปใช้อย่างแพร่หลายมากขึ้น บ้างก็ประสบความสำเร็จเป็นอย่างดี บ้างก็ประสบปัญหา ได้รับบาดแผลกันมาพอสมควร การวางสถาปัตยกรรมของระบบมีผลกระทบต่อความสำเร็จของการพัฒนาซอฟต์แวร์มาก ผู้เขียนเองมีโอกาสได้ทำงานในระบบซอฟต์แวร์ที่ใช้สถาปัตยกรรมแบบนี้มาเกือบสองปี ได้เห็นทั้งข้อดี ข้อเสีย จึงอยากนำมาเล่าสู่กันฟัง
Read More »