TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC VÀ KỸ THUẬT THÔNG TIN BÁO CÁO THỰC TẬP XÂY DỰNG ỨNG DỤNG KẾT NỐI CAMERA IP TRÊN NỀN TẢNG DI ĐỘNG Công ty thực tập : KiteMetric Người ph
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC VÀ KỸ THUẬT THÔNG TIN
BÁO CÁO THỰC TẬP
XÂY DỰNG ỨNG DỤNG KẾT NỐI CAMERA IP TRÊN NỀN TẢNG DI ĐỘNG
Công ty thực tập : KiteMetric Người phụ trách : Phạm Hoàng Hải Thực tập sinh : Trần Văn Bảo
Trang 3LỜI MỞ ĐẦU
Với sự phát triển vượt bậc của Công nghệ Thông tin trong thời đại số hoá, cuộc sống con người được hỗ trợ rất nhiều bởi những thiết bị điện tử, máy vi tính, điện thoại thông minh,… Có thể kể đến các ứng dụng di động với nhiều mục đích sử dụng khác nhau Việc xây dựng các ứng dụng cho điện thoại thông minh được xem như một ngành công nghiệp mới đầy tiềm năng Những phần mềm, ứng dụng cho điện thoại thông minh hiện nay rất phong phú, đa dạng trên các hệ điều hành di động đáp ứng hầu hết nhu cầu
sử dụng của mọi người như công việc, giải trí, quản lý, an ninh,… Trong đó, nhóm quan tâm đến vấn đề kết nối di động với các thiết bị điện tử, cụ thể hơn đó chính là Camera IP Công dụng chính của Camera là theo dõi hình ảnh kết hợp với sự linh hoạt của di động
có thể giúp con người dễ dàng hơn trong việc quản lý các hoạt động chung, kịp thời cảnh báo cũng như xử lý những vấn đề bất trắc
Sau một thời gian học tập tại trường, với mong muốn trao dồi kinh nghiệm thực tế, cũng như tham gia làm việc trong môi trường doanh nghiệp Vì vậy bản thân quyết định chọn KiteMetric – một công ty với môi trường làm việc lý tưởng, chuyên nghiệp, năng động để thực hiện dự án lần này
Trang 4LỜI CẢM ƠN
Đầu tiên em xin gửi lời cảm ơn chân thành đến quý công ty KiteMetric đã tạo điều kiện giúp em có cơ hội thực tập tại công ty Thời gian 3 tháng thực tập dưới sự hướng dẫn nhiệt tính của thầy Phạm Hoàng Hải, bản thân em đã nhận được nhiều kiến thức mới
và quan trọng cho quá trình xây dựng ứng dụng kết nối Camera IP Nhờ sự chỉ dẫn, định hướng của thầy đã giúp em và nhóm triển khai thuận lợi, thực hiện yêu cầu trong dự án
Em xin cảm ơn các bạn Trần Lê Bảo Châu, Phan Thị Hồng Cúc, Đoàn Thị Thanh Hiếu, Nguyễn Trọng Thuận đã cùng em xây dựng ứng dụng kết nối Camera IP Nhóm đã giúp em bổ sung những kiến thức mới để có thể hoàn thành tốt đề tài thực tập
Bên cạnh đó, em cũng xin gửi lời cảm ơn chân thành đến các thầy cô giáo trường Đại học Công nghệ Thông tin, ĐHQG – HCM nói chung, thầy Nguyễn Tấn Trần Minh Khang và các thầy cô trong Khoa Công nghệ Phần mềm nói riêng đã giảng dạy những kiến thức nền tảng quan trọng thời gian qua giúp em hoàn thành đề tài lần này
Sau đây là báo cáo kết quả của quá trình tìm hiểu, nghiên cứu, thực hiện trong thời gian thực tập, bên cạnh đó sẽ không tránh khỏi những thiếu sót Em rất mong nhận được những lời nhận xét và đóng góp của quý thầy cô để bài báo cáo được hoàn thiện
Em xin chân thành cảm ơn!
Trần Văn Bảo
Thành phố Hồ Chí Minh, ngày 17 tháng 6 năm 2022
Trang 5NHẬN XÉT CỦA KHOA
Trang 6
MỤC LỤC
Chương 1: GIỚI THIỆU CÔNG TY THỰC TẬP 7
1 Giới thiệu công ty 7
2 Sản phẩm của công ty 8
Chương 2: Nội dung thực tập 10
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 10
2 Nghiên cứu kỹ thuật 11
2.1 Công cụ quản lý dự án 11
2.2 Công cụ thiết kế giao diện – Figma 12
2.3 Ngôn ngữ lập trình – Dart 12
2.4 Môi trường phát triển ứng dụng – Android Studio 13
2.5 Nền tảng phát triển ứng dụng – Flutter 14
3 Thực hiện project 14
4 Lịch làm việc 16
Chương 3: Chi tiết về project 19
1 Giới thiệu về project 19
2 Kế hoạch 19
TÀI LIỆU THAM KHẢO 22
TỔNG KẾT 23
Trang 7Chương 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1 Giới thiệu công ty
Công ty KiteMetric được thành lập vào năm 2012, hoạt động trong các lĩnh vực về phần mềm, học máy, thiết kế với mục tiêu xây dựng các sản phẩm sáng tạo, giải quyết một số thách thức kỹ thuật thú vị nhất trên thế giới cho các công ty khởi nghiệp và doanh nghiệp Công ty sẽ biến những ý tưởng của khách hàng thành những sản phẩm có chất lượng cao nhất, giúp các công ty khởi nghiệp và doanh nghiệp đẩy nhanh quá trình phát triển sản phẩm để đưa sản phẩm ra thị trường với tốc độ nhanh nhất
Hình 1 Logo của công ty KiteMetric
Công ty cung cấp các sản phẩm từ thiết kế đến phát triển sản phẩm
Hệ thống công nghệ bao gồm : Nodejs, Java, Python, Javascript, ReactJS, VueJS, Docker, Kubernetes, phát triển ứng dụng di động native (iOS, Android, Windows)/cross-platform (React Native)
Hệ thống học máy: Deep learning frameworks (Tensorflow, PyTorch, Caffe2), các thuật toán học máy cơ bản, phát hiện đối tượng, nhận dạng, truy vết, video và xử lý ảnh Các lĩnh vực kinh doanh:
̶ Phát triển Web & Di động: Thiết kế và xây dựng các sản phẩm hiệu suất cao với trải nghiệm người dùng tuyệt vời trên tất cả các nền tảng
Trang 8̶ Học máy: Xây dựng các ứng dụng AI để tự động hóa các hoạt động thủ công, cải thiện hoạt động kinh doanh với trí thông minh theo hướng dữ liệu
̶ Trải nghiệm người dùng: Thiết kế mô hình, thử nghiệm các khái niệm để xác thực
ý tưởng và đưa ra thiết kế UI / UX sáng tạo để mang lại tính độc đáo của bất kỳ sản phẩm nào
̶ Tư vấn công nghệ: Giúp định hình ý tưởng của khách hàng, xác định các rào cản
kỹ thuật, đề xuất các giải pháp và công nghệ phù hợp
2 Sản phẩm của công ty
FaceSwap FaceSwap là một ứng dụng thú vị cho phép người dùng thay thế khuôn
mặt nhân vật nổi tiếng trong ảnh bằng khuôn mặt của họ bằng cách sử dụng một bức ảnh duy nhất từ máy ảnh Ứng dụng này có sẵn trên cả Android và iOS với hơn một nửa triệu người dùng
Foresight Visualization Platform Công ty đã xây dựng một bộ phần mềm hoàn
chỉnh từ nhập, xử lý, quản lý và hiển thị cho dữ liệu 2D và 3D trao quyền cho các phương tiện tự động và rô bốt di động Đây là một dự án hợp tác với Foresight AI Inc.,
một công ty khởi nghiệp được tài trợ tốt ở Thung lũng Silicon
Smart Retail Công ty đang xây dựng một nền tảng phân tích tại cửa hàng bằng cách
sử dụng các thuật toán học máy và học sâu tiên tiến để xử lý và phân tích hành vi của
khách hàng trong các cửa hàng thực
Blanket Blanket Inc là một công ty khởi nghiệp được tài trợ tốt, được thành lập ở
trung tâm Thành phố New York Công ty đã giúp Blanket xây dựng và ra mắt sản phẩm ngay từ ngày đầu tiên Sản phẩm này là một ứng dụng dành cho thiết bị di động áp dụng kết hợp các thuật toán để thực hiện nhiệm vụ, đo lường và khen thưởng hiệu suất của nhân viên, đồng thời, giúp tăng cường hiệu quả trong quản lý nhà hàng và hoạt động
hàng ngày của họ
Trang 9CoinMarket CoinMarket là công cụ quản lý danh mục đầu tư tối ưu dành cho tiền
điện tử có sẵn trên nhiều nền tảng (Android/iOS) phục vụ hàng trăm nghìn khách hàng
trên khắp thế giới
Vinasun Taxi Cùng với một nhóm khác, công ty đã xây dựng Hệ thống Điều phối
Taxi Thông minh (tương tự như Uber) cho Vinasun, một trong những công ty taxi lớn nhất tại Việt Nam Nền tảng này đã giảm đáng kể chi phí điều phối dựa trên con người
truyền thống, tăng khả năng sử dụng xe và giảm thời gian chờ đợi cho khách hàng
CapShare Capshare là một mạng xã hội di động cho phép người dùng chia sẻ những
khoảnh khắc và trải nghiệm tuyệt vời của họ với gia đình, bạn bè và những người khác Ứng dụng này cung cấp một công cụ chỉnh sửa video mạnh mẽ nhưng dễ sử dụng cho phép người dùng ghép các video, hình ảnh và âm nhạc lại với nhau như một người
chuyên nghiệp
Tapviral Một nền tảng mạng có ảnh hưởng giúp đưa ứng dụng của khách hàng lên
các mạng này ngay lập tức Khách hàng cũng sẽ có thể xây dựng các gói tùy chỉnh để phù hợp với kế hoạch của mình Ứng dụng sẽ có mức tăng trưởng tự nhiên, với số lượt
tải xuống và mức độ tương tác của người dùng ngày càng tăng
Trang 10Chương 2: NỘI DUNG THỰC TẬ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ác giá trị của công ty:
̶ Agile & Lean Chúng tôi lặp đi lặp lại một cách nhanh chóng trong thời
gian chạy nước rút một tuần để giúp khách hàng cung cấp MVP của sản phẩm để đánh giá thị trường với ít nỗ lực nhất Chúng tôi tự hào về công việc của mình và tích cực đóng góp ý kiến của mình để giúp làm sắc nét logic kinh doanh
̶ Tính minh bạch Chúng tôi đầu tư vào các công cụ năng suất để lập kế
hoạch và theo dõi tiến độ công việc (JIRA, Trello), ghi chép đầy đủ quy trình của chúng tôi (Confluence, Basecamp) và giao tiếp hàng ngày (Slack)
̶ Về chất lượng Chúng tôi có một trong những đội ngũ tốt nhất với hơn 10
năm kinh nghiệm trong ngành Các kỹ sư tài năng của chúng tôi được lựa chọn kỹ càng thông qua quy trình phỏng vấn theo tiêu chuẩn thung lũng Silicon và được đào tạo bài bản bởi các kỹ sư hàng đầu tại Hoa Kỳ Chúng tôi áp dụng quy trình kỹ thuật tiêu chuẩn công nghiệp: TDD, pair programming, CI/CD để cung cấp các sản phẩm với chất lượng cao nhất
̶ Bảo mật & Quyền riêng tư Chúng tôi thực hiện các tiêu chuẩn bảo mật
cao để đảm bảo dữ liệu khách hàng được bảo vệ tốt Trong quá trình này, chúng tôi thường xuyên kiểm tra các sản phẩm để tìm các vấn đề bảo mật tiềm ẩn Đồng thời, các điều khoản NDA dành cho khách hàng của chúng tôi luôn được tôn trọng
Kết quả: Hiểu thêm về công ty KiteMetric, văn hóa, giá trị, quá trình thành lập và
phát triển Có thêm các kỹ năng về việc quản lý nhóm, làm việc có kế hoạch và
cách thức tổ chức công việc
Trang 112 Nghiên cứu kỹ thuật
Trong quá trình xây dựng một ứng dụng kết nối Camera IP, cần sử dụng các công cụ
và kỹ thuật sẵn có phục vụ cho việc quản lý, kiểm soát và theo dõi các vấn đề xảy ra trong dự án, liên lạc và trao đổi thông tin giữa các thành viên Hơn nữa để xây dựng hoàn chỉnh một ứng dụng cần các kỹ thuật lập trình, nền tảng phát triển ứng dụng, môi trường thử nghiệm và đặc biệt là công cụ thiết kế giao diện
2.1 Công cụ quản lý dự án
Thời gian: 1 tuần
Nội dung:
Tìm hiểu cách hoạt động của các công cụ quản lý dự án:
̶ Jira: là công cụ để quản lý dự án, kiểm soát và theo dõi các vấn đề xảy ra
trong dự án, quản lý các phản hồi từ phía người sử dụng
̶ Slack: là một ứng dụng làm việc nhóm giúp team làm việc cùng nhau hiệu
quả hơn với sự tương tác, trao đổi qua khung chat linh hoạt Slack lại tập trung phát triển các tính năng giúp việc tương tác nhóm mạnh mẽ, gắn kết hơn Không giống email, các hội thoại trên phần mềm dễ tìm kiếm và theo dõi tại mỗi nhóm/dự án, các thành viên có thể gọi, trao đổi, chia sẻ dữ liệu, các tệp và kết nối với các ứng dụng khác do có mở cổng API trên phần mềm
̶ Trello: là một ứng dụng làm việc nhóm nổi tiếng thế giới với dạng bảng
Kanban, quản lý đầu công việc theo các danh mục chính là To do, Doing và Done
Thực hiện: Tìm hiểu cách thức hoạt động cũng như các chức năng của từng
công cụ và thực hành các thao tác cơ bản Áp dụng công cụ vào các công việc của nhóm
Trang 12Kết quả: Hoàn thành thao tác cơ bản trên các công cụ quản lý dự án Nắm rõ
các chức năng của mỗi công cụ Nhóm sử dụng công cụ để trao đổi, tương tác
và quản lý công việc
2.2 Công cụ thiết kế giao diện – Figma
Thời gian: 3 tuần
Nội dung: Nghiên cứu cách sử dụng các thành phần, tính năng cơ bản để thiết
kế giao diện cho ứng dụng Thực hiện thiết kế giao diện cơ bản cho ứng dụng kết nối Camera IP
Với giao diện thân thiện và dễ sử dụng, Figma nhanh chóng nổi lên như một công cụ design UI phổ biến trong cộng đồng công nghệ toàn cầu Một số brand lớn sử dụng Figma cho tới thời điểm hiện tại gồm có: Twitter, Microsolf, GitHub và Dropbox
Thời gian gần đây trong giới thiết kế thường nhắc tới figma, adobe xd, sketch nhiều thay vì photoshop (PTS) như trước kia Design cả cho Mobile App và nhận thấy rằng PTS thực sự quá chậm và gặp nhiều khó khăn khi design ui/ux cho cả web & mobile app Khi xu thế dịch chuyển chú trong vào UX nhiều hơn thì sinh ra một số công cụ design dạng vector như Sketch và Figma, đa số các deginer thực sự hài lòng về 2 tool design này: nhanh, thông minh, dễ quản lí dự
án và tương tác với nhau trên bản thiết kế
Thực hiện: Nhóm lên kế hoạch nghiên cứu, trao đổi và thiết kế các màn hình
Trang 13Nội dung: Nghiên cứu, tìm hiểu, chạy các mã code đơn giản để tạo một
constructor, nắm rõ các cách khác nhau để chỉ định tham số, khi nào và làm thể nào để tạo getters và setters, cách Dart xử lý bảo mật, functional programming trong Dart,
Dart là ngôn ngữ lập trình cho Flutter – bộ công cụ giao diện người dùng của Google để xây dựng các ứng dụng Mobile, Web và Desktop app đẹp, được biên dịch nguyên bản từ một cơ sở mã code duy nhất
Thực hiện: Nhóm lên kế hoạch nghiên cứu, trao đổi và lập trình ứng dụng sử
dụng ngôn ngữ Dart
Kết quả: Hoàn thành xây dựng ứng dụng bằng ngôn ngữ Dart trên nền tảng
Flutter
2.4 Môi trường phát triển ứng dụng – Android Studio
Thời gian: 1 tuần
Nội dung: Nghiên cứu cách hoạt động và thực hiện cài đặt môi trường
Android Studio là IDE chính thức được sử dụng trong phát triển ứng dụng Android dựa trên IntelliJ IDEA
Chức năng chính của Android Studio là cung cấp các giao diện giúp người dùng có thể tạo các ứng dụng và xử lý các công cụ file phức tạp sau hậu trường Ngôn ngữ lập trình được sử dụng trong Android Studio là Java và nó sẽ được cài đặt sẵn trên thiết bị của bạn
Khi sử dụng Android Studio thì bạn chỉ cần viết, chỉnh sửa và lưu trữ chúng trên các dự án của mình và các file nằm trong dự án đó Đồng thời, Android Studio còn cung cấp quyền truy cập vào Android SDK
Thực hiện: Nhóm cài đặt môi trường phát triển cho ứng dụng
Kết quả: Hoàn thành cài đặt môi trường trên tất cả các máy Bắt đầu xây dựng
ứng dụng trên nền tảng Flutter
Trang 142.5 Nền tảng phát triển ứng dụng – Flutter
Thời gian: 8 tuần
Nội dung: Xây dựng ứng dụng kết nối Camera IP trên nền tảng Flutter
Khi nhắc đến việc làm sao để tạo ra một ứng dụng mobile thì thứ mọi người sẽ lập tức nghĩ ngay đến là các ứng dụng gốc (native app: Android và iOS), nhưng bên cạnh đó vẫn còn rất nhiều công cụ có thể giúp bạn tạo ra 1 ứng dụng di
động theo ý muốn của mình Và Flutter là một trong số đó
Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do Google phát triển được sử dụng để tạo ra các ứng dụng gốc (native app) cho Google
Flutter gồm 2 thành phần quan trọng:
̶ Một SDK (Software Development Kit): Một bộ sưu tập các công cụ sẽ giúp bạn phát triển các ứng dụng của mình Điều này bao gồm các công cụ để biên dịch mã của bạn thành mã máy gốc (mã cho iOS và Android)
̶ Một Framework (UI Library based on widgets): Một tập hợp các thành phần giao diện người dùng (UI) có thể tái sử dụng (button, text inputs, slider, v.v.) giúp bạn có thể cá nhân hóa tùy theo nhu cầu của riêng mình
Thực hiện: Xây dựng ứng dụng kết nối Camera IP trên nền tảng Flutter
Kết quả: Hoàn thành xây dựng ứng dụng với các chức năng kết nối Camera IP
3 Thực hiện project
Dự án được thực hiện theo quy trình quản lý và phát triển phần mềm Scrum Mỗi giai đoạn trong quy trình được gọi là Sprint Cụ thể trong dự án này, mỗi Sprint được thực hiện trong khoảng thời gian không ngắn hơn 1 tuần và không dài hơn 1 tháng Trong các
dự án được quản lý bởi quy trình phát triển phần mềm Scrum thì mỗi Sprint sẽ bao gồm các bước Sprint Planning, Daily Sprint, Sprint Review và Sprint Retrospective
̶ Sprint Planning: Là sự kiện diễn ra đầu Sprint để lên kế hoạch làm việc cho toàn
bộ Sprint Sự kiện này được chia làm 3 phần (3 câu hỏi Why – What – How) với 3