ก่อนหน้านี้มีงานที่ได้รับการว่าจ้าง software house แห่งหนึ่งในงาน on site ที่เขาไม่สามารถทำได้ ระหว่างปฏิบัติงานได้รู้งานที่บริษัทแห่งหนึ่งได้ทำทิ้งไว้ และน่าจะเป็นประโยชน์กับทุกท่าน จึงขอเอามาเขียนไว้ตรงนี้ด้วย
ในส่วนงานตรงนั้นมี requirement คือ ต้องการเอาข่าวที่ปกติเรียกดูได้จากโปรแกรมเฉพาะตัวหนึ่ง ให้นำไปแสดงผลบนเว็บไซท์ โดยข่าวจะต้อง update ตลอดเวลา ประมาณ 2-5 นาทีจะมีข่าวเพิ่มขึ้น 1-3 ข่าว เป็นท่านทั้งหลายจะหา solution ให้ผู้ว่าจ้างอย่างไร ลองคิดกันเล่นๆ นะครับ
มาดูว่าบริษัทแห่งนี้เขาทำไว้อย่างไร
- เขาเลือกใช้โปรแกรมสำเร็จรูปตัวหนึ่งในการตั้งเวลาในการ run โปรแกรมต้นแบบทุกๆ 1 นาที และให้โปรแกรม Export ออกมาเป็น Access
- และใช้โปรแกรมตั้งเวลานั้นเอง ตั้งเวลาเรียกโปรแกรมสำเร็จรูปอีกตัวหนึ่งเพื่อใช้ในการแปลง Access ไปเป็น Excel
- จากนั้นใช้โปรแกรมตั้งเวลานี้อีก ตั้งเวลาเรียกโปรแกรมสำเร็จรูปอีกตัวหนึ่งแปลงจาก Excel ให้ export ต่อไปยัง MySQL
- จากนั้นใช้โปรแกรมตั้งเวลานี้อีก ตั้งเวลาเรียกโปรแกรมสำเร็จรูปอีกตัวแปลงจาก MySQL ไปเป็นเอกสาร text
- จากนั้น upload text เพื่อให้ server ทำการ import text ไปยัง MySQL อีกที
- ขั้นสุดท้ายจึงนำเอาไปแสดงผลอีกทอด
จะเห็นว่าการทำงานของโปรแกรมเพื่อการแสดงข่าว เขาใช้โปรแกรมจำนวนมากเพื่อแปลงเอกสารต้นทางไปเป็น format ต่างๆ เป็นทอดๆ ไปโดยไม่จะเป็น และยังจำเป็นต้องมี computer เพื่อทำงานในส่วนนี้เพิ่มขึ้นมาอีก 1 ตัว ซึ่งในมุมมองของนักพัฒนาแล้วถือว่าเป็นการออกแบบ solution ที่แย่ (มากๆ) นั่นเพราะการทำงานเพียงเท่านี้ควรจะจบที่ขั้นตอนง่ายๆ
เพียงเขียน application ให้ทำการ request ไปยัง server ข่าวแบบเดียวกับโปรแกรมต้นแบบ นำผลส่งเข้า MySQL เพียงขั้นตอนเดียว และก็สามารถใช้ Schedule Task หรือ Cron ที่ OS มีมาให้อยู่แล้วในการตั้งเวลาการทำงานของ application เพียงเท่านี้ก็ได้งานที่เหมือนกัน
ที่นำเอามาเขียนไว้ เพื่อเป็นกรณีศึกษาตัวอย่างในการหา Solution ให้กับผู้ว่าจ้างในรูปแบบแปลกๆ และแนวคิดในการพัฒนาโปรแกรมอย่างที่ควรจะเป็น ไม่ให้มีการใช้งานทรพยากรของระบบโดยไม่จำเป็น ไม่ใช่เพียงแค่ให้งานเสร็จสิ้นไปเท่านั้น
เขียนเมื่อ 2009.09.18 โดย
Sheroku