นี่เป็นเนื้อหาในตอนที่กะจะอัพในบทความโค้ดและเทคนิคฯ ในวันที่ 23 มิ.ย. หลังจากที่ปล่อยโค้ดพิเศษๆ ไปได้จำนวนหนึ่ง
คาดว่าคงจะเขียนยาว และค่อนข้างแรง เลยลองมาร่างๆ ในบล็อกนี้ก่อน
อาจมีการอัพแก้ไขและเปลี่ยนแปลงเรื่อยๆ ใครอยากเสนอแนะอะไรก็บอกมาได้เลยนะ
ขออนุญาตลบ side-bar ด้านข้างออกไป เพื่อขยายความกว้างหน้าบล็อกด้วย
เริ่มเลยล่ะกัน...
------
23 มิถุนายน 2553
เนื่องในวารดิถี ยี่สิบสาม มิถุนายน เวียนมาบรรจบ ( = วันที่เจ้าของบทความแก่ขึ้นอีกปี)...
เคจก็ขอใช้พื้นที่ในบทความนี้พูดอะไรในฐานะคนที่ศึกษาและเขียนโค้ดมานานพอสมควรแล้วหน่อยล่ะกัน
หลายๆ คนคงรู้กันแล้วว่า บทความนี้เป็นบทความแรกที่แจกโค้ดสำหรับ My.iD2 ที่จริงตอนนี้ที่เปิดบทความนี้ขึ้นมาก็ไม่ได้คิดหวังผลอะไร เพียงแค่เรากำลังเล่นเด็กดีอย่างเมามันในเวลานั้นอยู่พอดี (เป็นช่วงปิดเทอมที่ว่างมาก) และก็พอจะมีความรู้เกี่ยวกับโค้ดตกแต่งพวกนี้อยู่บ้างเล็กน้อย เลยพอแกะโค้ดได้ จากนั้นพอเพื่อนๆ มาเห็นก็ถามหาโค้ดมาใช้บ้าง เราก็ให้ๆ ไป หลายๆ ครั้งเข้าก็คิดว่า เปิดบทความแจกโค้ดเพื่อเผยแพร่โค้ดที่เราแกะได้เอาไว้เลยดีกว่า รวบรวมไว้เป็นสัดส่วนคนที่ต้องการใช้โค้ดคนอื่นจะได้หาได้ง่ายๆ ...ตอนนั้นก็แค่ทำเล่นๆ ไม่ได้คิดอะไรเลยจริงๆ
ต่อมาพอมีคนชอบมีคนชมมากเข้าก็ชักเริ่มเหลิง หาอะไรตั้งแต่โค้ดที่ตรงกับความต้องการของคนส่วนใหญ่, โค้ดที่แกะได้ก็จริง แต่คงไม่ค่อยมีคนใช้, ไปจนถึงวิธีเลี้ยงสัตว์เลี้ยง ระดับสมาชิก ที่มาของแต้มสะสม ที่เว็บเด็กดีก็บอกเอาไว้อยู่แล้ว (แต่อาจจะหายาก หรือยังไม่มีในตอนนั้น) เรียกว่าหาอะไรก็ได้มาอัพใส่ในบทความ ให้คนเห็นว่ามีการอัพเดทเรื่อยๆ ไปอย่างนั้นเอง ซึ่งทำไปแล้วก็ยังมีคนหัวอ่อนชมชอบอยู่เช่นเดิม เพราะตอนนั้นระบบพวกนี้มันเป็นอะไรที่เพิ่งมาใหม่จริงๆ แต่พอมาตอนนี้เริ่มรู้สึกตัวแล้วว่าที่ทำไปนั่นมันดูไร้ค่า และไร้สาระ เพราะ web content ของเด็กดีก็ทำหน้าสอนวิธีใช้งานอะไรพวกนั้นให้แล้ว จึงได้ลบตอนย่อยจำพวกนั้นออกไป (ที่เห็นเป็นตอนว่างๆ ในตอนนี้น่ะแหละ)
แรกๆ ทำบทความอย่างลวกมากๆ ภาพประกอบหรือคำอธิบายอะไรต่างๆ ก็ไม่ค่อยละเอียดเท่าไหร่ จนโดนคนบ่นหลายคนแม้จะแก้ตัวดักไว้แล้วก็ตามว่ารีบทำ ตอนนั้นก็แอบไม่พอใจเล็กน้อยที่มีคนเขียนคำวิจารณ์บทความนี้เสียๆ หายๆ เพราะเรื่องนี้ (ระบบวิจารณ์ก็เพิ่งมาใหม่เช่นกัน) แล้วก็มีคนที่เพิ่งเคยใช้ระบบวิจารณ์ครั้งแรก เขียนชมบทความเสียดิบดี แต่ลืมเปลี่ยนคะแนน (จำนวนดาว) ที่ให้เสียอย่างนั้น เลยกลายเป็นว่าให้คะแนนบทความนี้แค่ครึ่งเดียวไป ที่น้อยใจที่สุดคงเป็นเรื่องที่ว่า บทความโค้ดและเทคนิคฯ นี้เป็นที่ชื่นชอบจนมีคนเข้าชมและแฟนพันธุ์แท้สูงยิ่งกว่านิยายที่เราแต่งมานานปีเสียอีก ...แต่เรื่องพวกนี้พอผ่านมาแล้ว มองย้อนอีกทีก็คิดว่า จิ๊บๆ ไม่เท่าไหร่หรอก จะใส่ใจคนที่ว่าเราโดยไม่ใส่ใจเราไปทำไม คนที่เข้าใจผิดหรือทำพลาดไปก็ควรให้อภัยเขาเสีย ส่วนความนิยมของบทความประเภทนี้กับนิยายมันต้องต่างกันอยู่แล้ว
ด้วยความที่คิดทำเล่นๆ ตามสไตล์ของตัวเอง โค้ดแกะได้แล้วเอามาอัพก็คือโค้ดตกแต่งที่เราเองอยากได้ไปใช้งานจริง โค้ดบางอย่างที่เราคิดว่าเกินไป (อารมณ์ประมาณว่า ถ้าจะไปเปลี่ยนของเขาซะขนาดนั้น ไปทำเว็บใหม่เองเลยไม่ดีกว่าหรือ) จึงไม่มีในบทความนี้ และแล้วกาลเวลาก็ผ่านเลย เข้ามาสู่ช่วงเปิดเทอมที่มีงานถาโถมเข้ามาเยอะมาก เราทิ้งช่วงนาน ไม่ได้อัพบทความเพิ่มเติม (ขนาดที่นิยายที่อยากแต่งยังไม่ได้แต่งเลย) ดังนั้นความเหนือกว่าด้านกาลเวลาที่บทความนี้เป็นเจ้าแรกก็ลดทอนไป กลายเป็นรองบทความอื่นที่มีความต่อเนื่องกว่าเสีย
ถึงเป็นเช่นนั้นแล้วเราก็ไม่ได้คิดอะไรมากมาย ยังคงรักษารูปแบบเดิมไว้ เน้นไปทำงานนิยายมากกว่าเมื่อมีเวลาว่าง จนกระทั่งเปิดเทอมใหญ่เวียนมาอีกครั้ง และเราก็บนบานศาลกล่าวกับตัวเองเอาไว้ว่า ถ้าเกรดออกมาตามต้องการ จะกลับมาปรับปรุงบทความนี้ให้ดีขึ้น เพื่อเป็นความรู้และวิทยาทานให้แก่ผู้อื่นต่อไป เรามีความเชื่อส่วนตัวว่าการตั้งเงื่อนไขที่เกิดประโยชน์แก่สังคมเช่นนี้น่าจะดีกว่าการทำอะไรประหลาดๆ น่ะนะ (ถ้าเกรดไม่เป็นอย่างที่คิด เราก็จะสามารถขี้เกียจ ปล่อยบทความเป็นไปตามเดิมต่อไปได้ ถ้าเกรดเป็นอย่างที่คิด เราก็ดีใจ และความดีใจนั้นจะทำให้เราขยันทำบทความขึ้นมา แต่ก็ต้องเหนื่อยเพิ่มขึ้นเหมือนกัน เป็นการตั้งเงื่อนไขที่พยายามทำให้เท่าเทียมกันทั้งสองกรณี)
ผลปรากฏว่าเกรดก็ออกมาตามที่คาดหวัง เราก็ปลื้มปิติยินดีปรีดา และกลับมาวางแผนทำบทความโค้ดและเทคนิคให้รัดกุมกว่าเดิม ทำให้มีโอกาสชะโงกหน้าออกไปดูชาวบ้านชาวช่องเขาบ้างว่าไปถึงไหนกันแล้วในขณะที่เราหมกหมุ่นอยู่กับอย่างอื่น เราจึงได้เห็นความเข้าใจผิดเกี่ยวกับโค้ดที่ชวนให้หงุดหงิดไม่พอใจอยู่
โค้ดตกแต่งไม่ได้มีลิขสิทธิ์ : โค้ดตกแต่งส่วนใหญ่เป็นการประยุกต์ใช้โค้ดที่มีอยู่แล้วมาผสมผสานกันจนได้ผลลัพธ์ที่เราต้องการ
เปรียบเทียบเหมือนถ้าเรารู้สูตรเคมีว่าน้ำเกิดจากออกซิเจนหนึ่งโมเลกุลรวมกับไฮโดรเจนสองโมเลกุล และรู้กระบวนการรวมออกซิเจนกับไฮโดรเจนเข้าด้วยกัน เราก็สามารถสร้างน้ำขึ้นได้ สูตรรวมไฮโดรเจนกับออกซิเจนมันมีอยู่แล้ว เราไม่ได้คิดขึ้นมาใหม่ แค่เอามาใช้เท่านั้นเอง ลิขสิทธิ์ของน้ำไม่ได้เป็นของเรา
ถ้าเราเป็นคนแรกที่คิดโค้ดขึ้นมา (เหมือนคนแรกที่คิดค้นสูตรเคมี) ก็ว่าไปอย่าง แต่นี่ไม่ใช่โค้ดทั้ง css หรือ javascript ก็มีมาให้ใช้อยู่แล้ว ดังนั้นการจะโวยวายว่าโค้ดนี้เป็นของเรา คนอื่นจะลอกเลียนไม่ได้ ไม่ใช่เรื่องที่สมควรทำ เพราะคนที่มีความรู้ด้านนี้ก็มีสิทธิ์แกะโค้ดได้เอง ได้ผลลัพธ์ออกมาเหมือนกันได้
อย่างไรก็ตาม การให้เครดิตที่มาของโค้ดที่เราใช้ (หากเราไม่ได้แกะเอง) กลับไปยังแหล่งที่มาที่แท้จริงก็เป็นการดี เพราะจะทำให้คนที่อยากได้โค้ดตกแต่งมาให้บ้างหาโค้ดได้ง่ายยิ่งขึ้น ข้อนี้บทความนี้ไม่ได้บังคับ ขึ้นอยู่กับความสมัครใจช่วยเหลือของคนนำโค้ดไปใช้ ใครจะแวะเข้ามาก็อปโค้ดไปใช้เฉยๆ โดยไม่ทำอะไรอย่างอื่นเลย เราก็ไม่ว่า
[นอกเรื่องยาวๆ สักหน่อย... ด้วยเหตุที่เราไม่เรียกร้องคอมเมนต์ การลงชื่อว่าเอาโค้ดนี้นู้นไปใช้ คำวิจารณ์ หรือแฟนพันธุ์แท้ อะไรทั้งหลายเหล่านี้เอง บทความจึงดูต๊อกต๋อยอยู่อย่างนี้ (ฮา) ใจจริงถ้าได้มาก็ยินดี ไม่ได้ก็ไม่เป็นไร เรามีวุฒิภาวะสูงกว่าคนอื่นเขาก็ไม่ควรจะออกไปเรียกร้องสิ่งเหล่านั้น (เหมือนคนแต่งนิยายที่ไม่ควรเล่นตัว บอกว่าไม่เมนต์ไม่อัพนั่นแหละ เราในฐานะคนอ่านไม่ชอบอะไรแบบนั้นเลย) แต่พอคิดว่าคงมีหลายคนเอายอดตัวเลขพวกนี้เป็นตัวเปรียบเทียบว่าบทความไหนดีกว่ากัน ก็แอบเศร้านิดๆ ที่ใครจะเห็นว่าบทความที่เราตั้งใจทำนี้จะด้อยกว่าที่อื่น อย่างไรก็ตามเรายังคงยึดมั่นในอุดมการณ์เดิม ...ก็ได้แต่ทำใจไปน่ะนะ ]
เราไม่สนใจคนที่ลอกโค้ดจากบทความนี้ไปตั้งบทความแจกโค้ดใหม่โดยแอบอ้างว่าโค้ดนี้คิดขึ้นเองจริงๆ (แม้จะบอกว่าใครๆ ก็มีสิทธิ์คิดได้ แต่บางโค้ดที่มีลักษณะเฉพาะ มันก็เหมือนมีลายเซ็นซ่อนอยู่ในตัว คนคิดขึ้นมาจะรู้อยู่แล้วว่าเป็นของตัวเองหรือเปล่า) ไม่เคยรู้ว่ามีบทความเช่นนั้นอยู่หรือเปล่าด้วยซ้ำ เพราะคนที่ลอกโค้ดไปก็ได้แต่ลอกเท่านั้น ไม่ได้ความรู้อะไรใหม่ๆ ไปไว้สำหรับสร้างสรรค์ต่อยอดเองเลย คนเขาย่อมรู้กันอยู่แล้วว่าบทความไหนคือต้นตำรับ ลอกไปแล้วก็มีแต่เป็นผลเสียกับตัวเองเปล่าๆ
สำหรับธีมบทความหรือไอดีที่เป็นการรวมโค้ดและภาพเข้าด้วยกันก็ว่าไปอีกเรื่องนั้น นับเป็นงานสร้างสรรค์ที่มีลิขสิทธิ์ได้ แต่พึงตระหนักไว้ด้วยล่ะกันว่า ภาพที่เราเอามาใช้นั้นมันใช่ของเราจริงๆ หรือเปล่า ถ้าแค่เอาภาพคนอื่นมาแปะชื่อเราใส่ไป แล้วแอบอ้างว่าเป็นงานเราเอง ก็ไม่สมควรจะมาบ่นเรื่องลิขสิทธิ์หรือการลอกเลียนแบบอะไรหรอก
ในส่วนของโค้ดที่บทความนี้บอกว่าเป็น Proudly Present มีเฉพาะที่นี่ที่เดียวนั้น ก็เป็นโค้ดที่เรามั่นใจว่ามีความยากในการแกะพอสมควร (ถ้าไม่บ้าพลังจริงๆ คงแกะไม่ได้) และยิ่งมั่นใจว่าที่นี่นำเสนอเป็นแห่งแรก ดังนั้นจึงกล้าโฆษณาคุณสมบัติไปอย่างภาคภูมิเช่นที่เห็น แต่ถ้ามีใครยืนยันว่าแกะโค้ดนี้ได้เองเหมือนกัน โดยไม่เหลือบตามองตัวอย่างจากโค้ดในบทความนี้เลยสักกะนิดก็เอาหลักฐานมาล่ะกัน เราจะเอาคำโฆษณานี้ออกให้ บางโค้ดที่มีเฉพาะที่นี่ที่เดียว แต่คิดว่าในอนาคตที่อื่นก็มีสิทธิ์แกะได้เองเหมือนกัน เราไม่ได้แปะป้ายนี้ไว้หรอก
// จบเรื่องโค้ดตกแต่งไม่ได้มีลิขสิทธิ์ (ยาวจริงๆ)
คนทำโค้ดไม่ใช่พระเจ้า : เราไม่สามารถเสกโค้ดที่ให้บรรดาลทุกอย่างตามที่ทุกคนต้องการได้เสมอ ยังคงเป็นคนที่มีขีดจำกัดทางความสามารถเหมือนกัน ดังนั้นถ้าไม่ได้อะไรตามที่ต้องการก็อย่าโวยวายเป็นเด็กไม่รู้จักโตไป หัดยอมรับความจริงเสียบ้าง ที่เปิดช่องให้ร้องเรียนนี้ก็เผื่อมีอะไรที่เราช่วยได้ การแกะโค้ดสำหรับเราก็คือความท้าทายที่ทำแล้วสนุกเป็นครั้งคราว อะไรที่ช่วยได้ก็ยินดีช่วย แต่ก็ไม่ใช่ว่าบอกมาแล้วจะต้องได้คำตอบภายในวันนั้นวันนี้ นี่เป็นงานอดิเรกที่ทำเล่นๆ ในยามว่างเท่านั้น
เนื่องจากชาวเด็กดีส่วนใหญ่ (รวมทั้งคนทำโค้ดบางคน) ยังคงมีความเข้าใจที่ผิดๆ กันอยู่เช่นนี้ เราจึงคิดจะกลับมาทำบทความโค้ดและเทคนิคอย่างจริงจังยิ่งขึ้นอีก เพื่อจะได้ชี้ทางสว่างแก่ทุกคนสักที นี่ก็คือจุดประสงค์หลักล่ะ
ต่อไปในอนาคต บทความนี้คงมีโค้ดที่น่าสนใจมาอัพเรื่อยๆ บางโค้ดก็แกะได้แล้วแต่ยังไม่อัพทันที เพราะต้องรอทำภาพและคำอธิบายประกอบให้เรียบร้อยก่อน (ได้อย่างก็เสียอย่างล่ะนะ เร็ว+กระชับ+ไม่มีภาพ+เข้าใจยาก / ช้า+ละเอียด+มีภาพประกอบ+เข้าใจง่าย) และก็เพื่อให้มีการอัพเดตที่ต่อเนื่องด้วย
นอกจากโค้ดที่แกะได้เองหลักๆ กับโค้ดตามคำขอแล้วก็จะมีที่สอนเทคนิคและหลักการตกแต่งที่ดี เป็นสิ่งที่ควรรู้ไว้เพื่อเป็นประโยชน์ต่อตนเองและผู้อื่น จะมีในส่วนของ [lesson] ที่จะสอนการประยุกต์ใช้โค้ดให้เล็กๆ น้อยๆ ในเร็วๆ นี้ด้วยล่ะ
สำหรับสไตล์ส่วนตัวที่เคยยึดติดว่า จะแกะแต่โค้ดที่เราอยากได้ไว้ใช้เอง (สไตล์ที่เราชอบคือเปลี่ยนภาพ แต่ไม่ทำลายโครงสร้างหลักจนเกินไป เพื่อเป็นการเคารพเจ้าของสถานที่ และแสดงถึงความเท่าเทียมกันของทุกคน) เดี๋ยวนี้ก็เปลี่ยนมุมมองเสียใหม่ว่า ถ้าคนอื่นเขาอยากได้แบบนั้นก็ทำให้เขาหน่อยจะเป็นไร ทางเว็บก็ไม่ได้เสียหายนัก (ถ้าเสียหายจริงคงเลิกให้ทำแบบนี้) อีกอย่างการจะบอกให้ใครต่อใครไปทำเว็บใช้งานเองเลยก็กระไรอยู่ ความแตกต่างของการทำเว็บใช้งานเองที่ครบวงจรแบบหน้าไอดีหรือบทความของเด็กดีกับการทำลายโครงสร้างที่มีอยู่แล้วเอาของของเราไปแปะทับใหม่มันก็มากอยู่ คนอื่นไม่ได้มีความรู้ด้านนี้เหมือนเรานี่นา เมื่อก่อนก็ยึดติดไปจริงๆ ตอนนี้ก็เปิดมุมมองกว้างขึ้นแล้ว
อย่างไรก็ตาม ยังคงคิดว่าบทความนี้ควรมีจุดยืนหรือสไตล์ของเรา เหมือนกับนิยายที่เขียนซึ่งควรมีลายเซ็นแฝงอยู่ในสำนวนภาษาเช่นเดียวกัน...
ความตั้งใจในตอนนี้ก็คือ... อยากให้บทความนี้ไม่ใช่แค่บทความแจกโค้ด เหมือนแจกปลาให้คนกินอิ่มไปมื้อหนึ่ง แต่เป็นบทความสอนโค้ด เหมือนกับสอนให้คนจับปลาในมื้อต่อๆ ไปมากินได้เอง ซึ่งจะควบคู่ไปกับหลักการที่พึ่งมีในการตกแต่งและนำโค้ดไปใช้ด้วย (ถ้าหากจะพยายามเปรียบเทียบกับการจับปลาอีกก็คงเป็นการสอนว่า อย่าใช้ไฟฟ้าช็อตปลา เพราะมันอันตราย กับอย่าจับพวกลูกปลาตัวเล็กมาก เพราะต่อไปจะไม่มีกิน)
ใครที่อยากเข้ามารับเอาแค่โค้ดไปเฉยๆ เราก็ไม่ว่าอะไร ไม่ได้บังคับว่าต้องเรียน เรื่องพวกนี้คงบังคับกันไม่ได้หรอก ที่เราสอนก็ใช่ว่าจะดี สอนเอาแค่ที่สมควรจะรู้เท่านั้น คิดว่าคนที่ขวนขวายอยากเรียนอยากรู้จริงๆ คงพยายามหาแหล่งศึกษาต่อไปเองได้
สำหรับโพลที่เคยถามไปว่า อยากให้บทความนี้เป็นแบบไหน ก็เพื่อที่จะสำรวจความต้องการของผู้ใช้ แต่ที่จริงแล้วเราก็ตั้งใจจะทำมันให้ครบทุกอย่างนั่นแหละ
* ไม่อยากได้โค้ด อยากอ่านนิยายของเคจต่างหาก >> ดีใจที่มีคนตอบข้อนี้มาที่สุด ยังคงยืนยันว่านิยายและคนอ่านสำคัญกว่า ปิดเทอมก็คงจะกลับไปทำนิยายเต็มตัวอีก ส่วนโค้ดนี้ทำเล่นๆ ยามว่าง (วงจรชีวิตช่างเหมือนการ์ตูนท้ายเล่มจริงๆ)
* มีโค้ดบ้างก็ได้ แต่เน้นสอนวิธีใช้ และเทคนิคจะดีกว่า >> ข้อนี้จะมีเพิ่มเติมในอนาคต ในส่วนของ [lesson] ล่ะ
* แกะโค้ดให้ตามคำขอของแฟนๆ >> ก็ลองไปหย่อนได้ที่ General Request Box เลย
* เอาแต่โค้ดเฉพาะที่คนอื่นเขาแกะไม่ได้ก็พอ >> ข้อนี้คงทำได้ตามความขยัน และการค้นพบใหม่ๆ แต่ยังคงยืนยันว่าบทความนี้รวมโค้ดตกแต่งที่ไม่ยากจะมีคนอื่นแกะได้ไว้มากที่สุดล่ะนะ
* มีโค้ดทุกอย่าง ให้ครบวงจร ไม่แพ้บทความแจกโค้ดอื่นๆ >> โค้ดยิบย่อยที่มีในบทความอื่น แต่ไม่มีในบทความนี้ มั่นใจว่าแกะได้เกือบหมด ทว่าจะให้ไปเปิดดูทุกบทความแจกโค้ดแล้วเอาตอนที่เขามีแต่เราไม่มีมาอัพก็น่าเกลียดอยู่ ดังนั้นจึงได้เปิด General Request Box ไว้ให้คนที่อยากได้โค้ดอื่น (อาจจะคิดขึ้นเองเป็นการส่วนตัว หรืออยากได้โค้ดที่ทำให้ออกมาหน้าตาเหมือนคนอื่นก็ได้) มาทิ้งข้อความเอาไว้ แล้วจะค่อยๆ ทยอยๆ อัพตามคำร้องให้ครบถ้วนล่ะกัน อีกเหตุผลหนึ่งก็ต้องทำเช่นนี้ก็เพราะคิดว่า โค้ดบางอย่างที่มีในบทความอื่นก็มีคนเอาไปใช้จริงไม่เท่าไหร่หรอก จะทำตามให้ครบก็เปลืองแรงเปล่าๆ เลือกมาแต่โค้ดที่มีคนต้องการใช้งานจริงๆ จะดีกว่า
สรุปจุดประสงค์และจุดยืนของบทความก็มีเท่านี้ล่ะ
…
เป็นตอนที่เขียนเท้าความและอธิบายชี้แจงยืดยาวมาก เพราะอยากให้ทุกคนเข้าใจกันอย่างกระจ่างแจ้ง ถ้าใครไม่ชอบอ่านอะไรทำนองนี้ก็ขออภัยด้วยล่ะกัน
...หวังว่าคงมีคนอ่านจบจนและเข้าใจล่ะนะ
ความคิดเห็น