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

báo cáo thực tập lập trình BACKEND với NODEJS EXPRESSJS

23 48 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 898,39 KB

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

Nội dung

Với tốc độ phát triển vô cùng mạnh mẽ, ngành phát triển ứng dụng web đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tin thế giới, cả về phần cứng và phần mềm.. Giới t

Trang 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

TP Hồ Chí Minh, tháng 1 năm 2021

Trang 2

LỜI MỞ ĐẦU

Ngày nay, ngành công nghiệp phát triển ứng dụng web là một bộ phận không thể thiếu của ngành công nghiệp phần mềm Với tốc độ phát triển vô cùng mạnh mẽ, ngành phát triển ứng dụng web đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tin thế giới, cả về phần cứng và phần mềm

Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ Ngành công nghiệp phát triển web non trẻ Việt Nam đã và đang phát triển mạnh mẽ, để hòa nhập với những công ty hàng đầu về xây dựng nền tảng web trên thế giới Bên cạnh sự phát triển của web thì những ngành nghề được tiếp cận người dùng một cách nhanh chóng như những

gì ta có thể thấy là mạng xã hội hay những website bán hàng trực tuyến cũng đang rất thịnh hành trên cả thế giới lẫn Việt Nam

Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như muốn được tham gia làm game trong một môi trường chuyên nghiệp, em có dự định là

sẽ thực tập trong hè Vì vậy, em quyết định chọn Gameloft - một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này

Trang 3

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ó cơ hội được thực tập tại công ty

Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer, nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm được một web server Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều thời gian,công sức để hướng dẫn chúng em hoàn thành đợt thực tập này

Đặ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 cả những khó khăn trong công việc, đến những khó khăn việc làm quen với môi trường mới

Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này

Chung Nguyễn Trường Duy

TpHCM, ngày 1 tháng 1 năm 2021

Trang 4

NHẬN XÉT CỦA KHOA

Trang 5

MỤC LỤC

Chương 1: Giới thiêu công ty thực tập 6

1 Giới thiệu công ty Sum Việt 6

2 Sản phẩm của công ty 6

Chương 2: Nội dung thực tập 7

1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 7

2 Nghiên cứu kỹ thuật 7

2.1 Giới thiệu gitlab 7

2.2 Giới thiệu Visual Studio Code 9

2.3 Giới thiệu redmind 10

2.4 Tìm hiểu về RESTful API 11

2.5 Tìm hiểu cở sở dữ liệu mongoDb 11

2.6 Tìm hiểu về Nodejs 12

2.7 Lập trình Typescript + một số thư viện hỗ trợ 13

3 Thực hiện project 14

4 Lịch làm việc 15

Chương 3: Chi tiết về project 16

3.1 Giới thiệu về PawnVn 16

3.2 Thực hiện 21

TÀI LIỆU THAM KHẢO 22

TỔNG KẾT 23

Trang 6

Chương 1: Giới thiêu công ty thực tập

1 Giới thiệu công ty Sum Việt

Tiền thân là công ty phát triển truyền thông quảng cáo Codosa

với các 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 quyết 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 một 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,

2 Sản phẩm của công ty

Sum Việt hiện tại đã và đang cung cấp các 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 trên các nền tảng như Binary Option, MT4 & MT6 Platform, trade Forex, Crypto, …

Trang 7

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 được đào tạo toàn diện về lập trình server website, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường chuyên nghiệp

1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty

Thời gian : 1 ngày

Nội dung : Giới thiệu về công ty, cách tổ chức của công ty

Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và 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ủa công ty

Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…

2 Nghiên cứu kỹ thuật

2.1 Giới thiệu gitlab

Hình 2.1: Logo gitlab.com

Gitlab là hệ thống self-hosted mã nguồn mở dựa trên hệ thống máy chủ Git dùng

để quản lý mã nguồn của bạn Gitlab cung cấp giải pháp server một cách hoàn hảo và nhận

sự đánh giá cao từ cộng đồng

Những đặc điểm cần biết của Gitlab gồm:

Trang 8

- Phiên bản Gitlab: Hiện nay gitlab hỗ trợ 3 phiên bản là: Gitlab community edition (CE) là phiên bản cộng động, mã nguồn mở, cung cấp qua Git từ kho

lưu trữ chứa Gitlab Bản mới nhất của Gitlab được các nhà phát triển release

tại các nhánh stable và nhánh master Gitlab enterprise edition (EE) là gitlab

phiên bản doanh nghiệp, có sẵn không lâu sau khi phát hành CE, được cung cấp từ kho lưu trữ Khi một doanh nghiệp đăng ký Gitlab sẽ nhận được support

của Gitlab khi gặp khó khăn trong quá trình cài đặt Gitlab continuous integration (CI) là một giải pháp tích hợp được thực hiện bởi nhóm phát triển

Gitlab

- Protected branches: Cho phép đọc hoặc ghi vào repository và các branches

Protected branches cấp quyền cho những người được phép commit và pushing code Một protected branch gồm 3 điều cơ bản Một là ngăn chặn việc push từ tất cả mọi người trừ user và master Hai là ngăn chặn việc push code lên branch từ những người không có quyền truy cập Ba là ngăn chặn bất kỳ ai

thực hiện xóa branch Master branch được mặc định là protected branch User

cần được cấp it nhất một quyền từ master branch để bảo mật branch

- Tầng vật lý của Gitlab:

Kho lưu trữ: là nơi xử lý các dự án trong Gitlab, các dự án hoặc sản phẩm có

thể được lưu tại kho

Nginx có cách thực hoạt động giống như front-desk: người dùng đến Nginx

và yêu cầu hành động được thực hiện bởi worker trong văn phòng

Gitlab-shell: là loại thứ ba của worker, thực hiện nhiệm vụ tạo các đơn đặt

hàng từ một máy fax (SSH) thay vì front-desk (HTTP) Gitlab-shell giao tiếp với Sidekiq qua redis và hỏi những câu hỏi nhanh của Unicorn worker hoặc trực tiếp hoặc qua front-desk

Gitlab enterprise edition: là tập hợp các quy trình và hoạt động kinh doanh

được điều hành bởi office

- System layout: Khi nói đến git trong hình ảnh có thể hiểu thư mục home của

người dùng git là /home/git Repositories bare trong đường dẫn /home/git/repositories Gitlab là một ứng dụng được viết bằng ngôn ngữ ruby

Trang 9

on rails Do đó, để biết rõ các hoạt động bên trong bạn có thể tìm hiểu về hoạt

động của ruby on rails

- Kiểm soát các thay đổi trong code nhanh chóng, chính xác

- Hỗ trợ việc quản lý, phân phối công việc trong dự án lập trình hiệu quả hơn

2.2 Giới thiệu Visual Studio Code

Trang 10

Hình 2.3: Chương trình Visual Studio Code Visual Studio Code là sản phẩm của Microsoft, ra mắt vào tháng 4 năm 2015 ở hội

nghị Build Đặc điểm nổi bật là đơn giản, gọn nhẹ, dễ dàng cài đặt

Visual Studio Code có thể cài đặt được trên cả Windows, Linux và Mac OS và hỗ trợ

nhiều ngôn ngữ khác nhau

Visual Studio Code là một trình biên tập mã Nó hỗ trợ nhiều ngôn ngữ và chức năng

tùy vào ngôn ngữ sử dụng theo như trong bảng sau Nhiều chức năng của Visual Studio Code không hiển thị ra trong các menu tùy chọn hay giao diện người dùng Thay vào đó, chúng được gọi thông qua khung nhập lệnh hoặc qua một tập tin json (ví dụ như tập tin tùy chỉnh của người dùng) Khung nhập lệnh là một giao diện theo dòng lệnh Tuy nhiên, nó biến mất khi người dùng nhấp bất cứ nơi nào khác, hoặc nhấn tổ hợp phím để tương tác với một cái gì đó ở bên ngoài đó Tương tự như vậy với những dòng lệnh tốn nhiều thời gian để

xử lý Khi thực hiện những điều trên thì quá trình xử lý dòng lệnh đó sẽ bị hủy

2.3 Giới thiệu redmind

Hình 2.4: Logo redmind.org

Redmind là một công cụ được tạo ra nhằm mục đích theo dõi các vấn đề xẩy ra của một dự án và quản lý dự án đó Redmind hoạt động trên web miễn phí và mã nguồn mở để người dùng dễ dàng sử dụng Đây là phần mềm hỗ trợ cho người sử dụng quản lý nhiều dự

án cùng một lúc hoặc các tiểu dự án có liên quan đến nhau và liên quan đến dự án chính Redmind có tính năng cho mỗi một dự án khác nhay và diễn đàn khác nhau Redmind giúp theo dõi thời gian, kiểm soát các truy cập với vai trò linh hoạt của nó trong từng dự án

Quản lý dự án Redmine sẽ giúp bạn dễ dàng hơn trong việc quản lý các vấn đề của dự

án web và được viết bằng Ruby on Rails Với việc sử dụng miễn phí phần mềm này đã giúp bạn quản lý dự án hiệu quả và khoa học hơn

Trang 11

2.4 Tìm hiểu về RESTful API

API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo

đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML

REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu,

một 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 giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu

RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng

web để quản lý các resource RESTful là một trong những kiểu thiết kế API được sử dụng

phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau

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

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

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

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

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

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

Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa

2.5 Tìm hiểu cở sở dữ liệu mongoDb

Trang 12

cố định (hay còn gọi là Big Data)

Một số đặc điểm của MongoDb:

- Các truy vấn đa dạng

- Cập nhật nhanh hơn

2.6 Tìm hiểu về Nodejs

Hình 2.6 Logo Nodejs

Trang 13

NodeJs là một nền tảng dựa vào Chrome Javascript runtime để xây dựng các ứng dụng nhanh, có độ lớn NodeJS sử dụng các phần phát sinh các sự kiện (event-driven), mô

hình non-blocking I/O để tạo ra các ứng dụng nhẹ và hiệu quả cho các ứng dụng về dữ liệu thời gian thực chạy trên các thiết bị phân tán

NodeJs là một mã nguồn mở, đa nền tảng cho phát triển các ứng dụng phía Server

và cácCác dự án theo quy trình Waterfall thường cần define cụ thể yêu cầu của dự án, trong khi các yêu cầu trong các dự án Agile có thể thay đổi và phát triển

Trong các dự án Waterfall, bạn không thể thay đổi những thứ bạn đã làm trong những công đoạn trước, tuy nhiên Agile rất phù hợp và có thể đáp ứng được các thay đổi

2.7 Lập trình Typescript + một số thư viện hỗ trợ

Trang 14

TypeScript thêm các namespace, class và module tùy chọn vào JavaScript TypeScript

hỗ trợ các công cụ cho các ứng dụng JavaScript quy mô lớn cho bất kỳ trình duyệt nào, cho bất kỳ máy chủ nào, trên bất kỳ hệ điều hành nào

Ưu điểm của Typescript:

Framework lớn

- Hỗ trợ OOP mạnh: Hầu hết các cú pháp hướng đối tượng đều được hỗ trợ bởi Typescript như kế thừa, đóng gói, constructor, abstract, interface, implement, override v.v

lập trình hướng đối tượng: Hỗ trợ cơ chế giúp kiến trúc hệ thống code hướng module, hỗ trợ namespace, giúp xây dựng các hệ thống lớn nơi mà nhiều dev

có thể làm việc cùng nhau một cách dễ dàng hơn

- Hỗ trợ các tính năng mới nhất của Javascript

- Một lợi thế của Typescript nữa là mã nguồn mở vì vậy nó miễn phí và có cộng đồng hỗ trợ rất lớn

Typescript đang được sử dụng ở các Framework Front-end phổ biến như

Angular 2, Ionic cũng như Nền tảng cho back-end như Node-js bởi những ưu điểm của mình

3 Thực hiện project

Sau gần một tháng được training và thực hành, thực tập sinh đã nắm được những kiến thực cơ bản về mongoDb, nodejs, typescript Trong tháng thứ hai, trainer đã hướng dẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một project product của công ty

Chi tiết dự án sẽ được nói ở phần sau

Trang 15

❖ Học cách trao đổi, làm việc qua slack

Anh Nguyễn Vĩnh Khiêm

❖ Tham gia vào dự án PawnVn

❖ Tìm hiểu cấu trúc project

❖ Viết bắt đầu viết api

8 trở đi

❖ Viết document và Swageer

❖ Viết Unit test cho hệ thống

❖ Tham gia các hoạt động nghiên cứu, cuộc thi tại công ty

Trang 16

Chương 3: Chi tiết về project

Theo quy chế đối với 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 của 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, dữ liệu, …)

Phần b.Thông tin của công ty: … Đảm bảo an toàn thông tin về sản phẩm, dự án đang trong giai đoạn kế hoạch, phát triển sản phẩm hoặc chưa được phép công bố

Nên phần này sẽ mô tả giới hạn về quá trình thực tập

3.1 Giới thiệu về PawnVn

a Giới thiệu

PawnVn là ứ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 hoặc sở hữu của 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 dưới sự kiểm duyệt sản phẩm từ cửa hàng và các chuyên gia kiểm định nhằm đem lại sản phẩm đúng và an toàn với người mua và người bán

Trang 17

so với MD5 và SHA bởi mỗi lần thực hiện băm nó lại cho một giá trị khác nhau, việc này khiến cho việc dò tìm mật khẩu trở nên khó hơn

- Jsonwebtoken: JSON Web Token (JWT) là 1 tiêu chuẩn mở (RFC 7519) định nghĩa cách thức truyền tin an toàn giữa các thành viên bằng 1 đối tượng JSON Thông tin này có thể được xác thực và đánh dấu tin cậy nhờ vào “chữ ký” của

nó Phần chữ ký của JWT sẽ được mã hóa lại bằng HMAC hoặc RSA

- Cors: CORS là một cơ chế cho phép nhiều tài nguyên khác nhau (fonts, Javascript, v.v…) của một trang web có thể được truy vấn từ domain khác với domain của trang đó CORS là viết tắt của từ Cross-origin resource sharing

- Helmet: Helmet là một package được viêt để giúp bạn bảo vệ ứng dụng của mình khỏi những lỗ hổng đã biết bằng cách thiết lập các Http headers một cách

Trang 18

phù hợp Thực tế thì Helmet chỉ là một tập hợp các Middleware nhỏ làm nhiệm

vụ thiết lập các Http headers liên quan đến bảo mật

- PM2: pm2 là một trình quản lý các process (tiến trình) dành cho các ứng dụng Nodejs Nó được viết bằng chính Nodejs và Shell PM2 cũng được tích hợp bộ cân bằng tải (load balancer) Bạn có thể giữ cho các process của server còn sống và reload/restart với zero downtime

- Nginx: là một phần mềm web server mã nguồn mở nỗi tiếng Ban đầu nó dùng

để phục vụ web HTTP Tuy nhiên, ngày nay nó cũng được dùng làm reverse proxy, HTTP load balancer và email proxy như IMAP, POP3, và SMTP

c Một số giao diện:

Một sô màn hình giao diện hệ thống và màn hình giao diện swagger

Hình 3.1: Màn hình swagger thể hiện các thông tin api của ứng dụng

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

TỪ KHÓA LIÊN QUAN

w