มีอะไรใหม่บ้างใน 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 ต่อไปครับ

PHP 5.3 เจ้าตายแล้ว และได้เวลา PHP 5.4 เสียที

จาก WordPress Stats จะเป็นว่า PHP 5.2 ยังมีคนใช้อยู่อีกเยอะมาก ซึ่งถูกนำมาใช้งานร่วมกับ WordPress และขณะเดียวกับ w3techs.com ก็รายงานว่า PHP 5.3 เพิ่งจะตีขนาบจนแซง PHP 5.2 ได้ในช่วงต้นปีที่ผ่านมานี้ (PHP version 5.3 is now the most used version, just ahead of 5.2)

แต่สิ่งที่อยากบอกต่อมาก็คือ PHP 5.3 นั้นได้ปล่อยตัว released ในเดือนมิถุนายน 2009 และกว่าจะได้รับความนิยมก็เกือบจะสิ้นสุดการสนับสนุนของ PHP 5.2 พอดีในเดือนธันวาคม 2010 (end-of-life cycle) ซึ่งถือว่าทำได้ค่อนข้างโอเค แต่ในตอนนี้ PHP 5.3 ได้สิ้นสุดการสนับสนุนในเดือนมีนาคม 2013 ที่ผ่านมาไปแล้ว และหลังจากสิ้นสุดการสนับสนุนของ PHP 5.3 นั้น ตัว PHP 5.4 ในตอนนี้มีสถิติคนนำไปใช้ใน production จากการเก็บสถิติของ w3techs.com นั้นมีอยู่ประมาณ 3-4% เท่านั้น และนั้นอาจทำให้เว็บไซต์มากมายอยู่บนความเสี่ยงเรื่องความปลอดภัยจากการไม่ได้รับการสนับสนุนเรื่อง security patch ของตัวภาษา PHP จาก PHP.net อีกต่อไป

2013-04-08_032329

http://w3techs.com/technologies/details/pl-php/5/all – ข้อมูล 8/4/2013

ทางแก้ไขที่ดีที่สุดคือนำโค้ดต่างๆ ที่พัฒนามาปรับแก้ไขให้ตรงตาม Migrating from PHP 5.3.x to PHP 5.4.x ของ PHP 5.4 และ upgrade production ไปใช้ PHP 5.4 ต่อไป

Drupal in the Cloud with Windows Azure, SlideShare

ข้อมูลบางหน้าของ Slide ที่จัดทำนั้นบางส่วนนำมาจาก Slide ของ Micrsooft เองด้วย เพื่อความรวดเร็วในการจัดทำและเข้าใจตรงกัน พูดใช้เวลาประมาณ 1 ชั่วโมงกว่าๆ และ demo อีก 4 ส่วน

Zend Framework 2.0 ออกตัว Stable แล้ว!

หลังจากที่ Zend Framework ออก version 1.0 ออกมาเมื่อปี 2007 ผ่านมา 5 ปี วันนี้ก็ได้เวลาของ version 2.0 เสียที จาก Zend Framework 2.0.0 STABLE Released! และ Changelog: 2.0.0 ผมสรุปสั้นๆ ตามนี้

ใน Zend Framework 2 มีทีมพัฒนาจาก Google, Microsoft, StrikeIron และ partner ต่างๆ มากมายเข้าร่วมพัฒนาเพื่อสร้าง API ติดต่อกับ Web Services ของตัวเองให้ดีมากขึ้น

การเปลี่ยนแปลงใน Zend Framework 2 นั้นมีดังต่อไปนี้

  • สนับสนุน PHP 5.3 ขึ้นไป เพราะใช้ namely namespaces, late static binding, lambda functions และ closures มาพัฒนา เพราะฉะนั้นได้เวลาเรียนรู้กันแล้วครับ (จริงๆ มันควรจะเริ่มกันนานแล้วนะ)
  • 100% Object-oriented code และ Component designed (dependencies on other component) ตอนนี้แยกเดี่ยวๆ ได้ดีมากขึ้น
  • รองรับ Pyrus, Composer, PHPUnit และ Travis CI เพื่อช่วยพัฒนาตัวเว็บ

มี Key Feature ส่วนของ Component ใหม่คือ

  • ModuleManager
    This new module system is designed with flexibility, simplicity, and re-usability in mind
  • ServiceManager
    The Service Locator is a service/object locator, tasked with retrieving other objects.
  • EventManager
    Component designed for the following use cases
    – Implementing simple subject/observer patterns.
    – Implementing Aspect-Oriented designs.
    – Implementing event-driven architectures.

ได้เวลาลองของใหม่แล้วครับพี่น้อง!!!!

Read more

เล่นง่ายๆ กับเช็คว่า ip, e-email หรือ username ที่สมัครสมาชิกเข้ามาเป็น spammer หรือไม่?

ช่วงนี้เจอเรื่องปวดหัวเกี่ยวกับ spam ใน forum เยอะมาก ตอนนี้เลยใช้วิธีง่ายๆ ไปก่อนผ่าน http://www.stopforumspam.com ก็กันได้ในระดับนึง แต่ว่ามี API Limit อาจจะต้องหาวิธีอื่นๆ แก้ไขเฉพาะหน้ากันต่อไป คิดว่าน่าจะพอไหวอยู่

  1. function is_forumspam_objectsIntoArray($arrObjData, $arrSkipIndices = array()) {
  2.   $arrData = array();
  3.  
  4.   // if input is object, convert into array
  5.   if (is_object($arrObjData)) {
  6.     $arrObjData = get_object_vars($arrObjData);
  7.   }
  8.  
  9.   if (is_array($arrObjData)) {
  10.     foreach ($arrObjData as $index => $value) {
  11.       if (is_object($value) || is_array($value)) {
  12.         $value = is_forumspam_objectsIntoArray($value, $arrSkipIndices);
  13.       }
  14.       if (in_array($index, $arrSkipIndices)) {
  15.         continue;
  16.       }
  17.       $arrData[$index] = $value;
  18.     }
  19.   }
  20.   return $arrData;
  21. }
  22.  
  23. /**
  24. http://www.stopforumspam.com/api?ip=91.186.18.61
  25. http://www.stopforumspam.com/api?email=g2fsehis5e@mail.ru
  26. http://www.stopforumspam.com/api?username=MariFoogwoogy
  27. **/
  28. function is_forumspam($var) {
  29.  
  30.   $var['email'] = urlencode($var['email']);
  31.  
  32.   $q = 'username='.$var['username'].'&email='.$var['email'].'&ip='.$var['ip'];
  33.  
  34.   $xmlUrl = "http://www.stopforumspam.com/api?".$q."&f=xmldom";
  35.  
  36.   $xmlStr = file_get_contents($xmlUrl);
  37.  
  38.   $xmlObj = simplexml_load_string($xmlStr);
  39.  
  40.   $arrXml = is_forumspam_objectsIntoArray($xmlObj);
  41.  
  42.   if($arrXml['ip']['appears'] == 1)
  43.     return true;
  44.   if($arrXml['email']['appears'] == 1)
  45.     return true;
  46.   if($arrXml['username']['appears'] == 1)
  47.     return true;
  48.  
  49.   return false;
  50. }

อ้างอิงจาก http://www.stopforumspam.com