Bối cảnh là việc xử lý log hiệu quả trong các ứng dụng lớn gặp thách thức với lượng dữ liệu khổng lồ. Nguyên nhân kỹ thuật nằm ở việc cơ chế logging mặc định của Go (slog) không có built-in solution cho việc discard log entries, buộc developer phải tự implement. Hệ quả là performance bị ảnh hưởng khi hệ thống phải xử lý log không cần thiết. Điều đáng học là bài viết giới thiệu slog.DiscardHandler - một custom handler giúp loại bỏ log entries dựa trên level, cải thiện đáng kể hiệu suất với con số benchmark lên đến 40% reduction in memory usage. Giải pháp này đặc biệt hữu ích khi bạn cần chạy ứng dụng ở production mode với verbose logging nhưng chỉ muốn giữ lại các log quan trọng.
Why read it: Log discard handler giúp bạn quản lý log hiệu quả hơn bằng cách loại bỏ log không cần thiết.
Answer 3 short questions to earn reward points for this article. Only do it if you want the points.
3 questions · under a minute · optional
Source: https://boldlygo.tech/archive/2026-09-14-slog.discardhandler. 8 Sync News only summarizes and links out; content copyright belongs to the authors and original sources.
Đang tải bình luận…
Bối cảnh là AI Claude có thể giúp bạn trở thành Go developer một cách nhanh chóng. …
Bài viết nhấn mạnh rằng Go, bằng thiết kế, không áp đặt bất kỳ quy tắc kiến trúc nào như lớp sử dụng, phụ thuộc hoặc giao diện, vì vậy việc tổ chức mã nguồn còn lại là trách nhiệm của nhà phát triển. Nguyên nhân kỹ thuật nằm ở sự đơn giản của go.mod, absence of framework-level conventions và sự linh hoạt của interface{}, cho phép các gói phụ thuộc lẫn nhau một cách tự do nếu không được kiểm soát. Khi không có sự can thiệp bewusst, các dự án thường phát triển thành một mạng lưới phụ thuộc phức tạp, khiến việc kiểm thử và thay đổi trở nên tốn thời gian và dễ gây lỗi. Điều này dẫn đến giảm năng suất, tăng chi phí bảo trì và khó mở rộng tính năng mới khi đội ngũ phát triển lớn lên. Bài học chính là phải tự định hình kiến trúc: áp dụng các nguyên tắc như Clean Architecture hoặc Hexagonal, sử dụng dependency injection qua interface, và đặt limites rõ ràng giữa các lớp bằng cách cấu trúc các thư mục và sử dụng go vet hoặc các công cụ lint để phát hiện vi phạm tôt.
Bài viết này giúp lập trình viên Go hiểu rằng kiến trúc sạch là trách nhiệm cá nhân chứ không phải thứ ngôn ngữ tự động áp đặt.
Bối cảnh hiện tại có nhiều người đề xuất ngừng phát triển phần mềm cho người dùng và chuyển hướng sang xây dựng cho AI agents. Nguyên nhân kỹ thuật xuất phát từ tiềm năng của AI agents có thể tự động hóa các tác vụ phức tạp mà người dùng hiện tại phải thực hiện thủ công. Hệ quả là nếu các công nghệ như AutoGPT, LangChain hay GPT-4 trở thành chuẩn, các ứng dụng truyền thống có thể trở nên lỗi thời. Điều đáng học hỏi là việc tập trung vào AI agents đòi hỏi tư duy thiết kế hoàn toàn mới, không chỉ đơn giản là tối ưu hóa giao diện người dùng hiện có.
Bài viết này giúp lập trình viên nhận ra những rủi ro khi chỉ tập trung xây dựng công cụ cho AI agent mà bỏ qua nhu cầu của người dùng thực tế.
Bài viết giải thích ra đời của slog.Handler.WithAttrs trong Go 1.21 như một cách thêm thuộc tính có phạm vi vào logger mà không thay đổi handler gốc. Nguyên nhân kỹ thuật là WithAttrs trả về một handler mới sao chép các thuộc tính hiện tại và gộp thêm các attr.Attr được truyền vào, giữ nguyên tính không thay đổi của handler gốc. Hệ quả là các đoạn code có thể tạo logger có context (request‑ID, user‑ID) cho mỗi goroutine mà không cần khóa hoặc tạo bản sao toàn bộ logger, giảm thiểu việc cấp phát và tránh xung đột trong môi trường đồng thời. Bài cũng chỉ ra rằng việc sử dụng WithAttrs giúp giảm số lần gọi slog.With lên tới 40% trong các benchmark khi ghi log nhiều trường tĩnh, nhờ việc lưu trữ thuộc tính trong handler thay vì tạo mới mỗi lần log. Điều đáng học là khi cần thêm thông tin bối cảnh cho log, ưu tiên sử dụng handler.WithAttrs để tạo logger có phạm vi, giữ handler gốc không thay đổi và tận dụng khả năng tái sử dụng của thuộc tính đã được pre‑allocated.
slog.Handler.WithAttrs giúp lập trình viên quản lý thuộc tính log linh hoạt và hiệu quả trong Go.
G# là ngôn ngữ kết hợp giữa cấu trúc của .NET và Go, mang lại sự linh hoạt cao cho người dùng.
Lập trình viên .NET sẽ tìm hiểu G# để khám phá cách kết hợp tính linh hoạt của Go với cơ chế quản lý bộ nhớ và đa nền tảng của .NET, giúp tối ưu hóa phát triển ứng dụng đa nền tảng hiệu quả hơn.
Astro 7.3 ra mắt với một số cải tiến nhỏ nhưng hữu ích cho quá trình phát triển và triển khai. Lệnh astro preview giờ có tùy chọn --ignore-lock cho phép bỏ qua kiểm tra file lock khi khởi động server preview. Ngoài ra, bản cập nhật truyền logger thời gian chạy của Astro vào các dịch vụ hình ảnh tùy chỉnh và các provider cache, giúp developer dễ dàng ghi log và debug. Đối với người dùng Cloudflare, Astro cung cấp hàm finalize() để gọi trong entrypoint worker tùy chỉnh, đơn giản hoá việc dọn dẹp tài nguyên sau khi request xử lý xong. Những thay đổi này cho thấy Astro tập trung vào việc tăng tính linh hoạt và khả năng mở rộng mà không làm thay đổi cấu trúc cốt lõi của framework.
Astro 7.3 mang lại các tính năng hữu ích cho nhà phát triển như cờ ignore-lock, logger runtime cho dịch vụ hình tùy chỉnh và hàm finalize() cho endpoint Cloudflare worker.
witr là công cụ truy vết nguyên nhân của tiến trình, port, container hay file đang chạy, hiển thị toàn bộ chuỗi khởi động từ systemd, supervisor, shell hay cron cùng thông tin người khởi động, thời gian, nguồn gốc và cảnh báo quan trọng. Có thể chạy dạng tương tác TUI hoặc script với định dạng đầu ra ngắn gọn (--short) hoặc JSON (--json), hỗ trợ đa nền tảng qua một file binary Go tĩnh.
Lập trình viên nên đọc bài này để hiểu cách khám phá và giải quyết nguyên nhân sâu sắc của các quá trình bất thường, container hoặc dịch vụ chạy trong hệ thống, từ nguồn gốc khởi động đến các cảnh báo quan trọng mà ps, top hoặc lsof không thể cung cấp.
Bài viết mô tả cách tích hợp Tailscale vào ứng dụng bằng thư viện tsnet để tạo mạng ảo riêng mà không cần cài client riêng. Sử dụng API của Tailscale, nhà phát triển có thể lập trình tạo và xoá các tailnet cô lập, mỗi tailnet có bộ thiết bị và chính sách riêng. Quá trình này được tự động hoá qua webhook hoặc script CI/CD, cho phép chia sẻ truy cập và quản trị admin mà không cần thao tác thủ công. Kết quả là giảm thời gian cấu hình mạng từ vài giờ xuống dưới vài phút và tăng khả năng cô lập giữa các môi trường test hoặc khách hàng. Bài học chính là khi xây dựng dịch vụ cần kết nối an toàn, nên xem tsnet như lớp SDK Go và khai thác API Tailscale để tự động hoá việc tạo, chia sẻ và quản trị tailnet.
Bài này giúp lập trình viên tích hợp Tailscale vào ứng dụng một cách hiệu quả bằng cách sử dụng tsnet và APIs để tự động hóa chia sẻ.
Read the news here, practice coding, follow structured courses and train for IELTS on our sibling products — all connected through one 8 Sync account.
The ecosystem home: product overviews, blog and full pricing.
ExploreLearn along a clear roadmap: videos, auto-graded quizzes, certificates and mentors who ship for a living.
View the roadmap1,000+ DSA problems in Vietnamese, auto-graded across 7 languages — many FREE, right in your browser.
Practice for freeAI grading for all four IELTS skills with detailed rubric feedback.
Try it freeA 22 MB AI IDE for Vietnamese devs.
Download freeOrganizational memory for AI agents.
ExploreAI that staffs your Fanpage and qualifies leads for you.
Try it