1. Trang chủ
  2. » Công Nghệ Thông Tin

xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++

109 119 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 109
Dung lượng 1,64 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ây là quá trình có ho c xu t giá tr các bi n trên mã ngu n ch ng trình... th ng nhúng.. B ng sau đây li t kê nh ng trình g l i C/C++ ph bi n: Fortran, Java BSD Objective-C, Free Pascal,

Trang 2

TR NG I H C KHOA H C T NHIÊN KHOA CÔNG NGH THÔNG TIN

Trang 3

i

NH N XÉT C A GIÁO VIÊN H NG D N

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

TP H Chí Minh, ngày … tháng …… n m 2012 Giáo viên h ng d n

Trang 4

ii

NH N XÉT C A GIÁO VIÊN PH N BI N

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

……… Khóa lu n đáp ng yêu c u c a Khóa lu n c nhân CNTT

TP H Chí Minh, ngày … tháng …… n m 2012 Giáo viên ph n bi n

Trang 5

i

L I C M N

Chúng em xin chân thành c m n Khoa Công ngh Thông tin, tr ng i

h c Khoa h c T nhiên TP H Chí Minh đã t o đi u ki n cho chúng em th c hi n

đ tài khóa lu n t t nghi p này

Chúng em xin g i l i c m n sâu s c đ n PGS.TS Tr n an Th , ng i đã

tr c ti p h ng d n và t n tình ch b o chúng em trong su t th i gian th c hi n đ tài Th y đã truy n đ t cho chúng em nhi u ki n th c quan tr ng c ng nh đ nh

h ng đ chúng em có th hoàn thành khóa lu n

Chúng em xin chân thành c m n quý Th y Cô trong Khoa đã cho chúng em

nh ng ki n th c quý báu trong su t th i gian khóa h c, cho chúng em m t n n t ng

lý thuy t v ng ch c và nh ng k thu t c b n thi t y u c bi t chúng em mu n

c m n anh ng Hoàng H i và anh Tr n Thanh H i đã giúp đ t n tình trong quá trình th c hi n đ tài

Chúng con xin chân thành c m n b m , anh ch em và t t c ng i thân trong gia đình đã t o m i đi u ki n t t nh t, đ ng viên khích l chúng con trong quá trình h c t p nói chung và quá trình làm khóa lu n t t nghi p nói riêng

M c dù chúng em đã c g ng hoàn thành lu n v n trong ph m vi và kh n ng cho phép, nh ng ch c ch n s không tránh kh i nh ng thi u sót, kính mong s c m thông và t n tình ch b o c a quý Th y Cô và các b n

Tp H Chí Minh, tháng 6 n m 2012

Nhóm sinh viên Nguy n ình V nh An - Nguyên Kha

Trang 6

 Nghiên c u hi n tr ng và xây d ng mô hình

 Tìm hi u công ngh và xây d ng ng d ng minh h a

N i dung đ tài:

N i dung và yêu c u đ tài

 Nghiên c u và t ng h p hi n tr ng công c h tr tìm l i trong các môi tr ng phát tri n tích h p trên môi tr ng truy n th ng desktop và môi tr ng web

 Tìm hi u các công c h tr l p trình web, đ c bi t là các k thu t web th i gian

th c; bên c nh đó là các th vi n và b khung phát tri n ng d ng cho các ng

d ng web d ng đ n trang

 xu t mô hình công c h tr tìm l i ng d ng C/C++ trên web

 Xây d ng công c minh h a h tr tìm l i ng d ng C/C++ trên môi tr ng web

Trang 7

iii

Ph ng pháp th c hi n

 T n d ng các tài li u thi t k c a môi tr ng phát tri n tích h p đã có trên desktop đ nghiên c u mô hình các công c h tr tìm l i

 Phát tri n h th ng d a trên các thành ph n mi n phí và mã ngu n m

 Th c hi n báo cáo ti n đ h ng tu n v i giáo viên h ng d n

 Tài li u hóa các b c th c hi n, tài li u tham kh o và các kh o sát làm c s cho khóa lu n

K t qu khóa lu n:

 Xây d ng thành công mô hình và công c minh h a cung c p ch c n ng h tr tìm l i ng d ng C/C++ trên môi tr ng web S n ph m cho phép đi u khi n quá trình th c thi, đ i chi u t ng ng v trí trên mã ngu n, kh o sát các bi n c c b trong hàm hi n hành

 Báo cáo t ng h p hi n tr ng các công c h tr tìm l i ng d ng C/C++, các k thu t t ng tác web th i gian th c và các h ng phát tri n trong t ng lai

o Tu n 1: Th nghi m kh thi k t n i th i gian th c gi a trình duy t và máy

ch là đi u ki n kh thi cho phép công c h tr tìm l i trên web có th

ho t đ ng;

o Tu n 2, 3, 4: Xây d ng th nghi m đ n gi n cho phép th c hi n tìm l i

ng d ng C/C++

Trang 8

iv

 01/02/2012 – 31/03/2012: Xây d ng mô hình

o Tu n 1, 2: Tìm hi u mô hình Eclipse;

o Tu n 3, 4, 5: Tìm hi u gdb và các k thu t web th i gian th c;

o Tu n 6, 7, 8: Xây d ng mô hình công c h tr tìm l i

 01/04/2012 – 01/06/2012: Phát tri n ng d ng minh h a

o Tu n 1, 2, 3: Xây d ng các thành ph n c a máy ch web;

o Tu n 4, 5, 6: Xây d ng các thành ph n x lý trên trình duy t;

Nguy n ình V nh An Nguyên Kha



Trang 9

v

M C L C

CH NG 1 M U 1

1.1 Gi i thi u chung 1

1.2 Môi tr ng phát tri n tích h p trên web 2

1.3 M c tiêu nghiên c u 2

1.4 i t ng nghiên c u 3

1.5 Ph m vi đ tài 3

CH NG 2 T NG QUAN CÁC CÔNG C H TR TÌM L I 4

2.1 L ch s công c h tr tìm l i 4

2.2 Công c h tr tìm l i trong môi tr ng phát tri n tích h p h tr ng d ng C/C++ 5

2.3 Công c trên web h tr tìm l i 8

CH NG 3 TRÌNH G L I H TR NG D NG C/C++ VÀ WEB TH I GIAN TH C 12

3.1 Trình g l i h tr ng d ng C/C++ 12

3.2 K thu t nh p xu t b t đ ng b .16

3.3 JavaScript 19

3.4 Web th i gian th c 20

3.5 Node.js – Nh p xu t b t đ ng b và l p trình h ng s ki n 23

3.6 Công c h tr tìm l i c a Eclipse 25

CH NG 4 MÔ HÌNH CÔNG C TRÊN WEB H TR TÌM L I NG D NG C/C++ 29

4.1 Ki n trúc h th ng 29

Trang 10

vi

4.2 Thi t k phân h máy ch .34

4.3 Thi t k phân h trình duy t 40

4.4 Giao th c kênh REST 53

4.5 Giao th c kênh Socket 55

4.6 Khung nhìn 57

CH NG 5 CÀI T VÀ TRI N KHAI H TH NG 60

5.1 T ng quan h th ng 60

5.2 Cài đ t phân h máy ch .60

5.3 Cài đ t phân h trình duy t 64

5.4 Tri n khai h th ng 71

CH NG 6 K T QU VÀ H NG PHÁT TRI N 74

6.1 K t qu khóa lu n 74

6.2 H ng phát tri n 76

TÀI LI U THAM KH O 80

PH L C .82

A.1 M t s gi i pháp cho phép máy ch chuy n d li u đ n trình duy t ch đ ng 82

A.2 M t s s đ tu n t khác trong quá trình th c thi ng d ng 84

A.3 Các tài nguyên và ph ng th c REST 88

A.4 Các s ki n kênh Socket 89

A.5 Các th vi n h tr JavaScript 91

Trang 11

2 Breakpoint Cho phép d ng ng d ng đang th c

thi t i m t v trí trong mã ngu n ho c

Model

Mô hình bi u di n và t ng tác v i các đ i t ng trong các tài li u HTML, XHTML, XML

Trang 12

viii

World Wide Web

10 IDE

Integrated Development Environment

Môi tr ng phát tri n tích h p – h

th ng t ng h p nhi u công c h tr phát tri n ph n m m

11 JSON JavaScript Object

Notation

nh d ng trao đ i d li u đ n gi n

d a trên ngôn ng l p trình JavaScript

th c thi trong call stack

các ng d ng đa lu ng

Ghi chú: các gi i ngh a ti ng Vi t đ c trình bày d a trên Wikipedia

Trang 13

ix

DANH M C CÁC HÌNH

Hình 2-1 Công c h tr tìm l i v i giao di n đ h a 7

Hình 3-1 Giao ti p gi a giao di n đ h a và trình g l i 14

Hình 3-2 Thành ph n giao ti p gdb và gdb thông qua giao ti p máy 16

Hình 3-3 Nh p xu t đ ng b [10] 18

Hình 3-4 Nh p xu t b t đ ng b [10] 18

Hình 3-5 Giao ti p gi a MISession và gdb (Eclipse) [20] 26

Hình 3-6 Giao ti p gi a Giao di n – Debug Model – Target [19] 27

Hình 3-7 S đ l p Debug Model (Eclipse) [19] 28

Hình 4-1 T ng quan công c h tr tìm l i trên môi tr ng web 30

Hình 4-2 T ng quan ki n trúc h th ng 32

Hình 4-3 EventEmitter 33

Hình 4-4 Các thành ph n phía máy ch web 35

Hình 4-5 S đ l p m c chi ti t các thành ph n phía máy ch web 36

Hình 4-6 S đ tu n t quá trình x lý l nh và tr v k t qu 39

Hình 4-7 Các thành ph n phía trình duy t 42

Hình 4-8 S đ l p m c chi ti t các thành ph n phía trình duy t 44

Hình 4-9 S đ tu n t giao ti p l nh gi a Trình duy t – Máy ch – Gdb 48

Hình 4-10 S đ tu n t quá trình th c thi v i đ i t ng Stackframe 49

Hình 4-11 S đ tu n t quá trình th c thi v i thread 50

Hình 4-12 S đ tu n t quá trình c p nh t giá tr bi n 51

Hình 4-13 Máy ch web d ng middleware 53

Hình 4-14 Liên k t gi a Model và View 58

Hình 4-15 Thi t k giao di n công c 58

Hình 4-16 S ki n ng i dùng thay đ i ng c nh th c thi 59

Hình 5-1 Các thành ph n phân h máy ch 61

Hình 5-2 Các thành ph n phân h trình duy t 64

Hình 5-3 Giao di n công c 68

Hình 5-4 Qu n lý th m c và t p tin 69

Trang 14

x

Hình 5-5 Cây th c thi 69

Hình 5-6 Qu n lý breakpoint 69

Hình 5-7 Thanh công c 70

Hình 5-8 Thông tin bi n và bi u th c 70

Hình 5-9 Biên d ch d án 70

Hình 5-10 Nh p xu t chu n 70

Hình 5-11 So n th o mã ngu n 70

Hình 5-12 Giao di n trang gi i thi u th nghi m công c 71

Hình 5-13 Giao di n công c trên máy tính b ng iPad 73

Trang 15

xi

DANH M C CÁC B NG

B ng 2-1 M t s môi tr ng phát tri n tích h p trên web 10

B ng 3-1 M t s trình g l i ph bi n cho C/C++ 12

B ng 3-2 So sánh lldb và gdb 15

B ng 4-1 Vai trò c a trình duy t và máy ch 31

B ng 4-2 S l c giao ti p l nh gi a trình duy t – máy ch 55

B ng 4-3 Danh sách các l nh 56

B ng 4-4 Các s ki n th c thi 57

B ng 5-1 K t qu th nghi m 72

B ng 6-1 B ng so sánh m c tiêu ban đ u và k t qu đ t đ c 75

Trang 16

xii

TÓM T T KHÓA LU N

V i s ph bi n c a đi n toán đám mây, các ng d ng trên desktop đang d n

đ c thay th m t ph n b i các ng d ng web Môi tr ng phát tri n tích h p trên web đang có nh ng b c đ u phát tri n, khóa lu n t t nghi p c a hai sinh viên khóa

2007, ng Hoàng H i và Tr n Thanh H i đã đ a ra ki n trúc c b n c a môi

tr ng phát tri n tích h p d a trên n n t ng web: biên t p mã ngu n, biên d ch và

th c thi

Trong ph m vi c a khóa lu n, chúng em s xây d ng công c trên web có

kh n ng h tr tìm l i – m t trong nh ng thành ph n thi t y u c a m t môi tr ng phát tri n tích h p, giúp cho quá trình phát hi n và s a l i trong ng d ng d dàng

h n M i ngôn ng l p trình có m t s đ c thù riêng nên công c đ c xây d ng trong khóa lu n này t p trung h tr ng d ng vi t b ng ngôn ng C/C++

th c hi n khóa lu n, chúng em th c hi n kh o sát các trình g l i, công

c h tr tìm l i c a môi tr ng phát tri n tích h p h tr C/C++, th nghi m tính

kh thi c a công c trên n n t ng web b ng các k thu t web th i gian th c, đ a ra

mô hình và cài đ t công c trên web h tr tìm l i ng d ng C/C++

N i dung c a khóa lu n bao g m 6 ch ng:

Trang 17

mp3.zing.vn), l u tr và chia s t p tin… k t h p v i đi n toán đám mây [1], các

ng d ng tr c tuy n ngày càng đa d ng h n D i đây là nh ng u đi m c a ng

d ng d a trên n n t ng web so v i môi tr ng desktop truy n th ng:

 Không ph i cài đ t: H u h t các thi t b hi n nay đ u cài đ t m c đ nh ít nh t

m t trình duy t web, do đó khi tri n khai không c n ph i cài đ t thêm b t k

ph n m m nào khác Các thi t b bao g m: máy tính cá nhân, máy tính xách tay, máy tính b ng, đi n tho i thông minh có h tr k t n i Internet;

 Gi m chi phí tri n khai h th ng: Các thi t b trong h th ng ch c n có k t

n i m ng đ n máy ch , gi m đ c chi phí b n quy n cho các ng d ng trên

t ng máy đ n do có th t n d ng các ph n m m (trình duy t, h đi u hành)

Trang 18

2

Trong l nh v c gia công và s n xu t ph n m m, các công c h tr quá trình phát tri n ph n m m, bao g m môi tr ng phát tri n tích h p trên web c ng đang

có s d ch chuy n t ng t Khóa lu n t t nghi p ng Hoàng H i và Tr n Thanh

H i đã xây d ng công c cho phép: so n th o, biên d ch và th c thi ng d ng Các công c phát tri n ph n m m d a trên n n t ng web đang trong giai đo n xây d ng cung c p m t s ch c n ng c b n

1.2 Môi tr ng phát tri n tích h p trên web

B c đ u các nhà phát tri n đã đ a vào ho t đ ng nh ng môi tr ng phát tri n tích h p trên web nh : Cloud91, CodeRun2, eXo Cloud IDE3… Ngoài ra còn

có nh ng công c riêng l nh Ideone4 hay Eclipse đang phát tri n Orion5 trong giai

đo n v n m, tr c m t ch h tr qu n lý t p tin và qu n lý phiên b n mã ngu n

Khóa lu n t t nghi p c a hai sinh viên ng Hoàng H i và Tr n Thanh H i

[2] đã xây d ng ng d ng minh h a cho m t môi tr ng phát tri n ng d ng C/C++

v i các tính n ng: qu n lý t p tin, biên t p mã ngu n, h tr trang trí mã ngu n, xây

d ng cây bi u t ng, biên d ch và th c thi ng d ng v i tham s dòng l nh cho

tr c Nghiên c u này đ xu t xây d ng m t môi tr ng phát tri n tích h p trên web ph c v cho vi c h c t p và gi ng d y l p trình trong môi tr ng đ i h c

1.3 M c tiêu nghiên c u

Các thành ph n chính c a môi tr ng phát tri n tích h p bao g m: trình so n

th o mã ngu n, trình biên d ch (ho c thông d ch) và công c h tr tìm l i Ch c

n ng h tr tìm l i r t c n thi t trong quá trình phát tri n ph n m m, h tr l p trình viên xác đ nh và x lý l i d dàng h n Do đó, chúng em quy t đ nh nghiên c u đ tài xây d ng công c h tr tìm l i cho ng d ng C/C++ trên môi tr ng web M c tiêu c a đ tài bao g m:

Trang 19

3

 Kh o sát tính n ng và n n t ng c a các công c h tr tìm l i ng d ng C/C++ trên môi truy n desktop và web;

 Xây d ng mô hình c a công c h tr tìm l i trên web d a trên nghiên c u

 Công c h tr tìm l i trong các môi tr ng phát tri n ng d ng trên web đã

có bao g m: Cloud9, CodeRun và eXo Cloud IDE;

 N n t ng phát tri n ng d ng web th i gian th c Node.js;

 Áp d ng các m t s m u thi t k truy n th ng trong ngôn ng l p trình k ch

b n JavaScript

1.5 Ph m vi đ tài

Chúng em t p trung kh o sát các tính n ng và xây d ng mô hình cho công

c trên web h tr tìm l i cho ngôn ng l p trình C/C++ Công c xây d ng đ c các tính n ng c b n c a công c h tr tìm l i bao g m:

 Thêm/xóa breakpoint trên mã ngu n, cho phép d ng t i nh ng dòng mã ngu n xác đ nh tr c;

 Th c thi theo t ng dòng trên mã ngu n;

 Kh o sát các bi n khi ng d ng đang t m d ng

D a vào mô hình nghiên c u đ c chúng em s xây d ng ng d ng minh

h a đ th nghi m mô hình này Nh ng ch c n ng nâng cao nh : kh o sát t ng thread, kh o sát toàn b quá trình th c thi… s đ c phát tri n trong các nghiên c u sau này

Trang 20

trong ng d ng có thu t ng ti ng Anh là “debugging”,b t ngu n t vi c g con

côn trùng (bug) ra kh i máy tính [3] B t đ u t nh ng n m 1950, thu t ng này b t

đ u đ c s d ng trong khoa khoa h c máy tính b i ACM ây là quá trình có

ho c xu t giá tr các bi n trên mã ngu n ch ng trình M i khi phát sinh nhu c u

kh o sát khác thì ph i thêm/xóa nh ng đo n mã xu t giá tr , sau đó ph i th c hi n

l i t đ u quá trình biên d ch và th c thi Bên c nh đó, vi c theo dõi nh ng bi n có

c u trúc ph c t p gây r t nhi u khó kh n cho l p trình viên Vì v y, ph ng pháp này ch có th đ c s d ng v i nh ng ng d ng đ n gi n

V i ph n l n ngôn ng l p trình, quá trình này có th đ c th c hi n v i s

tr giúp v i m t ph n m m g i là debugger, thu t ng ti ng Vi t có th g i là trình

b y l i ho c trình g l i Trình g l i cho phép l p trình viên ki m soát, theo dõi quá trình th c thi c a ch ng trình, t m d ng, ti p t c, đ t breakpoint, theo dõi và thay đ i giá tr c a b nh V i s h tr c a trình g l i, quá trình phát hi n và x

lý l i đ c th c hi n hi u qu h n: không c n thi t ph i biên d ch l i mã ngu n khi thay đ i nh ng m c tiêu kh o sát, th m chí m t s trình g l i còn cho phép s a – biên d ch – ti p t c th c thi6 ngay l p t c mà không c n ph i kh i đ ng l i quá

6 Edit and continue http://msdn.microsoft.com/en-us/library/bcew296c(v=vs.110).aspx

Trang 21

5

trình Trình g l i là m t công c cho phép l p trình viên theo dõi, cô l p và lo i b

l i kh i ph n m m [4] Th c t , trình g l i làm rõ quá trình th c thi c a ph n m m

– cho phép l p trình viên tìm hi u quá trình th c thi, s a các khi m khuy t trong

ph n m m Bên c nh đó, trình g l i có th đ c dùng ghi nh n l i toàn b quá trình th c thi nh m kh o sát và đánh giá t ng quát Các ch ng trình c n đ c biên

d ch v i ch đ g l i

Quá trình s d ng trình g l i thông th ng đ c th c hi n theo các b c:

B c 1: t các tham s ban đ u bao g m: breakpoint, thông tin các t p

Trình g l i có th chia làm hai m c đ : M c mã máy (machine-level) và

m c mã ngu n (source-level) M c đ mã máy ch cho phép đi u khi n quá trình

th c trên mã máy; m c đ mã ngu n cho phép ánh x ng c gi a v trí đo n mã ngu n và mã máy c a c a ng d ng Trong ph m vi khóa lu n ch đ c p đ n trình

g l i m c mã ngu n Công c h tr tìm l i c a môi tr ng phát tri n tích h p s

d ng trình g l i đ cung c p ch c n ng h tr tìm l i

Các công c h tr tìm l i đ c liên k t v i thành ph n so n th o mã ngu n

đ th hi n v trí th c thi hi n t i m t cách tr c quan v i ng i dùng Bên c nh đó

Trang 22

6

vi c theo dõi giá tr các bi n d ng c u trúc ph c t p d dàng h n v i nh ng thao tác

t ng tác trên môi tr ng đ h a, gi m b t s l p l i các thao tác nhàm chán Các trình g l i có giao ti p dòng l nh đ c nhi u l p trình viên s d ng đ th c hi n thao tác tìm l i Tuy nhiên, v i ph n l n l p trình viên công vi c này d dàng h n

v i giao di n đ h a mà môi tr ng phát tri n tích h p cung c p cho h

M t ngôn ng l p trình có th có nhi u môi tr ng phát tri n tích h p nh ng

ch có m t s trình g l i đ c s d ng Ví d : C/C++ v i gdb đ c s d ng nh

m t trình g l i cung c p ch c n ng h tr tìm l i cho các môi tr ng phát tri n tích h p ph bi n nh : Eclipse, Netbeans, XCode (đ n phiên b n 4.2), QtCreator, CodeBlocks… M t khác các môi tr ng tích h p dù h tr nhi u h n m t ngôn ng

l p trình nh ng thành ph n giao di n ng i dùng đ c s d ng chung cho nhi u ngôn ng và trình g l i V i m t s ít môi tr ng phát tri n tích h p th ng m i

c hai thành ph n này đ c tích h p ngay trong môi tr ng phát tri n Do đó, vi c tái s d ng các thành ph n này có nhi u khó kh n do không có các tài li u chính

th c c ng nh v n đ b n quy n

Trang 23

7

Hình 2-1 Công c h tr tìm l i v i giao di n đ h a

t o thành công c h tr tìm l i trong môi tr ng phát tri n tích h p là s

k t h p c a hai thành ph n Trong đó trình g l i th ng đ c l p v i môi tr ng phát tri n tích h p, có kh n ng thay th đ c T ng môi tr ng phát tri n tích h p

ph c v cho nh ng m c đích khác nhau tuy nhiên d a trên nh ng thành ph n chung, do đó trình g l i có th đ c dùng l i nguyên b n ho c ch nh s a phù h p

Các trình g l i th ng đ c cung c p nh m t thành ph n cho b công c phát tri n ph n m m c a m t ngôn ng l p trình, h u h t các môi tr ng phát tri n tích h p đ u s d ng l i thành ph n này tr khi có nh ng nhu c u mà công c có

s n không th đáp ng đ c, c n c i ti n ho c thay th trình g l i khác V i h u

h t các ngôn ng ph bi n đ u có các trình g l i d ng dòng l nh ho c giao di n l p trình: Java v i jdb (OpenJDK), C# v i mdb (mono), C/C++ v i gdb (gcc) ho c lldb (llvm)… Vi c tích h p c a trình g l i và giao di n đ h a c a m t môi tr ng phát tri n tích h p c ng c n đ c cân nh c đ n s cho phép gi y phép mã ngu n m

M t s gi y phép không có yêu c u v gi y phép c a ch ng trình dùng (MIT,

IDE

Hello [Debug]

View Edit File Tools Help

hello() at foo.c:10 Thread 1 (stopped) Target

main () at main.c:20 Thread 2 (stopped)

Breakpoints Debug

File

print_str() at bar.c:15 t_create() in t.so

bar.c main.c foo.c

n (int): 16

m (int): 26

Run Stop

1 3 5 7 9 10

#include <stdio.h>

int foo() { int n, m;

Trang 24

8

BSD, Apache…), m t s khác (GPL) yêu c u ph n m m có liên k t mã ngu n ph i

đ c phát hành v i cùng m t gi y phép, nh ng thay đ i mã ngu n ph i đ c cung

c p công khai N u s d ng giao di n l p trình c a m t trình g l i v i gi y phép copyleft đ ng ngh a v i môi tr ng phát tri n tích h p c ng ph i đ c phát hành

v i gi y phép c a trình g l i Ràng bu c này h n ch s phát tri n c a các s n

ph m th ng m i có s d ng nh ng thành ph n mã ngu n m copyleft M t s

ch ng trình nh gdb đ c phát hành v i gi y phép GPL, th c t v n đ c s d ng trong các s n ph m th ng m i nh vào giao ti p d a trên nh p xu t chu n, nh ng

 Socket: Giao ti p thông qua môi tr ng m ng;

 Giao ti p máy thông qua nh p xu t chu n (MI): t ng t giao ti p v i

ng i dùng qua dòng l nh v i đ nh d ng giao ti p chu i có th chuy n

đ i d dàng thành d li u có c u trúc đ tích h p vào các ng d ng Môi tr ng phát tri n tích h p g m thành ph n đ giao ti p v i trình g l i

và các thành ph n giao di n, th c hi n vi c chuy n đ i gi a thông tin nh n đ c t trình g l i th hi n các thông tin d i d ng giao di n đ h a và ng c l i, chuy n các thao tác trên giao đ h a c a ng i dùng thành các l nh đ trình g l i th c thi

2.3 Công c trên web h tr tìm l i

Cho đ n th i đi m hi n t i, th c hi n kh o sát quá trình th c thi c a ng

d ng vi t b ng ngôn ng C/C++ ngay t i trình duy t g p r t nhi u khó kh n do gi i

h n c a trình duy t Vi c th c thi ph i đ c th c hi n phía máy ch , trình duy t

có vai trò giao ti p v i máy ch , hi n th giao di n và t ng tác v i ng i dùng

C ng nh h u h t môi tr ng phát tri n tích h p truy n th ng, phía máy ch có

Trang 25

9

thành ph n là trình g l i đ đi u khi n quá trình th c thi ch ng trình ng i dùng, máy ch web đóng vai trò là trung gian chuy n ti p thông tin gi a trình duy t và trình g l i

Xây d ng môi tr ng phát tri n tích h p trên web c b n d a trên nh ng thành ph n, ki n trúc đã có trên môi tr ng truy n th ng Các thành ph n c n đ c xác đ nh l i v trí, vai trò c hai phía máy ch và trình duy t d a trên ch c n ng

c a thành ph n đó c ng nh cân nh c kh n ng b o m t và hi u n ng c a h th ng Xác đ nh các thành ph n có th tái s d ng t nh ng công c đã có, sau đó thay đ i

đ thích h p v i môi tr ng phát tri n tích h p trên web Bên c nh đó giao th c,

đ nh d ng thông tin trao đ i trình g l i – máy ch web – trình duy t c n đ c xây

d ng

Quá trình s d ng công c h tr tìm l i là m t quá trình yêu c u ph i có s trao đ i liên t c gi a giao di n – máy ch – trình g l i ây không là v n đ đ i

v i môi tr ng desktop truy n th ng, các ti n trình có kh n ng trao đ i tr c ti p

v i nhau Khi chuy n đôi qua môi tr ng web, đây là m t v n đ c n ph i gi i quy t c hai khía c nh: tính kh thi và đ m b o hi u n ng

ng d ng web là nh ng trang HTML đ c t i qua giao th c HTTP sau đó

hi n th trên trình duy t M i yêu c u đ u b t đ u t phía trình duy t nên máy ch không th ch đ ng chuy n thông báo cho trình duy t theo th i gian th c Trong

nh ng n m g n đây m t s k thu t và công ngh đã xu t hi n đ kh c ph c nh c

đi m này c a giao th c HTTP nh : polling, long-polling, WebSocket… tuy nhiên

nh ng gi i pháp này đòi h i s thay đ i v ki n trúc c ng nh cách v n hành c a máy ch web

M t khác vi c s d ng m t k t n i th i gian th c, ph c v nhi u ng i dùng trên Internet ph i đ m đ tin c y và hi u n ng c a h th ng phía máy ch Ch c

n ng h tr tìm l i đ c đi u khi n t trình duy t, v i m i phiên làm vi c c a

ng i dùng phía máy ch ph i có nh ng ti n trình nh : ch ng trình ng i dùng, trình g l i và m t s ti n trình khác Máy ch web làm công vi c chuy n ti p thông tin gi a trình duy t và các ti n trình phía máy ch , do đó máy ch web ph i

Trang 26

10

th c hi n r t nhi u thao tác nh p xu t đ liên l c v i các thành ph n S d ng gi i pháp đa lu ng không th đáp ng đ c nhu c u c a m t s l ng l n ng i dùng

do gi i h n v b nh , c ng nh hi n t ng CPU chuy n đ i qua l i gi a quá nhi u

thread d n đ n h th ng b treo [5] Máy ch web ph c v ch c n ng h tr tìm l i

là thành ph n nh n và chuy n ti p thông tin đ n các trình duy t ho c các ti n trình, ngh a là các thao tác nh p xu t h n nhi u h n r t nhi u so v i x lý tính toán M t trong nh ng d ng thao tác nh p xu t phù h p v i d ng ng d ng này là nh p xu t

b t đ ng b : khi th c hi n các thao tác nh p xu t, ti n trình không ph i ch đ h

th ng th c hi n xong vi c đ c/ghi d li u v n có th th c hi n các x lý khác, không c n thi t ph i t o ra nh ng thread đ giao ti p v i t ng thành ph n Cách ti p

c n này gi i quy t m t cách hi u qu v n đ hi u n ng khi xây d ng công c h tr tìm l i

Thông tin v m t s môi tr ng phát tri n tích h p trên web có ch c n ng h

tr tìm l i:

eXo Cloud IDE eXo Platform SAS Java

B ng 2-1 M t s môi tr ng phát tri n tích h p trên web ch c n ng h tr tìm l i

Trong r t nhi u các môi tr ng phát tri n tích h p trên web, trên đây là

nh ng môi tr ng phát tri n tích h p có h tr ch c n ng h tr tìm l i Vi c xây

d ng ch c n ng h tr tìm l i cho môi tr ng phát tri n tích h p trên web là h ng phát tri n trong t ng lai Qua tìm hi u, các môi tr ng nói trên đ u có m t đi m chung đ c xây d ng trên chính n n t ng ngôn ng đ c h tr : Cloud9 v i Node.js (JavaScript), CodeRun v i NET (C#), eXo Cloud IDE v i JVM (Java); có

s liên k t nh t đ nh gi a n n t ng và ngôn ng h tr

 Cloud9 d a trên cách ti p nh p xu t b t đ ng b đ gi i quy t v n đ

hi u n ng c a h th ng, tuy nhiên s n ph m này ch h tr JavaScript, toàn b h th ng ch dùng đ ph c v cho vi c phát tri n ng d ng web

Trang 27

11

b ng JavaScript Do đó, v n ch a đáp ng đ c nhu c u c a h c t p c ng

nh làm vi c v i ngôn ng l p trình ph bi n hi n nay nh C/C++;

 CodeRun và eXo là các s n ph m th ng m i nên chúng em không th

ti p c n đ c mã ngu n và thi t k h th ng c a nh ng s n ph m này Tuy nhiên qua kh o sát v ho t đ ng, c hai h th ng này đ u dùng k thu t polling (tham kh o ph l c), t c g i yêu c u đ n máy ch theo chu

k xác đ nh đ nh n nh ng thông tin ho c c p nh t m i tr c a thao tác có th làm ng i dùng khó ch u, gây quá t i cho máy ch web khi có

r t nhi u yêu c u đ c g i t trình duy t đ n máy ch theo m t chu k

nh t đ nh gây lãng phí tài nguyên h th ng và có th “c ng h ng” làm treo toàn b h th ng

T nh ng kh o sát nêu trên trong ph m vi đ tài c a khóa lu n t t nghi p chúng em s t p trung nghiên c u vào nh ng v n đ sau:

 Các trình g l i h tr ng d ng vi t b ng ngôn ng C/C++;

 K thu t nh p xu t b t đ ng b k t h p l p trình h ng s ki n;

 K thu t web th i gian th c;

 K thu t xây d ng ng d ng web đ n trang t ng thích v i các trình duy t và thi t b khác nhau;

 Xây d ng s n ph m minh h a h tr tìm l i ng d ng C/C++ trên môi

tr ng web

Trang 28

th ng nhúng Trong ph m vi c a khóa lu n t t nghi p chúng em t p trung nghiên

c u n n t ng C/C++ trên desktop, do đó nh ng trình g l i C/C++ cho các n n t ng

đ c tr ng nh h th ng nhúng ho c các thi t b di đ ng không đ c nghiên c u

B ng sau đây li t kê nh ng trình g l i C/C++ ph bi n:

Fortran, Java

BSD

Objective-C, Free Pascal, Fortran, Java

C, C++, Objective-C

University of Illinois/NCSA Open Source License

Visual Studio

Debugger

Visual Studio

Trang 29

13

hay tích h p v i công c h tr tìm l i c a môi tr ng phát tri n tích h p Bên c nh

đó, gdb là công c có s n trên h u h t các b n phân ph i Linux c ng nh là công c

đ phát tri n nhân Linux, ngoài ra gdb c ng đ c h tr trên nhi u n n t ng khác nhau k c Microsoft Windows Các môi tr ng phát tri n tích h p h tr C/C++

ph bi n nh Eclipse, Netbeans và XCode s d ng gdb đ cung c p ch c n ng h

tr tìm l i

Tuy nhiên b t đ u t phiên b n 4.3 Xcode, Apple đã thay gdb b ng lldb, trình g l i c a b công c llvm (t ng t gcc), đ c phát hành v i gi y phép mã ngu n m không copyleft, do đó Apple có th d dàng tích h p vào XCode và s

d ng API đ giao ti p trình g l i này Trình g l i lldb cung c p m t giao di n l p trình h ng đ i t ng d dàng truy xu t và th c hi n thao tác trên các đ i t ng, trong khi đó gdb v i giao ti p máy v i d ng dòng l nh khi giao ti p c n ph i chuy n đ i qua l i gi a mô hình c a môi tr ng phát tri n tích h p và gdb

Visual Studio ph bi n cùng v i h đi u hành Windows v i giao di n thân thi n, d s d ng v i h u h t m i ng i Tuy nhiên thành ph n trình g l i c a Visual Studio đ c tích h p ch t ch trong môi tr ng phát tri n tích h p c ng nh đây là m t s n ph m th ng m i

Intel idb ch ch y u đ c s d ng trong l p trình song song; dbx đ c s

d ng trong nh ng n n t ng ít ph bi n h n nh IBM z/OS và Oracle Solaris

Sau khi th c hi n kh o sát các trình g l i cung c p cho l p trình viên nh ng

Trang 30

hi n trình g l i tr v k t qu đã th c thi Song song v i quá trình trên, các s ki n

x y ra trong quá trình tìm l i s đ c thông báo ng c l i (t o thread, tình tr ng đang ch y ho c d ng…) V m t k thu t c n có kênh giao ti p hai chi u (full-duplex) đ k t n i hai thành ph n này

Các công c h tr tìm l i và trình g l i s d ng giao di n đ h a (Visual Studio) ho c dòng l nh (gdb, lldb, dbx) đ giao ti p v i ng i dùng M t s cung

c p c hai lo i giao di n (idb) Tuy nhiên đ có th k t h p v i môi tr ng phát tri n tích h p m i trình g l i c n có giao ti p máy có th hi u đ c nh : giao di n

l p trình (API), giao ti p máy qua dòng l nh (MI) ho c giao ti p thông qua m ng:

 API: lldb;

 MI: gdb;

 Socket: gdbserver – phiên b n h tr tìm l i t xa c a gdb giao ti p thông qua c ng tu n t ho c TCP

Trang 31

ph c v t t h n cho c quá trình phát tri n ph n m m Tuy nhiên llvm đang trong quá trình phát tri n và ch m i xu t hi n nh m ph c v cho vi c phát tri n ng d ng trên Mac OS và iOS, vi c h tr các n n t ng khác v n đang đ c phát tri n Do đó

tr c m t gdb v n là l a ch n t t trong kho ng th i gian t i cho đ n khi lldb đ c phát tri n hoàn thi n

gdb cung c p hai lo i giao ti p: giao ti p v i ng i dùng thông th ng và giao ti p máy C hai lo i giao ti p này đ u đ c th c hi n thông qua nh p xu t chu n Giao ti p máy c a gdb c ng tuân theo nguyên t c c b n c a trình g l i:

nh n l nh, tr v k t qu th c hi n l nh và thông báo s ki n

Trang 32

Hình 3-2 Thành ph n giao ti p gdb và gdb thông qua giao ti p máy

L nh gdb bao g m: tên l nh và các tham s ngoài ra còn có th kèm theo th bài (token) nh m đ i chi u l nh chuy n cho gdb và k t qu tr v K t qu th c hi n

l nh và thông báo s ki n có d ng chu i có c u trúc, có th chuy n đ i thành d

li u mà máy tính c a th thao tác đ c m t cách d dàng Ki u d li u này h tr

d li u d ng chu i, danh sách và b Sau khi chuy n đ i thành d li u các c u trúc, thông tin này đ c chuy n cho các thành ph n x lý và giao di n

Thành ph n giao ti p v i gdb ph i giao ti p đ c v i gdb thông qua giao

di n dòng l nh, bên c nh đó th c hi n các x lý khác nh chuy n đ i t d ng chu i thành d ng d li u c u trúc, cho phép các thành ph n khác l ng nghe ho c g i các thao tác x lý khi có s ki n nh n đ c t gdb nh d ng l nh nh p và chu i xu t

c a gdb v i giao ti p máy đ c trình bày trong tài li u k thu t c a gdb [7] Vi c

chuy n đ i chu i giao ti p máy thành d li u có c u trúc đ c th c hi n b ng cách

x lý tr c ti p trên chu i ho c tái s d ng l i thành ph n này trong các môi tr ng phát tri n tích h p mã ngu n m nh Eclipse, Netbeans

3.2 K thu t nh p xu t b t đ ng b

Trong m t h th ng máy tính nói chung các thao tác có th đ c chia làm hai

lo i: x lý (CPU, GPU) và nh p xu t Các thao tác nh p xu t bao g m đ c/ghi d

li u trên: b đ m CPU (Cache L1/L2/L3), RAM, đ a c ng, m ng… Nh ng thao tác trên cache, RAM có đ tr , th i gian th c hi n và m c đ l i r t nh n u so sánh

v i đ a c ng và m ng thì chi phí g n nh không đáng k Th i gian truy xu t đ a

c ng và sau đó đ n m ng ch m nh t trong các thao tác nh p xu t [8]:

 L1: 3 chu k ;

 L2: 14 chu k ;

 RAM: 250 chu k ;

Trang 33

b nh p xu t truy n th ng, thao tác nh p xu t s khóa (block) ti n trình cho đ n khi

k t qu đ c tr v V n đ này đ c gi i quy t b ng cách s d ng các thread khác nhau, tuy nhiên cách ti p c n này d n đ n nh ng v n đ phát sinh khác:

 Qu n lý truy xu t đ ng th i;

 Hi n t ng starvation c a CPU khi có m t s l ng l n thread đ c t o ra:

th i gian đ thay đ i ng c nh gi a các thread nhi u h n th i gian CPU th c

Bên c nh thao tác nh p xu t đ ng b truy n th ng, nh ng thao nh p xu t b t

đ ng b tr v ngay l p t c do đó không ng n vi c x lý c a ti n trình, thay vào đó cho yêu c u thêm m t tham s là hàm g i ng c (callback), hàm này s đ c g i khi thao tác nh p xu t đã th c hi n xong đ x lý d li u nh n đ c t thao tác

nh p xu t [10] Các l i ích thao tác nh p xu t b t đ ng b mang l i:

 Không c n thi t ph i t o thêm thread đ x lý các thao tác nh p xu t;

 Gi m l ng tài nguyên RAM, CPU cho vi c chuy n đ i gi a các thread;

Trang 34

18

 Không ph i gi i quy t v n đ truy xu t đ ng th i trên d li u có c u trúc

do vi c s d ng thread đ không làm treo khi th c hi n thao tác nh p

xu t;

 m b o h th ng có th gi nhi u k t n i nh p xu t m t cách d dàng Tuy nhiên cách ti p c n này làm cho ti n trình x lý trên mã ngu n không t nhiên, c ng nh thay đ i cách x lý l i (ngo i l ) c ng nh không th ti p t c s

d ng nh ng th vi n v n đ c xây d ng v i nh p xu t đ ng b So sánh gi a hai

mô hình b ng s đ tu n t :

Hình 3-3 Nh p xu t đ ng b [10]

Hình 3-4 Nh p xu t b t đ ng b [10]

Trang 35

m t th i gian không nh , n u s d ng các thao tác đ ng b đ giao ti p s tiêu hao

r t nhi u tài nguyên h th ng cho vi c ch trong khi v i mô hình b t đ ng b , không c n ph i t o ra nh ng thread đ giao ti p nh ng v n có th th c hi n các thao tác x lý khác n u có (bao g m: ph c v k t n i, x lý v i nh ng ng i dùng khác đang có trao đ i d li u…) ph c v m t ng i dùng máy ch web c n ít nh t

m t k t n i v i trình duy t, m t k t n i v i gdb, vai trò c a máy ch web nh đã trình bày ch đóng vai trò chuy n ti p thông tin gi a 2 thành ph n, máy ch web x

lý (chuy n đ i đ nh d ng) trên d li u r t ít T đó nh n th y đ c đây là mô hình phù h p đ xây d ng công c trên web h tr tìm l i ng d ng C/C++ nói riêng và

các ngôn ng khác nói chung Cách ti p c n này Cloud9 [11] c ng đ c s d ng đ

cung c p ch c n ng h tr tìm l i v i JavaScript

3.3 JavaScript

JavaScript là m t ngôn ng l p trình cho phép xây d ng ng d ng phía trình duy t web Ngoài JavaScript còn có m t s ngôn ng l p trình khác cho phép xây

d ng ng d ng trên trình duy t nh : VBScript (Internet Explorer) hay Dart (đang

đ c Google phát tri n cho trình duy t Chrome) Khác v i nh ng môi tr ng trên desktop, JavaScript là ngôn ng duy nh t đ c h tr trên các trình duy t khác nhau, do đó đ ng d ng vi t b ng m t ngôn ng khác JavaScript có th ho t đ ng

đ c trên các trình duy t khác nhau, mã ngu n c n đ c chuy n-d ch (transcompile) thành JavaScript Cách ti p c n này đ c s d ng b i Dart và CoffeeScript (xem thêm v CoffeeScript trong ph n ph l c)

Trang 36

20

C ng nh các nhi u ngôn ng khác JavaScript có d ng cú pháp t ng t C, JavaScript trong trình duy t web cung c p giao ti p l p trình v i các đ i t ng DOM cho phép xây d ng các ng d ng có kh n ng t ng tác v i ng i dùng

thông qua các s ki n trên giao di n [12] V i s ra đ i c a đ i t ng XMLHttpRequest, JavaScript đã t o ra m t b c chuy n mình l n [13] v i s xu t

hi n đ u tiên c a nh ng ng d ng nh Gmail s d ng m t trang duy nh t cho toàn

b ng d ng, m i thao tác c p nh t d li u đ u đ c th c hi n phía sau nh đ i

t ng XMLHttpRequest

JavaScript đ c xem nh ngôn ng c a web [14], nh s c nh tranh c a các

trình duy t web nh ng c máy th c thi JavaScript (JavaScript engine) đ c c i ti n nhanh chóng, JavaScript ti n thêm m t b c khi b c ra kh i trình duy t v i nh ng

d án nh Node.js [13] cho phép xây d ng nh ng máy ch web h ng s ki n ph c

v cho nh ng ng d ng web th i gian th c

Ngoài ra JavaScript c ng là ngôn ng l p trình ng d ng b n ng (native) cho m t s h đi u hành nh WebOS và Windows 87 S phát tri n m nh m c a các ng d ng web v i s h tr c a JavaScript đã xóa nhòa biên gi i gi a ng d ng

b n ng và ng d ng web trên c môi tr ng desktop l n di đ ng 8

3.4 Web th i gian th c

Các ng d ng web ngày càng phát tri n nh ng ch c n ng nh m đem l i

nh ng tr i nghi m t t h n cho ng i dùng T nh ng trang web s khai ban đ u, các trang web đã tr thành nh ng ng d ng th t s có nh ng b c đi thay th

nh ng ng d ng truy n th ng trên máy tính v i tính kh chuy n, không c n cài đ t

c ng nh làm vi c m i lúc m i n i, trên m i thi t b t máy tính cá nhân, máy tính

b ng, đi n tho i thông minh ch v i k t n i 3G/LTE đáp ng cho nhu c u ngày càng cao c a ng i s d ng các nhà phát tri n đã xây d ng các tính n ng nh m mang l i tr i nghi m t t h n cho ng i dùng trong đó quan tr ng nh t là kh n ng

t ng tác th i gian th c v i máy ch web, thông qua đó có th t ng tác th i gian

7 ng d ng metro http://msdn.microsoft.com/en-us/library/windows/apps/br211385.aspx

8 Abode PhoneGap http://phonegap.com/

Trang 37

21

th c tr c ti p v i nh ng ng i dùng khác c ng nh làm vi c c ng tác đi n hình là Facebook, Gmail, Google Docs Các s ki n c p nh t g n nh ngay l p t c đ c chuy n đ n nh ng ng i dùng khác Giao th c HTTP là giao th c m t chi u, trong

đó ch có trình duy t có th ch đ ng chuy n d li u đ n máy ch , do đó v i k t n i HTTP đ n thu n máy ch web không th chuy n nh ng thông đi p c p nh t theo

th i gian th c đ n trình duy t xây d ng đ c nh ng ng d ng web th i gian

th c đòi h i nh ng k thu t c ng nh ki n trúc phía máy ch web đ c thay đ i đ đáp ng hi u n ng khi th c hi n giao ti p th i gian th c ph i gi r t nhi u k t n i

m ng đ đ m b o thông đi p đ c chuy n đ n các trình duy t v i đ tr th p nh t

Web th i gian th c không gi ng nh khái ni m tính toán th i gian th c trên máy tính Web th i gian th c là nh ng k thu t cho phép nh ng c p nh t t máy

ch web đ c chuy n g n nh ngay l p t c đ n trình duy t Gi i pháp cho v n đ là

t o ra m t d ng k t n i gi a máy ch web và trình duy t sao cho máy ch web có

th chuy n nh ng c p nh t c n thi t đ n trình duy t, sau đó trình duy t có th c p

nh t trên giao di n trang web nh ng thay đ i (n u có) Các nhà phát tri n đã đ ra

nh ng gi i pháp [15] (tham kh o thêm trong ph l c) bao g m: polling,

long-polling, WebSocket, FlashSocket, Server-send events…

Các công ngh ho c chu n h tr trên đ u mang l i k t n i th ng gian th c (ho c g n th i gian th c) gi a trình duy t và máy ch web Tuy nhiên b t c gi i pháp nào c ng yêu c u máy ch web đáp ng đ c k t n i liên t c m t khác đ m

b o các thông đi p có th chuy n đ n trình duy t theo th i gian (g n) th c Theo

s d li u đ nh n nh ng c p nh t là r t khó đ đáp ng đ c yêu c u này c ng nh

kh n ng cho phép ph c v nhi u ng i dùng

Trang 38

22

M t cách ti p c n có th mang l i hi u qu t t h n là đ ng th i v i c p nh p

c s d li u, c p nh t đ c chuy n t ngu n (trình g l i) đ n nh ng ng i dùng khác thông qua kênh k t n i th i gian th c gi a trình duy t và máy ch web

ây chính là ti n đ c a s ra đ i c a nh ng máy ch web d ng h ng

h ng s ki n nh EventMachine, nginx, Node.js, Twisted, vert.x Khác v i nh ng máy ch web truy n th ng nh Apache – m i k t n i t trình duy t đ c x lý b ng

nh ng thread khác nhau, nh ng máy ch web này ch s d ng m t thread duy nh t

đ ti p nh n nh ng yêu c u t trình duy t, đ x lý nh ng yêu này máy ch web

th c hi n các thao tác nh p xu t b t đ ng b (t p tin, m ng, c s d li u…) sau đó

tr v k t qu cho trình duy t Do ch dùng m t thread đ ti p nh n các yêu c u,

nh ng máy ch web này có th ti p nh n m t s l ng r t l n k t n i HTTP đ ng

th i, v t qua gi i h n 10.000 [16] c a nh ng máy ch web s d ng thread đ x lý

nh ng yêu c u Các thao tác nh p xu t v n chi m nhi u th i gian ch đ u đ c

th c hi n d i d ng b t đ ng b nh p xu t, máy ch web không ph i ch nh ng thao tác này th c hi n xong v n ti p t c ti p nh n nh ng yêu c u khác Chi phí đ

gi các k t n i g n nh không đáng k , do đó cách ti p c n này gi i quy t hi u qu

v n đ thi t l p kênh k t n i th i gian th c gi a trình duy t – máy ch web Máy

ch web m t m t duy trì k t n i v i trình duy t m t khác có th chuy n nh ng c p

nh t t ng i dùng này đ n ng i dùng khác m t cách d dàng do s d ng c ch single-thread không ph i gi i quy t các v n đ truy xu t đ ng th i gi a các thread

x lý c a m i yêu c u

Mô hình theo h ng s ki n hoàn toàn phù h p đ xây d ng công c h tr tìm l i trên web:

 Máy ch web đóng vai trò chuy n ti p thông tin gi a trình duy t – trình

g l i, các thông đi p đ c chuy n đi v i d ng s ki n k t h p v i b t

đ ng b nh p xu t;

 Máy ch web không c n ph i truy v n liên t c đ có đ c c p nh t và chuy n đ n nh ng thành ph n khác, thay vào đó ch đ m nh n vai trò ti p

Trang 39

 Ngoài ra b n thân l p trình theo h ng s ki n thích h p v i vi c l p trình giao di n phía trình duy t v i JavaScript và single-thread

L p trình h ng s ki n có th xem nh m t s m r ng c a m u thi t k Observer v i s k t h p c a thao tác nh p xu t b t đ ng b và các k thu t web

th i gian th c, kh n ng hi n th c hóa công c h tr tìm l i trên web v i kh n ng đáp ng cao và mang l i tr i nghi m g n nh các công c truy n th ng là hoàn toàn

kh thi V i s h tr web trên nhi u thi t b nh hi n nay, chúng ta có th hoàn toàn th c hi n vi c phát tri n ph n m m ngay trên nh ng thi t b nh máy tính b ng

ho c th m chí là đi n tho i thông minh m i lúc, m i n i, chuy n đ i d dàng gi a các thi t b này nh vào k t n i Internet và đi n toán đám mây

3.5 Node.js – Nh p xu t b t đ ng b và l p trình h ng s ki n

H u h t các ngôn ng l p trình đ u có th vi n chu n th c hi n các thao tác

nh p xu t đ đ c/ghi t p tin, m ng, thi t b chu n… các th vi n này đ u là d ng

đ ng b Bên c nh th vi n chu n có th có các b th vi n khác cho phép th c

hi n các thao tác nh p xu t b t đ ng b :

 C/C++: libuv, boost::asio…

 Java: Netty, New I/O, vert.x

 JavaScript: Node.js, ringoJS, vert.x

 Python: Twitsted

 Ruby: EventMachine, vert.x

V i JavaScript là tr ng h p đ c bi t: JavaScript xu t phát là ngôn ng l p trình đ c s d ng đ b sung các ch c n ng cho các trong web đ c hi n th trong

Trang 40

24

trình duy t, đ đ m b o v n đ b o m t cho ng i dùng JavaScript không đ c phép th c hi n các thao tác nh p xu t ngo i tr tr ng h p c a đ i t ng XMLHttpRequest dùng đ th c hi n m t yêu c u HTTP đ n máy ch trang đang

th c thi JavaScript trong trình duy t đ c th c thi single-thread do đó XMLHttpRequest ph i th c thi b t đ ng b , n u th c thi đ ng b trang web s b treo Các nhà phát tri n khi đ a JavaScript kh i trình duy t đã đ nh ngh a t t c các thao tác nh p xu t theo d ng b t đ ng b t ng t v i cách XMLHttpRequest th c thi, khác v i nh ng ngôn ng l p trình khác các thao tác b t đ ng b nh p xu t trên JavaScript đã tr thành chu n trong th c t (de facto) L p trình viên khi s d ng JavaScript không nh p nh ng gi a đ ng b và b t đ ng b khi th c hi n các thao tác nh p xu t

S k t h p v i JavaScript là m t ý t ng tình c c a Ryan Dahl – tác gi

Node.js [17] do JavaScript không có s n m t th vi n socket B ng s k t h p v i

c máy JavaScript c a trình duy t Google Chrome – V8, Ryan đã t o ra m t n n

t ng mã ngu n m k t h p gi a JavasScript, nh p xu t b t đ ng b và l p trình

h ng s ki n V i Node.js có th d dàng t o ra máy ch web có kh n ng gi

đ c m t s l ng r t l n k t n i ch v i vài dòng mã JavaScript Do đó Node.js

v t qua nh ng h n ch c a nh ng lo i máy ch web truy n th ng, cho phép chuy n t i nh ng c p nh t t i nh ng ng i dùng theo th i gian th c Node.js không

ph n này đã tr thành chu n cho JavaScript (ngoài trình duy t) h tr truy xu t các

Ngày đăng: 05/11/2016, 12:06

HÌNH ẢNH LIÊN QUAN

Hình 2-1 Công c  h  tr  tìm l i v i giao di n đ  h a - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 2 1 Công c h tr tìm l i v i giao di n đ h a (Trang 23)
Hình 3-3 Nh p xu t đ ng b  [10] - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 3 3 Nh p xu t đ ng b [10] (Trang 34)
Hình 3-5 Giao ti p gi a MISession và gdb (Eclipse) [20] - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 3 5 Giao ti p gi a MISession và gdb (Eclipse) [20] (Trang 42)
Hình 3-7 S  đ  l p Debug Model (Eclipse) [19] - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 3 7 S đ l p Debug Model (Eclipse) [19] (Trang 44)
Hình 4-2 T ng quan ki n trúc h  th ng - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 2 T ng quan ki n trúc h th ng (Trang 48)
Hình 4-5 S  đ  l p m c chi ti t các thành ph n phía máy ch  web - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 5 S đ l p m c chi ti t các thành ph n phía máy ch web (Trang 52)
Hình 4-6 S  đ  tu n t  quá trình x  lý l nh và tr  v  k t qu - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 6 S đ tu n t quá trình x lý l nh và tr v k t qu (Trang 55)
Hình 4-7 Các thành ph n phía trình duy t - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 7 Các thành ph n phía trình duy t (Trang 58)
Hình 4-8 S  đ  l p m c chi ti t các thành ph n phía trình duy t - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 8 S đ l p m c chi ti t các thành ph n phía trình duy t (Trang 60)
Hình 4-9 S  đ  tu n t  giao ti p l nh gi a Trình duy t – Máy ch  –  Gdb - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 9 S đ tu n t giao ti p l nh gi a Trình duy t – Máy ch – Gdb (Trang 64)
Hình 4-10 S  đ  tu n t  quá trình th c thi v i đ i t ng Stackframe, thu c d ng trình duy t ch  đ ng - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 10 S đ tu n t quá trình th c thi v i đ i t ng Stackframe, thu c d ng trình duy t ch đ ng (Trang 65)
Hình 4-11 S  đ  tu n t  quá trình th c thi v i thread, thu c d ng máy ch  ch  đ ng - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 11 S đ tu n t quá trình th c thi v i thread, thu c d ng máy ch ch đ ng (Trang 66)
Hình 4-12 S  đ  tu n t  quá trình c p nh t giá tr  bi n khi ch ng trình d ng, k t h p c  hai d ng máy ch  và - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 4 12 S đ tu n t quá trình c p nh t giá tr bi n khi ch ng trình d ng, k t h p c hai d ng máy ch và (Trang 67)
Hình 5-1 Các thành ph n phân h  máy ch - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 5 1 Các thành ph n phân h máy ch (Trang 77)
Hình 5-12 Giao di n trang gi i thi u th  nghi m công c - xây dựng công cụ trên web hỗ trợ tìm lỗi ứng dụng c/c++
Hình 5 12 Giao di n trang gi i thi u th nghi m công c (Trang 87)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm