ท่าทางเราคงต้องเขียน Blog แบบ hardcode แทน WYSIWYG Editor ซะแล้ว

จริง ๆ มันเป็นปัญหามานานแล้วเวลาผมเขียน entry ที่มี code แทรกใน entry แล้วเอามาเขียนลงใน WYSIWYG Editor เพราะใส่ code แล้วมันมักมีปัญหา ตีกับระบบ Syntax Highlighter เวลาส่ง entry เข้าระบบแล้วเละตลอด เมื่อไม่นานมานี้ลอง disable ออกแล้วเขียนแบบปกติในเนื้อที่มี source code จำนวน 2 entry ที่ผ่านมา ก็ ok

ตัวที่ผมได้ลองใช้แล้วไม่ work ก็ TinyMCE, FCKEditor และ Yahoo! UI Library Rich Text Editor (YUI RTE) สรุปที่เค้านิยมใช้กันทั้งหมดนี่ไม่เหมาะกับเราสักอัน T_T สรุปสุดท้าย ใช้แบบเดิม ๆ น่ะดีแล้ว

ปัญหาที่มักเกิดกับทั้ง 3 ตัวคือใส่ flag/tag บอกว่าตรงนี้เป็น source code ให้ทำ syntax highlight แล้วมักจะมองไม่ออก หรือ convert ข้อมูลกันมั่วไปหมดจน source code ของเราเละไปหมดเลย อย่าง TinyMCE, FCKEditor และ YUI นี่เป็นพวกฉลาดเกินไป ชอบ convert โดยไม่บอกไม่กล่าว จนทำให้ต้องเขียนบทความใหม่มาแล้วก็มี เพราะมันดัน convert special string เป็น HTML Charactor Code ซะงั้น เลยเละไปหมดเลย ต้องมานั่งแก้กันสนุก ซึ่งจริง ๆ แล้วมันควร convert แหละ แต่เราปิดตัว editor แล้ว และไม่ต้องการให้มันเป็นตัวส่งข้อมูลเข้าระบบ มันก็ดันเขียน hook ขั้นกลางระบบไว้ก่อนระบบบันทึกข้อมูลเข้าไปจริง ๆ เสียอีก เพราะนั่งแกะขั้นตอนของมันเพื่อแก้ปัญหามาแล้ว แต่ไม่สำเร็จ เพราะตัว Editor Engine มันก็จัดการให้อยู่ดี สรุปแก้ไปก็เสียเวลา สรุปสุดท้ายไม่ต้องทำ hardcode เอา อยากพิเศษ ๆ ก็เขียนใน Windows Live Writer เอาแล้วกัน ตัวนี้ผมชอบนะเป็น client side ของ Blogware ได้หลายตัวมาก ๆ และ WordPress Blogware และ WordPress freeblog ก็อยู่ในข่ายนั้นด้วย สะดวกดี ;)

แหม …. ชีวิตนี้คงหนี HTML/XHTML แบบ hardcode ไม่พ้นจริง ๆ จะสบายสักหน่อย เวลาเขียน blog แต่สุดท้ายก็เพิ่มความยุ่งยากในการเขียนเอาไปอีก สรุปก็คือสูงสุดคืนสู่สามัญครับผม T_T

 

Prioritizing Web Usability

เมื่อวันก่อนลงจาก BTS อ่อนนุชเลยเดินซื้อ DVD Spiderman 3 ที่เพิ่งออกมาตอนแรกกะรอที่มันเป็น 2 disc แต่คิดไปคิดมา เอาแค่นี้ก็น่าจะพอแล้ว แล้วก็แวะร้านการ์ตูนก่อนถึงหอไปซื้อหนังสือการ์ตูน "สายลับจับบ้านเล็ก" มาสักหน่อยนึง พลาดตอน Seasons Change ไปแล้วรอบนี้ไม่อยากพลาดอีกเลยเอามาอีกเล่ม
ส่วนวันนี้ไปเดินซื้อนาฬิกาดิจิตอลสำหรับปลุกตอนเช้าไปทำงาน แล้วหลังจากนั้นก็เลยไปลองเดิน ๆ ดูหนังสือใน fortune ได้มาเล่มนึงก็คือ "Prioritizing Web Usability" จริง ๆ เปิดเล่ม ๆ อื่น ๆ ลองอ่านดูหลายเล่ม แต่เล่มนี้โดนในที่สุดแล้ว

Prioritizing Web Usability" [Homepage]
Book by Jakob Nielsen and Hoa Loranger
New Riders Press, Berkeley CA
ISBN-10: 0-321-35031-6
ISBN-13: 978-0-321-35031-2
406 pages, heavily illustrated, in full color

DSC00169

จากที่ได้ลองอ่าน ๆ นี่ผมรู้สึกว่าโดนจริง ๆ เพราะว่าไล่ตั้งแต่นิยาม ไปจนถึงการออกแบบ และมีข้อสังเกตต่าง ๆ มากมาย จริง ๆ ผู้แต่งที่ชื่อ Jakob Nielsen เห็นได้การกล่าวขานว่าเป็น "the guru of web usability" เลยทีเดียว เลยจัดมาซะเลย ลด 20% ก็เหลือ 1,509 บาท เดี่ยวช่วงสัปดาหืนี้คงอ่านสักหน่อย

คือตอนนี้จะเห็นว่าผมหันมาศึกษาด้าน Software Architecture, Marketing และ Usability เยอะพอสมควร อ่านหนังสือพวก Business Week (ประเทศไทย) และหนังสือพิมพ์อย่างบิสซิเนสไทย พยายามเปิดโลกให้มากขึ้นกว่าแต่ก่อน พยายามมองอะไรที่มันไม่เป็น Technical มาก ๆ หลัง ๆ เริ่มเห็นว่าโปรแกรมที่ตัวเองทำขึ้นในอดีต พอกลับมานั่งใช้เอง เริ่มรู้สึกว่า "ทำไปได้ไงฟร่ะ ใช้ก็ยาก ใครมันจะใช้เนี่ย" -_-‘ ขนาดตัวเราเองยังคิดแบบนี้ ให้คนอื่นใช้คนโยนของเราทิ้งตั้งแต่เปิดหน้าแรกมาเลยแหละ ตอนนี้เลยทุ่มทุนกันพอสมควร

แต่สิ่งหนึ่งที่คนในแวดวง Com Sci บ้านเราขาดมาก ๆ คือแนวคิดด้าน usability, architecture และ tuning/opimizing/performace เนี่ยแหละ แถมหนังสือภาษาไทยส่วนใหญ่สักแต่เอาออกมา และมักไม่ได้พูดถึงเรื่องพวกนี้เลย เมื่อหลายวันก่อนเจอ พี่เดฟ ที่ fortune เนี่ยแหละ ก็ได้คำถามมาว่าหนังสือฝั่งภาษาไทยกับต่างประเทศมีอะไรแต่งต่างกัน สิ่งที่ผมตอบได้เลยคือความแน่นของเนื้อหาเชิงลึกและเนื้อหาพื้นฐานสุด ๆ พวกนิยามต่าง ๆ สิ่งที่มีมากถึงมากที่สุดคือแนวนำไปใช้ ใช้เป็นอย่างเดียว แต่ไม่รู้ว่าที่ใช้ไปมันหมายความว่ายังไง หรือเนื้อหาเชิงลึกที่ต้องใช้ทักษะด้านพื้นฐานสูง ๆ เพื่อทำให้ระบบสามารถรองรับการทำงานได้สูงสุด และหนังสือส่วนใหญ่จะเป็นพวก dummy หรือพวกเรียนเร็ว เรียนลัด กระโดดข้ามขั้นตอน กันทั้งนั้น ทำให้ส่วนใหญ่มักจะรู้ไม่ลึก และมักมองในด้านที่หนังสือสอนเยอะเกินกว่าจะแหวกแนวการทำงานออกมา สังเกตง่าย ๆ จาก source code ของ program ที่อยู่ในหนังสือนั้น มี performance ต่ำมาก ๆ คือทำงานได้ตามจุดประสงค์ แต่ไม่ได้บอกต่อไปว่าควรปรับแก้ตรงไหน และทำไม

มีอย่างที่ไหน select * from table แล้วเอามานับในตัวโปรแกรม แล้วก็จบ -_-‘ โห ถ้าข้อมูลมันมีสัก 16 ล้าน records โปรแกรมคงกินทรัพยากรหมด server หล่ะมั้งน่ะ ทำไมไม่ใช่ select count(pkey_id) from table ซะก็หมดเรื่องได้มาตัวเลขตัวเดียว จบข่าวกันไป ผมเจอ code แบบนี้บ่อยมาก ๆ มีเกือบทุกเล่มของหนังสือที่มีการสอนติดต่อกับฐานข้อมูลเสียด้วยดิ

และซ้ำร้าย คนอ่านส่วนใหญ่ก็ไม่ได้คิดตามต่อไปว่า ทำไมมันต้องทำแบบนี้ ทำอีกแบบได้ไหม แบบนั้นน่าจะดีกว่านะ เร็วกว่า อะไรแบบนี้ มีส่วนน้อยเท่านั้นที่เอามาปรับแต่งให้ระบบนั้นดีขึ้น

อันนี้คือส่วนน้อยของตัวอย่างของการขาดประสบการณ์การเขียนซอฟต์แวร์ที่สามารถนำไปใช้งานจริง ๆ ได้ หนังสือที่เขียนขึ้นมาโดยขาดประสบการณ์การทำงานจริง ๆ ก็อ่านได้แค่พื้น ๆ หรือบางเล่มดันไปแปลของชาวบ้านเค้ามาอีก -_-‘

จาก Rawitat’s Blog

อ.มะนาว พาเพื่อนมาแนะนำให้รู้จักอีกคน ซึ่งพอเราเห็นกำลังนั่งอ่านหนังสือ Agile Web Dev with Rails ที่เราเคยเขียนด่าถึงด้วย ก็เลยให้ดูความแข็งแกร่งของหนังสือเล่มนั้นหน่อย ว่ามันเกรียนเทพแค่ไหน … คนที่เคยอ่านลองไปหาหน้าที่บอกวิธีการติดตั้ง Ruby บน Mac ดูนะครับ จะเห็นคนเขียนเกรียนถึงโปรแกรม DAVE (ซึ่งจริงๆ มันก็มีจริงๆ อ่ะนะ แต่ว่าไม่เกี่ยวกับผมนะ) …. แถจริงๆ เพราะว่าคนเขียนหนังสือต้นฉบับเค้าชื่อ Dave Thomas อ่ะนะ มันก็เลยมี prompt ชื่อ dave มาด้วย แบบว่า

dave> some_command_here ...

นะ เกรียนสุดๆ จริงๆ

ลองคิดดู ใครได้อ่าน แล้วจำไปผิด ๆ นี่มันจะเสียหายแค่ไหน หนังสือที่เป็นเหมือนหน้าต่างของความรู้กลับนำเสนอสิ่งที่ผิดพลาด มาก ๆ ยิ่งหนังสือที่แปล (ทั้งเค้ายอมให้แปลและเค้าไม่รู้ว่าเราแปล) คนจะมีการตรวจสอบอย่างละเอียดมาก ๆ แถมถ้าคนแปลไม่เคยแม้แต่เขียนหรือรู้เรื่องราวนั้น ๆ มาเลยนี่ควรให้ห่างจากเรื่องที่เค้าจะแปลอย่างยิ่ง เพราะนั้นหมายถึงการตีความที่ยังผลถึงอนาคตที่สืบต่อความหมายนั้น ๆ สู่คนรุ่นหลัง ๆ อย่างมาก

กลับมาเรื่อง web usability อีกนิดนึง

จริง ๆ การออกแบบเว็บในปัจจุบันนั้น มุ่งเน้นการเข้าถึง function การทำงานให้เข้าถึงง่ายเข้าไว้ ซึ่งไม่ได้ดูที่จำนวนเพียงอย่าง ซึ่งถึงแม้ function 108|1009 แบบ Microsoft Word <= 2003 แต่ถ้ามันเข้าถึงลำบาก ก็เหมือนกับว่าไม่มีนั้นแหละ เพราะผู้ใช้ไม่ได้ถูกนำมาใช้ให้เกิดประโยชน์ หรือหามันไม่เจอนั้นเอง ผมจึงมองว่าเว็บถือเป็นตัวอย่างในการสอน usability ได้ดีมาก ๆ ในการบอกกับคนที่เรียนได้เลยว่า ควรเป็นแบบไหนกันแน่ ….

ตัวอย่างที่ง่ายที่สุดคือ ความเป็นระเบียบบนโต๊ะทำงานของคนหลาย ๆ คนอย่างทำให้การทำงานนั้นง่ายขึ้นเพราะหาของง่าย แต่สำหรับบางคนนั้นโต๊ะที่โคตรจะรก อาจจะหาของได้เร็วพอ ๆ กัน เพราะของบางอย่างที่ถูกใช้บ่อย ๆ มักจะอยู่กองบน ๆ เสียมากกว่ากองล่าง ๆ อีกอย่างความเคยชินของคนนั้นถือเป็นเรื่อง common sense มาก ๆ สอนกันไม่ได้เลย นั้นหมายความว่าเราจะหาจุดตัดระหว่างคำว่ารก กับคำว่าเรียบเบียบได้ยังไงนี่ดิยาก

เหมือนกับเวลาเราอยู่กับสาวนั้นแหละ ชอบมาเก็บของเราให้เข้าที่เข้าทาง พอเราจะใช้ของเหล่านั้นทีนึง ก็หาไปเหอะ เพราะคนใช้กับคนเก็บมันคนละคนกัน -_-‘

นั้นหมายความว่า user รู้ว่าอะไรคือสิ่งที่เค้าใช้งานได้คล่องที่สุด เพราะฉะนั้น

Developer is not User.

สวัสดี ;)

 

มีแฟนเป็นโปรแกรมเมอร์ต้องทำใจ -_-‘

1. ไม่มีเวลาให้เหมือนคนทำงานอาชีพอื่นเขามีกัน – เพราะเขียนโปรแกรมไม่เสร็จซวย !!! งานใช้ logic สูงสมาธิต้องมากตาม แถมต้องเอาใจเจ้านาย (ลูกค้า) แก้งานก็ต้องแก้ บ่ายเบี่ยงไม่ได้ เดี่ยวไม่มีกิน T_T
2. พูดอะไรจะออกนอกโลกไปหมดแล้ว มนุษย์(แฟนเก่า) เขาฟังไม่รู้เรื่อง – เออ มีแต่คนบอกผมแบบนี้เหมือนกัน หลังๆ เลยต้องมานั่งนึกก่อนพูดเสมอ ไม่งั้นกลายเป็นศัพท์คอมฯ ออกมาหมด -_-‘
3. ทำงานจนเช้า ทำบ้าทำบออะไรนักหนา ไม่หลับไม่นอน – -‘ มันด่าได้ดี – ก็จริง นะเนี่ย T_T แต่กลับไปดูข้อหนึ่งซะ
4. เวลาเข้าร้านหนังสือ มันก็พุ่งไปแต่มุมคอมฯ ซื้อที ๆ นึง ปาไปเป็นพัน ๆ หนังสือจะท่วมห้องอยู่แล้ว อ่านหมดจริง ๆ รึงัย (ดูมันด่าสิ) – อ้าววว ไม่พัฒนาความรู้ก็โดยเด็กรุ่นหลังแซงหมดซิครับ โลกของโปรแกรมเมอร์มันไม่มี senior กับ junior นะ คุณช้าทุกอย่างก็ล้าสมัย

ตอนนี้หลังจากเป็นโสดมาได้เกือบ ๆ 2 เดือน มีความคิดว่าถ้ามีตอนนี้ ก็หาอาชีพเดียวกัน น่าจะจบ อย่างน้อย ๆ ก็คอเดียวกัน น่าจะเข้าใจว่ามันลำบากยังไงมั่ง นั่งทำงานหัวฟูเนี่ย

ไปต่อได้ที่ http://www.pantip.com/tech/developer/topic/DN1998879/DN1998879.html

 

PHPHoffman Framework Diagram

จาก entry ที่แล้ว ก็นั่งคิด ๆ ว่าตัว Framework จะมีส่วนหลัก ๆ อะไรบ้าง ตอนนี้ก็ได้ข้อสรุปในการสร้างออกมาแล้ว นั่งคิด และปรับว่าจะเอายังไงอยู่หลายวันอยู่ เพราะบางอย่างมันก็รักพี่เสียดายน้อง แต่หลัก ๆ คือใช้ PHP5.2 และใช้ Extension ต่าง ๆ ของ PHP หลายตัวซึ่งการที่ใช้ Extension ของ PHP เยอะ ด้วยเหตุที่เอา Zend Framework เข้ามาอยู่ใน Core ระบบ ทำให้ข้อกำหนดหลายอย่างต้องหนักไปทาง Zend หลายเ่รื่อง แต่ผลที่ได้รับคือตัว code ต่าง ๆ นั้นมีระเบียบและตามรูปแบบเพิ่มขึ้นเยอะ สวนตัว Extension Components ได้แนวคิดจาก Firefox ที่อยากได้อะไรเิพิ่มก็เอามาใส่นั้นแหละ นอกเหนือจากที่ตัว Zend และ Component หลัก แต่จะยังคงแนวคิดที่ว่าจำเป็นต้องใช้อะไรก็จะโหลดระหว่างตอนทำงานแค่นั้น ทำให้ตัว Controller ต้องไล่ทำใหม่ทำให้ ทุก ๆ action นั้นมีรายละเอียดในการตั้งค่าเพิ่มขึ้น แต่จะเห็นว่า Permission Control นั้นหายไป เพราะคิดไว้ว่าจะเป็นส่วนของ Routing แทน ตอนนี้ขอดูความเหมาะสมก่อน ส่วนที่ผู้เขียนนั้นต้องใส่ใจจะมีอยู่ในส่วนนอกของ Core ทั้งหมด

เหตุที่ใช้ Component ของ Zend Framework ก็จากเหตุผลเก่าจาก entry ที่แล้ว และเพราะมีระเบียบแบบแผนการพัฒนาในชุมชนที่แข็งมาก

ตอนนี้พยายามเคลียร์ ๆ งานที่จำประจำ แล้วลงมาทำส่วน Framework ให้มันออกมาเป็น public เสียที คนบ่นอยากใช้กันแย่แล้ว T_T

อ่อ ผมได้แนวคิดส่วน View จาก Sixhead Template ของคุณปีโป้ หลายส่วน ซึ่งตอนนี้เอาไว้ public plan ที่ 2 แล้วกันเพราะได้ดูแนวคิดแล้ว ช่วยทีมออกแบบกราฟฟิกได้เยอะ

อ่อ ตัว private version ที่เป็น alpha รุ่นแรก ถูกเขียนเป็น Shop Cart อยู่ที่ http://shop.thaiadmin.org แต่ผมมองว่ารุ่นนั้นก็ปล่อยได้แล้วแหละ แต่ว่ามองอีกมุม ยังยากอยู่อีก -_-‘ อยากให้มันง่ายกว่านี้ในการใช้งานเพิ่มขึ้น

แค่คิดก็นั่งลง coding มันแล้ว …….

[Update] – เหตุผลต่อมาในการใช้ PHP5 เพราะตัว MySQL Improved Extension นั้นทำงานได้ดีกว่ากับ MySQL ใน version ใหม่ ๆ ด้วย คือมีแล้วไม่ได้ใช้มันเสียดาย -_-‘

 

Redesign PHPHoffman Framework Architecture

เป็นปัญหาหนักอกอย่างรุนแรงที่จำเป็นต้อง redesign ตั้งแต่ยังไม่ออก beta การ redesign ในระดับ core นี่มันสุด ๆ จริง ๆ เพราะว่าอย่างที่หลาย ๆ entry ที่ผ่านมาเนี่ยกะว่าก็คงรู้ว่าผมกำลังทำ Framework ที่ออกไปทาง Conponent Base แทน และผสมตัว Automate เฉพาะที่จำเป็น ทำให้ไอ้ที่ทำ ๆ ตอนแรก ๆ ในแบบ Automate ทั้งหมดตั้งแต่แรก มันต้อง drop ไปหมดเลย เพราะเริ่มคิดว่า การทำเล็ก ๆ แล้วเอา plug-in มาใส่น่าจะตอบโจทย์มากกว่า เพราะอย่างแรกมันเป็นเรื่องของการโหลดตัวระบบที่มาก หรือน้อยขึ้นอยู่กับ component ที่ใช้ ไม่ใช่จะใช้แค่นี้แต่ดันเอาไส้ในออกมาเสียหมด มันเปลื้องเกินความจำเป็น แถมลอง monitor ตัว framework ที่เขียนในปัจจุบันนี่มันก็ใช้ memmory ไปพอสมควร แต่คิดว่ามันน่าจะน้อยกว่านี้ได้อีก แถมนี่จะเกือบปีแล้วยังไม่ได้ออก beta เลย แถมมีแต่คนถามว่าเมื่อไหร่จะให้โหลด ต้องบอกว่าตัวที่เป็น production ของ Framework ตัวนี้ก็อยู่ที่ shop.thaiadmin.org ครับ ส่วนตัวใหม่นี่จะเปลี่ยนภายในทั้งหมด พวก app ที่เขียน ๆ อยู่อาจต้อง recode ใหม่ด้วย แต่มันจำเป็นจริง ๆ แต่จะพยายาม backward ให้มากที่สุด

อ่อ ลืมบอกไปว่า PHPHoffman ตัวนี้ตามข้อกำหนดของ GoPHP5 ครับ ใครใช้ PHP 4 อดนะครับ (แล้ว Host ที่ใช้อยู่นี่จะเอาไงหล่ะเนี่ย -_-")