Chadchapol V.

A software engineer who strayed to study management - I am passionate about software design, code quality, technical leadership, and Siberian Husky.

เทคนิคการอ่านตาเดินล่วงหน้าที่ใช้ใน AlphaGo

ช่วงนี้หลายๆคนคงได้ยินข่าว 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 »

เรียนรู้วิธีการจ้างโปรแกรมเมอร์ จากบริษัทไอทีที่ประสบความสำเร็จ

  งานด้านการพัฒนาซอฟท์แวร์ สิ่งที่สำคัญที่สุดคือ “คน” ครับ ถ้าจ้างคนได้ถูก ให้อิสระและอำนาจในการตัดสินใจที่ถูกต้องกับเขา เรื่องกระบวนการ เรื่องเครื่องมือต่างๆ ทุกอย่างจะตามมาเอง เวลาบริษัทไอทีใหญ่ๆที่เทคโอเวอร์บริษัทเล็กๆ เรื่องแรกที่ต้องคิดก่อนเลย คือทำยังไงให้คนในบริษัทไม่ลาออก เพราะต่อให้ได้ซอฟท์แวร์และ 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 »