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

Bài đăng

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...

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 ứ...