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

Bài đăng

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

Python: Kiểu dữ liệu - Part 2

Kiểu dữ liệu là gì Trong khoa học máy tính và lập trình máy tính, một kiểu dữ liệu (tiếng Anh: data type) hay đơn giản type là một cách phân loại dữ liệu cho trình biên dịch hoặc thông dịch hiểu các lập trình viên muốn sử dụng dữ liệu. Hầu hết các ngôn ngữ hỗ trợ nhiều kiểu dữ liệu khác nhau, như số thực, số nguyên hay Boolean. Một kiểu dữ liệu cung cấp một bộ các giá trị mà từ đó một biểu thức (ví dụ như biến, hàm...) có thể lấy giá trị của nó. Kiểu định nghĩa các toán tử có thể được thực hiện trên dữ liệu của nó, ý nghĩa của dữ liệu, và cách mà giá trị của kiểu có thể được lưu trữ -Wikipedia Trong Python, có hai loại kiểu dữ liệu chính: primitive và non-primitive Primitive trong Python bao gồm: int: Kiểu dữ liệu số nguyên, có thể là số nguyên dương, số nguyên âm hoặc số 0. float: Kiểu dữ liệu số thực, có thể là số thập phân hoặc số nguyên. complex: Kiểu dữ liệu số phức, bao gồm phần thực và phần ảo. str: Kiểu dữ liệu chuỗi, lưu trữ một chuỗi các ký tự. None: Kiểu dữ liệu rỗng, khôn

Python: Welcome to Python - Part 1

Python là gì? Python là một ngôn ngữ lập trình bậc cao, mã nguồn mở và đa nền tảng. Python được Guido van Rossum giới thiệu vào năm 1991 và đã trải qua 3 giai đoạn phát triển khác nhau tương ứng với các version, mới nhất hiện nay là Python version 3x. Lợi ích của việc sử dụng Python để lập trình trí tuệ nhân tạo (AI): Dễ học và dễ đọc: Python có cú pháp đơn giản, giúp người mới học lập trình dễ dàng tiếp cận. Điều này làm cho Python trở thành một trong những ngôn ngữ phổ biến cho các nhà phát triển AI. Thư viện đa dạng: Python có nhiều thư viện mạnh mẽ hỗ trợ việc phân tích dữ liệu và xây dựng mô hình AI. Các thư viện như NumPy, Pandas, Scikit-learn, và TensorFlow giúp tối ưu hóa quá trình phát triển các ứng dụng AI. Linh hoạt và đa dụng: Python không chỉ được sử dụng cho AI, mà còn cho phát triển web, tự động hóa tác vụ, xử lý dữ liệu, và nhiều lĩnh vực khác. Cộng đồng lớn: Python có một cộng đồng lập trình viên rộng lớn, với nhiều tài liệu, diễn đàn, và hỗ trợ từ cộng đồng. Điều này

Debug Event Grid ở localhost

Azure Event Grid là gì? Azure Event Grid là một dịch vụ event-driven, giúp bạn dễ dàng nhận và xử lý các sự kiện từ các nguồn khác nhau, chẳng hạn như Azure Blob Storage, Azure Queue Storage, Azure Service Bus, và các dịch vụ của bên thứ ba. Event Grid cung cấp một cách đơn giản để xây dựng các ứng dụng phản ứng với các sự kiện từ thế giới thực. Bạn có thể sử dụng Event Grid để: Nhận thông báo khi một tệp được tải lên Azure Blob Storage. Xử lý các yêu cầu từ một ứng dụng web. Theo dõi các hoạt động trong một cơ sở dữ liệu. Debug Event Grid trigger Sau khi tạo ứng dụng Azure Function, chọn Event Grid trigger, bạn sẽ thấy dòng đầu tiên trong code: http://localhost:7071/runtime/webhooks/EventGrid?functionName={functionname} Bạn định nghĩa functionName ở hàm Run, trong trường hợp này là training-export [FunctionName("training-export")] public static void Run([EventGridTrigger]EventGridEvent eventGridEvent, ILogger log) { log.LogInformation(eventGridEvent.Data.ToString()); }

CQRS là gì?

Giới thiệu Trong thiết kế phần mềm, CQRS (Command Query Responsibility Segregation) và CQS (Command Query Separation) là hai mẫu thiết kế quan trọng, giúp tách biệt việc xử lý lệnh (command) và truy vấn (query). Tuy có tên gần nhau và có mục tiêu chung là tạo sự tách biệt giữa lệnh và truy vấn, nhưng chúng có những điểm khác biệt quan trọng.  Trong bài viết này, chúng ta sẽ tìm hiểu về sự khác biệt giữa CQRS và CQS. Command Query Separation (CQS) Command-query separation (CQS) is a principle of imperative computer programming. It was devised by Bertrand Meyer as part of his pioneering work on the Eiffel programming language. It states that every method should either be a command that performs an action, or a query that returns data to the caller, but not both. CQS là một nguyên tắc thiết kế mẫu nơi mà việc gửi lệnh (command) và truy vấn (query) phải được tách biệt hoàn toàn. Nguyên tắc này đề xuất rằng mỗi phương thức trong hệ thống phần mềm sẽ là hoặc một lệnh (command) hoặc một t

Dispatcher Design Pattern

Giới thiệu Dispatcher Design Pattern là một mẫu thiết kế phần mềm thuộc nhóm hành vi (behavioral design pattern) được sử dụng để quản lý và điều phối các tasks, events, hoặc notification giữa các thành phần trong hệ thống. Mục tiêu chính của Dispatcher Pattern là giảm sự phụ thuộc trực tiếp giữa các thành phần, từ đó tăng tính tái sử dụng và linh hoạt của mã nguồn. So sánh Dispatcher với Service Tạo chương trình Console Application gồm có 2 Component A và B đều có hàm HanndleEvent(). namespace DispatcherDesignPattern.ServiceA; public class ComponentA { public void HandleEvent() { Console.WriteLine("ComponentA handles event"); } } namespace DispatcherDesignPattern.ServiceB; public class ComponentB { public void HandleEvent() { Console.WriteLine("ComponentB handles event"); } } Trong ví dụ đầu tiên, chúng ta tạo thêm Service EventService để gọi 2 hàm HandleEvent() của ComponentA và ComponentB. Chúng ta cần khai báo Compo

Promise là gì

Promise Promise là một cơ chế trong JavaScript giúp bạn thực thi các tác vụ bất đồng bộ mà không rơi vào callback hell hay pyramid of doom, là tình trạng các hàm callback lồng vào nhau ở quá nhiều tầng. Promise có 3 trạng thái chính Pending: Khi một Promise được tạo, nó ở trạng thái này. Fulfilled: Khi một tác vụ bất đồng bộ hoàn thành thành công, Promise chuyển sang trạng thái này và trả về kết quả. Rejected: Khi một tác vụ bất đồng bộ thất bại, Promise chuyển sang trạng thái này và trả về lỗi. Cú pháp let myPromise = new Promise(function(myResolve, myReject) { // "Producing Code" (May take some time) myResolve(); // when successful myReject(); // when error }); // "Consuming Code" (Must wait for a fulfilled Promise) myPromise.then( function(value) { /* code if successful */ }, function(error) { /* code if some error */ } ); Khi hàm trả về kết quả, sẽ gọi 1 trong 2 hàm sau: Result Call Success myResolve(result value) Error myReject(error object)

Kubernetes: Deployment - Day 5

Kubernetes Deployment là gì? Một định nghĩa từ trang vmware A Kubernetes Deployment tells Kubernetes how to create or modify instances of the pods that hold a containerized application. Deployments can help to efficiently scale the number of replica pods, enable the rollout of updated code in a controlled manner, or roll back to an earlier deployment version if necessary. Kubernetes deployments are completed using kubectl, the command-line tool that can be installed on various platforms, including Linux, macOS, and Windows. Tại sao phải dùng deployment? Trong bài viết Kubernetes: Setup project ASP.NET core trên minikube - Day 4 , chúng ta đã xây dựng 1 kubernetes bao gồm 1 Pod và 1 NodePort. Pod là đơn vị nhỏ nhất của kubernetes, nhưng nó không có khả năng tự phục hồi khi bị lỗi hoặc bị xóa. Deployment cho phép bạn cập nhật, quay lại hoặc mở rộng các phiên bản ứng dụng một cách tự động. Ngoài ra, deployment trong kubernetes có tác dụng quản lý các replicaset và các pod để chạy các ứ

Kubernetes: Cài đặt minikube trên WSL 2

Có 2 cách sử dụng docker và k8s bên trong WSL 2: Docker Desktop WSL 2 integration Docker CE inside the WSL 2 distro (systemd trên WSL 2) Trong bài viết này, minhfsex hướng dẫn các bạn cài đặt Minikube trong WSL 2 (sử dụng Ubuntu) Cài đặt  Cài đặt Ubuntu Mở Terminal trên Windows, cài đặt WSL2 wsl --install Restart Window Liệt kê các bản Linux distribution mà Microsoft hỗ trợ: PS >wsl -l --online The following is a list of valid distributions that can be installed. Install using 'wsl.exe --install <Distro>'. NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7

Azure Event Grid

Azure Event Grid là một dịch vụ event routing của Microsoft Azure, cho phép bạn lắng nghe và xử lý các sự kiện từ các nguồn khác nhau, chẳng hạn như Azure Blob Storage, Azure Service Bus, Azure Resource Manager, v.v. Azure Event Grid cung cấp một kiến trúc event-based linh hoạt, cho phép bạn xây dựng các ứng dụng phản ứng với các thay đổi trong dữ liệu hoặc trạng thái của hệ thống.   Tham khảo https://microsoftlearning.github.io/AZ-204-DevelopingSolutionsforMicrosoftAzure/Instructions/Labs/AZ-204_lab_09.html

Microsoft Defend for cloud: Setup Defender cho Storage

Bài lab: https://github.com/Azure/Microsoft-Defender-for-Cloud/blob/main/Labs/Modules/Module%2019%20-%20Defender%20for%20Storage.md 👩🏽‍🍳Exercise 1: Preparing the Environment for Defender for Storage plan To enable the Defender for Storage plan on a specific subscription: Sign in to the Azure portal . Navigate to Microsoft Defender for Cloud , then Environment settings . Select the relevant subscription. Toggle the Storage plan to On . Click on Settings located in the Monitoring Coverage column, below Full In the Malware scanning component, make sure the toggle is ON and for the limit of GB scanned per month per storage account, leave the default value of 5000 or click on Edit configuration to modify it. In the Sensitive data discovery component, make sure the toggle is ON . Select Continue and in the next screen Save . Now all your existing and upcoming Azure Storage Accounts are protected. 📦Exercise 2: Create a Storage Account In the Azure portal go in the search bar and