NTM Solutions

Bài đăng nổi bật

🚀 Laravel 12 (2026) — Từ PHP Core đến Full Stack📘

Nếu cập nhật theo Laravel 12 LTS (2026) thì mình sẽ chia thành các phần như sau để người học đi từ PHP Core → Laravel → Triển khai dự án th...

Thứ Ba, 3 tháng 11, 2026

🧠 BÀI 9: NHÂN NHẨM SỐ GẦN 100 SIÊU TỐC

Trong bài 8, chúng ta đã học cách nhân hai số có hai chữ số bằng phương pháp tách số và phân phối phép nhân.

Hôm nay, chúng ta tập trung vào một kỹ thuật đặc biệt: Nhân các số gần 100 mà không cần nhân từng hàng chục và hàng đơn vị.

Ví dụ:

  • 98 * 97

  • 96 * 94

  • 103 * 98

  • 105 * 107

Đây là một trong những kỹ thuật thú vị nhất của tính nhẩm siêu tốc.

1. ⚡ Kỹ thuật 1 — Hai số cùng nhỏ hơn 100

Ví dụ:

98 * 97 = ?

Ta nhận thấy:

  • 98 thiếu 2 để thành 100.

  • 97 thiếu 3 để thành 100.

Bước 1: Nhân chéo bằng cách cộng bù trừ

98 - 3 = 95

Bước 2: Nhân hai phần thiếu

2 * 3 = 6

Vì phần kết quả cuối phải có 2 chữ số, ta viết 06.

Bước 3: Ghép hai phần

PHƯƠNG PHÁP GHÉP SỐ

98 * 97

Phần bên trái

95

98 - 3

Phần bên phải

06

2 * 3

9506

Kết quả chính xác

Vậy:

98 * 97 = 9506


2. 🚀 Kỹ thuật 2 — Hai số cùng thiếu một lượng gần nhau

Ví dụ:

96 * 94 = ?

Ta có:

  • 96 thiếu 4.

  • 94 thiếu 6.

Tính:

96 - 6 = 90

4 * 6 = 24

Ghép lại:

96 * 94 = 9024

Một ví dụ khác:

93 * 92 = ?

  • 93 - 8 = 85

  • 7 * 8 = 56

Ghép:

93 * 92 = 8556

Mẹo: Khi cả hai số gần 100, chỉ cần tính phần thiếu và nhân hai phần thiếu với nhau.

3. 🔥 Kỹ thuật 3 — Một số nhỏ hơn 100, một số lớn hơn 100

Ví dụ:

103 * 98 = ?

Ta có:

  • 103 vượt 100 là 3.

  • 98 thiếu 100 là 2.

Tính phần bên trái:

103 - 2 = 101

Tính phần bên phải:

3 * (-2) = -6

Khi phần bên phải âm, ta phải điều chỉnh phần bên trái:

10100 - 6 = 10094

Vậy:

103 * 98 = 10094

Để tránh xử lý số âm khi mới học, bạn cũng có thể tính:

103 * 98 = 103 * (100 - 2)

= 10300 - 206 = 10094

Cách thứ hai dễ áp dụng hơn khi phần thiếu và phần vượt nằm ở hai phía của 100.

4. 💡 Kỹ thuật 4 — Hai số cùng lớn hơn 100

Ví dụ:

103 * 104 = ?

Hai số lần lượt vượt 100 là 3 và 4.

Bước 1: Cộng chéo

103 + 4 = 107

Bước 2: Nhân phần vượt

3 * 4 = 12

Bước 3: Ghép hai phần

103 * 104 = 10712

Ví dụ khác:

105 * 107 = ?

  • 105 + 7 = 112

  • 5 * 7 = 35

Kết quả:

105 * 107 = 11235

5. 📌 Công thức tổng hợp

Gọi hai số là (100 + a) và (100 + b).

Ta có:

(100 + a) * (100 + b) = 100 * (100 + a + b) + a * b

Vì vậy, phương pháp ghép số hoạt động như sau:

Trường hợpVí dụ
Cả hai nhỏ hơn 10098 * 97 = 9506
Cả hai nhỏ hơn 10096 * 94 = 9024
Một số trên, một số dưới 100103 * 98 = 10094
Cả hai lớn hơn 100103 * 104 = 10712

Lưu ý quan trọng: Khi ghép số theo phương pháp này, phần bên phải phải có đúng 2 chữ số. Nếu tích phần bù từ 100 trở lên, cần nhớ phần dư sang bên trái.

6. 🎯 Thử thách tính nhẩm

10 câu thử thách

Mục tiêu: 120 giây.

Nhập đáp án, không dùng máy tính.

Câu 1

99 * 98 = ?

Câu 2

97 * 96 = ?

Câu 3

95 * 97 = ?

Câu 4

94 * 92 = ?

Câu 5

98 * 95 = ?

Câu 6

102 * 103 = ?

Câu 7

104 * 106 = ?

Câu 8

105 * 108 = ?

Câu 9

103 * 97 = ?

Câu 10

101 * 109 = ?

Kiểm tra đáp án

7. 🏆 Tiêu chuẩn hoàn thành bài 9

  • Cấp 1: Hiểu cách nhân hai số cùng nhỏ hơn 100.

  • Cấp 2: Tính đúng 8/10 câu.

  • Cấp 3: Nhận diện được cả ba trường hợp: hai số dưới 100, hai số trên 100 và hai số nằm hai phía của 100.

Ghi nhớ: Kỹ thuật này thực chất là ứng dụng tính chất phân phối của phép nhân. Khi hiểu bản chất, bạn có thể mở rộng từ 100 sang 1.000 hoặc những số tròn khác.

✦ 🎓 Made by AI 🎓 ✦

Thứ Hai, 2 tháng 11, 2026

📘 BÀI 09 — VUE.JS LÀ GÌ? TẠI SAO CẦN VUE KHI ĐÃ CÓ JAVASCRIPT?

🎯 1. Mục tiêu bài học

Trong 8 bài đầu tiên, chúng ta đã học JavaScript hiện đại và cách sử dụng JavaScript để giao tiếp với Laravel REST API.

Bây giờ chúng ta bắt đầu một công nghệ mới: Vue.js.

Sau bài học này, bạn sẽ hiểu:

  1. Vue.js là gì?

  2. Tại sao cần Vue khi đã có JavaScript?

  3. Vue giải quyết những vấn đề nào?

  4. Vue hoạt động như thế nào?

  5. Component trong Vue là gì?

  6. Vue khác JavaScript thuần và jQuery như thế nào?

  7. Khi nào nên sử dụng Vue trong Laravel?

🧠 Bài 8: Nhân nhẩm hai số có hai chữ số siêu tốc

Trong bài 7, chúng ta đã học cách nhân số có hai chữ số với một chữ số.

Hôm nay, ta nâng cấp lên một cấp độ mới: nhân hai số có hai chữ số với nhau, chẳng hạn 23 * 14, 36 * 25 hoặc 48 * 52.

Mục tiêu vẫn giữ nguyên: chỉ dùng phép cộng và phép nhân làm kỹ thuật chính, không cần đặt tính theo cột.

1. ⚡ Kỹ thuật 1 — Tách một số thành chục và đơn vị

Ví dụ:

23 * 14 = ?

Tách 14 thành 10 + 4:

23 * 14 = 23 * 10 + 23 * 4

Tính nhẩm:

  • 23 * 10 = 230

  • 23 * 4 = 92

Cộng lại:

230 + 92 = 322

CÔNG THỨC NỀN TẢNG

23 * 14 = 230 + 92

= 322

Nhân với hàng chục trước, rồi cộng phần còn lại.

Cách này dễ học, dễ kiểm tra và áp dụng được với hầu hết các phép nhân hai chữ số.

image (image)


2. 🚀 Kỹ thuật 2 — Nhân với số tròn chục rồi cộng phần thừa

Ví dụ:

32 * 19 = ?

Vì 19 gần 20, ta tính:

32 * 19 = 32 * 20 - 32

640 - 32 = 608

Một ví dụ khác:

47 * 21 = ?

Ta có:

47 * 21 = 47 * 20 + 47

940 + 47 = 987

Mẹo: Với số nhân là 19, 21, 29, 31, 39 hoặc 41, hãy thử làm tròn về số chục gần nhất.

3. 🔥 Kỹ thuật 3 — Nhân hai số gần 50

Ví dụ:

48 * 52 = ?

Hai số này nằm hai bên số 50. Ta có thể biến đổi:

48 * 52 = (50 - 2) * (50 + 2)

Ta tính:

48 * 52 = 50 * 50 - 2 * 2

= 2500 - 4 = 2496

Cách này nhanh khi hai số đối xứng quanh một số tròn như 50 hoặc 100.

Một ví dụ khác:

47 * 53 = 50 * 50 - 3 * 3

= 2500 - 9 = 2491

Bạn chưa cần thuộc công thức đại số ngay. Hãy hiểu rằng khi hai số cách đều 50, ta có thể tận dụng bình phương của 50.

4. 💡 Kỹ thuật 4 — Nhân hai số gần 100

Ví dụ:

98 * 97 = ?

Hai số lần lượt kém 100 là 2 và 3.

Ta tính:

98 * 97 = (100 - 2) * (100 - 3)

= 10000 - 200 - 300 + 6

= 9506

Cách nhẩm từng bước:

  • 98 * 100 = 9800.

  • Bớt 3 * 98 = 294.

  • 9800 - 294 = 9506.

Cách thứ hai không cần nhớ hằng đẳng thức; nó dùng phép phân phối mà bạn đã học.

5. 🧩 Kỹ thuật 5 — Nhân chéo và cộng các tích

Đây là phương pháp tổng quát, có thể áp dụng cho mọi cặp số có hai chữ số.

Ví dụ:

34 * 26 = ?

Tách hai số:

34 = 30 + 4

26 = 20 + 6

Ta tính bốn tích:

  • 30 * 20 = 600

  • 30 * 6 = 180

  • 4 * 20 = 80

  • 4 * 6 = 24

Cộng các kết quả:

600 + 180 + 80 + 24 = 884

Phương pháp này rất chắc chắn, nhưng có thể nhiều bước hơn. Khi luyện tốc độ, hãy thử kỹ thuật số tròn trước; nếu không thuận tiện, quay về phương pháp phân phối.

6. 📌 Chọn kỹ thuật nào cho nhanh?

Phép tínhCách nên thử
23 * 14Tách 14 thành 10 và 4
32 * 19Nhân với 20 rồi điều chỉnh
47 * 21Nhân với 20 rồi cộng thêm
48 * 52Hai số đối xứng quanh 50
98 * 97Hai số gần 100
34 * 26Tách chục và đơn vị

Không cần ép bản thân dùng mẹo đặc biệt cho mọi câu. Chọn cách ít bước nhất mà bạn có thể tính chính xác trong đầu.

7. 🎯 Thử thách tính nhẩm

Mục tiêu: hoàn thành 10 câu trong 120 giây. Tất cả các số hạng đều nhỏ hơn 1.000; kết quả có thể vượt 999.

10 câu luyện tập

120 giây

Nhập kết quả bạn tính được, sau đó bấm kiểm tra.

Câu 1

12 * 14 = ?

Câu 2

23 * 15 = ?

Câu 3

32 * 19 = ?

Câu 4

41 * 21 = ?

Câu 5

24 * 25 = ?

Câu 6

48 * 52 = ?

Câu 7

47 * 53 = ?

Câu 8

34 * 26 = ?

Câu 9

98 * 97 = ?

Câu 10

36 * 24 = ?

Kiểm tra đáp án

8. 🏆 Tiêu chuẩn hoàn thành bài 8

  • Cấp 1: Đúng ít nhất 8/10 câu.

  • Cấp 2: Đúng 10/10 câu trong 120 giây.

  • Cấp 3: Tự nhận ra khi nào nên tách số, khi nào nên làm tròn và khi nào nên ghép cặp.

✦ 🎓 Made by AI 🎓 ✦

Chủ Nhật, 1 tháng 11, 2026

📘 BÀI 08 — JAVASCRIPT GỌI LARAVEL REST API

🎯 1. Mục tiêu bài học

Ở các bài trước, chúng ta đã học:

  • Bài 05: Promise & Async/Await.

  • Bài 06: Fetch API.

  • Bài 07: Xử lý JSON & HTTP.

Trong bài 08, chúng ta sẽ kết hợp tất cả kiến thức trên để xây dựng một ứng dụng JavaScript giao tiếp trực tiếp với Laravel REST API.

Sau bài này, bạn có thể:

  1. Gọi API Laravel bằng JavaScript.

  2. Lấy dữ liệu từ Laravel và hiển thị lên giao diện.

  3. Gửi dữ liệu bằng phương thức POST.

  4. Cập nhật dữ liệu bằng PUT/PATCH.

  5. Xóa dữ liệu bằng DELETE.

  6. Xử lý lỗi HTTP và JSON.

  7. Xây dựng một module JavaScript chuyên dùng để gọi API.

🧠 Bài 7: Nhân nhẩm số có hai chữ số với một chữ số siêu tốc

Trong bài 6, chúng ta đã học cách nhân nhanh với 9, 11, 25 và 50.

Hôm nay, ta đi vào một kỹ năng cực kỳ quan trọng: nhân một số có hai chữ số với một số có một chữ số.

Ví dụ: 47 * 6, 68 * 7, 89 * 9.

Mục tiêu là tính được trong đầu bằng cách tách số, nhân đôi hoặc phân phối phép nhân — không cần đặt tính theo cột.

Thứ Sáu, 30 tháng 10, 2026

🧠 Bài 6: Nhân nhẩm siêu tốc với 9, 11, 25 và 50

Trong bài 5, bạn đã học cách nhân với 2, 3, 4 và 5.

Hôm nay, chúng ta học bốn kỹ thuật giúp rút ngắn phép nhân mà không cần đặt tính.

Mục tiêu: Nhìn thấy phép nhân là nhận ra ngay cách biến đổi đơn giản nhất.

Các số đem nhân vẫn nhỏ hơn 1.000; kết quả có thể lớn hơn 999.

1. ⚡ Nhân với 9 — Nhân 10 rồi bớt đi một lần

Vì 9 = 10 - 1, nên:

n × 9 = n × 10 - n

Ví dụ:

47 × 9 = ?

  • 47 × 10 = 470

  • 470 - 47 = 423

Vậy:

47 × 9 = 423

Ví dụ với số có ba chữ số:

125 × 9 = 1250 - 125 = 1125

PHẢN XẠ CẦN NHỚ

Nhân 9 = Nhân 10 rồi bớt số ban đầu

Thứ Năm, 29 tháng 10, 2026

🧠 Bài 5: Nhân nhẩm siêu tốc với 2, 3, 4 và 5

Từ bài này, chúng ta bắt đầu luyện phép nhân.

Mục tiêu là nhân các số có tối đa 3 chữ số, nhỏ hơn 1.000, mà không cần đặt tính trên giấy.

Bí quyết: Không phải phép nhân nào cũng cần học thuộc bảng cửu chương.

Ta có thể biến phép nhân thành những phép tính đơn giản hơn bằng cách nhân đôi, cộng lặp lại hoặc nhân với 10 rồi điều chỉnh.

1. ⚡ Nhân với 2 — Kỹ thuật nhân đôi

Nhân với 2 chính là cộng một số với chính nó.

Ví dụ:

247 × 2 = 247 + 247 = 494

Bạn có thể tính từ trái sang phải:

  • 200 × 2 = 400

  • 40 × 2 = 80

  • 7 × 2 = 14

Sau đó ghép lại: 400 + 80 + 14 = 494.

MẸO NHỚ

Nhân 2 = Nhân đôi

Không cần tính lần lượt từng chữ số nếu bạn đã quen nhân đôi cả số.

Ví dụ khác:

368 × 2 = 736

Thứ Tư, 28 tháng 10, 2026

🧠 Bài 4: Cộng nhẩm số có 3 chữ số siêu tốc

Từ bài này, chúng ta nâng cấp lên các phép cộng có số từ 100 đến 999. 

Bạn vẫn chỉ cần sử dụng phép cộng (+), không cần phép trừ hay phép chia làm kỹ thuật chính.

Mục tiêu: Biết cách cộng từ trái sang phải, bù tròn hàng trăm và ghép số để tính nhanh trong đầu.

1. ⚡ Kỹ thuật 1 — Cộng từ trái sang phải

Ví dụ:

324+253=? 

Thay vì cộng từng chữ số từ phải sang trái, hãy cộng theo từng phần:

Bước 1 · Hàng trăm

324 + 200 = 524

Bước 2 · Hàng chục

524 + 50 = 574

Bước 3 · Hàng đơn vị

574 + 3 = 577

324 + 253 = 577

Mẹo: Hãy giữ tổng tạm thời trong đầu, rồi lần lượt cộng hàng trăm, hàng chục và hàng đơn vị.

Thứ Ba, 27 tháng 10, 2026

🧠 Bài 3: Cộng nhẩm 3 số siêu tốc — Bí quyết ghép cặp

Bài hôm nay nâng cấp từ cộng 2 số lên cộng 3 số. 

Bí quyết quan trọng nhất là: Đừng cộng theo thứ tự đề bài. 

Hãy tìm hai số cộng lại thành số tròn chục hoặc tròn trăm trước!

1. ⚡ Kỹ thuật ghép cặp thành 100

Ví dụ:

27+38+73=?

Nếu cộng lần lượt, bạn phải xử lý nhiều bước. Hãy quan sát:

  • 27+73=100

  • 100+38=138

GHÉP CẶP THÔNG MINH

27 + 38 + 73

27 + 73

= 100

100 + 38 = 138

Tại sao nhanh? 

Vì não người xử lý số tròn như 10, 100, 200 dễ dàng hơn các số lẻ.

Thứ Hai, 26 tháng 10, 2026

🧠 Bài 2: Cộng nhẩm hai số có hai chữ số siêu tốc

Mục tiêu hôm nay: cộng hai số từ 10 đến 99 bằng cách tách chục, tách đơn vị hoặc bù tròn. 

Bạn sẽ học cách chọn phương pháp nhanh nhất thay vì lúc nào cũng cộng từ phải sang trái.

1. ⚡ Phương pháp tách chục và đơn vị

Ví dụ:

47+36=? 

Tách thành:

47=40+7, 36=30+6

Cộng chục với chục, đơn vị với đơn vị:

40+30+7+6=70+13=83

Mẹo: Khi cộng hai số có hai chữ số, hãy ưu tiên cộng phần chục trước.

📘 BÀI 07 — XỬ LÝ JSON & HTTP TRONG JAVASCRIPT

1. Mục tiêu bài học

Sau bài học này, bạn sẽ hiểu cách JavaScript trao đổi dữ liệu với Laravel thông qua JSON và HTTP, nền tảng quan trọng để xây dựng ứng dụng Vue + Laravel REST API.

Bạn sẽ học được:

  • JSON là gì và tại sao frontend cần JSON?

  • Chuyển đổi dữ liệu giữa JSON và JavaScript.

  • HTTP Request và HTTP Response hoạt động như thế nào?

  • Các HTTP Method: GET, POST, PUT, PATCH, DELETE.

  • Các HTTP Status Code phổ biến.

  • Xử lý lỗi khi gọi API.

  • Thực hành gửi và nhận dữ liệu JSON bằng fetch().

  • Chuẩn bị cho Bài 08: JavaScript gọi Laravel REST API.

Chủ Nhật, 25 tháng 10, 2026

📘 BÀI 06 — FETCH API TRONG JAVASCRIPT

1. Fetch API là gì?

Trong các bài trước, chúng ta đã học Promise và Async/Await. 

Bây giờ, chúng ta sẽ sử dụng những kiến thức đó để giao tiếp với máy chủ thông qua Fetch API.

fetch() là API có sẵn trong trình duyệt, cho phép JavaScript gửi HTTP request đến máy chủ và nhận dữ liệu trả về.

Ví dụ, 01 website có thể sử dụng Fetch API để:

  • Lấy danh sách bài viết từ Laravel.

  • Tìm kiếm bài viết mà không cần tải lại trang.

  • Gửi dữ liệu từ biểu mẫu đăng ký.

  • Lấy thông tin người dùng từ REST API.

  • Thêm, sửa, xóa dữ liệu thông qua API.

Hãy hình dung quy trình như sau:

Frontend — JavaScript

Gửi request bằng fetch()

Backend — Laravel 13

Xử lý request, truy vấn database

Database

Trả dữ liệu cho Laravel

Laravel trả response → JavaScript nhận dữ liệu → giao diện hiển thị kết quả.

Lưu ý: Fetch API không kết nối trực tiếp đến database. Nó giao tiếp với máy chủ thông qua HTTP.

Thứ Bảy, 24 tháng 10, 2026

Bài 1: Bí quyết cộng nhanh bằng cách bù tròn

Nguyên tắc đầu tiên:

Đừng cộng theo cách thông thường nếu có cách làm ngắn hơn.

Ví dụ, gặp phép tính:

  68 + 27 = ?

Cách thông thường: 8+7=15, nhớ 1, rồi cộng hàng chục.

Cách tính nhẩm nhanh hơn:

  • 68 cần thêm 2 để thành 70.

  • Tách 27 thành 2+25.

  • Tính 70+25=95.

Vậy 68+27=95.

🧠Khóa học tính nhẩm 2026

Lộ trình 12 bài

Bài

Nội dung

1

Cộng nhanh bằng cách bù tròn chục

2

Cộng hai số có hai chữ số

3

Cộng ba số liên tiếp trong một phép tính

4

Cộng số có ba chữ số

5

Nhân nhanh với 2, 3, 4, 5

6

Nhân nhanh với 9, 11, 25, 50

7

Nhân số có hai chữ số với một chữ số

8

Nhân hai số có hai chữ số

9

Nhân số gần 100

10

Nhân bằng cách phân tích và phân phối

11

Kết hợp cộng và nhân

12

Thi tính nhẩm siêu tốc

Mỗi bài sẽ gồm: mẹo tư duy → ví dụ giải thích → bài tập thực hành → thử thách tính giờ. Ta sẽ học từ dễ đến khó, không cần dùng phép trừ hay phép chia làm kỹ thuật chính.

Chủ Nhật, 18 tháng 10, 2026

🚀Bài 05 — Promise & Async/Await trong JavaScript

1. Vì sao cần học Promise?

Trong JavaScript, có những công việc hoàn thành gần như ngay lập tức:

const name = 'Doraemon';

console.log(name);

Nhưng cũng có những công việc cần thời gian chờ:

  • Gọi Laravel REST API.

  • Tải danh sách bài viết từ Database thông qua API.

  • Đọc dữ liệu từ máy chủ.

  • Tải hình ảnh.

  • Gửi Form đăng nhập.

  • Chờ kết quả từ một dịch vụ bên ngoài.

Ví dụ, khi ứng dụng cần lấy danh sách bài viết từ Laravel:

JavaScript
    │
    │ Gửi yêu cầu
    ▼
Laravel REST API
    │
    ▼
Controller
    │
    ▼
Database
    │
    │ Trả kết quả
    ▼
JavaScript nhận dữ liệu

Quá trình này có thể mất một khoảng thời gian.

JavaScript cần cơ chế xử lý công việc bất đồng bộ mà không phải chặn toàn bộ hoạt động của trình duyệt trong lúc chờ.

Hai kiến thức quan trọng chúng ta cần học là:

  • Promise

  • async/await


Thứ Tư, 14 tháng 10, 2026

🚀Bài 04 — Module & Import / Export trong JavaScript

1. Module là gì?

Trong các bài trước, chúng ta thường viết JavaScript trong một file:

resources/
└── js/
    └── app.js

Cách này phù hợp với những ví dụ đơn giản.

Nhưng hãy tưởng tượng ứng dụng Laravel của chúng ta có các chức năng:

  • Quản lý bài viết.

  • Quản lý danh mục.

  • Tìm kiếm.

  • Đăng nhập.

  • Hiển thị thông báo.

  • Gọi Laravel REST API.

Nếu tất cả code đều nằm trong app.js, file này sẽ ngày càng dài và khó bảo trì.

Module cho phép chúng ta chia code thành nhiều file, mỗi file đảm nhiệm một nhiệm vụ riêng.

Ví dụ:

resources/
└── js/
    ├── app.js
    ├── modules/
    │   ├── posts.js
    │   ├── users.js
    │   ├── search.js
    │   └── notification.js
    └── services/
        └── api.js

Mỗi file có thể xuất những thành phần cần sử dụng và nhập các thành phần từ file khác.

Hai từ khóa quan trọng nhất là:

  • export: xuất dữ liệu, hàm hoặc class để module khác sử dụng.

  • import: nhập dữ liệu, hàm hoặc class từ module khác.


Thứ Ba, 13 tháng 10, 2026

🚀Bài 03 — Array & Object trong JavaScript hiện đại

1. Array & Object là gì?

Trong ứng dụng web, dữ liệu thường được tổ chức dưới hai dạng phổ biến: Array và Object.

Array dùng để lưu một danh sách dữ liệu.

const languages = [
    'PHP',
    'JavaScript',
    'Python',
    'Java'
];

console.log(languages[0]);
console.log(languages[1]);

Kết quả:

PHP
JavaScript

Array sử dụng chỉ số bắt đầu từ 0.

Object dùng để lưu dữ liệu theo cặp khóa và giá trị.

const user = {
    id: 1,
    name: 'Pi',
    email: 'pi@example.com',
    role: 'user'
};

console.log(user.name);
console.log(user.email);

Kết quả:

Pi
pi@example.com

Trong thực tế, một danh sách thường chứa nhiều Object:

const users = [
    { id: 1, name: 'Pi', role: 'admin' },
{ id: 2, name: 'Hùng', role: 'user' }, { id: 3, name: 'Chi', role: 'user' } ];

Đây là cấu trúc dữ liệu rất phổ biến khi Laravel trả về danh sách người dùng hoặc bài viết dưới dạng JSON.

Thứ Hai, 12 tháng 10, 2026

🚀Bài 02 — ES6+: JavaScript hiện đại

1. ES6+ là gì?

ES6 (ECMAScript 2015) là phiên bản lớn của JavaScript ra mắt năm 2015, bổ sung nhiều cú pháp và tính năng giúp code ngắn gọn, dễ đọc và dễ bảo trì hơn.

ES6+ là cách gọi chung các tính năng ES6 và những phiên bản JavaScript hiện đại ra đời sau đó.

Trong khóa học Laravel 13, chúng ta sẽ sử dụng ES6+ để:

  • Viết JavaScript trong ứng dụng Laravel.

  • Xử lý dữ liệu từ REST API.

  • Xây dựng giao diện bằng Vue.

  • Làm việc với React.

  • Tổ chức code thành các module độc lập.

Thứ Sáu, 9 tháng 10, 2026

📘KHÓA 2 — FRONTEND SAU LARAVEL 13

JavaScript → Vue → Vue + Laravel API → React → Livewire

PHẦN 1 — JAVASCRIPT HIỆN ĐẠI

Bài 01 — JavaScript hiện đại trong ứng dụng Laravel

Bài 02 — ES6+

Bài 03 — Array & Object

Bài 04 — Module & Import / Export

Bài 05 — Promise & Async/Await

Bài 06 — Fetch API

Bài 07 — Xử lý JSON & HTTP

Bài 08 — JavaScript gọi Laravel REST API


🟢 PHẦN 2 — VUE

Bài 09 — Vue là gì?

Bài 10 — Cài đặt Vue + Vite

Bài 11 — Component

Bài 12 — Template & Data Binding

Bài 13 — Event

Bài 14 — Conditional & List Rendering

Bài 15 — Form

Bài 16 — Computed & Watch

Bài 17 — Props & Emits

Bài 18 — Composition API

Bài 19 — ref() & reactive()

Bài 20 — Composables


🔵 PHẦN 3 — VUE + LARAVEL API

Bài 21 — Kết nối Vue với Laravel API

Bài 22 — Hiển thị Posts

Bài 23 — Post Detail

Bài 24 — Category & Filter

Bài 25 — Search & Pagination

Bài 26 — CRUD với Vue

Bài 27 — Upload Image

Bài 28 — Login với Laravel Sanctum

Bài 29 — Register & Logout

Bài 30 — Protected Page

Bài 31 — User Dashboard

Bài 32 — Admin Dashboard


🟣 PHẦN 4 — VUE ROUTER & PINIA

Bài 33 — Vue Router

Bài 34 — Dynamic Route & Navigation Guard

Bài 35 — Pinia

Bài 36 — Authentication State

Bài 37 — Axios & Interceptor


🏗️ PHẦN 5 — PROJECT

Xây dựng Blog SPA

Bài 38 — Khởi tạo Blog SPA

Bài 39 — Blog Homepage

Bài 40 — Blog Listing & Detail

Bài 41 — Category & Search

Bài 42 — Authentication

Bài 43 — User Dashboard

Bài 44 — Admin Dashboard

Bài 45 — CRUD Posts

Bài 46 — Hoàn thiện Blog SPA


🔴 PHẦN 6 — MỞ RỘNG

Bài 47 — React cơ bản

  • JSX

  • Component

  • Props

  • State

  • useState

  • useEffect

Bài 48 — React + Laravel API

Bài 49 — Livewire cơ bản

  • Component

  • Data Binding

  • Event

  • Form

  • Validation

Bài 50 — Khi nào dùng Blade, Livewire, Vue hay React?


🎯 Tổng cộng: 50 bài

KHÓA LARAVEL 13
       │
       ├── REST API ✓
       │
       └── Sanctum ✓
              │
              ▼
      KHÓA FRONTEND 50 BÀI
              │
       ┌──────┴──────┐
       ↓             ↓
 JavaScript         Vue
       │             │
       └──────┬──────┘
              ↓
       Laravel REST API
              │
              ↓
          Blog SPA
              │
       ┌──────┼──────┐
       ↓      ↓      ↓
     Pinia  React  Livewire
Thứ Năm, 8 tháng 10, 2026

❓Tạo nút Hỏi AI🤖

Sử dụng Cloudflare Workers (gói Miễn phí vô cùng rộng rãi, cho phép 100.000 yêu cầu/ngày) làm "trạm trung chuyển" là giải pháp bảo mật tối ưu nhất.

Khi áp dụng phương pháp này, quy trình xử lý sẽ là: Blogger của bạn → Cloudflare Worker → Gemini API.

Người dùng xem bằng DevTools (F12) chỉ thấy URL của Cloudflare Worker chứ hoàn toàn không thấy Gemini API Key.

Thứ Tư, 30 tháng 9, 2026

🔑 Đặc điểm chính của Electron

Electron là một framework mã nguồn mở cho phép bạn xây dựng ứng dụng desktop đa nền tảng (Windows, macOS, Linux) chỉ với JavaScript, HTML và CSS, bằng cách kết hợp Chromium và Node.js trong cùng một môi trường.

Nó giúp lập trình viên web dễ dàng tạo ứng dụng desktop mà không cần học thêm ngôn ngữ native như C++ hay Swift.

🚀Bài 01 — JavaScript hiện đại trong ứng dụng Laravel

Trong các bài trước của khóa Laravel 13, chúng ta đã làm việc chủ yếu với:

  • PHP

  • Laravel

  • Blade

  • Database

  • Eloquent

  • REST API

  • Laravel Sanctum

Những thành phần này chủ yếu xử lý phía Server.

Nhưng một ứng dụng web hiện đại không chỉ có Server.

Khi người dùng:

  • bấm nút,

  • mở Modal,

  • gửi Form,

  • tìm kiếm,

  • lọc dữ liệu,

  • upload ảnh,

  • tải dữ liệu không cần reload trang,

  • cập nhật giao diện ngay lập tức,

thì chúng ta cần đến JavaScript.

Vì vậy, trước khi học Vue, React hoặc các Frontend Framework khác, chúng ta cần nắm được JavaScript hiện đại.

🚀 Laravel 12 (2026) — Từ PHP Core đến Full Stack📘

Nếu cập nhật theo Laravel 12 LTS (2026) thì mình sẽ chia thành các phần như sau để người học đi từ PHP Core → Laravel → Triển khai dự án thực tế.

Chủ Nhật, 27 tháng 9, 2026

🚀LARAVEL 13 — Bài 50 — Tổng kết dự án Blog CMS

Sau 49 bài, chúng ta đã đi từ những khái niệm đầu tiên của Laravel đến việc xây dựng một Blog CMS hoàn chỉnh.

Trong bài cuối cùng này, chúng ta sẽ không học thêm một tính năng mới.

Thay vào đó, chúng ta sẽ nhìn lại toàn bộ dự án:

  • Đã học những gì?

  • Các thành phần kết nối với nhau như thế nào?

  • Source code cần tối ưu ra sao?

  • Cần kiểm tra gì trước khi đưa website lên Internet?

  • Một dự án Laravel 13 hoàn chỉnh cần có những thành phần nào?

Đây cũng là bước chuyển từ:

"Học Laravel"

sang:

"Có thể tự xây dựng và triển khai một ứng dụng Laravel thực tế."


🚀LARAVEL 13 — BONUS — Kiểm thử với PHPUnit

Trong 50 bài chính, chúng ta đã hoàn thành một Blog CMS với:

  • Authentication

  • CRUD

  • Database

  • Eloquent

  • Relationship

  • Validation

  • Upload

  • Search

  • Pagination

  • Soft Delete

  • Authorization

  • Queue

  • Mail

  • Notification

  • Cache

  • Storage

  • Logging

  • REST API

  • Sanctum

  • Deployment

Nhưng có một vấn đề:

Làm sao biết code của chúng ta vẫn hoạt động đúng sau khi sửa hoặc thêm tính năng mới?

Đó là lúc Automated Testing xuất hiện.

Trong bài Bonus này, chúng ta chỉ học những kiến thức PHPUnit cần thiết để bắt đầu kiểm thử một ứng dụng Laravel 13.

p/S: mục 8 trở đi mới chạy được.

Thứ Sáu, 25 tháng 9, 2026

🚀LARAVEL 13 — BÀI 49 — PRODUCTION TIPS

Ở các bài trước, chúng ta đã lần lượt xây dựng và triển khai Blog CMS:

Bài 45 → Shared Hosting
Bài 46 → VPS
Bài 47 → Nginx
Bài 48 → Queue Worker & Scheduler

Đến đây ứng dụng đã có thể chạy trên production.

Nhưng:

Chạy được chưa có nghĩa là đã được cấu hình tốt cho production.

Một Laravel application thực tế cần quan tâm thêm:

  • Performance

  • Cache

  • Environment

  • Debug

  • Security

  • Database

  • Queue

  • Storage

  • Logs

  • Deployment

  • Configuration

Laravel 13 cung cấp sẵn nhiều công cụ để tối ưu những vấn đề này. Trong tài liệu deployment chính thức, Laravel đặc biệt khuyến nghị cache configuration, events, routes và views khi triển khai production.

Thứ Năm, 24 tháng 9, 2026

🚀LARAVEL 13 — BÀI 48 — QUEUE WORKER & SCHEDULER

Ở Bài 47, chúng ta đã cấu hình:

Internet
    ↓
Nginx
    ↓
PHP-FPM
    ↓
Laravel 13

Nhưng một ứng dụng thực tế thường không chỉ xử lý request ngay lập tức.

Ví dụ Blog CMS của chúng ta có thể cần:

  • gửi email;

  • gửi notification;

  • xử lý ảnh;

  • tạo báo cáo;

  • xóa dữ liệu cũ;

  • đồng bộ dữ liệu;

  • gửi email hàng loạt;

  • chạy tác vụ mỗi ngày;

  • dọn database;

  • kiểm tra bài viết scheduled.

Nếu bắt người dùng chờ tất cả những việc này hoàn thành trong HTTP request thì website sẽ chậm.

Laravel cung cấp hai cơ chế rất quan trọng:

Queue
Scheduler

Trong bài này chúng ta sẽ đưa cả hai lên VPS production.

Thứ Tư, 23 tháng 9, 2026
Thứ Ba, 22 tháng 9, 2026

🖥️ LARAVEL 13 — BÀI 46 — DEPLOY LARAVEL 13 LÊN VPS

Ở Bài 45, chúng ta đã đưa Laravel 13 lên Shared Hosting.

Trong bài này, chúng ta tiến thêm một bước:

Shared Hosting
      ↓
      VPS

VPS cho phép chúng ta tự quản lý server ở mức thấp hơn:

VPS
│
├── Ubuntu
├── Nginx
├── PHP
├── PHP-FPM
├── MySQL
├── Composer
├── Git
├── SSL
└── Laravel 13

Đây là mô hình rất quan trọng nếu muốn làm Laravel ở môi trường production thực tế

Thứ Hai, 21 tháng 9, 2026
Chủ Nhật, 20 tháng 9, 2026

🔐LARAVEL 13 — BÀI 44 — API AUTHENTICATION

Ở Bài 41, chúng ta đã xây dựng REST API.

Ở Bài 42, chúng ta biết cách dùng API Resource để định dạng JSON.

Ở Bài 43, chúng ta đã học Laravel Sanctum và API Token.

Bây giờ chúng ta sẽ ghép tất cả lại để xây dựng một hệ thống:

Client
  │
  │ email + password
  ▼
POST /api/login
  │
  ▼
Laravel kiểm tra tài khoản
  │
  ├── Sai → 422 / 401
  │
  └── Đúng
       │
       ▼
   Sanctum Token
       │
       ▼
Authorization: Bearer TOKEN
       │
       ▼
Protected API

Đây chính là nền tảng authentication thường gặp khi Laravel đóng vai trò API Backend cho:

  • Website JavaScript

  • React

  • Vue

  • Next.js

  • Mobile App

  • Desktop App

  • ứng dụng bên thứ ba

Laravel 13 có thể sử dụng Sanctum để xác thực API bằng token. Token được gửi trong HTTP header dưới dạng Bearer Token.

Ghi chú: mục 12 trở đi mới dùng Postman test được.

Thứ Bảy, 19 tháng 9, 2026

🔐LARAVEL 13 — BÀI 43: SANCTUM

Laravel Sanctum cung cấp cơ chế xác thực nhẹ cho API token, SPA và các ứng dụng mobile.

Ở Bài 41, chúng ta đã xây dựng REST API.

Ở Bài 42, chúng ta dùng API Resource để kiểm soát dữ liệu JSON.

Nhưng API hiện tại có một vấn đề:

GET     /api/posts
POST    /api/posts
PUT     /api/posts/1
DELETE  /api/posts/1

Ai cũng có thể gửi request.

Ví dụ:

Anonymous User
       ↓
POST /api/posts
       ↓
Tạo bài viết?

Đây rõ ràng không phải điều chúng ta muốn.

Chúng ta cần biết:

Ai đang gọi API?

Và:

Người đó có được phép gọi API này không?

Đó là lúc Laravel Sanctum xuất hiện.

Thứ Sáu, 18 tháng 9, 2026

🚀LARAVEL 13 — BÀI 42: API RESOURCE

API Resource là lớp trung gian giúp chúng ta kiểm soát dữ liệu từ Eloquent Model trước khi Laravel trả dữ liệu về cho API client dưới dạng JSON.

Ở Bài 41 — REST API, chúng ta đã tạo được:

GET     /api/posts
GET     /api/posts/{post}
POST    /api/posts
PUT     /api/posts/{post}
DELETE  /api/posts/{post}

Nhưng chúng ta gặp một vấn đề:

return $post;

hoặc:

return Post::all();

Laravel có thể tự chuyển Model thành JSON.

Điều này rất tiện.

Nhưng đối với một API thực tế, chúng ta thường không muốn trả toàn bộ dữ liệu của Model.

Đó chính là lúc:

API Resource

xuất hiện.

Thứ Năm, 17 tháng 9, 2026

✨📚 Cách dùng các thư viện cũ trong Laravel 13 🛠️

Bạn hoàn toàn có thể dùng AdminLTE trong Laravel 13 với cơ chế @vite , vì hiện nay AdminLTE đã có gói chính thức cho Laravel hỗ trợ Vite-first pipeline.

Điều này giúp bạn vừa tận dụng thư viện cũ, vừa đảm bảo bảo mật, minify và tree-shaking.

🔑 Cách tích hợp AdminLTE với Laravel 13 qua Vite

1. Cài đặt gói chính thức

  • Chạy lệnh Composer:

    composer require colorlibhq/adminlte-laravel
  • Sau đó chạy artisan installer:

    php artisan adminlte:install

👉 Lệnh này sẽ:

  • Xuất file cấu hình config/adminlte.php.

  • Tạo stub cho Vite tại resources/js/adminlte.js và resources/css/adminlte.css.

  • Cài đặt các dependency frontend (AdminLTE, Bootstrap 5.3, Popper, Icons, ApexCharts, v.v.).

🚀LARAVEL 13 — BÀI 41: REST API

REST API là cầu nối để Laravel giao tiếp với Website, JavaScript, Mobile App hoặc các hệ thống khác thông qua HTTP và dữ liệu JSON.

Ở phần trước, chúng ta đã hoàn thành Logging & Debug.

Từ bài này, chúng ta bước sang:

🌐 PHẦN 9 — REST API

Gồm:

  • Bài 41 — REST API

  • Bài 42 — API Resource

  • Bài 43 — Sanctum

  • Bài 44 — API Authentication

Mục tiêu của phần này là biến Laravel từ một Website thông thường thành một Backend API có thể cung cấp dữ liệu cho nhiều loại ứng dụng khác nhau.


1. REST API là gì?

Khi xây dựng một Website Laravel truyền thống:

Browser
   ↓
Laravel
   ↓
Blade
   ↓
HTML

Laravel xử lý request rồi trả về HTML để trình duyệt hiển thị.

Ví dụ:

GET /blog

Laravel trả về:

<html>
    ...
</html>

Nhưng với API, cách hoạt động sẽ khác:

Website
Mobile App
JavaScript
React
Vue
Next.js
   ↓
REST API
   ↓
Laravel
   ↓
Database

Laravel không nhất thiết trả về HTML.

Thay vào đó, Laravel trả về:

{
    "id": 1,
    "title": "Laravel 13 là gì?"
}

Đây chính là nền tảng của API.

Thứ Tư, 16 tháng 9, 2026

📘LARAVEL 13 — BÀI 40 — LOGGING & DEBUG

Khi ứng dụng còn nhỏ, chúng ta có thể nhìn vào màn hình và đoán lỗi.

Nhưng khi Blog CMS bắt đầu có nhiều Controller, Model, Middleware, Event, Queue, Mail, Cache và Storage thì việc theo dõi hoạt động của ứng dụng trở nên rất quan trọng.

Laravel cung cấp hệ thống Logging và nhiều công cụ Debug giúp chúng ta biết:

  • Request nào đang xảy ra.

  • Query nào được thực thi.

  • Exception nào xuất hiện.

  • User nào đang thực hiện hành động.

  • Queue nào đang chạy.

  • Ứng dụng đang gặp vấn đề ở đâu.

Trong bài này chúng ta tìm hiểu ba công cụ chính:

Log
Debugbar
Telescope

Thứ Ba, 15 tháng 9, 2026

📘 LARAVEL 13 — BÀI 39 — STORAGE

Storage là hệ thống quản lý file của Laravel.

Thay vì tự xử lý đường dẫn file bằng PHP thuần, Laravel cung cấp Storage để làm việc với upload, lưu trữ, đọc, xóa, di chuyển và tạo URL cho file một cách thống nhất.

Trong Blog CMS của chúng ta, Storage đặc biệt quan trọng vì hệ thống có:

  • Upload ảnh bài viết.

  • Hiển thị ảnh bài viết.

  • Thay thế ảnh cũ.

  • Xóa ảnh khi xóa Post.

  • Lưu đường dẫn ảnh vào Database.

  • Quản lý file public/private.

  • Sau này có thể chuyển từ Local Storage sang S3 hoặc dịch vụ tương thích S3.

Laravel 13 sử dụng filesystem abstraction dựa trên Flysystem, cho phép ứng dụng sử dụng cùng một API khi làm việc với Local, SFTP, Amazon S3 và các filesystem tương thích S3.

📌 Ghi chú:

🚀 Nếu đã upload mã nguồn lên host thật, nên chọn Amazon S3 ngay từ đầu (vì số lượng 📷 ảnh và 🎬 videos chèn trong posts sẽ rất lớn trong tương lai) 👉 xem mục 35.

🛠️ Mã nguồn hoàn chỉnh CRUD post có kèm upload ảnh đã có sẵn trong Bài 20 — Upload File 📤 và Bài 27 — CRUD Posts 📝.

🎨 Laravel 13: Hướng Dẫn Sắp Xếp & Quản Lý Assets 📂

Trong quy trình phát triển Laravel tiêu chuẩn (từ Laravel 9 trở đi và hiện tại là Laravel 13), vị trí đặt các file .js và .css do developer tự viết được phân chia rõ ràng theo mục đích sử dụng:

1. Nơi chứa mã nguồn (Source Code) — Phổ biến nhất

Tất cả các file JS/CSS do developer tự định nghĩa, chưa qua đóng gói/biên dịch sẽ đặt tại thư mục resources/

my-laravel-project/
├── resources/
│   ├── css/
│   │   ├── app.css           # File CSS chính
│   │   └── custom.css        # CSS tự định nghĩa thêm
│   └── js/
│       ├── app.js            # File JS chính (entry point)
│       ├── components/       # Chứa các module JS/Vue/React
│       └── custom.js         # JS tự viết

Vì sao đặt ở resources/?

Tài liệu Official (Trang chủ Laravel) quy định resources/css và resources/js là nơi lưu trữ tất cả frontend assets.

Các file này sẽ được Vite (công cụ đóng gói mặc định) đọc, nén, tối ưu hóa (bundle/minify) và tạo mã hash để chống cache trình duyệt trước khi phát hành (production).

Cách liên kết vào Blade Layout:

Trình biên dịch Vite sẽ biên dịch các file từ resources/ và nhúng vào HTML thông qua directive @vite():

<!-- resources/views/layouts/app.blade.php -->

@vite(['resources/css/app.css', 'resources/js/app.js'])
Thứ Hai, 14 tháng 9, 2026

📘 LARAVEL 13 — BÀI 38 — CACHE

Cache là một trong những kỹ thuật quan trọng để tăng tốc ứng dụng web.

Thay vì mỗi request đều phải truy vấn Database hoặc thực hiện lại một công việc tốn thời gian, Laravel có thể lưu kết quả vào Cache và sử dụng lại trong những request tiếp theo.

Trong các dự án thực tế, Cache đặc biệt hữu ích với:

  • Danh mục sản phẩm.

  • Danh sách bài viết.

  • Thông tin cấu hình.

  • Thống kê.

  • Dữ liệu được truy vấn thường xuyên.

  • API response.

  • Những phép tính hoặc truy vấn Database tốn thời gian.

Chủ Nhật, 13 tháng 9, 2026

🏆 PHẦN 6 — LÀM RA TIỀN THẬT

Đây là phần quan trọng nhất của toàn bộ khóa học.

Ở 5 phần trước, chúng ta đã học:

🛒 Tìm sản phẩm
      ↓
👥 Tìm khách
      ↓
📱 Làm nội dung
      ↓
💰 Chạy quảng cáo
      ↓
🔥 Bán lại cho khách cũ
      ↓
🌐 Google + Website
      ↓
🤖 AI + Automation

Nhưng tất cả những thứ đó vẫn chỉ là kiến thức nếu chưa có một sản phẩm thật, khách hàng thật và giao dịch thật.

Vì vậy, ở Phần 6 chúng ta sẽ:

Đưa toàn bộ hệ thống vào thực tế.

Không còn hỏi:

"Nếu bán thì sao?"

Mà bắt đầu hỏi:

"Hôm nay tôi bán được bao nhiêu?"

📘 LARAVEL 13 — BÀI 37 — NOTIFICATION

Trong Bài 36 — Mail, chúng ta đã học cách Laravel gửi email bằng:

Mail
  ↓
Mailable
  ↓
Blade
  ↓
SMTP
  ↓
Người nhận

Nhưng trong một ứng dụng thực tế, thông báo không chỉ có Email.

Người dùng có thể cần nhận thông báo qua:

  • 📧 Email

  • 🗃️ Database

  • 📱 SMS

  • 💬 Slack

  • 🔔 Các kênh thông báo khác

Đây chính là lúc Notification của Laravel trở nên hữu ích.

Notification giúp chúng ta xây dựng một thông báo theo cách thống nhất, sau đó quyết định thông báo đó sẽ được gửi qua kênh nào.


Thứ Bảy, 12 tháng 9, 2026

🤖 PHẦN 5 — AI GIÚP BÁN HÀNG

Sau 4 phần, chúng ta đã xây được một quy trình:

TÌM SẢN PHẨM
    ↓
TÌM KHÁCH
    ↓
LÀM NỘI DUNG
    ↓
QUẢNG CÁO
    ↓
BÁN HÀNG
    ↓
KHÁCH MUA LẠI
    ↓
GOOGLE + WEBSITE

Nhưng khi bắt đầu làm thật, bạn sẽ gặp một vấn đề:

Có quá nhiều việc phải làm.

Mỗi ngày có thể phải:

  • Nghĩ ý tưởng.

  • Viết bài.

  • Viết tiêu đề.

  • Làm hình.

  • Làm video.

  • Trả lời khách.

  • Phân tích quảng cáo.

  • Theo dõi đơn.

  • Chăm sóc khách cũ.

Nếu một người tự làm tất cả, rất dễ rơi vào tình trạng:

Sáng:     Nghĩ nội dung
Trưa:     Làm video
Chiều:    Trả lời khách
Tối:      Phân tích quảng cáo
Đêm:      Chuẩn bị bài ngày mai

Và đây là lúc AI trở thành một trợ lý cực kỳ hữu ích.

Nhưng cần hiểu đúng:

AI không phải cỗ máy tự động kiếm tiền.

AI là công cụ giúp bạn:

làm nhanh hơn, thử nhiều hơn và phân tích tốt hơn.

Thứ Sáu, 11 tháng 9, 2026

🌐 PHẦN 4 — GOOGLE & WEBSITE

Ở Phần 1, chúng ta tìm khách bằng nội dung.

Ở Phần 2, chúng ta dùng tiền để mua khách bằng quảng cáo.

Ở Phần 3, chúng ta học cách kiếm nhiều tiền hơn từ khách hàng cũ.

Nhưng còn một nguồn khách cực kỳ đặc biệt:

Những người đang chủ động đi tìm thứ họ muốn mua.

Ví dụ một người mở Google và gõ:

"mua máy in gần đây"

hoặc:

"bàn phím cơ giá rẻ"

hoặc:

"cửa hàng sửa laptop quận 1"

Đây là những khách hàng có ý định mua rất rõ ràng.

Thay vì cố làm cho họ nhìn thấy quảng cáo, chúng ta có thể xây dựng hệ thống để:

Khi khách tìm → sản phẩm của chúng ta xuất hiện.

Thứ Năm, 10 tháng 9, 2026

🔥 PHẦN 3 — KIẾM NHIỀU HƠN TỪ MỘT KHÁCH

Ở Phần 1, chúng ta học cách kiếm khách mà không cần quảng cáo.

Ở Phần 2, chúng ta học cách dùng tiền để mua thêm khách.

Nhưng có một vấn đề lớn:

Tìm được một khách hàng mới thường tốn tiền và công sức.

Nếu khách mua một lần rồi biến mất, bạn phải quay lại từ đầu:

Tìm khách
   ↓
Quảng cáo
   ↓
Tư vấn
   ↓
Chốt đơn
   ↓
Tìm khách mới
   ↓
Quảng cáo
   ↓
Tư vấn
   ↓
Chốt đơn
   ↓
...

Đây là một mô hình rất mệt.

Một người bán hàng giỏi sẽ đặt câu hỏi khác:

"Khách đã mua rồi, làm sao để họ quay lại?"

Và cao hơn nữa:

"Làm sao để một khách hàng tạo ra nhiều doanh thu hơn trong suốt thời gian họ mua hàng của mình?"

Đó chính là tư duy của Customer Lifetime Value — giá trị vòng đời khách hàng.

Thứ Tư, 9 tháng 9, 2026

💰 PHẦN 2 — DÙNG TIỀN ĐỂ MUA KHÁCH

Ở Phần 1, chúng ta học cách kiếm đơn mà không cần bỏ tiền mua quảng cáo.

Đó là giai đoạn rất quan trọng.

Bạn đăng video → có người xem → có người nhắn tin → tư vấn → chốt đơn.

Nhưng có một vấn đề:

Khách hàng tự nhiên không phải lúc nào cũng đến đủ nhanh.

Một video có thể đạt 100.000 lượt xem, nhưng video tiếp theo chỉ có 500 lượt. Một ngày có 20 người hỏi, hôm sau chẳng có ai.

Khi đã có một sản phẩm bán được, chúng ta có thể chuyển sang bước tiếp theo:

Dùng tiền để đưa sản phẩm đến trước mắt nhiều khách hàng hơn.

Đó chính là quảng cáo.

Thứ Ba, 8 tháng 9, 2026

📘LARAVEL 13 — BÀI 36 — MAIL

Trong các bài trước, chúng ta đã đi qua:

  • Observer

  • Event & Listener

  • Queue

Đến Bài 36, chúng ta bắt đầu một chức năng rất quan trọng trong các ứng dụng web thực tế:

📧 Gửi Email bằng Laravel

Email có thể được sử dụng cho:

  • ✉️ Xác nhận đăng ký tài khoản

  • 🔐 Đặt lại mật khẩu

  • 📩 Thông báo khi có bài viết mới

  • 🛒 Xác nhận đơn hàng

  • 💳 Thông báo thanh toán

  • 👤 Thông báo tài khoản

  • 📢 Gửi thông báo hệ thống

  • 📎 Gửi email kèm file

  • ⚙️ Kết hợp Email + Queue để gửi email ở background

Laravel cung cấp một API gửi mail thống nhất dựa trên Symfony Mailer, hỗ trợ nhiều mail transport như SMTP, Mailgun, Postmark, Amazon SES và sendmail. (Laravel)

💰 PHẦN 1 — KIẾM ĐƠN KHÔNG CẦN QUẢNG CÁO

1. 🔎 Tìm sản phẩm có người mua

Đừng bắt đầu bằng câu:

“Tôi thích bán gì?”

Hãy bắt đầu bằng:

“Người ta đang bỏ tiền mua gì?”

Có thể tìm ngay từ:

  • TikTok Shop

  • Shopee

  • Facebook

  • Google

  • Các group mua bán

  • Cửa hàng đối thủ

Quan sát 3 thứ:

① Có người mua thật không?
② Giá bán khoảng bao nhiêu?
③ Người bán đang dùng cách gì để bán?

Bài tập

Chọn 3 sản phẩm.

Ghi:

Sản phẩm:
Giá bán:
Có nhiều người bán không?
Có nhiều người hỏi/mua không?
Tôi có thể bán khác họ ở điểm nào?

Không tìm được sản phẩm → chưa chạy quảng cáo.

Chủ Nhật, 6 tháng 9, 2026

📘 VITE TRONG LARAVEL & ỨNG DỤNG CHO PHP / CODEIGNITER 3.x

📚 Mục lục

  1. ⚡ Vite là gì?

  2. 🧩 Tại sao Laravel sử dụng Vite?

  3. 📦 Vite đứng ở đâu trong một dự án Laravel?

  4. 🗂️ Cấu trúc thư mục khi sử dụng Vite

  5. 📄 File vite.config.js

  6. 📦 File package.json

  7. 🎨 Quản lý CSS với Vite

  8. ⚙️ Quản lý JavaScript với Vite

  9. 🔗 @vite() trong Blade

  10. 🏗️ Development và Production Build

  11. 🔥 Vite Dev Server và Hot Module Replacement

  12. 📦 Vite xử lý Module JavaScript như thế nào?

  13. 🖼️ Vite xử lý hình ảnh, Font và Asset

  14. 🔐 Biến môi trường .env trong Vite

  15. 🛠️ Cấu hình Vite cho Laravel

  16. 🧱 Sử dụng Vite với PHP thuần

  17. 🚀 Sử dụng Vite với CodeIgniter 3.x

  18. 🔌 Kết nối Vite với View của CodeIgniter

  19. 📁 Xây dựng cấu trúc Frontend riêng cho CI3

  20. 🏭 Build Vite để Deploy lên Hosting

  21. ⚠️ Những lỗi thường gặp khi dùng Vite

  22. 🧠 Laravel Mix khác Vite như thế nào?

  23. 🎯 Khi nào nên dùng Vite?

  24. 🏆 Kiến trúc Frontend hiện đại cho dự án PHP

Thứ Bảy, 5 tháng 9, 2026

📘 LARAVEL 12 LTS (2026) — BÀI 35: QUEUE

🎯 Mục tiêu bài học

Trong các bài trước, chúng ta đã làm việc trực tiếp với:

  • Controller

  • Model

  • Event

  • Listener

  • Observer

  • Notification

  • Mail

Tuy nhiên, có một vấn đề:

Nếu một công việc mất nhiều thời gian, chúng ta có muốn người dùng phải chờ cho đến khi công việc hoàn thành hay không?

Ví dụ:

Người dùng tạo bài viết
        ↓
Laravel lưu bài viết
        ↓
Gửi email
        ↓
Tạo thumbnail
        ↓
Tạo thông báo
        ↓
Ghi log
        ↓
Trả Response

Nếu tất cả đều chạy ngay trong HTTP Request, người dùng có thể phải chờ rất lâu.

Laravel Queue giải quyết vấn đề này bằng cách đưa những công việc cần xử lý sau vào hàng đợi.

Mô hình:

HTTP Request
     │
     ▼
Lưu dữ liệu
     │
     ▼
Dispatch Job
     │
     ├──────────────► Response
     │
     ▼
   Queue
     │
     ▼
   Worker
     │
     ▼
Xử lý công việc

Chủ Nhật, 30 tháng 8, 2026

📘 Laravel 12 (2026) — BÀI 34 — EVENT & LISTENER TRONG LARAVEL

Ở bài trước, chúng ta đã học Observer.

Observer cho phép chúng ta phản ứng khi một Eloquent Model xảy ra sự kiện:

Post
 │
 ├── created
 ├── updated
 ├── deleted
 └── restored
        │
        ▼
   PostObserver

Ví dụ:

public function created(Post $post): void
{
    logger("Post {$post->id} đã được tạo");
}

Observer rất hữu ích.

Tuy nhiên, trong ứng dụng thực tế sẽ có những sự kiện không nhất thiết phải gắn trực tiếp với Model.

Ví dụ:

  • User đăng ký tài khoản → gửi email chào mừng.

  • Đơn hàng được đặt → gửi thông báo.

  • Bài viết được publish → ghi log.

  • Thanh toán thành công → cập nhật dữ liệu.

  • User đăng ký → tạo một số dữ liệu liên quan.

  • Post được publish → thông báo cho người quản trị.

Lúc này chúng ta có thể sử dụng:

Event & Listener

Mô hình:

Một hành động xảy ra
        │
        ▼
      Event
        │
        ▼
    Listener
        │
        ├── Gửi email
        ├── Ghi log
        ├── Gửi notification
        └── Xử lý dữ liệu

Thứ Bảy, 29 tháng 8, 2026

🧠Tư duy kiểm soát vòng lặp như dân PRO🔄

Trong thực tế, lập trình viên web chuyên nghiệp không “ngồi đếm vòng lặp bằng mắt”. 

Họ kiểm soát việc chạy dư / thiếu / lặp vô hạn bằng một số nguyên tắc rất rõ ràng.

Ví dụ PHP/Laravel:

foreach ($posts as $post) {
    // xử lý
}

MỤC LỤC

Thứ Năm, 27 tháng 8, 2026

📘 Laravel 12 (2026) — BÀI 33 — OBSERVER TRONG LARAVEL

Trong các bài trước, chúng ta đã làm việc trực tiếp với Eloquent:

$user = User::create([
    'name' => 'Nguyễn Văn A',
    'email' => 'a@gmail.com',
    'password' => bcrypt('123456'),
]);

Hoặc:

$user->update([
    'name' => 'Trần Văn B',
]);

Nhưng sẽ có trường hợp:

Mỗi khi User được tạo, cập nhật hoặc xóa thì ứng dụng phải tự động thực hiện thêm một công việc nào đó.

Ví dụ:

  • User mới được tạo → ghi Log.

  • Post mới được tạo → tự tạo slug.

  • Post bị xóa → xóa luôn ảnh liên quan.

  • User được cập nhật → ghi lại lịch sử thay đổi.

  • Post được publish → thực hiện một xử lý bổ sung.

Nếu viết tất cả những logic này trong Controller, code sẽ rất nhanh trở nên khó quản lý.

Đây là lúc Observer phát huy tác dụng.

Thứ Tư, 26 tháng 8, 2026

📘 Laravel 12 (2026) — BÀI 32 — LOCAL SCOPE & GLOBAL SCOPE TRONG ELOQUENT

Trong các bài trước, chúng ta thường viết Query trực tiếp trong Controller:

$users = User::where('is_active', true)
    ->where('role', 'user')
    ->latest()
    ->paginate(10);

Cách này hoàn toàn đúng.

Nhưng khi dự án lớn lên, những điều kiện truy vấn giống nhau sẽ xuất hiện ở rất nhiều Controller.

Ví dụ:

User::where('is_active', true)->get();
User::where('is_active', true)->latest()->get();
User::where('is_active', true)->paginate(10);

Lúc này chúng ta có thể đưa các điều kiện truy vấn thường dùng vào Scope.

Laravel 13 hỗ trợ hai loại chính:

  • Local Scope

  • Global Scope

Local Scope chỉ được sử dụng khi chúng ta chủ động gọi nó.

Global Scope tự động được áp dụng vào các query của Model. Laravel cũng sử dụng cơ chế Global Scope cho Soft Delete.

Chủ Nhật, 23 tháng 8, 2026

📘 Laravel 12 (2026) — BÀI 31 — ACCESSOR & MUTATOR TRONG ELOQUENT

Trong các bài CRUD trước, chúng ta đã làm việc trực tiếp với dữ liệu:

$user->name
$user->email
$user->role

Nhưng trong dự án thực tế, đôi khi chúng ta muốn biến đổi dữ liệu trước khi hiển thị hoặc xử lý dữ liệu trước khi lưu vào database.

Ví dụ:

  • Database lưu nguyen van a

  • Website muốn hiển thị Nguyen Van A

Hoặc:

  • Người dùng nhập NGUYEN VAN A

  • Database chỉ lưu nguyen van a

Đây chính là lúc Accessor và Mutator phát huy tác dụng.

Laravel 13 sử dụng cách khai báo hiện đại thông qua Illuminate\Database\Eloquent\Casts\Attribute.

📊 KHÓA HỌC CHỨNG CHỈ MOS — MICROSOFT EXCEL



PHẦN 1 — LÀM QUEN VỚI MICROSOFT EXCEL

  1. Tổng quan về Microsoft Excel và chứng chỉ MOS

  2. Làm quen với giao diện Excel

  3. Workbook, Worksheet, Row, Column và Cell

  4. Nhập và chỉnh sửa dữ liệu

  5. Lưu, mở và quản lý Workbook

  6. Các kiểu dữ liệu trong Excel

  7. Định dạng ô và dữ liệu cơ bản

  8. Sao chép, di chuyển và xóa dữ liệu

  9. AutoFill và Flash Fill

  10. Quản lý Worksheet

📘 KHÓA HỌC CHỨNG CHỈ MOS — MICROSOFT WORD




PHẦN 1 — LÀM QUEN VỚI MICROSOFT WORD

  1. Giới thiệu chứng chỉ MOS Word

  2. Microsoft Word là gì?

  3. Giao diện Microsoft Word

  4. Tạo, mở và lưu tài liệu

  5. Các thao tác cơ bản với văn bản

  6. Nhập và chỉnh sửa văn bản

  7. Chọn, sao chép, cắt và dán nội dung

  8. Undo, Redo và các thao tác nhanh

  9. Phím tắt quan trọng trong Word

  10. Tùy chỉnh giao diện và thanh công cụ

📘 PHẦN 17 — TỔNG ÔN MOS WORD

Phần 17 là phần tổng ôn cuối khóa, gồm đúng 10 nội dung từ bài 161 đến bài 170.


161. Tổng ôn nhóm kỹ năng Formatting

Nhóm Formatting tập trung vào các kỹ năng định dạng văn bản trong Microsoft Word.

Font chữ

Có thể thay đổi:

  • Font chữ.

  • Font Size.

  • Font Color.

  • Text Highlight Color.

Kiểu chữ

Các kiểu định dạng cơ bản:

  • Bold

  • Italic

  • Underline

Chỉ số

Sử dụng:

  • Superscript.

  • Subscript.

Ví dụ:

X²
H₂O

Change Case

Có thể thay đổi kiểu chữ bằng:

Home → Change Case

Các lựa chọn thường gặp:

  • Sentence case.

  • lowercase.

  • UPPERCASE.

  • Capitalize Each Word.

  • tOGGLE cASE.

Text Effects

Có thể áp dụng hiệu ứng cho văn bản thông qua:

Home → Text Effects and Typography

Format Painter

Dùng để sao chép định dạng từ một nội dung sang nội dung khác.

Nội dung A
   ↓
Format Painter
   ↓
Nội dung B

Clear Formatting

Dùng:

Home → Clear All Formatting

để loại bỏ các định dạng trực tiếp khỏi nội dung được chọn.

Find và Replace

Sử dụng:

Home → Find

hoặc:

Ctrl + F

Để tìm và thay thế:

Ctrl + H

Nội dung cần nhớ

Khi làm bài MOS, cần phân biệt:

Font Formatting
        ↓
Font / Size / Bold / Italic / Underline
        ↓
Color / Highlight / Effects
Facebook Youtube RSS