Tài liệu Khóa luận Xây dựng dịch vụ web học từ vựng: `
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Quang Trung
XÂY DỰNG DỊCH VỤ WEB HỌC TỪ VỰNG
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
HÀ NỘI - 2010
II
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Quang Trung
XÂY DỰNG DỊCH VỤ WEB HỌC TỪ VỰNG
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
Cán bộ hướng dẫn: TS. Trương Anh Hoàng
HÀ NỘI - 2010
I
LỜI NÓI ĐẦU
Tôi xin cảm ơn Khoa Công Nghệ Thông Tin – Đại Học Công Nghệ đã tạo điều
kiện cho tôi học tập, trau dồi kiến thức để vững bước trên con đường sau này.
Tôi xin chân thành cảm ơn các thầy cô trong trường đã tận tình giảng dạy, truyền
cho tôi những kiến thức quý báu trong suốt bốn năm học.
Tôi xin chân thành cảm ơn thầy TS. Trương Anh Hoàng đã tận tình giúp đỡ tôi
trong quá trình làm đồ án này. Những chỉ bảo của thầy giúp tôi mở mang thêm rất
nhiều.
Và cuối cùng con xin gửi lời biết ơn sâu sắc tới cha mẹ, người luôn sát cánh bê...
62 trang |
Chia sẻ: haohao | Lượt xem: 1086 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Khóa luận Xây dựng dịch vụ web học từ vựng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
`
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Quang Trung
XÂY DỰNG DỊCH VỤ WEB HỌC TỪ VỰNG
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
HÀ NỘI - 2010
II
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Quang Trung
XÂY DỰNG DỊCH VỤ WEB HỌC TỪ VỰNG
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
Cán bộ hướng dẫn: TS. Trương Anh Hoàng
HÀ NỘI - 2010
I
LỜI NÓI ĐẦU
Tôi xin cảm ơn Khoa Công Nghệ Thông Tin – Đại Học Công Nghệ đã tạo điều
kiện cho tôi học tập, trau dồi kiến thức để vững bước trên con đường sau này.
Tôi xin chân thành cảm ơn các thầy cô trong trường đã tận tình giảng dạy, truyền
cho tôi những kiến thức quý báu trong suốt bốn năm học.
Tôi xin chân thành cảm ơn thầy TS. Trương Anh Hoàng đã tận tình giúp đỡ tôi
trong quá trình làm đồ án này. Những chỉ bảo của thầy giúp tôi mở mang thêm rất
nhiều.
Và cuối cùng con xin gửi lời biết ơn sâu sắc tới cha mẹ, người luôn sát cánh bên
con, nuôi dưỡng con lên người, trở thành người có ích cho xã hội.
II
MỤC LỤC
LỜI NÓI ĐẦU............................................................................................................. I
BẢNG CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT ...........................................................IV
BẢNG CÁC HÌNH VẼ...............................................................................................V
BẢNG CÁC BẢNG BIỂU ...................................................................................... VII
TÓM TẮT NỘI DUNG .......................................................................................... VIII
CHƯƠNG 1: GIỚI THIỆU ..........................................................................................1
1.1. Đặt vấn đề .........................................................................................................1
1.2. Tổng quan về giải pháp......................................................................................2
1.2.1 Tại sao là dịch vụ Web? ...............................................................................2
1.2.2. Giải pháp Webdict.......................................................................................2
CHƯƠNG 2: TỔNG QUAN VỀ DỊCH VỤ WEB .......................................................5
2.1. Giới thiệu dịch vụ Web......................................................................................5
2.1.1. Dịch vụ web là gì?.......................................................................................5
2.1.2 Đặc điểm của dịch vụ web ............................................................................5
2.1.2.1. Sự tương kết có một ưu tiên cao nhất ....................................................5
2.1.2.2. XML .....................................................................................................6
2.1.2.3. WSDL...................................................................................................6
2.1.3. Giao thức dịch vụ web – SOAP .................................................................8
2.2. Python .............................................................................................................11
2.3. Sphinx .............................................................................................................12
2.3.1. Giới thiệu ..................................................................................................12
2.3.2. Tính chất ...................................................................................................13
2.3.3. Cài đặt .......................................................................................................13
2.3.4. Tạo mục lục...............................................................................................14
2.4. CakePHP .........................................................................................................15
2.4.1. Giới thiệu ..................................................................................................15
2.4.2. Mô hình MVC...........................................................................................16
2.4.3. Sử dụng .....................................................................................................17
2.5. OpenID............................................................................................................18
CHƯƠNG 3: PHÂN TÍCH HỆ THỐNG ...................................................................21
3.1. Phân tích yêu cầu.............................................................................................21
3.1.1. Yêu cầu người sử dụng ..............................................................................21
3.1.2. Yêu cầu hệ thống.......................................................................................21
III
3.2. Biểu đồ Ca sử dụng..........................................................................................22
3.3. Luồng sự kiện ..................................................................................................22
3.3.1. Đăng nhập .................................................................................................22
3.3.2. Tra từ.........................................................................................................23
3.3.3. Học từ .......................................................................................................23
3.3.4. Đọc báo .....................................................................................................24
3.3.5. Quản lý từ vựng.........................................................................................25
CHƯƠNG 4: THIẾT KẾ ...........................................................................................26
4.1. Thiết kế hệ thống .............................................................................................26
4.1.1. Biểu đồ tuần tự ..........................................................................................26
4.1.1.1. Đăng nhập ...........................................................................................26
4.1.1.2. Tra từ ..................................................................................................27
4.1.1.3. Học từ .................................................................................................31
4.1.1.4. Đọc báo...............................................................................................32
4.1.1.5. Quản lý từ vựng ..................................................................................33
4.1.2. Biểu đồ hoạt động......................................................................................33
4.1.2.1. Đăng nhập ...........................................................................................34
4.1.2.2. Tra từ ..................................................................................................34
4.1.2.3. Học từ .................................................................................................36
4.1.2.4. Đọc báo...............................................................................................37
4.1.2.5. Quản lý từ vựng ..................................................................................38
4.1.3. Biểu đồ lớp................................................................................................39
4.2. Thiết kế cơ sở dữ liệu ......................................................................................39
4.3. Thiết kế giao diện ............................................................................................43
4.3.1. Đăng nhập .................................................................................................43
4.3.2. Tra/Học từ .................................................................................................44
4.3.3. Đọc báo .....................................................................................................44
CHƯƠNG 5: CÀI ĐẶT VÀ THỬ NGHIỆM .............................................................46
5.1. Đăng nhập .......................................................................................................46
5.2. Tra từ/Học từ vựng ..........................................................................................47
5.3. Đọc báo ...........................................................................................................49
KẾT LUẬN ...............................................................................................................51
TÀI LIỆU THAM KHẢO..........................................................................................52
IV
BẢNG CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Ký hiệu Diễn giải
MVC Model-View-Controller
RSS Really Simple Syndication
HTML HyperText Markup Language
HTTP Hypertext Transfer Protocol
XML Extensible Markup Language
WSDL Web Services Description Language
SOAP Simple Object Access Protocol
RPC Remote procedure call
V
BẢNG CÁC HÌNH VẼ
Hình 1. Tính năng tra từ của Stardict ..........................................................................2
Hình 2. So sánh giữa Vdict và Webdict ......................................................................3
Hình 3. Thành phần của SOAP ...................................................................................9
Hình 4. MVC............................................................................................................16
Hình 5. Biểu đồ Ca sử dụng ......................................................................................22
Hình 6. Thiết kế tổng quan hệ thống .........................................................................26
Hình 7. Biểu đồ tuần tự chức năng Đăng nhập ..........................................................26
Hình 8. Biểu đồ tuần tự chức năng Tra từ - Searchdict..............................................28
Hình 9. Biểu đồ tuần tự chức năng Tra từ - autoComplete ........................................29
Hình 10. Biểu đồ tuần tự chức năng Tra từ ...............................................................30
Hình 11. Biểu đồ tuần tự chức năng Học từ ..............................................................31
Hình 12. Biểu đồ tuần tự chức năng Đọc báo ............................................................32
Hình 13. Biểu đồ tuần tự chức năng Quản lý từ vựng................................................33
Hình 14. Biểu đồ hoạt động chức năng Đăng nhập....................................................34
Hình 15. Biểu đồ hoạt động chức năng Tra từ ...........................................................35
Hình 16. Biểu đồ hoạt động chức năng Học từ..........................................................36
Hình 17. Biểu đồ hoạt động chức năng Đọc báo .......................................................37
Hình 18. Biểu đồ hoạt động chức năng Quản lý từ vựng ...........................................38
Hình 19. Biểu đồ lớp hệ thống ..................................................................................39
Hình 20. Bảng Users .................................................................................................39
Hình 21. Bảng Dictionaries.......................................................................................40
Hình 22. Bảng New Categories .................................................................................40
Hình 23. Bảng New Domain .....................................................................................40
Hình 24. Bảng New Content .....................................................................................41
Hình 25. Bảng Words ...............................................................................................41
Hình 26. Bảng User Words .......................................................................................42
VI
Hình 27. Bảng Known Words ...................................................................................42
Hình 28. Biểu đồ quan hệ của các bảng.....................................................................42
Hình 29. Cửa sổ Đăng nhập ......................................................................................43
Hình 30. Cửa sổ Tra từ .............................................................................................44
Hình 31. Cửa sổ Đọc báo 1 .......................................................................................45
Hình 32. Cửa sổ Đọc báo 2 .......................................................................................45
Hình 33. Cửa sổ Đăng nhập thất bại..........................................................................46
Hình 34. Cửa sổ sau khi Đăng nhập ..........................................................................47
Hình 35. Cửa sổ Tra từ gợi ý.....................................................................................48
Hình 36. Cửa sổ Đọc báo chi tiết ..............................................................................50
VII
BẢNG CÁC BẢNG BIỂU
Bảng 1. Các nhà cung cấp OpenID ...........................................................................18
Bảng 2. Luồng sự kiện Đăng nhập ............................................................................22
Bảng 3. Luồng sự kiện Tra từ ...................................................................................23
Bảng 4. Luồng sự kiện Học từ ..................................................................................23
Bảng 5. Luồng sự kiện Đọc báo ................................................................................24
Bảng 6. Luồng sự kiện Quản lý từ vựng....................................................................25
Bảng 7. Users ...........................................................................................................39
Bảng 8. Dictionaries .................................................................................................39
Bảng 9. News Categories ..........................................................................................40
Bảng 10. News Domain ............................................................................................40
Bảng 11. News Content ............................................................................................40
Bảng 12. Words ........................................................................................................41
Bảng 13. User Words................................................................................................41
Bảng 14. Known Words............................................................................................42
VIII
TÓM TẮT NỘI DUNG
Học từ vựng là một vấn đề lớn đối với nhiều người. Học theo cách truyền thống
là sử dụng từ điển đơn thuần thường không hiệu quả. Hệ thống học từ vựng là một tiện
ích giúp mọi người tăng khả năng ngoại ngữ. Những tính năng rất đơn giản mà hiệu
quả, tra từ nhanh chóng, học từ theo một từ điển tự chọn, phát âm chuẩn, hình ảnh gần
với từ cần học giúp khả năng ghi nhớ lâu hơn. Chức năng đọc báo đáp với dữ liệu
được tự động cập nhật hàng ngày từ các báo nổi tiếng trên internet, thuộc nhiều lĩnh
vực khác nhau như Asia, Americas, Sport, Entertainment. Chức năng này với tính
năng thông minh, tự động làm nổi bật những từ người dùng chưa biết, đồng thời hiển
thị nghĩa khi di chuột lên những từ đó trong tầm nhìn của trình duyệt giúp người dùng
học từ ngay khi đọc tin tức.
Những tính năng đó hy vọng sẽ giúp người dùng có được những trải nghiệm mới
trong học từ vựng, không theo lối khô khan như trước nữa. Chức năng đọc báo dựa
trên kiến thức từ vựng của từng người, tạo được sự hứng thú. Hệ thống và người dùng
có tương tác cao, tạo hiệu quả lớn trong quá trình học tập.
1
CHƯƠNG 1: GIỚI THIỆU
1.1. Đặt vấn đề
Hiện nay nhu cầu học ngoại ngữ đang trở nên rất cần thiết. Mỗi một người đều
hiểu rõ tầm quan trọng của việc học ngoại ngữ, giúp họ tăng khả năng giao tiếp, lương
cao, khả năng thăng tiến. Việc học ngoại ngữ bao gồm học nhiều kỹ năng khác nhau,
như phát âm, ngữ pháp, viết, nói. Trong đó, việc học từ vựng là một công việc khá mất
thời gian, nhiều khi còn khiến người học nản chí.
Trên mạng cũng có rất nhiều phần mềm và trang web hỗ trợ việc học từ vựng.
Nhưng hầu hết những chương trình và phần mềm đó đều khiến cho người dùng nhanh
chóng cảm thấy chán, khả năng ghi nhớ không được lâu, ví dụ như
đều là các trang cho phép người dùng tra từ vựng. Nguyên
nhân là những trang web thường quá đơn điệu, chỉ nêu ra nghĩa của từ mà không có
phương pháp giúp người dùng tăng khả năng ghi nhớ từ đó. Chẳng hạn, khi người
dùng muốn tra từ mother, thì hầu hết đều chỉ đưa ra nghĩa là mẹ, chăm sóc … Tuy rằng
nghĩa thì đúng và đầy đủ, nhưng như thế không thể giúp người dùng ghi nhớ lâu được,
phải đọc đi đọc lại nhiều lần, rất mất thời gian.
Đối với nhiều người thích đọc báo online thì vấn đề về từ vựng cản trở họ rất
nhiều. Nhiều từ khi đọc không biết, lại phải tra từ điển, như thế mất thời gian, cũng
không ghi nhớ được từ hiệu quả.
Google translate là một tiện ích mà nhiều người biết đến. Nó tự động dịch một
đoạn văn bản từ ngôn ngữ này sang ngôn ngữ khác. Tuy nhiên, khi dịch toàn bộ đoạn
văn bản thì nội dung thường không chính xác, vì thế gây bất tiện cho người dùng. Ví
dụ, đoạn văn bản sau: “Law enforcement officials are looking into whether Shahzad
had any foreign connections who may have participated in Saturday's failed bombing
attempt in New York City”, khi được dịch ra thì có nghĩa là “Luật cán bộ thực thi pháp
luật đang xem xét liệu có bất kỳ kết nối Shahzad nước ngoài có thể đã tham gia vụ
đánh bom không thành công trong nỗ lực thứ bảy tại New York City”. Nghĩa được
dịch ra đó không chính xác, gây phiền toái cho người sử dụng.
Hay như tính năng tự động tra từ khi một từ được bôi đen của Stardict.
2
Hình 1. Tính năng tra từ của Stardict
Cửa sổ nghĩa hiện ra che mất không gian đọc, gây khó chịu cho người dùng.
Trên cơ sở những khó khăn đó, ý tưởng xây dựng một trang web trợ giúp mọi
người học từ vựng cần phải được hiện thực hóa. Hệ thống có các chức năng cần thiết
giúp người dùng học từ vựng một cách hiệu quả nhất.
1.2. Tổng quan về giải pháp
1.2.1 Tại sao là dịch vụ Web?
Dịch vụ web đã ra đời từ lâu. Nó có ứng dụng rộng rãi trong nhiều lĩnh vực. Dịch
vụ web chính là tạo ra một nơi lưu trữ liệu và tính toán trên dữ liệu đó, nhiều người có
thể truy cập vào, sử dụng để tạo ra ứng dụng riêng cho mình. Nhận thấy nếu sử dụng
dịch vụ web thì sẽ tiết kiệm được thời gian và công sức, đồng thời ứng dụng cũng sẽ
chạy tốt và ổn định hơn. Dữ liệu chính xác là điều rất cần thiết để ứng dụng có thể tồn
tại lâu dài, đồng thời có nhiều người sử dụng.
1.2.2. Giải pháp Webdict
Webdict là hệ thống chạy trên Internet, cho phép nhiều người truy cập học từ
vựng. Hệ thống được xây dựng sử dụng dịch vụ web, đáp ứng yêu cầu thuận tiện và
hiệu quả cho người dùng.
Trong bộ não con người thì ý thức giác quan chiếm tới 60% (thông tin từ trang
web Nếu
3
gắn thông tin với các hình ảnh cụ thể thì sẽ dễ nhớ hơn. Ví dụ như khi bạn đến thăm
nhà một người bạn mới, lỡ quên mất số nhà, lần sau đến bạn vẫn có thể tìm được cái
nhà ấy vì ở đầu đường có cái cây cầu hoặc có một cây bàng to lớn. Việc học từ vựng
cũng vậy, nhiều từ rất đơn giản, chỉ cần nhìn một lần là nhớ, nhưng nhiều từ thì rất khó
nhớ. Chẳng hạn từ academy có nghĩa là học viện, nếu ngay lần đầu học từ này thì sẽ
khó nhớ, nhưng nếu có thêm hình ảnh các học viện đi kèm thì từ này sẽ được ghi nhớ
lâu hơn, khi nhìn một học viện thì liên tưởng ngay đến từ này. Hoặc từ acrobatically
có nghĩa là tài tình, khéo léo, từ ngày thì rất khó nhớ, nhưng nếu có thêm hình ảnh cầu
thủ Berbatov của MU đang tung người dứt điểm thì sẽ rất dễ nhớ. Trong hình minh
họa, bên trái là kết quả từ trang vdict.com, còn bên phải là kết quả mà hệ thống tìm
được. Rõ ràng có hình ảnh thì sự ghi nhớ tăng lên rõ rệt.
Hình 2. So sánh giữa Vdict và Webdict
Dựa vào điều này, để giúp ghi nhớ từ lâu cần hiển thị hình ảnh kèm theo mỗi khi
người dùng tra từ. Hình ảnh cần gần nhất với từ được tra. Chúng ta đều biết Google là
một bộ máy tìm kiếm nhanh và hiệu quả. Thông qua kết quả thực tế cho thấy khi gõ
một từ trong từ điển vào tìm kiếm hình ảnh trên Google thì đều hiển thị kết quả rất phù
hợp. Vì thế dữ liệu hình ảnh đều được tổng hợp từ Google.
Bạn đang học từ để thi TOEFL, nhưng thật khó khăn nếu cứ cầm quyển sách và
học, không hiệu quả chút nào. Chức năng học từ vựng được xây dựng để trợ giúp
người dùng học từ hiệu quả hơn. Khi người dùng chọn từ điển và tra một từ, rồi nhấn
vào nút học từ, chương trình sẽ hiển thị các từ liên tiếp nhau sau mỗi mười lăm giây,
các từ hiển thị đều có hình ảnh và phát âm đi kèm. Người dùng cũng có thể học các từ
4
liên tiếp bằng cách chọn từ tiếp theo hoặc trước từ đang học hoặc dừng chức năng tra
từ để tìm kiếm một từ bất kỳ.
Hệ thống cũng cho phép người dùng đăng nhập và thêm từ vựng vào từ điển của
mình. Có một điểm đặc biệt là hệ thống không có chức năng đăng ký tài khoản. Nhiều
người dùng không thể hoàn thành chức năng đăng ký vì những yêu cầu khi nhập dữ
liệu quá phức tạp, dài dòng. Trong khi đó Gmail, Yahoo Mail đều rất thông dụng, ít
nhất ai cũng có một tài khoản email. Vì thế, có thể sử dụng các tài khoản email đó
đăng nhập vào hệ thống thì rất thuận tiện cho người dùng. Hệ thống có chức năng đăng
nhập sử dụng Gmail, người dùng chỉ cần gõ email và mật khẩu, hệ thống sẽ tự đăng
nhập và hiển thị email như tên người dùng. Sau khi đăng nhập thì người dùng có thể
thêm các từ đã học vào từ điển của mình. Phần quản lý từ vựng sẽ liệt kê các từ đã học,
thuận tiện khi tra cứu.
Việc học từ vựng đã hiệu quả hơn rất nhiều. Khi đã có được vốn từ khá khá,
người dùng muốn đọc báo online thì việc trợ giúp đọc báo hiệu quả rất cần thiết. Hiển
thị các từ mới sao cho hiệu quả là điều quan trọng. Các từ mới không có trong từ điển
của người dùng sẽ được đánh dấu, khi di chuột đến từ đó và chờ một thời gian, nghĩa
của từ đó sẽ hiển thị bên cạnh. Như thế sẽ tiết kiệm được thời gian, đồng thời học từ
cũng hiệu quả.
Muốn xây dựng được hệ thống thì cần phải có dữ liệu. Mặt khác, từ điển dữ liệu
rất lớn, do đó phải có phương pháp để tìm kiếm nhanh, hiệu quả. Sphinx là một công
cụ để sắp xếp dữ liệu và tìm kiếm khá hiệu quả. CakePHP là một bộ khung dành cho
PHP, hỗ trợ lập trình theo hướng MVC, được dùng để xây dựng các trang web từ nhỏ
tới lớn rất hiệu quả. Dữ liệu về báo được lấy từ RSS của các trang như BCC, VOA
News. Python là một ngôn ngữ khá mạnh trong việc xử lý dữ liệu web, được dùng để
lấy thông tin từ các báo và lưu trữ trên máy chủ.
5
CHƯƠNG 2: TỔNG QUAN VỀ DỊCH VỤ WEB
2.1. Giới thiệu dịch vụ Web
2.1.1. Dịch vụ web là gì?
Là một giao diện lập trình ứng dụng điển hình có thể được sử dụng thông qua
một mạng, như Internet và được thực thi ở một hệ thống máy chủ yêu cầu các dịch vụ
chủ và khách giao tiếp thông qua giao thức HTTP. Dịch vụ web là một nền ứng dụng
dựa trên XML – ngôn ngữ đánh dấu mở rộng và HTTP (theo
2.1.2 Đặc điểm của dịch vụ web
2.1.2.1. Sự tương kết có một ưu tiên cao nhất
[2] Thời điểm hiện tại, trên thế giới có rất nhiều ngôn ngữ lập trình, hệ thống với
đặc thù khác nhau. Các hệ thống làm việc với những mục đích khác nhau, tuy nhiên sự
trao đổi, hợp tác để đi đến một lợi ích chung là điều luôn cần đến. Điển hình ở Việt
Nam, lĩnh vực truyền thông đang phát triển rất mạnh mẽ. Các thuê bao di động đang
tăng trưởng với tốc độ chóng mặt. Nhiều dòng điện thoại mới với các tính năng ngày
càng được cải tiến ra đời. Gần đây nhất là iPhone 3G của Apple. Các ứng dụng trên di
động cũng theo đó mà phát triển không ngừng. Từ trò chơi, ứng dụng văn phòng, giải
trí, tiện ích… Các phần mềm ra đời cần có được sự quảng bá rộng rãi thì số lượng
người dùng sẽ tăng đáng kể. Mobifone chỉ cần gửi một tin nhắn thông báo khuyến mãi
phần mềm là rất nhiều người sẽ tải về và dùng thử. Hoặc quảng bá trên website riêng
của họ, cũng thu hút người dùng không kém. Để làm được điều này thì cần có sự hợp
tác giữa các hệ thống. Tuy nhiên sự hợp tác này không phải lúc nào cũng diễn ra một
cách dễ dàng.
Một ví dụ để thấy sự bất cập khi hai hệ thống muốn hợp tác với nhau. Bạn làm
một ứng dụng trên điện thoại di động. Người dùng phải mất tiền đăng ký mới sử dụng
được. Bạn hợp tác với một nhà cung cấp dịch vụ mạng, ví dụ Mobifone. Họ có phương
thức để trừ tiền của khách hàng. Nhưng đó là bí mật, không thể cung cấp phương thức
đó cho bạn được. Vậy thì làm thế nào để hợp tác được với họ?
Dịch vụ web giải quyết được vấn đề này. Mobifone cung cấp phương thức của họ
dưới dạng một dịch vụ, cho phép bạn gọi hàm đó và họ sẽ thực hiện việc trừ tiền, trả
về kết quả thành công hay không. Như vậy không hề lộ bí mật mà cả hai bên đều hợp
6
tác vui vẻ. Đây chính là ích lợi khi bạn viết ứng dụng và cung cấp nó dưới dạng dịch
vụ web.
2.1.2.2. XML
Dịch vụ web sử dụng XML để trao đổi dữ liệu.
[2] XML là ngôn ngữ được sử dụng trên nhiều nền và ngôn ngữ khác nhau. Nó
gần như HTML, tuy nhiên cũng có sự khác biệt. XML được thiết kế theo hướng dữ
liệu cần lưu trữ là gì, còn HTML thì thiết kế theo hướng dữ liệu sẽ được trình bày như
thế nào (theo trang ). Ví dụ đoạn mã
sau:
Name here
Content here
Như trong ví dụ, các thẻ của XML không được định nghĩa trước mà hoàn toàn
phụ thuộc vào người dùng. Tuy nhiên vẫn có một chuẩn chung đó là một thẻ mở phải
có một thẻ đóng. Trong ví dụ trên nếu là thẻ mở, thì thẻ đóng phải là
. Nó được tổ chức theo cấu trúc dạng cây, xuất phát từ gốc và phát triển theo
từng nhánh. Như ví dụ trên, gốc là menu, có hai nhánh con là name và content.
Điểm mạnh của XML là nó được sử dụng giữa nhiều ngôn ngữ khác nhau. Nếu
dùng C# để tạo ra một file XML thì cũng có thể dùng PHP, ASP.Net để đọc file đó.
Chính vì thế, XML khá phổ biến, được dùng ở mọi nơi.
2.1.2.3. WSDL
Là một ngôn ngữ dựa trên XML, để mô tả, cách thức để truy cập tới một dịch vụ
web [2].
WSDL được cung cấp dưới dạng tài liệu XML. Các thẻ cơ bản cần phải có đó là:
: Định nghĩa kiểu dữ liệu được sử dụng bởi dịch vụ web
: Định nghĩa tin nhắn được sử dụng bởi dịch vụ web
: Phương thức được thực thi bởi dịch vụ web
: Giao thức truyền thông được sử dụng bởi dịch vụ web
Cấu trúc của một tài liệu wsdl như sau:
7
definition of types........
definition of a message....
definition of a port.......
definition of a binding....
Một tài liệu wsdl cũng có thể chứa các thành phần khác, như thành phần mở
rộng.
Dưới đây là một ví dụ về tài liệu wsdl (tham khảo từ trang
Thành phần định nghĩa “glossaryTerms” là tên của cổng, còn
“getTerm” là tên của một phương thức.
8
Phương thức “getTerm” có một tin nhắn vào là “getTermRequest” và một tin
nhắn trả về là “getTermResponse”. Tham khảo chi tiết tại trang
2.1.3. Giao thức dịch vụ web – SOAP
Một giao thức thông dụng khi sử dụng dịch vụ web đó là SOAP. Đơn giản hơn,
nó là một giao thức để truy cập dịch vụ web. Mục đích của SOAP là cho phép ứng
dụng trao đổi dữ liệu thông qua giao thức HTTP. Phiên bản hiện tại của SOAP là 1.2,
được công bố vào ngày 27-04-2007 (theo
Các đặc điểm của SOAP:
- Là một giao thức truyền thông
- Cho phép hai ứng dụng giao tiếp với nhau
- Là một định dạng cho phép gửi thông tin
- Truyền thông tin qua internet
- Là một nền độc lập
- Một ngôn ngữ độc lập
- Dựa trên XML
- Đơn giản và dễ mở rộng
Tại sao lại sử dụng SOAP? Bởi vì nó quan trọng khi phát triển ứng dụng cho
phép các ứng dụng trao đổi thông tin qua internet. RPC là một giao thức cũng cho
phép các ứng dụng trao đổi thông tin qua internet, nhưng nó thường gặp các vấn đề về
bảo mật, nó bị chặn bởi các máy chủ sử dụng proxy, hay tường lửa. Nhưng HTTP
được sử dụng bởi tất các trình duyệt web và máy chủ. SOAP cho phép các ứng dụng
giao tiếp với nhau trên bất cứ hệ điều hành nào, hay công nghệ và ngôn ngữ khác
nhau. Chẳng hạn một chương trình chạy trên máy tính có hệ điều hành Windows 2000
muốn giao tiếp với chương trình chạy trên hệ điều hành Linux, hoặc trên hệ điều hành
Solaris.
9
[2] [7] Một tin nhắn dưới dạng SOAP là một tài liệu XML chứa những thành
phần như sau:
Hình 3. Thành phần của SOAP
- Thành phần Envelope để xác định tài liệu XML đó là một tin nhắn SOAP
- Thành phần Header chứa đựng thông tin tiêu đề
- Thành phần Body chứa đựng yêu cầu và phản hồi.
- Thành phần Fault chứa đựng thông tin về lỗi và trạng thái.
Tin nhắn SOAP phải theo tiêu chuẩn sau:
- Phải được mã hóa dưới dạng XML
- Phải sử dụng tên miền khai báo trong phần Envelope
- Phải sử dụng tên miền đã mã hóa
- Phải không chứa đựng tham chiếu DTD
- Phải không chứa đựng chỉ dẫn xử lý XML
SOAP được sử dụng thế nào. Một tin nhắn SOAP được gửi tới một website có
dịch vụ web với tham số nào đó cần thiết. Website sau đó sẽ phản hồi lại một tài
liệu dưới dạng XML có chứa kết quả tìm kiếm.
Dưới đây là một tin nhắn SOAP:
<soap:Envelope
xmlns:soap=""
soap:encodingStyle="">
10
...
...
...
Dưới đây là một ví dụ về tin nhắn SOAP (theo
Một yêu cầu SOAP:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<soap:Envelope
xmlns:soap=""
soap:encodingStyle="">
IBM
Máy khách gọi tới hàm GetStockPrice với tham số là StockName=IBM. Phản hồi
của máy chủ như sau:
11
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<soap:Envelope
xmlns:soap=""
soap:encodingStyle="">
34.5
Máy chủ trả về kết quả là GetStockPriceResponse với Price=34.5. Phần thông tin
phản hồi này nằm trong Body của tin nhắn SOAP.
2.2. Python
Vấn đề lấy dữ liệu từ các báo quan internet cần một ngôn ngữ nhanh và mạnh.
Python là ngôn ngữ khá tốt trong xử lý xâu, văn bản. Chẳng hạn tương tác với khối
lượng lớn dữ liệu trong các file, hoặc muốn thay đổi tên, hay sắp xếp lại các file hình
ảnh theo một tiêu chuẩn phức tạp.
Bạn có thể viết mã để chạy trên Unix, hay Windows. Bạn có thể viết một chương
trình C/C++/Java, nhưng rất mất thời gian. Python thì rất đơn giản, chạy trên mọi hệ
điều hành, Windows, MacOS X, Unix, đồng thời giúp bạn nhanh chóng có kết quả
trong công việc.
[6] Rất đơn giản để sử dụng. Python mạnh hơn C trong việc kiểm tra lỗi, là một
ngôn ngữ bậc cao, hỗ trợ nhiều kiểu dữ liệu, các mảng linh động và từ điển.
Python cũng cho phép chia nhỏ chương trình để thành các module để sử dụng lại
ở các chương trình khác nhau. Nó cũng có nhiều module có sẵn, như xử lý file, tương
tác socket, hay ngay cả bộ giao diện người dùng.
12
Python là một ngôn ngữ thông dịch, nghĩa là không cần biên dịch hay liên kết
nào cả, chỉ cần file mã nguồn là có thể chạy chương trình.
Python giúp bạn viết chương trình ngắn gọn hơn các ngôn ngữ như C/C++/Java
vì các lý do sau đây:
- Kiểu dữ liệu bậc cao cho phép tối ưu các thao tác phức tạp chỉ trong một câu
lệnh
- Nhóm câu lệnh được kết thúc bởi dấu lùi đầu dòng thay vì dấu mở ngoặc và
đóng ngoặc
- Không cần thiết khai báo biến.
Vì những lý dó trên, nên việc xử lý lấy dữ liệu từ web sử dụng python rất hiệu
quả.
2.3. Sphinx
2.3.1. Giới thiệu
Sphinx là một cỗ máy tìm kiếm sử dụng full-text, được phân phối giấy phép theo
GPL phiên bản 2.
Là một cỗ máy tìm kiếm độc lập, nghĩa là nhanh, tối ưu dung lượng, và thích hợp
với các ứng dụng khác. Sphinx được thiết kế đặc biệt tương thích với cơ sở dữ liệu
SQL.
Hiện tại đang hỗ trợ MySQL, PostgreSQL, hoặc dưới dạng XML.
Giao diện lập trình ứng dụng tìm kiếm được sử dụng trong nhiều ngôn ngữ, như
PHP, Python, Perl, Ruby, Java và cỗ máy lưu trữ MySQL. Nó cũng rất dễ dàng để sử
dụng trong một ngôn ngữ mới, chỉ mất thời gian rất ngắn.
Sphinx là tên viết tắt từ SQL Phrase Index. Tham khảo thêm tại trang
Tại sao phải sử dụng Sphinx để tìm kiếm? Với hệ thống từ điển, dữ liệu là rất
lớn, lên đến hơn 500.000 hàng. Nếu như tìm kiếm một từ, chẳng hạn “baby”, bằng
cách sử dụng câu lệnh thông thường: “select name, meaning from words where
name=’baby’”, thì thời gian tìm kiếm là gần 6 giây. Đó là còn nhanh do từ này có
trong cơ sở dữ liệu, nhưng nếu tìm từ babies mà cũng dùng câu lệnh trên: “select
name, meaning from words where name=’babies’”, thì thời gian tìm kiếm sẽ rất là lâu,
lên đến 12 giây. Nguyên nhân là do với tìm kiếm thông thường, nó sẽ duyệt qua tất cả
13
các hàng trong bảng cho tới khi tìm thấy dữ liệu thỏa mãn. Do đó, nếu từ cần tìm kiếm
nằm ở cuối bảng thì thời gian trả về kết quả là rất lâu. Với hệ thống từ điển, nếu cứ
dùng cách thông thường này thì người dùng sẽ không bao giờ muốn sử dụng hệ thống.
Họ tìm một từ mà thời giản trả về kết quả quá lâu, sẽ khiến họ tức giận và từ bỏ hệ
thống. Do đó, Sphinx là một giải pháp tuyệt vời. Nó index dữ liệu, khi tìm kiếm thì tìm
trong index của nó, và kết quả trả về nhanh chóng. Như với từ baby ở trên, kết quả trả
về trong 0.012 giây, còn nếu không tìm thấy thì thời gian tìm kiếm là 0.000 giây, rất
nhanh chóng. Như thế thì thỏa mãn được người dùng, khiến họ muốn sử dụng hệ thống
lâu dài.
2.3.2. Tính chất
- Tốc độ tạo index rất nhanh (10MB/sec)
- Tốc độ tìm kiếm nhanh (trung bình 0.1sec trên 2-4GB trong tập dữ liệu văn
bản)
- Cung cấp khả năng tìm kiếm phân phối
- Cung cấp khả tìm kiếm trực tiếp trong cơ sở dữ liệu MySQL
- Hỗ trợ tìm kiếm theo cụm từ, theo dạng BOOLEAN, theo từ.
- Hỗ trợ tìm kiếm nhiều trường trong một câu lệnh (tối đa 32)
- Hỗ trợ tìm kiếm theo stopwords
- Hỗ trợ tìm kiếm theo UTF-8
- Hỗ trợ rất tốt với MySQL, PostgreSQL.
Thông tin tại trang
2.3.3. Cài đặt
Sphinx hỗ trợ nhiều hệ điều hành khác nhau: Linux, Windows, FreeBSD,
NetBSD, Solaris, MacOS X.
Để cài đặt Sphinx trên hệ điều hành Windows, trước hết tải Sphinx về từ địa chỉ
Giải nén ta sẽ có được thư mục sphinx. Vào thư mục
đó, tìm đến /bin/searchd.exe. Thêm đường dẫn tới thư mục bin vào biến môi trường
trong windows. Sau đó mở cmd, gõ lệnh sau:
C:\Sphinx> C:\Sphinx\searchd --install --config C:\Sphinx\sphinx.conf --
servicename SphinxSearch
14
Sau khi tạo xong, sẽ có một dịch vụ mới được tạo ra trong windows, vào
services.msc, tìm đến SphinxSearch rồi đặt chế độ khởi động là Automatic.
2.3.4. Tạo mục lục
Trong thư mục sphinx có file sphinx.conf, chứa cấu hình của dữ liệu mà ta sẽ tạo
ra.
Ví dụ tạo mục lục dict như bên dưới:
source dict
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = webdict
sql_port = 3306 # optional, default is 3306
sql_query_pre = SET NAMES utf8
sql_query = SELECT id, name, name_search, name_ascii_search, meaning,
meaning_search, dictionary_id from words
sql_attr_uint = dictionary_id
sql_query_post =
sql_ranged_throttle = 0
}
index dict
{
source = dict
path = /data
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
charset_type = utf-8
min_prefix_len = 0
min_infix_len = 1
15
ngram_len = 1
}
Phần source là định nghĩa kết nối tới cơ sở dữ liệu. Ở đây có các thiết lập như
sql_host, sql_user, sql_pass, sql_db, sql_port. Sau đó là dữ liệu mà sẽ dùng trong
index.
sql_query = SELECT id, name, name_search, name_ascii_search, meaning,
meaning_search, dictionary_id from words
sql_attr_uint = dictionary_id
Dữ liệu sẽ được lấy ra từ bảng words với các trường như trên. Sql_attr_uint là
thuộc tính sẽ dùng để lọc dữ liệu khi tìm kiếm, tức là sẽ lọc theo dictionary_id.
Sau khi đã thiết lập xong cấu hình, tạo index bằng cách mở cmd, chạy lệnh sau:
indexer –config sphinx.conf dict
Như vậy là hoàn thành việc tạo index dữ liệu từ điển.
2.4. CakePHP
2.4.1. Giới thiệu
PHP là một ngôn ngữ khá phổ biến trên thế giới. Nhưng nó lại không có một cấu
trúc cụ thể trong lập trình, tùy thuộc rất nhiều vào từng người lập trình. Họ có thể tùy
biến chương trình của mình theo nhiều cách khác nhau, và đôi khi là theo những cách
có thể gây nguy hiểm cho chương trình của họ. Chính vì thế mà khi lập trình với PHP
nhiều người sẽ thấy khó khăn và đôi khi là phức tạp. Nhiều đoạn mã lặp lại ở nhiều
nơi, hay quên kết nối tới cơ sở dữ liệu … Chính vì thế cần có một bộ khung cho PHP
để giúp việc lập trình đơn giản hơn, nhanh chóng hơn và hiệu quả, an toàn hơn.
PHP hiện tại đã cho phép lập trình OOP (Object Oriented Programming) – lập
trình hướng đối tượng – giống như các ngôn ngữ Java, C++. Từ đây, các nhà phát triển
PHP đã dần dần tạo ra những bộ khung giúp cho PHP phát triển nhanh hơn.
Trên internet có rất nhiều bộ khung, mỗi cái đều có những quy tắc đặt tên riêng,
những cải tiến và cả những lỗi còn tồn tại. Ruby On Rails là một bộ khung khá tốt cho
PHP. Tuy nhiên nó vẫn còn một số điểm mà nhiều người lập trình không muốn sử
dụng nó: Sử dụng nó trong PHP giống như là phải viết cả một hệ thống, khó tùy chỉnh
mã nguồn theo ý của từng nhà lập trình.
16
CakePHP thì đơn giản hơn rất nhiều, nó cung cấp cấu trúc tương thích cho một
ứng dụng PHP.
2.4.2. Mô hình MVC
[1] [5] MVC là tên viết tắt của Model-View-Controller. Tại sao lại có mô hình
này? Bình thường khi lập trình thì mọi xử lý dữ liệu, xử lý logic đều trong một file.
Chẳng hạn khi kết nối tới cơ sở dữ liệu. Trong nhiều file chúng ta đều phải sử dụng tới
nó, như thế mã lặp đi lặp lại rất nhiều. Nếu có thay đổi trong kết nối thì lại phải sửa ở
từng file, rất mất thời gian, không hiệu quả. Trong một file vừa cập nhật dữ liệu vào cơ
sở dữ liệu, vừa xử lý logic, vừa hiển thị tới người dùng. Như vậy rất khó kiểm soát mã
nguồn, người đọc mã nguồn cũng rất khó hiểu.
Còn một vấn đề nữa. Một ứng dụng có nhiều người cùng phát triển. Làm thế nào
để phân chia công việc cho từng người một cách cụ thể khi mà mỗi một file đều tồn tại
nhiều xử lý logic, liên quan tới cơ sở dữ liệu. Chẳng hạn có người chỉ làm về giao
diện, có người chỉ làm về cơ sở dữ liệu. Rõ ràng, với cách truyền thống thì việc phân
chia công việc sẽ không hiệu quả.
Chính vì thế mô hình MVC ra đời, giải quyết được các vấn đề trên, đem lại một
phong cách lập trình khá hiệu quả. Không chỉ ngôn ngữ PHP mà rất nhiều ngôn ngữ
khác, như Java, ASP.Net … đều hỗ trợ.
Hình 4. MVC
Ứng dụng sử dụng MVC được chia thành ba phần riêng biệt:
- Bộ điều khiển (Controller): Chứa đựng các xử lý logic. Mỗi một bộ điều khiển
chứa nhiều phương thức xử lý riêng biệt các yêu cầu. Nó nhận và xử lý dữ liệu từ mô
hình, đồng thời tạo ra các đối tượng sẽ được sử dụng ở khung nhìn.
17
- Mô hình (Model): Là thể hiện dữ liệu. Nó kết nối tới cơ sở dữ liệu, xử lý mọi
vấn đề về dữ liệu, như truy vấn lấy dữ liệu, hay cập nhật, hay xóa… Không có một
tương tác nào giữa mô hình và khung nhìn, tất cả tương tác với khung nhìn được xử lý
thông qua bộ điều khiển.
- Khung nhìn (View): Là một mẫu file dùng để trình bày dữ liệu tới người dùng.
Các biến, mảng, hay đối tượng sử dụng trong khung nhìn được khởi tạo ở trong bộ
điều khiển. Khung nhìn không chứa các xử lý logic phức tạp.
Khi mới làm quen với MVC thì mất một chút thời gian, nhưng khi đã tạo được
ứng dụng rồi thì chắc chắn bạn sẽ không muốn viết ứng dụng theo cách truyền thống
nữa.
2.4.3. Sử dụng
Để sử dụng CakePHP, trước hết vào trang tải xuống bản
CakePHP mới nhất. Sau đó giải nén ra, sẽ được thư mục CakePHP.
Thêm đường dẫn vào biến môi trường trong windows, trỏ tới thư mục
cake/console.
Để sử dụng được CakePHP thì trong cấu hình của apache phải bật LoadModule
rewrite_module modules/mod_rewrite.so bằng cách bỏ dấu # ở đầu dòng trong file
htttpd.conf.
Cấu trúc thư mục của một ứng dụng phát triển bằng CakePHP như bên dưới:
/path_to_app
config/
controllers/
models/
plugins/
tmp/
vendors/
views/
webroot/
index.php
.htaccess
Có ba thư mục quan trọng, đó là controllers, models và views.
- config: Chứa các cấu hình về cơ sở dữ liệu.
- controllers: Chứa các bộ điều khiển
- models: Chứa các mô hình
18
- views: Chứa các khung nhìn
- webroot: Chứa các file javascript, css …
Sau khi đã tạo xong ứng dụng, bắt đầu lập trình bằng cách vào controllers,
models, views để tạo ra các mô hình, bộ điều khiển và khung nhìn mới tùy theo
yêu cầu của ứng dụng.
2.5. OpenID
OpenID là tương lai của dịch vụ web. Mỗi người chỉ cần một tài khoản email duy
nhất trên mạng (tham khảo thêm tại Bạn có thể
dùng nó để đăng nhập vào mọi trang web.
OpenID được phát triển bởi Brad Fitzpatrick vào tháng 5/2005. Trang chủ của
OpenID ở địa chỉ
Hiện nay rất nhiều nhà cung cấp dịch vụ mạng đã hỗ trợ OpenID. Chẳng hạn như
Google hay Yahoo. Có nghĩa là nếu bạn có một tài khoản email abcxyz@gmail.com
hay abcdef@yahoo.com, và trang web có hỗ trợ OpenID, bạn có
thể dùng tài khoản đó và đăng nhập vào trang web mà không phải mất thời gian đăng
ký tài khoản rồi lại phải nhớ thêm một tài khoản nữa. Các nhà cung cấp OpenID, thông
tin được lấy từ địa chỉ
Google Yahoo Microsoft
Facebook LiveJournal MySpace
WordPress Blogger Verisign
Typepad MyOpenID Google Profile
Vidoop Orange Launchpad
Bảng 1. Các nhà cung cấp OpenID
Hệ thống sử dụng OpenID do Google cung cấp. Một chương trình nhỏ mã nguồn
mở do Google cung cấp, tải về tại địa chỉ
samples/source/browse/#svn/trunk/hybrid. Khi người dùng chọn đăng nhập với tài
khoản Gmail, thì một cửa sổ popup hiện ra, yêu cầu nhập Email và Mật khẩu. Toàn bộ
quá trình xử lý do Google. Khi đăng nhập xong thì kết quả trả về là Email đã đăng
nhập.
19
Sử dụng chương trình này rất đơn giản. Khi tải về, giải nén ra có tệp quan trọng
là popuplib.js. Trước hết trỏ đường dẫn tới tệp đó trong dự án của bạn. Sau đó khai báo
hai biến như bên dưới.
var extensions =
{"openid.ns.ext1":"http:\/\/openid.net\/srv\/ax\/1.0",
"openid.ext1.mode":"fetch_request",
"openid.ext1.type.email":"http:\/\/axschema.org\/contact\/email",
"openid.ext1.type.first":"http:\/\/axschema.org\/namePerson\/first",
"openid.ext1.type.last":"http:\/\/axschema.org\/namePerson\/last",
"openid.ext1.type.country":"http:\/\/axschema.org\/contact\/country\/home",
"openid.ext1.type.lang":"http:\/\/axschema.org\/pref\/language",
"openid.ext1.required":"email,first,last,country,lang",
"openid.ns.oauth":"http:\/\/specs.openid.net\/extensions\/oauth\/1.0",
"openid.oauth.consumer":"googlecodesamples.com",
"openid.oauth.scope":"http:\/\/docs.google.com\/feeds\/
http:\/\/spreadsheets.google.com\/feeds\/ http:\/\/www-
opensocial.googleusercontent.com\/api\/people\/",
"openid.ui.icon":"true"};
var upgradeToken = function() {window.location = '/webdict/'; };
var googleOpener = popupManager.createPopupOpener({
'realm' : '
'opEndpoint' : 'https://www.google.com/accounts/o8/ud',
'returnToUrl' : '
'onCloseHandler' : upgradeToken,
'shouldEncodeUrls' : true,
'extensions' : extensions
});
Extensions không được thay đổi. Còn googleOpener có ba cấu hình quan trọng.
Thứ nhất là ‘realm’, đây là địa chỉ mà chúng ta đăng ký và đã được Google xác nhận.
Thứ hai là ‘opEndpoint’ là địa chỉ openid của Google, không được thay đổi. Thứ ba là
20
‘returnToUrl’ là địa chỉ sau khi đăng nhập thành công sẽ được Google trỏ về. Cuối
cùng, có một đường link với id LoginWithGoogleLink. Thêm gọi hàm bên dưới là
chương trình của bạn đăng nhập được với Gmail.
$(document).ready(function () {
jQuery('#LoginWithGoogleLink').click(function() {
googleOpener.popup(450, 500);
return false;
});
});
21
CHƯƠNG 3: PHÂN TÍCH HỆ THỐNG
3.1. Phân tích yêu cầu
3.1.1. Yêu cầu người sử dụng
- Không cần đăng ký tài khoản khi đăng nhập. Sử dụng tài khoản Gmail có sẵn
hoặc đăng ký mới tài khoản Gmail thông qua địa chỉ
- Hệ thống phải cung cấp cho phép người dùng tìm kiếm một từ nhanh chóng, có
phát âm chuẩn, có hình ảnh kèm theo để dễ ghi nhớ.
- Học từ theo từ điển: Hiện các từ liên tiếp nhau. Phải cho phép người dùng lưu
lại một từ vào từ điển của họ.
- Đọc báo: Nội dung của tin tức phải được hiển thị ở vị trí thuận tiện cho người
đọc.
- Nội dung tin tức phải phong phú, thuận tiện cho người dùng tìm được tin mong
muốn. Đọc báo phải giúp tăng khả năng từ vựng của người dùng.
3.1.2. Yêu cầu hệ thống
Từ yêu cầu phía người sử dụng, hệ thống có các chức năng sau:
- Đăng nhập hệ thống: Sử dụng chính Gmail để đăng nhập.
- Tra từ: Hệ thống sẽ tìm trong cơ sở dữ liệu từ phù hợp nhất và hiện nghĩa, đồng
thời có phát âm đi kèm, có ảnh minh họa từ đó. Các ảnh minh họa được lấy từ Google,
đảm bảo kết quả phù hợp nhất với từ được tra. Đồng thời còn tìm kiếm theo các từ
tương tự nếu từ gõ vào không tìm thấy. Chẳng hạn gõ babies thì sẽ tìm ra được baby.
- Học từ: Hiện lên các từ liên tiếp nhau sau mỗi mười lăm giây. Cho phép dừng
học từ bằng cách nhấn nút Pause. Có nút cho hiện từ ngay trước từ hiện tại, từ ngay
sau từ hiện tại.
- Đọc báo: Các tin tức được lấy từ báo nước ngoài. Được phân loại theo chuyên
mục, dễ dàng tìm được tin tức mong muốn. Khi đọc chi tiết một tin thì chỉ hiển thị tin
đó trong tầm nhìn cửa sổ. Nếu tin đó dài quá thì sẽ được cắt thành nhiều trang. Khi đó
có nút cho sang trang sau, trở về trang trước. Có một tập các từ thông dụng, coi như
người dùng nào cũng biết, chẳng hạn như will, has, have, go, do … Kết hợp với các từ
có trong cơ sở dữ liệu của riêng từng người dùng, khi đọc tin sẽ chỉ bôi đậm các từ
không có trong tập dữ liệu trên. Khi người dùng rê chuột lên từ đó, một cửa sổ con
22
hiện lên nghĩa đầy đủ, có phát âm đi kèm. Cửa sổ hiện lên tự động định vị trong phạm
vi khung nhìn, không tràn ra phía ngoài phạm vi cửa sổ.
3.2. Biểu đồ Ca sử dụng
Hình 5. Biểu đồ Ca sử dụng
Biểu đồ Ca sử dụng hệ thống có hai tác nhân, đó là Người dùng và Web Service.
Có năm chức năng chính, đó là Tra từ, Đăng nhập, Từ vựng của tôi, Học từ và Đọc
báo.
3.3. Luồng sự kiện
3.3.1. Đăng nhập
Bảng 2. Luồng sự kiện Đăng nhập
Tên Ca sử dụng Đăng nhập
Tác nhân Người dùng, Web Service
Mức 2
Sự kiện kích hoạt Người dùng nhấn vào đăng nhập
Luồng sự kiện chính:
1. Hiện lên cửa sổ yêu cầu nhập Gmail và mật khẩu
2. Nhấn nút Sign in
3. Dịch vụ của Google thực hiện đăng nhập
23
4. Đăng nhập thành công, quay lại trang chủ
Luồng sự kiện phụ:
3.1 Đăng nhập thất bại, yêu cầu đăng nhập lại.
3.3.2. Tra từ
Bảng 3. Luồng sự kiện Tra từ
3.3.3. Học từ
Bảng 4. Luồng sự kiện Học từ
Tên Ca sử dụng Học từ vựng
Tác nhân Người dùng, Web Service
Tên Ca sử dụng Tra từ
Tác nhân Người dùng, Web Service
Mức 3
Sự kiện kích hoạt Người dùng nhập từ cần tìm kiếm
Luồng sự kiện chính:
1. Nhấn nút Tra từ
2. Truy vấn đến web service với từ đã nhập
3. Tìm thấy kết quả
4. Hiển thị kết quả tìm được bao gồm nghĩa, phát âm, hình ảnh minh họa.
5. Người dùng chọn thêm từ vựng vào cơ sở dữ liệu
Luồng sự kiện phụ:
2.1. Không tìm thấy từ cần tra. Lược bỏ đuôi theo quy tắc rồi tìm lại.
2.1.1. Không tìm thấy, thông báo không có trong cơ sở dữ liệu.
5.1. Kiểm tra trạng thái đăng nhập.
5.1.1. Đã đăng nhập, thêm từ vào cơ sở dữ liệu.
5.1.2. Chưa đăng nhập, yêu cầu đăng nhập.
24
Mức 1
Sự kiện kích hoạt Người dùng nhấn nút Play
Luồng sự kiện chính:
1. Hệ thống tìm từ tiếp theo của từ hiện tại.
2. Truy vấn tới chức năng Tra từ với từ tiếp theo tìm thấy.
3.3.4. Đọc báo
Bảng 5. Luồng sự kiện Đọc báo
Tên Ca sử dụng Đọc báo
Tác nhân Người dùng, Web Service
Mức 1
Sự kiện kích hoạt Người dùng chọn chức năng đọc báo
Luồng sự kiện chính:
1. Người dùng chọn trang web muốn đọc
2. Tìm những bài viết mới nhất từ trang đó
3. Người dùng chọn đọc chi tiết một tin
4. Truy vấn từ vựng đã học của người này
5. Hiển thị thông tin bài viết
6. Hiển thị kết quả tìm được, hightlight từ vựng chưa học
7. Hiển thị thông tin bài viết
8. Người dùng di chuột lên từ vựng đã hightlight
9. Truy vấn nghĩa của từ đã chọn
10. Hiển thị cửa sổ nghĩa của từ.
25
3.3.5. Quản lý từ vựng
Bảng 6. Luồng sự kiện Quản lý từ vựng
Tên Ca sử dụng Quản lý từ vựng của tôi
Tác nhân Người dùng, Web Service
Mức 2
Sự kiện kích hoạt Người dùng chọn chức năng quản lý
từ vựng
Luồng sự kiện chính:
1. Tìm kiếm ID của người dùng
2. Hiển thị từ vựng của người dùng
3. Người dùng chọn chức năng
4. Thực hiện chức năng
26
CHƯƠNG 4: THIẾT KẾ
4.1. Thiết kế hệ thống
Hình 6. Thiết kế tổng quan hệ thống
Hệ thống có bốn thành phần chính, bao gồm Máy chủ web, máy khách web,
máy chủ SOAP và máy khách SOAP. Máy chủ và máy khách web giao tiếp với nhau
thông qua giao thức HTTP. Nói cách khác là người dùng sẽ dùng trình duyệt để học
tập trên hệ thống. Máy chủ là nơi lưu trữ mã nguồn, dữ liệu về từ điển. Máy khách
web giao tiếp với máy khách SOAP thông qua giao thức SOAP. Nhìn vào hệ thống ta
thấy máy chủ web và máy chủ SOAP là riêng biệt, tức là có thể phát triển nhiều hệ
thống khách nhau và dùng cùng một máy chủ SOAP được.
Nội dung thiết kế được tham khảo ở phần [3] [4].
4.1.1. Biểu đồ tuần tự
4.1.1.1. Đăng nhập
Hình 7. Biểu đồ tuần tự chức năng Đăng nhập
27
- Chức năng đăng nhập được thực hiện khi người dùng nhấn vào liên kết “Đăng
nhập với Gmail”.
- Một cửa sổ popup được hiện lên yêu cầu nhập Email và Password. Tại đây, mọi
xử lý đều do Google.
- Kết quả trả về khi đăng nhập xong là thông tin về Email của người dùng.
4.1.1.2. Tra từ
- Chức năng được thực hiện khi người dùng gõ từ vào ô tìm kiếm.
- Khi đang gõ, chức năng gợi ý từ được thực hiện: Khi từ được gõ lớn hơn hoặc
bằng hai ký tự, chuỗi đó sẽ được gửi lên máy chủ, máy chủ tìm kiếm các từ bắt đầu
bằng chuỗi đó, trả lại và hiển thị ra cho người dùng dưới dạng một danh sách.
- Hàm search() ở DictsController được gọi . Hàm này sẽ khởi tạo dịch vụ web và
gọi hàm searchdict() với tham số search_term. Search_term là một mảng bao gồm:
search_term[‘search_term’] và search_term[‘dict_id’].
- Hàm searchdict() mà dịch vụ web thực hiện được mô tả như hình dưới. Đầu tiên
Model kết nối tới máy chủ Sphinx. Sau đó truy vấn dữ liệu thông qua index của
Sphinx, trả về kết quả là một mảng id từ vựng tìm thấy thỏa mãn từ cần tìm. Có một
điểm lưu ý, Sphinx tìm kiếm không như kiểu thông thường khi dùng lệnh SQL. Chẳng
hạn nếu tìm từ baby, dùng SQL thông thường thì câu lệnh là “Select * from words
where name=’baby’”, tuy nhiên Sphinx không tìm kiếm như thế. Kết quả trả về thường
nhiều hơn. Do đó có bước findId(search_term). Bước này sẽ tìm ra từ chính xác mà
người dùng đã gõ vào.
- Nếu như không tìm thấy, tức id==’’, ta loại bỏ đuôi theo quy tắc số nhiều, quá
khứ trong tiếng anh. Lúc này có được search_term_new. Tìm kiếm cho tới khi tìm
thấy.
- Nếu đã tìm thấy, tức id!=’’, truy vấn dữ liệu của từ này trong cơ sở dữ liệu.
- Trả về cho dịch vụ web.
28
Hình 8. Biểu đồ tuần tự chức năng Tra từ - Searchdict
- Có được dữ liệu từ dịch vụ web, hiển thị cho người dùng.
- Người dùng chọn Thêm vào từ vựng của tôi. Tiến hành kiểm tra xem đã đăng
nhập hay chưa. Nếu chưa thì yêu cầu đăng nhập. Ngược lại thêm từ này vào cơ sở dữ
liệu và thông báo thành công.
29
Hình 9. Biểu đồ tuần tự chức năng Tra từ - autoComplete
30
Hình 10. Biểu đồ tuần tự chức năng Tra từ
Biểu đồ tuần tự chức năng tra từ, có tham chiếu đến hai biểu đồ tuần tự
Searchdict và autoComplete.
31
4.1.1.3. Học từ
Hình 11. Biểu đồ tuần tự chức năng Học từ
- Người dùng chọn danh sách từ vựng muốn học.
- Nhấn nút Play, Next hoặc Previous. Hệ thống khởi tạo ngẫu nhiên một từ mới
hoặc xuất phát từ từ đã tìm kiếm. Nếu là Nhấn nút Play thì vòng lặp sau mười lăm giây
sẽ hiển thị từ tiếp theo.
32
4.1.1.4. Đọc báo
Hình 12. Biểu đồ tuần tự chức năng Đọc báo
- Người dùng chọn chức năng đọc báo. Hàm read(1, -1, 1) được gọi trong
DictsController. Trong hàm này thực hiện truy vấn dữ liệu các tin tức trong chuyên
mục có id là 1. Trả về kết quả và hiển thị cho người dùng.
- Khi chọn một chuyên mục thì thực hiện hàm read(category_id, -1, 1) với
category_id là id của chuyên mục được chọn. Làm tương tự với phần trên
- Khi đọc một tin, thực hiện hàm read(category_id, news_id, 1) với news_id là id
của tin tức trong chuyên mục được chọn. Truy vấn được nội dung tin, trả về cho
DictsController. Controller gọi tới hàm collectWord(content) trong Dict Model để tìm
kiếm các từ đã học (nếu đã đăng nhập), và các từ mặc định người dùng đã biết, rồi làm
33
nổi bật các từ còn lại. Model trả về nội dung tin đã được làm nổi bật. Hiển thị kết quả
cho người dùng.
- Người dùng di chuột lên một từ đã làm nổi bật. Hàm searchhightlight() được
gọi tới. Hàm này gọi tới searchdict() của dịch vụ web. Cuối cùng có được nghĩa của từ
và hiển thị dưới dạng một cửa sổ con.
4.1.1.5. Quản lý từ vựng
Hình 13. Biểu đồ tuần tự chức năng Quản lý từ vựng
- Người dùng chọn xem từ vựng của tôi
- Hàm readWord() ở Controller DictsController được gọi.
- Controller truy vấn tới Model lấy dữ liệu về từ vựng của người dùng này và
hiển thị.
- Khi di chuột lên một từ vựng thì làm tương tự với chức năng đọc báo.
4.1.2. Biểu đồ hoạt động
34
4.1.2.1. Đăng nhập
Hình 14. Biểu đồ hoạt động chức năng Đăng nhập
- Người dùng chọn đăng nhập
- Truy vấn tới dịch vụ web, sau đó chuyển về trang chủ
4.1.2.2. Tra từ
- Đầu tiên kiểm tra dữ liệu nhập. Nếu rỗng thì thông báo lỗi. Ngược lại, truy vấn
tới dịch vụ web.
- Nếu tìm thấy dữ liệu, hiển thị dữ liệu và các chức năng.
35
- Nếu chọn thêm vào từ vựng, thì kiểm tra đăng nhập. Nếu chưa thì yêu cầu đăng
nhập. Ngược lại thêm vào cơ sở dữ liệu.
Hình 15. Biểu đồ hoạt động chức năng Tra từ
36
4.1.2.3. Học từ
Hình 16. Biểu đồ hoạt động chức năng Học từ
- Khởi tạo từ vựng ngẫu nhiên hoặc xuất phát từ từ hiện tại
- Truy vấn dữ liệu và hiển thị
- Người dùng chọn chức năng thêm vào từ vựng. Kiểm tra đăng nhập. Nếu đã
đăng nhập thì thêm vào cơ sở dữ liệu, ngược lại yêu cầu đăng nhập.
- Chờ mười lăm giây sau, hoặc nhấn Next, hoặc nhấn Previous thì truy vấn từ
tiếp theo.
37
4.1.2.4. Đọc báo
Hình 17. Biểu đồ hoạt động chức năng Đọc báo
- Hiển thị các chuyên mục
- Chọn chuyên mục đọc báo thì hiển thị các tin từ chuyên mục đó.
38
- Chọn một tin thì truy vấn từ vựng đã học, đồng thời truy vấn tới dịch vụ web để
tìm ra từ gốc của các từ trong nội dung. Tiếp đó làm nổi bật các từ chưa học, đồng thời
hiển thị nội dung.
- Di chuột lên một từ vựng được bôi đậm thì truy vấn tới dịch vụ web, tìm ra
nghĩa của từ đó và hiển thị.
4.1.2.5. Quản lý từ vựng
Hình 18. Biểu đồ hoạt động chức năng Quản lý từ vựng
- Hiển thị từ vựng của người dùng
- Chọn một từ vựng thì truy vấn tới dịch vụ web và hiển thị nghĩa của từ vựng đó.
39
4.1.3. Biểu đồ lớp
Hình 19. Biểu đồ lớp hệ thống
4.2. Thiết kế cơ sở dữ liệu
Bảng 7. Users
Kiểu khóa Kiểu dữ liệu Độ dài
id PRIMARY INT 11
username VARCHAR 255
Hình 20. Bảng Users
Bảng 8. Dictionaries
Kiểu khóa Kiểu dữ liệu Độ dài
id PRIMARY INT 11
name VARCHAR 255
40
Hình 21. Bảng Dictionaries
Bảng 9. News Categories
Kiểu khóa Kiểu dữ liệu Độ dài
id PRIMARY INT 11
name VARCHAR 255
Hình 22. Bảng New Categories
Bảng 10. News Domain
Kiểu khóa Kiểu dữ liệu Độ dài
id PRIMARY INT 11
name VARCHAR 255
Hình 23. Bảng New Domain
Bảng 11. News Content
Kiểu khóa Kiểu dữ liệu Độ dài
id PRIMARY INT 11
original_link VARCHAR 255
title VARCHAR 255
description TEXT
content TEXT
created DATETIME
news_domain_id INT 11
category_id INT 11
41
Hình 24. Bảng New Content
Bảng 12. Words
Kiểu khóa Kiểu dữ liệu Độ dài
id PRIMARY INT 11
name VARCHAR 255
name_search VARCHAR 255
dictionary_id INT 11
meaning TEXT
img_link TEXT
pronounce_link TEXT
Hình 25. Bảng Words
Bảng 13. User Words
Kiểu khóa Kiểu dữ liệu Độ dài
id PRIMARY INT 11
userId INT 11
word VARCHAR 255
42
Hình 26. Bảng User Words
Bảng 14. Known Words
Kiểu khóa Kiểu dữ liệu Độ dài
id PRIMARY INT 11
name VARCHAR 255
Hình 27. Bảng Known Words
Hình 28. Biểu đồ quan hệ của các bảng
Dữ liệu âm thanh, hình ảnh của từ điển được xử lý bởi Python. Thông qua trang
web google.com và tratu.vn để lấy dữ liệu.
43
Cách thức được tiến hành như sau: Với hình ảnh, mỗi từ trong bảng words ta sẽ
vào liên kết Chẳng hạn với từ hello, ta sẽ có liên kết
Vào liên kết này, dựa vào các thẻ ta sẽ tìm được liên
kết phát âm của từ hello. Liên kết tìm được là
Lấy liên
kết đó, cập nhật lại vào bảng words. Với hình ảnh cũng tương tự thế.
4.3. Thiết kế giao diện
4.3.1. Đăng nhập
Cửa sổ đăng nhập yêu cầu nhập email và mật khẩu.
Hình 29. Cửa sổ Đăng nhập
Chức năng đăng nhập được mô tả chi tiết hoạt động trong phần 4.1.1.1.
44
4.3.2. Tra/Học từ
Hình 30. Cửa sổ Tra từ
Chức năng Tra/Học từ được mô tả chi tiết hoạt động trong phần 4.1.1.2 và
4.1.1.3.
Trong cửa sổ này có các thành phần sau:
- Một danh sách các loại từ điển: Anh - Việt, Việt – Anh, Pháp – Việt, Việt-Pháp,
Đức-Việt, Việt-Đức, Nga-Việt, Việt-Việt, Foldoc, WorldNet.
- Một ô để gõ từ tìm kiếm
- Một nút Tra từ
- Một nút Previous
- Một nút Play
- Một nút Next
- Một liên kết Thêm vào từ vựng của tôi.
4.3.3. Đọc báo
Trang liệt kê các tin tức từ một chuyên mục.
Chức năng này được mô tả chi tiết hoạt động trong phần 4.1.1.4.
45
Trong cửa sổ này có các thành phần sau:
- Bên trái: Hiển thị các chuyên mục.
- Bên phải: Khi vào một chuyên mục, hiển thị tin tức từ chuyên mục đó. Khi vào
chi tiết một tin, hiển thị nội dung của tin đó.
Hình 31. Cửa sổ Đọc báo 1
Trang chi tiết khi đọc một tin
Hình 32. Cửa sổ Đọc báo 2
46
CHƯƠNG 5: CÀI ĐẶT VÀ THỬ NGHIỆM
5.1. Đăng nhập
Sử dụng OpenID mà Google cung cấp để đăng nhập vào hệ thống. Để làm được
điều này, trước hết trang web phải được đăng ký và xác nhận bởi Google. Khi đó,
trong chương trình, muốn sử dụng đăng nhập này thì cần thiết lập một vài thông số cần
thiết.
Hình 33. Cửa sổ Đăng nhập thất bại
Địa chỉ OpenId của Google, đó là https://www.google.com/accounts/o8/ud, địa
chỉ mà đã đăng ký với Google. Địa chỉ này phải chính xác, nếu không sẽ không được
xác nhận và quá trình đăng nhập sẽ thất bại. Cuối cùng là địa chỉ mà sau khi đăng nhập
thành công sẽ được trình đăng nhập tự động trỏ sang, ở đây là địa chỉ
Khi nhấn Sign in, toàn bộ do Google xử lý và trả về kết quả cho hệ thống. Như
bên dưới, khi đăng nhập không thành công, có thông báo hiện lên.
Trong trường hợp đăng nhập thành công, cửa sổ đăng nhập sẽ được tự động đóng
lại và chuyển người dùng về trang chủ, với tên người dùng là email đã đăng nhập.
47
Hình 34. Cửa sổ sau khi Đăng nhập
5.2. Tra từ/Học từ vựng
Hệ thống sử dụng dịch vụ web, cho nên điều quan trọng nhất là máy chủ SOAP.
Có file wsdl mô tả dịch vụ web. Trong CakePHP, để tạo một máy chủ SOAP, sử dụng
câu lệnh như sau:
$server = new SoapServer("dicts.wsdl");
$server->setClass("Dict");
SOAP được khởi tạo và sẵn sàng chờ yêu cầu từ phía khách.
Để gởi một yêu cầu lên máy chủ dịch vụ web, sử dụng trong CakePHP như sau:
$client = new SoapClient("dicts.wsdl");
$result = $client->searchdict($search);
Trên máy chủ có phương thức searchdict. Tham số đầu vào là một mảng, gồm có
dictionary_id và từ cần tìm kiếm. Khi tìm một từ sẽ trả về kết quả là một mảng bao
gồm tên, id, nghĩa, đường dẫn file âm thanh, đường dẫn file ảnh của từ đó.
Phương thức searchdict được dùng nhiều lần. Vì là dịch vụ web, cho nên sau này
muốn phát triển các ứng dụng trên các ngôn ngữ thì hoàn toàn có thể gọi phương thức
này và chỉ cần hiển thị dữ liệu đã tìm được ra giao diện chương trình là được, không
mất thời gian xử lý lại dữ liệu.
Khi người dùng tra từ có chức năng gợi ý các từ. Chức năng này sử dụng phương
thức request. Khác với searchdict, phương thức này trả về kết quả là một mảng các từ
bắt đầu với các ký tự người dùng gõ vào. Ví dụ bên dưới là khi người dùng gõ vào từ
“big”, các từ gợi ý hiện ra:
48
Hình 35. Cửa sổ Tra từ gợi ý
Khi tra một từ, chương trình sẽ gọi tới hàm searchdict. Chẳng hạn từ điển chọn là
Anh-Việt, tìm kiếm từ big, khi đó mảng $search như sau: $search[‘dictionary_id’]=1,
$search[‘search_term’]=”big”. Truyền tham số này vào hàm searchdict. Kết quả do
hàm này trả về là một mảng bao gồm id=id của big, name=’big’, meaning=nghĩa của
big, img_link và pronounce_link. Khi hiển thị, âm thanh và hình ảnh đồng thời được
hiển thị. Trong cơ sở dữ liệu một số từ khi tìm với Google không ra kết quả cho nên
không có ảnh, tuy nhiên số lượng không nhiều.
Có một vấn đề khi tìm kiếm. Đó là người dùng không biết được từ gốc của từ
muốn tìm kiếm là gì. Ví dụ từ babies, hoặc từ loved. Điều gì sẽ xảy ra khi người dùng
gõ từ này. Với những từ này nó đều theo quy tắc, đó là số nhiều hoặc quá khứ. Với số
nhiều, chẳng hạn:
baby -> babies
love -> loves
teach -> teaches
…
Với quá khứ:
love -> loved
49
teach -> teached
search -> searched
…
Tất cả đều có quy tắc. Do đó để xử lý trường hợp với những từ này, ta làm như
sau: Tìm kiếm bình thường với từ người dùng gõ vào, nếu không tìm thấy thì thực hiện
cắt bỏ đuôi của từ đó theo quy tắc. Những từ có quy tắc là những từ kết thúc với đuôi
sau đây: s, es, ies, d, ed, ied, ing, er, ly, est.
Tìm kiếm lại với từ đã được cắt bỏ đuôi, thực hiện lại vòng lặp nếu không tìm
thấy. Cứ làm như thế cho tới khi tìm thấy từ hoặc không thể cắt bỏ được nữa, trả về kết
quả đã tìm kiếm.
Module tra từ là module quan trọng nhất trong hệ thống. Nó được sử dụng lại
nhiều lần, nhất là trong chức năng đọc báo.
5.3. Đọc báo
Hiện tại hệ thống mới chỉ có báo ngôn ngữ tiếng Anh, được lấy từ hai báo nổi
tiếng là voanews và bbc. Dữ liệu được cập nhật thường xuyên sử dụng python.
Người dùng khi đọc báo nên đăng nhập vào hệ thống, như thế sẽ vừa học được
từ, vừa thêm được từ vào từ vựng, từ đó tăng dần khả năng từ vựng của mình.
Để hiển thị các từ người dùng chưa biết, nguyên tắc xử lý như sau. Có một bảng
chứa các từ thông dụng, như will, have, you, me, they … Kết hợp với bảng từ vựng
của người dùng. Khi đọc chi tiết một tin, chương trình sẽ phân tách tin đó ra thành
từng từ. Nếu từ đó không nằm trong những từ thông dụng hay từ mà người dùng đã
học thì từ đó sẽ được bôi đậm, cho biết đó là từ mới. Khi người dùng rê chuột lên từ đó
và chờ một lát, nghĩa và phát âm của từ đó được hiện lên. Xem minh họa bên dưới.
Nghĩa được hiện lên qua một cửa sổ nhỏ, trong tầm nhìn của người dùng. Để làm được
điều này, chương trình tự động xác định vị trí của từ được bôi đậm, hiện của sổ theo vị
trí đó. Chẳng hạn với hình bên dưới, từ “slick” nằm ở vị trí gần cuối trang, cho nên cửa
sổ nghĩa của từ đó được hiện lên bên trên. Làm như thế người dùng sẽ cảm thấy thuận
tiện. Cửa sổ nghĩa hiện lên cũng không làm khuất vùng đọc của người dùng. Chẳng
hạn cũng từ “slick” kia, người dùng đã đọc tới từ đó thì sẽ được tiếp đến từ “although
toxic fumes …”, như vậy không bị che. Hoặc nếu đọc đến dòng thứ 3, có từ controlled,
thì các từ trên cùng dòng đó sẽ không bị che khuất.
50
Hình 36. Cửa sổ Đọc báo chi tiết
51
KẾT LUẬN
Xuất phát từ nhu cầu học ngoại ngữ là cần thiết, Webdict được phát triển với mục
đích đáp ứng tốt nhất cho người học. Trong quá trình phát triển hệ thống, tôi đã học
được rất nhiều điều. Kỹ năng phát triển toàn diện một hệ thống từ đầu, sử dụng các
tiện ích, công nghệ một cách thuần thục. Thầy Hoàng cung cấp cho tôi nhiều kiến thức
bổ ích, dạy cho tôi lối tư duy theo cách phục vụ tốt nhất cho người dùng. Để đáp ứng
tốt nhu cầu của người sử dụng, hệ thống cần nhanh, chính xác, thuận tiện trong sử
dụng.
Dựa trên yêu cầu đó, CakePHP, SOAP, Sphinx là các giải pháp tốt nhất cho hệ
thống. Không cần cài đặt, chỉ cần kết nối Internet là có thể học tập thoải mái với
Webdict. Tra từ nhanh chóng, học từ hiệu quả, người dùng học tập sẽ thấy kiến thức
được nâng cao rõ rệt. Tin tức được cập nhật hàng ngày với dữ liệu từ các báo nổi tiếng.
Đọc báo với từ điển theo kiến thức của người sử dụng là một tiện ích khác, người dùng
sẽ không thấy chán khi dùng hệ thống. Hệ thống hiện tại đáp ứng khá tốt cho người
học tiếng Anh. Tuy các từ điển khác cũng được hỗ trợ, như Pháp, Đức, nhưng vẫn
chưa được chuẩn. Để đáp ứng được nhiều ngôn ngữ hơn nữa thì hệ thống cần được
nâng cấp nhiều hơn nữa. Hy vọng người dùng sẽ tìm thấy được một người bạn thân
thiết trong quá trình học tập ngoại ngữ của mình.
52
TÀI LIỆU THAM KHẢO
[1] David Golding. Beginning CakePHP: From Novice to Professional. Apress.
2008.
[2] Eric Newcomer. Understanding Web Services- XML, WSDL, SOAP and
UDDI. Addison-Wesley Professional. 5/2002.
[3] Harald Storrle. Semantics of UML 2.0 Activities. 2004.
[4] Harald Storrle. Semantics and Verification of Data Flow in UML 2.0
Activities. 2004.
[5] John Anderson. CakePHP Programmer's Reference Guide. Cake Software
Foundation Inc. 2006.
[6] Mark Pilgrim. Dive Into Python. Free Software Foundation. 5/2004.
[7] Robert Englander. Java and SOAP. O'Reilly. 5/2002.
Các file đính kèm theo tài liệu này:
- LUẬN VĂN-XÂY DỰNG DỊCH VỤ WEB HỌC TỪ VỰNG.pdf