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