ปรับความกว้าง คอลัมน์ซ้ายของ Gmail

พอดีอยากได้ left column ของ Gmail ให้กว้างๆ หน่อย เพราะว่ามี Label ที่ชื่อยาว แล้วมันมองไม่เห็นเลขจำนวน Unread. ก็เลยไปเสิร์ซหาดู พบ UserScripts ในอันดับแรกๆ เลย.  Feature ใช้ได้เลย มันจำความกว้างที่เราตั้งไว้ ไว้ใน cookie ด้วย ถ้าเรามีการเปิดหน้า Gmail ใหม่ มันก็จะปรับความกว้างไว้ให้เลย.

Continue reading “ปรับความกว้าง คอลัมน์ซ้ายของ Gmail”

Modifying timthumb.php in wordpress’s theme for optimize performance

ปรกติแล้วใน timthumb.php จะมีความสามารถในการ cache รูปที่ถูกย่ออยู่แล้ว เพื่อไม่ให้มันต้อง crop รูปสำหรับทุกๆ request. แต่ว่าปัญหา คือ ไฟล์ cache ของ timthumb นั้น มันไม่ใช่ไฟล์รูปที่สามารถเปิดดูได้โดยตรง เพราะว่าที่ส่วนหัวของ cache จะมี filePrependSecurityBlock แทรกอยู่เพื่อป้องกันการส่งสคริปท์ php เข้าไปรัน. จากลักษณะการทำงานที่เป็นชี้นี้ ทำให้เราไม่สามารถใช้พวก Reverse proxy หรือ CDN มาช่วยในการลดโหลดได้ของ WordPress ที่มีจำนวน Traffic สูงๆ ได้ (ไม่งั้นมันเรียก php ขึ้นมาทำงานตลอด). Continue reading “Modifying timthumb.php in wordpress’s theme for optimize performance”

ติดตั้ง Apache 2.4, PHP 5.4, MySQL บน Windows 7

  1. สร้างโฟลเดอร์ C:\Wamp\ และ C:\Wamp\www
  2. ดาวน์โหลด Apache 2.4 (หรือดาวน์โหลดจากที่นี่ http://www.apachelounge.com/download/) ไปวางเป็น C:\Wamp\Apache2.4\
  3. ดาวน์โหลด VC9 x86 Thread Safe หรือจากที่นี่
    http://windows.php.net/download/
    Extract File ที่ตำแหน่ง C:\Wamp\php-5.4\
  4. แก้ไขไฟล์ C:\Wamp\Apache2.4\conf\httpd.conf
    1. แก้ตัวแปรต่างๆ ดังนี้
      ServerRoot “C:/Wamp/Apache2.4”
      Replace All: c:/Apache24/htdocs With: C:/Wamp/Apache2.4/www
      AllowOverride None เปลี่ยนเป็น AllowOverride All
    2. เติมโค๊ดนี้เข้าไปที่ด้านล่างสุด
      LoadModule php5_module "C:/Wamp/php-5.4/php5apache2_4.dll"
      AddHandler application/x-httpd-php .php
      PHPIniDir "C:/Wamp/php-5.4"
      DirectoryIndex index.html index.php
    3. Enable module ต่อไปนี้
      1. mod_expires.so
      2. mod_headers.so
      3. mod_rewrite.so
      4. mod_socache_shmcb.so
      5. mod_ssl.so
    4. Uncomment บรรทัดนี้ “Include conf/extra/httpd-ssl.conf”
  5. แก้ไฟล์ C:\Wamp\Apache2.4\conf\extra\httpd-ssl.conf
    1. SSLCertificateFile “C:\Wamp\Apache2.4\conf\ssl\server.crt”
    2. SSLCertificateKeyFile “C:\Wamp\Apache2.4\conf\ssl\server.key”
    3. SSLSessionCache        “shmcb:C:/Wamp/Apache2.4/logs/ssl_scache(512000)”
    4. DocumentRoot “C:/Wamp/www”
    5. ErrorLog “C:/Wamp/Apache2.4/logs/error.log”
    6. TransferLog “C:/Wamp/Apache2.4/logs/access.log”
    7. CustomLog “C:/Wamp/Apache2.4/logs/ssl_request.log”
  6. rename “C:\Wamp\php-5.4\php.ini-development” to  “C:\Wamp\php-5.4\php.ini”
  7. แก้ไฟล์ php.ini
    1. extension_dir = “C:/Wamp/php-5.4/ext”
    2. date.timezone = “Asia/Bangkok”
    3. enable extensions
      1. extension=php_mysql.dll
      2. extension=php_mysqli.dll
  8. cmd.exe (Run as Administrator) แล้วรันคำสั่ง
    cd \Wamp\Apache2.4\conf\
    ..\bin\openssl.exe req -config openssl.cnf -x509 -nodes -subj "/C=TH/ST=Bangkok/L=Bangkok/O=localhost/OU=SEC/CN=localhost" -days 1825 -newkey rsa:2048 -keyout ssl\server.key -out ssl\server.crt
    C:\Wamp\Apache2.4\bin\httpd.exe -k install
  9. ใน Environment Variables ตรง System Variables ให้เติม C:\Wamp\Apache2.4; C:\Wamp\Apache2.4\bin ต่อเข้าไปใน PATH
  10. ดาวน์โหลด mysql (.msi) จากที่นี่ http://dev.mysql.com/downloads มาติดตั้ง

Time’s Up!

เซ็งมากๆ ตอนนี้งานค้างใน Trello เต็มไปหมดเลย. ยังเคลียของเก่าได้ไม่เท่าไหร่ พอของใหม่เพิ่มเข้ามา แล้วมันมากกว่าเดิมอีก (T-T…

รู้สึกได้ว่าทำงานช้าลงโคตรๆ ก่อนหน้านี้ผมเข้าใจว่ามันเป็นเพราะมีงานอื่นๆ เข้ามาขัดจังหวะมากเกินไป หรือไม่ก็ทำงานอื่นๆ จนพลังงานผมมันหมดไปแล้ว. แต่มาตอนนี้ผมเริ่มกลัวว่ามันจะเป็นปัญหาที่ตัวผมที่ noob เอง.

ผมอยากจะหายตัวได้จัง…

ตอนนี้สิ่งที่ต้องทำเพื่อแก้ปัญหา กับปัญหาที่ต้องแก้(ก่อน) มันเหมือนเป็นสิ่งที่ทำให้ผมวิ่งเป็นวงกลม และถ้าผมต้องการที่จะหยุดวงจรอุบาตนี้ ผมต้องวิ่งให้เร็วขึ้นและนานขึ้น. ไอ้เxี้ยเอ๊ย แล้วถึงตอนนั้นผมจะยังมีชีวิตรอดมั้ยวะเนี่ยครับ!? /piff

First post with WP mobile app.

หลังจากที่ซื้อ iphone5 มา ด้วยคอนเซ็ปที่ว่าอยากจะเขียนแอพมือถือ, เพราะนอกจากมันจะเป็น device สำหรับเทสแอพแล้ว มันเป็นสิ่งสำหรับใช้ให้ผมเรียนรู้ และทำความเข้าใจพฤติกรรมของผู้ใช้สมาร์ทโฟนด้วย.

ตอนนี้เริ่มจากพวกแอพ social พื้นฐานหลักๆ ก่อน เช่น Facebook, Twitter, Line, WhatsApp, Instagram, FourSquare มีไรอีกหว่า…?

หลังจากที่ใช้ social media แต่ละตัวไปได้สักพัก ก็เลยทำให้นึกถึงบล็อคนี้ขึ้นมาได้, เพราะว่าแต่ละตัวก็จะมีคุณสมบัติเด่นของมันในแต่ละด้าน แต่สิ่งที่ยังขาดไป ก็คือบล็อคเนี่ยแหละ. ก็เลยเข้า app store ไปเสิร์ซหาแอพสำหรับ WP. เยี่ยมไปเลย! มันมี app ที่เป็น Official ของ WP ด้วย. โพสนี้ก็เลยเป็นโพสแรก ที่โพสด้วยแอพ WordPress บน iphone ล่ะ.

คงจะได้มาโพสอะไรไร้สาระมากขึ้นในนี้ จะได้หัดพิมพ์ภาษาไทยใน iOS6 ที่ปุ่มเล็กโคตรนี้ ให้คล่องขึ้นด้วย อิอิ.

เปิด/ปิด register_globals ต่างกันอย่างไร

สมัยก่อน (PHP รุ่นก่อนเวอร์ชั่น 4.2.1) ตัวแปรที่ส่งมาจากภายนอก ( GET, POST ) และตัวแปร SESSION จะใช้ปนกับตัวแปรที่ใช้ภายในโปรแกรมเลย

ต่อมาหลังจากเวอร์ชั่น 4.2.1   php ก็ได้พัฒนาให้การรับค่าตัวแปรรัดกุมขึ้น โดยใช้ตัวแปรแยกออกมาสำหรับ GET, POST และ SESSION แต่ก็เปิดให้ผู้พัฒนาเว็บไซต์สามารถเลือกกลับไปใช้แบบเก่าได้ ด้วยการเปิด register_globals ซึ่งสามารถตั้งในไฟล์ .htaccess   หรือถ้าเป็นเซิร์ฟเวอร์ของคุณเอง คุณสามารถที่จะตั้งใน php.ini ก็ได้ เพื่อให้มีผลกับทั้งเซิร์ฟเวอร์

Continue reading “เปิด/ปิด register_globals ต่างกันอย่างไร”

ปัญหา Query หนักใน plugin post-views ของ WordPress

วันก่อนเซิร์ฟเวอร์เครื่องหนึ่งเกิดปัญหาโหลดขึ้นสูงอย่างหนัก จึงได้เข้าไปตรวจสอบ

พบว่าสาเหตุเกิดจาก เว็บไซต์ลูกค้ารายหนึ่ง ใช้ WordPress และมีคนเข้าจำนวนมาก เค้าได้ติดตั้ง plugin ที่มีชื่อ post-views เข้าใจว่ามันจะทำการนับ stats และแสดงรายการ posts ที่มีคนเข้าชมเยอะ ไรประมาณนั้น

ใน Query ที่ plugin มันเขียน มันใช้ SELECT ใหม่ทุก โดยใช้ WHERE ระบุเป็นเงื่อนไขเวลาที่ละเอียดเป็นวินาทีเลย.  ผมเลยลองเข้าไปแก้ให้ Query มัน WHERE โดยใช้เวลาเป็น floor ที่ interval=20 minutes  เพราะตอนแรกเดาว่ามันน่าจะได้ประโยชน์จาก MySQL query cache  แต่ปรากฎว่าไม่ช่วยแฮะ ไม่รู้ว่า result มันขนาดเกิน cache limit หรือเปล่า

ผมเลยแก้ให้มันเขียน result ลงไฟล์แทน โดยใช้ serialize

ต้องสร้างโฟลเดอร์ /wp-content/plugins/post-views/cache/ และเปิดสิทธิ์ให้ php เขียนไฟล์ในโฟลเดอร์นี้ได้ด้วย

อันนี้เป็นไฟล์ที่ผมแก้แล้ว  แก้ 2 จุดครับ ประมาณบรรทัดที่ 2243 และ 2412 ครับ (ดาวน์โหลด post-views.php)