การมาของ iOS 7 หลายๆ แอพอาจงานเข้า!

นั่งอ่าน iOS 7 UI Transition Guide, Designing for iOS 7 และ UIKit User Interface Catalog ของ iOS 7 แล้วต้องบอกสั้นๆ ว่า “ทำเอพใหม่อาจง่ายกว่ามั้ง” จริงๆ ผมถืองานพัฒนาตัว iOS App ไว้อยู่ตัวนึง และที่กำลังคิดว่าจะออกอีกหลายตัว (ผมมี account ตัว iOS Developer และเป็นคนสั่งเค้าทำอีกทีมากกว่า) แต่ดูท่าคงต้องได้รื้อทำหน้าตาใหม่ให้สอดคล้องกับแบบนี้ด้วย แต่ดีว่าไม่มากนัก เพราะใช้ Native UI เป็นหลัก ><~

สำหรับหน้าตาคงไม่เอามาโพสซ้ำ หาได้ทั่วไปตามเว็บข่าวต่างๆ ค้น Google หน้าจะเจอ

โดยผมขอขยายความของปัญหาจริงๆ นั้นแบ่งเป็น 3 ส่วนหลักๆ

  1. การเปลี่ยนตัวควบคุม (Control UI) เป็นปัญหาในการออกแบบหน้าตาให้สอดคล้องกับ iOS 7 ในแอพตัวเก่าๆ โดยปัญหามักจะเป็นพวกแอพที่สร้างตัวควบคุมและหน้าตาของ UI ที่ไม่ได้ใช้ชุด UI แบบ Native หรือใช้ปนๆ กัน จะมีปัญหาด้านความต่อเนื่องสูงมาก
  2. แนวทางออกแบบในการใช้ตัวอักษร (font) ปัญหาเรื่องของ system font ที่มีการเปลี่ยนแปลง โดยปัญหาหลักคือ spacing ระหว่างตัวอักษรของ system font ใน iOS 7 ที่อาจจะมีปัญหากับแอพเก่าๆ ทุกตัวที่ใช้การแสดงผลชุด label ที่ใส่ข้อมูลพอดีกับขอบของแอพ ซึ่งอาจทำให้แอพต่างๆ ต้องทำ auto switch theme (layout) เพื่อทำให้การแสดงผลสอดคล้องกับ iOS 7 และตัวก่อน iOS 7 ไม่งั้นงานเข้ากันทั่วหน้าแน่ เพราะคำและกลุ่มคำจะตกขอบตัว label ซึ่งแน่นอนว่าคนจะด่าแอพเหล่านั้นกันทั่วหน้าแน่ๆ (ไม่ด่า Apple หรอก ลอยตัวเหนือปัญหาแน่ๆ)
  3. ในส่วนของ transition และ motion design อาจต้องเลี่ยงการใช้ gesture ชุดเดียวกับ system gesture บางส่วน เช่น ปัดนิ้วจากล่างขึ้นบนเพื่อเรียก Control Center หรือปัดในทิศทางอื่นๆ ที่เป็น system gesture ตัวใหม่ๆ ในอนาคต การพลิบและการเลื่อนเปลี่ยน App Page ไปมา อาจต้องไล่กำหนดใหม่เพื่อให้สอดคล้องกับ Control UI และรูปแบบ gesture ด้วย

โดยทั้งหมดทั้งหมดใน 3 ส่วนนี้ต้องมานั่งแก้ไขกันอีกเยอะแน่ๆ ครับ (ยังมีอะไรด้านหลังอีกหลายส่วนที่คาดว่าอาจมีการปรับใหม่อีกหลายรอบ) ซึ่งตอนนี้สำหรับนักพัฒนาใน iOS 7 และคนที่ดูแลโครงการพัฒนา App บน iOS คงต้องไล่อ่านคำแนะนำ UX/UI บน iOS ในหน้า developer site ของ Apple แล้วเอามาวางแผนแก้ไขให้แสดงผลได้อย่างถูกต้องใหม่ ซึ่งหากไม่ทำแบบนั้น จะทำให้ UX/UI ของแอพใน iOS 7 มีปัญหาหนักเมื่อเอาแอพจากตัวเก่าๆ ที่ไม่ได้ปรับแต่งการแสดงบน iOS 7 มาใช้งานครับ

เริ่มต้นเขียนโปรแกรมง่ายๆ กับ QBASIC สำหรับคนไม่เป็นมาก่อน

เป็น slide สอนน้องๆ ปี 1 ตอนเป็น TA ช่วยอาจารย์สอนอยู่ที่มหาลัย (เมื่อเกือบๆ 7 ปีก่อน) ใครเรียนเกี่ยวกับคอมพิวเตอร์ปี 2-4 แล้วอ่านไม่เข้าใจพิจารณาตัวเองได้แล้วนะครับ เพราะ slide นี้สอนเด็กคณะแพทย์, สหเวช, เภสัช, เกษตร ฯลฯ อีกเยอะที่ไม่เกี่ยวกับคอมแล้วเค้าทำ Lab ภาคปฏิบัติและทำข้อสอบได้มาแล้ว (อย่าอ้างว่าเขียนไม่ได้ อาจารย์ไม่สอนนะเด็กภาคคอมฯ)

แก้ไข “call_user_func_array() expects parameter 1 to be a valid callback, non-static method XXX:init() should not be called statically” ใน plugin “Jetpack for WordPress”

จากปัญหา

The following errors were reported: call_user_func_array() expects parameter 1 to be a valid callback, non-static method xxx::init() should not be called statically

ใน plugin “Jetpack for WordPress” ซึ่งเกิดจากการเขียนโค้ดไม่ตรงกับ Strict standards ใน PHP ที่อยู่ๆ ก็มีการเขียนไป call ตัว static method ใน method ที่ไม่ใช่ static ทำให้เกิดข้อผิดพลาดดังกล่าว

ปัญหานี้จะเกิดกับ Class ของ module ใน plugins “Jetpack for WordPress” ทั้งหมด 4 ตัว (ณ ตอนนี้ที่ไล่หาดู) โดยมี Class ดังต่อไปนี้

  • Jetpack_Notifications
  • Jetpack_Post_By_Email
  • Jetpack_Subscriptions
  • Jetpack_Likes

การแก้ไขก็ง่ายๆ ไม่มีอะไรซับซ้อน (ถ้าเข้าใจ)

โดยเพิ่ม “public static” ไปหน้า function &init() ให้เป็น public static function &init() ในไฟล์ subscriptions.php, post-by-email.php, notes.php และ likes.php ซึ่งอยู่ใน wp-content/plugins/jetpack/modules

เพียงแค่นี้ก็จบปัญหาครับ

เมื่อซื้อบัตรดู Manchester United จาก ThaiTicktetMajor แต่ระบบไม่รีเซตจำนวนโควต้าบัตรให้เมื่อมีข้อผิดพลาด

ระบบ ThaiTicktetMajor มีข้อผิดพลาดหรือไม่ได้คิดถึงอยู่อย่างในเรื่องของการกำหนดโควต้ากลับมาที่ค่า 0 ในตอนซื้อบัตรแล้วยกเลิกหรือมีข้อผิดพลาด

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

ไอ้เราตอนซื้อบัตรดู Manchester United vs Singha All Star Singha ก็งงว่าทำไมทำรายการไม่ได้ฟร่ะ เล่นซะสมัคร 3 Account กว่าจะทำรายการได้

คือตอนแรกเลือก 2,500 แล้วมันมีเหลือ 2-3 ที่มั้ง แล้วเลือกไปแล้ว ยกเลิกมาเพราะไม่พอ จะเอา 5 ใบ แต่ระบบมันไม่รีเซตค่ากลับมาค่า 0 ให้ ทำให้ซื้อ 1,500 ที่จะซื้อ 5 ใบไม่ได้ พอสมัครใหม่จะซื้อ 1,500 ที่จะเอา 5 ใบ ระบบ Payment ดันขึ้น Failed เลยกลับมาซื้อใหม่ ก็ไม่รีเซตค่ากลับมา 0 ให้เลยต้องสมัครใหม่อีกรอบ รอบนี้ซื้อผ่านเลย

นั่งงมอยู่เป้นชั่วโมง ><“

มีอะไรใหม่บ้างใน Drupal 8

จากบทความDrupal 8 is Coming เขียนโดย Alex Rayu

ผมขอสรุปสั้นๆ ว่า Drupal 8 ปรับเปลี่ยนอะไรบ้าง

  • Core CMS จะใช้การพัฒนาบน Symfony framework
  • Theme engine ใช้ Twig PHP template engine
  • รองรับ Mobile ตั้งแต่การติดตั้งเลย (HTML 5 and CSS 3) โดยไม่ต้องลง mobile mobule
  • รองรับไฟล์ media ต่างๆ โดยไม่ต้องลง media mobule
  • มีระบบ Internationalization ที่ดีกว่าเดิม ทำให้สนับสนุน multilingual ได้ดีขึ้น
  • ย้ายการตั้งค่าต่างๆ ไปใช้ CMI

ส่วนอื่นๆ คงตามได้จาก Drupal 8 Updates and How to Help ต่อไปครับ