วันจันทร์ที่ 24 มีนาคม พ.ศ. 2557

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

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




วันเสาร์ที่ 15 มีนาคม พ.ศ. 2557

มาเล่น 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 มาใช้งานกันได้ :)


วันพุธที่ 12 มีนาคม พ.ศ. 2557

มาเล่น 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



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




วันพุธที่ 5 มีนาคม พ.ศ. 2557

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

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





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





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





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


วันจันทร์ที่ 3 มีนาคม พ.ศ. 2557

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

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




  • Sencha Cmd

  • PhoneGap Command Line



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