"พี่ทำไม โปรแกรม POS มันแพงจัง เห็น บริษัท .......... ขายกันแค่ห้าพันเอง " น้องคนหนึ่งถามผม
"แล้วทำไม โลตัส คาร์ฟูร์ ทำระบบกันเป็นล้านล่ะว้อย" ผมถามกลับ
วันนี้เลยมาเล่า เรื่อง POS ให้ เพื่อนๆ ฟังว่า งานง่ายๆ หมูๆ แต่ มันยิ่งกว่าหมูกัด เหมือนหมากัด ด้วยซ้ำไป บางครั้งมันขย่ำเราแทบตาย เจ้า POS นี่ มันก็คือ โปรแกรม ที่
ย่อมาจาก Point of Sale เอาไว้ทำหน้าที่แทน เครื่อง Cashier ที่จุดขาย คุณจะขาย ของ Super market หรือ เปิดบริษัทขายประกันขาย พรบ. เปิดอาบอบนวด กระทั่งโรงแรมคุณก็
ต้องมีระบบนี้ มันจะสะดวกมาก เพียงแต่หน้าตามันต่างกัน ไม่มี งานไหนเป็นโปรแกรมสำเร็จรูปหรอกครับ
มันยุ่งตรงไหน
สมัยก่อน เราทำระบบ POS บนดอส File server ก็ไม่พ้น Netware 3.12 ตัวเก่งที่ ผมว่าเยี่ยมกว่า วินโดว์ด้วยซ้ำไป ดีกว่าอย่างไร
ดีเพราะ ไวรัสมันไม่ยุ่งกับ Netware ง่ายๆ เหมือน Windows Server ซิครับ แต่ยุคนี้ พศ นี้ อาจจะมี เล่นเจ้า Ubuntu ก็ได้ ทีนี้ มาคุยกันเรื่อง Hardware ที่ เรียกว่า SA ที่
ไม่เคยลงสนามรบจริงๆ หรืออาจารย์มหาวิทยาลัย เจอของจริง ตายหะอ่า เรียบ!!
ในชุดHardware นี่นะครับ มันประกอบด้วยหลายส่วน เอาหลักการ ตามตำราก่อน
ผมแนะนำ นักเขียนโปรแกรมมือใหม่ให้ แม่นยำ ตำราพิชัยสงคราม ซุนวู ไว้ก่อน เกี่ยวไรด้วยวะ หลายคนถาม ผมก็ตอบว่า "เกี่ยวซิวะ"
ซุนวู บอกว่า "ผู้ชนะ จะรบเมื่อเห็นชัยชนะ แต่ผู้แพ้จะรบก่อนแล้วหวังชนะทีหลัง" จำไว้นะครับ จำให้ดี
ในระบบ มันมี อย่างแรกเครื่องคอมพิวเตอร์ตัวนี้ของตาย แต่ดูให้ดีก่อนนะครับ จะออกแบบหน้าจออย่างไร เพราะ มีทั้งแบบ ใช้ คีย์บอร์ด และแบบหน้าจอสัมผัส Touch Screen ออกแบบหน้าจอคนละเรื่องเลยนะ เจ้า หน้าจอ Touch screen มันไม่มีอะไร ลึกลับหรอก จริงแล้วมันก็จะมีแผ่น Touch screen มาแปะให้เท่านั้น
แล้วทีนี้ตัวปวดหัว ไม่มีใครเกินเครื่องพรินเตอร์ สมัยก่อน สรรพากร มันบ้า ครับ มันบ้าจริงๆ มันบอกว่า ให้เก็บ ม้วนฟิล์มขายของ ไว้อีกม้วนหนึ่ง นอกเหนือจาก ม้วนที่ฉีก
ให้ลูกค้าไป ทีนี้ห้างใหญ่ เอาว่า Big C หรือ เอาชาวบ้าน ๆ อย่างที่ผมทำทำนี่แหละ มีเครื่อง POS 20 ตัว วันหนึ่ง ใช้พนักงานสองกะ กะละหนึ่งม้วน วันหนึ่ง 40 ม้วน ปีหนึ่ง 14600 ม้วน !! แล้วเก็บไว้ห้าปีด้วยนะ 73000 ม้วน เผาอธิบดีกรมสรรพากรได้พอดี รับรอง ไขมันที่พุงก็ไม่เหลือ
ทีนี้ สมัยนั้นต้องใช้ Printer Epson TM-930 ซึ่งต่อมาเป็น 950 มันดีอย่างไร มันดีตรงที่ เจ้าพรินเตอร์ตัวนี้ มันใส่กระดาษได้สองโรล แต่เวลาเขียน นี่แหละ สนุกสนาน
เพราะ บางจังหวะ เราต้องหยุด ม้วน ขวา พิมพ์แต่ม้วนซ้าย บางจังหวะ พิมพ์พร้อมกันสองม้วน พอพิมพ์เสร็จสั่งใบมีดตัด ม้วน ซ้าย ฉีกให้ลูกค้า เสร็จยังไม่พอใจ บางครั้งต้อง Form feed อีกม้วนหนึ่งด้วย ดีนะไม่เป็นกระดาษชำระ จะได้โปรแกรมว่า ปวดอึ ให้มันฟีดกระดาษชำระออกมาเยอะๆ
สมัยนั้นจะมี Printer Epson TM-300 อีกรุ่นเป็นกระดาษม้วนเดียว สรรพากรไม่ยอม แต่มันก็ใช้ดีนะครับ เอาไว้พิมพ์บัตรจอดรถ นะได้ บัตรจอดรถนี่ก็ POS แบบหนึ่ง
เหมือนกัน พอทีนี้ เชื่อว่าพวกค้าปลีกคงจะโวยวาย ว่า ไม่มีที่เก็บ ม้วนกระดาษแล้วก็เลย ต้องยอมว่าให้เก็บในรูปของ CD-Rom ได้ ทีนี้ ก็เฮ
เรื่องพรินเตอร์นี่ ก่อนจะรับงานขอความกรุณาดูก่อนนะครับ ผมเคยเจอ ลูกค้าหิ้วของจาก สิงคโปร์มาเป็น Citizen พิมพ์กระดาษได้โรลเดียว แล้วไม่มีภาษาไทย โอละพ่อ
ยุ่งตายโหง ต้องเขียนโปรแกรม เปลี่ยน Wording โปรแกรมเราใหม่หมด เลย
ยังไม่สะใจ ครั้งหนึ่งผมเคยรับงานเขียนโปรแกรม ให้ กับ บริษัทลูกของ ห้างตราพระอาทิตย์ ที่ไปเช่าที่การรถไฟไทยในราคาแสนถูกกกกกกกกกกกกกกกก จนไม่น่าเชื่อ ไม่
บอกคงรู้ว่าห้างอะไร
จ้างให้ผมทำ POS ทีนี้ ผมเห็นพรินเตอร์ก็ยังใจเย็น ว้อย TM-950 ใครก็เขียน เขียนมาแล้ว รันมาแล้วข้าชำนาญ
"เฮ้ยยยยยยยย พอร์ตพรินเตอร์ไปไหนวะ" ผมถาม เจ้าหน้าที่ฝ่าย Hardware ของเขา
"ไม่มีครับ ของเราเป็น RS-232 port " เขาตอบ
บรรลัยเห็นๆ งานเข้าแล้ว เพราะต้องเขียนโปรแกรม เปิด port Com:2 ให้มันพิมพ์ ภาษาไทยจัดบรรทัดด้วย โอวววววววว คุ้มไหมนี่ ค่าเขียนโปรแกรม
ยังมีอีก พรินเตอร์ อีกแบบเขาใช้ความร้อน ในการทำให้ กระดาษ แสดงตัวอักษร เรียกว่า เทอร์มอลพรินเตอร์ ที่จริงหลักการเดียวกันกับพรินเตอร์ตัวอื่นแต่ อักษรมันสวย
แล้ว ชัดเจน กว่าพรินเตอร์ Epson ที่ใช้ผ้าหมึก ธรรมดา
ทีนี้ โลก มนุษย์หมุนเวียนไปเร็วมาก DOS โดนเก็บเข้ากรุ Netware 3.12 แทบหายไปจากโลกมนุษย์ ทุกอย่างอยู่บนวินโดว์ มันยุ่งนะครับเพราะ เวลาเราเขียนโปรแกรม
ยกตัวอย่าง ภาษา BASIC สั่งพิมพ์ เราก็
Lprint ":-)" มันก็พิมพ์ทันที แล้วเราก็เซทไว้ด้วยว่า ให้มัน เป็น การพิมพ์ทันทีทันใด
แต่ บนวินโดว์ต้องมีเทคนิคไว้จะเล่าต่อไป
ทีนี้ ลิ้นชัก หลายคน มักจะสงสัย ว่า ลิ้นชักมันเปิดได้ไง มันจะเป็น สวิตช์ที่ต่อสายไฟมาจากเครื่องพิมพ์ ครับ แล้วที่เครื่องพิมพ์จะมี Escape Code สั่งให้มันเปิด พอเรา
สั่ง เช่น lprint chr(27)+chr(58) เป็นต้น มันก็จะส่งสัญญาณไปเปิด ลิ้นชักไม่มีอะไรลึกลับ
แต่ ลิ้นชักเจ้ากรรมมันก็ มีเรื่องให้ปวดหัว เพราะ ลูกค้ามักจะบอกว่า
"ถ้าลิ้นชักเปิดไม่ให้ขายสินค้าได้ " ทำอย่างไร ดีหว่า เพราะ แบบนี้มันต้องมีเซนเซอร์ ด๊อกเตอร์เขาคิดไงผมไม่รู้นะครับ สมัยก่อน ผมเล่นเทคโนโลยี่ชาวบ้าน สิบบาทก็เสียว
ได้ เอ้ยไม่ใช่ สิบบาท ก็จบงาน
ไปร้านอิเลคทรอนิคส์ แล้ว ซื้อสวิตช์ กดต่อ ปล่อยตัดมา ยัดไว้ที่ ด้านในของลิ้นชัก แล้ว ต่อสายไฟมา ที่ สายคีย์บอร์ด ที่ขาหมายเลขห้าของคีย์บอร์ดคือ สายไฟ DC เรา
ก็จัดออกแล้วเชื่อมด้วยสวิตช์นี้ซะ ทีนี้พอลิ้นชักเปิด คีย์บอร์ดก็เจ๊ง เอ้ยไม่ใช่ มันก็ขายไมได้ ไม่ทำงาน พอเราปิดลิ้นชัก ไฟDC มันก็ต่อเข้าใหม่ ใช้งานได้
แต่ถ้า สมัยนี้ใช้ Touch Screen ก็ มีวิธีเอาน่า ได้เสมอ ขนาดโน๊ตบุ๊ค ผมก็โมกับสายคีย์บอร์ดได้เลย
เหนื่อยหรือยังครับ ทาสเทวีออนทัวร์ กับ ระบบ POS ยังไม่หมด ระบบจะจบไม่ได้ ถ้าไม่มี Customer display ก็เจ้าเสาโอบิลิส ที่สูงๆ แล้ว มีตัวเลข บอกว่า กี่บาท นี่แหละ
พวกนี้ ร้อยละ 90 มันต่อด้วย RS-232 ทั้งนั้น ดังนั้น คงหนีไม่พ้นที่จะเปิด คอมพอร์ต แน่ๆ รวมไปถึงเจ้า เครื่องเลเซอร์สแกนเนอร์แบบเป็นหลุม นี่ก็ RS-232 เป็นพระเอก ดังนั้น
ระบบนี้ ใครเขียนโปรแกรม อ่าน Com port ไม่ได้ ฝึกซะๆๆ
สายแลนมองเหมือนไม่มีอะไร แต่มีและสำคัญมากเลย Super market ร้อยทั้งร้อย จะขายอาหารสดด้วย เช่นหมูแพ๊ก ปลาสด มันเร้าใจคุณมิกกี้เม้าท์จริงๆ คุณหนูๆ จะ
วิ่งให้พล่านตอนกลางคืน แล้วมันก็จะ กัดสายแลน ให้ขาดรุ่งริ่ง
เรื่องนี้ผม เจอมาประจำ โยนไว้ใต้ฝ้า T-bar มันกัดเละ ไม่ต้องบอกผมนะว่าให้ใช้ Wireless มัน ไม่ได้ครับเพราะพวกนี้สัญญาณมันตก เป็นระยะๆ ไงก็ต้องใช้ สายแลน
แล้ว เทคนิคที่ดีที่สุด ที่ได้ผลคือ ผ้าชุบน้ำมันก๊าด รูดสายแลนก่อน มันอยู่ได้เป็นปีเลยนะครับ ที่หนูจะไม่ยุ่ง
เป็นไงครับ นี่แค่ Hardware เท่านั้น สำหรับระบบที่ไม่มีอะไร ไว้พรุ่งนี้ถ้าไม่ติดอะไรจะเล่าเรื่อง Software ว่ามัน ต้องมาเกี่ยวดองหนองยุ่ง เป็นยุงตีกันอย่างไร บางงานง่ายๆ ดู hardware ไม่มีอะไร แต่ถ้างานไหน Hardware เป็น RS-232 หมด ไม่ต้องห่วงครับ โปรแกรมละห้าพันคุ้มไหม นี่
เพียงปุ่มเปิดปิดลิ้นชัก ถ้าไม่รอบคอบ มันเกิดผลเสียได้ง่าย งานเขียนโปรแกรมกับคน คนที่จ้องจะโกง นี่ มันเป็นเรื่องที่ปวดหัว ดังนั้น คุณจะเห็นแคชเชียร์ห้างใหญ่ บางทีจะมีการย้ายแผนก กันบ้าง เพราะ ชำนาญนัก เริ่มรู้เทคนิค กัน นี่ผมไม่ได้ไปว่าพวกเขาไม่ดีหมดนะครับแต่ มันทำให้ผมระแวงตลอด เพราะเจ็บตัวมาแล้ว ผมอยากจะเล่าประสบการณ์การวางระบบหลายๆ เรื่องให้น้องๆ และเพื่อนๆที่ คิดจะจับงาน ไม่ใช่ตำราที่จะบอกว่า ต้องมีนั่นมีนี่
SA ไม่เคยสอน อาจารย์ไม่เคยบอก ลอกเพื่อนก็ไม่ได้เวทีแห่งนี้ไม่มีพี่เลี้ยง คุณนั่นแหละ ต้องเอา ประสบการณ์มาต่อยอด ผมพลาดอะไร ผมโง่อะไร จำไว้อย่าโง่เหมือนกับผม แล้วคุณต้องเอา ไปต่อยอดให้ดีกว่าผม
Index แน่ใจหรือว่า มัน ใช้ได้ดีหมดทุกโปรแกรม SQL server,Oracle ,MySQL,PostgreSQL และอีกสารพัดตัว กระทั่ง เจ้าจิ้งจอกสีส้ม นามว่า Visual Foxpro สมัยก่อน Hub 10 Mbit การ์ดแลนก็ความเร็วต่ำ
"พี่ ............. ทำไม เวลาเปิดช่อง Cashier พร้อมกันหมด แล้ว ลูกค้าเยอะๆ มันช้าล่ะมันต้องรอ " น้องดาว พนักงาน Cashier ถามผม
ผมก็ไปดู มันเป็นจริงๆ ครับ เวลา พนักงานปิดยอดขาย ของบิลแต่ละใบมันช้า ต้องรอ บางที เครื่อง น๊อกไปรายการขายก็หาย ปัญหาแบบนี้เกิดขึ้นได้อย่างไร ไม่สนุกแล้วนะครับ ผมต้องวิ่งขึ้นไปดู ที่ Server ใครใช้งานอะไร
"ไม่เป็นไร น้อง ให้ลูกค้าใช้ช่องถัดไปก่อน " ผมพูดแก้ ปัญหาแบบกำปั้นทุบดิน ก็แหมแคชเชียร์ชอบ อยู่แล้วคำพูดนี้ ดังนั้นมีเมียเป็นแคชเชียร์ ระวังกลางคืนจะเจอขอเอาไว้ช่องถัดไปแล้วจะหนาว 555
วันอาทิตย์ พนักงานบัญชี ก็ไม่อยู่ แล้วเป็นอย่างไร หน้าจอ Netware มันดีอย่างคือจะมี จุดสีดำๆ วิ่งหน้าจอ ถ้าเครื่องทำงานหนัก เจ้าจุดสีดำๆ นี่มันจะวิ่งเป็นงูเลื้อยเลย มันปรกติ แต่ทำไมมันช้า แล้วช้าเป็นช่วงๆ ด้วย มันเกิดไรขึ้นไวรัสไม่น่าจะใช่
set packet receive buffer ก็ถูกหมด เปิดเต็มที่
เริ่มเลยครับ ผมดูไฟล์ เก็บรายการขาย ไฟล์รายละเอียดการขายนี่แหละ ผมใช้คอมที่ห้องทำงานผม แอดรายการเข้าไปหนึ่งรายการ กับเจ้าไฟล์ขนาด 5 ล้านเรคคอร์ด ไม่ช้ามันไปได้ดี
ทีนี้ลองใหม่ แอดเข้าไป ห้าสิบรายการ ทีนี้ได้เรื่องมันช้าเลย
งานเข้าแล้ว เอาไงดี ผมจัดการแยกไฟล์ออกเป็นเดือนๆ ไฟล์ขายสินค้า แยกไปเลย เดือน 1-12 แล้วมี ไฟล์ หลักอีกไฟล์ ไว้เก็บรายการรวม ต้องปรับ วิธีการเขียนโปรแกรมใหม่ คือพอปิดบัญชีเดือนก็เอารายการขายในแต่ละเดือน ย้ายไปเก็บที่ ไฟล์ใหญ่ ถึงจะได้ ไม่อย่างนั้น มันช้า
"พี่.............................. มันช้าอีกแล้ว" น้องดาว โวยอีก
เอาแล้วครับ งานเข้าผมอีกแล้วทำไมมันยุ่งนัก จะให้เป็นช่องถัดไปคงโดนด่าแน่ ต้องช่องนี้แหละ ที่ต้องจัดการให้สำเร็จ
บัญชีทำงาน กับเจ้าระบบ การขาย ต้นเดือนบัญชี จะเรียกสรุปยอด รายแยกเจ้าหนี้ และ ยอดขายแยกตามรายการสินค้า นี่เป็นเรื่อง ปรกติ ของบัญชีที่เขาต้องรู้ แล้วคุณคิดดู รายการขาย เจ็ดแสนรายการต่อเดือน มันสรุปยอด เจ้า Fox ตัวเก่ง มี Total ฟังก์ชั่นนี้เบาแรงคนเขียนโปรแกรมแต่ไม่เบาแรงเครื่อง บัญชีนึกจะเรียก รายงานก็เรียก
Total to tmp_cre on creditor_id field net
บรรทัดเดียว แต่เครื่อง สรุปประมาณ สงสารเครื่องเลย เพราะ CPU ทำงาน 100%
ช่องทางเต็มแน่ ต้องเพิ่มการ์ดแลน จากหนึ่งเป็นสอง หรืออาจจะเป็นสาม นี่แหละครับ ถึงเป็นคำตอบว่า ทำไม ระบบ รุ่นเก่าต้องมี Lan Card หลายแผ่น แต่ปัญหาเรื่องนี้ปัจจุบันลดไปมาเพราะ Hub และ Lan card มัน เร็วขึ้นเยอะ มันแรงเกินพอ
แต่สิ่งที่เป็นปัญหา ยังคงเดิม Harddisk นี่แหละครับ มันใช้พื้นที่เดิม ๆทุกคนแย่งกันใช้ Harddisk มันทำงานไม่ทัน ถ้าระบบใหญ่ ผมแนะนำว่าบัญชี ควร เรียก รายการขาย ซึ่งเรียกเดือนละหนึ่งครั้ง เรียกตอนห้างยังไม่เปิดจะดีที่สุด ผมเคยใช้ Fox dos 2.6 สรุปยอด เจ้าหนี้ กับรายการขาย ราว 7 แสนรายการ ผลคือ Fox มันล่มไปเลย คือมันช้า ช้าๆ แล้วก็หยุดไปเลย เพราะ มันอยู่บนดอส การจัดการความจำไม่ดี แต่พอ ใช้ Vfox 6.0 ขึ้นไปแล้วก็จบครับไม่มีปัญหา คงเพราะ OS ช่วย ให้ใช้ ความจำที่เกิน 640KB ได้
ระบบงานใหญ่ รายงานคือหัวใจของมัน ฐานข้อมูล ตอนนี้ที่ผมเชื่อถือ คือ DBF,SQL server ที่ผมทดสอบ มา นะครับคู่นี้เร็วพอกันแต่ ตัวหลังได้เปรียบเรื่องการระบบปลอดภัย แต่อย่าลืมนะครับ DBF มันเหมือน คุณเอามือล้วงเข้าในโหลแก้ว แต่ SQL server มันเหมือนคุณเอามือล้วงลงในกล่องดำ อันไหนเหมาะอันไหนควร ความเหมาะสมในการใช้งาน นั่นแหละจะบอกคุณ
งานใหญ่จะเป็นการบอกว่า เจ้าฐานข้อมูลนั้น เก่งจริงไหม เก่งไม่ใช่ฟังก์ชันเยอะ แต่เอาว่างานพื้นฐาน เก็บข้อมูล มัน ใหญ่ขนาดไหน ทั้งขนาดไฟล์ ทั้งจำนวนรายการ ความเร็วในการเรียกค้น ผมมีปมในใจเรื่องนี้มาเยอะ เกือบจะเลิกเขียนโปรแกรมไปตลอดชีวิตก็เพราะ เรื่อง ฐานข้อมูลพังมาแล้ว ดังนั้น
ได้ฐานข้อมูลแปลกๆ มา ผมจะลองเลย Add ข้อมูล ซัก ห้าล้านรายการแล้วเรียกค้น รับได้ไหม เขียนโปรแกรม ให้มัน add เข้าไป มีแค่ รหัส สินค้า และชื่อสินค้า ข้อมูลก็ ใช้ Random สุ่มตัวเลข ซัก 7 หลัก เข้าไปตอนแรกๆ มันจะเร็วแต่ พอซักพัก หนึ่งให้เครื่องมัน แสดงจำนวน Record ไว้ที่หน้าจอด้วยจะเห็นว่ามัน เริ่มอืดๆๆ แล้วก็อืด บางอย่างนิ่งไปเลย นี่แหละได้รู้กันว่ามันดีไหม
ผมไม่เชื่อแล้วที่บอกว่า รับข้อมูลได้ สองพันล้านรายการ เขาเอาตามทฤษฎี ว่า ตัวเลข Integer มันมี บวกลบได้ราวสองพันล้าน ก็บอกว่ามันเก็บได้ ไม่ต้อง โปรแกรมระดับโลกหรอกผมเองก็เขียนได้ คุณก็ทำได้ ลอง เขียนโปรแกรมด้วย Qbasic แล้วเก็บข้อมูลไป สองพันล้านรายการซิครับ คุณก็เขียนได้ แต่เรียกค้นได้ไหมล่ะ ยิ่งต้องเขียน Index เอาว่าแบบ Binary นี่แหละ แล้วเรียกค้นมันขึ้นมา จะรู้เลยว่าไม่หมู แล้วมันพังด้วย
เวทีนี้ไม่มีพี่เลี้ยงแต่มีคนที่พลาดแล้ว เอาเป็นตัวอย่างต่อยอดได้ครับ