Báo cáo đồ án cơ sở ngành mạng đề tài xây dựng website chia sẻ video Báo cáo đồ án cơ sở ngành mạng đề tài xây dựng website chia sẻ video Báo cáo đồ án cơ sở ngành mạng đề tài xây dựng website chia sẻ video Báo cáo đồ án cơ sở ngành mạng đề tài xây dựng website chia sẻ video
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG
ĐỀ TÀI : XÂY DỰNG WEBSITE CHIA SẺ VIDEO
Trang 2
LỜI NÓI ĐẦU
Trong suốt thời gian thực hiện và hoàn thành dự án này, em đã nhận được sự giúp
đỡ và hướng dẫn tận tình của các thầy, các cô và các bạn trong khoa Công nghệ thông tin Trường Đại học Bách Khoa – Đại học Đà Nẵng Em xin gửi lời cám ơn chân thành và sâu sắc đến các thầy cô trong Khoa đã giảng dạy và truyền đạt những kiến thức cần thiết, những kinh nghiệm quý báu cho em để thực hiện dự án này Trước tiên, em xin gửi lời cám ơn đến giáo viên hướng dẫn thầy Nguyễn Tấn Khôi
đã dẫn đường, giúp đỡ và thảo luận cho em kiến thức và nhiệt tình để thiết kế và xây dựng trang web này
Do kiến thức và kinh nghiệm bản thân em còn hạn chế nên việc thực hiện không thể tránh khỏi sơ sót Rất mong nhận được sự đóng góp ý kiến của thầy cô trong bộ môn Công nghệ thông tin trường Đại học Bách Khoa Đà Nẵng để báo cáo của em được hoàn thiện hơn
Cuối cùng, em xin chân thành cảm ơn thầy cô trong khoa Công nghệ thông tin trường Đại học Bách Khoa Đà Nẵng, đặc biệt là thầy Nguyễn Tấn Khôi đã hướng dẫn và giúp đỡ em hoàn thành dự án này
Em xin chân thành cảm ơn!
Trang 3Tóm tắt đề tài
Website chia sẻ video được xây dựng với mục đích tạo ra một trang thông tin điện
tử để phục vụ tất cả những người mong muốn được chia sẻ những khoảnh khắc tuyệt vời của bản thân Từ trưng bày giới thiệu tất cả các video được nhiều người đánh giá cao nhất, đến tìm video để xem và chia sẻ những cảm xúc của mình Đồng thời website cũng cho phép tương tác với bài đăng trên website Website phục vụ cho hai đối tượng chính: đối tượng đầu tiên là những người mong muốn xem video, trang web sẽ giúp người dùng tìm tất cả những video mà người dùng mong muốn và được trải nghiệm trong thế giới video vô vàn, đối tượng thứ hai là những người chia
sẻ ra video và mong muốn video được nhiều người biết đến, trang web sẽ giúp đăng video miễn phí và cho phép những người dùng có tài khoản bình luận, đánh giá, thể hiện cảm xúc của mình Thông qua quá trình thu thập kinh doanh, phân tích, thiết
kế, phát triển và thực hiện, em mong muốn sẽ làm sáng tỏ mọi vấn đề và cố gắng để
có một website hoàn thiện
Trang 4DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT
Số thứ tự Chữ viết tắt Diễn giải
1 API Application Programming Interface
2 HTML Hypertext Markup Language
3 HTTP Hypertext Transfer Protocol
4 XML Extensible Markup Language
5 JSON JavaScript Object Notation
6 REST Representational State Transfer
7 CSS Cascading Style Sheet
8 MVC Model, View, Controller
9 UX/UI User Experience/User Interface
10 AJAX Asynchronous JavaScript and XML
11 SKU Stock-Keeping Unit
Trang 5MỞ ĐẦU
1 Tổng quan về đề tài
Cùng với sự tăng trưởng kinh tế trên toàn cầu là sự phát triển của các ngành khoa học kỹ thuật, đặc biệt là các ngành công nghệ thông tin Việc ứng dụng công nghệ thông tin và các nghiêm cứu của công nghệ thông tin vào đời sống trên toàn thế giới ngày càng nhiều và càng phát triển
Xuất phát từ việc bảo vệ môi trường và nhu cầu về chia sẻ trải nghiệm của bản thân ngày càng lớn, các trang web điện tử giúp người dùng có những trải
nghiệm online thư giãn ở mọi nơi Đây là một nguồn thông tin vô tận, khó bị mất và
và là cơ hội để cảm xúc của bản thân mỗi người có thể lan tỏa tới mọi người dùng trên thế giới
Đáp ứng nhu cầu đó, trong dự án này em đã xây dựng một website về chia sẻ video online, hỗ trợ tải video trực tuyến
2 Mục đích và ý nghĩa của đề tài
2.1 Mục đích
Xây dựng website chia sẻ video phục vụ chủ yếu cho các đối tượng khách hàng sau: Người dùng chia sẻ video và Quản trị viên của website Do đó hệ thống được tạo ra với ba mục đích chính:
- Giúp cho người đọc truyện nhanh chóng tìm được video mong muốn, tiết kiệm thời gian tìm kiếm
- Giúp cho những tác giả có thể đăng video mọi lúc mọi nơi, phổ biến video đến mọi tay người dùng, đồng thời có thể theo dõi và quản lý những video của mình một cách dễ dàng và hiệu quả
- Giúp cho người quản trị viên của website có cái nhìn tổng quan về tất cả các sản phẩm và video trên website đang trưng bày, quản lý các thông tin của website, quản lý tất cả các thông tin của người dùng cũng như liên hệ với website một cách dễ dàng
Trang 62.2 Ý nghĩa
- Giúp cho các công đoạn của việc chia sẻ video và trải nhiệm bản thân trở nên nhanh chóng và hiệu quả nhất
- Số hóa tất cả các công việc giấy tờ từ đó có thể quản lý tập trung tất cả các công đoạn vào một quy trình chung của quản lý website, tiết kiệm thời gian
và kinh tế
3 Phương pháp thực hiện
- Phương pháp phân tích tổng hợp từ tài liệu từ nguồn tài liệu trên mạng
- Phương pháp phân tích thiết kế hệ thống theo hướng đối tượng
- Phương pháp thử nghiệm, đánh giá kết quả.
4 Bố cục của đề tài
Báo cáo đề tài bao gồm các nội dung sau:
Mở đầu
Chương 1: Nghiên cứu tổng quan
Chương 2: Phân tích và thiết kế hệ thống
Kết luận và hướng phát triển.
5 Phân công tổ chức công việc
- Công cụ quản lý mã nguồn: github
Trang 7CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Nghiên cứu lý thuyết
1.1.1 Restful Web Service
- Định nghĩa Web Service: là một dịch vụ mà nó kết hợp các máy tính cá nhân với các thiết bị khác, các cơ sở dữ liệu và các mạng máy tính để tạo thành một cơ cấu tính toán ảo mà người sử dụng có thể làm việc thông qua các trình duyệt mạng Bản thân các dịch vụ này sẽ chạy trên các máy chủ trên nền Internet Các máy chủ của một nhà cung cấp dịch vụ web này cũng cần nguồn cung cấp cho người sử dụng cả về độ an toàn, độ riêng tư và khả năng truy nhập
- Các web service thường trả về dữ liệu dưới dạng máy tính có thể đọc được là XML hoặc JSON rồi trả về trình duyệt ở phía client
- Các công nghệ thường được sử dụng để xây dựng cho web service:
+ SOAP (Simple Object Access Protocol)
+ WSDL (Web Service Description Language)
+ REST (Representational State Transfer)
Trang 8- Restful là các Web Service được viết dựa trên kiến trúc REST Rest đã được
sử dụng rộng rãi thay thế cho các Web Service dựa trên SOAP và WSDL Restful Web Service nhẹ, dễ dàng mở rộng và bảo trì REST là một bộ quy tắc để tạo ra một ứng dụng Web Service, mà nó 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 một cách rõ ràng
+ Phi trạng thái
+ Hiển thị cấu trúc thư mục như các URLs
+ Truyền tải Javascript Object Notation (JSON), XML hoặc cả hai
1.1.2 MySQL Database
- MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database Management System, viết tắt là RDBMS) hoạt động theo mô hình client-server RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu (database) theo hình thức quản lý các mối quan hệ giữa chúng
- Database là tập hợp dữ liệu theo cùng một cấu trúc Giống như việc chụp hình: nhấm nút chụp ảnh, hình ảnh là dữ liệu, thư viện lưu ảnh là sơ sở dữ liệu Cơ sở dữ liệu, hay database, là nơi chứa và sắp đặt dữ liệu Dữ liệu được đặt trong một bộ dữ liệu chung, dataset, được tổ chức sắp xếp giống như một bảng tính chung Mỗi “bảng” có liên hệ với nhau theo cách nào đó
Vì vậy từ Relational (liên hệ) trong RDBMS có ý nghĩa như vậy Nếu phần
Trang 9mềm không hỗ trợ mô hình dữ liệu quan hệ với nhau thì như vậy gọi là DBMS
- Open source dịch là mã nguồn mở, có nghĩa là ai cũng có thể dùng và chỉnh sửa nó Bất kỳ ai cũng có thể cài đặt phần mềmn ày Bạn cũng có thể học cách tùy chỉnh phần mềm theo nhu cầu của bạn Tuy nhiên, giấy phép GPL (GNU Public License) quyết định bạn có thể làm gì tùy vào điều kiện nhất định Phiên bản thương mại cũng được xuất bản nếu bạn cần thêm chủ quyền linh hoạt và hỗ trợ cao cấp
1.1.3 Mô hình MVC
- MVC là viết tắt của Model - View - Controller Là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm Nói cho dễ hiểu, nó là mô hình phân bố source code thành 3 phần, mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác
- M là Model: cấu trúc dữ liệu theo cách tin cậy và chuẩn bị dữ liệu theo lệnh của controller
- V là View: hiển thị dữ liệu cho người dùng theo cách dễ hiểu dựa trên hành độgn của người dùng
- C là Controller: nhận lệnh từ người dùng, gửi lệnh đến cho Model để cập nhật dữ liệu, truyền lệnh đến Vew để cập nhật giao diện hiển thị
Trang 101.1.4 Ruby on Rails
- Ruby on rails là một Framework mạnh mẽ và đầy thú vị được phát triển trên ngôn ngữ lập trình Ruby cho phép phát triển ứng dụng Web gồm hai phần cơ bản:
+ Phần ngôn ngữ Ruby: Ruby là ngôn ngữ lập trình mã nguồn mở, linh hoạt, với một sự nổi bật về sự đơn giản dễ dùng và hữu ích Nó có cú pháp “tao nhã” và tự nhiên dễ đọc và dễ dàng để viết
+ Phần Framework Rails bao gồm nhiều thư viện liên kết
- Ruby on rails được ra đời một cách hoàn hảo dành cho những ai luôn “mải miết đi tìm câu trả lời” tại sao những lập trình viên luôn tìm mọi cách để phát triển những phần mềm, những ứng dụng web … để người sử dụng được thuận tiện nhất, nhưng lại không thuận tiện cho người lập trình mỗi khi chương trình càng đơn giản thì bên trong nó càng phức tạp, khó chỉnh sửa khi cần thiết, làm cho công việc của người lập trình viên cảm thấy mệt mỏi hơn
Trang 111.1.5 Thuật toán mã hóa hàm băm MD5:
MD5 được phát minh bởi Ron Rivest ,người đã tham gia xây dựng RSA.MD5 viết tắt của chữ Message Digest,được phát triển lên từ MD4 và trước đó là MD2,do MD2 và MD4 không còn an toàn.Kích thước của MD5 là 128 bit được tính giá trị của thông điệp có kích thước tối đa 2^4 bit
Thuật toán MD5:
-Input: xâu đầu vào x có độ dài tối đa 2^64 -Output: chuỗi băm 128 bit -Sơ đồ thuật toán:
Trước tiên thông điệp được đệm vào dãy padding 100 00 Chiều dài của dãy padding được chọn sao cho thông điệp cuối cùng có thể chia làm N block 512 bit M1,M2, ,MN.Quá trình tính giá trị băm của thông điệp là quá trình lũy tiến Trước tiên block M1 kết hợp với giá trị khởi tạo H0 thông qua hàm F để tính giá trị hash H1 Sau đó block M2 đượckết hợp với H1 để cho ra giá trị hash là H2 Block M3 kết hợp với H2 cho ra giá trị H3 Cứ như vậy cho đến block MN thì có giá trị băm của toàn bộ thông điệp là HN
H0 là một dãy 128 bit được chia thành 4 từ 32 bit, ký hiệu 4 từ 32 bit trên là abcd Với a, b, c, d là các hằng số như sau (viết dưới dạng thập lục phân):
a = 01234567
b = 89abcdef
Trang 12d = 76543210
-Cấu trúc của hàm F như sau:
Tại mỗi bước lũy tiến, các giá trị abcd của giá trị hash Hi-1 được biến đổi qua 64 vòng từ 0 đến 63 Tại vòng thứ j sẽ có 2 tham số là Kj và Wj đều có kích thước 32 bit Các tham số Kj được tính từ công thức: Kj là phần nguyên của số 2^32
abs(sin(i)) với i biểu diễn theo rad
Giá trị block Mi 512 bit được biến đổi qua một hàm message schedule cho ra 64 giá trị W0, W1,…, W63 mỗi giá trị 32 bit Block Mi 512 bit được chia thành 16 block
32 bit ứng với các giá trị W0, W1, …, W15 (16×32=512) Tiếp theo, 16 giá trị này được lặp lại 3 lần tạo thành dãy 64 giá trị
Sau vòng cuối cùng, các giá trị abcde được cộng với các giá trị abcd của Hi-1 để cho ra các giá trị abcd của Hi Phép cộng ở đây là phép cộng modulo 232
Tiếp theo tìm hiểu cấu trúc của một vòng Việc biến đổi các giá trị abcd trong vòng thứ i được thể hiện trong hình bên dưới
Trang 13Note:Phép + trong sơ đồ trên là phép cộng modul 2^32
Ở đây c lấy giá trị của b, d lấy giá trị của c, a lấy giá trị của d
Giá trị b được tính qua hàm:
t = a + f(b,c,d) + Wi + Ki
b = b + ROTL(t,s)
Trong đó : Hàm f(x,y,z):
f (x,y,z) = (x ^ y) v (_x ^ z) nếu vòng từ 0 đến 15
f (x,y,z) = (z ^ x) v (_z ^ y) nếu vòng từ 16 đến 32
f (x,y,z) = x xor y xor z nếu vòng từ 32 đến 48
f (x,y,z) = y xor (x v _z) nếu vòng từ 49 đến 63
Hàm ROTL(t, s): t được dịch vòng trái s bit, với s là các hằng số cho vòng thứ i như sau:
Trang 141.2 KẾT CHƯƠNG
Chương này cung cấp cho người đọc cái nhìn tổng quan về các lý thuyết được áp dụng để xây dựng website Thông qua cơ sở lý thuyết của các công nghệ nêu trên do đó việc xây dựng website trở nên gần gũi và nhanh chóng hơn rất nhiều
Trang 15CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1 PHÂN TÍCH YÊU CẦU
Website được chia thành 2 phần chính: Quản trị viên của website , Người dùng chia sẻ video
Người dùng sẽ có các chức năng chính sau:
- Đối với người dùng dù có tài khoản hay không có tài khoản đều có thể xem danh sách tất cả các video trên trang web, thông tin về từng video, xem các đánh giá và bình luận về video, xem các video theo danh mục và sắp xếp Bên cạnh đó người dùng còn có thể tìm kiếm video mà họ yêu thích
- Đối với người dùng đã có tài khoản, họ sẽ được cấp quyền đánh giá, bình luận video, đồng thời họ có thể quản lý những video đã đăng
Người có tài khoản còn có quyền tạo ra và đăng những video của riêng bản thân Họ còn có quyền tự quản lý mọi thông tin tài khoản của bản thân mình, bao gồm tên tài khoản, tên đăng nhập, mật khẩu, email cùng với lịch sử hoạt động của mình
Quản trị viên website ngoài việc có đầy đủ các chức năng của người viết truyện còn có thêm các nhóm chức năng sau:
- Quản lý video: các thông tin liên quan đến truyện bao gồm tên video, tác giả, ảnh bìa và ngày đăng Quản lý website có đầy đủ quyền để thêm mới, chỉnh sửa hay xóa các thông tin của video Đồng thời quản lý còn cho phép duyệt video
- Quản lý người dùng: quản lý toàn bộ các thông tin liên quan đến người dùng bao gồm tên người dùng, tên đăng nhập, mật khẩu tài khoản, email người dùng, và ngày khởi tạo tài khoản Quản lý thông tin tài khoản cho phép quản trị viên xem và biết được số lượng người dùng của trang web, thống kê người dùng, đồng thời quản trị viên có quyền thêm, sửa, xóa một người dùng mới cùng với việc quản lý tất cả các hoạt động của người dùng
Trang 162.2 THIẾT KẾ HỆ THỐNG
2.2.1 Biểu đồ ca sử dụng
2.2.2 Thiết kế cơ sở dữ liệu
a Thực thể người dùng (user)
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Sẽ tự động tăng mỗi khi
thêm mới
int Khóa chính
full_name Tên đầy đủ của người dùng varchar
user_name Tên đăng nhập varchar
password Mật khẩu đăng nhập varchar
email Email đăng nhập varchar Độc nhất
admin Có phải là admin hay không boolean
date_create Ngày tạo tài khoản datetime
b Thực thể post (có video)
Trang 17Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Sẽ tự động tăng mỗi khi
thêm mới
int Khóa chính
name Tên video varchar
author Tác giả varchar
status Trạng thái varchar
image Hình ảnh video varchar
date_create Ngày đăng datetime
c Thực thể thể loại (category)
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Sẽ tự động tăng mỗi khi
thêm mới
int Khóa chính name Tên thể loại video varchar
d Thực thể bình luận (comment)
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Sẽ tự động tăng mỗi khi
thêm mới
int Khóa chính
user_id Bình luận của người dùng
nào
int Khóa ngoại story_id Bình luận cho truyện nào int Khóa ngoại
content Nội dung bình luận text
Trang 18rating Đánh giá video (1 - 5 sao) int
2.3 KẾT CHƯƠNG
Chương này trình bày cung cấp cho người đọc cái nhìn tổng quan về chuyên môn nghiệp vụ mà website cần phải đáp ứng, thiết kế, xây dựng website và trình bày một số sơ đồ cơ bản thể hiện tổng quát chức năng của website
Trang 19NGUỒN THAM KHẢO
https://viblo.asia/p/upload-file-co-kich-thuoc-lon-trong-rails-07LKX4ykKV4
https://gist.github.com/thanashyam/2309671
http://doc.edu.vn/tai-lieu/de-tai-ma-hoa-thong-tin-thuat-toan-bam-md5-thuat-toan-ma-hoa-rsa-4558/
https://viblo.asia/p/gioi-thieu-ham-bam-md5-LzD5d63wZjY