Snow Leopard

About This Mac

เพิ่งลงเสร็จ สดๆ ร้อนๆ

  • สั่งซื้อจาก Apple Store ช่วง pre-order ของมาส่งให้ทาง DHL ไม่เสียค่า shipping ด้วย
  • ใช้เวลาลงประมาณ 45 นาที
  • ได้เนื้อที่ Harddisk คืนมาประมาณ 10 GB
  • iStat Menu เจ๊ง ใช้ไม่ได้ ต้องรอเวอร์ชันใหม่
  • Expose เรียงแบบใหม่ เอา mouse over แล้วมีขอบสีน้ำเงิน ทุเรศมาก
  • Thonburi มีตัวหนา และเว้นวรรคให้แล้ว!

นอกจากนี้ยังไม่ค่อยรู้สึกถึงความแตกต่างเท่าไหร่

How to Limit Privatemsg Recipients to Specific Users

คราวที่แล้วเขียนถึงการส่งข้อความจาก Webform โดยใช้โมดูล Privatemsg ไป คราวนี้ก็ยังคงวนเวียนอยู่กับโมดูล Privatemsg เหมือนเดิม

พอดีเว็บที่กำลังทำอยู่ มี requirement ว่าให้ผู้ใช้สามารถส่งข้อความส่วนตัวถึงผู้ดูแลระบบได้เท่านั้น โดยระบบส่งข้อความจะใช้โมดูล Privatemsg เป็นหลัก

วิธีทำที่คิดไว้คร่าวๆ ก็คือต้องแก้ไขฟอร์มสำหรับส่ง private message โดยกำหนดชื่อผู้รับไว้ตายตัวคือ admin จากนั้นก็ disable หรือซ่อนฟิลด์ Recipients ซะ ให้ผู้ใช้กรอกเฉพาะ Subject กับ Body พอ แน่นอนว่าพระเอกของงานนี้คือ Form API

หลักการคือสร้างโมดูลใหม่ แล้ว implement hook_form_alter() ขี้เกียจอธิบายยาว เอาโค้ดไปดูก่อนละกัน :P

/**
 * Implementation of hook_form_alter().
 */
function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'privatemsg_new') {
    $form['privatemsg']['recipient_list'] = array(
      '#title' => t('To'),
      '#type' => 'item',
      '#value' => 'admin',
      '#weight' => -10,
    );
    $form['privatemsg']['recipient']  = array(
      '#type' => 'value',
      '#value' => 'admin',
    );
  }
}

อันนี้คือแบบทื่อๆ สุดๆ อธิบายความหมายได้ดังนี้

  • เพิ่มฟิลด์ recipient_list เอาไว้โชว์ให้ผู้ใช้เห็นว่า ฟอร์มนี้จะส่งไปให้ admin นะ สังเกตว่า #type เป็น item ธรรมดา ไม่มีประโยชน์อื่นนอกจากเอาไว้แสดงผล
  • เปลี่ยนฟิลด์ recipient เป็นแบบ value แล้วกำหนดค่าเป็น admin

ส่วนที่สำคัญคือฟิลด์ recipient เนื่องจากค่าในฟิลด์นี้ เป็นตัวกำหนดรายชื่อของผู้ใช้ที่ Privatemsg จะส่งข้อความไปให้ ปกติ #type ของฟิลด์นี้จะเป็น textfield แต่เราเปลี่ยนให้เป็น value ซะ ซึ่งมันจะไม่โชว์ในฟอร์ม แต่จะส่งค่าไปด้วยเมื่อผู้ใช้กด submit เป็นการบังคับว่ายังไงๆ ก็ต้องส่งไปหา admin ชัวร์ๆ

แน่นอนว่าถ้าต้องการบังคับให้ส่งไปหามากกว่า 1 คน ก็สามารถระบุลงไปใน #value ของฟิลด์ recipient ได้เลย โดยใช้ลูกน้ำคั่น เช่น ‘admin, user1, user2′

จากหลักการนี้เราสามารถปรับเปลี่ยนรูปแบบฟอร์มของ Privatemsg ได้อีกเยอะ ตามแต่ความต้องการ เช่น เปลี่ยนจาก textfield เป็น drop-down list หรืออาจจะกรองรายชื่อ user ตาม role หรือตามข้อกำหนดบางอย่าง ก่อนที่จะเอามากำหนดเป็น value หรือเป็นลิสต์ให้เลือกอีกที เป็นต้น

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

Dell Inspiron 13 mini review

Dell Inspiron 13 ตัวใหม่ มีขายในบ้านเราแล้ว มีความเปลี่ยนแปลงจาก spec ของ Inspiron 13 ตัวเก่าเล็กน้อย หน้าตาเปลี่ยนไป และน้ำหนักเบาขึ้น (หมายเลขรุ่นจะเปลี่ยนจาก 1318 เป็น 1320) spec โดยละเอียดก็ตามด้านล่าง

Dell Inspiron 13 : Specification

  • CPU: Intel Core 2 Duo P7350 (Penryn)
  • Memory : 2GB DDR2 800 MHz
  • Graphics : Intel GMA 4500MHD
  • Monitor: 13.3″ at 1366×768
  • Harddisk : 320 GB SATA 5400 rpm
  • Other : 1.3M Webcam, Wifi, Bluetooth
  • Weight: 1.8kg

โลโก้ Dell และ Intel เด่นอยู่บนกล่อง

Dell Inspiron 13

ตัวเครื่องสีแดง แรงสามเท่า (สำหรับ Inspiron 13 ในบ้านเรา มีขายอยู่ 3 สี คือ แดง ดำ ขาว) บอดี้เป็นแบบเคลือบดูมันๆ หน่อย เวลาจับแล้วมีรอยนิ้วมือติด ดูไม่ค่อยดีเท่าไหร่

Dell Inspiron 13

เทียบขนาดกับเครื่องอื่นๆ ไล่จากบนลงล่าง Acer Aspire One A110, Dell Inspiron 13, Macbook Unibody 13″ จะเห็นว่า body ของ Dell จะหนากว่า Macbook อยู่เล็กน้อย

Dell Inspiron 13

มุมมองจากด้านบน เทียบกับ Aspire One

Dell Inspiron 13

ช่องเสียบต่างๆ ทางด้านขวา เรียงทีละอัน ได้แก่ ExpressCard slot, หูฟัง, ไมโครโฟน, 1394, USB สองช่อง, Combo ที่เสียบได้ทั้ง USB/eSATA, Gigabit LAN แล้วก็ช่องสำหรับล็อค

Dell Inspiron 13

ทางด้านซ้ายมี ที่เสียบปลั๊กไฟ (ตกขอบ ในรูปไม่เห็น), VGA, ช่องระบายอากาศ, HDMI แล้วก็ช่อง CardReader ขณะทำงานอาจจะมีลมอุ่นๆ ออกมาบ้าง แต่โดยรวมถือว่าอุณภูมิไม่สูง พัดลมระบายอากาศก็เสียงเงียบดี

Dell Inspiron 13

คีย์บอร์ดหน้าตาปกติ ลักษณะปุ่มจะเป็นแบนๆ แบบเดียวกับใน Mini 12 กรอบพลาสติกตรงระหว่างจอกับคีย์บอร์ด ดูวัสดุกระจอกไปหน่อย ส่วนจอเป็นแบบ glossy ความละเอียดระดับ 720p (1366×768) ให้สีสันสดใสชัดเจนดี ตรง TouchPad เป็นของ Synaptics ขนาดพอเหมาะ ไม่เล็กจิ๋วเหมือนบางยี่ห้อ ผิวสัมผัสจะสากๆ มือเล็กน้อย ให้ความรู้สึกขณะลากนิ้วได้ดี แต่ดูเหมือนจะไม่ใช่แบบ Multitouch

Dell Inspiron 13

Adaptor หน้าตาไม่ค่อยสวยเท่าไหร่ ขนาดค่อนข้างใหญ่เล็กน้อย มีสายรัดเอาไว้มัดตอนม้วนๆ สายไฟด้วย

Dell Inspiron 13

แถม External DVD Drive แบบ eSATA มาให้ด้วย (เป็นแบบ Slot-in มีกระเป่าใส่ และสายพ่วงให้ด้วย) สามารถลง OS ผ่านทางนี้ได้เลย

Dell Inspiron 13

ของแถมเป็นกระเป๋าจาก Dell ใบใหญ่ขนาดใส่ laptop 15″ ได้สบายๆ สงสัยว่าจะไม่อยากทำกระเป๋าหลายขนาด สำหรับเครื่องแต่ละรุ่น เลยทำออกมาแบบเดียวใส่ได้หมด

Dell Inspiron 13

หลังจากลองลง Windows 7 RC (build 7100) ดู พบว่ามองเห็น hardware ได้ครบถ้วน ยกเว้น Bluetooth กับ unknown device อีกตัวนึง อย่างแรกแก้ได้โดยไปโหลด driver for windows vista มาจากเว็บของ Dell เอง (ใช้ได้เหมือนกัน) พอลงเสร็จแล้วก็ใช้งานได้ตามปกติ (เพิ่งเคยใช้ Windows 7 หนแรก พบว่า Control Panel ของมันยุ่งเหยิงมาก) ต่อกับเมาส์ Logitech V470 ได้เลย ส่วน unknown device อีกตัวนึงนี่ยังไม่รู้จะทำยังไงกับมัน

ระบบกราฟิกใช้ GMA 4500MHD (on board) ซึ่งก็เพียงพอสำหรับใช้งานทั่วไป แต่ถ้าจะให้เอาไปเล่นเกมหนักๆ ก็คงไม่ไหว

Spec ตามนี้ ราคาอยู่ที่ 24,590 บาท (ยังไม่รวม VAT) ไม่มี windows แถมมาให้ (มีแต่ Free DOS) ถ้าเอา vista home basic แถมด้วย จะราคาแพงขึ้นมาอีก 2,000 แต่ที่เลือกไม่เอา windows เพราะว่า vista home basic มันอัพเกรดไปเป็น windows 7 แบบฟรีๆ ไม่ได้ เอาเป็นว่ารอ windows 7 ตัวจริงออก (22 ตุลา) หรือไม่ก็ตัว RC ที่ใช้ หมดอายุ แล้วค่อยคิดอีกที

สรุปข้อดีข้อเสียของ Dell Inspiron 13 เท่าที่ลองสัมผัส

ข้อดี:

  • เป็น Core 2 Duo ที่ค่อนข้างเบา และจอใหญ่ เมื่อเทียบกับยี่ห้ออื่น
  • พอร์ตต่อเชื่อมครบครัน มี CardReader ในตัว และไม่ต้องไปซื้อ adapter สำหรับต่อออกจอเหมือนบางยี่ห้อ
  • มีช่องเสียบแรมเหลือให้ช่องนึง เผื่อซื้อมาเพิ่มเองในอนาคต
  • ลำโพงเสียงดังดี

ข้อเสีย:

  • วัสดุบางจุดดูกระจอกไปนิด
  • บางคนอาจจะซีเรียสเรื่อง ไม่มี optical drive ในตัว

ยังไม่ได้ทดสอบเรื่องประสิทธิภาพของแบตเตอรี และยังไม่มีเวลาลองเล่นกับ Ubuntu เจ้าของเครื่องก็เอากลับไปใช้ซะแล้ว

Taking Screenshots of Websites Without Opening Browsers

พอดีได้รับมอบหมายงานจากหัวหน้า ว่าทำยังไงก็ได้ ให้มีรูปพยากรณ์อากาศจากเว็บกรมอุตุฯ มาโชว์บนจอ LCD โดยอัพเดตทุกๆ ชั่วโมง การเอามาโชว์นั้นไม่ยาก เพราะแค่อัพโหลดไฟล์ตามขนาดที่กำหนดเข้าเซิร์ฟเวอร์ หลังจากนั้นโปรแกรมมันจะจัดการให้เอง

รูปที่ต้องการนั้น 2 ใน 3 สามารถโหลดมาใช้งานได้เลย เพราะเป็นไฟล์ .jpg ธรรมดา ปัญหาคือรูปอุณหภูมิสูงสุด-ต่ำสุดประจำวัน ที่มันดันเป็น Flash ทางออกที่คิดว่าง่ายที่สุดคือ capture หน้าจอมันมาดื้อๆ นี่แหละ

คำถามคือทำยังไงให้มัน capture หน้าจอให้อัตโนมัติทุกๆ ชั่วโมง ทีแรกว่าจะใช้ AutoIt เปิดบราวเซอร์แล้วสั่ง printscreen แต่คิดว่าดูแล้วไม่ค่อยโปรเท่าไร ลอง google ไป google มา ก็พบว่าอันที่จริงมันมีเครื่องมือแสนสะดวกให้ใช้อยู่แล้ว

ตัวแรกที่เจอคือ WebShot หน้าตาดูดีมีสกุลมาก แต่โหลดมาแล้วเซ็ง เพราะเวอร์ชันฟรีมันจะ capture หน้าจอออกมาเป็นภาพขาว-ดำ เท่านั้น แสรดดดด

สองตัวต่อมาเจอพร้อมกัน (เพราะมันอยู่ในหน้าเดียวกัน) นั่นคือ IECapt ที่ใช้เอนจิ้นของ IE และ CutyCapt ที่ใช้ Qt คู่นี้อยู่ใน SourceForge ลอง IECapt แล้วเวิร์ก เลยตัดสินใจใช้ตัวนี้ไปเลย

จริงๆ CutyCapt ก็น่าลอง เพราะดู command line option แล้วหรูหราอลังการกว่า IECapt ไม่น้อย (cross platform ด้วย) แต่ผมไม่ค่อยมั่นใจเว็บราชการไทยสักเท่าไร เลยเอาตัวที่ชัวร์ๆ ดีกว่า -_-a

สุดท้ายระหว่างค้นหาเจอโปรแกรมสำหรับทำ screenshot หน้าเว็บทำนองเดียวกันนี้บนลินุกซ์ นั่นคือ khtml2png ส่วนแมคก็ไม่น้อยหน้า มี webkit2png ไว้ให้ใช้เหมือนกัน

For a new beginning

กุหลาบสีชมพู

ขอให้มีแต่สิ่งดีๆเกิดขึ้นนะ เพี้ยงงงง

Body Clock

[22 Aug 09] คนเรานะ นอนหกโมงเช้า ตื่นบ่ายหนึ่งก้อสามารถ… แต่ไม่สามารถนอนเที่ยงคืนตื่นเจ็ดโมงเช้าได้…
[23 Aug 09] คนเรานะ เปลี่ยนมาตอนตีสองนิดๆ ก้อยังสามารถตื่นบ่ายหนึ่งได้เหมือนเดิม…
 
จริงๆแล้วมันขึ้นกับเวลาตื่นนอน … …

MaxNet ภาค 9

ทิ้งระยะห่างจากภาคที่แล้วมาพอสมควร
ก็รอจนกระบวนการยกเลิก Account แบบ Indy เสร็จก่อนนั่นแหละ ถึงจะเอามาเล่าสู่กันฟัง
เริ่มจากเราโทรไปถามว่าถ้าช่างติดตั้งไปแล้วแต่จะยกเลิกทำไง
ก็สรุปได้ว่า ไม่คืนเงินที่จ่ายล่วงหน้าไปแล้ว ประมาณ 800 บาท และให้ Fax บัตรประชาชนพร้อมเขียนคำขอยกเลิกมา แล้วจะดำเนินการให้
ทั้งๆที่เราแจ้งช่างไม่ให้ติดตั้ง เค้าฝ่าฝืนติดตั้งให้  แต่สรุปว่าเราต้องรับผิดชอบเนี่ยนะ
น่าด่าไหมเนี่ย ….

แต่เอาวะ เงินเล็กน้อยทำบุญไปละกัน หลังจากนั้น
ไอ้เราก็ Fax ไปเรียบร้อย … จากนั้น เรื่องก็หายไป 1 อาทิตย์ ไม่มีการแจ้งผลใดๆทั้งสิ้น
ทำให้เราต้องโทรไปถามเอง คนรับสายก็รับเรื่องไว้ให้ แล้วจะแจ้งเจ้าหน้าที่รับผิดชอบให้
เวลาผ่านไปอีก 1 อาทิตย์ ก็ไม่มีการแจ้งกลับมา ว่าตกลงยกเลิกไปแล้วหรือยัง
จนต้องฝากเพื่อนที่มีคนรู้จักอยู่ใน MaxNet เชคให้ ปรากฎว่า คำตอบคือยกเลิกให้ตั้งนานแล้ว … ตั้งแต่วันที่ Fax ไป
เอ้าาาาา แล้วทำไมไม่แจ้งลูกค้าวะ ???!!! แต่ก็เอาน่ะ ยกเลิกแล้ว พอกันที

เวลาผ่านไปอีก .. และแล้ววันนึง ก็มีบิลส่งมาเก็บเงินค่าใช้บริการ .. -_______-”
เซ็งจิต ทำงานกันยังไงเนี่ย เลยต้องวานเพื่อนให้จัดการให้อีกครั้ง
หลังจากนั้นก็มี Call Center โทรมาขอโทษ และบอกว่าไม่ต้องจ่ายค่าบริการนะคะ ทางเรายกเลิกยอดนี้ให้แล้ว

เอ้อ… 9 ภาค .. หนังยาวจริงๆ…

Wu Wei

Wu wei เป็นแนวคิดที่สำคัญของลัทธิเต๋า ความหมายตามวิกิพีเดียคือ “knowing when to act, and when not to act” และเป็นชื่อธีมของ WordPress โดย Jeff Ngan นานๆ จะเจอธีมที่ถูกใจซักที เลยเอามา port เป็นธีม Drupal ซะ (ลอกชาวบ้านอีกแล้ว 555+)

การพอร์ตคราวนี้พยายามลอกจุดเด่นของ WordPress มาใช้ ไม่ว่าจะเป็น navigation แบบ “อ่านเนื้อหาย้อนหลัง” (ลิงก์ Older entries ด้านล่าง) เพราะปกติเวลาอ่านบล็อก ก็น่าจะอ่านเรียงกันไปอยู่แล้ว คงไม่มีใครคลิกข้ามไปข้ามมาหลายๆ หน้า (หรือเปล่า?)

อีกอย่างก็คือเวลาดู node แบบ full view จะมีลิงก์ไปยัง node ก่อนหน้า และ node ถัดไป ทำให้รู้สึกว่าอ่านแล้วต่อเนื่องดี ไม่ต้องกลับมาหน้าแรกแล้วคลิกเลือก node ใหม่

สำหรับธีมนี้ตั้งใจจะทำให้ support ระบบ category แบบ WordPress ด้วย เพราะดูตัวอย่างบล็อก @bombik แล้วรู้สึกว่าเวิร์กดี

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

Welcome, my Yaris

Combine

7-Zip Theme Manager

อาจจะฟังดูแล้วเหมือนโรคจิตหน่อยๆ แต่สาเหตุเดียวที่ทำให้ผมยังตัดใจใช้ 7-Zip ไม่ลงคือ หน้าตาของมันเห่ยเกินจะรับได้ (ดูภาพประกอบ)

7-Zip with original toolbar icons

แต่วันนี้มันเปลี่ยนไปแล้ว!!!

ด้วย 7-Zip Theme Manager เราสามารถเปลี่ยนไอคอนทูลบาร์ของ 7-Zip ได้ตามต้องการ (คล้ายๆ ฟีเจอร์ธีมของ WinRAR) นอกจากนี้ยังเปลี่ยนไอคอนแสดงชนิดของไฟล์ได้ด้วย

7-Zip Theme Manager มาพร้อมกับธีมสำหรับทูลบาร์มากถึง 60 แบบ รวมทั้งชุดไอคอนแสดงชนิดของไฟล์อีก 15 ชุด ประมาณว่ามันต้องถูกใจซักอันแหละน่า…

แน่นอนว่าถ้าไม่ถูกใจก็สามารถทำธีมใช้เองได้ ลงท้ายก็ได้ 7-Zip เวอร์ชันส่วนตัวหน้าตาแบบนี้ :)

7-Zip with iCandy Jr. icons

One Manga Downloader on GitHub

Dear One Manga readers,

I’m glad to announce that the most recent version of One Manga Downloader script is now hosted on GitHub.

I’ve made some improvements to the script according to Wout Mertens’ comment for better support on Mac OSX. Thanks, Wout :D

As usual, if you find any bug please do not hesitate to post an issue on GitHub or leave a comment here (I’ve only tested it on Cygwin so there may be some problem on other platforms).

That’s it. Happy downloading!

My Firefox Add-ons Collection

อัพบล็อกซะหน่อยเนื่องในโอกาสวันแม่ (เกี่ยวมั้ย!?)

พักหลังมีคนบอกว่าเขียนบล็อกแต่เรื่องวิชาการ อ่านไม่รู้เรื่อง ด้วยความสงสัยว่าจริงเหรอ เลยลองถามคนอื่นดูอีกรอบ ได้คำตอบว่า “แบบนี้มันไม่วิชาการแล้ว geek สัด” =.=

ก็ไม่รู้จะเขียนอะไร จะแปะรูป + เขียนเล่าเรื่องยาวๆ ก็ขี้เกียจ + บรรยายสู้เจ้า หมู ไม่ได้อีก

เพื่อแก้คำครหา วันนี้เลยเขียนบล็อกแบบอ่านง่ายๆ และน่าจะมีประโยชน์กับ(เกือบ)ทุกคนละกัน

เรื่องของเรื่องคือแอบเซ็งที่ไปแนะนำ add-on ไว้ แต่ไม่ติด Blognone’s Must-Have Collection แม้แต่น้อย (จริงๆ คือไม่มีคนโหวตเลย สงสัยใช้ add-ons ประหลาดเกิน) คิดไปคิดมา ทำ collection ของตัวเองบ้างดีกว่า แนะนำสั้นๆ ว่าเป็นรายชื่อ add-ons สำหรับไฟร์ฟ็อกซ์ที่ผมใช้เป็นประจำอยู่ทุกวัน โดยเข้าไปดูได้ที่ Kong’s Favorite Add-ons ครับ

ใครทำ collection ไว้ เอามาแนะนำกันด้วยก็ดีนะ :)

ง่วงจัง

และแล้วก้อมาถึง week ที่ต้องตื่นเช้าแล้วซินะ โย่ะ สู้ตายค่ะ… การตื่นเช้าทำให้รู้จักว่าจริงๆแล้วคนเราช่างมีเวลามากมาย สามารถทำอะไรได้หลายอยากให้แต่ละวัน… การต้องทำงานในที่ๆไม่มี internet แล้วทำให้ต้องมีการเสาะแสวงหา เดินไปเดินมาจนน่องโตได้ (ปวดขาเลยวันนี้ แต่เดินทุกวันมันคงจะชินแล้วทำให้ผอมได้มั้ยนะ)…. การกลับบ้านดึกวันจันทร์ที่ข้างนอกไม่มีอะไรขายให้กิน มันทำให้ต้องหาของกินในตู้เย็นมาประทังชีวิต ซึ่งส่วนใหญ่จะเป็นผลไม้กระป๋อง น่าจะผอมนะแบบนี้ เสียดายว่ามันมากับน้ำเชื่อมนะสิ… ว่าแล้วพรุ่งนี้กินอะไรดีนะ… ป.ล. ชอบบารอนเนสในจีไอโจจังเลย.. ท่าทางผู้กำกับคนนี้จะชอบสาวผมดำนะ นึกถึงมัมมี่กับทรานส์ฟอร์มเมอร์ซิ (สะกดภาษาไทยหมดมันก้อยากไปอีกแบบ)… ไร้สาระขึ้นทุกที (ก้อมันจะเที่ยงคืนแล้วนินา)… จบดีก่า

Open link from XULRunner

วันก่อนงมหาวิธีทำให้เวลาคลิก link ใน XULRunner แล้วไปเปิดหน้านั้นๆ ใน browser ของเราอยู่นาน สุดท้ายก็ไปดาวน์โหลดโค้ดของ Flickr Uploadr เอามาแกะดู ถึงได้พบดวงตาเห็นธรรม (โค้ดเป็น GPLv2)

1
2
3
4
5
6
7
8
9
10
11
12
13
function launch_browser(url) {
  try {
    var io = Components.classes['@mozilla.org/network/io-service;1']
      .getService(Components.interfaces.nsIIOService);
    var uri = io.newURI(url, null, null);
    var eps = Components.classes['@mozilla.org/uriloader/external-protocol-service;1']
      .getService(Components.interfaces.nsIExternalProtocolService);
    var launcher = eps.getProtocolHandlerInfo('http');
    launcher.preferredAction = Components.interfaces.nsIHandlerInfo.useSystemDefault;
    launcher.launchWithURI(uri, null);
  } catch (err) {	}
  return url;
}

ทีแรกนึกว่าง่ายๆ แบบเขียนบรรทัดเดียวเสร็จ เอาเข้าจริงแล้วไม่ง่ายเลย

ตลุยเยาวราช

วันนี้ตัดสินใจยอมตื่นนอนตั้งแต่ 7 โมงเช้าเพื่อไปเดินเล่นสำเพ็งค่ะ ไปถึงตั้งแต่แปดโมงเช้า เนื่องจากแวะไปส่งกั๊ตจังเรียนครูไก่ก่อน ตั้งใจจะไปซื้อปากกาแดงกับไม้บรรทัด (อาวุธลับของชาว audit) เดินไปเดินมาเสียตังค์กับเครื่องประดับไปเป็นพัน ดีนะพี่สาวไม่ได้เจาะหู ไม่งั้นคงได้เสียตังค์มากกว่านี้ แต่ยังไม่จบเท่านั้นค่ะ พี่สาวลากไปเดินตลาดสดเก่าต่อ มาเยาวราชหลายทีไม่เคยมาเดินโซนนี้เลย (เพราะว่าไม่ได้มาเช้าขนาดนี้) โอ้… ตื่นตาตื่นใจสุดๆ ของกินท้างน้านนน ถ้าทำอาหารเป็นคนสนุกกว่านี้ เท่านี้ก้อหิ้วกันเต็มสองมือแล้ว ไหนจะกุยช่าย จุ๋ยช่าย ขนมจีบ รังนกทอด เชอร์รี่ (ถูกมักๆขอบอก โลละ 350 ลูกใหญ่มัก) แล้วก็แบกไปเดิน paragon ด้วยชุดโทรมๆหน้ามันๆต่อ ฮาฮา… กลับมาบ้านสลบเมือดค่ะ ตื่นมาอีกทีก้อทุ่มนึงเลย.. สรุปว่าคราวหน้าไปอีกดีกว่า (จะไม่เดินเข้าร้านตุ้มหูร้านแรกละ…) ว่าแต่ถ้าไปเองจะหาตลาดเจอมั้ยนะ ไปหลายหนแล้วยังจำทางไปเมอร์รี่คิงต่อไม่ได้เลย ฮาฮา…

ง่วง

  • เข้าว่าคนเรามักจะไม่เห็นของใกล้ตัวเนอะ รวมทั้งของกินด้วย มีร้านเกี๊ยวกุ้งอร่อยสุดๆอยู่ตรงข้ามนี่เอง ไม่เคยเหยียบไปกินเลย คิคิ ไปกินอีกบ่อยๆดีกว่า (แต่ถ้านั่ง taxi ไปจะโดนประนามมั้ยนะ ขี้เกียจขนาดนั้น)
  • รวมพลไปเกะกันจนได้ ตลกดี เค้าติดป้ายด้วยนะ ว่าอุปกรณ์ผ่านการฆ่าเชื่อโรคแล้ว… โย่ะ ง่วง นอนดีก่า

Jojo face

ไปเจอมาจาก บล็อกจ่ากบ (เป็น flash) สำหรับสร้าง avatar ของตัวเองตามแบบในการ์ตูน Jojo

ลองเอามาทำของตัวเอง ได้หน้าตาออกมาประมาณนี้

Jojo avatar

ลองเล่นดูได้ที่ jojoface (เป็นภาษาญี่ปุ่น อ่านไม่ออก แต่พอมั่วเอาได้)

Parallel Universe

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

ชีวิตช่วงนี้จะว่าไป เหมือนเป็นช่วงชดใช้กรรม
หลายๆอย่างไม่เป็นไปอย่างที่คิด
หลายๆอย่างเป็นไปอย่างที่ไม่คิด

อยากย้อนเวลากลับไปได้จังเลย เฮ้อ

เรื่องดีๆ ของ เมื่อวานซืน เมื่อวาน และวันนี้ (ขอรวบยอดได้มั้ยอ่ะ)

  • เมื่อวานซืน
    • เมื่อวานซืนเหรอ ชิวมักๆ… ถามว่าชิวจริงเหรอ อาจจะไม่ แต่ช้านจาชิว มีปัญหามั้ย (หาเรื่อง mode)… เลยได้ไปกินกลางวันกันแถวเซ็นทรัลพระรามสาม กินไอติมโยเกิร์ต sfree (ดูผอมมั้ย) แต่คราวหน้ากลับไปกินแบบชุดชาเขียวแบบเดิมดีกว่า ว่าแต่พูดถึงเรื่องไอติมโยเกิร์ต ตรง mariotte มีร้านนึงมาเปิดด้วย มีโยเกิร์ตเป็นตู้ๆ หลายๆรสให้กดเองเลย เค้าส่งถ้วยให้ใบ อยากกินอะไรก้อกดเอง ตักหน้าเอง แล้วคิดชั่งเป็นน้ำหนัก oz ละสิบบาท… มุมตรง topping เนี่ยก้อแยกเป็นสองตู้ ตู้ผลไม้กับnon-ผลไม้.. วันก่อนนู้นพาน้องไปลอง อยู่กันคนละตู้เลยค่ะ (ไม่ต้องถามนะว่านู๋ฟูจะไปอยู่ตู้ไหน) ทั้งโมจิ คอนเฟล็ก ฟลุ๊คเฟล็ก ช๊อคโก… :P
    • ดีจายยย ไม่ได้ไปเดินเล่นตรงคาร์ฟูตั้งนาน แต่เดินแล้วไม่ได้ของแฮะ (ช่วงนี้อยากได้นาฬิกาแฮะ)
  • เมื่อวาน
    • จบคอร์สแล้วค่าาา อาทิตย์หน้าหยุด แต่เดี๋ยวจะเริ่มอาทิตย์ถัดไปนู้นเป็นภาษาจีนระดับกลางแล้ว เมื่อวานมีสอบ นู์เป็นฐานให้เค้าเหยียบๆกันเลย เฮ้อออ แย่จัง ขี้เกียจ แต่ก้ออยากเรียน… xuexi Hunyo you nuli.. duo shou duo du duo lianzi fuzi kewen he shengci… san tian da mu er tian shai wang bu wing… (กลับมาอีกสิบปีจะยังอ่านออกมั้ยนะ) คอร์สหน้าไม่มีpinyin แล้วด้วยซ
    • ได้กินชานมไขมุกร้านอร่อยด้วย เอ๊ะ กินมาหลายรอบแล้ว ไม่เคยเก็บบัตรสะสมมันเลยอ่ะ จริงๆเกือบจะแลกกินฟรีได้แล้วนะเนี่
    • เริ่มดำเนินการ shopping บำบัดแล้วค่ะ เสียตังค์ๆๆๆๆๆ มีร้านตุ้มหูร้านนึงใต้ลิโด้ เข้าไปทีไรเป็นอันเสียตังค์ทุกทีเลย แต่เค้าก้อทำสวยน้าาา handmade ชอบๆ อยากไป platinum จังเลย.. แต่ต้องใส่หน้ากากไปมั้ยเนี่ยชั้น ไม่งั้นไม่ได้เข้าบ้านแน่ๆเลย
    • ได้ความรู้ใหม่ว่า ootaya kitchen ก้อมีขาย ไอติมชาเขียวในน้ำเต้าหู้ เมนูของหวานสุดโปรดแล้วค่ะ จริงๆมันก็ไม่มีอะไรนะ มีแค่ไอติมชาเขียว + ถั่วแดง + โมจิ + เยลลี่ชาเขียว + น้ำเต้าหู้ อร่อยมักๆ จริงๆมันอบเค้าก้ออร่อยนะ ไปซื้อเฟรนไชน์ตั้งร้านกินเองเลยดีกว่า… ว่าแล้วก้ออยากไปกิน แปะก๊วยนมสด + ไอติมกะทิ ตรงทองหล่อจังเลย (ปีหน้าน้ำตาลจะขึ้นอีกมั้ยนะ)
    • เมื่อวานมีฝรั่งแอบโวยว่าชั้นหยิบ daddy dough ชิ้นสุดท้ายที่เค้าหมายปองไปด้วย ฮาฮา… มันคือ contrasto เนื้อเป็น choc ราดด้วย white choc อร่อยมักๆ… แต่แอบเสียใจนิดนึงว่ามาร้านนี้สามรอบจะมากิน doudble choc มันก็ไม่มี (เมื่อวานซืนจากิน famous amous double choc chip ก็หมด)… ว่าแล้วก้อซื้อเฟรนไชน์ไปตั้งข้างๆ ootaya ด้วยเลยละกัน..
  • วันนี้
    • ดีใจจัง ตื่นก่อนเที่ยงด้วยวันนี้… กำลังจะมีสุกี้เรือนเพชรลอยกลับมาให้กินแล้วค่ะ
    • อาบน้ำให้กั๊ตด้วย สระผมด้วย แบบขำๆ สรุปว่าก้อเปียกด้วยกันทั้งคู่เลย… อยากได้กล้องจัง อยากได้มือถือด้วย ซื้อไรก่อนดีน้าาา
    • HBO เอา Wanted มาฉายด้วย โอ๊ะ นี่ผ่านมาเป็นปีแล้วเหรอเนี่ย ที่ดูในโรงไป…

ป.ล. bullet point กันแบบนี้มันจะเรียบร้อยไปมั้ยนะ… ฮาฮา (ดีนะ ไม่นับ 123 จะได้ reference ได้)

A Simple Way to Integrate Webform and PrivateMsg in Drupal

ตอนนี้กำลังปรับแต่งระบบเว็บให้เพื่อนอยู่ครับ หลักๆ คือมีหน้า register ที่สร้างจาก Webform โดยมี requirement ว่า เมื่อผู้ใช้ submit Webform แล้วให้ส่งข้อความไปเตือน admin ว่ามีคนสมัครใช้บริการใหม่ด้วย

ตอบไปว่าเซ็ตนิดเดียวก็ได้แล้ว เพราะนึกว่า Webform มันคงสนับสนุน Privatemsg ด้วย แต่ลอง google ดูก็พบกับคำตอบที่น่าเศร้า เลยต้องหาวิธีทำเอาเอง

ไปๆ มาๆ พบว่าไม่ยากอย่างที่คิด เนื่องจากตอนสร้าง Webform ใหม่ เราสามารถใส่โค้ด additional processing ลงในส่วนของ Webform advanced settings ได้ โดยโค้ดในส่วนนี้จะรันเมื่อข้อมูลที่ส่งเข้ามาผ่านการ validate และพร้อมจะเก็บลงในฐานข้อมูลแล้ว

ดูจาก Privatemsg API ก็พบว่า ฟังก์ชันที่เราต้องการคือ privatemsg_new_thread() แต่ข้อมูลในหน้า documentation จะไม่อัพเดตเท่าที่ควร ยังดีที่ชื่อฟังก์ชันยังเหมือนเดิม และมีคำแนะนำให้ไปอ่านจากคอมเมนต์ของฟังก์ชัน privatemsg_new_thread ในไฟล์ privatemsg.module แทน

แต่พอลองใส่โค้ดเข้าไปแล้ว ทำยังไงมันก็ไม่ส่ง PM มาให้ซักที เลยไปไล่โค้ดใน privatemsg.module พบว่า author ต้องเป็น user ที่มี permission “write privatemsg” เท่านั้น ที่ส่ง PM ไม่ได้ในตอนแรกเพราะ Webform นี้จะถูก submit โดยมี author เป็น Anonymous เสมอ วิธีแก้ก็ตรงไปตรงมาคือกำหนด author ให้เป็น user อื่นแทน

หน้าตา code snippet ที่เอาไปใส่ในส่วน additional processing ก็ประมาณนี้

<?php
  privatemsg_new_thread(array(user_load(2), user_load(30)), 'New user registration', $form_values['submitted_tree']['login_information']['username'] . ' has just submitted the registration form.', array('author' => user_load(1)));
?>

อธิบายคร่าวๆ คือเมื่อมีการ submit Webform จะส่ง PM ไปหา user id 2 และ 30 โดยมี subject และ body ตามที่กำหนด ส่วนสำคัญคือ array(‘author’… ซึ่งผมใช้ user id 1 (super admin) เพื่อความง่าย แต่จริงๆ จะเป็น user อะไรก็ได้ ขอให้มี permission “write privatemsg” เป็นใช้ได้

ปล. ระหว่าง google เจอโมดูลที่จะทำให้ Privatemsg ดูโปร + ใช้งานสะดวกขึ้นเยอะ มันคือ Private Message Growl ครับ :)

Fringe

มีเพื่อนคนหนึ่งแนะนำมาว่าถ้าชอบ The X-Files กับ CSI แล้ว ก็ควรจะดูเรื่องนี้
ว่าแล้วก็เลย download มาลองหน่อย
หลังจากดูไปสิบกว่าตอน
อื้ม … เหมือน The X-Files เลยแฮะ เนื้อเรื่องเป็นการตามไล่ล่าองกรณ์ลึกลับ
ที่ควบคุมปรากฎการณ์และเทคโนโลยีเหนือธรรมชาติไว้
ระหว่างสืบสวนก็เจอสิ่งที่ไม่สามารถอธิบายได้ตลอด คำถามถูกตอบด้วยคำถามใหม่มากมาย
ดูท่าทางไม่มีที่สิ้นสุด ยิ่งสืบสวนไปก็ยิ่งรู้สึกเป้าหมายห่างไกลไปเรื่อยๆ

ตอนนี้ก็ยังสนุกดีอยู่นะ เหมือน The X-Files แรกๆนั่นแหละ
ก็หวังว่าเรื่องนี้คงไม่หลุดโลกไปเหมือน The X-Files นะ อันนั้นยิ่งทำยิ่งเละ