posted on 12 Jun 2008 08:15 by icedtea in Wikipedia
ปัจจุบันวิกิพีเดียไทยมีมากกว่า 36,000 บทความ มีผู้เข้าชมโดยเฉลี่ยกว่า 2-3 ล้านครั้งต่อเดือน ซึ่งคาดว่ามีการแก้ไขมากกว่าพันครั้งต่อวันทั้งจากผู้ใช้ที่เป็นสมาชิก และจากผู้ที่ไม่ล็อกอินทั่วไป ซึ่งวิกิพีเดียจึงมีการแก้ไขจากหลากหลายผู้ใช้ แต่ทว่าทำไมบทความส่วนใหญ่บนวิกิพีเดียไทย ถึงสามารถเป็นรูปแบบแนวสาระนุกรมเดียวกันได้
หนึ่งในคำตอบหลักคือว่ามีผู้ใช้สมาชิกหลักที่คอยเข้าดูแลวิกิพีเดียไทยเป็นประจำที่คอยตรวจสอบการแก้ไขล่าสุด รวมถึงช่วยติดป้ายแจ้งสถานะให้ทราบ และแก้ไขเพื่อให้เป็นลักษณะสาระนุกรมมากขึ้น และอาจแจ้งลบหากเหมาะสม
แต่ทว่าผู้ใช้ส่วนมากมักไม่รู้จักบอต หรือผู้ใช้ที่ควบคุมด้วยโปรแกรมอัตโนมัติที่มักทำงานสารพัดอย่างอยู่เบื้องหลัง โดยเฉพาะงานที่ซ้ำซาก น่าเบื่อสำหรับคนทั่วไป วันนี้ผมจึงขอแนะนำ บอตคุง หนึ่งในบอตที่พัฒนาและรันโดยคนไทยบนวิกิพีเดียไทย
ซึ่งตัวอย่างงานที่ทำคือการแก้ไขคำที่คนอาจพิมพ์ผิดบ่อย หรือหลักการทับศัพท์ หรืปัจจุบันรวมถึงกรณีสระซ้อน ซึ่งปัจจุบันคำที่บอตคุงตรวจนั้นมีมากกว่า 80 รายการ ตัวอย่าง:
|
คำที่ตรวจสอบ
|
คำที่แทนที่ |
|
คริสตศตวรรษ
|
คริสต์ศตวรรษ
|
| คริสตศักราช |
คริสต์ศักราช |
| คริสตศาสนา |
คริสต์ศาสนา |
| คริสต์กาล |
คริสตกาล |
| คริสต์เตียน |
คริสเตียน |
| คริสมาส คริสมาสต์ |
คริสต์มาส |
อย่างกรณีด้านบน เห็นได้ชัดว่าหากผู้เขียนไม่รู้จริงนั้น สะกดพิมพ์ได้อย่างง่ายเลยเพราะว่าบางคำไม่มีการันต์ แต่บางคำมี หรืออย่างกรณีด้านล่างนั้น ผู้เขียนอาจไม่คุ้นเคยวิธีการทับศัพท์อย่างถูกต้อง หรือตามฉบับวิกิพีเดียไทยเป็นต้น เชื่อว่าผู้อ่านที่นี่ส่วนใหญ่เองก็อาจจะใช้วิธีทับศัพท์ต่างกับที่แนะนำบนวิกิพีเดียไทย
|
คำที่ตรวจสอบ
|
คำที่แทนที่ |
|
อัพเด็ต, อัพเดต, อัพเดท, อัปเด็ต
|
อัปเดต
|
| อัพโหลด |
อัปโหลด |
| อินเตอเน็ต, อินเตอร์เน็ต, อินเตอร์เนต |
อินเทอร์เน็ต |
| ลิ้งค์ ลิ๊งค์ ลิ้งก์ ลิ๊งก์ |
ลิงก์ |
ซึ่งการใช้บอตนั้นช่วยให้ผู้เข้าอ่านวิกิพีเดียไทยได้รู้สึกว่าบทความและรูปแบบการเขียนเป็นแนวทางเดียวกัน ซึ่งการแก้ไขคำคือเพียงแค่หนึ่งในวิธีที่บอตคุง และวิกิพีเดียไทยใช้เพื่อให้ได้คุณภาพที่เป็นมาตรฐาน
ในโพสต่อไป ผมเองจะขออธิบายต่อถึงหน้าที่หลากหลายอย่างที่บอตคุง และบอตอื่นๆ ได้ทำงานเบื้องหลังบนวิกิพีเดียไทยที่คุณอาจจะยังไม่รู้
หลายคนเองก็คงคุ้นเคยกับวิกิพีเดียไทยอยู่แล้ว ซึ่งเป็นสาระนุกรมเสรีที่เปิดให้ทุกคนสามารถแก้ไขได้ แต่น้อยคนอาจจะรู้จักไร้สาระนุกรมไทย ซึ่งเป็นไร้สารนุกรมเสรี และเปิดให้ทุกคนแก้ไขได้เช่นกัน โดยไร้สาระนุกรมนั้น ทำเลียนแบบวิกิพีเดีย ซึ่งแต่ละบทความจะเน้นขำขัน เล่นตลก และเสียดสีเป็นหลัก
ขอยกข้อความส่วนหนึ่งของบทความไร้สาระนุกรมบนวิกิพีเดียไทย:
เนื้อหาส่วนใหญ่ในไร้สาระนุกรม มีลักษณะเป็นเรื่องแต่งขึ้น
เรื่องล้อเลียน และเรื่องขำขัน
ตัวอย่างของข้อความที่ปรากฏในเว็บไร้สาระนุกรม ในหน้าบทความประเทศไทย เช่น
พูดถึงมุมมองไร้สาระนุกรมจากวิกิพีเดียแล้ว ไร้สาระนุกรมก็พูดถึงวิกิพีเดียเหมือนกันครับโดยเริ่มต้นแบบว่า:
วิเกรียนพีเดีย (Wigrianpedia) คือสารานุเกรียนเผด็จการภาษาไทยบนอินเทอร์เน็ต และได้รับการวิจารณ์ตบท้ายโดยผู้ใช้หนึ่งในไร้สาระนุกรมว่า
ซึ่งไร้สาระนุกรมยังมีบทความเด็ดๆอีกหลายบทความให้ทุกคนเข้าไปอ่าน และช่วยเสริมแต่งให้เมามันยิ่งขึ้น บางบทความนั้นแม้แต่งขึ้น แต่ก็มีอาจมีข้อเท็จจริงเบื้องหลังซ่อนอยู่เลยทีเดียว
อย่างบทความที่ผมชอบปัจจุบันก็มี:
ซึ่งเนื่องจากรูปแบบเนื้อหานั้น ทำให้เว็บได้ถูกต่อว่า และด่าอยู่เป็นระยะๆ ซึ่งผมเองได้มองดูทั้งแฟนคลับที่เข้ามาพยายามต่อว่าที่ไปแซวดาราอย่าบทความเอ๊ดจวยที่ได้สร้างความสนุกสนานในไร้สาระนุกรมมาแล้ว เพราะฉะนั้นแล้วผมเองก็แนะนำใครเข้าไปอ่าน ก็ปล่อยใจให้สบาย เพื่อความมันฮา ตลก แต่ถ้าหากต้องการหาเนื้อหา ข้อมูล แล้วก็เชิญไปที่วิกิพีเดียเองเลยครับ มีรายงานเหมือนกันว่าผู้ใช้บางคนที่เขียนอยู่ในวิกิพีเดียไทย บางทีก็หนีแวะมาเขียนที่ไร้สาระนุกรม เพื่อระบายบ้าง หรืออะไรต่อไรก็แล้วแต่ ส่วนผมเองก็เข้าทั้ง 2 เว็บแหละครับ อิๆ
จะบอกว่าหลังจากโพสเรื่อง "งงๆ" ไปแล้ว 2 เรื่องก็กะว่าจะเปลี่ยนไปโพสเรื่องอื่นๆบ้าง แต่นี่เพิ่งเจอพอดี เลยอดไม่ได้ ไหนๆ ก็ 2 เรื่องไปแล้ว ก็ขออีกโพสก่อนละกัน
คือว่าไปพบเจออีกแล้วครับ ก็คือมีเว็บบอร์ดที่หนึ่งมีคนมาถามขอให้ช่วยลดความซ้ำซ้อนของ update query นี่หน่อย (ซึ่งความจริงแล้วเป็น SELECT statement สงสัยจะงงจัด) ซึ่งมีความยาวเกือบ 700 บรรทัดได้ ผมเองดูแล้วก็เรียกว่าเลิกพยายามจะทำความเข้าใจ
ไปดู query ดังกล่าวกันเอาเองนะครับที่นี่เลย ต้องเรียกว่าสุดยอดจริงๆ
การตอบรับของผู้ใช้รายแรก ตอบอย่างสั้นๆง่ายๆว่า "ไม่ละ ทำเอาเองละกันนะ" (ไม่แน่ ถ้าผมเองก็คงเข้าไปตอบก็คงตอบเหมือนกัน ก็พี่แกถูกจ้างมาทำงาน แต่ให้คนอื่นทำให้ฟรีไปหมดเลยนี่สินะ สะดวกดีเหมือนกันเนอะ
) แต่ก็มีผู้ใช้ใหม่เข้ามาโพสคนหนึ่ง แบบว่าไม่รู้ว่าใช้เวลาขนาดไหน แต่ถึงขั้นดึงข้อมูลเป็นตารางออกมาเรียบร้อย พร้อมเริ่มขั้นตอนอธิบายวิธีการปรับ query ให้ดูเรียบง่ายขึ้นอย่างน่าแปลกตา จนแบบว่าผู้ที่มาตอบคนสุดท้าย ได้ให้ความคิดเห็นว่า เออ หวังว่าผู้ใช้คนนี้เข้ามาตอบโพสของผมนะ หากผมมีคำถามครั้งต่อไป เหอะๆ
ป.ล. สำหรับผู้ที่อ่านแล้วงงอยู่ดี คือว่าการเขียนโค้ดควรจะกระชับ สั้น ได้ใจความ อ่านแล้วเข้าใจติดตามได้ ไม่ควรจะเป็นแบบที่เห็น SELECT อะไรก็ไม่รู้ 600 กว่าบรรทัด มีอะไรผิดสำแดงแล้ว เห็นแล้วสงสารเซิร์ฟเวอร์ตอนรัน
ในหลายกรณีที่คุณอาจจะต้องเขียน Stored Procedure เพื่อทำหน้าที่ง่ายๆ อย่างตรวจสอบว่ามี record นี้หรือยัง หากมีแล้วให้ทำการ UPDATE หากยังไม่มีให้ทำการ INSERT อย่างกรณีที่ใช้กันไม่ว่าจะสำหรับอัปเดต/เพิ่มสินค้า หรือสถิติก็ตาม
โดยปกติแล้ว ผมเองก็จะเขียนใช้ IF statement อะไรแบบนี้
IF EXISTS (SELECT *
FROM Table1 WHERE Column1='something')
UPDATE Table1 SET (something = something) WHERE Column1='something'
ELSE
INSERT INTO Table1 VALUES (something, something)
วันก่อนเพื่อนที่ทำงานอยู่มาถาม ผมเองก็ให้ความแนะนำแบบนี้ไป หากค้นหาบนอินเทอร์เน็ตตามบอร์ดต่างๆ ก็จะเห็นว่าแนะนำวิธีแบบนี้กัน แต่วันหนึ่งได้ไปอ่านเจอบล็อกนี้พอดี ซึ่งอธิบายถึงแนวทางที่ดีกว่านี้ เลยขอมาเล่าให้ฟังเพราะว่าหลายคนอาจไม่รู้เหมือนกัน
ซึ่งเข้าใจก่อนว่าวิธีเดิมนั้น SQL ต้องเสียเวลาไปค้นหาเพื่อตรวจสอบว่ามี record อยู่หรือเปล่า แต่ถ้าใช้วิธีใหม่แบบนี้:
UPDATE Table1 SET
(something = something) WHERE Column1='something'
IF @@ROWCOUNT=0
INSERT INTO Table1 VALUES (something, something)
จะพบว่า SQL ไม่ต้องเสียเวลาค้นหาเลย โดยจะพยายามอัปเดตทันที จากนั้นตรวจสอบว่าอัปเดตได้หรือไม่ด้วยเพียงตรวจค่า ROWCOUNT ไม่ต้องค้นหา จากนั้นหากไม่ได้อัปเดต จึงค่อย INSERT พอผมอ่านจบ บอกว่าค่อนข้างประทับใจเลย เวลารู้สึกได้รู้วิธีอะไรใหม่ๆ ดีกว่าเดิม
ป.ล. ผมเคยมีประสบการณ์จริงที่เคยเขียนแล้วใช้งานจริง โดยเขียนใช้วิธีแรก แต่แล้วคำสั่งอัปเดตผิดพลาดอย่างเป็น .... WHERE DepartmentCode = DepartmentCode แทนที่จะเป็น DepartmentCode = @DepartmentCode เพียงโค้ดผิดเล็กน้อย ทำให้คำสั่งไปอัปเดตซ้ำกัน โดยหลายกรณีควร INSERT ใหม่ พอเห็นแล้วรู้สึกได้โง่เลย จากนั้นต้องมานั่งแก้ไม่ใช่แค่โค้ด แต่รันคำนวณประมวลข้อมูลใหม่อีกด้วย เหอะๆ
ข่าวเกี่ยวกับไออี 8 ได้ออกมาสักพักแล้ว หลังจากไมโครซอฟท์ได้เปิดให้ผู้ใช้ทั่วไปที่สนใจ สามารถดาวน์โหลดไออี 8 เบต้า 1 ได้ไม่นานที่ผ่านมา ซึ่งได้มีการพูดถึงความสามารถใหม่ และการปรับปรุงใหม่ต่างๆ
วันก่อนผมอ่านเจอบล็อกหนึ่งพูดถึงความสามารถที่ไม่ได้มีพูดถึงที่อื่น ซึ่งฟังแล้วเล็กน้อยมาก แต่อย่างน้อยลดการบ่นจากผมได้ข้อหนึ่ง นั้นคือเวลาที่พัฒนาเว็บแอปพลิเคชันบน Visual Studio แล้วต้องดีบักจาวาสคริปต์นั้น ต้องปิดตัวเลือก "Disable script debugging" เพื่อที่จะสามารถดีบักจาวาสคริปต์ได้ แต่เมื่อปิดตัวเลือกนี้แล้ว จะพบกับกล่อง dialog แจ้งข้อผิดพลาดสคริปต์เวลาเราเข้าเว็บอื่นๆที่มีข้อผิดพลาดของสคริปต์ ซึ่งทำให้รำคาญ แต่จะปิดก็ไม่ได้ เพราะเดี๋ยวเวลาพัฒนา ก็ต้องเสียเวลามานั่งเปิดอีก จึงทำให้เป็นสิ่งรำคาญที่ต้องทนไป (หรือบางคนก็จะต้องทนปิดทนเปิดแทน)
ตั้งแต่ครึ่งปีที่แล้ว Visual Studio 2008 แอบรู้ก่อนว่าไออี 8 จะมีการปรับปรุงระบบแทบด์ใหม่ จึงได้เพิ่มความสามารถล่วงหน้าไว้โดยจะบอกไออี 8 ให้เปิด script debugging เฉพาะ tab ที่รันแอปพลิเคชันของเราเท่านั้น ซึ่งทำให้ต่อไป ผมจะได้สามารถเปิดตัวเลือกให้ disable script debugging แต่ยังสามารถดีบักสคริปต์ของแอปพลิเคชันได้เหมือนเดิม
นี่แหละ ความสามารถเล็กๆน้อยๆ เชื่อหรือไม่ว่า เป็นต้นเหตุกับความหงุดหงิด ซึ่งจะช่วยได้เยอะเลยทีเดียว
ป.ล.โพสนี้เจาะกลุ่มเป้าหมายเฉพาะสำหรับผู้พัฒนาเว็บแอปพลิเคชันบน Visual Studio ผู้ใช้ไออีทั่วไปอ่านแล้วอาจจะงงเล็กน้อย หรือบานกลาง และอาจสรุปว่าไม่เห็นเกี่ยวอะไรเล้ย เสียเวลา