(Tiểu luận) báo cáo thực tập chuyên sâu công ty cổ phần tinasoft việt nam h

27 75 0
(Tiểu luận) báo cáo thực tập chuyên sâu công ty cổ phần tinasoft việt nam h

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Dự án SS IoT Devices được Tinasoft sử dụng những công nghệ hiện đại nhấtnhư: Nest Js, ReactJs, AWS, S3, PostgresDB, MQTT, K8S, Docker, ElasticSearch …với những tính năng nổi bật như: T

BÁO CÁO HỌC PHẦN BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA KỸ THUẬT ĐIỆN TỬ - BÁO CÁO THỰC TẬP CHUYÊN SÂU CÔNG TY CỔ PHẦN TINASOFT VIỆT NAM Giảng viên: Nguyễn Quốc Uy Họ tên : Phùng Công Nguyên Mã sinh viên : B19DCDT161 Lớp : D19DTMT1 Niên khóa : 2019 - 2024 HÀ NỘI-2023 BÁO CÁO HỌC PHẦN Phụ lục LỜI NÓI ĐẦU Chương : GIỚI THIỆU VỀ CÔNG TY 1.1 Giới thiệu Tinasoft 1.1.1 Cái nhìn chung Tinasoft 1.1.2 Công việc Tinasoft 1.2 Các dự án tiêu biểu Tinasoft 1.2.1 1.2.2 Dự án Easy Tinasoft Việt Nam Hệ thống ERP cho Smart Corp 1.2.3 Dự án SS IoT Devices Tinasoft Việt Nam Chương : NỘI DUNG THỰC TẬP TẠI CÔNG TY 2.1 Xây dựng ứng dụng nhận diện khuôn mặt 2.1.1 Thiết lập môi trường 2.1.2 2.2 Khái quát ứng dụng Giao diện xác thực 12 2.2.1 Cách thức khởi tạo 12 2.2.2 Xây dựng chức cập nhật liệu khuôn mặt để mã hóa 12 2.2.3 Thiết kế giao diện 14 2.3 Giao diện đăng ký 15 2.3.1 Cách thức khởi tạo 15 2.3.2 Xây dựng chức đăng ký cập nhật tên người dùng 15 2.4 Cơ sở liệu 17 2.4.1 Thiết lập môi trường 17 2.4.2 Luồng liệu Back-end 17 2.5 Docker 22 2.5.1 Nền tảng lý thuyết 22 2.5.2 2.5.3 Thiết lập môi trường 22 Xây dựng Docker image cho ứng dụng nhận diện khuôn mặt 22 Chương : KẾT QUẢ SAU KÌ THỰC TẬP 25 3.1 Thành sau thời gian thực tập 25 KẾT LUẬN 26 BÁO CÁO HỌC PHẦN LỜI NÓI ĐẦU Đầu tiên, em xin gửi lời cảm ơn chân thành đến Học viện Cơng nghệ Bưu Viễn thông tạo hội cho chúng em thực tập công ty Tinasoft Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến thầy Nguyễn Quốc Uy, anh Võ Việt Hồng nhiệt tình dẫn, truyền đạt kiến thức, kinh nghiệm cho em suốt thời gian thực tập vừa qua Trong thời gian tham gia, em có thêm cho nhiều kiến thức bổ ích, tinh thần học tập, làm việc hiệu quả, nghiêm túc Đây chắn kiến thức quý báu, hành trang để em vững bước sau Thời lượng thực tập công ty khơng nhiều, có cố gắng hiểu biết kỹ việc thực tập em cịn hạn chế Do đó, báo cáo em cịn có thiếu sót chỗ chưa xác, kính mong thầy xem xét góp ý giúp báo cáo hồn thiện Em xin chân thành cảm ơn! Hà Nội, ngày 29 tháng năm 2023 Sinh viên thực Phùng Công Nguyên BÁO CÁO HỌC PHẦN Chương : GIỚI THIỆU VỀ CÔNG TY 1.1 Giới thiệu Tinasoft 1.1.1 Cái nhìn chung Tinasoft Được thành lập vào năm 2018, Tinasoft nhanh chóng khẳng định vị Nhà tư vấn Phát triển Phần mềm Chuyển đổi Số hàng đầu Việt Nam Kinh nghiệm, chuyên môn, sở vật chất trang bị tốt nhất, quản lý chuyên nghiệp cam kết mang đến cho khách hàng hài lịng tối đa đổi lại chúng tơi đạt tăng trưởng nhanh chóng bền vững năm qua Để trở thành điểm đến cho nhu cầu phần mềm, Tinasoft tổ chức thành nhóm gồm cơng ty hệ thống khác bao gồm lĩnh vực chuyên môn liên quan, cụ thể Tư vấn chuyển đổi kỹ thuật số, Phát triển phần mềm, Công nghệ thông tin Nhân & Tìm nguồn cung ứng Với năm có mặt thị trường, Tinasoft xây dựng mạng lưới rộng lớn đối tác chuyên gia, người sát cánh Tinasoft để cung cấp dịch vụ phát triển giải pháp phần mềm tinh vi, hiệu quả, theo yêu cầu đặc biệt cho khách hàng toàn giới Cho đến nay, hỗ trợ khách hàng thành công 300 dự án phần mềm 1.1.2 Công việc Tinasoft Bên cạnh trọng tâm Tinasoft dịch vụ Gia công phần mềm & Chuyển đổi số, chúng tơi cung cấp giải pháp cơng nghệ tồn diện như: ERP, EAM, SCE, d/EPM, WMS… Tinasoft lựa chọn trở thành đối tác thức cơng nghệ hàng đầu giới AWS, INFOR (USA), CityXsys, Fast React… Giúp doanh nghiệp đạt lợi cạnh tranh thị trường với tốc độ khả trích xuất thơng tin, tự động hóa cơng việc thủ công tẻ nhạt, hỗ trợ làm việc sáng tạo, thơng minh Tinasoft đưa mơ hình hợp tác đa dạng như: Tăng cường nhân CNTT (Che lấp khoảng trống tài nguyên kỹ nhóm CNTT nội bạn với chuyên gia bạn trực tiếp quản lý.), Đội tự quản (Nhận nhóm tự quản PM Trưởng nhóm Tinasoft lãnh đạo để thực sáng kiến CNTT bạn.), Th ngồi tồn (Chúng tơi chăm sóc (các) chức CNTT cụ thể bạn với toàn trách nhiệm chất lượng rủi ro liên quan) BÁO CÁO HỌC PHẦN 1.2 Các dự án tiêu biểu Tinasoft 1.2.1 Dự án Easy Tinasoft Việt Nam Tinasoft Việt Nam tự hào triển khai thành công dự án Easy với đầy đủ tính phần mềm quản lý tối ưu Với phần mềm quản lý dịch vụ chất lượng cao Tinasoft, nhận phản hồi tích cực từ phía khách hàng Vì vậy, chúng tơi xin gi ới thiệu dự án Easy đến doanh nghiệp muốn triển khai Hình 1.1: Dự án Easy Dự án Easy Tinasoft triển khai dạng mơ hình Agile Scrum với đội ngũ nhân chuyên nghiệp gồm 17 người, có PM, Scrum Master, BA, Test Lead, Tester, BE, FE, Designer Dự án Easy Tinasoft sử dụng công nghệ đại như: Nest Js, ReactJs, AWS, S3, Postgres DB, MQTT, K8S, Docker, ElasticSearch … với tính bật như:  Phần mềm quản lý cơng ty, chi nhánh, phịng ban, chức vụ, nhân Quản Lý Luồng Đơn Hàng, tạo, giao-nhận, xử lý chăm sóc khách hàng  cơng ty Tích hợp thống kê báo cáo liệu nhân sự, đơn hàng     Quản lý dịch vụ, gói dịch vụ công ty Quản Lý Mua Bán Sản Phẩm Trong Công Ty, nhập xuất sản phẩm Excel Quản Lý Xuất Nhập Kho  Với tính ưu việt trên, doanh nghiệp giảm thiểu tối đa chi phí khâu quản lý thống kê, từ giúp doanh nghiệp tối ưu quy trình sản xuất kinh doanh BÁO CÁO HỌC PHẦN 1.2.2 Hệ thống ERP cho Smart Corp Hệ thống ERP hệ thống hoạch định nguồn lực doanh nghiệp hỗ trợ chủ doanh nghiệp điều hành hoạt động kinh doanh hiệu Hệ thống bao gồm quản lý hiệu suất doanh nghiệp, phần mềm giúp lập kế hoạch, lập ngân sách, dự đoán báo cáo kết tài tổ chức Hình 1.2: Hệ thống ERP  Tại nên sử dụng hệ thống ERP cho Smart Corp ?  Quản lý dịch vụ khách hàng: Hệ thống cung cấp cho người quản lý cơng cụ thống kê, phân tích thẩm định vấn đề kinh doanh, đánh giá hiệu công việc nhân viên Công nghệ hỗ trợ chuyên gia bán hàng tìm kiếm, theo dõi quản lý khách hàng thành công  Quản lý cấu trúc cơng ty: Các tính phụ khác quản lý cấu trúc nhóm bao gồm quản lý cơng ty, quản lý chi nhánh, công ty đối tác, quản lý khu vực  nhân viên quản lý theo vị trí quyền hạn Quản trị nhân sự: Hệ thống hỗ trợ doanh nghiệp quản lý thông tin  người, cấu vị trí, cấp bậc, quản lý lương, KPI, truyền thông nội Quản lý bán hàng tiếp thị: Quản lý chu trình bán hàng từ lâu mối quan tâm lớn công ty, với hệ thống ERP cho doanh nghiệp thông minh Tinasoft, doanh nghiệp nhiều thời gian tiền bạc để xử lý hoạt động telesales, đơn hàng affiliate, kiện hay hoạt động tiếp thị Điều phối đơn hàng cho chi nhánh chậm trễ trình lắp đặt sản phẩm, vận chuyển hàng hóa dịch vụ khách hàng Document continues below Discover more Công nghệ phần from: mềm CNPM123 Học viện Công ng… 69 documents Go to course Tìm hiểu hệ điều hành thời gian thực… Công nghệ phần mềm None Phantichdetai-1 - 34 sở liệu Công nghệ phần mềm None Báo cáo hệ thống 61 phân tán Công nghệ phần mềm None So-tay-huong-dan94 CDS-cho- Dnnvv-… Công nghệ phần mềm None BÁO CÁO HỌC PHẦN Kịch unbuntu  Công nghệ phần mềm None Kiểm sốt hàng tồn kho: Người dùng quản lý yêu cầu xuất nhập hàng, quản lý sản phẩm, quản lý danh mục, thống kê, báo cáo chương trình Từ đó, lãnh đạo cơng ty nhận thức rõ tình hình thay đổi Kiemtra số lượng nhập tiêu thụ mặt hàng để tránh thất thốt, lãng phí06 08 Lê  Tổ chức kế tốn tài chính: cho phép chủTiến doanhThành nghiệp quản lý vốn dịng tiền, kế tốn, chi phí, tài sản nợ phải trả Công nghệ phần mềm  Tạo hệ thống ERP cho công ty thông minh ? None  Mơ hình quản lý dự án: Agile Scrum  Số lượng: Tổng cộng 17 nhân (1 PM, Scrum Master, BA, Test Lead, Tester, BE, FE, Designer)  Công nghệ: NestJs, ReactJs, AWS, S3, PostgresDB, MQTT, K8S, Docker, Tìm kiếm đàn hồi 1.2.3 Dự án SS IoT Devices Tinasoft Việt Nam Tinasoft Việt Nam triển khai thành công dự án SS IoT Devices, với phần mềm tối ưu dịch vụ chất lượng cao Chúng nhận phản hồi tích cực từ phía khách hàng với dự án SS IoT Devices Vì vậy, xin giới thiệu dự án SS IoT Devices đến doanh nghiệp muốn triển khai Dự án SS IoT Devices Tinasoft triển khai dạng mơ hình Agile Scrum với đội ngũ nhân chuyên nghiệp gồm người, có PM, QA, Comtor, Test Lead, Tester, BE, FE Dự án SS IoT Devices Tinasoft sử dụng công nghệ đại như: Nest Js, ReactJs, AWS, S3, PostgresDB, MQTT, K8S, Docker, ElasticSearch … với tính bật như:  Thu thập thông tin từ nhiều loại cảm biến IoT        Lưu Trữ Dữ Liệu Thời Gian Thực, tần suất 100 devices/0.5s 120 ngày Hiển thị đồ thị có số lượng lớn điểm liệu Cảnh Báo Ngồi Ngưỡng Qua email Sử Dụng Trên Cả Mobile desktop Tải tệp CSV chứa liệu lưu trữ 24h Cải Thiện Hệ Thống Hiện Tại Để Tối Ưu Hóa Năng Xuất Nhà Máy Phát triển hình/bảng để hiển thị data thu thập từ sensor  Với tính ưu việt trên, Tinasoft tự hào hỗ trợ doanh nghiệp giảm thiểu tối đa chi phí đồng thời tối ưu quy trình sản xuất kinh doanh BÁO CÁO HỌC PHẦN Chương : NỘI DUNG THỰC TẬP TẠI CÔNG TY 2.1 Xây dựng ứng dụng nhận diện khuôn mặt 2.1.1 Thiết lập môi trường Ứng dụng nhận diện khuôn mặt xây dựng Python sử dụng framework Flask để xây dựng API trang web Các thư viện hỗ trợ nhận diện khuôn mặt cụ thể đồ án OpenCV, dlib face_recognition Để sử dụng thư viện Python, trước tiên cần cài đặt chúng thông qua trình quản lý gói pip Sau đó, khai báo thư viện vào chương trình Python sau: import threading import time from datetime import datetime import cv2 import face_recognition import dlib import os from flask import Response, Flask, render_template, request, jsonify from paho.mqtt import publish Giải thích : +) cv2: thư viện OpenCV cho xử lý ảnh video Python OpenCV thư viện mã nguồn mở cho xử lý ảnh video viết C++ Thư viện cung cấp công cụ cho việc xử lý ảnh, xử lý video, phát đối tượng, nhận dạng khuôn mặt nhiều +) face_recognition: module Python cho việc nhận dạng khuôn mặt xây dựng thư viện dlib Module dùng thuật toán deep learning để học đặc trưng khuôn mặt sử dụng đặc trưng để nhận dạng khuôn mặt ảnh video +) dlib: thư viện C++ cho machine learning, xử lý ảnh thuật toán computer vision Thư viện sử dụng cho việc xây dựng ứng dụng nhận dạng khuôn mặt, phát đối tượng, theo dõi đối tượng nhiều +) threading sử dụng để tạo thread để thực số công việc đồng thời +) time để sử dụng hàm liên quan đến thời gian +) from datetime import datetime để sử dụng cấu trúc ngày Python +) os sử dụng để truy cập hàm liên quan đến hệ thống tệp BÁO CÁO HỌC PHẦN +) from flask import Response, Flask, render_template, request, jsonify sử dụng để tạo ứng dụng web Flask để xử lý yêu cầu HTTP từ client trả lại phản hồi HTTP Response sử dụng để tạo phản hồi HTTP đa phần Flask sử dụng để tạo ứng dụng web render_template sử dụng để tạo trang HTML từ mẫu Jinja2 request sử dụng để lấy thông tin từ yêu cầu HTTP client jsonify sử dụng để trả liệu JSON cho client +) from paho.mqtt import publish sử dụng để xuất thông điệp đến chủ đề MQTT thư viện Paho MQTT  Deep Learning sử dụng thông qua thư viện OpenCV Face Recognition Cụ thể:  Thư viện OpenCV có sử dụng mơ hình Deep Learning để phát khn mặt (face detector) khung mặt (face landmark detector)  Thư viện Face Recognition sử dụng mơ hình Deep Metric Learning để tạo mã hóa (encoding) cho khn mặt Mơ hình train tập liệu lớn khuôn mặt để tạo mã hóa phân biệt cao cho khuôn mặt  Dlib thư viện mã nguồn mở cung cấp công cụ thuật tốn lĩnh vực thị giác máy tính học sâu Trong đó, thuật tốn dlib tiếng với khả nhận diện khuôn mặt đặc biệt nhận diện điểm đặc trưng khuôn mặt mắt, mũi, miệng, để phục vụ cho ứng dụng nhận diện khuôn mặt, nhận dạng biểu cảm nhận diện hành vi 2.1.2 Khái quát ứng dụng Cách ứng dụng vận hành khái quát qua sơ đồ sau : Trình duyệt người dùng (1) Ứng dụng Flask (2) nhận yêu cầu từ người dùng Trình duyệt hiển thị biểu mẫu (3) Ứng dụng Flask nhận thông tin biểu mẫu (4) Trình duyệt hiển thị kết nhận diện (7) Thông báo kết nhận diện khuôn mặt (6) Ứng dụng Flask (5) Thông báo yêu cầu xử lý nhận tệp thành cơng hình ảnh Hình 2.1: Sơ đồ thể cách thức ứng dụng vận hành BÁO CÁO HỌC PHẦN Kết thu : Hình 2.3: Người dùng hợp lệ Hình 2.4: Người dùng không hợp lệ 2.2 Giao diện xác thực 2.2.1 Cách thức khởi tạo Đầu tiên tạo file index.html sau xác định luồng cho trang chủ code Python (main.py) đoạn code sau : @app.route('/') def index(): return render_template('index.html',names=KNOWN_NAME) @app.route('/') trang chủ Flask định nghĩa cho ứng dụng web Nếu client truy cập vào đường dẫn ứng dụng, '/', trang chủ hiển thị Hàm index() gọi trang chủ yêu cầu Nó trả trang HTML tạo render_template() với tên 'index.html' Trong trang HTML này, KNOWN_NAMES truyền vào biến names KNOWN_NAMES danh sách tên người dùng biết trước Biến names sử dụng để hiển thị danh sách người dùng khả dụng trang chủ 2.2.2 Xây dựng chức cập nhật liệu khuôn mặt để mã hóa Dựa vào thuật tốn dlib việc nhận dạng chủ yếu dựa vào liệu mã hóa Như toán đặt với liệu thời gian thực có đặc tính ln thay đổi theo thời gian ứng dụng cần phải có chức liên tục cập nhật liệu khuôn mặt để mã hóa để từ liệu tiếp tục theo luồng xử lý khác Kết mong đợi có liệu (cụ thể ảnh khuôn mặt) tiến hành train (huấn luyện) mã hóa hệ thống cập nhật liệu hiển thị lên giao diện Web-server 12 BÁO CÁO HỌC PHẦN def update_known_encodings(): global known_encodings while True: new_encodings = [] for filename in os.listdir(TRAINING_IMAGES_FOLDER): image_path=os.path.join(TRAINING_IMAGES_FOLDER, filename) image= face_recognition.load_image_file(image_path) encodings = face_recognition.face_encodings(image) if len(encodings) > 0: encoding = encodings[0] new_encodings.append(encoding) else: print(f"No face found in {image_path}") if len(encodings) > 0: encoding = encodings[0] new_encodings.append(encoding) else: print(f"No face found in {image_path}") known_encodings = new_encodings time.sleep(10) Hàm update_known_encodings() hàm sử dụng để cập nhật danh sách mã hóa khn mặt biết Hàm thực thi luồng riêng biệt để không ảnh hưởng đến hoạt động ứng dụng Trong hàm này, biến known_encodings khai báo biến toàn cục để truy cập cập nhật từ luồng khác Hàm lặp lại hình ảnh thư mục đào tạo tạo mã hóa cho khuôn mặt cách sử dụng thư viện face_recognition Các mã hóa lưu vào danh sách new_encodings sau cập nhật vào biến known_encodings để cập nhật danh sách mã hóa khn mặt biết Cuối cùng, hàm chờ 10 giây trước tiếp tục lặp lại trình cập nhật danh sách mã hóa khn mặt biết Hình 2.5: Kết hiển thị tính cập nhật liệu khuôn mặt 13 BÁO CÁO HỌC PHẦN 2.2.3 Thiết kế giao diện Việc thiết kế giao diện dùng chủ yếu ngôn ngữ HTML, CSS Javascript Giao diện thiết kế để phù hợp tiêu chí sau : +) Các luồng liệu vận hành cách hiệu +) Người dùng tương tác với giao diện thực tác vụ liên quan +) Thiết lập cấu hình khung camera cho tương thích với giao diện Hình 2.6: Giao diện xác thực hiển thị người dùng không hợp lệ Hình 2.7: Giao diện xác thực hiển thị người dùng hợp lệ 14 BÁO CÁO HỌC PHẦN 2.3 Giao diện đăng ký 2.3.1 Cách thức khởi tạo Tạo ứng dụng Flask nơi chứa file index2.html cho giao diện đăng ký app=Flask( name ,static_folder='static',static_url_path= '/static') Tham số name cho biết tên ứng dụng Tham số thường sử dụng để giúp Flask tìm thư mục tệp tin cần thiết để chạy ứng dụng Tham số thứ hai static_folder sử dụng để định thư mục nơi tệp tĩnh (như CSS, JavaScript, hình ảnh) lưu trữ Giá trị 'static' sử dụng để định tệp tĩnh lưu trữ thư mục có tên 'static' Tham số thứ ba static_url_path sử dụng để định URL (đường dẫn) sử dụng để truy cập tệp tĩnh lưu trữ thư mục định static_folder Giá trị '/static' sử dụng để định tệp tĩnh truy cập thơng qua đường dẫn '/static' 2.3.2 Xây dựng chức đăng ký cập nhật tên người dùng  Về chức đăng ký : +) Khi người dùng truy cập vào trang đăng ký, họ thấy giao diện có chứa biểu mẫu đăng ký +) Biểu mẫu có trường thơng tin bắt buộc tên, email, mật hình ảnh khuôn mặt +) Khi người dùng điền đầy đủ thông tin nhấn nút đăng ký, thông tin gửi đến server thông qua phương thức POST +) Trên server, thông tin xử lý lưu trữ vào sở liệu để sử dụng cho mục đích khác ứng dụng  Về chức cập nhật tên người dùng: +) Trên giao diện đăng ký, người dùng thấy trường nhập tên người dùng Khi người dùng muốn cập nhật tên mình, họ truy cập vào trang cập nhật thơng tin, có biểu mẫu có chứa trường thơng tin cần cập nhật, bao gồm trường tên người dùng +) Người dùng điền thông tin vào trường tương ứng nhấn nút cập nhật Thông tin gửi đến server thông qua phương thức POST cập nhật sở liệu +) Sau cập nhật thành công, server trả thông báo xác nhận cho người dùng 15 BÁO CÁO HỌC PHẦN  Cuối thiết kế giao diện đăng ký xong thực liên kết giao diện Trên giao diện có nút bấm cho việc Có thể giải thích sau người dùng xong việc giao diện thứ muốn chuyển sang giao diện thứ hai để làm việc cần nhấn nút để gọi hàm chuyển giao diện Kết thu : Hình 2.8: Kết hiển thị phương thức POST/GET ứng dụng chạy ổn định Hình 2.9: Giao diện đăng ký hiển thị tính đăng ký thơng tin người dùng 16 BÁO CÁO HỌC PHẦN 2.4 Cơ sở liệu 2.4.1 Thiết lập môi trường NestJS framework phát triển web Node.js, xây dựng sở TypeScript Với khả hỗ trợ nhiều kiểu kiến trúc ứng dụng, NestJS sử dụng rộng rãi dự án phát triển ứng dụng phân tán, microservice kiểu kiến trúc phổ biến Microservice kiểu kiến trúc phần mềm phân tán, thành phần ứng dụng phân tách thành dịch vụ nhỏ hơn, độc lập có khả hoạt động độc lập với Để tăng tính quán độ tin cậy việc phân phối thông điệp ứng dụng phân tán, RabbitMQ hệ thống message broker sử dụng rộng rãi RabbitMQ cho phép ứng dụng giao tiếp với cách đồng bất đồng bộ, giúp tăng tính quán độ tin cậy ứng dụng Monorepo mode cách tổ chức codebase ứng dụng lớn, tất mã nguồn thành phần ứng dụng lưu trữ kho chung, thay tách biệt thành nhiều kho riêng biệt Monorepo mode giúp giảm độ phức tạp việc quản lý triển khai ứng dụng, đồng thời cải thiện khả tái sử dụng chia sẻ code thành phần khác ứng dụng Để khởi chạy ứng dụng NestJS phù hợp với mơ hình hệ thống cho ứng dụng tại, câu lệnh "nest start", “nest start my-app" “npm run listen" sử dụng để chạy chương trình : $ nest start: để khởi chạy ứng dụng NestJS mặc định $ nest start my-app: để khởi chạy ứng dụng NestJS có tên my-app $ npm run listen: để khởi chạy ứng dụng lắng nghe (listener) hệ thống microservice, sử dụng RabbitMQ để giao tiếp với ứng dụng khác  Ứng dụng MQTT vào ứng dụng NestJS tại: MQTT giải pháp tốt để sử dụng liệu thời gian thực ứng dụng NestJS phân tán Với khả hoạt động độc lập tính quán cao, MQTT giúp cho việc phân phối thông điệp ứng dụng trở nên dễ dàng hiệu Kết hợp với RabbitMQ Monorepo mode, MQTT giúp cải thiện tính quán độ tin cậy ứng dụng, đồng thời giảm độ phức tạp việc quản lý triển khai codebase 2.4.2 Luồng liệu Back-end Trước thông tin người dùng lưu vào sở liệu, phải sàng lọc để đảm bảo có thông tin người dùng hợp lệ lưu trữ Q trình sàng lọc thực phía Back-end hệ thống.Cách thức phía Back-end xử lý để lưu thông tin người dùng vào sở liệu thể qua sơ đồ luồng sau : 17 BÁO CÁO HỌC PHẦN (2) Raspberry Pi Kiểm tra thông tin người dùng (3) Back-end lọc thông tin người dùng Postge Mongo SQL DB product POST:Tạo thông tin người dùng product user POST:Tăng số lượt “likes” + (6) GET:Thông tin toàn người dùng (15) POST:Đăng ký tài khoản bảo mật (12) POST:Tạo tài khoản bảo mật (16) “Unauthorized” (7) GET:Thơng tin v tồn người dùng (20) Client (10) GET:Thơng tin người dùng (9) Q trình nhận diện (4) (5) (11) (1) (13) PUT:Thay đổi thông tin cá nhân (8) (14) DELETE:Xóa thơng tin cá nhân (25) Postman/ SwaggerUI Socket Gateway (24) (22) API “username” + “password” v (17) “id” + “name” Token (18) (19) GET:Kết đăng ký tài khoản (21) POST:Xác thực tài khoản API (23) Hình 2.10: Sơ đồ luồng thể khâu xử lý thông tin người dùng Back-end 18 BÁO CÁO HỌC PHẦN Giải thích : (1) : Quá trình nhận diện cho biết tên ảnh khuôn mặt người dùng (2) : Dữ liệu tên người dùng cập nhật đến Raspberry Pi qua giao thức MQTT (3) : Phía Back-end tiến hành lọc người dùng hợp lệ (4) : Phía Back-end tiến hành lọc người dùng khơng hợp lệ (5) : Phía Back-end tiến hành lưu thông tin người dùng hợp lệ vào Database (6) : Thông tin lưu đồng thời vào PostgreSQL MongoDB bảng “product” (7) : Trả thông tin toàn người dùng từ liệu lưu PostgreSQL (8) : Xóa tồn thơng tin cá nhân dựa vào id người dùng cụ thể (9) : Cập nhật thông tin cá nhân dựa vào id người dùng cụ thể (10) : Trả thông tin cá nhân dựa vào id người dùng cụ thể (11) : Cập nhật số lượt thích dựa vào id người dùng cụ thể (12) : Thông tin bảo mật lưu vào PostgreSQL bảng “user” (13) : Cập nhật thay đổi service PUT lên “product” PostgreSQL (14) : Cập nhật thay đổi service DELETE lên “product” PostgreSQL (15) : Trả thơng tin tồn người dùng từ liệu lưu MongoDB (16) : Tiến hành đăng ký tài khoản người dùng qua phương thức bảo mật JWT (17) : Thông tin đăng ký gồm (“username” + “password”) kèm theo token bảo mật (18) : Token bảo mật từ trả kết đăng ký tài khoản người dùng (19) : Dữ liệu trả gồm (“id” + “name”) trường hợp token thỏa mãn (20) : Thông báo “Unauthorized” trả phía người dùng trường hợp token sai (21) : Tài khoản đăng ký người dùng tiến hành xác thực (22) : API ứng dụng hoạt động Port : 9000 (23) : API ứng dụng hoạt động Port : 9001 (24) : Các service ứng dụng trao đổi liệu Socket Gateway (25) : Trong Postman, client đóng vai trị cơng cụ giúp điều khiển thực yêu cầu HTTP đến máy chủ (server) thông qua API 19 BÁO CÁO HỌC PHẦN Kết thu : Hình 2.11: Back-end cập nhật liệu người dùng qua MQTT Hình 2.12: Dữ liệu người dùng lưu vào Database 20 BÁO CÁO HỌC PHẦN Hình 2.13: Dữ liệu người dùng lưu vào PostgreSQL Swagger UI Hình 2.14: Dữ liệu người dùng lưu vào MongoDB Swagger UI 21 BÁO CÁO HỌC PHẦN 2.5 Docker 2.5.1 Nền tảng lý thuyết Docker công nghệ ảo hóa dùng để đóng gói chạy ứng dụng container Nó cho phép ta đóng gói tồn ứng dụng thành phần vào container nhất, đảm bảo tính di động giúp việc triển khai trở nên dễ dàng Docker container môi trường chạy độc lập, đóng gói Docker image chạy tảng hỗ trợ Docker Nó tạo cách sử dụng công nghệ ảo hóa cấp (OS-level virtualization), cho phép nhiều container chạy hệ thống vật lý mà không ảnh hưởng đến 2.5.2 Thiết lập môi trường Để cài đặt Docker Ubuntu, cần thực bước sau: Bước 1: Cập nhật gói danh sách cài đặt gói cần thiết Bước 2: Thêm kho lưu trữ Docker vào danh sách kho lưu trữ hệ thống Bước 3: Cài đặt Docker Bước 4: Kiểm tra Docker cài đặt thành công hay chưa  Vào terminal gõ lệnh : $ docker –version  Kết hiển thị Docker cài đặt thành cơng ví dụ như:  Docker version 23.0.1, build a5ee5b1 (Lưu ý : cần có quyền root tương ứng để thực lệnh trên) 2.5.3 Xây dựng Docker image cho ứng dụng nhận diện khuôn mặt Bước 1: Liệt kê thư viện Python cần thiết cho ứng dụng phiên chúng Dùng câu lệnh sau để tạo file requirements.txt thư mục chương trình để chạy ứng dụng, chứa danh sách thư viện Python sử dụng cho ứng dụng : $ pip freeze > requirements.txt Các gói thư viện cần thiết gồm: click==8.1.3 | cmake==3.26.1 | dlib==19.18.0 | face-recognition==1.3.0 | facerecognition-models==0.3.0 | Flask==2.2.3 | itsdangerous==2.1.2 | Jinja2==3.1.2 | MarkupSafe==2.1.2 | numpy==1.24.2 | opencv-python==4.7.0.72 | pahomqtt==1.6.1 | Pillow==9.5.0 | pygame==2.3.0 | websocket-client==1.5.1 | Werkzeug==2.2.3 22 BÁO CÁO HỌC PHẦN Bước : Tạo Dockerfile Một Dockerfile cần thiết để xác định ứng dụng xây dựng Docker container Dưới Dockerfile cho ứng dụng nhận diện khuôn mặt dựa vào danh sách thư viện Python sử dụng cho ứng dụng requirements.txt : FROM python:3.10-slim-buster : Khai báo Docker image xây dựng sở image Python phiên 3.10-slim-buster RUN apt-get update && apt-get install -y \ : sử dụng lệnh RUN để cài đặt phụ thuộc hệ thống cần thiết cho ứng dụng Python Các phụ thuộc bao gồm gói cài đặt hệ thống cmake, libopenblas-dev, liblapack-dev, libjpeg-dev, libpngdev, libtiff-dev, libavcodec-dev, libavformat-dev, libswscale-dev, libv4l-dev, libxvidcore-dev, libx264-dev, libgtk-3-dev, libatlas-base-dev, gfortran, wget, unzip, build-essential pkg-config Các gói cài đặt từ kho lưu trữ hệ điều hành Debian (Buster) lệnh apt-get RUN pip install no-cache-dir \ : sử dụng lệnh RUN để cài đặt thư viện Python cần thiết cho ứng dụng Các thư viện bao gồm click, cmake, dlib, facerecognition, face-recognition-models, Flask, itsdangerous, Jinja2, MarkupSafe numpy Các thư viện cài đặt lệnh pip install cờ no-cache-dir để đảm bảo phiên cài đặt COPY /app : sử dụng lệnh COPY để chép tất tệp thư mục bạn vào thư mục /app Docker image Điều bao gồm tệp Python tệp cấu hình WORKDIR /app : sử dụng lệnh WORKDIR để thiết lập thư mục làm việc mặc định Docker image thành /app Điều có nghĩa tất lệnh Dockerfile đượcthực thi thư mục /app EXPOSE 5002 : sử dụng lệnh EXPOSE để khai báo cổng mặc định Flask application 5002 CMD [ "python", "main.py" ] : sử dụng lệnh CMD để thiết lập lệnh mặc định thực thi Docker container khởi chạy Trong trường hợp này, lệnh mặc định python main.py, nghĩa chạy file main.py ứng dụng Python bạn Bước : Tiến hành xây dựng Docker image Trên terminal gõ câu lệnh sau: $ sudo docker image build -t test Docker tìm kiếm Dockerfile thư mục bạn sử dụng để xây dựng Docker image với tên "test" Quá trình xây dựng Docker image bao gồm tải xuống phụ thuộc hệ thống thư viện Python liệt kê Dockerfile, chép mã nguồn ứng dụng vào Docker image cài đặt thư viện Python cần thiết 23 BÁO CÁO HỌC PHẦN Kết build thành cơng : Hình 2.15: Kết hiển thị build ứng dụng thành công docker Bước : Chạy ứng dụng Dùng câu lệnh sau : $ sudo docker run device=/dev/video0 -p 5002:5002 test Docker khởi chạy Docker container từ Docker image "test" máy tính bạn, cấp quyền truy cập vào thiết bị camera Sau container khởi chạy, ứng dụng container phục vụ cho yêu cầu đến cổng 5002 Hình 2.16: Kết hiển thị ứng dụng chạy ổn định chạy docker 24 BÁO CÁO HỌC PHẦN Chương : KẾT QUẢ SAU KÌ THỰC TẬP 3.1 Thành sau thời gian thực tập Kết thúc trình thực tập, với kiến thức tìm hiểu hướng dẫn anh Mentor em tự xây dựng ứng dụng nhận diện khuôn mặt đơn giản để ứng dụng vào thực tiễn Tuy nhiên, việc phát triển hệ thống bảo mật sinh trắc học đòi hỏi nhiều thời gian nỗ lực Để xây dựng hệ thống bảo mật sinh trắc học hiệu quả, cần phải thu thập xử lý lượng lớn liệu từ nguồn khác Sau đó, mơ hình máy học thuật tốn trí tuệ nhân tạo phải sử dụng để phân tích xử lý liệu Một số ứng dụng hệ thống bảo mật sinh trắc học áp dụng thực tế, bao gồm việc tạo tài khoản người dùng an tồn bảo mật thơng tin cá nhân Với việc sử dụng kỹ thuật nhận dạng khuôn mặt quét vân tay, người dùng xác thực cách nhanh chóng an tồn Hơn nữa, thông tin nhận dạng sinh trắc học người dùng lưu trữ sở liệu bảo vệ chặt chẽ, giúp nâng cao tính bảo mật thông tin Tuy nhiên, việc sử dụng hệ thống bảo mật sinh trắc học đặt số thách thức Ví dụ, kỹ thuật nhận dạng khn mặt bị thất bại số trường hợp, người dùng đeo kính trang, làm cho việc xác thực trở nên khó khăn Hơn nữa, việc lưu trữ xử lý liệu sinh trắc học đòi hỏi hệ thống bảo mật cao chặt chẽ để đảm bảo tính riêng tư người dùng  Trong tổng thể, hệ thống bảo mật sinh trắc học mà em thiết kế nghiên cứu trình phát triển thử nghiệm, chúng đáp ứng tiêu chí cần thiết bảo mật thơng tin Việc sử dụng ứng dụng hệ thống tạo tài khoản người dùng an toàn bảo mật thơng tin cá nhân giúp nâng cao tính bảo mật thông tin giảm thiểu nguy bị xâm nhập lộ thông tin cá nhân 25 BÁO CÁO HỌC PHẦN KẾT LUẬN Trải qua trình thực tập công ty Tinasoft với nhiều thử thách hội mới, em học nhiều kiến thức kỹ quan trọng lĩnh vực Web cụ thể Back-end kỹ mềm cần thiết cho lập trình viên làm việc môi trường doanh nghiệp hàng đầu Qua tháng cơng ty em biết thân chưa thực sâu vào chuyên môn thực hành, chưa trao đổi nhiều với anh Mentor : Võ Việt Hoàng người mà giúp đỡ em nhiều q trình thực tập cơng ty Với kinh nghiệm tích lũy đợt thực tập này, em mong đợt thực tập tới trường có hội tiếp tục đồng hành cơng ty để ngồi mảng Web em nâng cao trình độ phần cứng Quá trình thực tập công ty giúp em trao dồi thêm kiến thức tiếp thu bao gồm kiến thức chuyên ngành lẫn kiến thức thực tiễn Với kiến thức có từ việc thực tập này, em mong muốn sau thực hóa mơ hình bảo mật sinh trắc học nhiều lớp với quy mô 100 người để ứng dụng vào thực tiễn Một lần em xin chân thành cảm ơn thầy Nguyễn Quốc Uy nhà trường đặt nhiều tâm huyết vào môn học Thực tập chuyên sâu để sinh viên chúng em có thêm nhiều kiến thức kỹ để công tác sau 26

Ngày đăng: 26/12/2023, 04:55

Tài liệu cùng người dùng

Tài liệu liên quan