LAMP - Thai Edition
ช่วงที่ผ่านมาเราคงได้เห็นคำว่า
LAMP ในข่าวของ IT บ่อยๆ
แล้วที่น่าจะเห็นได้ชัดมากๆ ก็มีช่วงที่ Sun Microsystems
Inc ได้เข้าซื้อควบรวมกิจการของ
L นั้นได้อ้างอิงถึง
Linux ซึ่งเป็นระบบปฏิบัติการ
A นั้นได้อ้างอิงถึง
Apache ที่เป็น Web Server
M นั้นได้อ้างอิงถึง
MySQL ที่เป็นดาต้าเบส
P นั้นได้อ้างอิงถึง
PHP หรือบางครั้งอาจจะแทน Perl
หรือ Python และสามารถที่จะอ้างอิงไปถึง
Programming Language ได้ ที่ได้ทำหน้าที่เป็น Application
Server เป็นหลัก
การรวมกันของชุดของเทคโนโลยีเหล่านี้ โดยปกติแล้วนิยมใช้เพื่อเป็นระบบพื้นฐาน
(Infrastructure systems) รองรับการสร้างระบบ
Web ที่ใช้งานกัน
ต่อมาเพื่อความสะดวกจึงมีการนำเอาแต่ละตัวของ LAMP มารวมกันเป็นชุดของซอฟต์แวร์
เพื่อให้ง่ายต่อการติดตั้งและใช้งาน เพราะหากนำมาติดตั้งเอง
อาจจะต้องใช้ความสามารถการทำให้แต่ละส่วนนั้นทำงานด้วยกันได้อีก
เนื่องด้วยแต่ละส่วนนั้น เป็นชุดโปรแกรม Open Source ที่มีความนิยมมากๆ
ในแต่ละหน้าที่ของแต่ละส่วนดังนั้นการออกแบบในเบื้องต้นนั้น
ไม่ได้ออกแบบมาเพื่อการทำงานร่วมกันแบบเฉพาะ แต่เมื่อมีการกำหนดชุดของ LAMP
ขึ้นมาก็ทำให้ผู้ที่นำเอาไปใช้งานมีความสะดวกมากขึ้น
LAMP
เป็นสิ่งที่เริ่มต้นมาตั้งแต่ต้นปี 1990
ด้วยความสามารถของ Common Gateway
Interface (CGI) ด้วยเทคโนโลยีนี้จะทำให้ผู้ใช้เว็ปแอพปริเคชั่นสามารถเรียกใช้งานไปที่เว็บเซิฟเวอร์โดยการใช้
Web browser ได้ ซึ่งปกติผลที่แสดงผ่าน Web
browser นั้นจะอยู่ในรูปของข้อมูลแบบ Static
ซึ่งเป็นผลจากการประมวลข้อมูลที่มีการเปลี่ยนแปลงด้วยตัวของแอพปริเคชั่นที่สร้างขึ้นมา
ด้วยลักษณะงานข้างต้นนั้นก็ได้มีเทคโนโลยีมากมายที่สร้างขึ้นมาเพื่อรองรับความต้องการ
ภาษา Script ก็เป็นตัวเลือกแรกๆ
ของโปรแกรมเมอร์ที่ไว้สร้างการแสดงผลโดยจัดการกับรูปแบบของข้อมูลที่ประมวลผลแล้วจากเว็บเซิฟเวอร์
ซึ่งทำให้การออกแบบระบบที่แพร่หลายในปัจจุบันก็นิยมที่จะใช้ภาษา Script
เป็นตัวช่วยจัดการสร้างการแสดงผล
ในปี
1998 Michael Kunze ได้ใช้ตัวย่อ LAMP
ขึ้นในบทความของ German Computing
Magazine ที่ซึ่งบทความนี้ได้เขียนถึงชุดของฟรีซอฟต์แวร์ที่สามารถทำงานด้านเว็บแอพปริเคชั่นได้เช่นเดียวกับชุดที่ขายในท้องตลาด
ซึ่งทาง Kunze ได้ใช้วิธีการใช้ตัวย่อ
LAMP เพื่อให้เป็นที่น่าสนใจในวงการ IT
ที่วิธีการใช้ตัวย่อจะแพร่หลายได้ง่าย
ทำให้มีการเปิดช่องทางการขยายตัวของชุดของฟรีซอฟต์แวร์นี้ได้ขยายไปรวดเร็วมากขึ้น
ต่อมาทาง O’Reilly และ
MySQL AB ก็พยายามที่จะโปรโมทให้มีความแพร่หลายมากๆ
ขึ้นผ่านตัวย่อ LAMP อีก ซึ่งทำให้ MySQL
AB ได้ผลประโยชน์ในการขยายฐานผู้ใช้งานมากขึ้นนั่งเอง
Linux (L)
เป็น
Operating system ที่มีลักษณะคล้ายกับ Unix
Operating system ซึ่งเป็น Opensource
Operating system ในปัจจุบันนี้ก็มีหลายๆ ผู้ผลิต
ที่ได้รับความนิยมก็มีดังต่อไปนี้
Redhat
ที่เป็นมีผลิตภัณท์ Fedora,
Redhat Enterprise Linux
Ubuntu
Linux ที่มีผลิตภัณท์ Ubuntu Linux
Novell
ที่มีผลิตภัณท์ SUSE Linux
และอีกมากมายหลายจากหลายๆ
ผู้ผลิต ดังต่อไปนี้
http://en.wikipedia.org/wiki/List_of_Linux_distributions
* ผ��ิตภัณท์บางผู้ผลิตไม่ได้เป็นฟรีซอฟท์แวร์แล้ว
โปรดดูรายละเอียดจากเว็บไซค์ของผู้ผลิตนั้นๆ
Apache HTTP Server (A)
เป็นฟรีซอฟท์แวร์ที่ทำหน้าที่เป็นเว็บเซิฟเวอร์หรืออีกนัยหนึ่งคือ Opensource
HTTP server ที่เป็นผลผลิตจากกลุ่มของ Opensource
ที่ใหญ่และแพร่หลายมาก กลุ่มนี้คือ Apache
Foundation ที่มีผลิตภัณท์ Opensource มากมายเพื่อรองรับการทำงานบนเว็บซึ่งรองรับระบบปฏิบัติการหลากหลายไม่ว่าจะเป็น
Solaris, Unix, Linux หรือ Microsoft
Windows รายละเอียดของ Apache HTTP
Server สามารถดูได้เพิ่มเติมที่
HTTP
Server - http://httpd.apache.org
Apache
Foundation - http://www.apache.org
MySQL (M)
ทำหน้าที่หลักเป็นดาต้าเบสหรือ Database
Management System (DBMS)
ซึ่งมีคุณสมบัติพร้อมในการรองรับการใช้งานแบบหลายๆ ผู้ใช้งาน (Multi
Users) ด้วยความสามารถในการแบ่งการทำงานเป็นหลายๆ Thread
(Multithreaded)
ด้วยที่ MySQL ทำมาเพื่อรองรับกลุ่มผู้ใช้แบบ Open Community ดังนั้นระบบปฏิบัติการที่รองรับการมีได้หลากหลายเช่นกัน
ไม่ว่าจะเป็น Solaris, Unix, Linux, MacOSX หรือบน Microsoft Windows สามารถศึกษารายละเอียดเพิ่มเติมได้ที่
MySQL
Database Server - http://dev.mysql.com
PHP (P)
PHP
ได้ความหมายเต็มมาจาก Hypertext
Preprocessor ซึ่งเป็นแอพปริเคชั่นที่ทำหน้าที่เป็น Server
Side Application โดยการออกแบบการสร้าง PHP
นั้นคือการทำหน้าที่ดึงเอาข้อมูล Dynamic
ในส่วนของด้าน Server มาสร้างเป็น Web pages ที่แสดงข้อมูลในรูปแบบ
Static แล้วส่งไปแสดงผลที่ฝั่งของ Web
browser แต่นอกเหนือจากการออกแบบการทำงานในข้างต้นแล้ว PHP
ก็ยังมีความสามารถในการทำงานผ่าน command
line และในแบบรูปแบบ Standalone
Graphical Application อีกด้วย ดูข้อมูลอื่นๆ เพิ่มเติมของ PHP
ได้ที่
PHP
- http://www.php.net
บางครั้งก็มีการนำคำย่อของ
LAMP ไปใช้กับแอพปริเคชั่นอื่นๆ
ที่นอกเหนือจากที่กล่าวไว้ข้างต้น ตัวอย่างเช่น การนำคำย่อ P
ไปแทนด้วย Perl หรือ
Python ที่ทำหน้าที่ Server-Side
Application เช่นกัน และในบางครั้งก็ขยายขอบเขตรวมไปถึง Ruby
ด้วยเมื่อมองในแง่ของโครงสร้างการทำงาน
และบางกลุ่มก็ได้มีการสลับการอ้างอิงของต่อย่อเพื่อให้เข้าได้กับความหมายของซอฟต์แวร์ที่กลุ่มตนเลือกใช้
ตัวอย่างเช่น จะให้ M แทนส่วนที่เป็น
mod* perl หรือ mod
python และให้ P แทนด้วย
PostgreSQL ที่ทำหน้าที่เป็นดาต้าเบสซึ่งเป็นฟรี
DBMS เช่นกัน
บางกลุ่มก็มีการเปลี่ยนคำย่อ
LAMP ไปเป็นอย่างอื่น
แต่มีรูปแบบของโครงสร้างแบบเดียวกัน อย่างเช่นได้เปลี่ยนไปเป็น LAMR
ซึ่ง R นั้นได้แทน
Ruby on Rails ที่เป็นซอฟต์แวร์ทำหน้าที่ Server-Side
Application เช่นกันกับ PHP
นอกจากนั้นก็มีการเรียกขานในรูปแบบต่างๆ
เพื่อให้สอดคล้องกับระบบที่กลุ่มนั้นๆ ได้ใช้งานเช่นในกลุ่มที่ใช้ Mac
OSX เป็น Operating systems นั้นก็กำหนดคำว่า
AMP ซึ่งได้ตัวเอา L ที่มีความหมายเป็น
Linux ออกไป
* mod เป็นส่วนเพิ่มในซอฟต์แวร์
(Plugins) เพื่อจะขยายขีดความสามารถของซอฟต์แวร์นั้นๆ
ออกไปได้อีกเช่น mod perl ก็จะเป็นส่วนขยายเพื่อให้
Apache Web Server รองรับการทำงานกับ Perl
ได้
Posted at 01:49หลังเที่ยง ก.พ. 04, 2008 by wut in Thai Technical | Comments[0]
Ruby on Rails (Thai Edition)
หลังจากที่เราได้คุ้นเคยกับตัวภาษา Ruby ในเบื้องต้นแล้วนั้น บทความนี้จะเป็นรายละเอียดเพิ่มเติมในส่วนการนำไปใช้งานเพื่อสร้าง Business Application ต่างๆ จากภาษา Ruby ซี่งในปัจจุบัน นิยมที่จะใช้ รูปแบบหรือโครงร่าง Application (Framework) เพื่อทำให้เราสร้าง Application ได้รวดเร็วมากขึ้น และ Framework ที่นิยมมากที่สุดของ Ruby นั้นคือ Ruby On Rails ซึ่งในบทความนี้จะได้แนะนำให้รู้จักในรายละเอียดเบื้องต้น พร้อมกับประวัติความเป็นมาของ Ruby, Rails, JRuby และ JRuby on Rails
ก่อนที่จะเข้าสู่รายละเอียดของส่วนอื่นๆนั้น จะขอย้อนไปสรุปถึงรายละเอียดของภาษา Ruby ดังต่อไปนี้ (ข้อมูลละเอียดหาได้จากบทความอะไรคือ Ruby ตอนที่ 1 )
Ruby เป็นภาษาคอมพิวเตอร์ที่เป็นแบบ Object-Oriented Programming Language ที่ตัวของภาษาเองนั้นมีความง่าย ซึ่งทำให้การเขียนโปรแกรมนั้นมีความสนุกและมีความสละสลวย ตัวของภาษา Ruby นั้นสร้างมาจากการรวมเอาข้อดี ของภาษา script ต่างๆ มารวมกัน โดยการนำเอาความคิดเบื้องต้นส่วนของ Object-Oriented มาจากตัวภาษา Smalltalk ไปผนวกเข้ากับความสามารถด้าน Script ของภาษา Python ที่ใช้งานง่ายและเรียนรู้ได้รวดเร็ว และพร้อมทั้งรวมส่วนแนวคิดดีๆของภาษา Perl เข้ามาด้วย
Ruby ได้เริ่มต้นสร้างขึ้นมาช่วงต้นปี 1990 ในประเทศญี่ปุ่น ด้วยข้อดีของตัวภาษา Ruby ทำให้มีความแพร่หลายได้รวดเร็วมากๆในช่วงเวลา 2-3 ปีต่อมานั่นเอง
เราสามารถที่จะทดลองใช้และเรียนรู้ Ruby ได้อย่างรวดเร็วได้ที่ website
http://tryruby.hobix.com
และสามารถหาข้อมูลเพิ่มเติมได้ที่
http://www.ruby-lang.org/en/documentation
ในปี 2001 Jan Arne Peterson ได้สร้างตัวภาษา JRuby ขึ้นมาและมีการสานต่อโครงการโดยที่อ้างอิงจาก Code ของ Ruby 1.6 C มาเรื่อยๆ จนกระทั่งถึง Ruby 1.8 ในปัจจุบัน ซึ่งกลุ่มที่พัฒนานั้นก็มี Charless Nutter, Thomas Enebo, Ola Bini และ Nick Sieger และเมื่อเดือนกันยายน 2006, Sun Microsystems ได้จ้างทั้ง Nutter และ Enebo มารับหน้าที่รับผิดชอบหลักเกี่ยวกับโครงการ JRuby เพื่อพัฒนาให้ทันตาม Ruby ในรุ่นหลังๆ และพัฒนาให้มีความเข้ากันได้มากขึ้นเรื่อยๆ
JRuby เป็น Ruby interpreter ที่ทำงานอยู่บน Java Virtual Machine โดยสามารถทำงานบน Java SE version 1.4.2 เป็นต้นไป ซึ่งโครงงาน JRuby นี้เป็นการนำเอาคุณสมบัติต่างๆของภาษา Ruby มาปรับใช้ความสามารถของ Java ที่มีความแพร่หลายในระบบงานธุรกิจที่มีอยู่แล้วในปัจจุบัน ซึ่งเป็นการขยายความสามารถของ Ruby ให้มากขึ้นในการปรับไปใช้ใน Application ต่างที่ทำงานในระบบงานที่เป็นระบบงานธุรกิจที่มีอยู่
โครงการของ JRuby นั้นเป็น free software ที่มี License แบบ CPL/GPL/LGPL และในต้นปี 2006 มีการสร้าง JRuby เพื่อทำให้รองรับ Performance ที่ดีมากขึ้นและสามารถ Compile เป็น Java bytecode ได้ ซึ่งจะทำให้สามารถนำเอาภาษา Ruby ขึ้นไปใช้งานในระบบธุรกิจได้โดยมีการทำงานที่รวดเร็วเช่นเดียวกับภาษา Java
JRuby ได้ออกแบบเพื่อทำงานเข้ากับ Ruby แบบการผสมผสานของ Virtual Machine (Mix-mode virtual machine) ที่ทำให้ Code แบบ Ruby นั้นสามารถทำงาน Interpreted แบบตรงๆ ได้ กับ Java Virtual Machine และก็ยังรองรับการ compile แบบ Just-In-Time (JIT) ไปเป็น Java bytecode ได้ หรือรองรับวิธีการ Compile แบบ Ahead of time compiled (AOT- ลักษณะ precompile ก่อนจะถูกเรียกให้ทำงาน) แต่ในปัจจุบันนี้การพัฒนา JRuby นั้นเพิ่งจะสามารถรองรับการทำงานแบบ Interpreted mode เท่านั้นที่รองรับคุณสมบัติหรือ Ruby’s constructs ทั้งหมดได้ ในส่วนของ AOT/JIT ยังรองรับได้ Ruby’s contructs ได้เป็นบางส่วนเท่านั้น แต่ทั้งนั้นกลุ่มนักพัฒนาก็มีการพัฒนาเพิ่มขึ้นตลอดเรื่อยๆ ในทุกวันนี้
เมื่อนักพัฒนาต้องการสร้าง Application บนภาษา JRuby นั้นสามารถทำได้ง่ายมากกว่าภาษา Java ธรรมดาเพราะได้อาศัยโครงสร้างของตัว Ruby เป็นกลไกหลัก ทำให้มีความง่ายในการเขียน Code ซึ่งเป็นข้อเด่นที่ได้รับจากภาษา Ruby ดังตัวอย่างด้านล่างต่อไปนี้ที่แสดงตัวอย่างของการ Code ด้วยภาษา Java และภาษา JRuby ซึ่งผลของการทำงานจะได้ผลลัพธ์เหมือนกัน
ตัวอย่าง เมื่อพัฒนาด้วยภาษา Java
public class Filter {
public static void main(String[] args) {
List list = new java.util.ArrayList();
list.add(“Tim"
; list.add(“Ike"
; list.add(“Tina"
;
Filter filter = new Filter();
for (String item : filter.filterLongerThan(list, 3)) {
System.out.println( item );
}
}
public List filterLongerThan(List list, int length) {
List result = new ArrayList();
for (String item : list) {
if (item.length() <= length) { result.add( item ); }
}
ตัวอย่าง เมื่อพัฒนาด้วยภาษา JRuby
list = [‘Tim’, ‘Ike’, ‘Tina’]
list.select {|n| n.length > 3}.each {|n| puts n}
=> ‘Tina’
ดังตัวอย่างเบื้องต้นนั้น จะเห็นได้ว่าความง่ายในตัวภาษา JRuby ที่ได้มาจากคุณลักษณะของภาษา Ruby นั้นทำให้การพัฒนา Application ต่างทำได้รวดเร็วมากกว่าในตัวของ Java เมื่อต้องการการเขียน Code เพื่อทำงานเหมือนๆ กัน
JRuby นั้นเป็นการนำเอาข้อดีของ Ruby interpreter มาใช้เพื่อให้นักพัฒนามีความง่ายแบบภาษา Ruby ในการพัฒนาเช่นเดิมบน Java Virtual Machine เพื่อให้ได้ความสามารถของ Java platform โดยที่ JRuby ยังคงแนวความคิดของภาษา Ruby ทั้งหมดไม่ว่าจะเป็นส่วนของ Object-Oriented Programming (OOP) หรือแม้แต่คุณสมบัติที่ทำให้นักพัฒนาสนุกสนานกับ Ruby ในเรื่อง duck-typing ที่เป็นคุณสมบัติเด่นๆ อีกจุดหนึ่งของภาษา Ruby (ความสนุกสนานในการโต้ตอบแบบ Interactive สามารถไปทดลองคุณสมบัติของภาษา Ruby นี้ได้ที่ http://tryruby.hobix.com )
ตัวอย่างการเรียกใช้ Java จากภาษา JRuby
require 'java'
include_class "javax.swing.JFrame"
include_class "javax.swing.JLabel"
frame = JFrame.new()
frame.getContentPane().add(JLabel.new("This is an example."
)
frame.pack()
frame.setVisible(true)
ตัวอย่างข้างต้นนี้ เป็นการดึงเอา class ต่างๆ ไม่ว่า javax.swing.JFrame และ javax.swing.JLabel มาใช้โดยเราต้องประกาศที่จะใช้ Java จาก require ‘java’ หลังจากนั้นก็นำเอา object ที่สร้างไปใช้งานในรูปแบบลักษณะการเขียนแบบ Ruby นั่นเอง
และใน JRuby 0.9.1 นั้นการเรียกใช้จะทำได้ง่ายมากขึ้น โดยสามารถที่จะเรียกใช้ Object ต่างๆ ของ Java เองโดยที่ไม่ต้องประกาศ include เข้ามา ดังตัวอย่างต่อไปนี้
require 'java'
frame = javax.swing.JFrame.new()
frame.getContentPane().add(javax.swing.JLabel.new("This is an example."
)
frame.pack()
frame.set_visible(true)
สามารถทำได้โดยง่ายตามมาตรฐาน JSR 223 ผ่านวิธีการเรียกใข้งาน Scripting ของ Java 6 หรือ Apache Bean Scripting framework ได้ ซึ่งรายละเอียดสามารถศึกษาเพิ่มเติมได้จาก
https://scripting.dev.java.net/
http://jakarta.apache.org/bsf/
ในการใช้งาน JRuby นั้นจะต้องติดตั้งชุด software เพื่อทดลองใช้หรือเพื่อการพัฒนาดังต่อไปนี้
ติดตั้ง Java Development Toolkit (JDK) ไม่ต่ำกว่า version 1.4.2
Download ตัวโปรแกรมจาก JRuby’s codehaus (http://jruby.codehaus.org)
unzip ตัวโปรแกรมที่ download และไปติดตั้งไว้ที่ Folder เช่น /home/user/jruby
เมื่อติดตั้งเสร็จจะต้องกำหนดค่าของ JAVA_HOME และ JRUBY_HOME เป็นตัวแปรค่า environment ในระบบปฏิบัติการ เช่น
JAVA_HOME=/usr/java/jdk1.5
JRUBY_HOME=/home/user/jruby
JRuby สามารถทำงานแบบ Scripting ใน Java application ได้โดย จะต้อง copy class ของ JRuby คือ jruby.jar (ใน JRuby package) ไปที่ใน classpath ของ Java runtime ที่ <JAVA_PATH>\jre\lib\ext หรือเราสามารถกำหนดเป็นตัวแปรค่า environment ได้ที่ CLASSPATH
เราสามารถที่จะหาข้อมูล JRuby เพิ่มเติมและทดลองใช้ได้ที่
http://jruby.codehaus.org
ข้อมูลเพิ่มเติมจาก Blog ผู้ร่วมพัฒนาได้ที่
Charles Nutter - http://headius.blogspot.com
Thomas Enebo - http://www.bloglines.com/blog/ThomasEEnebo
Ola Bini - http://ola-bini.blogspot.com
Nick Sieger - http://blog.nicksieger.com
ดังที่กล่าวในข้างต้นการสร้าง Application จากภาษาใดๆ ในยุคนี้ไม่ว่าเป็นภาษาคอมพิวเตอร์ใดๆ ก็มีการนำเอา Framework ที่มีการพัฒนาไว้อย่างแพร่หลายมาพัฒนาต่อเพื่อให้มีความรวดเร็วในการพัฒนา เป็นมาตรฐานในการสร้าง Business Application ต่างๆ Rails ก็เช่นกันได้รับการสร้างและพัฒนาเพื่อให้เป็น Framework ของภาษา Ruby และ Rails เองก็ได้รับความนิยมมากในกลุ่มของการพัฒนาภาษา Ruby
David Heinemeier ได้คิด Framework Rails จากโครงงาน Basecamp (http://basecamphq.com) ที่เป็น Project Management tool ในบริษัท 37signals (http://www.37signals.com) ที่เขาทำงานอยู่ ซึ่งบริษัท 37signals นี้เป็นบริษัทที่สร้างและจำหน่าย web application โดย David ได้สร้าง Rails เป็น Open-source project เพื่อให้นักพัฒนาต่างๆ ได้นำเอาไปใช้งานและพัฒนาต่อเนื่องจากโครงงานเริ่มต้นที่เขาได้ทำ โดย Rails ได้ประกาศตัวเมื่อเดือนกรกฏาคม ในปี 2004 และปรัชญาในการสร้างของ David นั้นมีอยู่ว่า
1. “Don’t repeat yourself (DRY)”
การสร้าง Web application หนึ่งๆ นั้นหากจัดการเรื่องข้อมูลไม่เป็นกลุ่มก้อนจะทำให้เกิดความซับซ้อนมากๆ และทำให้นักพัฒนาต้องทำ Module ที่ซ้ำซ้อนกัน แต่หากเมื่อมีการจัดเก็บข้อมูลเป็นที่ชัดเจน จะทำให้มีความง่ายในการสร้าง ดังหลักการของการเขียน Program ที่ดีหรือ Best Practice การนำ Framework มาใช้งานจะช่วยลดปัญหาในจุดนี้ลงไปได้มาก เพราะ Framework จะเป็นตัวช่วยกำหนดอยู่แล้วทำให้นักพัฒนาไม่ต้องกังวลในจุดนี้มาก
ตัวอย่างเช่น ใน Rails นั้นการใช้ ActiveRecord นักพัฒนาไม่จำเป็นต้องกำหนดชื่อของ column ลงไปในการอ้างอิงใน class และปล่อยให้ Ruby เป็นฝ่ายจัดการดึงข้อมูลต่างๆ จาก database เอง เป็นต้น
2. “Convention over Configuration” (ข้อกำหนดบน config)
ในการใช้ Framework เพื่อสร้าง Web application ใดๆ นักพัฒนาเพียงต้องกำหนดสิ่งที่ต่างจาก Framework เท่านั้น เพื่อให้มีความรวดเร็วในการสร้าง Web application ตัวอย่างเช่น เมื่อสร้าง class “Sale” ใน Model เพื่อให้สอดคล้องกับชื่อของ Table ของ Database ที่มีชื่อว่า “Sales” แต่หากมีความต้องการที่จะปรับเปลี่ยนชื่อนั้น นักพัฒนาจะต้องเขียน code เพิ่มเติมในส่วนนั้นๆ เอง
3. “Agile development environment”
เพื่อให้มีความสะดวกในการพัฒนา Web application นั้นๆ Framework ต้องรองรับการทำงานพัฒนาได้ง่าย ซึ่งต้องมีเครื่องมือเพื่อเพิ่มความสะดวกในการสร้าง Code และต้องมีความสามารถในการปรับปรุงแก้ไขพร้อมทั้งสามารถที่จะทดสอบ Deploy ให้ง่ายต่อวงจรการพัฒนาด้วย
และจากปรัชญาดังกล่าวทั้งหมดเป็นที่มาทำให้ David ได้สร้าง Rails ขึ้นมาและ Opensource ให้นักพัฒนาต่างๆ ได้นำภาษา Ruby ไปพัฒนา Application ที่มี Rails เป็น Framework
ใน Rails นั้นใช้แนวความคิดสถาปัตยกรรมแบบ Model-View-Controller (MVC – ดูข้อมูลเพิ่มเติมได้ที่ http://en.wikipedia.org/wiki/MVC ) เพื่อจัดการโครงสร้างของ Application เช่นเดียวกับ Web application frameworks อื่นๆ ที่นิยมสร้างตามสถาปัตยกรรม MVC
Rails ใช้ scaffolding เป็นหัวใจหลักในการสร้างโครง Application ซึ่งทำให้การสร้างในส่วนของ logic และ views ที่ใช้สร้าง web แบบเบื้องต้น ทั่วไปทำได้ง่ายมากๆ โดยสามารถที่จะเรียกทดสอบได้โดยผ่านทาง Web Server ที่รองรับการทำงาน Rails
รูปที่ 1 ตัวอย่างโครงสร้างของ Rails
รูปที่ 1 จะเห็นโครงร่างของ Rails ที่มีการ Generate ไว้เพื่อรองรับการสร้าง Web application จากตัวอย่างเราได้สร้าง Framework ของ Web application ที่ชื่อว่า myblogs ซึ่งมีโครงสร้างรายละเอียดคร่าวๆ ดังนี้
app/controllers จะเป็น Directory ที่จัดเก็บส่วนควบคุม (controller) ของ class ทั้งหมด ซึ่งส่วนของควบคุมนี้จะรองรับ Request ต่างๆ จากผู้เรียกใช้งาน
app/views จะเป็น Directory ที่จัดเก็บส่วนของการแสดงผลทั้งหมด โดยข้อมูลต่างๆที่นำมาแสดงนั้น Application จะทำหน้าที่แปลงข้อมูลเหล่านั้นเป็น HTML เพื่อนำไปแสดงที่ Browser ของผู้เรียกใช้งาน
app/helpers จะเป็น Directory ที่เก็บส่วนของ Class ที่เป็น helper เพื่อเป็นองค์ประกอบอื่นๆเพิ่มเติมสำหรับ Class ของ Model, View หรือ Controller ทำให้เราสามารถเขียน Class Model, View หรือ Controller ได้เล็กลง
และเครื่องมือที่จะสร้าง Code ของ Application แบบง่ายๆ ใน Rails คือการสร้าง Scaffold ดังตัวอย่างดังต่อไปนี้

รูปที่ 2 การ Generate code ของ Ruby on Rails
ตัวอย่างข้างต้น Rails จะมีการสร้าง Files เพิ่มเติมในส่วนของ Model และ Controller จากตัวอย่างนั้น Rails จะสร้าง recipe.rb เก็บไว้ใน ../myblogs/app/models และสร้าง recipe_controller.rb ไว้ที่ ../myblogs/app/controllers
หลังจากที่ได้สร้าง Application ง่ายๆ จาก Rails แล้ว เราสามารถนำเอา Application ที่สร้างขึ้นมาทดลองใช้งาน โดยในการทำงานนี้จะต้องอาศัย Web server ที่เป็นตัวรองรับการทำงาน ปัจจุบันนี้ได้มีการพัฒนา Web server เพื่อรองรับการทำงานของ Rails หลายๆ ตัว และ Web Server ที่มีมากับชุดของ Rails เลยคือ “WEBrick” ซึ่งเราสามารถเรียกใช้ดังต่อไปนี้

รูปที่ 3 การเรียกการทำงานของ WEBrick ที่เป็น Web Server ในชุดของ Rails
และเมื่อ WEBrick Server ได้ทำงานแล้ว การทดสอบจะทำได้โดยผ่านทาง Web browser ทาง URL 0.0.0.0 ที่ Port 3000 ดังต่อไปนี้

รูปที่ 4 การเรียกใช้งาน WEBrick ผ่านทาง http://0.0.0.0:3000
และสามารถที่จะทดสอบกับ Web Application ที่เราทดลองทำได้โดย

รูปที่ 5 การเรียกใช้งาน Web application ที่ได้สร้างเป็นตัวอย่างผ่านทาง http://0.0.0.0:3000/recipe
เราสามารถที่จะหาข้อมูลและทดลองทำตามขั้นตอนได้ที่
http://www.onlamp.com/pub/a/onlamp/2006/12/14/revisiting-ruby-on-rails-revisited.html
พร้อมทั้งข้อมูลเพิ่มเติมได้ที่
http://www.rubyonrails.org/docs
เพื่อรองรับการทำงานที่เป็นระบบ Production และเพื่อให้เราสามารถนำ Rails ไปใช้งานในงานด้านธุรกิจได้จริงจังมากขึ้น จึงมีการพัฒนา JRuby on Rails เกิดขึ้น และนอกจากนั้น ยังมีหลายๆ เหตุผลที่นำ Rails มาทำงานบน Java Platform ดังต่อไปนี้
เป็นการทำให้ Rails มีประสิทธิภาพและความสามารถเพิ่มขึ้นด้วย Platform ของ Java โดย Rails สามารถใช้ J2EE application server ได้
ด้วยคุณสมบัติใหม่ของ JVM รุ่นใหม่ๆ และ JRuby ที่มีการพัฒนาต่อเนื่อง ทำให้ JRuby ทำงานได้เร็วกว่า MRI ที่เป็น Server ของ Rails
ทำให้มีการพัฒนาต่อเนื่องขยายกลุ่มของผู้ที่ใช้ Rails ไปยังนักพัฒนา Java ผ่านทาง JRuby
ในปัจจุบันนี้การนำ Rails มาใช้ความสามารถของ Java Platform เป็นที่ยอมรับในแง่การรองรับและการเชื่อมต่อในระบบที่ต้องมีความสามารถในการขยายตัว ตัวอย่างเช่นการเชื่อมต่อ Database ที่ขยายตัวได้มากหรือระบบ Legacy ที่มีความหลากหลายมากๆ
การพัฒนา J2EE application Server ในปัจจุบัน (Project Glassfish - https://glassfish.dev.java.net) สามารถรองรับการทำงานกับ Rails ได้ โดยที่ Rails จะใช้ความสามารถของ Java Platform ได้อย่างเต็มที่ เช่น
การติดต่อกับ Database Connection ต่างๆ
การใช้งาน Java Naming and Directory Interface (JNDI)
การติดต่อกับองค์ประกอบอื่นๆ ของ Java EE ดังเช่น
ปัจจุบันมีเครื่องมือรองรับการพัฒนา Rails บน J2EE platform มากข���้น เครื่องมือเหล่านั้นมีความสามารถทำให้เรียกหรือโปรแกรมให้ Rails ทำงานบน J2EE platform เสมือนเป็นการพัฒนาโปรแกรม Java บน J2EE platform
ตัวอย่างการใช้งานเครื่องมือในการพัฒนา Rails บน Java IDE
Java Developement Toolkit - JDK 1.5.0_07
NetBeans Java IDE - NetBeans IDE 6.0 M10 (http://www.netbeans.org/community/releases/60/index.html)
ด้วยโครงการ JRuby on Rails ยังอยู่ในสถานะเริ่มต้นและยังคงรอการพัฒนาเพื่อให้ IDE นั้นรองรับการทำงานที่สมบูรณ์มากขึ้น และต้องอาศัยความสามารถของ JRuby และ JVM แต่ก็มีแนวโน้มการพัฒนาที่รวดเร็วเช่นเดียวกับกลุ่มของ Ruby ที่มีความแพร่หลายมากๆ และได้รวมเอานักพัฒนาส่วนของ Java เข้าไปร่วมในโครงการด้วย
JRuby on Rails demo
http://blogs.sun.com/arungupta/entry/first_jruby_on_rails_app
http://blogs.sun.com/arungupta/entry/screencast_web6_first_jruby_app
JRuby on Rails project update
http://headius.blogspot.com/2006/03/jruby-progress-updates-jruby-on-rails.html
http://www.headius.com/jrubywiki/index.php/JRuby_on_Rails
JRuby on Rails demo on JBOSS
http://smartic.us/2007/8/11/smarticast-3-jruby-on-rails-on-jboss
JRuby on Rails information on Glassfish
http://blogs.sun.com/whacko/entry/deploying_a_ruby_on_rails
Posted at 11:21ก่อนเที่ยง ก.ย. 04, 2007 by wut in Thai Technical | Comments[0]
JavaFX Overview
JavaFx
เนื่องจากความต้องการของการใช้งานทางด้าน interactive ของ
content หรือ application หรือแม้แต่ services ต่างๆในโลกของอินเตอร์เน็ต
และรูปแบบของตัว client ที่มีหลายหลาบชนิดในปัจจุบันนี้ ไม่ว่าจะเป็น
โทรศัพท์มือถือ, desktop, set-top-box
หรือจะเป็น devices ใหม่ๆ ที่รองรับการใช้งานเครือข่ายทางด้านอินเตอร์เน็ต
ทำให้โปรแกรมเมอร์ในปัจจุบันนี้มีความยุ่งยากในการพัฒนาเพื่อรองรับความต้องการดังกล่าวข้างต้นมากๆ
ดังความต้องการดังกล่าวข้างต้นทาง Sun Microsystems ได้ออกแบบผลิตภัณฑ์ใหม่คือ
JavaFX ที่สร้างขึ้นด้วยเทคโนโลยี Java
เพื่อให้โปรแกรมเมอร์สามารถสร้างรูปแบบการติดต่อแบบใหม่ที่ทำให้ผู้ใช้งานสามารถที่จะเชื่อมต่อไปยัง
content, application หรือ services ต่างๆ ที่ผ่านทางอินเตอร์เน็ตได้ ไม่ว่าจะเป็น
desktop, mobile device, set-top-box หรือกระทั่ง Blu-ray Disc

รูปที่ 1
แสดงให้เห็นถึงชุดของผลิตภัณฑ์ของ JavaFX ที่มีความสามารถในการสร้าง interactive
content, application และการบริการ เพื่อรองรับไม่ว่าจะเป็น desktop, mobile
device หรือแม้แต่ในห้องรับแขก
เค้าโครงของ JavaFX
JavaFX นั้นเป็นผลิตภัณฑ์ที่สร้างจากความสามารถเด่นๆ
ของตัวเทคโนโลยี Java ซึ่งจะได้ความสามารถของ Java ต่างๆ ไม่ว่าจะเป็น
การพัฒนาครั้งเดียวและนำไปใช้งานได้ทุกๆ
ที่ (Write-Once-Run-Anywhere), ความสามารถในการนำไปใช้ในอุปกรณ์ที่แตกต่างกัน
(portability), การรองรับความปลอดภัย (security model), รองรับการทำงานแบบการกระจาย
(Distribution) และการนำไปเชื่อมต่อกับระบบงานที่เป็น enterprise (enterprise
connectivity)
ในเบื้องต้นนั้น JavaFX
จะประกอบไปด้วย
•
JavaFX Script
ผลิตภัณฑ์นี้จะเป็นภาษา script
ที่รองรับการทำงานเพื่อสร้างโปรแกรม interactive ที่มีความสามารถทางด้านการนำเสนอข้อมูลได้ดีโดยทำงานเพื่อดึงเอาข้อมูลต่างๆ
มาประมวลและแสดงได้ในรูปแบบที่รองรับทางด้านภาพ เสียงและ animation ได้สมบูรณ์
•
JavaFX Mobile
ส่วนผลิตภัณฑ์นี้จะเป็นชุดรวมสำเร็จของซอฟต์แวร์ที่ออกแบบมาเพื่อ
mobile devices ให้รองรับความสามารถทางด้านการพัฒนา application
ที่ยืดหยุ่นในการนำเสนอข้อมูลได้ง่าย
JavaFX
Script
บทนำ
ในยุคนี้ ความต้องการในการสร้างและพัฒนา internet application
เพื่อให้บริการได้รวดเร็ว
สามารถรองรับอุปกรณ์ได้หลากชนิดและต้องมีความปลอดภัยในการป้องกันข้อมูลนั้น
ไม่ได้จำกัดว่าจะเป็นระบบที่มีขนาดเล็ก หรือระดับที่เป็น enterprise หรือแม้แต่ในกลุ่มของนักพัฒนา
เองก็ตาม จุดนี้เองที่มีความต้องการ internet application
ที่จะต้องไม่จำกัดรูปแบบของอุปกรณ์ที่มาเชื่อมต่อเพื่อใช้งาน
ไม่มีการติดตั้งข้อมูลลงในอุปกรณ์นั้นๆ ด้วยเหตุผลทางด้านความปลอดภัยและความหลากของอุปกรณ์
และที่สำคัญต้องไม่ทำให้อุปกรณ์เหล่านั้น ทำงานได้ช้าลง
จากข้อความต้องการข้างต้นที่กล่าวมา
JavaFX ได้รองรับความต้องการเหล่านั้น โดยที่มีความง่ายต่อการสร้าง internet
application ที่มีความสามารถในการนำเสนอข้อมูลสูงในอุปกรณ์หลากชนิดกัน
และผู้พัฒนาสามารถเข้าไปสู่กลุ่มของนักพัฒนาด้วยกันได้ (ที่มีจำนวน ณ
ปัจจุบันประมาณ 6 ล้านคนทั่วโลก) เพื่อร่วมพัฒนา internet dynamic application
ใหม่ๆที่พร้อมสำหรับการให้บริการทางด้านอินเตอร์เน็ตรูปแบบใหม่ๆ ได้
ข้อสรุปเด่นๆใน JavaFX Script
•
เพื่อเพิ่มความสามารถในการผลิตของนักพัฒนา
•
เป็นภาษาที่นักพัฒนาสามารถใช้การเรียนรู้เอง
(intuitive language) ในออกแบบพัฒนา
•
ลดการเขียน
code
•
ทำให้การวงจรการพัฒนาโปรแกรมทำได้รวดเร็วขึ้น
•
ไม่ต้องมีการระบุหรือเรียกลักษณะเฉพาะแต่ละอุปกรณ์
รายละเอียดคุณลักษณะ JavaFX
Script
JavaFX script จะใช้การประกาศ Syntax เช่นเดียวกับภาษา Java
ทั่วไปเพื่อกำหนดคุณลักษณะของ GUI (Graphic User Interface)
ดังนั้นจะทำให้นักพัฒนาโปรแกรมมีความง่ายในการจับคู่ความสัมพันธ์ระหว่างโครงร่างที่แท้จริง
(actual layout) และ GUI ได้
JavaFX Script นั้นจะทำให้นักพัฒนาง่ายต่อการสร้างและการจัดเก็บส่วนประกอบเฉพาะ
(individual components) ด้วยความสามารถในการแลกเปลี่ยนข้อมูลระหว่างฐานข้อมูลนั้นกับ
GUI
ที่ทำได้โดยด้วยวิธีการประกาศชุดของข้อมูล
(data binding) และการเพิ่มของการประมวลผล (incremental evaluation) กล่าวโดยง่ายคือ
JavaFX นั้นทำให้การปรับเปลี่ยนข้อมูลระหว่างข้อมูลที่ฐานข้อมูลของ webนั้นๆ กับ
GUI ที่เครื่องของลูกข่าย ทำได้โดยในลักษณะของ synchronize
สิ่งที่แตกต่างกันระหว่างภาษา
Java Script กับ JavaFX Script นั้น สำหรับ
JavaFX Script มีการสร้างและออกแบบโปรแกรมในรูปแบบของภาษา Java
ได้โดยสมบูรณ์ ทำให้ JavaFX Script นั้นจะมีโครงสร้างด้านตัวภาษาเช่นเดียวกับภาษา
Java โดยมีข้อมูลแบบ static (statically types),
มีโครงสร้างของข้อมูลเช่นเดียวกัน, มีความสามารถในการนำไปใช้ใหม่ (reuse)และมี
encapsulation เช่นเดียวกับภาษา Java ทั่วไป ซึ่งจุดนี้เองทำให้ตัวของ JavaFX Script เองนั้นรองรับการทำงานร่วมกับ
Swing ที่เป็น GUI ที่มีความสามารถสูงใน Java ได้ด้วย
และ JavaFX Script
นั้นสามารถที่จะออกแบบสร้าง internet application ที่มีขนาดใดๆ
ได้หรือแม้แต่มีความซับซ้อนในการแสดงผลได้
ในการพัฒนา JavaFX Script
นั้นมีความสามารถทำงานได้ร่วมกับ IDE (integrated Developement Environment) ที่แพร่หลายได้
ไม่ว่าจะเป็น NetBeans ซึ่งเป็น IDE ที่แพร่หลายมากๆ ในการพัฒนา Java
ซึ่งสามารถที่จะหาข้อมูลและ
download เอาตัวโปรแกรมเพื่อไปพัฒนาได้จาก
JavaFX
Mobile
บทนำ
Sun Microsystems ได้สร้าง JavaFX
โดย JavaFX
ทั้งนั้น JavaFX
เพื่อตอบสนองความต้องการที่จะให้มีการแพร่หลายและเป็นการประหยัดงบประมาณในอุปกรณ์
mobile ในรุ่นใหม่ (next-generation mobile device) ทาง Sun Microsystems
ยังคงเปิดเทคโนโลยีนี้ให้เป็นฟรีและเป็นเทคโนโลยีแบบเปิดเช่นเดิมทุกอย่าง

รูปที่ 4
เป็นการแสดงถึงโครงประกอบของ JavaFX
ซึ่งจะเห็นได้ว่า
Linux Open source จะเป็นส่วนที่เป็น
Operating system ของระบบโทรศัพท์ และมี
JavaFX Mobile เป็นส่วนแกนหลักของ
application ทั้งหมด
รายละเอียดอ้างอิงและบทความเพิ่มของ
JavaFX Mobile
•
Sun Welcome SaveJe Technologies
http://www.sun.com/software/savaje/index.xml
•
Sun Microsystems to Acquire Assets from SavaJe
Technologies
http://www.sun.com/aboutsun/pr/2007-04/sunflash.20070412.1.xml
Reference
•
Sun JavaFX
http://www.sun.com/software/javafx
•
OpenJFX
Posted at 06:50หลังเที่ยง พ.ค. 28, 2007 by wut in Thai Technical | Comments[0]
What is Web 2.0 (Thai Edition)
ก่อนปี 2001 เป็นยุคเริ่มต้นยุคแรกๆ ของ web เราคงได้เห็นข้อมูลส่วนใหญ่อยู่ในรูปของ static content และในช่วงต่อมาเราก็ได้เห็นการแตกของ dot-com bubble ทำให้บริษัทต่างๆ ก็ได้นำเอา Information Technology เข้าไปใช้ในองค์กรอย่างระมัดระวังและเป็นเหตุเป็นผลมากขึ้น และแม้หลังจากเกิดเหตุการ dot-com bubble พังลง แต่ยังคงมีความต้องการที่จะนำเสนอและแลกเปลี่ยนข้อมูลกันมากขึ้นเรื่อยๆ ทั้งในรูปแบบของ web ที่เป็น static content และ dynamic content ไม่ว่าจะเป็น yahoo, amazon
ด้วยการแข่งขันทางธุรกิจและความต้องการที่จะแลกเปลี่ยนข้อมูลนั้น เป็นตัวหลักในการผลักดันให้มีการนำเอาธุรกิจเข้าไปสู่โลกของ web มากขึ้นเพื่อเพิ่มช่องทางการได้เปรียบทางธุรกิจและเป็นที่มาของการผลักดันให้มีการสร้าง technology ใหม่ๆ เพิ่มขึ้นเช่น bittorent, napster, wiki, ajax, blog เพื่อที่จะทำให้การนำเสนอและการแลกเปลี่ยนข้อมูลเป็นไปได้โดยง่าย นั่นทำให้ความต้องการเรื่อง dynamic content มีมากขึ้นด้วย และทำให้เกิด website ที่รองรับแนวทางนี้ เพิ่มขึ้น เช่น eBay, google
และในปี 2004, Tim O’Reilly และ MediaLive international ได้ให้คำจัดความของ Web 2.0 ว่าเป็น “a second generation of services available on the World Wide Web that lets people collaborate and share information online” ซึ่งตีความได้ง่าย ๆ ว่า “เป็นรูปแบบการนำเสนอเอา services รูปแบบใหม่บนโลก world wide web เพื่อที่จะทำให้ผู้คนสามารถที่จะติดต่อแลกเปลี่ยนข้อมูลกันได้ผ่านการ online” โดยที่มีตัวอย่างที่เห็นได้อย่างชัดเจนที่เราเห็นในปัจจุบันคือ google อย่างเช่น google map, google suggestion เป็นต้น
Tim O’Reilly และ John Battelle ได้สรุปคุณลักษณะที่สำคัญของ Web 2.0 ดังต่อไปนี้
1. ต้องใช้ Web เป็นพื้นฐาน
2. ข้อมูลเป็นปัจจัยสำคัญและเป็นแรงขับดันสำคัญ
3. เป็นการสร้างระบบที่รองรับให้เกิดการร่วมมือกันบน Network
4. รองรับการนำเสนอ ความคิดริเริ่ม ที่เกิดจากการร่วมมือกันจากหลายๆ แหล่งโดยที่รองรับระบบการกระจายตัว เพื่อให้มี developer ได้ไม่จำกัด
5. รองรับธุรกิจแบบไม่ยุ่งยาก โดยเน้นไปที่ข้อมูลและการบริการแบบ syndication
6. เป็นจุดสิ้นสุดวงจรการ Release ของ software (รองรับการพัฒนาโดยไม่หยุดนิ่งของ Software ดังคำกล่าวว่า “the perpetual beta”)
7. Software ทำงานได้ในลักษณะ Multiple platform ไม่ได้จำกัดที่ device อย่างใดอย่างหนึ่ง
จะเห็นได้ว่ามีการเปลี่ยนรูปจาก web ที่มีลักษณะเดิมๆ แบบการ Request จากผู้ใช้งาน และรอการตอบกลับข้อมูลจาก server ก็เปลี่ยนรูปมาในลักษณะของ Application Online มากขึ้น ผู้ใช้งานจะมีความรู้สึกว่า Web เสมือนฐานข้อมูลและคอมพิวเตอร์ของตนเอง โดยข้อมูลเหล่านี้จะได้รับการแลกเปลี่ยนกับผู้ใช้อื่นๆ ตลอดเวลาด้วย
ปี 1984, John Gage (ปัจจุบันดำรงตำแหน่ง Chief Researcher and Vice President of the Science Office, Sun Microsystems Inc) ได้กล่าวไว้ว่า “Network is the computer” ซึ่งคำพูดนี้ได้เป็นคำที่ได้กล่างไว้ได้อย่างถูกต้องตั้งแต่ ณ. ขณะนั้นจนกระทั่งถึงในปัจจุบัน และ Sun Microsystems ได้ยึดแนวทางดังคำพูดนั้นเพื่อพัฒนาและผลิต ผลิตภัณท์ ต่างๆ เพื่อรองรับมาตลอด โดยที่ผลิตภัณท์ต่างๆของ Sun Microsystems ไม่ว่าจะเป็น Software, Server, Storage หรือ Services นั้นสร้างมาเพื่อรองรับการทำงาน infrastructure ของทางด้าน web technology อย่างสมบูรณ์ที่สุด
1. http://www.oreillynet.com
2. http://en.wikipedia.org
3. http://www.google.com
4. http://www.sun.com
Posted at 11:32หลังเที่ยง พ.ย. 27, 2006 by wut in Thai Technical | Comments[1]
อะไรคือ Ruby ตอนที่ 1
Ruby คือภาษา script แบบใหม่ที่เป็น Object-Oriented ที่ได้ได้นำเอาข้อดีของภาษา script ต่างๆมาด้วย ตัวของภาษา Ruby นั้นสร้างด้วยภาษาซีที่ได้ออกแบบให้รองรับภาษา perl และ python แต่การพัฒนานั้นเริ่มต้นเกิดขึ้นที่ประเทศญี่ปุ่น ทำให้การเบื้องต้นไม่ค่อยจะแพร่หลายมากนัก ผู้พัฒนาคือ Yukihiro Matsumoto “Matz” ที่เป็นผู้เชี่ยงชาญ programmer ที่ทำงานที่ Japanese open source company netlab.jp ซึ่งเขาเป็นผู้ที่เชี่ยวชาญในกลุ่ม open source evangelists ในญี่ปุ่น ซึ่งเขาได้พัฒนาผลิตภัณฑ์หลายๆ ชิ้นเช่น cmail ที่เป็น mail-user agent ที่ทำจาก emacs-based และ Ruby เป็นผลิตภัณฑ์แรกที่แพร่หลายในนอกประเทศญี่ปุ่นและทาง Matz ได้เริ่มสร้างภาษา Ruby ใน February 24, 1993 และได้ release เมื่อ 1995 ซึ่งชื่อของ Ruby ได้มาจากชื่อราศีเกิดของเพื่อนร่วมงานเขา
ในเบื้องต้นของการออกแบบ Ruby นั้น Matz ได้รวบรวมเอาภาษาที่เขามีความถนัดต่างๆ เข้าด้วยกัน ไม่ว่าจะเป็น Perl, Smalltalk, Eiffel, Ada และ Lisp เพื่อให้เป็นภาษาใหม่ที่ความเข้ากันได้ระหว่างการโปรแกรมแบบฟังก์ชั่น (functional programming) และ การโปรแกรมแบบคำสั่ง (imperative programming)
และเมื่อมีการขยายกลุ่มผู้ที่ใช้งาน Ruby ไปที่ประเทศอเมริกาทำให้มีการพัฒนาได้เร็วมากขึ้น แต่ทั้งนั้นด้วยเหตุการเริ่มต้นที่ไม่เร็วมากนักทำให้ภาษา Ruby มีความเสถียรค่อนข้างมาก และเป็นที่ยอมรับจากกลุ่มใหญ่ทั่วโลกในปี 2006 และก่อให้เกิดกลุ่มของ Ruby-Talk ขึ้นจาก mailing list ที่เพิ่มขึ้นเป็น 200 ฉบับต่อวัน จาก TIOBE index ซึ่งเป็นดัชนีชี้วัดการเติบโตของภาษาคอมพิวเตอร์โปรแกรมมิ่ง ภาษา Ruby ได้ขึ้นมาเป็นอันดับ 12 และมีการทำนายว่า ภายในประมาณอีกครึ่งปีนั้น Ruby จะเปลี่ยนเป็นภาษาคอมพิวเตอร์ที่เป็น Top 10 โดยเฉพาะที่เด่นๆของภาษา Ruby คือ Ruby on Rails web framework เป็นขอบข่ายงานในกลุ่มของ Web เป็นหลัก
ตัวของภาษา Ruby นั้นเป็น Object-Oriented โดยแท้จริงๆ ซึ่งองค์ประกอบทุกส่วนของข้อมูลนั้นล้วนแล้วแต่เป็น Object ที่จะสามารถมี properties และ action ดังเช่นหลักของโปรแกรมมิ่งแบบ Object-Oriented โดยส่วนของ properties จะเรียกได้ว่า instance variable และส่วนของ action นั้นจะเรียกได้ว่า methods ซึ่งตัวภาษา Ruby นั้นจะรองรับความเป็น Object-Oriented แบบสมบูรณ์ดังลักษณะตัวอย่าง
5.times { print “We *love* Ruby -- it’s outrageous!” }
ในภาษาอื่นๆ หลายๆภาษา ตัวเลขและมีการกำหนด Type แบบเดิมๆ ที่ไม่เป็น Object แต่ในภาษา Ruby จะออกแบบไว้เป็นเหมือนกับภาษา smalltalk ที่ทำให้มี methods และ instance variable ได้ในทุกๆ Type ดังที่เป็นตัวอย่างข้างต้นที่ภาษา Ruby มองเป็น Object-Oriented
และภาษา Ruby มีลักษณะเด่นๆ ดังนี้
และนอกจากนั้นตัวภาษา Ruby นั้นสามารถที่จะอธิบายด้วยลักษณะโปรแกรมมิ่งได้หลายมุมมอง ดังต่อไปนี้
และตัวภาษาเองยังได้เอื้อในการทำ introspection, reflection และ meta-programming ที่รองรับการทำงานเป็น threads ทั้งนั้นตัว Ruby เองยังได้มีความสามารถในการทำ dynamic typing และรองรับ parametric polymorphism อีกด้วย
ทดลองการใช้งาน Ruby เบื้องต้นเราจะต้องเตรียม download ตัวของ Ruby มาก่อนจาก http://www.ruby-lang.org/en/downloads
เริ่มการติดต่อกับ Ruby
และเมื่อพร้อมก็เริ่มเปิดโปรแกรม IRB เพื่อเข้าทดลองใช้ ruby เราจะทดลองด้วยโปรแกรม Hello World
irb(main):001:0>”Hello World”
=> “Hello World”
เราจะสังเกตุได้ว่าเราไม่ได้เขียนโปรแกรมเพื่อให้แสดงผลแต่เป็นการทำงานของ Ruby ที่ทำให้เราแสดงผลการทำงานของโปรแกรมได้ง่ายๆ
เริ่มการทดลองใช้ Ruby
irb(main):002:0>puts “Hello World”
Hello World
=> nil
คำสั่ง put เป็นการสั่งงานที่จะแสดงผลสิ่งที่เราสั่งออกมาใน Ruby และจะมีการ return ค่าออกมาเป็น nil
ลองใช้ Ruby คำนวณเลขให้
irb(main):003:0> 3+4
=> 7
จะเห็นความง่ายในการโปรแกรมให้ Ruby ทำงานที่เราอยากได้ แค่เราป้อนตัวเลขและสิ่งที่ต้องการกระทำ (operation) ดังตัวอย่างเพิ่มเติมต่อไปนี้
ตัวอย่างการคูณ 3 กับ 4
irb(main):004:0> 3*4
=> 12
ตัวอย่างการ 3 ยกกำลัง 4
irb(main):005:0> 3**4
=> 81
ตัวอย่างการถอด Square root
irb(main):006:0> Math.sqrt (9)
=> 3.0
หรืออาจจะเป็นตัวอย่างที่เพิ่มความซับซ้อน
irb(main):007:0 a = 3 ** 2
=> 9
irb(main):008:0 b = 4 ** 2
=> 16 irb(main): Math.sqrt (a+b)
=> 5.0
ดังข้างต้นจะเห็นได้ว่าตัวของ Ruby มีการทำงานที่ง่ายในตัวของภาษาเอง ซึ่งเป็นข้อที่ทำให้ตัวภาษามีความโดดเด่นมากๆ ซึ่งทำให้โปรแกรมเมอร์ใหม่ๆ เรียนรู้ในตัวภาษาเองได้รวดเร็วกว่าตัวภาษาอื่นๆ ซึ่งนั่นทำให้เกิดโปรแกรมเมอร์ที่รวดเร็ว นอกจากนั้นการทำงานในลักษณะ interactive คือสามารถที่จะโต้ตอบได้เลยโดยที่ไม่ต้องผ่านการ compile ตัว code ที่โปรแกรมเมอร์เขียนทำให้มีความสะดวกในการพัฒนามากๆ
ปัจจุบันนี้ภาษา Java แพร่หลายมากและมีความเสถียรที่จะนำไปใช้งาน ด้วยความเร็วในการทำงานที่สูง (แม้จะมีคำกล่าวเปรียบเทียบว่า Java ยังทำงานช้ามากๆ ในบางกลุ่มย่อยๆ ก็ตาม) แต่ทั้งนี้ Java จะต้องอาศัยการเขียนที่ค่อนข้างเกินความจำเป็น การเริ่มเข้ามาใช้ Ruby จากกลุ่มผู้ใช้ Java นั้นสิ่งที่เห็นได้ชัดเจนคือการเขียน code ที่น้อยลงมาก ซึ่งหมายความว่ากลุ่มผู้ใช้เหล่่านั้นจะมีการสร้างงานได้รวดเร็วมากขึ้น
ความคล้ายกัน
สิ่งที่มีเหมือนกันใน Java กับ Ruby คือ
สิ่งที่แตกต่างกัน
สิ่งที่แตกต่างระหว่าง Java กับ Ruby คือ
a = [1,2,3] แทนที่จะเป็น int[] a = {1,2,3}
Reference
http://en.wikipedia.org/wiki/Ruby_language
http://www.ruby-lang.org/en/documentation
Posted at 03:35หลังเที่ยง พ.ย. 20, 2006 by wut in Thai Technical | Comments[2]