Tải bản đầy đủ (.docx) (23 trang)

Báo Cáo Thực Tập Lập Trình Back-End Nodejs.docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (699.81 KB, 23 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 BACK-END NODEJS

Cơng ty thực tập

: Công ty cổ phần ITR VN

Người phụ trách

: Hồ Khắc Minh

Thực tập sinh

: Phan Tiến Lào

TP. Hồ Chí Minh, tháng 12 năm 2022

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


2

LỜI MỞ ĐẦU


Lập trình back-end là một trong những lựa chọn nghề nghiệp xu hướng, phổ biến với các
bạn học khoa học máy tính hoặc kỹ thuật phần mềm, cơng nghệ thơng tin nói chung. Lập trình
viên back-end được coi là một vị trí việc làm nhiều triển vọng do nhu cầu tuyển dụng được dự
đoán sẽ tiếp tục tăng lên trong tương lai.
Ngày nay, chỉ tính riêng hướng nghề nghiệp trở thành lập trình viên thì bạn cũng đã có
rất nhiều lựa chọn, chẳng hạn như phân theo định hướng sản phẩm thì có lập trình viên web, lập
trình viên game, lập trình viên phần mềm, ứng dụng; hoặc theo ngơn ngữ lập trình thì có lập
trình Java, PHP,... Lập trình back-end là một mảng khá rộng và nhiều triển vọng nhưng song
song với đó cũng sẽ có những áp lực nhất định, đòi hỏi nhiều ở sự sáng tạo.
Lập trình phần mềm là xu hướng nên có thể có nhiều cơ hội tuyển dụng và thăng tiến
hơn. Vì lý do này, em quyết định chọn lập trình back-end làm định hướng cho việc học tập của
mình.
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 back-end trong một mơi trường chun nghiệp, em có dự định là sẽ
thực tập trong kì này. Vì vậy, em quyết định chọn ITR VN - 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.

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


3

LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty ITR VN đã 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 backend về mảng front-end. 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 Hồ Khắc Minh đã training Back-end, 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ảm ơn anh Hoàng Khang, đã support anh Minh, hỗ trợ giải đáp nhiều câu hỏi của
chúng em khi anh Minh đang rất bận để có thể làm ra một sản phẩm trong thời gian qua.
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.

<Phan Tiến Lào>

<TpHCM, 1/10/2022>

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


4

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


5

NHẬN XÉT CỦA KHOA

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


6


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 ITR VN

6

2.

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

6

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

8

1.

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

8

2.


Nghiên cứu kỹ thuật

8

2.1.

Các công cụ làm việc và structure dự án của cơng ty

8

2.2.

Tìm hiểu ngôn ngữ javascript

9

2.3.

Event Loop

9

2.4.

Timestamp

9

2.5.


Thư viện Lodash

10

2.6.

ExpressJS

11

2.7.

GraphQL

11

2.8.

MongoDB

12

2.9.

Redis

13

2.10. Jest


14

3.

Thực hiện project

14

4.

Lịch làm việc

15

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

17

1.

Giới thiệu về các project

17

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

1. Giới thiệu công ty ITR VN
ITR là người bạn đồng hành của các startup, cơng ty và nhà sản xuất trong hành trình
biến những ý tưởng sáng tạo thành hiện thực.


<Tên phụ trách/GVHD>
<Phan Tiến Lào>


7

Xây dựng một sản phẩm sáng tạo có thể là một thách thức vì nó liên quan đến một
loạt các quy trình phát triển và quản lý. Được hỗ trợ với nhiều năm kinh nghiệm
trong ngành công nghiệp ICT, ITR biết cách giúp khách hàng thúc đẩy các quy trình
này để cung cấp sản phẩm của họ cho thế giới ở mức chất lượng cao.

2. Sản phẩm của công ty
ITR VN là công ty đồng hành với những startup đến từ Silicon Valley. Với đội
ngũ các lập trình viên có tính cạnh tranh tồn cầu từ nhiều mảng khác nhau như
Software, Filmware, Hardware, AI, … Công ty luôn xây dựng các dự án lớn và quan
trọng về mảng sức khỏe (MedTech and Digital Health) bao gồm cả phát triển phần
cứng, phát triển hệ thống nhúng, ứng dụng di động, giao diện người dùng và AI.
Nhờ những thành tựu từ những sản phẩm thành công, ITR VN liên kết được
thương hiệu lớn trên tồn thế giới về chăm sóc sức khỏe như Biotricity. Ngồi ra
cơng ty cũng sở hữu các sản phẩm dự án thành công khác nhau được sử dụng rông
rãi trên thế giới.

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


8

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

Đợt thực tập nhằm mục đích giúp sinh viên thực tập được đào tạo tồn diện lập trình
back-end, đồ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 phát
triển phần mềm chun 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, q 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 .
Ngồ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 slack trong cơng
việc…
Được giới thiệu bản thân trước nhiều phịng ban khác nhau trong công ty.
Kết quả : Hiểu thêm về cơng ty ITR VN, q trình thành lập và phát triển. Có thêm các
kỹ năng về việc sử dụng email trong cơng việc, làm việc có kế hoạch, có kỷ luật, có trách
nhiệm hơn.

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

Các cơng cụ làm việc và structure dự án của công ty
Thời gian : 4 ngày
Nội dung : Tìm hiểu về các cơng cụ sẽ được sử dụng trong quá trình làm việc.
Trong thời gian này, mentor đã hướng dẫn thực tập sinh tìm hiểu về các cơng cụ
sẽ giúp ích cho trong cơng việc sau này.
Được mentor giới thiệu tới quy trình và cách sắp xếp structure của dự án ở công

ty, mentor giải thích rõ ràng từng thành phần và cách hoạt dộng của chúng.

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


9

Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên và code bài toán mà
mentor đưa ra với structure được mentor giới thiệu.
Kết quả : Lập trình sử dụng các cơng cụ miễn phí, làm quen và áp dụng structure của
cơng ty.
2.2.

Tìm hiểu ngơn ngữ javascript
Thời gian : 5 ngày
Nội dung : Được training về ngôn ngữ javascript từ cơ bản đến nâng cao.
- Các kiểu dữ liệu trong javascript
Các kiến thức cơ bản ủa javascript, dựa trên document của javascript mentor chỉ
dẫn các phần cốt lõi và quan trọng nhất của javascript.
- Life Cycle :
Học luồng chạy của một file javascript cơ bản.
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty.
- Làm các bài thực hành, kiểm tra về kiến thức đã học.
Kết quả :
-

2.3.


Nắm được kiến thức cốt lõi của javascript
Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao cho đúng
chuẩn, dễ đọc, dễ hiểu.
Event Loop

Thời gian : 1 tuần
Nội dung: Các kiến thức nâng cao của javascript.
- Asynchronous.
Năm được các khái niệm về Asynchronous và Synchronous, nắm được điểm mạn
và điểm yếu của từng cái và cách hoạt động của nó.
Ngồi ra, trainer cịn cung cấp cho thực tập sinh những ví dụ thực tế để thực tập
sinh có thể dễ dàng hình dung hơn.
- Callback:
Nắm rõ được các trường hợp sử dụng callback mà trước đây chưa sử dụng. cách
tránh callback hell. Xử lý gọn và đơn giản hóa các callback lồng nhau khiến code
dễ đọc và dễ bảo trì.
- Promise
<Tên phụ trách/GVHD>
<Phan Tiến Lào>


10

Nắm rõ cách hoạt động của promise.

Thực hiện :
-

Tham gia đầy đủ các buổi training.
Làm các bài tập thực hành

Tìm kiếm tài liệu trên mạng để tìm hiểu thêm.
Viết file markdown để lưu lại những kiến thức cần nhớ

Kết quả :
2.4.

Hiểu được khái niệm Event Loop trong javascript.
Timestamp

Thời gian : 1 tuần
Nội dung : Giới thiệu về cách áp dụng và cách hoạt động của timestamp và các thư
viện hỗ trợ.
- Định nghĩa về timestamp:
Trong javascript, Timestamp là số mili giây tính từng ngày 1 tháng 1 năm 1970
(1/1/1970 hay còn được gọi là Unix epoch time).
Mentor giới thiệu về thư viện xử lí thời gian được sử dụng nhiều nhất là
momentjs, cách áp dụng cũng như cách hoạt động.
Trong xử lí dữ liệu, xử lí thời gian là vấn đề nan giải nhất. Vì khách hàng của
cơng ty khơng sống tại múi giờ Việt Nam, nên khi xử lí kiểu Date cần phải thận
trọng.
Thực hiện :
-

Tham gia đầy đủ các buổi training.
Hoàn thiện bài tập mà anh mentor giao và trình bày trong buổi họp.
Viết file markdown để lưu lại những kiến thức cần nhớ

Kết quả:
-


Tiếp thu được kinh nghiệm trong việc viết API là phải thận trọng, kĩ càng

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


11

2.5.

Lodash
Thời gian : 1 tuần
Nội dung : Giới thiệu về thư viện Lodash và cách sử dụng để xử lí dữ liệu.
- Lodash:
Là một thư viện dùng để xử lí hầu hết các kiểu dữ liệu trong javascript, đặc biệt là
mảng và object.
- Giới thiệu về các hàm thông dụng của thư viện
Được mentor hướng dẫn và giới thiệu kỹ càng về các hàm của thư viện lodash.
Hiểu được cách dùng lodash trong các trường hợp xử lí dữ liệu.
Thực hiện :
-

Xử lí dữ liệu trong database.
Làm bài tập xử lí mảng, object
Tham gia đầy đủ các buổi training và các bài tập được giao.
Viết file markdown để lưu lại những kiến thức cần nhớ

Kết quả:
-


Thông hiểu cấu trúc của dữ liệu, cách xử lí dữ liệu, cách trả về dữ liệu để phù hợp cho phía
front-end.
2.6.

Expressjs
Thời gian : 1 tuần
Nội dung : Giới thiệu về framework Expressjs và cách sử dụng để xây dựng API.
- Expressjs:
Là một khung ứng dụng web back-end để xây dựng các API RESTful với Node.js.
- Hướng dẫn xây dựng cấu trúc một project back-end
Được mentor hướng dẫn sử dụng router để xây dựng cấu trúc file trong một
project back-end để dễ xây dựng và phát triển.
- Giải thích các thành phần của API
- Hướng dẫn sử dụng Insomnia để test API
Thực hiện :
-

Xử lí dữ liệu trong database.
Làm bài tập viết API

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


12

-

Tham gia đầy đủ các buổi training và các bài tập được giao.
Viết file markdown để lưu lại những kiến thức cần nhớ


Kết quả:
-

Tiếp thu được nhiều kinh nghiệm trong việc viết API.
2.7.

GraphQL
Thời gian : 1 tuần
Nội dung : Giới thiệu về GraphQL và cách sử dụng để load data.
- GraphQL:
GraphQL là ngôn ngữ thao tác và truy vấn dữ liệu nguồn mở cho API, cung cấp
cho client 1 cách thức dễ dàng để request chính xác những gì họ cần, giúp việc
phát triển API dễ dàng hơn theo thời gian.
- Mô tả tổ chức của GraphQL
API GraphQL được tổ chức theo types và fields, truy cập toàn bộ dữ liệu của bạn
từ một endpoint duy nhất.
Thực hiện :
-

Tạo một server để sử dụng GraphQL
Tham gia đầy đủ các buổi training và các bài tập được giao.
Viết file markdown để lưu lại những kiến thức cần nhớ

Kết quả:
-

Học được cách sử dụng GraphQL.
Hiểu được cách tăng hiệu năng, tốc độ cho một server
2.8.


MongoDB
Thời gian : 1 tuần
Nội dung : Giới thiệu về database NoSql MongoDB và thư viện mongoose.
- MongoDB:
MongoDB là một database hướng tài liệu (document), một dạng NoSQL database.
Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích
ứng với các tài liệu như JSON có một schema rất linh hoạt.
- Mongoose:

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


13

-

Mongoose là một framework JavaScript được sử dụng trong ứng dụng Node.js với
database là MongoDB.
Giải thích về cấu trúc dữ liệu trong MongoDB
Các câu lệnh query dữ liệu thường được sử dụng trong MongoDB
Tạo đường dẫn với các document với nhau:
Mongoose hỗ trợ một phương thức để join-like là populate().

Thực hiện :
-

Tạo một server để sử dụng MongoDB
Tham gia đầy đủ các buổi training và các bài tập được giao.

Viết file markdown để lưu lại những kiến thức cần nhớ

Kết quả:
-

Thông hiểu về các database NoSql và cách sử dụng.
Hiểu được bản chất của populate() trong Mongoose
2.9.

Redis
Thời gian : 1 tuần
Nội dung : Giới thiệu về database Redis.
- Redis:
Redis là cơ sở dữ liệu mang phong cách NoSQL, lưu trữ dữ liệu với dạng KEYVALUE với nhiều tính năng được sử dụng rộng rãi.
- Data model:
Khác với RDMS như MySQL, hay PostgreSQL, Redis khơng có bảng. Redis lưu
trữ data dưới dạng key-value..
- Giải thích về cấu trúc dữ liệu trong Redis
- Các câu lệnh query dữ liệu thường được sử dụng trong Redis
- Giải thích các trường hợp sử dụng redis và điểm yếu của nó
Redis thường được sử dụng làm bộ nhớ đệm tại vì truy cập dữ liệu Redis rất
nhanh. Nếu bị sập nguồn hoặc mất điện thì dữ liệu trong redis sẽ mất hết
Thực hiện :
- Tạo một server để sử dụng Redis
- Luyện tập các câu lệnh thông dụng trong redis
- Tham gia đầy đủ các buổi training và các bài tập được giao.
- Viết file markdown để lưu lại những kiến thức cần nhớ

<Tên phụ trách/GVHD>
<Phan Tiến Lào>



14

Kết quả:
-

Thông hiểu về database Redis và cách sử dụng.
2.10. Jest
Nội dung : Giới thiệu về framework Jest.
- Jest:
Jest là một thư viện testing, dùng để viết unit test.
Thực hiện :
- Luyện tập viết unit test cho các bài tập cũ được giao
- Tham gia đầy đủ các buổi training.
- Viết file markdown để lưu lại những kiến thức cần nhớ
Kết quả:

-

Việc viết test không phải chỉ dành cho tester mà đó cũng là nghĩa vụ của một dev. Viết test
sẽ làm cho code của mình chính xác hơn.

3. Thực hiện project
Sau khi đượ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ề các framework và database. Mentor đã yêu cầu thực tập sinh làm một project nhỏ cho
mọi kiến thức được học và mỗi cuối tuần sẽ review project đó.
Chi tiết đồ án sẽ được nói ở phần sau.

4. Lịch làm việc

Tuần

Cơng việc
-

1

-

Mức
độ
hồn
thành
Khắc 10

Người hướng
dẫn

Tìm hiểu về cơng ty, Anh Hồ
cách tổ chức của công Minh
ty.
Làm quen với các
công cụ làm việc
trong công ty.
Học cách trao đổi,
làm việc qua slack.

Nhận xét của người
hướng dẫn


<Tên phụ trách/GVHD>
<Phan Tiến Lào>


15

2

-

3

-

3

4

5

6

7

8

8

-


-

-

-

-

-

-

-

Tìm hiểu ngơn ngữ
lập trình javascript
Làm bài tập
Làm bài test
Học về Event Loop
Làm bài test về kiến
thức đã học
Học về Timestamp
Làm bài tập
Làm bài test về kiến
thức đã học
Học về Lodash
Làm bài tập
Làm bài test về kiến
thức đã học
Học về Expressjs

Làm bài tập
Làm bài test về kiến
thức đã học
Học về GraphQL
Làm bài tập
Làm bài test về kiến
thức đã học
Học về MongoDB
Làm bài tập
Làm bài test về kiến
thức đã học
Học về Redis
Làm bài tập
Làm bài test về kiến
thức đã học
Học về Jest
Làm bài tập
Làm bài test về kiến
thức đã học

Anh Hồ
Minh

Khắc 10

Anh Hồ
Minh

Khắc 10


Anh Hồ
Minh

Khắc 10

Anh Hồ
Minh

Khắc 10

Anh Hồ
Minh

Khắc 10

Anh Hồ
Minh

Khắc 8

Anh Hồ
Minh

Khắc 10

Anh Hồ
Minh

Khắc 9


Anh Hồ
Minh

Khắc 10

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


16

Chương 3: Chi tiết về project
1. Giới thiệu về các project
Với mỗi kiến thức được học, anh mentor yêu cầu thực tập sinh phải làm một project nhỏ
đã áp dụng các kiến thức đó.
MongoDB
Viết Schema cho các collection trong MongoDB

Viết các function sử dụng các query của mongoose: create, update, delete, populate, …
Tự viết function populate() bằng ngôn ngữ javascript

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


17

GraphQL
Dựa vào những kiến thức đã học, viết schema cho một API theo đề bài tập đã cho
Kết quả:


<Tên phụ trách/GVHD>
<Phan Tiến Lào>


18

Project URL shortener sử dụng Expressjs, MongoDB, Redis
Màn hình đăng nhập:

Màn hình đăng ký:

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


19

Màn hình chính:

<Tên phụ trách/GVHD>
<Phan Tiến Lào>


20

1. Thực hiện
-

Phan Tiến Lào


Và sự giúp đỡ tận tình của anh mentor ITR VN.

2. Kế hoạch
-

Hoàn thành việc tạo ra một short-link
Hoàn thành các chức năng authenticaton
Tạo session cho người đăng nhập
Đếm số lần click
Lưu dữ liệu vào database

Kết quả :
-

Tất cả đã được thực hiện.

Bài tập javascript: Có 12 đồng xu, trong đó có 1 xu giả nặng hơn hoặc nhẹ hơn xu bình
thường, viết code một cái cân để tìm ra đồng xu đó trong 3 lần cân
Kết quả:

<Tên phụ trách/GVHD>
<Phan Tiến Lào>



×