GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
MỤC LỤC
MỞ ĐẦU 3
CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN 4
1.1. Sự bùng nổ của các thiết bị di động và lợi ích của nó mang lại 4
1.2. Nhu cầu sử dụng hệ thống di động ngày nay 5
1.3. Khái quát về hệ thống chia sẻ thông tin 6
1.3.1. Chức năng chia sẻ thông tin theo nhóm 6
1.3.2. Các thông tin có thể chia sẻ 7
1.4. Phạm vi áp dụng và sơ đồ hoạt động của hệ thống chia sẻ thông tin 7
1.4.1. Phạm vi áp dụng 7
1.4.2. Sơ đồ hoạt động của hệ thống 8
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 9
2.1. PHP & MySQL 9
2.1.1. Tổng quan về ngôn ngữ lập trình PHP 9
2.1.2. Giới thiệu hệ CSDL MySQL 12
2.2. J2ME & Lập trình trên điện thoại di động 13
2.2.1. Khái quát các tầng J2ME 13
2.2.2. Tầng phần cứng thiết bị (Device Hardware Layer) 14
2.2.3. Tầng máy ảo Java (Java Virtual Machine Layer) 14
2.2.4. Tầng cấu hình (Configuration Layer) 14
2.2.5. Tầng hiện trạng (Profile Layer) 15
2.3. MIDP (Mobile Information Device Profile) 15
2.3.1. MIDlet 16
2.3.1. Bộ khung MIDlet (MIDlet Skeleton) 16
2.3.2. Chu kỳ sống của MIDlet (MIDlet lifecycle) 18
2.3.3. Tập tin JAR 18
2.3.4. Tập tin kê khai (manifest) và tập tin JAD 19
2.4. Lưu trữ bản ghi trong J2ME (Record Store) 20
2.4.1. Định dạng, thêm và xóa các bản ghi 21
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 1
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
MỞ ĐẦU
Hiện nay, mạng xã hội đang ngày càng đi sâu vào cuộc sống của con
người. Đây là mô hình mới nhất trong quá trình phát triển của xã hội. Nó đơn
giản hóa các phương thức tương tác và kết nối giữa con người với nhau. Để
chia sẻ những thông tin cá nhân, người dùng chỉ việc có cho mình tài khoản
của một mạng xã hội như MySpace, Facebook, Zing Me và thường xuyên
cập nhật những thông tin lên trang cá nhân của họ.
Tuy nhiên với sự phát triển của xã hội, thường xuyên ngồi bên cạnh
chiếc máy tính và cập nhật thông tin là việc làm khá mất thời gian. Thay vào
đó, việc cập nhật thông tin qua thiết bị di động sẽ thuận tiện và tiết kiệm thời
gian hơn rất nhiều. Hiện nay có rất nhiều công nghệ mới phát triển song song
với việc phát triển công nghệ thông tin như Bluetooth, Wireless, WAP,
SOAP… nhằm giúp công nghệ thông tin ngày càng thân thiết với người dùng
hơn. Có thể nói, ngày nay công nghệ di động thật sự góp phần không nhỏ
trong việc kết nối con người với thông tin cũng như con người với con người.
Chính vì vậy, em đã chọn đề tài “Xây dựng ứng dụng chia sẻ thông
tin theo nhóm trên thiết bị di động” với mục đích phân tích và tìm giải pháp
xây dựng một chương trình trên thiết bị di động giúp người dùng chia sẻ và
cập nhật thông tin trên mạng xã hội. Đồng thời tích hợp công nghệ GPS nhằm
xác định và chia sẻ vị trí hiện tại.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 3
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN
1.1. Sự bùng nổ của các thiết bị di động và lợi ích của nó mang lại
Hiện nay, thế giới đang tập trung vào điện thoại di động. Trong năm
2010, sự bùng nổ của hệ điều hành Android, sự ra đời của iPad và sự tăng tỷ
lệ truy cập internet qua Smartphone đã cho thấy những bước nhảy vọt trong
việc phát triển điện thoại di động. Thêm vào đó, công nghệ mạng 3G (Third -
thoại. Phần mềm Skype hiện cho phép cuộc gọi video trong tất cả smartphone
sử dụng hệ điều hành Android, vì thế thị trường này đang được mong đợi sẽ
có tăng trường đột biến nhờ vào các công nghệ mới sẽ ra đời.
Từ những thông tin trên có thể thấy sự bùng nổ của thiết bị di động như
ngày nay đã khiến người sử dụng năng động hơn trong công việc, tiết kiệm
nhiều thời gian, chi phí hơn và dịch vụ giải trí mới ra đời cũng đa dạng hơn.
1.2. Nhu cầu sử dụng hệ thống di động ngày nay
Ngày nay, đi cùng với việc tự động hóa và tin học hóa các công việc
hàng ngày, nhu cầu sử dụng Internet để xử lý công việc và kết nối với người
thân, bạn bè phát sinh mọi lúc, mọi nơi với cường độ ngày càng cao. Truy cập
Internet đã trở nên phổ biến và dần được coi như một nhu cầu thiết yếu trên
mọi khía cạnh.
- Mục đích sử dụng đa dạng: Tiến bộ vượt bậc của công nghệ đã làm
thay đổi hoàn toàn thói quen cũng như hành vi của người sử dụng. Họ không
chỉ sử dụng hệ thống di động để giải quyết các nhu cầu đơn thuần như trò
chuyện, gửi tin nhắn, chơi game, nghe nhạc, lướt web, thanh toán… mà còn
muốn được giải quyết các nhu cầu đó ở mọi lúc mọi nơi, nhanh nhất, thuận
tiện nhất, tiết kiệm nhất có thể. Vài năm trước, để có thể ký kết thành công
một hợp đồng làm ăn người phải bỏ ra rất nhiều chi phí cho việc gặp mặt
nhằm trao đổi các thỏa thuận. Ngày nay, nhờ có điện thoại di động mà những
công việc ấy có thể thực hiện một cách đơn giản và dễ dàng.
- Thành phần sử dụng đa dạng: Khác với trước kia, điện thoại di động
không chi dành cho những thương nhân, chuyên gia công nghệ… mà còn là
nhu cầu sử dụng của mỗi cá nhân trong cuộc sống thường ngày. Với giới trẻ
ngày nay, truy cập website để cập nhật thông tin thường xuyên đã trở thành
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 5
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
thói quen thường ngày. Chỉ với một chiếc máy điện thoại kết nối được
Internet, người sử dụng có thể truy cập website rất thuận lợi. Cùng với đó là
hạn của thành viên trong nhóm. Mỗi nhóm mặc định sẽ có ba quyền hạn là:
quản trị viên, điều hành viên và thành viên.
- Thành viên có quyền tạo nhóm mới. Sau khi tạo nhóm, tài khoản tạo
nhóm sẽ mặc định có quyền quản trị viên của nhóm đó. Các tài khoản có
quyền hạn là quản trị viên hoặc điều hành viên sẽ quản trị và điều hành nhóm
của mình.
1.3.2. Các thông tin có thể chia sẻ
Người dùng sau khi tham gia nhóm có thể chia sẻ ảnh, bài viết, lời bình
và vị trí của mình với các thành viên khác trong nhóm.
- Chia sẻ ảnh: Người dùng có thể chia sẻ ảnh bằng cách tải ảnh lên hệ
thống rồi chọn các nhóm muốn chia sẻ thông tin. Ngoài ra, người dùng có thể
tổng hợp, phân loại bằng việc tạo album ảnh. Với các thiết bị có hỗ trợ máy
chụp ảnh, thành viên có thể chụp ảnh và chia sẻ ngay với nhóm bạn của mình.
- Chia sẻ bài viết: Người dùng có thể tạo ra những bài viết rồi chọn nhóm
để chia sẻ với các thành viên khác. Cũng giống như ảnh, người dùng có thể
tổng hợp, phân loại các bài viết thành các chủ đề.
- Gửi bình luận: Với một bức ảnh hay bài viết sẽ có nhiều suy nghĩ, bình
luận xoay quanh bức ảnh đó. Do đó, người dùng có thể gửi những lời bình,
những suy nghĩ của mình về các thông tin của những thành viên khác chia sẻ.
- Chia sẻ vị trí: Bên cạnh việc chia sẻ ảnh, bài viết và gửi bình luận,
thành viên đồng thời cũng có thể chia sẻ vị trí hiện tại của mình thông qua
việc xác định thiết bị di động bằng GPS.
1.4. Phạm vi áp dụng và sơ đồ hoạt động của hệ thống chia sẻ thông tin
1.4.1. Phạm vi áp dụng
Hệ thống chia sẻ thông tin theo nhóm có thể sử dụng tại mọi nơi có
Internet. Thành viên chỉ cần có trong tay một thiết bị di động có kết nối
Internet là có thể truy cập vào hệ thống. Có hai cách để truy cập vào hệ thống
là truy cập vào website hoặc truy cập vào ứng dụng chia sẻ thông tin theo
nhóm được cài đặt trên thiết bị di động đó.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 7
Rasmus Lerdorf tạo ra năm 199. Ban đầu PHP được xem như là một tập con
đơn giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ
yếu lý lịch của ông trên mạng. Ông đặt tên cho bộ mã kịch bản này là
'Personal Home Page Tools'. Khi có nhu cầu sử dụng các chức năng đa dạng
hơn, Rasmus viết ra một bộ thực thi bằng C lớn hơn để có thể truy vấn tới các
cơ sở dữ liệu (CSDL) và giúp cho người sử dụng phát triển các ứng dụng web
đơn giản. Ông đã quyết định công bố mã nguồn của PHP/FI cho mọi người
xem, sử dụng cũng như sửa các lỗi có trong nó đồng thời cải tiến mã nguồn.
PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm
một số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó
có các biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp
HTML nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều,
đơn giản và có phần thiếu nhất quán. PHP/FI 2.0 được chính thức công bố
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 9
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
vào tháng 11 năm 1997. Nhưng không lâu sau đó, nó đã được thay thế bởi các
bản alpha đầu tiên của PHP 3.0.
PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi
với các phiên bản PHP ngày nay. Nó đã được Andi Gutmans và Zeev Suraski
tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước đó. Lý do chính
phiên bản này được tạo ra là do họ nhận thấy PHP/FI 2.0 hết sức yếu kém
trong việc phát triển các ứng dụng thương mại điện tử mà họ đang xúc tiến
trong dự án của một trường đại học. Dựa trên cơ sở đã có của PHP/FI, Andi,
Rasmus và Zeev đã quyết định hợp tác và công bố PHP 3.0 như là phiên bản
thế hệ kế tiếp của PHP/FI 2.0 và chấm dứt phát triển PHP/FI 2.0.
Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở
rộng mạnh mẽ của nó. Ngoài khả năng cung cấp cho thành viên cuối một cơ
sở hạ tầng chặt chẽ dùng cho nhiều CSDL, giao thức và API khác nhau, các
tính năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển tham gia và
yếu kém của PHP 4.0 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng
(OOP), xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1
và 5.0, hỗ trợ dịch vụ web yếu. Những điểm này chính là mục đích để Zeev
và Andi viết Zend Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot
đã cho thấy việc phát triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12
năm 2002 nhưng những bài phỏng vấn Zeev liên quan đến phiên bản này thì
đã có mặt trên mạng Internet vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6
năm 2003, PHP 5 Beta 1 đã chính thức được công bố để cộng đồng kiểm
nghiệm. Đó cũng là phiên bản đầu tiên của Zend Engine 2.0. Phiên bản Beta 2
sau đó đã ra mắt vào tháng 10 năm 2003 với sự xuất hiện của hai tính năng rất
được chờ đợi Iterators và Reflection nhưng tính năng gây tranh cãi
namespaces đã bị loại khỏi mã nguồn. Ngày 21 tháng 12 năm 2003, PHP 5
Beta 3 đã được công bố để kiểm tra với việc phân phối kèm với Tidy, bỏ hỗ
trợ Windows 95, khả năng gọi các hàm PHP bên trong XSLT, sửa chữa nhiều
lỗi và thêm khá nhiều hàm mới. PHP 5 bản chính thức đã ra mắt ngày 13
tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta
4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 11
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP. Ngày 14
tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu sự chín
muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong việc tạo ra một
hệ thống API nhất quán trong việc truy cập CSDL và thực hiện các câu truy
vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục có những cải
tiến trong nhân Zend Engine 2, nâng cấp module PCRE lên bản PCRE 5.0
cùng những tính năng và cải tiến mới trong SOAP, streams và SPL.
Hiện nay phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản
sử dụng thử đã có thể được download tại địa chỉ . Phiên
bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên
khẩu của tài khoản có quyền sử dụng CSDL đó.
CSDL MySQL đã trở thành CSDL mã nguồn mở phổ biến nhất trên thế
giới vì cơ chế xử lý nhanh và ổn định của nó, sự đáng tin cậy cao và dễ sử
dụng. Nó được sử dụng mọi nơi - ngay cả châu Nam Cực - bởi các nhà phát
triển Web riêng lẻ cũng như rất nhiều các tổ chức lớn nhất trên thế giới để tiết
kiệm thời gian và tiền bạc cho những Websites có dung lượng lớn, phần mềm
đóng gói - bao gồm cả những nhà đi đầu trong lĩnh vực công nghiệp như
Yahoo!, Alcatel-Lucent, Google, Nokia, YouTube và Zappos.com.
MySQL không chỉ là CSDL mã nguồn mở phổ biến nhất trên thế giới,
nó còn trở thành CSDL được chọn cho thế hệ mới của các ứng dụng xây dựng
trên nền Linux, Apache, MySQL, PHP/Perl/Python. MySQL chạy trên hơn 20
flatform bao gồm: Linux, Windows, OS/X, HP-UX, AIX, Netware, mang đến
cho bạn tính linh hoạt trong việc sử dụng.
2.2. J2ME & Lập trình trên điện thoại di động
2.2.1. Khái quát các tầng J2ME
Mục tiêu của J2ME là cho phép người lập trình viết các ứng dụng độc
lập với thiết bị di động, không cần quan tâm đến phần cứng thật sự. Để đạt
được mục tiêu này, J2ME được xây dựng bằng các tầng (layer) khác nhau để
giấu đi việc thực hiện phần cứng khỏi nhà phát triển. Sau đây là các tầng của
J2ME được xây dựng trên CLDC:
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 13
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Hình 1. Các tầng của CLDC J2ME
Mỗi tầng ở trên tầng hardware là tầng trừu tượng hơn cung cấp cho lập
trình viên nhiều giao diện lập trình ứng dụng (API-Application Program
Interface) thân thiện hơn.
2.2.2. Tầng phần cứng thiết bị (Device Hardware Layer)
Đây chính là thiết bị di động thật sự với cấu hình phần cứng của nó về
bộ nhớ và tốc độ xử lý. Dĩ nhiên thật ra nó không phải là một phần của J2ME
xây dựng. Chuẩn hiện trạng PDA là đặc tả JSR - 75 và chuẩn bluetooth API là
đặc tả JSR - 82 với JSR là viết tắt của Java Specification Request.
2.3. MIDP (Mobile Information Device Profile)
Tầng J2ME cao nhất là tầng hiện trạng và mục đích của nó là định
nghĩa các API cho các thiết bị di động. Một thiết bị di động có thể hỗ trợ
nhiều hiện trạng. Một hiện trạng có thể áp đặt thêm các giới hạn trên các loại
thiết bị di động (như nhiều bộ nhớ hơn hay độ phân giải màn hình cao hơn).
Hiện trạng là tập các API hữu dụng hơn cho các ứng dụng cụ thể. Lập trình
viên có thể viết một ứng dụng cho một hiện trạng cụ thể và không cần quan
tâm đến nó chạy trên thiết bị nào. Nó không định nghĩa cách mà ứng dụng
được nạp trong thiết bị di động. Đó là trách nhiệm của nhà sản xuất. Nó cũng
không định nghĩa bất kỳ loại mô hình bảo mật end-to-end nào, vốn cần thiết
cho ứng dụng kinh doanh nhận số thẻ tín dụng của thành viên. Nó cũng không
bắt buộc nhà sản xuất cách mà lớp MIDP được thực hiện.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 15
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
2.3.1. MIDlet
Các ứng dụng J2ME được gọi là MIDlet (Mobile Information Device
applet).
Hình 2. MIDlet
Thông báo import dùng để truy xuất các lớp của CLDC và MIDP.
Lớp chính của ứng dụng được định nghĩa là lớp kế thừa lớp MIDlet của
MIDP. Có thể chỉ có một lớp trong ứng dụng kế thừa lớp này. Lớp MIDlet
được trình quản lý ứng dụng trên điện thoại di động dùng để khởi động, dừng,
và tạm dừng MIDlet (ví dụ trong trường hợp có cuộc gọi đến).
2.3.1. Bộ khung MIDlet (MIDlet Skeleton)
Một MIDlet là một lớp Java kế thừa (extend) của lớp trừu tượng
java.microedition.midlet.MIDlet và thực thi (implement) các phương thức
startApp(), pauseApp(), và destroyApp().
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 17
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
2.3.2. Chu kỳ sống của MIDlet (MIDlet lifecycle)
Hình 4 : Chu kỳ sống của MIDlet
Khi thành viên yêu cầu khởi động ứng dụng MIDlet, bộ quản lý ứng
dụng sẽ thực thi MIDlet (thông qua lớp MIDlet). Khi ứng dụng thực thi, nó sẽ
được xem là đang ở trạng thái tạm dừng. Bộ quản lý ứng dụng gọi hàm tạo và
hàm startApp(). Hàm startApp() có thể được gọi nhiều lần trong suốt chu kỳ
sống của ứng dụng. Hàm destroyApp() chỉ có thể gọi từ trạng thái hoạt động
hay tạm dừng.
Lập trình viên cũng có thể điều khiển trạng thái của MIDlet.
Các phương thức dùng để điều khiển các trạng thái của MIDlet:
- resumeRequest(): Yêu cầu vào chế độ hoạt động. Ví dụ: Khi MIDlet
tạm dừng, và một sự kiện timer xuất hiện.
- notifyPaused(): Cho biết MIDlet tự nguyện chuyển sang trạng thái tạm
dừng. Ví dụ: Khi đợi một sự kiện timer.
- notifyDestroyed(): Sẵn sàng để hủy. Ví dụ: Xử lý nút nhấn Exit
Lập trình viên có thể yêu cầu tạm dừng MIDlet trong khi đợi một sự
kiện timer hết hạn. Trong trường hợp này, phương thức notifyPaused() sẽ
được dùng để yêu cầu bộ quản lý ứng dụng chuyển ứng dụng sang trạng thái
tạm dừng.
2.3.3. Tập tin JAR
Các lớp đã biên dịch của ứng dụng MIDlet được đóng gói trong một tập
tin JAR (Java Archive File). Đây chính là tập tin JAR được download xuống
điện thoại di động.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 18
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Tập tin JAR chứa tất cả các tập tin class từ một hay nhiều MIDlet, cũng
Lưu trữ bản ghi cho phép lưu dữ liệu khi ứng dụng thoát, khởi động lại
và khi thiết bị di động tắt hay thay pin. Dữ liệu lưu trữ bản ghi sẽ tồn tại trên
thiết bị di động cho đến khi ứng dụng thật sự được xóa khỏi thiết bị di động.
Khi một MIDlet bị xóa, tất cả các lưu trữ bản ghi của nó cũng bị xóa.
Hình 6: Minh họa dữ liệu lưu trữ bản ghi với MIDlet
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 20
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Như trong hình, các MIDlet có thể có nhiều hơn một tập lưu trữ bản
ghi, chúng chỉ có thể truy xuất dữ liệu lưu trữ bản ghi chứa trong bộ MIDlet
của chúng. Do đó, MIDlet 1 và MIDlet 2 có thể truy xuất dữ liệu trong
Record Store 1 và Record Store 2 nhưng chúng không thể truy xuất dữ liệu
trong Record Store3. Ngược lại, MIDlet 3 chỉ có thể truy xuất dữ liệu trong
Record Store 3 và không thể truy xuất dữ liệu dữ liệu trong Record Store 1 và
Record Store 2. Tên của các lưu trữ bản ghi phải là duy nhất trong một bộ
MIDlet nhưng các bộ khác nhau có thể dùng trùng tên.
Các bản ghi trong một lưu trữ bản ghi được sắp xếp thành các mảng
byte. Các mảng byte không có cùng chiều dài và mỗi mảng byte được gán
một số ID bản ghi.
Các bản ghi được định danh bằng một số ID bản ghi (record ID) duy
nhất. Các số ID bản ghi được gán theo thứ tự bắt đầu từ 1. Các số sẽ không
được dùng lại khi một bản ghi bị xóa do đó sẽ tồn tại các khoảng trống trong
các ID bản ghi. Đặc tả MIDP không định nghĩa chuyện gì xảy ra khi đạt đến
số ID bản ghi tối đa, điều này phụ thuộc vào ứng dụng.
2.4.1. Định dạng, thêm và xóa các bản ghi
Thêm bản ghi gồm hai bước. Bước đầu tiên là định dạng bản ghi theo
định dạng yêu cầu và bước tiếp theo là thêm bản ghi đã định dạng vào lưu trữ
bản ghi. Sự tuần tự hóa (serialization) dữ liệu lưu trữ bản ghi không được hỗ
trợ, do đó lập trình viên phải định định dạng các mảng byte để xây dựng dữ
liệu lưu trữ bản ghi.
2.4.4. Xóa bản ghi
Bản ghi được xóa bằng cách chuyển số ID bản ghi cho phương thức
deleteRecord() của đối tượng RecordStore.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 22
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Ví dụ, bản ghi 7 bị xóa bằng phương thức deleteRecord(), nếu một bản
ghi khác được thêm vào thì số ID bản ghi sẽ là 8 và ID bản ghi 7 sẽ không
được dùng lại.
2.4.5. Lọc các bản ghi (Filtering Records)
Giao diện RecordFilter cung cấp một cách thuận tiện để lọc các bản ghi
theo tiêu chuẩn của lập trình viên. RecordEnumeration có thể được dùng để
duyệt qua các bản ghi và chỉ trả về các record phù hợp với tiêu chuẩn xác
định. Giao diện RecordFilter có phương thức matches() dùng để xác định tiêu
chuẩn phù hợp. Phương thức matches() có một tham số đầu vào là mảng byte
biểu diễn một bản ghi. Phương thức phải trả về true nếu bản ghi này phù hợp
với tiêu chuẩn đã định nghĩa. Hình 3 minh họa ví dụ cách sử dụng giao diện
RecordFilter
Hình 8. Lọc bản ghi
class IntegerFilter implements RecordFilter {
public boolean matches(byte[] candidate) throws IlleegalArgumentException{
return(candidate[0] == ‘T’);
}}
Trong ví dụ trên, lớp IntegerFilter được dùng để lọc ra tất cả các bản
ghi có ‘T’ ở byte đầu tiên. Nhớ rằng các bản ghi không phải có cùng định
dạng. Do đó có byte đầu tiên làm thẻ (tag) rất có ích. Phương thức matches()
chỉ trả về true nếu byte đầu tiên là ‘T’.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 23
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 24
GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Quản trị viên sẽ quản lý những thông tin cơ bản của nhóm như:
- Thông tin giới thiệu của nhóm.
- Ảnh đại diện của nhóm.
- Quy tắc hoạt động của nhóm.
Ngoài ra quản trị viên phải quản trị các thành viên các trong nhóm:
- Liệt kê thành viên theo các cấp để quản lý được số lượng các điều hành
viên và các thành viên trong nhóm.
- Thay đổi quyền hạn của thành viên để tạo ra được bộ máy quản lý tốt
giúp nhóm hoạt động hiệu quả hơn.
- Duyệt yêu cầu tham gia nhóm của các người dùng khác để cho phép
người dùng đó tham gia hoặc không cho tham gia vào nhóm.
- Loại thành viên khỏi nhóm: Những thành viên vi phạm quy tắc hoạt
động của nhóm, đã được nhắc nhở nhưng vẫn tái phạm sẽ bị loại khỏi nhóm.
Thành viên đó sẽ không được tham gia vào nhóm đó nữa.
3.1.4. Chia sẻ ảnh và tạo album ảnh
Mỗi thành viên sau khi tham gia vào cộng đồng có quyền đưa những
bức ảnh của mình vào cộng đồng để chia sẻ với những thành viên khác.
Khi muốn đưa một bức ảnh vào cộng đồng, thành viên đó phải cung
cấp những thông tin liên quan đến bức ảnh đó với người quản lý cộng đồng.
Khi đăng ký xong, người quản lý sẽ cung cấp một mã ảnh cho bức ảnh đó. Mã
ảnh là duy nhất và tương ứng với mỗi bức ảnh trong cộng đồng.
Với những bức ảnh có nội dung bạo lực, vi phạm bản quyền, nội dung
kích động gây thù địch… người quản lý cộng đồng có quyền loại khỏi cộng
đồng và đưa ra nhắc nhở với thành viên đưa bức ảnh đó vào cộng đồng.
Thành viên có thể tổng hợp các bức ảnh của mình bằng việc tạo ra
những album ảnh để dễ quản lý hơn. Để tạo được album ảnh mới, thành viên
phải đăng ký với người quản lý những thông tin về album ảnh này. Sau khi