สร้างรหัสผ่านชั่วคราวของบัญชีกูเกิลด้วยฟีเจอร์ App Passwords

ตอนนี้หลายๆ คนคงเปิดใช้ 2-Step Authentication กันแล้ว  ไม่ว่าจะเป็นการรับ SMS หรือรหัสจากแอพ Authenticator แต่ทีนี้มันจะมีปัญหาอย่างนึงตามมานั่นก็คือบางบริการหรือบางโปรแกรมที่ต้องกรอกรหัสผ่านลงไปตรงๆ จะไม่สามารถใช้งานได้ขึ้นมาซะงั้น

ในกรณีของ Facebook มันจะ SMS รหัสผ่านชั่วคราวมาให้ใช้ (ไม่รู้เดี๋ยวนี้ยังมีอยู่หรือเปล่า) แต่ว่ากับบัญชีของกูเกิล  มันจะมีฟีเจอร์ที่เรียกว่า App Passwords ให้เราสามารถกดสร้างรหัสผ่านชั่วคราวขึ้นมาได้  เพื่อให้เอาไปกรอกกับแอพพวกนี้นั่นเอง

Read More

เกมออนไลน์ MMORPG ดีๆยังมีอยู่ในโลก: มาเล่น Guild Wars 2 กัน

ผมจำได้ว่าผมเล่นเกมออนไลน์แนว MMORPG มาตั้งแต่สมัยประถม (ช่วงนั้นก็ Ragnarok Online และ MU Online ในมือของ New Era ที่มีทีมบริหารชุดเก่า) เล่นมาเรื่อยๆตั้งแต่สมัย Air Time จนมาถึงยุค Item Mall ที่เกมดีๆ กลายเป็นเกม Pay2Win ไปหมด  ผมจึงหันหลังให้ MMORPG ไปพักใหญ่ๆ และไปหมกอยู่ในเกมออฟไลน์ (สมัยนั้นเรียกกันว่าเกมกล่อง) และ CS:GO ในสตีมแทน

ช่วงปีกว่าๆ มานี้ผมได้ไปเล่นเกมออนไลน์ต่างประเทศเกมหนึ่ง (เอาที่แน่นอนก็คือ 17 เดือน) ซึ่งมันเป็นเกมที่ทำให้รู้สึกว่า เออเว้ย เกม MMORPG ดีๆ มันก็ยังเหลืออยู่ในโลกนี้

เกมที่ว่านั่นคือ Guild Wars 2

Read More

รู้จักกับ HTTP Request ประเภท PUT และ DELETE

คนทำเว็บที่ได้ไปยุ่งกับการเขียน HTTP Request (ซึ่งมักจะได้ไปยุ่งกับตอนได้เขียนเว็บเชื่อมกับ API ของอะไรสักอย่าง) คงเคยเห็นเมธ็อดหลักๆทั้ง 4 ประเภท  คือ GET POST PUT และ DELETE แต่เรามักจะได้ใช้กันแค่ GET และ POST เท่านั้น  แต่เรากลับไม่ค่อยได้ใช้ PUT และ DELETE กันเลย

GET และ POST

โดยทั่วไปเรามักจะได้ทำงานกับ GET และ POST เท่านั้น  โดย GET จะเป็นการส่ง URL ร้องขอข้อมูลไปตรงๆ  เช่น

GET http://application.api/user/10012

หรือการส่งไปพร้อมกับคิวรี่สตริงใน URL เช่น

GET http://application.api/search/?keyword=camera

ส่วน POST จะเป็นการส่งข้อมูลกลับไปหาแหล่งข้อมูลที่มีอยู่แล้ว  เช่น

POST http://application.api/user/create

โดยมันจะส่งข้อมูลชุดหนึ่งแนบไปด้วย  อย่างในกรณีตัวอย่างนี้คือจะส่งข้อมูลสำหรับให้สร้าง User ใหม่ไปด้วยนั่นเอง

Read More

การเขียน Widget สำหรับ WordPress

Widget โดยนิยามแล้วมันคือกล่องเล็กๆ ที่ไว้สำหรับแสดงข้อมูลเพิ่มเติมบน Sidebar (เช่นโพสต์ล่าสุด, กล่องค้นหา, รายการแท็ก, ฯลฯ) ซึ่งตัว WordPress เองก็ได้เตรียมวิดเจ็ตเอาไว้ให้เราจำนวนหนึ่ง  และปลั๊กอินหลายๆ ตัวก็มาพร้อมกับวิดเจ็ตด้วยเช่นกัน  แต่โดยปกติแล้ววิดเจ็ตเหล่านี้มักจะปรับแต่งอะไรได้ไม่มากนายนัก  ทำให้บางครั้งก็ค่อนข้างลำบากในการเอามาใส่ให้เข้ากับเว็บที่ทำอยู่

เนื่องจากงานสองสามงานล่าสุดที่ผมทำนั้นมีการต้องเข้าไปเขียน Widget เพิ่มเติมด้วย (เว็บ TechSauce) โดยเหตุหลักๆ คือวิดเจ็ตที่มากับ WordPress เองนั้นมันหน้าตาไม่เข้ากับ Design นั่นแหละ  ดังนั้นไหนๆ ก็ไหนๆ เอามาลงบล็อกเลยแล้วกัน

คลาสขยาย WP_Widget

Widget ใน WordPress นั้นจะเขียนขึ้นมาในลักษณะ OOP โดยขยายจากคลาส WP_Widget อีกต่อครับ   อ้ออย่าเพิ่งกลัวกับ OOP ครับ  ไม่ยากหรอก   เขียน Widget นี่มันแค่เขียนฟังก์ชันหน้าตา  ฟังก์ชันกล่องตั้งค่า  ฟังก์ชันเซฟค่า  แล้วก็ครอบมันด้วยคลาสโง่ๆ อันนึงแค่นั้นเอง (จริงๆ มันเขียนเป็น Procedural ได้ … แต่ผมไม่เคยเขียนวิดเจ็ตเป็น Procedural ครับ :v ) ไปลองดูโครงสร้างกัน

Read More

Action และ Filter ใน WordPress ต่างกันอย่างไร?

ในเวิร์ดเพรสนั้นจะมีวิธี Hook การทำงานอยู่ 2 แบบ  คือผ่าน Action และ Filter ซึ่งการทำงานของทั้ง Action และ Filter นี่มันคล้ายกันมาก … ไม่สิ  จริงๆ มันเหมือนกันเลย!!

ไม่เชื่อลองไปเปิดไฟล์ wp-includes/plugin.php ดูแถวๆ บรรทัดที่ 400 กว่าๆ (ตอนนี้ 4.1.1 ก็อยู่ที่  429) จะเจอการประกาศฟังก์ชันเอาไว้ดังนี้

function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
	return add_filter($tag, $function_to_add, $priority, $accepted_args);
}

ครับ add_action() มันก็เป็น wrapper ธรรมดาๆ ของ add_filter() นั่นแหละ … อ้าว! แล้วมันต่างกันยังไง?

Read More