Archive for the 'เคล็ดลับ' Category

ทำความฝันให้เป็นจริง

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

ผมเคยเป็นคนที่ชอบคิด แต่ไม่ชอบทำ ถึงไอเดียทุกคนจะบอกว่าดีแค่ไหน แต่มันก็เป็นได้แค่เพียงความคิด เพราะปราศจากการลงมือทำ ซึ่งภายหลังขนาดผมพยายามทำตาม GTD หรือสิ่งที่จะเพิ่มศักยภาพของผม ผลที่ได้คือผมมีเวลามากขึ้น จัดการเวลาได้ดีขึ้น แต่ฝันของผมก็ยังไม่เดินหน้าไปอยู่ดี เพราะการที่เราทำตาม GTD นั้นบางครั้งมันก็ปราศจากความรู้สึก รู้แต่เพียงว่า วางแผน แล้วทำตามแผนที่วาง ถึงแม้เราจะเขียนทำฝันของเราลงไปใน GTD ได้แต่สิ่งที่คุณขาดไปคืออารมณ์ที่อยากทำ และความปราถนาที่ต้องการให้มันเสร็จ

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

แล้วตอนนี้ผมจัดการตัวเองและความฝันของผมยังไง เอาละผมจะบอกตรงๆเป็นข้อๆเลยละกันครับ

  • ผมใช้ Google Calendar สำหรับจำวันเกิดเพื่อน และนัดสำคัญ
  • ส่วนในแต่ละวัน ผมใช้ To-Do List ในการบอกว่าวันนี้เราต้องทำอะไรบ้าง
  • โดยผมจะเขียนใน iGoogle ซึ่งผมต้องเปิดทุกวันอยู่แล้ว แทนการจดใส่กระดาษ หรืออื่นๆ
  • เก็บความคิดทุกอย่างของคุณไว้ในที่สักที่เช่น เขียน จด พิมพ์ แล้วแตกย่อยความคิดนั้น
  • เสร็จแล้วก็นำความคิดที่แตกย่อย มาใส่ใน To-Do List ในแต่ละวัน ตามใจชอบ
  • ไม่ต้องเขียนเวลากำกับในแต่ละสิ่งที่ต้องทำ (แต่คุณควรรู้ว่าอันไหนควรจำกัดเวลาและสิ่งไหนไม่ควร)
  • ควรจะคิดแบบวันต่อวัน แทนที่จะวางแผนล่วงหน้าเป็น 3 วันหรืออาทิตย์

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

  • มีสมาธิกับสิ่งที่คุณทำ ในเวลาที่คุณสามารถทำงานได้ด้วยตัวคนเดียว คุณควรใส่หูฟัง แล้วเปิดเพลงที่คุณชอบหรือเปิดเพลงที่ช่วยทำให้สมาธิคุณดีขึ้น เช่น HoloSync
  • ศึกษาหาความรู้ในสิ่งที่คุณจะต้องทำ
  • ลองทำเลย อย่าแค่อ่านหรือรู้
  • จำกัดสิ่งที่คุณจะต้องรู้ไว้บ้าง ไม่งั้นอาจเป็นเหมือนผมอยากรู้ไปซะทุกอย่าง สุดท้ายก็ ไม่ได้มีผลงานเป็นชิ้นเป็นอัน มีแต่ความรู้ในหัวสมอง
  • อ่านให้น้อยลง ทำให้มากขึ้น (เพราะเมื่อเจอปัญหาคุณก็จะไปหาอ่านเองอยู่ดี)
  • เมื่อคิดจะอ่านจงอ่านให้เข้าใจ ไม่ใช่แค่ประดับความรู้
  • อยู่กับปัจจุบันครับ (ไม่ใช่ให้อยู่กะที่แต่ให้คิดให้ทำในปัจจุบันก่อน)

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

วิธีทำ Ajax Cross Domain แบบสมบูรณ์ด้วย CodeIgniter และ jQuery

เอาละครับ วันนี้ผมได้เจอปัญหา Ajax Cross Domain อย่างจริงๆจังๆ แล้วตกผลึกความรู้ได้มาพอสมควรครับ ทุกคนผมติต่างว่ารู้จัก Web Service นะครับโดยวันนี้เราจะมาทำแบบ REST กันครับ โดยผมมาพร้อมกับปัญหาที่ผมเจอบ่อยๆมีดังนี้ครับ

  • สามารถเรียก Web Service ได้จาก Domain เดียวกัน
  • สามารถเรียก Web Service จาก Host ได้จาก localhost
  • แต่ไม่สามารถเรียกจาก host หนึ่งไปยังอีก host หนึ่งได้

หลังจากที่ผมได้ลองทำ Web Service มาหลายแบบ แบบที่ผมชอบที่สุดก็คงหนีไม่พ้นแบบ JSON แน่นอนครับ เพราะใน php มันมี function ที่ชื่อว่า json_encode ซึ่งเปลี่ยน array ของ php ไปเป็น json ให้เราได้ทันที แต่วันนี้ผมจะเอาตัวอย่างที่ผมทำผิดแล้ว วันนี้ได้เรียนรู้มาบอกต่อกันครับ ซึ่งใน php ตัวที่ผมทำ web service นั้นชอบทำแบบนี้ครับ

echo json_encode($array);

ซึ่งวิธีนี้จริงๆแล้วน่าจะใช้ได้ดีกับหมดทุกระบบแล้วนะครับ เพราะปกติถ้าใน php เรามี function นี้ครับ file_get_content ซึ่งอำนวยความสะดวกเรื่องนี้ให้เรา เสร็จแล้วเราก็ json_decode จบได้ข้อมูลมาใช้ละง่ายโคตรๆ แต่กระนั้นครับ แล้วถ้าเราจะใช้ Javascript ดึง Web Service ของเราละครับ ยิ่งถ้าใช้ jQuery ก็คงยิ่งหมูเลย

$.getJSON(url,callback);

แค่นี้ก็น่าจะเพียงพอ แต่ผลที่ได้คือ “ถ้าไม่อยู่ใน domain เดียวกัน หรือไม่มีการเปิดให้สิทธิทำ cross-domain ก็จะใช้ไม่ได้ครับ” ในที่นี้ผมหมายถึง เวลา internet explorer จะขึ้น privacy ซึ่งถ้าเราตกลง มันก็ยอมให้เราทำ cross-domain ได้ซึ่ง การใช้ json_encode ถึงเพียงพอครับ แต่พอเอาไปขึ้น host จริงๆคนอื่นที่เขาใช้ javascript ดึงก็ใช้ไม่ได้อยู่ดีแล้วเราจะแก้ปัญหาอย่างไรละ ? ผมเลยค้นหาวิธีต่างๆซึ่ง JSONP เนี้ยเป็นคำตอบ แล้วทำยังไงละ ? วันนี้ผมเอาวิธีทำมาให้เลยละกัน โดย ต้องขอบคุณ Tee++ จาก jQueryTips ซึ่งเป็นคนนำทางผมครับ ผมแนะนำให้อ่านของคุณ Tee++ ก่อนนะครับเอาละประเด็นคืออยู่ที่บรรทัดนี้ครับ

echo $_GET[‘jsoncallback’].‘(’.$json->encode($arr).‘)’; // ของคุณ Tee++ ผมข้อแก้เป็นด่านล่าง เพื่อลักษณะใกล้เคียง
echo $_GET[‘jsoncallback’].‘(’.json_encode($arr).‘)’;

ซึ่งสังเกตว่าจะใช้ . นะครับ ไม่ใช่ = แล้วจะตามวงเล็บเปิดแล้วลงท้ายด้วยวงเล็บปิด ซึ่งเป็นตามหลัก JSONP ส่วนสาเหตุที่ทำไมต้องทำเช่นนี้ ผมยังไม่แน่ใจนัก แต่อธิบายคร่าวๆได้ว่า การใช้ Ajax Cross Domain ตรงๆนั้นมันมีึความเสี่ยงสูง ดังนั้นเลยเกิด JSONP (JSON with Padding) เพื่อมาช่วย แล้วการที่เรามีการใส่ตัวแปลสักตัว ในตัวอย่างคือ jsoncallback แล้วมีการใส่วงเล็บเปิดปิดไปนั้น เืพื่อให้ทางฝั่ง Client สามารถเล่นกับข้อมูลได้สะดวก โดยถ้าเป็น jQuery ก็จะมีการใส่่  jsonp1236274532659 (แล้วแต่มันจะ genให้)แบบนี้เป็นต้น ซึ่งผลลัพธ์ตอนจบมันจะกลายเป็นประมาณนี้

jsonp1236274532659({"name":"dominixz","url":"http:\/\/dominixz.com"})

จะสังเกตว่าพอสามารถใส่อะไรลงไปข้างหน้าได้ มันจะกลายเป็น function !!! ซึ่งทำให้ทางฝั่ง client เล่นอะไรกับข้อมูลนี้ก็ได้ โดยถ้าให้ผมเดาเป็นผมกรณีนี้ใน function นั้นก็อาจมีการ set ค่าตัวแปรค่างๆหรือแม้กระทั่ง eval ข้อมูลเลยก็เป็นได้ แล้วแต่เราจะเขียน โดยถ้าใช้พวก Framework นั้นมีการจัดการกับ JSONP เกือบทุกตัวแล้วละไม่ว่าจะเป็น MooTools , jQuery , Dojo ฯลฯ อธิบายพอเห็นภาพละ แล้ววิธีเรียกใน jQuery ละทำยังไงก็ง่ายๆเลยครับ

$.getJSON(url+”?jsoncallback=?”,callback);

โดยผมมีตัวแบบจริงสักอันละกันครับ โดยถ้าผมมี Web Services ของ CodeIgniter ดังนี้ครับ http://localhost/codezend/index.php/webservices/test ดังนั้นโค้ดนี้ผมจะได้ url เป็นดังนี้ครับ

$.getJSON(”http://localhost/codezend/index.php/webservices/test?jsoncallback=?”,callback);

ซึ่งใน web service ของผมก็ต้องมีการ set ค่า jsoncallback เหมือนกันไม่งั้นก็ใช้ไม่ได้ โดยถ้าไม่ได้ใช้ CodeIgniter แค่นี้ก็คงจบบทความแล้วแต่ CodeIgniter ถ้าทำแค่นี้ไม่ได้แน่ครับ เพราะเจ้า CodeIgniter ดันไม่ยอมให้ใส่ ?jsoncallback=? อย่างงี้ตอนเริ่มต้นได้นี้สิ โดยถ้าต้องการใช้เราจะต้องไป set ใน config.php ให้ enable_query_strings เป็น TRUE ซะก่อนนะครับ

$config['enable_query_strings'] = TRUE;

เป็นอันจบครับ ไว้ผมมีประสบการณ์อะไรเพิ่มเติมจะนำมาเล่าต่อครับผม วันนี้ไปนอนแล้วครับสวัสดีครับ

กำจัด Zita.exe แบบลูกทุ่ง

หลังจากเมื่อวานเจอ Virus จาก Email ที่ attach มาให้ (Gmail ไม่รู้ว่าจริงๆแล้วมี Script บ้างอย่างที่กวนตีนอยุ่) โดยผมโดนเจ้า Zita.exe มันแกล้งเอาหัวหมุ่นทั้งวันเลย โดยมันไม่ได้มีอันตรายทำให้ไฟล์เสียหาย หรือลบไฟล์ใดๆทั้งสิ้นเพียง แต่มันจะซ้อนที่อยู่ไฟล์จริงของเราไม่ให้สามารถเห็นได้ (แต่เข้าผ่าน Address ยังได้อยู่หรือ Windows Explorer ก็ยังเห็นอยู่) แล้วที่นี้ประเด็นมันอยู่ที่ว่า มันจะเปลี่ยน folder ที่เราใช้งานต่างๆไปเป็น ชื่อโฟลเดอร์.exe เสร็จแล้วก็จะทำรูป icon เหมือน folder แล้วถ้าเราเผลอ double click ละก็ ก็คือติดโดยทันที แล้วไม่พอถ้ามันกระจัดกระจายไปไหนหมดแล้ว เวลาเราเผลอ double click .exe หลอกตัวนั้นมันก็จะกลับมาได้อีก ไม่พอถ้าเราลบตัวมันไปแล้ว Folder ของเราก็จะไม่กลับคืนมาถึงแม้เราจะสามารถ Show Hidden file ได้แล้วก็ตาม

วิธีแก้ไขเบื้องต้น

  1. ถอด Flash Drive ออกก่อนเลย ซึ่งเราจะได้มาแก้ไขทีหลังได้
  2. เสร็จแล้วให้เราเข้าไปใน DOS ใน Drive C: แล้วใส่คำสั่งนี้ attrib -s -h -r /S /D *.* โดยมันจะทำให้เราเห็นไฟล์ทุกอย่างเลย แล้วลบ folder Zita ใน drive C: ซะ
  3. ในกรณีที่น่าจะโดนมันทำสำเนา folder ไปแล้วให้ใช้คำสั่ง search ของ Windows เสร็จแล้ว หาไฟล์ที่ถูกสร้างโดยวันที่โดนจนถึงวันนี้ เสร็จแล้วกำหนดขนาดไซค์ไม่เกิน 45kb แล้วพิมพ์คำค้นหาว่า *.exe โดยอันนี้ให้หาแบบ All files and Folders นะครับ
  4. เมื่อเราทำการลบเสร็จหมดแล้ว ให้ตรวจสอบใน msconfig อีกทีว่ามีการ run startup ไหม
  5. ดูใน Program -> Startup ว่ามันดันใส่อะไรไว้ไหม
  6. เมื่อดูเสร็จสมบูรณ์แล้ว ให้ปิด System Restore ไปเลยหนึ่งครั้ง แล้ว search ด้วยคำว่า Zita อีกครั้ง ถ้ามีที่คุณไม่คุ้นตาเช่นใน Prefetch ให้ลบทิ้งได้ทันที

ปล. กรณีอาจทำให้รูปภาพ icon สวยๆของคุณหายไปจากคำสั่งใน DOS นะครับ

เช่นเดียวกับ Flashdrive ครับคุณก็ต้องทำในลักษณะคล้ายๆกัน ด้วยคำสั่งเดิมเหมือนกันครับ แล้วทำการลบให้สิ้นซากซะก่อนจะทำอะไรทั้งสิ้นครับ แล้ววิธีเข้า Flashdrive ให้ใช้ Windows Explorer แทนการ double click เข้าไปหรือเปิดด้วย mouse ขวา -> open นะครับ

คุณรู้รึเปล่าจริงๆแล้ว DVI มี 2 แบบ?

ผมพึงรู้เนื่องจากต้องต่อ 2 จอ แล้วพอดีซื้อหัวแปลงจาก VGA Analog เป็น DVI แต่แล้วพอซื้อมามันก็ใช้กับการ์ดจอผมไม่ได้ ซึ่งตอนแรกก็ไม่รู้ว่าเพราะอะไรแต่คราวนี้พอพี่สาวไปสืบมาก็ได้ความว่า จริงๆแล้ว พอร์ต DVI ที่ผมมีเป็นแบบ 2 ขอเรียกเป็นรุ่น 2.0 ละกันครับซึ่งจะมีลักษณะแบบนี้

geek tips dvi cable 300x300

สังเกตดีๆว่าจะเป็นต่างกับ DVI ธรรมดาที่ตรงพอร์ตจะเป็นรูป + และมีสี่เหลี่ยมรอบรวม 4 ช่ิอง ดังนั้นสายที่มาเสียบมันก็ต้องมี pin 4 pin ตรงนั้นด้วยไม่ใช่มีแต่ —— อย่างเดียวไม่มี 4 pin รอบๆ ถ้าคุณมีหัวต่อที่ไม่มี pin รอบๆตรงเครื่องหมาย ——- ของคุณเป็น DVI 1.0 ซึ่งจะเสียบกับ 2.0 จะใส่ได้ แต่ภาพไม่ขึ้น (หาเจออีกตะหากเพราะลองมาแล้ว ด้วยความโง่ที่ไม่รู้)

geek tips oem cab dvi cable 300x226

อันนี้เป็นแบบ DVI 1.0 จะไม่มี 4 pin รอบๆดังนั้นก็ต้องใส่กับพอร์ต DVI 1.0 ที่ไม่ใช่รูป + จะเป็น – อย่างเดียวและไม่มีสี่เหลี่ยมรอบๆ วันนี้ก็ฝากเกร็ดเล็กเกร็ดน้อยไว้ครับเพื่ออนาคตจะต้องไปซื้อหัวแปลงจาก VGA Analog เป็น DVI ต้องตรวจสอบให้ดีครับ ว่าพอร์ตเราเป็น 1 หรือ 2 จะได้ซื้อหัวต่อมาได้ถูกนะครับ

วิธีใช้ Ipod Shuffle กับ Songbird

หลังจากที่ผมพยายามหาตัวฟังเพลงแล้วสามารถ Sync กับ Ipod ได้ผมก็เลยลองเปลี่ยนมาใช้ Songbird ดูครับซึ่งเป็นโปรแกรมฟังเพลงคล้ายๆ iTunes นี้และ แต่ดีกว่าที่สามารถใส่ Plugin ได้มากมาย โดยสิ่งที่เราจะต้องทำให้ Ipod Shuffle ใช้กับ Songbird ได้นั้นต้องทำดังนี้ครับ

  1. เตรียม Ipod Shuffle
  2. โหลด Songbird
  3. โหลด plugin ตัวนี้มาชื่อ iPod Device Support
  4. ทำการ install plugin โดยการเปิด songbird ขึ้นมา เครื่องมือ -> ตัวเลือก (Tools -> Option) เลือก add-on กด install แล้ว browse ไปหาไฟล์ plugin ที่โหลดมา
  5. ทำการ restart Songbird
  6. เสร็จแล้วลองเสียบ Ipod Shuffle

โดยอันนี้คือขั้นตอนปกติซึ่งผมว่าส่วนใหญ่น่าจะไม่ติดเพราะถ้าเคยใช้กับ iTunes มาก่อนแล้วมันจะไม่ติดนะ (ส่วนใหญ่) วิธีแก้คือคุณต้องยอมสละไฟล์เพลงทั้งหมดใน Ipod Shuffle โดยการลบโฟลเดอร์ Ipod_Control ใน iPod Shuffle นั้นโดยปกติแล้วคุณจะมองไม่เห็น Folder นี้ต้องไปค่า folder ก่อนโดยกดเข้า My Computer -> กด Tools -> Folder Options -> กด tab View -> Hidden files or folders ให้ปรับเป็น Show hidden files or folders ซะแล้วคราวนี้กลับไปที่ drive ipod ใหม่ก็จะเห็น folder ลางๆชื่อ Ipod_control ให้ทำการ

ลบซะ.. ครับ

พอลบเสร็จแล้วเข้าไปใน Songbird ใหม่คราวนี้ก็เห็นแล้วครับผม สำหรับท่านที่ยังไม่เคยลองใช้ Songbird ขอแนะนำว่าน่าลองมากๆครับสำหรับ Version 1 แบบตัวเต็มแล้วใช้ได้ดีครับ แถมขนาดไม่ใหญ่เท่า iTunes และไม่ต้องมี QuickTime มาทำให้รำคาญใจอีกด้วยครับ

Next Page »