Series 7 — Web Quality – Engineering : Authentication & Authorization
Series 7 — Web Quality – Engineering Bài 1: Authentication & Authorization – Xác thực và phân quyền trong ứng dụng web 1. Mở đầu Khi xây dựng một ứng dụng web có chức năng đăng nhập, chúng ta thường nghĩ rằng chỉ cần tạo biểu mẫu nhập email, mật khẩu và kiểm tra thông […]
Series 6 – Next.js Advanced – Production: Next.js Build & Deployment
Series 6 – Next.js Advanced & Production Bài 5: Next.js Build & Deployment – Từ mã nguồn đến môi trường Production 1. Mở đầu Trong quá trình phát triển một ứng dụng web, việc chạy thành công trên máy tính cá nhân chưa có nghĩa là ứng dụng đã sẵn sàng để đưa đến người […]
Series 6 – Next.js Advanced – Production: Next.js Internationalized Routing Next.js Static Export
Series 6 – Next.js Advanced & Production Bài 3: Next.js Internationalized Routing – Tổ chức URL cho website đa ngôn ngữ 1. Mở đầu Sau khi xây dựng cơ chế dịch nội dung và định dạng theo locale, ứng dụng cần một cách để người dùng truy cập đúng phiên bản ngôn ngữ. Ví […]
Series 6 – Next.js Advanced & Production: Metadata & SEO, Internationalization (i18n) & Localization (l10n)
Series 6 – Next.js Advanced & Production Bài 1: Metadata & SEO trong Next.js – Tối ưu thông tin và khả năng hiển thị trên công cụ tìm kiếm 1. Mở đầu Khi xây dựng một website, việc hoàn thiện giao diện và chức năng mới chỉ là một phần của quá trình phát triển. […]
Series 5 – Next.js Fundamentals: CSR, SSR, SSG, ISR và cách lựa chọn
Series 5 – Next.js Fundamentals Bài 7 : CSR, SSR, SSG và ISR – Các chiến lược Rendering trong Next.js 1. Mở đầu Khi xây dựng một website bằng React, chúng ta thường tập trung vào việc tạo component, quản lý state và hiển thị giao diện trên trình duyệt. Tuy nhiên, khi ứng dụng […]
Series 5 – Rendering – Data Fetching: Server và Client, Data Fetching, Caching và Revalidation
Series 5 – Rendering – Data Fetching Bài 5: Server Components, Client Components và Component Boundaries trong Next.js 1. Mở đầu Khi làm việc với React, chúng ta thường xây dựng component bằng JSX, sử dụng useState để quản lý trạng thái và useEffect để xử lý các tác vụ phụ. Phần lớn logic giao […]
Series 5 – Next.js Fundamentals: Route Groups, Catch-all Routes, Navigation, Layouts, Loading UI, Error Handling, Proxy
Series 5 – Next.js Fundamentals Bài 3:Route Groups, Catch-all Routes và Navigation trong Next.js 1. Mở đầu Khi xây dựng một ứng dụng web, việc tạo các trang riêng lẻ chỉ là bước đầu. Khi ứng dụng phát triển, chúng ta cần tổ chức các trang theo từng nhóm chức năng, xử lý […]
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 […]
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 […]
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ó […]
Severity vs Priority(Độ nghiêm trọng vs Mức độ ưu tiên)
1.Severity và Priority là gì? Phân biệt ra sao? Trong bức tranh toàn cảnh của Vòng đời kiểm thử phần mềm (Software Testing Lifecycle – STLC), việc phát hiện ra lỗi (Bug/Defect) mới chỉ đóng góp 50% vào thành công của quy trình đảm bảo chất lượng. 50% còn lại phụ thuộc hoàn toàn vào […]
Bug Lifecycle & Bug Report
1.Bug Lifecycle & Bug Report là gì? Trong quản lý chất lượng phần mềm, Bug Lifecycle (Vòng đời của lỗi) và Bug Report (Báo cáo lỗi) là hai khái niệm cực kỳ quan trọng giúp kiểm thử viên (Tester) và lập trình viên (Developer) trao đổi, theo dõi và sửa lỗi một cách chuyên nghiệp. […]
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 […]
Positive vs Negative Testing(Kiểm thử tích cực và Kiểm thử tiêu cực)
1.Positive vs Negative Testing là gì? Trong ngành công nghệ phần mềm, chất lượng sản phẩm không bao giờ là một khái niệm đơn chiều. Một ứng dụng được lập trình hoàn hảo trên lý thuyết vẫn có thể sụp đổ hoàn toàn ngay trong ngày đầu tiên phát hành nếu nó chỉ được chuẩn […]
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 […]
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 […]
Series 5 – Next.js Fundamentals: Next.js, Project Structure, App Router, Static Routes, Dynamic Routes và Nested Routes
Series 5 – Next.js Fundamentals Bài 1:Next.js, Project Structure và App Router 1. Mở đầu Sau khi học React, chúng ta đã biết cách xây dựng giao diện bằng Component, truyền dữ liệu qua Props và quản lý trạng thái bằng State. Tuy nhiên, một ứng dụng web thực tế thường có nhiều trang, […]
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 […]
Boundary Value Analysis(Phân tích giá trị biên)
1.Boundary Value Analysis là gì? Trong quá trình xây dựng và phát triển phần mềm, mặc dù đội ngũ lập trình viên luôn cố gắng viết mã nguồn thật chuẩn xác, nhưng thực tế kiểm thử từ nhiều thập kỷ qua đã đúc kết một quy luật kinh điển: Phần lớn các lỗi logic (logic […]
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 […]
Series 4 – React Rendering :Component Lifecycle, Rendering và Re-rendering Virtual DOM, Reconciliation và DOM
Series 4 – React Hooks – State Bài 1 :Component Lifecycle, Rendering và Re-rendering – React cập nhật giao diện như thế nào? 1. Mở đầu Khi xây dựng ứng dụng React, một câu hỏi quan trọng là: điều gì xảy ra khi state thay đổi? Vì sao một component được hiển thị lần […]
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 […]
UAT(Kiểm thử chấp nhận người dùng)
UAT là gì? Trong toàn bộ Vòng đời phát triển phần mềm (SDLC), sau khi trải qua hàng loạt các cấp độ kiểm thử kỹ thuật nội bộ như Unit Testing, Integration Testing, System Testing, sản phẩm phần mềm vẫn chưa thể chính thức phát hành. Bước đệm cuối cùng và mang tính chất quyết […]
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 […]
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 […]
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 […]
Series 4 – React Hooks – State: Hooks, useState và useEffect
Series 4 – React Hooks – State Bài 1 : Hooks, useState và useEffect – Quản lý dữ liệu và side effects trong React 1. React Hooks là gì? Hooks là những hàm do React cung cấp để Function Component sử dụng các khả năng như quản lý state, đồng bộ với hệ thống bên […]
Series 4 – React Fundamentals: List Rendering, Forms, Form Handling
Series 4 – React Fundamentals Bài 3: List Rendering, Forms và Form Handling – Hiển thị danh sách và xử lý biểu mẫu trong React 1. Mở đầu Trong một ứng dụng thực tế, dữ liệu thường được hiển thị dưới dạng danh sách: danh sách sản phẩm, bài viết, người dùng hoặc công việc […]
Series 4 – React Fundamentals: State, Events và Conditional Rendering
Series 4 – React Fundamentals Bài 2: State, Events và Conditional Rendering – Cách React xử lý tương tác người dùng 1. Mở đầu Một giao diện website không chỉ hiển thị nội dung cố định. Khi người dùng nhấn nút, nhập dữ liệu, đăng nhập hoặc thêm sản phẩm vào giỏ hàng, giao diện cần […]
Series 4 — React Fundamentals : JSX, Components và Props – Ba nền tảng đầu tiên khi học React
Series 4 – React Fundamentals Bài 1:JSX, Components và Props – Ba nền tảng đầu tiên khi học React 1. Mở đầu Khi xây dựng một website bằng HTML, CSS và JavaScript, chúng ta thường tạo cấu trúc giao diện bằng HTML, sau đó sử dụng JavaScript để xử lý dữ liệu và tương tác. […]
Series 3 – JavaScript Fundamentals: Async → API
Series 3 — JavaScript Fundamentals JavaScript → DOM → Async → API Bài 2. Asynchronous JavaScript & API – Xử lý bất đồng bộ và giao tiếp với Server 1. Vì sao cần Asynchronous JavaScript? Trong các website hiện đại, nhiều thao tác cần thời gian để hoàn thành, chẳng hạn như gọi API lấy […]
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 […]
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 […]
Sanity Testing(Kiểm thử sự hợp lý)
Sanity Testing là gì? Trong quá trình phát triển và vận hành một dự án phần mềm, hoạt động lập trình không bao giờ dừng lại ở lần phát hành đầu tiên. Sau khi nhận được phản hồi từ đội ngũ QC hoặc người dùng thực tế, các lập trình viên sẽ liên tục tiến […]
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 […]
Functional Testing (Kiểm thử chức năng)
1.Functional Testing (Kiểm thử chức năng) là gì? Trong bức tranh toàn cảnh của ngành phát triển phần mềm, mục tiêu cuối cùng của mọi ứng dụng công nghệ là giải quyết các bài toán nghiệp vụ cho con người. Dù một hệ thống có kiến trúc mã nguồn siêu việt, giao diện bắt mắt […]
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. […]
Test Case & Test Plan & Test Data
1. Lời mở đầu và vị trí nền tảng của bộ ba quản lý kiểm thử trong dự án phần mềm Trong quy trình sản xuất phần mềm hiện đại, nếu hoạt động lập trình (Coding) là việc hiện thực hóa các ý tưởng thiết kế thành sản phẩm chạy được, thì hoạt động kiểm […]
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 […]
Series 3 – JavaScript Fundamentals : JavaScript → DOM
Series 3 — JavaScript Fundamentals JavaScript → DOM → Async → API Bài 1. JavaScript & DOM – Từ ngôn ngữ lập trình đến tương tác với giao diện Web 1. JavaScript là gì? Trong quá trình xây dựng website, HTML được sử dụng để tạo cấu trúc nội dung, CSS đảm nhiệm việc […]
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ù […]
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ù […]
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ý […]
Series 2 — Frontend Fundamentals: Responsive Web Design – Bootstrap
Series 2 — Frontend Fundamentals HTML → Sematic HTML → Forms & Validation → CSS Flexbox & Grid → Responsive Web Design → Bootstrap Bài 6. Responsive Web Design – Giao diện đa thiết bị 1. Responsive Web Design là gì? Khi xây dựng một website, chúng ta không thể giả định rằng […]
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, […]
Series 2 — Frontend Fundamentals: CSS — Flexbox-Grid
Series 2 — Frontend Fundamentals HTML → Sematic HTML → Forms & Validation → CSS Flexbox & Grid → Responsive Web Design → Bootstrap Bài 4. CSS Fundamentals – CSS là gì? CSS Fundamentals – CSS là gì và hoạt động như thế nào? Ở những bài trước, chúng ta đã tìm […]
Series 2 — Frontend Fundamentals : HTML – Sematic HTML – Forms & Validation
Series 2 — Frontend Fundamentals HTML → Sematic HTML → Forms & Validation → CSS Flexbox & Grid → Responsive Web Design → Bootstrap Bài 1 – HTML Fundamentals – HTML là gì và hoạt động như thế nào? Series 1 đã giúp chúng ta hiểu cách Internet, DNS, HTTP/HTTPS và Browser […]
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 […]
Test Types(Các loại kiểm thử phần mềm)
1. Lời mở đầu và vai trò định hình phạm vi của Test Types trong kiểm thử phần mềm: Trong quy trình phát triển và kiểm định chất lượng phần mềm, nếu như Testing Levels (Các cấp độ kiểm thử như Unit, Integration, System, Acceptance) giải quyết câu hỏi kiểm thử được thực hiện ở […]
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 […]
Series 1 — Web Fundamentals: DNS – Browser
Series 1 — Web Fundamentals Internet → HTTP/HTTPS → DNS → Browser Bài 3 :DNS & Domain DNS & Domain – Làm thế nào Domain được chuyển thành IP? Ở hai bài trước, chúng ta đã tìm hiểu: Internet là gì? Client và Server là gì? IP Address là gì? HTTP/HTTPS dùng […]
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 […]
Series 1 — Web Fundamentals: Internet – Http/Https
Series 1 — Web Fundamentals Internet → HTTP/HTTPS → DNS → Browser Bài 1 – Internet Fundamentals Khi bắt đầu học Frontend, chúng ta thường tập trung vào HTML, CSS và JavaScript. Tuy nhiên, trước khi tìm hiểu cách xây dựng một website, có một câu hỏi cơ bản mà bất kỳ Frontend […]
HTTP & HTTPS – Nền tảng giao tiếp trên Web
HTTP & HTTPS – Nền tảng giao tiếp trên Web Khi làm web hoặc backend, có một thứ gần như xuất hiện ở mọi nơi nhưng rất dễ bị xem là hiển nhiên: HTTP. Mỗi khi mở một website, gọi một API, đăng nhập, gửi form hay tải một file, client và server đều cần […]
Return First
Return First – Tư duy xử lý điều kiện trong code Khi bắt đầu làm việc với code thực tế, chúng ta sẽ thường gặp những function chứa rất nhiều điều kiện. Ban đầu, việc sử dụng if/else để xử lý từng trường hợp là hoàn toàn bình thường. Tuy nhiên, khi logic ngày càng […]
SOLID
SOLID – 5 nguyên tắc giúp thiết kế code tốt hơn SOLID là 5 nguyên tắc thiết kế trong lập trình hướng đối tượng (OOP), giúp code dễ đọc, dễ thay đổi, dễ mở rộng và dễ bảo trì. SOLID không phải framework hay tool mà là tư duy thiết kế code. Nó giúp hạn […]
Waterfall và Agile/Scrum: Mô hình nào phù hợp hơn?
Waterfall và Agile/Scrum: Mô hình nào phù hợp hơn? Khi tìm hiểu về phát triển phần mềm, chúng ta thường nghe rằng Agile/Scrum hiện đại hơn Waterfall và Waterfall đã trở nên lỗi thời. Tuy nhiên, đây là một cách nhìn chưa hoàn toàn chính xác. Waterfall vẫn được sử dụng trong thực tế và […]
Kanban là gì? Hiểu nhanh về phương pháp quản lý công việc
Kanban là gì? Hiểu nhanh về phương pháp quản lý công việc Khi làm việc trong một team phát triển phần mềm, việc biết ai đang làm gì, công việc đang ở đâu và task nào đang bị tồn đọng rất quan trọng. Kanban được sử dụng để giúp team trực quan hóa và quản […]
Verification vs Validation (Xác minh-Xác nhận)
1. Tổng quan nền tảng và định nghĩa cốt lõi về Verification và Validation: Trong ngành kỹ thuật phần mềm, việc kiểm soát chất lượng sản phẩm luôn đòi hỏi một hệ thống tiêu chuẩn khắt khe và rõ ràng. Tuy nhiên, ranh giới giữa việc “xem phần mềm đã đúng chuẩn chưa” và “phần […]
Waterfall là gì?
Mô hình Waterfall là gì? Waterfall (Thác nước) là một phương pháp quản lý dự án và phát triển phần mềm theo trình tự tuyến tính, nghiêm ngặt. Trong mô hình này, các giai đoạn phát triển diễn ra nối tiếp nhau như một dòng thác chảy từ trên xuống: giai đoạn trước phải hoàn […]
Agile là gì? Scrum/Kanban có gì khác?
Agile thực chất là một triết lý hay một khung tư duy để nhanh chóng thích ứng và phản hồi với thay đổi, từ đó đạt được thành công trong một môi trường liên tục biến động và không chắc chắn. Dễ hiểu hơn thì Agile là một phương pháp luận và tư duy quản […]
Agile/Scrum cơ bản cho Tester
Agile – Scrum Nhiều bạn mới rơi vào tình huống khi nghe tới Agile/Scrum nhưng hoang mang và không biết nó là gì? Và nghĩ nó là một công cụ. Bài này mình viết để bạn không phải hoang mang và bất ngờ. Agile là một cách làm việc, không phải công cụ. Thay vì […]
Git là gì ?
Git là gì ? Git còn được gọi là Distributed Version Control System (DVCS) hay VCS, là một hệ thống quản lý phiên bản phân tán ra đời vào năm 2005. Git giúp lập trình viên theo dõi và lưu trữ các phiên bản khác nhau của mã nguồn. Điều đặc biệt của Git là […]
Git & GitHub – Đừng nhầm Git với GitHub
Git và GitHub Khi mới bắt đầu học lập trình, đặc biệt là khi làm việc với source code, chắc hẳn bạn đã từng nghe đến hai cái tên Git và GitHub. Và một trong nhưng hiểu lầm phổ biến nhất của người mới là cho rằng Git và GitHub là một. Nghe qua thì […]
Lỗi bảo mật Zero Day trên .net framework và Office kb4041083
Lỗi này khiến cho hacker có thể sử dụng các file office để chiếm quyền điều khiển máy tính windows
Cập nhật bản vá chống tấn công krack ( key reinstall attack ) trên windows 7,8,10
Phương thức tấn công krack key reinstall attack mới được phát hiện có thể hack toàn bộ mạng wifi toàn cầu. Người dùng có thể bị mất các thông tin quan trọng như tài khoản email, mật khẩu, thông tin ngân hàng, bị chiếm quyền điều khiển và thậm chí bị đánh cặp dữ liệu […]
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

