เมื่อก่อนผมใช้ jmeter วัดโหลดเว็บอย่างเดียว พอมีคนแนะนำ blazemeter แล้วเอา jmx ไปใส่ jmeter ชีวิตดีขึ้นอีกเยอะเลย
ยังมีอะไรให้เรียนรู้อีกเยอะ
เมื่อก่อนผมใช้ jmeter วัดโหลดเว็บอย่างเดียว พอมีคนแนะนำ blazemeter แล้วเอา jmx ไปใส่ jmeter ชีวิตดีขึ้นอีกเยอะเลย
ยังมีอะไรให้เรียนรู้อีกเยอะ
โพสสั้นๆ เมื่อก่อนทำงานคนเดียว เก็บไฟล์ source code ไว้ใน svn เดี๋ยวนี้ย้ายไปบน git หมดแล้ว ต้องทำงานร่วมกับคนอื่น แถมทุกๆ คนในทีมใช้ git กันหมด ก็ต้องตามเขาละเนอะ
การติดต่อฐานข้อมูลใน CI เราต้องไปแก้ไขไฟล์
/applications/config/database.php
แก้ไขโค๊ดส่วนนี้เพื่อใช้ติดต่อกับฐานข้อมูล
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'xxx';
$db['default']['password'] = 'xxx';
$db['default']['database'] = 'xxx';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = 'application/cache';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
เวลาใช้งานก็สามารถใช้ได้โดยเขียน SQL แล้ว query หรือ active record ก็ได้
// query
$SQLCom = "SELECT * FROM `members`";
$members = $this->db->query($SQLCom)->result_array();
// active record
$members = $this->db->get("members");
แต่ถ้าต้องการติดต่อฐานข้อมูลมากกว่า 1 ฐานข้อมูล
เราสามารถเพิ่มการเชื่อต่อในไฟล์ database.php ได้ตามนี้
$db['db2']['hostname'] = "localhost";
$db['db2']['username'] = "root";
$db['db2']['password'] = "";
$db['db2']['database'] = "other_database_name";
$db['db2']['dbdriver'] = "mysql";
$db['db2']['dbprefix'] = "";
$db['db2']['pconnect'] = FALSE;
$db['db2']['db_debug'] = FALSE;
$db['db2']['cache_on'] = FALSE;
$db['db2']['cachedir'] = "";
$db['db2']['char_set'] = "utf8";
$db['db2']['dbcollat'] = "utf8_general_ci";
$db['db2']['swap_pre'] = "";
$db['db2']['autoinit'] = TRUE;
$db['db2']['stricton'] = FALSE;
เวลาเรียกใช้งานก็ตามนี้เลย
$db2 = $this->load->database("db2", TRUE);
$workers = $db2->get("workers");
// จะใช้การ query คำสั่งก็ได้ ไม่ผิดกติกา
แบบนี้เราจะติดต่อฐานข้อมูลกี่อันก็ได้แล้วแต่ง่ายๆ เลย
เขียนเมื่อ 01-06-2017 อนาคตข้างหน้า อาจจะไว้กว่านี้หรือมี node ที่อื่นก็ได้
ปกติผมจะใช้บริการ server ที่ digital ocean ซะเป็นส่วนใหญ่ ถ้าเว็บไม่ใหญ่มาก หรือต้องการปรับแต่ง server ให้มากกว่า share server ทั้งหลาย แต่ไม่อยากจ่ายแพงเหมือน vps เว็บๆ เล็กๆ บางเว็บ แค่ digital ocean ตัวล่างสุด เดือนละ 5usd ก็เพียงพอใช้งานแล้ว ถ้าไปได้ดีก็สามารถเพิ่ม spec ทีหลังได้ แต่ถ้าไม่รุ่งก็ปิดไปได้เลย ไม่ต้องจ่ายเป็นรายปีแบบ vps
ทีนี้ digital ocean มันก็มี node ตั้งหลายที่ แล้วที่ไหนมันเหมาะกับเมืองไทยละ
ส่วนใหญ่ผมจะใช้ที่สิงคโปร เพราะ bandwidth กลับไทย เยอะสุดละ แต่บางงานก็อยากลองที่แปลกๆ หรือเว็บบางแบบ ก็ไม่อยากใช้ ip ใกล้ๆ ประเทศไทย (รู้ๆ กัน) ก็เลยลองทดสอบความเร็วของแต่ละ server ที่ digital ocean แล้วเอามาแชร์กันครับ
New York มี 3 Node
Ping จะอยู่ราวๆ 300 กลางๆ แต่ Download น้อยมากๆ 5Mb กว่าๆ จากที่เคยใช้ เว็บจะโหลดมาเรื่อยๆ ไม่หลุด แต่ก็ไม่ไวควรจะใช้ cloudflare ครอบไว้ ถ้าเป็นเว็บแบบ dynamic ที่ต้องโหลดบ่อยๆ ไม่แนะนำนะครับ
San Francisco มี 2 Node
Ping น้อยลงถ้าเทียบกับ New York ความเร็วก็ดีกว่าด้วย ถ้าต้องการ Server ที่เมกา ช่วงหลังๆ ผมจะใช้ที่ SF มากกว่า NY ละครับ
Amsterdam มี 2 Node
ผมไม่เคยใช้ Node ในยุโรปเลย ความเร็วก็พอๆ กับซานฟราน
Singapore มี 1 Node
เหมาะสำหรับตั้ง Server สำหรับเว็บไทย ที่ไม่อยากตั้ง Server ที่ไทย ที่สุดแล้ว เป็นที่ประจำของผมเองแหละครับ
London มี 1 Node
อีกที่ในยุโรป ผมไม่เคยใช้เหมือนกันครับ
Frankfurt มี 1 Node
อยู่ยุโรป ความเร็วกับปิงก็พอๆ กับ node อื่นๆ ในยุโรป
Toronto มี 1 Node
อีก node ในทวีปอเมริกา ความเร็วจากเมืองไทยไม่ค่อยดีเท่าไหร่
Bangalore มี 1 Node
อีกที่ที่ผมเอาไว้เก็บเว็บที่ไม่อยากอยู่ในเมืองไทย แล้วไม่อยากตั้งไว้สิงคโปรเหมือน server อื่นๆ เอาไว้ทดแทนสิงคโปรได้เลยทีเดียว
หลังจากติดตั้ง xampp แล้ว ทุกครั้งเราต้องมาเปลี่ยนรหัสผ่านของ mysql เองตลอด ปกติผมไม่เคยให้มี user ว่างหรือไม่ใส่รหัสผ่านของ root ใน mysql แต่ทุกครั้งที่ลงโปรแกรมหรือเปลี่ยนคอมใหม่ ก็ต้องมาเซ็ตใหม่ทุกครั้ง บางทีก็ลืมขั้นตอนไปเหมือนกัน
วิธีเปลี่ยนก็ไม่ยากเลย
mysql
โดยใช้คำสั่ง use `mysql`จบแบบง่ายๆ นี่แหละครับ
SSL ใน CloudFlare มีสามแบบตามรูปนี้
อธิบายตามรูปก็ตามนี้
Flexible SSL
เข้ารหัสระหว่าง USER กับ CloudFlare แต่ระหว่าง CloudFlare กับ Server ไม่ต้องมี SSL
ใช้ SSL ของ CloudFlare เลย
Full SSL
เข้ารหัสระหว่าง USER กับ CloudFlare และ CloudFlare กับ Server
ต้องมี SSL ใน Server แต่ Cloudflare จะไม่สน Cert ใน Server อาจจะเป็น Cert แบบแชร์ก็ได้
Full SSL (stict)
เข้ารหัสระหว่าง USER กับ CloudFlare และ CloudFlare กับ Server
SSL ต้องมี Cert ที่ตรวจสอบได้จริงและยังไม่หมดอายุ
ปกติใน CloudFlare จะเปิด SSL ให้อยู่แล้ว แค่เพิ่ม page rule เข้าไปแค่นั้น ก็ใช้งานได้แล้ว
ตัวอย่างเพิ่ม page rule เพื่อเปิด SSL โดยที่ Server ไม่มี SSL
ปกติผมจะใช้ dreamviewer แค่ cs4 ในการเขียนเว็บ เมื่อไม่กี่วันมานี้ได้คอมเครื่องใหม่มา ก็เลยอยากสนับสนุนของแท้ซะหน่อย (แบบ trial ก่อนนะ) เลยโหลด cc มาละซะ แล้วบางไฟล์ใน server มันจะถูกซ่อนไว้ (เป็นปกติ) คราวนี้คลำกันนานเลย เข้าเมนูนู้นนี่นั้น ก็หาไม่เจอซะที สุดท้ายกดไปกดมาก็เจอง่ายๆ ตามรูปเลย
เสียเวลาไป 2 ชั่วโมง เพื่อปุ่มนี้ปุ่มเดียวเลย
ปกติผมจะใช้ Flash Drive หรือไม่ก็เขียนข้อมูลลงแผ่น DVD เป็นส่วนใหญ่ แต่เดี๋ยวนี้สื่อหลายๆ อย่างมันก็เริ่มเปลี่ยนเป็นแบบ Download ทั้งนั้นแล้ว อย่าง เพลง หนัง เดี๋ยวนี้ก็เน้น Download กันซะมากกว่า ก็ได้ฤกษ์จัด External สักตัวมาไว้เก็บข้อมูลประจำบ้าน + ได้เงินจากทำโปรเจคนิดหน่อย ก็จัดมาซะ 3TB เลย เอาให้หายอยากกันไปเลยทีเดียว
นอกจากต่อ USB3 ได้แล้ว ยังต่อ LAN แชร์กันในบ้านได้อีก ถ้า HDD เจ้ง แต่กล่องไม่เจ้ง ก็ยังแกะเอา HDD ข้างในเปลี่ยนได้อีก (เห็นฝรั่งทำกัน)
เราสามารถใช้ RPi ควบคุมอุปกรณ์ภายนอกผ่านพอร์ท 40pin ที่ติดตั้งอยู่บน RPi ผ่านโมดูลที่มีมาให้อยู่แล้ว โดยใช้ภาษา C หรือ python ก็ได้ แล้วแต่ความถนัด ก่อนจะไปเขียนโปรแกรมลองมาดูขาต่างๆ ของ GPIO กันก่อน
ผมเลือกใช้ python ในการทดสอบแทนภาษา C เพราะ python เขียนง่ายกว่ามาก แถมเป็น interpreter ที่ไม่ต้องทำการ compile ก่อน ถ้าบรรทัดไหนเกิดข้อผิดพลาดขึ้น ก็จะมี error แสดงที่หน้าจอทันที ทำให้แก้ไขโปรแกรมได้ง่าย เหมาะแก่การหัดเขียนโปรแกรม
ก่อนอื่น ต้องติดตั้ง python และ GPIO ของ python ก่อน
ติดตั้ง python
sudo apt-get install python-dev
ติดตั้ง python-gpio
sudo apt-get install python-rpi.gpio
สร้างไฟล์ชื่อ blink.py
sudo nano blink.py
import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(21,GPIO.OUT) while True: GPIO.output(21, True) sleep(1) GPIO.output(21, False) sleep(1) GPIO.cleanup()
ต่อสายเข้า LED โดยให้ขา 40 (GPIO21) เข้าขา Anode และขา 6 (Ground) เข้าขา Cathode วิธีดูขา LED ถ้าเป็นขายาว จะเป็นขา Anode ส่วนขาสั้นจะเป็น Cathode แต่ถ้าขาถูกตัดไปแล้ว ให้ดู LED จากด้านบน ด้านที่แบนจะเป็นขา Cathode แรงดันที่ออกจาก RPi จะเป็น 3.3v ควรจะต่อ R สัก 330 โอม หรือ 560 โอม สักตัว เดี๋ยว LED จะเสียเอา
รันโปรแกรมโดยใช้คำสั่ง
sudo python blink.py
จะได้ผลลัพธ์ตามนี้
ถ้าต้องการหยุดโปรแกรมก็กด CTRL+C
ง่ายๆ เลยใช่ไหมครับ
ผมได้ Raspberry Pi 2 model B (ขอเรียกว่า RPi ละกัน) มาฟรีๆ ตัวหนึ่ง ผมเคยได้ยินมาว่า เจ้า RPi ตัวนี้สามารถทำงานได้เยอะแยะมากมาย เช่นเป็นคอมพิวเตอร์ราคาถูก เอามาทำ media server หรือต่อกับ hardware ตัวอื่นๆ เป็น micro controller เลยก็มี
RPi นั้นมีส่วนประกอบที่แทบจะเป็นคอมพิวเตอร์ที่สมบูรณ์เลย ตัว RPi 2 ที่ผมได้มา เป็น System On Chip (SoC) ของ Broadcom BCM2836 ข้างในมี CPU ARM A7, GPU VideoCore IV, Ram 1GiB (แชร์กับ GPU), USB 1 port (แต่บน RPi 2 มี USB Hub ขยายเป็น 4 port ให้), HDMI เอาไว้ต่อจอ ขาดแค่ storage เท่านั้น ซึ่ง RPi 2 ก็มีช่อง micro sd เอาไว้ให้อยู่แล้ว การที่คอมพิวเตอร์จะทำงานได้ ก็ต้องมี OS เป็นตัวจัดการ การที่ไม่มี storage ในตัว ผมว่าเป็นข้อดีซะอีก เราสามารถเปลี่ยน OS หรือเตรียม OS ที่มีหลาย configuration ไว้ทำหรับงานต่างๆ ใน sd แต่ละอัน ถ้าต้องการใช้งานอันไหน ก็แค่ถอด sd ตัวเก่าออก แล้วเอาตัวใหม่ใส่เข้าไป แถมราคา sd ก็ถูกมากๆ
OS หลักของ RPi คือ Raspbian (น่าจะมาจากคำว่า Raspberry + Debian) โหลดได้จาก https://www.raspberrypi.org/downloads/ นอกจากนั้นยังมี OS เจ้าอื่นๆ ให้เลือกลงอีก แต่ผมยังไม่มีความรู้เกี่ยวกับ RPi เลย ก็เริ่มจาก Raspbian ก่อนละกัน
ไฟล์ที่โหลดมาได้จะมีนามสกุล img ก่อนจะนำไปใช้งาน ต้องทำการเขียนข้อมูลลงใน sd เสียก่อน โปรแกรมที่ใช้สำหรับ windows คือ Win32Disk Imager ถ้าเป็น mac ก็ใช้ ApplePi-Baker แทน
เสียบ sd เข้ากับคอมพิวเตอร์ sd ต้องมีขนาด 4GB ขึ้นไป แล้วเปิดโปรแกรม Win32 Disk Imager เลือกไฟล์ Raspbian
เลือก drive ของ sd ปกติถ้าเสียบ sd อันเดียว โปรแกรมจะเลือกให้อยู่แล้ว
กด Write แล้วรอสัก 5 นาที แนะนำให้ใช้ sd class 10 เพื่อความเร็วในการอ่านเขียน ราคา sd 8GB class 10 กับ class 4 ราคาต่างกันแค่หลักสิบ ถ้ามีอยู่แล้ว ใช้อันไหนก็ได้ แต่ถ้าซื้อใหม่ class 10 เท่านั้น
หลังจากเขียนไฟล์ลง sd เสร็จแล้ว ต่อจอ mouse กับ keyboard แล้วเสียบ sd เข้าไปที่ช่องด้านหลังบอร์ด RPi จากนั้นเสียสายไฟเข้าทาง micro usb
เรียบร้อย…
พอบูทเสร็จจะเข้าไปหน้า Raspberry Pi Software Configuration Tool ให้เลือก ข้อ 1.Expand Filesystem
sd อันนี้จะใช้ได้เต็มขนาด หลังจากการบูทครั้งต่อไป
ถ้าต้องการภาษาไทย ให้เลือกเมนู 4.Internationalisation Options
เลือก Change Locale
เลือก th_TH.UTF-8 UTF8
เลือก Finish
หลังจากบูทระบบใหม่ จะเข้ามาหน้า login ของ RPi ที่เหมือนๆ กับ linux ตัวอื่นๆ
login คือ pi
password คือ raspberry
ถ้าต้องการใช้งาน X Windows ทำได้โดยพิมพ์คำสั่ง startx
CPU ของ RPi มันช้ามากๆ ถ้าเทียบกับ PC ก็อย่าตั้งความหวังว่ามันจะลื่นเหมือน linux บน PC มันแค่พอใช้งานได้เท่านั้นแหละ
Raspbian มันก็คือ linux ที่ดัดแปลงมาให้ทำงานบน RPi ในการใช้งานจริง เราคงไม่ต่อ จอ mouse กับ keyboard ให้รกแน่นอน แค่ต่อสายแลนกับสายไฟสองเส้น แล้วใช้โปรแกรม putty ก็เข้าไปใช้งานได้เหมือนกัน
เปิดโปรแกรม putty แล้วใส่ ip ของ RPi ขั้นตอนการกำหนด ip ถ้าไม่ทำการ fixed ip ที่ RPi สามารถไปทำที่ router ได้ โดยกำหนด ip ผูกติดกับ mac address เลย
login คือ pi
password คือ raspberry
เท่านี้ก็ใช้งานได้แล้ว
© 2021 CMDEVHUB
Theme by Anders Norén — Up ↑