1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng website mạng xã hội về hình ảnh

116 4 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

Tiêu đề Xây Dựng Website Mạng Xã Hội Về Hình Ảnh
Định dạng
Số trang 116
Dung lượng 12,08 MB

Cấu trúc

  • 1.1 Tính cấp thiết của đề tài (6)
  • 1.2 Mục đích của đề tài (6)
  • 1.3 Đối tượng và phạm vi nghiên cứu (15)
  • 1.4 Kết quả dự kiến đạt được (6)
  • 2.1 Tổng quan về các công nghệ thực hiện (16)
    • 2.1.1 Các thành phần công nghệ thực hiện (16)
  • 2.2 NestJS (17)
    • 2.2.1 Tổng quan (17)
    • 2.2.2 Ưu điểm (18)
  • 2.3 GraphQL (19)
    • 2.3.1 Tổng quan (19)
    • 2.3.2 Tính năng (19)
    • 2.3.3 Tại sao phải dùng GraphQL (20)
    • 2.3.4 Nhược Điểm (20)
  • 2.4 MongoDB (20)
    • 2.4.1 Mô hình (20)
    • 2.4.2 Đặc trưng (21)
    • 2.4.3 Ưu điểm (22)
    • 2.4.4 Nhược điểm (22)
  • 2.5 ReactJS (22)
    • 2.5.1 Tổng Quan (22)
    • 2.5.4 Nhược điểm (25)
  • 2.6 Ant Design (25)
    • 2.6.1 Tổng Quan Về Ant Design (25)
  • 2.7 Webpack (25)
    • 2.7.1 Tổng Quan Về Webpack (25)
  • 2.8 Eslint (26)
    • 2.8.1 Tổng Quan Về Eslint (26)
  • 2.9 Docker (26)
    • 2.9.1 Tổng Quan Về Docker (26)
    • 2.9.2 Các thức hoạt động của Docker (26)
    • 2.9.3 Lý do nên sử dụng Docker (26)
  • 2.10 Nginx (27)
    • 2.10.1 Tổng quan về Nginx (27)
  • 2.11 Microsoft Computer vision (27)
    • 2.11.1 Sơ nét về Microsoft Computer Vision (27)
  • 3.1 Khảo sát hiện trạng (28)
    • 3.1.1 Facebook (28)
    • 3.1.2 Instagram (29)
    • 3.1.3 Pinterest (30)
  • 3.2 Xác định yêu cầu (31)
  • 3.3 Đặc tả chức năng (32)
    • 3.3.1 Bảng requirement dành cho use case (32)
    • 3.3.2 Liệt kê các actor (34)
    • 3.3.3 Bảng use case (34)
  • 4.1 Thiết kế dữ liệu (54)
    • 4.1.1 Sơ đồ thiết kế dữ liệu (54)
    • 4.1.2 Mô tả sơ đồ thiết kế dữ liệu (54)
  • 4.2 Sơ đồ tuần tự(Sequence Diagram) (59)
    • 4.2.1 Sequence tìm kiếm ảnh ‘‘Search Image’’ (59)
    • 4.2.2 Sequence chọn chủ đề ảnh khi vừa đăng nhập ‘‘Choose topic’s image what (61)
    • 4.2.3 Sequence xem danh sách photo ‘‘View Image List’’ (62)
    • 4.2.4 Sequence hiển thị bình luận,reaction mỗi bài post ‘‘See comment,reaction in (64)
    • 4.2.5 Sequence Thao tác bình luận hoặc thả cảm xúc trong bài post ‘‘’’ (65)
    • 4.2.6 Sequence phản hồi bình luận ‘‘Response with parent comment ’’ (68)
    • 4.2.7 Sequence tạo bài post mới ‘‘Create a new post with image’’ (71)
    • 4.2.8 Sequence tìm kiếm ảnh theo chủ đề khi click vào tag ở mỗi bài post ‘‘Search (74)
    • 4.2.9 Sequence tải ảnh với nhiều kích thước khác nhau ‘‘Dowload image with (75)
    • 4.2.10 Sequence xem người dùng khác khi click vào họ ‘‘View user when click them’’ 64 (76)
    • 4.2.11 Sequence chat giữa các user ‘‘Chat between users’’ (78)
    • 4.2.12 Sequence nhận thông báo mỗi khi có người dùng tương tác với bài post’’ (79)
    • 4.2.13 Sequence xem thông tin cá nhân ‘‘See personal imformation’’ (81)
    • 4.2.14 Sequence đăng kí tài khoản người dùng ‘‘Register an new account’’ (84)
    • 4.2.15 Sequence đăng nhập tài khoản người dùng ‘‘Login with an account ’’ (85)
    • 4.2.16 Sequence hiện thị danh sách người dùng ‘‘View Accounts’’ (86)
    • 4.2.17 Sequence hiện thị tất cả bài post (88)
  • 4.3 Thiết kế giao diện (90)
  • 5.1 Cài đặt ứng dụng (107)
  • 5.2 Kiểm thử ứng dụng (110)
    • 5.2.1 Chức năng đăng kí (110)
    • 5.2.2 Chức năng đăng nhập (111)
    • 5.2.3 Chức năng tìm kiếm (112)
  • KẾT LUẬN (114)
    • 6.1 Kết quả đạt được (114)
    • 6.2 Ưu điểm và nhược điểm (114)
      • 6.2.1 Ưu điểm (114)
      • 6.2.2 Nhược điểm (114)
      • 6.2.3 Khó khăn (115)
    • 6.3 Kinh nghiệm đạt được (115)
    • 6.4 Hướng phát triển cho tương lai (115)
  • TÀI LIỆU THAM KHẢO (6)

Nội dung

Mục đích của đề tài

1.3 Cách tiếp cận và phương pháp nghiên cứu

1.4 Kết quả dự kiến đạt được

1.1 Tổng quan về công nghệ thực hiện

Chương 2: Khảo sát hiện trạng và xác định yêu cầu

Chương 3: Thiết kế ứng dụng

Chương 4: Cài đặt và kiểm thử ứng dụng

STT Mô tả công việc

Ngày bắt đầu-Ngày kết thúc

1 Khảo sát hiện trạng, lên ý tưởng, viết mô tả đồ án; tìm hiểu, lựa chọn và chuẩn bị môi trường làm việc

2 Thiết kế giao diện bằng prototypes 15/09/2020 – 25/09/2020

4 Code chức năng trang đăng nhập, đăng ký

5 Code chức năng thay đổi thông tin người dùng

6 Code trang đăng nhập,đăng kí trên reactjs

7 Code trang home với danh sách ảnh trên reactjs

Code thêm,sửa,xoá ảnh

8 Báo cáo tiến độ lần 1 (Online) 07/10/2020 – 07/10/2020

9 Code chức năng tìm theo ảnh theo chủ đề

Call API lên Front-end 07/10/2020 – 07/10/2020

10 Code chức năng gợi ý ảnh theo cùng chủ đề khi xem chi tiết ảnh

Call API lên Front-end

12 Code chức năng thêm,sửa,xoá bình luận trong bình luận cha đồng thời thả cảm xúc 20/10/2020 – 21/10/2020

13 Code chức năng khi người dùng mơi đăng nhập vào yêu cầu chọn chủ đề yêu thích từ đó filter theo các chủ đề đã chọn

14 Code chức năng chuyển đến chủ đề đã chọn khi click vào các tag ở chi tiết mỗi hình 18/10/2020 – 18/10/2020

15 Code chức năng thay đổi thông tin ngươi dùng 19/10/2020 – 22/10/2020

16 Code chưc năng hiện thị trạng thái người dùng đang online trực tuyến 22/10/2020 – 31/10/2020

17 Code chức năng chat căn bản giữa các user 31/10/2020 – 08/11/2020

18 Cải thiện chức năng chat thêm emoji 08/11/2020 – 10/11/2020

20 Code chức năng đăng ảnh kèm chủ đề 11/11/2020 – 25/11/2020

21 Cải thiện chức năng đăng ảnh kèm caption 25/11/2020 – 27/11/2020

22 Cải thiện realtime giữa những lần chat giữa các user cũng như là bình luận 28/11/2020 – 10/12/2020

23 Báo cáo tiến độ lần 2(Online) 29/11/2020 – 29/11/2020

24 Code chức năng căn bản cho admin 1/12/2020 – 10/12/2020

25 Kiểm thử các chức năng,cải thiện một số chức năng còn thiếu sót 11/12/2020 – 15/12/2020

26 Nghiên cứu package kiểm soát nội dung ảnh đăng lên bằng microsoft computer vison 15/12/2020 -20/12/2020

27 Tổng hợp,bổ sung nội dung báo cáo 15/12/2020 – 22/12/2020

28 Tiếp tục bổ sung dữ liệu,sửa đổi và fixbug 15/12/2020 – 25/12/2020

29 Báo cáo tiến độ lần 3 20/12/2020 – 20/12/2020

Hình 3.4 Use case tìm kiếm ảnh “Search Image” 22

Hình 3.5 Use case chọn topic hình yêu thích khi vừa tạo tài khoản 24

Hình 3.6 Use case xem hình và thông tin chi tiết của hình 25

Hình 3.7 Use case xem bình lận và lượt thích 27

Hình 3.8 Use case chức năng bình luận/thả cảm xúc cho hình ảnh 28

Hình 3.9 Use case trả lời bình luận 30

Hình 3.10 Use case đăng/xóa/sửa ảnh 32

Hình 3.11 Use case tìm kiếm hình ảnh bằng chủ đề 33

Hình 3.12 Use case tải hình với nhiều kích thước 34

Hình 3.13 Use case xem thông tin cá nhân 35

Hình 3.15 Use case nhận thông báo 37

Hình 3.16 Use case xem trang cá nhân 38

Hình 3.17 Use case đăng kí/đăng nhập 39

Hình 3.18 Use case các chức năng của admin 40

Hình 4.1 Sơ đồ ERD cơ sở dữ liệu 42

Hình 4.2 Sequence tìm kiếm theo chủ đề 47

Hình 4.3 Sequence tìm kiếm theo nhiều chủ đề 48

Hình 4.4 Sequence chọn chủ đè ảnh khi vừa đăng nhập 49

Hình 4.5 Sequence xem danh sách ảnh theo chủ đề đã chọn 50

Hình 4.6 Sequence xem chi tiết ảnh 51

Hình 4.7 Sequence hiển thị bình luận,reaction mỗi bài post 52

Hình 4.8 Sequence cập nhật bình luận hoặc reaction 53

Hình 4.9 Sequence xóa bình luận hoặc reaction 54

Hình 4.10 Sequence thêm bình luận hoặc reaction 55

Hình 4.11 Sequence cập nhật bình luận con 56

Hình 4.12 Sequence xóa bình luận con 57

Hình 4.13 Sequence thêm bình luận con 58

Hình 4.14 Sequence tạo bài post mới 59

Hình 4.15 Sequence xóa bài post 60

Hình 4.16 Sequence cập nhật bài post 61

Hình 4.17 Sequence tìm kiếm ảnh theo chủ đề khi click vào tag ở mỗi bài post 62

Hình 4.18 Sequence tải ảnh với nhiều kích thước khác nhau 63

Hình 4.19 Sequence xem ảnh đại diên người dùng 64

Hình 4.20 Sequence xem thông tin chi tiết của người dùng 65

Hình 4.21 Sequence chat với emoji 66

Hình 4.22 Sequence nhận thông báo bới bình luận 67

Hình 4.23 Sequence nhận thông báo bởi reaction 68

Hình 4.24 Sequence thay đổi avatar cá nhân 69

Hình 4.25 Sequence xem những bài post mình đã từng post 70

Hình 4.26 Sequence thay đổi thông tin cá nhân 71

Hình 4.27 Sequence đăng kí tài khoản người dùng 72

Hình 4.28 Sequence đăng nhạp tài khoản người dùng 73

Hình 4.29 Sequence hiển thị danh sách người dùng 74

Hình 4.30 Sequence thay đổi trạng thái người dùng 75

Hình 4.31 Sequence hiện thị tất cả bài post 76

Hình 4.32 Sequence sửa, xóa bài post 77

Hình 4.35 Registerde_Client Home Screen 81

Hình 4.36 First Time Login Screen 82

Hình 4.39 Photo’s comment and post comment screen 85

Hình 5.1 Hình folder chứ project pitogram 97

Hình 5.2 Hình 2 folder back và fornt end 98

Bảng 1: Bảng requirement dành cho use case 22

Bảng 2: Use case tìm kiếm theo một chủ để 23

Bảng 3: Use case tìm kiếm theo nhiều chủ đề 23

Bảng 4: Use case chọn topic hình yêu thích khi vừa tạo tài khoản 24

Bảng 5: Use case xem hình và thông tin chi tiết của hình 26

Bảng 6: Use case xem bình lận và lượt thích 27

Bảng 7 Use case chức năng bình luận/thả cảm xúc cho hình ảnh 29

Bảng 8: Use case trả lời bình luận 31

Bảng 9: Use case đăng/xóa/sửa ảnh 33

Bảng 10: Use case tìm kiếm hình ảnh bằng chủ đề 34

Bảng 11: Use case tải hình với nhiều kích thước 35

Bảng 12: Use case xem thông tin cá nhân 36

Bảng 14 Use case nhận thông báo 38

Bảng 15 Use case xem trang cá nhân 39

Bảng 16: Use case đăng kí/đăng nhập 40

Bảng 17: Use case các chức năng của admin 41

Bảng 29 Registerde_Client Home Screen 82

Bảng 30 First Time Login Screen 82

Bảng 33 Photo’s comment and post comment screen 86

Bảng 43 Test case chức năng đăng kí 100

Bảng 44 Test case chức năng đăng nhập 101

Bảng 45 Test case chức năng tìm kiếm 102

Bảng 46: Test case chức năng thông báo tương tác 102

Bảng 47: Test case chức năng kiểm soát nội dung ảnh post lên 103

1.1 Tính cấp thiết của đề tài

Mạng xã hội hiện nay có thể cho rằng là một phần không thể thiếu đối với mọi người trong chúng ta hiện nay

Mạng xã hội ngày càng trở nên phổ biến, không chỉ với trẻ em mà còn với người lớn tuổi, trở thành nơi giải trí và bày tỏ cảm xúc của mọi người Đây là không gian cho những người có cùng đam mê chia sẻ những hình ảnh đẹp và kiến thức mà họ đã tìm hiểu, giúp kết nối mọi người dù chưa quen biết Nhóm chúng tôi quyết định thử sức xây dựng một trang web mạng xã hội chuyên về hình ảnh, nhằm tạo ra một cộng đồng nơi mọi người có thể giao lưu và chia sẻ những điều đẹp đẽ.

Đề tài “XÂY DỰNG WEBSITE MẠNG XÃ HỘI VỀ HÌNH ẢNH” nhằm mục tiêu nghiên cứu và ứng dụng các công nghệ hiện đại trong xây dựng website Đầu tiên, sinh viên cần nắm vững lý thuyết và hiểu rõ các công nghệ như NodeJS, Angular, ReactJS, và MongoDB, qua đó nâng cao kiến thức và kỹ năng xử lý vấn đề Thứ hai, đề tài thách thức sinh viên trong việc kết hợp các công nghệ mới, không chỉ dựa vào các mô hình phổ biến như MEAN STACK hay MERN STACK, để phát triển một ứng dụng web hoàn chỉnh Sản phẩm cuối cùng sẽ là một nền tảng kết nối những người đam mê hình ảnh, với nhiều tính năng thực tiễn và khả năng mở rộng trong tương lai, tương tự như Facebook.

Kết quả dự kiến đạt được

1.1 Tổng quan về công nghệ thực hiện

Chương 2: Khảo sát hiện trạng và xác định yêu cầu

Chương 3: Thiết kế ứng dụng

Chương 4: Cài đặt và kiểm thử ứng dụng

STT Mô tả công việc

Ngày bắt đầu-Ngày kết thúc

1 Khảo sát hiện trạng, lên ý tưởng, viết mô tả đồ án; tìm hiểu, lựa chọn và chuẩn bị môi trường làm việc

2 Thiết kế giao diện bằng prototypes 15/09/2020 – 25/09/2020

4 Code chức năng trang đăng nhập, đăng ký

5 Code chức năng thay đổi thông tin người dùng

6 Code trang đăng nhập,đăng kí trên reactjs

7 Code trang home với danh sách ảnh trên reactjs

Code thêm,sửa,xoá ảnh

8 Báo cáo tiến độ lần 1 (Online) 07/10/2020 – 07/10/2020

9 Code chức năng tìm theo ảnh theo chủ đề

Call API lên Front-end 07/10/2020 – 07/10/2020

10 Code chức năng gợi ý ảnh theo cùng chủ đề khi xem chi tiết ảnh

Call API lên Front-end

12 Code chức năng thêm,sửa,xoá bình luận trong bình luận cha đồng thời thả cảm xúc 20/10/2020 – 21/10/2020

13 Code chức năng khi người dùng mơi đăng nhập vào yêu cầu chọn chủ đề yêu thích từ đó filter theo các chủ đề đã chọn

14 Code chức năng chuyển đến chủ đề đã chọn khi click vào các tag ở chi tiết mỗi hình 18/10/2020 – 18/10/2020

15 Code chức năng thay đổi thông tin ngươi dùng 19/10/2020 – 22/10/2020

16 Code chưc năng hiện thị trạng thái người dùng đang online trực tuyến 22/10/2020 – 31/10/2020

17 Code chức năng chat căn bản giữa các user 31/10/2020 – 08/11/2020

18 Cải thiện chức năng chat thêm emoji 08/11/2020 – 10/11/2020

20 Code chức năng đăng ảnh kèm chủ đề 11/11/2020 – 25/11/2020

21 Cải thiện chức năng đăng ảnh kèm caption 25/11/2020 – 27/11/2020

22 Cải thiện realtime giữa những lần chat giữa các user cũng như là bình luận 28/11/2020 – 10/12/2020

23 Báo cáo tiến độ lần 2(Online) 29/11/2020 – 29/11/2020

24 Code chức năng căn bản cho admin 1/12/2020 – 10/12/2020

25 Kiểm thử các chức năng,cải thiện một số chức năng còn thiếu sót 11/12/2020 – 15/12/2020

26 Nghiên cứu package kiểm soát nội dung ảnh đăng lên bằng microsoft computer vison 15/12/2020 -20/12/2020

27 Tổng hợp,bổ sung nội dung báo cáo 15/12/2020 – 22/12/2020

28 Tiếp tục bổ sung dữ liệu,sửa đổi và fixbug 15/12/2020 – 25/12/2020

29 Báo cáo tiến độ lần 3 20/12/2020 – 20/12/2020

Hình 3.4 Use case tìm kiếm ảnh “Search Image” 22

Hình 3.5 Use case chọn topic hình yêu thích khi vừa tạo tài khoản 24

Hình 3.6 Use case xem hình và thông tin chi tiết của hình 25

Hình 3.7 Use case xem bình lận và lượt thích 27

Hình 3.8 Use case chức năng bình luận/thả cảm xúc cho hình ảnh 28

Hình 3.9 Use case trả lời bình luận 30

Hình 3.10 Use case đăng/xóa/sửa ảnh 32

Hình 3.11 Use case tìm kiếm hình ảnh bằng chủ đề 33

Hình 3.12 Use case tải hình với nhiều kích thước 34

Hình 3.13 Use case xem thông tin cá nhân 35

Hình 3.15 Use case nhận thông báo 37

Hình 3.16 Use case xem trang cá nhân 38

Hình 3.17 Use case đăng kí/đăng nhập 39

Hình 3.18 Use case các chức năng của admin 40

Hình 4.1 Sơ đồ ERD cơ sở dữ liệu 42

Hình 4.2 Sequence tìm kiếm theo chủ đề 47

Hình 4.3 Sequence tìm kiếm theo nhiều chủ đề 48

Hình 4.4 Sequence chọn chủ đè ảnh khi vừa đăng nhập 49

Hình 4.5 Sequence xem danh sách ảnh theo chủ đề đã chọn 50

Hình 4.6 Sequence xem chi tiết ảnh 51

Hình 4.7 Sequence hiển thị bình luận,reaction mỗi bài post 52

Hình 4.8 Sequence cập nhật bình luận hoặc reaction 53

Hình 4.9 Sequence xóa bình luận hoặc reaction 54

Hình 4.10 Sequence thêm bình luận hoặc reaction 55

Hình 4.11 Sequence cập nhật bình luận con 56

Hình 4.12 Sequence xóa bình luận con 57

Hình 4.13 Sequence thêm bình luận con 58

Hình 4.14 Sequence tạo bài post mới 59

Hình 4.15 Sequence xóa bài post 60

Hình 4.16 Sequence cập nhật bài post 61

Hình 4.17 Sequence tìm kiếm ảnh theo chủ đề khi click vào tag ở mỗi bài post 62

Hình 4.18 Sequence tải ảnh với nhiều kích thước khác nhau 63

Hình 4.19 Sequence xem ảnh đại diên người dùng 64

Hình 4.20 Sequence xem thông tin chi tiết của người dùng 65

Hình 4.21 Sequence chat với emoji 66

Hình 4.22 Sequence nhận thông báo bới bình luận 67

Hình 4.23 Sequence nhận thông báo bởi reaction 68

Hình 4.24 Sequence thay đổi avatar cá nhân 69

Hình 4.25 Sequence xem những bài post mình đã từng post 70

Hình 4.26 Sequence thay đổi thông tin cá nhân 71

Hình 4.27 Sequence đăng kí tài khoản người dùng 72

Hình 4.28 Sequence đăng nhạp tài khoản người dùng 73

Hình 4.29 Sequence hiển thị danh sách người dùng 74

Hình 4.30 Sequence thay đổi trạng thái người dùng 75

Hình 4.31 Sequence hiện thị tất cả bài post 76

Hình 4.32 Sequence sửa, xóa bài post 77

Hình 4.35 Registerde_Client Home Screen 81

Hình 4.36 First Time Login Screen 82

Hình 4.39 Photo’s comment and post comment screen 85

Hình 5.1 Hình folder chứ project pitogram 97

Hình 5.2 Hình 2 folder back và fornt end 98

Bảng 1: Bảng requirement dành cho use case 22

Bảng 2: Use case tìm kiếm theo một chủ để 23

Bảng 3: Use case tìm kiếm theo nhiều chủ đề 23

Bảng 4: Use case chọn topic hình yêu thích khi vừa tạo tài khoản 24

Bảng 5: Use case xem hình và thông tin chi tiết của hình 26

Bảng 6: Use case xem bình lận và lượt thích 27

Bảng 7 Use case chức năng bình luận/thả cảm xúc cho hình ảnh 29

Bảng 8: Use case trả lời bình luận 31

Bảng 9: Use case đăng/xóa/sửa ảnh 33

Bảng 10: Use case tìm kiếm hình ảnh bằng chủ đề 34

Bảng 11: Use case tải hình với nhiều kích thước 35

Bảng 12: Use case xem thông tin cá nhân 36

Bảng 14 Use case nhận thông báo 38

Bảng 15 Use case xem trang cá nhân 39

Bảng 16: Use case đăng kí/đăng nhập 40

Bảng 17: Use case các chức năng của admin 41

Bảng 29 Registerde_Client Home Screen 82

Bảng 30 First Time Login Screen 82

Bảng 33 Photo’s comment and post comment screen 86

Bảng 43 Test case chức năng đăng kí 100

Bảng 44 Test case chức năng đăng nhập 101

Bảng 45 Test case chức năng tìm kiếm 102

Bảng 46: Test case chức năng thông báo tương tác 102

Bảng 47: Test case chức năng kiểm soát nội dung ảnh post lên 103

1.1 Tính cấp thiết của đề tài

Mạng xã hội hiện nay có thể cho rằng là một phần không thể thiếu đối với mọi người trong chúng ta hiện nay

Mạng xã hội ngày càng trở nên phổ biến, từ trẻ em đến người lớn tuổi, là nơi mọi người giải khuây và bày tỏ cảm xúc mà khó có thể diễn đạt bằng lời Đây cũng là không gian cho những người cùng đam mê chia sẻ những hình ảnh đẹp và kiến thức họ thu thập được, giúp kết nối mọi người dù chưa quen biết Nhận thấy tiềm năng này, nhóm chúng tôi quyết định xây dựng một trang web mạng xã hội tập trung vào hình ảnh.

Đề tài “XÂY DỰNG WEBSITE MẠNG XÃ HỘI VỀ HÌNH ẢNH” tập trung vào hai vấn đề chính Thứ nhất, sinh viên cần nghiên cứu và hiểu rõ các công nghệ xây dựng website, đặc biệt là các thư viện và framework phổ biến dựa trên Javascript như NodeJS, Angular, ReactJS và MongoDB, nhằm nâng cao kiến thức và kỹ năng xử lý vấn đề trong quá trình phát triển Thứ hai, đề tài đặt ra thách thức trong việc kết hợp các công nghệ mới, không sử dụng các mô hình phổ biến như MEAN STACK hay MERN STACK, để tạo ra một ứng dụng web đáp ứng nhu cầu kết nối những người đam mê hình ảnh, đồng thời có khả năng nâng cấp và phát triển tính năng tương lai giống như Facebook.

Đối tượng nghiên cứu của đề tài này tập trung vào hai nhóm chính: những người đam mê sưu tầm ảnh nghệ thuật và những người yêu thích thưởng thức những bức ảnh đẹp Phạm vi nghiên cứu sẽ khám phá sở thích và thói quen của hai nhóm này trong việc tương tác với nghệ thuật nhiếp ảnh.

Nhóm người sưu tầm ảnh sử dụng những bức ảnh của mình để chia sẻ với cộng đồng, qua đó nhận được lượt thích và bình luận đánh giá về các tác phẩm ghi lại những khoảnh khắc đặc biệt trong cuộc sống.

Những người yêu thích ngắm nhìn hình ảnh đẹp thường mong muốn trải nghiệm những điều tuyệt vời, giải tỏa áp lực trong cuộc sống, thể hiện cảm xúc cá nhân và kết nối sâu sắc hơn với những người xung quanh.

Phạm vi nghiên cứu được xác định một cách tổng quát, cho phép người thực hiện nắm bắt kiến thức chung và áp dụng vào sản phẩm thực tế Nội dung nghiên cứu không chú trọng vào các lý thuyết phức tạp mà thiếu tính ứng dụng.

1.4 Kết quả dự kiến đạt được

Hiểu được các kiến thức các công nghệ áp dụng thực hiện

Có kiến thức về microsoft computer vision kiểm soát nội dung ảnh tải lên

Xây dựng một website mạng xã hội về hình ảnh với những kiến thức đã tìm hiểu

Tổng quan về các công nghệ thực hiện

Các thành phần công nghệ thực hiện

Website được xây dựng dựa trên các công nghệ được sử dụng phổ biến hiện nay

Hệ thống được phát triển với công nghệ hiện đại, trong đó phía back-end sử dụng NestJS và GraphQL, trong khi phía front-end áp dụng thư viện JavaScript ReactJS cùng với Ant-design để thiết kế giao diện website Ngoài ra, các công nghệ bổ sung như Webpack và Eslint cũng được sử dụng Cơ sở dữ liệu được quản lý bằng MongoDB, và hệ thống được triển khai thông qua Docker và Nginx.

NestJS là một framework để xây dựng các ứng dụng server-side được phát triển bằng nodejs và sử dụng ngôn ngữ bật cao của JavaScript là TypeScript

MongoDB là một cơ sở dữ liệu NoSQL nổi bật với tính năng không ràng buộc quan hệ, khả năng phân tán và mã nguồn mở Nó có khả năng lưu trữ và xử lý từ những lượng dữ liệu nhỏ đến cực lớn, đáp ứng nhu cầu đa dạng của người dùng.

GraphQL là một syntax mô tả việc yêu cầu lấy dữ liệu được sử dụng để load data từ server-side cho client Đối với front-end:

ReactJS là thư viện UI do Facebook phát triển, cho phép xây dựng giao diện bằng các component Theo xu hướng SPA (Single Page Application), cấu trúc của trang web sẽ được tải lần đầu khi người dùng truy cập, và trong các lần yêu cầu sau, chỉ cần lấy những dữ liệu cần thiết mà không cần tải lại trang Điều này giúp tiết kiệm băng thông và cải thiện trải nghiệm người dùng.

Ant-design là một React UI Component Library, sử dung các components có sẵn tương tự như boostrap, material UI,…

GraphQL là một syntax mô tả việc yêu cầu lấy dữ liệu được sử dụng để load data từ server-side cho client

Webpack is a powerful tool that bundles various file types such as JavaScript, CSS, SCSS, and SASS, allowing for an organized file structure that aligns with the project's architecture.

ESLint là một công cụ phân tích mã nguồn giúp lập trình viên phát hiện các vấn đề như biến khai báo không sử dụng hay mã dư thừa Mục tiêu của ESLint là hỗ trợ lập trình viên trong việc viết mã sạch, dễ đọc và dễ bảo trì hơn.

Docker là một nên tảng để deploy và run application với container

Nginx là một máy chủ web mã nguồn mở mạnh mẽ, nổi bật với kiến trúc đơn luồng và hướng sự kiện, giúp nó hoạt động hiệu quả hơn so với Apache server Ngoài việc phục vụ nội dung web, Nginx còn có khả năng thực hiện các chức năng quan trọng khác như cân bằng tải.

NestJS

Tổng quan

NestJS is an efficient framework for building scalable server-side applications with Node.js It supports both TypeScript and plain JavaScript, incorporating full object-oriented programming (OOP), functional programming (FP), and functional reactive programming (FRP) capabilities.

Về bản chất thì Nest JS sử dụng framework máy chủ HTTP mạnh mẻ như Express (mặc định) và có thể tùy chọn cấu hình để sử dụng Fastify

Nest cung cấp một lớp trừu tượng trên các framework Node.js phổ biến như Express và Fastify, đồng thời hỗ trợ API trực tiếp cho các nhà phát triển Điều này cho phép họ tự do sử dụng nhiều module bên thứ ba có sẵn cho nền tảng cơ bản Tất cả các package được cài đặt khi sử dụng Express hoặc Fastify đều có thể dễ dàng tích hợp vào NestJS.

Nest hỗ trợ Express và đồng thời tương thích với nhiều thư viện khác, chẳng hạn như Fastify, giúp người dùng dễ dàng tích hợp và sử dụng nhiều plugin bên thứ ba có sẵn.

Ưu điểm

NestJS tương thích với cả Typescript và Javascript thuần, default là Typescript

The core design pattern of NestJS is Dependency Injection, and its syntax closely resembles that of Angular Therefore, if you have prior knowledge of Angular, getting started with NestJS will be quite straightforward.

NestJS có rất nhiều module có thể hỗ trợ bạn từ việc hot reload, logger cho đến GraphQL, Websocket, cqrs pattern, microservices, NestJS làm như mọi thứ

NodeJS cung cấp các công cụ tích hợp sẵn giúp lập trình viên dễ dàng kiểm tra mã nguồn với Jasmine để tạo unit test Bên cạnh đó, khi cài đặt thư viện mới cho dự án, node package manager (npm) cũng là một công cụ hỗ trợ hiệu quả.

Số lượng người dùng hiện tại khá ít Hạn chế về mặt hộ trỡ những vấn đế trên Stackoverflow

Quá nhiều thay đổi trong một bản update

GraphQL

Tổng quan

GraphQL là một ngôn ngữ truy vấn đồ thị dành cho API, được phát triển bởi Facebook và hiện được duy trì bởi nhiều công ty lớn cùng cộng đồng toàn cầu Kể từ khi ra đời, GraphQL đã gần như thay thế hoàn toàn REST nhờ vào hiệu quả, sức mạnh và tính linh hoạt vượt trội Nó được xây dựng bằng cách định nghĩa các loại và trường, đồng thời cung cấp chức năng cho từng trường trong mỗi loại.

Khi GraphQL hoạt động trên một URL web, nó có khả năng nhận và thực hiện các truy vấn GraphQL Các truy vấn này sẽ được kiểm tra để đảm bảo chỉ sử dụng các loại và trường đã được định nghĩa, sau đó sẽ tiến hành chạy các hàm để tạo ra kết quả.

GraphQL chia thành 3 phần chính :

Query: Các câu lệnh lấy dữ liệu (tương tự method GET trong REST API)

Mutation: Các câu lệnh để thêm/sửa dữ liệu (tuơng tự method POST/PUT/DELETE trong REST API)

Subscription là câu lệnh dùng để lắng nghe sự kiện trên server, cho phép cập nhật dữ liệu theo thời gian thực khi có thay đổi Nhờ vào tính năng này, GraphQL vượt trội hơn hẳn so với REST API trong việc cung cấp dữ liệu cho client.

Tính năng

Hierarchical : các truy vấn chính xác như dữ liệu mà chúng trả về

Các truy vấn do khách hàng chỉ định : khách hàng có quyền tự do quyết định lấy gì từ máy chủ

GraphQL cho phép xác thực truy vấn theo cú pháp và kiểu trước khi thực thi, điều này không chỉ đảm bảo tính chính xác mà còn hỗ trợ các công cụ phát triển mạnh mẽ như GraphiQL, nâng cao trải nghiệm lập trình viên.

Introspective cho phép bạn truy vấn hệ thống thông qua cú pháp GraphQL, mang lại lợi ích lớn cho việc phân tích cú pháp dữ liệu vào các giao diện strongly-typed Điều này giúp loại bỏ nhu cầu phân tích và chuyển đổi thủ công từ JSON sang các đối tượng.

Tại sao phải dùng GraphQL

Sử dụng được trên cả Front-end lẫn Back-end giúp việc call API trở nên dễ dàng

Một trong những thách thức lớn của các REST call truyền thống là khách hàng không thể yêu cầu một bộ dữ liệu tùy chỉnh, dẫn đến việc nhận toàn bộ thông tin hoặc không có gì Điều này gây khó khăn trong việc tối ưu hóa dữ liệu được truyền tải, ảnh hưởng đến hiệu suất và trải nghiệm người dùng.

Một thách thức phổ biến là quản lý và duy trì nhiều điểm cuối khi nền tảng phát triển, dẫn đến việc khách hàng phải yêu cầu dữ liệu từ các endpoint khác nhau Tuy nhiên, GraphQL API tổ chức dữ liệu theo loại và trường, cho phép người dùng truy cập toàn bộ tính năng của dữ liệu từ chỉ một điểm cuối duy nhất.

Khi phát triển một máy chủ GraphQL, chỉ cần một URL duy nhất để truy xuất và biến đổi tất cả dữ liệu Khách hàng có thể dễ dàng yêu cầu một tập hợp dữ liệu bằng cách gửi một chuỗi truy vấn, mô tả rõ ràng những thông tin họ cần từ máy chủ.

Nhược Điểm

Hệ sinh thái vẫn còn đang phát triển nhanh chóng nên việc cập nhật đòi hỏi phải học tập thường xuyên

Phức tạp hơn so với việc sử dụng Restfull API.

MongoDB

Mô hình

MongoDB hệ quản trị cơ sở dữ liệu mã nguồn mở (open-source) thuộc họ cơ sở dữ liệu phi quan hệ (NoSQL)

MongoDB là một cơ sở dữ liệu phân tán, mang lại nhiều đặc điểm nổi bật như tính sẵn sàng cao và khả năng mở rộng theo chiều ngang, giúp tối ưu hóa hiệu suất và linh hoạt trong việc quản lý dữ liệu.

MongoDB là một cơ sở dữ liệu hướng đối tượng, cho phép lưu trữ dữ liệu linh hoạt mà không bị ràng buộc toàn vẹn như các cơ sở dữ liệu quan hệ Điều này có nghĩa là nhiều loại dữ liệu khác nhau có thể được lưu trữ trong cùng một Collection, tương đương với Table trong SQL Nhờ vào đặc điểm này, MongoDB phù hợp để lưu trữ các dữ liệu đa dạng và phức tạp, dễ dàng thích ứng với những thay đổi về cấu trúc lưu trữ.

MongoDB, được phát triển bởi MongoDB Inc tại New York từ năm 2007, ban đầu được thiết kế như một nền tảng dịch vụ (Platform as a Service - PAAS) Đến năm 2009, MongoDB chính thức ra mắt thị trường với vai trò là một máy chủ cơ sở dữ liệu mã nguồn mở (open-source database server), được duy trì và phát triển bởi MongoDB Inc Nhiều tổ chức lớn và vừa như SourceForge, Foursquare và eBay đã áp dụng MongoDB để xây dựng cơ sở dữ liệu của họ.

Đặc trưng

MongoDB là cơ sở dữ liệu No-SQL loại Document Database với nhiều yếu tố được bổ sung để nâng cao hiệu suất sử dụng như Index, Schema,

MongoDB được lập trình bằng ngôn ngữ C++ và hỗ trợ tốt với các Javascript Framework

Các khái niệm tiêu biểu khi sử dụng MongoDB:

Document trong MongoDB là đơn vị cơ bản của dữ liệu, tương đương với một dòng trong bảng SQL Mỗi document có cấu trúc độc lập dưới dạng một đoạn chuỗi JSON.

Collection là một tập hợp các tài liệu có thuộc tính tương tự, tương đương với bảng trong SQL Sự khác biệt lớn nhất là bảng SQL có cấu trúc cố định, trong khi Collection cho phép nhập liệu tự do với các tài liệu có thuộc tính khác nhau mà không gặp lỗi.

Database trong MongoDB là các cơ sở dữ liệu độc lập, bao gồm một hoặc nhiều Collection cùng với các cài đặt và phân quyền liên quan.

_id là một khóa định danh tự động do MongoDB tạo ra khi thêm một Document vào Collection Mỗi _id của Document luôn đảm bảo tính duy nhất trong Collection mà nó thuộc về.

Chỉ mục (Index) là cấu trúc dữ liệu thu thập thông tin về các trường trong tài liệu của bộ sưu tập (Collection), giúp tăng tốc độ truy vấn đến các trường này Tuy nhiên, việc tạo thêm chỉ mục cũng có thể làm tăng đáng kể chi phí lưu trữ.

MongoDB hỗ trợ truy vấn dữ liệu hiệu quả, cung cấp nhiều câu lệnh bổ trợ giúp đơn giản hóa quá trình truy vấn so với các ngôn ngữ truyền thống, đồng thời đảm bảo tốc độ truy vấn nhanh chóng.

Ưu điểm

Lược đồ dữ liệu linh hoạt của cơ sở dữ liệu No-SQL cho phép tổ chức dữ liệu theo kiểu Document Database, giúp người dùng lưu trữ các Document với thuộc tính và kích thước khác nhau trong cùng một Collection của MongoDB.

Để tăng tốc độ truy vấn dữ liệu, việc khởi tạo Index cho các trường thông thường là rất quan trọng, giúp cải thiện hiệu suất truy vấn một cách đáng kể.

Khả năng mở rộng cơ sở dữ liệu lớn

Phù hợp với xu hướng Big Data toàn cầu, công nghệ này dễ dàng tích hợp vào các ứng dụng thời gian thực Nó được hỗ trợ bởi nhiều thư viện Javascript và có thể áp dụng cho nhiều nền tảng và ngôn ngữ khác nhau.

Nhược điểm

MongoDB là một cơ sở dữ liệu không có cấu trúc, không áp dụng các ràng buộc khóa ngoại và khóa chính như trong cơ sở dữ liệu quan hệ Điều này dẫn đến việc toàn vẹn dữ liệu phải được quản lý bởi Server ứng dụng Do không có ràng buộc, MongoDB thường không cảnh báo về các vấn đề sai sót trong dữ liệu đầu vào.

Tiêu tốn nhiều tài nguyên trong quá trình xử lý cũng như tiêu tốn bộ nhớ cho việc khởi tạo thêm các Index tăng tốc độ truy vấn.

ReactJS

Tổng Quan

React là thư viện JavaScript phổ biến nhất để xây dựng giao diện người dùng (UI)

Phương pháp mới trong việc render trang web mang lại tốc độ phản hồi xuất sắc khi người dùng nhập liệu Giao diện người dùng (UI) được áp dụng trên cả nền tảng Web và Mobile, với React Js trong lĩnh vực web giúp nâng cao trải nghiệm người dùng Ngoài ra, tính năng Hot Reload cũng hỗ trợ lập trình viên làm việc hiệu quả hơn.

ReactJS là một thư viện mã nguồn mở do Facebook phát triển, nhằm tạo ra các ứng dụng web hấp dẫn với tốc độ nhanh và hiệu quả cao Mục tiêu chính của ReactJS là đảm bảo rằng các website sử dụng thư viện này hoạt động mượt mà, nhanh chóng, có khả năng mở rộng cao và dễ dàng triển khai.

ReactJS là một thư viện JavaScript giúp chia nhỏ các giao diện người dùng phức tạp thành các thành phần nhỏ hơn, dễ quản lý Được phát triển bởi Jordan Walke, một kỹ sư phần mềm tại Facebook, ReactJS không chỉ được Facebook duy trì mà còn được áp dụng trong nhiều sản phẩm nổi bật như WhatsApp và Instagram.

ReactJS được dùng để xây dựng các ứng dụng single page application (SPA)/

Một trong những điểm hấp dẫn của ReacJS là nó không chỉ được xây dựng bên phía clients mà còn sử dụng được bên phía server

Virtual DOM giúp cải thiện hiệu suất cho ứng dụng bằng cách chỉ thay đổi node gốc khi có sự thay đổi trạng thái Điều này dẫn đến việc tái cấu trúc toàn bộ, ảnh hưởng đến cây DOM và tốc độ xử lý của ứng dụng.

React JS sử dụng Virtual DOM để tối ưu hóa việc re-render, giúp cải thiện hiệu suất ứng dụng Virtual DOM là một đối tượng JavaScript chứa thông tin cần thiết để tạo ra DOM Khi dữ liệu thay đổi, React JS sẽ tính toán sự khác biệt giữa Virtual DOM và DOM thật, từ đó tối ưu hóa quá trình cập nhật giao diện người dùng.

React sử dụng cơ chế one-way data binding, cho phép dữ liệu được truyền từ component cha (parent) đến component con (child) thông qua props Luồng dữ liệu một chiều này giúp dễ dàng kiểm soát và sửa lỗi Nhờ vào các đặc điểm này, React rất phù hợp để xây dựng các ứng dụng lớn có dữ liệu thay đổi liên tục theo thời gian, đồng thời sự thay đổi dữ liệu thường đi kèm với sự thay đổi về giao diện.

Props là một yếu tố quan trọng giúp các component trong ứng dụng tương tác với nhau Chúng cho phép component nhận dữ liệu đầu vào, từ đó cung cấp các thuộc tính mô tả cách mà component con sẽ được hiển thị Đặc biệt, props là bất biến, nghĩa là chúng không thể thay đổi sau khi được truyền vào component.

In React, the state represents the application's current condition, and when it changes, the component re-renders to update the UI The `componentWillMount` method is executed before a component renders on both the server and client sides, while `componentDidMount` runs after the component renders on the client side, making it suitable for AJAX requests, DOM manipulation, or state updates This method can also connect with other JS frameworks and functions that require delayed execution, such as `setTimeout` or `setInterval` The `componentWillReceiveProps` method is triggered when props are updated, allowing for state updates before the component re-renders The `shouldComponentUpdate` method returns true or false to determine if a component should update; by default, it returns true, but it can be set to false to prevent re-rendering The `componentWillUpdate` method is called before a component re-renders after state updates, followed by `componentDidUpdate`, which executes afterward Finally, `componentWillUnmount` is invoked when a component is removed from the React tree.

ReactJS là một thư viện mạnh mẽ, sử dụng DOM ảo để quản lý các component hiệu quả Bằng cách tính toán các thay đổi cần thiết, ReactJS chỉ cập nhật những phần cần thiết trên DOM, giúp giảm thiểu chi phí thao tác và tối ưu hóa hiệu suất.

Việc viết mã JavaScript trở nên dễ dàng hơn với cú pháp JSX, cho phép kết hợp mã HTML và JavaScript một cách linh hoạt Chúng ta có thể thêm các đoạn HTML vào trong hàm render mà không cần phải sử dụng phép nối chuỗi.

Làm việc với vấn đề test giao diện: Nó cực kì dễ để viết các test case giao diện vì virtual DOM được cài đặt hoàn toàn bằng JS

Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảo trì và sửa lỗi.

Nhược điểm

Reactjs chỉ phục vụ cho tầng View React chỉ là View Library nó không phải là một MVC framework như những framework khác

Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần cấu hình lại

React is relatively heavier compared to other frameworks because it is a UI library that requires installation for various functionalities, while Angular is a complete framework.

Khó tiếp cận cho người mới học Web.

Ant Design

Tổng Quan Về Ant Design

Ant Design là bộ công cụ các components React được phát triển theo tiêu chuẩn thiết kế của Ant UED Team, tương tự như Material Design Nó cung cấp hầu hết các components phổ biến cho ứng dụng web hiện đại, bao gồm Layout, Button, Icon và DatePicker Đặc biệt, Ant Design còn có các components độc đáo như LocaleProvider, cho phép người dùng thay đổi ngôn ngữ trên toàn bộ ứng dụng.

Ant Design là bộ công cụ thiết kế hoàn chỉnh cho React, cung cấp hầu hết các thư viện cần thiết cho dự án của bạn Với Ant Design, bạn không cần cài đặt thêm bất kỳ thư viện nào khác, tương tự như việc sử dụng Bootstrap.

Webpack

Tổng Quan Về Webpack

Webpack là công cụ mạnh mẽ giúp gói gọn các file JavaScript và CSS, bao gồm cả SCSS và SASS, theo cấu trúc dự án Nó không chỉ đơn thuần là việc gói gọn mà còn tổ chức một cách hợp lý giữa các module Ngoài ra, Webpack còn cung cấp nhiều tính năng hữu ích như tối ưu hóa, hỗ trợ chạy trên các môi trường khác nhau (như dev và production), và theo dõi file Với sự hỗ trợ từ một cộng đồng phát triển lớn, Webpack trở thành công cụ lý tưởng cho các nhà phát triển trong việc quản lý các dự án lớn.

Eslint

Tổng Quan Về Eslint

ESLint là công cụ phân tích mã nguồn giúp phát hiện lỗi về phong cách lập trình và quy ước do người dùng hoặc nhóm tự định nghĩa Nó không chỉ tìm ra các lỗi cú pháp mà còn phát hiện những bug tiềm ẩn như biến chưa khai báo hoặc việc import function không tồn tại ESLint được xem là công cụ hỗ trợ cú pháp ES6 và JSX tốt nhất hiện nay, đồng thời là công cụ duy nhất hỗ trợ JSX.

Eslint dùng để check các mã CSS dành cho front-end/

Docker

Tổng Quan Về Docker

Docker is a platform designed for developers and sysadmins to deploy and run applications using containers It enables the creation of isolated and separate environments, known as containers, for launching and developing applications When deploying to any server, simply running the Docker container will instantly start your application.

Các thức hoạt động của Docker

Docker là một hệ điều hành dành cho container, cung cấp phương thức tiêu chuẩn để chạy mã của bạn Tương tự như máy ảo, Docker ảo hóa hệ điều hành của máy chủ, giúp loại bỏ nhu cầu quản lý trực tiếp phần cứng Được cài đặt trên từng máy chủ, Docker cho phép bạn sử dụng các lệnh đơn giản để dựng, khởi động hoặc dừng container.

Các dịch vụ AWS như AWS Fargate, Amazon ECS, Amazon EKS và AWS

Batch giúp bạn dễ dàng chạy các container Docker ở quy mô lớn.

Lý do nên sử dụng Docker

Vận chuyển phần mềm nhiều hơn và nhanh hơn trung bình 7 lần so với người không sử dụng docker

Tiêu chuẩn hóa quy trình vận hành trong các container nhỏ giúp dễ dàng triển khai, xác định vấn đề và thực hiện các biện pháp khắc phục hiệu quả.

Di chuyển trơn tru từ các máy phát triển cục bộ đến đơn vị triển khai sản xuất.

Nginx

Tổng quan về Nginx

NGINX là một web server mã nguồn mở mạnh mẽ, nổi bật với kiến trúc đơn luồng và hướng sự kiện, mang lại hiệu suất vượt trội so với Apache Ngoài vai trò là web server, NGINX còn hỗ trợ các chức năng quan trọng như load balancing, HTTP caching và hoạt động như một reverse proxy Kiến thức về NGINX là cần thiết cho web developer, system administrator và devops.

NGINX được phát hành chính thức vào tháng 10 năm 2004 bởi nhà sáng lập Igor Sysoev, người đã bắt đầu dự án từ năm 2002 nhằm giải quyết vấn đề C10k, tức là giới hạn xử lý 10.000 kết nối đồng thời Hiện nay, nhiều máy chủ web còn phải xử lý số lượng kết nối lớn hơn Với kiến trúc hướng sự kiện không đồng bộ, NGINX mang lại độ tin cậy, tốc độ và khả năng mở rộng vượt trội.

Với khả năng xử lý hàng ngàn kết nối đồng thời, NGINX đã trở thành lựa chọn hàng đầu cho nhiều website có lượng truy cập lớn Các công ty công nghệ hàng đầu như Google, Netflix, Adobe, Cloudflare và WordPress đều tin tưởng sử dụng dịch vụ này.

Microsoft Computer vision

Sơ nét về Microsoft Computer Vision

Là một lĩnh vực trong Artificial Intelligence và Computer Science nhằm giúp máy tính có được khả nng nhìn và hiểu giống như con người

Giống như Face API, Computer Vision của Microsoft xử lý nhận dạng hình ảnh nhưng ở quy mô lớn hơn, nhận diện nhiều đối tượng khác nhau trong một bức ảnh và cố gắng mô tả các hoạt động đang diễn ra để cung cấp thông tin cho người dùng.

KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

Khảo sát hiện trạng

Facebook

Hình 3.1Trang facekbook Ưu điểm:

- Cách phối màu, bố cục gọn ràng, hợp lí

- Giao diện thân thiện với người dùng

- Giao diên cài đặt được thiết kế rất chỉnh chu

- Đầy đủ lựa chọn, thanh tìm kiếm trong menubar

- Có Dark mode thay đổi màu giao diện theo ý người dùng

- Giao diện facebook mới nhật hiện nay có phần giống với twitter

- Giao diện chưa có sự đồng bộ sáng tạo cũng như về mặt ổn được của giảo diện.

Instagram

Hình 3.2 Trang Instagram Ưu điểm:

- Giao diện thân thiện người dùng

- Bố cục đơn giản, hợp lí, dễ sử dụng

- Tôn màu trắng đên làm chủ đạo toát lên vẻ sang trọng,lịch lãm

- Có phần hơi trống ở 2 bên

- Thanh tìm kiếm nhỏ, mò gây khó nhìn.

Pinterest

Hình 3.3 Trang pinterest Ưu điểm:

- Giao diện đơn giản,dễ sử dụng

- Bố cục hợp lí không quá trống trải trong giao diện

- Thanh menubar hiện thị đầy chức năng ,màu sắc dễ nhìn

- Bố cục rõ ràng, thể hiện đầy đủ các nội dung

- Thanh menu không gây ấn tượng vì chưa đầy đủ lắm

- Trang chủ quá nhiều nội dung nên rút ngắn lại.

Xác định yêu cầu

Website hướng đến những đối tượng có đam mê về ảnh nghệ thuật, nơi để mọi người có thể chia sẻ những tấm ảnh của mình với mọi người

Website sẽ cung cấp các chức năng cần thiết cho mạng xã hội ảnh, bao gồm đăng nhập, đăng ký, lựa chọn nội dung muốn xem, thả cảm xúc và bình luận bài viết.

Sau khi hoàn tất việc tạo tài khoản, người dùng sẽ được đưa đến trang mở đầu, nơi họ có thể lựa chọn nội dung mà mình muốn xem Ngoài ra, người dùng cũng có thể chỉnh sửa các tùy chọn nội dung trong phần hồ sơ cá nhân của mình.

- Trang chủ hiện thị nội dung ảnh có thể được lọc theo chủ đề khi được nhập trên thanh tìm kiếm

- Xem chi tiết ảnh, thả cảm xúc, bình luận về ảnh

- Tải ảnh với nhiều kích thước khác nhau

- Nhận thông báo khi có người dùng tương tác ảnh

- Kiểm soát nội dung ảnh tải lên bằng microsoft computer vision

- Trò chuyện, thả cảm xúc với mọi người

- Đăng hình ảnh kèm với trạng thái

Đặc tả chức năng

Bảng requirement dành cho use case

1 Search image Guest,Admin,Registered_Client

1.1 Search image by tag Guest,Admin,Registered_Client

1.2 Search image by multi tag Guest,Admin,Registered_

2 Choose topic’s image what to see when account just register completely

3 View Image List Guest,Admin,Registered_

Client 3.1 View Image List by chose topic Registered_Client

3.2 View Image Detail Guest,Admin,Registered_

4 See comment,reaction in each image

5 Type comment or add reaction in image

6 Reponse with a parent comment Registered_Client

6.1 Update child comment Registered_Client

6.2 Delete child comment Registered_Client

7 Create a new post with image Registered_Client

7.2 Update caption in a post Registered_Client

8 Search topic when click topic’s tag in each a post

9 Dowload image with other size Guest,Admin,Registered_

10 View user when click them Guest,Register Client

10.1 View user‘images when click them

10.2 View user’s personal information when click them

11 Chat between users Registered_Client

11.1 Chat with emoji Registered_Client

12 Receive notifications when someone comment or add reaction in your post

13 See personal imformation Registered_Client

13.1 Can change your avatar Registered_Client

13.2 Can see your posts what you posted

13.3 Update your information Registered_Client

14 Register an new account Guest

15 Login with an account Registered_Client

16.1 Can update status with account Admin

17.1 Can update,delete with post Admin

Bảng 1: Bảng requirement dành cho use case

Liệt kê các actor

- Registered _Client(Guest sau khi đăng nhập)

Bảng use case

3.3.3.1 Use case tìm kiếm ảnh “Search Image”

Hình 3.4 Use case tìm kiếm ảnh “Search Image”

3.3.3.1.1 Use case tìm kiếm theo một chủ đề “Search image by tag”

Name Search image by tag

Description Tìm ảnh theo một chủ đề

Actor Guest, Admin, Registered_Client

Basic Flow 1 Actor nhấn vào thanh tìm kiếm trên thanh header

2 Actor nhập một cái gì đó cần tìm kiếm ví dụ cat

4.Trang chủ hiển thị những ảnh có chủ đề là cat Alternative flow Hiển thị thông báo không có kết quả tìm kiếm

Bảng 2: Use case tìm kiếm theo một chủ để

3.3.3.1.2 Use case tìm kiếm theo nhiều chủ đề “Search image by multi tag”

Name Search image by multi tag

Description Tìm ảnh theo nhiều chủ đề

Actor Guest, Admin, Registered_Client

Basic Flow 1 Actor nhấn vào thanh tìm kiếm trên thanh header

2 Actor nhập một cái gì đó cần tìm kiếm ví dụ cat

4.Trang chủ hiển thị những ảnh có chủ đề là cat Alternative flow Hiển thị thông báo không có kết quả tìm kiếm

Bảng 3: Use case tìm kiếm theo nhiều chủ đề

3.3.3.2 Use case chọn topic hình yêu thích khi vừa tạo tài khoản

Hình 3.5 Use case chọn topic hình yêu thích khi vừa tạo tài khoản

Name Search image by tag

Description Chọn chủ đề ưa thích muốn xem

Basic Flow 1 Sau khi đăng nhập 1 popup sẽ hiện ra và người dùng có thể chọn chủ đề mà mình thích

2 Grid photo sẽ tự động lọc lại hình dựa theo các mục mà người dùng đã chọn

Alternative flow Hiển thị ảnh random

Bảng 4: Use case chọn topic hình yêu thích khi vừa tạo tài khoản

3.3.3.3 Use case xem hình và thông tin chi tiết của hình

Hình 3.6 Use case xem hình và thông tin chi tiết của hình

Name Xem hình và thông tin chi tiết của hình

Description Xem hình và thông tin chi tiết của hình

Actor Registered_Client, Guest, Admin

Basic Flow 1 Sau khi truy cập trang web thì người dùng đồng thời cũng sẽ xem được danh sách các hình ảnh

2 Nếu người dùng là Registered_client thì danh sách hình sẽ hiện theo các topic mà họ đã chọn

Bảng 5: Use case xem hình và thông tin chi tiết của hình

3.3.3.4 Use case xem bình luận và lượt thích

Hình 3.7 Use case xem bình lận và lượt thích

Name Xem lượt bình luận/reaction

Description Xem lượt bình luận/reaction

Actor Registered_Client, Guest, Admin

Basic Flow 1 Sau khi truy cập trang web thì người dùng đồng thời cũng sẽ xem được các bình luận/reaction của từng hình ảnh

Bảng 6: Use case xem bình lận và lượt thích

3.3.3.5 Use case chức năng bình luận/thả cảm xúc cho hình ảnh

Hình 3.8 Use case chức năng bình luận/thả cảm xúc cho hình ảnh

Name React/bình luận về 1 ảnh

Description React/bình luận về 1 ảnh

Basic Flow Đối với reaction:

1 Sau khi đăng nhập thì người dùng có thể đưa chuột vào biểu tượng trái tim ở mỗi ảnh để hiện các biểu tượng cảm xúc

2 Chọn biểu tượng cảm xúc mong muốn

3 Click lần nữa để xoá Đối với bình luận:

1.Sau khi đăng nhập người dùng có thể sử dụng được chức năng bình luận ở mỗi hình ảnh

2 Viết bình luận vào ô input rồi enter để đăng bình luận

3 Chọn biểu tượng ba chấm ở mỗi bình luận để có thể update hoặc xoá

Bảng 7 Use case chức năng bình luận/thả cảm xúc cho hình ảnh

3.3.3.6 Use case trả lời bình luận

Hình 3.9 Use case trả lời bình luận

Name Trả lời một bình luận

Description Trả lời một bình luận của mình hoặc người khác

Basic Flow 1 Sau khi đăng nhập thì người dùng có thể click vào biểu tượng reply ở một comment bất kì

Bảng 8: Use case trả lời bình luận

3.3.3.7 Use case đăng/xoá/sửa ảnh

Hình 3.10 Use case đăng/xóa/sửa ảnh

Name Đăng/xoá/sửa hình ảnh

Description Đăng/xoá/sửa hình ảnh

Basic Flow 1 Chọn nút đăng ảnh trên thanh công cụ

2 Chọn 1 hoặc nhiều ảnh muốn đăng

3 Ấn “Đăng” để hoàn tất

4 Sửa nội dung hoặc xoá ảnh có thể tìm trong menu của mỗi ảnh Alternative flow Không có

Bảng 9: Use case đăng/xóa/sửa ảnh

3.3.3.8 Use case tìm kiếm hình ảnh bằng tag

Hình 3.11 Use case tìm kiếm hình ảnh bằng chủ đề

Name Tìm kiếm bằng cách click vào tag

Description Tìm kiếm bằng cách click vào tag

Basic Flow Click vào tag bất kì để xem cách hình ảnh có tag tương tự

Bảng 10 : Use case tìm kiếm hình ảnh bằng chủ đề

3.3.3.9 Use case Tải hình với nhiều kích thước

Hình 3.12 Use case tải hình với nhiều kích thước

Name Tải hình với nhiều kích thước

Description Tải hình với nhiều kích thước

Basic Flow Chọn kích thước muốn tải về tại menu của mỗi tấm hình

Bảng 11: Use case tải hình với nhiều kích thước

3.3.3.10 Use case Xem thông tin cá nhân

Hình 3.13 Use case xem thông tin cá nhân

Name Xem thông tin cá nhân và các ảnh đã đăng của một tài khoản

Description Xem thông tin cá nhân và các ảnh đã đăng của một tài khoản

Basic Flow Click vào tên hoặc ảnh đại diện để vào trang cá nhân của một người bất kì

Bảng 12: Use case xem thông tin cá nhân

Name Chat với người khác

Description Chat với người khác

Basic Flow 1 Chọn icon message ở thanh công cụ

2 Chọn user muốn trò chuyện cùng

3.3.3.12 Use case nhận thông báo

Hình 3.15 Use case nhận thông báo

Bảng 14 Use case nhận thông báo

3.3.3.13 Use case Xem trang cá nhân

Hình 3.16 Use case xem trang cá nhân

Name Xem/thay đổi thông tin cá nhân

Description Xem/thay đổi thông tin cá nhân

Basic Flow 1 Click vào icon trang cá nhân trên thanh công cụ

2 Xem và thay đổi các thông tin/ảnh đại diện của bản thân Alternative flow Không có

Bảng 15 Use case xem trang cá nhân

3.3.3.14 Use case Đăng kí/Đăng nhập

Hình 3.17 Use case đăng kí/đăng nhập

Name Đăng kí/Đăng nhập

Description Đăng kí/Đăng nhập

Actor Registered_Client, Admin, Guest

Basic Flow 1 Truy cập trang web

2 Đăng nhập hoặc đăng kí

Bảng 16: Use case đăng kí/đăng nhập

3.3.3.15 Use case các chức năng của admin

Hình 3.18 Use case các chức năng của admin

Name Các chức năng của admin

Description Các chức năng của admin

Bảng 17: Use case các chức năng của admin

Thiết kế dữ liệu

Sơ đồ thiết kế dữ liệu

Hình 4.1 Sơ đồ ERD cơ sở dữ liệu

Mô tả sơ đồ thiết kế dữ liệu

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 email String Email của người dùng

3 password String Password của người dùng

4 firstName String Tên của người dùng

5 lastName String Họ của người dùng

6 avatar String Ảnh đại diện của người dùng

7 coverPhoto String Ảnh bìa của người dùng

8 bio String Mô tả bản thân của người dùng

9 dob String Ngày sinh của người dùng

10 gender String Giới tính của người dùng

11 relationship String Tình trạng mối quan hệ người dùng

12 phone String Số điện thoại người dùng

13 schools String Trình độ học vấn người dùng

14 Permission Array Quyền hạn người dùng

15 lastSeen Number Lần cuối online của người dùng

16 unReadFrom Array Danh sách tin nhắn người chưa đọc

17 interestList Array Danh sách chủ đề yêu thích

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 postID String ID bài post

3 pathID String Password của người dùng

4 height String Chiều cao của ảnh

5 width String Chiều rộng của ảnh

6 artist String Tên người chụp

9 focalLength String Tiêu cự ống kính

10 iso String Độ nhạy sáng

12 make String Tên máy ảnh

13 model String Model của mỗi loại máy

14 createDate Array Thời gian chụp

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 tagName String Tên nội dung ảnh

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 secretString String Chuỗi ID người gửi với ID người nhận

3 Text String Nội dung đoạn chat

4 RecevieID String ID người nhận gửi

5 SendID String ID người gửi

6 time Number Thời gian gửi

7 seen Boolean Người nhận đọc tin nhắn hay chưa

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 userID String Chuỗi ID người gửi với ID người nhận

3 PostID String Nội dung đoạn chat

4 Thumb Array Ảnh đại diện người bình luận,thả cảm xúc

5 whoInteractive Number Người tương tác với bài post đó

6 timeStamp Boolean Thời gian người dùng tương tác bài post

7 Seen Boolean Người nhận được thông báo đã xác nhận hay chưa

8 Text String Nội dung thông báo

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 Text String Nội dung bình luận

3 time String Thời điểm bình luận vào bài post

4 likes Array Thả cảm xúc

5 UserID String ID người dùng bình luận

6 ParentID String ID comment cha

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 idWho String ID người đăng bài

3 Tags Array Nội dung của bài đăng

4 Description String Mô tả bài đăng

5 Time Number Thời gian đăng bài post

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 ParentID String ID bình luận root

3 react Array Reaction của bình luận root

4 idWho String ID người thả cảm xúc

STT Tên Thuộc tính Kiểu dữ liệu Ý nghĩa

1 _id ObjectId Giá trị ID được tạo tự động

2 ReportID String ID người đã báo cáo bài đăng

3 PostID String ID bài post bị báo cáo

4 posterName String Tên chủ bài đăng

5 reporterName String Tên người báo cáo bài viết

6 reportCount Number Số lượng bị báo cáo của bài viết

7 Tags Array Chủ đề bài viết

8 createDate Double Thời gian tạo bài viết

Sơ đồ tuần tự(Sequence Diagram)

Kiểm thử ứng dụng

Ngày đăng: 07/06/2022, 22:41

HÌNH ẢNH LIÊN QUAN

Hình  3.3 Trang pinterest - Xây dựng website mạng xã hội về hình ảnh
nh 3.3 Trang pinterest (Trang 30)
Hình  4.3 Sequence tìm kiếm theo nhiều chủ đề - Xây dựng website mạng xã hội về hình ảnh
nh 4.3 Sequence tìm kiếm theo nhiều chủ đề (Trang 60)
Hình  4.4 Sequence chọn chủ đè ảnh khi vừa đăng nhập - Xây dựng website mạng xã hội về hình ảnh
nh 4.4 Sequence chọn chủ đè ảnh khi vừa đăng nhập (Trang 61)
Hình  4.5 Sequence xem danh sách ảnh theo chủ đề đã chọn - Xây dựng website mạng xã hội về hình ảnh
nh 4.5 Sequence xem danh sách ảnh theo chủ đề đã chọn (Trang 62)
Hình  4.6 Sequence xem chi tiết ảnh - Xây dựng website mạng xã hội về hình ảnh
nh 4.6 Sequence xem chi tiết ảnh (Trang 63)
Hình  4.7 Sequence hiển thị bình luận,reaction mỗi bài post - Xây dựng website mạng xã hội về hình ảnh
nh 4.7 Sequence hiển thị bình luận,reaction mỗi bài post (Trang 64)
Hình  4.9 Sequence xóa bình luận hoặc reaction - Xây dựng website mạng xã hội về hình ảnh
nh 4.9 Sequence xóa bình luận hoặc reaction (Trang 66)
Hình  4.10 Sequence thêm bình luận hoặc reaction - Xây dựng website mạng xã hội về hình ảnh
nh 4.10 Sequence thêm bình luận hoặc reaction (Trang 67)
Hình  4.11 Sequence cập nhật bình luận con - Xây dựng website mạng xã hội về hình ảnh
nh 4.11 Sequence cập nhật bình luận con (Trang 68)
Hình  4.12 Sequence xóa bình luận con - Xây dựng website mạng xã hội về hình ảnh
nh 4.12 Sequence xóa bình luận con (Trang 69)
Hình  4.13 Sequence thêm bình luận con - Xây dựng website mạng xã hội về hình ảnh
nh 4.13 Sequence thêm bình luận con (Trang 70)
Hình  4.14 Sequence tạo bài post mới - Xây dựng website mạng xã hội về hình ảnh
nh 4.14 Sequence tạo bài post mới (Trang 71)
Hình  4.15 Sequence xóa bài post - Xây dựng website mạng xã hội về hình ảnh
nh 4.15 Sequence xóa bài post (Trang 72)
Hình  4.17 Sequence tìm kiếm ảnh theo chủ đề khi click vào tag ở mỗi bài post - Xây dựng website mạng xã hội về hình ảnh
nh 4.17 Sequence tìm kiếm ảnh theo chủ đề khi click vào tag ở mỗi bài post (Trang 74)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w