แหล่งรวบรวมขั้นตอนการเขียนโปรแกรม ตัวอย่างโค้ด แนวทางเขียนโปรแกรม เทคนิคต่างๆมากมาย

May 9, 2013

PL/SQL คืออะไร

Credit: PL/SQL คืออะไร

PL/SQL หรือชื่อเต็ม Procedure Language SQL เป็นการนำคำสั่งต่างๆ ภาษา SQL มารวมกันเป็นโปรแกรมทำให้คำสั่งเหล่านั้นมีประสิทธิภาพ และทำงานได้ตรงตามความต้องการของผู้ใช้มากขึ้น และกว้างขวางมากขึ้น
จุดสังเกตุอย่างหนึ่งที่ต้องระวังคือ PL/SQL เป็นภาษาที่ไม่สนใจอักษรตัวเล็ก-ใหญ่ (Non-Casesensitive)

..อ่านต่อ..

March 2, 2013

CMS คืออะไร

CMS
    CMS ตัวย่อนี้หลายคนอาจเคยเห็นแต่ไม่ได้สนใจหรือสนใจแต่ยังไม่ทราบว่ามันคืออะไร วันนี้ผมจะมาชี้แจงแถลงไขให้ท่านๆ รู้แจ้งกันครับ CMS ย่อมาจาก Content Management System ถ้าจะให้แปลตรงตัวก็คงแปลว่า ระบบบริหารสาร (สาร ในที่นี้หมายถึงสิ่งที่ต้องการสื่อออกมาครับ) ซึ่งจริงๆ แล้ว CMS ก็คือระบบอำนวยความสะดวกในการบริหารจัดการเว็บไซต์ ทำให้สามารถสร้างเว็บไซต์ ใส่ content ปรับแต่งหน้าตา ได้อย่างสะดวก โดยผู้ใช้ไม่จำเป็นความรู้เกี่ยวกับการเขียนโปรแกรมเลย

..อ่านต่อ..

November 8, 2012

Tips: Keyboard Shortcut เปลี่ยน Tab ใน Chrome

วันนี้มี Tips เล็กๆ มาฝากครับ เพื่อให้การท่องโลก Internet ของคุณได้คล่องตัวมากขึ้น
เบื่อไหมที่ในบางครั้งมือเราอยู่ที่ Keyboard แต่แค่ต้องการเปลี่ยน Tab ไปยัง Tab อื่นบน Chorme ต้องยกมือไปลาก mouse วันนี้เลยจะแนะนำ Keyboard Shortcut เพื่อเพิ่มความสะดวกมาดูกันเลย


เลื่อนไป Tab ถัดไป :
Ctrl+Tab or Ctrl+PgDown

เลื่อนไป Tab ก่อนหน้า :
Ctrl+Shift+Tab or Ctrl+PgUp

เลื่อนไป Tab ตามลำดับที่เราเลือกได้เอง :
Ctrl+1 to Ctrl+8

เลื่อนไป Tab สุดท้าย :
Ctrl+9

เป็นยังไงครับ ง่ายใช่ไหมครับ

..อ่านต่อ..

October 29, 2012

การปัดเศษทศนิยมใน Excel

สูตรข้างล่างนี้ สามารถใช้ได้กับ Excel 2003-2010

สมมุติว่า ในเซลล์ A1 มีข้อมูล 123.456 เมื่อใช้สูตรข้างล่าง จะได้ผลดังนี้

สูตร                                ผลลัพธ์              ความหมาย
=ROUND(A1,2)             123.46               ปัดเศษ ทศนิยมสองตำแหน่ง
=ROUND(A1,-1)            120                    ปัดเศษ เหลือจำนวนเต็มหลักสิบ
=ROUND(A1,-2)            100                    ปัดเศษ เหลือจำนวนเต็มหลักร้อย
=ROUNDDOWN(A1,2) 123.45               ปัดเศษลง ให้มีจำนวนจุดทศนิยมตามที่กำหนด
=ROUNDUP(A1,2)         123.46              ปัดเศษขึ้น ให้มีจำนวนจุดทศนิยมตามที่กำหนด
=ODD(A1)                      125                    ปัดเป็นเลขคี่
=EVEN(A1)                    124                    ปัดเป็นเลขคู่
=CEILING(A1,0.5)         123.5                ปัดขึ้น เพื่อให้ตัวเลขที่กำหนดหารลงตัว เช่น ใช้ในกรณีที่ต้องกรหลีกเลี่ยงเศษที่ไม่มีหน่วยเงิน เช่น 45 สตางค์ ไม่มีเหรียญ ก็เลยปัดให้เป็น 50 สตางค์ คือ กำหนดให้เป็นทวีคูณของ 50 สตางค์
=FLOOR(A1,0.5)            123                   ปัดลง เพื่อให้ตัวเลขที่กำหนดหารลงตัว เช่น หลีกเลี่ยง 45 สตางค์ ก็เลยปัดลงให้เป็น 00 สตางค์ คือให้ 50 สตางค์หารลงตัว หรือ พูดอีกอย่างว่า ให้เป็นทวีคูณของ 50 สตางค์ เป็นต้น
=INT(A1)                        123                    เอาเฉพาะเลขจำนวนเต็ม
=TRUNC(A1,2)              123.45              ตัดเอาจำนวนตำแหน่งทศนิยมที่กำหนด ไม่มีการปัดเศษ
=MOD(A1,2)                  1.456               เศษที่เหลือจากการหาร ของตัวหารที่กำหนด ในตัวอย่างคือ นำ 2 ไปหาร 123 เหลือเศษ 1

ทดลองการใช้สูตร ใน Excel Web App ข้างล่างนี้ (พิมพ์สูตรเสร็จแล้ว กดปุ่ม Enter)



..อ่านต่อ..

July 18, 2012

HTML5



HTML5 เป็นมาตรฐานของ HTML โดยมีลักษณะเหมือนมาตรฐานตัวก่อนหน้าทั้ง HTML 4.01 และ XHTML 1.1 ที่ใช้ในการจัดโครงสร้างและการแสดงผลของเนื้อหาสำหรับเวิลด์ไวด์เว็บ มาตรฐานใหม่จะมีคุณลักษณะเด่นที่สำคัญได้แก่
  • การใช้งานวิดีโอ
  • การแสดงตำแหน่งทางภูมิศาสตร์
  • การเก็บไฟล์ในลักษณะออฟไลน์
  • การแสดงกราฟิกส์
  • input types แบบใหม่ เช่น search, number, range, color, tel, url, email, date, month, week, time, datetime, datetime-local
โดยคุณสมบัติเด่นหลายอย่างไม่จำเป็นต้องติดตั้งซอฟต์แวร์เพิ่ม เช่น เกียรส์ แฟลช หรือ ซิลเวอร์ไลต์ เหมือนที่ผ่านมาในการใช้งาน HTML4

     HTML5 ได้มีการแนะนำ element ใหม่หลายตัวเพื่อตอบสนองการใช้งานของ website รุ่นใหม่ โดย element ใหม่ส่วนหนึ่งเป็นซีแมนติกทดแทนการใช้งานของบล็อกทั่วไป (<div>) และเอเลเมนต์อินไลน์ (<span>) ยกตัวอย่างเช่น <nav> (บล็อกสำหรับเมนูบอกทาง) และ <footer> (ส่วนด้านล่างของเว็บเพจ) เอเลเมนต์ส่วนอื่นแสดงถึงการใช้งาน เช่น เอเลเมนต์ทางด้านสื่อ <audio> และ <video>  element บางตัวที่ตกรุ่นสำหรับ HTML 4.01 ได้ถูกยกเลิก เช่น <font> และ <center> ซึ่งถูกทดแทนด้วยการทำงานผ่าน css

HTML5 Showcase
 ตัวอย่างการใช้งานจาก Apple.com Credit: WikiPedia

..อ่านต่อ..

March 28, 2011

การกำหนดให้แสดงเป็นตัวพิมพ์ใหญ่

หากเราอยากที่จะเปลี่ยนข้อความหรือคำที่มีอยู่ให้เป็นตัวใหญ่ ซึ่ง PHP มีให้ใช้ strtoupper สามารถเรียกใช้ได้เลยไม่ต้องทำอะไรเพิ่ม
วิธีใช้
string
strtoupper ( string $string )


Code :
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = strtoupper($str);
echo $str;

Output :
MARY HAD A LITTLE LAMB AND SHE LOVED IT SO

..อ่านต่อ..

ตัวอย่างโค้ดทำ HighLight ข้อความที่ค้นหา


ลอง Download ไปดัดแปลงกันดูนะครับ




..อ่านต่อ..

March 8, 2011

การใช้ MERGE SQL

    คำสั่ง MERGE นั้น ไว้ใช้สำหรับการที่ไม่แน่ใจว่า RECORD ตามเงื่อนไขมีอยู่หรือไม่ ถ้าไม่มีก็จะเป็นการ INSERT RECORD แต่ถ้า RECORD นั้นๆ มีอยู่แล้วก็จะทำการ UPDATE RECORD นั้นๆ หรือเราจะรู้ักอีกในชื่อนึงคือ Upsert โดยกรณีที่ row นั้นมี data ใหม่ ซึ่งใน row นั้นมี data อยู่แล้ว MERGE จะทำการ Update data ให้ แต่ในกรณีที่ Primary key ของ row นั้นไม่มี MERGE ก็จะทำการ INSERT ให้แทน ซึ่ง Microsoft อธิบายว่า MERGE statement ใน SQL Server 2008 เป็น ANSI-standard MERGE statement และมีการใช้ใน Oracle ตั้งแต่ Oracle 9i

Code :
MERGE INTO t1 -- main table
USING t2 -- prepare table
ON (t1.id= t2.id) -- condition by key
WHEN MATCHED THEN
UPDATE SET t1.name= t2.name
WHEN NOT MATCHED THEN
INSERT
-- column main table
(t1.id, t1.name, t1.email)
VALUES
-- value from prepare table
(t2.id, t2.name, t2.email);

..อ่านต่อ..

CVS (Control Version System)

การใช้งาน CVS (Control Version System)

CVS คือระบบการควบคุม version ของ source code ใน project ของเราให้มีระเบียบแบบแผน ซึ่งจะเหมาะกับการพัฒนาที่เป็นทีมมากหรือว่ามีคนพัฒนาเพียงแค่คนเดียวก็ดี cvs ทำให้เราไม่ต้องกังวลว่า code เราจะหายไปไหน หรือแม้แต่การ rollback กลับมาใช้ใน version ก่อนหน้าก็ยังสามารถทำได้

แต่ปัญหาอย่างหนึ่งที่เกิดขึ้นตามมาคือ เราจะใช้งานอย่างไร จะติดตั้งอย่างไร แล้วต้องใช้ software อะไรบ้าง ที่นี่มีคำตอบ

เมื่อต้องการจะใช้ cvs นั้นจะต้องเตรียม software ดังนี้

1. CVS Server คือ CVS NT สามารถ download ได้ที่ http://www.cvsnt.org

2. CVS client หรือตัวจัดการ CVS ซึ่งจะมีหน้าตาเป็น UI หรือ web ก็มี โดยทั่วไปแล้วเราจะใช้ WINCVS สำหรับ run บน windows platform ซึ่งสามารถ downlad ได้ที่ http://www.cvshome.org

การ config cvsnt

หลังจากที่ download และติดตั้ง cvsnt แล้ว ให้ทำการ config ดังนี้

1. ไป set CVSHOME และ PATH ใน environment variable ดังนี้

set CVSHOME=

set PATH=.;%CVSHOME%\bin;%PATH%
2. ทำการสร้าง user ในระบบของ windows เช่นสร้าง cvsuser

3. ทำการสร้าง repository โดยไปที่ Program -> CVSNT แล้วเลือก Service control panel แล้วไปที่ tab Repository หลังจากนั้นกำหนดดังนี้

Prefix : d:\Repo (ตัวอย่าง)
Add : /Test (ตัวอย่าง)

ต่อมาก็มาที่ tab Service status เพื่อมา restart cvs server คือ stop แล้วก็ start

แล้วเราลองมาตรวจสอบที่ d:/repo/Test จะมี floder CVSROOT ครับ แสดงว่าเราทำถูกต้องแล้วครับ

4. สร้าง user ใน cvs ให้ทำดังนี้

ไปที่ cmd ครับแล้วพิมพ์ดังนี้

set cvsroot=:sspi:localhost:/Test
cvs passwd -r cvsuser -a userincvs


แล้วจะให้ใส่ password 2 ครั้งครับ หลังจากใส่ password ทั้ง 2 ครั้งแล้วไม่มี message อะไรขึ้นมาแสดงว่าเราสามารถ add user เข้าไปใน cvs เรียบร้อยแล้ว

ซึ่งสามารถเข้าไปตรวจสอบได้ใน file d:\repo\Test\passwd

5. ทดสอบ connect ไปยัง cvs โดยผ่าน pserver protocol

set cvsroot=:pserver:userincvs@localhost:/Test

cvs login

แล้วเราจะต้องใส่ password 1 ครั้ง ถ้าหลังจากที่ใส่ password แล้วไม่มี message อะไรขึ้นมาแสดงว่าเราสามารถ login เข้าไปได้

เป็นอันว่าตอนนี้เราสามารถ config CVS Server สำหรับเก็บ source ของ project เราแล้ว

ต่อมาก็จะมีคำถามว่าเราจะสามารถนำ project ที่เรามีเข้าไปยัง CVS Server ได้อย่างไร

ที่นี่มีคำตอบ

เพื่อความง่ายเราจะใช้ WINCVS เป็นตัวจัดการแทนการใช้ command

หลังจากที่ download และ install cvs แล้วก้ให้เปิด program ขึ้นมาแล้วทำตามดังนี้

1. ไปที่ Admin -> Preferences

2. ไปที่ tab CVS เลือก Alternate CVS และเลือก program cvs.exe เช่น C:\Program Files\cvsnt\cvs.exe

คำถามที่เกิดขึ้นมาทำไมเราถึงเลือก alternate cvs ก็เพราะว่าเราใช้ cvs ตัวที่ไม่ได้มากับ wincvs ดังนั้นเมื่อทำการติดตั้ง wincvs เราก็ไม่ต้องติดตั้ง cvsnt ที่มากับ wincvs

3. กดปุ่ม ok

4. ไปที่ Admin -> Login

5. เลือก CVSROOT แล้วใส่ข้อความดังนี้ใน textbox

:pserver:userincvs@localhost:/Test

6. กดปุ่ม ok

7. ให้ดู status ด้านล่าง ถ้าผ่านจะมีลักษณะดังนี้

***** CVS exited normally with code 0 *****

ถ้าไม่ผ่านจะเป็นดังน หรือว่าแบบอื่นก้เป็นไปได้

***** CVS exited normally with code 1 *****

หลังจากที่ผ่านการ login แล้วเราก็จะทำการ add project mเรามีไว้แล้ว add เข้าไปยัง cvs server ครับ ทำได้ดังนี้

1. ไปเลือก directory ที่อยู่ของ source project ครับ ซึ่งจะเป็น hotkey ซึ่งอยู่กลางบน เป็นรูป) floder เช่นเลือก d:\project1

2. ไปที่ explorer ด้านซ้ายของ wincvs เราก็ไป right click ที่ file หรือ directory ที่ต้องการจะ add เข้า cvs server แล้วเลือก import module หลังจากนั้นเราก็สามารถที่จะเลือก filter ได้ว่าจะเอา file อะไรบ้าง

3. กดปุ่ม ok

4. ทำการตรวจสอบโดยไปที่ d:\repo\Test จะมี floder ของ project ที่เรา add เข้าไป

และแล้วเราก้สามารถใช้งาน cvs ได้แล้ว

..อ่านต่อ..

December 24, 2010

MVC คืออะไร

MVC หรือ Model View Controller เป็นหนึ่งในหลายๆ pattern ของ Design pattern ซึ่งเป็น Model หรือรูปแบบในการวางโครงสร้างโปรแกรมทำให้แยกกันระหว่าง Model, View, Coltroller
  • Model เป็นส่วนควบคุมการเข้าถึงและใช้งานข้อมูล(Data)
  • View เป็นส่วนแสดงผลให้กับผู้ใช้งาน (User Interface)
  • Controller เป็นตัวกลางควบคุมการทำงานของระบบโดยเป็นตัวสั่งให้ Model และ View ทำงานตามความต้องการ

    จากรูป จะแบ่งเป็นขั้นๆดังนี้
  • เริ่มต้นเมื่อ Client เรียก หรือร้องขอ(Request) เข้ามาจะไปที่ Controller ก่อนเพื่อให้ Controller ดูว่าต้องทำอะไรต่อไป 
  • หากมีความต้องการใช้ข้อมูล(Data) Controller จะส่งต่อให้ Model ไปหาข้อมูลมาให้ 
  • แล้วเมื่อ Controller ได้รับข้อมูลที่เตรียมไว้เพื่อแสดงผล(หรือเพื่ออย่างอื่น) แล้ว Controller จะส่งข้อมูลไปให้ View
  • View ทำการแสดงผลให้กับ Client
จะสังเกตุได้ว่าการทำงานแบ่งออกเป็นส่วนๆ ชัดเจนมากขึ้นเมื่อเทียบกับการทำงานที่รวมทุกอย่างไว้ด้วยกัน (เช่น เขียนโปรแกรมที่มีการดึงข้อมูลจาก database และแสดงผลรวมกันในไฟล์เดียว) MVC จึงช่วยให้การปรับปรุงแก้ไข หรือ พัฒนาเพิ่มเติมได้โดยไม่มีผลกระทบไปยังส่วนอื่นๆ
 ยกตัวอย่าง การทำงานของ Hardware เพื่อให้เห็นภาพการทำงานมากขึ้น เช่น คอมพิวเตอร์ 1 เครื่องนั้น ถ้าต้องการให้คอมพิวเตอร์นั้นประมวลผลเร็วขึ้นก็สามารถที่จะถอด CPU ตัวเก่า แล้วนำ CPU ตัวใหม่มาเสียบ แล้วใช้ต่อได้เร็วกว่าเดิม ต้องการให้การแสดงผลที่ดีขึ้นก็เปลี่ยนการ์ดจอ แต่ขอบเขตคือต้องอยู่ในสิ่งที่ mainboard รับได้ด้วย เราจะทำยังไง ซึ่งเป็นอะไรที่ยากมากเพราะจะต้องใช้สถาปัตยกรรมหรือแนวคิดของ Software ที่ดีด้วยซึ่ง MVC ก็ทำได้ เช่น ถ้าเราต้องการ Control ใหม่ให้ได้ผลลัพท์เหมือนเดิม แล้วเอาไปเสียบที่เดิม ก็เสร็จ ทำให้ไม่ต้องมาสนใจ View และ Model เป็นต้น

..อ่านต่อ..

December 15, 2010

Basic Agile Development

เป็น slide อธิบาย concept agile สั้นๆ ให้ได้เข้าใจกันง่ายนะครับ
จากที่นี่ http://agilemanifesto.org กล่าวเกี่ยวกับ Agile ไว้ว่า...

จากทั้งการลงมือทำเองจริง(ไม่ได้นั่งเทียน)และช่วยคนอื่นทำ
พวกเราได้เห็นแจ้งถึงแนวทางในการพัฒนาซอฟต์แวร์ที่ดีกว่า
ประสบการณ์เหล่านี้ ทำให้เราตระหนักว่าเราต้อง

ให้ความสำคัญกับตัวผู้ทำงานและการปฎิสัมพันธ์ระหว่างผู้ทำงาน
มากกว่าการ(สักแต่ว่า)ทำตามขั้นตอนและเครื่องมือที่(คนไม่เคยได้ทำ)กำหนดไว้

ให้ความสำคัญกับ(การส่งมอบ)ซอฟต์แวร์ที่นำไปใช้งานได้จริง
มากกว่าการทำเอกสาร(ที่ไม่มีใครอ่าน)

ให้ความสำคัญกับการทำงานร่วมกับลูกค้า(เพื่อเข้าใจสิ่งที่ลูกค้าต้องการจริงๆ)
มากกว่า การต่อรองให้งานเป็นไปตามสัญญาที่ร่างไว้

ให้ความสำคัญกับการตอบรับกับการเปลี่ยนแปลง
มากกว่าการ(ดันทุรัง)ทำตามแผน

ทั้งนี้ เราก็ยังควรจะให้ความสำคัญกับสิ่งที่กล่าวไว้ทางด้านขวาอยู่
เพียงแต่สิ่งที่กล่าวไว้ทางด้านซ้ายนั้นมีความสำคัญกว่า

จากข้างบนจะเห็นว่า Agile ไม่ใช่ process แต่มองว่าต้องให้ความสำคัญกับคนมากกว่า process

..อ่านต่อ..

December 14, 2010

คำสั่ง Continue ใน PHP


    Continue จะคล้าย ๆ กับ break นั่นคือ จะหยุดการทำงานใน loop ปัจจุบันเอาไว้ก่อน แต่จะต่างจาก break ตรงที่ว่า continue จะกลับไปเริ่มต้นทำงานใหม่ ที่ต้นของ loop แทนที่จะออกจาก loop ไปเลย



Code :

< ?
…
$I = 0;
while ( $i < 10) {
          if ($arr[$i] == “stop”) {
                      continue;
          }
          $i++;
}
…
? > 
จากตัวอย่าง ไม่ว่าค่า $i จะเป็นค่าเท่าไหร่ ถ้าข้อมูลใน array $arr[] เป็น stop เมื่อไหร่ ก็จะหยุดทำงานของการวนรอบนั้น ๆ ทันที

..อ่านต่อ..

ข้อแตกต่างของ exit() และ die()

    ข้อแตกต่างของ exit() และ die() นะครับ ลักษณะการทำงานนั้นเหมือนกัน คือ ออกจากคำสั่ง แต่วิธีการใช้งานต่างกัน
     die() สามารถที่จะใส่ข้อความเข้าไปได้ เช่น die(''เกิดข้อผิดพลาด ระบบได้ออกจากคำสั่ง") ;
     exit() ไม่สามารถทำได้ เหมือน die();

    ..อ่านต่อ..

    53 เทคนิคการเขียน PHP ให้ถูกต้องและ ประมวลผลได้เร็วขั้นสุด

    1. echo เร็วกว่า print ก็แน่นอนครับ เพราะว่า echo เป็น function ที่เรียบง่ายมากกว่า แต่ว่ากลับกัน print มันทำอะไรได้มากกว่า ก็เลยช้ากว่านั่นเอง
    2.เวลาใส่ตัวหนังสือ หรือข้อความให้ใส่ใน ' ' จะเร็วกว่า ใส่ใน " " เพราะว่าเครื่องหมาย "..." มันจะทำการค้นหาตัวแปรที่อยู่ภายในก่อน
    3.ใช้คำสั่ง sprintf แทนที่จะยัดตัวแปรลงไปตรงๆ จะทำให้เร็วขึ้น 10เท่า!!
    ลองดูวิธีใช้ htttp://th.php.net/sprintf ไม่ยากครับ
    4.เรียกใช้ echo หลายครั้ง จะเร็วกว่าการเสียเวลาเพื่อเชื่อมตัวหนังสือก่อนเรียก echo ครั้งเดียว เช่นเชื่อมด้วย $tmp .= 'xxx'; เป็นต้นครับช้า อย่าทำ
    5.ในกระบวนการ loop ควรคำนวนค่าต่างๆเอาไว้ก่อนเท่าที่ทำได้ เช่น
    1for($x=0;$x < count($array);$x)

    เราควรเปลี่ยนมาใช้
    1$max = count($array);
    ก่อน ค่อยเอาค่า$max ไปใช้ เพราะว่ามันจะเสียเวลาคำนวนรอบเดียวเท่านั้น

    6.พยายามตรวจสอบตัวแปร array ถ้ามีค่าไหนไม่ได้ใช้ก็ unset ทิ้งไปบ้าง อันนี้หลายคน ตัวแปรเกลื่อนระบบ เปลืองแรมครับ ตรวจสอบได้จาก print_r($array); นะครับ
    7.พยายามอย่าเรียกใช้ function พิเศษ เช่น __get, __set, __autoload
    8.เรียกใช้ require() แทนที่จะใช้ require_once() เท่าที่จะเป็นไปได้ ก็เพราะว่า require_once มันจะเสียเวลาตรวจสอบก่อน ว่าไฟล์นี้เคยโหลดเข้ามาหรือยัง ถ้าโหลดแล้วจะไม่โหลดซ้ำ
    9.ใช้ Full path ในการ include หรือ require เพื่อลดเวลาการค้นหา path ของ OS ที่รัน full path ของไฟล์ที่กำลังทำงานเรียกได้จาก dirname(__FILE__);
    10. require() และ include() มันทำงานได้เหมือนกันเลือกใช้ให้ตรงตามความต้องการ มันต่างตรงที่ว่า require() ถ้าไม่พบไฟล์ มันก็หยุดทำงานเลย ความเร็วที่ได้แทบไม่ต่าง
    11. ตั้งแต่ PHP5 เวลาจุดเริ่มต้นของการ ประมวลผล จะเรียกได้จาก $_SERVER[’REQUEST_TIME’] ไม่ต้องเรียกใช้ time() หรือ microtime() ตอนนี้ น่าจะ php5 กันแทบทุกที่แล้วมั้งครับ ไม่มั่นใจลองใช้ phpinfo();
    12. PCRE regex ทำงานได้เร็วกว่า EREG แต่จะเห็นผลเมื่อใช้ในแบบ native function
    13.เมื่อจะประมวลผล XML ใน php ใช้ xml2array จะเป็นการเรียกใช้ PHP XML function และสำหรับ HTML  สามารถเรียกใช้ PHP's DOM document หรือ DOM XML ใน PHP4
    14.str_replace ทำงานได้เร็วกว่า preg_replace แต่บางครั้ง strtr ก็ทำงานได้เร็วกว่าถ้าต้องใช้กันตัวหนังสือเยอะๆ และเราจะใช้ array() ในการทำงานของ str_replace จะทำให้ทำงานได้เร็วกว่าการเรียก str_replace หลายรอบ
    15. statement else if ทำงานได้เร็วกว่า select statement หรือว่า case/switch เพราะว่า else if เป็นคำสั่งเงื่อนไขที่ simple ที่สุดแล้วครับ
    16.การปิด error ด้วย @ ทำให้ทำงานได้ช้ามาก เจอบ่อยมาก @mysql_connect แต่ว่า บางครั้ง ก็ปิดเพื่อความปลอดภัยครับ
    17.การจะลด bandwidth ให้เรียกใช้ mod_deflate ใน apache 2 และ mod_gzip ใน apache1อันนี้ก็ต้องดูว่า server ที่ใช้งานรองรับหรือไม่
    18.ปิดการเชื่อมต่อกับ database เมื่อทำงานเสร็จทุกอย่าง เพื่อให้เหลือ connection ว่างสำหรับรองรับการทำงานต่อไป และเป็นการคืน ทรัพยากรกลับเข้ามาด้วย
    19.$row['id'] เร็วกว่า $row[id] 7เท่า เพราะว่าถ้าเราไม่ใส่เครื่องหมาย มันจะเสียเวลาทำความเข้าใจ index ว่าหมายความว่าอะไร ใน php5 มันจะ error แบบเห็นชัดเลย ถึงแม้ว่าเป็นตัวเลขก็ใส่ไว้ครับ เพื่อความเคยชิน
    20.ใช้ <?php ... ?> tag เมื่อเราจะใช้ PHP แทนการเรียกใช้แบบอื่นๆ รวมทั้งการใช้ short tag ด้วย<? ... ?> อย่างนี้พยายามเลี่ยงครับ
    21.เขียนโค้ดให้ถูกต้องตามไวยากรณ์ เพื่อลด error ที่จะเกิดขึ้น ซึ่งหลายครั้งมันเป็นเพียง notice หรือ warning เท่านั้น จะทำให้ลด over head ไปได้ หรือว่าลองเปิด error_reporting(E_ALL) เพื่อให้เห็น error แบบเต็มๆเปิดไว้เถอะครับ เขียนให้ถูกต้องเสมอ อย่าซ่อนขยะใต้พรม
    22.การแสดงผลแบบ PHP ทำให้หน้าเว็บช้ากว่า static page 2-10 เท่า (ใน apache httpd) ดังนั้น ใช้ php เท่าที่จำเป็น ถ้าหน้าไหนเป็น static ก็ใช้ .html ไปเลย
    23.PHP script จะต้องถูกประมวลผลทุกๆครั้งที่มีการเรียกใช้หน้าเว็บ ถ้าไม่มี cache ดังนั้นควรหาระบบ cache มาใช้(เช่น memcached, eAccelerator , Turck MMCache) เพื่อเพิ่มประสิทธิภาพการทำงานได้ 25-100% เพราะว่าจะลดเวลาการประมวลผลลงได้ นอกจากนี้ยังมีพวกที่ทำ file cache ด้วยนะครับ คือประมวลผลเสร็จ เก็บผลที่ได้เป็นไฟล์เลย
    24.ใช้เทคนิคการทำ cache แบบอื่นๆสำหรับหน้าเว็บที่ไม่ได้มีการเปลี่ยนแปลงมากนัก การทำ cache มันจะเหมือนการแสดงผล HTML ออกหน้าเว็บธรรมดา ลองใช้พวก Smarty หรือ Cache Lite ดู การทำ cache จะได้ผลดีสำหรับเว็บที่มี traffic มาก เปิดเว็บเยอะ หรือการเปิดแต่ละครั้งต้องใช้การประมวลผลอย่างหนัก
    25.พยายามใช้ isset แทนการใช้ strlen เช่น
    1if (strlen($foo) < 5) { echo “Foo is too short”;}
    ก็ควรเปลี่ยนมาเป็น
    1if (!isset($foo{5})) { echo “Foo is too short”; }
    อย่างน้อยก็ลดการใช้ strlen ได้เลยล่ะ
    26.++$i เร็วกว่า $i++ หรือว่า การเพิ่มค่าก่อนนำไปใช้นั่นเอง
    27.พยายามใช้ function ต่างๆที่ php มีให้เรา อย่าเขียน function มาใช้งานเอง แต่ถ้าว่างมาก ก็ไปเขียน C extension หรือ module ให้รู้แล้วรู้รอดไปเลย อันนี้ออกแนวเหน็บๆ แต่ก็จริง เพราะว่าถ้าเป็น C extension หรือ php module มันก็ทำงานได้เร็วกว่า php function ที่เราเขียนมาแน่นอน
    28.พยายามตรวจสอบการทำงานของโค้ดของคุณ เพื่อจะได้รู้ว่า ทำงานหนักมากน้อยขนาดไหน หรือใช้พวก Xdebug debugger ช่วยตรวจสอบภาพรวมก็ได้ถ้าเจอตัวแปรเหลือๆก็ unset ทิ้งตามระเบียบ
    29.เขียน document ให้โค้ดที่ตัวเองเขียนด้วย หลายครั้งกลับมาดูของตัวเอง แล้วมึนก็บ่อยไป โดยเฉพาะคนที่ไม่ได้ใช้ frame work ซึ่งมีอิสระในการเขียนโค้ด มักจะเจอประจำ
    30.หมั่นศึกษาการเขียนโค้ดในแบบที่ดี และแบบที่ผิดๆเอาไว้ ที่ต้องศึกษาแบบที่ผิด เราจะได้รู้ว่าแบบนี้ผิด และไม่ควรทำนั่นเอง
    31.พยายามเขียนโค้ดให้ตรงตามมาตรฐานให้มากที่สุด มันจะช่วยให้คนอื่นอ่านแล้วเข้าใจ รวมทั้งตัวเองด้วยเคยเจอเขียนแบบสับขาหลอกตัวเองมาแล้ว
    32.พยายามแยกส่วนโค้ดออกมา ให้ php แยกจาก HTML มากเท่าที่จะเป็นไปได้ เพราะว่าการเอาไปปนกันหมดนั้นมันจะทำให้งงมาก
    33.อย่าใช้ระบบ template ที่ซ้ำซ้อนเช่นพวก smarty โดยไม่จำเป็น php เองก็มี function ที่ทำงานคล้ายกัน ลองดู ob_get_content และ exact
    34.อย่าวางใจ ข้อมูลที่ได้มาจากการป้อนของ user เช่น form $_POST ให้ใช้ mysql_real_escape_string เมื่อใช้ mysql และ htmlspecialchars เมื่อแสดงผล HTML
    35.ด้วยเหตุผลด้านความปลอดภัย ไม่ควรแสดง path , extension และ configuration สู่สาธารณะ เช่นการ แสดง error หรือ phpinfo() ใน webroot
    36.ปิดการทำงานของ register_globals ไม่มีสคริปไหนในงานจริงที่เปิดใช้กันหรอก มีแต่สคริปแย่ๆและเก่าๆเท่านั้น อีกทั้ง register_globals ก็จะไม่มีอีกแล้วให้ php6 แต่ก็แปลก หนังสือสอน php ภาษาไทยส่วนใหญ่ชอบสอนให้ใช้ เซ็งจริงๆ
    37.ควรเก็บรหัสผ่าน มากกว่าเป็นตัวหนังสือดิบๆ อย่างน้อยควรเอารหัสผ่านไปเข้ารหัสเช่น MD5 หรือ sha1 ก็ได้นะ
    38.ใช้ ip2long() และ long2ip() เพื่อแปลงค่า ip v4 ให้เป็นเลขชนิด long แทนที่จะเก็บเป็น text ใน database ขนาด database ต่างกันชัดเจน
    39.ควรศึกษารายละเอียดที่เกี่ยวกับ PEAR ให้ดี เพราะว่าจะทำให้โค้ดมีมาตรฐานที่ดีมากขึ้น
    40.เมื่อใช้ header('Location:'.$url); จำไว้เสมอว่าต้องตามด้วยคำสั่ง die(); เพื่อป้องกันการหลุดของคำสั่ง เพราะหลายกรณีโดน hack แล้วก็โดนควบคุมให้ทำงานในแบบที่คิดไม่ถึงเลย (ถ้าไม่ die(); php จะทำงานเลยไปด้วยนะครับ)
    41.ใน OOP ถ้า method ใดเป็นชนิด static method ก็ให้ประกาศเป็นชนิด static ไปเลย จะทำให้เร็วขึ้นอีก 4 เท่า
    42.การเพิ่มค่าตัวแปรใน local OOP method นั้นเร็วที่สุด ใกล้เคียงกับการเรียก ตัวแปร local ของ function และการเพิ่มค่าตัวแปรแบบ globla ช้าเป็นเท่าตัวเมื่อเทียบกับ local
    43.การเพิ่มค่าของ object property (เช่น $this->prop++) ช้าเป็น 3 เท่าเมื่อเทียบกับ local variable
    44.การเพิ่มค่าให้กับตัวแปร local ที่ไม่ได้ประกาศไว้ก่อน ทำให้ช้ากว่าปกติ 9-10 เท่าเมื่อเทียบกับการประกาศไว้ก่อน
    45.การสร้างตัวแปร global แม้ว่าจะไม่ได้เอาไปใช้ใน function ก็ทำให้ช้าลง เพราะว่า php จะออกไปเช็คตัวแปร global ที่มีอยู่เสมอ
    46.จำนวน method ที่เพิ่มขึ้น ไม่ส่งผลต่อ performance (ถ้าใช้งานเท่าเดิม)
    47.method ใน derived classes ทำงานได้เร็วกว่า base class
    48.function ที่รับ 1 parameter แต่ใน function ว่างเปล่ามีลักษณะเหมือน การทำงาน $localvar++ 7-8 ครั้ง และถ้าเป็น method ลักษณะนี้ ก็เปรียบกับ $localvar++ 15 ครั้ง
    49.ไม่จำเป็นต้องทำทุกอย่างเป็น OOP มันจะทำให้เกิด overhead และ method, object จะทำให้เปลือง memory
    50.อย่าวางใจ ข้อมูลที่ได้มาจากการป้อนของ user เช่น form $_POST ให้ใช้ mysql_real_escape_string แทนการใช้ mysql_escape_string หรือ addslashs แต่ถ้า เปิด magic_quotes_gpc ไว้ ก็ให้ใช้ stripslashes ไว้ก่อน
    51.ระวังโดน header injection กับ function mail() form mail ที่หลายคน copy ตามเว็บมาใช้ มักจะโดนเอาไว้ใช้เป็นช่องทางส่ง email spam โดยที่เจ้าของเว็บไม่รู้ตัวเสมอๆ
    52.unset ตัวแปรของ database (อย่างน้อยที่สุดก็ password) ไม่จำเป็นตั้งใช้ หลังจากการเชื่อมต่อ เรียบร้อยแล้ว
    53.RTFM! ซะ แปลว่า Read The Fucking Manual หรือ อ่านคู่มือหน่อย อ่านได้ที่ http://th.php.net มีคำบรรยาย พร้อมตัวอย่างมากมาย

    credit: meewebfree.com

    ..อ่านต่อ..