Download www.xsidekick.com

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
การใช้ เทคโนโลยี Open Source
ในการพัฒนาซอฟต์ แวร์
ขอขอบคุณผู้ให้ ข้อมูลทีน่ ่ าสนใจ
คุณอิสริยา ไพรีพ่ายฤทธิ์
isriya_pa@sipa.or.th
สานักงานส่ งเสริมอุตสาหกรรมซอฟต์ แวร์ แห่ งชาติ
(องค์การมหาชน)
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

Related documents