มีคนถามเข้ามาเรื่อง Arduino IDE บน Ubuntu ผมก็สงสัยว่า IDE ก็มีอยู่ให้ดาวน์โหลดที่เว็บ arduino.cc พอเข้าเว็บไปดูอีกรอบก็ถึงทราบว่าเป็น zip ไฟล์นี่เอง เข้าใจว่าไม่รู้ว่าจะเปิดไฟล์ไหนยังไงล่ะมั๊ง ครั้งนี้ก็เลยมาแนะนำวิธีติดตั้ง Arduino IDE บน Ubuntu 14.04 กันสักหน่อย ตัว IDE สามาถติดตั้งได้ 2 วิธี วิธีแรกคือติดตั้งผ่าน Software Center พิมพ์คำว่า Arduino ลงไปก็สั่งติดตั้ง IDE ได้เลย ง่ายมากๆ

อีกแบบคือติดตั้งเอง สำหรับ Linux ค่ายอื่นๆ ที่ไม่มีคนใจดีทำ package มาให้ :) การติดตั้งแบบติดตั้งเองต้องติดตั้ง Java ด้วยนะครับ :) เริ่มจากติดตั้ง Java กันก่อนเลย


Continue reading

อย่างที่ทราบกันว่า git เป็นเทคโนโลยีที่จะให้นักพัฒนาอย่างเราๆ สะดวกสบายในการพัฒนาอะไรสักอย่างหนึ่งขึ้นมา ซึ่ง git จะทำหน้าที่ในการจัดการเกี่ยวกับเวอร์ชันของซอร์สโค้ดของเรา ไม่ว่าจะเป็นเรื่องการตรวจสอบความแตกต่างระหว่างเวอร์ชัน (diff) การย้อนกลับมาเวอร์ชันก่อนหน้าเมื่อมีปัญหา (revert) หรือตรวจสอบเกี่ยวกับรายละเอียดของแต่ละเวอร์ชัน (log)

นักพัฒนาที่ใช้ git ส่วนใหญ่ จะนิยมใช้บริการจากผู้ให้บริการอย่าง GitHub หรือ BitBucket แต่ในองค์กรที่ให้ความสำคัญกับความปลอดภัย อาจจะเลือกที่จะตั้งเซิร์ฟเวอร์เพื่อใช้ในการบริหารจัดการซอร์สโค้ดเอง
Continue reading

ความแตกต่างระหว่าง local repository กับ remote repository นั้น ก็เหมือนกับการที่เราทำงานบนเครื่องของเรา กับการทำงานโดยข้อมูลอยู่บนเซิร์ฟเวอร์ ซึ่งอย่างหลังทำให้มีความปลอดภัย และทำงานร่วมกันกับบุคคลอื่นได้ง่ายกว่า

เริ่มต้นโดยการทดลองใช้คำสั่ง git init เพื่อสร้าง repository บน local ก่อน
Continue reading

ครั้งที่แล้วเราใช้ Raspberry Pi เชื่อมต่อกับ Sensor วัดอุณหภูมิ DHT22 ครั้งนี้ลองมาใช้ 1 Wire Temperature Sensor อย่าง DS1820 บ้าง Sensor ตัวนี้มี 3 ขาหน้าตาคล้ายกับ TM/LM35 จ่ายไฟ 3.0 – 5.5V อ่านข้อมูลจากขาที่ 2 คล้ายกัน แต่ข้อมูลจะส่งออกมาเป็น digital สามารถต่อพ่วงใช้งานร่วมกันหลายตัวแบบ parallel ได้ ใครสนใจในรายละเอียดของ DS1820 ก็สามารถ ใน Raspberry Pi เราสามารถใช้ Kernel Module ชื่อ w1-gpio และ w1-therm ในการเชื่อมต่อกับ DS1820 ได้โดยตรงก่อนอื่นมาต่อวงจรกันก่อน


Continue reading

การใช้งาน Git ผ่าน Remote Repository ร่วมกันนั้น ก่อนหน้านี้เราพูดถึงการทำงานแบบ Centralized Workflow ไปแล้ว ในคราวนี้จะพูดถึงการทำงานอีกลักษณะหนึ่ง ซึ่งก็ไม่ได้แตกต่างจาก Centralized Workflow นัก เพียงแต่ผู้พัฒนา พัฒนาโดยแตก Branch Feature บน local repository แล้วจึง merge แล้ว push ไปยัง Remote Repository

เริ่มต้นจากนักพัฒนามากกว่า 1 คน ที่ทำงานบน remote repository เดียวกัน เริ่มโดยการใช้คำสั่ง git clone เพื่อคัดลอกมาทำงานบน local repository
Continue reading

เกี่ยวกับ Git Workflow นั้นให้มองภาพการพัฒนาซอฟต์แวร์ที่มีนักพัฒนาหลายคนร่วมในโครงการ การพัฒนาฟีเจอร์ การ release version ใหม่ การแก้ bug ซึ่ง git workflow ก็คือการนำสิ่งเหล่านั้นมาพัฒนาในรูปแบบของ workflow โดยใช้ git ช่วยในการพัฒนา

ยกตัวอย่างการพัฒนาซอฟต์แวร์ตามผังการพัฒนาในรูปตัวอย่างด้านล่าง


Continue reading

ในการพัฒนาซอฟต์แวร์เราจำเป็นต้องเก็บซอร์สโค้ดไว้ในเวอร์ชั่นคอนโทรล (version control) เพื่อที่บันทึการเปลี่ยนแปลงต่างๆ ในซอร์สโค้ดของเราและการทำงานร่วมกับทุกคนในทีม ซึ่งซอฟต์แวร์ประเภทเวอร์ชั่นคอนโทรลที่นิยมกันในปัจจุบันนั้นก็คือ Git และก็มีคลาวด์เซอร์วิสที่ควบคุมการทำงาน Git อีกทีเพื่อเราทำงานกับคนในทีมได้สะดวกยิ่งขึ้นด้วย เช่น GitHub, Bitbucket เป็นต้น เซอร์วิสอย่าง GitHub หรือ Bitbucket มีบางอย่างที่ไม่ตอบโจทย์ระดับองค์กรเหมือนกัน เช่น ไม่รองรับจำนวนคนในองค์กรได้ การใช้งาน repository อาจจะไม่เพียงพอ หรืออยากเก็บซอร์สโค้ดเป็นความลับในองค์กรทำให้เราไม่อยากฝากไว้กับผู้ให้บริการภายนอก เป็นต้น เพราะฉะนั้นจึงมีคนคิดค้นให้เซอร์วิสพวกนี้ให้ทำงานได้สำหรับองค์กร ซึ่งมีชื่อว่า GitLab
Continue reading

ก่อนที่จะติดตั้ง OpenStack นั้น เราจะเตรียมความพร้อมก่อน ไม่ว่าจะเป็น OS, Networking, NTP Server และ Database ดังนี้

1. ในส่วน OS

  • ติดตั้ง Ubuntu  12.04/14.04 LTS Server เวอร์ชัน 64 bit
  • create admin user
  • เซตค่า Network
  • ติดตั้งเฉพาะแพคเกจ Openssh-server

หลังจากติดตั้งเสร็จเรียบร้อยแล้วให้ update, upgrade ระบบ ดังนี้

sudo apt-get update
sudo apt-get upgrade

2. การปรับแต่ง Network

แก้ไขไฟล์ /etc/network/interfaces ดังตัวอย่าง 2 network interface

หลังจากปรับแต่งคอนฟิกไฟล์เนตเวิร์คเรียบร้อยแล้ว ต้องทำการ Restart network เพื่อปรับค่าใหม่ ดังนี้
sudo /etc/init.d/networking restart

3. NTP Server

ต่อไปเรามาทำในส่วน NTP กันต่อ โดย NTP มีไว้เพื่อ Synchronize เวลาของเครื่องบนเครือข่าย เพื่อให้เครื่องอื่นมา sync เวลาให้ตรงกัน กรณีไม่มี NTP Server เองก็สามารถใช้ Server อื่นได้ ดังตัวอย่างใช้ Server ของ ntp.ubuntu.com เป็นต้น

ติดตั้ง NTP package

sudo apt-get install ntp

แก้ไขไฟล์ /etc/ntp.conf โดยเพิ่ม server ที่ต้องการ ซึ่งถ้าเพิ่ม external server และไม่สามารถเชื่อมต่ออินเตอร์เน็ตได้ NTP server จะใช้เวลาตาม hardware clock เช่น

ntp

หลังจากแก้ไขคอนฟิกไฟล์เรียบร้อยก็ทำการ restart NTP server โดยใช้คำสั่ง

sudo service ntp restart

4. Database
โดยปกติ OpenStack ต้องใช้ Database ในการเก็บข้อมูล เราสามารถใช้ MySQL, PostgreSQL หรือ SQLite สำหรับ Nova และ Glance ในที่นี้จะยกตัวอย่างเป็น MySQL
ติดตั้ง mysql-server และ python-mysqldb (ตั้งรหัสผ่าน ในที่นี้สมมุติเป็น dbpassword)

sudo apt-get install mysql-server python-mysqldb

เปลี่ยนค่า bind address เพื่อให้เครื่องอื่นติดต่อ MySQL เราได้ โดยเปลี่ยน จาก 127.0.0.1 เป็น 0.0.0.0 ใน /etc/mysql/my.cnf ดังนี้

bind-address = 0.0.0.0

Restart MySQL server เพื่อปรับปรุงค่าใหม่ที่ได้แก้ไขไป โดยใช้คำสั่ง

sudo service mysql restart

เมื่อเราติดตั้ง MySQL เรียบร้อยแล้ว ก็มาสร้างฐานข้อมูลสำหรับ nova, glance และ keystone กัน
สร้างฐานข้อมูล, user , password พร้อม grant สิทธิ์สำหรับ nova

sudo mysql -uroot -pdbpassword -e ’CREATE DATABASE nova;’
sudo mysql -uroot -pdbpassword -e ’CREATE USER novadbadmin;’  #สร้าง user ชื่อ novadbadmin
sudo mysql -uroot -pdbpassword -e "GRANT ALL PRIVILEGES ON nova.* TO ’novadbadmin’@’%’;"
sudo mysql -uroot -pdbpassword -e "SET PASSWORD FOR ’novadbadmin’@’%’ = PASSWORD(’novasecret’);"

สร้างฐานข้อมูล, user , password พร้อม grant สิทธิ์สำหรับ glance

sudo mysql -uroot -pdbpassword -e ’CREATE DATABASE glance;’
sudo mysql -uroot -pdbpassword -e ’CREATE USER glancedbadmin;’  #สร้าง user ชื่อ glancedbadmin
sudo mysql -uroot -pdbpassword -e "GRANT ALL PRIVILEGES ON glance.* TO ’glancedbadmin’@’%’;"
sudo mysql -uroot -pdbpassword -e "SET PASSWORD FOR ’glancedbadmin’@’%’ = PASSWORD(’glancesecret’);"

สร้างฐานข้อมูล, user , password พร้อม grant สิทธิ์สำหรับ keystone

sudo mysql -uroot -pdbpassword -e ’CREATE DATABASE keystone;’
sudo mysql -uroot -pdbpassword -e ’CREATE USER keystonedbadmin;’ #สร้าง user ชื่อ keystonedbadmin
sudo mysql -uroot -pdbpassword -e "GRANT ALL PRIVILEGES ON keystone.* TO ’keystonedbadmin’@’%’;"
sudo mysql -uroot -pdbpassword -e "SET PASSWORD FOR ’keystonedbadmin’@’%’ = PASSWORD(’keystonesecret’);"

เมื่อเตรียมความพร้อมเรียบร้อยแล้วครั้งหน้าเราจะมาเรียนรู้ส่วนของการติดตั้งและปรับแต่ง keystone กัน

สมาคมสมาพันธ์โอเพนซอร์สแห่งประเทศไทย ร่วมกับ สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (องค์การมหาชน) ขอเชิญทุกท่านร่วมงานสัมมนาโอเพนซอร์ส ประจำปี 2557 กับงาน “มหกรรมซอฟต์แวร์โอเพนซอร์สแห่งประเทศไทย ครั้งที่ 12” หรือ Thailand Open Source Festival 2014 ระหว่างวันที่ 10-11 ตุลาคม 2557 ตั้งแต่เวลา 9.00-16.30 น. ณ สถาบันเทคโนโลยีปัญญาภิวัฒน์ พบกับ Open Source Solution มากมายจากผู้ประกอบการธุรกิจซอฟต์แวร์ สัมนาและ Workshop ด้าน Cloud Computing และการพัฒนาซอฟต์แวร์ด้วยเครืองมือโอเพนซอร์ส หากคุณเป็นคนรักซอฟต์แวร์โอเพนซอร์ส งานนี้ห้ามพลาด!

รายละเอียดเพิ่มเติม – ossfestival.in.th

คราวที่แล้ว blog เรื่อง systemd เกี่ยวกับการใช้งานเบื้องต้นไป คิดว่าหลายท่านอาจจะเริ่มใช้งานกันได้แล้ว ปัญหาของ systemd ยังไม่จบแค่นั้น สำหรับท่านที่เขียน init script สำหรับ start, stop, restart service เอง แล้วพยายามจะใช้ init script เดิมปัญหาเกิดขึ้นทันที อันนี้ซวยสุด เพราะผมเองก็เขียน init script เหมือนกัน T_T ครั้งนี้ก็เลยมา blog เรื่อง unit file กันสักหน่อย เอ่อ…ถ้าหักดิบใช้ CoreOS ไปเลยทุกอย่างจะจบ โดนบังคับโดยบริยาย ไม่มีอะไรให้ใช้นอกจาก systemd ไม่มี unit file ก็ต้องเขียนผ่าน cloud init เอง เรียกได้ว่านอนหลับฝันเป็น systemd เลยทีเดียว ครั้งที่แล้วได้ลองจัดการ service ผ่าน systemd โดยใช้ systemctl ไปบ้างแล้ว ครั้งนี้ก็ต้องเขียน unit file แล้วล่ะครับ

ขอยกตัวอย่าง node.js ก็แล้วกันง่ายดี node.js ทำงานเป็น httpd service ได้ระบุ port ผ่านไฟล์ config ซึ่งเราก็จะไม่แก้ไขเหมือนเดิม ใช้ port 3000 ของที่มีมานั่นแหละ :) มาสร้าง project กันก่อน ถ้ามี node.js และ express generator ก็สร้างตัวอย่างง่ายๆ ขึ้นมาได้เลย


Continue reading