<?xml version="1.0" encoding="UTF-8"?>
<!--generator='jetpack-16.5-a.1'-->
<!--Jetpack_Sitemap_Buffer_News_XMLWriter-->
<?xml-stylesheet type="text/xsl" href="//linhfish.dev/news-sitemap.xsl"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
 <url>
  <loc>https://linhfish.dev/en/2026/11/11/django-in-production-15-backup-and-restore-automated-pg_dump-media-backups-and-regular-restore-drills/</loc>
  <lastmod>2026-11-11T15:37:21Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django in Production #15: Backup and Restore — Automated pg_dump, Media Backups, and Regular Restore Drills</news:title>
   <news:publication_date>2026-11-11T15:35:35Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/11/django-protect-views-for-logged-in-users-only-with-login_required-and-loginrequiredmixin-in-5-minutes/</loc>
  <lastmod>2026-11-11T15:23:30Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: Protect Views for Logged-In Users Only with @login_required and LoginRequiredMixin in 5 Minutes</news:title>
   <news:publication_date>2026-11-11T15:22:32Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/fastapi-0-162-3-va-0-162-4-ho-tro-chinh-thuc-python-3-15-yeu-cau-anyio-4-1-0-tro-len/</loc>
  <lastmod>2026-11-11T15:11:51Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>FastAPI 0.162.3 và 0.162.4: hỗ trợ chính thức Python 3.15, yêu cầu AnyIO 4.1.0 trở lên</news:title>
   <news:publication_date>2026-11-11T15:11:49Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/linh-fish-dev-podcast-30-django-bao-ve-view-chi-cho-nguoi-dang-nhap-bang-login_required-va-loginrequiredmixin-trong-5-phut/</loc>
  <lastmod>2026-11-11T15:10:57Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Linh Fish Dev Podcast #30: Django bảo vệ view chỉ cho người đăng nhập bằng @login_required và LoginRequiredMixin trong 5 phút</news:title>
   <news:publication_date>2026-11-11T15:10:57Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/11/fastapi-use-enums-for-path-parameters-endpoints-that-only-accept-valid-values-in-5-minutes/</loc>
  <lastmod>2026-11-11T15:10:56Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>FastAPI: Use Enums for Path Parameters — Endpoints That Only Accept Valid Values in 5 Minutes</news:title>
   <news:publication_date>2026-11-11T15:10:09Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/11/django-write-custom-template-tags-with-simple_tag-and-inclusion_tag-in-5-minutes/</loc>
  <lastmod>2026-11-11T14:58:08Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: Write Custom Template Tags with simple_tag and inclusion_tag in 5 Minutes</news:title>
   <news:publication_date>2026-11-11T14:56:50Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/11/flask-reuse-layouts-with-template-inheritance-extends-and-block-in-jinja2/</loc>
  <lastmod>2026-11-11T14:46:25Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Flask: Reuse Layouts with Template Inheritance — extends and block in Jinja2</news:title>
   <news:publication_date>2026-11-11T14:44:42Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/django-van-hanh-production-15-backup-va-restore-pg_dump-tu-dong-backup-media-dien-tap-restore-dinh-ky/</loc>
  <lastmod>2026-11-11T13:09:28Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django vận hành production #15: Backup và restore — pg_dump tự động, backup media, diễn tập restore định kỳ</news:title>
   <news:publication_date>2026-11-11T13:09:27Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/5-dong-python-lam-sap-python-3-15-ai-kiem-chung-chinh-thuc-vua-tim-ra-loi-that/</loc>
  <lastmod>2026-11-11T11:18:02Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>5 dòng Python làm sập Python 3.15: AI kiểm chứng chính thức vừa tìm ra lỗi thật</news:title>
   <news:publication_date>2026-11-11T11:18:00Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/django-bao-ve-view-chi-cho-nguoi-dang-nhap-bang-login_required-va-loginrequiredmixin-trong-5-phut/</loc>
  <lastmod>2026-11-11T09:03:56Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: bảo vệ view chỉ cho người đăng nhập bằng @login_required và LoginRequiredMixin trong 5 phút</news:title>
   <news:publication_date>2026-11-11T09:03:55Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/fastapi-dung-enum-cho-path-parameter-endpoint-chi-nhan-gia-tri-hop-le-trong-5-phut/</loc>
  <lastmod>2026-11-11T07:10:31Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>FastAPI: dùng Enum cho path parameter — endpoint chỉ nhận giá trị hợp lệ trong 5 phút</news:title>
   <news:publication_date>2026-11-11T07:10:27Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/khao-sat-python-typing-2026-ai-da-viet-ho-type-hint-va-django-van-la-noi-dau-lon-nhat/</loc>
  <lastmod>2026-11-11T05:15:24Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Khảo sát Python Typing 2026: AI đã viết hộ type hint, và Django vẫn là &amp;quot;nỗi đau&amp;quot; lớn nhất</news:title>
   <news:publication_date>2026-11-11T05:15:22Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/django-viet-template-tag-tuy-chinh-bang-simple_tag-va-inclusion_tag-trong-5-phut/</loc>
  <lastmod>2026-11-11T03:14:25Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: viết template tag tùy chỉnh bằng simple_tag và inclusion_tag trong 5 phút</news:title>
   <news:publication_date>2026-11-11T03:14:24Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/python-3-16-alpha-2-ra-mat-regex-manh-hon-uuid-nhanh-gap-30-lan-va-khoi-dong-nhanh-hon/</loc>
  <lastmod>2026-11-11T01:24:57Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Python 3.16 alpha 2 ra mắt: regex mạnh hơn, UUID nhanh gấp 30 lần — và khởi động nhanh hơn</news:title>
   <news:publication_date>2026-11-11T01:24:55Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/11/flask-tai-su-dung-layout-bang-template-inheritance-extends-va-block-trong-jinja2/</loc>
  <lastmod>2026-11-10T23:15:31Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Flask: tái sử dụng layout bằng template inheritance — extends và block trong Jinja2</news:title>
   <news:publication_date>2026-11-10T23:15:29Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/10/django-running-in-production-14-secure-file-and-media-uploads-validate-file-types-limit-size-signed-urls/</loc>
  <lastmod>2026-11-11T08:44:25Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django Running in Production #14: Secure File and Media Uploads — Validate File Types, Limit Size, Signed URLs</news:title>
   <news:publication_date>2026-11-10T15:45:00Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/openai-python-sdk-3-45-0-cache-responses-toi-12-gio-agent-chay-ca-ngay-re-hon-nhung-phai-tinh-ky-chi-phi-ghi-cache/</loc>
  <lastmod>2026-11-10T15:40:21Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>OpenAI Python SDK 3.45.0: cache Responses tới 12 giờ — agent chạy cả ngày rẻ hơn, nhưng phải tính kỹ chi phí ghi cache</news:title>
   <news:publication_date>2026-11-10T15:40:19Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/10/python-write-professional-clis-with-argparse-stop-parsing-sys-argv-by-hand-in-5-minutes/</loc>
  <lastmod>2026-11-10T15:35:01Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Python: Write Professional CLIs with argparse — Stop Parsing sys.argv by Hand in 5 Minutes</news:title>
   <news:publication_date>2026-11-10T15:33:14Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/10/django-create-a-custom-user-model-from-the-start-dont-suffer-a-painful-migration-later/</loc>
  <lastmod>2026-11-10T15:17:57Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: Create a Custom User Model from the Start — Don&amp;#039;t Suffer a Painful Migration Later</news:title>
   <news:publication_date>2026-11-10T15:16:24Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/10/fastapi-write-standard-crud-with-sqlalchemy-2-0-session-dependency-and-select-in-5-minutes/</loc>
  <lastmod>2026-11-10T15:03:10Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>FastAPI: Write Standard CRUD with SQLAlchemy 2.0 — Session Dependency and select() in 5 Minutes</news:title>
   <news:publication_date>2026-11-10T15:00:30Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/10/django-stop-hardcoding-urls-in-views-and-templates-use-reverse-and-reverse_lazy-in-5-minutes/</loc>
  <lastmod>2026-11-10T14:49:33Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: Stop Hardcoding URLs in Views and Templates — Use reverse() and reverse_lazy() in 5 Minutes</news:title>
   <news:publication_date>2026-11-10T14:48:30Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/django-van-hanh-production-14-upload-file-va-media-an-toan-validate-loai-file-gioi-han-dung-luong-signed-url/</loc>
  <lastmod>2026-11-10T15:23:29Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django vận hành production #14: Upload file và media an toàn — validate loại file, giới hạn dung lượng, signed URL</news:title>
   <news:publication_date>2026-11-10T13:14:01Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/linh-fish-dev-podcast-29-python-viet-cli-chuyen-nghiep-bang-argparse-khoi-parse-sys-argv-thu-cong-trong-5-phut/</loc>
  <lastmod>2026-11-10T12:43:15Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Linh Fish Dev Podcast #29: Python viết CLI chuyên nghiệp bằng argparse — khỏi parse sys.argv thủ công trong 5 phút</news:title>
   <news:publication_date>2026-11-10T12:43:14Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/psf-tuyen-them-chuyen-gia-bao-mat-malware-tren-pypi-tang-60-doi-ung-pho-dang-qua-tai/</loc>
  <lastmod>2026-11-11T08:57:41Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>PSF tuyển thêm chuyên gia bảo mật: malware trên PyPI tăng 60%, đội ứng phó đang quá tải</news:title>
   <news:publication_date>2026-11-10T11:09:09Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/python-viet-cli-chuyen-nghiep-bang-argparse-khoi-parse-sys-argv-thu-cong-trong-5-phut/</loc>
  <lastmod>2026-11-10T09:10:19Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Python: viết CLI chuyên nghiệp bằng argparse — khỏi parse sys.argv thủ công trong 5 phút</news:title>
   <news:publication_date>2026-11-10T09:10:17Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/django-tao-custom-user-model-ngay-tu-dau-dung-de-sau-nay-phai-migrate-dau-dau/</loc>
  <lastmod>2026-11-10T07:11:48Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: tạo custom User model ngay từ đầu — đừng để sau này phải migrate đau đầu</news:title>
   <news:publication_date>2026-11-10T07:11:46Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/python-sap-co-toan-tu-va-het-so-loi-none-khi-truy-cap-du-lieu-long-nhau/</loc>
  <lastmod>2026-11-10T05:39:44Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Python sắp có toán tử `?.` và `??`: hết sợ lỗi None khi truy cập dữ liệu lồng nhau</news:title>
   <news:publication_date>2026-11-10T05:39:43Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/fastapi-viet-crud-chuan-voi-sqlalchemy-2-0-session-dependency-va-select-trong-5-phut/</loc>
  <lastmod>2026-11-10T03:20:55Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>FastAPI: viết CRUD chuẩn với SQLAlchemy 2.0 — session dependency và select() trong 5 phút</news:title>
   <news:publication_date>2026-11-10T03:20:53Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/pyscript-chuyen-sang-che-do-bao-tri-python-tren-trinh-duyet-se-di-ve-dau/</loc>
  <lastmod>2026-11-10T01:20:32Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>PyScript chuyển sang chế độ bảo trì: Python trên trình duyệt sẽ đi về đâu?</news:title>
   <news:publication_date>2026-11-10T01:20:30Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/10/django-dung-hardcode-url-trong-view-va-template-dung-reverse-va-reverse_lazy-trong-5-phut/</loc>
  <lastmod>2026-11-09T23:14:11Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: đừng hardcode URL trong view và template — dùng reverse() và reverse_lazy() trong 5 phút</news:title>
   <news:publication_date>2026-11-09T23:14:10Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/09/django-running-in-production-13-rate-limiting-and-abuse-protection-for-drf/</loc>
  <lastmod>2026-11-09T15:54:37Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django Running in Production #13: Rate Limiting and Abuse Protection for DRF</news:title>
   <news:publication_date>2026-11-09T15:52:34Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/09/flask-hash-passwords-securely-with-werkzeug-never-store-plaintext-in-5-minutes/</loc>
  <lastmod>2026-11-09T15:41:45Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Flask: Hash Passwords Securely with Werkzeug — Never Store Plaintext in 5 Minutes</news:title>
   <news:publication_date>2026-11-09T15:40:02Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/django-launch-editor-bam-mot-cai-la-mo-dung-file-dung-dong-loi-tren-trang-debug-cua-django/</loc>
  <lastmod>2026-11-09T15:36:20Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>django-launch-editor: bấm một cái là mở đúng file, đúng dòng lỗi trên trang debug của Django</news:title>
   <news:publication_date>2026-11-09T15:36:18Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/09/django-bulk-update-with-queryset-update-in-a-single-sql-statement-no-save-loop/</loc>
  <lastmod>2026-11-09T15:29:25Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: Bulk Update with QuerySet.update() in a Single SQL Statement — No save() Loop</news:title>
   <news:publication_date>2026-11-09T15:26:59Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/09/django-admin-group-fields-neatly-with-fieldsets-and-auto-generate-slugs-with-prepopulated_fields-in-5-minutes/</loc>
  <lastmod>2026-11-09T15:09:58Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django Admin: Group Fields Neatly with fieldsets and Auto-Generate Slugs with prepopulated_fields in 5 Minutes</news:title>
   <news:publication_date>2026-11-09T15:06:17Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/en/2026/11/09/fastapi-protect-routes-with-httpbearer-bearer-token-auth-without-oauth2-in-5-minutes/</loc>
  <lastmod>2026-11-09T14:51:33Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>FastAPI: Protect Routes with HTTPBearer — Bearer Token Auth Without OAuth2 in 5 Minutes</news:title>
   <news:publication_date>2026-11-09T14:49:10Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/django-van-hanh-production-13-rate-limiting-va-chong-abuse-cho-drf/</loc>
  <lastmod>2026-11-09T13:12:25Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django vận hành production #13: Rate limiting và chống abuse cho DRF</news:title>
   <news:publication_date>2026-11-09T13:12:23Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/linh-fish-dev-podcast-28-flask-hash-mat-khau-an-toan-bang-werkzeug-trong-5-phut/</loc>
  <lastmod>2026-11-09T12:31:24Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Linh Fish Dev Podcast #28: Flask hash mật khẩu an toàn bằng Werkzeug trong 5 phút</news:title>
   <news:publication_date>2026-11-09T12:31:23Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/wing-12-1-ra-mat-de-ai-agent-tu-viet-code-ban-chi-can-ra-de-va-duyet-ket-qua/</loc>
  <lastmod>2026-11-09T11:10:54Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Wing 12.1 ra mắt: để AI agent tự viết code, bạn chỉ cần ra đề và duyệt kết quả</news:title>
   <news:publication_date>2026-11-09T11:10:52Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/flask-hash-mat-khau-an-toan-bang-werkzeug-dung-luu-plaintext-trong-5-phut/</loc>
  <lastmod>2026-11-09T09:07:32Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Flask: hash mật khẩu an toàn bằng Werkzeug — đừng lưu plaintext trong 5 phút</news:title>
   <news:publication_date>2026-11-09T09:07:30Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/django-cap-nhat-hang-loat-bang-queryset-update-trong-1-cau-sql-khoi-vong-lap-save/</loc>
  <lastmod>2026-11-09T07:17:26Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django: cập nhật hàng loạt bằng QuerySet.update() trong 1 câu SQL, khỏi vòng lặp save()</news:title>
   <news:publication_date>2026-11-09T07:17:25Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/babel-8-1-0-ra-mat-import-anh-shader-nhu-module-thuong-nhung-3-plugin-lo-hen-sang-8-1-1/</loc>
  <lastmod>2026-11-09T05:14:07Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Babel 8.1.0 ra mắt: import ảnh, shader như module thường — nhưng 3 plugin &amp;quot;lỡ hẹn&amp;quot; sang 8.1.1</news:title>
   <news:publication_date>2026-11-09T05:14:05Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/django-admin-gom-field-gon-gang-bang-fieldsets-va-tu-sinh-slug-bang-prepopulated_fields-trong-5-phut/</loc>
  <lastmod>2026-11-09T03:11:25Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>Django admin: gom field gọn gàng bằng fieldsets và tự sinh slug bằng prepopulated_fields trong 5 phút</news:title>
   <news:publication_date>2026-11-09T03:11:24Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/openai-mo-decisions-api-phan-loai-cham-diem-va-dinh-tuyen-bang-ai-nhanh-gap-10-lan-khong-can-ep-model-tra-json/</loc>
  <lastmod>2026-11-09T01:33:15Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>OpenAI mở Decisions API: phân loại, chấm điểm và định tuyến bằng AI — nhanh gấp 10 lần, không cần ép model trả JSON</news:title>
   <news:publication_date>2026-11-09T01:33:14Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
 <url>
  <loc>https://linhfish.dev/2026/11/09/fastapi-bao-ve-route-bang-httpbearer-xac-thuc-bearer-token-khong-can-oauth2-trong-5-phut/</loc>
  <lastmod>2026-11-08T23:10:01Z</lastmod>
  <news:news>
   <news:publication>
    <news:name>Linh Fish Dev</news:name>
    <news:language>vi</news:language>
   </news:publication>
   <news:title>FastAPI: bảo vệ route bằng HTTPBearer — xác thực Bearer token không cần OAuth2 trong 5 phút</news:title>
   <news:publication_date>2026-11-08T23:10:00Z</news:publication_date>
   <news:genres>Blog</news:genres>
  </news:news>
 </url>
</urlset>
