Tải bản đầy đủ (.doc) (71 trang)

ĐỀ TÀI : TÌM HIỂU ĐIỆN TOÁN ĐÁM MÂY VÀ XÂY DỰNG TRÌNH SOẠN THẢO LẬP TRÌNH C TRỰC TUYẾN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.17 MB, 71 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.ud.edu.vn, E-mail:

LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115

ĐỀ TÀI :
TÌM HIỂU ĐIỆN TOÁN ĐÁM MÂY VÀ XÂY DỰNG
TRÌNH SOẠN THẢO LẬP TRÌNH C TRỰC TUYẾN
Mã số : 06T2-006
Ngày bảo vệ : 15-16/06/2011

SINH VIÊN
LỚP
CBHD

: LÊ VĂN DIỆN
: 06T2
: TS.GVC.Huỳnh Công Pháp

ĐÀ NẴNG, 06/2011


LỜI CẢM ƠN
Tôi chân thành cảm ơn giảng viên TS. Huỳnh Công Pháp, người đã


trực tiếp hướng dẫn tôi hoàn thành đề tài này, người đã tận tình hướng
dẫn, chỉ bảo tôi trong suốt thời gian thực hiện đề tài. Trong thời gian làm
việc với Thầy, tôi không những học hỏi được nhiều kiến thức bổ ích mà còn
học được tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc của
Thầy.
Tôi xin chân thành cảm ơn Khoa Công nghệ Thông tin, trường Đại học
Bách Khoa - Đại học Đà Nẵng đã tạo điều kiện cho tôi thực hiện đề tài
này.
Xin gửi lời cảm ơn chân thành đến gia đình, ba mẹ và bè bạn vì đã luôn
là nguồn động viên to lớn, giúp đỡ tôi vượt qua những khó khăn trong suốt
quá trình làm việc.
Mặc dù đã cố gắng hoàn thiện đề tài với tất cả sự nỗ lực của bản thân,
nhưng chắc chắn không thể tránh khỏi những thiếu sót. Kính mong quý
Thầy Cô tận tình chỉ bảo.
Một lần nữa, tôi xin chân thành cảm ơn và luôn mong nhận được sự
đóng góp quý báu của tất cả mọi người.

Đà Nẵng, tháng 6 năm 2011.
Lê Văn Diện


LỜI CAM ĐOAN
Tôi xin cam đoan :
1

Những nội dung trong báo cáo này là do tôi thực hiện dưới sự hướng dẫn
trực tiếp của thầy (cô) TS. Huỳnh Công Pháp.

2


Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên
tác giả, tên công trình, thời gian, địa điểm công bố.

3

Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên,
Lê Văn Diện


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
………………………......
Đà Nẵng ,Ngày ….. tháng 6 năm 2011


NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
………………………......

Đà Nẵng ,Ngày ….. tháng 6 năm 2011


MỤC LỤC
GIỚI THIỆU....................................................................................................5
CƠ SỞ LÝ THUYẾT.......................................................................................7
I.

Trình biên dịch............................................................................................................7
I.1.
Định nghĩa trình biên dịch.............................................................................7
I.2.
Các kiểu trình biên dịch.................................................................................8
I.2.1.
Trình biên dịch cùng bản và trình biên dịch chéo bản..............................8
I.2.2.
Số bước chuyển dịch..................................................................................9
I.2.3.
Các đặc tính khác.....................................................................................10
I.3.
Trình biên dịch GCC trong Linux................................................................11
I.3.1.
Cú pháp sử dụng......................................................................................11
I.3.2.
Ví dụ sử dụng GCC trên Ubuntu 10.10...................................................12
II.
Công nghệ cloud computing................................................................................13
II.1. Khái niệm.....................................................................................................13
II.2. Lợi ích..........................................................................................................14
II.3. Các loại hình dịch vụ và mô hình triển khai................................................15

II.3.1.
Dịch vụ hạ tầng IaaS (Infrastructure as a Service).................................15
II.3.2.
Dịch vụ nền tảng PaaS (Platform as a Service)......................................16
II.3.3.
Dịch vụ phần mềm SaaS (Software as a Service)....................................16
II.3.4.
Mô hình triển khai....................................................................................17
II.4. Khảo sát các nhà cung cấp dịch vụ điện toán đám mây.............................18
II.5. Ví dụ minh họa đăng kí dịch vụ Cloud computing....................................19
II.5.1.
Đăng kí AWS của Amazon........................................................................19
II.5.2.
Đăng kí GAE của Google.......................................................................24
III.
Các ngôn ngữ PHP,HTML,CSS, JavaScript và cơ sở dữ liệu MSQL.................27
III.1. Ngôn ngữ lập trình PHP...............................................................................27
III.1.1. Giới thiệu.................................................................................................27
III.1.2. Kiểu dữ liệu trong PHP...........................................................................27
III.1.3. Hàm trong PHP.......................................................................................30
III.2. Các ngôn ngữ lập trình HTML,CSS,JavaScript..........................................31
III.2.1. Ngôn ngữ lập trình HTML.......................................................................31
III.2.2. Ngôn ngữ lập trình CSS...........................................................................32
III.2.3. Ngôn ngữ lập trình JavaScipt..................................................................32
III.3. Cơ sở dữ liệu MySQL..................................................................................35

ĐẶC TẢ VÀ THIẾT KẾ HỆ THỐNG........................................................36
I.

Đặc tả các chức năng...............................................................................................36

I.1.
Yêu cầu chung.............................................................................................36
I.2.
Đặc tả từng chức năng.................................................................................38
I.2.1.
Chức năng soạn thảo -biên dịch..............................................................38
I.2.2.
Chức năng phản hồi –thảo luận............................................................40
I.2.3.
Chức năng mở rộng:Trang giới thiệu –hướng dẫn và tổng hợp bài tập. 42
II.
Thiết kế hệ thống.................................................................................................43
II.1. Chức năng soạn thảo và biên dịch...............................................................43
II.2. Chức năng phản hồi và thảo luận................................................................45

i


TRIỂN KHAI CHƯƠNG TRÌNH VÀ MINH HỌA KẾT QUẢ...............47
I. Môi trường triển khai...............................................................................................47
II.
Triển khai và minh họa kết quả...........................................................................47
II.1. Chức năng Soạn thảo và biên dịch..............................................................47
II.1.1.
Trang chủ.................................................................................................49
II.1.2.
Kết quả chức năng soạn thảo...................................................................50
II.1.3.
Biên dịch khi soạn thảo mã đúng.............................................................50
II.1.4.

Biên dịch khi soạn thảo mã sai................................................................54
II.2. Chức năng phản hồi và thảo luận................................................................56
II.3. Trang giới thiệu –hướng dẫn và tổng hợp bài tập.......................................57
II.4. Minh họa ví dụ cho phép thảo luận trên dịch vụ đám mây của Google.....59

TỔNG KẾT....................................................................................................64
I.

Kết luận....................................................................................................................64
I.1.
Thành công...................................................................................................64
I.2.
Hạn chế.........................................................................................................64
I.3.
Hướng phát triển..........................................................................................64

DANH MỤC HÌNH

ii


Mục lục

iii

Hình 1 .Sơ đồ của một trình biên dịch.......................................................................................8
Hình 2Kiểm tra cài đặt phiển bản mới cho GCC....................................................................12
Hình 3.Mã chương trình file input.c........................................................................................13
Hình 4.Kết quả chạy file input bằng GCC trên Ubuntu 10.10................................................13
Hình 5 .Sơ đồ mô tả các dịch vụ Cloud computing................................................................15

Hình 6.Trang đăng kí dịch vụ AWS.........................................................................................22
Hình 7.Đăng kí thành công dịch vụ AWS...............................................................................23
Hình 8.Show key trong Access Credentials...........................................................................23
Hình 9.Trang chủ Đăng nhập GAE.........................................................................................24
Hình 10.Trang tạo ứng dụng GAE...........................................................................................25
Hình 11.Trang xác nhận số điện thoại của GAE.....................................................................26
Hình 13.Trang kết quả ứng dụng mà bạn đã tạo.....................................................................26
Hình 14.Kịch bản hệ thống......................................................................................................37
Hình 15.Use Case chức năng soạn thảo-biên dịch..................................................................39
Hình 16.Biểu đồ trình tự quá trình soạn thảo-biên dịch.........................................................40
Hình 17.Use Case chức năng phản hồi thảo luận....................................................................41
Hình 18.Biểu đồ trình tự của quá trình phản hồi thảo luận....................................................42
Hình 19.Use Case giới thiệu-hướng dẫn và tổng hợp bài tập.................................................43
Hình 20.Sơ đồ quá trình xử lí mã của hệ thống......................................................................44
Hình 21 Khởi động XAMPP trên Ubuntu 10.10.....................................................................47
Hình 22 Sơ đồ triển khai chức năng soạn thảo-biên dịch.......................................................48
Hình 23 Trang chủ website......................................................................................................49
Hình 24.Soạn thảo mã bài tập tính căn bậc 2 của 4................................................................51
Hình 25.Kết quả bài tập tính căn bậc 2 của 4.........................................................................52
Hình 26 Soạn thảo bài tính căn bậc 2 của 16..........................................................................53
Hình 27.Kết quả bài tính căn bậc 2 của 16.............................................................................54
Hình 28.Soạn thảo mã sai........................................................................................................55
Hình 29.Thông báo lỗi khi mã sai............................................................................................55
Hình 30.Sơ đồ triển khai chức năng phản hồi-thảo luận........................................................56
Hình 31.Minh họa chức năng phản hồi thảo luận...................................................................57
Hình 38.Trang giới thiệu..........................................................................................................58
Hình 39.Trang hướng dẫn sử dụng..........................................................................................58
Hình 40.Trang thư viện bài tập ngôn ngữ C............................................................................59
Hình 32.Upload ứng dụng lên GAE trong cửa sổ cmd...........................................................61
Hình 33.Quá trình upload lên GAE.........................................................................................61

Hình 34.Đã upload thành công chức năng thảo luận lên GAE...............................................62
Hình 35.Giao diện chức năng thảo luận trên GAE.................................................................62
Hình 36.Khách thảo luận trên GAE.........................................................................................63
Hình 37.Thành viên thảo luận trên GAE.................................................................................63


GIỚI THIỆU
Ngày nay, thế giới đang chứng kiến sự bùng nổ về công nghệ thông tin, cùng
sự gia tăng số lượng người sử dụng internet. Vì vậy, internet trở thành mảnh đất màu
mỡ, nơi các doanh nghiệp, tổ chức, cá nhân khai thác triệt để để của mình tới cộng
đồng người dùng đông đảo này. Để có thể quản lý được nguồn dữ liệu đó, ban đầu
các doanh nghiệp phải đầu tư, tính toán rất nhiều loại chi phí như chi phí cho phần
cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảo trì, sửa chữa, … Ngoài
ra họ còn phải tính toán khả năng mở rộng, nâng cấp thiết bị; phải kiểm soát việc bảo
mật dữ liệu cũng như tính sẵn sàng cao của dữ liệu.Từ một bài toán điển hình như
vậy, chúng ta thấy được rằng nếu có một nơi tin cậy giúp các doanh nghiệp quản lý
tốt nguồn dữ liệu đó, các doanh nghiệp sẽ không còn quan tâm đến cơ sở hạ tầng,
công nghệ mà chỉ tập trung chính vào công việc kinh doanh của họ thì sẽ mang lại cho
họ hiệu quả và lợi nhuận ngày càng cao hơn.Thuật ngữ “cloud computing” ra đời bắt
nguồn từ một trong những hoàn cảnh như vậy.
Thuật ngữ “cloud computing” còn được bắt nguồn từ ý tưởng đưa tất cả mọi
thứ như dữ liệu, phần mềm, tính toán, … lên trên mạng Internet. Chúng ta sẽ không
còn trông thấy các máy PC, máy chủ của riêng để lưu trữ dữ liệu, phần mềm nữa mà
chỉ còn một số các “máy chủ ảo” tập trung ở trên mạng. Các “máy chủ ảo” sẽ cung
cấp các dịch vụ giúp cho chúng ta có thể quản lý dữ liệu dễ dàng hơn, họ sẽ chỉ trả chi
phí cho lượng sử dụng dịch vụ của mình , mà không cần phải đầu tư nhiều vào cơ sở
hạ tầng cũng như quan tâm nhiều đến công nghệ.
Bên cạnh đó ,nhu cầu phát triển rất lớn của nghành công nghệ phần mềm mà số
lượng những người muốn học các ngôn ngữ lập trình nói chung và ngôn ngữ lập trình
C nói riêng ngày càng tăng cao .Do đó chọn đề tài thực hiện tốt nghiệp“Tìm hiểu điện

toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến “sẽ là một công việc
rất hữu ích và có ý nghĩa.Nội dung chính của luận văn gồm 3 chương:
Chương 1: Cơ sở lý thuyết.

Lê Văn Diện ,Lớp 06T2

5


-

Trình biên dịch ngôn ngữ C trong Linux

-

Công nghệ Cloud computing

-

Ngôn ngữ lập trình web

Chương 2: Đặc tả và thiết kế hệ thống
-

Đặc tả yêu cầu chức năng

-

Thiết kế hệ thống


Chương 3: Triển khai và minh họa kết quả
-

Môi trường triển khai và công cụ sử dụng

-

Triển khai và minh họa kết quả từng chức năng

Tổng kết
-

Kết luận, đánh giá

-

Hướng phát triển của đề tài

Kết thúc luận văn là phần phụ lục, danh mục các tài liệu tham khảo, tóm lược
lại những vấn đề đã trình bày trong luận văn.

Lê Văn Diện ,Lớp 06T2

6


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

CHƯƠNG 1


CƠ SỞ LÝ THUYẾT
.I
.I.1.

Trình biên dịch
Định nghĩa trình biên dịch
Trình biên dịch, còn gọi là phần mềm biên dịch, compiler, là một chương trình

máy tính làm công việc dịch một chuỗi các câu lệnh được viết bằng một ngôn ngữ lập
trình (gọi là ngôn ngữ nguồn hay mã nguồn), thành một chương trình tương đương
nhưng ở dưới dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích) và thường là
ngôn ngữ ở cấp thấp hơn, như ngôn ngữ máy. Chương trình mới được dịch này gọi
mã đối tượng.
Hầu hết các trình biên dịch sẽ chuyển dịch mã nguồn viết trong một ngôn ngữ
cấp cao thành mã đối tượng hay ngôn ngữ máy mà có thể được thi hành trực tiếp bởi
một máy tính hay bởi một máy ảo. Dù vậy, việc chuyển dịch từ một ngôn ngữ cấp
thấp sang một ngôn ngữ cấp cao hơn cũng có thể xảy ra; quá trình này thường được
hiểu như là bộ biên dịch ngược nếu nó có thể tái tạo lại một chương trình trong ngôn
ngữ cấp cao. Cũng tồn tại các trình biên dịch chuyển đổi từ ngôn ngữ cao này sang
ngôn ngữ cao khác, hay là chuyển đổi sang một ngôn ngữ mà nó cần để tiếp tục xử lý
về sau; những trình biên dịch như vậy được biết như là bộ biên dịch phân tầng.
Các loại trình biên dịch cho kết quả là mã đối tượng thì một cách cơ bản bao
gồm mã máy tăng cường thêm các thông tin về tên vị trí của các ngõ vào và các gọi
ngoài (đến các hàm mà không có sẵn bên trong của nó). Một tập hợp của các tập tin
đối tượng, mà không hẳn được cung cấp từ cùng một trình biên dịch, thì vẫn có thể
được liên kết với nhau để tạo nên các chương trình khả thi cuối cùng cho một người
dùng. Dĩ nhiên, để làm được như vậy thì các tập tin đối tượng đó phải được thiết kế
chung nhau về dạng thức. Thí dụ của kiểu tập đối tượng này là các tập có đuôi là .obj
có thể dùng chung giữa ASM, C/C++, Fortran... hay các tập tin .DLL trong các kiến
trúc Windows dùng chung được cho nhiều ngôn ngữ.


SVTH :Lê Văn Diện ,Lớp 06T2

7


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

Hình 1 .Sơ đồ của một trình biên dịch

.I.2.

Các kiểu trình biên dịch

.I.2.1. Trình biên dịch cùng bản và trình biên dịch chéo bản
Tất cả các trình biên dịch đều hoặc là biên dịch cùng bản hoặc là biên dịch
chéo bản.
Một trình biên dịch có thể sản xuất ra mã chủ định để chạy trên cùng một kiểu
máy tính và một kiểu hệ điều hành như là chạy trên trên máy mà trình biên dịch tự nó
tiến hành được gọi là một trình biên dịch cùng bản.
Một loại khác, trình biên dịch có thể sản xuất ra mã mà được thiết kế để chạy
trên các kiểu máy tính khác hay hệ điều hành khác. Trường hợp này gọi là trình biên
dịch chéo bản. Các trình biên dịch chéo bản thì rất có ích khi gặp một hệ thống phần
cứng mới trong lần đầu tiên. Trình biên dịch chéo bản cũng rất cần khi việc phát triển
phần mềm cho các hệ thống vi điều khiển, mà chúng chỉ có vừa đủ kho lưu trữ cho

SVTH :Lê Văn Diện ,Lớp 06T2

8



Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

mã máy cuối, không đủ để tải trình biên dịch. (như trường hợp dịch chương trình để
chạy trên các palmtop và các điện thoại di động chẳng hạn).
.I.2.2. Số bước chuyển dịch
Tất cả các trình biên dịch thì có thể là một bước hay nhiều bước
 Trình biên dịch một bước: Với loại này, sự chuyển dịch hoàn tất trong một
bước và do đó rất nhanh.
Thí dụ của các trình biên dịch trước đây cho Pascal hay Borland C là trình biên
dịch một bước.
 Các trình biên dịch cần nhiều hơn một bước để hoàn tất gọi là trình biên
dịch nhiều bước. Các kiểu trình biên dịch nhiều bước bao gồm:


Trình biên dịch nguồn sang nguồn là loại trình biên dịch nhận vào mã
nguồn là một ngôn ngữ cấp cao và chuyển dịch thành một ngôn ngữ cấp
cao khác.

Thí dụ: Một trình biên dịch tự động song song hoá sẽ thường xuyên lấy
chương trình trong ngôn ngữ cấp cao ở ngõ vào và chuyển dạng mã nguồn và
chú giải nó với các chú giải mã song song (như OpenMP hay cấu trúc ngôn
ngữ (như các câu lệnh DOALL của Fortran)).


Trình biên dịch phân đoạn biên dịch sang ngôn ngữ ASM của một máy
lý thuyết như là vài tiến hành của Prolog. Loại máy Prolog này còn
được gọi là máy trừu tượng Warren (hay WAM).

Thí dụ: Các trình biên dịch bytecode cho Java, Python và nhiều trình biên dịch

khác nữa là một kiểu con của kiểu này.


Trình biên dịch động hay còn gọi là trình biên dịch JIT sẽ chuyển dịch
các ứng dụng sang bytecode, sau đó, bytecode sẽ được dịch sang mã của
ngôn ngữ máy tương thích trước khi thi hành.

SVTH :Lê Văn Diện ,Lớp 06T2

9


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

Thí dụ: Trình biên dịch JIT được dùng bởi Smalltalk, Java, cũng như dùng bởi
Ngôn ngữ trung gian thông dụng của Microsoft.NET.
.I.2.3. Các đặc tính khác
Đặc biệt, một trình biên dịch có thể có thêm các chức năng sau đây:


Trình biên dịch mã liên kết là loại trình biên dịch cho phép thay thế các

dòng kí tự trong (mã) nguồn bằng các khối mã nhị phân sẵn có. Các khối mã
nhị phân này có thể có nhiều cấp độ khác nhau.
Thí dụ: các trình biên dịch trong hầu hết các kiến trúc của FORTH. Trong thực
tế, một vài trình biên dịch FORTH có thể dịch các chương trình mà không cần
đến hệ điều hành.


Trình biên dịch tăng tiến. Trong trình biên dịch tăng tiến, các hàm riêng


lẻ có thể được dịch trong thời gian thi hành (runtime) mà các hàm này cũng
bao gồm các chức năng thông dịch.
Thí dụ: Kiến trúc dịch tăng tiến xuất hiện từ 1962 và vẫn còn được sử dụng
trong các hệ thống Lisp.


Trình biên dịch đa năng là trình biên dịch có thể được điều chỉnh để tạo

ra mã cho các kiến trúc CPU khác nhau một cách tương đối dễ dàng. Mã đối
tượng làm ra bởi các trình biên dịch này thường có chất lượng kém hơn là các
mã được tạo ra từ các trình biên dịch chỉ chuyên dùng cho đúng loại CPU.
Trình biên dịch đa năng thường cũng là trình biên dịch chéo bản.
Thí dụ: GCC là một loại trình biên dịch đa năng miễn phí rất phổ biến.


Trình biên dịch song song hóa là loại trình biên dịch có khả năng

chuyển đổi một chương trình vào được viết theo kiểu liên tục sang một dạng
thuận tiện trên kiến trúc của máy tính song song.

SVTH :Lê Văn Diện ,Lớp 06T2

10


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

.I.3.


Trình biên dịch GCC trong Linux

.I.3.1. Cú pháp sử dụng
Bộ trình dịch GNU (tiếng Anh: GNU Compiler Collection - thường được viết
tắt thành GCC) là một tập hợp các trình dịch được thiết kế cho nhiều ngôn ngữ lập
trình khác nhau. GCC là trình dịch chính thức của hệ thống GNU, và được hầu hết
các hệ điều hành giống Unix, bao gồm Linux, dòng hệ điều hànhBSD, và Mac OS
X chọn làm trình dịch tiêu chuẩn. GCC đã tương thích với rất nhiều nền tảng kiến
trúc máy tính đa dạng, và được sử dụng rộng rãi như một công cụ làm môi trường
phát triển các phần mềm thương mại, có bản quyền và nguồn đóng
Sử dụng gcc theo syntax: [CODE]% gcc [ tùy chọn | tên file ] ...
Giả sử có 1 file myfile.c khi bạn đánh :% gcc myfile.c.Trong thư mục của sẽ
có thêm file a.out đó là file output mặc định của gcc. Lúc này đã có thể run chương
trình bằng : % ./a.out.
Nhưng nếu compile file tiiếp theo cũng như trên thì file a.out sẽ bị ghi đè bằng
file thứ 2. Để khắc phục bạn chúng ta có thể sử dụng tùy chọn -o để đặt tên file out
put
% gcc -o myout myfile.c.Lúc đó thay vì có a.out sẽ có myout.
Khi compile 1 program, sẽ có những errors nhỏ nhưng gcc sẽ thay sửa chửa
những lỗi này (trừ khi đó là lỗi lớn). Nhưng trên thực tế' mình phải tự sửa các lỗi này
để chương trình sau khi compile là bug-free Bạn sẽ thêm 1 tùy chọn đ1o là -Wall (viết
tắc của Warning All - Thông báo tất cả : % gcc -Wall -o myout myfile.c
Và lúc này đưa vào thông báo lỗi chúng ta sẽ có thể sửa lỗi của mình.Nhưng
với những người lập trình C, có 1 lỗi bất trị đó là Sementation Fault, cho dù compile
với gcc không có lỗi nhưng khi chạy chương trình không được thông báo lỗi này, lý
do ?? Tại vì gcc chỉ check lỗi của syntax ( cú pháp ) chứ không check lỗi chương
trinh. Lúc này sẽ phải nhờ 1 người anh em khác, dó là gdb ( The GNU Debugger ) để
tìm lỗi run-time (TW sẽ viết bài về gdb sau). Muốn gdb hoạt động, phải thêm 1 tùy
chọ đó là –g : % gcc -Wall -g -o myout myfile.c.Lúc này trong myout sẽ có thêm


SVTH :Lê Văn Diện ,Lớp 06T2

11


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

những đoạn mã dùng cho gdb. Khi chúng ta đã sửa xong các lỗi và release software,
chúng ta nên compile lại source code và bỏ tùy chọn -g , điều này sẽ giúp cho chương
trình nhỏ hơn và không ai có thể xem source code của mình .Muốn biết thêm về gcc
một cách đơn giản nhất là “man gcc”
.I.3.2. Ví dụ sử dụng GCC trên Ubuntu 10.10
Bây giờ chúng ta sẽ chạy một ví dụ đơn giản in lên màn hình dòng chữ “Xin
chao” bằng ngôn ngữ lập trình C sử dụng trình biên dịch GCC trên Ubuntu 10.10
Kiểm tra cài đặt phiên bản mới cho GCC:

Hình 2Kiểm tra cài đặt phiển bản mới cho GCC

Mở trình soạn thảo trên ubuntu và soạn thảo chương trình .Lưu lại với file
input.c ở thư mục home.

Hình 3.Mã chương trình file input.c

Chạy chương trình ta sẽ được kết quả

SVTH :Lê Văn Diện ,Lớp 06T2

12



Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

Hình 4.Kết quả chạy file input bằng GCC trên Ubuntu 10.10

.II Công nghệ cloud computing
.II.1. Khái niệm
Hiện nay, chưa có một sự thống nhất về định nghĩa Cloud computing, mỗi tổ
chức hay nhà cung cấp dịch vụ đều đưa ra ý kiến riêng.
Theo WIKIPEDIA: Cloud Computing là điện toán trên nền tảng Internet. Các
Máy Chủ cung cấp tài nguyên, phần mềm, dữ liệu, và các thiết bị khác theo yêu cầu.
Theo Ian Foster: Cloud Computing là mô hình điện toán phân tán có tính co
giãn linh hoạt về mặt kinh tế, là nơi chứa sức mạnh về tính toán, lưu trữ dựa trên nền
tảng và dịch vụ cung cấp. sự ảo hóa tài nguyên và thay đổi linh hoạt để phù hợp với
nhu cầu khách hàng trên Internet.
Theo Rajkumar Buyya:Cloud là một hệ thống phân tán và xử lý song song
gồm nhiều máy tính ảo kết nối với nhau và được cung cấp cho người dùng dựa trên
thỏa thuận giữa nhà cung cấp dịch vụ và người dùng.

.II.2. Lợi ích
Lợi ích về chi phí đầu tư:Thông thường người dùng hoặc các doanh nghiệp
phải đầu tư vào nhiều khoản như: mua ứng dụng, đầu tư cho phần cứng để có thể
triển khai được ứng dụng đó, chi phí bảo trì phần cứng và phần mềm, chi phí nâng
cấp thiết bị, thuê đội ngũ quản lý, …đôi khi nhiều ứng dụng và thiết bị có giá đắt đỏ
được mua về tuy nhiên tần suất sử dụng không cao, khả năng đáp ứng kém, đó là một
sự lãng phí lớn.
Với điện toán đám mây, người dùng và các doanh nghiệp chỉ các thiết bị cấu
hình đủ để duyệt web, được kết nối với internet là có thể sử dụng được các tài
nguyên mà họ đang có nhu cầu. Không cần tốn quá nhiều chi phí, nhưng người dùng
SVTH :Lê Văn Diện ,Lớp 06T2


13


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

và các doanh nghiệp có thể sử dụng các tài nguyên tốt nhất với khả năng đáp ứng cao
và chỉ phải trả chi phí cho lưu lượng mà họ đã sử dụng (thường tính bằng thời gian sử
dụng ứng dụng).
Công nghệ ảo hóa :Ảo hóa làm tăng năng xử lý bằng cách kết hợp các server
và các thiết bị lưu trữ. Công nghệ ảo hóa đã tạo nên tính linh động của điện toán đám
mây. Nếu các nhà cung cấp dịch vụ truyền thống chỉ cung cấp cố định tài nguyên và
năng lực xử lý đúng như ràng buộc của hai bên (thường thấp hơn so với hợp đồng),
thì điện toán đám mây có khả năng cung cấp thêm tài nguyên, năng lực xử lý một
cách nhanh chóng chỉ sau những thao tác cấu hình đơn giản và khách hàng chỉ phải
trả chi phí đúng theo lưu lượng mà họ sử dụng. Người dùng hoặc các doanh nghiệp có
thể tiếp cận với các tài nguyên tính toán và lưu trữ khổng lồ.
Ngoài ra, xét ở góc độ các lập trình viên và các nhà phát triển ứng dụng, điện
toán đám mây cung cấp đầy đủ các công cụ hỗ trợ trong quá trình phát triển một ứng
dụng như các cơ sở dữ liệu, các máy chủ ứng dụng, hệ thống quản lý source code, hệ
thống quản lý thay đổi, các công cụ lần vết tìm lỗi, … mà không cần đầu tư quá
nhiều. Cho phép các lập trình viên và nhà phát triển ứng dụng tạo ra các ứng dụng
web tùy chỉnh và phát hành nó một cách nhanh chóng , bỏ qua nhiều giai đoạn rắc rối
như việc thiết lập hosting, servers, databases, …

.II.3. Các loại hình dịch vụ và mô hình triển khai
Các mô hình dịch vụ của điện toán đám mây khá da dạng, nhưng phổ biến nhất
có thể được phân thành 3 nhóm: dịch vụ hạ tầng (IaaS), dịch vụ nền tảng (PaaS) và
dịch vụ phần mềm (SaaS).

SVTH :Lê Văn Diện ,Lớp 06T2


14


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

Hình 5 .Sơ đồ mô tả các dịch vụ Cloud computing

.II.3.1. Dịch vụ hạ tầng IaaS (Infrastructure as a Service)
Dịch vụ hạ tầng IaaS cung cấp dịch vụ cơ bản, cung cấp năng lực tính toán,
không gian lưu trữ, kết nối mạng tới khách hàng. Khách hàng (cá nhân hoặc tổ chức)
có thể sử dụng tài nguyên hạ tầng này để đáp ứng nhu cầu tính toán hoặc cài đặt ứng
dụng riêng tùy theo mục đích sử dụng. Với dịch vụ này khách hàng làm chủ hệ điều
hành, không gian lưu trữ và các ứng dụng do khách hàng cài đặt. Khách hàng điển
hình của dịch vụ IaaS có thể là mọi đối tượng cần tới một máy tính và tự cài đặt ứng
dụng của mình.
Ví dụ điển hình về dịch vụ này là dịch vụ EC2 của Amazon. Khách hàng có thể
đăng ký sử dụng một máy tính ảo trê dịch vụ của Amazon và lựa chọn một hệ thống
điều hành (ví dụ, Windows hoặc Linux) và tự cài đặt ứng dụng của mình.
.II.3.2. Dịch vụ nền tảng PaaS (Platform as a Service)
Dịch vụ nền tảng PaaS cung cấp nền tảng điện toán cho phép khách hàng phát
triển các phần mềm, phục vụ nhu cầu tính toán hoặc xây dựng thành dịch vụ trên nền
tảng đám mây đó. Dịch vụ PaaS có thể được cung cấp dưới dạng các ứng dụng lớp
giữa (middleware), các ứng dụng chủ (application server) cùng các công cụ lập trình
SVTH :Lê Văn Diện ,Lớp 06T2

15


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến


với ngôn ngữ lập trình nhất định để xây dựng ứng dụng. Dịch vụ PaaS cũng có thể
được xây dựng riêng và cung cấp cho khách hàng thông qua API riêng. Khách hàng
xây dựng ứng dụng và tương tác với hạ tầng điện toán đám mây thông qua API đó. Ở
mức PaaS, khách hàng không quản lý nền tảng đám mây hay các tài nguyên lớp như
hệ điều hành, lưu giữ ở lớp dưới. Khách hàng điển hình của dịch vụ PaaS chính là các
nhà phát triển ứng dụng.
Dịch vụ App Engine của Google là một dịch vụ PaaS điển hình, cho phép
khách hàng xây dựng các ứng dụng web với môi trường chạy ứng dụng và phát triển
dựa trên ngôn ngữ lập trình Java hoặc Python.
.II.3.3. Dịch vụ phần mềm SaaS (Software as a Service)
Dịch vụ SaaS cung cấp các ứng dụng hoàn chỉnh như một dịch vụ theo yêu cầu
cho nhiều khách hàng. Khách hàng lựa chọn ứng dụng phù hợp với nhu cầu và sử
dụng mà không quan tâm tói hay bỏ công sức quản lý tài nguyên tính toán bên dưới.
Dịch vụ SaaS nổi tiếng nhất phải kể đến Salesforce.com với các ứng dụng cho
doanh nghiệp mà nổi bật nhất là CRM. Các ứng dụng SaaS cho người dùng cuối phổ
biến là các ứng dụng office Online của Microsoft hay Google Docs của Google.
.II.3.4. Mô hình triển khai
Đám mây “công cộng” :Mô hình đầu tiên được nói đến khi đề cập tới điện toán
đám mây chính là mô hình đám mây công cộng (public cloud). Đây là mô hình mà hạ
tầng điện toán đám mây được một tổ chức sỡ hữu và cung cấp dịch vụ rộng rãi cho tất
cả các khách hàng thông qua hạ tầng mạng internet hoặc các mạng công cộng diện
rộng. Các ứng dụng khác nhau chia sẻ chung tài nguyên tính toán, mạng và lưu trữ.
Do vậy, hạ tầng điện toán đám mây được thiết kế để đảm bảo cô lập về dữ liệu giữa
các khách hàng và tách biệt về truy cập.
Các dịch vụ của đám mây công cộng hướng tới số lượng khách hàng lớn nên
thường có năng lực về hạ tầng cao, đáp ứng nhu cầu tính toán linh hoạt, đem lại chi
phí thấp cho khách hàng. Do đó khách hàng của các dịch vụ trên đám mây công cộng
sẽ bao gồm tất cả các tầng lớp, trong đó khách hàng là cá nhân và doanh nghiệp nhỏ


SVTH :Lê Văn Diện ,Lớp 06T2

16


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

sẽ được lợi thế trong việc dễ dàng tiếp cận các ứng dụng công nghệ cao, chất lượng
mà không phải đầu tư ban đầu, chi phí sử dụng thấp, linh hoạt.
Đám mây “riêng”:Đám mây riêng (private cloud) là mô hình trong đó hạ tầng
đám mây được sở hữu bởi một tổ chức và phục vụ cho người dùng của tổ chức đó.
Đám mây riêng có thể được vận hành bởi một bên thứ ba và hạ tầng đám mây có thể
được đặt bên trong hoặc bên ngoài tổ chức sở hữu (tại bên thứ ba kiêm vận hành hoặc
thậm chí là một bên thứ tư).
Đám mây riêng được các tổ chức, doanh nghiệp lớn xây dựng cho mình nhằm
khai thác ưu điểm về công nghệ và khả năng quản trị của điện toán đám mây. Với
đám mây riêng, các doanh nghiệp tối ưu được hạ tầng IT của mình, nâng cao hiệu quả
sử dụng, quản lý trong cấp phát và thu hồi tài nguyên, qua đó giảm thời gian đưa sản
phẩm sản xuất, kinh doanh ra thị trường.
Đám mây “chung”:Đám mây chung (community cloud) là mô hình trong đó hạ
tầng đám mây được chia sẻ bởi một số tổ chức cho cộng đồng người dùng trong các
tổ chức đó. Các tổ chức này do đặc thù không tiếp cận với các dịch vụ của đám mây
công cộng và chia sẻ chung một hạ tầng điện toán đám mây để nâng cao hiệu quả đầu
tư và sử dụng.
Đám mây “lai”:Mô hình đám mây lai (hybrid cloud) là mô hình bao gồm hai
hoặc nhiều hơn các đám mây trên tích hợp với nhau. Mô hình đám mây lai cho phép
chia sẻ hạ tầng hoặc đáp ứng nhu cầu trao đổi dữ liệu.

.II.4. Khảo sát các nhà cung cấp dịch vụ điện toán đám mây
Sau đây là những hổ trợ cho Developer


HDH

Amazon

Salesfore

GAE

Microsoft

Rackspace

















Không


Không

Window
HDH Mac

SVTH :Lê Văn Diện ,Lớp 06T2

17


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

OS
HDH







Không



.NET






Không





Java











Python







Không




Ruby





Không



Không

PHP





Không



Không

Flex

Không




Không

Không

Không

SQL/ SQL



Không

Không







Không



Không




Không







Không

Linux/Other

Server
MySQL
Oracle y
Miễn phí sử
dụng

Giải pháp được lựa chọn
Theo nhu cầu thì mô hình triển khai là Public Cloud (đám mây chung).

.II.5. Ví dụ minh họa đăng kí dịch vụ Cloud computing
.II.5.1. Đăng kí AWS của Amazon
Amazon Web Services là tập hợp các dịch vụ cung cấp cho người lập trình có
khả năng truy cập tới hạ tầng kiến trúc tính toán kiểu sẵn sàng-để-sử dụng (ready-touse) của Amazon. Các máy tính có nền tảng vững chắc đã được xây dựng và tinh chế
qua nhiều năm của Amazon bây giờ là có thể cho phép bất cứ ai cũng có quyền cập
tới Internet. Amazon cung cấp một số dịch vụ Web nhưng trong loạt bài viết này chỉ
tập trung vào các dịch vụ khối hợp nhất (building-block) cơ bản, cái mà đáp ứng được
SVTH :Lê Văn Diện ,Lớp 06T2


18


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

một số yêu cầu cốt lõi của hầu hết các hệ thống như: lưu trữ, tính toán, truyền thông
điệp và tập dữ liệu.
Bạn có thể xây dựng các ứng dụng phức tạp và gồm nhiều phần khác nhau
bằng cách sử dụng các chức năng phân tầng với các dịch vụ đáng tin cậy, hiệu quả
khối hợp nhất được cung cấp bởi Amazon. Các dịch vụ Web mà tồn tại bên trong đám
mây phía bên ngoài môi trường của bạn và có khả năng thực hiện là rất cao.
Bạn sẽ trả chỉ dựa trên những cái bạn sử dụng mà không cần phải trả trước các
chi phí và vốn đầu tư ban đầu. Bạn không cần phải mất chi phí cho bảo trì bởi vì phần
cứng được duy trì và phục vụ bởi Amazon.
Cơ sở hạ tầng ảo là cỗ máy san đường khổng lồ trong thế giới chịu chi phối từ
web ngày nay. Trong một phút, bạn có thể nhanh chóng kết hợp thành một nền tảng
hạ tầng mà có thể bạn sẽ mất hàng tuần để làm việc đó trong một cửa hàng công nghệ
thông tin trong thế giới thực. Điểm quan trọng là, cơ sở hạ tầng là mềm dẻo và có thể
thay đổi lên hay xuống tùy theo nhu cầu. Các công ty trên thế giới đang chuẩn bị để
sử dụng tính toán mềm dẻo này (xem hộp bên cạnh).
Các thành phần chính của hạ tầng cơ sở của trang Web này, cái mà cung cấp
hầu hết các khối xây dựng cơ bản phổ biến cần thiết cho hầu hết các ứng dụng không
tầm thường:
 Lưu trữ (Storage)
Mọi người đều cần phải lưu trữ — cho các tệp, các tài liệu, các dữ liệu tải về
của người dùng hoặc các bản sao lưu. Có thể tiến hành lưu trữ bất kỳ các ứng dụng
cần thiết của bạn trong Amazon Simple Storage Service (S3) và nhận được các lợi ích
với nó như có khả năng mở rộng, đáng tin cậy và với mức chi phí thấp cho việc lưu
trữ.
 Tính toán (Computing)


SVTH :Lê Văn Diện ,Lớp 06T2

19


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

Amazon Elastic Compute Cloud (EC2) cung cấp khả năng để mở rộng tài
nguyên tính toán của bạn lớn lên hoặc giảm xuống dựa trên nhu cầu và tạo ra khả
năng cung cấp dịch vụ mới một cách dễ dàng.
 Gửi thông điệp (Messaging)
Thực hiện tách riêng các thành phần ứng dụng của bạn bằng cách sử dụng khả
năng không giới hạn của việc truyền thông điệp được cung cấp bởi Amazon Simple
Queue Service (SQS).
 Tập hợp dữ liệu (Datasets)
Amazon SimpleDB (SDB) cung cấp khả năng mở rộng, lập chỉ mục, khả năng
lưu trữ mà không cần bảo trì, cùng với việc thực hiện xử lý và truy vấn với tập hợp
dữ liệu.
Amazon EC2 là dịch vụ Web cho phép bạn yêu cầu các máy ảo trong vòng một
vài phút và dễ dàng thay đổi khả năng của bạn hoặc tải xuống dựa trên nhu cầu. Bạn
chỉ cần phải trả chi phí cho khoảng thời gian mà bạn sử dụng. Nếu bạn muốn tăng khả
năng tính toán của bạn nên, bạn có thể nhanh chóng tiếp cận khởi tạo máy áo và sau
đó chấm dứt chúng khi mà nhu cầu của bạn giảm đi.
Những trường hợp mà dựa trên Linux® và có thể chạy trên bất kỳ ứng dụng
nào hoặc phần mềm nào bạn muốn. Bạn có thực hiện điều khiển cho từng trường hợp
cụ thể. Môi trường của EC2 là được xây dựng trên cùng mã nguồn mở Xen
hypervisor, cái được phát triển tại trường Đại học Cambridge. Amazon cho phép bạn
tạo ra hình ảnh máy Amazon (AMIs) cái thực hiện hành động như là các khuôn mẫu
cho các ví dụ của bạn. Truy cập với các ví dụ có thể được điều khiển bằng việc xác

định được các quyền cho phép. Bạn cũng có thể làm bất cứ cái gì bạn muốn với
chúng tuy chỉ có một hạn chế duy nhất là yêu cầu bạn cần sử dụng dựa trên Linux.
Thời gian gần đây, khi mà Open Solaris được công bố trong một quan hệ đối tác với
Sun Microsoftsystem, nhưng phần lớn các thương mại miễn phí và có sẵn được xây
dựng cho EC2 đều dựa trên nền tảng Linux.

SVTH :Lê Văn Diện ,Lớp 06T2

20


Đề tài: Tìm hiểu điện toán đám mây và xây dựng trình soạn thảo lập trình C trực tuyến

Amazon EC2 cung cấp chính xác quy mô máy tính cái cho phép dễ dàng để
thay đổi quy mô tài nguyên tính toán của bạn lên và xuống. Bạn hoàn toàn kiểm soát
được môi trường tính toán cái mà chạy trong trung tâm dữ liệu của Amazon. Amazon
cung cấp năm kiểu của các máy chủ; để cho phép bạn chọn lựa một trong các loại này
phù hợp với ứng dụng cần thiết của bạn. Các máy chủ cung cấp từ loại đơn lõi x86
đến loại tám lõi x86_64. Bạn có thể thay thế các trường hợp trong các mô hình địa lý
khác nhau hoặc trong các vùng mà từ chỗ đảm bảo thực hiện đến chỗ có thể thất bại.
Amazon cũng chỉ dẫn khái niệm của địa chỉ IP thay đổi cho phép làm việc với địa chỉ
động.

Tiến hành đăng kí tại địa chỉ
Hình ảnh minh họa quá trình đăng kí

Hình 6.Trang đăng kí dịch vụ AWS

SVTH :Lê Văn Diện ,Lớp 06T2


21


×