Chuyển đến nội dung chính

Bài đăng

Đang hiển thị bài đăng từ Tháng 6, 2023

ASCII Đức Phật

// _oo0oo_ // o8888888o // 88" . "88 // (| -_- |) // 0\ = /0 // ___/`---'\___ // .' \\| |// '. // / \\||| : |||// \ // / _||||| -:- |||||- \ // | | \\\ - /// | | // | \_| ''\---/'' |_/ | // \ .-\__ '-' ___/-. / // ___'. .' /--.--\ `. .'___ // ."" ' _/___.' >' "". // | | : `- \`.;`\ _ /`;.`/ - ` : | | // \ \ `_. \_ __\ /__ _/ .-` / / // =====`-.____`.___ \_____/___.-`___.-'===== // `=---=' // // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Phật phù hộ, không bao giờ BUG // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C4 Model: Cài đặt

C4 Model là gì Mô hình C4 để trực quan hóa kiến trúc phần mềm C4 = Context + Container + Component + Code. Website: https://c4model.com Mô hình C4 là một phương pháp mô tả kiến trúc phần mềm một cách tinh gọn nhất. Nó bao gồm một tập hợp 4 sơ đồ mô tả cấu trúc tĩnh của một hệ thống phần mềm. Nhìn chung, C4 cố gắng tạo ra sự rõ ràng để truyền đạt câu chuyện thiết kế đến người đọc, đồng thời làm theo câu “thần chú” của Shneiderman: “Tổng quan trước tiên, phóng to thu nhỏ và lược bớt, cuối cùng là sự chi tiết theo yêu cầu nếu cần“ Nhưng mà C4 là gì? Chữ C được lấy từ 4 hình vẽ chính trong mô hình này đó là: Context, Container, Component, Code (hay còn được gọi là Class). System Context: Sơ đồ này mô tả tổng quát về hệ thống theo hướng che đi thành phần bên trong mà chỉ làm nổi bật thành phần bên ngoài (blackbox); bao gồm các yếu tố phụ thuộc chính (dependencies) của hệ thống, các giao thức (interfaces) để giao tiếp giữa những hệ thống với nhau và con người (người dùng / theo vai trò /...

Azure Functions: Sử dụng Azurite để upload file - Day 7

Giới thiệu Azurite emulator là một phần mềm mã nguồn mở giả lập các dịch vụ Azure Storage trên môi trường local. Bạn có thể kiểm tra các ứng dụng sử dụng Azure Blob, Queue Storage và Table Storage mà không cần kết nối với tài khoản Azure Storage trên cloud Cài đặt - Sử dụng Visual Studio 2022, Azurite đã được cài đặt sẵn.  - Sử dụng Visual Studio Code, bạn có thể cài đặt tiện ích mở rộng Azurite.  - Sử dụng npm npm install -g azurite - Sử dụng Docker Hub, bạn có thể chạy lệnh docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 mcr.microsoft.com/azure-storage/azurite Kết nối Azurite bằng Microsoft Azure Storage Explorer Bạn có thể sử dụng Microsoft Azure Storage Explorer để xem và quản lý dữ liệu được lưu trữ trong Azurite. Để kết nối Azurite bằng Storage Explorer, bạn cần làm những bước sau đây Chạy Azurite trên máy local của bạn Mở Storage Explorer và chọn biểu tượng Connect Upload file lên Azurite ở local Các bước Tạo SAS URL Upload fiel Download file ...

Azure Functions: xUnit, Coverlet, và ReportGenerator - Day 6

Hôm nay mình sẽ giới thiệu về hai công cụ hữu ích cho việc kiểm thử phần mềm .NET: xUnit và ReportGenerator. Các bạn có thể sử dụng hai công cụ này để viết các test case, chạy các test case và tạo báo cáo code coverage cho các dự án của mình. Nội dung bao gồm: Unit Test là gì? Moq Object là gì? Code coverage là gì? Moq là gì?  xUnit là gì? ReportGenerator là gì? Cách cài đặt và sử dụng xUnit và ReportGenerator trong Visual Studio. Cách tạo báo cáo code coverage với ReportGenerator và xem kết quả trên trình duyệt. Unit Test là gì? Unit Test là một loại kiểm thử phần mềm trong đó các đơn vị hoặc thành phần riêng lẻ của một phần mềm được kiểm tra. Mục đích là để xác nhận rằng mỗi đơn vị của mã phần mềm hoạt động như mong đợi. Unit Test được thực hiện bởi các nhà phát triển trong quá trình phát triển (giai đoạn viết code) của một ứng dụng. Unit Test cô lập một đơn vị code và xác minh tính đúng đắn của nó. Một đơn vị có thể là một function, method, mô-đun hoặc đối tượng riêng lẻ. Các ...

Azure Functions: Sử dụng Dependency Injection - Day 5

IoC là gì? IoC là một nguyên lý thiết kế nổi tiếng với mục đích làm giảm sự phụ thuộc giữa các tầng, các thành phần và các lớp bằng cách nghịch đảo luồng điểu khiển của ứng dụng. Trong phương pháp lập trình truyền thống, việc kiểm soát luồng thực hiện chương trình và các lớp con được thực hiện 1 cách rất chặt chẽ thì IoC lại tách mã thực thi từ mã vấn đề cụ thể. Cách tiếp cận này cho phép các thành phần khác nhau được phát triển một cách độc lập. Ví dụ: trong ứng dụng MVC, lớp model, view và controller được thiết kế và xây dựng độc lập với nhau. Hai triển khai phổ biến của nguyên lý IoC là Dependency Injection (chống lại sự phụ thuộc) và service location. Dependency Injection Dependency Injection (DI) là một design pattern được sử dụng để triển khai IoC. Nó cho phép tạo ra các đối tượng phụ thuộc bên ngoài của một class và cung cấp các đối tượng đó cho class thông qua các cách khác nhau. Sử dụng DI, chúng ta di chuyển việc tạo ra và liên kết các đối tượng phụ thuộc ra k...

Tạo dữ liệu giả với Bogus

Giới thiệu về Bogus Bogus là một thư viện dùng để tạo dữ liệu giả ngẫu nhiên một cách nhanh chóng. Bạn có thể sử dụng Bogus để tạo dữ liệu mẫu cho các ứng dụng, testing hoặc đăng ký các tài khoản.  Homepage:  bchavez / Bogus Public Tạo data với Bogus Để sử dụng Bogus, bạn cần cài đặt thư viện từ Nuget: PM> Install-Package Bogus Giả sử bạn muốn tạo danh sách user Đầu tiên bạn định nghĩa Model public class User { public string CustomerID { get; set; } public string Location { get; set; } public DateTime ModifiedDate { get; set; } public string Title { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string MiddleName { get; set; } public bool NameStyle { get; set; } public string Suffix { get; set; } public string CompanyName { get; set; } public string SalesPerson { get; set; } public string EmailAddress { get; set; } public string Phone { get; set; } public string UrlImage { get; set; } } Tạo bộ quy tắc sinh...

Azure Functions: Routing - Day 5

Routing là gì? Routing là quá trình ánh xạ (mapping) truy vấn HTTP với một đối tượng xử lý truy vấn đó (handler). Để sử dụng routing trong azure function apps, bạn cần thêm một thuộc tính Route vào thuộc tính HttpTrigger của chức năng của bạn. Thuộc tính Route sử dụng cú pháp đặt tên đường dẫn của ASP.NET Web API. Bạn có thể sử dụng các ký tự đặc biệt như { và } để xác định các tham số trong đường dẫn và sử dụng các ràng buộc để kiểm soát kiểu dữ liệu của routing Default Routing trong Azure Function Mặc định, khi bạn tạo mới HttpTrigger Function, bạn sẽ có đoạn code tương đương như sau: using System.IO; using System.Net; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Attributes; using Microsoft.Extensions.Logging; using Microsoft.OpenApi.Models; using Newtonsoft.Json; namespace Nhatkyhoctap.Functions { ...

Azure Functions: Thêm OpenAPI vào Azure Functions - Day 4

OpenAPI là một định dạng mô tả API dành cho các API dựa trên REST. Một file OpenAPI cho phép bạn mô tả toàn bộ API của bạn, bao gồm: Các endpoint (/users) và cách thức hoạt động của mỗi endpoint (GET /users, POST /users). Các parameter đầu vào và đầu ra của từng hoạt động. Phương thức xác thực. ... OpenAPI và swagger có liên quan chặt chẽ với nhau. OpenAPI là một định dạng mô tả API dành cho các API dựa trên REST. OpenAPI cho phép bạn mô tả các endpoint, phương thức, tham số, phản hồi, kiểu dữ liệu, xác thực và các thông tin khác của API một cách chi tiết và chuẩn xác. Swagger là một bộ công cụ hỗ trợ việc thiết kế, tạo, kiểm tra và tài liệu hóa các API tuân theo định dạng OpenAPI. Swagger bao gồm các công cụ như: Swagger Editor: cho phép bạn chỉnh sửa file OpenAPI bằng YAML trong trình duyệt và xem trước tài liệu một cách động Swagger UI: cho phép bạn hiển thị file OpenAPI dưới dạng tài liệu tương tác trong giao diện người dùng. Swagger Codegen: cho phép bạn sinh ra mã nguồn cho serve...

Ghi chú cách deploy 1 app đơn giản lên Kubernetes

Dưới đây là ghi chú để deploy 1 app đơn giản lên reactjsAKSCluster Bạn cần nắm Cách tạo 1 image container Kubernetes là gì Pod, Service, ingress Lý thuyết Kubernetes là gì Kubernetes là một nền tảng nguồn mở, khả chuyển, có thể mở rộng để quản lý các ứng dụng được đóng gói và các service, giúp thuận lợi trong việc cấu hình và tự động hoá việc triển khai ứng dụng. Kubernetes là một hệ sinh thái lớn và phát triển nhanh chóng. Các dịch vụ, sự hỗ trợ và công cụ có sẵn rộng rãi. Tên gọi Kubernetes có nguồn gốc từ tiếng Hy Lạp, có ý nghĩa là người lái tàu hoặc hoa tiêu. Google mở mã nguồn Kubernetes từ năm 2014. Kubernetes xây dựng dựa trên một thập kỷ rưỡi kinh nghiệm mà Google có được với việc vận hành một khối lượng lớn workload trong thực tế, kết hợp với các ý tưởng và thực tiễn tốt nhất từ cộng đồng Kubernetes Services AKS là một dịch vụ quản lý Kubernetes trên đám mây của Microsoft, cho phép bạn triển khai và quản lý các ứng dụng container trên một cluster Kubernetes đượ...