TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH KHOA CÔNG NGHỆ PHẦN MỀM Báo Cáo Thực Tập Mobile Developer Công ty thực tập Công ty TNHH WAODATE Người phụ trách Nguyễn Hồng Vi[.]
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
KHOA CÔNG NGHỆ PHẦN MỀM
Báo Cáo Thực Tập
Mobile Developer
Công ty thực tập: Công ty TNHH WAODATE
Người phụ trách: Nguyễn Hồng Vinh – Technical Leader
Thực tập sinh: Phạm Đức Hoàng
Tp Hồ Chí Minh, tháng 06 năm 2022
Trang 3TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
KHOA CÔNG NGHỆ PHẦN MỀM
Báo Cáo Thực Tập
Mobile Developer
Công ty thực tập: Công ty TNHH NGUYỄN ĐÌNH NGHĨA (WAODATE)
Người phụ trách: Nguyễn Hồng Vinh – Technical Leader
Thực tập sinh: Phạm Đức Hoàng
Tp Hồ Chí Minh, tháng 12 năm 2022
Trang 4Lời Mở Đầu
Ngày nay, ngành công nghiệp phần mềm đã và đang là một trong những ngành nghề có sức phát triển vô cùng mạnh mẽ, chiến tỉ trọng lớn trong nền kinh tế toàn cầu
và không hề có dấu hiệu chậm lại Nhu cầu thị trường cho một sản phẩm phần mềm hiện nay là cao hơn bao giờ hết Đứng trước đà phát triển này, cùng với nhu cầu vô cùng lớn, đã có nhiều công ty ra đời nhằm đáp ứng thị trường
Một trong những công ty đó là TNHH MTV NGUYỄN ĐÌNH NGHĨA Đây
là một công ty tư nhân với văn phòng tại Q5, Thành phố Hồ Chí Minh
Là một sinh viên thuộc khoa Công nghệ phần mềm, em muốn mình được tiếp xúc với tất cả các loại, các cách, các hướng đi của việc phát triển phần mềm, đồng thời cảm thấy các mục tiêu và giá trị của công ty rất phù hợp với mục đích của bản thân, nên em đã quyết định chọn công ty là nơi bắt đầu thực tập, mài dũa thêm những kiến thức và kinh nghiệm thực tế trong những bước chập chững đầu tiên của sự nghiệp
Trang 5Lời Cảm Ơn
Trân trọng gửi lời cảm ơn đến Công ty TNHH NGUYỄN ĐÌNH NGHĨA(WAODATE) đã tạo điều kiện cho em có cơ hội được thực tập tại công ty
Em đã được học rất nhiều thứ từ sự chỉ dẫn nhiệt tình của các anh, chị trong công ty Em không những học được những kỹ thuật, kiến thức trong các dự án thực tế,
mà còn tích góp được cho bản thân những kinh nghiệm khi làm một nhân viên trong công ty, cách giao tiếp, làm việc nhóm trong các dự án chung Chân thành cảm ơn các anh chị, đặc biệt là anh Phong, đã giúp đỡ, hướng dẫn cũng như theo sát để góp ý em trong suốt quá trình thực tập
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
Phạm Đức Hoàng
Tp Hồ Chí Minh, ngày 13 tháng 06 năm 2022
Trang 6Nhận Xét Của Khoa
.
MỤC LỤC
GIỚI THIỆU CÔNG TY THỰC TẬP
Giới thiệu về công ty TNHH Nguyễn Đình Nghĩa
Một số dự án của công ty
NỘI DUNG THỰC TẬP
Tổng quan kế hoạch thực tập
Tuần 1 - Làm quen với công ty, setup công cụ, máy móc
Trang 7Tuần 2 - Tìm hiểu các thư viện hỗ trợ trong Flutter
Tuần 3 -Xây dựng giao diện và phát triển tính năng chọn ảnh, preview ảnh
Tuần 4 – Phát triển tính năng chat, gửi tin nhăn hình ảnh giữa người dùng
Tuần 5 – Tham gia cùng team hỗ trợ phát triển các tính năng của app
Tuần 6 - Tìm hiểu thực hành sử dụng OpenApi và một số dịch vụ hỗ trợ
Tuần 7 – Xử dụng OpenApi và Python với thư viện pandas để phát triển tính năng Tuần 8 - Tìm hiểu về các công cụ nhận dạng, phát hiện sự chân thật của khuôn mặt GIỚI THIỆU VỀ DỰ ÁN
TÀI LIỆU THAM KHẢO
TỔNG KẾT
Trang 8GIỚI THIỆU CÔNG TY THỰC TẬP
Giới thiệu về công ty TNHH Nguyễn Đình Nghĩa
https://waodate.com/
Waodate là công ty phần mềm tư nhân chuyên cung cấp các dịch vụ phần mềm và sản
xuất nội số các sản phẩm của công ty bao gồm các platform trực tuyến hoạt động trên nền tảng website và ứng dụng di động
Khách hàng của waodate nhắm tới là những người bận rộn có nhu cầu kết bạn với nhau
Đội ngủ nhân viên của waodate là những người trẻ, nhiệt huyết thấu hiểm mong muốn của những người độc thân muốn tìm kiếm một nủa cho mình Môi trường làm việc công bằng và thân thiện cho phép cá nhân đề xuất ý kiến, được tự tin thể hiện chính mình cũng như có cơ hội để vận dụng kiến thức , thể hiện ý tưởng, cống hiến với khả năng bản thân
Waodate lấy con người làm trọng tâm, tạo điều kiện cao nhất cho mỗi cá nhân thức đẩy sự phát triển để mỗi cá nhân trở thành phiên bản tốt hơn của chính mình
Các sản phầm của waodate sử dụng những quy trình phát triển Agile, kết hợp Code Review, Testing để đảm bảo chất lượng sản phẩm đầu ra
Waodate sử dụng PHP, NodeJS, React, Java, Kotlin và Flutter cho ứng dụng trên web
và mobile
Trang 9Một số dự án của công ty
Trang 10NỘI DUNG THỰC TẬP
Trong 2 tháng nhằm mục đích giúp sinh viên thực tập được đào tạo về kĩ năng lập
trình với vị trí Mobile Developer, đồ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 làm việc chuyên nghiệp
Tổng quan kế hoạch thực tập
Kéo dài từ ngày 14/04/2021 đến ngày 14/06/2022
Tuầ
Nhận xét của người hướng dẫn
1 Làm quen với công ty, setup công cụ,
máy móc, làm quen với dự án Anh Vinh
2 Tìm hiểu về các thư viện hỗ trợ phát
triển tính năng cho flutter Anh Vinh
3 Xây dựng và phát triển tính năng cho
dự án, tiếp xúc với các công cụ quản lý
state cho dự án thực tế
Anh Vinh
4 Làm quen với các công cụ giao tiếp với
backend như Postman, các thư viện hỗ
trợ như http, dio Xây dựng các tính
năng cho app
Anh Vinh
5 Xây dựng tính năng cho app Làm quen
với responsive design Anh Vinh
6 Tìm hiểu về đặc tả open api cho rest
apis, các công cụ và dịch vụ hỗ trợ phát
triển ứng dụng,
Anh Vinh
7 Xử dụng open api, python để xây dựng
dựng tính năng cho app Anh Vinh
8 Xây dựng SDK nhận diện khuôn mặt
với Kotlin và Tensorflow Anh Vinh
Trang 11Tuần 1 - Làm quen với công ty, setup công cụ, máy móc, tự học Flutter
Nội dung chi tiết
• Được nghe anh Nghĩa giới thiệu về công ty, quá trình thành lập và phát triển, cách công ty tổ chức và quản lý công việc hàng ngày
• Thực tập sinh setup máy móc làm việc, các phần mềm lập trình, các công cụ giao tiếp (Slack, Gmail, …, công cụ quản lý dự án (Gitlab, Figmar, )
• Sau đó thực tập sinh tự học thêm về Flutter framework để chuẩn bị tham gia vào dự án ở tuần tiếp theo
Kết quả
• Hiểu thêm về công ty Waodate, quá trình thành lập và phát triển
• Có thêm kỹ năng về sử dụng Figmar, Jira, Email trong công việc, làm việc nhóm, giao tiếp tốt hơn
• Có thêm hiểu biết về ngôn ngữ lập trình Dart và Flutter framework
Tuần 2 - Tìm hiểu về các thư viện hỗ trợ trong Flutter
Nội dung chi tiết
• Được anh Vinh (người phụ trách/hướng dẫn) giới thiệu tổng quát về dự án hiện tại mà team đang nghiên cứu và triển khai
• Team Mobile đang tập trung phát triển tính năng chat cho dự án cần thực hiện xây dựng các tính năng liên quan tới native cần tìm hiểu về các plugin cũng như thư viện để thực hiện
• Tự học tìm kiếm và đọc source các thư viện hỗ trợ
• Tìm hiểu về các công cụ, phần mềm đang được sử dụng trong dự án
Kết quả
• Hiểu rõ về team cũng như dự án mà mình được phân vào Nêu ý tưởng cũng như để xuất khi lựa chon các các thư viện và công cụ với Lead và được chấp nhận
• Có thêm được những kiến thức liên quan đến phát triển tính năng của mobile app
Trang 12Tuần 3 – Xây dựng giao diện và phát triển tính năng chọn ảnh, camera
review.
Nội dung chi tiết
• Sau thời gian tìm tòi và nghiên cứu bản thân được giao nhiệm vụ xây dụng tính năng chọn hình ảnh trên hệ thống vơi giao diện được thiết kế từ designer Yêu cầu ảnh được chọn phải được hiển thị trong grid và có camera review, phải giải giải phóng vùng nhớ cũng như thực hiện phân trang để cải thiện hiệu năng của app
• Xử dụng 2 thư viên hỗ trợ của flutter là photo_manager và camerawesome, photo_view
Kết quả
• Xây dựng được tính năng chọn ảnh với ui được thiết kế nhận từ designer thõa mãn yêu cầu của nhiệm vụ được giao mặc dù vẫn còn một số lỗi liên quan đến giải phóng vùng nhớ
• Code sau khi review đã được yêu cầu refactor lại để logic chặt chẽ hơn cũng như thống nhất style code trong app
Tuần 4 – Nhận task liên quan tới gửi tin nhắn giữa các người dùng được phân quyền.
Nội dung chi tiết
• Nhận task từ lead yêu cầu viết tính năng gửi ảnh giữa người dùng với nhau thõa mãn yêu cầu nghiệp vụ được mô tả trong task
• Tham gia trao đổi với team backend để thực hiện nhiệm vụ được giao
Kết quả
• Task hoàn thành đúng thời gian
• Gặp một lỗi bug làm tốn khá nhiều thời gian để tìm cách khắc phục với sự giúp
đỡ từ lead
Trang 13Tuần 5 – Tham gia cùng team để phát triển một số tính năng khác của app Nội dung chi tiết
• Nhận nhiệm vụ của lead tham gia vào sửa các lỗi liên quan đến ui trong app
• Tham gia viết một vài screen trong app
Kết quả
• Hiểu hơn về dự án đang phát triển
• Làm quen được với một số thư viện, partern quản lý state phổ biến được sử dụng trong thực tế
• Hiểu biết mới về cách thức xây dựng ứng dụng mobile application, responsive trên nhiều thiết bị với nhiều kích thức và độ phân giải khác nhau
Tuần 6 - Tìm hiểu thực hành sử dụng OpenApi Specification
Nội dung chi tiết
• Tìm hiểu về chuẩn open api định dạng mô tả api dành cho rest apis
• Thực hành viết file script và sử dụng công cụ open api generator và stoplight service để generate các đầu api xử dụng làm mock api khi backend chưa kịp xây dựng
Kết quả
• Có thêm kiến thức về open api cũng như hiểu biến thêm trong thực tế fontend và backend hoàn toàn có thể làm việc độc lập với nhau với sự trợ giúp của open api cũng như các công cụ open api generator cũng như stoplight service
Trang 14Tuần 7 – Xử dựng open api và python để xây dựng tính năng cho app.
Nội dung chi tiết
• Nhận nhiệm vụ xây dựng bộ dữ liệu địa phận hành chính quốc gia để xử dụng trong app và xử dụng
• Xử dụng python và thư viện panda để trích xuất dữ liệu từ file excel chuyển về format json để sử dụng trong app
Kết quả
• Xây dựng thành công bộ dữ liệu khu vực hành chính quốc gia và xây dựng các tính năng liên quan
• Đấu dữ liệu với mock api sử dụng stoplight service và open api generator
Tuần 8 – Xử dụng Kotlin kết hợp với team AI xây dựng bộ SDK nhận diện khuôn mặt, phát hiện độ chân thật của khuôn mặt.
Nội dung chi tiết
• Các dự án của công ty bị pending trong thời gian chờ đợi quyết định mới lead chỉ đinh cho team hợp tác với team ai xây dựng bộ sdk nhận diện khuôn mặt và xác định độ chân thật để xử dụng sau này yêu cầu sdk được viết bằng kotlin hoặc java
• Các hướng giải quyết:
o Nghiên cứu một số ưu và nhược điểm của kotlin và java
o Tìm hiểu về các thư viện của android hỗ trợ cho việc nhận dạng khuôn mặt cũng như các thư viện hỗ trợ thao tác với platform native, kết hợp với team AI để lựa chọn công cụ phát triển
• Quyết định áp dụng xử dụng Kotlin làm ngôn ngữ phát triển, tensorflow plugin làm thư viện hỗ trợ phát triển
Kết quả
• Hiểu thêm về ngôn ngữ, các thao tác sử lý bất đồng bộ của Kotin, hiểu thêm về cách thức thức một app cross platform giao tiếp với native, cũng như hiểu biết mới về cách thức kết hợp mô hình máy học vào phát triển tính năng trong dự án thực tế
Trang 15GIỚI THIỆU VỀ DỰ ÁN Tổng quan
Dự án xây dựng bộ Face SDK được triển khai dựa trên yêu cầu của trưởng nhóm phát
triển phần mềm trong thời gian dự án hiện tại bị pedding chờ lên planning mới Dự án
được thực hiện nhằm chuẩn bị sẵn sàng các nguồn lực để chuẩn bị cho các dự án tiếp
theo cũng như để tạo sự liên kết giữa các team cùng làm việc với nhau
Thực hiện
Trước khi vào công ty bản thân em ở trường cũng đã có một số hiểu biết sơ bộ về việc
ứng dụng các mô hình máy học trong thực tế để hỗ trợ phát triển các tính năng của
phần mềm và một số kiến thức nền tảng về lập trình di động với các ngôn ngữ native
như Kotlin và Java cũng như một số công cụ và thư viện hỗ trợ xử lý hình ảnh như
Tensorflow và OpenCV Dự án là một cơ hội lớn để em được trực tiếp tham gia học
hỏi thêm về cách thức để áp dụng các mô hình này trong thực tế để đáp ứng các
nghiệp vụ của doanh nghiệp Thời gian đầu của dự án mặc dù đã có một số khái niệm
được trang bị khi học các môn ở trường, tuy nhiên khi áp dụng vào thực tế khi áp
dụng bản thân em còn thấy mình còn rất nhiều thứ cần tìm hiểu và học hỏi thêm
Kết quả
Cùng với team AI, cả đội đã hoàn thành dự án với hơn 2 tuần thực hiện từ việc lựa chọn chọn công cụ cho tới việc học các kiến thức về native cần có để thực hiện dự án Qua dự án này bằng việc trải nhiệm thức tế em đã nắm rõ hơn về cách thức tổ chức triển khai một dự án trong môi trường doanh nghiệp sự chuyên biệt trong từng bộ phận cũng như sự liên kết phối hợp giữa các bên để hoàn thành một mục tiêu chung Cùng với các kiến thức mới đạt được về mặt
kỹ thuật như sử lý bất đồng bộ trong Kotlin, thực hiện kiểm thử và điều trỉnh model, gọi API đều là những kiến thức vô cùng quý giá mà em đạt được
Trang 16Một số hình ảnh minh họa về dự án
Trang 17TÀI LIỆU THAM KHẢO
[1]https://oai.github.io/Documentation/introduction.html
[2]https://github.com/OpenAPITools/openapi-generator
[3]https://docs.stoplight.io/docs/platform/
[4]https://www.tensorflow.org/lite
[5]https://pub.dev/packages/photo_manager
[6]https://docs.flutter.dev/development/platform-integration/platform-channels
[7]https://developer.android.com/kotlin/coroutines
[8]https://developer.android.com/reference/kotlin/androidx/camera/core/ImageAnalysis
[9] Cùng một số tài liệu nội bộ của dự án
Trang 18TỔNG KẾT
Qua hơn 2 tháng thực tập ở công ty Waodate em đã cống hiến sức mình vào công việc của công ty trong việc xây dựng các tính năng cũng như tìm hiểu và vận dụng các kiến thức đạt được vào trong công việc Thay lời muốn nói em xin chân thành cảm ơn ban lãnh đạo của Waodate đã tạo điều kiện cho em hoàn thành khóa thực tập này Kì thực tập vừa qua là một trải nghiệm quý báu với em cho chặng được tiếp tới Qua kì thực tập này bản thân em phát hiện và học hỏi được rất nhiều từ các nhiệm vụ được giao cũng như những thiếu sót về mặt kỹ năng cũng như chuyên môn mình cần phải trao dồi Quan trong nhất kì thực tập này giúp em chuẩn bị cho mình một sự tự tin hơn vào bản thân cho những công việc sau này cũng như giúp em biết mình mạnh và yếu ở mặt nào để từ đó cái thiện cũng như những thứ doanh nghiệp cần ở một ứng viên