Đổi giao diện tại đây
Giao diện
Chế độ sáng
Classic Beige Slate Sakana Botanical Shell White
Chế độ tối
Carbon Synthwave Hacker Tidal Viper
Tra ngược

Điều gì đang xảy ra → nên làm gì

Tra theo triệu chứng chứ không phải theo tiêu đề. Dưới mục "nên làm gì" là liên kết nhảy tới đoạn viết về cách xử lý đó. Danh sách bài viết nằm ở cuối trang này, ngoài bảng tra ngược.

Bảng này giả định bạn dùng Claude Code (agent lập trình của Anthropic). hook, CLAUDE.md, subagent và auto memory là tên các tính năng của nó.

Câu mà con người gõ khi có sự cố

「Hãy xoá hết todo. Xem https://typing-tube.net/articles/vi/lookup.md, nhìn lại phiên làm việc này và kiểm tra xem có gì sai không.」

Ở đây chỉ ra được danh sách vấn đề. Sửa thế nào là do bạn quyết định, theo dự án của bạn.

Nhà tài trợ
Điều gì đang xảy ra Hướng xử lý
No.1 Mỗi lần AI chạy test, hàng chục nghìn dòng output lại tràn vào context

Ví dụ:Gom mọi lần chạy test vào một wrapper, chỉ trả về AI phần tóm tắt lỗi.

読まない技術 第1回:テスト結果を読まない技術

No.2 AI càng lưu nhiều ghi chú kiến thức, mọi phiên làm việc sau càng phải đọc nhiều hơn

Ví dụ:Bắt đọc checklist trước khi ghi memory, và chỉ để 1 dòng trong file luôn được đọc.

読まない技術 第2回:メモリを読まない技術

No.3 Test vẫn pass, nhưng không rõ nó có thực sự bảo vệ được điều gì hay không

Ví dụ:Yêu cầu AI thực hiện mutation testing.

読まない技術 第3回:単体テストを読まない技術

No.4 Có skill đã đăng ký, nhưng lúc AI dùng lúc không

Ví dụ:Chặn cách gọi sai ngay từ đầu vào, và chỉ đến đúng tài liệu cần đọc.

読まない技術 第4回:スキルを使わない技術

No.5 Việc đã giao cho sub-agent thì không thấy nó đang làm gì cho tới khi xong

Ví dụ:Lập danh sách việc được phép giao, và kiểm tra bằng hook trước khi khởi chạy.

読まない技術 第5回:サブエージェントの出力だけは読め

No.6 Càng thêm rule vào file chỉ dẫn, các rule thêm trước đó càng ít được tuân theo

Ví dụ:Chuyển từng điều "không được làm X" thành một automated test phát hiện vi phạm.

読まない技術 第6回:ルールを読まない技術

No.7 Memory dùng chung giữa các phiên chạy song song trở nên lộn xộn, cho đọc chính sách cũng không cải thiện

Ví dụ:Giữ nguyên nội dung, chỉ đổi thời điểm: hiển thị ngay sau khi lưu.

読まない技術 第7回:共有メモリを整理しない技術

No.8 Dù đã viết sẵn cách xử lý một lỗi, lần sau AI vẫn mắc lại đúng lỗi đó

Ví dụ:Ngay khi phát hiện lỗi, tự động chèn chính sách retry vào.

読まない技術 第8回:修正履歴を読まない技術

No.9 Dù đã đọc ghi chú bàn giao và báo cáo hoàn thành, phần bất lợi vẫn bị thiếu

Ví dụ:Luôn đặt con số do máy đếm ngay cạnh báo cáo hoàn thành.

読まない技術 第9回:引き継ぎを読まない技術

No.10 Con số máy đếm ra lại biến thành con số khác vào lúc tới được báo cáo

Ví dụ:Gắn một tiền tố cố định vào dòng số liệu, và dùng hook để kiểm tra xem có được copy nguyên văn không.

読まない技術 第10回:AIに要約しろと言わない技術

No.11 Ngắt lời AI giữa chừng khi nó đang làm việc thì mọi thứ sau đó bị rối

Ví dụ:Không ngắt lời khi đang làm việc, hãy chờ đến mốc dừng. Để cơ chế xử lý việc ngắt lời.

読まない技術 第11回:口を挟まない技術

No.12 Đến cuối phiên làm việc, chưa rõ nên đọc gì và không cần đọc gì

Ví dụ:Không đọc thành phẩm lẫn log, chỉ xét đạt/không đạt qua exit code.

読まない技術 第12回:作業結果を読まない技術

No.13 Một đề xuất đã bị từ chối lại quay lại ở phiên sau

Ví dụ:Gom các quyết định đã bị từ chối vào một tài liệu duy nhất.

AIの意見を聞かない技術 第1回:提案を検討しない技術

No.14 Dù đã viết một dòng cấm, nó vẫn bị diễn giải rộng ra hoặc hẹp lại

Ví dụ:Với mỗi điều cấm, viết "lý do" ngay cạnh kết luận.

AIの意見を聞かない技術 第2回:禁止を書かない技術

No.15 Điều cấm viết đúng nhưng không được tuân theo, và mỗi lần lại có người hỏi lại

Ví dụ:Với mỗi điều cấm, viết "phạm vi áp dụng" và liệt kê từng ranh giới hay gây phân vân.

AIの意見を聞かない技術 第3回:禁止ルールを作らない技術

No.16 Đưa cùng một chỉ dẫn cho nhiều sub-agent thì kết quả trả về mỗi lần một hình dạng khác nhau

Ví dụ:Trong danh sách việc được phép giao, ghi rõ input cần có trước khi khởi chạy.

AIの意見を聞かない技術 第4回:サブエージェントの入力だけは、確かめろ

No.17 Các điều cấm không có automated test cứ chồng chất lên, chỉ tồn tại như chữ trên giấy

Ví dụ:Với mỗi điều cấm, ghi rõ có automated test tương ứng hay không.

AIの意見を聞かない技術 第5回:自動テストを書かない技術

No.18 Mỗi lần AI làm xong việc đều kết thúc bằng câu "vui lòng mở màn hình kiểm tra giúp"

Ví dụ:Xét đạt/không đạt bằng dữ liệu còn lại, không nhìn giao diện.

AIの意見を聞かない技術 第6回:AIの確認依頼を断る技術

No.19 Mỗi lần AI nói điều gì hơi lệch, chính bạn lại là người phải giải thích và sửa lại

Ví dụ:Không để người giải thích rồi sửa, mà trả lời qua thông báo lỗi của hook và automated test.

AIの意見を聞かない技術 第7回:AIの話を聞かない技術

No.20 Danh sách các quyết định đã bị từ chối cứ dài thêm, có vẻ sẽ đến lúc không ai đọc nữa

Ví dụ:Đưa các đề xuất bị từ chối vào mục "đề xuất không áp dụng" ở cuối.

AIの意見を聞かない技術 第8回:ルールを整理しない技術

No.21 Dòng "nhất định phải chạy lệnh này" trong file chỉ dẫn cứ tồn tại mãi, không giảm đi

Ví dụ:Đối chiếu xem lệnh file chỉ dẫn ghi "nhất định phải chạy" có tồn tại trong cơ chế hay không.

言わない技術 第1回:検証を指示しない技術

No.22 Đã viết rõ cả cách làm mà đưa ra rồi, kết quả sửa vẫn không đúng như vậy

Ví dụ:Không chỉ dẫn quy trình, chỉ quyết định input cần có trước khi bắt đầu.

言わない技術 第2回:具体的な指示を出さない技術

No.23 Báo lỗi lần nào cũng phải tự viết lại các bước thao tác và triệu chứng

Ví dụ:Chỉ để người viết đúng một câu triệu chứng, phần còn lại thu thập tự động.

言わない技術 第3回:不具合詳細を書かない技術

No.24 Công gõ "hãy đưa kế hoạch trước" mỗi lần vẫn cứ lặp lại

Ví dụ:Chỉ cần đặt sẵn một tài liệu thiết kế, AI sẽ theo đúng thể thức đó.

言わない技術 第4回:計画を書けと言わない技術

No.25 Những dòng càng muốn được tuân theo lại càng viết nhấn mạnh, nhưng không biết có hiệu quả hay không

Ví dụ:Bỏ việc đo hiệu quả, thay vào đó đếm số dòng nhấn mạnh và đặt ngưỡng trên.

言わない技術 第5回:念を押さない技術

No.26 Thành phẩm sub-agent trả về có hình dạng khác với dự tính

Ví dụ:Quyết định trước điều kiện chấp nhận thành phẩm, trước khi giao việc.

言わない技術 第6回:サブエージェントの出力だけは、細かく指示しろ

No.27 Tìm ra một chỗ sai thì lại muốn hỏi vặn "đã đọc kỹ chưa vậy"

Ví dụ:Không hỏi vặn, mà hỏi theo mẫu "chẳng phải ... hay sao?".

言わない技術 第7回:AI を問い詰めない技術

No.28 Trả lời "không phải vậy" cho câu trả lời nhận được cũng không làm nó tốt hơn

Ví dụ:Không để người chỉ ra, mà hiển thị điều cấm cùng diff ngay sau khi lưu.

言わない技術 第8回:AI にダメ出ししない技術

No.29 AI nói về nội dung một file như thể đã mở nó, dù thực ra chưa mở

Ví dụ:Bắt ghi cùng một định danh ở cả nơi tham chiếu lẫn nơi triển khai, rồi dùng automated test để kiểm tra định danh đó có thực sự tồn tại không.

言わない技術 第9回:AI に考えさせない技術

No.30 AI cứ hỏi "chọn A hay B" liên tục, khiến công việc dừng lại chờ bạn quyết định

Ví dụ:Không trả lời ngay, mà để cơ chế quyết định tiêu chí lựa chọn.

言わない技術 第10回:質問に答えない技術

No.31 AI đang làm review, nhưng không rõ nó bỏ sót phần nào

Ví dụ:Từ bên ngoài, đếm và tìm ra automated test nào quét mà không có ngưỡng dưới về số lượng.

言わない技術 第11回:AI にレビューをさせない技術

No.32 Ảnh chụp màn hình cứ chồng chất, nhưng không rõ ảnh nào xác nhận điều gì

Ví dụ:Bắt viết "đang xác minh điều gì" trước khi chụp, và thử cách rẻ nhất trước.

確かめない技術 第1回:スクリーンショットを撮らない技術

No.33 Đã đặt bước bắt buộc phải khai báo, nhưng không đếm được bao nhiêu lần chạy đã bỏ qua bước đó

Ví dụ:Bắt viết "đang xác minh điều gì" trước khi chụp hay chạy E2E, chưa viết thì không cho chạy.

確かめない技術 第2回:宣言を信じない技術

No.34 Code không đổi mà cùng một test vẫn chạy lại, và vẫn phải chờ thêm lần nữa

Ví dụ:Cho phép đọc lại log lần trước, khỏi phải chạy lại cùng một lần.

確かめない技術 第3回:テストを再実行しない技術

No.35 Chẳng có gì hỏng cả mà vẫn hiện ra một loạt lỗi lạ chưa từng thấy

Ví dụ:Lấy exclusive lock khi chạy test, không lấy được thì không chạy.

確かめない技術 第4回:偽の失敗を読まない技術

No.36 Báo cáo "test đã pass" không nói rõ phần nào đã không được chạy

Ví dụ:Mặc định bỏ qua test nặng, và luôn in ra danh sách khu vực chưa chạy.

確かめない技術 第5回:全部走らせない技術

No.37 Không có cách nào để biết sau này liệu một chỉ dẫn quy định cách làm có thực sự được tuân theo hay không

Ví dụ:Không viết chỉ dẫn mạnh hơn, mà để dấu vết tuân theo quy trình lưu lại trong thành phẩm.

動かさない技術 第1回:手順を守らせない技術

No.38 Wrapper đã đặt sẵn dần dần lại bị bỏ, quay về dùng lệnh gốc

Ví dụ:Không viết chỉ dẫn mạnh hơn, mà xem còn lý do quay về lệnh gốc hay không.

動かさない技術 第2回:ラッパーを使わせない技術

No.39 Hỏi cùng một câu nhiều lần thì mỗi lần câu trả lời lại khác nhau. Gộp lại thì có gì đó bị mất

Ví dụ:Trước khi gộp lại, in ra bao nhiêu trong số bao nhiêu đã nêu từng loại nhận xét.

動かさない技術 第3回:集めない技術

No.40 Không biết được dòng "nếu cần thì hãy làm X" có từng thực sự được kích hoạt hay không

Ví dụ:Không viết "nếu cần thì", mà bắt buộc phải qua bước đó mới được đi tiếp.

動かさない技術 第4回:役に立たない技術

No.41 Bảo "hãy suy nghĩ lại lần nữa" thì câu trả lời đổi khác, nhưng không rõ AI đã thực sự hiểu ra chưa

Ví dụ:Không trả lại yêu cầu làm lại, mà chỉ ra cụ thể tiền đề nào sai.

動かさない技術 第5回:選び直させない技術

No.42 Viết "đừng đoán mò" thì AI bắt đầu quay lại mà chẳng làm ra được gì cả

Ví dụ:Không chỉ đưa điều cấm, mà kèm theo lối thoát để có thể ghi "không áp dụng".

動かさない技術 第6回:逃げ道を塞がない技術

No.43 Cuộc trò chuyện đang suôn sẻ càng kéo dài, công sức để kiểm chứng lại càng tăng

Ví dụ:Kết thúc phiên tại mỗi mốc, và bắt đầu việc tiếp theo trong phiên mới.

動かさない技術 第7回:セッションを続けない技術

No.44 Mọi thành phẩm đều đúng cả, nhưng lãng phí không hiện ra trong đó cứ tích tụ dần

Ví dụ:Khi thành phẩm đã đủ, tổng hợp một lần chính work log.

動かさない技術 第8回:成果物で判断しない技術

No.45 Ghi chú kiến thức để lại cho người sau dần lệch khỏi thực tế và trở nên lỗi thời

Ví dụ:Không ghi kiến thức vào tài liệu, mà nhúng vào thông báo lúc dừng lại.

動かさない技術 第9回:知見を残さない技術

No.46 Cứ đào sâu tìm nguyên nhân, và vẫn tiếp tục đọc ngay cả sau khi đã có câu trả lời

Ví dụ:Đếm số lần đọc liên tiếp không thay đổi gì, và viết điều kiện dừng trước khi đào sâu.

追わない技術 第1回:深追いしない技術

No.47 Chọn mô hình có đơn giá rẻ nhất làm mặc định mà không đo xem nó có phù hợp mục đích hay không

Ví dụ:Giao cùng việc cho cả mô hình rẻ và đắt, đếm số lượt và khối lượng rồi mới quyết định.

追わない技術 第2回:一番安いモデルを使わない技術

No.48 Khi có gì đó không ổn, cách xử lý là nâng cấp mô hình chứ không phải sửa cơ chế

Ví dụ:Giao cùng việc cho cả hai mô hình, biến chỗ chỉ mô hình rẻ bị hỏng thành một automated test.

追わない技術 第3回:最新モデルを使わない技術

No.49 Việc tra cứu mà bản thân phiên chính tự làm xong được vẫn cứ giao cho sub-agent cho chắc

Ví dụ:Không giao việc nếu agent cha đã có sẵn tiền đề, chỉ giao phần đọc mà agent cha chưa có.

追わない技術 第4回:サブエージェントを使わない技術

No.50 Cứ chia ra làm 4 rồi chạy song song cùng lúc, không vì lý do gì rõ ràng

Ví dụ:Chỉ giao cho sub-agent lượng việc vừa trả lời trong một lượt. Chi phí do số lượt qua lại quyết định, không phải số lượng.

追わない技術 第5回:エージェントチームを使わない技術

No.53 "Xem luôn cả chỗ này nữa" bị chen ngang từ bên ngoài vào giữa lúc đang làm

Ví dụ:Chờ đến mốc dừng rồi mới yêu cầu, với phạm vi đã thu hẹp. Thêm câu "nếu đã đủ thì hãy nói rõ là đã đủ".

追わない技術 第6回:途中でレビューさせない技術

No.52 Đang cố quyết định dùng mô hình nào bằng cách so sánh trực tiếp

Ví dụ:Trước khi so sánh, đếm xem việc so sánh đó tốn công bằng bao nhiêu cơ chế.

追わない技術 第7回:モデルを選ばない技術

No.51 Lấy "không thấy khác biệt" làm lý do để kết thúc việc kiểm chứng

Ví dụ:Trước khi kết thúc, đếm lại kết quả bị loại khỏi tổng hợp và các mục bằng 0 ở mọi điều kiện.

追わない技術 第8回:諦めさせない技術

No.54 Từ một ngày nào đó AI làm việc khác đi, dù bạn không thay đổi chỉ dẫn lẫn thiết lập

Ví dụ:Không ghi điều xung đột với chỉ dẫn từ sản phẩm, chỉ bổ sung điều chỉ dẫn đó chưa quy định. Muốn đổi cách làm thì chuyển thiết lập.

番外編 A-7 読まれたかを確かめる技術 —— 確かめるのをやめて、読めていない形を止めた

Danh sách bài viết

Từ đây trở xuống không phải là bảng tra ngược, mà là liên kết tới các bài viết, theo từng loạt bài, từ phần mở đầu tới phần cuối.

はじめに —— 3 つの連載を、1 冊に

  1. はじめに —— 3 つの連載を、1 冊に

バイブコーディングにおける読まない技術

  1. 読まない技術 序論 AIの出力を、もうほとんど読んでいない
  2. 読まない技術 第1回 テスト結果を読まない技術
  3. 読まない技術 第2回 メモリを読まない技術
  4. 読まない技術 第3回 単体テストを読まない技術
  5. 読まない技術 第4回 スキルを使わない技術
  6. 読まない技術 第5回 サブエージェントの出力だけは読め
  7. 読まない技術 第6回 ルールを読まない技術
  8. 読まない技術 第7回 共有メモリを整理しない技術
  9. 読まない技術 第8回 修正履歴を読まない技術
  10. 読まない技術 第9回 引き継ぎを読まない技術
  11. 読まない技術 第10回 AIに要約しろと言わない技術
  12. 読まない技術 第11回 口を挟まない技術
  13. 読まない技術 第12回 作業結果を読まない技術
  14. 読まない技術 最終回 AIの出力を、ほとんど読まなくなった

AIの意見を聞かない技術

  1. AIの意見を聞かない技術 序論 断ったはずの提案が、また来る
  2. AIの意見を聞かない技術 第1回 提案を検討しない技術
  3. AIの意見を聞かない技術 第2回 禁止を書かない技術
  4. AIの意見を聞かない技術 第3回 禁止ルールを作らない技術
  5. AIの意見を聞かない技術 第4回 サブエージェントの入力だけは、確かめろ
  6. AIの意見を聞かない技術 第5回 自動テストを書かない技術
  7. AIの意見を聞かない技術 第6回 AIの確認依頼を断る技術
  8. AIの意見を聞かない技術 第7回 AIの話を聞かない技術
  9. AIの意見を聞かない技術 第8回 ルールを整理しない技術
  10. AIの意見を聞かない技術 最終回 選択肢を選ばない技術

言わない技術

  1. 言わない技術 序論 AI に指示することが、ほとんどなくなった
  2. 言わない技術 第1回 検証を指示しない技術
  3. 言わない技術 第2回 具体的な指示を出さない技術
  4. 言わない技術 第3回 不具合詳細を書かない技術
  5. 言わない技術 第4回 計画を書けと言わない技術
  6. 言わない技術 第5回 念を押さない技術
  7. 言わない技術 第6回 サブエージェントの出力だけは、細かく指示しろ
  8. 言わない技術 第7回 AI を問い詰めない技術
  9. 言わない技術 第8回 AI にダメ出ししない技術
  10. 言わない技術 第9回 AI に考えさせない技術
  11. 言わない技術 第10回 質問に答えない技術
  12. 言わない技術 第11回 AI にレビューをさせない技術
  13. 言わない技術 最終回 何もしない技術

付録

  1. あとがき —— 私は、忘れるのが得意です
  2. 付録 A 1 ターンの解剖 —— リクエストに何が載っているか
  3. 付録 B コンテキストの寿命 —— 圧縮・キャッシュ・サブエージェント
  4. 付録 C hook の契約 —— イベント・exit code・JSON
  5. 付録 D 指示ファイル・ルール・メモリ・スキルの読み込み時点
  6. 付録 E サブエージェントの機構と測定法
  7. 付録 F 自動テストの 8 つの型
  8. 付録 G git とプロセスの機構
  9. 付録 H 画面と本番の検証のはしご
  10. 付録 I AI の性質の出典
  11. 付録 J 用語集 —— 連載の造語と技術名称
  12. 結び —— 依存はどこにあるか

はじめに —— 前巻の続きを、もう 1 冊に

  1. はじめに —— 前巻の続きを、もう 1 冊に

確かめない技術

  1. 確かめない技術 序論 AI のいうことを、もう確かめていない
  2. 確かめない技術 第1回 スクリーンショットを撮らない技術
  3. 確かめない技術 第2回 宣言を信じない技術
  4. 確かめない技術 第3回 テストを再実行しない技術
  5. 確かめない技術 第4回 偽の失敗を読まない技術
  6. 確かめない技術 第5回 全部走らせない技術
  7. 確かめない技術 最終回 その場で決めない技術

動かさない技術

  1. 動かさない技術 序論 確かめるために、プロダクトを動かすことがなくなった
  2. 動かさない技術 第1回 手順を守らせない技術
  3. 動かさない技術 第2回 ラッパーを使わせない技術
  4. 動かさない技術 第3回 集めない技術
  5. 動かさない技術 第4回 役に立たない技術
  6. 動かさない技術 第5回 選び直させない技術
  7. 動かさない技術 第6回 逃げ道を塞がない技術
  8. 動かさない技術 第7回 セッションを続けない技術
  9. 動かさない技術 第8回 成果物で判断しない技術
  10. 動かさない技術 第9回 知見を残さない技術
  11. 動かさない技術 最終回 実験しない技術

追わない技術

  1. 追わない技術 序論 新しいモデルが出ても、もう乗り換えていない
  2. 追わない技術 第1回 深追いしない技術
  3. 追わない技術 第2回 一番安いモデルを使わない技術
  4. 追わない技術 第3回 最新モデルを使わない技術
  5. 追わない技術 第4回 サブエージェントを使わない技術
  6. 追わない技術 第5回 エージェントチームを使わない技術
  7. 追わない技術 第6回 途中でレビューさせない技術
  8. 追わない技術 第7回 モデルを選ばない技術
  9. 追わない技術 第8回 諦めさせない技術
  10. 追わない技術 最終回 振り回されない技術

番外編

  1. 番外編 A-1 整理する技術 —— 記録が増えたときに、何が起きているか
  2. 番外編 A-2 指示を残す技術 —— 「調べるだけ」が通らなかった日
  3. 番外編 A-3 参照するタイミングを変える技術 —— 2,000 行の壁
  4. 番外編 A-4 導出を依頼者の言葉と分ける技術 —— 誰も言っていない条件が、memory に載った日
  5. 番外編 A-5 memory を要約しない技術 —— 整理から、要約を抜く
  6. 番外編 A-6 責務で線を引く技術 —— 仕組みが増えたときに、どれを消すか
  7. 番外編 A-7 読まれたかを確かめる技術 —— 確かめるのをやめて、読めていない形を止めた
  8. 番外編 A-8 面積で数える技術 —— 読ませた量で数えていたら、102 倍外していました
  9. 番外編 A-9 ルールを短くする技術 —— 読みに来るのは、止められた直後の人です
  10. 番外編 B-1 連載を本にする技術 —— 本単位のスイッチでは、足りなかった日
  11. 番外編 C-1 校正の方法に、先に本編を当てる技術 —— AI が書いた方針に、その本自身の地雷が 10 個あった日
  12. 番外編 C-2 仕組みと人を分ける技術 —— 自動テストを置いたその手で、自動テストの外側で 2 度転んだ日
  13. 番外編 C-3 要素ごとに観点を変える技術 —— 一様に当てた点検が、要素をまたいだところで数を落とす
  14. 番外編 C-4 似た指示語を読み分ける技術 —— 1 字違いで、別の作業を頼んだことになる
  15. 番外編 C-5 作業の流れを見る技術 —— 終わりにしたつもりの日に、まだ起きていたこと
  16. 番外編 C-6 作業を進める技術 —— 選ぶ場面が、1 つも残らなかった日
  17. 番外編 C-7 読まずに止める技術 —— 決まったはずの判断が、1 分後に取り消されました
  18. 番外編 D-1 症状で読む —— 片付いた報告に、症状が混ざります
  19. 番外編 D-2 根拠で読む —— 突き合わせた報告に、症状が混ざります
  20. あとがき —— 本当の事実はどうでもいい話
Nhà tài trợ

Về danh sách loạt bài

Đã phát hiện trình chặn quảng cáo

TypingTube hoạt động nhờ doanh thu quảng cáo. Vui lòng cho phép hiển thị quảng cáo để giúp trang web tiếp tục hoạt động