<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Phát triển on hobbyworker취미생활자</title>
    <link>https://hobbyworker.me/vi/dev/</link>
    <description>Recent content in Phát triển on hobbyworker취미생활자</description>
    <generator>Hugo</generator>
    <language>vi</language>
    <copyright>2026 hobbyworker</copyright>
    <lastBuildDate>Thu, 21 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://hobbyworker.me/vi/dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Thiết Kế DMG Phân Phối Cho Ứng Dụng macOS (2): Tọa Độ Layout Cửa Sổ và Biểu Tượng, và Tự Động Hóa</title>
      <link>https://hobbyworker.me/vi/dev/2026-05-21-design-macos-dmg-2-layout-coordinates/</link>
      <pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2026-05-21-design-macos-dmg-2-layout-coordinates/</guid>
      <description>Kích thước cửa sổ DMG và vị trí đặt biểu tượng đều được quyết định bởi tọa độ. Bài viết này giải thích từng cái kích thước cửa sổ và vị trí, kích thước biểu tượng, và tọa độ X/Y của biểu tượng ứng dụng và Applications drop link trong create-dmg, hướng dẫn cách căn chỉnh tọa độ pixel của ảnh nền với tọa độ điểm của cửa sổ, và cách tự động hóa quá trình này để tái sử dụng cho mỗi lần phát hành — dựa trên ứng dụng mẫu FocusTimer.</description>
    </item>
    <item>
      <title>Thiết Kế DMG Phân Phối Cho Ứng Dụng macOS (1): create-dmg và Chuẩn Bị Ảnh Nền</title>
      <link>https://hobbyworker.me/vi/dev/2026-05-20-design-macos-dmg-1-create-dmg-and-background/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2026-05-20-design-macos-dmg-1-create-dmg-and-background/</guid>
      <description>Khi bạn tự phân phối ứng dụng macOS, thứ đầu tiên người dùng thấy là cửa sổ Finder mở ra khi họ nhấp đúp vào .dmg. Bài viết này giới thiệu công cụ create-dmg, hướng dẫn chuẩn bị thư mục staging chỉ chứa .app, và cách tạo ảnh nền DMG theo quy ước @2x Retina trong khi tránh bẫy DPI — dựa trên ứng dụng mẫu FocusTimer.</description>
    </item>
    <item>
      <title>Phát Hành Ứng Dụng macOS Lên Mac App Store (3): Cài Đặt Upload và Đăng Ký App Store Connect</title>
      <link>https://hobbyworker.me/vi/dev/2026-05-19-distribute-macos-app-mas-3-export-and-app-store-connect/</link>
      <pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2026-05-19-distribute-macos-app-mas-3-export-and-app-store-connect/</guid>
      <description>Sau khi hoàn thành MAS build target và phân nhánh cấu hình cũng như code, đã đến lúc thiết lập con đường để đưa build đó lên App Store. Bài viết này kết thúc series bằng cách hướng dẫn viết ExportOptions-MAS.plist để upload, đăng ký app record trong App Store Connect, và xác minh build để hai kênh luôn không bị hỏng — dựa trên ứng dụng mẫu FocusTimer.</description>
    </item>
    <item>
      <title>Phát Hành Ứng Dụng macOS Lên Mac App Store (2): Tách Cấu Hình và Code Giữa Hai Kênh</title>
      <link>https://hobbyworker.me/vi/dev/2026-05-18-distribute-macos-app-mas-2-build-config-and-code/</link>
      <pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2026-05-18-distribute-macos-app-mas-2-build-config-and-code/</guid>
      <description>Sau khi tạo build target cho MAS, bạn cần tách các file cấu hình và code để target đó thực sự tuân theo quy tắc App Store. Bài viết này hướng dẫn từng bước tạo file entitlements và Info.plist chỉ dành cho MAS, căn chỉnh cài đặt build, và phân nhánh code cập nhật tự động bằng #if canImport(Sparkle) — dựa trên ứng dụng mẫu FocusTimer.</description>
    </item>
    <item>
      <title>Phát Hành Ứng Dụng macOS Lên Mac App Store (1): Tạo Build Target Riêng Biệt</title>
      <link>https://hobbyworker.me/vi/dev/2026-05-17-distribute-macos-app-mas-1-target-setup/</link>
      <pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2026-05-17-distribute-macos-app-mas-1-target-setup/</guid>
      <description>Phát hành ứng dụng macOS lên Mac App Store đòi hỏi một build target riêng biệt với target dùng cho phân phối trực tiếp, vì quy định duyệt App Store cấm các trình cập nhật tự động như Sparkle. Bài viết này hướng dẫn đăng ký Bundle ID chỉ dành cho MAS, nhân đôi build target trong Xcode, và xử lý gánh nặng dọn dẹp mà việc nhân đôi để lại — dựa trên ứng dụng mẫu FocusTimer.</description>
    </item>
    <item>
      <title>Tự Phân Phối Ứng Dụng macOS (3): Lưu Trữ Update Feed và Cài Đặt Build</title>
      <link>https://hobbyworker.me/vi/dev/2026-05-16-distribute-macos-app-3-update-hosting-and-build/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2026-05-16-distribute-macos-app-3-update-hosting-and-build/</guid>
      <description>Update feed cho cập nhật tự động của ứng dụng macOS được phân phối trực tiếp phải được lưu trữ tại vị trí công khai có thể truy cập mà không cần xác thực. Bài viết này lưu trữ repository cập nhật bằng GitHub Pages, kết nối với domain tùy chỉnh bạn kiểm soát, và hoàn thiện ExportOptions.plist cùng cấu hình phía ứng dụng để hoàn tất phần thiết lập một lần cho phân phối trực tiếp — dựa trên ứng dụng mẫu FocusTimer.</description>
    </item>
    <item>
      <title>Tự Phân Phối Ứng Dụng macOS (2): Tạo Khóa Ký Cập Nhật Tự Động Sparkle</title>
      <link>https://hobbyworker.me/vi/dev/2026-05-15-distribute-macos-app-2-sparkle-signing-key/</link>
      <pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2026-05-15-distribute-macos-app-2-sparkle-signing-key/</guid>
      <description>Triển khai cập nhật tự động bằng framework Sparkle là tiêu chuẩn thực tế cho các ứng dụng macOS được phân phối trực tiếp. Bài viết này giải thích từng bước cách tạo khóa ký EdDSA mà Sparkle dùng để xác minh file cập nhật, nhúng khóa công khai vào ứng dụng, và sao lưu cũng như khôi phục khóa riêng tư an toàn — dựa trên ứng dụng mẫu FocusTimer.</description>
    </item>
    <item>
      <title>Tự Phân Phối Ứng Dụng macOS (1): Chứng Chỉ Developer ID và Chuẩn Bị Công Chứng</title>
      <link>https://hobbyworker.me/vi/dev/2026-05-14-distribute-macos-app-1-developer-id-certificate/</link>
      <pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2026-05-14-distribute-macos-app-1-developer-id-certificate/</guid>
      <description>Để phân phối ứng dụng macOS trực tiếp mà không qua Mac App Store, bạn cần có chứng chỉ Developer ID và cấu hình công chứng (notarization) từ trước. Bài viết này hướng dẫn từng bước cài đặt ban đầu chỉ cần làm một lần — cài công cụ dòng lệnh, cấp chứng chỉ Developer ID Application, và đăng ký mật khẩu dành riêng cho App cùng hồ sơ notarytool để công chứng — dựa trên ứng dụng mẫu FocusTimer.</description>
    </item>
    <item>
      <title>Chuyển Đổi Văn Bản Thành Tên File bằng Automator trên macOS</title>
      <link>https://hobbyworker.me/vi/dev/2023-04-06-convert-text-to-filename-using-automator-on-macos/</link>
      <pubDate>Thu, 06 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-04-06-convert-text-to-filename-using-automator-on-macos/</guid>
      <description>Bài viết này giải thích cách tạo một Quick Action trên macOS bằng Automator để chuyển đổi văn bản sang định dạng phù hợp với tên file. Quick Action sẽ loại bỏ các ký tự đặc biệt, chuyển văn bản thành chữ thường và thay thế khoảng trắng bằng dấu gạch ngang.</description>
    </item>
    <item>
      <title>Pytrends 11: Khám Phá Tìm Kiếm Thịnh Hành Thời Gian Thực để Cập Nhật Thông Tin Tức Thì</title>
      <link>https://hobbyworker.me/vi/dev/2023-04-05-pytrends-11-discovering-realtime-trending-searches-for-uptotheminute-insights/</link>
      <pubDate>Wed, 05 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-04-05-pytrends-11-discovering-realtime-trending-searches-for-uptotheminute-insights/</guid>
      <description>Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng thư viện `pytrends` để khám phá các tìm kiếm thịnh hành thời gian thực trên Google, giúp bạn luôn nắm bắt được các xu hướng và chủ đề mới nhất. Chúng ta sẽ minh họa cách thu thập và phân tích dữ liệu tìm kiếm thịnh hành thời gian thực bằng hàm `realtime_trending_searches()`, giúp tạo ra nội dung kịp thời, phù hợp và hấp dẫn.</description>
    </item>
    <item>
      <title>Pytrends 10: Tinh Chỉnh Tìm Kiếm Xu Hướng bằng Gợi Ý</title>
      <link>https://hobbyworker.me/vi/dev/2023-04-04-pytrends-10-refining-trend-searches-with-suggestions/</link>
      <pubDate>Tue, 04 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-04-04-pytrends-10-refining-trend-searches-with-suggestions/</guid>
      <description>Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng thư viện `pytrends` để tinh chỉnh các tìm kiếm xu hướng bằng cách lấy gợi ý tìm kiếm dựa trên một truy vấn nhất định. Chúng ta sẽ minh họa cách thu thập và phân tích dữ liệu gợi ý tìm kiếm bằng hàm `suggestions()`, giúp bạn khám phá các từ khóa và xu hướng mới liên quan đến truy vấn tìm kiếm của mình.</description>
    </item>
    <item>
      <title>Pytrends 9: Thành Thạo Phân Tích Bảng Xếp Hạng để Có Thông Tin Dựa Trên Dữ Liệu</title>
      <link>https://hobbyworker.me/vi/dev/2023-04-03-pytrends-9-mastering-top-charts-analysis-for-datadriven-insights/</link>
      <pubDate>Mon, 03 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-04-03-pytrends-9-mastering-top-charts-analysis-for-datadriven-insights/</guid>
      <description>Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng thư viện `pytrends` để phân tích bảng xếp hạng của Google, giúp bạn có được thông tin dựa trên dữ liệu về các truy vấn tìm kiếm phổ biến nhất trong nhiều danh mục khác nhau. Chúng ta sẽ minh họa cách thu thập và phân tích dữ liệu bảng xếp hạng bằng hàm `top_charts()`, giúp định hướng chiến lược nội dung và tối ưu hóa sự hiện diện trực tuyến của bạn.</description>
    </item>
    <item>
      <title>Pytrends 8: Theo Dõi Các Tìm Kiếm Thịnh Hành để Đón Đầu Xu Hướng</title>
      <link>https://hobbyworker.me/vi/dev/2023-04-02-pytrends-8-tracking-trending-searches-to-stay-ahead/</link>
      <pubDate>Sun, 02 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-04-02-pytrends-8-tracking-trending-searches-to-stay-ahead/</guid>
      <description>Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng thư viện `pytrends` để theo dõi các tìm kiếm thịnh hành trên Google, giúp bạn đón đầu xu hướng và khám phá những cơ hội mới cho việc tạo và tối ưu hóa nội dung. Chúng ta sẽ minh họa cách thu thập và phân tích dữ liệu tìm kiếm thịnh hành bằng hàm `trending_searches()`.</description>
    </item>
    <item>
      <title>Pytrends 7: Khám Phá Các Truy Vấn Liên Quan để Phân Tích Chuyên Sâu</title>
      <link>https://hobbyworker.me/vi/dev/2023-04-01-pytrends-7-uncovering-related-queries-for-indepth-analysis/</link>
      <pubDate>Sat, 01 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-04-01-pytrends-7-uncovering-related-queries-for-indepth-analysis/</guid>
      <description>Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng thư viện `pytrends` để khám phá các truy vấn liên quan đến một từ khóa nhất định. Tính năng mạnh mẽ này cho phép bạn phân tích chuyên sâu các từ khóa mục tiêu và tìm ra những cơ hội mới cho việc tạo và tối ưu hóa nội dung. Chúng ta sẽ minh họa cách thu thập và phân tích dữ liệu truy vấn liên quan bằng hàm `related_queries()`.</description>
    </item>
    <item>
      <title>Pytrends 6: Nghiên cứu các chủ đề liên quan để mở rộng nghiên cứu từ khóa</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-31-pytrends-6-investigating-related-topics-to-expand-keyword-research/</link>
      <pubDate>Fri, 31 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-31-pytrends-6-investigating-related-topics-to-expand-keyword-research/</guid>
      <description>Trong bài viết này, chúng ta sẽ khám phá cách sử dụng thư viện `pytrends` để điều tra các chủ đề liên quan đến một từ khóa tìm kiếm nhất định, cho phép bạn mở rộng nghiên cứu từ khóa và khám phá các cơ hội mới. Chúng ta sẽ minh họa cách thu thập và phân tích dữ liệu chủ đề liên quan bằng hàm `related_topics()`, giúp thông báo cho chiến lược nội dung và tăng cường sự hiện diện trực tuyến của bạn.</description>
    </item>
    <item>
      <title>Pytrends 5: Khám phá mức độ quan tâm theo khu vực để có thông tin chuyên biệt</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-30-pytrends-5-exploring-interest-by-region-for-targeted-insights/</link>
      <pubDate>Thu, 30 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-30-pytrends-5-exploring-interest-by-region-for-targeted-insights/</guid>
      <description>Trong bài viết này, chúng ta sẽ khám phá cách sử dụng thư viện `pytrends` để phân tích mức độ quan tâm theo khu vực cho các từ khóa tìm kiếm cụ thể. Tính năng mạnh mẽ này cho phép bạn thu thập những thông tin chuyên biệt về mức độ phổ biến của từ khóa tìm kiếm trên các vị trí địa lý khác nhau, giúp bạn hiểu rõ hơn về đối tượng của mình và tối ưu hóa chiến lược marketing. Chúng ta sẽ đề cập đến cách thu thập và phân tích dữ liệu mức độ quan tâm theo khu vực bằng hàm `interest_by_region()`.</description>
    </item>
    <item>
      <title>Pytrends 4: Đi sâu vào dữ liệu mức độ quan tâm theo giờ trong lịch sử</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-29-pytrends-4-diving-into-historical-hourly-interest-data/</link>
      <pubDate>Wed, 29 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-29-pytrends-4-diving-into-historical-hourly-interest-data/</guid>
      <description>Trong bài viết này, chúng ta sẽ khám phá cách sử dụng thư viện `pytrends` để truy xuất dữ liệu mức độ quan tâm theo giờ trong lịch sử từ Google Trends. Bằng cách đi sâu vào dữ liệu này, chúng ta có thể thu được những thông tin giá trị về mức độ phổ biến của các từ khóa tìm kiếm và hiểu rõ hơn về hành vi của người tiêu dùng. Hướng dẫn này sẽ dẫn bạn qua quá trình thu thập và phân tích dữ liệu mức độ quan tâm theo giờ bằng hàm `get_historical_interest()`.</description>
    </item>
    <item>
      <title>Pytrends 3: Khai thác phân tích mức độ quan tâm đa khoảng thời gian</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-28-pytrends-3-harnessing-multirange-interest-over-time-analysis/</link>
      <pubDate>Tue, 28 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-28-pytrends-3-harnessing-multirange-interest-over-time-analysis/</guid>
      <description>Trong bài viết này, chúng ta sẽ khám phá cách sử dụng thư viện `pytrends` để phân tích mức độ quan tâm đến các từ khóa cụ thể trên nhiều khoảng thời gian, cung cấp cái nhìn toàn diện hơn về xu hướng. Chúng ta sẽ minh họa cách thu thập và phân tích dữ liệu mức độ quan tâm đa khoảng thời gian bằng hàm `multirange_interest_over_time()`, giúp bạn hiểu hiệu suất và mức độ phổ biến của từ khóa qua các giai đoạn khác nhau.</description>
    </item>
    <item>
      <title>Pytrends 2: Phân tích mức độ quan tâm theo thời gian</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-27-pytrends-2-analyzing-interest-over-time/</link>
      <pubDate>Mon, 27 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-27-pytrends-2-analyzing-interest-over-time/</guid>
      <description>Trong bài viết này, chúng ta sẽ khám phá cách sử dụng thư viện `pytrends` để phân tích mức độ quan tâm đến các từ khóa cụ thể theo thời gian bằng hàm `interest_over_time()`. Bằng cách phân tích dữ liệu này, bạn có thể hiểu rõ hơn về sự thay đổi trong mức độ quan tâm đến một từ khóa, giúp bạn đưa ra quyết định sáng suốt về chiến lược nội dung và các hoạt động marketing.</description>
    </item>
    <item>
      <title>Pytrends 1: Cách sử dụng Google Trends không chính thức với Python</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-26-pytrends-1-how-to-use-google-trend-unofficially-with-python/</link>
      <pubDate>Sun, 26 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-26-pytrends-1-how-to-use-google-trend-unofficially-with-python/</guid>
      <description>Trong bài đăng này, chúng ta sẽ khám phá cách sử dụng Pytrends, một API Google Trends không chính thức dành cho Python, để truy cập và phân tích dữ liệu Google Trends. Chúng ta sẽ đề cập đến cách cài đặt và thiết lập Pytrends, thực hiện tìm kiếm cơ bản và hiểu kết quả.</description>
    </item>
    <item>
      <title>Quản lý nhiều môi trường Rust với rustup</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-26-managing-multiple-rust-environments-with-rustup/</link>
      <pubDate>Sun, 26 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-26-managing-multiple-rust-environments-with-rustup/</guid>
      <description>Tóm lại, rustup là trình quản lý toolchain Rust chính thức cho phép các nhà phát triển dễ dàng cài đặt, cập nhật và quản lý nhiều môi trường Rust trên hệ thống của họ. Báo cáo này đã trình bày chi tiết quá trình cài đặt cho macOS, Linux và Windows, cũng như cách sử dụng cơ bản các lệnh rustup để chuyển đổi giữa các phiên bản Rust, thiết lập ghi đè cho từng dự án và cập nhật các toolchain đã cài đặt. Bằng cách tận dụng rustup, các nhà phát triển có thể làm việc hiệu quả trên nhiều dự án với các yêu cầu phiên bản Rust khác nhau, nâng cao năng suất và giảm thiểu xung đột liên quan đến phiên bản.</description>
    </item>
    <item>
      <title>Triển khai site tĩnh Hugo lên GitHub Pages bằng GitHub Actions</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-25-deploying-a-hugo-static-site-to-github-pages-with-github-actions/</link>
      <pubDate>Sat, 25 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-25-deploying-a-hugo-static-site-to-github-pages-with-github-actions/</guid>
      <description>Việc triển khai site tĩnh Hugo lên GitHub Pages có thể được tự động hóa bằng GitHub Actions với cấu hình workflow hugo.yaml. Để thiết lập workflow, hãy tạo file hugo.yaml trong thư mục .github/workflows/ và sao chép cấu hình YAML được cung cấp. Ngoài ra, hãy cấu hình cài đặt GitHub Pages trong dự án của bạn bằng cách chọn &amp;#39;GitHub Actions&amp;#39; làm nguồn cho quá trình build và triển khai. Thiết lập này cho phép triển khai site liền mạch khi push lên nhánh chính hoặc kích hoạt thủ công từ tab Actions. Bằng cách tự động hóa quá trình build và triển khai, bạn có thể tập trung vào việc tạo và cập nhật nội dung trong khi tận dụng các khả năng CI/CD tích hợp của GitHub Actions để cải thiện quy trình phát triển.</description>
    </item>
    <item>
      <title>Thêm tính năng phát hiện AdBlocker vào blog Hugo với theme PaperMod</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-24-adding-adblocker-detection-to-your-hugo-blog-with-papermod-theme/</link>
      <pubDate>Fri, 24 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-24-adding-adblocker-detection-to-your-hugo-blog-with-papermod-theme/</guid>
      <description>Trong bài đăng blog này, chúng ta đã trình bày cách thêm tính năng phát hiện AdBlocker vào blog Hugo sử dụng theme PaperMod. Chúng ta đã cung cấp hướng dẫn từng bước bao gồm việc tạo các file CSS và JavaScript tùy chỉnh, thêm file HTML partial cho thông báo cảnh báo, và mở rộng các partial head và footer để bao gồm các file mới. Kết quả là, những người dùng đã bật trình chặn quảng cáo sẽ thấy thông báo cảnh báo lịch sự, khuyến khích họ hỗ trợ nội dung của trang web bằng cách tắt trình chặn quảng cáo hoặc thêm trang vào danh sách cho phép.</description>
    </item>
    <item>
      <title>Sử dụng NVM và Autoenv kết hợp với nhau</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-23-using-nvm-and-autoenv-in-combination/</link>
      <pubDate>Thu, 23 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-23-using-nvm-and-autoenv-in-combination/</guid>
      <description>Chúng ta đã thảo luận về cách kết hợp nvm (Node Version Manager) và autoenv để quản lý các phiên bản Node.js và biến môi trường một cách liền mạch trong quy trình phát triển. Bằng cách tạo file .env với phiên bản Node.js và biến môi trường mong muốn, đồng thời cấu hình autoenv để hoạt động cùng nvm, bạn có thể tự động chuyển đổi phiên bản Node.js và tải các biến phù hợp khi di chuyển giữa các dự án. Phương pháp tinh gọn này có thể cải thiện đáng kể quy trình phát triển của bạn, đảm bảo rằng bạn luôn sử dụng đúng cấu hình cho từng dự án.</description>
    </item>
    <item>
      <title>Cách sử dụng jEnv và autoenv kết hợp với nhau</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-22-how-to-use-jenv-and-autoenv-in-combination/</link>
      <pubDate>Wed, 22 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-22-how-to-use-jenv-and-autoenv-in-combination/</guid>
      <description>Sự kết hợp của jEnv và autoenv cung cấp giải pháp mạnh mẽ và linh hoạt để quản lý các phiên bản Java và biến môi trường trên nhiều dự án. Bằng cách áp dụng các công cụ này, các nhà phát triển có thể tập trung vào việc viết code chất lượng cao và cung cấp các tính năng có giá trị, thay vì bị đè nặng bởi sự phức tạp của việc quản lý các môi trường Java khác nhau.</description>
    </item>
    <item>
      <title>Cách sử dụng rbenv và autoenv kết hợp với nhau</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-21-how-to-use-rbenv-and-autoenv-in-combination/</link>
      <pubDate>Tue, 21 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-21-how-to-use-rbenv-and-autoenv-in-combination/</guid>
      <description>Kết hợp rbenv và autoenv cho phép bạn quản lý nhiều phiên bản Ruby và các biến môi trường riêng theo từng dự án một cách liền mạch. Bằng cách tạo file .ruby-version và .env trong các thư mục dự án, bạn có thể tự động chuyển đổi giữa các phiên bản Ruby và tải các biến môi trường phù hợp khi điều hướng giữa các dự án. Sự kết hợp mạnh mẽ này giúp đơn giản hóa trải nghiệm phát triển Ruby, làm cho nó hiệu quả hơn và ít xảy ra lỗi hơn.</description>
    </item>
    <item>
      <title>Kết hợp Pyenv-virtualenv và Autoenv cho phát triển Python</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-20-using-pyenv-virtualenv-and-autoenv-in-combination-for-python-development/</link>
      <pubDate>Mon, 20 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-20-using-pyenv-virtualenv-and-autoenv-in-combination-for-python-development/</guid>
      <description>Tóm lại, pyenv-virtualenv và autoenv có thể kết hợp để tạo ra một quy trình phát triển Python liền mạch, cho phép bạn quản lý nhiều môi trường Python và môi trường ảo một cách dễ dàng. Pyenv-virtualenv là plugin cho pyenv giúp quản lý môi trường ảo, trong khi autoenv tự động kích hoạt môi trường ảo phù hợp khi vào thư mục dự án có file .env. Bằng cách sử dụng các công cụ này cùng nhau, bạn có thể cải thiện quy trình phát triển, giữ các phụ thuộc tách biệt và có tổ chức, đồng thời luôn sử dụng môi trường ảo đúng cho từng dự án.</description>
    </item>
    <item>
      <title>Sử dụng Autoenv: Con đường tắt tối thượng để quản lý môi trường</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-19-using-autoenv-the-ultimate-shortcut-to-environment-management/</link>
      <pubDate>Sun, 19 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-19-using-autoenv-the-ultimate-shortcut-to-environment-management/</guid>
      <description>Autoenv là công cụ giúp quản lý các biến môi trường bằng cách tự động thiết lập chúng khi vào một thư mục và hủy thiết lập khi rời khỏi. Công cụ này có thể cài đặt trên nhiều nền tảng khác nhau như Mac, Linux và Windows. Autoenv có thể được sử dụng cho nhiều mục đích như thiết lập biến môi trường, chạy lệnh khi vào thư mục, và hủy thiết lập biến môi trường. Bằng cách sử dụng Autoenv, người dùng có thể dễ dàng quản lý biến môi trường và tự động hóa các tác vụ lặp lại, từ đó nâng cao hiệu quả quy trình làm việc.</description>
    </item>
    <item>
      <title>Quản lý nhiều môi trường Node.js với NVM</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-18-managing-multiple-nodejs-environments-with-nvm/</link>
      <pubDate>Sat, 18 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-18-managing-multiple-nodejs-environments-with-nvm/</guid>
      <description>Tóm lại, bài viết này trình bày về Node Version Manager (NVM), một công cụ hữu ích giúp các nhà phát triển quản lý và chuyển đổi giữa nhiều phiên bản Node.js. Bài viết cung cấp hướng dẫn cài đặt cho macOS, Linux và các hệ thống dựa trên Unix khác, đồng thời đề cập 10 tính năng được sử dụng phổ biến nhất của NVM như liệt kê các phiên bản Node.js có sẵn, cài đặt, chuyển đổi, đặt phiên bản mặc định, gỡ cài đặt, và chạy script cũng như lệnh với phiên bản cụ thể. NVM giúp các nhà phát triển làm việc hiệu quả với nhiều phiên bản Node.js khác nhau, đảm bảo khả năng kiểm thử và tương thích liền mạch trên nhiều dự án và môi trường.</description>
    </item>
    <item>
      <title>Hướng dẫn thực tế sử dụng jEnv để quản lý phiên bản Java</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-17-a-practical-guide-to-using-jenv-for-java-version-management/</link>
      <pubDate>Fri, 17 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-17-a-practical-guide-to-using-jenv-for-java-version-management/</guid>
      <description>Trong bài viết này, chúng ta đã giới thiệu jEnv — công cụ dòng lệnh giúp đơn giản hóa việc quản lý phiên bản Java. Chúng ta đã thảo luận về hướng dẫn cài đặt cho Mac và Linux, khám phá các tính năng được dùng nhiều nhất như local, global, shell, rehash, version, versions, which, whence và add. jEnv cho phép các nhà phát triển dễ dàng chuyển đổi giữa các phiên bản Java theo từng dự án hoặc theo từng phiên, tối ưu hóa quy trình phát triển và ngăn chặn xung đột phiên bản. Đây là công cụ không thể thiếu cho bất kỳ nhà phát triển Java nào làm việc với nhiều dự án Java hoặc cần kiểm soát tốt hơn môi trường Java của mình.</description>
    </item>
    <item>
      <title>Cách sử dụng Pyenv và Pyenv-Virtualenv</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-16-how-to-use-pyenv-and-pyenv-virtualenv/</link>
      <pubDate>Thu, 16 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-16-how-to-use-pyenv-and-pyenv-virtualenv/</guid>
      <description>Trong bài viết này, chúng ta đã khám phá pyenv và pyenv-virtualenv — các công cụ mạnh mẽ để quản lý nhiều phiên bản Python và môi trường ảo. Chúng ta đã đề cập đến hướng dẫn cài đặt cho nền tảng Mac và Linux, thảo luận về các tính năng thường dùng nhất như cài đặt phiên bản Python, đặt phiên bản Python toàn cục và cục bộ, tạo và quản lý môi trường ảo, và rehash để cập nhật shim. Bằng cách tận dụng các công cụ này, bạn có thể duy trì quy trình phát triển sạch và hiệu quả, giảm thiểu xung đột dependency và dễ dàng chuyển đổi giữa các dự án có dependency và phiên bản Python khác nhau.</description>
    </item>
    <item>
      <title>Quản lý nhiều môi trường Ruby với rbenv</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-15-managing-multiple-ruby-environments-with-rbenv/</link>
      <pubDate>Wed, 15 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-15-managing-multiple-ruby-environments-with-rbenv/</guid>
      <description>Tóm lại, rbenv là công cụ mạnh mẽ và đa năng để quản lý nhiều môi trường Ruby. Nó đơn giản hóa việc chuyển đổi giữa các phiên bản Ruby, quản lý gemset và duy trì các dependency theo từng dự án. Với cài đặt dễ dàng và tương thích đa nền tảng, rbenv là công cụ thiết yếu cho các nhà phát triển Ruby muốn tối ưu hóa quy trình làm việc và giữ dự án luôn ngăn nắp.</description>
    </item>
    <item>
      <title>Tự động hóa lịch tập luyện với Notion API</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-14-automating-workout-scheduling-with-notion-api/</link>
      <pubDate>Tue, 14 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-14-automating-workout-scheduling-with-notion-api/</guid>
      <description>Bài viết này trình bày cách sử dụng Notion API để tự động hóa quy trình tạo lịch tập luyện trong cơ sở dữ liệu Notion. Bài viết cung cấp đoạn code có thể dùng để tạo lịch tập luyện cho một khoảng ngày cụ thể và tự động thêm sự kiện mới vào cơ sở dữ liệu dựa trên kế hoạch tập luyện đã định. Bài viết cũng giải thích cách xác thực với Notion API và truy vấn các sự kiện hiện có để tránh trùng lặp. Phần kết thảo luận về tiềm năng của Notion API trong việc tự động hóa nhiều loại tác vụ và khả năng ứng dụng trong các quy trình làm việc khác.</description>
    </item>
    <item>
      <title>Hướng dẫn Homebrew cho người mới bắt đầu: Trình quản lý gói cho macOS</title>
      <link>https://hobbyworker.me/vi/dev/2023-03-13-a-beginners-guide-to-homebrew-the-missing-package-manager-for-macos/</link>
      <pubDate>Mon, 13 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/vi/dev/2023-03-13-a-beginners-guide-to-homebrew-the-missing-package-manager-for-macos/</guid>
      <description>Trong bài viết này, chúng ta sẽ khám phá Homebrew — trình quản lý gói mạnh mẽ và đa năng được thiết kế đặc biệt cho người dùng macOS. Homebrew lấp đầy khoảng trống trên macOS bằng cách cung cấp cách dễ dàng để cài đặt và quản lý phần mềm mã nguồn mở, công cụ và thư viện không có trên App Store. Đến cuối bài, bạn sẽ hiểu vững cách cài đặt và sử dụng Homebrew, cùng với một ví dụ thực tế được hướng dẫn từng bước.</description>
    </item>
  </channel>
</rss>
