Chương 1. TONG QUAN DE TÀI: Giới thiệu về dé tài, đưa ra những vấn đê cũng như giải pháp mà đê tài này mang lại đê giải quyét vân những van dé trên. CƠ SỞ LÝ THUYET: Trình bày các kiến thức, nền tảng về những công nghệ được dùng trong đê tài. PHAN TÍCH VA THIET KE HE THONG: Trinh bày các chức năng, luông hoạt động và co sở dữ liệu của ứng dụng.
KET QUÁ THUC NGHIỆM: Trình bày những kết quả của đề tài như hình ảnh của nên tảng và kêt quả của việc tích hợp hệ thông phân loại. Chương 5: KET LUẬN VÀ ĐÁNH GIA: Dua ra những kết luận về kết quả đạt được so với dự tính ban đầu cũng như những định hướng phát triển trong tương lai. Tổng quan Công nghệ sử dụng dé xây dựng nên tảng: e Frontend: Next.js, Material UI e Backend: Go-Gin e Cơ sở dt liệu: ProgreSQL e Lưu trữ file: Cloudinary e Deployment: Docker Lí thuyết và công nghệ dùng cho việc phân loại sách e Mang neutral network: Convolutional neural network e M6 hình: ResNet50 e Framework máy học: PyTourch e Môi trường training mô hình: Google Colab e Backend phân loại sách: FastAPI 2. Khai niém Next.js là một framework được xây dựng dựa trên React.js hỗ trợ server- side rendering (SSR) mà không cần phải cau hình gì.js không tập trung nhiều vào hiệu suất mà tập trung vào cải thiện trải nghiệm của các developer và giúp phát triển các ứng dụng web một cách dé dang hơn.
Server-side rendering Trước khi di vào tính năng nay ta cần phải hiểu server-side rendering là gì. Server Side Sendering (SSR) là cơ chế xử lý logic |nằm ở phía server. Server sẽ xử lý và thao tác với databse dé render ra HTML gửi về cho client. Browser chỉ cần hiển thị HTML ra cho người dùng.
Đặc điểm của server-side rendering là việc trang web sẽ được xử lí va render tại server trước khi hiển thị lên cho người dùng. Serverside Rendered Client Server Database GET /blogs Retrieve clay render items ~~ < rendered HTML Client Server Database Hình 2.2: Cách hoạt động cua server-side rendering Nextjs hỗ trợ 2 kiểu pre-rendering là static generation và server-side rendering. Sự khác biệt năm ở thời diém tạo HTML cho trang như sau: e Static generation: đây là kiểu render khuyến nghị trong Next. Trang web sẽ được tạo ra trước trong quá trình build và sẽ được sử dụng lại trong môi request e Server-side rendering: HTML sẽ được tạo ra mỗi request 2.
Tối ưu ảnh Next.js có một component ảnh có khả năng tự động tối ưu chất lượng ảnh tự động. Điều này tránh được việc trang web phải load một bức ảnh có dung lượng cao nhưng chỉ trong | khung hình nhỏ. Chức năng automatic Image optimization có thê dùng cho bat cứ loại hình nào bat ké nó có nằm ngoài nguồn hình ảnh định trước. Hỗ trợ nhiều trình duyệt Next.js hỗ trợ IEII và mọi browser khác như Chrome, Firefox, Safari, Edge, Opera, .) mà không cần phải cài đặt thêm.
Hơn nữa dé giảm thiêu độ lớn của bundle, Next.js chỉ load những polyfills cho những phần mềm sử dụng chúng. Những trang web trên thế giới sẽ không cần phải tải những polyfills này. Routing Có thé xem là tính năng co ban nhất của Next. Nếu như ở React phải sử dụng những thư viện ngoài khá phức tạp thì đối với Next.js sẽ làm giùm luôn việc đó.
Dé có thé sử dung routing, don gian chi can sắp xếp thư mục và đặt tên file, folder là đường dẫn mong muốn, Next.js sẽ tự động hiểu và điều hướng chính xác đến file đó tương ứng với đường dẫn trên URL. Dé có thé điều hướng người dùng, đơn giản chỉ cần sử dụng component Link do Next.js cung cấp 2. Lazy loading Tinh nang lazy loading của Next.js giúp cho ứng dụng của bạn có được trai nghiệm người dùng tốt hơn. Việc trang web can tốn thời gian dé load hon 10 giây, người dùng có thé rời khỏi trang web ngay lập tức.
Cách xử lí dé tránh được tình huống trên đó là cho người dùng biết trang web đang được load bằng cách hiền thị những biểu tượng loading. Lazy loading là một element cho phép quan lý, điều khiển và load những đoạn code cần thiết lên trước 2. Các tính năng khác e Hot Code Reloading: Next.js sẽ tải lại trang khi phát hiện bat kỳ thay đổi nào được lưu vào bộ nhớ e Automatic Code Splitting: Các trang sẽ được render với những thư viện và JavaScript mà chúng cân, sẽ không sử dụng những thư viện không cần thiết, từ đó tối ưu việc tải trang e Prefetching: Link component sẽ được sử dụng dé liên kết các trang khác nhau với nhau, hồ trợ phương thức tìm và nạp trước tài nguyên trang trước khi trả vê cho client. e Dynamic Components: Cho phép import các JavaScript module và các React Components tai day e Static Exports: Next.js cho phép export một trang web tinh từ ứng dụng React 2.
Uu & nhuge diém 2. Uu điểm e Xây dựng ứng dụng web tĩnh nhưng tích hợp động cực kỳ nhanh e Tăng lượt tương tac và bán hàng thông qua SEO e Tang khả năng quảng cáo e Tăng trải nghiệm người dùng © Chỉ phí bảo trì thấp e Dễ dàng mở rộng doanh nghiệp e Tăng hiệu năng website hoặc ứng dụng web e Linh động trong việc xây dựng UI UX 2. Nhược điểm e Yêu cầu việc phát triển phải thay đổi e Hệ sinh thái plugin chưa dược phong phú e Không có thư viện state-manager sẵn © Chi phí xây dựng dat hơn 2. Khái niệm Go là 1 ngôn ngữ lập trình mã nguồn mở được thiết kế dựa trên tư duy lập trình hệ thống được phát triển bởi Google.
Ngôn ngữ được xây dựng dựa trên sự đơn giản, hiệu năng cao, dễ đọc và hiệu quả. Go được phát hành vào năm 2009 bởi Robert Griesemer, Rob Pike và Ken Thompson. Điểm mạnh của Go là bộ thu gom rác và hỗ trợ lập trình đồng thời. Go là một ngôn ngữ biên dịch như C/C++, Java, Pascal,.
Phiên bản ồn định được phát hành vào năm 2001 và phiên bản mới nhất ở thời điểm hiện tại là 1.17 phát hành vào năm 2021. Nhỏ gọn và đơn giản Go đơn giản dé học, dé làm việc và dé dang đọc bởi các nhà phát triển khác. Và Go không hề có một bộ tính năng lớn, đặc biệt là khi so sánh với các ngôn ngữ như C ++. Ngoài ra Go còn gợi nhớ đến C bởi cú pháp của nó, điều đó giúp các lập trình viên C lâu năm tương đối dé dàng học nó.
Điều đó nói rằng, nhiều tính năng của Go, đặc biệt là tính năng concurrency. Dành cho mọi người Tài liệu về Go, mô tả Go là “một ngôn ngữ biên dịch nhanh, static type, compiled language (ngôn ngữ biên dịch), nhưng lại giống như một dynamic, interpreted language (ngôn ngữ thông dịch)”. Ngay cả khi một chương trình Go lớn, cũng sẽ được biên dịch chỉ trong vòng vài giây. Thêm vào đó, Go còn tránh được những điểm hạn chế của C liên quan đến các file và thư viện.
Nói tóm lại, Go giúp cuộc sống của lập trình viên trở nên dé dang bằng nhiều cách Static Typing Features Package Management Hình 2.4: Những tính năng nổi bat của ngôn ngữ Go 2. Tiện lợi Go được so sánh với các scripting language (ngôn ngữ kịch bản) như Python với khả năng đáp ứng nhiều nhu cầu lập trình phô biến. Một số tinh năng này được tích hợp vào trong chính ngôn ngữ, chang hạn như ‘ ‘goroutines” là một hàm cho concurrency và kiêu giống như behavior, ngoài ra các tính năng bổ sung được có sẵn trong các package thư viện Go chuẩn, như http package của Go. Giống như Python, Go cung cấp khả năng quản lý bộ nhớ tự động bao gồm việc garbage collection (đọn file rác).
Hiệu năng Chạy nhị phân chậm hơn so với C, nhưng sự khác biệt về tốc độ này không đáng ké đối với hầu hết các ứng dụng. Hiệu suất của Go tốt ngang với C trong phan lớn công việc và nói chung là nhanh hơn so với các ngôn ngữ khác nổi tiếng về tốc độ (ví dụ: JavaScript, Python và Ruby). Tương thích Go cung cấp tất cả những điều trên mà không bị mat quyền, truy cập vào hệ thong bên dưới (underlying system). Phương mềm Go có thé liên kết với thư viện C bên ngoài hoặc thực hiện các lệnh call hệ thống native.
Ví dụ trong Docker, Go interface với các chức năng Linux low-level, cgroups và namespace (tạm dịch: không gian tên), dé hoạt động với container.5: Framework Gin Gin là 1 web framework được viet bang Go mã nguồn mở được phát triển với mục đích đê xây dựng các ứng dụng web băng Go với hiệu năng cao. Nó sở hữu API giông Martini nhưng với hiệu năng cao hơn gap 40 lân. Tính năng e Tốc độ nhanh e Hỗ trợ middleware e Hỗ trợ xử ly crash và hồi phục, đảm bảo server luôn sẵn sảng e Hỗ trợ kiểm tra tính hợp lệ của yêu cầu HTTP e Định tuyến theo nhóm: Tổ chức định tuyến theo cấu trúc tốt hơn mà không ảnh hưởng lớn đên hiệu năng e Thu thập tat cả các lỗi xảy ra trong 1 yêu cầu HTTP Dễ dàng mở rộng 2. Ưu điểm Phù hợp xây dựng REST API: Gin là một framework rất tối giản.
Gin chỉ bao gồm những chức năng hoặc thư viện cần thiết nhất và điều này làm cho Gin trở thành framework có hiệu năng cao nhất cho việc xây dựng REST API Tài liệu phong phú: Tài liệu cho framework Gin rất nhiều và đầy đủ. Những công việc liên quan đên router đêu có thê dé dang tìm thay trong document Middlewares đa dạng và kiểm tra kĩ lưỡng: Cộng đồng Gin đã tạo ra vô vàn những middleware giúp cho việc phát triển với Gin thật dé dàng. Những chức năng như gzip, middleware xác thực va sentry Hiệu năng cao: Gin có toc độ cao gap 40 lân so với Martini và khi so sánh với những framework Go khác cũng không kém cạnh 2. Khái niệm PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ và đối tượng (object-relational database management system) miễn phi và nguồn mở (RDBMS) tiên tiễn nhất hiện nay.
khả năng mở rộng cao và tuân thủ các tiêu chuẩn kỹ thuật. Nó được thiết kế dé xử lý một loạt các khối lượng công việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc dịch vụ Web có nhiều người dùng cùng một lúc.6: Hệ quản tri co sở dữ liệu PostgreSQL 2. Tính năng Câu truy vấn phức hợp (complex query) Thủ tục sự kiện (trigger) 10 Các khung nhìn (view) Tính toàn vẹn của các giao dich (integrity transactions) Việc kiêm tra truy cập đồng thời đa phiên ban (multiversion concurrency control) Truy vấn xử lý song song (parallel query) Sao chép dữ liệu dạng luồng (Streaming replication) 2.