Micropost App
ใครที่กำลังที่คิดจะเริ่มศึกษา ruby และ rails ทางบริษัทผมได้เคยมีโอกาสไปอบรมที่เกษตร
และได้ทำ work shop ระยะสั้น เพื่อใช้ในการอบรมไว้ด้วยเลยเอามาแจกจ่ายครับ
ในส่วนของเนื้อหา มี slide พร้อม code ของ rubyเนื้อหาทั้งหมดเป็นพื้นฐานของภาษา เข้าใจได้ไม่ยาก
ในส่วนของ workshop จะเป็นการทำ mini tweeter แบบง่ายๆ โดยใช้ Rails 3.2
ซึ่งใน workshop จะมี guide พร้อม ภาพประกอบ ทีละขั้นตอน
ซึ่งถ้ายังตามไม่ทัน เราสามารถ ดู code ต่างๆ ในแต่ละขั้นตอน บน github ได้อีกด้วย
ถ้ามีปัญหาสงสัยอะไรสามารถ โพสถามทิ้งไว้ได้เลยครับ ยินดีที่จะตอบเสมอ
ปล. อนุณาติ ให้เผยแพร่ แต่อย่าแก้ไขเนื้อหาในเอกสารต่างๆนะครับ
แก้ปัญหา Internet ช้า บน Ubuntu
เนื่องจากเป็นปัญหากันเยอะมาก ลงกี่ทีๆ ก็เป็น
อาการ จะเป็นทำนองว่า Internet บน Windows วิ่งปร๋อ แต่บน Ubuntu กลับช้าเยี่ยงเต่าหมอบคลาน (ช้ากว่า 10 เท่า) ซึ่งรำคาญใจของผู้ใช้ยิ่งนัก
ผมเลยเอามาโพสไว้นะครับ วิธีนี้แก้ปัญหาได้ผลทันตา สามารถใช้ได้ตั้งแต่ Ubuntu 9.04 – 11.04 (ถ้าไม่หายอีก… เป็นที่ driver แล้วล่ะครับ)
เพียงพิมพ์ตามด้านล่างนี้
$ sudo apt-get install ethtool
$ sudo ethtool -s eth0 speed 100 duplex full autoneg on
วิธีการลง RVM ใน Ubuntu และการติดตั้ง ruby ผ่าน rvm
RVM นั้นติดตั้งได้ง่ายมาก บน Ubuntu นะครับ เพียงไม่กี่คำสั่ง บน terminal ก็จัดการได้แล้ว ซึ่งในที่นี้จะติดตั้งแบบ single-user นะครับ
รายละเอียดเครื่องที่ใช้ทำกิจการครั้งนี้
OS: Any version of Ubuntu
ติดตั้ง RVM
1. ลง lib ที่จำเป็นทั้งหมดก่อน กันตายกลางทางนะครับ
$ sudo apt-get install build-essential libssl-dev libreadline6-dev zlib1g-dev curl git libxslt-dev libxml2-dev
2. ลง rvm ครับ ซึ่ง จะถูกเก็บใน path $HOME
$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
3. นำ โค้ดด้านล่างไปวางไว้ใน ~/.bashrc ด้านล่างสุด (เปิดที่ Home Folder ขึ้นมา แล้วกด Ctrl + H จะพบเองครับ)
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
***หมายเหตุ RVM ตั้งแต่ version 1.8.1 ใส่ให้แล้วครับ ข้ามขั้นตอนนี้ไปได้เลย (ถ้าอยากรู้ว่า version อะไร พิมพ์ rvm -v ครับ)
4. เมื่อเสร็จแล้วให้ปิด terminal แล้วเปิดขึ้นมาใหม่ครับ แล้วพิมพ์
$ source ~/.bashrc
5. ลง ruby ครับ ในที่นี้ผมลง 1.9.2-p290 นะครับ
$ rvm install 1.9.2-p290
คำสั่ง ต่างๆ ใน rvm ครับ
$ rvm list known | less$ rvm clean up$ rvm remove XXX$ rvm use XXX --defaultDevise gem พลังแห่ง Authentication
Devise เป็น Gem ที่ใช้สำหรับการทำ authentication ที่ดีมากๆ ตัวนึง หลังจากปลุกปล้ำมันในที่ทำงานมาได้สักพักก็พอเข้าใจมันบ้าง
ความสามารถของ devise มีตัวอย่างดังนี้
- Database Authenticatable: encrypts password ของผู้ใช้ เมื่อเข้าสู่ระบบ โดยสามารถทำได้ 2 ทางคือ http authentication ทั่วๆไป หรือ ส่งผ่านทาง request POST Method
- Token Authenticatable: เข้าสู่ระบบโดยใช้ authenticate token (อีกชื่อหนึงคือ “single access token”). ซึ่ง authenticate token สามารถ ส่งผ่าน request POST หรือ Query String
- Omniauthable: ไม่เคยใช้อ่ะ
- Confirmable: ระบบการยืนยัน account ของผู้ใช้ผ่านอีเมล์
- Recoverable: รีเซ็ทรหัสผ่าน โดยส่งผ่านทางเมล์
- Registerable: สมัครสมาชิก รวมไปถึง การลบ และแก้ไข ข้อมูลด้วย
- Rememberable: การเข้าสู่ระบบค้างไว้
- Trackable: คล้ายกับระบบ log ของการทำงานของผู้ใช้
- Timeoutable: อายุของ session
- Validatable: ตรวจสอบข้อมูลต่างๆของผู้ใช้ ในส่วนนี้เราสามารถแก้ไขได้ด้วย
- Lockable: การระงับการใช้งานไอดี เมื่อ เข้าสู่ระบบแล้วกรอกรหัสผ่านผิด เป็นเวลาตามที่กำหนด และสามารถขอปลดล็อคได้เมื่อ ผ่านไประยะเวลาหนึ่งหรือการส่งเมล์เพื่อยืนยัน
- Encryptable: เข้ารหัสของ password ให้เป็นรูปแบบอื่นเช่น AES MD5 เป็นต้น (โดย devise จะใช้การเข้ารหัสแบบ Bcrypt)
Hello Wakeup!! [@Work Place]
เรื่องมันเกิดขึ้นเมื่อวานนี้เอง พอดีทำงานเสร็จหมดแล้ว
แล้วมันไม่มีอะไรทำ facebook youtube msn ก็โดนบล็อคหมด โครตว่าง
ฟังเพลงก็ยังเบื่อ เปิดเว็บก็ไม่มีไรทำ
เลยเกิดอาการง่วงระยะสุดท้าย และได้แน่นิ่งไปในที่สุด
ไม่รู้หลับไปนานเท่าไหร่ สักพัก Will เจ้านายผมเข้ามาแตะไหล่ แล้วพูดว่า “Hello!! Wakeup!!”
ฮากันทั้ง ออฟฟิศ จบ…. ในหลายๆ แง่
ปล. ปัจจุบัน ก็ว่างนะ
Netzke the new journey begin.
ในบทความนี้เราจะทำการติดตั้งตัว netzke gem กับ rails 3.0.7
ก่อนอื่น ให้เราเพิ่ม gem ของ netzke ใน Gemfile
gem 'netzke-core', :git => "git://github.com/skozlov/netzke-core.git" gem 'netzke-basepack', :git => "git://github.com/skozlov/netzke-basepack.git" gem 'will_paginate', '~>3.0.pre2'
พิมพ์ bundle เพื่อทำการลง gem
> bundle
จากนั้นให้เราโหลด ตัว Ext JS มาวางไว้ที่ public/extjs
และ FamFamFam silk icons วางไว้ที่ public/images/icons
กลับไปที่ comand line
> ln -s ~/code/extjs/ext-3.3.0 public/extjs > ln -s ~/assets/famfamfam-silk public/images/icons
สร้าง welcome controller ขึ้นมา
> rails g controller welcome index
หลังจากนั้นเขียนเพิ่มในไฟล์ route.rb
NetzkeTaskManager::Application.routes.draw do netzke root :to => "welcome#index" # ... end
ประกาศ header เพิ่ม ในไฟล์ app/controller/aplication_controller.rb
<!DOCTYPE html> <html> <head> <title>Netzke Task Manager</title> <%= netzke_init %> <%= csrf_meta_tag %> </head> <body> <%= yield %> </body> </html>
สร้าง Model Task ขึ้นมา
rails g model Task done:boolean name:string notes:text priority:integer due:date
เราต้องการให้ ทุกTask มีค่าใน name เราจึงไปแก้ไขในไฟล์ app/model/task.rb
class Task < ActiveRecord::Base validates_presence_of :name default_scope :conditions => {:done => false} end
แล้วไปตั้งค่า Task ให้ done มีค่า default เป็น false ในไฟล์ db/migrate/xxx_create_tasks.rb
t.boolean :done, :default => false
เปลี่ยน app/views/welcome/index.html.erb เป็นดังนี้
<%= netzke :tasks, :class_name => "Basepack::GridPanel", :model => "Task" %>
จากนั้น จึงรัน rails server
rails s
เราสมารถไปดูผลการรันได้ที่ http://localhost:3000/
What is Netzke?
Netzke เป็น gem อีกตัวที่ถือว่า มีความสามารถในการจัดการข้อมูลในฐานข้อมูล ได้อย่างแจ่มแจ๋วทีเดียว ซึ่งเขียนจาก java script โดยใช้ ของค่าย EXT JS ซึ่งหากใครสนใจหรืออยากลองใช้ วันนี้เราจะพาไปดูตัวอย่างกัน

รูปร่างหน้าตาของตัว Grid Panel ใน Netzke หน้าตาก็ดูดีมีสกุลใช้ได้ทีเดียว

มี context menu ให้ใช้ด้วยในแต่ละ row

สามารถ add edit ผ่าน form หรือจะทำแบบ in-line เลยก็ทำได้สบายๆ

รองรับการทำ validation จาก model ด้วย


สามารถ sort หรือ filter ได้ด้วย ซึ่งทำจาก server side
ยังมีคุณสมบัติอื่นๆที่ยังไม่พูดถึงอีกเยอะ เช่น
- สามารถแสดงผลตามประเภทหรือ ชนิดของข้อมูลได้ เช่น ถ้าเป็น boolean จะเแสดงเป็น check box
- รองรับ การแสดงผลของตารางแบบ one-to-many relationship
- ฟอร์มค้นหาที่มีเงื่อนไข ตามชนิดของข้อมูลในแต่ละฟิลด์
หลังจากที่ดูตัวอย่างแล้ว ยังไม่จุใจ มี live demo ให้ดูด้วย กดเลย http://demo.netzke.org/#
หรือใคร อยากศึกษาด้วยตัวเองก็ http://blog.writelesscode.com/ หรือ http://netzke.org/