Docker là gì?
Docker là gì? Hướng dẫn sử dụng Docker trong Backend với Go 1. Docker là gì? Docker là nền tảng hỗ trợ đóng gói và chạy ứng dụng trong các môi trường độc lập gọi là container. Thay vì chỉ chia sẻ mã nguồn, lập trình viên có thể mô tả môi trường chạy ứng […]
Logging / Monitoring / CI/CD
1. Tổng quan: Ba thành phần giải quyết ba vấn đề khác nhau Khi một Backend chạy trên production, việc code hoạt động đúng trên máy local chưa đủ. Hệ thống cần có khả năng ghi nhận sự kiện, phát hiện sự cố và triển khai phiên bản mới một cách an toàn. Ba thành […]
Unit & Integration Testing
1. Unit Testing và Integration Testing là gì? Trong quá trình phát triển phần mềm, viết code để triển khai chức năng mới chỉ là một phần của công việc. Lập trình viên còn cần kiểm tra xem chương trình có hoạt động đúng theo yêu cầu hay không, đồng thời bảo đảm những thay […]
Docker
1. Docker là gì? Docker là nền tảng giúp đóng gói và chạy ứng dụng trong các môi trường được gọi là container. Một ứng dụng Backend thường phụ thuộc vào nhiều thành phần: Ngôn ngữ lập trình và runtime như Go, PHP hoặc Node.js. Thư viện và package. Database như PostgreSQL hoặc MySQL. Cache […]
Message Broker
Message Broker là gì? Vai trò của Message Broker trong Backend 1. Message Broker là gì? Message Broker là phần mềm trung gian cho phép các thành phần trong hệ thống trao đổi thông điệp với nhau mà không cần giao tiếp trực tiếp. Nó tiếp nhận thông điệp từ bên gửi, sau đó định […]
Background Jobs & Queues là gì? Hướng dẫn xử lý tác vụ bất đồng bộ trong Backend
1. Background Jobs là gì? Background Jobs (tác vụ chạy nền) là những công việc được thực hiện bên ngoài luồng xử lý chính mà người dùng đang chờ kết quả. Thay vì bắt client phải chờ toàn bộ công việc hoàn thành, ứng dụng có thể tiếp nhận yêu cầu, thực hiện những bước […]
Redis & Caching là gì?
Redis & Caching là gì? Hướng dẫn sử dụng Redis trong Go 1. Caching là gì? Vì sao cần cache khi đã có database? Caching (bộ nhớ đệm) là kỹ thuật lưu tạm dữ liệu thường được truy cập để có thể lấy lại nhanh chóng khi cần, thay vì phải thực hiện lại toàn […]
Message Broker
1. Message Broker là gì? Message Broker là một thành phần trung gian giúp các ứng dụng hoặc service gửi và nhận message mà không cần giao tiếp trực tiếp với nhau trong mọi trường hợp. Thay vì service A gọi trực tiếp service B, service A có thể gửi message đến broker. Broker tiếp […]
Database Migration là gì?
1. Database Migration là gì? Database Migration là quá trình quản lý và áp dụng những thay đổi đối với cấu trúc hoặc dữ liệu trong cơ sở dữ liệu theo từng phiên bản của ứng dụng. Trong quá trình phát triển phần mềm, yêu cầu nghiệp vụ thường xuyên thay đổi. Một bảng có […]
Bun ORM là gì?
Bun ORM là gì? Hướng dẫn sử dụng Bun ORM với Go và PostgreSQL 1. Bun ORM là gì? Bun là một thư viện ORM dành cho ngôn ngữ Go, được thiết kế theo hướng SQL-first. Thay vì cố gắng che giấu hoàn toàn SQL phía sau các phương thức trừu tượng, Bun cho phép […]
CI/CD – Continuous Integration và Continuous Delivery/Deployment
CI/CD – Continuous Integration và Continuous Delivery/Deployment CI/CD là một trong những nền tảng quan trọng của DevOps, giúp tự động hóa quá trình kiểm tra, xây dựng, đóng gói và triển khai phần mềm. Thay vì phải thực hiện thủ công từng bước mỗi khi lập trình viên cập nhật mã nguồn, CI/CD cho […]
GORM là gì?
1. GORM là gì? GORM (Go Object Relational Mapping) là một thư viện ORM dành cho ngôn ngữ lập trình Go, giúp ánh xạ các struct trong Go với dữ liệu trong cơ sở dữ liệu quan hệ như PostgreSQL, MySQL và SQLite. Thay vì phải tự viết SQL cho mọi thao tác truy vấn […]
Unit Testing – Kiểm thử đơn vị trong lập trình
Unit Testing – Kiểm thử đơn vị trong lập trình 1. Tổng quan về Unit Testing Unit Testing (kiểm thử đơn vị) là một kỹ thuật kiểm thử phần mềm nhằm xác minh tính chính xác của những đơn vị nhỏ nhất trong chương trình, chẳng hạn như một hàm, một phương thức hoặc một […]
Bun ORM
1. Bun ORM là gì? Bun là một thư viện ORM và SQL query builder dành cho Go, được thiết kế để làm việc với các cơ sở dữ liệu quan hệ như PostgreSQL, MySQL, SQLite và một số hệ quản trị khác thông qua driver tương ứng. Bun giúp developer ánh xạ dữ liệu […]
Eloquent ORM
Eloquent ORM là gì? Hướng dẫn sử dụng Eloquent trong Laravel 1. Eloquent ORM là gì? Eloquent ORM là hệ thống Object-Relational Mapping (ORM) được tích hợp trong Laravel, một framework phát triển ứng dụng Web bằng PHP. Eloquent cho phép lập trình viên tương tác với cơ sở dữ liệu thông qua các class […]
GORM
1. GORM là gì? GORM (Go ORM) là thư viện Object-Relational Mapping dành cho Go, giúp làm việc với cơ sở dữ liệu quan hệ thông qua các struct và API của Go thay vì phải viết SQL cho mọi thao tác. Trong một ứng dụng backend, dữ liệu thường được lưu trong PostgreSQL, MySQL […]
CAP theorem
1. CAP Theorem là gì? CAP Theorem là một định lý nền tảng trong Distributed Systems, giải thích giới hạn của việc đồng thời đảm bảo ba thuộc tính: Consistency (C), Availability (A) và Partition Tolerance (P) trong một hệ thống dữ liệu phân tán. Định lý bắt nguồn từ nhận định của Eric Brewer […]
CAP Theorem
CAP Theorem là gì? Tìm hiểu Consistency, Availability và Partition Tolerance 1. CAP Theorem là gì? CAP Theorem (định lý CAP) là một nguyên lý quan trọng trong thiết kế hệ thống phân tán, mô tả sự đánh đổi giữa tính nhất quán (Consistency) và tính sẵn sàng (Availability) khi xảy ra phân vùng mạng […]
Saga Pattern
Saga Pattern là gì? Quản lý Transaction trong kiến trúc Microservices 1. Saga Pattern là gì? Saga Pattern là một mẫu thiết kế được sử dụng để quản lý các nghiệp vụ phân tán gồm nhiều bước xử lý, trong đó mỗi bước có thể thực hiện một local transaction tại một service hoặc Database […]
Two-Phase Locking (2PL)
Two-Phase Locking (2PL) là gì? Cơ chế khóa hai pha trong Database 1. Two-Phase Locking (2PL) là gì? Two-Phase Locking (2PL — khóa hai pha) là một giao thức quản lý khóa trong Database, quy định cách một transaction được phép lấy và giải phóng lock trong quá trình thực thi. Khi nhiều transaction cùng […]
Isolation Level
Isolation Level là gì? Các mức độ cô lập trong Database Trong một ứng dụng Backend, nhiều request có thể truy cập và thay đổi dữ liệu trong database cùng một thời điểm. Khi nhiều transaction chạy đồng thời, kết quả của một transaction có thể bị ảnh hưởng bởi những thao tác của transaction […]
Firebase Analytics – Phân tích dữ liệu và hành vi người dùng trong ứng dụng
Firebase Analytics – Phân tích dữ liệu và hành vi người dùng trong ứng dụng 1. Tổng quan về Firebase Analytics Firebase Analytics là một dịch vụ phân tích dữ liệu được tích hợp trong nền tảng Firebase của Google, giúp nhà phát triển thu thập, theo dõi và phân tích hành vi của người […]
Firebase Cloud Messaging (FCM)
Firebase Cloud Messaging (FCM) 1. Tổng quan về Firebase Cloud Messaging Firebase Cloud Messaging (FCM) là dịch vụ nhắn tin đám mây do Google cung cấp, cho phép ứng dụng gửi và nhận thông báo hoặc dữ liệu từ máy chủ đến các thiết bị như điện thoại Android, iPhone và trình duyệt web. FCM […]
API Error Handling
API Error Handling 1. Tổng quan về API Error Handling API Error Handling là kỹ thuật xử lý lỗi trong quá trình giao tiếp giữa các thành phần của hệ thống thông qua API (Application Programming Interface). Kỹ thuật này bao gồm việc phát hiện lỗi, phân loại nguyên nhân, trả về thông tin phù […]
Locking & Deadlock
Locking & Deadlock là gì? Cơ chế khóa và bế tắc trong Database Trong một ứng dụng Backend, nhiều request có thể truy cập và thay đổi dữ liệu trong database cùng một thời điểm. Nếu không kiểm soát việc truy cập đồng thời phù hợp, các thao tác có thể xung đột hoặc khiến […]
Saga Pattern – Quản lý Distributed Transactions
1. Saga Pattern là gì? Saga Pattern là một mẫu thiết kế dùng để quản lý một nghiệp vụ lớn trải qua nhiều service hoặc database độc lập. các nghiệp vụ được chia thành nhiều local transaction. mỗi transaction cập nhật nghiệp vụ của một service của nó. nếu một bước thất bại, hệ thống […]
Two-Phase Locking (2PL) – Cơ chế khóa hai pha trong Database
1. Two-Phase Locking là gì? Two-Phase Locking (2PL – khóa hai pha) là một giao thức kiểm soát đồng thời (concurrency control protocol) trong database. Giao thức này quy định cách một transaction lấy và giải phóng lock nhằm đảm bảo các transaction chạy đồng thời tạo ra kết quả tương đương với một thứ […]
Database Isolation Level – Các mức cô lập transaction
1. Isolation Level là gì? Isolation Level (mức cô lập giao dịch) là mức độ kiểm soát việc một transaction nhìn thấy những thay đổi của transaction khác khi nhiều transaction chạy đồng thời trên database. Isolation là chữ I trong ACID. Mục tiêu của nó là hạn chế những kết quả không nhất quán […]
REST API & HTTP trong Flutter
REST API & HTTP trong Flutter 1. REST API và HTTP 1.1. Khái niệm REST API REST API là một phương thức thiết kế giao tiếp giữa các hệ thống phần mềm thông qua giao thức HTTP. REST là viết tắt của Representational State Transfer, còn API là viết tắt của Application Programming Interface. REST […]
locking & dead lock (Transaction)
1. Locking là gì? Locking (cơ chế khóa) là cơ chế database sử dụng để kiểm soát việc nhiều transaction cùng truy cập hoặc thay đổi dữ liệu, nhằm tránh những xung đột có thể làm sai lệch kết quả. Trong một ứng dụng có nhiều user, nhiều request có thể đồng thời thao tác […]
Eloquent ORM
1. Eloquent ORM là gì? Eloquent ORM là ORM được tích hợp sẵn trong Laravel, sử dụng mô hình Active Record để tương tác với database. Eloquent cho phép developer làm việc với dữ liệu thông qua các Model trong PHP thay vì phải viết SQL thủ công cho mọi thao tác. Mỗi model thường […]
ORM
ORM là gì? (Object-Relational Mapping) Trong quá trình phát triển Backend, ứng dụng thường xuyên cần tương tác với database để lưu trữ, truy vấn, cập nhật và xóa dữ liệu. Một cách phổ biến để thực hiện những thao tác này là viết SQL trực tiếp. Tuy nhiên, khi dự án phát triển, việc […]
N+1 Query Problem
N+1 Query Problem là gì? Trong quá trình phát triển Backend, ứng dụng thường cần truy xuất dữ liệu từ database để trả về cho client. Một API có thể cần lấy danh sách đơn hàng cùng thông tin khách hàng tương ứng. Tuy nhiên, nếu ứng dụng truy vấn dữ liệu liên quan riêng […]
Database Indexes
Database Indexes là gì? Trong Backend, database không chỉ cần lưu trữ dữ liệu mà còn phải tìm kiếm và truy xuất dữ liệu hiệu quả. Khi số lượng bản ghi tăng lên, những truy vấn đơn giản như tìm một người dùng theo email hoặc tìm sản phẩm theo tên cũng có thể mất […]
Transactions & ACID
Transactions & ACID là gì? Trong Backend, một request gửi đến API có thể yêu cầu hệ thống thực hiện nhiều thao tác trên database. Chẳng hạn, khi khách hàng đặt hàng, hệ thống có thể cần tạo đơn hàng, lưu chi tiết đơn hàng và cập nhật số lượng tồn kho. Nếu một thao […]
ORM – Object-Relational Mapping Fundamentals
1. ORM là gì? ORM (Object-Relational Mapping) là kỹ thuật ánh xạ giữa các đối tượng trong chương trình và dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ. Trong ứng dụng backend, dữ liệu thường được biểu diễn bằng struct hoặc object trong code, trong khi database lưu dữ liệu dưới […]
Database Normalization là gì? Tìm hiểu 1NF, 2NF, 3NF và Denormalization
1. Database Normalization là gì? Database Normalization (chuẩn hóa cơ sở dữ liệu) là quá trình tổ chức dữ liệu thành các bảng và thiết lập mối quan hệ phù hợp nhằm hạn chế dữ liệu trùng lặp không cần thiết, đồng thời giảm các vấn đề có thể xảy ra khi thêm, sửa hoặc […]
Database Design & Relationships là gì? Hướng dẫn thiết kế cơ sở dữ liệu cho Backend
1. Database Design là gì? Database Design (thiết kế cơ sở dữ liệu) là quá trình xác định cách tổ chức và liên kết dữ liệu để đáp ứng yêu cầu nghiệp vụ của một ứng dụng. Khi xây dựng Backend, chúng ta không chỉ cần viết API mà còn phải xác định dữ liệu […]
PostgreSQL và MySQL là gì? So sánh hai hệ quản trị cơ sở dữ liệu phổ biến
1. Tổng quan về cơ sở dữ liệu Khi xây dựng một ứng dụng phần mềm, dữ liệu cần được lưu trữ để có thể truy xuất, cập nhật và quản lý trong suốt quá trình hoạt động. Chẳng hạn, một ứng dụng bán hàng cần lưu thông tin sản phẩm, khách hàng, đơn hàng […]
N+1 Query Problem – Nguyên nhân, cách phát hiện và tối ưu
1. N+1 Query Problem là gì? N+1 Query Problem là vấn đề hiệu năng xảy ra khi application thực hiện một truy vấn để lấy danh sách bản ghi, sau đó tiếp tục thực hiện thêm một truy vấn riêng cho từng bản ghi để lấy dữ liệu liên quan. Vấn đề thường xuất hiện […]
Database Indexes
1. Database Index là gì? Database Index (chỉ mục cơ sở dữ liệu) là một cấu trúc dữ liệu được database duy trì để tìm kiếm và truy xuất bản ghi hiệu quả hơn, thay vì phải kiểm tra toàn bộ các dòng trong bảng ở nhiều trường hợp. Hãy tưởng tượng một bảng users […]
OpenAPI và Swagger là gì?
1. OpenAPI và Swagger là gì? Khi xây dựng Backend, lập trình viên không chỉ cần triển khai API mà còn phải mô tả cách API hoạt động để những người khác có thể sử dụng và kiểm thử. Ví dụ, một ứng dụng quản lý sản phẩm cung cấp các endpoint: GET /products: lấy […]
Gin-Gonic
Gin-Gonic là gì? Hướng dẫn xây dựng REST API với Go 1. Gin-Gonic là gì? Gin-Gonic, thường được gọi là Gin, là một framework Web mã nguồn mở dành cho ngôn ngữ lập trình Go. Gin cung cấp các công cụ giúp lập trình viên xây dựng HTTP server và REST API, chẳng hạn như […]
Go Channels
Go Channels là gì? Vì sao cần Channel khi sử dụng Goroutine? 1. Channel là gì? Vì sao cần Channel? Trong Go, Channel là cơ chế cho phép các Goroutine trao đổi dữ liệu và phối hợp hoạt động với nhau. Ở bài viết trước(Goroutine & Concurrency), chúng ta đã tìm hiểu Goroutine — một […]
Goroutine & Concurrency
Goroutines & Concurrency 1. Concurrency là gì? Khi viết chương trình, có những công việc phải được thực hiện lần lượt, nhưng cũng có những công việc có thể tiến triển trong cùng một khoảng thời gian. Để hiểu cách Go xử lý nhiều công việc như vậy, trước tiên cần phân biệt ba khái […]
Transactions & ACID
1. Transaction là gì? Transaction (giao dịch) là một nhóm thao tác trên database được xem như một đơn vị xử lý logic. Mục tiêu là bảo đảm những thay đổi liên quan được thực hiện theo cách nhất quán: nếu giao dịch thành công thì các thay đổi cần thiết được xác nhận; nếu […]
Go Fundamentals
Go là gì? Go, còn được biết đến với tên gọi Golang, là một ngôn ngữ lập trình mã nguồn mở, được thiết kế tại Google bởi Robert Griesemer, Rob Pike và Ken Thompson. Go là ngôn ngữ biên dịch (compiled language) và có hệ thống kiểu dữ liệu tĩnh (statically typed). Khác với những […]
Database Normalization – 1NF, 2NF, 3NF & Denormalization
1. Database Normalization là gì? Database Normalization (chuẩn hóa dữ liệu) là quá trình tổ chức dữ liệu thành các bảng và quan hệ hợp lý nhằm giảm dư thừa không cần thiết, tránh dữ liệu mâu thuẫn và duy trì tính toàn vẹn của database. Khi thiết kế database, nếu lưu tất cả thông […]
Database Design & Relationships
1. Database Design là gì? Database Design là quá trình thiết kế cách tổ chức, lưu trữ và liên kết dữ liệu trong một hệ thống sao cho dữ liệu có cấu trúc hợp lý, hạn chế trùng lặp không cần thiết, bảo đảm tính toàn vẹn và hỗ trợ các truy vấn mà application […]
PostgreSQL / MySQL
1. PostgreSQL và MySQL là gì? PostgreSQL và MySQL là hai hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System – RDBMS), được sử dụng để lưu trữ, truy vấn và quản lý dữ liệu cho các ứng dụng. Tuy cùng thuộc nhóm relational database, PostgreSQL và MySQL có sự khác […]
Laravel Routing & Controllers
Laravel Routing và Controllers là gì? 1. Laravel Routing là gì? Laravel Routing (định tuyến trong Laravel) là cơ chế xác định cách ứng dụng tiếp nhận và xử lý HTTP request dựa trên những thông tin như HTTP method và URL. Một route có thể chuyển request đến Controller, thực thi Closure (hàm ẩn […]
PHP & Laravel Fundamentals
PHP là gì? — Ngôn ngữ lập trình phía máy chủ và vai trò trong phát triển web PHP là gì? PHP (viết tắt của PHP: Hypertext Preprocessor) là một ngôn ngữ lập trình phía máy chủ, thường được sử dụng để xây dựng website và ứng dụng web động. Trong mô hình phát […]
OpenAPI / Swagger
1. OpenAPI và Swagger là gì? Khi xây dựng backend bằng Go và Gin, developer thường định nghĩa các endpoint như GET /users, POST /users hoặc GET /users/{id}. Tuy nhiên, việc có endpoint hoạt động không đồng nghĩa với việc người khác biết cách sử dụng chúng. OpenAPI là gì? OpenAPI Specification (OAS) là một […]
Gin-Gonic Fundamentals
1. Gin-Gonic là gì? Gin, thường được gọi là Gin-Gonic, là một HTTP web framework viết bằng Go. Framework này cung cấp các công cụ để xây dựng web server và REST API mà không cần tự triển khai toàn bộ việc định tuyến request, đọc dữ liệu HTTP, tạo response hay quản lý middleware. […]
JWT & Token Authentication
Token Authentication, JWT, Access Token và Refresh Token 1. Token Authentication là gì? Token Authentication là cơ chế xác thực sử dụng token để chứng minh danh tính hoặc thông tin xác thực của người dùng hay client khi truy cập các tài nguyên được bảo vệ. Sau khi người dùng đăng nhập thành […]
Authentication & Authorization
Authentication & Authorization là gì? Authentication (xác thực) và Authorization (phân quyền) là hai khái niệm quan trọng trong bảo mật hệ thống và API. Nói một cách đơn giản: Authentication: Xác minh bạn là ai. Authorization: Xác định bạn được phép làm gì. Ví dụ, khi đăng nhập vào một hệ thống quản lý […]
API Error Handling
API Error Handling là gì? API Error Handling (xử lý lỗi API) là quá trình phát hiện, quản lý và phản hồi các lỗi xảy ra trong quá trình API tiếp nhận request hoặc xử lý yêu cầu. Mục tiêu là giúp API phản hồi một cách nhất quán, cung cấp thông tin lỗi phù […]
API Validation – Kiểm tra tính hợp lệ của dữ liệu đầu vào API là gì ?
API Validation là gì? API Validation (kiểm tra tính hợp lệ của dữ liệu đầu vào API) là quá trình kiểm tra dữ liệu gửi đến API để xác định dữ liệu có đáp ứng các quy tắc đã đặt ra hay không, chẳng hạn như kiểu dữ liệu, độ dài, định dạng và các […]
JSON & HTTP Status Codes
JSON là gì? JSON (JavaScript Object Notation) là một định dạng dữ liệu dạng văn bản, có cấu trúc đơn giản và dễ đọc, thường được sử dụng để trao đổi dữ liệu giữa các chương trình. JSON tổ chức dữ liệu thông qua các cặp key-value, đối tượng (object) và mảng (array). Mặc dù […]
REST API
REST API là gì? API là gì? API (Application Programming Interface), hay giao diện lập trình ứng dụng, là tập hợp các giao diện và quy tắc cho phép các phần mềm hoặc thành phần phần mềm tương tác với nhau. API đóng vai trò như một hợp đồng quy định cách bên sử dụng […]
Go Channels & Go Context
1. Go Channels & Go Context là gì? Trong Go, goroutine cho phép chương trình chạy nhiều công việc đồng thời. Tuy nhiên, khi có nhiều goroutine cùng hoạt động, chúng cần một cách để trao đổi kết quả, phối hợp thời điểm thực thi và dừng công việc khi không còn cần thiết. Đây […]
Goroutine & Concurrency
1. Concurrency là gì? Concurrency là khả năng tổ chức nhiều công việc để chúng có thể tiến triển xen kẽ hoặc đồng thời trong cùng một khoảng thời gian. Thay vì phải thực hiện tất cả công việc theo một trình tự duy nhất, chương trình có thể chuyển đổi giữa nhiều công việc […]
Go Fundamentals
1. Go là gì? Go (Golang) là ngôn ngữ lập trình go thường được sử dụng trong backend, REST API, hệ thống mạng, công cụ dòng lệnh, cloud infrastructure và các dịch vụ chạy đồng thời. Go là ngôn ngữ biên dịch và có hệ thống kiểu dữ liệu tĩnh (statically typed). Điều này có […]
Laravel Routing & Controllers
1. Laravel Routing & Controllers là gì? Khi xây dựng backend bằng Laravel, client gửi HTTP request đến server để thực hiện một thao tác như lấy danh sách user, xem chi tiết sản phẩm hoặc tạo đơn hàng. Laravel cần xác định request đó sẽ được xử lý ở đâu và logic xử lý […]
HTTP & HTTPS
Giao thức HTTP và HTTPS là gì? 1. HTTP là gì? HTTP (Hypertext Transfer Protocol) là giao thức truyền tải siêu văn bản, được sử dụng để trao đổi dữ liệu giữa client (máy khách) và server (máy chủ). Ban đầu, HTTP được phát triển để trao đổi các tài liệu trên Web. Ngày nay, […]
JWT Token Theft & Payload Tampering
Ở bài JWT & Token Authentication, ta đã biết JWT được sử dụng để xác thực user sau khi đăng nhập: Login ↓ Server xác thực username/password ↓ Access Token + Refresh Token ↓ Client lưu token ↓ Gửi Access Token trong mỗi request Ví dụ: GET /api/profile Authorization: Bearer <access-token> Server nhận token, verify […]
Return First
Viết logic điều kiện là điều mà mọi lập trình viên đều làm, bất kể ngôn ngữ nào. Nhưng cách mà lập trình viên cấu trúc các điều kiện đó sẽ ảnh hưởng đến mức độ dễ đọc, dễ kiểm thử và dễ bảo trì của mã nguồn. Trong bài viết này, chúng ta sẽ […]
PHP & Laravel Fundamentals
1. PHP là gì? PHP là ngôn ngữ lập trình phía server, thường dùng để xây dựng backend và web application. Flow cơ bản: Client ↓ HTTP Request PHP / Laravel ↓ Business Logic ↓ Database ↓ HTTP Response Laravel được xây dựng trên PHP, nên muốn học Laravel cần nắm những nền tảng PHP […]
JWT & Token Authentication
1. Token Authentication là gì? Token Authentication là cơ chế xác thực trong đó Client đăng nhập và nhận một Token từ Server. Sau đó, Client sử dụng Token này trong các request tiếp theo để chứng minh rằng request đã được xác thực. Thay vì gửi lại username/password cho mỗi request: Login ↓ Access […]
Authentication & Authorization
1. Authentication & Authorization là gì? Hai khái niệm này thường đi cùng nhau nhưng khác nhau hoàn toàn. Authentication – Xác thực trả lời cho câu hỏi bạn là ai Ví dụ: Đăng nhập bằng: – Username + Password – Access Token – JWT – OAuth 2.0 Server xác định danh tính của User. […]
API Error Handling – Xử lý lỗi trong API
1. API Error Handling là gì? API Error Handling là cách API phát hiện, xử lý và trả về lỗi một cách nhất quán khi request không thể thực hiện thành công. Ví dụ: Client ↓ API ↓ Có lỗi? ├── Không → Success Response └── Có → Error Handling → Error Response mục tiêu […]
API Validation – Kiểm tra và bảo vệ dữ liệu đầu vào
1. API Validation là gì? API Validation là quá trình kiểm tra dữ liệu mà Client gửi lên API có đúng định dạng, đúng kiểu dữ liệu và hợp lệ theo business rule hay không trước khi xử lý. Ví dụ Client gửi: { “name”: “”, “age”: -5, “email”: “abc” } API cần kiểm tra: […]
JSON & HTTP Status Codes – Nền tảng quan trọng khi làm REST API
JSON & HTTP Status Codes – Nền tảng quan trọng khi làm REST API khi là việc với REST API client và server cần hai thứ quan trọng: JSON để trao đổi dữ liệu HTTP Status Codes là hiển thị trạng thái có biết request đã xảy ra chuyện gì 1. JSON là gì? JSON […]
REST API – Cách thiết kế và xây dựng API theo REST
REST API – Cách thiết kế và xây dựng API theo REST khi chúng ta xậy dựng một website để mà frontend có thể giao tiếp được với backend đó chính là API. Ví dụ: Frontend ↓ GET /users // đây là API ↓ Backend ↓ Database Frontend có thể gửi request để lấy danh […]
SDLC&STLC
1. Tổng quan nền tảng về quy trình phát triển và kiểm thử phần mềm Trong bất kỳ một dự án công nghệ thông tin nào, dù là ứng dụng di động nhỏ hay hệ thống phần mềm doanh nghiệp khổng lồ, việc để sản phẩm đi đến thành công không thể dựa vào sự […]
Software Testing-Kiểm thử phần mềm
1. Software Testing là gì? Software Testing (Kiểm thử phần mềm) không chỉ đơn thuần là việc mở ứng dụng lên rồi bấm bừa các nút xem nó có chạy hay không; mà đây là một tập hợp các hoạt động có hệ thống nhằm rà soát, kiểm tra, phân tích và đánh giá một […]
Build for global scale: AFK scale cube and basic rule to build an application for global scale
REF https://akfpartners.com/growth-blog/scale-cube
PostgreSQL : subquery, CTE
What is subquery in PostgreSQL? In PostgreSQL, a subquery is a query that is nested inside another query. The subquery is executed first, and its results are used as input to the outer query. Subqueries can be used in various contexts, such as in the SELECT, WHERE, and HAVING clauses of a query. For example, […]
Optimize SQL : rule and todo list
Some rule and todo list to Optimize SQL REF https://www.pgmustard.com/blog/indexing-best-practices-postgresql
PostgreSQL Compound indexes
What is Compound indexes in PostgreSQL? A compound index (also known as a composite index or a multi-column index) refers to an index that is created on two or more columns of a table. It allows PostgreSQL to quickly find rows that match a query condition based on the values in multiple columns, which can […]
Use AWS to deploy your applications and services
Amazon Web Services (AWS) is a cloud computing platform that provides a wide range of services to help businesses and individuals build and deploy applications in the cloud. AWS offers a variety of services such as compute, storage, databases, networking, security, and more. In this guide, we will walk through the steps to get started […]
Use docker to run go project
Docker is a powerful tool that enables developers to create, deploy and run applications in a containerized environment. Using Docker to run Go projects has many advantages, including the ability to isolate your application from the underlying operating system, simplifying the deployment process, and allowing for greater scalability and flexibility. In this guide, we will […]
PostgreSQL indexing best practices
Don’t index every column If indexes are so useful, why don’t we add them to every column? There are a few good reasons, but a big one is that indexes add overhead to writes. Not only do indexes need to be kept up to date when we write to the table, but they can also […]
Golang the basic concept of Go Programing
Go is a statically-typed, concurrent, and garbage-collected programming language developed by Google. Here are some of the basic concepts and guidelines for writing code in Go: Syntax: Go has a simple and straightforward syntax that is easy to learn. The language has a strict coding style, with specific rules for naming variables, functions, and types, […]
Clean code in writing Go program
When writing code in Go, it is important to follow good coding practices to ensure that your code is clean, maintainable, and scalable. Here are some clean code and clean architecture practices to follow: Go coding style: Follow the official Go coding style guide, which includes recommendations for naming conventions, formatting, and documentation. Consistent coding […]
Interfaces in Go and best practice
Interfaces in Go are a set of methods that defines a behavior. A type can implement an interface by defining methods with the same signatures as the methods defined in the interface. This allows for a form of polymorphism in Go, where a single function or method can operate on values of different types, as […]
Explicit ssl bumping with Squid
To perform explicit SSL bumping with Squid, you need to perform the following steps: Generate a SSL certificate and key: You can either generate a self-signed certificate or obtain one from a certificate authority. The certificate and key will be used by Squid to encrypt and decrypt the traffic. Install and configure Squid: Squid is […]
Explicit ssl bumping with HAProxy
Basic guide About Explicit SSL bumping Explicit SSL bumping also known as “SSL interception,” is a feature of some reverse proxies and security appliances that allows the proxy to decrypt, inspect, and re-encrypt SSL/TLS encrypted traffic. The proxy acts as a man-in-the-middle, decrypting incoming SSL/TLS traffic and re-encrypting it before forwarding it to the destination […]
Nodes and Clusters
It is best practice to create clusters with at least three nodes to guarantee reliability and efficiency Every cluster has one master node, which is a unified endpoint within the cluster, and at least two worker nodes Here, we discover some points of nodes and clusters. Let’s begin Nodes and clusters are two of the […]
RPC, gRPC, protocol buffers
What is Remote Procedure Call (RPC) Remote Procedure Call is a software communication protocol that one program can use to request a service from a program located in another computer on a network without having to understand the network’s details. RPC is used to call other processes on the remote systems like a local system. […]
System design practice : twitter
REF https://medium.com/double-pointer/system-design-interview-uber-or-a-similar-app-grab-lyft-or-ola-design-76807fac24c3
System design practice : uber
REF https://medium.com/double-pointer/system-design-interview-uber-or-a-similar-app-grab-lyft-or-ola-design-76807fac24c3
Leader Heavy – Team Management
Kỷ luật Công bằng Xây dựng uy tín ( trust ) Make noise , shout out Làm gì khi thiếu người Áp lực tốt và áp lực xấu Gắn kết team Phát triển kỹ năng cứng và mềm cho team member Tiêu chí: 1/ Làm tốt công việc được giao 3/Làm vượt kỳ vọng REF […]
System design
REF https://medium.com/double-pointer/system-design-interview-uber-or-a-similar-app-grab-lyft-or-ola-design-76807fac24c3
use tmux
Install tmux for macos brew install tmux Install tmux for ubuntu sudo apt-get install tmux -y Config file in tmux Config file is located at ~/.tmux.conf Leader key in tmux By default, leader key is Ctrl+b (Press Ctrl and b) It will activate more tmux function Install plugin manager for tmux Install plugin for tmux […]
API gateway
Input 2 server node Output 2 server is served in a cluster Traffic need to balance for 2 server node API gateway with Nginx API gateway with HAProxy REF
Design whole technical system for a Stock Exchange enterprise such as HoSE
Input Database connection: 2000 TPS: 1500 Output:
Design whole technical system for a shipping company such as Grab
Input Database connection: 2000 TPS: 1500 Output:
Design whole technical system for a bank company such as HSBC
Input Database connection: 2000 TPS: 1500 Output:
use Git
Git merge Git rebase Git commit Git revert Git add Git checkout Git head~ Git diff Lệnh git fetch Lệnh git fetch tải về dữ liệu từ Remote Repo (các dữ liệu như các commit, các file, refs), dữ liệu tải về để bạn theo dõi sự thay đổi của remote, tuy nhiên tải về […]
Optimize SQL
Ví dụ sử dụng EXPLAIN ANALYZE và đọc dữ liệu plan EXPLAIN ANALYZE SELECT * FROM ENGINEER WHERE first_name = ‘Dominique’ AND last_name LIKE ‘%a%’; Chú ý cách đọc plan sẽ đi từ trong ra ngoài, không phải từ trên xuống dưới: Step đầu tiên dễ dàng nhận thấy là index scan với điều kiện […]
Debug go lang with dlv dap
# REF https://github.com/golang/vscode-go/blob/master/docs/debugging.md
Thread and concurrent in swift
A thread is basically a particular path of execution of code. Thread1 is the “main thread”, the one where your app does its basic operations, all of the user interface code, etc. When you start getting into more sophisticated programming, you might employ concurrency, where you send time consuming operations to a background thread/queue so […]
Calculate memory of a map golang
+ cách tính memory của 1 map + có release không thì dựa vào GC bito computing + câu chuyện memory + câu chuyện computing, n với n2
Lock and Deadlock
DeadLock trong cơ sở dữ liệu và cách phòng tránh https://www.javatpoint.com/deadlock-in-dbms
Use postman to run runner
https://blog.postman.com/using-csv-and-json-files-in-the-postman-collection-runner/
Build for global scale: combine all in one together
REFERENCE https://dev.to/aurelmegn/setting-up-distributed-database-architecture-with-postgresql-261 https://www.postgresql.org/docs/9.5/sql-createforeigntable.html https://www.postgresql.org/docs/9.3/ddl-foreign-data.html
Build for global scale: distributed database
A distributed database is a database in which data is stored across different physical locations. It may be stored in multiple computers located in the same physical location (e.g. a data centre); or maybe dispersed over a network of interconnected computers. Some basic information and keyword Master server Slave Server Foreign Table Config file location: […]
Build for global scale: why to choose go lang ?
If you surfering the internet with the keyword “why choose golang” , you might go to a short brief why most people choose go lang for their project Five reasons to start with Golang include: + Golang is advanced and reliable, offering great built-in ways to handle errors. + It is efficient, compiling down to […]
Build for global scale: postgres vs mongodb vs mysql vs redis
SQL Server vs PostgreSQL Comparison Table Here are some of the Comparison: The Basis Of Comparison SQL Server PostgreSQL Basic Difference SQL server is a database management system which is mainly used for e-commerce and providing different data warehousing solutions. PostgreSQL is an advanced version of SQL which provides support to different functions of SQL […]
RestAPI with GO
What is in this article ? In this artivle, we’ll try to build a bookstore REST API that provides book data and performs CRUD operations. Let’s start by initializing a new Go module. This will enable us to manage the dependencies that are specifically installed for this project. <pre> Note: you can use the command […]
Webserver with nginx and apache
What is in this article ? How to install nginx on centos 7 Some of the basics of NGINX as a refresher Logging, explains that monitoring for errors and access patterns are fundamental to running a server. Rewrites, covers how rewrites work and also specific implementations of many of the common scenarios. It will be […]
Build for global scale : message broker with rabbitMQ and MQTT
What is in this article ? Install rabbitMQ server Connecting to a broker Producing messages Consuming messages Broadcasting messages Guaranteeing message processing Distributing messages to many consumers Using message properties Messaging with transactions Handling unroutable messages Install rabbitMQ server on centos7 You can see a download list here https://www.rabbitmq.com/install-rpm.html#downloads Some basic step to install can […]
Use raspberry as a server: install centos os on raspberry
Reference https://pimylifeup.com/raspberry-pi-centos/
Build for global scale : gRPC and Go
Reference https://grpc.io/docs/languages/go/quickstart/
Build for global scale : socket.io-redis, redis, kafka, rabbitMQ
Skip to content CONTACT US SIGN IN Otonomo Logo Redis, Kafka or RabbitMQ: Which MicroServices Message Broker To Choose? When using asynchronous communication for Microservices, it is common to use a message broker. A broker ensures communication between different microservices is reliable and stable, that the messages are managed and monitored within the system and […]
Build CDN for a global scale system
Some basic questions about CDN and what for 1. What are the seven requirements of end users that relate to Content Networking? The seven requirements of end users that relate to Content Networking are performance, availability, anonymity, ubiquity/accessibility, security, privacy, and personalization/relevancy. 2. What are the nine requirements of service providers that relate to Content […]
Build a system for global scale: basic theory
If you are trying to build a system and try to scale it globally, sell your product all over the world, you will need a collection of rules that are implemented in design and code. In this article, we will make clear some basic knowledge on how to build an system able to scale globally […]
Improve performance x times with concurrency / synchronization
The theory Job A: 5 sec Job B: 6 sec Job C: 7 sec So, to handle job A,B,C we need 5 + 6 + 7 = 18 sec How to improve it ? You can do all job asynchronous So, all to job will be executed at the same time How to do it […]
REDIS IN USE
Install Redis We can install EPEL using yum: sudo yum install epel-release #Once the EPEL installation has finished you can install Redis, again using yum: sudo yum install redis -y #This may take a few minutes to complete. After the installation finishes, start the Redis service: sudo systemctl start redis.service #If you’d like Redis to […]
HAPROXY IN USE
What is this article about ? What is HAProxy ? Install HAProxy Configure the load balancer Use HAProxy to balance Websocket traffic Use HAProxy to configue backup server HAProxy algo Use HAProxy to Observe all requests for errors Use HAProxy to Monitor for server downtime Use HAProxy to send logs to syslog Separating errors into […]
Use VIM for coding
What is in this article about vim? Some Basic knowledge and keyword to use VIM Basic search in document with VIM Basic select text and block with VIM Basic copy and paste with VIM Basic moving in VIM Copy and paste in vim over ssh with X11 forwarding Replace content with VIM Replace content with […]
Docker on Centos
Using Docker Machine, we can set up Docker hosts on local systems, on cloud providers, and other environments very easily. We’ll cover that in a different recipe. How to To Install Docker on centos $ yum -y install docker How it works… The preceding command will install Docker and all the packages required by it. […]
API Gateway with Go and Node.js
## Ref Building an API Gateway using Node.js https://github.com/motiv-labs/janus https://dev.to/alombarte/an-api-gateway-is-not-the-new-unicorn-2kk2
Golang in use
What is this article about? Import Debug Variables and Declarations Function Declarations Data Type Structure, enum, class Maps, Arrays and Slices Interfaces Concurrency Pointer How to create a routes ( Storing routes, static routes, dynamic routes, Forwarding routes… ) Working with web handlers, requests, and ResponseWriter instances: parse request data, response JSON Making a middleware […]
PostgreSQL in use
What is in this article in summary? + Install postgreSQL on centos 7 + Secure your database connection via ssh tunnel + Some basic guide on psql prompt (How to Switching Over to the postgres Account on server, exit postgres back to linux command prompt, Create a new role, Set password for postgres account, Create […]
Sponsor
TAGs
Bộ máy tính 3 trong 1 phục vụ học tập – lập trình (hoàn tiền nếu không hài lòng)
Khoá học cho trẻ em
Sách Tin học dành cho người lớn tuổi
Cuối tuần cùng tôi

Khoá đào tạo số 18 – buổi học ngày 12-01-2020 : lập trình website cho người mới & người chưa biết gì: cơ bản html css

Khoá đào tạo số 16 – buổi học ngày 22-12-2019 : lập trình website cho người mới & người chưa biết gì: cơ bản html css

Khoá đào tạo số 11 – buổi số 5 ngày 20-10-2019 : lập trình website cho người mới & người chưa biết gì : cơ bản về wordpress (tt)

Thông báo nghỉ ngày 13-10-2019

Khoá đào tạo số 11 – buổi số 4 ngày 06-10-2019 : lập trình website cho người mới & người chưa biết gì : cơ bản về wordpress







































































































Khoá học lập trình game con rắn cho trẻ em

