2008/Apr/14

Platform: Microsoft Windows XP
Framework: Zend Framework
Web stack: XAMPP

ช่วงนี้ ต้องมาลอง Zend Framework (ZF) สิ่งนึงที่ไม่ชอบ PHP Framework หลายๆตัว
ก็คือมักจะไปผูกติดกับ Web server โดยไม่จำเป็น
จาก Quick Start ใน Documentation ของ ZF บอกให้สร้าง file system ตามที่ระบุ
จริงๆ จะสร้างอย่างอื่นก็ไม่ผิด แต่อยากลองเพื่อดูมุมมองหน่อย
จาก file system layout ที่ ZF แนะนำ

application/
    controllers/
        IndexController.php
    models/
    views/
        scripts/
            index/
                index.phtml
        helpers/
        filters/
html/
    .htaccess
    index.php

ZF ให้กำหนด document root ของเว็บไปที่ directory html
และสามารถ override configuration โดยใช้ .htaccess ได้
สิ่งที่ต้องทำ คือตอนที่สร้าง virtual host ใน XAMPP ซึ่งถ้าลงตามปกติ จะอยู่ที่ c:\xampp\apache\conf\extra\httpd-vhosts.conf ให้เพิ่ม

    ServerAdmin my@email.com
    ServerName localhost
    DocumentRoot D:\Workspace\ProjectName\Webroot
    
        AllowOverride All
    
    ErrorLog C:\xampp\apache\logs\ProjectName-error.log
    CustomLog C:\xampp\apache\logs\ProjectName-access.log common
 

AllowOverride All เป็นการระบุให้สามารถ override configuration ได้
ที่ต้องทำงี้เพราะใน .htaccess จะระบุให้ rewrite url ดังนี้

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

จาก .htaccess ทำให้ url อื่นๆ ที่ไม่ได้ลงท้ายด้วย js, ico, gif, jpg, png, css
จะถูกเปลี่ยนแล้วไปที่ index.php หมด แต่ url ที่ client เห็นไม่ได้เปลี่ยนตาม
เพราะเป็นการ rewrite url หลังจากที่ user ส่ง request ไปทาง web server
และ web server ทำการ rewrite url แล้วส่งต่อไปให้ url นั้นทำงาน
ข้อเสียที่รู้สึกได้คือ ถ้าเราไม่มีสิทธิแก้ configuration ของ Apache ให้
หรือ Web server เป็น IIS, Lighttpd หรือตัวอื่นๆ ก็ต้องไปดูว่าจะ rewrite url ยังไง
ส่วนเรื่อง file system การย้าย application ออกไปเลยดูเหมือนจะเป็นสิ่งที่ดี
เพราะ user ไม่สามารถเข้าถึง directory application ได้ แต่จากประสบการณ
hosting บางทีเวลาเอาไฟล์ขึ้น จะไม่สามารถอ้าง directory ที่อยู่เหนือขึ้นไปได้
เพราะฉะนั้น ถ้าเรากำหนด directory html เป็น document root แล้วจะ upload
เราจะไม่สามารถอ้างอิงถึง directory application ได้ แต่ตรงนี้ก็สามารถแก้ได้
เพียงเปลี่ยน path ตอนเรียก Zend_Controller_Front::run ใน index.php

โดยส่วนตัวแล้ว สิ่งที่ทำให้ไม่ชอบ PHP Framework หลายๆอัน อยู่ตรงที่
ชอบสร้าง directory controllers, models, views เพื่อแยกเป็น MVC
ซึ่งลองคิดๆดูแล้วไม่เกิดประโยชน์ที่จะทำแบบนั้น และดูจะเป็นปัญหาในแง่ของการจัดการด้วยซ้ำ
เช่น เราต้องการเอา web page ที่เป็นส่วนของการ search ข้อมูลออกจาก web site
เราก็ต้องไปหาใน directory เหล่านั้นเพื่อเอาออกไป ผมมองว่าใน file system
การแบ่งเป็น module จะดีกว่า แล้วใน directory ของ module นั้นค่อยแยกเป็น MVC
โดยที่ controller ก็เป็น php ที่รับ request แล้วแยก view ออกไป
อาจจะใส่เป็น directory ไปเลยก็ได้ ส่วน model ที่เป็น bussiness logic
ถ้าเป็นใน C# ก็อาจจะแยกเป็นอีก Project แล้ว compile เป็น DLL มาใช้
ซึ่งมองไปแล้ว model ดูไปก็ไม่ต่างอะไรกับ library ในแง่วิธีการเรียกใช้
เพียงแต่เป็น library ที่จัดการด้าน business logic ของ web site นั้นๆ
ก็อาจจะแยกใส่ใน directory lib เลยก็ได้

edit @ 15 Apr 2008 00:04:10 by Gaiz

edit @ 17 Oct 2010 00:56:49 by Gaiz

2008/Apr/07

Platform: Microsoft Windows XP
Programming language: PHP
Database: MySQL
Web server: Apache

WAMP คือ ชุดของ software ที่ประกอบด้วย Apache, MySQL และ PHP
(หรือจะเป็น Per, Python) อาจจะเรียกว่า WAMP stack หรือ WAMP Suite
เป็น software ที่ช่วยในการลง Apache, MySQL และ PHP บนระบบปฏิบัติการ Windows
ซึ่งผมเองลองลง Apache บน Windows แล้วไม่เคยจะ work เลย
โดยตัด WAMP ที่ไม่มีการ update มากกว่า 1 ปีออกไป เช่น Apache2Triad หรือ EasyPHP
WAMP ที่ใช้แบบไม่ต้อง install อย่าง Server2Go และ Uniform server ออกไป
รวมทั้ง WAMP ตัวอื่นๆที่ลองแล้วไม่น่าสนใจหรือลงแล้วมีปัญหาอย่าง Zend Core ออกไป
หลายๆคนที่ใช้ WAMP หรือ LAMP มักจะใช้ PHPMyAdmin ในการดูแลแก้ไขข้อมูลใน MySQL
ซึ่งปกติแล้วในช่วงที่พัฒนา Web ผมจะใช้ MySQL GUI Tool อย่างเดียว
เพราะเร็วกว่า feature ในการจัดการเยอะกว่า และใช้งานสะดวกกว่า
จึงให้น้ำหนักในการใช้งานร่วมกับ MySQL GUI Tool ซะมากกว่า
รวมทั้ง PHPMyAdmin ก็ไม่ได้ต่างกันมาก

AppServ

เห็น Web developer คนไทยหลายคนใช้ตัวนี้ อาจจะเป็นเพราะทีมพัฒนาเป็นคนไทย
ผมเองก็เคยลองใช้ พอจะ review ก็กลับมาลองใช้อีก
แต่ผลที่ได้ยังถือว่าสอบไม่ผ่านถ้าเทียบกับตัวอื่นๆ แถมทั้งไม่ค่อย update เท่าที่ควร
  • Version 2.5.9, 2007-07-18 (14.6 MB)
  • Apache 2.2.4
  • MySQL 5.0.45
  • PHP 5.2.3
  • ต้องกำหนด Server name, Admin's email ของ Apache
    และ root password ของ MySQL ตอน install
  • ต้องสั่ง start-stop หรือ Add/remove service รวมถึง configuration file ต้องใช้งานผ่านทาง start up menu ซึ่งไม่สะดวก
  • ไม่สามารถใช้ feature สำหรับ localhost ใน MySQL Administrator ใน MySQL GUI Tools
  • Fail

SpikeWAMP

Tray icon สำหรับควบคุมการทำงาน ออกแบบมาใช้งานได้ไม่สะดวก มี Addons ของ CMS หลายตัว
แต่ก็ไม่มีอะไรที่เป็นจุดเด่นกว่า WAMP ตัวอื่นๆ
  • Version 1.0.1 beta, 2008-01-04 (21.97 MB)
  • Apache 2.2.6
  • MySQL 5.0.45
  • PHP 5.2.5
  • Tray icon ใช้งานไม่สะดวก ออกแบบการใช้งานได้ไม่ดี มีแต่ service
  • มี Addons drupal, joomla, mambo, moodle และ phpbb
  • ไม่สามารถใช้ feature สำหรับ localhost ใน MySQL Administrator ใน MySQL GUI Tools
  • Fail

VertrigoServ

มีลง SQLite, SQLiteManager, Smarty ลงมาด้วย มี dialog สำหรับจัดการ Component, Extension, Program (Console ของ VertrigoServ) และ Apache aliases ที่เป็นจุดเด่นกว่าตัวอื่น แม้จะดูรกไปหน่อยก็ตาม เป็น WAMP ที่จัดอยู่ในระดับที่ค่อนข้างดี
  • Version 2.20, 2008-02-08
  • Apache 2.0.63
  • MySQL 5.0.51
  • PHP 5.2.5
  • มี menu ที่ไม่ค่อยจำเป็นเยอะไป (Documentation, Project WWW page, Help and readme, Localhost page)
  • ไม่สามารถ start MySQL แยกจาก Apache ได้ เพราะที่ Tray มีแค่ Server ให้ Start/Stop/Restart อย่างเดียว
  • MySQL ถูก set password มาแต่แรกให้เป็น vertrigo เลย ต้องแก้เองด้วย SQL ซึ่งถ้าไม่เปิดหน้า Help and readme จะไม่รู้เลย
  • ไม่สามารถใช้ feature สำหรับ localhost ใน MySQL Administrator ใน MySQL GUI Tools
  • สามารถสร้าง alias ได้ง่ายมาก เนื่องจากมี dialog ที่จัดการ configuration ค่อนข้างดี
  • Pass

Web-Developer Server Suite

เทียบกับ WAMP ตัวอื่นๆ แล้วค่อนข้างจะใช้พื้นที่มากเหลือเกิน เป็นเพราะลงทั้ง drupal, joomla, mediawiki, phpbb2 และ wordpress มาให้เลย
  • Version 2.0, 226 MB
  • Apache 2.2.6
  • MySQL 5.0.45
  • PHP 5.2.5
  • มีตัว controller ที่แสดงข้อมูลรายละเอียดของ server ละเอียดกว่าตัวอื่นๆ ทั้ง Service information System information และ Loaded server modules and extensions แต่ถ้าเทียบกับ VertrigoServ ซึ่งแก้ไข server module กับ extension แล้วสู้ไม่ได้ เพราะ VertrigoServ ทำได้สะดวกกว่า
  • MySQL ถูก set password มาแต่แรกให้เป็น rootwdp เลย ต้องแก้เองด้วย SQL ซึ่งถ้าไม่เปิดหน้า http://localhost/docs/suite-guide/ จะไม่รู้เลย
  • ไม่สามารถใช้ feature สำหรับ localhost ใน MySQL Administrator ใน MySQL GUI Tools
  • Pass

WampServer

มีลง SQLiteManager มาด้วย การใช้งานค่อนข้างยุ่งยาก เพราะออกแบบ Tray menu มาได้ไม่ดี
  • Version 2.0b, 2008-03-07 (20 MB)
  • Apache 2.2.8
  • MySQL 5.0.51a
  • PHP 5.2.5
  • Tray menu ใช้งานไม่สะดวก ออกแบบการใช้งานได้ไม่ดี แม้จะมี list ของ Apache, PHP setting และ PHP extension ให้เลือกแต่ก็เลือกได้ไม่สะดวก
  • Menu การ Manage Apache และ MySQL service ยังไม่สะดวก
  • Switch online/offline เพื่อกำหนดการ access จากเครื่องอื่น เป็น feature ที่ไม่ค่อยสำคัญเท่าไร ในช่วงที่พัฒนา
  • ต้องแก้ไข register เพื่อให้ MySQL Administrator ใน MySQL GUI Tools เพื่อใช้ feature สำหรับ localhost ได้ ดู http://www.wampserver.com/phorum/read.php?2,31061
  • สามารถสร้าง alias ได้ง่าย แต่ไม่เท่า VertrigoServ
  • Addons มี Apache, MySQL, PHP version เก่าๆ
  • Pass

XAMPP

มีระบบ Panel ที่ใช้จัดการ server ทั้ง Apache และ MySQL ที่ดี ออกแบบมาให้ใช้งานสะดวก แม้จะมี dialog สำหรับจัดการ configuration โดยตรง แต่ก็สามารถเรียก Windows Explorer ไปยัง folder ที่เก็บ configuration ค่อนข้างสะดวก เป็นตัวเดียวที่ลงแล้วสามารถใช้งาน MySQL Administrator ใน MySQL GUI Tools ได้ทันทีที่ระบุเป็น service
  • Version 1.6.6a, 2008-02-22 (34 MB)
  • Apache 2.2.8
  • MySQL 5.0.51a
  • PHP 5.2.5
  • Pass
โดยสรุปแล้ว XAMPP กับ VertrigoServ เป็น WAMP ที่ดูดีกว่าตัวอื่นๆ
ซึ่ง VertrigoServ ดูจะมีจุดเด่นด้านการ configuration แต่ WAMP หลายๆตัว
จะเน้นไปที่การสร้าง Alias มากกว่า เปิดพอร์ตเพิ่ม (เวลาจะดู web จะเห็น url เป็น http://localhost/mySite แต่ถ้าเปิดพอร์ตเพิ่ม url จะเป็น http://localhost:8080)
ซึ่งการเปิดพอร์ตเพิ่มเป็นสิ่งที่ดีกว่า เพราะตัว web แต่ละอันที่เราพัฒนาจะแยกจากกันโดยสิ้นเชิง
ส่วน XAMPP แม้จะไม่ได้มี dialog ที่จัดการ configuration ให้
แต่ก็สามารถเข้าถึง configuration file ค่อนข้างง่าย ทำให้สามารถ configuration ได้ยืดหยุ่นกว่า
รวมทั้งการ configuration ก็ไม่ได้ทำบ่อยมาก
ถ้าเทียบกับ VertrigoServ ที่ มี menu ที่ไม่จำเป็นมากเกินไป และใช้งานได้ไม่สะดวกเท่าไรแล้ว
สรุปว่า WAMP ตัวที่ดีสุด คือ XAMPP

 

edit @ 7 Apr 2008 16:43:24 by Gaiz

2008/Mar/19

Platform: Microsoft Windows Vista Business edition

เครื่องที่บริษัทที่ใช้อยู่ตอนนี้เป็น Microsoft Windows Vista
อย่างแรกที่เจอคือ Business edition ไม่ได้ลง IIS มาให้ตั้งแต่แรก
และด้วย Vista เปลี่ยนหน้าตาเดิมๆ ไปเลยไม่ค่อยคุ้น
นอกจากนี้ หลังจากเปิด Project ของ Visual Studio 2005 อันเก่า
กลับเจอ error ว่า

Unable to open the Web 'http://localhost/project name'. The Web server does not appear to have the FrontPage server extensions installed.

ซึ่งปัญหาเกิดจาก Visual Studio 2005 ไม่สามารถ access IIS ก็เลยต้องหาวิธีแก้แล้วมาสรุปเก็บไว้

วิธีการลง และแก้ไข
1. เปิด Control Panel เลือก Programs and Features
2. เมนูด้านข้างซ้าย เลือก Turn Windows features on or off
3. ให้เลือก Internet Information Services ไว้
4. จากนั้นให้ Expand Internet Information Services -> Web Management Tools -> IIS 6 Management Compatibility
5. แล้วเลือก IIS Metabase and IIS 6 configuration ด้วย