ข้ามไปที่เนื้อหาหลัก

บทความ

การทำ Login with Facebook ด้วย PHP SDK 4.00

สืบเนื่องมาจากต้องเพิ่มระบบ Facebook Login ลงใน Project ก็ทำโดยใช้ตัวแนะนำจากทาง Facebook นั่นคือ Javascript SDK ซึ่งก็สามารถทำงานได้ปกติ แต่ทว่า .... https://developers.facebook.com/bugs/325086340912814/ Javascript SDK ไม่รองรับ Google Chrome บน IOS พระเจ้าช่วยกล้วยทอดงานเข้าเลยทีนี้ ก็เลยไปหาวิธีแก้เผื่อว่าจะมีหนทาง แต่ทว่าคำตอบที่ได้คือ เปลี่ยนไปใช้ใน SDK อื่นๆ โดย Developer หลายสำนักได้แสดงความเห็นว่า "อย่างที่ทราบดี ว่า Chrome บน IOS นั้นมันไม่รองรับ Javascript API แล้วที่สำคัญใช้ IOS ทำไมถึงไม่ใช้ Safari แทนล่ะ? ถ้าเกิดว่าต้องการจะแก้จริงๆ จะง่ายกว่ามั้ยถ้าหาก Developer เปลียนไปเรียกใช้งาน PHP API แทนน่ะ" ซึ่งการทำ Login with Facebook ด้วย PHP SDK ที่หาได้ก็เป็นเวอร์ชันเก่า เพราะตอนนี้ Facebook ได้ปรับเวอร์ชันของ PHP SDK เป็น 4.00 แล้ว วิธีการเรียกใช้ก็แตกต่างออกไปจากเดิมมาก เพื่อไม่ให้ลืม ก็เลยจะมาเขียนบทความไว้ บทความนี้จะไม่อธิบายถึงขั้นตอนการสมัครเป็น Facebook Developer นะครับ ที่ต้องสมัครเพราะว่าเราจะต้องสร้าง Facebook App ขึ้นมาใช้สำหรับการทำ Login...

การ Configuration สำหรับการแสดง Output ในรูปแบบต่างของ Compass

เป็นที่ทราบกันดีว่า Compass คือ CSS framework ตัวหนึ่งที่รองรับการเขียน CSS สไตล์โปรแกรมมิ่งอย่าง SASS ได้อีกทั้งยังมีออพชันมากมายให้เลือกใช้ รวมไปถึง Bootstrap ด้วย เพราะมันสะดวกสบายแบบนั้น ทำไมล่ะ? ทำไมเราถึงจะไม่ใช้มัน วันนี้เลยอยากจะมาแนะนำวิธีการตั้งค่าการแสดงผล CSS หลังจากที่มันแปลงค่าจากไฟล์ .SCSS มาให้ ในส่วนนี้จะไม่ได้พูดถึงขั้นตอนการติดตั้ง สามารถเข้าไปดูขั้นตอนการติดตั้ง SASS ได้ ที่นี่ และขั้นตอนการติดตั้ง Compass ได้ ที่นี่ ซึ่งปกติถ้าเราไม่ได้ทำอะไรเลยหลังจากที่สร้างโปรเจ็ค หน้าตา Output ที่ได้ก็จะมีหน้าตาประมาณนี้ หน้าตาก็จะรกๆ ดูไม่ค่อยเหมือน CSS ในแบบที่เราอยากได้เท่าไหร่ ซึ่งความจริงแล้ว Compass สามารถตั้งค่าการแปลงโค้ดให้สวยได้ โดยไปแก้ไขไฟล์ config.rb โดยแก้ไขตามนี้

การใช้งาน Spin.js แสดงสถานะ Loading ของ Ajax โดยไม่ต้องใช้ไฟล์รูปภาพ

ปกติเวลาทำการรับ-ส่งข้อมูล ด้วย Ajax หรือ JSON มักจะมีช่วงที่ต้องแสดงสถานะว่ากำลัง รับ-ส่งข้อมูล ในกรณีที่ยังไม่เสร็จ ปกติทั่วไปจะใช้เป็นรูปภาพกัน วันนี้เลยอยากจะแนะนำของเล่นใหม่ให้รู้จักคือ Spin.js ที่สร้าง Ajax Loader โดยที่ไม่ต้องง้อไฟล์ gif เลย สามารถดาวน์โหลดได้จาก ที่นี่ ซึ่งรองรับ IE ด้วย สามารถนำไปใช้งานได้แบบหายห่วงเลยทีเดียว ตัวอย่างการใช้งานก็ง่ายๆ ครับ วันนี้ก็แวะมาฝากทิปเล็กๆ น้อยๆ แค่นี้นะครับ ลองนำไปใช้กันดูครับ ;)

การใช้งาน คำสั่ง file_exists() อย่างเข้าใจ

นี่อาจจะไม่เรื่องใหม่อะไรสำหรับ Professional ทั้งหลาย แต่ว่าสำหรับผมที่เข้าใจ และใช้งานอย่างผิดๆ มาตลอด จนบางทีก็เข้าใจว่า เราเขียนผิด หรือ คำสั่งมันใช้งานไม่ได้ วันนี้จะขอมาพูดถึงเรื่องของคำสั่ง PHP ที่ชื่อ file_exists เป็นคำสั่งที่ใช้สำหรับตรวจสอบไฟล์ว่ามีอยู่จริงหรือไม่? ตัวอย่างการใช้งานแบบผิดๆ ที่ผมใช้ก็คือ file_exists('/images/news/helloworld.jpg'); ผลลัพธ์ที่ได้คือ FALSE ถึงแม้ว้าจะมีไฟล์นั้นอยู่จริงก็ตาม ซึ่งในความเป็นจริงแล้ว การใช้งานที่ถูกต้องคือ file_exists($_SERVER['DOCUMENT_ROOT'] . '/images/news/helloworld.jpg'); จากตัวอย่างที่ถูกต้อง ทำให้เข้าใจแบบง่ายๆ ว่าคำสั่ง file_exists นั้นใช้สำหรับเช็ค path ในโฟลเดอร์จริงๆ เท่านั้น ไม่สามารถเช็คจาก URL ได้ อันนี้เป็นเรื่องง่ายๆ ที่ผมเข้าใจผิดมาอยู่นานเลยทีเดียวเลยต้องขอลงบันทึกเตือนตัวเองไว้อีกที :3

ข้อควรระวังการตั้งชื่อไฟล์ สำหรับการใช้งานบน Hosting

หลายๆ คน ปกติมักจะทำงานบน Localhost ซึ่งเป็นเรื่องปกติอยู่แล้ว แต่ปัญหาที่มักจะพบบ่อยๆ ในขั้นตอนปิดงาน คือ การอัพงานเราขึ้น Hosting ซึ่งบางครั้งหากเราทำงานบน Win OS ก็มักจะไม่ทราบถึง Case Insensitive ของพวก OS ที่เป็น unix ยกตัวอย่างง่ายๆ Linux ล่าสุดงานที่ผมพัฒนาผ่าน Yii Framework รันบนเครื่องก็ปกติ พอเอาขึ้น Host เกิดปัญหาทันที ปัญหาที่พบก็ คือ เรื่องการตั้งชื่อไฟล์ และ การเรียกหา ไฟล์ ซึ่งก็คงไม่พ้น ตัวเล็ก ตัวใหญ่ ที่ไม่เหมือนกัน ดังนั้นควรตั้งชื่อไฟล์ และเรียกหาให้ถูกต้องเป๊ะๆ ไม่งั้นจะต้องมานั่งแก้ทีหลัง ถ้าหากระบบใหญ่มากๆ ก็จะแก้ลำบากนะครับ

ORM คืออะไร มีประโยชน์อย่างไร?

ORM คืออะไร? Object Relational Mapping (ORM) เกิดมาจากวันที่การเขียนโปรแกรมเดินทางมาถึงช่วงที่ OOP เป็นที่นิยม แต่การ Query ข้อมูลจากฐานข้อมูลยังไม่อยู่ในรูปแบบ OOP ทำให้เกิดความยุ่งยากกว่าที่ควรจะเป็นและเกิดความสงสัยว่า การดึงข้อมูลจากฐานข้อมูลจะอยู่ในรูปแบบ OOP ได้หรือไม่? ผลพวงจากความพยายาม จึงกำเนิด ORM กับ DBMS ทำให้ภาษาที่เราเขียนนั้นสามารถทำการ mapping (ลอกแบบ) โดยสร้างชุดคำสั่งในการเรียกใช้งานรูปแบบซ้ำๆ ซึ่งประโยชน์ที่ได้คือลดการเขียนโค้ดลง ตัวอย่างที่เห็นชัดเจน เช่น การ insert, update, delete // Normal Query $sql = "SELECT * FROM tbl_users"; $query = mysql_query($sql); $result = mysql_fetch_assoc($query); // ORM Query Ex. Codeignitor $data = array('username' => 'username1', 'password' => 'password1'); $this->db->insert('users', $data); Ex. Yii $model = new Users; $model->username = 'username1'; $model->password = 'password1' จะเห็นว่า การเขียนในรูปแบบ ORM นั้น แทบจะไม่ต้องเขียน Synta...

การใช้ CGridView ในการทำ Data List สำหรับแสดงรายการข้อมูลจาก Database

บ่อยครั้งที่ต้องเขียนการแสดงรายการข้อมูลต่างๆ รายชื่อผู้ใช้ระบบ, รายชื่อสินค้า, รายชื่อประเภทสินค้า ฯลฯ ในรูปแบบซ้ำๆ เดิมๆ ซึ่งบางครั้งก็มีส่วนของการค้นหาข้อมูล หรือ เงื่อนไขการกรองข้อมูล ที่ไม่เหมือนกัน ยกตัวอย่าง เช่น การกรองรายชื่อผู้ใช้ที่ยืนยันอีเมล สำหรับ Yii ได้เพิ่มเครื่องมือในการเรียกข้อมูลมาแสดงแบบง่ายๆ ด้วย CGridview ตัวอย่างที่ 1 //=============================================================== // Controller //=============================================================== // ดึงข้อมูลผู้ใช้จากฐานข้อมูล $model = new User(); // เอาข้อมูลที่ Query มาอัดลง CActiveDataProvider $dataProvider = new CActiveDataProvider('Post', array( 'pagination'=>array( 'pageSize' => 10, ), )); // ส่งตัวแปรไปยังส่วนของ View $this->render('user', array('dataProvider ' => $dataProvider )) //=============================================================== // View //==============================================================...