แหล่งเรียนเขียนโปรแกรมออนไลน์

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

 

แหล่งเรียน Arduino

ผมซื้อ Arduino Basic Kit มาได้ครบ 1 อาทิตย์แล้ว ยังไม่ได้ทำอะไรเป็นชิ้นเป็นอันเท่าไร ตอนนี้ยังกองๆ อยู่ในกล่อง แต่ก็พยายามหาแหล่งเรียนรู้ Arduino ด้วยตนเองอยู่บ้าง เพราะเดี๋ยวจะเบื่อเร็ว เอาเป็นว่าแหล่งเรียน Arduino ที่ผมหามาได้มีดังนี้

 

iPad mini 2 ใน 3 วัน

แอบไปเล็ง iPad mini with retina display (iPad mini 2) ไว้อยู่หลายเดือนศึกษาข้อมูลเรื่อง iOS พอที่จะมั่นใจได้ว่าซื้อมาแล้วใช้งานได้แน่นอน ก็เลยตัดสินใจซื้อครับ โดยรวมพอใจระดับนึงเรื่องวัสดุและการสัมผัสไหลลื่นมาก (หลังจากอัพเดทเป็น 7.1) แต่มีเรื่องที่ทำเอาผมมึนคือเรื่อง AirDrop ซึ่งเข้าใจว่าสามารถส่งไฟล์ไปที่เครื่อง Mac ได้เพราะ Mavericks มี AirDrop เหมือนกัน แต่เอาเข้าจริงทำไม่ได้ สุดท้ายต้องไปนั่งเรียนกับ iStudio จึงเข้าใจว่ามันต้องโยนผ่าน iTune ในส่วน File Sharing ในแต่ละ App แยกกล่องเก็บไฟล์ของตัวเองไว้ ใช้ App อะไรเปิดไฟล์ ดาวน์โหลดไฟล์ มันก็จะอยู่ในกล่องของ App นั้นๆ … เอ่อ นี่มัน Sand Box ชัดๆ ไม่ต่างอะไรกับ OSX เลย อยากร้องไห้ สุดท้ายต้องไปหา App ที่เกี่ยวกับการจัดการไฟล์มาใช้ ที่มีคุณสมบัติในการเปิด protocol อะไรบางอย่างที่ชาวบ้านเข้าใจ เช่น WebDev, SMB, CIFS เป็นต้น และเชื่อมต่อจากเครื่องคอมพิวเตอร์ผ่าน Wifi ได้ ก็ทำให้ชีวิตดีขึ้นมาอีกหน่อย
อีกเรื่องที่เพิ่งรู้ก็คือ App บน iPad มีขนาดใหญ่มาก App เล็กๆ ที่อยู่บน Android พอเจอ App เดียวกันบน iPad ขนาด package ต่างกันเยอะมาก เรียกได้ว่า 16GB เต็มอย่างรวดเร็ว เรื่องที่ชวนงงอีกเรื่อง ก็เป็นเรื่องเกี่ยวกับการติดตั้ง App ผ่าน Mac และผ่าน AppStore บน iPad เอง ข้อมูลการติดตั้งไม่ sync กัน ทำให้บน Mac มี App จำนวนนึง แต่บน iPad มี App อีกจำนวนนึง ถ้าเผลอไปอัพเดทบน iPad บน Mac จะไม่ sync เวอร์ชั่นใหม่จาก iPad ให้ ต้อง sync อัพเดทเองจาก iTunes Store เล่นเอามึนไปหลายรอบ
อาการ Backup a holic เวลา sync กับ Mac หลายคนอาจจะมองว่าดี แต่สำหรับผมนั่งรอ backup นาน และมันน่าเบื่อ สุดท้ายกดปุ่ม cancel ไม่ Backup อะไรทั้งนั้น อาการ Push Notification สำหรับ App บางตัวที่มีการอัพเดทข้อมูลบ่อยๆ อย่าง Mail นี่จะสร้างความรำคาญมากเลยล่ะ แต่ดีที่ iPad สามารถตั้งเปิด/ปิด Notification ราย App ได้สะดวกมากขึ้น
โดยส่วนตัวผมไม่ต้องกังวลเรื่องการอ่านหนังสืออย่าง epub, pdf เพราะสามารถโยนไฟล์จาก iBook บนเครื่อง Mac มาอ่านได้ ไม่ต้องรอ sync จาก internet อย่าง Google Play Book และที่สำคัญโปรแกรมที่ผมชอบอย่าง Ookbee ทำงานได้ดีบน iOS มาก อ่านหนังสือที่ซื้อมาไว้ได้สบายใจไม่หงุดหงิด 🙂
 

ได้ของเล่นใหม่ Arduino Uno R3

ติดสินใจสั่ง Arduino มาเล่นนานมาก เพราะกลับว่าจะซื้อมาแล้วเล่นได้ 10 นาทีแล้วเลิก ก็เลยหา shield ที่น่าสนใจมาดูว่าจะทำอะไรเล่นได้บ้าง ก็พบว่า shield มีเยอะ เรียกได้ว่าหามาเสียบๆ ทำอะไรสนุกๆ เล่นได้หลายอย่างเลย สุดท้ายก็สั่งซื้อ  Arduino Basic Kit จาก Arduino  Thai มาลองหัดเล่นบ้าง ผมไม่ได้จับ Micro Controller มานานเกือบๆ 15 ปีเห็นจะได้ เรียกได้ว่าอ่านค่า R ไม่ได้แล้วเลยล่ะ ลืมหมดทุกอย่าง T_T  ครั้งนี้คงได้ลองอะไรใหม่ๆ อีกเยอะ เพราะเดี๋ยวนี้อุปกรณ์ถูกกว่าแต่ก่อนมาก ไม่ต้องย้าย EPROM มา burn แล้วเสียบเหมือนแต่ก่อน และที่สำคัญไม่ต้องเขียน Assembly แล้ว แหมดีจัง ^ ^

เอาเป็นว่า คงใช้เวลาสุดสัปดาห์มานั่งเล่น Arduino ครับ ปล. เดือนหน้า มาสเตอร์อึ่งเปิดสอน Arduino ว่าจะไปเรียนกับ มาสเตอร์อึ่งบ้างครับ 🙂

มาเล่น Puppet Enterprise กัน

เนื่องจากมีโอกาสได้กลับมาเล่น Puppet อีกรอบก็เลย blog ไว้สักหน่อย เป็นที่ระลึก เพราะครั้งนี้เล่น Puppet Enterprise เลยทีเดียว Puppet เป็นเครื่องมือใช้ทำ System Configuration Management ช่วย ติดตั้ง และ config package ลงในเครื่องเซิร์ฟเวอร์หลายๆ เครื่องได้อย่างรวดเร็ว โดยไม่ต้องไล่ ssh ไปทีละเครื่องเพิ่อติดตั้ง package นั้นๆ เอง Puppet สนับสนุนการใช้ใช้งานร่วมกับ Cloud Infra และ Bare Metal อีกด้วย (Razor) ก่อนเล่น Puppet ต้องเข้าใจเรื่องโครงสร้าง Puppet กันคร่่าวๆ สักหน่อย
puppet enterprise diagrame
Puppet ทำงานแบบ master – node คุยกันผ่าน mcollective ซึ่งจะต้องมี Puppet master และ node ที่ติดตั้ง agent เอาไว้ Puppet master จะทำหน้าที่ orchestration node ที่ผูกผ่าน agent ทำให้ Puppet master สามารถที่จะ config ติดตั้ง package ที่เราต้องการไปยัง node ผ่าน Puppet master ได้ อธิบายคร่าวๆ อย่างนี้ก็แล้วกันครับ อ้อ เกือบลืมไป Puppet Enterprise สามารถใช้งานได้ฟรี ผูก node ได้ 10 เครื่อง อยากผูก node เพิ่มต้องจ่ายตังค์เพิ่มครับ มาลงมือกันดีกว่า
เนื่องจากผมมีเครื่อง Ubuntu ก็ขอใช้ Ubuntu server 12.04.4 LTS ละกัน ติดตั้ง Ubuntu server, OpenSSH server และตั้ง NTP กับ time server ให้เรียบร้อย ทั้ง 2 เครื่อง คือ master, node1 ตามรูป เครื่อง master และเครื่อง node มองเห็นกันทดสอบ ping ผ่าน hostname ดูครับ
pupetlabs
เข้าไปที่เว็บไซต์ http://puppetlabs.com จากนั้น download Puppet Enterprise แบบ Full Install ให้ตรงกับ OS และ Architecture ที่คุณใช้ ซึ่งก็คือ Ubuntu 12.04 ของผมใช้ 32bits
puppet download
คุณจะได้ไฟล์ puppet-enterprise-3.2.0-ubuntu-12.04-i386.tar.gz มา ถ้าใช้ amd64 คุณจะได้ไฟล์ puppet-enterprise-3.2.0-ubuntu-12.04-amd64.tar.gz มาครับ อย่าดาวน์โหลดผิดเวอร์ชันเป็นพอ จากนั้นก็แตกไฟล์นี้ที่เครื่อง master และ เครื่อง node ให้เรียบร้อย
เครื่อง master สั่งติดตั้ง Puppet master
cd puppet-enterprise-3.2.0-ubuntu-12.04-i386
./puppet-enterprise-installer
ตัวติดตั้งจากถามคือถามเราเรื่อยๆ ก็ตอบ yes/no ไปเรื่อยๆ ดังนี้
ติดตั้ง Puppet master มั๊ย ตอบ y
Install puppet master? [y/N] y
ติดตั้ง PuppetDB มั๊ย ตอบ y
Install PuppetDB and console on this node? [Y/n] y
จะ provision vm บน cloud มั๊ย ตอบ n เพราะไม่ได้ใช้อ่ะ
Install the cloud provisioner? [y/N]
ตั้งชื่อ certificate อะไร ใช้ default
Puppet master’s certname? [Default: master]
ตั้ง DNS aliase ใช้ default
Puppet master’s DNS aliases (comma-separated list)? [Default: master,puppet]
ติดตั้ง PostgreSQL ไว้ที่เครื่อง master มั๊ย ตอบ y เพราะยังไม่มี PostgreSQL
Install the included Puppet Enterprise PostgreSQL server locally? [Y/n]
หลังจากนั้นก็ config console กำหนด admin account ใส่ email ที่จะใช้ login ลงไป
Admin email address (will be used as account name) for accessing the console interface? puppet@example.com
ใส่ password ที่เราต้องการ
Password for user puppet@example.com (minimum 8 characters)?
จากนั้นตัวติดตั้งจะแจ้งว่า package ที่ต้องใช้ติดตั้งเพิ่มเติมมีอะไรบ้าง และถามว่าเราว่าจะให้ติดตั้งให้ป่าว ตอบ y เพราะไม่มีก็ใช้ไม่ได้นี่
Install these packages automatically? [Y/n] y
จากนั้นตัวติดตั้งจะสรุปว่าจพติดตั้งอะไรบ้าง ตั้งแต่กด yes/no มายาวๆ แล้วถามว่าจะติดตั้งเลยมั๊ย ตอบ y
Perform installation? [Y/n] y
จากนั้นตัวติดตั้งก็จะทำการ ติดตั้ง package ที่ต้องใช้งาน และ config ค่าต่างๆ ให้อัตโนมัติ นั่งรอจนกระทั่งถึง STEP 4 ซึ่งจะแจ้งผลการติดตั้ง ที่อยู่ของ answer file เก็บ answer ไฟล์ไว้ดีๆ เพราะในไฟล์นี้จะมีข้อมูล config ต่างๆ และรวมถึงรหัสผ่านการเข้าใช้งาน PuppetDB และ PosgreSQL ด้วย ซึ่งอาจจะต้องใช้อีกในอนาคต 🙂 เมื่อติดตั้งเรียบร้อยแล้วก็เปิด browser ขึ้นมาแล้ว browser ไปที่เครื่อง master ของคุณ ด้วย url https://master หรือตามด้วย ip ก็ได้ เช่น https://192.168.2.160 คุณก็จะได้หน้าล็อกอินแบบนี้
console login
ลอง login ดูว่าเข้าได้หรือเปล่า 🙂
after login
กลับมาที่เครื่อง node ติดตั้ง Puppet agent ดังนี้
cd puppet-enterprise-3.2.0-ubuntu-12.04-i386
./puppet-enterprise-installer
จากนั้นก็ตอบคำถาม yes/no กันอีกรอบ ดังนี้
Install puppet master? [y/N]
Install PuppetDB? [y/N]
Install the console? [y/N]
Install the cloud provisioner? [y/N]
Install puppet agent? [Y/n]
Install these packages automatically? [Y/n]
Perform installation? [Y/n]
นั่งรอจนกระทั่งถึง STEP 4 ซึ่งจะแจ้งผลการติดตั้ง ที่อยู่ของ answer file เก็บ answer ไฟล์ไว้ดีๆ เพราะเราอาจจะเอาไปใช้กับเครื่อง node เครื่องต่อไป หลังจาก config node เสร็จกลับไปดูที่หน้า web console จะพบว่ามี node request เข้ามาดังนี้
node request
กดเข้าไปแล้ว Acept Node ดังนี้
acept node request
รอ Agent ส่งข้อมูล factor เข้ามาที่ master ลอง refest หน้า web console ก็จะได้ node เข้ามา 1 ตัวแล้ว
add node
ที่เครื่อง node ทดสอบ Agent กันด้วยคำสั่ง
puppet agent --test
ให้ตรวจสอบว่า node ที่เพิ่มเข้ามาอยู่ในกลุ่ม mcollective หรือยัง
mcollective group
ทีนี้มาลองเล่น Live Management กัน เข้าไปที่ Live Management จากนั้นเลือก master, node ที่มีอยู่ แล้วลอง search package ดูว่าในเครื่อง master, node มี package ntp ติดตั้งหรือเปล่า เราก็จะได้ผลลัพท์ว่าเครื่อง master, node มี ntp ติดตั้งอยู่
find ntp package
มาเล่นในส่วน configuration management กันบ้าง เนื่องจาก Puppet Enterprise ที่ติดตั้งจะมี class พื้นฐาน ของ Puppet ที่ต้องใช้ แต่ไม่มีที่เราต้องใช้ T_T ดังนั้นเราต้องเขียน Puppet module กันเอาเอง หรือใช้บริการ Puppet module จาก Puppet Forge ก็ได้
puppet forge
วิธีการเล่นกับ Puppet Enterprise มีขั้นตอนง่ายๆ ดังนี้

  1. เขียน module หรือติดตั้งจาก Puppet Forge
  2. เพิ่ม Class เข้าไปในระบบ (ถ้าใช้ command line ก็เหมือนที่เราเขียน class ที่เป็น pp ไฟล์นั่นเอง)
  3. กำหนด node ให้อยู่ใน Class นั้นๆ หรือกำหนด node ให้อยู่ใน Group นั้นๆ

มาลองกันครับ
puppet module install puppetlabs-apache
puppet module install
ลองเช็คสักหน่อยว่าไม่มีอะไรพัง
puppet module list
puppet module list
ที่นี้กลับเข้ามาที่ web console เพิ่ม Class กัน กดปุ่ม Add Class แล้วค้นหา module Apache ดูครับ เราจะพบว่ามี Class ย่อยๆ อีกเยอะ สามารถเลือกได้ตามใจชอบ เช่น apapche, apache:php เป็นต้น จากนั้นกดปุ่ม Add Class เราก็จะได้ Class มาเพิ่มอย่างนี้
Class list apache
เพื่อความเป็นระเบียบเพิ่ม Group ขึ้นมาครับ กดปุ่ม Add Group สร้างกลุ่ม www ขึ้นมา เพิ่ม Class apache และ เพิ่ม node ของเราเข้าไป กดปุ่ม Create เท่านี้ก็เรียบร้อยแล้ว
add group
เข้าไปดูรายละเอียด node เราอยู่ใน Group www เรียบร้อยแล้ว
node1 detail
หลังจากนี้นั่งรอครับ mcollective จะเข้าไปคุยกับ node แล้ว deploy apache ให้ ถ้าใจร้อนก็เข้ามาที่ Live Management เลือก node เลือก Control Puppet เลือก runonce… กดปุ่ม run ได้เช่นกัน กลับไปดูหน้ารายละเอียด node จะพบว่ามี change แล้ว ดู report ว่าไม่มีอะไรพัง เป็นอันใช้ได้ครับ 🙂
change report
change event
อาจจะลองเข้าไปดู package list ว่า apache2 ติดตั้งหรือยังก็ได้
package list
ลอง browse ไปที่ node1 ดู ก็จะพบว่า apache ติดตั้งเรียบร้อยแล้ว
browse node1
หากคุณอยากได้เครื่อง webserver อีก ก็แค่เพิ่ม node ใหม่อยู่ในกลุ่ม www เท่านี้ node ที่เพิ่มเข้ามาก็จะติดตั้ง apache ให้เสร็จเรียบร้อยโดยไม่ต้อง ssh ไปติดตั้ง apapche เลย สำหรับการใช้งาน Puppet เราสามารถสร้าง module เพื่อ deploy application ที่เราต้องการได้ เช่น ติดตั้ง apache + php + mysql + wordpress เป็นต้น หากไม่อยากเขียนเอง ก็ download module จาก Puppet Forge มาใช้งานกันได้ 🙂
 

AeroGear

รีบมา blog เรื่อง AeroGear ไว้ก่อนเนื่องจาก เดี๋ยวจะลืมอีก AeroGear เป็น OpenSource Library สนับสนุนโดย RedHat มีความสามารถ อยู่ 3 อย่างคือ

  • Unify Push Notification
  • OTP
  • Crypto

ซึ่งสามารถใช้งานได้ทั้ง Web, iOS, Android และ Apache Cordova ใครสนใจก็เข้าไปดูรายละเอียดกันได้ที่ http://aerogear.org อ้อมี Cartridge บน OpenShift ด้วยครับ ใครที่ใช้ OpenShift ไปกดเล่นกันได้ 🙂

 

มาเล่น Add-ons บน Google Docs และ Google Sheets กัน

Google เพิ่มความสามารถใหม่ให้กับ Google Docs และ Google Sheets โดยเพิ่ม Add-on ทำให้คุณสามารถทำงานกับเอกสารต่างๆ ได้หลากหลายมากขึ้น สำหรับท่านที่ใช้ Google Docs อยู่แล้วดูตรงเมนู Add-ons > Get Add-ons จากนั้นจะเข้่าหน้า Add-on Store เลือกใช้ Add-ons ที่คุณต้องการได้เลย

สำหรับ Add-ons ที่น่าเล่น ได้แก่

  • Label Merge
  • EasyBlib
  • Merge by MailChimp
  • Workflows
  • PandaDoc
  • HelloSign

ลองไปเล่นกันดูนะครับ 🙂

มาแล้วฟอนต์ TH Sarabun ใน Google Doc

เฝ้ารอคอยมานานเนื่องจาก Google มีชุด Office บน Web อย่าง Google Doc มานานแต่ฟอนต์ภาษาไทยมีแต่ฟอนต์ไทยใน Windows วันนี้ฟอนต์ไทยมาครบเซ็ต ดังภาพซึ่งรวมเอาฟอนต์ภาษาไทยบน Windows, Mac และฟอนต์ภาษาไทยพิเศษอย่าง TH SarabunPSK มาด้วย

หลายท่านอาจเริ่มไปกดดูใน Google Doc แล้วพยายามหาฟอนต์ ให้กำหนดเอกสารเป็นภาษาไทยก่อนนะครับ ไม่อย่างนั้นรายการฟอนต์จะไม่โผล่มา

การตั้ง Style ก็ทำได้ง่ายมากๆ

เท่านี้ปัญหาเรื่องรูปแบบหน้าตาฟอนต์ใน Google Doc ก็หมดไปอีกเรื่องแล้วครับ สำหรับเรื่อง TH SarabunPSK ต้องขอขอบคุณผู้ที่อยู่เบื้องหลังในเรื่องนี้ทุกท่านครับ ปล. เอา TH Sarabun New เข้าไปด้วยจะดีมากเลยครับ 🙂

A Peacock in the Land of Penguins

หนังสือชื่อ A Peacock in the Land of Penguins หรือฉบับแปลไทยใช้ชื่อว่า “สำเร็จได้ในแบบที่คุณเป็น” เป็นหนังสือเล่มล่าสุดที่ผมซื้อมาอ่าน โดยปกติผมไม่ค่อยอ่านหนังสือเกี่ยวกับการบริหารมากนัก เนื่องจากมีปัญหาส่วนตัวที่แก้ไม่ตก จึงอยากลองอ่านหนังสือเล่มนี้ดู ด้วยความสงสัยที่ว่านกยูงเพอร์รี่จะทำอย่างไรในดินแดนของเพนกวิ้น และคำตอบของเพอร์รี่อาจจะเป็นคำตอบเดียวกับคำตอบของผมเองเป็นก็ได้ สำหรับใครที่ชอบอ่านหนังสือแนวจิตวิทยาและการบริหารงานองค์กรควรจะไปหามาอ่านครับ — ผมแนะนำ

ใช้ Sencha และ PhoneGap แบบ Command Line

เนื่องจากไปเรียน Cross Platform Mobile App Development ที่ SoftwarePark มา 4 วันก็เลยพยายามจะทำสรุปว่าเรียนอะไรไปบ้าง เนื่องจากผมถนัดใช้ command line ก็ขอทำเป็น slide สั้นๆ อธิบายและสรุปเกี่ยวกับคำสั่งที่ผมใช้บ่อยจะดีกว่า เหมือนบันทึกกันลืม มี 2 หัวข้อคือ

  • Sencha Cmd
  • PhoneGap Command Line

ส่วน Wikitude ที่ใช้พัฒนา AR Application เดี๋ยวคงจะทะยอยเขียนสรุปอีกทีครับ