ต่อมือถือ Android กับ Ubuntu ผ่าน MTP

ผมใช้มือถือ Nexus มาได้ 1 ปี แต่ก็ยังไม่สามารถรับ-ส่ง ไฟล์ผ่านสาย USB ได้ เนื่องจาก Android 4.x ใน Nexus ใช้การเชื่อมต่อผ่านโปรโตคอล MTP และ PTP เท่านั้น ทำให้การใช้งานเครื่อง Nexus ของผมต้องผ่าน ddms หรือไม่ก็ Airdroid สำหรับท่านที่ใช้ระบบปฏิบัติการ Windows อาจไม่ส่งผลกระทบเท่าไร แต่ท่านที่ใช้ Ubuntu ก็คงต้องมาหาทางแก้ไขกัน ใน Ubuntu มีเครื่องมือหลายอย่างในการรับส่งไฟล์ผ่าน MTP เช่น Go-Mtpfs, Gvfs เป็นต้น แต่ทั้งหมดก็สร้างปัญหา หรือที่เรียกว่าใช้งานไม่ได้มาเกือบ 1 ปี แต่ Gvfs และ libmtp ก็ทะยอยแก้ปัญหามาเรื่อยๆ สำหรับท่านที่อยากลอง สามารถติดตั้งเพื่อทดสอบกันได้ จาก PPA ของนักพัฒนา ดังนี้
เพิ่ม PPA ของ Gvfs
sudo add-apt-repository ppa:langdalepl/gvfs-mtp
sudo apt-get update
จากนั้นสั่ง Upgrade
sudo apt-get upgrade
จากนั้น reboot เครื่อง แล้วลองเสียบเครื่อง Nexus ของคุณดูครับ จะพบว่า Ubuntu จะ Mount MTP Device ขึ้นมาให้พร้อมใช้งาน 😉

มาเล่น Juju GUI กัน

ครั้งที่แล้วได้เขียนวิธีการเล่น Juju บน command line เพื่อทำ service orchestration บน Amazon EC2 ครั้งนี้จะมาแนะนำวิธีการ ติดตั้ง Juju GUI เพื่อใช้ deploy service ผ่าน Web GUI ที่เรียกได้ว่าใช้งานง่ายสุดๆ สำหรับการติดตั้ง Juju GUI มีวิธีการดังนี้
ต้องมี Juju ก่อน ดูวิธีการติดตั้ง Juju ในตอนที่แล้ว
จากนั้นสั่งสร้าง bootstrap node โดยใช้คำสั่ง juju bootstrap จากนั้นสั่ง Juju ให้ deploy Juju GUI ดังนี้
juju deploy juju-gui
เมื่อ instance เริ่มทำงานและติดตั้ง Juju GUI เสร็จเรียบร้อย ให้สั่ง expose ดังนี้
juju expose juju-gui
เมื่อใช้คำสั่ง juju status คุณจะพบว่าตอนนี้มี 2 instances ส่วนการเช้าใช้งาน ก็ใช้ Public DNS ที่ Amazon กำหนดมาให้

จากนั้นก็ login โดยใช้รหัสผ่านในส่วน user-admin ที่คุณกำหนด

คุณก็จะได้หน้า Juju GUI พร้อมใช้งานดังนี้

ส่วนการ deploy service สามารถเลือก charm ที่มีอยู่ได้ สำหรับการ config charm กำหนดโดยการเชื่อมเส้นเท่านั้น ง่ายมาก

ข้อควรระวังในการใช้งาน Juju GUI เนื่องจากการ deploy ในแต่ละครั้งหากไม่ได้กำหนด หมายเลขเครื่องในการ deploy ตัว Juju จะสร้าง instance ใหม่ทุกครั้ง ซึ่งหมายถึงค่าใช้จ่ายที่เพิ่มขึ้นด้วย ควรระมัดระวังสักหน่อย เพราะ Juju ไม่ได้สร้าง instance จาก spot instance นะครับ

มาเล่น Juju กัน

Juju เป็นเครื่องมือสำหรับ Deploy Service หรือ Application บน Cloud Provider ใดๆ ก็ได้ ซึ่งตอนนี้รองรับทั้ง AWS, HP Cloud, OpenStack และ Azure นอกจากนี้ยังรองรับการทำงานบน MAAS (Metal as a Service) ด้วย Juju สามารถติดตั้ง Ubuntu, ติดตั้ง Software, Config Service ต่างๆ แถมด้วยการบริหารจัดการ Serice นั้นๆ ได้ด้วย เช่นการทำ Scaling เป็นต้น อาจจะเข้าใจยากไปหน่อยลองดูวิดีโอข้างล่างได้ครับ

วิธีการติดตั้ง หากไม่มี ssh key ก็สร้างขึ้นมาก่อนด้วยคำสั่ง
ssh-keygen -t rsa -b 2048
จากนั้นติดตั้ง Juju จาก PPA ดังนี้
sudo add-apt-repository ppa:juju/stable
sudo apt-get update && sudo apt-get install juju-core

เริ่มใช้งานกัน ผมยกตัวอย่างการ Deploy Application บน Amazon AWS ก็แล้วกันนะครับ ให้ Juju สร้าง config ไฟล์ขึ้นมาอัตโนมัติโดยใช้คำสั่ง
juju init -w
จากนั้นแก้ไฟล์ ~/.juju/environments.yaml แก้ตรง access-key และ secret-key นะครับ ทั้ง 2 ค่านี้จะอยู่ตรง AWS Account คลิกที่ “Security Credentials” และคลิกที่ “Access Credentials” เมื่อแก้ไขไฟล์ config แล้ว จะได้หน้าตาแบบนี้
default: amazon
environments:
## https://juju.ubuntu.com/get-started/amazon/
amazon:
type: ec2
admin-secret: 8a3125fcede733b8d0b44rwd73022c94
# globally unique S3 bucket name
control-bucket: juju-d9219e60d4dc09ed2c83650338dc3276
# override if your workstation is running a different series to which you are deploying
# default-series: precise
# region defaults to us-east-1, override if required
# region: us-east-1
# Usually set via the env variable AWS_ACCESS_KEY_ID, but can be specified here
access-key: YOUR-ACCESS-KEY
# Usually set via the env variable AWS_SECRET_ACCESS_KEY, but can be specified here
secret-key: YOUR-SECRET-KEY

หลังจากแก้ไขเรียบร้อยแล้วให้ลองทดสอบดู โดยใช้คำสั่ง
juju bootstrap
คำสั่งนี้จะไปสร้าง instance โดยใช้ ami ที่เป็น Ubuntu 12.04 LTS บน EC2 ให้อัตโนมัติ เขาจะสร้าง instance ที่ us-east-1 นะครับ ใครไม่ชอบก็เปลี่ยน zone ได้ เทคนิคง่ายถ้าอยากให้ Juju แสดงการทำงานในแต่ละคำสั่งให้ใส่ -v ต่อท้ายครับ สำหรับการตรวจสอบสถานะ ของ services ที่ run อยู่บน AWS ให้ใช้คำสั่ง
juju status
คำสั่งนี้จะรอนานสักหน่อยประมาณ 2-3 นาทีได้ คุณก็จะได้ข้อมูลของ instance ที่ deploy bootstrap ไป ทีนี้ลองมา deploy application กันบ้าง มาลอง deploy mediawiki กัน หรือใครอยากลอง deploy application อื่นๆ ให้เข้าไปดูที่ jujucharm.com ได้ครับ อ่ะ มาลอง deploy mediawiki กัน
juju deploy mediawiki juju deploy mysql
ถ้าคุณดู juju status ตอนนี้คุณจะได้ instance 3 อัน คือ bootstrap, wordpress และ mysql จากนั้นสั่ง add releation ระหว่าง mediawiki และ mysql ขั้นตอนนี้เป็นการ config mediawiki และ mysql
juju add-relation mysql:db mediawiki:db
จากนั้นสั่ง juju expose เพื่อตั้งค่า Security Group เพื่อกำหนด port ที่ต้องใช้งานและปิด port ที่ไม่จำเป็น
juju expose mediawiki
จากนั้นก็ดู public dns จาก juju status เท่านี้ก็ได้ mediawiki ใช้แล้ว
วิดีโอ Getting Start เผื่ออ่านแล้วไม่ค่อยเข้าใจ

ชีวิตบน Macbook Air

ผมตัดสินใจซื้อ Macbook Air เนื่องจากเครื่อง Asus ตัวเก่าเริ่มมีปัญหา จริงๆ มันก็มีปัญหามากว่า 1 ปีแล้ว เรื่อง keyboard ที่กดไม่ติด ปุ่มเด้งออกมา และอาการของเครื่องเริ่มผิดปกติ ไม่ว่าจะ boot ด้วย OS อะไรก็ตามจะ crash บ่อย หลังจากพยายามหาวิธีการทดสอบและลองเปลี่ยนอุปกรณ์หลายอย่างก็ไม่ส่งผลเท่าไร อาการยังคงเหมือนเดิมไม่ได้ดีขึ้น T_T ตอนแรกว่าจะเข้าศูนย์บริการของ Asus แต่ว่าไม่ได้ต่อประกันของ ​Asus และถ้าต่อประกันก็ต้องตรวจเช็คเครื่องก่อนซึ่งยังไงก็ไม่ผ่านอยู่ดีและส่งซ่อมก็คงระยะเวลาในการซ่อมหลายเดือน ก็เลยพยายามแก้ปัญหาด้วยตัวเอง จนสุดท้ายก็ตัดสินใจซื้อเครื่องใหม่เพื่อตัดปัญหาคาใจ
การตัดสินใจซื้อเครื่องใหม่ของผมกินเวลาเกือบ 1 ปี เนื่องจากไม่ได้ใช้ระบบปฏิบัติการเหมือนคนอื่น ใช้ระบบปฏิบัติการ Linux มาตลอดเกือบ 10 ปี ทำให้การเปลี่ยนไปใช้ Windows รุ่นใหม่ๆ ทำได้ยากมาก ถ้า Windows 98 ยังพอจะมีความรู้อยู่บ้างล่ะ การซื้อเครื่องใหม่จะต้องดีกว่าเดิม ทั้งเรื่องการประมวลผลและน้ำหนัก ผมเน้นเรื่องน้ำหนักเบาและเรื่องการประหยัดพลังงานเป็นหลัก หลังจากลองหา Notebook Windows อยู่หลายตัว ประกอบกับข้อมูลในการติดตั้ง Ubuntu พบว่าเดี๋ยวนี้เทคโนโลยีของ Bios มันเป็นซอฟต์แวร์ฝังลงตัว EUFI ถ้าจะติดตั้ง Ubuntu หรือ Linux จะต้องไปเขียนบางส่วนของ EUFI ใหม่เพื่อทำให้สามารถ Boot ระบบได้ ซึ่งเรื่องนี้ RMS เคยเตือนเมื่อเกือบ 10 ปีที่แล้วว่าจะเกิดเหตุการณ์แบบนี้ มันก็เกิดขึ้นจริงๆ ทำให้การติดตั้งระบบปฏิบัติการบนเครื่องที่เราต้องการใช้งานทำได้ยาก และเสี่ยงที่จะทำเรื่องพังและหมดประกัน ผมเล็ง Samsung Series 9  เอาไว้เพราะตรงกับความต้องการของผมพอดี เล็ก เบา ประหยัดพลังงาน แต่เรื่อง EUFI ที่ในต่างประเทศเคยทดสอบก็พบว่าทำให้เครื่องพังได้ ก็เลยไม่กล้าเสี่ยง เพราะกว่า Ubuntu จะรู้จักการตั้งค่าความสว่างหน้าจอบนการ์ดจอ Intel ก็ใช้เวลานานกว่า 2 ปีเลยทีเดียว ถ้าเป็นแบบนั้นผมคงไม่กล้าเสี่ยงทำเครื่องพังล่ะ
เรื่อง Environame ก็ต้องชั่งใจเพราะใช้ Windows ไม่คล่องและผมไม่ได้ประโยชน์จาก Windows เท่าไรนัก ถ้าเป็น ​Linux จะมีประโยชน์กับผมมากกว่า เพราะงานส่วนใหญ่ทำบน command line และผมถนัดมากกว่า แต่เรื่องที่จะเอา Linux มาติดตั้งบนเครื่อง Mac คงไม่ใช่ประเด็นสำคัญ เพราะผมต้องการ environment ในการทำงานที่เหมือนเดิมมากกว่า คือ Linux เป็นหลักหรืออย่าง Darwin นี่ก็พอรับได้ แต่ไม่ได้รู้สึกดีด้วย ก็เลยใช้เวลาศึกษาการใช้งาน OSX มาระยะหนึ่งด้วยการไปเรียนตามร้าน iStudio ที่เขามีรอบสอนการใช้งานโปรแกรมต่างๆ ตระเวรไปเรียนเกือบ 1 ปีได้ เรียนนิดๆ หน่อยๆ จำไม่ค่อยได้แต่ก็สามารถใช้งาน OSX ได้คล่องขึ้นบ้าง จริงๆ ก็เปิด terminal แก้ปัญหามาตลอดชีวิตล่ะ บน OSX ผมก็เปิด terminal เหมือนกัน ดังนั้นทางเลือกในการซื้อ Notebook ของผมจึงมีไม่มากนัก T_T
ชีวิตบน OSX ก็เหมือนชีวิตบน BSD ใช้แล้วเหมือนโดนบีบ แต่ก็เตรียมทำใจไว้แล้วว่ามันจะต้องเป็นอย่างนี้ ไม่มี apt-get install หรือ yum แต่มี mac port, brew แต่ก็โหดร้ายถึงขนาดดาวน์โหลดโค้ดมา compile ที่เครื่อง เหมือนย้อนกลับไปใช้ BSD เมื่อสมันเป็นวัยรุ่นเลย แต่มันก็น่าเบื่อ เท่าที่สังเกต dmg package มักจะทำเป็นก้อน image เอามาให้ mount loop แล้ว copy ไฟล์ไปวางที่อื่น หรือเปิดตัวติดตั้ง ซึ่งมันก็แค่ copy ไฟล์ไปวางที่อื่นเหมือนกันนั่นแหละ จากที่ลองแกะดูมันดิบมาก ไม่มี dependency package เหมือน Linux ทำให้ dmg ของแต่ละโปรแกรมมันใหญ่มาก ใหญ่กว่าของ Linux และ Windows เสียอีก ถ้าเน็ตช้าก็แย่เลยรอดาวน์โหลดกันนานเลย อีกเรื่องคงเป็นเรื่องแป้นคีย์บอร์ด เพราะไม่มีปุ่ม Home, End, Page Up, Page Down ทำให้งงกับชีวิต เรียกได้ว่าต้องเรียน short cut key กันใหม่ทั้งหมดเลย เดี๋ยววันไหนว่างๆ ไปแอบเรียนที่ iStudio ใหม่อีกรอบ เห่อๆ

มหากาพย์หลักสูตร Certificate for Cloud Specialists

เมื่อวันอังคารพี่ที่ฝ่ายบุคคลวิ่งมาหาคนไปเรียนหลักสูตร Certificate for Cloud Specialists ที่ทาง NSTDA จัดขึ้นร่วมกับมหาวิทยาลัยมหิดล, DELL, Microsoft และ SIPA ผมทราบข้อมูลหลักสูตรนี้จาก Facebook ของอาจารย์ธนชาติ ผมว่ารอนานมากกว่าจะมีหลักสูตรนี้เปิดสอนในสถาบันการศึกษา แต่ทว่าหลักสูตรนี้เรียนภาคภาษาอังกฤษ ระยะเวลาเรียน 48 สัปดาห์ (1 ปี) ค่าเล่าเรียน 200,000 บาทถ้วน รวม VAT แล้ว ทำให้ผมก็บอกพี่เขาไปว่าถ้าเรียนฟรีก็น่าสนใจ เพราะค่าเรียนแพงนะ จ่ายเองคงไม่ไหว เอาเงินไปซื้อทองให้นิอรดีกว่า พี่แกก็พยายามหาคนไปเรียน ใน SIPA มีตัวเก็งหลายคน ซึ่งผมดูหลักสูตรแล้วเหมาะกับคนที่ทำงานด้าน Infrastructure มาก เพราะเนื้อหาหนักไปทางนั้นเยอะ อยากให้คนทำ Infrastructure ของ SIPA ไปเรียน สุดท้ายเขาก็ยังหาคนไปเรียนไม่ได้ ผมก็บอกแค่ว่าถ้าไปเรียนฟรีจะไปเรียนนะเห่อๆ พี่เขาก็พยายามหาอีกคนไปเรียน เพราะได้โควต้ามา 2 คน
อีกสักพักพี่เขาก็วิ่งกลับมาพร้อมบอกว่าผมไปเรียนไม่ได้หรอก เพราะผมเป็นลูกจ้างสัญญาจ้างโครงการ กรี๊ดดดดด แทงใจดำเหมือนตอกย้ำความต่ำต้อย เขาบอกว่าไม่รู้ว่าผมจะอยู่ที่ SIPA ต่อหรือเปล่า (เอ่อ ถ้าจ้างต่อก็อยู่ต่ออ่ะนะ) ก็เลยอดไป ผมแอบเศร้าใจไป 2 วัน ไม่ได้เศร้าเรื่องไม่ได้ไปเรียนนะ แต่เศร้าเรื่องตอกย้ำว่าเป็นลูกจ้างสัญญาจ้างโครงการนี่แหละ หลังจากนั้นพี่เขาก็หาคนไปเรียนได้ เรื่องยังไม่จบพอวันพฤหัส ท่านรองผอ. ที่ดูแลฝ่ายก็เดินเข้ามาถามว่า ผมกับมะระเรียนหลักสูตรภาคภาษาอังกฤษได้มั๊ย ถ้ามีคอร์สเรียนจะไปเรียนมั๊ย ก็เลยนึกออกได้ว่าเป็นหลักสูตร Cloud Specialists นั่นเอง มะระก็เลยบอกรองฯ ไปว่าเขาได้คนเรียนแล้ว ไม่ได้ไปทั้ง 2 คน ส่วนผมไม่มีสิทธิ์ไปเรียนเพราะเป็นลูกจ้างสัญญาจ้างโครงการ (กรี๊ดดดดด แทงใจดำ) รองฯ ก็ทำหน้างงๆ แล้วก็บอกว่างั้นเดี๋ยวผมไปคุยกับฝ่ายบุคคลก่อน พอตอนบ่ายถึงได้กรอกใบสมัครเรียนและได้รับแจ้งว่าเริ่มเรียนพรุ่งนี้ ชีวิตในวันศุกร์และวันเสาร์ระยะเวลา 1 ปี ผมต้องมาเรียน Cloud Specialists ที่มหาวิทยาลัยมหิดล ไม่รู้จะดีใจหรือเสียใจดี
หลักสูตร Cloud Specialists เรียนอะไรมั่ง หลักสูตรนี้แบ่งออกเป็น 5 ส่วนได้แก่ Cloud Architecture, Cloud Technology, Cloud Data, Cloud Security และ Cloud Services ใช้เวลาเรียน 4 ภาคการศึกษา ระยะเวลา 1 ปี เนื้อหาในแต่ละภาคการศึกษามีดังนี้

  1. Fundamental Cloud Computing and Architecture, Cloud Technology and Services
  2. Cloud Virtualizationn, Cloud Security
  3. Cloud Database and Big Data Technology, Cloud Resource Provisioning
  4. Disaster Recovery and Continuity in the Cloud, Cloud Governance, Risk Management and Auditing

วันนี้เรียนวันแรก ถ้าไม่ขี้เกียจผมคงได้ทะยอย blog การเรียนในแต่ละวัน เผื่อใครที่ไม่มีโอกาสได้ไปเรียนจะได้เรียนหลักสูตรนี้ไปด้วยกันผ่าน blog ของผมนี่แหละดีมั๊ยครับ 🙂

กลับมาใช้ Amazon Web Service

เนื่องจากหมดความอดทนกับการหาเครื่องเซิร์ฟเวอร์มาทดสอบซอฟต์แวร์ ทำให้ต้องพึ่ง AWS เนื่องจากกดสร้าง instance จาก ami ของ Linux ตระกูลต่างๆ ได้เลย ง่ายเพียงแค่กด URL เท่านั้น ตัวอย่าง Fedora in the Cloud เรื่องของเรื่องคือใครแม่มจะจำเลข ami ได้อ่ะ พอกลับมาใช้ AWS ได้ 1 อาทิตย์ก็รู้เลยว่า ไม่ค่อยชอบ IaaS สักเท่าไร ผมพยายามหนีเรื่องการติดตั้งโปรแกรมบน instance เพราะมันน่าเบื่อ อีกอย่างต่อให้อยู่บน Cloud คุณก็ต้องทำ Hardening OS เหมือนเดิม หนีไม่พ้น
การใช้ PaaS ง่ายกว่ามาก แต่บางอย่าง (จริงๆ ก็เกือบทุกอย่าง) เราก็ควบคุมไม่ได้ หรืออาจจะต้องไปเรียกใช้บริการจากผู้ใช้บริการรายอื่นซึ่งดูไม่ค่อยเหมาะสมเท่าไร เช่น Storage ที่มีให้มันน้อยไป ทางออกคือใช้บริการ Object Storage ที่สามารถสร้าง bucket ได้ใหญ่ตามที่คุณต้องการได้ แต่ PaaS บางรายไม่มีให้บริการ เรื่องการ Elastic Scaling ที่ทำไม่ได้ทำได้ทุก Platform เช่น Scaling MySQL ไม่ได้ แต่ Scaling MongoDB ได้ ต้องแก้ App ให้มาใช้ MongoDB แทน อันนี้ใช้พลังเยอะไปหน่อย แต่ในระยะยาวการทำ Cloud App ยังไงก็ต้องแก้อยู่ดี
ผมก็ยังใช้ IaaS และ PaaS หลายผู้ให้บริการเหมือนเดิม ขึ้นอยู่กับความต้องการตามความเร็วของการทำงาน เช่น ผมมักจะทำ prototype บน OpenShift เพราะดึงเอา code จาก git และสั่งงานผ่าน hook script ทำให้ deploy ได้ง่าย ทำ CI ได้ง่าย แต่เวลาส่งงานหรือใช้งานจริง ผมมักจะเลือก IaaS อย่าง AWS หรือ PaaS อย่าง dotCloud ใช้บริการแทน เนื่องจากบริการ Silver Plan ของ OpenShift ยังไม่ได้เปิดบริการในประเทศไทยและยังจ่ายเงินไม่ได้ ก็เลยต้องใช้บริการจากผู้ให้รายบริการอื่นแทน
อ้อเกือบลืม ผมใช้ AWS ตั้งแต่ปี 2008 เวลาดู Billing ของ EC2 แล้วรู้สึกเหมือนย้อนอดีตเลยล่ะ

นี่แหละคือฉัน

หลังจากทำแบบทดสอบ Strengths Finder กันไปแล้วก็เลยมาวิเคราะห์ตัวเองต่ออีกหน่อยว่า ผลจาก Strengths Finder มันตรงบ้างไหมซึ่งเอาเข้าจริงแล้วมันก็ตรงอยู่นะ และ Strengths หรือในหนังสือภาษาไทยเรียกว่าพรสวรรค์ที่ผมมีมันทำให้ผมกลายเป็นพวกบ้าคลั่งอะไรบางอย่าง

ภาพข้างบน ผมว่ายังมีส่วนพฤติกรรมแฝงอย่าง Deliberative และ Adaptability อยู่แต่ทั้งสองถูกเบรคและดึงด้วย Learner เพื่อที่จะลด/เพิ่มอัตรา Achiever คือไม่ใช้พลังมากจนเกินไปจนเกินพลังตัวเอง เป็นการประยุกต์โดยดึงพฤติกรรมแฝงอย่าง Deliberative และ Adaptability มาใช้ แต่ Learner, Restorative และ Achiever ยังคงเป็นแรงผลักดันในชีวิตอยู่เสมอๆ บางครั้งก็ทำโดยไม่รู้ตัว แปลกดี