วิธี scale PHP ไปยัง server หลายตัว by

31
Mar
0

หากเว็บไซต์ของคุณรับโหลดมาก คนเข้าเยอะฝุดๆ จน CPU หรือ Memory ล้นจนเกินไปแล้ว เปิด APC แล้วก็ยังไม่ช่วย และมั่นใจว่าปัญหาไม่ได้เกิดจาก database ช้าแน่ๆ หรือขยาย cloud แบบ vertical (up CPU up Ram) ไปจนสุดก็รับไม่ไหวแล้ว ก็ถึงเวลาที่จะต้องขยายของด้านข้าง (Horizontal Scale) แล้วละครับ วิธีการก็คือเราต้องมี Load Balancer มาคอยช่วยกระจายโหลดออกไป

Load Balance

จากรูปจะเห็นว่า Load Balancer เป็นเหมือนตัวกลางที่คอยรับส่งข้อมูลแทนระหว่าง Client กับ Server โดยที่การประมวลผลจริงๆ จะยังอยู่ที่ฝั่ง Server ซึ่งเราสามารถติดตั้ง Load Balancer ที่เครื่องแยกออกมาต่างหากหรือจะติดตั้งรวมกับ Server ตัวใดตัวหนึ่งก็ได้(เนื่องจากตัว Load Balance ไม่ได้กิน Resource เครื่องมากนัก) โดยหลักการแล้วจะมี public IP ยิงเข้า Load Balance เพื่อรับข้อมูลจาก Client ทุกคน และแอบส่งข้อมูลต่อไปยัง Server ผ่านทาง Private IP แล้วจึงตอบกลับไปยัง Client ซึ่งสุดท้าย Client จะรู้แค่ว่าต้องติดต่อกับ Load Balancer เท่านั้น ไม่จำเป็นต้องรู้เลยว่าจริงๆ แล้วเขากำลังคุยกับ Server ตัวไหนอยู่ และไม่สามารถรู้ได้ด้วยว่าจริงๆ แล้วมี Server ให้บริการทั้งหมดกี่เครื่อง

ตัว Load Balancer จะแบ่งออกเป็น 2 ประเภทคือชนิด Hardware (เป็นเครื่องที่ออกแบบมาให้ทำหน้าที่นี้โดยเฉพาะ) และชนิด Software (เราลงโปรแกรมที่ server ตัวใดตัวหนึ่งให้มันทำงานเป็น Load Balancer) ซึ่งส่วนใหญ่แล้วเพื่อประหยัดงบเรามักจะใช้ Load Balancer ชนิด Software ซึ่งแค่นี้ก็เพียงพอสำหรับการรองรับคนเข้าวันละแสนคนได้สบายๆ อยู่แล้ว

สำหรับ Software ยอดนิยมก็จะมี Nginx และ Haproxy ซึ่งผมแนะนำให้ใช้ Nginx เนื่องจากเอาไว้ Serv พวก Static File เช่นรูปภาพได้ด้วย load ที่ต่ำมาก ควบคู่ไปกับการแบ่ง load ซึ่งทำได้ในตัวเดียวเลย ซึ่งตัวอย่างการใช้งาน Nginx ให้ทำตัวเป็น Load Balancer ให้ใส่ config ดังตัวอย่างด้านล่าง


http {
upstream backend_php {
server 127.0.0.1:9000 weight=14;
server 192.168.0.1:9000 weight=13;
server 192.168.0.2:9000 weight=13;
}
}

จาก code ด้านบนคือส่ง load เข้าเครื่องแรกเป็นเครื่องตัวเอง เครื่องที่สองและสามเป็น ip 192.168.0.1 และ 192.168.0.2 port 9000 (เป็น Default port ของ Fast-CGI) แล้ว restart nginx แค่นี้ก็เรียบร้อย :)

ปัญหาสุดท้ายหลังจากใช้งาน Load Balancer คือ PHP Session จะไม่ได้สามารถใช้ได้เพราะปกติ Session จะเก็บลงไฟล์ที่เครื่อง server ที่ติดต่อ พอ user เข้าเครื่องไหนก็ได้ Session ก็จะไม่ตามไปยังอีกเครื่องด้วย ปัญหานี้แก้ด้วยการใช้ Redis เข้ามาช่วยเก็บข้อมูล Session PHP แทนครับ โดยต้อง Install Redis และ phpredis (Extension PHP เอาไว้คุยกับ Redis) ให้เรียบร้อยก่อน จากนั้น แก้ไขไฟล์ php.ini ตามด้านล่าง แก้ไข ip เป็นเครื่องที่ติดตั้ง redis ไว้ (server ทุกตัวต้องใช้ redis ตัวเดียวกัน) ก็เป็นอันเรียบร้อย ขอให้โชคดีกับการ scale server นะครับ :)


session.save_handler = redis
session.save_path = "tcp://localhost:6379"

สอนการวาดตาโปรแกรมSAI by

31
Mar
0

วันนี้เราจะมาสอนวาดตาง่ายๆ ในโปรแกรม Paint Tool SAI ง่ายๆ โดยกุ๊กกู๋เองครับ

Step 1. วาดตาขึ้นมา 1 คู่

Step 2. ลงสีพื้นตาขาว

Step 3. ลงสีเงาตาขาว ลงสีแล้วแต่สีของโทนภาพ(ในนี้ผมใช้สีเทา)


Step 4. ลงสีพื้นตาดำ

Step 5. ใช้ Air Blush ลงสีขอบตาดำ

Step 6. เก็บรายละเอียดตาดำ


Step 7. ใช้ Air Blush ลงแสงสะท้อนตา


Step 8. เก็บรายละเอียดแสงสะท้อน


Step 9. เติมไฮไลท์


Step 10. ใส่เอฟเฟค Outer Glow และเก็บรายละเอียดขอบตา

FINISH

[Mobile Game Review ]Wrestle Jump เกมส์แอคชั่นสุดเร้าใจ by

31
Mar
0

เกมที่แอ็คชั่นนั้นมีมากมายหลายแบบครับวิธีการเล่นก็ต่างกันออกไปยากบ้างง่ายบ้าง เกมที่ผมนำมารีวิวในคราวนี้ชื่อ Wrestle Jump เป็นเกมส์เเนวกีฬาครับแถมเป็นกีฬาที่บ้านเราไม่คุ้นเคยกันซักเท่าไหร่ กีฬามวยปล้ำหน้ากากนั่นเอง ไม่ต้องกลัวว่าจะไม่เข้าใจกฎ-กติกาในเกมส์นะครับ เกมส์นี้เล่นง่ายมากหากคุณพร้อมจะสนุกไปกับมัน

Game Design

 

ตัวเกมส์จะให้เรารับบทเป็นนักมวยปล้ำมือฉมัง โดยจำลองส่วนเกมเพลย์มาจากการชิงไหวพริบในการย่อ-กระโดดในจังหวะที่สำคัญเพื่อพลิกสถานการณ์ต่างๆใครหัวฟาดพื้นก่อนเเพ้(กำเเพงก็นับนะ) ในส่วนตัวเกมส์เพลย์จะใช้เพียงปุ่มเดียวในการเล่น โดยหากเรากดปุ่มจะเป็นการย่อตัวลง และปล่อยปุ่มก็จะยืดตัวขึ้น ใช้หลักการเพียงเเค่นี้ในการเล่น ผสานกันระบบฟิสิกส์(?)ในเกมส์ และสภาพเเวดล้อมก็ทำให้เกมส์นี้เล่นสนุกอย่างไม่น่าเชื่อ(ผมลองมาเเล้ว)

Graphic Design

\

กราฟิคเกมส์นี้สีสันสดใสมากครับ อย่างที่บอกไปว่าเกมส์นี้เป็นกีฬามวยปล้ำหน้ากากซึ่งเป็นที่นิยมกันในประเทศแม็กซิโกเพราะฉะนั้นเเน่นอนว่าฉากหลังเกมนี้ต้องเป็นภูมิประเทศเเบบทะเลทรายซึ่งเกมส์นี้ทำได้ทำได้สดใสเหมาะกับคนทุกเพศทุกวัยมากครับ

UI Design

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

Control Design

การใช้ปุ่มเพียงปุ่มเดียวที่เป็นอะไรที่ท้าทายมากสำหรับคนทำเกมและเกมส์นี้ก็ทำออกมาได้ดีมาซะด้วยสิ ไม่เชื่อก็ลองดูจากคลิปนี้ได้นะฮะ

Social feature

เกมส์นี้มีสองโหมดคือเล่นกับบอทเเละเล่นกับเพื่อน(บนเครื่องเดียวกัน) เเน่นอนว่าเราสามารถเเชร์ผลการเล่นบนเฟสบุ้คให้เเค้นใจกันเล่นได้

Marketing

เเรกเริ่มนั้น Wrestle Jump ทำลงขายใน App Store ครับแต่ตอนนี้สามารถหาเล่นได้จากทั้งบนเว็บเเละ Google Play store

ลองเล่นบนเว็บได้ที่นี่

ตำแหน่งปุ่มควรจะเป็น OK-Cancel หรือ Cancel-OK? by

31
Mar
0

วันนึงขณะผมนั่งเล่น research เกมในมือถืออยู่ ผมจะกดใช้งานไอเทมในเกม
เกมมันก็เลยขึ้น popup มาถามผมว่า ตกลงใช้ไอเทมไหม yes/no แล้วผมก็จะกด ok แต่ดันไปกดผิดปุ่มซะงั้น ผมเลยงงๆ เอ๊ะ ตะกี้ตูกดไรไปเนี่ย กดใหม่สิ

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

ความสงสัยเลยบังเกิด ลองเปิดๆดูทั้ง 2 เกมอีกครั้ง ชัดเลย เกมนึง ok ซ้าย cancel ขวา อีกเกม Ok ขวา cancel ซ้าย … อ้าว แล้วเกมตูละ … แล้ว จริงๆมันควรจะเป็นแบบไหนล่ะ

ผมก็เลยลองไป google ดู เจอกับบทความนี้เข้าให้ http://www.nngroup.com/articles/ok-cancel-or-cancel-ok/เขียนโดยคุณ Jakob Nielsen

สรุปได้ใจความป๋าบอกมาว่า ขึ้นอยู่กับว่ามันอยู่บน platform ไหน ก็ออกแบบตามที่คนใช้ส่วนใหญ่เค้าใช้กัน Windows ก็ OK-Cancel ส่วน Mac ก็ Cancel-OK ถ้าเอ็งจะทำบนเว็บก็ลำบากหน่อย เอาตามที่คนใช้ของเอ็งใช้ละกัน ไปดู Stat ซะ คนใช้วินโดว์เยอะก็ออกแบบแบบ Windows คนใช้ Mac เยอะ ก็ออกแบบแบบ Mac


ตัวอย่างของ Windows


ตัวอย่างของ Mac

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


ตัวอย่างของ iOS และ Android


เกม Brave Frontier ปุ่ม OK อยู่ด้านซ้าย เกมนี้แหละที่ผมกดผิด


เกม Chain Chronicel ปุ่ม OK อยู่ด้านขวา

วิธีการยิง URL ซ้ำๆแบบง่ายๆ by

31
Mar
0

โดยปกติแล้วถ้าเราต้องการทดสอบยิง URL แบบซ้ำๆเราก็ต้องเขียนสคริปต์สักภาษาแล้วรันเพื่อให้วนลูปเรียกหน้านั้นๆ หรือบางทีก็ใช้การรีเฟรช แต่การรีเฟรชจะหน่วงเวลามากเกินไปทำให้ใช้ได้ไม่ค่อยดีเท่าที่ควร วันนี้เลยนำวิธี(ง๊าย)ง่าย แค่ใช้ Browser ธรรมดาๆ ของเราเนี่ยแหละมานำเสนอครับ

ขั้นแรกก็ก็อปปี้ URL ที่เราจะทำการยิงซ้ำ

จากนั้นก็การเปิดหน้าต่างใหม่ ตามภาพด้านล่างหรือกด Ctrl + N

เสร็จแล้วให้เราเปิด URL นั้นตามจำนวนครั้งที่ต้องการให้ซ้ำ ยกตัวอย่างยิง 5 ครั้ง ก็เปิดมา 5 หน้าซ้ำกัน

จากนั้นทำการกดปุ่มปิดหรือ Alt + F4 หน้าต่างก็จะหายไปเหลือแต่หน้าต่างเก่า ขั้นถัดมาคือเราจะทำการเปิดหน้าต่างทั้งหมดทั้ง 5 หน้ากลับมาซึ่งจะทำให้เกิดการเรียก URL ซ้ำในเวลาใกล้เคียงกันมากทั้ง 5 ครั้ง โดยการกดตามด้านล่างหรือ กด Ctrl + Shift + T

ก็จะเสร็จการยิง URL ทั้ง 5 ที่เกือบจะพร้อมๆกันแล้วล่ะครับ

กู้เงิน | เศรษฐกิจพอเพียง | สินเชื่อบุคคล | สมัครบัตรกดเงินสด | สินเชื่อ | เงินกู้ด่วน | ยืมเงินทรูมูฟ | เงินด่วนนอกระบบ