Category: Web Development
ส่งอีเมลด้วย SendGrid
การส่งอีเมลเป็นหนึ่งในสิ่งที่เราทำกันบ่อยๆ บนเว็บไซต์ ซึ่งท่าที่โปรแกรมเมอร์ PHP ชาวไทยใช้กันบ่อยๆ ก็คือเอา SMTP ของ Gmail มาใช่ส่งเมลผ่าน SMTP ด้วยไลบรารี่อย่าง PHPMailer ปัญหาคืออีเมลที่ส่งออกไป มันจะเป็นแอดเดรสของ Gmail ที่เราเอา SMTP มาใช้ส่ง ซึ่งความน่าเชื่อถือมันต่ำมาก และในบางครั้งที่เราต้องส่งอีเมลจำนวนมาก ก็อาจจะติดลิมิตที่ 500 อีเมลต่อวัน และไม่สามารถขยายเพิ่มได้ตามความต้องการ (เว้นแต่จะขยันมานั่งเปลี่ยน SMTP เองทุกครั้งที่มันเต็ม)
การใช้ @media print ในการกำหนด CSS สำหรับพิมพ์และ PDF
เว็บเบราเซอร์และระบบปฏิบัติการต่างๆ ในตอนนี้ล้วนรองรับการเซฟหน้าเว็บออกมาเป็น PDF ผ่านฟีเจอร์การพิมพ์กันหมดแล้ว แต่โดยปกติเมื่อเราพิมพ์หน้าเว็บออกมา (หรือในที่นี้คือเซฟออกมาเป็น PDF) เรามักจะได้หน้าตาเว็บที่ไม่ตรงกับเว็บจริงเท่าไหร่นัก ทำให้บางครั้งในฟีเจอร์ที่ต้องพิมพ์หรือสร้าง PDF ออกมา เราก็มองข้ามการพิมพ์เป็น PDF ไปเลย แล้วไปหาไลบรารี่สำหรับสร้างไฟล์ PDF โดยตรงมาใช้แทน
การทำ Routing ใน PHP ด้วย AltoRouter
โดยปกติแล้ว PHP จะทำงานร่วมกับเว็บเซิร์ฟเวอร์อย่าง Apache หรือ Nginx ที่เราสามารถเรียกใช้ไฟล์ PHP ผ่าน URL โดยตรงได้เลย เช่นเราอยากเรียกไฟล์ post.php ขึ้นมาทำงาน ก็สามารถเรียกผ่าน URL https://domain.com/post.php ตรงๆ ได้เลย แต่พอเมื่อเราโดดไปเขียนภาษาอื่น ไม่ว่าจะ ASP.NET MVC หรือของยอดนิยมในตอนนี้อย่าง Node.js เราจะเจอวิธีการกำหนด URL อีกแบบ ที่เราต้องไปกำหนดแพทเทิร์นของ URL ระบุว่า URL มาในลักษณะนี้จะเรียกหน้าไหนมาแสดง เราเรียกวิธีกำหนด URL แบบนี้ว่าการทำ routing เรามักจะเห็นการทำ routing แบบนี้เมื่อเราใช้เฟรมเวิร์กสักตัวในการสร้างเว็บไซต์ แต่จริงๆ แล้วมันก็มีเป็นไลบรารี่สำเร็จรูปให้เราติดตั้งใช้งานได้เช่นกันในกรณีที่เราอยากทำโปรเจ็กท์เล็กๆ แบบไม่ใช้งานเฟรมเวิร์ก
ทำเว็บให้รองรับ Dark mode ของระบบปฏิบัติการ
ยุคนี้สมัยนี้ Dark theme กำลังมาแรง ระบบปฏิบัติการต่างๆ ทั้ง Windows 10, macOS, Android, และ iOS ต่างรองรับการสลับไปใช้ Dark theme กันที่ระดับระบบปฏิบัติการ และแอพต่างๆ บนระบบปฏิบัติการเหล่านี้จำนวนมากก็รองรับการสลับไปใช้ Dark theme แบบอัตโนมัติตามธีมของระบบปฏิบัติการเช่นกัน สำหรับคนทำเว็บ เราก็สามารถทำเว็บให้รองรับการสลับธีมอัตโนมัติได้ด้วยเช่นกันผ่าน media query ที่ชื่อว่า prefers-color-scheme
ลองใช้งาน WordPress Cloud ของ Bangmod Cloud
หลายท่านน่าจะทราบดีว่าเราค่อนข้างอวย Cloudways แบบสุดลิ่มทิ่มประตู ซึ่งล่าสุดนี้ผู้ให้บริการชื่อดังในไทยอย่าง Bangmod Cloud ก็เปิดให้บริการ WordPress Cloud ออกมาด้วยเช่นกัน เราจึงลองเข้าไปใช้งานเฉพาะส่วน WordPress Cloud นี้ แล้วมาเขียนสรุปเทียบกับ Cloudways ให้อ่านกัน วิธีเปิดใช้งาน พร้อมย้ายเว็บจากโฮสต์เดิมเข้าสู่ Cloudways ในโพสต์นี้เราจะขอพูดถึงฟีเจอร์ของบริการเป็นหลัก ในแง่ของประสิทธิภาพและบริการสนับสนุนนั้นเราค่อนข้างเชื่อในชื่อเสียงของ Bangmod Cloud อยู่แล้ว คงไม่ต้องอธิบายอะไรมากมายนัก
การใช้ Laravel Mix สำหรับคอมไพล์ CSS และ JavaScript ใน WordPress และโปรเจ็กท์ standalone
เราเข้าสู่ทศวรรษที่ 20s แล้ว เรามีเครื่องมือช่วยอำนวยความสะดวกในการทำเว็บเยอะแยะมากมาย หนึ่งในนั้นคือบรรดา CSS Preprocessor ทั้งหลายไม่ว่าจะเป็น SASS, LESS, หรือ Stylus รวมไปถึงฟีเจอร์ใหม่ๆ ใน JavaScript ที่เพิ่มเข้ามาใหม่อย่างรวดเร็วจนเบราเซอร์ตามกันไม่ค่อยทัน กำแพงสำคัญอย่างหนึ่งที่ทำให้หลายคนยังไม่ก้าวไปใช้เครื่องมือเหล่านี้สักทีนั่นคือความยุ่งยากในการตั้งค่าเครื่องมือในการคอมไพล์ (หรือทรานสไพล์) ภาษาเหล่านี้ให้เป็นโค้ดที่เบราเซอร์ส่วนใหญ่ในตลาดสามารถเอาไปใช้งานได้ เออ พูดถึงแกนั่นแหละนัง Webpack ทางออกหนึ่งคือไปใช้ starter theme ที่ตั้งค่าพวกนี้มาให้แล้วอย่างเช่น Sage 9 เขียนธีม WordPress บนเทคโนโลยีสมัยใหม่ด้วย Sage 9 – ตอนที่ 1 แนะนำ Sage 9 เขียนธีม WordPress ด้วย Sage 9 – ตอนที่ 2 ระบบจัดการแพ็คเกจ เขียนธีม WordPress ด้วย Sage 9 – ตอนที่ […]
4 ฟีเจอร์ใหม่ใน PHP 7.4 ที่ช่วยให้เขียนโค้ดสะดวกขึ้น
ในขณะที่เรายังหาทางแก้ปัญหา call to undefined function: mysql_pconnect() กันอยู่ PHP 7.4 รุ่นเสถียรก็ได้ปล่อยออกมาให้เราได้ใช้งานกันแล้วเมื่อวันที่ 28 พฤศจิกายนที่ผ่านมา ฟีเจอร์หลายๆ อย่างใน PHP 7.4 จะเน้นไปที่การทำให้เราสามารถเขียน PHP ได้สะดวกขึ้น โค้ดกระชับและอ่านง่ายขึ้น และมีฟีเจอร์ด้าน performance เพิ่มมาด้วยเช่นกัน (ส่วน JIT ต้องรอ PHP8 เหมือนเดิมนะ) วันนี้เราจะพาไปดูกันว่าฟีเจอร์ใหม่ๆ ที่น่าสนใจใน PHP 7.4 นั้นมีอะไรบ้าง
ใช้ Guzzle ในการเชื่อมต่อ API แทน cURL
เครื่องมือคู่บุญอย่างหนึ่งของชาว PHP นั่นคือฟังก์ชัน cURL ที่ว่ากันตามตรงก็ถือว่ามีฟีเจอร์ที่ครบถ้วนสมบูรณ์มากๆ อยู่แล้ว แต่ข้อเสียที่น่ารำคาญอย่างหนึ่งของ cURL นั่นก็คือโค้ดค่อนข้างยาว และอ่านยาก! (เชื่อว่าหลายๆ คนน่าจะเคยงงกับ curl_setopt() ว่าโค้ดหน้าตาแปลกๆ นี้ทำอะไรของมัน) วันนี้จะมาแนะนำทางเลือกหนึ่งที่โค้ดอ่านง่ายกว่า นั่นก็คือ Guzzle
การเชื่อมต่อฐานข้อมูล MySQL บน PHP
Fatal error: Uncaught Error: Call to undefined function mysql_connect() PHP7 ได้กล่าวไว้ ถ้าคุณเพิ่งจะหัดเขียน PHP แล้วเจอข้อผิดพลาดข้างบน นั่นเป็นเพราะว่าตั้งแต่ PHP 7.0 เป็นต้นมา (ถ้าไม่มีเหตุจำเป็นจริงๆ ไม่มีใครใช้ PHP5 กันอีกแล้วเนอะ) ส่วนขยาย mysql ได้ถูกนำออกไปจาก PHP โดยสมบูรณ์ ทำให้ฟังก์ชันกลุ่ม mysql ทั้งหมด เช่น mysql_connect(), mysql_pconnect(), mysql_query(), mysql_fetch_assoc() และอีกสารพัด จะไม่สามารถใช้งานได้แล้วนั่นเอง แต่อย่าเพิ่งตกใจไป PHP ได้เอาส่วนเสริมตัวใหม่สำหรับ MySQL เข้ามาแทน นั่นคือ mysqli หรือ MySQL Improved ที่ compatible กับโค้ดเดิมเกือบจะ 100% เพียงแค่เปลี่ยนชื่อฟังก์ชันจาก mysql_xxx เป็น mysqli_xxx […]
การใช้ PSR-4 autoload ใน Composer
ข้อดีอย่างหนึ่งในการเขียนการฟีเจอร์ต่างๆ แยกมาเป็นคลาสคลาสหนึ่ง คือเราสามารถเก็บค่าทุกค่า ฟังก์ชันทุกฟังก์ชัน เอาไว้แค่ในตัวมันได้โดยไม่ต้องกลัวว่ามันจะไปตีกับค่าเดียวกันหรือฟังก์ชันเดียวกัน (จริงๆ มันเรียกว่า property กับ method) ที่อยู่ในคลาสอื่น หรือที่เขาเรียกกันว่า encapsulation ตัวอย่างการทำ encapsulation ที่เราเคยเขียนไว้ คือการใช้ ACF ทำบล็อก Gutenberg แต่ข้อเสียอย่างหนึ่งของการทำ encapsulation นั่นคือเราต้องมานั่ง include ไฟล์คลาสจำนวนมาก (ยิ่งเขียนเยอะยิ่ง include เยอะ) ซึ่งถึงจุดหนึ่งแล้วมันจะกลายเป็นเรื่องน่ารำคาญขึ้นมาแทน แต่เราก็มีทางออก คือการทำ PSR-4 Autoloading