วิธีสร้าง key สำหรับใช้งาน Google api บน php by joeskb
Oct0
- เริ่มต้นด้วยการล๊อคอินไปที่ หน้า console ของ Google api
- ไปที่หัวข้อทางซ้ายมือ ข้อมูลรับรอง หรือ Credentials
- กด สร้างข้อมูลรับรอง สร้าง API Key ข้อมูล ระบบจะโชว์รหัสขึ้นมา ให้ทำการบันทึกเอาไว้
- ที่หน้าจอคำยินยอม OAuth หรือ OAuth consent screen กรอกข้อมูล สำหรับแอพลงไป
- ไปที่ library เลือก API ที่ต้องการจะใช้งาน แล้วกดเปิดใช้งาน หรือ Enable
- รอสักพักจะมีให้กดปุ่ม ไปที่ข้อมูลรับรอง
- เลือกประเภทการใช้งาน ตัวอย่างนี้ใช้เป็นเป็น แบบอื่นๆ ที่ไม่มี UI
- เลือกการเข้าถึงข้อมูลแอปฯ และไม่ได้ใช้ Google app engine
- กดปุ่ม ฉันต้องใช้คำรับรองใด
- กรอกชื่อบริการ และบทบาท ถ้าอ่านอย่างเดียวก็ โครงการ แล้วผู้ดู
- ประเภท key เป็น json แล้วกดต่อไป ระบบจะส่งไฟล์มาให้ เปลี่ยนชื่อเป็น client_secret.json
- นำไปไว้ใน server จุดที่สามารถเข้าถึงได้
- ที่ตัวอย่างหน้านี้ทำในข้อ 2,3 ต่อ
- สั่งรันตามข้อที่ 4 อาจจะมีถามหา google account ให้ copy url ไปที่ browser เพื่อล๊อคอิน
- copy รหัสที่ได้ใส่ลงไปใน command-line แล้ว enter
การแก้ปัญหาขณะติดตั้ง PHP Agent ของ Newrelic by heha
Sep0
วันก่อนผมเจอปัญหา process newrelic ส่วนของ PHP Monitoring ไม่ทำงาน ไม่มี Process สร้างขึ้นมาเลย และพอไปดู log ก็พบ error ดังนี้
errno=ECONNREFUSED. Failed to connect to the newrelic-daemon
ตอนสั่ง start newrelic PHP Agent แล้วปรากฏว่ารันไม่ขึ้น ซึ่งไม่เคยเจอปัญหานี้มาก่อน เลยไปค้นหาวิธีแก้ พบว่ามีทางแก้สองแบบ
แบบแรก
แก้ไขไฟล์ 20-newrelic.ini จาก
newrelic.daemon.port = "/tmp/.newrelic.sock"
เป็น
newrelic.daemon.port = "@newrelic-daemon"
แล้วสั่ง
service php5-fpm restart
service newrelic-daemon restart
แต่ผมลองแล้วไม่ได้ผล เลยต้องหาวิธีใหม่ได้แบบที่สองคือ
แบบที่สอง
1. พิมพ์
getent group newrelic
จะได้ผลลัพธ์ประมาณ newrelic:x:GroupID: ออกมา ให้จำค่า GroupID ไว้สำหรับใช้ต่อไป
2. แก้ไขไฟล์ /etc/sysctl.conf โดยเพิ่ม ข้อมูลดังนี้เข้าไป
fs.proc_can_see_other_uid = 0
fs.proc_super_gid = GroupID
ข้อควรระวังคือ fs.proc_super_gid สามารถใส่ GroupID ได้เพียงอันเดียว ถ้ามี fs.proc_super_gid อยู่ก่อนแล้วให้คุณสร้าง group ใหม่ขึ้นมาแล้วใส่ users ที่ต้องการใช้งานเข้าไปใน group ให้ครบทุก user แล้วใช้ group ใหม่นั้นแทนไปเลย แต่ถ้าไม่เคยสั่ง fs.proc_super_gid มาก่อนก็ไม่ต้องสนใจส่วนนี้
3.
sysctl -p
4.
service php5-fpm restart
service newrelic-daemon restart
5. เสร็จเรียบร้อย
[UNITY] [Editor] เทคนิคการเขียน Editor ภาค 3 by tosawat
Sep0
[UNITY] [Editor] เทคนิคการเขียน Editor ภาค 3
จากคราวที่แล้ว เรื่อง Validate Function ของ MenuItem วันนี้เราจะมาสอนเรื่อง Hot Key ครับ
รู้หมือไร่?? เราสามารถกำหนด Hot Key ให้ MenuItem ของเราได้ เพื่อที่จะได้เรียกใช้ได้ง่ายๆครับ วิธีใช้ก็ดังนี้เลยครับ
[MenuItem("Test/Menu1", false, 1)]
static void Menu1() { }
[MenuItem("Test/Menu2", false, 1)]
static void Menu2() { }
[MenuItem("Test/Menu3", false, 51)]
static void Menu3() { }
[MenuItem("Test/Menu4", false, 101)]
static void Menu4()
{
Selection.activeGameObject.name = "Test";
}
[MenuItem("Test/Menu4", true, 101)]
static bool Menu4Validator()
{
return Selection.activeGameObject != null;
}
นี่คือ code ของคราวที่แล้ว แล้วถ้าเราอยากให้ Menu4 นั้นมี Hot Key ก็ให้แก้พารามิเตอร์ตัวแรก ของ MenuItem
ซึ่งมี supported keys อยู่ดังนี้ครับ
% – CTRL on Windows / CMD on OSX
# – Shift
& – Alt
LEFT/RIGHT/UP/DOWN – Arrow keys
F1…F2 – F keys
HOME, END, PGUP, PGDN
เมื่อเราจะใส่ก็ใช้ประมาณนี้นะครับ
[MenuItem("Test/Menu4 %x", false, 101)]
static void Menu4()
{
Selection.activeGameObject.name = "Test";
}
[MenuItem("Test/Menu4 %x", true, 101)]
static bool Menu4Validator()
{
return Selection.activeGameObject != null;
}
จะได้ผลลัพท์ดังรูป
สังเกตุ1: จะต้อง เว้นวรรคก่อนใส่สัญลักษณ์ Hot Key เสมอนะครับ
สังเกตุ2: ถ้ามี Validate Function จะต้องแก้พารามิเตอร์ตัวแรกให้เหมือนกันนะครับ
เราสามารถใส่ %#&x เพื่อแทน Hot Key Ctrl+Alt+Shift+x ได้ครับ
ก็จบกันไปแล้วนะครับสำหรับการแนะนำ Feature ต่างๆของ UnityEditor ครับ
แต่จริงๆแล้ว UnityEditor ยังทำอะไรๆได้อีกมาก ถ้าใครอยากรู้มากกว่านี้ไปศึกษาดูได้ ที่นี่ ครับ
[C#] วิธีการ Overload ตัว Operator (+ – * / > = <= == !=) by Ziah
Aug0
เนื่องจากได้เขียน Class ค่าเงินขึ้นมา ซึ่งทำไว้รองรับปริมาณหน่วยเงินจำนวนมากๆ ทำให้ต้องมีการเขียน Overload พวกตัวคำนวน ตัวเปรียบเทียบทั้งหลายขึ้นมาใหม่ เพราะค่าของค่าเงินไม่ได้เก็บไว้ในตัวแปรเพียงตัวเดียว วิธีการ Overload ก็ไม่ยาก ตัวอย่างดังนี้ฮะ ( Currency เป็นชื่อ Class ใหม่)
Overload ตัวคำนวน +, -, *, /
public static Currency operator +(Currency c1, Currency c2)
{
Currency cResult = new Currency();
/**
คำนวนค่า
*/
return cResult; //ส่งค่ากลับ
}
Overload ตัวเปรียบเทียบ >, <, >=, <=, ==, !=
public static Currency operator >(Currency c1, Currency c2)
{
if (/* เงื่อนไขใหม่ที่เปรียบเทียบค่า */)
return true;
else
return false;
}
ง่ายๆเท่านี้แหละครับ