MemeExpress มีความสามารถอย่างหนึ่งที่ (ผมคิดว่า) “Modern” มาก ก็คือการใช้ Numeral Graphic ป้องกันการ Spam ดังที่ ดร.จันทวรรณได้อธิบายไว้ใน “กราฟฟิคตัวเลขห้าหลักมีไว้ทำไม” ครับ

การทำงานภายในของ MemeExpress เพื่อให้ได้มาซึ่งความสามารถนี้ไม่มีอะไรมากครับ เราก็สุ่มตัวเลขขึ้นมาหนึ่งชุดแล้วเก็บใส่ Temporary Database ไว้ เสร็จแล้วเราก็เอารูปของตัวเลขเป็นตัวๆ ทั้งหมด 10 ตัว ที่เราทำไว้ก่อนมาต่อกันในรูปใหม่แล้วทำให้รูปมันไม่ค่อยชัดเสียหน่อย (โปรแกรมพวก Image Recognition จะได้อ่านไม่ได้) แล้วก็เอามาแสดงให้ผู้ใช้พิมพ์ตามได้เลย คราวนี้พอผู้ใช้พิมพ์ตัวเลขเข้ามา เราก็เอาตัวเลขนั้นมาเทียบกับตัวเลขใน Temporary Database ถ้าเราเคยสุ่มตัวเลขนี้ไว้ก็ปล่อยให้ผ่าน ถ้าไม่เคยสุ่มไว้ก็บอกผู้ใช้ว่าตัวเลขผิด การทำงานมีเพียงเท่านี้ครับ ส่วนการสร้างภาพกราฟฟิคนั้นผมเขียนโดยใช้ Library ที่ชื่อว่า Python Imaging Library (PIL) ซึ่งใช้ดีและชอบใจครับ

แต่อย่างไรก็ตาม Numeral Graphic นี้มีปัญหาที่รูปจะถูก Cache ใน Proxy Server (เพราะ Proxy Server เห็นเป็นรูปธรรมดา ไม่ได้เป็น Dynamic Content) แล้วหน่วยงานต่างๆ ในประเทศไทยเราก็ใช้ Proxy Server กันเยอะเสียด้วยสิ เมื่อรูปใน Cache (ซึ่งเก่าแล้ว) ถูกนำมาแสดงและเมื่อผู้ใช้พิมพ์หมายเลขนั้นไปก็ปรากฎว่าระบบบอกว่าไม่เคยสุ่มหมายเลขนี้เก็บไว้ กลายเป็นปัญหาในการใช้ระบบในที่สุด

ตัวผมไม่รู้ถึงปัญหานี้เพราะ Network ของผมไม่ได้อยู่ภายใน Proxy Server ก็ได้ อ.กรกฎช่วยชี้ให้เห็นและแนะนำวิธีการแก้ตามข้อมูลในเว็บนี้ซึ่งต้องขอขอบคุณ อ.กรกฎ มา ณ ที่นี้ด้วย

ส่วนวิธีการแก้ของผม (ตามแนวคิดในเว็บนั้น) ก็คือทำให้ชื่อรูปที่ผมสร้างขึ้นมานั้นเป็นชื่อสุ่ม และด้วยชื่อสุ่มนี้ ถ้า Proxy Server จะ Cache ก็ Cache ไป เพราะโอกาสที่ชื่อจะซ้ำนั้นถูกนำมาใช้ใหม่คือ 1 ใน 100,000 ครับ วิธีนี้เป็น solution ง่ายๆ แต่คิดว่าน่าจะใช้งานได้ดี ส่วนจะได้ผลหรือไม่ได้ผลอย่างไรก็ช่วยกรุณาแนะนำด้วย โดยเฉพาะจากผู้บริหาร Proxy Server ครับ

ต้องขอหมายเหตุแนบท้ายไว้อีกหน่อยว่า ในการแก้ปัญหาของระบบ MemeExpress นั้น เราพยายามจะเลือก solution ที่ง่ายๆ เพราะวัตถุประสงค์เมื่อระบบ MemeExpress ใช้ได้ดีแล้ว เราอยากให้ระบบนี้ถูกนำไปติดตั้งใช้ได้อย่างง่ายๆ solution อย่างการตั้ง mod_expires นั้น เรายังถือว่าเป็นการเพิ่มงานให้แก่คนเอาระบบเราไปติดตั้งครับ