มีหลายท่านติดต่อผ่าน ห้องติดต่อ มาหาผม เพื่อถามผมว่าจะทำ web crawler ยังไงดี??? ดูเหมือนการไปล้วงข้อมูลจากเว็บของผู้อื่น โดยให้คอมพิวเตอร์ช่วยผ่อนแรงให้ ถือเป็นความต้องการลำดับต้น ๆ ของผู้ที่อยากจะได้เนื้อหาโดยไม่ต้องออกแรงมากจริง ๆ ผมก็เลยคิดว่าผมควรจะรวบรวมมาบอกตรงนี้เลยดีกว่า ขี้เกียจมาตอบทีล่ะคนมันเยอะ แล้วถ้าผมตอบถูกหรือผิดยังไงก็ให้พวกเราที่แอบเข้ามาอ่านกันเงียบ ๆ ที่บล็อกแห่งนี้ช่วยขัดเกลาด้วยนะ ว่ามันถูกหรือเปล่า เพราะผมเนี่ยก็ขามั่วอันดับหนึ่งในแผ่นดินเหมือนกัน อ่ะแฮ่ม … งั้นเริ่มเลยนะ … หากว่าท่านต้องการจะสร้างซอฟต์แวร์ประเภท
Category: Programming
พูดคุยแต่เรื่องสร้างซอฟต์แวร์
หลังจากที่ผมแกะ ๆ OpenX มาพักนึงก็เริ่มเห็นว่า การจะคิดอะไรซักอย่างนึงเราต้องคิดกรอบใหญ่ก่อน ไม่ใช่มัวแต่คิดในกรอบเล็ก ๆ น้อย ๆ ดังนั้นผมก็เลยแบ่งภาระงานของ OpenX ออกเป็น Multitier ดังรูป เมื่อวาดออกมาเป็น Multitier เราก็จะเห็นว่าโดยภาพรวมแล้ว OpenX มีงานใหญ่ ๆ เพียงสองงาน คือ การ configure หรือก็คือการปรับแต่งค่าต่าง
เมืองไทยเรามีสำนวนเปรียบเทียบเรื่องง่าย ๆ ที่ต่อให้เด็กอมมือทำก็ทำได้ว่า “ง่ายเหมือนปอกกล้วยเข้าปาก” ฝรั่งเองเขาก็มีสำนวนของเขาเหมือนกัน ซึ่งเราฟังแล้วก็คงรู้สึกว่ามันขัดหู เพราะถ้ามันเป็นเรื่องที่ง่ายซะเหลือเกิน ฝรั่งจะบอกว่า “ง่ายเหมือนเค้ก” ผมไม่เก่งภาษาอังกฤษ จึงไม่แน่ใจว่าที่ว่า “ง่ายเหมือนเค้ก” เนี่ย หมายความว่ามัน “ง่ายเหมือนกินเค้ก” หรือว่า “ง่ายเหมือนทำเค้ก” ถ้าเป็นอย่างหลังผมว่ามันไม่ง่ายนะเฟ้ย!!! ปรกติถ้าผมเพียงแค่รู้ ผมก็จะโม้พอหอมปากหอมคอ แต่ถ้าผมได้รู้แล้วได้ลงมือปฏิบัติจริงจนเห็นแจ้ง ผมยิ่งโคตรโม้เลย! ซึ่งที่ผ่านมาผมก็ได้ลองปฏิบัติจริงใน xAjax ซึ่งเป็น
ผมไม่เคยรู้เลยว่ามีใครอ่านบล็อกแห่งนี้ผ่าน feed บ้าง เพราะผมไม่ได้สมัครใช้ feedburner … แย่หน่อย … ผมไม่ค่อยชอบมันซักเท่าไหร่ รู้สึกมันแปลกแยก รู้สึกว่า wordpress เองก็มีกลไก feed มาให้ใช้อยู่แล้ว จะไปใช้ feedburner ทำไมอีก!!! ถึงผมจะติด Google Analytics และ Stats.in.th แล้วก็ตาม แต่ผมก็พบว่ามันไม่สามารถเก็บสถิติของผู้ที่เข้ามาอ่านบล็อกแห่งนี้ผ่าน
หลังจากที่ได้ใช้ xAjax เพื่อสร้าง เกมส์อสุจิบุก แล้ว ก็เลยทำให้ผมได้ข้อสรุปเกี่ยวกับเทคโนโลยี Ajax ดังต่อไปนี้ครับ ถ้าเว็บไซต์ของเรามีเพียงหน้าจอเดียวเพื่อใช้ติดต่อกับผู้ใช้ โดยไม่ต้องให้ web browser รับข้อมูลด้วยการ GET หรือ POST เพื่อให้จอกระพริบเลย ก็ไม่เลวเหมือนกัน ยังไงซะการรับส่งข้อมูลถึงแม้จะเป็นแบบหลังฉาก ก็ยังต้องมีการหน่วงเวลาอยู่ดี มันเลยทำให้รูปภาพประเภท Ajax loading กลายเป็นสิ่งจำเป็นไปโดยปริยาย ผมเพิ่งจะเข้าใจว่าทำไมใคร
ช่วงหลัง ๆ มานี้ผมมักจะหา web application open source ใหม่ ๆ มาใช้งานครับ แต่ส่วนใหญ่แล้วไม่ใช่เอามาใช้ในงานประจำ เพราะหนักจะเป็นการใช้เพื่องานอดิเรกมากกว่า แต่เืมื่อค้นหาเจอที่ถูกใจแล้วก็มักจะมีหงุดหงิดเล็ก ๆ ครับ เพราะ web application open source เหล่านั้น ไม่ได้มีกลไกหลักเป็นของตัวเอง หากแต่ยึดโยงขี่คร่อมอยู่บน web application
ถ้ามีปัญญาทำได้ ผมเองก็อยากจะทำ Software as a Service แบบนี้นะ เพราะมันทำแค่หน้าเดียว ไม่ต้องแสดงผลหลาย ๆ หน้าให้มันวุ่นวาย ไอ้เจ้า Google ก็จะได้ไม่ต้องมาเสียเวลาขุดคุ้ยหา keyword ที่หน้าเว็บไปทำ index บ้องแบ๊วอะไรของมันด้วย ไม่เปลือง bandwidth ที่เช่าเอาไว้อีกต่างหาก ว่าแล้วเราก็มาดูตัว mock up ของระบบหาพิกัดโทรศัพท์มือถืออัจฉริยะ
ผมเคยเขียนโปรแกรมประมาณ web crawler เพื่อเข้าไปดึงรายชื่อคลิบวีดีโอที่ผมต้องการจาก Youtube ตามเงื่อนไขคำค้นที่ผมกำหนดเอาไว้นะ จำได้ว่าเคยโม้ให้อ่านกันไปแล้ว แต่จำไม่ได้ว่าอยู่ในหัวข้อไหน การทำ web crawler เพื่อเข้าไปล้วงเอาข้อมูลจากหน้าเว็บของชาวบ้าน ต้องบอกเลยว่ายุ่งยากมาก เพราะเราต้องมารับรู้ tag html ของเขา จากนั้นมาตัดเป็นท่อน ๆ เพื่อบอกให้ซอฟต์แวร์ของเรารู้อีกทอดนึง แถมถ้าเว็บไซต์ดังกล่าวต้องการการแสดงตนด้วย cookie อยู่ตลอดเวลา เราก็ต้องมาเสียเวลารับ ๆ
การทำ Software as a Service ที่ดี ก็มีความหมายรวมถึงการแสดงผลลัพท์ที่เว็บบราวเซอร์ที่ดีด้วย ดังนั้นผมเองก็ไม่อยากจะตกยุค ดังนั้นถ้าอยากจะให้ทันยุคแล้วล่ะก็ เวลาจะสร้าง Web Application ก็ควรจะใช้ CSS ให้เยอะ ๆ เข้าไว้ แต่มันก็มีข้อเสียปัญญาอ่อนนิดหน่อยนะ ตรงที่เขียนคำสั่งเดียวกันแต่ดันแสดงผลแตกต่างกันในแต่ล่ะบราวเซอร์ ซึ่งก็ต้องมาวุ่นวายเขียนเงื่อนไขตรวจสอบบราวเซอร์ แล้วให้มันเปลี่ยนทางไปอ่านไฟล์ CSS จากรุ่นแก้ไขเฉพาะบราวเซอร์นั้น ๆ แทน
ทุกวันนี้เว็บไซต์ดัง ๆ อันดับต้น ๆ ของเมืองไทยล้วนใช้ระบบปิดที่ตนเองสร้างขึ้นครับ ผมหาแทบไม่เจอเลยนะว่าจะมีเว็บไซต์ไหนที่ยอมใช้ Opensource Web Application เป็นส่วนกลไกหลัก หรือส่วนกลไกแสดงผลเลย อย่างมากก็ยอมใช้แค่เป็นกลไกฉากหลัง อย่างเช่น Apache หรือ MySQL เป็นต้น น่าจะถือว่าเป็นความท้าทายนะ หากเราสามารถนำเอา Opensource Web Application มาทำเป็นส่วนกลไกหลักหรือกลไกแสดงผล แล้วผลักดันให้ Web