Archive for the ‘PHP’ Category

Hasing algorithm

วันนี้ขอพูดเรื่อง performance อีกสักที สำหรับคนที่เคยจับ application ที่ใหญ่ๆ หน่อย ที่มีจำนวน file upload มหาศาล หรือ เอาง่ายๆ แค่หลัก 2-3 หมื่นขึ้นไป ก็จะเห็นได้ว่า หลังจากนั้น application จะทำงาน ค่อยๆ ช้าลงๆๆๆ จนในที่สุด ก็ทะลุ node ที่เป็น limit ของ UNIX ไป (จำไม่ได้ 5 หรือ 6 หมื่นนี่ล่ะ)
วิธีแก้ที่ดีที่สุดก็คือการ ซอย folder ออกเป็น ย่อยๆ เพื่อไม่ให้ไฟล์ ไปรวมกันอยู่ที่เดียว เช่น

parent –

            |- child1

            [...]

Read the rest of this entry »

[แนวคิด] การทำ Multi languages ใน DB

อันนี้ออกตัวไว้ก่อนเลย ว่าเป็นแนวคิด ทีผมคิดเองทำเอง อาจจะไม่ได้มาตรฐานนักแต่สำหรับผม it work!
เรื่องการออกแบบ multi languages คิดว่าคงจะพอมีความรู้ความเข้าใจกันอยู่บ้าง ก็ แค่ทำไฟล์ แยก ออกไป
Dir: english
Dir: thai
จากนั้นข้างใน โฟลเดอร์ก็บรรจุ ไปด้วย perfix_lang.php โดยมีตัวแปร เหมือนกันทุกประการ และก็ เอาไป echo ออกก็เท่านั้นเอง
แต่ ถ้าเปลี่ยนมาเป็น content จาก db ล่ะ ซึ่งมัน fix field ไว้ จะไปเพิ่มเป็น title_thai, title_english มันก็ดูน่าเกลียด พิลึก เราจะแก้ปัญหาไงดี …

Read the rest of this entry »

เราจะให้บริการ Rss ยังไงดี?

ณ ขณะนี้ ยังคิดเรื่องที่จะเขียนเกี่ยวกับ jQuery ไม่ออก เอา PHP ไปอีกเรื่องละกัน แต่ขอเขียนแค่สั้นๆ ดีกว่า เหนื่อย!
RSS คิดว่าทุกคนรู้จักแน่นอน คือการให้บริการ Feed Data ซึ่งผู้ใช้งาน สามารถเอาไปอ่านได้ในหลายๆที่ อาทิ เช่น..
1. อ่านผ่าน Browser ที่ Support Rss
2. อ่านผ่านผู้ให้บริการต่างๆ เช่น friendfeed.com
3. อ่านโดยเขียน Javascript
4. อ่านโดยเขียน Server Side Script
แต่ที่จะมาแนะนำวันนี้คือการเขียน XML ใน Format Rss ซึ่งจริงๆ แล้วมันก็เป็น XML Format นึงเท่านั้น ซึ่ง ที่ Browser ส่วนใหญ่อ่านได้ จะเป็น มาตรฐาน Rss และ Atom

Read the rest of this entry »

ปัญหา file_get_contents กับ cookie

วันก่อนผมจำเป็นต้องใช้ function file_get_contents แต่ไม่สามารถ เรียกใช้หรือแสดง cookie ในหน้านั้นๆ ได้ นั่งมึน !-_- อยู่ตั้งนานกว่าจะหาวิธีได้
ก็จะเอามาให้เพื่อนๆ ดูกันด้วย เผื่อวันใด วัน หนึ่ง จำเป็นต้องได้ใช้กัน

$opts = array(‘http’ => array(‘header’=> ‘Cookie: ‘ . $_SERVER[‘HTTP_COOKIE’]."\r\n"));

 

$context = stream_context_create($opts);

 

$contents = file_get_contents([string filename], false, $context);

 

print $contents;

Read the rest of this entry »

มาทำ ตัวอักษรสวยๆ ด้วยเทคนิค Image Replacement

ก่อนจะเข้าเรื่อง ผมมีความยินดีที่จะบอกว่า jQueryTips.com ของเราได้นักขี่ยนเพิ่มมาอีก 1 คน นั่นก็คือ Bigchern ซึ่งจะมาเขียน Review Software และ Scripts ที่เป็นประโยชน์ต่างๆ ภายในเว็บแห่งนี้ อาทิเช่น..
วิธีติดตั้ง wordpress บน server จริง
ติดตั้งโปรแกรม Ftp ( File zilla )
และเร็วๆ นี้เรากำลังจะได้ตัว นักเขียนอีกคนที่จะมา เขียนเรื่อง Performance ภายในเว็บ ยังไง รอติดตามละกัน
เอาล่ะมาเข้าเรื่องกันเดี๋ยวจะไม่ได้นอน หลังจากที่ครั้งก่อนผมเคยแนะนำ เทคนิค sIFR จากบทความ

Read the rest of this entry »

จากประสบการณ์จริงของ Developer ตัวน้อยๆ

ก่อนจะเลื่อนไปอ่านบทความนี้ทางด้านล่าง ผมจะบอกไว้ก่อนว่า คราวนี้ไม่ใช่ เทคนิค หรือวิธี พัฒนาโปรแกรมอะไรก็ตามแต่ เพราะว่ามันเป็น “เรื่องของผมล้วนๆ”
เป็นการนำเสนอ จาก ประสบการณ์ตรงที่อยู่ในวงการ web application มานาน หลายปีดีดัก ซึ่ง หลายคนอาจจะมองว่า ถูกบ้าง ผิดบ้าง ก็แล้วแต่กันไป อันนี้ผมไม่ได้ขอให้ใครมาทำตาม แต่ประการใด เพราะว่าเรื่องของการพัฒนา ชื่อมันก็บอกอยู่แล้วว่า ต้องพัฒนากันต่อ ไม่ได้เป็น พิมพ์เขียว ใดๆ ทั้งสิ้น
สรุปเลยละกัน วันนี้ผมจะมาตั้งสติ นึกทบทวนว่าในการทำ web app แต่ละตัว นั้นผมลงมือ ลำดับการทำงาน ก่อนหลังยังไงบ้าง….

Read the rest of this entry »

Simple HTML DOM Parser มันคือ jQuery’s selectors ดีๆ นี่เอง

ไปเจอของดีมาครับ เป็น PHP Library ที่ทำงานในลักษณะ คล้ายๆกับ Selectors ของ jQuery แต่ว่าเป็น PHP ซึ่งเรียกให้ถูกมันก็คือ HTML DOM Parser น่ะแหละครับ ซึ่งการใช้งานค่อนข้างง่าย เล่นเอาลืม Regexp ไปเลย
เดี๋ยวนี้ เว็บไซด์ส่วนใหญ่นั้น จะเขียนกันในรูปแบบ XHTML ซึ่งมักจะมาการระบุ Class หรือ Id ให้กับ Elements เกือบทั้งหมดอยู่แล้ว ซึ่งบางที ถ้าเราจะทำการ Get Content ที่อยู่ในช่วง tag ของมัน เราก็มักจะใช้ความสามารถของ Regular Expression (Regexp) โดยส่วนใหญ่ แต่…..
ชีวิตคุณจะสบายขึ้น ถ้าไปรู้จักกับ Lib ตัวนี้ ที่จะไม่ต้องมานั่งปวดหัวกับการคิด regexp อีกต่อไป เพราะว่า มันเขียนมาให้เกือบหมดแล้ว
เท่าที่ไปลองไล่ lib มาก็เห็นว่าใช้ความสามารถของ [...]

Read the rest of this entry »

เปลี่ยนใจใช้ Zend Cache

สวัสดีช่วงนี้ มาอัพเดทถี่เลย สงสัยดีใจใกล้จะ เทศกาลสงกรานต์ เนื้อหาใน jQuery ตอนนี้มันเริ่มจะ จับฉ่ายละ 555+ ก็ทำใจหน่อยนะครับ ผมเป็นคนที่ ตอนไหนสนใจอะไร ก็จะเขียนเรื่องนั้น แต่ยังไง ก็ไม่ทิ้ง jQuery แน่ๆ น่า ไม่ต้องห่วงๆ
พอดีตอนนี้กำลังเล่น Zend Framework และได้ทีโอกาสลอง Libraries หลายๆ ตัวของ มัน โดยเมื่อวานผมได้ลองเรื่อง Cache ไป ซึ่งก่อนหน้านั้น ผมเขียน lib ชุดนี้ขึ้นใช้เองครับ โดยทำงานกับ File, APC, Memcached ซึ่งก็ไม่ได้มีปัญหาอะไร แต่ทีนี้พอได้มาลอง Zend_Cached ดู ก็ถึงกลับโละของเก่าออกเลยครับ เปลี่ยนทันที เพราะว่า lib ตัวนี้ทำงานได้ค่อนข้างละเอียด และ ยัง cache ได้หลายแบบ ดังนี้

Read the rest of this entry »

วันนี้ลองเปลี่ยนแนวมา Review หนังสือกัน

ก่อนอื่นต้องขอออกตัวก่อนเลยนะครับ ว่าผมไม่ได้รู้จัก คนเขียน(แปล) หนังสือเล่มนี้เป็นการส่วนตัวแต่อย่างใด และก็ไม่ได้ค่า โฆษณา มาจากที่ไหนด้วย แต่ที่จะมา Review ก็เพราะ ถูกใจครับ เท่านั้นเอง !
คิดว่าเพื่อนๆ หลายคนคงเคยไปเปิดหนังสือ Text Book ของ PHP ที่เป็นภาษาไทยตามร้านหนังสือใหญ่ๆ ที่ให้ยืนอ่านฟรีๆ ได้นานๆ ใช่มั้ยครับ ซึ่งผมบอกเลยผมเปิดมาอ่านแค่ สารบัญก็ปิดแล้ว ไม่ได้ซื้อหนังสือ พวกนี้มาไม่รู้กี่ปี จะมีบ้างก็เป็น Text Book ที่เป็น ภาษาอังกฤษบางเล่ม ซึ่งผมก็ไม่ได้ไปอ่านมันหมด ส่วนมากจะเปิดๆ อ่านโคด บ้างเท่านั้นเอง อ่านไปอ่านมา ก็รู้สึกว่า จะเปิด พจนานุกรม มากกว่าหนังสือ ที่ซื้อมาซะอีก (ฮา)
ที่ไม่ได้อ่านหรือ ไม่ได้ซื้อมาไม่ใช่ว่าหนังสือเค้าไม่ดีนะครับ บางเล่มก็เขียนได้ดีทีเดียว เข้าใจง่าย มากๆ แต่ผมไม่รู้จะซื้อมาทำไมก็ในเมื่อ 4-5 ปีที่แล้วที่ผมซื้อมา มันก็เนื้อหาทำนองเดียวกัน ทั้งนั้น แล้วก็ส่วนมากจะเป็นออกแนว Basic ซะมากกว่า ไปหาเอาใน [...]

Read the rest of this entry »

มากำหนดสิทธิการเข้าถึงด้วย Zend ACL กันดีกว่า

วันก่อนไปนั่งดู libraries ของ Zend ก็ได้ลองไปหลายตัวเหมือนกัน ส่วนมากจะโดนใจ ทั้ง DOM, Rest, Akismet, Recaptcha, Paginator คือเอาเป็นว่าลองตัวไหน ก็ไม่ผิดหวังเลยจริงๆ แต่ที่ จะมาพูดวันนี้เป็น lib ที่เกี่ยวกับการกำหนด สิทธิการเข้าใข้งานครับ มี ชื่อว่า “Zend_Acl”
ซึ่งเป็นชุด lib ที่ใช้กำหนดระดับความสำคัญในการเข้าถึงข้อมูลส่วนต่างๆ ใน เว็บไซด์ ที่มีความสำคัญและต้องการความปลอดภัยในระดับนึง เช่น admin area เป็นต้น
โดยคำว่า ACL ย่อมาจาก Access control list นั่นเอง

Read the rest of this entry »