Các nhiệm vụ cụ thể của ĐATN Từ các mục đích nội dụng, các nhiệm vụ cụ thể của đồ án sẽ thực hiện • Tim hiểu về lập trình trên điện thoại di động • Tìm hiểu về iPhone • Tìm hiểu về công
Trang 1HÀ NỘI 05-2011
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1 Thông tin về sinh viên
Họ và tên sinh viên: Nguyễn Quốc Huy
Điện thoại liên lạc : 01692348486 Email: ongdo2004@gmail.com
Đồ án tốt nghiệp được thực hiện tại: Đại học Bách Khoa – Hà Nội
Thời gian làm ĐATN: Từ ngày 28 / 02 /2011 đến 28 / 05 /2011
2 Mục đích nội dung của ĐATN
• Tìm hiểu môi trường lập trình trên điện thoại iPhone
• Xây dựng ứng dụng cung cấp dịch vụ thông tin , hỗ trợ người dùng trên đi thoại di động iPhone (phía client)
• Xây dựng Server cung cấp cổng thông tin phục vụ ứng dụng phía client
3 Các nhiệm vụ cụ thể của ĐATN
Từ các mục đích nội dụng, các nhiệm vụ cụ thể của đồ án sẽ thực hiện
• Tim hiểu về lập trình trên điện thoại di động
• Tìm hiểu về iPhone
• Tìm hiểu về công cụ, ngôn ngữ , nền tảng lập trình cho điện thoại iPhone
• Tìm hiểu về thiết kế và lập trình Server , mô hình hệ thống Mobile Portal
• Thiết kế và xây dựng ứng dụng cung cấp dịch vụ thông tin trên điện thoại iPhone
4 Lời cam đoan của sinh viên:
Tôi – Nguyễn Quốc Huy - 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ướng dẫn của ThS Lương Mạnh Bá và ThS Nguyễn Tiến Thành
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 tháng năm
Tác giả ĐATN
Nguyễn Quốc Huy
Trang 25 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ảo vệ:
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
ThS Lương Mạnh Bá
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
ThS Nguyễn Tiến Thành
Trang 3TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Nhận thức được xu hướng phát triển của các ứng dụng di động hiện nay cũng như trong tương lai gần sẽ tiếp tục tăng và dựa trên những nền tảng di động của các năm trước Đặc biệt trong năm nay được dự đoán sẽ là sự bùng nổ của 1 loạt các ứng dụng di động được tung ra thị trường Các công ty phát triển phần mềm cũng như cá nhân các lập trình viên đang tìm kiếm cho mình 1 ứng dụng đáp ứng được hầu hết các tầng lớp khách hàng trong nhu cầu sử dụng riêng Từ đó hệ thống cổng thông tin di động Mobile Portal đã ra đời và đi vào hoạt động , với đặc tính “chỉ 1 kết nối” hay “tất cả trong 1” sẽ là đầu mối thông tin cho nhiều vấn đề , giúp người dùng định hướng trong hành trình khám phá kho báu internet rộng rãi
Trọng tâm của đồ án sinh viên xin trình bày việc xây dựng 1 phần server của hệ thống mobile portal – và xây dựng thành phần client - ứng dụng trên nền iPhone giao tiếp với server qua hệ thống mobile portal này Các phần chính của báo cáo :
Trang 4Lời nói đầu
Đồ án tốt nghiệp này đã được hoàn thành sau một thời tìm hiểu, xây dựng tại Công ty
Cổ phần dịch vụ công nghệ thông tin Naiscorp Ngoài sự cố gắng và nỗ lực của bản
thân, còn có sự giúp đỡ của nhiều người để em có thể hoàn thành được đồ án như ngày nay
Trước hết, em xin được gửi lời cảm ơn sâu sắc đến ThS Lương Mạnh Bá và ThS
Nguyễn Tiến Thành - Bộ môn Công nghệ phần mềm, Viện Công nghệ Thông tin và
Truyền thông, trường Đại học Bách Khoa Hà Nội đã hết lòng giúp đỡ, định hướng và chỉ dạy tận tình giúp em vượt qua những khó khăn trong quá trình em làm đồ án tốt nghiệp
Em xin được gửi lời cảm ơn tới các thầy cô giáo trong trường Đại học Bách Khoa Hà
Nội nói chung và các thầy cô trong viện Công nghệ Thông tin và Truyền thông, Bộ môn
Công nghệ phần mềm nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức, những kinh nghiệm quý báu trong suốt 5 năm học tập và rèn luyện tại trường Đại học Bách Khoa Hà Nội
Ngoài ra, em cũng xin gửi lời cảm ơn đến chị An Thị Hồng , anh Mai Đình Thắng và
các anh chị em công ty Naiscorp đã tạo điều kiện để em có thể hoàn thành sản phẩm và cũng là đồ án của mình
Nguyễn Quốc Huy
Trang 5Phần 1 : Nền tảng công nghệ
1 Chương 1 : Tìm hiểu môi trường lập trình trên iPhone
1.1 Tổng quan về lập trình trên di động
1.1.1 Thị trường lập trình trên di động :
Số lượng thiết bị di động ngày càng tăng ở Việt Nam, nhiều người đã coi điện thọai
di động như một vật không thể thiếu trong cuộc sống hằng ngày Cùng với sự phát triển mạnh mẽ của công nghệ thông tin trong thời đại mới, người sử dụng di động bắt đầu hướng tới những nhu cầu cao cấp hơn Không chỉ nghe-gọi, nhắn tin mà giờ đây họ còn muốn sở hữu một chiếc điện thoại có khả năng truy cập mạng và thực hiện mọi ứng dụng như một chiếc máy tính bỏ túi
Để có thể thực hiện được các tính năng cao cấp như đọc báo, tiểu thuyết, tra từ điển, bản đồ và nhất là thế giới giải trí với ca nhạc, xem phim, chơi game… thì ngoài nền tảng phần cứng do nhà sản xuất điện thoại cung cấp còn cân phải có các phần mềm chuyên dụng cài đặt trên di động để thực hiện các chức năng trên
Tuy nhiên, thị trường di động là một thị trường rất sôi động với đủ loại thiết bị di động của các nhà sản xuất có kiểu dáng, tính năng, tốc độ xử lý, bộ nhớ trong, màn hình giao diện… khác nhau Và cũng vì có nhiều nhà sản xuất mà lại không có một chuẩn công nghệ (về mặt phần mềm) nào được áp dụng chung cho tất cả các máy điện thoại di động nên công việc lập trình cho điện thoại di động đúng là một bài toán khó cho các lập trình viên
Việc lựa chọn một nền tảng phát triển cho điện thoại di động cũng là một vấn đề nan giải Hiện nay có thể kể tên các nền tảng di động phổ biến: iPhone, Window Mobile, Android, J2ME, Symbian Nhìn vào hình dưới đây có thể thấy được phần nào
sự phong phú của thị trường này
Trang 6Hình 1.1 : Các nền tảng lập trình di động
1.1.2 Thị trường lập trình trên di động :
1 Những ưu điểm , thuận lợi :
Đi theo sự phát triển như vũ bão của mạng internet là nhu cầu truy cập thông tin của người sử dụng mọi lúc mọi nơi khiến cho các thiết bị mobile là một thiết bị lí tưởng để đáp ứng bởi sự nhỏ gọn cũng như tính năng di động của nó
Ngày nay khi mà sự phát triển về phần cứng của các thiết bị di động đã đáp ứng được những xử lí phức tạp của các thiết bị di động , thì chức năng của chiếc điện thoại không còn bó hẹp trong việc nghe gọi và nhận các thông tin đơn giản nữa Chiếc điện thoại ngày nay gần giống với 1 chiếc PC , hỗ trợ người dùng trong các công việc hàng ngày , đáp ứng nhu cầu giải trí , thông tin
Người sử dụng sẵn sàng bỏ ra 1 khoản tiền để mua những ứng dụng đáp ứng nhu cầu của mình Nguồn lợi to lớn này là 1 trong những động lực thúc đẩy sự phát triển của các ứng dụng di động
Trang 7Nhu cầu người dùng tăng cao , khiến cho sự phát triển của các nền tảng di động tăng trưởng 1 cách mạnh mẽ , đặc biệt được dự đoán sẽ bùng nổ trong năm 2011 , đã thu hút một lượng lớn các lập trình viên chuyển từ các lĩnh vực khác sang Nó gián tiếp tạo ra 1 cộng đồng lớn , mà trong đó có sự giúp đỡ , hỗ trợ lẫn nhau ; tạo ra 1 cộng đồng thư viện lập trình API rộng rãi khiến cho việc lập trình trở nên đơn giản hơn
Sự hỗ trở của các hãng lớn cho các nền tảng phát triển của mình tạo điều kiện thuận lợi cho các lập trình viên trong việc thiết kế, xây dựng cũng như quảng bá sản phẩm tới mọi đối tượng người dùng
2 Những ưu điểm , thuận lợi :
Tuy phần cứng di dộng ngày càng phát triển nhưng nó cũng không thể hoàn toàn thay thế được những chiêc PC bởi hạn chế về kích thước cũng như công nghệ phát triển So với chiếc máy tính để bàn hay laptop, chỉ với bộ nhớ trong vài GB, RAM cao nhất
là 256 MB, bộ nhớ của chiếc điện thoại di động quả là quá nhỏ Hơn nữa, một phần bộ nhớ này lại đã được sử dụng để chạy hệ điều hành, xử lý đồ họa… Do đó khi viết ứng dụng, lập trình viên phải chú ý nhiều đến bộ nhớ Có thể nói rằng lập trình cho di động giống như việc đẩy các lập trình viên về với thời kỳ đầu của lập trình cho máy tính cá nhân, phải tiết kiệm từng KB bộ nhớ một nếu không muốn xảy ra tình trạng tràn bộ nhớ
Người sử dụng ứng dụng trên di động đòi hỏi tốc độ phải nhanh, ví như mở một game, người ta không thể ngồi chờ cả chục phút để game load xong Do đó, quá trình đóng, mở ứng dụng phải diễn ra nhanh chóng Hơn nữa, dù có thông minh đến mấy, nhiều chức năng đến mấy, chiếc điện thoại di động cũng phải là “chiếc điện thoại” trước đã Vậy khi đang chạy ứng dụng, bất thình lình có một tin nhắn hay một cuộc gọi đến thì sao? Ứng dụng phải được đóng tạm thời một cách nhanh chóng, lưu trữ lại trạng thái trước khi đóng, cho người dùng nhận tin nhắn, cuộc gọi (nếu người dùng lựa chọn nhận), sau đó lại cho phép người dùng trở lại ứng dụng với trạng thái trước đó
Sức hấp dẫn của Internet là không thể chối cãi Người dùng muốn truy cập internet mọi lúc mọi nơi, người lập trình thì muốn tạo ra các ứng dụng có khả năng khai thác nguồn tài nguyên vô tận của internet Tuy nhiên không phải thiết bị di động nào cũng
có khả năng truy nhập internet Vì vậy, cần phải hiểu về các dịch vụ phần cứng của thiết bị đó hỗ trợ
Tư tưởng “code một chỗ, dùng ở mọi nơi” khó mà áp dụng được cho lĩnh vực lập trình di động Ví dụ như với các dòng máy cho phép cài đặt các ứng dụng viết bằng ngôn ngữ Java Về lý thuyết, chương trình Java được xây dựng xong có thể đem đi mọi nơi có máy ảo Java để chạy Nhưng các thiết bị di động của các hãng khác nhau lại có
bộ nhớ cùng với tốc độ xử lý khác nhau, phải hiểu rõ sự khác nhau này thì mới có thể
Trang 8điều chỉnh cho ứng dụng có thể chạy trên các dòng máy khác nhau Hơn nữa, màn hình hiển thị của các thiết bị di động cũng “trăm hoa đua nở” với kích thước, độ phân giải màn hình… không theo một chuẩn nhất định nên chắc chắc sẽ không ra kết quả như mong muốn khi cài đặt cùng một ứng dụng lên các thiết bị khác nhau mà không có sự sửa đổi hiển thị đầu ra cho phù hợp Mặt khác, các thiết bị di động cũng tiếp nhận tương tác của người dùng rất khác nhau: qua bàn phím, chuột, bút, cảm ứng… nên lập trình viên cũng cần phải lưu ý đến điều này.
Màn hình của các thiết bị di động rất bé so với máy tính để bàn hay máy tính xách tay nên các ứng dụng cũng không thể có giao diện quá phức tạp bởi như thế sẽ làm rối mắt người sử dụng
Năm 2011 , tiếp tục chứng kiện sự phân mảnh của thị trường di động khi ứng dụng ngày càng được phát triển Điều này gián tiếp bắt người lập trình phải lựa chọn những nền tảng thích hợp cho ứng dụng của mình , khó khăn trong việc chuyển đổi giữa các nền tảng trong cùng một ứng dụng
1.1.3 Các nền tảng phát triển di động hứa hẹn trong năm 2011 :
Năm 2011 tiếp tục là cuộc cạnh tranh của các nền tảng di động cũ đã xuất hiện trước đó như iOS , Symbian , WindowsPhone , Blackberry và Android Đồng thời cộng đồng cũng đón chờ những nền tảng mới sắp được đưa ra hứa hẹn sẽ là đối thủ nặng kí cho các nền tảng trên bởi sự hậu thuẫn từ các hãng lớn như : WebOS ( do HP ) , MeeGo ( từ Nokia và các đồng mình ) , Blackberry OS7 ( phát triển hoàn toàn mới so với OS6 )
• iPhone
Có thể nói iPhone là nền tảng đem lại lợi nhuận cao nhất cho lập trình viên cũng như các hãng cung cấp dịch vụ Sự thay đổi về đa nhiệm ở các phiên bản mới ( 4.x ) so với các phiên bản trước đó là sự cải tiến đáng kể nhất Sự thành công của iPhone không chỉ bởi nền tảng có giao diện đơn giản, những chiếc di động thiết kế đẹp, mà Apple đã xây dựng một "hệ sinh thái" với vô số ứng dụng trong App Store
• Symbian
Sự thay đổi chậm chạp khiến cho nền tảng này của Nokia đang mất đi vị thế độc tôn vốn có trước đây của nó Sức thu hút lập trình viên cũng không còn được như trước Tuy nhiên nó vẫn giữ được thị phần trong mảng điện thoại phổ thông bởi tính đơn giản và nhẹ nhàng của nó
• WindowsPhone 7
WindowsPhone 7 là sự thay đổi thực sự chứ không phải là 1 bản cải tiến của Windows Mobile 6.5 trước đó Microsoft hứa hẹn sẽ mang lại những trải nghiệm mới
Trang 9cho người dùng và lập trình viên , đơn giản , dễ dùng Mới ra đời nên Microsoft cũng đang tích cực phát triển gian ứng dụng Market Place và hoàn thiện các công cụ lập trình liên quan Hi vọng đây cũng sẽ là nền tảng thành công giống như Windows 7 của Microsoft
• Blackberry OS
Cho ra mắt liền 2 phiên bản OS 6 và 7 trong khoảng thời gian ngắn , RIM cho thấy vòng đời của các hệ điều hành ngày càng rút ngắn dần , điều này tích cực mang lại sự phong phú cho người dùng và lập trình viên Hệ điều hành này của RIM có khả năng tướng thích với HTML 5 và hỗ trợ đa điểm tốt hơn
• Samsung Bada
Samsung từng sản xuất di động chạy Windows Mobile, Android Bada là nền tảng của hãng phát triển riêng, với giao diện có nhiều đường nét của TouchWiz Bada dành cho màn hình cảm ứng, nhấn mạnh vào các yếu tố như giải trí, kết nối Samsung Wave S8500 là model đầu tiên chạy nền tảng này, máy sẽ bán ra trong quý này
Hiện tại, Bada đang được Samsung hoàn thiện, hãng cũng đã giới thiệu công cụ lập trình, các nhà phát triển có thể viết các ứng dụng về giao diện Flash, điều khiển web, điều khiển chuyển động, nhận dạng khuôn mặt, thời tiết và các ứng dụng nhập vai, tương tác
1.2 Tổng quan về lập trình trên nền tảng iPhone
1.2.1 Giới thiệu về iPhone
1 Cuộc cách mạng về công nghệ trên di động mang tên iPhone
Tháng 6 năm 2007, chiếc iPhone thế hệ đầu tiên ra mắt và mở đầu cho cơn sốt iPhone trên toàn thế giới Không hổ danh là công ty luôn đi đầu về công nghệ, Apple
đã tạo ra thay đổi mang tính cách mạng với chiếc điện thoại di động khi giới thiệu một giao diện người dùng hoàn toàn mới trên nền tảng màn hình cảm ứng đa điểm và phần mềm mới có tính tiên phong Hệ điều hành của iPhone giúp người dùng có thể điều khiển chiếc điện thoại của họ chỉ bằng một thao tác nhấn, gảy hoặc chụm tay
Đến năm 2008, Apple lại cho ra mắt iPhone 3G cùng với App Store - một “cửa hàng” các ứng dụng cho iPhone
iPhone có màn hình cảm ứng đa điểm, bàn phím ảo hoàn toàn thay thế bàn phím thật và có một gia tốc kế bên trong Màn hình cảm ứng đa điểm tận dụng xúc giác tự
Trang 10nhiên của khách hàng mà không thông qua bút stylus Các thao tác trên máy được thực hiện dễ dàng chỉ bằng cách đặt ngón tay lên màn hình nhấn, kéo, thả… iPhone loại bỏ hoàn toàn sự xuất hiện của bàn phím thật, thay vào đó là bàn phím thông minh hoạt động trên cơ sở phần mềm Bàn phím ảo này cho phép người dùng chuyển đổi qua lại giữa 40 dạng bàn phím quốc tế và có phần mềm nhận dạng ký tự cho phép người dùng viết các ký tự Trung Hoa bằng ngón tay rồi nhấn chọn kết quả thích hợp
iPhone phản ứng với các chuyển động bằng một gia tốc kế lắp bên trong Khi người dùng quay iPhone từ phương đứng sang phương ngang, gia tốc kế phát hiện ra chuyển động này và thay đổi màn hình, cho xem toàn bộ chiều rộng của trang web, hình ảnh, tin nhắn, hoặc bản ghi chú gia tốc kế cũng được sử dụng để kiểm soát việc chơi game hay đảo ngược hành động trước đó (như lệnh “Shake to Undo”)
Với iPhone 3GS, người dùng có thể tự điều chỉnh và sắp xếp các biểu tượng trên màn hình Chủ (Home screen), kể cả các biểu tượng trên Thanh Công Cụ theo ý muốn của mình
iPhone phân tích các cú gõ để đề nghị các từ mà người dùng gõ vào, và học được những từ người dùng thường hay gõ nhất – kể cả tên riêng và thông tin trong sổ liên lạc (contact list) của họ
Nhấn và giữ nút Home để mở chế độ Voice Control (Điều Khiển Bằng Khẩu Lệnh), rồi đọc vào tên hay số điện thoại của một người liên lạc để gọi điện iPhone cũng mở nhạc và tạo ra các danh mục mở (playlist), bằng cách chỉ việc dùng khẩu lệnh Đây là một trong các tính năng mới được thêm vào sau này của iPhone
iPhone 3GS được chuẩn hóa bằng các tính năng tiếp cận sử dụng (accessibility) hỗ trợ cho người khuyết tật
iPhone cung cấp các dữ liệu vị trí để tìm đến các ứng dụng cài đặt sẵn và Cửa Hàng Ứng Dụng (App Store) Khi chụp ảnh bằng camera iPhone có thể gắn thẻ địa lý (geotag), ghi các thông tin về địa điểm GPS (Hệ Thống Định Vị Toàn Cầu) cho nó Nhờ vậy, khi người dùng chia sẻ hình ảnh trên mạng, bạn bè và gia đình có thể biết được địa điểm của hình chụp
Trang 11Màn hình nhỏ : màn hình của iPhone có độ phân giải 480 x 320 pixel Không có
nhiều không gian để làm việc cùng Kích thước màn hình nhỏ cũng dẫn tới việc chỉ có duy nhất 1 cửa sổ có thể hiển thị tại một thời điểm Tuy nhiên màn hình của iPhone vẫn được coi là có số điểm anh cao trong các thiết bị hiện nay
Bảo mật : chỉ có thể đọc và ghi vào thư mục là một phần của gói ứng dụng Vùng
có thể truy nhập trong một ứng dụng được gọi là sandbox Không thể đọc file được tạo bởi ứng dụng khác Không thể ghi vào bất cứ nơi nào ngoài sandbox của ứng dụng
Ứng dụng có vòng đời ngắn : các ứng dụng iPhone không thể thường trú trong bộ
nhớ Các ứng dụng thường trú trong bộ nhớ là ứng dụng có thể chạy ẩn trong khi người dùng chạy ứng dụng khác iPhone chỉ cho phép 1 chương trình chạy tại một thời điểm
đo đó cần lưu ý tới các trường hợp như đang chạy ứng dụng thì có tin nhắn, điện thoại… Tuy nhiên, hạn chế này sẽ sớm được khắc phục khi Apple đang dự kiến cho ra mắt iPhone 4.0 với hệ điều hành đa nhiệm trong năm nay
Người lập trình viên phải tự quản lý bộ nhớ do iPhone không có bộ gom rác
(garbage collection)
1.2.2 Yêu cầu tối thiểu của lập trình iPhone
Hệ điều hành MacOS các phiên bản từ 10.5 trở lên
Công cụ iPhone SDK iPhone SDK có thể download miễn phí từ trang
Trang 12Hình 1.2 : thành phần Xcode
• Các template sẵn có trong Xcode :
Trang 13Template Ứng dụng
View - based application Áp dụng với những ứng dụng chỉ có một view (cảnh) Một
controller quản lý view chính của ứng dụng
OpenGL ES application Áp dụng với những ứng dụng sử dụng tới đồ họa, 3D game
Tab bar application Cung cấp một controller đặc biệt hiển thị một nút bên dưới
màn hình Đây là template thích hợp cho các ứng dụng kiểu cho iPod hay là Mobile Phone
Trang 14• Sự bố trí của 1 project trong Xcode :
Sau khi tạo một project mới, màn hình project sẽ mở ra:
Hình 1.4 : Xcode Editor
Một project đóng gói nguồn, framework và các tài nguyên của ứng dụng Trong một project bao gồm:
• Classes : Chứa các lớp Objective-C mà ứng dụng cần sử dụng: đối tượng
delegate, view controller, và các đối tượng khác người dùng tạo ra Khi muốn thêm một lớp mới vào ứng dụng của mình, lập trình viên sẽ thêm lớp mới của mình vào đây
• Other sources: các nguồn khác được biên dịch vào ứng dụng Mặc định,
Other sources sẽ chứa các header tiền biên dịch và hàm main
• Resources: Các tài nguyên của ứng dụng mà không được biên dịch vào
trong source code nhưng được sao chép vào thư mục chương trình khi ứng dụng build lên Các tài nguyên này bao gồm: ảnh, âm thanh, game level hay các file quan trọng khác
Trang 15• Frameworks: chứa các framework mà ứng dụng có liên kết Các thư viện
này được liên kết lúc build
• Products: build target cho ứng dụng
2 Thành phần Interface builder :
Cũng giống các SDK lập trình cao cấp hiện nay, nền tảng iPhone cũng hỗ trợ lập trình đơn giản trong thao tác thiết kế giao diện , cung cấp khả năng kéo thả và tùy biến tương đối mạnh mẽ
• Tạo file Interface builder :
Khi tạo một project, Xcode sử dụng project template, trong project mới được tạo ra
sẽ chứa một tập file Interface Builder cơ bản Khi muốn tạo thêm các file Interface Builder, trong hộp thoại Xcode chọn New File, hoặc trong giao diện Builder chọn File> New Cửa sô “Choose a Template” được mở ra:
Hình 1.5 : Interface Builder – New file
Trang 16Đối với mỗi một file mới được tạo ra, Interface Builder cho phép người dùng chọn một template bắt đầu Các template này xác định tập các đối tượng khởi tạo ban đầu sử dụng trong file giao diện mới được tạo ra Interface Builder cung cấp một số template khác nhau được liệt kê trong bảng sau Mỗi template hướng tới một mục tiêu khác nhau Người dùng cũng có thể sử dụng template rỗng nếu muốn tự thêm các đối tượng cho tài liệu của mình Đối với bất kỳ template có sẵn nào, người dùng cũng có thể loại
bỏ các đối tượng không muốn
Platform Sản phẩm Template Mô tả
iPhone
OS
iPhone Application Tạo một file giao diện sử dụng để thiết kế giao
diện cho ứng dụng Cocoa Touch File giao diện này chứa 1 cửa sổ
View Dùng để thiết kế một view trong ưng dụng
Cocoa Touch
Window Dùng để thiết kế một cửa sổ trong ứng dụng
Cocoa Touch
Empty Tạo một file rỗng mà người dùng có thể tùy ý
thêm các đối tượng
iPad Application Tạo ra file thích hợp để tạo ứng dụng cho
iPad, gồm một delegate và một cửa sổ của ứng dụng
View Tạo một file để thiết kế view cho ứng dụng
iPad
Window Dùng dể thiết kế một cửa sổ cho ứng dụng
iPad
Empty Mac OS
X
Cocoa Application Tạo một file giao diện sử dụng để thiết kế giao
diện cho ứng dụng Cocoa File giao diện này chứa 1 cửa sổ
Main Menu Tạo tài liệu để thiết kế thanh thực đơn cho ứng
Empty Tạo một file rỗng mà người dùng có thể tùy ý
thêm các đối tượng
Carrbon Application Tạo một file giao diện sử dụng để thiết kế giao
diện cho ứng dụng Carbon File giao diện này chứa 1 cửa sổ
Dialog Tạo tài liệu để thiết kế hộp thoại cho ứng dụng
Carbon
Main Menu Tạo tài liệu để thiết kế thanh thực đơn cho ứng
Trang 17dụng Carbon
Window Dùng để thiết kế một cửa sổ trong ứng dụng
Carbon
Empty Tạo một file rỗng mà người dùng có thể tùy ý
thêm các đối tượng
- Library Dùng để thiết kế các phần tử thư viện cho
Interface Builder plug-in
Bảng 1.6 : Các template của interface builder
• Cửa sổ tài liệu :
Interface Builder cung cấp một số cửa sổ cho phép người dùng hiển thị và chỉnh sửa các đối tượng trong giao diện sử dụng của ứng dụng: cửa sổ tài liệu, cửa sổ thư viện, cửa sổ Inspector, bảng kết nối
o Cửa sổ tài liệu: Mỗi tài liệu Interface Builder lưu trữ thông tin về một hoặc nhiều đối tượng người sử dụng muốn tạo ra tại thời gian chạy trong ứng dụng của mình Hầu hết các đối tượng tương ứng với các phần tử hiển thị trên màn hình, chẳng hạn như cửa sổ, view, điều khiển, và thực đơn Một số đối tượng không tương ứng với các phần
tử hiển thị, chẳng hạn như các đối tượng điều khiển được chương trình sử dụng để quản lý các cửa sổ và view của mình
Ví dụ một cửa sổ tài liệu:
Trang 18Hình 1.7 : Cửa sổ tài liệu Interface Builder
o Cửa sổ thư viện: Cửa sổ thư viện chứa các đối tượng và các tài nguyên được thêm vào tài liệu Interface Builder Hình sau cho thấy cửa sổ thư viện với một tập các đối tượng nút Cocoa Người dùng có thể kéo một đối tượng nút lên mặt thiết kế như một cửa sổ hoặc view
Hình 1.8 : Cửa sổ thư viện Interface Builder
o Cửa sổ Inspector: Cửa sổ Inspector giúp dễ dàng hiển thị và điều chỉnh các cài đặt cho đối tượng hiện đang được chọn Sử dụng các biểu tượng chế độ dọc theo phía trên cửa sổ để lựa chọn một pane và hiển thị các cài đặt tương ứng Hình sau cho thấy cửa sổ thuộc tính cho một nút Cocoa
Trang 19Hình 1.9 : cửa sổ thuộc tính Interface Builder
o Bảng điều khiển kết nối: Một kết nối là cách để các thành phần giao diện kết hợp với mã nguồn Đối với tài liệu được sử dụng nền tảng Cocoa và Cocoa Touch, bảng điều khiển kết nối là một cách nhanh chóng để tạo và quản lý các kết nối cho một đối tượng cụ thể
Trang 20Hình 1.9 : Bảng kết nối của Interface Builder
Trang 213 Thành phần iPhone Simulator :
iPhone Simulator là giả lập của iPhone cho phép người dùng triền khai và kiểm thử các ứng dụng iPhone trên máy tính để bàn Simulator cung cấp môi trường giống với iPhone với tùy chọn menu để giả lập khóa, xoay màn hình… Tuy nhiên nó cũng có một
số giới hạn nhất định do desktop không có các phần cứng cần thiết để thực hiện các tác
vụ đó
Một số chức năng quan trọng không có trong simulator:
Không có API đo gia tốc
Chỉ giới hạn với một số cử chỉ tương tác với màn hình cảm ứng, và không hỗ trợ nhiều hơn 2 ngón tương tác lên màn hình cảm ứng
Ứng dụng sẽ không nhận điện thoại gọi đến
Không thể truy nhập mạng EDGE/3G
Không có chức năng ghi hình và ghi âm
Chỉ có sẵn một số ứng dụng của iPhone: Contacts, Safari, Photos và Settings
Không thể thấy tác động của ứng dụng lên CPU và bộ nhớ của iPhone bởi máy desktop có nhiều tài nguyên hơn để chạy ứng dụng Đồ họa chậm hay các vấn đề khác chỉ có thể phát hiện ra khi kiểm thử trên máy thật
Hình 1.10 : iPhone Simulator
Trang 221.2.4 Ngôn ngữ lập trình Objective - C :
1 Lịch sử ra đời của ngôn ngữ Objective – C :
Đầu những năm 70 của thế kỷ trước, Dennis Ritchie của phòng thí nghiệm AT&T Bell giới thiệu ngôn ngữ lập trình C Tuy nhiên phải đến cuối những năm 70, ngôn ngữ
C mới trở nên phổ biến do trước đó bộ biên dịch cho C chưa phải là sản phẩm thương mại bên ngoài phòng thí nghiệm Bell
Đến đầu những năm 80 của thế kỷ trước, Brad J.Cox thiết kế nên ngôn ngữ Objective-C Ngôn ngữ này dựa trên một ngôn ngữ tên là SmallTalk-80 Objective-C ở tầng trên của ngôn ngữ C với ý nghĩa là những phần mở rộng đã được bổ sung vào C
để tạo thành một ngôn ngữ lập trình mới có thể tạo ra và quản lý đối tượng
NeXT Software đăng ký ngôn ngữ Objective-C vào năm 1988 và phát triển thư viện và một môi trường phát triển cho nó tên là NEXTSTEP
Năm 1994, NeXT Computer và Sun Microsystem phát hành bản đặc tả kỹ thuật chuẩn của hệ thống NEXTSTEP gọi là OPENSTEP
20/12/1996, hãng máy tính Apple công bố đã giành được NeXT Software, và NEXTSTEP/OPENSTEP trở thành nền móng cơ bản cho OS X, hệ điều hành thế hệ tiếp theo của Apple Phiên bản môi trường phát triển này của Apple được gọi là Cocoa Nhiều hỗ trợ cho ngôn ngữ Objective-C được tích hợp sẵn, cùng với Xcode và Interface Builder, Apple đã tạo ra một môi trường phát triển rất mạnh cho phát triển ứng dụng trên hệ điều hành Mac OS X
Năm 2007, Apple phát hành bản cập nhật của Objective-C gọi là Objective-C 2.0
Năm 2007 cũng là năm Apple phát hành iPhone Ban đầu, Apple không cho phép các ứng dụng của bên thứ 3 chạy trên thiết bị này Nhưng sau một thời gian khi một số hacker bẻ khóa được iPhone và viết các phần mềm có thể chạy trên iPhone, Apple đã thay đổi chiến lược Apple đã thuê chính các hacker này để viết nên iPhone SDK cho phép các nhà phát triển có thể viết ứng dụng cho iPhone
2 Lớp , đối tượng và thông điệp :
Trang 23một trình biên dịch, mà còn cần một runtime system để thực thi mã biên dịch Runtime system hoạt động như một loại hệ điều hành cho ngôn ngữ Objective-C vì nhờ nó mà ngôn ngữ này mới có thể làm việc Tuy nhiên, các lập trình viên không nhất thiết phải tương tác trực tiếp với runtime.
b) Đối tượng
Khái niệm đối tượng trong Objective-C không khác so với trong các ngôn ngữ lập trình hướng đối tượng khác như là Java , C++ hay C# Đối tượng bao gồm các thuộc tính và các phương thức
• id: Trong Objective-C, định danh của đối tượng là một loại dữ liệu đặc biệt:
id Đây là kiểu chung cho bất kỳ loại đối tượng nào kể cả lớp (Nó có thể
được sử dụng cho cả thể hiện của lớp và chính bản thân đối tượng lớp) id
là con trỏ tới cấu trúc dữ liệu đối tượng:
typedef struct objc_object { Class isa;
} *id;
Do đó, tất cả các đối tượng đều chứa biến thành phần isa để xác định xem
nó là thể hiện của lớp nào
Giống như một hàm hay màng của C, một đối tượng được xác định bởi địa chỉ của nó Tất cả các đối tượng, bất kể biến và phương thức thành phần của
nó là gì, đều thuộc loại id
id anObject;
• Xác định kiểu dữ liệu động: Kiểu dữ liệu id có thể đại diện cho tất cả các
đối tượng tuy nhiên bản thân nó lại không chứa bất kỳ thông tin nào về đối tượng, ngoài việc chỉ ra rằng đó là một đối tượng Nhưng các đối tượng không hề giống nhau Khi cần thiết, chương trình cần phải tìm thêm thông tin cụ thể về đối tượng: chứa các dữ liệu kiểu gì, có các phương thức nào
Bởi vì kiểu dữ liệu id không thể cung cấp thông tin này cho trình biên dịch
nên các đối tượng phải có khả năng cung cấp các thông tin này khi chạy
Thuộc tính isa xác định lớp của đối tượng nghĩa là xác định xem đối tượng
đó thuộc loại gì Các đối tượng có cùng các phương thức và các biến thành phần là thành viên của cùng một lớp
Do đó các đối tượng được xác định kiểu dữ liệu động khi chạy Bất cứ khi nào nó cần, runtime system có thể tìm thấy chính xác lớp của một đối
Trang 24tượng Xác định kiểu dữ liệu động là nền tảng cho ràng buộc động (dynamic binding), được trình bày sau đây.
Biến isa cũng cho phép các đối tượng tự tìm hiểu về bản thân mình Trình
biên dịch ghi lại các thông tin về định nghĩa lớp trong cấu trúc dữ liệu được
dùng cho runtime system Các hàm của runtime system sử dụng isa để tìm
thông tin này khi chạy
• Quản lý bộ nhớ: Trong một chương trình Objective-C, việc đảm bảo rằng
các đối tượng được giải phóng khỏi bộ nhớ khi không còn cần thiết nữa hết sức quan trọng nếu không bộ nhớ ứng dụng sẽ trở nên lớn hơn mức cần thiết Cũng quan trọng để đảm bảo rằng không giải phóng các đối tượng trong khi nó vẫn còn đang được sử dụng
Objective-C cung cấp hai môi trường quản lý bộ nhớ để đạt được các mục tiêu này:
- Reference counting
- Garabge collection (không có trên iPhone)
c) Thông điệp (Message)
• Cú pháp: Để khiến một đối tượng làm gì, cần phải gửi cho nó một thông
điệp để nó thực hiện một phương thức nào đó của mình Trong Objective-C, biểu thức thông điệp được đặt trong dấu ngoặc vuông:
[đối_tượng_nhận thông_điệp]
Trong mã nguồn, thông điệp chính là tên của một phương thức và các tham
số được truyền vào cho nó Khi một thông điệp được gửi đi, runtime system lựa chọn phương thức thích hợp từ các phương thức của đối tượng nhận và chạy nó
Tên phương thức trong một thông điệp dùng để chọn phương thức thực thi
Vì lý do này, tên phương thức trong thông điệp còn được gọi là “selector”.Các phương thức có thể nhận số tham số truyền vào tùy ý, cách nhau bởi dấu “:” Và để tránh nhầm lẫn có thể đặt tên cho các tham số
Ví dụ:
[myRectangle setOriginX: 30.0 y: 50.0]
Một thông điệp có thể được lồng trong thông điệp khác Ví dụ :
[myRectangle setPrimaryColor:[otherRect primaryColor]];
Trang 25• Gửi thông điệp tới đối tượng nil: trong Objective-C, điều này hoàn toàn
hợp lệ, nó chỉ đơn giản không gây hiệu ứng gì trong khi chạy
• Ràng buộc động (Dynamic Binding): Một khác biệt quan trọng giữa lời
gọi hàm và thông điệp là một hàm và các tham số của nó được liên kết với nhau trong mã biên dịch, nhưng thông điệp và đối tượng tiếp nhận không thống nhất cho đến khi chương trình đang chạy và tin nhắn được gửi đi Vì vậy, phương thức chính xác được gọi để trả lời một phương thức chỉ có thể được xác định tại thời gian chạy, không phải khi mã được biên dịch
Phương thức chính xác mà một thông điệp gọi sẽ phụ thuộc vào đối tượng nhận Các đối tượng khác nhau có thể có các phương thức khác nhau thực thi cùng một lời gọi hàm (tính đa hình) Đối với trình biên dịch, để tìm ra phương thức thực thi đúng thông điệp, nó cần phải biết đối tượng đó thuộc lớp nào Những thông tin này chỉ được đối tượng tiết lộ tại thời gian chạy khi nó nhận được thông điệp (xác định kiểu động)
Việc lựa chọn một phương thức thực hiện sẽ xảy ra khi chạy Khi một thông điệp được gửi, một runtime messaging rountine sẽ tìm kiếm đối tượng nhận
và phương thức có tên trong thông điệp
Tính ràng buộc động của phương thức (dynamic binding) với các thông điệp kết hợp chặt chẽ với tính đa hình đa hình tạo nên tính linh hoạt và sức mạnh của ngôn ngữ lập trình hướng đối tượng
bổ sung các biến và phương thức mới hay sửa các phương thức mà nó được kế thừa
• Lớp NSObjects: NSObject là lớp gốc, nên nó không có lớp cha Nó định
nghĩa framework cơ bản cho các đối tượng và tương tác giữa các đối tượng của Objective-C Những lớp không cần kế thừa các phương thức đặc biệt từ lớp khác có thể là đặt là lớp con của lớp NSObject
• Đối tượng lớp: Một định nghĩa lớp chứa nhiều thông loại thông tin, chủ
yếu là các thành phần của lớp:
Trang 26o Tên của lớp và lớp cha của nó
o Tập các biến thành phần
o Khai báo các phương thức, kiểu trả về và tham số của phương thức đó
o Code thực thi các phương thức
Những thông tin này được biên dịch và ghi lại trong cấu trúc dữ liệu tạo sẵn cho runtime system Trình biên dịch sẽ chỉ tạo ra một đối tượng, đối tượng lớp, đại diện cho lớp Đối tượng lớp có quyền truy cập tất cả các thông tin
về lớp
Mặc dù một đối tượng lớp giữ các nguyên mẫu của thể hiện lớp, nó không phải là một thể hiện Nó không có các biến của riêng nó và nó không thể tự thực hiện phương thức dành cho thể hiện của lớp Tuy nhiên, một định nghĩa lớp có thể bao gồm các phương thức dành riêng cho các đối tượng lớp gọi là các phương thức tĩnh của lớp Trong mã nguồn, đối tượng lớp được biểu diễn bằng tên lớp
• Tạo một thể hiện của lớp: Một chức năng chính của đối tượng lớp là tạo ra
các thể hiện mới của lớp đó Ví dụ đoạn code sau sẽ yêu cầu lớp Rectangle tạo ra một thể hiện Rectangle và gán nó cho biến myRectangle:
id myRectangle;
myRectangle = [Rectangle alloc];
Phương thức alloc cấp phát 1 vùng bộ nhớ động cho các biến thành phần của đối tượng mới và khởi tạo tất cả về 0 ngoại trừ biến isa thể hiện với
lớp của nó Để đối tượng có thể sử dụng được, nó thường cần phải được khởi tạo Đó là chức năng của hàm init thường được gọi ngay sau hàm alloc:
myRectangle = [[Rectangle alloc] init];
3 Định nghĩa 1 lớp :
Objective-C chia một lớp thành file giao diện (interface) và file thực thi (implementation) File giao diện khai báo các biến và phương thức thành phần Nó là một file header của C chuẩn và không chứa bất kỳ dòng code thực thi nào File thực thi chứa code thực thi của các phương thức của lớp File thực thi có phần đuôi mở rộng
là m
Trang 27File giao diện: Simple.h
a) Chỉ thị biên dịch @interface và @implementation
Trong file Simple.h, lưu ý tới chỉ thị biên dịch @interface Trong file Simple.m, lưu
ý tới chỉ thị biên dịch @implementation Những chỉ thị này phân biệt giao diện của một lớp với phần thực thi của nó Phần code nằm giữa chỉ thị @interface và @end trong Simple.h chứa giao diện của lớp Simple, trong đoạn code nằm giữa
@implementation và @end trong file Simple.m chứa phần thực thi của lớp Simple.
b) Khai báo và định nghĩa phương thức :
Các biến và phương thức thành phần được khai báo trong file giao diện và được định nghĩa trong file thực thi của lớp Khai báo một phương thức nghĩa là thông báo cho trình biên dịch biết lớp có phương thức đó nhưng không cung cấp code thực sự cho phương thức đó Ví dụ một khai báo phương thức:
- (void) sayHello: (NSString *) name;
Phần khai báo chỉ ra cho trình biên dịch biết rằng có một phương thức có tên
sayHello có một tham số truyền vào có kiểu NSString và không trả lại gì cả (void)
Phần khai báo không nói gì đến nội dung của hàm
Trình biên dịch sẽ tìm thấy đoạn code thực thi của phương thức trong phần định nghĩa phương thức Ví dụ, phần định nghĩa của phương thức sayHello ở trên:
- (void) sayHello : (NSString *) name{
NSLog(@”Hello %@”, name);
}
Trang 28c) Các phần tử trong file giao diện của lớp :
Giao diện của lớp bao gồm các câu lệnh import, khai báo lớp, khai báo biến và thuộc tính thành phần
Hình 1.11: Cấu trúc file giao diện của 1 lớp
d) Các phần tử trong file thực thi của lớp:
Giao diện chỉ là một nửa của lớp Thực thi của lớp cũng quan trọng như là giao diện của nó vậy
e) Các biến thành phần public, private, protected:
Các biến thành phần của lớp có thể là public, private hay protected Biến private là biến chỉ được sử dụng trong lớp đó mà thôi, các lớp con không kế thừa biến private của lớp cha, các lớp khác không thể truy nhập vào biến private của lớp khác Biến protected cho phép kế thừa nhưng không cho phép các lớp khác truy nhập vào Biến public cho phép tất cả các lớp khác đêu truy nhập được vào
Trang 29Hình 1.12 : Cấu trúc file thực thi của 1 lớp
f) Sử dụng đối tượng self trong một thông điệp:
Thuật ngữ self ám chỉ bản thân đối tượng khi gửi một thông điệp đi và nó cũng
đồng thời là đối tượng nhận thông điệp đó Nó dùng để chỉ đối tượng hiện thời tương
tự như đối tượng this trong Java.
g) Quản lý bộ nhớ sử dụng retain và release :
Không giống như Java hay C#, khi lập trình cho iPhone, lập trình viên phải tự quản
lý bộ nhớ vì trong iPhone không có bộ gom rác (garbage collection) Mặc dù đến phiên bản OS X 10.5, Cocoa đã có tùy chọn sử dụng garbage collection tự động nhưng tùy chọn này vẫn chưa có trên iPhone
Hình 1.12 : Các phương thức quản lí bộ nhớ của Objective – C
h) Quản lý bộ nhớ sử dụng Autorelease
Trang 30Việc tự quản lý retain count có thể nhiều lúc gây ra nhầm lẫn hay lỗi Phương thức
autorelease của đối tượng NSObject sẽ giúp quản lý retain count Phương thức autorelease sử dụng lời gọi release pool để quản lý tham chiếu của đối tượng
Ví dụ :
- (void) sayHelloTom { Simple *objSimple = [[[Simple alloc] init] autorelease];
[objSimple sayHello:@"Tom"];
}
Hàm sayHelloTom sẽ cấp phát một vùng bộ nhớ cho thể hiện của lớp Simple và sau
đó gọi hàm autorelease, gán đối tượng objSimple cho autorelease pool Khi phương thức được thực hiện xong, autorelease pool được giải phóng và do đó thể hiện của lớp Simple objSimple cũng được giải phóng
Sử dụng autorelease và chấp nhận autorelease pool ở chế độ mặc định làm cho việc quản lý bộ nhớ trở nên dễ dàng Tuy nhiên, có vấn đề nảy sinh: các đối tượng kéo thời gian tồn tại của release pool Chỉ có một cách giải quyết là tự quản lý đối tượng
NSAutoReleasePool
Ví dụ:
- (void) sayHelloTom { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Simple *objSimple = [[[Simple alloc] autorelease] init];
mà không giữ lại (retain) hay giải phóng (release) thường gây ra lỗi
Quản lý bộ nhớ khi lấy ra hay gán một giá trị cho biến thành phần là một việc không dễ dàng.Objective-C 2.0 giúp cho việc này trở nên dễ dàng hơn sử dụng thuộc tính Thuộc tính là các “phím tắt” để tạo một phần tử truy nhập vào biến thành phần
Tạo thuộc tính bằng cách sử dụng chỉ thị biên dịch @property @property khai báo một thuộc tính, @synthesize nói cho trình biên dịch biết phải sinh ra một phần tử truy nhập và @dynamic thông báo cho trình biên dịch biết là người dùng sẽ cung cấp hàm
truy nhập Một chỉ thị thuộc tính cũng có một số thuộc tính được liệt kê trong bảng sau:
Trang 31Property Attribute Description
assign Hàm setter sẽ gán biến thành phần cho đối tượng
copy Hàm setter sao chép đối tượng cho biến thành phần
nonatomic Trả lại gia trị mà không cần gọi retain hay autorelease trên đối
tượng
readonly biến thành phần chỉ được đọc, không thể thiết lập giá trị cho nó
readwrite biến thành phần có hàm getter và setter (mặc định)
retain Hàm setter sẽ gán biến thành phần cho một đối tượng và gọi hàm
retain
Bảng 1.13 : Property attribute
j) Điều khiển ngoại lệ:
Điều khiển ngoại lệ trong Objective-C tương tự như Java và C++ Objective-C có
khối @try - @catch- @finall để bắt các ngoại lệ.
Trang 322 Chương 2 : Tổng quan về hệ thống tìm kiếm Mobile Portal
Hệ thống được chia ra làm 3 tầng với những chức năng và nhiệm vụ cụ thể:
• Tầng ứng dụng ( Cocoa Touch Application ) : thành phần client truy cập
thông tin
• Tầng giao diện di động ( Mobile Interface )
• Tầng máy chủ tìm kiếm , quản trị nội dung ( Search Engine và Content
Manager System )
Mô hình tổng quan hệ thống được biểu diễn dưới hình sau :
Hình 2.1 : Mô hình hệ thống Mobile Portal
• Quản trị nội dung trong database
Trang 33Database • Chứa dữ liệu tìm kiếm , chỉ mục cũng như cache trên
máy chủ
My Service • Tầng cung cấp những dịch vụ truy xuất thông tin đã
được lưu trong database
• Các thành phần ngoài server muốn truy cậpdữ liệu đều phải qua tầng này
Mobile interface • Tầng hỗ trợ cho việc chuẩn hóa dữ liệu phục vụ cho
điện thoại di động
• Ngoài ra tầng này còn quản lí module giao tiếp cho phép lấy và trả dữ liệu từ máy chủ về cho ứng dụng khi nhận được yêu cầu từ ứng dụng
Trang 342.2 Máy tìm kiếm ( Search Engine ) :
Tầng này được đề cập trong đồ án chỉ mang tính chất giới thiệu vì lí do hạn chế nội dung của đồ án cũng như tính chất rộng lớn của nội dung này Thêm nữa , tầng này cũng không cần thiết phải thiết kế lại vì các mô hình máy chủ tìm kiếm hiện nay đề đã khá là hoàn thiện và tối ưu
Mô hình được đề cập sau đây dựa vào mô hình đầy đủ , quy mô và thuần Việt được phát triển hoàn thiện bởi công ty Naiscorp Mô hình máy tìm kiếm của socbay hiện nay đã có nhiều thay đổi và cải tiến tuy nhiên các thành phần chính của mô hình máy tìm kiếm vấn là: crawler, indexer
Hình 2.3 : Mô hình đơn giản của Socbay Search Engine
• Crawler: Thành phần này của hệ thống làm nhiệm vụ thu thập các nguồn
dữ liệu dạng thô từ trên Internet, xử lí và lưu trữ vào Store server Dữ liệu có thể được lấy từ nhiều nguồn khác nhau
• Indexer: Thành phần indexer làm công việc đánh chỉ mục dữ liệu, xử lí
dữ liệu phục vụ cho thành phần searcher
Trang 35• Searcher: Tìm kiếm kết quả cho câu truy vấn của người dùng dựa trên
dữ liệu đã được xử lí, và trong đó Ranking là vấn đề rất quan trọng phải được giải quyết
Tuy nhiên để dữ liệu có thể phục vụ cho các thiết bị di động, dữ liệu cần phải được tổ chức lại cho phù hợp Vai trò chính của máy tìm kiếm socbay trong hệ thống Mobile Portal:
o Thu thập dữ liệu cho các dịch vụ trong hệ thống
o Phân tích truy vấn ngắn dựa trên thói quen người dùng
2.2.1 Thu thập dữ liệu cho các dịch vụ :
Các dịch vụ đang được cung cấp tới người sử dụng của Mobile Portal bao gồm: MP3, hình ảnh, thông tin rao vặt, tin tức, thông tin địa điểm, và từ điển Các dữ liệu này được lấy từ nhiều nguồn khác nhau trên internet
Dịch vụ Mô tả
MP3 • Nguồn dữ liệu là từ các trang nghe nhạc, hosting
phổ biến hiện nay Số lượng lên tới hàng triệu bài
và liên tục được cập nhật
Tin tức • Được tổng hợp từ các báo điện tử phổ biến hiện
nay như vnexpress, vietnamnet, dantri, … Vấn
đề cập nhật thông tin liên tục và chống trùng lặp
dữ liệu được xử lí rất tốt
Ebook • Thu thập các Ebook rồi chuyển thành dạng hình
ảnh Các Ebook được phân chia thành mục rõ ràng và dễ tìm kiếm
2.2.2 Phân tích truy vấn ngắn dựa trên thói quen người dùng
Search engine cho Mobile Portal là kết quả của việc nghiên cứu thói quen của người dùng trên thiết bị di động Việc bị hạn chế về số lượng phím bấm và khả năng trình diễn thông tin dẫn tới việc phải có một cơ chế cho phép hiểu thông tin người dùng nhập vào một cách tốt nhất với query có độ dài ngắn nhất
Trang 36Đây không phải chỉ là việc chuyển cách sử dụng search engine từ máy tính để bàn sang thiết bị di động, đó là cả vấn đề khác yêu cầu phải có nghiên cứu nghiêm túc.
Hệ thống đã ứng dụng thành công kết quả của việc nghiên cứu này, người dùng sẽ được hỗ trợ trong việc tìm kiếm thông tin với những câu truy vấn ngắn nhất như: iphone hn, hay atm hcm, …
2.4 Tầng giao diện di động (Mobile Interface )
Mobile Interface là thành phần giao diện trung gian giữa máy tìm kiếm Socbay và ứng dụng di động Vai trò của Mobile Interface trong hệ thống tìm kiếm Mobile Portal là:
• Chuẩn hóa dữ liệu cho thiết bị di động
• Quản lý các module kết nối
2.5 Ứng dụng client :
Ứng dụng được xây dựng trên nền tảng di động iPhone Ứng dụng được tích hợp nhiều dịch vụ như nghe nhạc , truyện , tin tức là những dịch vụ tiêu biểu nhất mà người dùng hay sử dụng Tương lai , nếu được phát triển sẽ mở rộng ra các dịch vụ có các giá trị gia tăng khác
Việc phát triển ứng dụng phía client chính là trọng tâm của đồ án và sẽ được giới thiệu, trình bày chi tiết hơn trong Phần 3 của đồ án này
Trang 373 Chương 3 : Xây dựng 1 phần thành phần Server trong hệ thống
• Database lưu trữ dữ liệu
• Dịch vụ Web (My Webservice)
• 1 phần của Mobile Interface
Trong đó thành phần Máy chủ tìm kiếm và quản trị nội dung ( Search Engine và
Content Manager System ) là thành phần sẽ chỉ được nhắc trong đồ án mang tính chất
giới thiệu bởi tính chất rộng lớn về nôi dung của thành phần này cũng như sự hạn chế
về nội dung của đồ án Hơn nữa , hiện nay thành phần này cũng được phát triển khá là hoàn thiện và tối ưu
Đồ án sẽ tập trung vào xây dưng các thành phần còn lại của hệ thống Mobile Portal
3.1 Xây dựng và thiết kế Database
3.1.1 Phát biểu bài toán :
Ban đầu khái niệm này được dùng để mô tả các trang web khổng lồ như là Yahoo, Lycos, Altavista, AOL… bởi mỗi ngày có hàng trăm triệu người sử dụng chúng như là điểm bắt đầu cho hành trình “lướt web” của họ Lợi ích lớn nhất mà portal đem lại là tính tiện lợi, dễ sử dụng Thay vì phải nhớ vô số các địa chỉ khác nhau cho các mục đích sử dụng khác nhau, thì với một web portal như Yahoo, người dùng chỉ cần nhớ yahoo.com, ở trong đó nhà cung cấp dịch vụ đã tích hợp mọi thứ mà khách hàng cần…
• Bạn bắt đầu hành trình “lướt web” của mình như thế nào?
• Yahoo
• Tại sao lại là Yahoo?
• Đó là một trang Web cho phép ta dễ dàng truy nhập tới mọi thứ ta cần: tìm kiếm thông tin, đọc tin tức, tán gẫu với bạn bè, gửi thiệp, gửi thư điện tử, xem giá chứng khoán, thậm chí mua sắm một thứ gì đó
• Đúng thế, có rất nhiều trang web như vậy trên mạng, người ta thường gọi chúng là các portal
Với các đặc tính như ‘chỉ một kết nối’ hay ‘tất cả trong một’ các web portal đã trở thành một đầu mối thông tin cho mọi vấn đề, một thứ la bàn định hướng cho người dùng trong hành trình khám phá kho báu internet rộng lớn
Trang 38Các nhà cung cấp dịch vụ internet (ISP) xây dựng nên các portal để hỗ trợ khách hàng của mình trong việc sử dụng internet Các dịch vụ mà họ thường tích hợp vào trong portal của mình là công cụ tìm kiếm, danh mục các trang web được sắp xếp theo một tiêu chí nào đó, trang tin tức điện tử, dịch vụ nhắn tin, phòng chat, hòm thư điện tử hay trang web cá nhân miễn phí … Các portal này cố gắng để tạo ra một thế giới internet thu nhỏ cho các khách hàng, vì thế chúng thường được khuyến cáo như là điểm bắt đầu lý tưởng cho những người mới tìm hiểu về internet
Dựa trên những nhu cầu đó , đồ án đưa ra 1 thiết kế xây dựng 1 mô hình mobile portal đơn giản , đáp ứng được các nhu cầu truy cập thông tin thiết yếu nhất
3.1.2 Thiết kế Database :
Các đối tượng chính sẽ được lưu trong Database sẽ có nội dung chính như sau :
• Các tin tức (News) được phân cấp thành các mục giúp dễ dàng tìm kiếm cũng như tổ chức quản lí
• Các file nhạc ( MP3 , WAV … ) được tổ chức phân cấp thành các Album hoặc chủ đề
• Các Ebook ( đã được chuyển thành dạng hình ảnh ) được tổ chức phân cấp thành các chủ đề theo nội dung
1 Database liên quan tới nội dung tin tức :
NewsCategory
Tên trường Kiểu dữ liệu Null Ràng buộc Mô tả
Trang 39Khóa ngoại quan hệ với bảng NewsCategory
News
Tên trường Kiểu dữ liệu Null Ràng buộc Mô tả
Trang 402 Database liên quan tới nội dung nghe nhạc :
MusicSinger
Tên trường Kiểu dữ liệu Null Ràng buộc Mô tả