ĐẠ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: [email protected]
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 TỐ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 đã
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
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
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.
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ơ đồ q 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.Q trình upload lên GAE.........................................................................................61
tố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
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
ngồ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ó đ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ữ.
Đề tài: Tìm hiểu điện tố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 để hồ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
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 tố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.
SVTH :Lê Văn Diện ,Lớp 06T2
11
Đề tài: Tìm hiểu điện tố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
13
Đề tài: Tìm hiểu điện tố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 tố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 ngun tính tốn và lưu trữ khổng lồ.
Ngồ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 tố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
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 tố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 ngun 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 tố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 tố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 ngun tính tố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 tố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ỏ
HDH
Amazon
Salesfore
GAE
Microsoft
Rackspace
Có
Có
Có
Có
Có
Có
Có
Có
Khơng
Có
Khơng
Có
Có
Java
Có
Có
Có
Có
Có
Python
Có
Có
Có
Khơng
Có
Khơng
Khơng
Khơng
SQL/ SQL
Có
Khơng
Khơng
Có
Có
Có
Khơng
Có
Khơng
Có
18
Đề tài: Tìm hiểu điện tố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 tố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 ngồ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 tố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)
đị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 tố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 ngun tính tốn của bạn lên và xuống. Bạn hồn tồn kiểm sốt
được mơi trường tính tố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ỉ http://www.amazon.com
Hình ảnh minh họa q trình đăng kí
Hình 6.Trang đăng kí dịch vụ AWS
SVTH :Lê Văn Diện ,Lớp 06T2