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
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. 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
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ỉ http://vsearch.vn/ webdict/users/login/google.
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.
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:
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 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.
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.
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.