เมื่อ Google ค้นหาจาก Flash ได้แล้ว !!

ข่าวนี้ก็คงนานหลายวันแล้วแต่ผมก็ไม่ได้เอามาพูดสักที พอจะเขียนๆก็ลืมแล้วหนีไปเล่นเกมส์ 55+ ติด Counter Strike ! อะเข้าเรื่องกันดีกว่าโดยเรื่องของเรื่องคือ Adobe เขาส่ง Tools ให้ Google ที่เอาไว้ค้นหาเนื้อหาภายใน Flash ! แล้ว Google ก็นำไปพัฒนาเรื่องคำต่างๆต่ออีกทีคราวนี้ผมจะสรุปให้ว่ามันทำงานยังไงนะครับ โดยผมแปลและสรุปมาให้จาก Offical Google Webmaster Central Blog นะครับ

  • จะค้นหาข้อมูลจาก SWF ได้ดีขึ้น ! รวมถึงคำในปุ่มต่างๆของ Flash
  • Google ค้นหา Link จากเนื้อหา Flash ได้
  • Google ยังไม่ทำ index file FLV และข้อมูลภายในรูป (image)
  • Algorithm ในการค้นหาส่วนหนึ่งถูกพัฒนามาจาก Searchable SWF library ของทาง Adobe
  • ถ้าไม่อยากให้ Google เห็นข้อมูล Text ก็พยายามแทนที่ text นั้นด้วยรูปแทน
  • Google ไม่สามารถ execute งาน JavaScript บางอย่างได้ ดังนั้นถ้า Flash คุณมีการเชื่อมต่อกับ JS อาจจะทำให้งานคุณไม่ถูก index
  • ถ้าคุณมีการ load xml , html google จะแยกออกมาตะหากแล้วไม่ถือเป็นส่วนหนึ่งใน flash file
  • ตอนนี้ Google ยังไม่สามารถ index ภาษาที่เป็น bidirectional อย่าง Hebrew และ Arabic ได้

ตอนนี้แผนของทาง Adobe ก็ไปได้สวยมากแล้วเริ่มยึดครองตลาดอย่างช้าๆในด้าน Developer แต่ถ้าทำภาษา ActionScript ให้มันเขียนและเข้าใจง่ายแบบ Java , Ruby , Python , PHP สักภาษาผมว่ามันคงโตแบบก้าวกระโดดเลยทีเดียว (ถึงแม้มันจะทำการใช้ภาษาต่างๆเหล่านี้ได้ก็ตามที แต่มันก็คงยุ่งยากขึ้น Perfomance ก็ drop ลง) อนาคตผมว่า Developer จะทำงานได้สวยขึ้น โดยไม่ต้องง้อ Web Designer กันเย้ย ~o~ แต่งานมันก็ไม่ Unique อยู่ดี..

Google Docs แบบ Offline มาแล้ว

tech news GoogleBumps

วันนี้ก็อ่าน CNET จาก Twitter ตามปกติ เห็นเรื่อง Google Docs ที่ คุณกล้าแห่ง Duocore.TV ในตอนที่ 71 ที่บอกว่ายังใช้ไม่ได้ในตอนที่ ตอนนี้ใช้ได้แล้วนะครับ ซึ่งเท่าที่ผมลองก็ยังไม่สมบูรณ์สักเท่าไร ตอนนี้ก็ได้เพียงแก้ Document ที่เรามีอยู่ (สร้างใหม่ไม่ได้) แล้วทำการ Save ซะแล้วเดียวพอต่อ Internet มันจะ Resync ไปที่ Google ให้เองอัตโนมัติ แถมตอนลงมีทำ Shortcut บน Desktop ให้ด้วยนะ

ใครอยากลองใช้ Google Docs แบบ Offline ต้องลง Google Gears ด้วยนะครับ แต่มีเรื่องที่น่าเสียดายครับ The World Browser ยังไม่รองรับการทำงานแบบ Offline ครับใช้ได้เฉพาะ Internet Explorer กับ Firefox (ตัวอื่นผมยังไม่ได้ลอง) ยังไงก็เชียร์เจ้าตัวนี้เต็มที่หวังว่าอนาคต Web App จะพัฒนาจนแทน Desktop App ได้อย่างสมบูรณ์เข้าสักวัน..

Codeigniter , jQuery , Ext-Js และ Adobe AIR

หัวข้อวันนี้ตั้งชื่อหัวข้อได้ไม่ตรงนักแต่ผมอยากจะมาพูดถึงเจ้า 4 ตัวนี้ให้ทุกท่านฟังสำหรับคนที่กำลังจะพัฒนา App ขนาดเล็กหรือกลาง แล้วทำไมเจ้า 4 ตัวนี้มันถึงดังมากๆโดยเฉพาะ jQuery ซึ่งตอนนี้เป็นที่กล่าวถึงของ Javascript Framework กันมากเลยทีเดียว ผมจะมาพูดถึงทีละตัวนะครับ พร้อมความสัมพันธุ์

  • Codeigniter จะว่าผมโม้ก็ไม่ว่านะครับ เป็นตัวที่ผมว่าอนาคตยังอีกไกล แล้วก็ไกลกว่า KohanaPHP อีกด้วยความที่เรียบง่าย Document อ่านง่าย ต่อเติมได้ง่ายทำให้เจ้า Codeigniter นี้สามารถแปลงไปได้ในทุกระบบ ถึงแม้จะมี Function งานไม่ครบเหมือนพวก Symphony หรือ KonahaPHP แต่เจ้าตัวนี้ก็มาทดแทนด้วยความเร็ว , เข้าใจง่าย และ ต่อเติมง่าย แทนโดยเจ้า Codeigniter มีการวางโครงสร้างมาจาก Ruby on Rails (แต่เขียนด้วย PHP ซึ่งมันสุดยอดมาก)
  • jQuery ตัวนี้ใครติดตามผมมานานจะรู้ว่าผมเชียร์ตัวนี้ แทบใจขาดดิ้นๆๆ เลยทีเดียวด้วยความสามารถที่จิ๋วแต่แจ๋ว จัดการ Data ได้อย่างยอดเยี่ยมแถมเปลี่ยนการ Coding ภาษา Javascript ให้ง่ายมากๆ แล้วตอนนี้มันดังจนไปเทียบเท่ากับพวก Prototype , Dojo , YUI ได้แล้ว แล้วมีทีท่าว่าจะดังต่อไป ด้วยหลักการเดิม เร็ว , เข้าใจง่าย และต่อเติมง่าย
  • Ext-Js เป็นน้องใหม่ไฟแรงแถมตอนนี้ได้เปลี่ยน License เป็น GPL หรือนำไปใช้ได้ฟรีแต่ต้องเปิดเผย Source Code กระแสเลยยิ่งแรงขึ้นไปอีก (แต่ถ้าจะทำทางการค้าต้องซื้อนะครับ) โดยเจ้า Ext-JS วิธีการใช้จะคล้ายๆกับเป็น Component (แต่ก็ยังไม่สมบูรณ์) โดยเราสามารถได้ Component มาต่อเติม website ด้วยการ new Object เสร็จแล้วใส่ค่าอีกนิดหน่อยเราก็จะได้ Component ซึ่งมี User Interface ที่สวยงามพร้อมมาทันที แต่จนแล้วจนรอด มันก็เหมาะสำหรับคนที่ใช้ Javascript พื้นฐานมาคล่องพอตัวแล้วเหมือนกัน
  • Adobe AIR เมื่อเจ้า Runtime ตัวนี้ออกมาพร้อม SDK ทำให้การสร้าง Desktop App เปลี่ยนไปทันที คนทำแต่ Web App ตอนนี้จะมีโอกาสได้โชว์ฝีมือในการทำ Desktop App กันแล้วด้วยภาษา HTML , Javascript , CSS 3 ภาษานี้

แล้วมันเกี่ยวกันยังไงหรอ ? ตอนนี้ผมใช้เจ้า Codeigniter กับ jQuery อยู่ซึ่งขอบอกว่า Work มากในระดับของฟรี เสร็จแล้วมีโครงการที่จะศึกษาการทำงานของเจ้า Adobe AIR ด้วยเหมือนกัน เลยศึกษามาพอสมควรโดยมันสามารถถูกเขียนได้ด้วย 3 แบบคือ AJAX , Flash , Flex แต่ผมขอเลือกทาง AJAX แทนที่จะเป็น Flash หรือ Flex เพราะผมมีพื้นด้านนี้มาเยอะแล้ว ไม่อยากเริ่มต้นใหม่ (ถึงแม้จะลงเรียน Adobe Flash ไปแล้วก็ตาม) แล้วคราวนี้ไอ้เจ้า Ext-Js นี้และที่จะมาทำให้การพัฒนา ออกมาสวยงามและมีประสิทธิภาพ โดยเสียเวลาเขียน code น้อยลง ;) แต่แล้วไอ้เรื่องการจัดการ Data ด้วย Javascript ปกติรวมถึงการท่อง DOM มักก็เป็นปัญหาพอควร

ดังนั้นช่วงเวลานี้กระแส jQuery + ExtJs กำลังมาแรงในการทำ Adobe AIR แต่ยังไม่มี App ที่มาจากเจ้า 2 ตัวนี้ + กันแบบดีๆเลย (เพราะกระแสมันพึ่งเริ่ม) แล้วดูจาก Document รวมถึงผมได้ลองเขียนเจ้า Ext-Js แล้วมัน ไม่ได้เขียนเข้าใจยากมากเมื่อมารวมกับ jQuery โดยผมใช้ jQuery ในการจัดการ Data , AJAX , Event Handler , Effect และท่อง DOM ส่วนที่เหลือก็ใช้ Ext-JS ในการสร้าง Component สวยๆมาใช้แบบง่ายๆ จะเห็นว่า jQuery จะเป็นฐานในการจัดการข้อมูลพื้นฐานส่วน Ext-JS มาเสริมและสุดท้าย

web development ci logo flame

Codeigniter เอะแล้วมาเกี่ยวอะไรกับการใช้ Adobe AIR ละ Web Service ไงครับเจ้า Codeigniter ไม่น่าเชื่อว่าจะทำ Web Service ได้ง่ายโคตรๆ (ขอไม่บอกรายละเอียดในตอนนี้) ด้วยการที่เราสามารถเข้าถึง Method ของ Controller ได้ผ่าน URL รวมกับ function พื้นๆของ PHP อย่าง Array แล้วก็ Json_encode ทำให้มันกลายเป็น Web Service แบบ RESTful โดยง่ายเลยทีเดียว แล้วเราก็ใช้ jQuery เรียก Web Service ของ Codeigniter แล้วรับมันมาแบบ JSON แล้วนำมาใช้ประโยชน์ต่อได้ !

ขอสรุปของการทำงานแบบง่ายๆในอีกมุมหนึ่งที่ผมมา Trend นี้มาแรงในกลุ่มรายย่อยแบบเราๆทำกัน

  • (X)HTML + CSS ทำงานในส่วนของโครงสร้าง User Interface
  • Javascript ทำงานในการดึง Data จาก Web Service และนำมาใส่ใน User Interface รวมถึงทำ Effect ต่างๆด้วย
  • PHP-OOP ใช้ในการนำ Data จาก Database มาประมวลผลต่างๆแล้วนำไปให้ Javascript เรียกใช้ Web Service
  • Database ใช้สำหรับการจัดเก็บ Data แบบง่ายๆเพื่อให้ PHP นำไปประมวลผลต่อ

จุดเด่นของการใช้ Driven แบบนี้

  • ปรับปรุง , บำรุงรักษาและจัดการง่าย เพราะมีการแยกส่วนอย่างชัดเจน
  • ไม่จำเป็นต้องรู้ภาษา SQL ให้ลึกซึ้งเราใช้ PHP-OOP ในการจัดการ Data แทน
  • มี Framework รองรับแล้วเป็น Open-Source ทุกอย่างทั้ง Codeigniter , jQuery , ExtJS รวมถึง Database ที่เป็น Open-Source อย่าง MySQL , PostgreSQL
  • ถอดเข้าถอดออกได้อย่างง่ายดาย
  • เขียน , ออกแบบ และเข้าใจได้ง่าย

จุดด้อยของการใช้ Driven แบบนี้

  • Performance ขึ้นอยู่กับเครื่องของ User มากกว่าของ Server ยกเว้นใช้ Jaxer Server (AJAX at Server)
  • ยังไม่เหมาะสำหรับงานระดับ Enterprise
  • ใช้หลายภาษาทำให้ Curve ในการเรียนรู้สูง (แล้ว J2EE ละ??)
  • ใช้การเชื่อมต่อจากหลายจุด ไม่เป็นหนึ่งเดียวอาจเกิดปัญหาเรื่องการเชื่อมต่อได้

วันนี้ผมก็ลาไปแค่นี้ก่อนละครับเขียนเหนื่อยเลยมีอะไรแนะนำ หรือมาเสนอความคิดเห็นก็ลง Comment กันไว้ได้เลยครับ ;)

แก้ปัญหา Web Service กับภาษาไทยกับ URL Encode/Decode

Developer หลายคนน่าจะเคยประสบปัญหาเรียก Web Service ส่งภาษาไทยไปแล้ว ทำไมค่าเพี้ยนบ้าง หรือจะรับค่ามา ทำไมเป็นตัว %C2%A3%E2%82%AC
แนวนี้ตลอดเลย จะแก้ปัญหายังไงดี ?? วันนี้ผมก็เอาใจคนใช้ PHP กับ Javascript กันครับ (เพราะผมศึกษา 2 ตัวนี้เป็นหลักนะครับ) ถ้าสำหรับ PHP แล้วการแก้ปัญหาก็คือ

  • ก่อนส่ง Parameter ไปให้ทำการใช้ function rawurlencode(string $str) ก่อนแล้วการส่งภาษาไทยไปก็จะถูกต้อง
  • สำหรับการรับ Parameter จะขึ้นอยู่กับคนทำ Web Service เช่นถ้าเป็น Google เราได้ผลลัพธ์เป็นแนวนี้ %C2%A3%E2%82%AC (แต่จริงๆคือมันเป็นภาษาไทย) เราก็ต้องมาทำการ rawurldecode(string $str) มาเป็นตัวแก้เหมือนกัน
  • ข้อแนะนำพิเศษสำหรับ OOP ที่มีการส่งค่าไปๆมาๆบ่อยอาจเกิดการ rawurldecode เปลี่ยนแปลงได้ดังนั้นต้องระวังดีๆนะครับ

ส่วนใครใช้ Javascript แล้วละก็เราต้องไปหา function ที่ชื่อว่า encodeURI กับ decodeURI ไม่ใช่ L นะครับเป็นตัว i (ยูอาไอ) เสร็จวิธีการใช้ก็ใส่ String เข้าไปเหมือนเดิมครับ โอ้วโหวง่ายไหมครับ ;) เส้นผมบังภูเขา แถมอีกนิดสำหรับสมัยนี้แล้ว Data ส่วนใหญ่ใน Web Service มักจะเป็น XML กับ JSON (ส่วนตัวผมชอบ JSON นะ) โดยถ้า JSON สำหรับ PHP แล้วนั้นผมมี function มาให้รู้จักกันอีกนั้นคือ json นั้นคือ json_decode() กับ json_encode()

แต่ผมเตือนนิดหน่อยคือ json_decode() นั้นไม่สามารถใช้กับ element ที่มาความลึกถึง 127 ชั้นได้ (ไม่ใช่มีชั้นเดียวแล้ว 127 data อันนั้นได้อยู่) วันนี้มาแนว Coding นิดหน่อยแต่หวังว่าคงมีประโยชน์สำหรับคนที่กำลังหัดหรือใช้ Web Service กันนะครับ