Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
1,72 MB
Nội dung
1 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH BACKEND VỚI NODEJS – EXPRESSJS Công ty thực tập : TNHH Công nghệ Sum Việt Lớp : SE501.L11.PMCL Thực tập sinh : Chung Nguyễn Trường Duy Thực tập tốt nghiệp Chung Nguyễn Trường Duy TP Hồ Chí Minh, tháng năm 2021 Thực tập tốt nghiệp Chung Nguyễn Trường Duy LỜI MỞ ĐẦU Ngày nay, ngành công nghiệp phát triển ứng dụng web phận thiếu ngành công nghiệp phần mềm Với tốc độ phát triển vô mạnh mẽ, ngành phát triển ứng dụng web nhân tố kích thích phát triển công nghệ thông tin giới, phần cứng phần mềm Cùng với xu phát triển giới, Việt Nam ngoại lệ Ngành công nghiệp phát triển web non trẻ Việt Nam phát triển mạnh mẽ, để hịa nhập với cơng ty hàng đầu xây dựng tảng web giới Bên cạnh phát triển web ngành nghề tiếp cận người dùng cách nhanh chóng ta thấy mạng xã hội hay website bán hàng trực tuyến thịnh hành giới lẫn Việt Nam Sau ba năm học tập trường, mong muốn có thêm kinh nghiệm thực tế, muốn tham gia làm game mơi trường chun nghiệp, em có dự định thực tập hè Vì vậy, em định chọn Gameloft - môi trường lý tưởng, đại, chuyên nghiệp - nơi giúp em thực dự định Thực tập tốt nghiệp Chung Nguyễn Trường Duy LỜI CẢM ƠN Trân trọng gửi lời cảm ơn Công ty TNHH Công nghệ Sum Việt tạo điều kiện cho em có hội thực tập công ty Chỉ thời gian ngắn, nhờ dẫn nhiệt tình nhóm trainer, nhóm thực tập chúng em tiếp thu kiến thức quan trọng để làm web server Chân thành cảm ơn anh chị nhóm trainer bỏ nhiều thời gian,cơng sức để hướng dẫn chúng em hồn thành đợt thực tập Đặc biệt cảm ơn anh Trần Quốc Khánh, training nodejs, hướng dẫn, giúp đỡ cho chúng em tận tình khó khăn cơng việc, đến khó khăn việc làm quen với mơi trường Cũng xin cảm ơn thầy cô khoa Công nghệ phần mềm nhiệt tình hỗ trợ, tạo điều kiện em làm báo cáo Chung Nguyễn Trường Duy TpHCM, ngày tháng năm 2021 Thực tập tốt nghiệp Chung Nguyễn Trường Duy NHẬN XÉT CỦA KHOA Thực tập tốt nghiệp Chung Nguyễn Trường Duy MỤC LỤC Chương 2: Nội dung thực tập .8 TÀI LIỆU THAM KHẢO 23 Thực tập tốt nghiệp Chung Nguyễn Trường Duy Chương 1: Giới thiêu công ty thực tập Giới thiệu công ty Sum Việt Tiền thân công ty phát triển truyền thông quảng cáo Codosa với lĩnh vực kinh doanh: lập trình ứng dụng cơng nghệ, truyền thông & quảng cáo, sản xuất nông nghiệp sạch, phân phối phân bón sinh học Với tâm huyết muốn phát triển & ứng dụng công nghệ 4.0 vào phục vụ đời sống, nâng cao chất lượng dịch vụ, lợi ích đến người tiêu dùng, đồng thời giải vấn đề kết nối thương mại cho doanh nghiệp Ban lãnh đạo công ty chuyển đổi & phát triển công ty Codosa Holding trở thành công ty đầu tư & phát triển công nghệ thông minh 4.0: Big Data, AI - Trí thơng minh nhân tạo, Blockchain, nhận diện khuôn mặt, Sản phẩm công ty Sum Việt cung cấp sản phẩm công nghệ từ website (Thương mại điện tử, Fintech, … ), ứng dụng di động (Ví điện tử, … ) đến game, sàn trade dựa tảng Binary Option, MT4 & MT6 Platform, trade Forex, Crypto, … Thực tập tốt nghiệp Chung Nguyễn Trường Duy Chương 2: Nội dung thực tập Đợt thực tập với chủ đề “Lập trình backend server với Nodejs” nhằm mục đích giúp sinh viên thực tập đào tạo tồn diện lập trình server website, đồng thời rèn luyện kỹ mềm làm việc nhóm, thuyết trình, giao tiếp Tại cơng ty, sinh viên có hội học tập, khám phá làm việc mơi trường chun nghiệp Tìm hiểu cơng ty kỹ công ty Thời gian : ngày Nội dung : Giới thiệu công ty, cách tổ chức công ty Được nghe người phụ trách giới thiệu công ty, trình thành lập phát triên (như nhắc đến trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức cơng ty Ngồi ra, thực tập sinh giới thiệu cách thức làm việc công ty thời gian làm, quy định cần phải tuân thủ, cách sử dụng email công việc… Nghiên cứu kỹ thuật 2.1 Giới thiệu gitlab Hình 2.1: Logo gitlab.com Gitlab hệ thống self-hosted mã nguồn mở dựa hệ thống máy chủ Git dùng để quản lý mã nguồn bạn Gitlab cung cấp giải pháp server cách hoàn hảo nhận đánh giá cao từ cộng đồng Những đặc điểm cần biết Gitlab gồm: - Phiên Gitlab: Hiện gitlab hỗ trợ phiên là: Gitlab community edition (CE) phiên cộng động, mã nguồn mở, cung cấp qua Git từ kho lưu trữ chứa Gitlab Bản Gitlab nhà phát triển release nhánh stable nhánh master Gitlab enterprise edition (EE) gitlab Thực tập tốt nghiệp Chung Nguyễn Trường Duy phiên doanh nghiệp, có sẵn không lâu sau phát hành CE, cung cấp từ kho lưu trữ Khi doanh nghiệp đăng ký Gitlab nhận support Gitlab gặp khó khăn q trình cài đặt Gitlab continuous integration (CI) giải pháp tích hợp thực nhóm phát triển - Gitlab Protected branches: Cho phép đọc ghi vào repository branches Protected branches cấp quyền cho người phép commit pushing code Một protected branch gồm điều Một ngăn chặn việc push từ tất người trừ user master Hai ngăn chặn việc push code lên branch từ người khơng có quyền truy cập Ba ngăn chặn thực xóa branch Master branch mặc định protected branch User - cần cấp it quyền từ master branch để bảo mật branch Tầng vật lý Gitlab: Kho lưu trữ: nơi xử lý dự án Gitlab, dự án sản phẩm lưu kho Nginx có cách thực hoạt động giống front-desk: người dùng đến Nginx yêu cầu hành động thực worker văn phòng Gitlab-shell: loại thứ ba worker, thực nhiệm vụ tạo đơn đặt hàng từ máy fax (SSH) thay front-desk (HTTP) Gitlab-shell giao tiếp với Sidekiq qua redis hỏi câu hỏi nhanh Unicorn worker trực tiếp qua front-desk Gitlab enterprise edition: tập hợp quy trình hoạt động kinh doanh - điều hành office System layout: Khi nói đến git hình ảnh hiểu thư mục home người dùng git /home/git Repositories bare đường dẫn /home/git/repositories Gitlab ứng dụng viết ngơn ngữ ruby on rails Do đó, để biết rõ hoạt động bên bạn tìm hiểu hoạt - động ruby on rails Components: Thực tập tốt nghiệp Chung Nguyễn Trường Duy 10 Hình 2.2: Sơ đồ kiến trúc components gitlab Những lý chọn gitlab: - Mang lại tiện lợi cho lập trình viên cần lưu trữ, tải lên, tải xuống 2.2 code - Kiểm soát thay đổi code nhanh chóng, xác - Hỗ trợ việc quản lý, phân phối công việc dự án lập trình hiệu Giới thiệu Visual Studio Code Hình 2.3: Chương trình Visual Studio Code Visual Studio Code sản phẩm Microsoft, mắt vào tháng năm 2015 hội nghị Build Đặc điểm bật đơn giản, gọn nhẹ, dễ dàng cài đặt Visual Studio Code cài đặt Windows, Linux Mac OS hỗ trợ nhiều ngôn ngữ khác Thực tập tốt nghiệp Chung Nguyễn Trường Duy 11 Visual Studio Code trình biên tập mã Nó hỗ trợ nhiều ngơn ngữ chức tùy vào ngôn ngữ sử dụng theo bảng sau Nhiều chức Visual Studio Code không hiển thị menu tùy chọn hay giao diện người dùng Thay vào đó, chúng gọi thơng qua khung nhập lệnh qua tập tin json (ví dụ tập tin tùy chỉnh người dùng) Khung nhập lệnh giao diện theo dòng lệnh Tuy nhiên, biến người dùng nhấp nơi khác, nhấn tổ hợp phím để tương tác với bên ngồi Tương tự với dòng lệnh tốn nhiều thời gian để xử lý Khi thực điều q trình xử lý dịng lệnh bị hủy 2.3 Giới thiệu redmind Hình 2.4: Logo redmind.org Redmind công cụ tạo nhằm mục đích theo dõi vấn đề xẩy dự án quản lý dự án Redmind hoạt động web miễn phí mã nguồn mở để người dùng dễ dàng sử dụng Đây phần mềm hỗ trợ cho người sử dụng quản lý nhiều dự án lúc tiểu dự án có liên quan đến liên quan đến dự án Redmind có tính cho dự án khác nhay diễn đàn khác Redmind giúp theo dõi thời gian, kiểm soát truy cập với vai trị linh hoạt dự án Quản lý dự án Redmine giúp bạn dễ dàng việc quản lý vấn đề dự án web viết Ruby on Rails Với việc sử dụng miễn phí phần mềm giúp bạn quản lý dự án hiệu khoa học 2.4 Tìm hiểu RESTful API API (Application Programming Interface) tập quy tắc chế mà theo đó, ứng dụng hay thành phần tương tác với ứng dụng hay thành phần khác API trả liệu mà bạn cần cho ứng dụng kiểu liệu phổ biến JSON hay XML REST (REpresentational State Transfer) dạng chuyển đổi cấu trúc liệu, kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp máy Vì vậy, thay sử dụng URL cho việc xử lý số thông tin người dùng, REST gửi yêu cầu HTTP GET, POST, DELETE, vv đến URL để xử lý liệu Thực tập tốt nghiệp Chung Nguyễn Trường Duy 12 RESTful API tiêu chuẩn dùng việc thiết kế API cho ứng dụng web để quản lý resource RESTful kiểu thiết kế API sử dụng phổ biến ngày ứng dụng (web, mobile…) khác giao tiếp với REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động nêu sử dụng phương thức HTTP riêng • GET (SELECT): Trả Resource danh sách Resource • POST (CREATE): Tạo Resource • PUT (UPDATE): Cập nhật thơng tin cho Resource • DELETE (DELETE): Xố Resource Những phương thức hay hoạt động thường gọi CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa 2.5 Tìm hiểu cở sở liệu mongoDb Hình 2.5: Logo MongoDb MongoDb sở liệu mã nguồn mở thiết kế theo kiểu hướng đối tượng bảng cấu trúc cách linh hoạt cho phép liệu lưu bảng không cần phải tuân theo dạng cấu trúc định Chính cấu trúc linh hoạt nên MongoDB dùng để lưu trữ liệu có cấu trúc phức tạp đa dạng khơng cố định (hay cịn gọi Big Data) Một số đặc điểm MongoDb: - Kho lưu định hướng Document: Dữ liệu lưu tài liệu kiểu JSON - Lập mục thuộc tính - Các truy vấn đa dạng - Cập nhật nhanh Thực tập tốt nghiệp Chung Nguyễn Trường Duy 13 2.6 Tìm hiểu Nodejs Hình 2.6 Logo Nodejs NodeJs tảng dựa vào Chrome Javascript runtime để xây dựng ứng dụng nhanh, có độ lớn NodeJS sử dụng phần phát sinh kiện (event-driven), mơ hình non-blocking I/O để tạo ứng dụng nhẹ hiệu cho ứng dụng liệu thời gian thực chạy thiết bị phân tán NodeJs mã nguồn mở, đa tảng cho phát triển ứng dụng phía Server cácCác dự án theo quy trình Waterfall thường cần define cụ thể yêu cầu dự án, yêu cầu dự án Agile thay đổi phát triển Trong dự án Waterfall, bạn thay đổi thứ bạn làm công đoạn trước, nhiên Agile phù hợp đáp ứng thay đổi 2.7 Lập trình Typescript + số thư viện hỗ trợ Thực tập tốt nghiệp Chung Nguyễn Trường Duy 14 Hình 2.7: Logo Typescript Typescript dự án mã nguồn mở Microsoft phát triển, xem phiên nâng cao Javascript TypeScript ngôn ngữ giúp cung cấp quy mô lớn so với JavaScript TypeScript thêm namespace, class module tùy chọn vào JavaScript TypeScript hỗ trợ công cụ cho ứng dụng JavaScript quy mô lớn cho trình duyệt nào, cho máy chủ nào, hệ điều hành Ưu điểm Typescript: - Dễ dàng phát triển dự án lớn, hỗ trợ Javascript Framework lớn - Hỗ trợ OOP mạnh: Hầu hết cú pháp hướng đối tượng hỗ trợ Typescript kế thừa, đóng gói, constructor, abstract, interface, implement, override v.v - Cách tổ chức code rõ ràng hỗ trợ kỹ thuật hỗ trợ lập trình hướng đối tượng: Hỗ trợ chế giúp kiến trúc hệ thống code hướng Thực tập tốt nghiệp Chung Nguyễn Trường Duy 15 module, hỗ trợ namespace, giúp xây dựng hệ thống lớn nơi mà nhiều dev làm việc cách dễ dàng - Hỗ trợ tính Javascript - Một lợi Typescript mã nguồn mở miễn phí có cộng đồng hỗ trợ lớn Typescript sử dụng Framework Front-end phổ biến Angular 2, Ionic Nền tảng cho back-end Node-js ưu điểm Thực project Sau gần tháng training thực hành, thực tập sinh nắm kiến thực mongoDb, nodejs, typescript Trong tháng thứ hai, trainer hướng dẫn thực tập sinh áp dụng kiến thức học để thực project product công ty Chi tiết dự án nói phần sau Lịch làm việc Tuần Công việc Người hướng dẫn Tìm hiểu cơng ty, cách tổ chức cơng Anh Nguyễn Vĩnh Khiêm ty Làm quen với công cụ làm việc công ty Học cách trao đổi, làm việc qua slack Học tập ôn lại kiến thức cũ, nắm Anh Trần Quốc Khánh học Thực tập tốt nghiệp Chung Nguyễn Trường Duy 16 Tìm hiểu, ơn tập Typescript, NodeJS, MongoDB Tìm hiểu Typescript Tham gia vào dự án PawnVn 3-7 Tìm hiểu cấu trúc project Viết bắt đầu viết api Viết document Swageer trở Viết Unit test cho hệ thống Tham gia hoạt động nghiên cứu, thi công ty Thực tập tốt nghiệp Chung Nguyễn Trường Duy 17 Chương 3: Chi tiết project Theo quy chế thực tập sinh, trích dẫn: Điều 5: Bảo mật thơng tin Phần a.Thông tin khách hàng: … Bảo mật thông tin khách hàng ( họ tên, địa chỉ, điện thoại, sản phẩm, doanh thu, liệu, …) Phần b.Thông tin cơng ty: … Đảm bảo an tồn thơng tin sản phẩm, dự án giai đoạn kế hoạch, phát triển sản phẩm chưa phép công bố Nên phần mô tả giới hạn trình thực tập 3.1 Giới thiệu PawnVn a Giới thiệu PawnVn ứng dụng thương mại điện tử theo hình thức P2P kết hợp với mall từ đối tác sở hữu công ty Ứng dụng cho phép người dùng giao dịch trực tiếp thông qua ứng dụng kiểm duyệt sản phẩm từ cửa hàng chuyên gia kiểm định nhằm đem lại sản phẩm an toàn với người mua người bán b Chi tiết ứng dụng Ứng dụng xây dựng ReactJs, server sử dụng NodeJS với mục đích tiết kiệm chi phí phát triển ứng dụng Các công nghệ sử dụng dự án: - Mongoose: Mongoose framework JavaScript thường sử dụng ứng dụng Node.js với database MongoDB Thực tập tốt nghiệp Chung Nguyễn Trường Duy 18 - Bcrypt: BCrypt thuật tốn mã hóa mật thiết kế Niels Provos and David Mazières BCrypt đánh giá bảo mật an toàn so với MD5 SHA lần thực băm lại cho giá trị khác nhau, việc khiến cho việc dị tìm mật trở nên khó - Jsonwebtoken: JSON Web Token (JWT) tiêu chuẩn mở (RFC 7519) định nghĩa cách thức truyền tin an toàn thành viên đối tượng JSON Thông tin xác thực đánh dấu tin cậy nhờ vào “chữ ký” Phần chữ ký JWT mã hóa lại HMAC RSA - Swagger-ui-express: Swagger UI tool cho phép - từ developers end users - hình dung tương tác với tài nguyên API dự án Tool tự động generates API documents từ file config Swagger, với nhìn trực quan việc triển khai trở nên dễ dàng cho phía client - Axios: Axios HTTP Client viết dựa Promise, dùng cho việc hỗ trợ xây dựng ứng dụng API, sử dụng React, Vue, Angular… - Cors: CORS chế cho phép nhiều tài nguyên khác (fonts, Javascript, v.v…) trang web truy vấn từ domain khác với domain trang CORS viết tắt từ Cross-origin resource sharing Thực tập tốt nghiệp Chung Nguyễn Trường Duy 19 - Helmet: Helmet package viêt để giúp bạn bảo vệ ứng dụng khỏi lỗ hổng biết cách thiết lập Http headers cách phù hợp Thực tế Helmet tập hợp Middleware nhỏ làm nhiệm vụ thiết lập Http headers liên quan đến bảo mật - PM2: pm2 trình quản lý process (tiến trình) dành cho ứng dụng Nodejs Nó viết Nodejs Shell PM2 tích hợp cân tải (load balancer) Bạn giữ cho process server sống reload/restart với zero downtime - Nginx: phần mềm web server mã nguồn mở nỗi tiếng Ban đầu dùng để phục vụ web HTTP Tuy nhiên, ngày dùng làm reverse proxy, HTTP load balancer email proxy IMAP, POP3, SMTP c Một số giao diện: Một sơ hình giao diện hệ thống hình giao diện swagger Thực tập tốt nghiệp Chung Nguyễn Trường Duy 20 Hình 3.1: Màn hình swagger thể thông tin api ứng dụng Hình 3.2: Màn hình terminal deploy ứng dụng thơng qua pm2 Hình 3.3: Màn hình log thơng tin ứng dụng chạy Thực tập tốt nghiệp Chung Nguyễn Trường Duy 21 Hình 3.4: Màn hình đăng nhập Hình 3.5: Màn hình đăng kí Hình 3.6: Màn hình xác thực OTP Thực tập tốt nghiệp Chung Nguyễn Trường Duy 22 Hình 3.7: Màn hình phân quyền 3.2 Thực thành viên team fresher PawnVN: • Trương Viết Huy Phong • Chung Nguyễn Trường Duy • Võ Phi Nhật Duy • Trần Quốc An Và giúp đỡ tận tình team trainer Sum Việt Thực tập tốt nghiệp Chung Nguyễn Trường Duy 23 TÀI LIỆU THAM KHẢO Mongodb https://mongodb.com Packages https://npmjs.com Typescript https://www.typescriptlang.org/ https://topdev.vn/blog/hoc-typescript-trong-30-phut/ https://viblo.asia/p/tim-hieu-typescript-va-kien-thuc-co-ban-PmeRQpnyGoB Nodejs https://nodejs.org/en/ Redmind https://www.redmine.org/projects Visual studio code https://code.visualstudio.com/ Tài liệu nội dự án PawnVn công ty Sum Việt Thực tập tốt nghiệp Chung Nguyễn Trường Duy 24 TỔNG KẾT Sau tháng thực tập công ty, em học nhiều đều, không kiến thức riêng lập trình mà cịn quy chuẩn làm việc cơng ty, để biết doanh nghiệp làm việc nào, phối hợp nhân lực Hơn nữa, em tiếp thu kinh nghiệp quý báu từ anh chị đồng nghiệp, góp phần giúp em hồn thiện kiến thức, kỹ đạt số thành cơng định q trình thực tập cơng ty Về tư tưởng thân, em biết để trở thành lập trình viên, lập trình viên khác giải vấn đề, nghề nghiệp làm tương lai, định hướng nghề nghiệp Thực tập tốt nghiệp Chung Nguyễn Trường Duy ... thực tập với chủ đề ? ?Lập trình backend server với Nodejs? ?? nhằm mục đích giúp sinh viên thực tập đào tạo toàn diện lập trình server website, đồng thời rèn luyện kỹ mềm làm việc nhóm, thuyết trình, ... lập Http headers cách phù hợp Thực tế Helmet tập hợp Middleware nhỏ làm nhiệm vụ thiết lập Http headers liên quan đến bảo mật - PM2: pm2 trình quản lý process (tiến trình) dành cho ứng dụng Nodejs. .. giúp em hồn thiện kiến thức, kỹ đạt số thành công định q trình thực tập cơng ty Về tư tưởng thân, em biết để trở thành lập trình viên, lập trình viên khác giải vấn đề, nghề nghiệp làm tương lai,