Tải bản đầy đủ (.pdf) (27 trang)

Báo Cáo Thực Tập Lập Trình Ứng Dụng Trên Ios - Zalo Tech Fresher 2022.Pdf

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 (4.59 MB, 27 trang )



ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

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 ỨNG DỤNG TRÊN IOS
- ZALO TECH FRESHER 2022 -

Công ty thực tập:

Công ty cổ phần VNG

Người phụ trách:

Trần Thế Trung Thiện

Thực tập sinh:

Phạm Minh Tân

TP. HỒ CHÍ MINH, 2022




LỜI MỞ ĐẦU
Ngày nay, lập trình trên thiết bị di động khơng cịn là một khái niệm q mới


mẻ trong ngành công nghệ thông tin. Những năm gần đây, với lượng người dùng các
thiết bị di động lớn và ngày càng tăng trưởng, thì nhu cầu sử dụng các phần mềm trên
di động cũng khơng ngừng tăng lên. Chính vì vậy, các ứng dụng di động cũng không
ngừng được phát triển một cách đa dạng từ các ứng dụng phục vụ nhu cầu giải trí như
nghe nhạc xem phim, các mạng xã hội,.... đến các ứng dụng theo dõi sức khỏe của
con người. Nhắc đến các thiết bị di động không thể không kể đến hai hệ điều hành
phổ biến nhất là Android và iOS, chúng đã cùng nhau thống trị thị trường di động
trong nhiều năm. Khác với Android, vốn phổ biến hơn với các bạn sinh viên bởi tính
dễ tiếp cận do khơng kén mơi trường phát triển, các ứng dụng iOS chỉ có thể được
phát triển trên môi trường MacOS dẫn đến việc khá hiếm các bạn sinh viên chọn học.
Điều này tạo ra nhiều cơ hội về việc làm và cạnh tranh ít hơn so với lập trình trên
Android. Chính vì điều đó nên em đã lựa chọn cơng việc lập trình trên thiết bị di động
mà cụ thể hơn là trên nền tảng iOS để thực tập và đặc mục tiêu phát triển hơn sau
này.
Sau một thời gian khơng ngừng tìm kiếm trên các diễn đàn và các website lập
trình để theo đuổi mục tiêu trở thành lập trình viên iOS, em đã vơ tình nhìn thấy bài
đăng tuyển dụng của Zalo - một tổ chức thuộc VNG. Được biết, VNG là một công ty
công nghệ uy tín hàng đầu Việt Nam với các sản phẩm phục vụ cuộc sống người Việt,
hơn nữa công ty cịn có mối quan hệ hợp tác tốt đẹp với khoa Cơng nghệ phần mềm.
Chính vì vậy em đã lựa chọn VNG là nơi thực tập cho mình.
Sau khi trở thành thực tập sinh tại VNG, em đã được trải nghiệm một chương
trình đào tạo chuyên nghiệp với đội ngũ mentor giàu kinh nghiệm. Bên cạnh đó việc
được tiếp xúc với môi trường làm việc thực tế cũng giúp đỡ em rất nhiều trong việc
phát triển các kĩ năng mềm cần thiết cho tương lai. Sau thời gian thực tập kéo dài ba
tháng, em đã nắm vững các kiến thức, kĩ năng cần thiết trong lập trình iOS và sẵn
sàng tiến xa hơn trên con đường mà mình đã chọn.





LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành đến các tổ chức, cá nhân đã giúp em có một
kỳ thực tập thành cơng và bổ ít.
Đầu tiên em xin gửi lời cảm ơn đến công ty cổ phần VNG và đặc biệt là đội
ngũ ban tổ chức chương trình Zalo Tech Fresher 2022 đã tạo điều kiện cho em có cơ
hội thực tập tại cơng ty. Tuy chỉ trong thời gian ngắn, nhưng nhờ sự nhiệt tình chỉ
dạy của đội ngủ trainer và ban tổ chức chương trình em đã có được những kiến thức
và kĩ năng vơ cùng quan trọng trong lĩnh vực lập trình iOS để chuẩn bị hành trang
trên con đường trở thành kỹ sư lập trình của mình.
Đặt biệt cảm ơn anh Trần Thế Trung Thiện là mentor trực tiếp đã hướng dẫn
các kiến thức nền tảng và các kĩ thuật nâng cao trong lập trình iOS. Bên cạnh đó, cảm
ơn anh đã hỗ trợ nhiệt tình, giúp đỡ em giải quyết các khó khăn khi tham gia vào môi
trường làm việc mới đặc biệt trong vấn đề giao tiếp với mọi người trong nhóm.Trên
hết, em xin cảm ơn những đóng góp và những lời khuyên bổ ít của anh trong việc xây
dựng dự án, giúp em có thể hồn thành dự án một cách tốt nhất.
Cuối cùng, em xin cảm ơn những thầy cơ trong khoa Cơng nghệ phần mềm đã
nhiệt tình hỗ trợ và tạo điều kiện giúp em có cơ hội được đi thực tập và hoàn thành
bài báo cáo này.
Em xin chân thành cảm ơn.
Tp. Hồ Chí Minh, 25 tháng 12 năm 2022
Sinh viên

Phạm Minh Tân






NHẬN XÉT CỦA KHOA









MỤC LỤC
Chương 1. GIỚI THIỆU CƠNG TY VÀ CHƯƠNG TRÌNH THỰC TẬP
1.1. Giới thiệu công ty VNG và các sản phẩm của Zalo

1
1

1.1.1. Giới thiệu về VNG

1

1.1.2. Team Zalo tại VNG

2

1.2. Giới thiệu chương trình Zalo Tech Fresher

Chương 2. NỘI DUNG THỰC TẬP

3
5


2.1. Giới thiệu và training kĩ năng mềm

7

2.1.1. Tư duy logic và giao tiếp

7

2.1.2. Security

7

2.1.3. Product cycle

7

2.1.4. Task management and presentation

8

2.2. Thực hiện dự án dưới sự hướng dẫn của mentor (8 tuần)

8

2.2.1. Cơ bản về ngôn ngữ lập trình Swift, Objective C

9

2.2.2. Quản lý bộ nhớ ARC


9

2.2.3. Tìm hiểu các design pattern, cấu trúc project iOS và App lifecycle

10

2.2.4. Kiến trúc hệ thống và lập trình giao diện UiKit

10

2.2.5. List view native

11

2.2.6. Thực hiện dự án thực tập

11

2.2.7. GCD và Operation Queue

12

2.2.8. Networking và file manager.

12

2.2.9. Instrument

13


2.3. Hoàn thiện dự án và báo cáo kết quả

13

2.4. Kết quả cuối cùng

14

Chương 3. CHI TIẾT VỀ DỰ ÁN

15

3.1. Giới thiệu về dự án

15

3.1.1. Yêu cầu dự án

15

3.1.2. Phân tích chức năng ứng dụng

16

3.2. Quá trình thực hiện

17

3.3. Kết quả đạt được


21






NỘI DUNG BÁO CÁO
Chương 1. GIỚI THIỆU CÔNG TY VÀ CHƯƠNG TRÌNH THỰC TẬP
Ở chương đầu của báo cáo em sẽ nêu một vài thông tin về công ty thực
tập VNG, team Zalo nơi mình sẽ trực tiếp làm việc, cũng như là một vài thơng
tin về chương trình Zalo Tech Fresher 2022.
1.1.

Giới thiệu công ty VNG và các sản phẩm của Zalo

Ở phần này, em sẽ giới thiệu về công ty VNG, lý do chọn VNG là công ty thực
tập và các sản phẩm của team Zalo.
1.1.1. Giới thiệu về VNG

Hình 1.1 Logo cơng ty VNG1
Thành lập từ năm 2004, VNG Corporation là một trong những
công ty Internet & Công nghệ hàng đầu tại Việt Nam, phục vụ cho
người dùng Internet trên 100 quốc gia và vùng lãnh thổ. Sở hữu hệ sinh
thái các sản phẩm Internet đa dạng, cùng với nguồn lực công nghệ tiên
tiến, đội ngũ kỹ sư trẻ, tài năng, VNG còn nghiên cứu và phát triển các
hệ thống, giải pháp thông minh trên nền tảng IoT, Big Data, VR/AR,
AI.[1]



1Nguo& n:

1





VNG được xếp hạng vào CLB các công ty Internet trị giá tỷ đơ
của thế giới (2014), được bình chọn là Doanh nghiệp Nội dung số có
ảnh hưởng lớn nhất đối với sự phát triển của Internet Việt Nam trong 1
thập kỷ (2007 - 2017). Trong năm 2019, VNG nhận giải thưởng “Nơi
làm việc tốt nhất Châu Á” do HR Asia, tạp chí uy tín hàng đầu về Nhân
sự tại Châu Á tổ chức và bình chọn.[1]
Cùng với sứ mệnh phát triển con người của mình, VNG thường
xuyên làm tham gia, tổ chức vào các hoạt động với các trường thuộc
khối Đại học Quốc gia trong đó có UIT. Hơn nữa VNG còn mối quan
hệ hợp tác tốt đẹp với Khoa Cơng nghệ phần mềm.
Chính vì những lý do trên nên em đã quyết định sẽ chọn VNG
là địa điểm thực tập của mình.
1.1.2. Team Zalo tại VNG
Ngồi các sản phẩm về Game vốn đã làm nên thương hiệu nổi
tiếng củaVNG tại Việt Nam, ít ai biết rằng VNG cịn có một đội ngũ
phát triển các ứng dụng phục vụ đời sống người Việt. Đội ngũ ấy chính
là Zalo và một trong số các sản phẩm tiêu biểu của Zalo có thể kể đến:
● Ứng dụng Zalo: Ra đời vào năm 2012, Zalo hiện nay đã
trở thành ứng dụng tin nhắn phổ biến nhất Việt Nam.
● Zing MP3: Ra đời từ năm 2007, Zing MP3 đã thay đổi
cách thưởng thức âm nhạc của người Việt. Từ chỗ nghe
playlist, bảng xếp hạng một cách thụ động, người yêu nhạc

Zing MP3 đã chuyển sang chủ động tìm kiếm bài hát mình
muốn.[2]
● Báo mới: Báo Mới là trang tổng hợp tin tức phổ biến nhất
ở Việt Nam, ghi nhận lượng truy cập cao và cập nhật tin
tức cho độc giả từ hàng trăm tờ báo trực tuyến.[2]

2





Thực tập tại team Zalo cho em một cơ hội tiếp cận các sản phẩm
được bản thân sử dụng hằng ngày dưới một gốc độ của nhà phát triển
từ đó có động lực hơn trong việc trở thành lập trình viên trong tương
lai.
1.2.

Giới thiệu chương trình Zalo Tech Fresher

Hình 1.2 Zalo Tech Fresher Program 20222
Zalo Tech Fresher Program 2022 là chương trình đào tạo nhanh dành
cho các ứng viên mới hơn về công nghệ trẻ và tài năng, những người đam mê
sử dụng công nghệ để tạo ra tác động lớn hơn đến cuộc sống của người Việt
Nam. Với khóa huấn luyện 1-1 kéo dài 3 tháng, ứng viên sẽ được tham gia đào
tạo tại chỗ với các cố vấn chuyên nghiệp, giàu kinh nghiệm là những chuyên
gia công nghệ hàng đầu và đang giữ vai trò leader của Zalo, Zing MP3, Kiki….
Ứng viên sẽ được tạo điều kiện bằng kiến thức cơ bản và kinh nghiệm thực tế
để học hỏi, sáng tạo và phát triển sau khóa học.[3]
Đây là một trong những chương trình thực tập thực sự đáng trông chờ

trong năm 2022 với nhiều đãi ngộ tốt và phù hợp với sinh viên còn đang đi
học như em bởi nhiều lý do. Đầu tiên với sự linh hoạt trong thời gian làm việc

2Nguo& n:eers/fresher

3





và chỉ cần đáp ứng đủ 2.5 buổi trong tuần, chương trình hồn tồn phù hợp với
lịch học dày đặc ở năm cuối chương trình đào tạo. Hơn nữa việc được tiếp cận
sớm với môi trường làm việc chuyên nghiệp cùng với nơi làm việc cởi mở và
năng động sẽ giúp ích cho bản thân em rất nhiều trong tương lai. Chính vì thế
em đã chọn tham gia chương trình Zalo Tech Fresher 2022 trong kì thực tập
của mình.

4





Chương 2. NỘI DUNG THỰC TẬP
Ở chương này, báo cáo sẽ tập trung trình bày các nội dung của kì thực tập bao
gồm các phần giới thiệu và training kĩ năng mềm, nghiên cứu các kiến thức liên quan
về lập trình iOS, thực hiện dự án thực tập và cuối cùng là kết quả dự án thực tập. Toàn
bộ quá trình thực tập kéo dài khoảng 3 tháng với lịch trình được khái quát trong bảng
sau:

Bảng 2.1 Lịch trình thực tập
Thời gian

Nội dung

Giai đoạn 1: Giới thiệu và training kĩ năng mềm (1,5 tuần)
9/5/2022

Chào mừng và giới thiệu chương trình

10/5/2022

Tư duy logic và giao tiếp

12/5/2022

Security

13/5/2022

Product Cycle

17/5/2022

Task Managerment và Presentation

18/5/2022

Gặp gỡ mentor, kết thúc giai đoạn 1


Giai đoạn 2: Thực hiện dự án dưới sự hướng dẫn của mentor (8 tuần)
Tìm hiểu các kiến thức cơ bản về ngôn ngữ lập
Tuần 1

trình Swift và Objective C.
Tìm hiểu các Design pattern thường dùng:
Singleton, Factory, Delegate.

Tuần 2

Quản lý bộ nhớ ARC
Tìm hiểu cấu trúc project iOS, App Lifecycle.
Tìm hiểu SOLID principles, Clean code

5





Tìm hiểu kiến trúc hệ thống
Tuần 3

Tìm hiểu lập trình giao diện UIKit
Tìm hiểu List View Native

Tuần 4

Họp với mentor review các phần đã học được, rút kinh nghiệm làm việc, chuẩn bị
cho tháng tiếp theo.

Bắt đầu thực hiện dự án Downloader với các
kiến thức đã học được
Tuần 5

Tiếp tục nghiên cứu GCD, Operation Queue và
áp dụng vào dự án
Tiếp tục phát triển dự án

Tuần 6

Nghiên cứu các vấn đề về Networking, file
manager, tối ưu dự án về caching, performance
Tiếp tục phát triển dự án
Sử dụng instruments để profilling ứng dụng:

Tuần 7

CPU,

Time,

Memory

tiếp

tục

tối

ưu


performance của ứng dụng
Tập trung hoàn thiện dự án

Tuần 8

Giai đoạn 3: Review, hoàn thiện dự án và báo cáo kết quả (2.5 tuần)
Review, đánh giá dự án
Tuần 1

Tiến hành phát triển một số chức năng nâng cao
Chuẩn bị báo cáo, demo và thuyết trình về dự

Tuần 2
25/7/2022

án.
Báo cáo kết thúc dự án.

6





2.1.

Giới thiệu và training kĩ năng mềm
Ở phần đầu tiên của kì thực tập sẽ là các buổi giới thiệu và training kĩ


năng mềm kéo dài 1.5 tuần, cuối các buổi training sẽ có các bài tập thực hành
nhóm giúp ghi nhớ bài học và để mọi người làm quen với nhau.
2.1.1. Tư duy logic và giao tiếp
Thời gian: 1 ngày
Nội dung: Ở kĩ năng này, em được học thế nào là tư duy phản biện, cách
hình thành tư duy phản biện, và tầm quan trọng của nó trong giao tiếp.
Cùng với các tình huống và bài tập được thiết kế sinh động gần gửi từ
Thinking school đây là một trong những tiết học thú vị và vô cùng bổ ích.
Thực hiện: học thông qua các buổi training của công ty, làm bài tập về
nhà theo nhóm.
2.1.2. Security
Thời gian: 1 ngày
Nội dung: Ở kĩ năng này, các kiến thức về an toàn cá nhân , các rủi ro cá
nhân và virus máy tính được đề cập giúp em nâng cao nhận thức về bảo
mật và các rủi ro rò rỉ thông tin cá nhân và thông tin doanh nghiệp. Đồng
thời cũng cung cấp những bài học hữu ích trong việc bảo vệ bản thân trên
môi trường ảo.
Thực hiện: học thông qua buổi seminar của team security.
2.1.3. Product cycle
Thời gian: 1 ngày
Nội dung: Các kiến thức về quá trình phát triển và vận hành một sản phẩm
theo các quy chuẩn khác nhau được trình bày trong phần này, giúp em hiểu
hơn về quá trình phát triển phần mềm tại doanh nghiệp. Đi xâu vào quá

7






trình phát triển phần mềm cho em những gốc nhìn mới lạ hơn về các sản
phẩm phần mềm của doanh nghiệp từ lúc bắt đầu tới khi dự án kết thúc.
Thực hiện: học thông qua buổi seminar của team product.
2.1.4. Task management and presentation
Thời gian: 1 ngày
Nội dung: Ở phần này, các kĩ năng về quản lý thời gian và cơng việc được
trình bày một cách dí dỏm và hài hước thơng qua các hoạt động trị chơi và
câu hỏi tương tác giúp q trình học tập diễn ra vơ cùng vui vẻ mà vẫn
mang lại nhiều kiến thức bổ ích. Kĩ năng thuyết trình cũng được chú trọng
và cuối buổi bài tập thuyết trình đã góp phần cũng cố thêm cho những lý
thuyết về kĩ năng này.
Thực hiện: học thông qua buổi training của công ty, làm bài tập về nhà
theo nhóm.
2.2.

Thực hiện dự án dưới sự hướng dẫn của mentor (8 tuần)
Sau khi hoàn thành các bài training về kỹ năng mềm ở 8 tuần tiếp theo

em sẽ học các kiến thức cần thiết để xây dựng một ứng dụng iOS từ lúc bắt
đầu. Giai đoạn này gồm 8 tuần được chia thành 2 giai đoạn nhỏ hơn với các
nội dung:
● Giai đoạn 1: Tìm hiểu cơ bản về ngơn ngữ lập trình Swift và
Objective C, quản lý bộ nhớ ARC, tìm hiểu các design pattern,
cấu trúc project, app lifecycle, kiến trúc hệ thống, lập trình giao
diện với UIKit, Listview native
● Giai đoạn 2: Thực hiện dự án thực tập, GCD và Operation
Queue, Networking và file manager, instrument.
Chi tiết các nội dung được trình bày như sau:

8






2.2.1. Cơ bản về ngơn ngữ lập trình Swift, Objective C
Thời gian: 5 ngày (1 tuần)
Nội dung: Ở tuần đầu trong quá trình thực hiện dự án, em được giao nhiệm
vụ tìm hiểu về ngơn ngữ lập trình trên nền tảng iOS đó là Swift và
Objective C và viết báo cáo về ngơn ngữ Swift3. Các nội dung tìm hiểu bao
gồm:
● Thông tin ngôn ngữ
● Tên và kiểu dữ liệu
● Collection (arrays, sets, dictionaries)
● Controlling (control flow, loop statement)
● Cấu trúc, thuộc tính và phương thức
● Lập trình hướng đối tượng (lớp và các tính chất của OOP)
● Protocol và extensions
● Optional, Unwrapping và Generics
Thực hiện: tự học thông qua sự hướng dẫn và giới thiệu của mentor về các
nội dung chính yếu và quan trọng.
Kết quả: Sau một tuần tự học em đã nắm được các nội dung cơ bản và
quan trọng của cả 2 ngơn ngữ lập trình sẽ sử dụng là Objective C và Swift.
2.2.2. Quản lý bộ nhớ ARC
Thời gian: 3 ngày
Nội dung: Ở tuần thứ 2 của dự án, 3 ngày đầu em đã được phân cơng tìm
hiểu về cách mà swift và objective C lưu trữ các biến theo kiểu store và
reference, tìm hiểu về cơ chế ARC (auto reference counting), các thuộc
tính của biến (retain, weak, strong, atomic, nonatomic) trong Objective C



3Nộidungnghiêncứu:e/Swift-

8bdd2142331141b78d2f3b54d3c3c629

9





để tránh các lỗi gây lãng phí tài nguyên và bộ nhớ cũng như là tiền đề cho
việc đảm bảo thread safe.
Thực hiện: Tự học thông qua tài liệu của Apple
Kết quả: Nắm được bản chất ARC, và các lỗi thường gặp khi lưu trữ và
sử dụng biến. Hình thành nhận thức về việc chống memory leak và đảm
bảo thread safe cho ứng dụng.
2.2.3. Tìm hiểu các design pattern, cấu trúc project iOS và App lifecycle
Thời gian: 2 ngày
Nội dung: Cũng trong tuần thứ 2 của dự án, 2 ngày tiếp theo em đã tìm
hiểu thêm về một số phần có liên quan đến lập trình iOS như:
● Ba trong số các design pattern thường dùng đó là Singleton,
Delegate và Factory.
● Cấu trúc project iOS: cách lưu trữ các tệp, thư mục dự án, các
cách quản lý thư viện, cách tổ chức các tệp theo chuẩn của công ty.
● App lifecycle: Tìm hiểu về các trạng thái của ứng dụng từ lúc
được mở cho đến lúc bị tắt hoặc vào background, tìm hiểu các
trường hợp các tài nguyên ứng dụng bị thu hồi bởi hệ thống và các
trường hợp ứng dụng bị interrupt.
Thực hiện: Tự học qua các tài liệu của apple, được sự góp ý và chỉnh sửa

thêm của mentor ở phần cấu trúc ứng dụng.
Kết quả: Nắm rõ các phần liên quan tới lập trình iOS chuẩn bị tạo dự án
iOS đầu tiên.
2.2.4. Kiến trúc hệ thống và lập trình giao diện UiKit
Thời gian: 1 tuần
Nội dung: Ở tuần này em được phân cơng tìm hiểu hai thành phần quan
trọng của lập trình iOS đó là kiến trúc và lập trình giao diện.

10





Ở phần kiến trúc em tìm hiểu các kiến trúc như MVC, MVP và RX.
Ở phần lập trình giao diện em đã tìm hiểu các components UI trong UIKit
như label, button, image view, các layout như view, stack view và các cách
tạo constraint.
Thực hiện: Tự học từ các blog trên internet và sự hướng dẫn của mentor.
Kết quả: Nắm được cơ bản các kiến trúc dùng trong iOS, quyết định sử
dụng kiến trúc MVC làm dự án bởi tính đơn giản dễ dàng triển khai của
nó. Nắm được các components cơ bản của UIKit, sử dụng thành tạo các
layout và constraint, biết sử dụng các thư viện bên ngoài để cải thiện tốc
độ viết constraint.
2.2.5. List view native
Thời gian: 1 tuần
Nội dung: Tìm hiểu các listview native trong iOS là tableview và
collectionview tìm hiểu nâng cao thêm IGListKit4: tìm hiểu các đặc điểm,
cách sử dụng và cách xử lý các event khi chọn item hoặc khi scroll các
listview native.

Thực hiện: Tự học qua các tài liệu và từ khóa của mentor, lập trình một
ứng dụng to-do list đơn giản.
Kết quả: Biết cách sử dụng cơ bản và custom các listview native và
IGListKit.
2.2.6. Thực hiện dự án thực tập
Sau khi hoàn thành 4 tuần nghiên cứu đầu tiên thì bắt đầu từ tuần thứ
5, song song với việc học kiến thức mới, để có thể áp dụng ngay các kiến
thức vừa học em được yêu cầu thực hiện một dự án cá nhân đó là dự án

4Kếtquảtìmhiểu:e/IG-LIST-KIT-

25e1332902d449568081315b2c3b6466

11





phát triển ứng dụng Downloader (sẽ được trình bày kĩ hơn trong chương
sau). Dự án được phát triển trong vòng 8 tuần sau đó được review đánh giá
và thêm các chức năng nâng cao bởi mentor theo timeline sau:

Hình 2.2: Timeline thực hiện dự án thực tập.
2.2.7. GCD và Operation Queue
Thời gian: 1 tuần
Nội dung: Công việc của tuần này xoay quanh các chủ đề lập trình bất
đồng bộ và đa luồng trong iOS, nội dung cơ bản gồm các cơng việc sau:
● Tìm hiểu lập trình đa luồng và các cách hiện thực đa luồng trong
iOS

● Tìm hiểu về GCD (Grand Central Dispatch) và Operation Queue
về ngữ cảnh sử dụng, các rủi ro
● Tìm hiểu về các thread trong iOS, và các queue của Dispatch
Queue: main queue, global queue.
● Tìm hiểu về thread safe khi tiến hành các tác vụ tải, reload
collection view.
Thực hiện: Đọc các hướng dẫn của apple và các chỉ dẫn của mentor.
Kết quả: Có thể tích hợp được đa luồng, và đảm bảo thread safe cho dự
án.
2.2.8. Networking và file manager.
Thời gian: 1 tuần
Nội dung: Phần này chủ yếu trình bày các kiến thức về Networking và file
manager phục vụ cho dự án downloader:

12





● Tìm hiểu về các kiến trúc, pattern thường sử dụng cho việc
networking trong iOS, tìm hiểu về NSURLDownload Session.
● Thực hiện các tác vụ download đơn giản như download từ link,
tạm dừng, tiếp tục download và cancel download
● Thực hiện lưu trữ các file đã download, truy cập và quản lý file,
thư mục người dùng.
Thực hiện: đọc các hướng dẫn của apple
Kết quả: Thực hiện download thành công và quản lý được các file.
2.2.9. Instrument
Thời gian: 1 tuần

Nội dung: Sử dụng các công cụ instrument tiến hành đánh giá performance
hệ thống, kiểm tra các lỗi memory leak, thread safe, tìm hiểu Firebase
crashlytics để nắm và khắc phục các trường hợp ứng dụng crash.
Thực hiện: Tiến hành các thực nghiệm bằng công cụ XCode và Firebase
với sự hướng dẫn của mentor.
Kết quả: Đánh giá được performance của dự án, học thêm được các cơng
cụ mới.
2.3.

Hồn thiện dự án và báo cáo kết quả

Thời gian: 2.5 tuần
Nội dung: Sau khi hoàn thiện dự án em và mentor đã tiến hành reivew lại các
kết quả đã đạt được trong xuyên suốt thời gian làm dự án. Bên cạnh đó là tổng
kết các tính năng mình đã làm được, nâng cấp một vài tính năng cịn hoạt động
chưa hiệu quả, đồng thời lên các kế hoạch phát triển cho tương lai. Sau đó, em
tiếp tục hoàn thiện để báo cáo kết quả cuối cùng và kết thúc kì thực tập.
Thực hiện: Hồn thành các chức năng còn lại, họp báo cáo với mentor, chuẩn
bị bài thuyết trình kết thúc đợt thực tập.
13





Kết quả: Hoàn thành cơ bản hoàn chỉnh ứng dụng, hồn thành bài thuyết trình
và báo cáo cuối cùng.
2.4.

Kết quả cuối cùng

Sau ba tháng thực tập dù gặp nhiều khó khăn do tiếp xúc với môi trường

làm việc và công nghệ hoàn toàn mới. Tuy nhiên nhờ sự giúp đỡ của mọi người
trong công ty và sự cố gắng của bản thân, em đã hoàn thành kỳ thực tập một
cách trọn vẹn đạt được đánh giá 9.5/10 từ mentor, đồng thời trở thành nhân
viên chính thức tại cơng ty. Sau khi kết thúc kỳ thực tập em đã học được nhiều
kiến thức và kĩ năng mới trong công việc, sẵn sàng đón nhận những thử thách,
mục tiêu mới trong tương lai.

14





Chương 3. CHI TIẾT VỀ DỰ ÁN
Sau khi trình bày chi tiết nội dung và quá trình thực tập ở VNG trong chương
2, ở chương này em sẽ trình bày về dự án em đã thực hiện.
3.1.

Giới thiệu về dự án

Ở phần này em sẽ tập trung giới thiệu về các yêu cầu và phân tích chức năng
của dự án.
3.1.1. Yêu cầu dự án
Xây dựng ứng dụng Downloader cho phép tải và lưu trữ file dưới dạng
Local sử dụng Native API.

Hình 3.1 Các hình ảnh ứng dụng Downloader thành phẩm
Yêu cầu:


15





● Vận dụng Clean Code và Defensive Programing để thiết kế
module download có tính mở rộng và khả năng chống lỗi cao
● Vận dụng Clean Code và Defensive Programing để thiết kế
module download có tính mở rộng và khả năng chống lỗi cao.
● Hiểu rõ cơ chế và nguyên tắc hoạt động của HTTP connection,
các thông số về timeout request, timeout session... để tính tốn
phù hợp với điều kiện mạng khác nhau.
● Áp dụng thành thạo multithreading trong việc xử lý logic
download.
● Xử lý các trường hợp liên quan tới interrupt ứng dụng, mơi
trường mạng (chập chờn, mạng ảo)
● Có mindset về xây dựng core component đóng gói sử dụng cho
nhiều dự án khác nhau.
● Rèn luyện kĩ năng Software Testing: Unit Test, Functional
Testing, Performance Testing.
Nâng cao: Xử lý tối ưu cho phần tải file lớn, áp dụng resume downloader,
download theo range
3.1.2. Phân tích chức năng ứng dụng
Về phần download:
● Download từ một link bất kỳ ( kiểm tra link hợp lệ)
● Tải file và lưu trữ vào thư mục người dùng
● Tìm kiếm các tiến trình tải (gồm filter theo trạng thái tải và sort
theo ngày)

● Quản lý các tiến trình tải bao gồm: đổi tên, xóa tiến trình.
● Tạm dừng, tiếp tục, hủy download.
● Handle các trường hợp mạng chậm, khơng có mạng, mất kết nối
đường truyền lúc download.
Về phần quản lý file
16





● Tìm kiếm các tệp tải về
● Filter các tệp theo loại tệp
● Tạo, xóa, di chuyển các folder quản lý.
● Đổi tên, xóa, sao chép, di chuyển các tệp
● Cung cấp nhiều dạng xem khác nhau cho tệp hình ảnh.
● Import các tệp của người dùng vào ứng dụng.
3.2.

Quá trình thực hiện

Quá trình thực hiện dự án được bắt đầu từ tuần thứ 5 của giai đoạn 2 (thực
hiện dự án dưới sự hướng dẫn của mentor), quá trình thực hiện được diễn ra
song song với việc tìm hiểu các nội dung từ tuần 5:
● Tuần 5: Xây dựng giao diện ứng dụng phần downloader, tiến hành
download và lưu trữ file.

17






● Tuần 6: Thực hiện các tác vụ download (Tạm dừng, tiếp tục, hủy
download) và các logic quản lý tiến trình.

● Tuần 7: Xây dựng giao diện ứng dụng phần quản lý file, load các file
native của user và hiển thị lên màn hình, xây dựng 2 dạng xem cho các
tệp

18





● Tuần 8: Xây dựng các tác vụ quản lý file như: tạo, xóa, di chuyển các
folder quản lý, đổi tên, xóa, sao chép, di chuyển các tệp. Kết hợp
instrument đánh giá performance ứng dụng khi số lượng file lớn

19





● Tuần 9: Tiếp tục hoàn thiện các handle khi download bị lỗi, mạng chậm,
nâng cao hiệu suất khi số lượng file ảnh lớn và kích thước ảnh lớn.

● Tuần 10: Tiếp tục cải thiện hiệu suất và hoàn thiện sản phẩm, đồng thời

chuẩn bị tài liệu báo cáo cuối kỳ thực tập tại công ty.

20



×