Archive for March, 2009

ThaiHoster โฮสไทยฟรีแบบนี้หาได้ที่นี้

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

  • พื้นที่ 50mb – 1Gb (เริ่มต้นให้ 50mb)
  • Bandwidth 5Gb – 10Gb (เริ่มต้น 5gb)
  • เป็น PHP และมี MySQL ให้พร้อม
  • ส่วนรายละเอียดอื่นๆลองดู ที่นี้ ครับผม

ส่วนเรื่องข้อตกลงในการใช้งานนั้น คุณจะต้องยอมแปะ แบนเนอร์ ของเขาในเว็บไซต์ของท่านและมีข้อกำหนดอื่นๆ ซึ่งอ่านเพิ่มได้ ตามลิงค์นี้เลยครับ http://www.thaihostor.org/home/1-registration/1-condition.html เอาละครับ ถ้าคุณไม่ิคิดจะทำอะไรผิดกฎหมาย เพียงคุณแปะแบนเนอร์ในเว็บไซต์ แล้วอัพเดตทุกๆ 30 วันแค่นี้ก็ได้ใช้ โฮสฟรีแล้วครับ สำหรับตัวผมก็อาจยาย เว็บบอร์ดบางเว็บไซต์ที่ผมทำอยู่ไปวางไว้ ผมจะได้นำบริการอื่นๆ มาฝากไว้ที่ AppServ ส่วนเว็บบอร์ดหรืออะไรที่ทำเป็นกลุ่มเล็กๆก็จะเอาไปฝากไว้นู้นเลย ไปลองสมัครดูกันเลยที่

ThaiHoster.org

ปัญหางานทั่วไปที่เจอในงานพัฒนาเว็บ (1)

หลังจากทำงานกับที่ Duocore.tv มาก็เจอปัญหาในการโค้ดมากมาย โดยผมนำมาเขียนเตือนตัวเองไว้ แล้วก็เป็นประโยชน์สำคัญท่านอื่นๆที่อาจจะเคยเจอปัญหานี้ หรืออนาคตอาจจะเจอ

1. Web Service กับ JSON หรือ AJAX Cross Domain

โดยปกติแล้วเราจะใช้ Javascript ดึงข้อมูลจากฝั่ง Server Side Script ภายใต้โดเมนเดียวกันแล้วมันได้ ผลแต่ถ้าเราจะทำ Ajax Cross Domain ด้วย JSON นั้นเราต้องรู้จักสิ่งที่เรียกว่า JSONP ซึ่งเคยเขียนในสองสามบทความที่แล้วกับวิธีทำ ซึ่งปัญหานี้ ถ้าเราไม่กะเปิด Service ให้คนอื่นใช้คงไม่เจอ แล้วเมื่อก่อนก็นึกว่ามันง่ายกว่านี้ แต่จริงๆมันต้องแก้ด้วย JSONP นี้เอง แต่ถ้าเป็นพวก XML แล้วนั้นจะไม่ต้องใช้ JSONP มาแก้ปัญหา

บทสรุปของวิธีแก้ปัญหา : ใช้ JSONP ในการส่งข้อมูลแบบ JSON ข้าม Domain หรือใช้ข้อมูลแบบ XML เพื่อไม่ต้องยุ่งกับ JSONP

2.  Asynchronous และ Synchronous

ในการเขียน Javascript หรือ jQuery และ AJAX คงเป็นเรื่องที่ขาดไม่ได้สำหรับเว็บ 2.0 ดังนั้นเราหลีกเลี้ยงที่จะไม่เจอปัญหานี้ในบางครั้งไม่ได้ ในกรณีของผมคือเจอกรณีที่เราต้องการให้ข้อมูลโหลดมาเสร็จก่อน แล้วค่อยที่จะทำคำสั่งต่อไปเรื่อยๆ ซึ่งผมก็เจอข้อจำกัดบางอย่างของ JSONP ของ jQuery นั้นก็คือมันไม่สามารถทำเป็น Synchronous ได้ ดังนั้นในกรณีที่เราต้องการให้มีการรอข้อมูลก่อน แล้วค่อยทำงานอย่างอื่นต่อจึงทำไม่ได้นั้นเอง

บทสรุปของวิธีแก้ปัญหา : ส่งข้อมูลด้วย XML หรือทำให้การท่อง DOM เป็นแบบ Static ที่สุด ไม่งั้นอาจจะเจอกรณีที่ข้อมูลส่งมาช้ากว่าคำสั่งที่สั่งให้เปลี่ยน DOM แบบ Dynamic

3. XML-RPC

เรื่องของ XML-RPC อาจเป็นเรื่องน่างง ว่าเป็นปัญหาได้อย่างไร ผมต้องใช้เจ้า function ที่ชื่อว่า xmlrpc_encode_request เป็น function ที่เอาไว้ส่ง xml rpc แต่มันดันต้องใช้ extension ของ php อย่าง xmlrpc ซึ่งต้องเปิดใช้งานก่อน ซึ่งใน Windows หรือเครื่องเราก็ไม่มีปัญหาอะไรต้องตกใจ แต่พอขึ้นโฮสที่เป็น Linux XMLRPC ตัวนี้ไม่สามารถเปิดใช้งานได้ง่ายๆ เพราะโฮสส่วนใหญ่ไม่ได้ compile เจ้า xmlrpc ตัวนี้ไว้ เลยดังนั้นการเปิดใช้งานมันจึงเป็นเรื่องที่น่าปวดหัว

วิธีแก้ปัญหา : แจ้งเจ้าของโฮสให้เปิดให้ แต่ถ้าเจ้าของโฮสเปิดไม่เป็น เห็นทีต้องใช้ library ตัวอื่นแล้วแทนแล้วเช่น XML-RPC ของ CodeIgniter

4. ข้อผิดพลาดในการเขียนโค้ด inline css

ระหว่างการทำงานภาษาที่ต้องเขียนก็มีมากมายทั้ง CSS , JavaScript , HTML , PHP , jQuery ซึ่งบางทีมันก็น่าปวดหัวจนมึนไปและข้อผิดพลาดอาจเกิดขึ้นได้ตลอดเวลา รวมถึงความที่เป็นมนุษย์มักคิดเข้าข้างตัวเอง หรือมองข้ามสิ่งเล็กๆน้อยไป กรณีที่ผมเจอก็คือเขียน inline css ผิดนั้นเอง เช่น style=”width:480; height:270;” ซึ่งดูผ่านๆก็น่าจะใช้ได้ แล้วการ render ในบาง browser สามารถ render ได้ แต่ไม่ได้ในบาง browser แล้วยังได้ในบางกรณี และไม่ได้ในหลายกรณีซึ่งทำให้เกิดความสับสนกับคนเีขียนได้อย่างมาก

วิธีแก้ปัญหา : จงเชื่อในมาตรฐานและการตรวจสอบของคอมพิวเตอร์ในกรณีนี้ก็คงเป็น HTML Validator เป็นต้น

5. แก้บัค,อัพเกรด,เปลี่ยนความต้องการ

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

วิธีแก้ปัญหา : เขียน Test Cases หรือ Test Script ช่วยทำให้ค้นพบบัคได้เร็วขึ้น แล้วก็คุยความต้องการให้ถูกต้อง ถ้าเป็นไปได้ออกแบบให้เป็น Dynamic และง่ายต่อการแก้ไข

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

คุณยังทำแบบเดิมๆ ทุกวันรึเปล่า?

บ่อยไหมที่ทุกๆวันต้องทำงานในแบบเดิม , กินอะไรเดิมๆ , ยังเสียเวลากับวิธีการทำงานของตัวเองแบบเดิมๆ ถึงเวลาแล้วที่ควรจะไตรตรองแล้ว ว่าเราทำแบบเดิมๆนี้มันเป็นวิธีที่ดีที่สุดรึยัง ? ผมเคยทำอะไรบ้างที่ทำให้เสียเวลาไปมากๆมั่งไหมหรอครับ บอกเลยว่ามากมาย โดยผมส่วนใหญ่ใช้คอมพิวเตอร์ในการทำงานทั่วไปต่่างๆ ไม่ว่าจะเป็น

  • ย่อรูป
  • เขียนโค้ดเดิมๆ
  • อัปโหลดโค้ดขึ้นเซิร์ฟเวอร์
  • อัปโหลดฐานข้อมูลขึ้นเว็บ
  • ฯลฯ

จะมีวิธีทำให้เรื่องเหล่านี้ง่ายขึ้นไหม จากเมื่อก่อนที่ต้องเปิด Photoshop เพื่อย่อรูป ซึ่งเสียเวลาแน่นอนประมาณ 1 นาทียิ่งเครื่องช้าจะรอโหลดก็เพิ่มไปอีก หนทางเลือกนะหรอ Image Resizer ของ Microsoft นั้นเอง ทำให้ประหยัดเวลาได้มาก ถึงแม้ตอบโจทย์ได้ไม่ครบแต่ถ้าย่อรูปเป็นขนาดปกติ เช่น 640×480 แ้ล้วละก็ใช้เวลาเพียง 10 วินาทีก็ย่อรูปได้แล้ว ไม่ว่าจะมากแค่ไหนก็ตาม หรือจะเป็นการเขียนโค้ดแบบเดิมๆ เช่น <html> <p> หรืออื่นๆอีกมากมาย แล้วผมหาวิธีแก้ยังไงนะหรอ ก็ใช้พวก IDE เพื่อที่จะไม่ต้องเสียเวลา เขียนโค้ดเองทั้งหมดทั้ง tag เปิดปิด ที่ไม่มีอยู่ใน Text Editor ส่วนใหญ่ รวมถึงเรื่องอื่นๆ ด้วยหนึ่งในเรื่องนั้นก็คือ การอัปโหลดไฟล์ขึ้นเซิร์ฟเวอร์ ในสมัยก่อนนั้นผม connect เข้า FTP ผ่าน FileZilla เป็นประจำจนช่วงที่ผ่านมาไม่กี่วันผมก็ศึกษาเจ้า Netbeans เพิ่มซึ่งมันสามารถ upload ผ่านตัวมันได้เลย ทำให้ผมไม่ต้องเปิดหลายโปรแกรม แถมสะดวกไม่ต้องสลับไปหลายๆโปรแกรม แถมไม่ต้องลากไฟล์เองอีกตะหาก

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

  • เครื่องซักผ้า – ถ้าคุณซักมืออยู่แล้วมีเงินก็ควรลองนะครับ
  • เครื่องดูดฝุ่น – ยังใช้ไม้กวาดอยู่ใช่ไหม ?
  • ไมโครเวฟ
  • ทีวี
  • คอมพิวเตอร์
  • พัดลม
  • แอร์
  • เครื่องพิมพ์
  • เตารีด
  • ตู้เย็น
  • โทรศัพท์
  • ฯลฯ

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

ดูหนังฟรีกับ Kapook เรื่อง 20th Century Boys ภาค 2

tech news ban

หลังจากที่เคยไปดูภาค 1 มาแล้วกับกระปุกต์ คราวนี้ก็ถึงเวลาไปดูฟรีกับภาค 2 กันแล้วครับ Blogger ทุกท่านที่อยากดูอย่าลืมไปลงทะเีบียนดูกันนะครับ

CodeIgniter ไม่ใช่ Framework ที่ดี !

หลังจากผมเป็นคนแนะนำผ่าน Blog นี้ว่า CodeIgniter นั้นดีหนักหนา และเหมาะสมที่จะเรียนรู้ แต่ไหงวันนี้มากลับคำพูดตัวเองแบบนี้ละ ที่จริงไม่ใช่อะไรหรอกครับผมตั้งหัวข้อชวนคิดว่าจริงๆแล้ว CodeIgniter มันดีจริงหรืิอ ? ถ้าผมหยิบประเด็นมาพูดจริงๆ มีหลายเรื่องที่ CodeIgniter ยังไม่ถือว่าดีหนัก และมีอีกหลายเรื่องที่ CodeIgniter ทำได้ดีมาก เอาละครับวันนี้ผมก็มาเผา CodeIgniter พอประมาณกันหน่อยดีกว่า (ขนาดเปิดเว็บ CodeIgniter.in.th แล้วไหงมาเผาซะงั้น แล้วใครจะใช้เนี้ย)

  • การเขียนโค้ดยังขาด ความรวดเร็วในการเขียนถ้าเทียบกับ CakePHP หรือข้ามรุ่นอย่าง Ruby on Rails
  • ไม่มีการทำ “ข้อตกลงในการเขียน” (Convention over configuration) ทำให้ Developer ทำงานได้ตามใจชอบซึ่งมันมีดีและไม่ดีอยู่เหมือนกัน
  • CodeIgniter ไม่ใช่ Full-stack framework ทำให้ดูขาดๆต้องหาส่วนมาเติมเต็มไม่มากก็น้อย ไม่ว่าจะเป็น ORM , AJAX หรืออื่นเช่น Auth and ACL
  • ไม่มีตัว Generator ที่ช่วยทำหลายๆอย่างให้แกเราอย่าง CakePHP หรือ Ruby on Rails
  • ตัวช่วยหลายๆตัวยังดีไม่พออย่างเช่น Active Record ถึงแม้ว่าจะดีแต่ก็ยังไม่ง่ายที่จะเอาไว้เรียกใช้ (ต้องทำเอง)

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

  • CodeIgniter มีระบบ Hooks ซึ่งยอมให้เราเปลี่ยนแปลง หรือทำบางอย่างซึ่งไม่ต้องยุ่งกะตัวระบบโดยตรง ทำให้พัฒนาต่อยอดได้ โดยยังไม่กระทบระบบ CodeIgniter
  • อิสระที่จะทำอะไรยังไงก็ได้ และง่ายต่อความเข้าใจ เพราะไม่มี “ข้อตกลงในการเขียน” ทำให้โค้ดส่วนใหญ่อยู่ในคู่มือและใช้ PHP ธรรมดา ไม่ต้องเรียนรู้และจำข้อตกลง
  • สามารถต่อเติม Library ต่างๆเข้าไปได้อย่างง่ายดาย และเข้าใจง่าย และไม่มีการบังคับโดยตรง มีเพียงการแยก folder เพื่อบ่งบอกมาให้แล้วแค่นั้น แต่ไม่บังคับ เช่น library กับ helper (จริงๆมันมีหลักในการเขียนอยู่ซึ่ง ใน Ruby on Rails จะใช้ Helper ใน view โหมดและ library ใช้ใน controller แต่ตอนหลัง ก็มีการทำให้สามารถใช้ helper ใน controller ได้ซึ่ง CodeIgniter ทำแบบนี้แต่แรก)
  • ความอิสระที่จะโหลด view ยังไงก็ได้ตามใจชอบ ซึ่งทำให้คนเขียน/คนมาอ่านต่อเข้าใจได้อย่างชัดเจน ซึ่งส่วนนี้ถ้าเกิดมีข้อตกลงมันจะดีคือเขียนน้อย แต่อาจจะงงถ้าศึกษามาไม่ดีพอ
  • เอกสารที่ดี ทำให้มือใหม่ศึำกษาได้รวดเร็ว และไม่จำเป็นต้องรู้สิ่งอื่นๆมากๆตามมา
  • ถึงแ้ม้ไม่มีระบบที่ติดมาอย่างมากมาย แต่เราสามารถติดมันเองได้ ซึ่งเสียเวลาก็จริง แต่ทำให้เรารู้แน่ชัดว่าระบบเราต้องการใช้อะไรบ้าง และให้เรามีสิทธิเลือกตัวที่จะมาใช้งาน

อะพอหอมปากหอมคอที่ทั้งด่้าและชม อย่างเต็มปากเต็มคำ แต่ที่สุดของ CodeIgniter ไม่ใช่การใช้ CodeIgniter ในความคิดผมมันคือการทำ Framework ของตัวเองโดย CodeIgniter !!! ซึ่งสิ่งนี้ผมว่าเจ้าตัวอื่นๆสู้ได้ยากเพราะไม่มีอิสระ ซึ่งเรียกว่า Framework พร้อมใช้นั้นเอง ในกรณีของ CodeIgniter จะเรียกพร้อมก็ได้ แต่จริงๆผมว่ามันยังแค่เกือบพร้อม เพราะยังขาดหลายอย่างซึ่งต้องต่อเติมเอง แต่ด้วยความมันเป็นแบบนี้ นี้และทำให้เราทำ Framework ของตัวเองได้อย่างสนุกสนานทั้งมี Hooks , ต่อเติม Library , ไหนจะยังสามารถรวม library เจ๋งๆอย่าง Zend และอื่นๆมาใช้งานได้อีก แล้วมีผลต่อองค์กรอย่างไรหรอครับ

คุณทราบไหมว่าปกติแล้วองค์กรส่วนใหญ่ชอบทำ Framework เป็นของตัวเอง ? หลายๆที่ทำงานที่ผมเคยได้ไปทำมานั้นมีการใช้ Framework เป็นของตัวเองทั้งนั้นซึ่งมีทั้งพัฒนาเองหรือไปต่อยอดจากตัวอื่นก็มีมาก (ผมทำมา 4 ที่ก่อนล่าสุดตอนนี้จะอยู่กับ Duocore พาร์ตไทม์นะครับ) แล้ว CodeIgniter ก็หยิบยื่นโอกาสง่ายที่จะสร้าง Framework ของตัวเองให้เป็นเรื่องง่าย ไม่แพ้ Zend รวมกับความเร็วที่มีอยู่และ library อันน้อยนิดทำให้ความเร็วก่อนจะโมอยู่ในผลลัพธ์ที่น่าพอใจมาก , ความเร็วในการเขียนโค้ดซึ่งใช้ได้ แต่ยังไม่เร็ว ทุกอย่างดูกลางๆไปหมดแล้วแต่คุณจะเลือกทางเดินของ Framework คุณว่าจะเดินไปทางไหน แล้วคุณจะลดอะไร?

ถ้าให้เปรียบเทียบง่ายๆถ้าใครเคยเล่นเกม Ragnarok ตอนเริ่มสร้างตัวละคร คุณต้องเลือกสักทางว่าจะ up STR แล้วต้องเสีย INT ทำนองเดียวกัน ถ้าจะสร้าง Framework ที่เน้นการเขียนโค้ดน้อยๆได้ผลลัพธ์เยอะๆ บางครั้งประสิทธิภาพมันก็อาจจะช้าก็เป็นได้ แต่สุดท้ายคุณมี “อิสระที่จะคิด จะทำได้” นี้และคือความสุดยอดของ CodeIgniter อิสระที่เพียงพอ และกรอบที่ให้พึงพาได้ วันนี้มาขายของพอแล้วอย่าลืมติดตามเรื่องราว CodeIgniter ได้จากชุมชนแห่งนี้ครับ

Codeigniter.in.th

Next Page »