PHẦN MỞ ĐẦU 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI Công nghệ thông tin đã và đang ngày càng phát triển mạnh mẽ trong mọi lĩnh vực của đời sống, kinh tế, xã hội. Đặc biệt trong thời đại 4.0 hiện nay thì việc thông tin được chia sẻ một cách nhanh chóng là điều vô cùng cần thiết. Với việc nhu cầu sử dụng Internet để kết nối, trao đổi với nhau ngày càng nhiều hơn.
Trong xu thế ấy, việc sử dụng mạng xã hội là một nhu cầu thiết yếu của hầu hết mọi ngành, mọi doanh nghiệp, mọi lĩnh vực trong cuộc sống. Nói không xa thì trong việc kết nối con người lại với nhau ngày càng tăng dần theo thời đại công nghiệp hóa hiện đại hóa hiện nay. Cùng với đó, người lao động, học sinh, sinh viên đều được “nghỉ lễ dài hạn” chuyển sang học và làm việc online. Đây là lý do khiến mạng xã hội tăng mạnh từ khi dịch Covid-19 diễn ra.
Trong bối cảnh dịch bệnh, người dân phải ở trong nhà hầu hết thời gian thì việc kết nối với nhau vô cùng cần thiết để đảm bảo cuộc sống và công việc được vận hành bình thường. Bởi vậy, mạng xã hội bùng nổ ở thời điểm hiện tại, nhất là khi Nhà nước có chủ trương cách ly toàn xã hội để hạn chế lây lan dịch bệnh. Xuất phát từ những nhu cầu thực tế và tạo sự linh hoạt trong việc kết nối mọi người với nhau thông qua Internet. Nhóm em xin thực hiện đề tài Xây dựng website mạng xã hội sử dụng Django và ReactJS.
MỤC TIÊU CỦA ĐỀ TÀI Mục đích chính của việc xây dựng website mạng xã hội đó là tạo nên sự tiện lợi, tiết kiệm thời gian, kinh phí nhưng vẫn đem lại hiệu quả cao, ngoài ra nhóm hướng tới các mục tiêu sau khi thực hiện để tài: - Áp dụng được các kiến thức đã học được vào quá trình thực hiện đồ án. - Xây dựng một website “Dễ nhìn, dễ sử dụng”. - Giúp người dùng dễ dàng chia sẻ và kết nối với gia đình, bạn bè. - Cập nhật tin tức mới hằng ngày, chia sẻ hình ảnh, sở thích.
- Việc quản lý cửa hàng cũng được thiết kế dễ vận hành. KHÓA LUẬN TỐT NGHIỆP Trang 14 - Bảo mật thông tin của khách hàng. ĐỐI TƯỢNG NGHIÊN CỨU Đối với khách hàng: Website mà nhóm em xây dựng chưa thật sự hoàn chỉnh nhưng có thể giúp ích cho người sử dụng có thể dễ dàng kết nối với nhau, có không gian để chia sẻ các khía cạnh trong cuộc sống hằng ngày với mọi người một cách nhanh chóng. Đối với chúng em: Nâng cao trình độ thiết kế website và phân tích một website mạng xã hội.
Ngoài ra có thể giúp em hiểu biết sâu rộng về những ngôn ngữ và phần mềm hỗ trợ em trong quá trình làm đồ án. CÔNG NGHỆ SỬ DỤNG Để thực hiện đề tài, nhóm chúng em sử dụng công nghệ: - Django, Docker để xây dựng nên hệ thống các APIs hỗ trợ lấy dữ liệu một cách chính xác và nhanh chóng nhất. - Cơ sở dữ liệu là PostgreSQL để lưu trữ dữ liệu người dùng của hệ thống. - ReactJS và các thư viện hỗ trợ thiết kế giao diện để thiết kế một giao diện đẹp mắt và thân thiện với người dùng.
PHẠM VI NGHIÊN CỨU Nhóm phát triển trang web mạng xã hội với các chức năng cơ bản của 1 trang web mạng xã hội như: Xam bài viết, chỉnh sửa bài viết, đăng nhập, đăng ký, kết bạn, chat, call video, cùng với đó là các chức năng quản lý website như: Thêm, xóa, sửa bài viết, người dùng. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN Sau khi hoàn thiện đề tài, nhóm chúng em đã rèn luyện, tiếp thu được nhiều kỹ năng và kiến thức bổ ích, đặc biệt là về những công nghệ mới đang được sử dụng hiện nay. Qua đó nhóm cũng có kinh nghiệm trong những dự án tiếp theo. Khi bài viết của nhóm được áp dụng vào thực tế sẽ đáp ứng được việc kết nối mọi người trên thông qua mạng xã hội, đặc biệt là giới trẻ trong thời đại công nghệ hiện nay.
KHÓA LUẬN TỐT NGHIỆP Trang 15 1. PHÂN CÔNG Bảng 1.1: Phân công công việc THÀNH VIÊN CÔNG VIỆC - Thiết kế cơ sở dữ liệu - Xử lý Back – End - Vẽ Sơ đồ lớp Lê Nguyễn Hùng Anh - Tổng hợp lý thuyết - Thiết kế Use case - Deploy - Thiết kế giao diện - Xây dựng Front – End Lưu Ngạn Lâm - Vẽ Sơ đồ tuần tự - Thiết kế Use case - Viết, chỉnh sửa báo cáo - Thiết kế giao diện - Xây dựng Front – End Phạm Ngọc Đức - Viết, chỉnh sửa báo cáo - Tổng hợp lý thuyết - Kiểm thử phần mềm KHÓA LUẬN TỐT NGHIỆP Trang 16 CHƯƠNG 2. Định nghĩa Django là 1 web framework khá nổi tiếng được viết hoàn toàn bằng ngôn ngữ Python. Là 1 framework với đầu đủ các thư viện, module hỗ trợ các web-developer.
Django sử dụng mô hình MVT và được phát triển bởi Django Software Foundation (DSF một tổ chức phi lợi nhuận độc lập). Mục tiêu chính của Django là đơn giản hóa việc tạo các website phức tạp có sử dụng cơ sở dữ liệu. Django tập trung vào tính năng “có thể tái sử dụng” và “có thể tự chạy” của các component, tính năng phát triển nhanh, không làm lại những gì đã làm. Ứng dụng - Xây dựng websocket server (Chat server) - Hệ thống Notification (Giống như facebook hay Twitter) - Ứng dụng upload file trên client - Các ứng dụng dữ liệu thời gian thực khác.
Ưu, nhược điểm - Ưu điểm: • Đơn giản, tiết kiệm thời gian. • Độ bảo mật cao. KHÓA LUẬN TỐT NGHIỆP Trang 17 • Có khả năng mở rộng. • Cộng đồng người dùng lớn mạnh.
- Nhược điểm: • Có thể tồn tại một vài vấn đề khi phát triển các dự án nhỏ. • Không được thông báo khi xuất hiện lỗi. Người dùng có thể mất nhiều thời gian để phát hiện vấn đề. Định nghĩa ReactJS là một thư viện JavaScript mã nguồn mở được thiết kế bởi Facebook để tạo ra những ứng dụng web hấp dẫn, nhanh và hiệu quả với mã hóa tối thiểu.
Mục đích cốt lõi của ReactJS không chỉ khiến cho trang web phải thật mượt mà còn phải nhanh, khả năng mở rộng cao và đơn giản. Đặc trưng của Reactjs - JSX Trong React, thay vì thường xuyên sử dụng JavaScript để thiết kế bố cục trang web thì sẽ dùng JSX. JSX được đánh giá là sử dụng đơn giản hơn JavaScript và cho phép trích dẫn HTML cũng như việc sử dụng các cú pháp thẻ HTML để render các KHÓA LUẬN TỐT NGHIỆP Trang 18 subcomponent. JSX tối ưu hóa code khi biên soạn, vì vậy nó chạy nhanh hơn so với code JavaScript tương đương.
- Single-way data flow (Luồng dữ liệu một chiều) ReactJS không có những module chuyên dụng để xử lý data, vì vậy ReactJS chia nhỏ view thành các component nhỏ có mối quan hệ chặt chẽ với nhau. Việc ReactJS sử dụng one-way data flow có thể gây ra một chút khó khăn cho những người muốn tìm hiểu và ứng dụng vào trong các dự án. Tuy nhiên, cơ chế này sẽ phát huy được ưu điểm của mình khi cấu trúc cũng như chức năng của view trở nên phức tạp thì ReactJS sẽ phát huy được vai trò của mình. [2] - React query Đơn giản thì react-query là thư viện để fetching, caching và updating dữ liệu bất đồng bộ của React.
Trước đây, để fetch dữ liệu từ server thì có nhiều cách. Một số cách phổ biến là sử dụng useEffect và useState hay sử dụng thư viện quản lý state (Redux). Cách này hoạt động ổn, tuy nhiên lại khá là rườm rà. Phải viết 1 đống code chỉ để lấy dữ liệu từ server và hiện ra cho người dùng.
React-query cung cấp nhiều hooks với API cực kì đơn giản để fetch cũng như update dữ liệu từ server. Hỗ trợ sẵn caching, refetching và nhiều thứ khác. Định nghĩa PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở tiên tiến mà mục đích chính là tuân thủ theo chuẩn và khả năng mở rộng. PostgreSQL hay còn gọi là Postgre áp dụng chuẩn SQL ANSI/IOS cùng với các phiên bản.
KHÓA LUẬN TỐT NGHIỆP Trang 19 So với các hệ quản trị cơ sử dữ liệu quan hệ khác, PostgreSQL khá khác. Nó hỗ trợ hướng đối tượng mạnh mẽ và chức năng cơ sở dữ liệu quan hệ. Ví dụ như hỗ trợ hoàn toàn cho các giao dịch đáng tin cậy như là Atomicity, Consistency, Isolation, Durability (ACID). Tính năng Toàn vẹn dữ liệu: Khi độ tin cậy và tính toàn vẹn dữ liệu là tuyệt đối cần thiết thì PostgreSQL là lựa chọn tốt hơn hết.
Thủ tục phức tạp và khả năng tùy chỉnh cao: Nếu bạn cần cơ sở dữ liệu của bạn thực hiện các thủ tục có khả năng tùy chỉnh thì PostgreSQL hỗ trợ rất tốt cho việc đó. Sự đồng bộ: Trong tương lai, nếu có phải chuyển từ hệ quản trị cơ sở dữ liệu quan hệ này sang một hệ quản trị cơ sở dữ liệu khác nhứ Oracle thì PostgreSQl cho việc chuyển đổi trong tương lai. Thiết kế phức tạp: So với sự thực hiện của các hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở miễn phí khác mà với thiết cơ sở dữ liệu phức tạp thì PostgreSQL cung cấp cho chúng ta những giải pháp tối ưu. JSON WEB TOKEN Hình 2.4: Json Web Token KHÓA LUẬN TỐT NGHIỆP Trang 20 2.
Định nghĩa JSON Web Token (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và khép kín để truyền một cách an toàn thông tin giữa các bên dưới dạng đối tượng JSON. Trong đó chuỗi Token phải có 3 phần là header, phần payload và phần signature được ngăn nhau bằng dấu “. Cấu trúc JSON Web Token bao gồm 3 phần: - Header: Phần header sẽ chứa kiểu dữ liệu , và thuật toán sử dụng để mã hóa ra chuỗi JWT. - Payload: Phần payload sẽ chứa các thông tin mình muốn đặt trong chuỗi Token như username, userId.
- Signature: Phần Signature sẽ được tạo ra bằng cách mã hóa phần header , payload kèm theo một chuỗi secret (khóa bí mật). Định nghĩa Docker là một nền tảng cho developers và sysadmin để develop, deploy và run application với container. Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy và phát triển ứng dụng và môi trường này được gọi là container. Khi cần deploy KHÓA LUẬN TỐT NGHIỆP Trang 21 lên bất kỳ server nào chỉ cần run container của Docker thì application của bạn sẽ được khởi chạy ngay lập tức.
Lợi ích - Không như máy ảo Docker start và stop chỉ trong vài giây. - Bạn có thể khởi chạy container trên mỗi hệ thống mà bạn muốn. - Container có thể build và loại bỏ nhanh hơn máy ảo.