www.xsidekick.com

Download Report

Transcript www.xsidekick.com

การใช้ เทคโนโลยี Open Source
ในการพัฒนาซอฟต์ แวร์
ขอขอบคุณผู้ให้ ข้อมูลทีน่ ่ าสนใจ
คุณอิสริยา ไพรีพ่ายฤทธิ์
[email protected]
สานักงานส่ งเสริมอุตสาหกรรมซอฟต์ แวร์ แห่ งชาติ
(องค์การมหาชน)
2005 อนุญาตให้ เผยแพร่เอกสารนี ้ต่อด้ วยสัญญาอนุญาตแบบ Creative Commons Attribution License
Open Source คืออะไร ?
ซอฟต์ แวร์ เสรี
 ผู้ใช้ มีสิทธิอย่ างเสรี กับตัวซอฟต์ แวร์
- ใช้ งาน
- ปรั บปรุ งแก้ ไข
- พัฒนาต่ อ
- ขาย
 ปั จจุบันใช้ งานอย่ างแพร่ หลาย

คุณใช้ Open Source อยู่หรือเปล่ า ?
Google ใช้ Linux เป็ นระบบปฏิบัตกิ าร
 Hotmail ใช้ FreeBSD เป็ นระบบปฏิบัตก
ิ าร
 70% ของเว็บ ใช้ Apache เป็ นเว็บเซิร์ฟเวอร์
 ADSL Router ใช้ Linux เป็ นระบบปฏิบัตก
ิ าร
 โทรศัพท์ มือถือของ Motorola ใช้ Linux เป็ นระบบปฏิบัตก
ิ าร
 Yahoo! ใช้ MySQL เป็ นระบบฐานข้ อมูล

ทาไมต้ องสนใจ Open Source
“Innovation Happens Elsewhere”
ไม่ ว่าองค์ กรจะลงทุนด้ านวิจัยแค่ ไหน ปริมาณผลงานของเคน นอกองค์ กรย่ อมมีมากว่ า
 ทางออก : นาผลงานของคนนอกมาใช้ งาน
 วิธีการ : Open Source


ประวัติของ Open Source
1983 : Richard Stallman ประการคาว่ า Free Software
 1991 : Linus Torvalds เริ่ มทา Linux
 1997 : Eric S. Raymond เขียน “The Cathedral and the bazaar”
 1998 : Netscape เปิ ดเผยซอร์ สของ Mozilla
 1998 : Eric S. Raymond ประกาศคาว่ า Open Source
 2004 : Firefox 1.0 ออก

รูปแบบการพัฒนาซอฟต์ แวร์ แบบ
Open Source
ผู้สร้ างเปิ ดเผยซอร์ สโค้ ด
 ผู้สนใจมีสิทธิแก้ ไขซอร์ สโค้ ด
 ผู้สนใจมีสิทธิส่งส่ วนที่แก้ ไขมาให้ ผ้ ูสร้ าง
 ผู้สร้ างมีสิทธิผนวกส่ วนแก้ ไข ไปกับโปรแกรมต้ นฉบับ


ก่ อให้ เกิดชุมชนของผู้ใช้ -ผู้พัฒนา
ข้ อดีของการพัฒนาแบบ Open Source
ผู้ใช้ มีส่วนร่ วมในการกาหนดทิศทางของโปรแกรม
 ผู้สร้ างมีโอกาสรั บฟั งความคิดเห็นของผู้ใช้ โดยตรง
 เพิ่มปริ มาณผู้มีส่วนร่ วม (contributor) ของโปรแกรม
 ลดระยะเวลาในการออกโปรแกรมรุ่ นใหม่ (release cycle)
 ลดค่ าใช้ จ่ายในการพัฒนาโปรแกรม

โครงการ Open Source ที่มีชื่อเสี ยง
ระบบปฏิบัตกิ าร Linux, FreeBSD
 เว็บเซิร์ฟเวอร์ Apache
 ฐานข้ อมูล MySQL, PostgreSQL
 เว็บเบราว์ เซอร์ Mozilla Firefox
 อีเมล Mozilla Thunderbird
 ชุดออฟฟิ ศ OpenOffice.org
 โปรแกรมตกแต่ งภาพ Gimp
 ภาษาโปรแกรม PHP, Python, Perl

การพัฒนาซอฟต์ แวร์ ด้วย Open Source
Platform
ส่ วนที่รองรับการทางานของซอฟต์ แวร์ เช่ น OS, server, library
 Programming
ตัวโปรแกรมเอง, ภาษา, compiler, interpreter
 Tools
เครื่องมือที่ช่วยให้ การพัฒนาโปรแกรมสะดวกและมีประสิทธิภาพ
เช่ น debugger, version control

Platform : Normal Solutions
ใช้ Open Source ลดค่ าใช้ จ่ายรวมของ Solution
Applications
10,000 B
Linux
0B
Windows
4,900 B
ราคารวมของ Solution
10,000 B
14,900 B
Platform : Web Solutions
Applications
Web Server
Database
OS
Apache
IIS
MySQL
Oracle
Linux
Windows
Platform : ลดค่ าใช้ จ่ายรวม
ใช้ Open Source เพื่อลดค่ าใช้ จ่ายโดยรวมของ Solution
 ผู้ซอ
ื ้ : ได้ Solution ในราคาที่ถูกลง
 ผู้ขาย : มีโอกาสขายได้ มากขึน
้


สามารถใช้ Open Source ร่ วมกับซอฟต์ แวร์ อ่ นื ได้ เช่ น
- Windows + Apache + My SQL
- Linux + Oracle
Programming

C/C++

Java

.NET

PHP

Perl

Python
Programming : C/C++


C เป็ นภาษาหลักในการพัฒนาโปรแกรมมายาวนาน
- ประสิทธิภาพสูง
- เหมาะกับงานเกี่ยวกับระบบ
C++ เป็ น superset ของ C
- เพิ่มความสามารถด้ าน Object-Oriented
- เขียน C++ แบบ C ได้
- ปั จจุบันโปรแกรมขนาดใหญ่ ส่วนมากเขียนด้ วย C++
Programming : C/C++ : GCC
GCC (GNU Compiler Collection)
 เป็ น compiler มาตรฐานในการทา benchmark
 สนั บสนุ นภาษา C, C++, Fortran, Obj-C, Ada
 เวอร์ ชันล่ าสุด 4.0
 มีใน Unix แทบทุกตัว
 ใช้ บนวินโดวส์ ได้ ผ่าน Cygwin (www.cygwin.com)
 การใช้ งานเป็ น command line

Programming : C/C++ : GCC (2)



เขียนโปรแกรมภาษา C ชื่อ main.c
gcc main.c
- ได้ ผลลัพธ์ คือ a.out
- ทดสอบโปรแกรมโดยสั่ง ./a.out
gcc -o program main.c
- ได้ ผลลัพธ์ คือ program
- ทดสอบโปรแกรมโดยสั่ง ./program
Programming : C/C++ : Editor
Text editor : vi, notepad, editplus, ultraedit
 IDE (Integrated Development Environment
- Windows : Dev-C++
- Linux : Kdevelop, Anjunta
- หรือ Eclipse กับ CDT (C/C++ Development Tools)

KDevelop
Programming : Java
สร้ างโดย Sun Microsystems ปี 1990
 เป็ น Object-Oriented
 ใช้ แนวคิดของ Virtual Machine
 ทางานได้ ข้ามแพลตฟอร์ ม
 Java Runtime Environment แจกฟรี โดย Sun และมีครบคลุม
เกือบทุกแพลตฟอร์ ม
 Java Development Kit ชุดพัฒนาพืน
้ ฐาน แจกฟรีโดย Sun
 มี 3 edition : J2ME, J2SE, J2EE
 เวอร์ ชันล่ าสุด : 5.0

Programming : Java : Diagram
Java Code
(.java)
Java Development Kit (JDK)
Java Class
Java Compiler (java.exe)
Byte Code
(.class)
Java Runtime Environment (JRE)
Binary Code
Java Virtual Machine (java.exe)
Programming : Java : Open Source
Open Source
implementations
Library
Java Class
Harmony
Compiler
java.exe
GCJ
VM
javac.exe
GIJ, Kaffe
Programming : Java : IDE


Eclipse (www.eclipse.org)
- IBM/Oracle
- เวอร์ ชันล่ าสุด : 3.1
NetBeans (www.netbeans.org)
- Sun (Forte, Sun ONE Studio, Java Studio)
- เวอร์ ช่ ันล่ าสุด : 4.1
Programming : Java : Other


Jboss (www.jboss.org)
- Open Source J2EE application server
Jakarta Project (jarkata.apache.org)
- Open Source software for Java Platform
- ดูแลโดย Apache Foundation
- ตัวอย่ าง : Tomcat, Ant
- นาไปใช้ ใน IBM WebSphere
Programming : .NET

Microsoft เขียนตาม Java

Multi-Platform (ในทางทฤษฎี)


Multi-Language
- C#, VB.NET, Managed C++, Jscript.NET, ASP.NET
- Python, Ada, Cobol, Boo, Perl, Fortran
.NET 2.0 Final : November 2005
Programming : .NET : Diagram
C#
VB.NET
compiler
.NET Class
(C#)
CIL
(Common Intermediate
Language)
.NET Class
(VB.NET)
CLR (Common Language Runtime)
Binary Code
Programming : .NET : Mono

Mono (www.mono-project.com)

เป็ นการสร้ าง .NET Framework แบบ Open Source

บริษัท Ximian (ปั จจุบันเป็ นของ Novell)

ส่ งเสริมให้ .NET สามารถรันข้ ามแพลทฟอร์ มได้ อย่ างแท้ จริง

มีโอกาสเกิดปั ญหาด้ านกฎหมายในอนาคต

รวมอยู่ใน : SuSE, Ubuntu, Debian

ไม่ รวมอยู่ใน : Red Hat, Fedora
Programming : .NET : Mono (2)
Library
.NET Library
Compiler
.NET compiler
.Mono compiler
VM
.NET CLR
.Mono CLR
.NET Library
Mono Library
Programming : .NET : IDE

SharpDevelop (www.icsharpcode.net/OpenSource/SD)
- Microsoft.NET
- Windows

MonoDevelop (http://www.monodevelop.com)
- Mono implement of Sharp Develop
- Microsoft .NET & Mono
- Linux, MacOSX
SharpDevelop
Programming : PHP

เดิม : Personal Home Page

ปั จจุบัน : PHP Hypertext Processor

Scripting language, server side

เทียบได้ กับ Microsoft ASP, Sun JSP

ได้ รับความนิยมสูงมาก เช่ น Pantip, phpBB, phpMyAdmin
Programming : PHP : Solution



มักใช่ ร่วมกับ Linux, Apache, MySQL
LAMP/LAMPS
- Linux, Apache, MySQL, PHP / SSL
- (อาจใช้ PostgreSQL แทน MySQL และ Perl/Python แทน PHP ได้ )
สาหรับวินโดวส์ แนะนาให้ ใช้ AppServ (www.appserv.net)
Programming : Perl

เป็ น scripting Language

เหมาะสาหรับทางานบน Unix shell

เขียนได้ ง่าย แต่ อ่านได้ ยาก เพราะเป็ นภาษาที่เน้ นสัญลักษณ์

แนะนาให้ ใช้ PHP หรือ Python
Programming : Python

เป็ น scripting language

มีประสิทธิภาพสูง เขียนได้ ง่าย

ทางานได้ ข้ามแพลทฟอร์ ม

มี library สาคัญๆ ให้ ครบ

กาลังได้ รับความนิยมเพิ่มขึน้ เรื่อยๆ เช่ น
- Google
- Red Hat
- BitTorrent
Programming : Python : Example
Python
If (a > b) :
print “A is greater”
else:
print “B is greater”
C
int a;
int b;
if (a>b) {
printf(“A is greater”);
} else
printf(“B is greater”);
}
Programming : Others

ภาษาโปรแกรมมิ่งอื่นๆ ที่น่าสนใจ
- Ruby
- Boo
- Eiffel
- Objective-C
Tools
Debugger
 Packaging
 Version Control
 Bug Tracker
 GUI Designer

Tools : Debugger


GDB – GNU Debugger
- เป็ น command line debugger
- ใช้ ค่ กู ับ GCC
- สนับสนุน C, C++, Fortran, Pascal, Obj-C
- ทางานได้ บน Unix และ Windows
- มี GUI เลือกใช้ ได้ หลายตัว เช่ น DDD
สาหรับภาษาอื่นๆ สามารถใช้ debugger ของ IDE
Tools : Packaging

ขัน้ ตอนการติดตัง้ โปรแกรมบน Unix ใช้ โปรแกรมเหล่ านีเ้ ข้ าช่ วย
- autoconfig
- autobuild
- make

วิธีการติดตัง้ พืน้ ฐาน
- ./configure
- make
- make install
Tools : Packaging (2)




นิยมรวมไฟล์ เป็ นก้ อน แล้ วบีบอัดแบบ tar.gz หรือ tarball เพื่อ
สะดวกในการดาวน์ โหลด
การบีบไฟล์
- tar cxvf filename.tar.gz file1 file2 file3
การขยายไฟล์
- tar xvfz filename.tar.gz
ไฟล์ แบบ tar.gz เปิ ดได้ ด้วยโปรแกรม ZIP ทั่วไป เช่ น WinZIP, WinRAR
Tools : Packaging (3)



ต่ อมามีระบบแพกเกจที่ก้าวหน้ าขึน้ สามารถติดตัง้ ได้ อัตโนมัติ
Red Hat
- RPM – Red Hat Package Management
Debian
- DPKG – Debian Package
Tools : Packaging (4)
ระบบ RPM และ DPKG มีปัญหาด้ าน dependency
 มีระบบแพกเกจอีกชัน
้ ที่คอยแก้ ปัญหา dependency
 Red Hat
- YUM
 Debian
- APT (Advance Package Tool)

Tools : Version Control

Version Control
- จัดการเวอร์ ชันของซอร์ สโค้ ด
- เก็บโค้ ดไว้ ท่ เี ซิร์ฟเวอร์ กลาง แล้ วเรียกใช้ เมื่อต้ องการ
- สนับสนุนการทางานร่ วมกันเป็ นทีม
- สามารถย้ อนการแก้ ไขกลับได้
- ใช้ งานอย่ างจริงจังในการพัฒนาระดับอุตสาหกรรม
Tools : Version Control (2)


CVS – Concurrent Versions System
- มีใน Unix เกือบทุกรุ่ น
- มีข้อจากัดหลายอย่ าง เช่ น ไม่ สามารถเปลี่ยนชื่อไฟล์ ได้
- ยังใช้ กันอย่ างแพร่ หลายในโครงการ Open Source สาคัญหลายแห่ ง
SVN – Subversion
- ปรับปรุ งจาก CVS แนวคิดใกล้ เคียงกัน
- แนะนาให้ เริ่มที่ SVN เลย
Tools : Version Control (3)
คาสั่งพืน้ ฐานของ CVS/SVN
 svn checkout
ดึงซอร์ สส่ วนที่ต้องการจากเซิร์ฟเวอร์ มาที่เครื่อง
 svn add
เพิ่มไฟล์ ใหม่ ในเครื่องไปยังเซิร์ฟเวอร์
 svn update
ปรับปรุ งการเปลี่ยนแปลงล่ าสุดกับเวอร์ ชันของเซิร์ฟเวอร์
 svn commit
ยืนยันการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ (สั่งหลัง add/update)

Tools : Bug Tracker
ระบบจัดการบั๊กผ่ านเว็บ
 Bugzilla
ประสิทธิภาพสูง ใช้ งานอย่ างแพร่ หลาย ติดตัง้ ยาก
 IssueZilla
เป็ น Bugzilla ที่โครงการ Open Office นามาปรับแต่ ง
 Trac
ใช้ งานและติดตัง้ ได้ ง่าย ความสามารถครบ ออกแบบมาเพื่อการ
พัฒนาโปรแกรม

Tools : GUI Designer
Glade (http://glade.gnome.org/)
- เป็ น user interface designer
- Export เป็ น XML
- ใช้ ได้ กับภาษา C, C++, Java, Perl, Python, C#, Ruby
 Stetic
- เป็ น user interface designer สาหรับ Mono
 หรื อใช้ GUI designer ที่มากับ IDE เช่ น Eclipse, NetBeans, KDevelop

Glade
More information
Open Source at SIPA
http://www.thaiopensource.org
 Open Source Software Project
http://www.sourceforge.net
