1. Trang chủ
  2. » Cao đẳng - Đại học

KHÓA LUẬN tốt NGHIỆP xây DỰNG ỨNG DỤNG CHIA sẻ địa DANH LỊCH sử

106 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 106
Dung lượng 11,46 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứng dụng dựa trên bản đồ để mọi người có thể tìm kiếm các địa danh lịch sử, ngoài ra người dùng có thể đóng góp và cập nhật địa danh mới để chia sẻ với mọi người... + Xây dựng ứng dụng g

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Trang 2

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Trang 3

DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin

1 ……… – Chủ tịch

2 ……… – Thư ký

3 ……… – Ủy viên

4 ……… – Ủy viên

Trang 4

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

TP HCM, ngày… tháng… năm……

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ HƯỚNG DẪN) Tên khóa luận: XÂY DỰNG ỨNG DỤNG CHIA SẺ ĐỊA DANH LỊCH SỬ Nhóm SV thực hiện: Cán bộ hướng dẫn/phản biện: Lê Nhựt Vinh 15521016 TS Nguyễn Hà Giang ThS Nguyễn Thị Thanh Trúc Đánh giá Khóa luận 1 Về cuốn báo cáo: Số trang Số chương Số bảng số liệu Số hình vẽ Số tài liệu tham khảo Sản phẩm Một số nhận xét về hình thức cuốn báo cáo: ………

………

………

………

2 Về nội dung nghiên cứu: ………

………

………

………

Trang 5

3 Về chương trình ứng dụng:

………

………

………

………

4 Về thái độ làm việc của sinh viên: ………

………

………

………

Đánh giá chung: ………

………

………

………

Điểm từng sinh viên: Lê Nhựt Vinh: …… /10

Người nhận xét

(Ký tên và ghi rõ họ tên)

Trang 6

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

TP HCM, ngày… tháng… năm……

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ PHẢN BIỆN) Tên khóa luận: XÂY DỰNG ỨNG DỤNG CHIA SẺ ĐỊA DANH LỊCH SỬ Nhóm SV thực hiện: Cán bộ hướng dẫn/phản biện: Lê Nhựt Vinh 15521016 TS Nguyễn Hà Giang ThS Nguyễn Thị Thanh Trúc Đánh giá Khóa luận 1 Về cuốn báo cáo: Số trang Số chương Số bảng số liệu Số hình vẽ Số tài liệu tham khảo Sản phẩm Một số nhận xét về hình thức cuốn báo cáo: ………

………

………

………

2 Về nội dung nghiên cứu: ………

………

………

………

Trang 7

3 Về chương trình ứng dụng:

………

………

………

………

4 Về thái độ làm việc của sinh viên: ………

………

………

………

Đánh giá chung: ………

………

………

………

Điểm từng sinh viên: Lê Nhựt Vinh: …… /10

Người nhận xét

(Ký tên và ghi rõ họ tên)

Trang 8

Hà Giang và cô Nguyễn Thị Thanh Trúc thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau Em xin chân thành cảm ơn!

Trang 9

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

ĐỀ CƯƠNG CHI TIẾT

TÊN ĐỀ TÀI: Xây dựng ứng dụng chia sẻ địa danh lịch sử

TÊN TIẾNG ANH: Building a historic places sharing application

Cán bộ hướng dẫn: TS Nguyễn Hà Giang, ThS Nguyễn Thị Thanh Trúc

Thời gian thực hiện: Từ ngày 01/03/21 đến ngày 26/06/21

Sinh viên thực hiện:

Lê Nhựt Vinh - 15521016

Nội dung đề tài:

Lịch sử là khúc ca hào hùng của dân tộc, là quá khứ không thể nào quên của lớp người

đi trước Học lịch sử không chỉ là tìm về nguồn cội, mà còn thêm tự hào về dân tộc, tiếp thêm sức mạnh để xây dựng và phát triển đất nước Tuy vậy, việc học và tìm hiểu lịch sử đối với nhiều người khá khô khan và không tạo được hứng thú Mọi người chỉ chăm chú vào những trận chiến chống quân xâm lược hay mở mang bờ cõi nước nhà

mà quên đi rằng lịch còn còn thể hiện qua những chi tiết nhỏ trong cuộc sống hằng ngày như: tên đường phố, chùa chiền, nhà thờ, các địa danh du lịch Không chỉ vậy, việc tìm hiểu lịch sử qua các kênh truyền thống như báo đài, hình ảnh, tài liệu cũng gây khó khăn không nhỏ cho những người thật sự có lòng muốn tìm hiểu

Từ những suy nghĩ đó, em muốn nghiên cứu và xây dựng một ứng dụng hỗ trợ người dùng tìm hiểu lịch sử dựa trên các địa danh, ở đây là thành phố Hồ Chí Minh Ứng dụng dựa trên bản đồ để mọi người có thể tìm kiếm các địa danh lịch sử, ngoài ra người dùng

có thể đóng góp và cập nhật địa danh mới để chia sẻ với mọi người

- Mục tiêu:

Trang 10

+ Xây dựng ứng dụng giúp người dùng có thể tìm kiếm và chia sẻ thông tin kiến thức

về các địa danh lịch sử

+ Xây dựng ứng dụng có giao diện trực quan phù hợp với đối tượng người dùng + Nghiên cứu thuật toán, phương pháp để phát triển ứng dụng chia sẻ, kiểm duyệt nội dung đăng tải của người dùng

- Đối tượng nghiên cứu:

+ Nghiên cứu phương pháp cách thiết kế, xây dựng một nền tảng chia sẻ thông tin hoàn chỉnh

+ Nghiên cứu Stateful Server với NodeJS

+ Nghiên cứu React Libary để xây dựng website

+ Nghiên cứu cơ chế quản lý thông tin người dùng cung cấp tránh các trường hợp người dùng tải lên các thông tin sai hoặc trái pháp luật

- Pham vi nghiên cứu:

+ Tập trung tìm hiểu phương pháp thiết kế, xây dựng, phát triển và giữ cho một hệ thống hoàn chỉnh hoạt động hiệu quả

+ Ứng dụng hỗ trợ người dùng tìm kiếm, đóng góp, chia sẻ những địa danh lịch sử

- Đối tượng triển khai:

+ Thiết kế cơ sở dữ liệu phù hợp với nền tảng

+ Thiết kế UI/UX cho website

Trang 11

+ Thu thập, xử lý, tạo bộ dữ liệu các địa danh lịch sử ở Thành phố Hồ Chí Minh + Sử dụng NodeJS để xây dựng stateful server quản lý thông tin các địa danh lịch sử (ảnh + văn bản), quản lý người dùng

+ Sử dụng thư viện React, Map API để xây dựng Website cho người dùng và CMS cho quản trị viên của nền tảng

- Kết quả mong đợi:

+ Hoàn thiện ứng dụng với các chức năng:

• Đối với người dùng: Có thể đăng nhập, đăng ký, bình luận, chia sẻ và cập nhật thông tin các địa danh lịch sử Người dùng có thể sử dụng ứng dụng qua Website

để đánh dấu và cập nhật các địa danh dễ dàng hơn

• Đối với quản trị viên: Quản lý toàn bộ người dùng, kiểm duyệt lại những cập nhật của người dùng tránh trường hợp nội dung bị xuyên tạc gây hiểu nhầm + Về thẩm mỹ: Giao diện ứng dụng đơn giản, dễ dùng

+ Về bảo mật: Không để lộ thông tin người dùng tạo điều kiện cho kẻ xấu đánh cắp.+ Ứng dụng dễ dàng mở rộng để phát triển thêm trong tương lai

Kế hoạch thực hiện:

Thời gian Nội dung Phân

công

Chú thích

- Thiết kế cơ sở dữ liệu

- Tìm hiểu React Library

- Tìm hiểu NodeJS

Vinh

Trang 12

Thiết lập môi trường deploy lên Server Dev

Trang 14

MỤC LỤC

Chương 1 TỔNG QUAN 2

1.1 Lý do chọn đề tài 2

1.2 Mục tiêu và phạm vi đề tài 2

1.2.1 Mục tiêu 2

1.2.2 Phạm vi 3

Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ 3

2.1 Khảo sát các hệ thống liên quan 3

2.1.1 Các hệ thống nước ngoài 4

2.1.1.1 World History Project ( https://worldhistoryproject.org/ ) 4

2.1.1.2 Hictoric UK ( https://www.historic-uk.com/ ) 5

2.1.1.3 Wikipedia ( https://vi.wikipedia.org/ ) 5

2.1.1.4 Google Maps ( https://www.google.com/maps - Historial Sites ) 7

2.1.2 Các hệ thống trong nước 8

2.1.2.1 Diễn đàn lịch sử Việt Nam ( https://lichsuvn.net/ ) 8

2.1.2.2 Nghiên cứu Lịch sử ( https://nghiencuulichsu.com/ ) 9

2.1.2.3 Các trang blog về lịch sử 10

2.1.3 Nhận xét chung 10

2.2 Tìm hiểu một số phương pháp, thuật toán và công nghệ 11

2.2.1 Các phương pháp và thuật toán sử dụng 11

2.2.1.1 Scale-invariant feature transform (SIFT) 11

2.2.1.2 K-Nearest Neighbors (KNN) 12

2.2.1.3 REST (REpresentational State Transfer) 14

2.2.1.4 JSON Web Token (JWT) 16

2.2.2 Các công nghệ sử dụng 16

2.2.2.1 JavaScript 16

2.2.2.2 Python 17

2.2.2.3 ReactJS 18

2.2.2.4 NodeJS 19

Trang 15

2.2.2.5 MongoDB, Mongoose 19

2.2.2.6 Google App Engine 20

2.2.2.7 Imagekit.io 21

2.2.2.8 Mapbox 22

Chương 3 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 23

3.1 Danh sách yêu cầu 23

3.1.1 Người dùng 23

3.1.2 Quản trị viên, Điều hành viên 23

3.2 Mô tả yêu cầu 23

3.2.1 Người dùng 23

3.2.1.1 Tìm kiếm các địa danh 23

3.2.1.2 Chia sẻ địa danh mới 24

3.2.1.3 Đóng góp chỉnh sửa các địa danh đã có 24

3.2.1.4 Xem thông tin các địa danh 24

3.2.1.5 Thảo luận tại các địa danh 24

3.2.1.6 Báo cáo các địa danh, bình luận 24

3.2.2 Quản trị viên, Điều hành viên 25

3.2.2.1 Quản lí người dùng 25

3.2.2.2 Quản lí điều hành viên 25

3.2.2.3 Quản lí địa danh 25

3.2.2.4 Kiểm duyệt đóng góp 25

3.2.2.5 Xử lí các báo cáo 25

3.3 Phân tích yêu cầu 26

3.3.1 Sơ đồ Usecase 26

3.3.2 Danh sách các Usecase 26

3.3.3 Danh sách các Actor 28

3.3.4 Đặc tả yêu cầu phần mềm 29

3.3.4.1 Đăng nhập 29

3.3.4.2 Đăng kí 31

Trang 16

3.3.4.3 Đăng xuất 33

3.3.4.4 Cập nhật thông tin tài khoản 34

3.3.4.5 Tìm kiếm địa danh 36

3.3.4.6 Chia sẻ và đóng góp địa danh 37

3.3.4.7 Xem thông tin địa danh 39

3.3.4.8 Bình luận 40

3.3.4.9 Báo cáo địa danh, bình luận 42

3.3.4.10 Quản lí người dùng 43

3.3.4.11 Quản lí điều hành viên 46

3.3.4.12 Quản lí địa danh 48

3.3.4.13 Kiểm duyệt đóng góp 51

3.3.4.14 Xử lí báo cáo 53

Chương 4 THIẾT KẾ VÀ PHÁT TRIỂN HỆ THỐNG 55

4.1 Thiết kế cơ sở dữ liệu 55

4.1.1 Lược đồ cơ sở dữ liệu 55

4.1.2 Mô tả các bảng dữ liệu 55

4.1.2.1 Bảng UserRole 55

4.1.2.2 Bảng User 56

4.1.2.3 Bảng Location 56

4.1.2.4 Bảng Contibution 57

4.1.2.5 Bảng Place 57

4.1.2.6 Bảng Photo 58

4.1.2.7 Bảng Comment 59

4.1.2.8 Bảng Report 59

4.2 Thiết kế kiến trúc hệ thống 60

4.2.1 Màn hình trang chủ 61

4.2.1.1 Giao diện tìm kiếm 63

4.2.1.2 Giao diện quản lí tài khoản người dùng 64

4.2.2 Màn hình chi tiết địa danh 65

Trang 17

4.2.3 Màn hình đóng góp địa danh 67

4.2.4 Màn hình khám phá 68

4.2.5 Màn hình quản trị 70

4.2.5.1 Giao diện trang chủ quản trị 70

4.2.5.2 Giao diện quản lí người dùng 71

4.2.5.3 Giao diện quản lí địa danh 72

4.2.5.4 Giao diện kiểm duyệt đóng góp 73

4.2.5.5 Giao diện quản lí báo cáo 74

4.2.6 Màn hình kiểm duyệt đóng góp 75

4.3 Triển khai hệ thống 77

4.3.1 Font-end Server 77

4.3.2 Back-end Server 79

4.3.2.1 Node.js 79

4.3.2.2 Python 79

Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 80

5.1 Kết quả đạt được 80

5.2 Thuận lợi và khó khăn 80

5.2.1 Thuận lợi 80

5.2.2 Khó khăn 81

5.3 Hạn chế 81

5.4 Hướng phát triển 81

Trang 18

DANH MỤC HÌNH VẼ

Hình 2.1 Giao diện website WHP 4

Hình 2.2 Bản đồ các lâu đài 5

Hình 2.3 Thông tin về Dinh Độc Lập tại website Wikipedia 6

Hình 2.4 Giao diện website Historical Sites được xây dựng bằng My Maps 7

Hình 2.5 Giao diện website lichsuvn.net 8

Hình 2.6 Chi tiết một bài viết tại website nghiencuulichsu.com 9

Hình 2.7 Sơ đồ ý tưởng của SIFT 11

Hình 2.8 Bảng đồ của 1 NN 13

Hình 2.9 Thiết kế RESTful 14

Hình 2.10 Cấu trúc JSON Web Token 16

Hình 2.11 Logo JavaScript 17

Hình 2.12 Logo ReactJS 18

Hình 2.13 Logo NodeJS 19

Hình 2.14 Logo MongoDB 20

Hình 2.15 Kiến trúc Google App Engine 20

Hình 2.16 Logo Imagekit.io 21

Hình 2.17 Logo Mapbox 22

Hình 3.1 Sơ đồ Usecase 26

Hình 3.2 Lược đồ tuần tự cho thao tác Đăng nhập 30

Hình 3.3 Lược đồ tuần tự cho thao tác Đăng kí 32

Hình 3.4 Lược đồ tuần tự cho thao tác Đăng xuât 33

Hình 3.5 Lược đồ tuần tự cho thao tác Cập nhật thông tin tài khoản 35

Hình 3.6 Lược đồ tuần tự cho thao tác Tìm kiếm địa danh 36

Hình 3.7 Lược đồ tuần tự cho thao tác Chia sẻ và đóng góp địa danh 38

Hình 3.8 Lược đồ tuần tự cho thao tác Xem thông tin địa danh 39

Hình 3.9 Lược đồ tuần tự cho thao tác Bình luận 41

Hình 3.10 Lược đồ tuần tự cho thao tác Báo cáo địa danh, bình luận 43

Hình 3.11 Lược đồ tuần tự cho thao tác Quản lí người dùng 45

Trang 19

Hình 3.12 Lược đồ tuần tự cho thao tác Quản lí điều hành viên 47

Hình 3.13 Lược đồ tuần tự cho thao tác Quản lí địa danh 50

Hình 3.14 Lược đồ tuần tự cho thao tác Kiểm duyệt đóng góp 52

Hình 3.15 Lược đồ tuần tự cho thao tác Xử lí báo cáo 54

Hình 4.1 Lược đồ cơ sở dữ liệu 55

Hình 4.2 Minh hoạ kiến trúc hệ thống của ứng dụng 60

Hình 4.3 Màn hình trang chủ 61

Hình 4.4 Giao diện xem chi tiết ảnh 62

Hình 4.5 Giao diện tìm kiếm bằng tên 63

Hình 4.6 Giao diện tìm kiếm bằng hình ảnh 63

Hình 4.7 Giao diện quản lí tài khoản người dùng 64

Hình 4.8 Màn hình chi tiết địa danh 65

Hình 4.9 Màn hình đóng góp 67

Hình 4.10 Màn hình khám phá 68

Hình 4.11 Màn hình khám phá trên thiết bị di động 69

Hình 4.12 Giao diện trang chủ quản trị 70

Hình 4.13 Giao diện chi tiết người dùng 71

Hình 4.14 Giao diện quản lí địa danh 72

Hình 4.15 Giao diện khôi phục phiên bản trước địa danh 72

Hình 4.16 Giao diện danh sách đóng góp 73

Hình 4.17 Giao diện quản lí báo cáo địa danh 74

Hình 4.18 Giao diện quản lí báo cáo bình luận 74

Hình 4.19 Giao diện kiểm duyệt đóng góp điạ danh mới 75

Hình 4.20 Giao diện kiểm duyệt đóng góp địa danh đã có 76

Hình 4.21 Cấu hình Cloud Server React.js 77

Hình 4.22 Chạy lệnh "yarn build" tạo folder build 78

Hình 4.23 Chạy lệnh "gcloud app deploy" deploy ứng dụng 78

Hình 4.24 Cấu hình Cloud Server Node.js 79

Hình 4.25 Cấu hình Cloud Server Python 79

Trang 20

DANH MỤC BẢNG

Bảng 3.1 Danh sách các Usecase 28

Bảng 3.2 Danh sách các Actor 28

Bảng 3.3 Đặc tả usecase "Đăng nhập" 29

Bảng 3.4 Đặc tả usecase "Đăng kí" 32

Bảng 3.5 Đặc tả usecase “Đăng xuất” 33

Bảng 3.6 Đặc tả usecase "Cập nhật thông tin tài khoản" 34

Bảng 3.7 Đặc tả usecase “Tìm kiếm địa danh” 36

Bảng 3.8 Đặc tả usecase “Chia sẻ và đóng góp địa danh” 37

Bảng 3.9 Đặc tả usecase "Xem thông tin địa danh" 39

Bảng 3.10 Đặc tả usecase "Bình luận" 40

Bảng 3.11 Đặc tả usecase "Báo cáo địa danh, bình luận" 42

Bảng 3.12 Đặc tả usecase "Quản lí người dùng" 44

Bảng 3.13 Đặc tả usecase "Quản lí điều hành viên" 46

Bảng 3.14 Đặc tả usecase "Quản lí địa danh" 49

Bảng 3.15 Đặc tả usecase "Kiểm duyệt đóng góp" 52

Bảng 3.16 Đặc tả usecase "Xử lí báo cáo" 53

Bảng 4.1 Danh sách thuộc tính của bảng UserRole 56

Bảng 4.2 Danh sách thuộc tính của bảng User 56

Bảng 4.3 Danh sách thuộc tính của bảng Location 57

Bảng 4.4 Danh sách thuộc tính của bảng Contribution 57

Bảng 4.5 Danh sách thuộc tính của bảng Place 58

Bảng 4.6 Danh sách thuộc tính bảng Photo 58

Bảng 4.7 Danh sách thuộc tính bảng Comment 59

Bảng 4.8 Danh sách thuộc tính bảng Report 60

Trang 21

Giao diện và trải nghiệm người dùng

UID (Unique identity) Định danh duy nhất

URL (Uniform Resource Locator) Địa chỉ web, là một tham chiếu đến tài

nguyên web chỉ định vị trí của nó trên một mạng máy tính và cơ chế để truy xuất nó

XML (eXtensible Markup

Language)

Ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác

Trang 22

trang thông tin do nhiều người cùng phát triển

Trang 23

TÓM TẮT KHÓA LUẬN

Trong khoá luận này, em nghiên cứu và phát triển ứng dụng giúp mọi người có thể

cùng đóng góp chia sẻ về các địa danh lịch sử Người dùng có thể dễ dàng chia sẻ,

tìm kiếm thông tin hơn so với các nguồn tài liệu, báo đài, sách vở, … đa phần được chia sẻ trên các diễn đàn, hội nhóm chuyên về lịch sử Người dùng có thể chia sẻ nội dung bằng cách đóng góp chỉnh sửa các địa danh hoặc thảo luận chia sẻ những người dùng khác Ngoài ra, để hạn chế các thông tin sai lệch, người dùng có thể báo cáo các địa danh và bình luận để đội ngũ quản trị xử lí

Do là một hệ thống chia sẻ thông tin về lịch sử và mục đích chính để cộng đồng cùng phát triển nên tất cả thông tin của từng địa danh chỉ thay đổi bởi các đóng góp chỉnh sửa chia sẻ thông tin của người dùng Đội ngũ quản trị không có quyền chỉnh sửa các thông tin này

Các thông tin mà người dùng đóng góp sẽ được đội ngũ quản trị viên kiểm duyệt và cập nhật, tất cả các đóng góp được cập nhật sẽ được đánh số phiên bản của từng địa danh giúp cho đội ngũ quản trị có thể kiểm tra và khôi phục lại các phiên bản trước của từng địa danh

Nội dung khóa luận được trình bày trong 5 chương:

- Chương 01: Tổng quan

Trình bày sơ bộ về đề tài, lý do thực hiện và ý nghĩa thực tiễn

- Chương 02: Cơ sở lý thuyết và công nghệ

Trình bày các phương pháp, thuật toán và công nghệ được ứng dụng để phát triển khóa luận

- Chương 03: Phân tích và thiết kế hệ thống

Phân tích các yêu cầu và thiết kế cơ sở dữ liệu, kiến trúc cho hệ thống

- Chương 04: Cài đặt và phát triển hệ thống

Trình bày đặc tả các chức năng ứng dụng, giao diện của hệ thống

- Chương 05: Kết luận và hướng phát triển

Những thuận lợi, khó khăn trong quá trình phát triển đề tài và nêu ra hướng phát triển trong tương lai

Trang 24

Chương 1 TỔNG QUAN

1.1 Lý do chọn đề tài

Lịch sử là khúc ca hào hùng của dân tộc, là quá khứ không thể nào quên của lớp người

đi trước Học Lịch sử không chỉ là tìm về nguồn cội, mà còn thêm tự hào về dân tộc, tiếp thêm kiến thức, kinh nghiệm và sử dụng những điều đó trong hiện tại và tương lai Nhưng hiện nay, phần đông mọi người, nhất là thế hệ trẻ đều không thích môn Lịch sử bởi những con số, sự kiện và kiến thức khô khan Cùng với đó các bài kiểm tra, thi học kì của môn Lịch sử thường là đề đóng, chỉ cần trả lời đúng ý là được Nó gián tiếp tạo thành một thói quen “học vẹt” để qua môn, sau đó thì quên đi, hệ quả là tạo nên một định kiến về lịch sử là môn khô khan không cần thiết

Mọi người chỉ chăm chú vào những trận chiến chống quân xâm lược hay mở mang

bờ cõi nước nhà mà quên đi rằng lịch sử còn còn thể hiện qua những chi tiết nhỏ trong cuộc sống hằng ngày như: con đường, dãy phố, chùa chiền, nhà thờ, các địa danh du lịch Trong khi các nguồn tài liệu, báo đài, hình ảnh, … còn rất ít đa phần được chia

sẻ trên các diễn đàn, hội nhóm chuyên về lịch sử nên việc đó gây một khó khăn không nhỏ cho những người muốn tìm hiểu

Chính vì thế nên em đã lên ý tưởng về Memorii - ứng dụng giúp người dùng dễ dành tìm kiếm và chia sẻ những thông tin kiến thức về các địa danh lịch sử, ở đây là Thành Phố Hồ Chí Minh Ứng dụng giúp mọi người có một góc nhìn khác về Lịch sử cũng như biết thêm về những sự kiện, những địa danh lịch sử của thành phố mình đang sinh sống

Trang 25

Nghiên cứu phương pháp để phát triển ứng dụng chia sẻ, tìm kiếm, kiểm duyệt nội dung đăng tải của người dùng

o Báo cáo các địa danh, bình luận chứa nội dung vi phạm

o Trao đổi, bình luận và chia sẻ về các địa danh lịch sử

- Quản trị viên:

o Quản lí người dùng

o Quản lí điều hành viên

o Quản lí các địa danh, bao gồm xét duyệt, cập nhật các đóng góp về địa danh của người dùng và khôi phục phiên bản

o Tiếp nhận báo cáo các địa danh, bình luận vi phạm

Ngôn ngữ ứng dụng : Tiếng Việt

Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ

2.1 Khảo sát các hệ thống liên quan

Phần này sẽ nêu lên một số hệ thống liên quan đến các hệ thống tìm kiếm và chia sẻ thông tin Các hệ thống, phần mềm được chia theo phạm vi khảo sát bao gồm trong nước và ngoài nước Phần khảo sát mỗi hệ thống bao gồm mô tả chung và nhận xét

hệ thống đó

Thông qua việc khảo sát, có thể biết được ý tưởng đã tồn tại hay chưa, học hỏi những

ưu điểm, chức năng hay của mỗi hệ thống, hiểu được nhu cầu của người dùng, từ đó phát triển chức năng phù hợp cho hệ thống

Trang 26

2.1.1 Các hệ thống nước ngoài

2.1.1.1 World History Project ( https://worldhistoryproject.org/ )

World History Project là một trong những website đầu tiên cho phép người dùng chia

sẻ, khám phá cũng như đóng góp về lịch sử Những đóng góp của người dùng được tạo thành các chủ đề lớn : địa danh, chiến tranh, người nổi tiếng, thể thao, công nghệ,…

Ngoài ra, website còn cùng cấp tính năng lọc những sự kiện trong quá khứ có cùng ngày tháng hiện tại, tạo những bộ câu đó giúp người dùng có thể tìm hiểu dễ dàng hơn

- Ưu điểm:

o Dữ liệu lịch sử đa dạng, phong phú

o Người dùng có thể đóng góp thêm nội dung, nội dung đó sẽ được kiểm duyêt nội dung theo bộ tiêu chí riêng ( Bài viết và tư liệu phải có dẫn chứng cụ thể )

- Khuyết điểm:

o Các thông tin bài viết được viết bằng Tiếng Anh khó tiếp cận với đa số người Việt

o Nội dung người dùng đóng góp chỉ có văn bản và ảnh

o Không thể cập nhật thêm thông tin về 1 sự kiện/sự vật lịch sử có sẵn

o Không thể bình luận trao đổi ở các bài viết

Hình 2.1 Giao diện website WHP

Trang 27

2.1.1.2 Hictoric UK ( https://www.historic-uk.com/ )

Hictoric UK là một website về lịch sử Vương quốc Anh, chia sẽ các địa điểm thăm

quan du lịch như các toà lâu đài, trang trại, khách sạn, nhà thờ,… Ngoài ra, website mỗi tháng website sẽ xuất bản một tạp chí về các nhân vật, địa danh, sự kiện lịch sử

- Ưu điểm:

o Dữ liệu đa dạng và phong phú

o Kết hợp bản đồ giúp giao diện trực quan dễ tìm kiếm

- Khuyết điểm:

o Các thông tin bài viết được viết bằng Tiếng Anh khó tiếp cận với đa số người Việt

o Cộng đồng không thể đóng góp thêm các địa điểm mới

o Không có phần bình luận tại từng địa điểm

Hình 2.2 Bản đồ các lâu đài

2.1.1.3 Wikipedia ( https://vi.wikipedia.org/ )

Wikipedia chính thức bắt đầu vào ngày 15 tháng 1 năm 2001 nhờ hai người sáng lập

Jimmy Wales và Larry Sanger cùng với vài người cộng tác nhiệt thành và chỉ có phiên bản tiếng Anh Chỉ hơn ba năm sau, vào tháng 3 năm 2004, đã có 6.000 người đóng góp tích cực cho 600.000 bài viết với 50 thứ tiếng Cho đến hôm nay đã có gần 6.300.000 bài viết ở riêng phiên bản tiếng Anh, hơn 56.000.000 bài viết ở tất cả phiên bản ngôn ngữ Mỗi ngày hàng trăm nghìn người ghé thăm từ khắp nơi để thực hiện hàng chục nghìn sửa đổi cũng như bắt đầu nhiều bài viết mới

Trang 28

Wikipedia là một bách khoa toàn thư mở trực tuyến đa ngôn ngữ được sáng lập và

duy trì bởi một cộng đồng biên tập viên tình nguyện và chạy trên nền tảng wiki

Trang 29

2.1.1.4 Google Maps ( https://www.google.com/maps - Historial Sites )

Google Maps là một dịch vụ lập bản đồ web do Google phát triển Nó cung cấp hình

ảnh vệ tinh, chụp ảnh từ trên không, bản đồ đường phố, chế độ xem toàn cảnh tương tác 360 ° của các đường phố (Google Street View), điều kiện giao thông thời gian thực và lập kế hoạch tuyến đường dành cho người đi bộ, ô tô, xe đạp, đường hàng không (trong phiên bản beta) và phương tiện giao thông công cộng Vào năm 2020, Google Maps đã được hơn 1 tỷ người sử dụng mỗi tháng

Google Maps cũng cung cấp tính năng My Maps cho người dùng để xây dựng riêng

o Không thể thảo luận tại mỗi địa điểm trong My Maps

Hình 2.4 Giao diện website Historical Sites được xây dựng bằng My Maps

Trang 30

2.1.2 Các hệ thống trong nước

2.1.2.1 Diễn đàn lịch sử Việt Nam ( https://lichsuvn.net/ )

Diễn đàn thảo luận về mọi chủ đề liên quan đến văn hoá, kiến thức khoa học, lịch sử

và quân sự Tuy nhiên vì một số lí do nêndiễn đàn hiện tại đã không còn hoạt động

và chuyển sang hoạt động như một blog

- Ưu điểm:

o Cộng đồng lớn, hiện tại đang hoạt động ở các hội nhóm Facebook

- Nhược điểm:

o Không thể bình luận trao đổi tại các bài viết

o Các thông tin bài viết được quản trị viên đăng tải, cộng đồng khó đóng góp

Hình 2.5 Giao diện website lichsuvn.net

Trang 31

2.1.2.2 Nghiên cứu Lịch sử ( https://nghiencuulichsu.com/ )

nghiencuulichsu.com là chuyên trang giành riêng cho những người đam mê và muốn

tìm hiểu về lịch sử Trang chọn lọc đăng tải các bài nghiên cứu, biên khảo, dịch thuật

về các chủ đề liên quan đến lịch sử thế giới và Việt Nam

Ngoài website, trang còn hoạt động ở facebook thông qua trang Nghiên cứu lịch sử

( https://www.facebook.com/nclspage ) và nhóm Nghiên Cứu Lịch Sử - CTV (

https://www.facebook.com/groups/314400773411277 ) Cộng tác viên muốn đóng

góp một địa điểm hoặc sự kiện phải tạo bài viết có hình ảnh, nội dung và phần tài liệu tham khảo Sau đó quản trị viên sẽ kiểm duyệt và xuất bản nội dung

Trang 32

- Ưu điểm :

o Cộng đồng phát triển tốt, có cơ chế kiểm duyệt

o Cho phép thảo luận ở mỗi bài viết

- Khuyết điểm :

o Chưa có những bài viết phân loại theo từng vùng miền, địa danh, lịch

sử gây khó khăn trong việc tìm kiếm

o Không thể đóng góp những bài viết đã có sẵn

2.1.2.3 Các trang blog về lịch sử

Có rất nhiều website dạng blog chia sẻ vể lịch sử như :

- Dân sài gòn ( https://dansaigon.com/ )

và báo cáo những thông tin không chính xác

Trang 33

Về cơ chế đóng góp, các hệ thông trên đa phần cho phép nội dung đóng góp gồm hai phần tách biệt: nội dung ( dạng văn bản ), ảnh ( ngoại trừ Wikipedia hỗ trợ chỉnh sửa dạng html ) Vì thế các bài viết sẽ được kiểm duyệt và chỉnh sửa bởi quản trị viên trước khi xuất bản Điều này làm sai lệch ý nghĩa cộng đồng cùng phát triển và nội dung sau khi qua chỉnh sửa sẽ trở thành nội dung của quản trị viên

2.2 Tìm hiểu một số phương pháp, thuật toán và công nghệ

2.2.1 Các phương pháp và thuật toán sử dụng

2.2.1.1 Scale-invariant feature transform (SIFT)

Scale-invariant feature transform (SIFT) [1] là thuật toán nhận dạng, phát hiện những điểm ảnh đặc biệt đặc trưng cho toàn bộ bức ảnh SIFT được sử dụng trong Computer Vision và xử lý hình ảnh, được dùng để nhận dạng đối tượng, matching image và áp dụng cho các bài toán phân loại

Ý tưởng:

- Tìm ra các đặc trưng của ảnh (feature point hay keypoint)

- descriptor là tham số giúp phân biệt giữa hai keypoint khác nhau Thường thì descriptor là chuỗi số gồm 128 số (vector 128 chiều)

- Sau khi áp dụng biến đổi SIFT, ứng với mỗi hình ảnh, thu được: toạ độ keypoint , scale, orientation của keypoint descriptor

Các mũi tên trong hình dưới vẽ nhờ vào scale và orientation

Hình 2.7 Sơ đồ ý tưởng của SIFT Đặc điểm:

Trang 34

- Áp dụng KNN (K–Nearset Neightbors) để kiểm tra 2 descriptor trong 2 ảnh

có gần giống nhau không

- Dựa vào thương của scale và hiệu của orientation của 2 keypoint, cho biết thêm chênh lệch kích thước và góc xoay giữa 2 vật trong hình này to hơn vật trong hình kia bao nhiêu

2.2.1.2 K-Nearest Neighbors (KNN)

K-nearest neighbor [2] là một trong những thuật toán sử dụng phương pháp học có giám sát để đưa ra quyết định và dự đoán kết quả trong tương lai Khi trainning, thuật toán này không học từ dữ liệu trainning mà sẽ tính toán và dự đoán kết quả dựa vào

dữ liệu mới Thuật toán hoạt động trên nguyên tắc lý hãy cho tôi biết bạn của bạn là

ai và tôi sẽ nói bạn là người như thế nào

Với KNN, trong bài toán Classification, label của một điểm dữ liệu mới sẽ được suy

ra trực tiếp từ K điểm dữ liệu gần nhất trong training set Label của một test data có thể được quyết định bằng major voting (bầu chọn theo số phiếu) giữa các điểm gần nhất, hoặc nó có thể được suy ra bằng cách đánh trọng số khác nhau cho mỗi trong các điểm gần nhất đó rồi suy ra label

Trong bài toán Regresssion, đầu ra của một điểm dữ liệu sẽ bằng chính đầu ra của điểm dữ liệu đã biết gần nhất (trong trường hợp K=1), hoặc là trung bình có trọng số của đầu ra của những điểm gần nhất, hoặc bằng một mối quan hệ dựa trên khoảng cách tới các điểm gần nhất đó

Một cách ngắn gọn, KNN là thuật toán đi tìm đầu ra của một điểm dữ liệu mới bằng

cách chỉ dựa trên thông tin của K điểm dữ liệu trong training set gần nó nhất (K-lân

Trang 35

cận), không quan tâm đến việc có một vài điểm dữ liệu trong những điểm gần nhất

này là nhiễu Hình dưới đây là một ví dụ về KNN trong classification với K = 1

Hình 2.8 Bảng đồ của 1 NN

Ví dụ trên đây là bài toán Classification với 3 classes: Đỏ, Lam, Lục Mỗi điểm dữ liệu mới (test data point) sẽ được gán label theo màu của điểm mà nó thuộc về Trong hình này, có một vài vùng nhỏ xem lẫn vào các vùng lớn hơn khác màu Ví dụ có một điểm màu Lục ở gần góc 11 giờ nằm giữa hai vùng lớn với nhiều dữ liệu màu Đỏ và Lam Điểm này rất có thể là nhiễu Dẫn đến nếu dữ liệu test rơi vào vùng này sẽ có nhiều khả năng cho kết quả không chính xác

Ưu điểm của KNN:

- Độ phức tạp tính toán của quá trình training là bằng 0

- Việc dự đoán kết quả của dữ liệu mới rất đơn giản

- Không cần giả sử gì về phân phối của các class

Nhược điểm của KNN

- KNN rất nhạy cảm với nhiễu khi K nhỏ

- KNN là một thuật toán mà mọi tính toán đều nằm ở khâu test Trong đó việc

tính khoảng cách tới từng điểm dữ liệu trong training set sẽ tốn rất nhiều thời

gian, đặc biệt là với các cơ sở dữ liệu có số chiều lớn và có nhiều điểm dữ liệu Với K càng lớn thì độ phức tạp cũng sẽ tăng lên Ngoài ra, việc lưu toàn bộ dữ liệu trong bộ nhớ cũng ảnh hưởng tới hiệu năng của KNN

Trang 36

2.2.1.3 REST (REpresentational State Transfer)

REST định nghĩa các quy tắc, ràng buộc kiến trúc về quản lí tài nguyên trong hệ thống cũng như định định cách sử dụng các HTTP method để tương tác dữ liệu giữa client

và server

API (Application Programming Interface) là một tập các quy tắc và cơ chế để các ứng dụng có thể tương tác với nhau API có thể trả về dữ liệu phổ biến như JSON hay XML

RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web để quản lý các resource Hiện nay, RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến

Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE…) và cách định dạng các quản lí các các resource RESTful không quy định logic code ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nào cũng có thể sử dụng để thiết kế một RESTful API

REST tuân thủ 4 nguyên tắc thiết kế cơ bản sau:

- Sử dụng các phương thức HTTP/HTTPs

- Stateless: không lưu trữ thông tin của client

- Hiển thị cấu trúc thư mục như các URLs

- Dữ liệu truyền tải có định dạng: JSON, XML, XHTML

Hình 2.9 Thiết kế RESTful

Trang 37

REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ

sử dụng những phương thức HTTP riêng

- GET (SELECT): Trả về một Resource hoặc một danh sách Resource

- POST (CREATE): Tạo mới một Resource

- PUT (UPDATE): Cập nhật thông tin cho Resource

- DELETE (DELETE): Xoá một Resource

Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với

Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa

Một vài status code để nhận biết sau khi request một API của RESTful API:

- 200 OK – Trả về thành công cho những phương thức GET, PUT, PATCH hoặc DELETE

- 201 Created – Trả về khi một Resouce vừa được tạo thành công

- 204 No Content – Trả về khi Resource xoá thành công

- 304 Not Modified – Client có thể sử dụng dữ liệu cache

- 400 Bad Request – Request không hợp lệ

- 401 Unauthorized – Request cần có auth

- 403 Forbidden – bị từ chối không cho phép

- 404 Not Found – Không tìm thấy resource từ URI ( Uniform Resource

Identifier )

- 405 Method Not Allowed – Phương thức không cho phép với user hiện tại

- 410 Gone – Resource không còn tồn tại, Version cũ đã không còn hỗ trợ

- 415 Unsupported Media Type – Không hỗ trợ kiểu Resource này

- 422 Unprocessable Entity – Dữ liệu không được xác thực

- 429 Too Many Requests – Request bị từ chối do bị giới hạn

Trang 38

2.2.1.4 JSON Web Token (JWT)

JWT [3] là một tiêu chuẩn để truyền dữ liệu giữa Client – Server, các thông tin trong chuỗi JWT được định dạng bằng JSON Trong đó chuỗi Token phải có 3 phần là header, phần payload và phần signature được ngăn bằng dấu “.”

JWT không dùng để che dấu dữ liệu, nó được sử dụng để chứng minh dữ liệu từ một nguồn đã được xác thực

Hình 2.10 Cấu trúc JSON Web Token

- Authentication: Sau khi người dùng đăng nhập vào hệ thống, tất cả request gửi

đi của người dùng sẽ được đính kèm 1 mã JWT, giúp server có thể định danh được request từ người dùng nào

- Trao đổi thông tin: Dựa vào signature có thể định danh được request từ người dùng nào Signature được tạo ra thông qua Encode phần header và payload, sau đó được Hash (băm) với 1 secret key nên server có thể kiểm tra chữ ký có hợp lệ hay không

2.2.2 Các công nghệ sử dụng

2.2.2.1 JavaScript

JavaScript [4] được tạo trong mười ngày bởi Brandan Eich, một nhân viên của Netscape, vào tháng 9 năm 1995 Tên đầu tiên Mocha, sau đổi thành Mona ròi LiveScript sau cùng là Javascript như bây giờ

Trang 39

Javascript đã trở thành một phần không thể thiếu của các ứng dụng web – một trong

ba ngôn ngữ chính để tạo ra một website:

- HTML: Giúp thêm nội dung cho trang web

- CSS: Định dạng thiết kế, bố cục, phong cách, canh lề của trang web

- JavaScript: Cải thiện cách hoạt động của trang web

JavaScript có thể học nhanh và dễ dàng áp dụng cho nhiều mục đích khác nhau như cải thiện website, tạo ứng dụng web – server, …

Hình 2.11 Logo JavaScript

2.2.2.2 Python

Python [5] là ngôn ngữ lập trình hướng đối tượng đa năng có cấu trúc dữ liệu cấp cao mạnh mẽ và hệ thống thư viện lớn

Dù rất phát triển trong những năm gần đây, Python lại có một lịch sử lâu đời Năm

1980, Python bắt đầu được thiết kế bởi Guido van Rossum khi ông muốn tạo ra một ngôn ngữ lập trình đơn giản, dễ hiểu

Cái tên Python xuất phát từ một chương trình hài cuối những năm 70 mà ông rất thích Được phát hành lần đầu tiên vào năm 1994, đến nay, Python đã có tổng cộng 6 phiên bản và liên tục nhiều năm liền năm trong TOP ngôn ngữ lập trình phổ biến nhất Các tính năng chính:

- Ngôn ngữ lập trình nhập môn: cấu trúc rõ ràng nên được xem là ngôn ngữ lí tưởng cho việc học lập trình

- Mã nguồn mở và miễn phí

- Tương thích nhiều nền tảng nên có khả năng mở rộng lớn

Trang 40

- Ngôn ngữ lập trình hướng đối tượng

Python được dùng:

- Viết các ứng dụng web qua Django, Flask, Pyramid

- Khoa học và phân tích số liệu: sử dụng trong cả Data Analytics, Machine Learning, Computing Science

2.2.2.3 ReactJS

React [6] là thư viện JavaScript mã nguồn mở được Facebook giới thiệu vào nằm

2013 nhắm tạo ra các ứng dụng web nhanh, hiệu quả và có tính mở rộng cao

Hiện tại, đang được sử dụng bở hagf trăm công ty lớn trên thế giới, bao gồm Netflix, Airbnb, American Express, Facebook, WhatsApp, eBay, và Instagram

Redux [7] : là một “predictable state management tool” cho các ứng dụng Javascript Hay là một thư viện tạo ra một lớp quản lí các biến cục bộ của ứng dụng Redux được dựa và kiến trúc Flux mà Facebook giới thiệu

Hình 2.12 Logo ReactJS

Ngày đăng: 05/09/2021, 20:53

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w