ทดสอบใส่ Syntax Extension เพิ่มใน iG:Syntax Hiliter ให้กับ Haskell

ตอนนี้ใช้ Syntax Highlighter ที่ชื่อว่า iG:Syntax Hiliter เป็น plugins ของ WordPress ที่เอา GeSHi – Generic Syntax Highlighter มาใส่ลงใน WordPress แต่ปัญหาของ plugin อย่างพวก Syntax Highlighter คือมักจะ conflict กับ WYSIWYG Editor ต่าง ๆ เช่น FCKEditor หรือ TinyMCE ทำให้ตอนนี้ผม hardcode เอาเวลาเขียน blog ขี้เกียจมานั่งปวดหัวกับเรื่องพวกนี้

อันนี้คือตัวอย่างที่มันไม่มีใน iG:Syntax Hiliter แล้วทำการเพิ่ม Haskell Extension ลงไปครับ

  1. let { fac 0 = 1; fac n | n  > 0 = n * fac (n-1) } in fac 5

ง่าย ๆ แค่ไปโหลด Source ที่ http://dev.splitbrain.org/reference/dokuwiki/inc/geshi/haskell.php.source.txt แล้ว save เป็น haskell.php โดยหน้าแรกของ source ก็ http://dev.splitbrain.org/reference/dokuwiki/nav.html?_constants/index.html โดยถ้าอยากได้แบบอื่น ๆ ก็ไปที่ Explorer ด้านซ้ายให้เข้าไปที่ /inc/geshi/ จะมี source ของตัว plugins ตัวนี้หลายอันมาก เสร็จแล้วเอา haskell.php ไปไว้ใน wp-content/plugins/ig_syntax_hilite/geshi/

แล้วเวลาใช้ก็ เอา Tag ไปใส่ปิดหัวท้ายแบบนี้

How to added Tag to Haskell code.

ก็จะได้ตามตัวอย่างด้านบนครับ

จริง ๆ ตัว GeSHi รองรับหลายภาษามาก เดี่ยวใส่เพื่อเรื่อย ๆ แล้วมาบอกอีกรอบครับผม ;)

เมื่อ jQuery อยู่ร่วมโลกกับ Prototype/Mootools ไม่ได้ (โดยเฉพาะใน Drupal)

ถ้าใครใช้ jQuery, Prototype และ Mootools นั้นจะรู้ว่ามี namespace ตัวนึงคือ $ ซึ่งจะเป็นตัวอ้างอิงเสมือนเวลาอ้างอิงการทำงานใด ๆ ใน ถ้าอ่านในเว็บ jQuery ก็จะบอกไว้เลยว่า

By default, jQuery uses “$” as a shortcut for “jQuery”

ปัญหาก็คือ …..

มันดันใช้วิธีที่ไปเหมือนกับ Prototype, MooTools และ YUI นั้นดิ

ทำให้เวลาเอามาใช้ร่วมกันมันจะตีกันสนุกสนานเลยหล่ะ วิธีแก้ไขก็คือให้ jQuery หลีกทางให้กับตัวอื่น ๆ ซะ

จาก

  1. <script type="text/javascript" src="prototype.js" />
  2. <script type="text/javascript" src="mootools.js" />
  3. <script type="text/javascript" src="jquery.js" />
  4. <script type="text/javascript">
  5. // ต้องใช้ jQuery
  6. $(document).ready(function(){ $("div").hide(); });
  7. // ต้องใช้ Prototype/Mootools
  8. $('someid').style.display = 'none';
  9. </script>

ถ้าเป็นแบบนี้มันจะใช้งานไม่ได้ ครับ จะเกิดการตีกันระหว่างทั้ง 3 ตัวครับ เราต้องเปลี่ยนมาเป็น

  1. <script type="text/javascript" src="prototype.js" />
  2. <script type="text/javascript" src="mootools.js" />
  3. <script type="text/javascript" src="jquery.js" />
  4. <script type="text/javascript">
  5. // เพิ่มบรรทัดนี้ลงไป
  6. jQuery.noConflict();
  7. // แล้วใช้ jQuery จาก $ เป็น jQuery(...) แทน
  8. jQuery(document).ready(function(){jQuery("div").hide();});
  9. // ส่วน Prototype/Mootools ใช้ $(...) ได้ตามปกติ
  10. $('someid').style.display = 'none';
  11. </script>

แนวทางการแก้ปัญหาก็ ok นะ แต่ …..

ใน Drupal หล่ะ ถ้าเราเอามาใช้เนี่ยทำไง

โดยตัว Drupal 5.2 แล้วมี jQuery 1.0.1 ใส่มาด้วย แต่ปัญหาคือมันดันไม่มี noConflict มาให้ ตอนนั่งแก้ปัญหา นั่งงงไปพักนึง เลยไปนั่งไล่แกะ จนรู้ว่าต้องมา upgrade เป็น jQuery 1.2 เสียก่อน เลยจัดการเอามาใส่ทับลงไปใน /misc แทนตัวเก่า

แล้วทำการแก้ไขไฟล์ต่าง ๆ ที่ Drupal นั้นใช้ jQuery ซึ่งได้แก่

  • misc/autocomplete.js
  • misc/collapse.js
  • misc/drupal.js
  • misc/progress.js
  • misc/tableselect.js
  • misc/textarea.js
  • misc/upload.js
  • misc/update.js
  • misc/farbtastic/farbtastic.js

โดยทำการ replace ‘$(‘ เป็น ‘jQuery(‘ แล้วทำการใส่ JavaScript ตัวนึงลงไปคือ

  1. jQuery.noConflict();

โดยเอาไปใส่ไว้ด้านล่าง Durpal $scripts ที่ Theme ของเรา ตามด้วยการใส่ mootools.js ไปก่อนหน้า Drupal $head

เฮ้อ ….. เล่นซะมึนไปครึ่งวัน

การมีมาตรฐานและเอามาใช้ร่วมกันนี่ยากเหมือนกันนะเนี่ย ยิ่ง JavaScript ที่มี Prototype หลายค่ายเหลือเกินยิ่งแล้วใหญ่ ความเข้ากันได้ยิ่งยากเข้าไปอีก แถมแต่ละตัวก็ ok ในเรื่องการใช้งาน แต่ว่าบางตัวมีข้อดีแต่ต่างกัน บางตัวใช้งานบางอย่างได้ดี และง่าย บางตัวทำแบบอีกตัวก็ได้ แต่ง่ายกว่ามาก เลยต้องหาจุดลงตัวของมันไป ทำให้ต้องมาปวดหัวกันไป แต่ก็นะเอามาใส่ลงไปในงานของเรา เพื่องานที่ออกมาดีที่สุด และง่ายที่สุดด้วย (ก็มีให้ใช้นิ)

อ้างอิงจาก

 

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.

สวัสดี ;)

สั่งหนังสือจาก Amazon รอบ 2

รอบที่แล้ว  อยากได้หนังสือ StarCraft เลยโดนค่าเสียหายจาก Amazon ฮ่า … ที่สั่งแต่ StarCraft มาล้วน ๆ มารอบนี้ก็ยังมีอยู่เพียงแต่ว่าเอาหนังสืออื่น ๆ ที่ซื้อในไทยน่าจะแพงและน่านานถ้าสั่งผ่านร้าน เลยซัดมาเต็มที่เลยคราวนี้ รวม ๆ ก็มีหนีบ ๆ StartCraft กลับมาเล่มนึง จริง ๆ ตอนนี้มี 3 เล่ม เพียงแต่ว่าตัว Nova มันต้องสั่งแยกส่วนการจัดส่ง เลยยังไม่เอา และอีกเล่มมันเป็น pre order กว่าจะได้ก็สิ้นปี เลยเอาออกไปก่อน

  1. The Laws of Simplicity (Simplicity: Design, Technology, Business, Life) [Hardcover] By: John Maeda (Author) – $13.60
  2. Microsoft Secrets: How the World’s Most Powerful Software Company Creates Technology, Shapes Markets and Manages People [Paperback] By: Michael A. Cusumano (Author) – $12.75
  3. Revolution in The Valley: The Insanely Great Story of How the Mac Was Made [Illustrated] [Hardcover] By: Andy Hertzfeld (Author) – $16.47
  4. Software That Sells : A Practical Guide to Developing and Marketing Your Software Project [Paperback] By: Edward Hasted (Author) – $19.79
  5. StarCraft: Dark Templar #1: Firstborn (StarCraft: The Dark Templar Saga) [Mass Market Paperback] By: Christie Golden (Author) –  $7.99

ส่วนเล่ม อื่น ๆ ก็ยัดใส่ Wish list ไปก่อน รอรอบหน้าเดี่ยวเจอกัน ;)

$12.71
$18.21
$19.77
$19.77
$17.15
$29.69
$26.37
$13.57
$18.48
$10.88
 
$11.25
$7.99
$17.13
$7.99
$24.95
$27.00
$29.35

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

เดี่ยวนี้นั่งไล่หาหนังสือใส่ Wish list เกือบทุกวัน เล่มไหนดี เล่มไหนน่าสนใจ ยัดใส่หมด ท่าทางเงินเก็บจะหมดไปกับเรื่องพวกนี้ซะหมดมั้งเนี่ย T_T

ยาวนานจริง ๆ กว่าจะได้กลับมา blog blog

หายไปนาน วันนี้พอดีว่าเข้ามาดูในหน้า Admin ของ WordPress ที่ Dashboard มันมีให้ upgrade เป็น WordPress 2.2.3 เลย upgrade สักหน่อย ด้วยความที่ว่าไม่ได้ upgrade นานเลยสักนิดนึง เพราะตัวเองไปดูบ้านคนอื่นเยอะกว่าปกติ คือที่ siampod.com ซึ่งเป็นเว็บที่ผมร่วมด้วยช่วยกันทำกับพี่ kangg จริง ๆ เว็บมีอายุมาได้ 1 ปีแล้วหล่ะ แล้วประจวบกับมีเรื่องของ podcast ของค่ายหนังอย่าง GTH และ FiveStar เข้ามา ซึ่งก็มีเรื่องของ ‘สายลับจับบ้านเล็ก’ ที่จัดการเอา Flash VDO ขึ้นแล้วก็ทำตัว GTH Podcast ใส่เข้าไป ไอ้ทำ Podcast น่ะไม่เท่าไหร่ แต่เอาไปเก็บ Stat ด้วยนี่ดิ -_-‘ จริง ๆ ใช้ feedburner มันก็สะดวกดี แต่ก็นะ อยากเก็บไว้เอง ก็เลยเอามานั่งทำใหม่นิดหน่อย ไม่นาน แล้วก็เอา Engine ตัวเดียวกันนั้นแหละ ไปใช้กับ FiveStart ที่มี FiveStar Podcast ด้วย เรื่องแรกที่เอามาลงก็ ตัวอย่างหนัง "ไชยา" ซึ่งก็เข้าโรงภาพยนต์อยู่ในตอนนี้ทั้งสองเรื่อง ก็มันดี แล้วก็ตามด้วยงานเปิดตัว iMac, iLife และ iWork ในเดือนสิงหาคม ต่อด้วยที่ผ่านไปสด ๆ ร้อน ๆ กับงานเปิดตัว iPod ยกสายการผลิตของ Apple ที่ต้องปรับแต่ระบบนิดหน่อย ก็เลยมึน ๆ ไมไ่ด้มาดูดำดูดี blog ตัวเองเท่าไหร่ นอกจากนั่งไล่ลบ spam comment T_T

แล้วเสียดายที่ Blognone Tech Day 3.0 ที่ผ่านมาผมก็ไม่ได้เขียนอะไรเกี่ยวกับงานนี้เลย เพราะว่างานยุ่งมาก เหนื่อยกับงาน โคตร ๆ เลยตามไปอ่านของคนอื่น ๆ ดูนะครับ

– สรุปรวมบรรยากาศงานสำหรับคนไม่ได้ไป อ่านได้ที่นี่
– วิดีโอต้นฉบับที่ Thaimacdev

ในงานก็มีดังนี้ครับ

แนะนำให้ฟังอย่างยิ่งครับ ;)