Tìm hiểu SOLID , nguyén lý thiết kế SOLID Tìm hiểu áp dụng nodejs, express, typeorm Tham gia dự án TODOLIST quản lý công việc hân tích dự án, tham gia viết đặc tả chức năng cho dự án, t
Trang 1
Họ và tên sinh vién :
THUC TAP TOT NGHIEP
ông ty thực ta Chuyên gia hướng dẫn Nguyễn Giảng viên hướng dẫn Lương Minh Huấn
TP Hồ Chí Minh, thúng năm 20
Trang 2
LỜI MỞ ĐẦU
CHƯƠNG I1 GIỚI THIỆU
IG] THIEU CONG TY THUC TAP
Giới thiệu về công ty VNPT:
Lĩnh vực hoạt động
Cac du dn quan trọng của céng ty:
Thông tim liên hệ:
HIỆM VỤ THỰC TẬP
CHƯƠNG 2 NỘI DUNG THỰC TẬP
IM HIẾU CÔNG NGHỆ VÀ CÁC KÉT QUÁ THỰC NGHIỆM
2.1.1 Tìm hiếu về Laravel
2 Tim hiéu nodejs express , typeorm
2.1.3 Tham gia dw án quản ly céng viéc (TODOLIST)
CHUONG 3: KET QUA THUC TAP
HUNG DIEU D DUGC
IEN HUCD HUNG IEN HUC OI OC DUGC
CHUONG 4 KET LUAN VA KIEN NGHI
HUNG OI oc Ol
IÊN GHI ỌC
IEN GHI OI GHIỆPVÀ Ơ OD ẠO
PHỤ LỤC
Trang 3NHẬN XÉT CỦA CHUYÊN GIA DOANH NGHIỆP
Trang 4NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Trang 5LỜI MỞ ĐẦU
Trong thời gian thực tập ngắn ngủi, em đã được học hỏi và tích lũy được nhiều nghiệm từ các anh chị đồng nghiệp trong công ty cũng như rèn luyện được bản thân tại Công ty „ bô sung được nhiều kiến thức đa dạng và phong phú từ các thầy cô Lời đầu tiên, em chân thành cảm ơn đến các thầy cô của Công nghệ thông tin trường Đại học Sải Gòn đã tạo điều kiện thuận lợi cho em trong suốt quá trình học tập tại trường Các thầy cô đã nhiệt tình trong giảng dạy, giúp em có thêm được nhiều kiến thức bề ích cho đợt thực tập lần này Đặc biệt, em xin vô cùng cảm ơn sự hướng dẫn tận tình và theo dõi sát sao đầy trách nhiệm cùng lòng thương mến của 1
thực ập ủa em Cuối cùng, cảm ơn Ban giám đốc nói chung nói riêng đã tạo điều kiện cho em thực tập tại công ty Cảm ơn các anh chị đã nhiệt tình chỉ dạy, hướng dẫn, giúp đỡ em tiếp cận với thực tiễn
Trang 6CHƯƠNG 1 GIỚI THIỆU
Giới thiệu công ty thực tập
Nhà nước và Nhân dân ghi nhận là ngành đi đầu trong sự nghiệp đổi mới
Lĩnh vự ạt độ
Lĩnh vực hoạt động : Dịch vụ và sản phẩm viễn thông, công nghệ thông tin và truyền thông đa phương tiện, Khảo sát, tư vấn, thiết kế, lắp đặt, khai thác, bảo dưỡng, sửa chữa, cho thuê các công trình viễn thông, công nghệ thông tin, Nghiên cứu, phát triển, chế tạo, sản xuất thiết bị, sản phẩm viễn thông, công nghệ thông tin, Thương mại, phân phối các sản phẩm thiết bị viễn thông, công nghệ thông tin, Thương mại, phân phối các sản phẩm thiết bị viễn thông, công nghệ thông tin, Dịch vụ tài chính trong lĩnh vực viễn thông, công nghệ thông tin và truyền thông đa phương tiện, Kinh doanh bất động sản, cho thuê văn phòng
Bệnh án điện tử (VNPT
Phần mềm công thông tin điện tử (VNPT
Trang 7Dịch vụ phần mềm quản lý bệnh viện (VNPT
Dịch vụ phần mềm Một cửa điện tử (VNPT
Hệ thống quản lý văn bản điều hành (VNPT
Hệ thông phần mềm quản trị doanh nghiệp (VNPT
Tìm hiểu công nghệ laravel nodejs và docker
Tìm hiểu cấu trúc fa Đọc tải liệu vận hành
Tìm hiểu middleware, schedule
Tìm hiểu xử lý bất đồng bộ với queue job
Áp dụng các phần tìm hiểu tạo web crawler data từ
Tìm hiểu
Cầu hình laradock, vận hành và tạo hosting domain với laradock
Tìm hiểu SOLID , nguyén lý thiết kế SOLID
Tìm hiểu áp dụng nodejs, express, typeorm
Tham gia dự án TODOLIST (quản lý công việc)
hân tích dự án, tham gia viết đặc tả chức năng cho dự án, tham gia thế
kế DB và ERD
Tìm hiểu swagger
Viết API cho dự án
Viết Docs cho từng API bang Swagger
Trang 8Kết luận
Trong chương này, em đã được giới thiệu về Công ty VNPT một tập đoàn có uy tín và bề dày trong lĩnh vực viễn thông, công nghệ thông tin và truyền thông đa phương tiện Với tầm nhìn và giá trị truyền thông, công ty đã góp phần xây dựng
và phát triển ngành Bưu Điện và Viễn Thông Việt Nam, không ngừng nỗ lực với nguyên tắ Dũng cảm Tậntụy Sángtạo Nghĩa tình" Công ty VNPT hoạt động rộng rãi trong nhiều lĩnh vực như dịch vụ và sản phẩm viên thông, công nghệ thông tin, khảo sát, thiết kế, sản xuất thiết bị, và còn nhiều hoạt động khác Các dự án quan trọng của công ty như hệ thống quản lý bệnh viện, công thông tin điện tử, phần mềm quản trị doanh nghiệp, cho thấy sự đa dạng và phong phú trong hoạt động kinh doanh của công ty
Nhiệm vụ thực tập đề ra cho giai đoạn này rất thú vị và mang tính thực tiễn ca
Em đã có cơ hội tìm hiểu sâu về công nghệ Laravel, Node.js và Docker Qua việc thực hiện các nhiệm vụ như tạo web crawler, tìm hiểu về SOLID, và tham gia vao
dự án TODOLIST, đã tích luỹ được nhiều kiến thức, kỹ năng và kinh nghiệm
thực tế
Trang 9CHƯƠNG 2 NỘI DUNG THỰC TẬP
2.1 Tìm hiểu công nghệ Laravel, Node.js , và các kết quả thực nghiệm
Chương này tập trung vào việc tìm hiểu và nắm vững ba công nghệ quan trọng trong quá trình thực tập của đã tiến hành nghiên cứu sâu về mỗi công nghệ đề hiểu rõ cấu trúc, chức năng và ứng dụng của chúng trong môi trường phát triển và triển khai ứng dụng web hiện đại Ngoài ra, cũng đã áp dụng các kiên thức này đề thực hiện các nhiệm vụ thực tập và dự án
é @
Phương pháp thực hiện:
Đọc tài liệu Laravel: bắt đầu bằng việc đọc tải liệu chính thức của Laravel
đề hiệu rõ về cau truc framework va cach hoat động của nó Điêu này giúp năm vững các khải niệm quan trọng và cách Laravel giải quyết các vân đê thông qua các thành phần khác nhau
Thực hành middleware và schedule: Em đã thực hiện việc tạo và áp dụng các middleware trong Laravel để xử lý các yêu cầu trước khi chúng đến đích cũng thực hành việc sử dung schedule để thực hiện các tác vụ định kỳ trong ứng dụng
Xử lý bất đồng bộ với queue job: nghiên cứu và thực hiện xử lý bất đồng bộ thông qua queue job trong Laravel Điều này cho phép tách các tác vụ tốn thời
gian ra khỏi quá trình xử lý chính, cải thiện hiệu suất ứng dụng
sử dụng Laravel để xây dựng ứng dụng web crawler nhằm thu thập dữ liệu từ trang web Dân trí tìm hiểu về cách thức kết nối và trích xuat dữ liệu từ trang web, sau đó lưu trữ vào cơ sở dữ liệu
Trang 10Tìm hiểu Docker và Laradock: Em đã tìm hiểu về Docker và cách sử dụng Laradock để tạo môi trường phát triển và triển khai ứng dụng Laravel cầu hình môi trường phát triển sử dụng Docker và Laradock, cho phép dễ dàng tạo ra các môi trường thử nghiệm và triển khai ứng dụng
Kết quả
hiểu rõ hơn về cầu trúc của Laravel và cách hoạt động của các thành phần
„ tự khởi tạo và cầu hình | project laravel
Em đã thực hiện thành công việc tạo và sử dụng middleware, cũng như lập lịch các tác vụ định kỳ trong ứng dụng.Em đã nghiên cứu và áp dụng xử lý bất đồng
bộ thông qua queue job, cải thiện hiệu suất ứng dụng.Xây dựng được ứng dụng web crawler sử dụng Laravel dé thu thập dữ liệu từ trang web Dân trí và lưu trữ
đữ liệu vào cơ sở dữ liệu
đã hiệu và thực hiện được cấu trúc môi trường phát triển và triển khai Ứng dụng sử dụng Docker và Laradock, giúp tối ưu hóa quá trình phát triển
Một số hình ảnh thực nghiệm
Ap dụng middeware đề kiểm tra đăng nhập
Trang 11Hình 2: Kết quả đăng nhập thành công
Hình 3 : Kết quả đăng nhập thất bại
Trang 12Eso &
Hinh 4 : Ap dung queue jobs dé dat lich hang doi
Hinh 5: Data duoc crawler tie web dan tri
Phương pháp thực hiện:
Tìm hiểu Node.js: Em bắt đầu bằng việc tìm hiểu về Node.Jjs, môi trường chạy mã JavaScript ở phía máy chủ Em đọc tài liệu, tham gia các khóa học trực tuyến và thực hiện các bài thực hành để hiểu cách làm việc với Node.Js, các API cơ bản vả cách xử lý bất đồng bộ
Kham pha framework Express: Sau khi em nắm vững cơ bản của Node.js, em tập trung vao framework Express, mét framework img dụng web cho Node.Js Em học cách tạo các tuyến đường (routes), xử lý yêu cầu và phản hồi, sử dụng middleware
đề thực hiện các chức năng như xác thực vả xử lý lỗi
Trang 13Tìm hiểu TypeORM: Tiếp theo, em tìm hiểu về TypeORM, một ORM (Object Relational Mapping) cho TypeScript va JavaScript Em đọc tài liệu và thực hành tạo các mô hỉnh dữ liệu, truy vấn và thực hiện các thao tác CRUD trực tiếp từ mã TypeScript cua em
Nguyên lý thiết kế SOLID: Trong quá trình tìm hiểu, em đã áp dụng nguyên tắc
thiết kế SOLID vào việc xây dựng ứng dụng Em áp dụng Single Responsibility
Principle (SRP) bang cách chia nhỏ chức năng của từng module, dam bảo mỗi
module chỉ thực hiện một nhiệm vụ cụ thể Em cũng tuân thủ Open/Clo
Principle (OCP) bang cach tao các thành phần có thể mở rộng mà không cần thay đôi mã nguôn hiện có
Kết quả:
Hiệu rõ vê Node.Js: Qua việc tìm hiệu và thực hành, em đã hiệu cách sử dụng Node.Js đê việt mã phía máy chủ, sử dụng các hàm bát đông bộ đề đảm bảo hiệu suất tốt và tương tác với các yêu cầu từ phía máy khách
Sử dụng Express một cách linh hoạt: Em đã học cách xây dựng các ứng dụng web linh hoat théng qua framework Express Em có khả năng tạo và quản lý các tuyến đường, thực hiện xác thực và bảo mật, vả tận dụng middleware để cải thiện trải nghiệm người dùng
Áp dụng TypeORM vào ứng dụng: Em đã thực hành tạo các mô hình dữ liệu, xác định mối quan hệ giữa chúng và thực hiện các truy vấn thông qua TypeORM Kết quả là em có khả năng tương tác với cơ sở dữ liệu một cách đễ dàng thông qua đối tượng, giảm thiểu khả năng sai sót và tối ưu hóa truy vấn, hoàn thiện các API
Trang 14Áp dụng nguyên tắc thiết kế SOLID: Em đã áp dụng những nguyên tắc thiết kế SOLID vào việc xây dựng ứng dụng, tạo ra mã nguồn dễ bảo trì, mở rộng và linh hoạt hơn
Nhờ việc tìm hiểu và áp dụng Node.js, Express và TypeORM, cùng với việc tuân
thủ nguyên tắc thiết kế SOLID, em đã phát triển khả năng xây dựng và triển khai
các ứng dụng web một cách hiệu quả, đáp ứng được các yêu cầu của thị trường và
sử dụng những công cụ mạnh mẽ trong lĩnh vực Công nghệ Thông tin
Phương pháp thực hiện:
Phân tích dự án và viết đặc tả chức năng: Em tham gia vào quá trình phân tích dự
án quản lý công việc (TODOLIST) Em nắm vững yêu cầu của dự án, xác định chức năng cần triển khai và viết đặc tả chỉ tiết cho từng chức năng Quá trình này giúp em hiểu rõ mục tiêu và phạm vi của dự an
Thiết kế cơ sở dữ liệu và sơ đồ ERD: Dựa trên yêu cầu và đặc tả chức năng, em tham gia thiết kế cơ sở dữ liệu cho dự án Em vẽ sơ đồ Entity
Diagram (ERD) đề mô hình hóa quan hệ giữa các thực thể và thuộc tính Quá trình này đảm bảo sự hiệu rõ về câu trúc dữ liệu của ứng dụng
Tìm hiểu và sử dụng Swagger: Em nghiên cứu và áp dụng công cụ Swagger để tạo tài liệu API cho dự án Swagger giúp tạo ra tài liệu API tự động, giúp người dùng hiệu rõ về các endpoint, tham sô và phản hồi của API
Viết API cho dự án: Dựa trên đặc tả chức năng vả thiết kế cơ sở đữ liệu, em thực hiện viết mã nguồn cho các API của dự án Em sử dụng Node.js và Express đề xây dựng các endpoint, xử lý yêu cầu và truy vấn cơ sở dữ liệu thông qua TypeORM
Trang 15Viết Docs cho từng API bằng Swagger: Sử dụng thông tin từ các API đã viết, em tạo tài liệu cho từng API bằng Swagger Tài liệu này bao gồm thông tin về các endpoint, tham số, phản hồi và cách sử dụng Điều này giúp người dùng dé dang tương tác và tích hợp với dự án
Merge code và fx bug: Trong quá trình phát triển, em tham gia vào việc merge code tử và kiểm tra tích hợp Em cũng đóng góp vào việc sửa lỗi (bug) đảm bảo ứng dụng hoạt động ôn định và đáp ứng yêu câu
Thiết kế cơ sở đữ liệu và vẽ sơ đồ ERD để mô hình hóa cấu trúc dữ liệu
Sử dụng Swagger để tạo tài liệu API tự động, giúp người dùng và hiểu rõ
Một số hình ảnh thực nghiệm
Trang 16Hình 6 : Mô hình ERD cho ứng dụng Quản lÿ công việc
Hình 7 :Mô hình Database cho ứng dụng
Trang 17Hình ảnh mình họa API cho chức năng tìm kiếm task
Hình ảnh mình họa API cho chức năng tìm kiếm project
Trang 185
Trang 19anh minh hoa API ắp xếp dự ân nhất
anh minh hoa API 6 lượng
Trang 20Hình ảnh mình họa
Kết luận Nội dung thực tập
Thông qua những nỗ lực và công việc em đã thực hiện, em đã hoàn thiện toàn bộ những yêu cầu mà công ty đề ra Trong quá trình thực hiện, sự hỗ trợ và tận tâm của người hướng dẫn cùng đồng nghiệp đã giúp em tiến xa hơn trong việc học hỏi và thử nghiệm Nhờ vào sự hiểu ếtsâurộ và hướng dẫn chi tiết ủaanh i trong c
em đã tích luỹ được nhiều kiến thức mới và học được những phương pháp làm việc hiệu quả hon, tạo nên sự nâng cao vượt bậc trong khả năng của mỉnh
Trang 21CHUONG 3: KET QUA THUC TẬP
3.1 Những Điều Đã Làm Được
Phân tích dự án và viết đặc tả chức năng: Em đã cùng phân tích yêu cầu của
dự án TODOLIST, từ đó định hình được các chức năng cần phát triển Em đã tham gia viết đặc tả chức năng chỉ tiết để xác định rõ các hành vi của ứng dụng Thiết kế cơ sở dữ liệu và ERD: Em đã tham gia vao việc thiết kế cơ sở dữ liệu cho
dự án, xác định các bảng và mỗi quan hệ giữa chúng Em cùng vẽ sơ đồ ERD
dé mô tả cách đữ liệu được tô chứ
Tim hiéu va str dung Swagger: Em da tim hiéu vé céng cu Swagger dé tao tai liéu API cho dự án Sau đó, em đã ứng dụng thành công công cụ này để tạo tài liệu cho các API của dự án TODOLIST
Viết API cho dự án: Em đã tham gia vào việc viết các API cần thiết cho dự án TODOLIST, bao gồm các phương thức GET, POST, PUT và DELETE dé quan ly danh sách công việc
Viết Docs cho từng API bằng Swagger: Sau khi xây dựng các API, em đã sử dụng Swagger dé viết tài liệu cho từng API, giúp hiểu rõ cách sử dụng và tương tác với các API nảy
Merge code va fix bug: Em da tham gia vào quá trình merge code từ các thành viên
và thực hiện việc fx bug khi cần thiết để đảm bảo tính ôn định của dự
3.2 Nâng Cao Kiến Thức Đã Có
Hiểu rõ hơn về quy trình phân tích và thiết kế trong một dự án phần mềm
Sử dụng công cụ Swagger để tạo tài liệu API một cách hiệu quả và chuyên nghiệp Tăng cường khả năng viết API và sử dụng các phương thức HTTP đề tương tác với
cơ sở đữ liệu