Skip to content


วันแรกของเดือน วันสุดท้ายของเดือน เป็นวันอะไรนะ

วิธีหาว่าวันแรกของเดือนเป็นวันอะไร หรือวันสุดท้ายของเดือนเป็นวันอะไร ง่ายมาก วิธีตรงไปตรงมา เราประยุกต์ใช้ฟังก์ชั่น 2 ฟังก์ชั่นคือ strtotime() กับ date() ผลที่ได้จะออกมาแบบนี้

Continued…

Share

Posted in PHP, Souce Code.

Tagged with , .


พิมพ์ไปทำตัวใหญ่ไปไม่ยากอย่างที่คิด

ในภาษาอังกฤษ การทำให้ตัวอักษรเป็นตัวอักษรใหญ่ (เช่น a->A) เรียกว่าการทำให้เป็น Uppercase แต่ถ้าทำให้เป็นตรงกันข้าม เราเรียกว่าทำ Lowercase แต่ในหลาย ๆ ครั้ง เราจะเห็นการทำตัวอักษรเฉพาะตัวแรกให้เป็นตัวใหญ่ ส่วนที่เหลือเป็นตัวเล็ก แบบนี้เราจะเรียกว่า Capitalize

Continued…

Share

Posted in CSS.

Tagged with , , , .


Magic Methods เรียกใช้พี่สิจ๊ะ แล้วน้องจะสบาย

Magic methods คืออะไร ทำไมผมถึงเกริ่นหัวว่ามันจำอำนวยความสะดวกสบายขนาดนั้น

Magic method เป็น method ใน class ทั่วไปที่จะถูกเรียกก็ต่อเมื่อเกิดเงื่อนไขอย่างใดอย่างหนึ่งที่ตรงกับ method นั้น ๆ ในความเป็นจริงแล้ว magic methods นั้น ไม่ได้มีอะไรวิเศษไปกว่า method ธรรมดาเลย เรียกให้ง่ายก็คือจริง ๆ แล้ว ตัว magic method ก็คือ method ธรรมดานี่แหละ เพียงแค่ว่า มันไม่ได้ถูกเรียกตรง ๆ เหมือนกับการเรียกใช้งาน method อื่น ๆ แต่อย่างที่บอกตอนต้น คือเมื่อเกิดเหตุการณ์ที่มีเงื่อนไขตรงแล้ว method นี้จะถูกเรียกโดยอัตโนมัติ

Continued…

Share

Posted in Object Oriented, PHP, Uncategorized.

Tagged with , , .


Transaction ใน Database นั้นสำคัญไฉน

โพสนี้ว่าด้วยเรื่องทฤษฎีเกี่ยวกับ transaction ใน database ล้วน ๆ พร้อมตัวอย่างประกอบให้เห็นนิดหน่อยครับ

สืบเนื่องจากโพสก่อนหน้านี้ผมพูดถึง database engine ใน MySQL ไป โดยอธิบายไปว่า บางชนิดจะสนับสนุน transaction แต่บางชนิดไม่สนับสนุน แถมยังเอาลิงก์เกี่ยวกับ transaction ทิ้งไว้ให้ไปอ่านเองอีกด้วย โพสนี้เลยจะขออนุญาตมาขยายความเรื่องเกี่ยวกับ transaction ให้เห็นภาพชัดเจนมากขึ้นกันดีกว่า

Continued…

Share

Posted in Database, MySQL, Uncategorized.

Tagged with , , , .


ทำความรู้จักกับ Storage Engine ของ MySQL กันหน่อย

MySQL พูดชื่อนี้ ผมว่า developer หลาย ๆ คน ก็คงต้องรู้จักฐานข้อมูลยอดนิยมตัวนี้ แต่จะมีใครรู้บ้างว่า MySQL เนี่ย มันมี storage engine ให้เลือกใช้หลายแบบนะ แล้วแบบไหนที่เหมาะกับงานของเราล่ะ? (ใครไม่รู้จักว่า storage engine นั้นหมายถึงอะไร database engine เรียกง่าย ๆ ก็เหมือนชนิดของฐานข้อมูล สาเหตุที่เราต้องเลือกชนิด engine ให้เหมาะสมนั้น เปรียบเทียบง่าย ๆ ว่า มันก็เหมือนกับเสื้อผ้า เสื้อผ้ามีหลายประเภท เราใส่ออกไปนอกบ้านได้ทุกแบบ แต่แบบไหนที่เหมาะกับกาลเทศะ และงานที่ทำ อย่างเช่น ชุดกันไฟกับงานนักดับเพลิง จะให้ใส่สูทไปดับไฟก็ได้ แต่มันไม่ถนัด…)

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

Continued…

Share

Posted in MySQL, Uncategorized.

Tagged with , .


Sync ข้อมูลจำนวนนับจากตารางอื่นด้วย subquery

ถ้าว่าตามทฤษฎีฐานข้อมูลแล้วนั้น การ Normalization ตารางเพื่อลดความซ้ำซ้อนของข้อมูล (Redundancy) เป็นสิ่งที่จำเป็นมาก แต่ในการใช้งานจริง การ Normalization ที่มากเกินไป อาจจะก่อผลเสียได้ ยกตัวอย่างเช่น หน้าแสดงกระทู้ในเว็บบอร์ด X จะแสดงข้อมูลจำนวน comment ที่สมาชิกเข้ามาตอบในหัวข้อนั้น ๆ ถ้าเราทำ Normalization ตารางของเว็บบอร์ดตามทฤษฎี โดยให้ตารางที่เก็บความคิดเห็น (comment) แยกจากกระทู้ (topic) ในตาราง comment มี Foreign Key ชื่อว่า topic_id ที่เชื่อมอยู่กับ Primary Key ที่ชื่อ id ในตาราง topic เราจะเห็นได้ว่าข้อมูลจำนวนของ comment เราสามารถที่จะทำ subquery ออกมาแสดงผลได้ ยกตัวอย่าง (แบบไม่คิดอะไรมาก) เช่น

SELECT  *, (SELECT count(  *  ) FROM comment WHERE topic_id = t.id) rcount FROM  `topic` t

Continued…

Share

Posted in MySQL, Performance Tuning.

Tagged with , , .


สร้าง dynamic object แบบ runtime

จริง ๆ ใน php วิธีการสร้าง object นั้น สำหรับคนที่เคยเขียน class มาแล้ว มันไม่ใช่เรื่องยากอะไรเลย แค่ใช้ keyword ว่า new เท่านั้นเองครับ เรื่องที่ผมจะคุยต่อจากนี้ เป็นเรื่องที่ไม่ได้ใหม่เลย แต่เป็นการนำสิ่งที่รู้อยู่แล้วมาประยุกต์ใช้ร่วมกันในกรอบที่หลาย ๆ คนอาจจะรู้จักดีอยู่แล้ว… Factory นั่นเองครับ

Continued…

Share

Posted in Performance Tuning, PHP, Souce Code.

Tagged with , , , .


เวลาตอนนี้อยู่ในช่วงเวลานั้นหรือเปล่านะ…

ตอนนี้เป็นเวลา 17.40 แล้ว (ตอนที่เขียน) … เอ… เวลาตอนนี้อยู่ในช่วงเวลา 13.00 – 21.00 หรือเปล่านะ ก็ต้องใช่น่ะสิ เพราะว่า 13.00 <= 17.40 <= 21.00 นี่นา ใคร ๆ ก็รู้

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

entry นี้ เป็นไอเดียที่ผมไปได้มาตอนที่ไปประชุมวิชาการที่ญี่ปุ่นครับ ลองอ่านแล้วลองไปปรับใช้กันดูนะครับ

Continued…

Share

Posted in Algorithm, PHP.

Tagged with , , .


enable() กับ disable() ที่ขาดหายไปใน jQuery

คนใช้ jQuery น่าจะเคยเจอปัญหาเดียวกันคือ อยากจะ disable หรือ enable ปุ่ม ด้วย jQuery แต่ติดตรงที่มันไม่มี function มาให้ ทำให้เราต้องเขียนใช้งานเองบ่อย ๆ ปกติแล้ว ถ้าใช้ไม่เยอะ ผมจะเขียนตรง ๆ ง่าย ๆ เอา โดยจะเขียนประมาณนี้ครับ

$('#selector').attr('disabled','disabled'); // สำหรับ disable
$('#selector').removeAttr('disabled'); // สำหรับ enable

Continued…

Share

Posted in jQuery, Plugins.

Tagged with , , .


jQuery 1.4.4 Cheat Sheet

Cheat Sheet ในที่นี้ อธิบายให้เห็นภาพชัด ๆ ก็คงหมายถึงโพยที่ใช้แอบเอาเข้าห้องสอบครับ (ใครเคยทำมั่ง สารภาพมาซะดี ๆ) หน้าตาโพยปกติแล้วก็จะเป็นกระดาษแผ่นนึง จดมันทุกอย่างที่ต้องใช้สอบลงไป ใช่ครับ jQuery Cheat Sheet ที่ผมกำลังจะพูดถึงก็เป็นแบบนั้น

Continued…

Share

Posted in jQuery.

Tagged with , .