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,… 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 m
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN
Hà Nội 5-2008
Trang 2PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1 Mục đích nội dung của ĐATN:
Nghiên cứu , thiết kế, xây dựng hệ thống từ điển BKDictionary theo chuẩn DICT Hệthống bao gồm một từ điển trên desktop, DICT server và một từ điển trên web
2 Các nhiệm vụ cụ thể của ĐATN:
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 từ điển trên Desktop có thể sử dụng nhiều loại CSDL theo chuẩn DICT 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,…
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 sử dụng công nghệ Ajax
3 Lời cam đoan của sinh viên:
Tôi Cao Sĩ Dũng cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướngdẫn của TS Cao Tuấn Dũng
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳcông trình nào khác
Hà Nội, ngày 18 tháng 5 năm 2008
Tác giả ĐATN
Cao Sĩ Dũng
4 Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảovệ:
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
TS Cao Tuấn Dũng
Trang 3TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Từ điển là một công cụ không thể thiếu trong việc tra cứu, dịch thuật, làm việc với một ngôn ngữ Cùng với việc ngày nay con người sử dụng máy tính như một công cụ lao động thiết yếu thì nhu cầu xây dựng một hệ thống từ điển trên máy tính đáp ứng mọi yêu cầu công việc là một nhu cầu tất yếu.
Đồ án này tập trung tìm hiểu đánh giá các yêu cầu về hệ thống từ điển, đánh giá các hệ thống hiện tại, nghiên cứu các giải pháp kỹ thuật cũng như triển khai, thiết kế, xây dựng một hệ thống từ điển đáp ứng tốt nhất các yêu cầu đa dạng của người dùng
Hệ thống từ điển sẽ xây dựng là một giải pháp tổng thể theo mô hình kết hợp từ phần mềm trên desktop, client- server đến web nhằm đưa đến người
sử 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 Mang lại tính tiện dụng khi sử dụng từ điển như có khả năng tra cứu, phát
âm, dịch tự động, tra cứu nhanh trên nhiều nền như Windows, web, pdf,… Đáp ứng mọi nhu cầu về các ngôn ngữ khác nhau của người dùng thông qua việc sử dụng chuẩn DICT cho phép dễ dàng thêm, bớt thay đổi các cơ
sở dữ liệu từ điển hay dễ dàng tạo, sửa, chia sẻ các tài nguyên từ điển, phát huy sức mạnh từ 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.
Trang 4ABSTRACT OF THESIS
Dictionary is an unnecessary tool in looking-up, translation, and working with alanguage Together with the human use of computers as a essential working tool,the building need for a dictionary system integrated into the computer is a vitalneed
This project concentrates on studying to assess requirements of dictionarysystem, assess the current system, study, design, and build a dictionary system thatbest satisfy all diversified requirements of users
Construction Dictionary System is a comprehensive solution to build inaccordance with combined model from the sofeware on desktop, client- server towebsite in order to bring users many choices serving for different task requirementsthat bring back benefits when using dictionary such as looking-up capacity,pronounciation, automatic translation, quick looking-up on many desktops such asWindows, web, pdf,etc.; satisfy all requirements of different languages by usingDICT standard that allows to easily add or remove, change its database; easilycreate, repair, share dictionary resources, promote strength from web community tobuild database for all languages; establish specific database of bodies,organizations, and individuals who have a private need for their own dictionarydatabse; and simultaneously aim at the target of building specific database for eacheconomic, social, and scientific sector
Trang 5Lời cảm ơn
Để có ngày hoàn thành đồ án tốt nghiệp này, em xin chân thành cảm ơn các thầy cô giáo trong khoa Công Nghệ Thông Tin Trường Đại học Bách khoa Hà Nội đã tận tâm dạy dỗ chúng em trong suốt những năm học vừa qua Xin cảm ơn trung tâm Bkis đã tạo điều kiện giúp em có một môi trường thực tập và làm việc trong hơn một năm vừa qua.
Em cũng xin gửi lời cảm ơn tới gia đình, các bạn đồng nghiệp, những người đã giúp đỡ, động viên em trong suốt quá trình học tại trường.
Cuối cùng, em xin bày tỏ lòng biết ơn sâu sắc tới thầy Cao Tuấn Dũng người đã tận tâm hướng dẫn em thực hiện
đồ án này
Em xin chân thành cảm ơn!
Hà Nội ngày 18/5/2008
Cao Sĩ Dũng
Trang 6MỤC LỤC
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 3
ABSTRACT OF THESIS 4
Lời cảm ơn 5
MỤC LỤC 6
DANH MỤC HÌNH VẼ 9
DANH MỤC TỪ NGỮ VIẾT TẮT VÀ KHÁI NIỆM 10
I PHẦN MỞ ĐẦU 11
1 Đặt vấn đề 12
2 Yêu cầu về hệ thống từ điển: 13
3 Các tiêu chí của một hệ thống từ điển hoàn chỉnh 15
4 Khảo sát đánh giá hệ thống phần mềm từ điển hiện tại 15
5 Cơ sở dữ liệu từ điển 16
6 Mục đích của đồ án 17
7 Cấu trúc luận văn 18
II KIẾN THỨC CHUNG 19
Chương 1 Chuẩn DICT 20
1 DICT format 20
2 DICT Protocol 22
3 Ứng dụng chuẩn DICT trong hệ thống từ điển 32
Chương 2 Mô hình Client-Server và lập trình mạng 33
1 Kiến trúc client-server 33
2 Giao thức mạng: 35
3 Socket 36
4 Các mô hình đáp ứng của server: 37
5 Các vấn đề gặp phải khi triển khai mô hình Client – Server: 37
Trang 76 Ứng dụng mô hình Client – Server trong hệ thống từ điển 38
Chương 3 Nhận dạng text trên Windows 39
1 Kĩ thuật hook trong Windows 39
2 Kĩ thuật lấy text 48
3 Sử dụng kĩ thuật lấy text trong hệ thống từ điển 53
Chương 4 Công nghệ Ajax 54
1 Định nghĩa về Ajax 54
2 Mô tả về công nghệ 54
3 Sử dụng AJAX cho phát triển trang web từ điển 56
Chương 5 Text to speech 57
1 Microsoft Speech SDK 57
2 Phát âm với ngôn ngữ không phải tiếng Anh 57
3 Phát âm tiếng Việt 59
4 Sử dụng Text to Speech trong hệ thống phần mềm từ điển 59
III PHÂN TÍCH & THIẾT KẾ HỆ THỐNG 60
Chương 1 Phân tích hệ thống 61
1 Các mô hình phát triển hệ thống 61
2 Mô tả mô hình hệ thống theo mô hình kết hợp 62
3 Yêu cầu đặt ra xây dựng hệ thống từ điển 62
Chương 2 Thiết kế hệ thống 64
1 Các thành phần chung của hệ thống 64
2 Thiết kế các module của hệ thống 65
3 Thiết kế lớp chính cho phần mềm từ điển 70
4 Thiết kế giao diện cho phần mềm từ điển trên desktop 72
IV CÀI ĐẶT & SỬ DỤNG HỆ THỐNG 73
V KẾT LUẬN 78
Tài liệu tham khảo 79
Trang 9DANH MỤC HÌNH VẼ
Hình 1 Mô hình DICT protocol 22
Hình 2.Mô hình IOCP 26
Hình 3.Mô hình phân lớp của Acrobat core API 26
Hình 4 Cấu trúc tổ chức Acrobat SDK 26
Hình 5.Mô hình web truyền thống 26
Hình 6.Mô hình ứng dụng Web: truyền thống và sử dụng Ajax 26
Hình 7.Mô hình tương tác trong một ứng dụng Web dùng Ajax 26
Hình 8 Mô hình chung 26
Hình 9 Thiết kế class cho từ điển trên Desktop 26
Hình 10.Thiết kế class cho DICT server 26
Hình 11.Thiết kế giao diện từ điển 26
Hình 12.Cài đặt 26
Hình 13.Giao diện chương trình chính 26
Hình 14.Giao diện quản lí từ điển 26
Hình 15.Giao diện quản lí từ 26
Hình 16.Giao diện dịch tự động 26
Hình 17.Giao diện tra nhanh 26
Trang 10DANH MỤC TỪ NGỮ VIẾT TẮT VÀ KHÁI NIỆM
STT Từ viết tắt/
khái niệm
Mô tả
3. DICT format Định dạng file CSDL từ điển theo chuẩn DICT
4. DICT protocol Giao thức theo chuẩn DICT giữa DICT client và
DICT server.
5.
6.
7.
Trang 11I. PHẦN MỞ ĐẦU
Trang 121 Đặ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 Ưuthế 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ớiviệ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ếutrong 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ànhmộ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ả HuyBiên, … Ở nước ngoài thì có Stardict, Babylon, Lingoes, Hoặc các từ điển trựctuyế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ềuvấn đề chưa đáp ứng được yêu cầu cao của người dùng như: CSDL từ điển chưaphong phú, không đáp ứng được nhiều ngôn ngữ trong một phần mềm Đồng thờicá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ườidù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 ứngcá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ụngtập CSDL từ điển phong phú, đa ngôn ngữ khắc phục nhược điểm CSDL ít, khôngchuẩ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ứcmạ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ậpcá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ứcriê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ụngcủ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ềuchức năng tra cứu, phát âm, dịch tự động, tra cứu nhanh trên nhiều nền như trên các ứng dụng trên Windows, web, pdf,…
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
Trang 132 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 đề chung
Vấn đề khó khăn Giải pháp đề xuấtThiế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 duynhấ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ổibấ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
Xây dựng chức năng Click and See hoạt động trên nhiều nền
Trang 14đọ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,…
Không cho phép người dùng truy cập
tới các CSDL đặt trên các Dict
Server
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 Ons , plugin cho phép người dùng tra
Add-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 đề 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 đề 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à tính an toàn cũng như thống nhất các thôn tin vì vậy họ cần 1 từ điển chung cho toàn bộ các máy tính trong cơ quan
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
3 Các tiêu chí của một hệ thống từ điển hoàn chỉnh.
Tra cứu nhanh
Trang 15 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
4 Khảo sát đánh giá hệ thống phần mềm từ điển hiện tại.
Từ điển Lạc Việt.
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ẽ đixem xét ưu nhược điểm của từ điển này
- 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
Ư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
Trang 16 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
Nhược điểm:
- 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ốtlắm, không bắt được đúng từ
Từ điển Baamboo.
Ưu điểm:
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
Nhược điểm:
- 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
5 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ựchiệ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ểnmới hoàn toàn tốn rất nhiều thời gian và công sức Đồng thời nếu mỗi từ điển lại đixây dựng CSDL cho riêng mình thì thứ nhất là sẽ phải xây dựng nhiều loại CSDL
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 songngữ 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ênInternet tồn tại rất nhiều CSDL từ điển miễn phí Chúng ta có thể download cácCSDL 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ácCSDL từ điển đa số sử dụng chuẩn chung là chuẩn DICT Vì vậy nếu ta xây dựngmộ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ểnmiễn phí Những server này cho phép tra cứu thông qua Internet trên rất nhiềuCSDL Có thể kể ra đây rất nhiều server từ điển miễn phí như :dict://dict.org,dict://
Trang 17mova.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ữngDICT 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ácngô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
6 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 Webvớ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
7 Cấu trúc luận văn.
Trang 18Phần IV CÀI ĐẶT VÀ SỬ DỤNG HỆ THỐNG.
Phần V.KẾT LUẬN
Trang 19II. KIẾN THỨC CHUNG
Trang 20Chương 1 Chuẩn DICT
1 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ệcxâ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êngcủ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ỗiCSDL chỉ có thể dùng cho một từ điển duy nhất Do vậy thông thường một phầnmề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ênmô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ếtchương trình chuyển đổi Thật may, DICT.ORG (www.dict.org) đã xây dựng mộtformat (định dạng) từ điển rất dễ sử dụng, format này đã được dùng để xây dựngnhững bộ từ điển khá lớn Đó là DICT format, được sử dụng rộng rãi chia sẻ rấtnhiề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 fileindex File index bao gồm tên từ, vị trí nghĩa của từ bắt đầu trong file chứanghĩ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
64 chữ cái:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234 56789+/
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 (ASCII9)
Trang 21 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 nhaubở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:
Abdeckung kbpP D3
Như vậy nghĩa của từ Abdeckung trong file chứa nghĩa sẽ bắt đầu tại offsetkbpP (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ớikhô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:
Việc sử dụng DICT format cũng cho phép người dùng có thể tự xây dựng nênnhữ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ồisau đó 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ácnhu cầu sử dụng khác nhau của người dùng
Trang 222 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ĩangôn ngữ chủ yếu sử dụng “Webster” protocol Webster protocol hỗ trợ việc truycậ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ữngnă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àykhô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ênInternet Tuy nhiên, các CSDL từ điển này không thể truy cập thông qua một giaodiệ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, CSDLWordnet, từ điển Foldoc,… Việc biên dịch và tra cứu các từ điển không phải tiếngAnh 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êucầ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úcnhiều từ điển với nhiều ngôn ngữ Giao thức DICT ra đời nhằm đáp ứng các yêucầ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ộtlú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ôngtin 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ầnphối,…), xác thực quyền truy cập tài nguyên trên Server ( cài đặt Authenicate) Chophép tùy biến dùng một, một vài hay toàn bộ các CSDL từ điển
Trang 23Request CommandDICT protocol
Data
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:
; ( Octal, Decimal.)
CHAR = <any UTF-8 character (1 to 6 octets)>
CTL = <any ASCII control ; ( 0- 37, 0.- 31.) character and DEL> ; ( 177, 127.)
CR = <ASCII CR, carriage return> ; ( 15, 13.)
LF = <ASCII LF, linefeed> ; ( 12, 10.)
SPACE = <ASCII SP, space> ; ( 40, 32.)
HTAB = <ASCII HT, horizontal-tab> ; ( 11, 9.)
<"> = <ASCII quote mark> ; ( 42, 34.)
<'> = <ASCII single quote mark> ; ( 47, 39.)
atom = 1*<any CHAR except SPACE, CTLs, <'>, <">, and "\">
string = *<dqstring / sqstring / quoted-pair>
word = *<atom / string>
description = *<word / WS>
text = *<word / WS>
Mô tả chung về lệnh.
Trang 24Mộ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úcvớ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ứamột lệnh Có độ dài lớn nhất là 1024 kí tự.
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
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
1yz - Positive Preliminary reply
2yz - Positive Completion reply
3yz - Positive Intermediate reply
4yz - Transient Negative Completion reply
5yz - Permanent Negative Completion reply
Chữ số tiếp theo cho biết kiểu reponse:
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:
500 Syntax error, command not recognized
501 Syntax error, illegal parameters
502 Command not implemented
Trang 25503 Command parameter not implemented
420 Server temporarily unavailable
421 Server shutting down at operator request
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ạng2yz
Dòng Text có độ dài không vượt quá 1024 kí tự Tương đương với 6144 octet trongtrườ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êucầu kết nối từ client Khi đó server sẽ phản hồi theo một số trường hợp sau:
420 Server temporarily unavailable
421 Server shutting down at operator request
150 n definitions retrieved - definitions follow
151 word database name - text follows
Trang 26250 ok (optional timing information here)
Mô tả lệnh
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
550 Invalid database,use "SHOW DB" for list of databases
551 Invalid strategy, use "SHOW STRAT" for a list of trategies
552 No match
Đúng:
152 n matches found - text follows
250 ok (optional timing information here)
Mô tả lệnh:
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 tranhư 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
Trang 27Tất cả DICT server đều phải cài đặt lệnh này.
vii Lệnh SHOW INFO.
Cú pháp:
SHOW INFO database
Phản hồi:
550 Invalid database, use "SHOW DB" for list of databases
112 database information follows
Mô tả lệnh:
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.
Trang 29Lệnh này nếu được server cài đặt thì mọi client muốn truy nhập vào server phải
có username và password Khi đó bắt đầu phiên làm việc, client phải dùng lệnh nàygửi xác thực lên server Chỉ khi nào server chấp nhận thì phiên làm việc mới bắtđầu
d Các ví dụ kịch bản sử dụng.
Khởi tạo kết nối:
C: [ client initiates connection ]
S: 220 bkdict.com BKDictionayry
Lệnh HELP, DEFINE, QUIT
C: HELP //Lệnh yêu cầu trợ giúp từ client
S: 113 Help text follows
S: DEFINE database word look up word in database
S: MATCH database strategy word match word in database using strategy
S: [ more server-dependent help text ]
S:
S: 250 Command complete
Trang 30C: DEFINE ! penguin //Lệnh tra cứu nghĩa từ penguin trong từ
//điển đầu tiên tìm thấy từ này
S: 150 1 definitions found: list follows
S: 151 "penguin" wn "WordNet 1.5" : definition text follows
S: penguin
S: 1 n: short-legged flightless birds of cold southern esp Antarctic
S: regions having webbed feet and wings modified as flippers
S:
S: 250 Command complete
C: DEFINE * shortcake //Lệnh tra cứu từ shortcake trong tất cả
các //CSDL
S: 150 2 definitions found: list follows
S: 151 "shortcake" wn "WordNet 1.5" : text follows
S: An unsweetened breakfast cake shortened with butter or lard,
S: rolled thin, and baked.
C: SHOW DB //Lệnh xem thông tin về các CSDL
S: 110 3 databases present: list follows
S: wn "WordNet 1.5"
S: foldoc "Free On-Line Dictionary of Computing"
S: jargon "Hacker Jargon File"
S:
S: 250 Command complete
C: SHOW STRAT //Lệnh xem thông tin về các kiểu tra từ
S: 111 5 strategies present: list follows
S: exact "Match words exactly"
S: prefix "Match word prefixes"
S: substring "Match substrings anywhere in word"
Trang 31S: regex "Match using regular expressions"
S: reverse "Match words given definition keywords"
S:
S: 250 Command complete
C: MATCH foldoc regex "s.si" //Lệnh tìm các từ trong từ điển foldoc có
//chứa cụm “s.si”
S: 152 7 matches found: list follows
S: foldoc Fast SCSI
S: 110 1 database present: list follows
S: free "Free database"
S: 110 2 databases present: list follows
S: free "Free database"
S: licensed "Local licensed database"
S:
S: 250 Command complete
Trang 323 Ứ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
Trang 33Chương 2 Mô hình Client-Server và lập trình mạng.
Thuật ngữ client/server được sử dụng đầu tiên vào những năm 1980 dùng đểchỉ các máy tính cá nhân trong mạng Mô hình client/server thực sự được chấp nhận
và đưa vào sử dụng vào cuối những năm 1980 Kiến trúc phần mềm client/server làkiến trúc linh hoạt, dựa message và module hóa rất thích hợp để phát triển các hệthống khả dụng, linh hoạt, tương tác qua lại giữa các thành phần và khả mở(scalability) hơn so với các hệ thống tập trung, mainframe hay chia sẻ thời gian
Client được định nghĩa như là các máy yêu cầu dịch vụ và server được địnhnghĩa là các máy cung cấp các dịch vụ đó Một máy có thể vừa là client vừa làserver, tùy thuộc vào cấu hình của phần mềm trên máy đó như thế nào
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ườivượ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àynhư 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 3lớ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ênkiế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 3lớ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
Trang 34c) 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ìnhtrao đổi (Transaction Processing monitor technology) Kỹ thuật giám sát tiến trìnhtrao đổ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ậtgiá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ộttransaction
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ácthông điệp được đặt ưu tiên và xử lý không đồng bộ với nhau Các thông điệp baogồm header chứa các thông tin về độ ưu tiên, địa chỉ và thông số xác minh Serverthô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áttiế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ệucâm (dump data packet) Hệ thống thông điệp là giải pháp tốt cho hạ tầng khôngdâ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áchost 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ơnthì 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ệccà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áyclient
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ảngnhằ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ânphối đối tượng nổi bật đó là :
Kiến trúc trung gian yêu cầu đối tượng chung (common object request brokerarchitecture –CORBA)
Trang 35 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úcnà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ọchó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úcdoanh 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íchhướ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 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ềugiao 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ố giaothức bằng một giao thức duy nhất chính vì vậy phải tìm cách cho chúngtươ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ácnhau:
Aplication: FTP, SMTP,POP, HTTP,…
Network: TCP/IP, UDP,…
Data Link: Ethernet, FDDI, Frame – Relay,…
Trang 363 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áctrao đổi thông tin qua mạng được gọi là Socket Socket được giới thiệu lần đầu tiêntrê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 đọchoặ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ũngbao gồm một tập các hàm xử lý Các chương trình client và server muốn trao đổivớ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à PostNumber 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ácnhau:
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 Usermuốn phát triển các giao thức giao tiếp riêng hoặc muốn truy xuất sâuvà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ớiquay trở lại chương trình chính Như vậy tốc độ thực thi của chương trìnhrất chậm do chương trình phải đợi, trong khi đường truyền có thể nhanhhay chậm không biết trước được
Non Blocking: chế độ này cho phép quay trở lại ngay lập tức khi thực thi
1 lệnh trao đổi, có thể kiểm tra trạng thái của các Socket bằng lệnhSelect(), từ đó ta có thể biết được khi nào có thể tiếp tục gửi nhận
Trang 374 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à serverthự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ớiserver 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ếtnố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ìnhnày sẽ làm giảm mức độ trao đổi của chương trình chính đáng kể vì mỗi kếtnối đều được cung cấp 1 tiến trình để trao đổi riêng Nhưng khi có nhiều kếtnố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 đượcphục vụ sẽ được cung cấp 1 tiến trình để thực hiện trao đổi, hết quá trìnhphụ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 đưavà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:
Trang 38- 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ớikhi 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ộtSession 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ùngmột yêu cầu được gửi lên từ nhiều client mà không phân biệt được Hoặc khiclient bị ngắt kết nối tạm thời mà chưa đóng session thì quá trình trao đổi vẫnphải được tiếp tục
- Đồng bộ dữ liệu:
Đồ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ìnhthiế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 bộ dữ liệu còn thể hiện ở việc đồng bộ về quá trình gửi nhận dữ liệu.Việc kiểm soát việc gửi nhận một cách chính xác các gói tin cũng được quantâm ngay từ khi thiết kế, vì trong quá trình trao đổi có rất nhiều trường hợpxảy ra như ngắt kết nối, đường truyền tạm thời gián đoạn, thất lạc gói tin,nếu như ta không có sự kiểm soát chặt chẽ có thể gây ra lỗi mà không tìmđược nguyên nhân
Quá trình trao đổi muốn thực hiện được một cách trơn chu thì cần phải cómột giao thức để cho Client và Server cùng thực hiện, việc đồng bộ về giaothức sẽ giảm tải được khả năng rủi ro và giúp cho việc trao đổi thông tin mộtcách dễ dàng và rõ ràng hơn
6 Ứ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ừ điển thống nhất trong nội bộ tổ chức, tạo một môi trường tra cứu thống nhất Đồngthời vẫn đáp ứng đầy đủ các chức năng cần thiết trên máy trạm
Trang 39Chương 3 Nhận dạng text trên Windows.
Trong quá trình sử dụng máy tính, một trường hợp rất hay gặp phải đó là gặpphải một từ hay một ngữ nào đó mà ta không hiểu Cách giải quyết khó khănthường là dùng từ điển để tra các từ đó Tuy nhiên cách tự nhiên nhất và cũng đượcmong đợi nhất là ta có thể trỏ thẳng chuột vào từ đó và nghĩa của từ đó sẽ hiện lên
Đó chính là ý tưởng của kĩ thuật nhận dạng text trên windows Trong chương này,
ta sẽ xem xét phương pháp thực hiện ý tưởng đó trên các môi trường khác nhau nhưwindows, web, pdf, ảnh Để thực hiện được điều đó, trước hết ta phải đề cập đến môhình lập trình và kĩ thuật hook trên windows, sau đó sẽ xét đến quá trình get texttrên các môi trường đó
1 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ươngtrì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ứatrong 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ọihà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ệtvớ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ạothà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 tinnhư OBJ,.LIB hay RES Tiếp đến, quá trình biên dịch sẽ nhúng nội dung hàm vàochươ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ácnhau, đặ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ứcnă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ượilạ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ànthiết được đặt trong thư viện đông DLL Các tập tin thực thi EXE hay các modulekhá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ểnthiế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ươngtrình Windows đều có thể truy xuất và sử dụng chung những hàm chứa trong cácDLL này
b Kĩ thuật chèn DLL và hook Win32 API.
Trang 40Trong 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 accessviolation 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ộtkhông gian địa chỉ, do đó một process có thể ghi đè vào vùng nhớ thuộc mộtprocess khác, thậm chí là vùng nhớ của hệ điều hành Win32 thì rất khó để mộtprocess 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 procesboundary 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)
Hooking các process khác
Khi muốn thay đổi trạng thái, hành động của một cửa sổ Trong win16, ta chỉ đơngiản gọi hàm SetWindowLong để thay đổi địa chỉ the window procedure trỏ đến địachỉ 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ởihwnd 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ênkế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ácthô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ủawParam và lParam Sau khi WndProc xử lý thông điệp, User32 lại chờ đón cácthô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áicửa sổ được tạo ra bởi một thread trong Process A Thì Process B đầu tiên phải xácđịnh handle của cửa số muốn subclass Điều đấy có thể được tiến hành bằng rấtnhiều cách khác nhau
Vd: HWND hwnd = FindWindow(“ClassA”, NULL);