การใช้เทคโนโลยี Open Source...

48
กกกกกก กกกกกกกกก Open Source กกกกก กกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกก กกกกกกกก กกกกก [email protected] กกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกก 2005 อออออออออออออออออออออออออออออออออออออ อออออออออ Creative Commons Attribution License

description

การใช้เทคโนโลยี Open Source ในการพัฒนาซอฟต์แวร์. ขอขอบคุณผู้ให้ข้อมูลที่น่าสนใจ. คุณอิสริยา ไพรีพ่ายฤทธิ์ [email protected] สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ ( องค์การมหาชน ). - PowerPoint PPT Presentation

Transcript of การใช้เทคโนโลยี Open Source...

Page 1: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

การใช้�เทคโนโลยี�Open Source

ในการพั�ฒนาซอฟต์�แวร�

ขอขอบค�ณผู้��ให้�ข�อมู�ลท�!น"าสนใจ ค�ณอ%สร%ยีา ไพัร�พั"ายีฤทธิ์%)

[email protected] ส*าน�กงานส"งเสร%มูอ�ต์สาห้กรรมู

ซอฟต์�แวร�แห้"งช้าต์%(องค�การมูห้าช้น)

2005 อนุ�ญาตให้เผยแพร่�เอกสาร่นุ��ต�อด้วยส�ญญาอนุ�ญาตแบบ Creative Commons Attribution License

Page 2: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Open Source ค,อ อะไร ? ซอฟต์�แวร�เสร�

ผู้��ใช้�มู�ส%ทธิ์%อยี"างเสร�ก�บต์�วซอฟต์�แวร�- ใช้�งาน- ปร�บปร�งแก�ไข- พั�ฒนาต์"อ- ขายี

ป/จจ�บ�นใช้�งานอยี"างแพัร"ห้ลายี

Page 3: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

ค�ณใช้� Open Source อยี�"ห้ร,อเปล"า ?

Google ใช้� Linux เป0นระบบปฏิ%บ�ต์%การ Hotmail ใช้� FreeBSD เป0นระบบปฏิ%บ�ต์%การ 70% ของเว2บ ใช้� Apache เป0นเว2บเซ%ร�ฟเวอร� ADSL Router ใช้� Linux เป0นระบบปฏิ%บ�ต์%การ โทรศั�พัท�มู,อถื,อของ Motorola ใช้� Linux เป0นระบบปฏิ%บ�ต์%การ Yahoo! ใช้� MySQL เป0นระบบฐานข�อมู�ล

Page 4: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

ท*าไมูต์�องสนใจ Open Source

“Innovation Happens Elsewhere” ไมู"ว"าองค�กรจะลงท�นด้�านว%จ�ยีแค"ไห้น ปร%มูาณผู้ลงานของเคน นอกองค�กรยี"อมูมู�มูากว"า ทางออก : น*าผู้ลงานของคนนอกมูาใช้�งาน ว%ธิ์�การ : Open Source

Page 5: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

ประว�ต์%ของ Open Source

1983 : Richard Stallman ประการค*าว"า Free Software 1991 : Linus Torvalds เร%!มูท*า Linux 1997 : Eric S. Raymond “เข�ยีน The Cathedral and the bazaar” 1998 : Netscape เป7ด้เผู้ยีซอร�สของ Mozilla 1998 : Eric S. Raymond ประกาศัค*าว"า Open Source 2004 : Firefox 1.0 ออก

Page 6: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

ร�ปแบบการพั�ฒนา ซอฟต์�แวร�แบบ Open

Source ผู้��สร�างเป7ด้เผู้ยีซอร�สโค�ด้ ผู้��สนใจมู�ส%ทธิ์%แก�ไขซอร�สโค�ด้ ผู้��สนใจมู�ส%ทธิ์%ส"งส"วนท�!แก�ไขมูาให้�ผู้��สร�าง ผู้��สร�างมู�ส%ทธิ์%ผู้นวกส"วนแก�ไข ไปก�บโปรแกรมูต์�นฉบ�บ

ก"อให้�เก%ด้ช้�มูช้นของผู้��ใช้�-ผู้��พั�ฒนา

Page 7: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

ข�อด้�ของการพั�ฒนาแบบOpen Source

ผู้��ใช้�มู�ส"วนร"วมูในการก*าห้นด้ท%ศัทางของโปรแกรมู ผู้��สร�างมู�โอกาสร�บฟ/งความูค%ด้เห้2นของผู้��ใช้�โด้ยีต์รง เพั%!มูปร%มูาณผู้��มู�ส"วนร"วมู (contributor) ของโปรแกรมู ลด้ระยีะเวลาในการออกโปรแกรมูร�"นให้มู" (release cycle) ลด้ค"าใช้�จ"ายีในการพั�ฒนาโปรแกรมู

Page 8: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

โครงการ Open Source ท�!มู�ช้,!อเส�ยีง

ระบบปฏิ%บ�ต์%การ Linux, FreeBSD เว2บเซ%ร�ฟเวอร� Apache ฐานข�อมู�ล MySQL, PostgreSQL เว2บเบราว�เซอร� Mozilla Firefox อ�เมูล Mozilla Thunderbird ช้�ด้ออฟฟ7ศั OpenOffice.org โปรแกรมูต์กแต์"งภาพั Gimp ภาษาโปรแกรมู PHP, Python, Perl

Page 9: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

การพั�ฒนาซอฟต์�แวร�ด้�วยีOpen Source

Platform ส"วนท�!รองร�บการท*างานของซอฟต์�แวร� เช้"น OS, server, library

Programmingต์�วโปรแกรมูเอง, ภาษา, compiler, interpreter

Tools เคร,!องมู,อท�!ช้"วยีให้�การพั�ฒนาโปรแกรมูสะด้วกและมู�ประส%ทธิ์%ภาพั

เช้"น debugger, version control

Page 10: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Platform : Normal Solutions

ใช้� Open Source ลด้ค"าใช้�จ"ายีรวมูของ Solution

Applications

10,000 B

Linux 0 B

Windows

4,900 B ร่าคาร่วมของ Solution

10,000 B 14,900 B

Page 11: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Platform : Web Solutions Applications

Apache IIS Web

Server

Database

MySQL Oracle

OS Linux Windows

Page 12: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Platform : ลด้ค"าใช้�จ"ายีรวมู

ใช้� Open Source เพั,!อลด้ค"าใช้�จ"ายีโด้ยีรวมูของ Solution ผู้��ซ,;อ : ได้� Solution ในราคาท�!ถื�กลง ผู้��ขายี : มู�โอกาสขายีได้�มูากข<;น

สามูารถืใช้� Open Source ร"วมูก�บซอฟต์�แวร�อ,!นได้� เช้"น- Windows + Apache + My SQL- Linux + Oracle

Page 13: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming C/C++

Java

.NET

PHP

Perl

Python

Page 14: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : C/C++ C เป0นภาษาห้ล�กในการพั�ฒนาโปรแกรมูมูายีาวนาน

- ประส%ทธิ์%ภาพัส�ง- เห้มูาะก�บงานเก�!ยีวก�บระบบ

C++ เป0น superset ของ C- เพั%!มูความูสามูารถืด้�าน Object-Oriented- เข�ยีน C++ แบบ C ได้�- ป/จจ�บ�นโปรแกรมูขนาด้ให้ญ่"ส"วนมูากเข�ยีนด้�วยี C++

Page 15: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : C/C++ : GCC

GCC (GNU Compiler Collection) เป0น compiler มูาต์รฐานในการท*า benchmark สน�บสน�นภาษา C, C++, Fortran, Obj-C, Ada เวอร�ช้�นล"าส�ด้ 4.0 มู�ใน Unix แทบท�กต์�ว ใช้�บนว%นโด้วส�ได้�ผู้"าน Cygwin (www.cygwin.com) การใช้�งานเป0น command line

Page 16: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : C/C++ : GCC (2)

เข�ยีนโปรแกรมูภาษา C ช้,!อ main.c

gcc main.c- ได้�ผู้ลล�พัธิ์�ค,อ a.out- ทด้สอบโปรแกรมูโด้ยีส�!ง ./a.out

gcc -o program main.c- ได้�ผู้ลล�พัธิ์�ค,อ program- ทด้สอบโปรแกรมูโด้ยีส�!ง ./program

Page 17: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

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)

Page 18: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

KDevelop

Page 19: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : Java สร�างโด้ยี Sun Microsystems ป> 1990 เป0น Object-Oriented ใช้�แนวค%ด้ของ Virtual Machine ท*างานได้�ข�ามูแพัลต์ฟอร�มู Java Runtime Environment แจกฟร�โด้ยี Sun และมู�ครบคล�มู เก,อบท�กแพัลต์ฟอร�มู Java Development Kit ช้�ด้พั�ฒนาพั,;นฐาน แจกฟร�โด้ยี Sun มู� 3 edition : J2ME, J2SE, J2EE เวอร�ช้�นล"าส�ด้ : 5.0

Page 20: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : Java : Diagram

Java Code

(.java)

Byte Code

(.class)

Binary Code

Java Class

Java Development Kit (JDK)

Java Compiler (java.exe)

Java Virtual Machine (java.exe)

Java Runtime Environment (JRE)

Page 21: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : Java : Open Source

Open SourceimplementationsJava

Class

java.exe

javac.exe

Harmony

GCJ

GIJ, Kaffe

Library

Compiler

VM

Page 22: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : Java : IDE

Eclipse (www.eclipse.org)- IBM/Oracle- เวอร�ช้�นล"าส�ด้ : 3.1

NetBeans (www.netbeans.org)- Sun (Forte, Sun ONE Studio, Java Studio)- เวอร�ช้�!นล"าส�ด้ : 4.1

Page 23: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

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

Page 24: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

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

Page 25: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : .NET : DiagramC# VB.NET

CIL

(Common Intermediate Language)

Binary Code

.NET Class

(VB.NET)

.NET Class

(C#)

compiler

CLR (Common Language Runtime)

Page 26: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : .NET : Mono

Mono (www.mono-project.com) เป0นการสร�าง .NET Framework แบบ Open Source บร%ษ�ท Ximian ( ป/จจ�บ�นเป0นของ Novell) ส"งเสร%มูให้� .NET สามูารถืร�นข�ามูแพัลทฟอร�มูได้�อยี"างแท�จร%ง มู�โอกาสเก%ด้ป/ญ่ห้าด้�านกฎีห้มูายีในอนาคต์ รวมูอยี�"ใน : SuSE, Ubuntu, Debian ไมู"รวมูอยี�"ใน : Red Hat, Fedora

Page 27: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : .NET : Mono (2)

.NET compiler

.NET CLR

.NET Library

.Mono compiler

.Mono CLR

Library

Compiler

VM

.NET Library

Mono Library

Page 28: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

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

Page 29: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

SharpDevelop

Page 30: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : PHP เด้%มู : Personal Home Page

ป/จจ�บ�น : PHP Hypertext Processor

Scripting language, server side

เท�ยีบได้�ก�บ Microsoft ASP, Sun JSP

ได้�ร�บความูน%ยีมูส�งมูาก เช้"น Pantip, phpBB, phpMyAdmin

Page 31: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : PHP : Solution

มู�กใช้"ร"วมูก�บ Linux, Apache, MySQL

LAMP/LAMPS- Linux, Apache, MySQL, PHP / SSL- ( อาจใช้� PostgreSQL แทน MySQL และ Perl/Python แทน PHP ได้�)

ส*าห้ร�บว%นโด้วส�แนะน*าให้�ใช้� AppServ (www.appserv.net)

Page 32: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : Perl

เป0น scripting Language

เห้มูาะส*าห้ร�บท*างานบน Unix shell

เข�ยีนได้�ง"ายี แต์"อ"านได้�ยีาก เพัราะเป0นภาษาท�!เน�นส�ญ่ล�กษณ� แนะน*าให้�ใช้� PHP ห้ร,อ Python

Page 33: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : Python

เป0น scripting language มู�ประส%ทธิ์%ภาพัส�ง เข�ยีนได้�ง"ายี ท*างานได้�ข�ามูแพัลทฟอร�มู มู� library ส*าค�ญ่ๆ ให้�ครบ ก*าล�งได้�ร�บความูน%ยีมูเพั%!มูข<;นเร,!อยีๆ เช้"น

- Google- Red Hat- BitTorrent

Page 34: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : Python : Example

Python CIf (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”);}

Page 35: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Programming : Others

ภาษาโปรแกรมูมู%!งอ,!นๆ ท�!น"าสนใจ- Ruby

- Boo

- Eiffel

- Objective-C

Page 36: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools Debugger Packaging Version Control Bug Tracker GUI Designer

Page 37: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Debugger GDB – GNU Debugger

- เป0น command line debugger- ใช้�ค�"ก�บ GCC- สน�บสน�น C, C++, Fortran, Pascal, Obj-C- ท*างานได้�บน Unix และ Windows- มู� GUI เล,อกใช้�ได้�ห้ลายีต์�ว เช้"น DDD

ส*าห้ร�บภาษาอ,!นๆ สามูารถืใช้� debugger ของ IDE

Page 38: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Packaging ข�;นต์อนการต์%ด้ต์�;งโปรแกรมูบน Unix ใช้�โปรแกรมูเห้ล"าน�;เข�าช้"วยี

- autoconfig- autobuild- make

ว%ธิ์�การต์%ด้ต์�;งพั,;นฐาน- ./configure- make- make install

Page 39: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Packaging (2) น%ยีมูรวมูไฟล�เป0นก�อน แล�วบ�บอ�ด้แบบ tar.gz ห้ร,อ tarball เพั,!อ สะด้วกในการด้าวน�โห้ลด้ การบ�บไฟล�

- tar cxvf filename.tar.gz file1 file2 file3 การขยีายีไฟล�

- tar xvfz filename.tar.gz ไฟล�แบบ tar.gz เป7ด้ได้�ด้�วยีโปรแกรมู ZIP ท�!วไป เช้"น WinZIP, WinRAR

Page 40: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Packaging (3)

ต์"อมูามู�ระบบแพักเกจท�!ก�าวห้น�าข<;น สามูารถืต์%ด้ต์�;งได้�อ�ต์โนมู�ต์% Red Hat

- RPM – Red Hat Package Management Debian

- DPKG – Debian Package

Page 41: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Packaging (4) ระบบ RPM และ DPKG มู�ป/ญ่ห้าด้�าน dependency มู�ระบบแพักเกจอ�กช้�;นท�!คอยีแก�ป/ญ่ห้า dependency Red Hat

- YUM Debian

- APT (Advance Package Tool)

Page 42: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Version Control

Version Control- จ�ด้การเวอร�ช้�นของซอร�สโค�ด้- เก2บโค�ด้ไว�ท�!เซ%ร�ฟเวอร�กลาง แล�วเร�ยีกใช้�เมู,!อต์�องการ- สน�บสน�นการท*างานร"วมูก�นเป0นท�มู- สามูารถืยี�อนการแก�ไขกล�บได้�- ใช้�งานอยี"างจร%งจ�งในการพั�ฒนาระด้�บอ�ต์สาห้กรรมู

Page 43: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Version Control (2)

CVS – Concurrent Versions System- มู�ใน Unix เก,อบท�กร�"น- มู�ข�อจ*าก�ด้ห้ลายีอยี"าง เช้"น ไมู"สามูารถืเปล�!ยีนช้,!อไฟล�ได้�- ยี�งใช้�ก�นอยี"างแพัร"ห้ลายีในโครงการ Open Source ส*าค�ญ่ห้ลายีแห้"ง

SVN – Subversion - ปร�บปร�งจาก CVS แนวค%ด้ใกล�เค�ยีงก�น- แนะน*าให้�เร%!มูท�! SVN เลยี

Page 44: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Version Control (3)

ค*าส�!งพั,;นฐานของ CVS/SVN svn checkout ด้<งซอร�สส"วนท�!ต์�องการจากเซ%ร�ฟเวอร�มูาท�!เคร,!อง svn add เพั%!มูไฟล�ให้มู"ในเคร,!องไปยี�งเซ%ร�ฟเวอร� svn update ปร�บปร�งการเปล�!ยีนแปลงล"าส�ด้ก�บเวอร�ช้�นของเซ%ร�ฟเวอร� svn commit ยี,นยี�นการเปล�!ยีนแปลงไปยี�งเซ%ร�ฟเวอร� ( ส�!งห้ล�ง add/update)

Page 45: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : Bug Tracker ระบบจ�ด้การบ�Aกผู้"านเว2บ Bugzilla ประส%ทธิ์%ภาพัส�ง ใช้�งานอยี"างแพัร"ห้ลายี ต์%ด้ต์�;งยีาก IssueZilla เป0น Bugzilla ท�!โครงการ Open Office น*ามูาปร�บแต์"ง Trac ใช้�งานและต์%ด้ต์�;งได้�ง"ายี ความูสามูารถืครบ ออกแบบมูาเพั,!อการ พั�ฒนาโปรแกรมู

Page 46: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Tools : GUI Designer Glade (http://glade.gnome.org/)

- เป0น user interface designer- Export เป0น XML- ใช้�ได้�ก�บภาษา C, C++, Java, Perl, Python, C#, Ruby

Stetic- เป0น user interface designer ส*าห้ร�บ Mono

ห้ร,อใช้� GUI designer ท�!มูาก�บ IDE เช้"น Eclipse, NetBeans, KDevelop

Page 47: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

Glade

Page 48: การใช้เทคโนโลยี  Open Source ในการพัฒนาซอฟต์แวร์

More information Open Source at SIPA

http://www.thaiopensource.org Open Source Software Project

http://www.sourceforge.net