KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG WEB LARAVEL TP... Nhu cầu bảo mật xác thực ứng dụng phần mềm là một phần không thể thiếu trong việc phát triển phần mềm, giú
Trang 1KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH ỨNG DỤNG WEB LARAVEL
TP Hồ Chí Minh, tháng 07 năm 2020
Trang 2LỜ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ù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 phần mềm 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 trên thế giới
Nhu cầu bảo mật xác thực ứng dụng phần mềm là một phần không thể thiếu trong việc phát triển phần mềm, giúp cho những ứng dụng web được bảo mật an toàn tránh bị kẻ gian lợi dụng
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 dự án thực tế trong một môi trường chuyên nghiệp Vì vậy, em quyết định chọn công ty TNHH Youthdev - 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 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công Ty TNHH YouthDev đã 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 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 ứng dụng website hoàn chỉnh 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 Thiện, đã training front-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; Đồng thời cảm ơn anh Trường đã training về back-end và devops, giúp em có thể xây dựng được hệ thống website nhỏ bằng Laravel
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
Hồ Thái Thăng Thành Phố HCM, ngày 27 tháng 7 năm 2020
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
MỤC LỤC 5
Chương 1: Giới thiêu công ty thực tập 6
1 Giới thiệu công ty TNHH Youthdev 6
2 Sản phẩm của công ty 6
Chương 2: Nội dung thực tập 9
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 9
2 Nghiên cứu kỹ thuật 9
2.1 Các công cụ làm việc 9
2.2 Tìm hiểu ngôn ngữ PHP 9
2.3 Framework Laravel 10
2.4 Javascipt 12
2.5 Boostrap 3 và JQuery 13
3 Thực hiện project 14
4 Lịch làm việc 14
Chương 3: Chi tiết về project 16
1 Giới thiệu về Project 16
2 Thực hiện 16
3 Kế hoạch 16
TÀI LIỆU THAM KHẢO 18
TỔNG KẾT 19
Trang 6Chương 1: Giới thiêu công ty thực tập
1 Giới thiệu công ty TNHH Youthdev
YouthDev là một công ty giải pháp công nghệ được thành lập vào năm 2014 bởi một số kỹ sư giàu kinh nghiệm dựa trên phương pháp Agile và mang lại giá trị kinh doanh thực tế và quy trình minh bạch cho các sản phẩm phần mềm có tính sẵn sàng
và khả năng mở rộng cao Triết lý quan trọng nhất của công ty là “good releases or
no release at all” (Tạm dịch: Phát hành sản phẩm tốt hoặc không phát hành sản phẩm nào cả)
YouthDev không bao giờ nói không với bất kỳ vấn đề nào và sẽ cung cấp các giá trị thực đáng tin cậy cho khách hàng dựa trên niềm tin và khả năng công nghệ đáng tin cậy
2 Sản phẩm của công ty
YouthDev có kinh nghiệm rất mạnh mẽ về hiệu suất cao và hệ thống xử lý lớn Chúng tôi cũng là trụ cột của một số dự án lớn tại Việt Nam như:
a Mobifone video entertainment flatform:
Trang 78GiaiTri là một nền tảng video Mobifone chuyên dụng, được tạo ra dựa trên nhiều công nghệ hàng đầu thế giới để cung cấp truyền phát video thích ứng, lưu trữ video
có khả năng mở rộng lớn và hệ thống khả dụng cao với nhiều máy chủ chuyên dụng (của Mobifone) và đăng ký SMS, dịch vụ đăng ký phức tạp
b MobilePay electronic payment:
MobilePay là một thế hệ thanh toán điện tử tiện lợi mới được đầu tư bởi một công
ty cổ phần tại Singapore MobilePay cho phép người dùng đăng ký và kết nối với nhiều tài khoản ngân hàng để thanh toán, yêu cầu thanh toán hoặc thực hiện thay đổi
ví của họ bằng những cách dễ dàng và thuận tiện nhất
c Pi360 elearning system:
Pi (π) được thành lập bởi niềm đam mê của các chuyên gia trong ngành, những người nắm giữ các vị trí hàng đầu trong các tập đoàn khác nhau có cùng mục tiêu
Đó là truyền cảm hứng và chuyển giao kiến thức cho thế hệ tiếp theo và là nơi thực
sự cho những người muốn thúc đẩy sự nghiệp của họ một cách chuyên nghiệp, để ở
vị trí hàng đầu của công ty Không còn lo ngại về việc liệu kiến thức có thể được sử dụng tại nơi làm việc hay không vì nội dung có đủ tiêu chuẩn của các chuyên gia trong ngành, không còn lo ngại về chi phí học tập khi bạn có thể nhận các khóa học miễn phí để nâng cấp kiến thức
d Gold Airplane Vietjet:
Gold Airplane là chiến dịch quảng bá và dịch vụ thành viên trung thành lớn nhất của Vietjet cho đến nay Trò chơi đa nền tảng trực tuyến đã phục vụ hơn 5 triệu người dùng trong thời gian ngắn vì chiến dịch thường bắt đầu và dừng lại chỉ sau khoảng 1 đến 2 giờ
e Extracare loyalty card:
Extracare là một ứng dụng di động hoạt động trên cả Android và Apple iOS, cung cấp các chức năng cho khách hàng trung thành của Pharmacity, cửa hàng dược phẩm lớn nhất tại Việt Nam Extracare là một thế hệ thẻ khách hàng thân thiết mới thay thế thẻ truyền thống và cũng đóng vai trò quan trọng như một kết nối giữa khách hàng
và công ty
f Giant Enterprise Resource Planning:
Đây là một trong những giải pháp Lập kế hoạch nguồn lực doanh nghiệp toàn diện của chúng tôi, quản lý hầu hết các hoạt động của Giant hàng ngày Giải pháp này
Trang 8giúp kiểm soát hàng tồn kho, quản lý mối quan hệ khách hàng và nguồn nhân lực, tích hợp sâu vào kế toán để quản lý hóa đơn, hóa đơn giống như đơn đặt hàng của nhà cung cấp và đơn đặt hàng bán của khách hàng
g Mạng xã hội video BuzzHeat:
Thatvidieu.com là một thế hệ mới của mạng xã hội hệ thống phân phối video khổng lồ dựa trên một số công nghệ cao nhất hiện nay như khai thác dữ liệu, học máy Thatvidieu.com có thể thu thập và phân tích nội dung video trên các mạng xã hội khác tại Việt Nam và tự động phát hiện và lọc để loại bỏ video nội dung trùng lặp hoặc chất lượng thấp
h Social Listening System:
Chúng tôi đã phát triển hệ thống cốt lõi cho hoạt động kinh doanh của họ, đó là Social Listening System cung cấp quá nhiều thông tin cho các chiến dịch tiếp thị kỹ thuật số Chúng ta có thể trả lời các câu hỏi: Có bao nhiêu người đang nói về một thương hiệu trên phương tiện truyền thông xã hội? Họ đến từ đâu? Đó là những điều tích cực hay những điều tiêu cực? Đâu là điều của thương hiệu mà khách hàng thường nhắc đến?
Trang 9Chương 2: Nội dung thực tập
Được thực tập vị trí fullstack 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 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…
Kết quả : Hiểu thêm về công ty Youthdev, 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 : 1 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, supervisor đã 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 Một số phần mềm trong số đó như Server quản lý source code Gitlab, Phần mềm quản lý dự án Redmine và các IDE Visual code và Php Storm
Thực hiện : Thực hành sử dụng các phần mềm đã 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, so với việc dung các IDE
2.2 Tìm hiểu ngôn ngữ PHP
Thời gian : 5 ngày (1 tuần)
Nội dung : Được training về các kỹ thuật PHP nâng cao, những kiến thức quan trọng cho việc tham gia vào dự án thực tế
- Lập trình hướng đối tượng
Các kiến thức cơ bản về lập trình hướng đối tượng như khái niêm, các đặc tính như tính kế thừa, tính đóng gói, tính ảo hóa, tính đa hình của PHP
Trang 10- Design patem:
Cung cấp một số design pattern cho việc tối ưu code, tạo cho code dễ đọc, dễ bảo trì Biết được một số quy tắc đặt tên hàm, tên biến sao cho gợi ý nghĩa của biến
đó
- Tìm hiểu về Composer (Dependency Management trong PHP)
Học cách sử dụng composer Khai báo các thư viện mà dự án sử dụng Quản lý tập trung các thư viện đang sử dụng cho project và cả phiên bản của chúng dễ dàng qua file composer.json Tìm các phiên bản của package có thể cài đặt và cần thiết cho dự án, sau đó cài đặt chúng vào dự án tức là tải chúng về project
- Unit test trong PHP:
Cung cấp một số cách để viết unit test trong java Hiểu được sự cần thiết của việc viếc unit test trong project
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ả :
- Nâng cao kỹ năng lập trình với ngôn ngữ PHP
- Có được những kiến thức quan trọng cho việc lập trình web sau này
- 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
2.3 Framework Laravel
Nội dung: Các kiến thức cơ bản về Framework Laravel để có thể làm ra một website đơn giản
- Khái niệm cơ bản về Laravel
Năm được các khái niệm cơ bản về Laravel, là 1 open source, là một framework dùng để xây dựng web application, được thiết kế dựa trên mô hình MVC (Model, Controller, View), toàn bộ source code được đặt trên github Theo kết qủa khảo sát của các Developer vào tháng 12 năm 2013, thì Laravel Framework đứng top 1 một trong những framework phổ biến nhất, tiếp sau là Phalcon, Symfony2, CodeIgniter và các framework khác Tháng 8 năm 2014, Laravel Framework được xem như là một dự án PHP phổ biến nhất trên Github
Trang 11Ngoài ra, trainer còn cung cấp cho thực tập sinh những khái niệm cơ bản trong Laravel như MVC(Model, View, Controller), Session, Cookie…, là những khái niệm rất cơ bản và quan trọng trong lập trình web
- Cơ chế Routing:
Route trong Larvel cũng như các framework khác đều có chức năng là định ra các dạng resquest(hiểu nôm na là url) định sẵn và cũng có các action( hành động)
do chúng ta định nghĩa cho nó
- Middleware
Là một cơ chế cho phép bạn tham gia vào luồng xử lý request của một ứng dụng Laravel Trong một quá trình xử lý route điển hình của Laravel khi thực thi việc
xử lý yêu cầu và middleware là một trong những class mà ứng dụng phải thông qua
- Controller
Thay vì định nghĩa tất cả logic xử lý request của bạn ở file routes.php, thì bạn có thể muốn quản lý việc này bằng cách sử dụng các lớp Controller Các Controller
có thể nhóm các request HTTP có logic liên quan vào cùng một lớp Các Controller được chứa tại thư mục app/Http/Controllers
- View
Là nơi chứa HTML cho ứng dụng và tách rời khỏi Controller/Logic của ứng dụng
từ tầng logic View Trong Laravel thì bắt buộc phải được nằm trong thư mục resources/views và phải có đuôi là php hoặc blade.php (Nếu như muốn sử dụng blade template)
- Authentication
Laravel làm cho việc xác thực rất đơn giản.Trong thực tế, hầu hết mọi thứ được cấu hình cho bạn ra khỏi hộp Tệp cấu hình xác thực được đặt tại config/auth.php, chứa một số tùy chọn được ghi chép tốt để điều chỉnh hành vi của các dịch vụ xác thực
- OBJ model
Là một cơ chế cho phép ứng dụng web có thể lưu trữ dữ liệu người dùng (hay rộng hơn là client) và sử dụng dữ liệu này ở nhiều lượt truy cập khác nhau diễn ra
Trang 12sau đó Sử dụng Session API cung cấp bởi Laravel, các lập trình viên chúng ta có thể làm việc với session một cách thuận tiện
Với Session API trong Laravel chúng có thể linh hoạt cấu hình cách thức lưu trữ session trên server sử dụng tập tin app/config/session.php Trong bài viết này chúng ta sẽ tìm hiểu 2 cách thức lưu trữ Session được sử dụng phổ biến thông qua file server Cả 2 cách lưu trữ session này đều được hỗ trợ mặc định bởi Laravel
- Eloquent ORM :
ORM Eloquent đi kèm với Laravel cung cấp một triển khai ActiveRecord đơn giản, đẹp mắt để làm việc với cơ sở dữ liệu của bạn Mỗi bảng cơ sở dữ liệu có một "Model" tương ứng được sử dụng để tương tác với bảng đó Các mô hình cho phép bạn truy vấn dữ liệu trong các bảng của mình, cũng như chèn các bản ghi mới vào bảng
Thực hiện :
- Tham gia đầy đủ các buổi trainning
- Làm các bài tập thực hành như kết hợp model, view, controller, thao tác với cơ sở
dữ liệu MySQL
- Tìm kiếm tài liệu trên mạng để tìm hiểu thêm
Kết quả :
- Hiểu được những khái niệm cơ bản trong lập trình ứng dụng web bằng Framework Laravel
- Đã có thể tạo được 1 dự án nho nhỏ là trang web cá nhân giới thiệu bản thân 2.4 Javascipt
Nội dung : JavaScript là ngôn ngữ lập trình phổ biến nhất trên thế giới trong suốt 20 năm qua Nó cũng là một trong số 3 ngôn ngữ chính của lập trình web (html, css, javascript)
- Cơ bản về javascript:
+ Là ngôn ngữ lập trình bậc cao + Là ngôn ngữ lập trình động + Là ngôn ngữ lập trình kịch bản + Là ngôn ngữ dựa trên đối tượng
Trang 13- Javascript nâng cao(ES6 and ECMAScript 2015):
+ Block - Scoped Constructs Let and Const + Arrow Function
+ Destructuring Assignment in ES6 + Rest Parameter
+ Default Parameters in ES6 + Multi-line and Template String in ES6 + Promises in ES6
Thực hiện :
- Tham gia đầy đủ các buổi training
- Hoàn thành những bài tập được giao
Kết quả:
- Hiểu thêm về ngôn ngữ javascript
2.5 Boostrap 3 và JQuery
Nội dung : Bootstrap là một bộ sưu tập miễn phí của các mã nguồn mở và công cụ dùng để tạo ra một mẫu webiste hoàn chỉnh Với các thuộc tính về giao diện được quy định sẵn như kích thước, màu sắc, độ cao, độ rộng…, các designer có thể sáng tạo nhiều sản phẩm mới mẻ nhưng vẫn tiết kiệm thời gian khi làm việc với framework này trong quá trình thiết kế giao diện website jQuery là một thư viện JavaScript nhỏ gọn, chạy nhanh JQuery giải quyết các vấn đề tương tác với HTML, bắt sự kiện, hiệu ứng động trở lên rất đơn giản
- Cơ bản về Boostrap:
Ưu điểm:
Cung cấp những thanh phần cơ bản như tố cơ bản sẵn có như typography, forms, buttons, tables, grids, navigation, image carousels…
Dễ dàng thao tác
Tùy chỉnh dễ dàng