Sau ba năm học tập ở trường, do muốn có thêm kinh nghiệm trong thực tế, cũng như muốn tham gia làm ra các ứng dụng web trong môi trường chuyên nghiệp đáp ứng được các yêu cầu thực tế đề
Trang 1TRƯỜ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 WEBSITE
TP Hồ Chí Minh, tháng 07 năm 2020
Trang 2LỜI MỞ ĐẦU
Trong thời đại công nghệ ngày càng phát triển, Internet trở nên thông dụng hơn đối với mỗi người Các website, ứng dụng web ngày càng được các lập trình viên quan tâm nhiều hơn Những website kinh doanh, thương mại hay hình thức quảng cáo trên các website ngày càng trở nên phổ biến Chúng xuất hiện hằng ngày trong cuộc sống của mỗi chúng ta
Với việc các website ngày càng lớn mạnh dẫn đến sự ra đời của các ứng dụng web Ứng dụng web trở nên phổ biến nhờ vào sự có mặt ở bất cứ nơi đâu của một chương trình Khả năng cập nhật và bảo trì ứng dụng web mà không phải phân phối và cài đặt phần mềm trên hàng ngàn máy tính là lý do chính cho sự phổ biến của nó
Sau ba năm học tập ở trường, do muốn có thêm kinh nghiệm trong thực tế, cũng như muốn tham gia làm ra các ứng dụng web trong môi trường chuyên nghiệp đáp ứng được các yêu cầu thực tế đề ra, em đã có ý định tìm kiếm công ty chuyên về phát triển các ứng dụng web, và Rockship – một môi trường lý tưởng để em có thể thực hiện các dự định trên
Trang 3LỜI CẢM ƠN
Trước tiên với tình cảm chân thành nhất, cho phép em được bày tỏ lòng biết ơn đến tất cả các cá nhân và tổ chức đã tạo điều kiện hỗ trợ, giúp đỡ em trong suốt quá trình học tập và nghiên cứu đề tài này
Em xin chân thành cảm ơn Ban lãnh đạo Công ty TNHH Rockship đã tạo điều kiện thuận
lợi cho em được tìm hiều thực tiễn trong suốt quá trình thực tập tại công ty
Chỉ trong một thời gian ngắn, nhờ sự hướng dẫn nhiệt tình của anh chị, em đã học hỏi thêm được rất nhiều kiến thức quan trọng trên con đường trở thành một web developer chuyên nghiệp Em xin gửi lời cảm ơn đến các anh chị trong công ty đã không ngại bỏ thời gian, công sức hướng dẫn em từ chuyên môn đến việc thích nghi với môi trường làm việc thực tế, từ đó hoàn thành tốt đợt thực tập
Đặc biệt, em xin cảm ơn anh Thuận, người đã hỗ trợ em nắm vững những kiến thức cần có của một developer chuyên nghiệp, cũng như giúp đỡ nhiệt tình những lúc em gặp khó khăn trong quá trình làm việc
Cuối cùng, em xin gửi đến quý thầy cô ở Khoa Công nghệ phần mềm – Trường ĐH Công nghệ Thông tin đã truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập tại trường Nhờ có những lời hướng dẫn, dạy bảo của các thầy cô đã góp phần đề tài nghiên cứu của em mới có thể hoàn thiện tốt đẹp
Em xin chân thành cảm ơn!
Trần Ngọc Hải TpHCM, ngày 23 tháng 7 năm 2020
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
1
MỤC LỤC
MỤC LỤC 1
Chương 1: Giới thiệu sơ lược về công ty thực tập 2
1 Giới thiệu công ty TNHH Rockship 2
2 Sản phẩm của công ty 2
Chương 2: Nội dung thực tập 3
1 Tìm hiểu công ty và các kỹ năng cơ bản của công ty: 3
2 Nghiên cứu kỹ thuật: 3
2.1 Các công cụ làm việc: 3
2.2 Tìm hiểu về Javascript: 3
2.3 Tìm hiểu về NodeJS: 4
2.4 Tìm hiểu về Amazon DynamoDB: 5
3 Lịch làm việc 6
Chương 3: Chi tiết về project thực hiện trong quá trình thực tập 7
1 Giới thiệu về project 7
2 Thực hiện 7
3 Quá trình thực hiện 7
TÀI LIỆU THAM KHẢO 8
TỔNG KẾT 9
Trang 6
2
Chương 1: GIỚI THIỆU SƠ LƯỢC VỀ CÔNG TY THỰC TẬP
1 Giới thiệu công ty TNHH Rockship:
Rockship là công ty phần mềm trong lĩnh vực outsource được thành lập vào năm 2017 Là một công ty tư vấn phần mềm hướng đến các giải pháp công nghệ mới và sáng tạo như: Blockchain, Live streaming, Electronic Payment Integration
Công ty hướng tới các khách hàng ở các thị trường như: Singapore, Hongkong, Japan và Australia
Rockship có trụ sở công ty đặt tại quận Bình Thạnh, TPHCM
2 Sản phẩm của công ty:
Trọng tâm hướng tới của công ty là đề ra các giải pháp công nghệ hoàn chỉnh cho các công
ty Từ đó, xây dựng các ứng dụng công nghệ phù hợp đối với từng đối tượng công ty, giúp cải thiện các chi phí quản trị, tăng năng suất và hiệu quả Đồng thời tăng tính ổn định cho các giải pháp cung cấp
Tập trung vào các xu hướng ngôn ngữ lập trình như: Golang, Python, Javascript, Swift (iOS), Java (Android)
Trang 73
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 hoàn thiện hơn trong quá trình phát triển các ứng dụng trên nền tảng web, đồng thời hoàn thiện các kỹ năng mềm như làm việc nhóm, khả năng giao tiếp, khả năng sắp xếp và phân chia công việc 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ôi trường chuyên nghiệp
1 Tìm hiểu công ty và các kỹ năng cơ bản của 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)
Thực tập sinh được chị quản lý nhân sự giới thiệu về cách thức làm việc trong công ty như thời gian làm việc, các quy định cần phải tuân thủ, cách sử dụng email trong trao đổi công việc…
Được người phụ trách giới thiệu về công việc, quy trình làm việc theo hệ thống của công ty Ngoài ra, người phụ trách còn phổ biến thêm các thống nhất trong quá trình làm việc Cách trao đổi thông tin giữa các phòng ban trong công ty để công việc thuận tiện hơn
Kết quả: Hiểu thêm về công ty Rockship, quá 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:
2.1 Các công cụ làm việc:
Thời gian: 4 ngày
Nội dung: Tìm hiểu về công cụ sẽ được sử dụng trong quá trình làm việc
Trong thời gian này, thực tập sinh đã được người giám sát hướng dẫn tìm hiểu về các công cụ giúp ích cho công việc sau này Một số công cụ hỗ trợ như: Github – một dịch vụ cung cấp kho lưu trữ mã nguồn Git dựa trên nền web cho các dự án phát triển phần mềm, Visual Studio Code – một công cụ code editor rất hữu ích và phổ biển của lập trình viên, Rocket.chat – công cụ giúp giao tiếp trong quá trình làm việc nhóm
Thực hiện: Thực hành sử dụng các công cụ đã nêu ở trên
Kết quả: Lập trình sử dụng các công cụ miễn phí, giúp dễ dàng kết hợp các công cụ với
nhau
2.2 Tìm hiểu về Javascript:
Thời gian: 5 ngày (1 tuần)
Nội dung: Tìm hiểu cơ bản đến nâng cao các kỹ thuật của javascript
Trang 84
- Con trỏ trong javascript:
Từ khóa this của javascript là một khái niệm cơ bản nhưng cũng thường gây sự nhầm lẫn của ngôn ngữ này Khi vào một dự án thực tế, sẽ thực sự khó để biết được con trỏ (this) trỏ đi đâu Việc chú ý đến bối cảnh (context) của con trỏ sẽ giúp hạn chế các lỗi phát sinh trong lập trình
- Closure function:
Hiểu đơn giản thì closure function là một hàm được tạo ra từ bên trong một hàm
khác, việc áp dụng closure trong một số trường hợp giúp code của bạn nhìn sẽ rõ ràng
và dễ quản lý hơn
- Callback function:
Function trong javascript còn được coi là first-class objects, điều này có nghĩa
function là một object nên có thể sử dụng như các object bình thường
Javascipt là một ngôn ngữ hướng điều kiện và bất đồng bộ nên đây là một kỹ thuật rất quan trọng và được sử dụng rất nhiều trong lập trình javascript Nói đơn giản thì callback function là một function A được truyền vào một function B thông qua danh sách tham số của B để thực thi các chức năng của hàm A
- Anonymous function:
Anonymous function hay còn gọi là hàm ẩn danh, nó được tạo ra bằng cách sử dụng toán tử thay vì sử dụng cú pháp khai báo hàm thông thường Kỹ thuật này thật sự hữu ích khi bạn cần tạo một function ngay lập tức hoặc thực hiện một callback function
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 thành, kiểm tra các kiến thức đã được học
Kết quả:
Bước đầu có thể đọc hiểu được project mà công ty đang thực hiện
Tuy nhiên có một vài kỹ thuật chưa hoặc ít được tiếp xúc trong quá trình thực tập nên chỉ dừng lại ở mức tìm hiểu và chưa đạt được tính ứng dụng cao để hiểu rõ hơn về vấn đề
2.3 Tìm hiểu về NodeJS:
Thời gian: 5 ngày (1 tuần)
Nội dung: Tìm hiểu đặc điểm, các kỹ thuật tối ưu của NodeJS
- Khái niệm của NodeJS:
Node.js là một nền tảng (platform) phát triển độc lập được xây dựng ở trên Javascript Runtime của Chorme
Node.js tạo ra được các ứng dụng có tốc độ xử lý nhanh, giải quyết các vấn đề realtime nhờ cơ chế xử lý bất đồng bộ (non-blocking) dựa vào việc sử dụng ngôn ngữ javascript
Trang 95
- Framework Express:
Đây là một framework giành cho NodeJS, cung cấp rất nhiều tính năng mạnh mẽ trên nền tảng web cũng như trên ứng dụng di động Express hỗ trợ các phương thức HTTP và midleware tạo ra một API mạnh mẽ và dễ sử dụng
- Tìm hiểu cách xây dựng một server bằng NodeJS:
Đây là thời gian dành ra để hiểu hơn về các cách xây dựng một server cơ bản
Tự thiết kế folder cho project demo thuần NodeJS, xây dựng các API để giao tiếp giữ server với client
Đọc các project hiện tại công ty đang xây dựng, giúp sinh viên cải thiện về khả năng lập trình cũng như học được các thiết kế folder Cách đặt tên biến, tên hàm sao cho có
ý nghĩ và ngắn gọn Tạo được sự thống nhất cho quá trình làm việc sau này
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 thành, kiểm tra các kiến thức đã được học
Kết quả:
Bước đầu xây dựng được một website cơ bản bằng NodeJS
Trong quá trình thực tập chưa có project sử dụng Express nên chỉ dừng lại ở việc tìm hiểu công nghệ
2.4 Tìm hiểu về Amazon DynamoDB:
Thời gian: 4 ngày
Nội dung: Tìm hiểu về một kiểu cơ sở dữ liệu mới
- Khái niệm của DynamoDB
DynamoDB là cơ sở dữ liệu NoSQL hỗ trợ mô hình dữ liệu dạng key-value, đồng thời cho phép nhà phát triển tạo ra các ứng dụng mà ông cần máy chủ Đây là một cơ
sở dữ liệu bền vững, có tích hợp khả năng bảo mật, sao lưu khôi phục DynamoDB có thể xử lý hơn 10 nghìn tỷ yêu cầu trong 1 ngày và hỗ trợ tối đa 20 triệu yêu cầu trong
1 giây
- Tìm hiểu về DynamooseJS:
Đây là một thư viện mô hình hóa đối tượng (Object Data Model – ODM) cho DynamoDB và NodeJS Giúp cho lập trình viên giữ được tư duy như với đối tượng của Javascript thay vì sử dụng ngôn ngữ thuần túy viết riêng cho mỗi loại cơ sở dữ liệu Việc sử dụng ODM thường giúp giảm thiểu chi phí phát triển và bảo trì Trừ khi người lập trình đã quá quen thuộc với ngôn ngữ truy vấn thuần túy hoặc hiệu suất là trên hết Vì sử dụng ODM nó phải thông dịch mã để có thể truy vấn giữu đối tượng và
cơ sở dữ liệu
Trang 106
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 thành, kiểm tra các kiến thức đã được học
Kết quả: Cơ bản thao tác được trên cơ sở dữ liệu DynamoDB
3 Lịch làm việc:
hướng dẫn
Mức độ hoàn thành
Nhận xét của người hướng dẫn
1
- Tìm hiểu về công ty, cách tổ
chức của công 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
Anh
Lê Văn Thuận
2
- Tìm hiểu Javascript
- Làm bài test
Anh
Lê Văn Thuận
3
- Tìm hiểu NodeJS
- Làm bài test
Anh
Lê Văn Thuận
4
- Tìm hiểu các loại cơ sở dữ liệu
mà công ty đang sử dụng
- Tìm hiểu về DynamoDB cho
project sắp được giao task
- Làm bài test
Anh
Lê Văn Thuận
Còn
lại
- Nhận task và làm việc
- Gặp vấn đề trong quá trình làm
sẽ tìm hiểu thêm
Anh Phương (PM)
Trang 117
Chương 3: CHI TIẾT VỀ PROJECT THỰC HIỆN TRONG QUÁ TRÌNH
THỰC TẬP
1 Giới thiệu về project:
Vì đây là project out-source nên các chức năng có trong project được xây dựng theo yêu cầu của khách hàng Project hướng đến việc kết nối người dùng và phòng khám, thuận tiện cho người dùng trong việc đặt lịch khám cũng như tìm kiếm phòng khám nơi gần nhất Quản
lý hồ sơ bệnh án, giúp đỡ phiền hà các thủ tục truyền thống trong quá trình thăm khám bệnh Lên lịch, nhắc người dùng khi có lịch khám bệnh
2 Thực hiện:
Để hoàn thành project thì team thực hiện ngoài em còn có anh Tuấn
Đồng thời là sự giúp đỡ nhiệt tình của anh leader là anh Thuận
3 Quá trình thực hiện:
Giai đoạn 1:
- Thiết kế project
- Chọn công nghệ phù hợp
Kết quả: Server back–end sử dụng Node.js và cơ sở dữ liệu sử dụng là DynamoDB
Giai đoạn 2:
- Xây dựng các chức năng chính của ứng dụng
- Demo cho khách hàng
- Fix một số lỗi trong quá trình thực hiện
Kết quả: Cơ bản khách hàng hài lòng với tiến độ công việc và trải nghiệm người dùng
Giai đoạn 3:
- Deloy ứng dụng lên host
- Fix một số lỗi trong quá trình thực hiện
- Xây dựng thêm các chức năng phát sinh theo yêu cầu của khách hàng
Kết quả: Hoàn thành việc triển khai dự án, nhưng còn nhiều lỗi phát sinh vẫn chưa
được fix trong quá trình thực tập
Trang 128
TÀI LIỆU THAM KHẢO
Document Node JS:
https://nodejs.org/en/
Document Amazon DynamoDB:
https://docs.aws.amazon.com/dynamodb/
Document DynamooseJS:
https://dynamoosejs.com/getting_started/Introduction
Document ExpressJS:
https://expressjs.com/
Trang 139
TỔNG KẾT
Như vậy trong khoảng thời gian ngắn khoảng ba tháng, em đã được trải nghiệm nhiều điều mới trong môi trường làm việc cụ thể, cải thiện được các kỹ năng của bản thân Nắm được các kiến thức quan trọng của lập trình back-end Đây sẽ là nền tảng kiến thức quan trọng
để em có thể phát triển hơn sau này để trở thành một lập trình viên tốt
Chân thành cảm ơn sự giúp đỡ của các anh chị nhóm trainer Rockship đã tạo điều kiện cho em được thực hành những kiến thức được học ở trường vào các dự án thực tế Từ đó, em
có thể cải thiện các kỹ năng của bản thân cũng như hoàn thành tốt bài báo cáo này