Upload
isriya-paireepairit
View
7.915
Download
5
Embed Size (px)
DESCRIPTION
How to use Open Source technology for software development industry. The language is Thai
Citation preview
การใชเทคโนโลย 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
Applications10,000 B
Linux0 B
Windows4,900 B
ราคารวมของ Solution
10,000 B 14,900 B
ใช Open Source ลดคาใชจายรวมของ Solution
Platform : Web Solutions
Applications
Linux Windows
Apache
MySQL Oracle
IISWeb Server
Database
OS
Platform : ลดคาใชจายรวม
● ใช Open Source เพอลดคาใชจายโดยรวมของ Solution● ผซอ : ได Solution ในราคาทถกลง● ผขาย : มโอกาสขายไดมากขน
● สามารถใช Open Source รวมกบซอฟตแวรอนได เชน– Windows + Apache + MySQL– 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)
Byte Code(.class)
Binary Code
Java Compiler (javac.exe)
Java Virtual Machine (java.exe)
Java Development Kit (JDK)
Java Runtime Environment (JRE)
Java Class
Programming : Java : Open Source
Java Classjava.exejavac.exe
LibraryCompiler
VM
HarmonyGCJ
GIJ, Kaffe
Open Source implementations
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#
CIL(Common Intermediate Language)
Binary Code
compiler
CLR (Common Language Runtime)
VB.NET
.NET Class(C#)
.NET Class(VB.NET)
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)
.NET compiler
.NET CLR
Library
Compiler
VM
Mono compiler
Mono CLR
.NET Library Mono Library.NET Library
Programming : .NET : IDE● SharpDevelop (www.icsharpcode.net/OpenSource/SD)
– Microsoft .NET– Windows
● MonoDevelop (http://www.monodevelop.com)– Mono implement of SharpDevelop– 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
if (a > b): print “A is greater”else: print “B is greater”
int a;int b;if (a>b) { printf(“A is greater”);} else { printf(“B is greater”);}
Python C
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 ทโครงการ OpenOffice นำามาปรบแตง● 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