TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ──────── * ─────── ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN XÂY DỰNG HỆ THỐNG TỪ ĐIỂN BKDICTIONARY SỬ[.]
PHẦN MỞ ĐẦU
Đặt vấn đề
Mọi tri thức trên thế giới đều được truyền đạt thông qua ngôn ngữ Chính vì vậy để tiếp thu được nguồn tri thức vô tận của nhân loại thì hiển nhiên chúng ta phải sử dụng được các ngôn ngữ Tuy nhiên, thật khó để có thể biết hết mọi từ, mọi ngữ nghĩa của một ngôn ngữ Thậm chí tất cả chúng ta cũng không ai dám khẳng định mình nắm bắt hết mọi thứ của tiếng mẹ đẻ Chính vì vậy từ điển là một công cụ không thể thiếu cho việc học tập nghiên cứu và làm việc Nhưng thật vất vả khi lúc nào cũng phải có một cuốn từ điển dày cộp bên cạnh, mặc dù tấn xuất sử dụng đến chúng là rất nhỏ
Giải pháp khắc phục khó khăn này chính là một quyển từ điển trên máy tính Ưu thế về khả năng lưu trữ dự liệu vượt trội so với từ điển giấy thông thường, cùng với việc sử dụng máy tính, mạng Internet ngày càng trở thành một công cụ thiết yếu trong học tập , cuộc sống, công việc hàng ngày; từ điển trên máy tính đã trở thành một phần không thể thiếu của hầu hết các máy tính ngày nay
Hiện nay ở nước ta có rất nhiều phần mềm từ điển như: Lạc Việt, English Study, MutiDictionary, Vdict, từ điển của tác giả Hồ Ngọc Đức, từ điển của tác giả Huy Biên, … Ở nước ngoài thì có Stardict, Babylon, Lingoes, Hoặc các từ điển trực tuyến như của Lạc Việt, BaamBoo, Wikimedia,…
Tuy có nhiều phần mềm từ điển như vậy nhưng các từ điển này vẫn còn nhiều vấn đề chưa đáp ứng được yêu cầu cao của người dùng như: CSDL từ điển chưa phong phú, không đáp ứng được nhiều ngôn ngữ trong một phần mềm Đồng thời các từ điển này còn sử dụng chưa được thực sự tiện dụng chưa cung cấp cho người dùng nhiều sự lựa chọn phục vụ cho các yêu cầu công việc khác nhau, chưa tự động tra được trên hầu hết các nền hiển thị (web, cửa số ứng dụng thông thường, pdf,…).
Vì vậy việc xây dựng một hệ thống tổng thể cung cấp nhiều chức năng đáp ứng các yêu cầu công việc đa dạng của người dùng là cần thiết Một hệ thống sử dụng tập CSDL từ điển phong phú, đa ngôn ngữ khắc phục nhược điểm CSDL ít, không chuẩn hóa của các từ điển trên Dễ dàng chia sẻ các tài nguyên từ điển, phát huy sức mạnh của cộng đồng mạng, xây dựng các CSDL cho tất cả các ngôn ngữ Tạo lập các cơ sở dữ liệu riêng biệt của các cơ quan, tổ chức, cá nhân có nhu cầu tổ chức riêng CSDL từ điển cho mình Đồng thời hướng tới mục tiêu xây dựng các cơ sở dữ liệu chuyên biệt cho từng lĩnh vực kinh tế, xã hội, khoa học Cải thiện tính tiện dụng của phần mềm từ điển, cung cấp một môi trường tra cứu dễ dàng hơn với nhiều chức năng tra cứu, phát âm, dịch tự động, tra cứu nhanh trên nhiều nền như
Trong đồ án này, ta sẽ đi nghiên cứu, thiết kế , xây dựng một hệ thống tổng thể như vậy.
Yêu cầu về hệ thống từ điển
Để có thể nắm bắt được các yêu cầu về hệ thống từ điển, chúng ta đi xem xét tất cả các vấn đề mà người dùng gặp phải:
Vấn đề khó khăn Giải pháp đề xuất
Thiếu cơ sở dữ liệu từ điển Nhất là các từ điển chuyên ngành Các cơ sở dữ liệu lại không thống nhất với nhau Các từ điển hầu hết chỉ sử dụng một vài cơ sở dữ liệu từ điển cố định.
Sử dụng một chuẩn dành cho cơ sở dữ liệu từ điển là chuẩn DICT Format Các cơ sở dữ liệu từ điển sẽ được xây dựng dựa trên 1 format duy nhất, hoặc có thể convert từ các nguồn CSDL khác Sau đó phần mềm từ điển chỉ cần hỗ trợ duy nhất chuẩn này tương đương với việc có thể thêm bất cứ loại từ điển nào tùy ý thích người dùng
Các từ điển hỗ trợ ít ngôn ngữ Với chuẩn DICT Format, việc hỗ trợ đa ngôn ngữ trở lên đơn giản hơn Chỉ cần có CSDL của ngôn ngữ đó đã được xây dựng theo chuẩn DICT là có thể sử dụng trong phần mềm từ điển.
Các từ điển thiếu các kiểu tra từ thông dụng và hữu ích như trên từ điển giấy thông thường là tra từ theo tiền tố hậu tố, …
Có rất nhiều bộ CSDL kiểu này đã được xây dựng Chỉ việc đưa những CSDL này vào là người dùng đã sử dụng được các chức năng hữu ích đó. Đa số các từ điển thiếu chức năng phát âm Làm thiếu hẳn đi một ưu thế của từ điển trên máy tính đó là tính mutilmedia
Hiện nay có rất nhiều các SDK hỗ trợ việc phát âm trong các ngôn ngữ Nổi bất nhất là Speech SDK của Microsoft có thể dễ dàng áp dụng vào phần mềm từ điển
Kết quả tra cứu trả lại người dùng còn nghèo nàn , đặc biệt với các từ có nhiều ý nghĩa trên các lĩnh vực khác nhau Đó là do các từ điển thường chỉ tra được trên một CSDL tại một thời điểm
Xây dựng từ điển hỗ trợ tra trên nhiều CSDL Đồng thời xây dựng chiến thuật sắp xếp nhằm đưa ra kết quả trực quan và hữu ích nhất đến người dùng
Chức năng Click and See thiếu hoặc làm việc không tốt Thông thường với những người dùng rất hay vừa đọc tài liệu vừa tra cứu từ điển trên cùng một máy tính Chức năng Click and See là một chức năng rất hay đáp ứng yêu cầu đó Nhưng hiện nay các phần mềm từ điển thường không hỗ trợ hoặc hỗ trợ kém Không tra được trên một số nền như pdf, web,ảnh,…
Xây dựng chức năng Click and See hoạt động trên nhiều nền
Không cho phép người dùng truy cập tới các CSDL đặt trên các Dict
Sử dụng DICT Protocol xây dựng DICT server, Dict Client cho phép đặt CSDL trên các server.
Các từ điển trên nền Web thiếu tính tương tác thân thiện với người dùng như trên Desktop
Sử dụng công nghệ AJAX xây dựng từ điển online Xây dựng các Add- Ons , plugin cho phép người dùng tra từ điển mọi nơi, mọi lúc
Vấn đề của học sinh sinh viên.
Học sinh, sinh viên chủ yêu sử dụng phần mềm từ điển cho mục đích học tập
Vấn đề của các cơ quan, doanh nghiệp.
Khối cơ quan doanh nghiệp chủ yếu quan tâm đến hiệu quả làm việc và
Vấn đề khó khăn Giải pháp đề xuất.
Thiếu các công cụ hỗ trợ học tập, ghi nhớ từ mới, ngữ mới.
Xây dựng thêm chức năng Sticky Note cho phép dễ dàng tạo Note cho các từ
Vấn đề khó khăn Giải pháp đề xuất.
Cập nhật , thống nhất giữa các từ điển trong các máy trong cơ quan
Xây dựng Dict Server cài trên máy chủ của cơ quan , cài đặt Dict Client cho các máy tính khác trong cơ quan Khi cần cập nhật thì chỉ cần cập nhật từ điển trên Server.
Các tiêu chí của một hệ thống từ điển hoàn chỉnh
Giao diện thân thiện, dễ sử dụng, thuận tiện cho người dung
Nhiều CSDL, dễ dàng thêm vào các CSDL theo nhu cầu
Phân loại từ ngữ trả về kết quả đúng ý người dùng.
Hỗ trợ người dùng tra từ theo nhiều cách từ phần mềm, web.
Khả năng phát âm tốt
Nhiều chức năng nâng cao như dịch tự động, ghi nhớ,…
Có khả năng tra nhanh trên màn hình máy tính.
Khảo sát đánh giá hệ thống phần mềm từ điển hiện tại
Là từ điển thương mại đầu tiên và duy nhất ở Việt Nam Tuy được sử dụng rất rộng rãi nhưng nó cũng có rất nhiều điểm gây khó khăn cho người sử dụng Ta sẽ đi xem xét ưu nhược điểm của từ điển này.
Đáp ứng các chức năng cơ bản của một phần mềm từ điển như chức năng tra cứu, đọc , chỉnh sửa từ, click and see,…
- Bố trí giao diện xấu, khó nhìn gây khó chịu cho người sử dụng.
- Sử dụng không thuận tiện 1 số chức năng như việc đặt tab cho các thành phần.
- CSDL ít Muốn sử dụng các CSDL từ điển ngôn ngữ khác nhau phải cài những phiên bản phần mềm khác nhau Với mỗi phiên bản, không cho phép thay đổi, chỉ sử dụng cho mục đích tra cứu một ngôn ngữ duy nhất
Từ điển Lingoes đại diện cho lớp các từ điển được cung cấp trên Internet Trong lớp từ điển này phải kể đến như: Stardict, Lingoes, Vdict, Babylon,MultiDictionary,
… Những từ điển kiểu này thường được học sinh, sinh viên sử dụng Ta chọn ra một từ điển được đánh giá cao nhất trong đó là từ điển Lingoes để xem xét ưu nhược điểm.
Ưu điểm: Ngoài những tính năng cơ bản của từ điển thông thường,
Lingoes có một số ưu điểm như sau:
Giao diện thân thiện dễ sử dụng
Chức năng Tranlation rất hay Sử dụng nhiều engine sẵn có trên Internet.
Cung cấp một số dịch vụ dịch thuật trực tuyến.
- Nghĩa khá nhiều không có sự phân loại
- Click and see trên pdf không được Trên các nền khác thì chưa tốt lắm, không bắt được đúng từ
Tra trên nhiều loại từ điển
Phân loại nghĩa tốt tạo mục lục rõ ràng
Sử dụng mã nguồn mở của MediaWiki nên kế thừa được hết các đặc điểm về tính mở, cho phép người dùng tự edit từ điển.
Xây dựng cộng đồng cho phép người dùng tham gia xây dựng từ điển.
- Tạo cảm giác như tra trên Web tĩnh
- Chỉ mới đáp ứng nhu cầu tra cứu đơn giản trên web chứ chưa cung cấp một giải pháp tổng thể tốt.
Cơ sở dữ liệu từ điển
Trong việc xây dựng hệ thống phần mềm từ điển, một vấn đề bắt buộc phải thực hiện là chọn lựa, xây dựng cơ sở dữ liệu từ điển Việc xây dựng một CSDL từ điển từ điển gây tốn kém, thứ hai là gây lãng phí vì hầu như CSDL từ điển cho một song ngữ nào đó đều gần giống nhau
Một giải pháp thông thường là sử dụng các từ điển sẵn có Rất may, hiện nay trên Internet tồn tại rất nhiều CSDL từ điển miễn phí Chúng ta có thể download các CSDL này về để sử dụng một cách dễ dàng Do các từ điển này được cộng đồng mở trên Internet – những người đến từ khắp nơi trên thế giới, sử dụng nhiều ngôn ngữ khác nhau nên các CSDL từ điển miễn phí này rất phong phú, đa dạng có thể đáp ứng hầu như mọi yêu cầu về các ngôn ngữ khác nhau Thêm một ưu điểm nữa là các CSDL từ điển đa số sử dụng chuẩn chung là chuẩn DICT Vì vậy nếu ta xây dựng một phần mềm từ điển hỗ trợ chuẩn DICT thì có thể sử dụng hầu hết các CSDL này.
Không chỉ có CSDL từ điển miễn phí, trên mạng còn tồn tại những server từ điển miễn phí Những server này cho phép tra cứu thông qua Internet trên rất nhiều CSDL Có thể kể ra đây rất nhiều server từ điển miễn phí như :dict://dict.org, dict://mova.org, dict://vocabulary.aioe.org, dict://dict.tugraz.at, dict://dict.tu- chemnitz.de, dict://dict.die.net , dict://test.dict.org, dict://dict.arabeyes.org, dict://lividict.org, dict://dict.saugus.net, …
Các server này đều sử dụng DICT protocol nên rất dễ dàng cho việc tra cứu từ xa Mục tiêu xây dựng hệ thống từ điển của chúng ta là có thể tận dụng hết những DICT server này cho phép đáp ứng tất cả các nhu cầu tra cứu dịch thuật cho các ngôn ngữ khác nhau.
Việc sử dụng các CSDL từ điển không chỉ bó hẹp trong việc chọn nhiều CSDL, nhiều ngôn ngữ mà còn phải phân loại, định hình nhằm đưa ra các kết quả tra cứu hợp với mong muốn của người dùng nhất Đồng thời cũng cung cấp giải pháp cho các cơ quan tổ chức, cá nhân muốn xây dựng, sử dụng cho riêng mình những CSDL từ điển riêng biệt.
Mục đích của đồ án
Xuất phát từ những yêu cầu trên, đồ án sẽ thực hiện những mục sau:
Tìm hiểu về chuẩn từ điển DICT, WordNet,
Xây dựng từ điển trên Desktop hoạt động trên nhiều loại CSDL.
Thực hiện Get Text và tra từ trên mọi nền như Web, PDF,
Phát triển từ điển với Microsoft Speech SDK tạo khả năng đọc từ.
Xây dựng Dict Server, Dict Client, Dict Protocol Tạo một từ điển trên nền Web với công nghệ AJAX.
Xây dựng một từ điển trên Desktop có thể sử dụng nhiều loại CSDL theo chuẩn DICT , WordNet, Thuận lợi cho việc sử dụng nhiều loại ngoại ngữ như
Anh,Pháp,Nhật,Việt,Đức,Nga,
Xây dựng hệ thống từ điển với DICT protocol theo mô hình Server-Client kết hợp sử dụng các Dict Server miễn phí trên mạng.
Xây dựng trang web từ điển công nghệ Ajax.
Cấu trúc luận văn
Phần I PHẦN MỞ ĐẦU: Đặt vấn đề xây dựng hệ thống.
Phần II KIẾN THỨC CHUNG: Nêu ra những kiến thức, kĩ thuật sử dụng trong đồ án
Phần III.PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Phần IV CÀI ĐẶT VÀ SỬ DỤNG HỆ THỐNG.
Chuẩn DICT
DICT format
a Giới thiệu về DICT format
Phần quan trọng nhất đối với một ứng dụng từ điển chính là cơ sở dữ liệu Việc xây dựng CSDL cho từ điển phải đảm bảo được khả năng truy cập nhanh bởi dữ liệu của từ điển thường khá lớn, lên tới hàng chục nghìn đến hàng trăm nghìn từ.
Thông thường mỗi phần mềm từ điển lại có một cách tổ chức CSDL từ điển riêng của mình Do vậy, mỗi từ điển phải tự xây dựng các CSDL riêng cho mình và mỗi CSDL chỉ có thể dùng cho một từ điển duy nhất Do vậy thông thường một phần mềm từ điển chỉ có một vài CSDL xác định không đáp ứng được nhu cầu sử dụng đa dạng của người dùng.
Các CSDL từ điển hiện nay chủ yếu xuất hiện dưới dạng mở nghĩa là do các cá nhân, tổ chức phi lợi nhuận xây dựng lên, được phát hành miễn phí chủ yếu trên môi trường mạng Vì vậy một nhu cầu tự nhiên là chia sẻ việc sử dụng các CSDL từ điển đó
Sẽ thật là khó khăn nếu mỗi CSDL lại được xây dựng một kiểu, khi đó muốn sử dụng CSDL nào ta phải có chương trình từ điển tương ứng hoặc chí ít là viết chương trình chuyển đổi Thật may, DICT.ORG (www.dict.org) đã xây dựng một format (định dạng) từ điển rất dễ sử dụng, format này đã được dùng để xây dựng những bộ từ điển khá lớn Đó là DICT format, được sử dụng rộng rãi chia sẻ rất nhiều các CSDL mở. b Mô tả chi tiết về DICT format.
DICT format được mô tả như sau:
Toàn bộ CSDL được chứa trong 2 file, một file chứa nghĩa của từ và một file index File index bao gồm tên từ, vị trí nghĩa của từ bắt đầu trong file chứa nghĩa và độ dài của nghĩa
Vị trí bắt đầu và độ dài của nghĩa được mã hoá theo cách như sau: Sử dụng
Trong đó: chữ cái A tương đương số 0, chữ cái B tương đương số 1 v.v
Giữa từ, vị trí bắt đầu và độ dài nghĩa phân cách nhau bởi ký tự tab (ASCII
Mỗi dòng trong file index chứa dữ liệu của một từ Các dòng phân cách nhau bởi ký tự xuống dòng (ASCII 10).
Ví dụ trong file index của từ điển Đức-Việt có một dòng như sau:
Như vậy nghĩa của từ Abdeckung trong file chứa nghĩa sẽ bắt đầu tại offset kbpP (theo mã 64 ký tự) và có độ dài là D3.
Việc chuyển từ mã cơ số 64 về cơ số 10 được thực hiện như sau: Đối với vị trí bắt đầu: kbpP Ta có k (ở cơ số 64) = 36 (ở cơ số 10), b = 27, p = 41, P = 15 Như vậy chuyển sang cơ số 10, mã kbpP có giá trị là: 36*643 + 27*642 + 41*641 + 15*640 = 9550415 Đối với độ dài nghĩa: D3 Ta có D = 3, 3 = 55 Như vậy chuyển sang cơ số
10, mã D3 ở cơ số 64 có giá trị là: 247.
File index được sắp xếp để giảm bớt thời gian tìm kiếm Việc mã hoá theo cơ số 64 như trên giúp cho kích thước file index giảm xuống rất nhiều so với không mã hóa.
Còn cấu trúc của file chứa nghĩa gồm các phần như sau:
= cau vi du cho dinh nghia 1 + nghia cua cau do
= cau vi du cho dinh nghia 2 + nghia cua cau do
Nghĩa của mỗi từ gồm một phần như trên, các nghĩa của mỗi từ nối tiếp nhau liên tục. c Ứng dụng DICT format.
Phần khó khăn xây dựng một hệ thống từ điển là xây dựng CSDL Nhưng với việc sử dụng DICT format, chúng ta có thể sử dụng rất nhiều bộ CSDL từ điển miễn phí sẵn có trên Internet được xây dựng cho hầu hết các ngôn ngữ.
Việc sử dụng DICT format cũng cho phép người dùng có thể tự xây dựng nên những CSDL của riêng họ, hoặc sử dụng những CSDL sẵn có phù hợp với nhu cầu sử dụng của họ Công việc chỉ đơn giản tìm kiếm một CSDL đáp ứng yêu cầu rồi sau đó thêm vào phần mềm từ điển Điều này đảm bảo tính đa dạng, đáp ứng tốt các nhu cầu sử dụng khác nhau của người dùng.
DICT Protocol
a Giới thiệu về DICT Protocol.
Cách đây nhiều năm, thông qua giao tiếp Internet truy cập tới các định nghĩa ngôn ngữ chủ yếu sử dụng “Webster” protocol Webster protocol hỗ trợ việc truy cập tới một từ điển duy nhất hoặc một bộ từ điển duy nhất mà thôi Trong những năm trở lại đây, số lượng các server từ điển cài đặt Webster Protocol đã giảm xuống do sự đòi hỏi ngày càng cao của người dùng phải có nhiều từ điển mà giao thức này không thể đáp ứng được.
Hiện nay, ngày càng có càng nhiều bộ từ điển, thuật ngữ miễn phí xuất hiện trên Internet Tuy nhiên, các CSDL từ điển này không thể truy cập thông qua một giao diện chung, cũng như không thể truy cập thông qua một site đơn lẻ Đó thường là các CSDL nhỏ, không hoàn thiện mang tính chất cá nhân Cũng có một số CSDL từ tiếng Anh khá thú vị và hữu dụng Ví dụ như các file từ điển Jargon, CSDL Wordnet, từ điển Foldoc,… Việc biên dịch và tra cứu các từ điển không phải tiếng Anh ngày càng phổ biến hơn Đây cũng là một vấn đề mà trước đó ít được quan tâm đến mà thường chỉ chú ý đến ngôn ngữ duy nhất là tiếng Anh mà thôi Vì vậy yêu cầu mới đặt ra là phải có một cách thức chung để có thể sử dụng được cùng lúc nhiều từ điển với nhiều ngôn ngữ Giao thức DICT ra đời nhằm đáp ứng các yêu cầu đó và đang dần thay thế dần giao thức Webster.
Giao thức Webster không thích hợp để truy cập tới nhiều CSDL từ điển riêng lẻ, việc mở rộng giao thức này cũng không phải là một giải pháp tốt cho vấn đề này.
Giao thức DICT được thiết kế cho mục đích truy cập tới nhiều CSDL cùng một lúc Đáp các yêu cầu tra từ trả về nghĩa, có thể tìm kiếm các từ , cung cấp các thông tin về server ( như Server chứa những CSDL nào, có các kiểu tra từ nào được hỗ trợ,…), thông tin về CSDL ( như số từ, người tạo, người giữ quyền, người phần phối,…), xác thực quyền truy cập tài nguyên trên Server ( cài đặt Authenicate) Cho phép tùy biến dùng một, một vài hay toàn bộ các CSDL từ điển. b Đặc tả giao thức.
DICT protocol có thể coi như là một dòng dữ liệu giống như được cung cấp bởi giao thức TCP Khi sử dụng TCP, Dict Server lắng nghe ở cổng 2628.
Dict server đóng vai trò là một giao diện cầu nối giữa chương trình và CSDL từ điển Nó không thực hiện một sự tương tác người dùng nào, hay các hàm tầng trình diễn Minh họa như sau:
Hình 1 Mô hình DICT protocol
Các kí hiệu từ ngữ.
Các lệnh và các phản hổi của DICT protocol là các kí tự thuộc tập kĩ tự theo bảng mã UTF-8 Để mô tả cú pháp ta dùng các kí hiệu từ ngữ như sau:
CHAR =
CTL = ; ( 177, 127.)
CR = ; ( 15, 13.)
HTAB = ; ( 11, 9.)
WS = 1*(SPACE / HTAB) dqstring = dqtext = , and "\"> string = * word = * description = * text = *
Mô tả chung về lệnh.
Một lệnh bao gồm một từ khóa và có thể có thêm các tham số theo sau Lệnh có tham số thì các tham số phải phân cách với từ khóa bằng các kí tự trông hoặc tab Mỗi lệnh kết thúc với kí tự hết dòng CRLF Mỗi lệnh chỉ nằm trên một dòng Mỗi dòng chỉ được phép chứa một lệnh Có độ dài lớn nhất là 1024 kí tự.
Cú pháp lệnh có dạng như sau: command = cmd-word * cmd-word = atom cmd-param = database / strategy / word database = atom strategy = atom
Mô tả về phản hồi từ server.
Có 2 loại phản hồi từ server là : phản hồi trạng thái và phản hồi dạng text.
Phản hồi trạng thái (status reponse):
Là phản hồi của server cho câu lệnh cuối cùng mà server nhận được từ client.
Phản hồi trạng thái bằng một mã gồm 3 chữ số với quy định như sau:
Chữ số đầu tiên là dấu hiệu nhận biết lệnh yêu cầu là sai, đúng, hay đang xử lí câu lệnh trước.
4yz - Transient Negative Completion reply
5yz - Permanent Negative Completion reply
Chữ số tiếp theo cho biết kiểu reponse: x0z - Syntax x1z - Information (e.g., help) x2z - Connections x3z - Authentication x4z - Unspecified as yet x5z - DICT System (These replies indicate the status of the receiver DICT system vis-a-vis the requested transfer or other DICT system action.) x8z - Nonstandard (private implementation) extensions
Một số mã hay dùng:
421 Server shutting down at operator request
Phản hồi text ( text reponse):
Trước khi truyền text, một mã reponse trạng thái được truyền đi với dạng mã là 1yz
Sau đó đi tiếp theo là cả 1 chuỗi các dòng text – “text stream” được truyền đi Cuối đoạn Text cần truyền truyền thêm một dòng có duy nhất một kí tự là “.”
Sau khi dòng text truyền xong thì sẽ ngay lập tức truyền đi một mã reponse dạng 2yz
Dòng Text có độ dài không vượt quá 1024 kí tự Tương đương với 6144 octet trong trường hợp sử dụng UTF-8. c Tập lệnh. i Khởi tạo kết nối.
Quá trình giao tiếp giữa DICT client và DICT server bắt đầu bằng khởi tạo yêu cầu kết nối từ client Khi đó server sẽ phản hồi theo một số trường hợp sau:
421 Server shutting down at operator request ii Lệnh DEFINE.
550 Invalid database,use "SHOW DB" for list of databases
151 word database name - text follows
250 ok (optional timing information here)
Lệnh yêu cầu server tra cứ từ “word” trong cơ sở dữ liệu “database” “database” là tên CSDL hoặc kí tự đại diện “*”:đại diện cho tất cả các từ điển, “!”: đại diện cho từ điển đầu tiên tìm thấy “word” Tất cả DICT server đều phải cài đặt lệnh này. iii Lệnh MATCH.
550 Invalid database,use "SHOW DB" for list of databases
551 Invalid strategy, use "SHOW STRAT" for a list of trategies
250 ok (optional timing information here)
Lệnh yêu cầu server tra cứ từ “word” trong cơ sở dữ liệu “database” theo kiểu tra
“strategy” “database” là tên CSDL hoặc kí tự đại diện “*”:đại diện cho tất cả các từ điển, “!”: đại diện cho từ điển đầu tiên tìm thấy “word” Còn “strategy” là kiểu tra như tra theo tiếp đầu ngữ, tiếp vĩ ngữ, hay tra theo kiểu tồn tại trong cụm từ Tất cả DICT server đều phải cài đặt lệnh này. iv Lệnh SHOW DATABASES.
Tất cả DICT server đều phải cài đặt lệnh này. v Lệnh SHOW SERVER.
Lệnh yêu cầu server trả về thông tin của Server Tất cả DICT server đều phải cài đặt lệnh này. vi Lệnh SHOW STRATEGIES.
Lệnh yêu cầu server trả về thông tin của tất cả các kiểu tra ci được phép truy cập. Mỗi kiểu tra cứu được trả về theo một dòng theo định dạng.
Tất cả DICT server đều phải cài đặt lệnh này. vii Lệnh SHOW INFO.
550 Invalid database, use "SHOW DB" for list of databases
Lệnh yêu cầu server trả về thông tin của một CSDL nào đó Tất cả DICT server đều phải cài đặt lệnh này. viii Lệnh CLIENT.
Lệnh gửi thông tin mô tả về Client Tất cả các DICT server đều phải cài đặt lệnh này Client nên gửi thông tin cho server để quản lí phiên làm việc tốt hơn nhưng đôi khi cũng không bắt buộc client gửi. ix Lệnh STATUS.
Trả về trạng thái hiện tại của server Tất cả DICT server đều phải cài đặt lệnh này. x Lệnh HELP.
Trả về thông tin trợ giúp. xi Lệnh QUIT.
Lệnh thoát, ngắt bỏ kết nối đến server Tất cả các DICT server đều phải cài đặt
Content-type: application/octet-stream
Yêu cầu trả về cấu trúc header cho MIME Ví dụ như header cho đáp ứng dạng text là :
Content-type: text/plain; charset=utf-8
Content-transfer-encoding: 8bit xiii Lệnh AUTH.
531 Access denied, use "SHOW INFO" for server information
Ứng dụng chuẩn DICT trong hệ thống từ điển
Hệ thống từ điển xây dựng sẽ sử dụng các CSDL từ điển theo định dạng DICT, những CSDL này được chia sẻ miễn phí trên mạng Giới hạn trong phạm vị đồ án này sử dụng từ điển của trang dict.org Sử dụng DICT protocol xây dựng hệ thống từ điển theo mô hình Client- Server.
Mô hình Client-Server và lập trình mạng
Kiến trúc client-server
Dưới đây là một vài kiến trúc client/server thông dụng a) Kiến trúc 2 lớp (2-tier):
Với kiến trúc client/server 2 lớp (2-tier) thì giao diện người dùng hệ thống thường được đặt ở máy desktop của người sử dụng và các dịch vụ quản lý database thường nằm trên server, là những máy mạnh có khả năng phục vụ được nhiều client cùng lúc Server quản lý database cung cấp sẵn các stored procedure và các trigger. Hiện có rất nhiều các nhà cung cấp có các công cụ để phát triển các ứng dụng kiến trúc client/server một cách dễ dàng.
Kiến trúc client/server 2 lớp là giải pháp tốt cho các máy tính phân phối khi có từ 12 cho đến 100 người tương tác với nhau trên mạng LAN Khi số lượng người vượt quá 100 thì sự thực thi của hệ thống bắt đầu kém đi Giới hạn này là kết quả của việc server duy trì kết nối thông qua các thông điệp “keep-alive” với các client, mặc dù khi không có công việc Giới hạn thứ hai của kiến trúc client/server 2 lớp đó là việc sử dụng các thủ tục của các nhà cung cấp khác làm hạn chế sự linh hoạt và sự lựa chọn DBMS cho ứng dụng. b) Kiến trúc client/server 3 lớp (3-tier):
Kiến trúc client/server 3 lớp ra đời để giải quyết những hạn chế của client/server
2 lớp Trong kiến trúc 3 lớp, thì có thêm một lớp nằm giữa giao diện người dùng hệ thống và server quản trị database Có rất nhiều cách để thi hành lớp trung gian này như kiểm soát tiến trình trao đổi (transaction processing monitor), server thông điệp(message server), server ứng dụng hay database staging Kiến trúc client/server 3 lớp được đưa ra để tăng khả năng thực thi cho các nhóm với số lượng lớn người sử dụng (đến hàng nghìn) và nâng cáo độ linh hoạt so với kiến trúc 2 lớp Tuy nhiên kiến trúc 3 lớp cũng có nhược điểm đó là việc xây dựng ứng dụng client/server 3 lớp khó khăn hơn rất nhiều so với việc xây dựng ứng dụng client/server 2 lớp. c) Client/server 3 lớp áp dụng ký thuật giám sát tiến trình trao đổi
Kiến trúc 3 lớp đơn giản nhất có tầng giữa bao gồm kỹ thuật quản lý tiến trình trao đổi (Transaction Processing monitor technology) Kỹ thuật giám sát tiến trình trao đổi là một loại của xếp hàng thông điệp, lập lịch trao đổi và phục vụ ưu tiên khi đó các client kết nối với tầng giữa thay cho kết nối vào database server Kỹ thuật giám sát tiến trình trao đổi cũng cung cấp:
Khả năng cập nhật nhiều hệ quản trị cơ sở dữ liệu khác nhau trong một transaction
Khả năng kết nối tớ nhiều nguồn dữ liệu khác nhau từ các file, hệ quản trị cơ sở dữ liệu, và mainframe.
Khả năng gắn độ ưu tiên cho các transaction
Tăng cường bảo mật d) Client/server 3 lớp với server thông điệp
Sử dụng thông điệp (message) là một cách khác để thực thi kiến trúc 3 lớp Các thông điệp được đặt ưu tiên và xử lý không đồng bộ với nhau Các thông điệp bao gồm header chứa các thông tin về độ ưu tiên, địa chỉ và thông số xác minh Server thông điệp kết nối tới hệ quản trị cơ sở dữ liệu quan hệ và các nguồn dữ liệu khác.
Sự khác nhau giữa kỹ thuật giám sát tiến trình trao đổi và server thông điệp đó là kiến trúc server thông điệp tập trung vào xử lý các thông điệp trong khí giám sát tiến trình trao đổi lại chú tâm vào giám sát và coi các giao dịch như các gói dữ liệu câm (dump data packet) Hệ thống thông điệp là giải pháp tốt cho hạ tầng không dây. e) Client/server 3 lớp với server ứng dụng
Kiến trúc server ứng dụng là kiến trúc có các thành phần chính chạy trên các host chia sẻ chứ không chạy trên các client Server ứng dụng chia sẻ các nguyên lý, các tính toán và kỹ nghệ phục hồi dữ liệu Với ít các phần mềm chạy trên client hơn thì cũng ít hơn các vấn đề cần phải bảo mật hơn, ứng dụng dễ mở rộng hơn và việc cài đặt, bảo trì trên máy chủ thì rẻ hơn so với việc bảo trì và cài đặt trên các máy client. f) Client/server 3 lớp với kiến trúc ORB(Object Request Broker)
Xây dựng hệ thống client/server ORB được hỗ trợ cung cấp sẵn lượng lớn các đối tượng Các công nghệ ORD hỗ trợ tương tác giữa các ngôn ngữ và nền tảng nhằm tăng khả năng bảo trì và tương thích của hệ thống Hiện có 2 công nghệ phân phối đối tượng nổi bật đó là :
COM/DCOM g) Kiến trúc doanh nghiệp phân phối/cộng tác (distributed/collaborative)
Kiến trúc phần mềm này dựa trên công nghệ ORB Bằng việc sử dụng các mô hình nghiệp vụ chia sẻ và tái sử dụng trên lĩnh vực kinh doanh Lợi ích của kiến trúc này đó là kết hợp các mô hình đối tượng nghiệp vụ đã được chuẩn hóa và tin học hóa các đối tượng được cung cấp để đưa ra một tổ chức linh hoạt để nâng cao sự hiệu quả của tổ chức, hành động và công nghệ Kinh doanh ở đây được định nghĩa là một hệ thống bao gồm nhiều hệ thống nghiệp vụ hoặc các hệ thống con Kiến trúc doanh nghiệp phân phối/ hợp tác bị giới hạn bởi sự thiếu hụt của việc phân tích hướng đối tượng các phương diện thương mại và các công cụ thiết kế.
Giao thức mạng
Mạng truyền thông hoạt động được nhờ giao thức: đó là tập hợp các quy tắc giúp cho các thiết bị khác nhau có thể hiểu nhau Có 4 loại giao thức chính:
Giao thức độc quyền: Do nhà sản xuất làm riêng cho sản phẩm của họ, như Novell Netware của hãng Novell.
Giao thức công cộng: Miễn phí, được công bố và sử dụng rộng rãi, vd: TCP/IP.
Giao thức chuẩn thực tế: Giao thức độc quyền hay công cộng, được chấp nhận trong thực tế mà không cần thông qua một quá trình công nhận chính thức.
Giao thức chuẩn hợp pháp: Được phát triển bởi những tổ chức về tiêu chuẩn và được công nhận thông qua các thử nghiệm.
Các vấn đề nảy sinh khi tồn tại giao thức:
Giao thức nhằm làm tăng độ tin cậy, nhưng lại nảy sinh vấn đề có quá nhiều giao thức dẫn tới việc khó tương thích.
Có quá nhiều các giao thức khác nhau nên khó có thể thay thế một số giao thức bằng một giao thức duy nhất chính vì vậy phải tìm cách cho chúng tương thích hoà bình với nhau
Một số giao thức: tùy từng tầng khác nhau mà ta có các loại giao thức khác nhau:
Aplication: FTP, SMTP,POP, HTTP,…
Data Link: Ethernet, FDDI, Frame – Relay,…
Socket
Đối tượng cơ bản được các chương trình ứng dụng sử dụng để thực hiện các trao đổi thông tin qua mạng được gọi là Socket Socket được giới thiệu lần đầu tiên trên nên hệ điều hành Unix ở đại học Califonia ở Berkeley năm 1981 cùng với
Berkeley Software Distribution (BSD 4.1c) và được sử dụng rộng rãi vào năm
1986 với 4.3BSD release Socket được thiết kế để cho các giao tiếp mạng khác nhau giữa các ứng dụng có thể thực hiện trên cùng 1 kiểu, giống như quá trình đọc hoặc ghi files Socket khi sử dụng cũng cần phải có một vài xử lý nhỏ, nhưng về mặt cơ bản thì chúng hoạt động là vẫn giống nhau.
Một Socket là một cấu trúc dữ liệu bên trong của 1 chương trình, nó cũng bao gồm một tập các hàm xử lý Các chương trình client và server muốn trao đổi với nhau phải thông qua 1 cặp socket tạo thành 1 liên kết giữa client và server.
Mỗi một Socket thì đều được gắn 1 địa chỉ bao gồm : IP – address và Post Number Một số Post được dành riêng cho các ứng dụng như: 21- ftp, 23 - telnet, 80
- http, 110 - pop3 (email),… các port của ứng dụng nên được đặt từ 1024 – 65535.
Socket được chia ra làm các loại khác nhau và với mục đích sử dụng khác nhau:
Stream (SOCK_STREAM) : Được sử dụng cho giao thức TCP Socket này cho phép trao đổi dữ liệu 2 chiều có thứ tự và không lặp lại nên rất đáng tin cậy.
Datagram (SOCK_DGRAM) : Sử dụng cho giao thức UDP Socket này cũng cho phép trao đổi dữ liệu 2 chiều nhưng không đảm bảo thứ tự và có tính lặp lại
Raw (SOCK_RAW): Cung cấp các truy xuất vào các giao thức giao tiếp nền có hỗ trợ Socket Các socket này thường hướng tới các Datagram, nhưng phụ thuộc rất nhiều vào loại giao tiếp của từng loại giao thức. Socket này không trang bị chung cho các User mà chỉ dành cho các User muốn phát triển các giao thức giao tiếp riêng hoặc muốn truy xuất sâu vào trong các giao thức hiện có.
Các chế độ điều khiển vào ra của socket:
Blocking: trong chế độ này khi thực hiện bất kỳ một lệnh gửi nhận dữ liệu nào như Send hay Recv thì sẽ đợi cho tới khi lệnh này kết thúc mới quay trở lại chương trình chính Như vậy tốc độ thực thi của chương trình rất chậm do chương trình phải đợi, trong khi đường truyền có thể nhanh hay chậm không biết trước được.
4 Các mô hình đáp ứng của server:
Trong quá trình tổ chức phần mềm dạng Client – Server việc lựa chọn mô hình thực hiện là điều rất quan trọng vì nó giúp giảm tải độ phức quá trình xây dựng hệ thống, cũng như đảm bảo các yêu cầu sử dụng Một số mô hình đáp ứng được đưa ra như sau:
Mô hình một tiến trình: Quá trình thực hiện trao đổi giữa các client và server thực hiện đồng thời trên 1 tiến trình chính Ưu điểm của mô hình này là việc xử lý tập trung và đơn giản Nhược điểm của nó là khi có nhiều kết nối tới server thì việc tạo ra nhiều liên kết sẽ gây khó khăn cho quá trình quản lý kết nối, và quá trình trao đổi sẽ bị chậm đi do bị do bị chia sẻ
Mô hình đa tiến trình với mỗi client được phục vụ trong 1 tiến trình Mô hình này sẽ làm giảm mức độ trao đổi của chương trình chính đáng kể vì mỗi kết nối đều được cung cấp 1 tiến trình để trao đổi riêng Nhưng khi có nhiều kết nối thì việc tạo ra nhiều tiến trình như vậy sẽ tiềm ẩn nguy cơ về đụng độ tiến trình, đồng thời khó kiểm soát lỗi.
Mô hình đa tiến trình IOCP: Ở mô hình này ta tạo ra 1 Thread Pool với số lượng tiến trình định trước cho việc phục vụ Các yêu cầu từ client khi được phục vụ sẽ được cung cấp 1 tiến trình để thực hiện trao đổi, hết quá trình phục vụ thì tiến trình này sẽ được thu hồi để phục vụ cho yêu cầu khác Khi có 1 yêu cầu đến mà tất cả các tiến trình đều bận thì yêu cầu đó sẽ được đưa vào hàng đợi, và khi có tiến trình rỗi nó sẽ cung cấp lần lượt cho các yêu cầu.
Mô hình của nó dạng như sau:
5 Các vấn đề gặp phải khi triển khai mô hình Client –
- Chia sẻ thông tin và bảo mật thông tin: tất cả thông tin đều được lưu trữ trên server vì thế những thông tin này nếu không được hệ thống bảo vệ thì có thể bị người khác truy cập và thay đổi trái phép Do đó để bảo vệ dữ liệu các hệ thống client/server thường áp dụng chế độ đăng nhập với tài khoản và password để phân quyền người sử dụng hệ thống và bảo vệ những thông tin riêng tư khỏi những truy cập trái phép.
- Session và quản lý session:
Session: Thuật ngữ dùng để chỉ trao đổi giữa server và một client Các dịch vụ được quản lý bởi server có thể được truy cập bởi nhiều client và đôi khi được yêu cầu cùng một lúc Từng client khi được cung cấp dịch vụ từ server sẽ được đảm bảo trong một session riêng rẽ với server, và sẽ được giữ cho tới khi client đạt được yêu cầu của mình.
Quản lý phiên: Một trao đổi giữa client và server đều được quản lý bởi một Session và khi quá trình trao đổi chưa kết thúc thì Session sẽ được giữ Chính vì thế yêu cầu đặt ra là phải quản lý phiên làm việc để tránh tình trạng cùng một yêu cầu được gửi lên từ nhiều client mà không phân biệt được Hoặc khi client bị ngắt kết nối tạm thời mà chưa đóng session thì quá trình trao đổi vẫn phải được tiếp tục
Đồng bộ dữ liệu là một quá trình quan trọng trong khi trao đổi dữ liệu, chính vì thế ngay từ khi thiết kế ta phải tuân theo các format dữ liệu sẵn có (Nếu sử dụng giao thức đã có), hoặc tự định nghĩa format cho dữ liệu trong quá trình thiết kế giao thức Việc Format dữ liệu chuẩn sẽ tránh được các lỗi có thể xảy ra, đồng thời giúp cho việc xử lý dễ dàng hơn.
Ứng dụng mô hình Client – Server trong hệ thống từ điển
Mô hình Client – Server phù hợp với yêu cầu quản lí dữ liệu tập trung vì vậy đáp ứng được yêu cầu sử dụng những bộ CSDL từ điển thống nhất trong một cơ quan, tổ chức
Hệ thống từ điển theo mô hình Client – Server cho phép cập nhật CSDL từ
Nhận dạng text trên Windows
Kĩ thuật hook trong Windows
a Thư viện liên kết động (Dynamic-Link Library – DLL):
Thư viện liên kết động DLL là một tập tin chứa các hàm được gọi từ chương trình chính hoặc từ các chương trình và DLL khác nhằm thực hiện mtộ tác vụ nào đó DLL chỉ được kích hoạt khi một module chương trình gọi đến các hàm chứa trong nó DLL được ra đời cùng với sự ra đời của phiên bản Windows đầu tiên và đã trở thành một phần gắn liền với Windows cho đến nay.
Liên kết động “Dynamic Link” là cơ chế Windows sử dụng để liên kết lời gọi hàm từ một chương trình đến thư viện DLL, nơi thực sự cài đặt hàm đó Khác biệt với liên kết tĩnh “Static Link” được dùng để liên kết lời gọi hàm khi biên dịch tạo thành một file chạy duy nhất Mã thực thi của hàm thường đặt trong những tập tin như OBJ,.LIB hay RES Tiếp đến, quá trình biên dịch sẽ nhúng nội dung hàm vào chương trình thực thi EXE của Windows Liên kết tĩnh không hiệu quả bởi vì đoạn mã để thực thi một hàm thường phải nhứng nhiều lần vào các tập tin EXE khác nhau, đặc biệt có những hàm xuất hiện mọi nơi ví dụ như các hàm thực hiện chức năng vào ra Điều này làm hạn chế sự khả năng của các ứng dụng rất nhiều Ngượi lại, với sự hỗ trợ của hệ điều hành, trong cơ chế liên kết động, tất cả cả các hàm càn thiết được đặt trong thư viện đông DLL Các tập tin thực thi EXE hay các module khác nhau đều có khả năng gọi đến cùng một hàm chứa trong các thư viện DLL. Những tập tin hệ thống như KERNEL32.DLL, USER32.DLL, GDI32.DLL, KEYBOARD.DRV, SYSTEM.DRV hay MOUSE.DRV và các trình điều khiển thiết bị màn hình, máy in,… đều là các dạng thư viện liên kết động Mọi chương trình Windows đều có thể truy xuất và sử dụng chung những hàm chứa trong các DLL này. b Kĩ thuật chèn DLL và hook Win32 API.
Trong môi trường Win32, mỗi process có thể sử dụng 4 GB không gian địa chỉ (0x00000000 đến 0xFFFFFFFF) Các process không có khả năng tạo ra con trỏ tham khảo đến các vùng bộ nhớ của các process khác Do vậy, nếu một process có một lỗi mà ghi đè lên bộ nhớ tại một địa chỉ ngẫu nhiên, thì sẽ gây ra lỗi access violation nếu địa chỉ đấy đang được sử dụng bởi một process khác.
Trong Win16 thì vấn đề lớn nhất đấy là mọi process đều chạy trong cùng một không gian địa chỉ, do đó một process có thể ghi đè vào vùng nhớ thuộc một process khác, thậm chí là vùng nhớ của hệ điều hành Win32 thì rất khó để một process có thể gây lỗi như vậy.
Môi trường Win32 với miền không gian địa chỉ như vậy rất thuận lợi cho cả người dùng và nhà phát triển phần mềm Đối với nhà phát triển thì dễ quản lý và phát triển chương trình Đối với người dùng thì hệ thống sẽ ổn định hơn.
Tuy nhiên sau đây là một số trường hợp cần phải breaking through proces boundary walls để truy cập vào không gian bộ nhớ của process khác. Subclassing một cửa sổ được tạo bởi một process khác.
Phục vụ cho việc debug (Xác định DLLs nào mà một process sử dụng).
Khi muốn thay đổi trạng thái, hành động của một cửa sổ Trong win16, ta chỉ đơn giản gọi hàm SetWindowLong để thay đổi địa chỉ the window procedure trỏ đến địa chỉ của hàm WndProc:
SetWindowLong(hwnd, GWL_WNDPROC, MySubclassProc);
Ta chỉ ra cho hệ thống là mọi thông điệp được gửi đến cửa sổ được chỉ định bởi hwnd bây giờ sẽ được chuyển sang MySubclassProc (thay thế cho hàm bàn đầu). Một cách hiểu đơn giản là bây giờ hệ thống sẽ thấy cái hàm MySubclassProc sẽ liên kết với cái cửa sổ (hwnd) và sẽ trực tiếp gọi MySubclassProc.
Vấn đề ở trong Win32 đấy là cái hàm Subclass ở trong một vùng địa chỉ khác. Giả sử có Process A đang chạy User32.dll chịu trách nhiệm việc nhận và gửi các thông điệp đến các cửa sổ được tạo ra bởi các thread chạy trong ProcessA Khi có thông điệp thì đâu tiên nó xác định địa chỉ của hàm WndProc của cửa sổ ở đâu và sau đấy thì gọi hàm đấy, thông qua handle của cửa sổ, thông điệp, giá trị của wParam và lParam Sau khi WndProc xử lý thông điệp, User32 lại chờ đón các thông điệp tiếp theo để lại tiến hành gửi.
Bây giờ hãy hình dung tiến trình đang ở Process B, và ta muốn subclass một cái cửa sổ được tạo ra bởi một thread trong Process A Thì Process B đầu tiên phải xác
SetWindowLong(hwnd, GWL_WNDPROC, MySubclassProc); Đầu tiên là tìm handle của cửa số và sau đấy thread in Process B gọi hàm SetWindowLong để cố gắng thay đổi địa chỉ của hàm WndProc của cửa sổ.
Tuy nhiên, trong Win32 thì hàm này không làm gì mà đơn giản chỉ trả về NULL. Code trong SetWindowLong kiểm tra nếu một process muốn thay đổi địa chỉ hàm WinProc của một cửa số được tạo ra bởi một process khác thì đơn giản là từ chối process đó đi. Điều gì có thể xảy ra nếu cái hàm SetWindowLong trong Win32 có thể thay đổi the Windows’ WndProc? Nghĩa là hệ thống có thể liên kết địa chỉ của hàm MySubclassProc với các cửa số xác định khác Nghĩa là khi cửa sổ này được gửi một thông điệp thì User32 ở trong Process A có thể nhận thông điệp, lấy địa chỉ của hàm MySubclassProc và cố gắng gọi cái địa chỉ này Nhưng sau đấy, một vấn đề vô cùng nghiêm trọng xảy ra Mysubclass nằm trong Process B, và Process A có thể là Active Process Chú ý, nếu User32 gọi địa chỉ hàm này thì có thể User32 đang gọi một địa chỉ này trong không gian nhớ của Proces A, điều này dẫn đến hiện tượng memory access violation Để tránh vấn đề trên, ta muốn hệ thống biết hàm MySubClass nằm trong không gian nhớ của Process B và để sau đấy hệ thống chuyển đổi vị trí (địa chỉ vùng nhớ) trước khi gọi hàm SubClass Suy nghĩ trên không được vì một số lý do sau đây:
- Mọi Process đều được đối xử công bằng, không ưu tiên Process nào cả
- Chuyện đổi process active rất là tốn bộ nhớ
- Một thread trong Process B được thi hành trong MySubclassProc thì hệ thống biết sử dụng cái nào, cái thread đang tồn tại trong A hay là cái thread mới trong B
Vậy làm thế nào để User32 báo địa chỉ của cái hàm SubClas đấy là nằm trong A hay nằm trong B?Bởi vì không có giải pháp nào nổi bật cho những vấn đề trên cho nên Microsoft quyết định không cho phép hàm SetWindowLong thay đổi window procedure bằng một cái hàm khác ở một Process khác.
Tuy nhiên, chúng ta phải đi bằng một con đường khác Nếu bạn có thể làm cách nào đấy để mà đưa được địa chỉ của cái hàm SubClass của bạn vào không gian nhớ của Procees A thì bạn có thể đơn giản gọi hàm SetWindowLong (Không còn sợ sự khác biết về khôn gian nhớ nữa) Đấy gọi là kỹ thuật đưa một DLL vào không gian nhớ của một process.
Có 3 cách để làm điều đấy Chúng ta sẽ cùng nghiên cứu từng cách một.
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ Windows\AppInit_DLLS
Chèn giá trị string là đường dẫn các dll Sau khi khởi động lại máy vi tính, User32 sẽ gọi hàm LoadLibrary cho một DLL trong chuỗi đấy, sau khi mỗi thư viện load lên thì mỗi thư viện liên kết với DLLMain và được gọi với một giá trị fdwReason thuộc DLL_PROCESS_ATTACH User32 không kiểm tra xem một DLL có được nạp thành công hay không?
Một số vấn đễ khi dùng theo cách này:
- Phải Restart lại máy mỗi khi muốn thêm một DLL (hay ngược lại) để update hệ thống
- DLL chèn vào được sắp xếp vào process map User32.dll, vì vậy ta sẽ không thể sử dụng DLL trong một chương trình compiler hoặc linker.
Kĩ thuật lấy text
a Kĩ thuật lấy text trên các phần mềm nền Windows.
Từ những nghiên cứu về kĩ thuật hook Windows API trên đây Ta đề xuất một cách lấy về text trên môi trường Windows như sau: i Ý tường thực hiện:
Hầu hết text hiển thị trên nền hệ điều hành windows ( trừ text trên ảnh, pdf) đều sử dụng một trong số các hàm thuộc thư viện “GDI32.DLL” của
Windows gồm : TextOutA,TextOutW, ExtTextOutA, ExtTextOutW,
DrawTextA, DrawTextW, DrawTextExA, DrawTextExW, TabbedTextOutA, TabbedTextOutW.
Khi một vùng trên màn hình có sự thay đổi, thì mỗi tiến trình tự gọi một trong các hàm trên để vẽ lại text trong vùng đó
Vì vậy muốn lấy text ta chỉ cần thay đổi các hàm trên bằng bằng các hàm mới của chúng ta thực hiện công việc của hàm cũ và còn đưa về dữ liệu text trong tham số Rồi sau đó gọi lại các hàm vẽ text. ii Cách thực hiện:
Xây dựng một DLL có chứa các hàm mới của các hàm vẽ text ở trên, và 2 hàm có mục đích thay đổi bảng IAT đã viết ở trên là:ReplaceIATEntryInOneMod và hàm ReplaceIATEntryInAllMods.
Sử dụng một trong các cơ chế ở trên để chèn DLL đã xây dựng vào hệ điều hành và các chương trình chạy trên đó.
Khi DLL được nạp vào thì tiến hành thay các hàm vẽ text cũ ở trên bằng các
Khi cần lấy text ở vùng nào của màn hình thì chỉ việc vẽ lại vùng màn hình đó bằng cách cho vùng đó bất hợp lệ ( invalidate)
Khi đó các hàm đã xây dựng sẽ trả về text có trong vùng màn hình đó iii Ứng dụng:
Kĩ thuật này áp dụng cho mọi chương trình trên Windows sử dụng các hàm của Windows để vẽ text Bao gồm gần như tất cả các chương trình chạy trên windows trừ text ở dạng mutilmedia, dạng pdf Để có thể lấy được text trên những môi trường này chúng ta phải tiến hành theo cách khác Cụ thể text trên ảnh thì phải sử dụng nhận dạng, còn trên pdf thì ta sẽ đi nghiên cứu sau đây b Kĩ thuật lấy text trên PDF. i Giới thiệu PDF và lập trình trên PDF.
PDF là viết tắt của Portable Document Format, một chuẩn do hãng Adobe đưa ra nhằm lưu trữ tài liệu thông tin an toàn, bảo mật và nâng cao khả năng chia sẻ giữa các nền tảng khác nhau và chia sẻ qua mạng dễ dàng hơn
Ngay khi ra đời, PDF đã chứng tở được những ưu thế vượt trội trong môi trường thông tin hợp nhất, nơi thông tin luôn luôn biến động đòi hỏi sự trao đổi liên tục Nó được sử dụng rộng rãi và trở thành chuẩn mở ISO 32000
Không phải vô cớ mà PDF được sử dụng nhiều như hiện nay, đó là do những ưu điểm vượt trội của PDF so với những định dạng tài liệu khác:
Tính đa nền PDF có thể dễ dàng trao đổi qua các nền tảng khác nhau như Windows, Unix, Mac, mobile mà không làm thay đổi khuôn dạng.
Tính xác thực và độ tin cậy cao.
Khả năng bảo mật cao.
Tính chia sẻ cao do định dạng pdf thường nhỏ hơn rất nhiều các định dạng tài liệu khác. Để đạt được những tính năng trên, Adobe đã xây dựng cho PDF thành một nền tảng phát triển riêng, chính vì vậy một số hành động với các tài liệu thông thường không thể thực hiện được theo cách làm truyền thống Cụ thể ở đây là muốn lấy text trên PDF không hề dễ dàng Nó phải thông qua nền tảng phát triển do Adobe cung cấp Cụ thể là thông qua những hàm API của PDF library API
Nền tảng lập trình cho PDF được Adobe cung cấp tương thích với tất cả các nền tảng hệ điều hành trên PC, Mac cũng như mobile Vì vậy nếu ta lập trình trên
Windows thì việc chuyển nó sang các nền tảng khác cũng rất dễ dàng để làm việc với PDF Điều đó thực hiện được là do cơ chế đa lớp của Acrobat core API như sơ đồ dưới đây:
Hình 3.Mô hình phân lớp của Acrobat core API
Hiện tại, để làm việc với PDF, người dùng thường chủ yếu sử dụng 2 phần mềm là Adobe Acrobat và Adobe Reader Trong đó Adobe Acrobat là phiên bản thương mại cung cấp nhiều tính năng như tạo, chỉnh sửa, cung cấp nhiều tính năng bảo mật và chia sẻ thông tin khác Còn Adobe Reader là phiên bản miễn phí cung cấp cho người dùng những tính năng cơ bản để làm việc với PDF Đa số người dùng chỉ dùng phiên bản Adobe Reader cho mục đích đọc file pdf là chính. ii Nhận dạng text trên pdf
Chúng ta không thể trực tiếp nhận text từ pdf mà phải phát triển một plugin cho phép lấy về text. Ý tưởng cơ bản của kĩ thuật nhận dạng text trên pdf như sau:
Xây dựng một plugin gắn vào phần mềm đọc pdf, plugin này sẽ đóng vai trò một cầu nối thực hiện các tác vụ trên pdf như bắt vị trí chuột trong file pdf, xác định text trong vùng chuột, trả về text nằm trong vùng đó.
Trên Windows ta chỉ cần thực hiện các hàm hook chuột như bình thường và nhận dạng xem nếu dưới chuột là phần mềm Adobe Reader hoặc Adobe Acrobat thì tiến hành gọi các hàm lấy về text do plugin cung cấp.
Những hàm này sẽ được liên kết động trong quá trình các phần mềm này hoạt động và thực hiện các tác vụ mà ta mong muốn
Khi muốn cài đặt một plugin ta chỉ cần copy file plugin có đuôi api hoặc dll vào thư mục \Program Files\Adobe\Acrobat\plug_ins Chương trình sẽ tự động liên kết khi khởi tạo.
Sử dụng kĩ thuật lấy text trong hệ thống từ điển
Với khả năng bắt text trên nhiều nền khác nhau, hệ thống từ diển sử dụng các kĩ thuật này sẽ mang lại một môi trường thuận lợi cho việc tra cứu nhanh.
Công nghệ Ajax
Định nghĩa về Ajax
Có rất nhiều định nghĩa khác nhau về Ajax Ở đây ta xem xét một định nghĩa được công nhận rộng rãi nhất của Jesse James Garrett:
AJAX là tập hợp của nhiều công nghệ với thế mạnh của riêng mình để tạo thành một sức mạnh mới
Thể hiện web theo tiêu chuẩn XHTML và CSS, các chuẩn của W3C, được Firefox (Mozilla), Safari (Apple), Opera, Netscape 8.0 (nhân Firefox) hỗ trợ rất tốt
Nâng cao tính năng động và phản hồi bằng DOM (Document Object Model); một chuẩn của W3C
Trao đổi và xử lý dữ liệu bằng XML và XSLT; cũng là một chuẩn của W3C
Truy cập dữ liệu theo kiểu bất đồng bộ (asynchronous) bằng
Và tất cả các công nghệ trên được liên kết lại với nhau bằng JavaScript.
Mô tả về công nghệ
a Đặc điểm và ưu điểm của công nghệ AJAX:
Ajax là viết tắt của Asynchronous JavaScript and XML – công nghệ kết hợp hai tính năng mạnh của JavaScript được các nhà phát triển đánh giá rất cao:
Gửi yêu cầu (request) đến server
Phân tách và làm việc với XML.
Các ứng dụng Ajax xoay quanh một tính năng có tên là XMLHttpRequest Ở các ứng dụng web truyền thống, khi người dùng có một cần thay đổi dữ liệu trên trang Web, yêu cầu thay đổi được gửi về server dưới dạng HTTP request (hay còn gọi postback), server sẽ xử lý yêu cầu này và gửi trả response chứa các thông tin nhấn một nút “Submit” trên trang web phải chờ cho đến khi server xử lý xong mới có thể tiếp tục công việc.
Hình 5.Mô hình web truyền thống
Ajax cho phép tạo ra một Ajax Engine nằm giữa giao tiếp này Khi đó, các yêu cầu gửi resquest và nhận response do Ajax Engine thực hiện Thay vì trả dữ liệu dưới dạng HTML và CSS trực tiếp cho trình duyệt, web server có thể gửi trả dữ liệu dạng XML và Ajax Engine sẽ tiếp nhận, phân tách và chuyển hóa thành XHTML + CSS cho trình duyệt hiển thị
Việc này được thực hiện trên client nên giảm tải rất nhiều cho server, đồng thời người sử dụng cảm thấy kết quả xử lý được hiển thị tức thì mà không cần nạp lại trang Mặt khác, sự kết hợp của các công nghệ web như CSS và XHTML làm cho việc trình bày giao diện trang web tốt hơn nhiều và giảm đáng kể dung lượng trang phải nạp Đây là những lợi ích hết sức thiết thực mà Ajax mang lại.
Hình 6.Mô hình ứng dụng Web: truyền thống và sử dụng Ajax
Hình 7.Mô hình tương tác trong một ứng dụng Web dùng Ajax
Rõ ràng điểm khác biệt là thay vì phải tải cả trang web thì với AJAX ta chỉ cần tải về phần của trang Web muốn thay đổi Điều này giúp cho ứng dụng web của phản hồi nhanh hơn, thông minh hơn Ngoài ra, điểm đặc biệt quan trọng trong công nghệ Ajax nằm ở chỗ Asynchronous - bất đồng bộ - tức là gửi yêu cầu của mình tới server và tiếp tục thực thi tác vụ hiện tại mà không cần chờ trả lời Khi nào server xử lý xong yêu cầu của, nó sẽ báo hiệu và ta có thể đón để thể hiện những thay đổi cần thiết. b Các công nghệ trong AJAX
AJAX là một tập hợp các công nghệ bổ sung lẫn nhau JavaScript có vai trò chất keo kết dính các ứng dụng lại với nhau Giao diện người dùng được tạo và tái nạp bằng cách dùng JavaScript để điều khiển Document Object Model, tạo và tổ chức biểu diễn dữ liệu cho người dùng, đồng thời xử lí các tương tác trên chuột và bàn phím
Cascading Style Sheets (CSS) cung cấp một sự nhất quán trên cảm quan “look and feel” cho ứng dụng và khả năng thao tác mạnh mẽ với DOM Đối tượng
XMLHttpRequest (hay một cơ chế tương đương nào đó) được dùng để liên lạc một cách bất đồng bộ với server, đảm bảo việc gửi yêu cầu người dùng và tái nạp dữ liệu trong khi người dùng vẫn làm việc.
Sử dụng AJAX cho phát triển trang web từ điển
Với ưu thế của mình , AJAX được sử dụng nhằm xây dựng một phần mềm từ
Text to speech
Microsoft Speech SDK
Microsoft Speech SDK là một bộ công cụ phát tiển phần mềm nhằm xây dựng công cụ và phần mềm phát âm trên Windows Nó được xây dựng nhằm hỗ trợ cho việc phát triển các ứng dụng phát âm trên nền desktop Nó bao gồm một giao diện lập trình phát âm ( SAPI- Speech application programming interface), các engine đọc máy, đọc text, các công cụ hỗ trợ việc biên dịch, xây dựng các ứng dụng đa ngôn ngữ, và các tài liệu liên quan.
Trái tim của Microsoft SDK là SAPI, được xây dựng dựa trên chuẩn về speech do W3C – một tổ chức đưa ra rất nhiều chuẩn mở được áp dụng rộng rãi Đó là các chuẩn về:
Ngôn ngữ đánh dấu phát âm tổng hợp – SSML(Speech Synthesis Markup Language): Cung cấp một chuẩn chung có khả năng đánh dấu xác định các âm tiết, tốc độ phát âm, âm lượng, âm điệu, … nhằm đưa đến khả năng phát âm Text to Speech tự nhiên hơn giống với con người hơn.
Mô tả chi tiết kĩ thuật phát âm dựa vào đoán nhận ngữ pháp - SRGS (Speech Recognition Grammar Specification): Cung cấp các chuẩn phát âm dựa trên đoán nhận ngữ pháp.
Ngoài ra SAPI còn hỗ trợ cho chức năng đoán nhận ngữ nghĩa ở mức đơn giản Dựa trên việc đoán nhận ngữ pháp để đoán nhận ngữ nghĩa nhằm phát âm trong một số trường hợp đặc biệt dùng trong văn nói thông dụng.
Ví dụ như các từ “yes”, “yeah”, “yep” đều có thể dùng trong dạng ngữ pháp “yes/no” nhưng nó đều mang nghĩa là “yes” vì vậy cả câu sẽ đọc theo ngữ điệu tỏ thái độ đồng ý.
Phát âm với ngôn ngữ không phải tiếng Anh
Tiếng Anh được coi là ngôn ngữ quốc tế, chính vì vậy đã có rất nhiều nghiên cứu, cũng như hệ thống cung cấp khả năng phát âm tiếng Anh SAPI hỗ trợ đầy đủ và trực tiếp tiếng Anh nên ta sẽ không xét đến ở đây mà chúng ta đi nghiên cứu về khả năng áp dụng cho các ngôn ngữ khác ngoài tiếng Anh.
Với việc hỗ trợ SSML, ta có thể sử dụng Microsoft SAPI để định nghĩa bảng âm vị cho từng ngôn ngữ từ đó định nghĩa cách phát âm các từ dựa theo bảng âm vị đó. Ở đây ta sẽ ví dụ một đoạn của bảng âm vị tiếng Trung một ngôn ngữ có chữ viết tượng hình với số âm vị thuộc loại nhiều nhất thế giới 422 âm vị. Âm vị ID Ví dụ bang 23 bang 3 jia 4 (kidnap) bao 24 yong 1 bao 4 (embrace) bei 25 bei 3 fang 1 (north) ben 26 ben 4 dan 4 (fool) beng 27 beng 4 tiao 4 (jump) bi 28 bi 2 zi 5 (nose) ji 144 ji 2 shi 2 (in time) jia 145 jia 4 qi 1 (holiday) jian 146 jian 3 dan 1 (simple) jiang 147 jiang 1 (river) jiao 148 jiao 1 tong 1 (traffic) jie 149 jie 2 ri 4 (feast) jin 150 jin 3 zhang 1 (strain) jing 151 gan 1 jing 4 (neatness)
Ví dụ để xây dựng cách đọc từ: 北北 - Bắc Kinh – Beijing ta sẽ khai báo như sau:
“1” sẽ là trọng âm ở âm tiết đầu tiên.
“ bei” sẽ được so sánh và tìm ra là âm vị có ID là 25 tương ứng với một âm trong bảng có ID là 25 (Âm này được đưa vào dạng media).
“jing” tương tự trên với âm vị ID 151.
Phát âm tiếng Việt
Với sự hỗ trợ đầy đủ của Microsoft Speech SDK, chúng ta hoàn toàn có thể thực hiện chức năng phát âm tiếng Việt dựa trên những nghiên cứu về âm vị tiếng Việt.
Hệ thống từ điển xây dựng được thiết kế mở nhằm hỗ trợ khả năng phát triển phát âm cho nhiều ngôn ngữ khác nhau bao gồm cả tiếng Việt.
Sử dụng Text to Speech trong hệ thống phần mềm từ điển
Text to speech là chức năng không thể thiếu trong hệ thống từ điển mà ta xây dựng Hiện tại, hệ thống mới nghiên cứu ở mức sử dụng tiếng Anh Tuy nhiên hoàn toàn có khả năng phát triển sử dụng cho nhiều ngôn ngữ khác nhau bao hồm tiếng Việt và là một mục tiêu phát triển tiếp trong tương lai.
PHÂN TÍCH & THIẾT KẾ HỆ THỐNG
Phân tích hệ thống
Các mô hình phát triển hệ thống
Khi phát triển hệ thống từ điển, các từ điển hiện tại đều phát triển theo 3 mô hình mà ta sẽ đề cập sau đây: a Từ điển trên Desktop.
Mô hình này được áp dụng cho các phần mềm từ điển cài đặt trên desktop với một số CSDL đi kèm.
Phần mềm được cài đặt trên từng máy tính riêng lẻ.
CSDL được đặt tại máy sử dụng.
Không thông tin với bên ngoài.
Dễ triển khai, dễ xây dựng.
Thực hiện được nhiều chức năng liên quan đến hệ thống do được cài đặt trực tiếp trên hệ thống.
- Khó khăn update khi có sự thay đổi về chức năng cũng như CSDL.
- Thường CSDL ít, cố định.
- Chỉ sử dụng tại máy tính cài đặt. b Từ điển trên Web.
Trong mô hình này, từ điển được xây dựng thành một trang web, người dùng sẽ tra cứu qua web browser thông qua đường truyền Internet.
Từ điển là một phần mềm trên nền web.
CSDL được đặt tại máy chủ web.
Người dùng gửi yêu cầu tra cứu tới máy chủ bằng giao thức http thông qua web browser.
Có thể truy cập từ mọi nơi.
Không yêu cầu cài đặt phần mềm trên máy sử dụng.
Khi cần cập nhật CSDL chỉ cần cập nhật trên máy chủ web.
- Một số chức năng bị hạn chế do quyền truy cập.
- Đòi hỏi đường truyền Internet.
- Khó khăn đáp ứng tính tiện dụng cho người dùng. c Từ điển theo mô hình Client-Server:
Từ điển loại này thường được sử dụng trong các cơ quan, doanh nghiệp nơi có một hệ thống mạng Lan được xây dựng nhằm mục đích chia sẻ thông tin nội bộ.
Từ điển gồm 2 phần: phần server cài đặt trên máy chủ chứa CSDL đáp ứng các yêu cầu được gửi từ phần client đặt trên máy trạm.
Người dùng sử dụng máy trạm tiến hành các thao tác tra cứu, các yêu cầu đó được gửi tới server, server đáp ứng trả lại kết quả tương ứng.
Khi cần cập nhật CSDL chỉ cần cập nhật trên server.
Đảm bảo một môi trường tra cứu thống nhất trong một cơ quan.
Client được cài đặt trên máy trạm nên đáp ứng đầy đủ các chức năng hệ thống.
- Không áp dụng cho các người dùng cá nhân.
- Mọi hoạt động phụ thuộc hoàn toàn vào server không đáp ứng một số trường hợp đòi hỏi tính độc lập.
Mô tả mô hình hệ thống theo mô hình kết hợp
Nhằm đáp ứng yêu cầu tốt nhất từ nhiều đối tượng sử dụng, hệ thống chúng ta xây dựng sẽ phát triển dựa trên một mô hình kết hợp nhằm kế thừa các ưu điểm, khác phục các nhược điểm của các mô hình trên
Xây dựng hệ thống trên mô hình kết hợp đã kế thừa tốt các ưu điểm của các mô hình trên đáp ứng các nhu cầu đa dạng của người dùng đồng thời người sử dụng cũng không cảm thấy phức tạp hơn Cho phép người sử dụng có thể tùy ý sử dụng theo từng trường hợp.
Yêu cầu đặt ra xây dựng hệ thống từ điển
Xây dựng từ điển trên Desktop với các chức năng thuận tiện cho việc tra
Xây dựng một trang web tra từ sử dụng công nghệ AJAX
Thiết kế hệ thống
Các thành phần chung của hệ thống
Hệ thống gồm 3 thành phần chính minh họa trong hình vẽ sau:
Hình 8 Mô hình chung a Phần mềm trên Desktop:
Có thể hoạt động như một phần mềm từ điển độc lập với nhiều chức năng tiện dụng Đồng thời vừa là một DICT client hoạt động trong mô hình client- server Giao tiếp, tra cứu thông qua DICT server bằng giao thức DICT protocol Người dùng có thể sử dụng chính phần mềm hoặc sử dụng web browser để tra cứu thông qua trang web từ điển. b DICT server:
Phần DICT server đặt trên máy chủ: Server cài đặt giao thức DICT protocol với nhiều CSDL từ điển cho phép người dùng tra cứu từ DICT client. c Web từ điển.
Phần web từ điển: Xây dựng một trang web cho phép người dùng thông qua web browser tra cứu trực tiếp trên web và tiến hành nhiều chức năng nâng cao như dịch tự động.
Thiết kế các module của hệ thống
DICT Server Xây dựng một server cài đặt
DICT Protocol cho phép đọc các CSDL đáp ứng đầy đủ các yêu cầu của các client về từ ,nghĩa từ, xác thực người dùng, … Dễ dàng cập nhật các CSDL.
Desktop Module tra từ Được xây dựng như là một phần mềm độc lập với CSDL, hoặc như một DICT Client cho phép người dùng tra cứu từ với nhiều chức năng tiện dụng
Module Quản lí các từ điển
Modul quản lí, hiển thị thông tin về các từ điển, cho phép thêm bớt
Module Quản lí từ Thêm xóa,history, print, note,… các từ.
Click’nSee Lấy text trên các nền, đưa ra nghĩa của từ đó.
Speech Phát âm các từ sử dụng
Sử dụng công nghệ AJAX cho phép người dùng tra từ như trên Desktop. b Mô tả chi tiết các module:
Mục tiêu Chương trình cài đặt trên Server Đọc dữ liệu, phản hồi các yêu cầu từ Dict Client trả lại các kết quả tra cứu tương ứng.
Nhiệm vụ Đọc các CSDL từ điển hình thành thông tin về chúng, nhận các yêu cầu của DictClient, đọc ra dữ liệu trả về cho Client.
Phụ thuộc các module khác
Gửi trả lời hay thông tin đến Dict Client qua Dict Protocol. Nhận yêu cầu hay các thông tin từ DictClient.
Giao diện với module khác Các giao tiếp tuân theo Dict Protocol mô tả trong tài liệu đính kèm.
Tài nguyên Cài đặt trên server.
Dict Server chủ yếu nằm chờ đợi những yêu cầu từ Dict Client và thực hiện các hoạt động đáp ứng các yêu cầu đó.
Cụ thể có 3 loại đáp ứng chính là:
Đáp ứng thông tin: Khi DictClient yêu cầu các thông tin về Server, CSDL,
Đáp ứng tra từ: Đọc ra từ , tìm trong CSDL trả lại cho Dict Client nghĩa của từ đó.
Đáp ứng Authenicate: Dùng khi cài đặt Authenicate nhằm xác định quyền sử dụng cho Dict Client.
Dữ liệu Các CSDL từ điển, các thông tin từ điển, thông tin về người dùng ( TH cài đặt Authenicate),…
Mục tiêu Nhận từ, tìm kiếm trong danh sách index, lấy ra thông tin về vị trí và độ dài nghĩa Đọc tiếp file nghĩa trả về nghĩa của từ.
Nhiệm vụ Hoạt động dưới sự yêu cầu của người dùng Được khởi tạo ban đầu, đọc ra index, nhận từ tìm nó trong danh sách index, và đọc ra nghĩa hiển thị ra giao diện sử dụng.
Phụ thuộc các module khác
Module này liên kết với mọi module khác Được khởi tạo cùng phần mềm, cung cấp thông tin cho các module khác thực hiện Như cung cấp từ khi quản lí từ, hay tiến hành
Giao diện với module khác Giao diện sử dụng được mô tả trong phần dưới Giao tiếp với các module khác thông qua dữ liệu dùng chung là các đối tượng dùng chung.
Bắt đầu chương trình, đọc các file dữ liệu lấy ra thông tin về các từ điển, nạp danh sách các index.
Nhận từ do người dùng nhập vào hoặc do module khác truyền yêu cầu tra từ Tìm kiếm trong danh sách index lấy ra thông tin về vị trí, độ dài của nghĩa
Hiển thị ra nghĩa của từ trong 1 hay một vài từ điển theo cách trực quan nhất.
Dữ liệu Các CSDL từ điển, danh sách các từ điển,…
Module quản lí các từ điển:
Tên Quản lí các từ điển.
Mục tiêu Quản lí các CSDL từ điển Thêm, bớt các từ điển Phân loại, quyết định sử dụng hay không sử dụng 1 từ điển.
Nhiệm vụ Đầu vào là thông tin về các CSDL đang sử dụng Thông qua chức năng này người dùng sẽ add thêm hay loại bỏ 1 từ điển Tìm kiếm các CSDL hoặc add vào 1 CSDL trực tuyến.
Phụ thuộc các module khác
Phụ thuộc vào module tra từ về thông tin các từ điển đang sử dụng.
Quy trình thực hiện Gồm các hoạt động sau:
Thêm 1 từ điển Có thể là có file CSDL trên máy hoặc 1 từ điển trực tuyến nào đó.
Sửa đổi thông tin của một từ điển.
Chọn sử dụng hoặc không sử dụng 1 từ điển.
Dữ liệu Thông tin về các CSDL trên máy
Mục tiêu Quản lí các từ trong CSDL từ điển Thêm bớt chỉnh sửa, đánh dấu, ghi nhớ, một từ nào đó.
Phụ thuộc các module khác Module tra từ Tiến hành trên các từ , các index lấy ra từ module tra từ.
Gồm có các quá trình sau:
Lưu trữ History gồm các từ đã tra.
Dữ liệu CSDL từ điển
Yêu cầu Lấy text trên màn hình, gửi yêu cầu tra từ đến module tra từ Lấy kết quả trả về từ module tra từ hiển thị ra tương ứng.
Phụ thuộc các module khác Module tra từ Get text SDK.
Giao diện với module khác
Tiến hành tra từ trên các nền như Text, window,web, pdf,
…Quy trình thực Lấy text trên màn hình
Gửi cho module tra từ
Lấy kết quả tra từ hiển thị ra màn hình.
Yêu cầu Phát âm các từ
Nhiệm vụ Sử dụng Speech SDK tiến hành đọc từ.
Sử dụng các hàm sẵn có trong Speech SDK.
Cho phép chỉnh sửa các tùy chọn phát âm như chọn người phát âm, âm độ, nhanh chậm,…
Sử dụng Speech SDK để phát âm từ đó.
Loại module Chương trình riêng.
Yêu cầu Tạo một từ điển trên Internet.
Giao diện với module, thành phần khác
Hoạt động trên nền Web, thông qua Web browser người dùng tiến hành các chức năng tra từ.
Thiết kế lớp chính cho phần mềm từ điển
Hình 9 Thiết kế class cho từ điển trên Desktop
Mô tả chi tiết như sau:
Phần mềm từ điển trên desktop gồm một số lớp chính như:
Các lớp hỗ trợ làm việc với CSDL từ điển: CIndexDatabase, CList Database, CMeaningDatabase.
Lớp hỗ trợ tra từ, hiển thị nghĩa
Lớp hỗ trợ bắt text trên windows, pdf GetWord b DICT Server.
Hình 10.Thiết kế class cho DICT server
Các lớp hỗ trợ làm việc với CSDL từ điển
Lớp CDictServer cài đặt DICT protocol đáp ứng các yêu cầu của DICT client.
Thiết kế giao diện cho phần mềm từ điển trên desktop
Hình 11.Thiết kế giao diện từ điển
CÀI ĐẶT & SỬ DỤNG HỆ THỐNG
Hệ thống được xây dựng trên nền Windows, sử dụng bộ công cụ Visual Studio
2005 Hệ thống sử dụng CSDL từ điển miễn phí gồm từ điển Anh- Việt,Việt- Anh, do Hồ Ngọc Đức xây dựng, 2 cơ sở dữ liệu Anh – Anh do trang dict.org cung cấp. a Từ điển trên desktop:
Giao diện chương trình chính:
Hình 13.Giao diện chương trình chính
Giao diện quản lí từ điển:
Chọn menu Dictionary -> Manage Dictionaries:
Hình 14.Giao diện quản lí từ điển
Giao diện quản lí từ:
Hình 15.Giao diện quản lí từ
Giao diện dịch tự động:
Hình 17.Giao diện tra nhanh b DICT Server.
DICT Server được cài đặt trên một máy tính đóng vai trò server sử dụng giao thức DICT.
KẾT LUẬN
Trong thời gian thực hiện đồ án, em đã đi nghiên cứu về các vấn đề cho việc xây dựng một hệ thống từ điển như về chuẩn DICT, mô hình Client – Server, kĩ thuật lấy text trên windows, pdf; kĩ thuật Ajax, text to speech đồng thời xây dựng lên một hệ thống từ điển đáp ứng yêu cầu đa dạng của người dùng đồng thời cung cấp giải pháp tra cứu dịch thuật tổng hợp cho mục đích thương mại.
Xây dựng phần mềm trên desktop và theo mô hình Client- Server theo chuẩn DICT Sử dụng dễ dàng các CSDL từ điển theo chuẩn DICT, cũng như tận dụng các DICT server trên mạng đáp ứng khả năng tra cứu cho nhiều ngôn ngữ.
Tuy nhiên, để có thể trở thành một giải pháp từ điển toàn diện thì hệ thống vẫn cần rất nhiều việc phải làm Trong thời gian tới, việc xây dựng hệ thống phần mềm từ điển sẽ tập trung vào việc cải thiện hơn nữa tính tiện dụng của phần mềm trên desktop bằng nhiều chức năng cao cấp hơn như nhận dạng text trên nền ảnh, dịch tự động với nhiều ngôn ngữ hơn Đồng thời xây dựng một từ điển trên nền Web sử dụng công nghệ Ajax đã nghiên cứu trong đồ án nhằm cung cấp thêm một cách sử dụng từ điển cho người dùng.