I’ve been running into {error, closed} almost daily in production with Erlang/Elixir HTTP clients :melting_face: The problem is usually the same: a connection has been sitting idle in a pool, the server closes it, and t…
Nguồn: https://erlangforums.com/t/could-gen-tcp-ssl-expose-whether-a-failed-send-submitted-any-data/6096. 8 Sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.
Đọc tin ở đây, luyện code, học theo lộ trình và luyện IELTS trên các sản phẩm anh em — tất cả kết nối với nhau trong hệ sinh thái 8 Sync.
Cổng chính của hệ sinh thái: giới thiệu sản phẩm, blog và bảng giá trọn bộ.
Khám pháHọc theo lộ trình rõ từng chặng: video, quiz chấm tự động, certificate và mentor đang làm nghề.
Xem lộ trình1.000 bài DSA, đề tiếng Việt, chấm tự động 7 ngôn ngữ — nhiều bài FREE, chạy ngay trên trình duyệt.
Luyện miễn phíChấm bốn kỹ năng IELTS bằng AI, phản hồi chi tiết theo rubric.
Dùng thử miễn phíAI IDE 22 MB cho dev Việt.
Tải miễn phíBộ nhớ tổ chức cho AI agent.
Khám pháAI trực Fanpage, tự sàng lọc lead.
Dùng thửMột nhà phát triển hài hước kể lại hành trình khám phá các ngôn ngữ lập trình — từ LISP, COBOL, Perl, Python, Ruby, Java, JavaScript, Go đến Rust — ghi lại những đặc điểm kỳ quặc và khó chịu của từng ngôn ngữ trước khi tìm thấy sự hài lòng với Elixir và hệ sinh thái BEAM.
Làm việc với nhiều ngôn ngữ lập trình khác nhau giúp bạn hiểu rõ hơn về cách mỗi ngôn ngữ xử lý vấn đề, từ đó có thể chọn lựa và áp dụng hiệu quả hơn trong công việc thực tế.
Bối cảnh của error handling trong Elixir liên quan đến việc xử lý các tín hiệu lỗi khác nhau trong hệ thống phân tán. Nguyên nhân kỹ thuật nằm ở cơ chế supervision tree của OTP và cách Elixir phân biệt giữa exceptions (lỗi runtime) và errors (lỗi logic). Hệ quả của việc xử lý lỗi không đúng có thể dẫn đến crash process ngẫu nhiên và ảnh hưởng đến toàn bộ ứng dụng. Điều đáng học là cách Elixir sử dụng try/catch/rescue để bắt exceptions và với/else cho handling errors, cùng với việc dùng multi-catch để thu thập nhiều lỗi cùng lúc.
Bài này giúp lập trình viên Elixir hiểu và xử lý hiệu quả các tín hiệu lỗi khác nhau trong hệ thống của họ.
Gleam phiên bản 1.19.0 đã thay đổi cách biên dịch, không còn tạo ra code nguồn Erlang truyền thống mà chuyển sang sử dụng Erlang/OTP BEAM files trực tiếp. Thay đổi này giúp tăng tốc độ biên dịch đáng kể, giảm thời gian từ 5-10 giây xuống còn dưới 1 giây cho các dự án trung bình. Việc bỏ qua bước tạo code nguồn Erlang giúp giảm thiểu sự phức tạp trong quá trình build và tránh những vấn đề về đồng nhất giữa code nguồn và BEAM file. Đối với lập trình viên, đây là sự cải tiến quan trọng giúp tăng hiệu suất làm việc đáng kể khi sử dụng Gleam trong môi trường production.
Bài viết này giải thích thay đổi quan trọng trong cách Gleam biên dịch chương trình, ảnh hưởng đến cách bạn tương tác với Erlang runtime.
Httpc đang hỗ trợ Unix sockets ở cấp profile thử nghiệm, nhưng cần tính năng cho phép chọn socket Unix cho từng request riêng lẻ mà không thay đổi cấu hình profile. Nguyên nhân kỹ thuật là hiện tại không có cách nào chọn socket cho từng request cụ thể trong httpc:request/4,5 call. Hệ quả này làm giới hạn linh hoạt khi làm việc với nhiều socket Unix khác nhau trong cùng một ứng dụng. Điều đáng học là giải pháp sẽ cung cấp API mới cho phép chọn socket Unix cho từng request riêng, thay vì chỉ ở cấp profile toàn cục.
Lập trình viên nên đọc bài này để biết cách hỗ trợ socket Unix cho từng yêu cầu riêng lẻ trong thư viện httpc.
Map trong Elixir sắp xếp thứ tự dựa trên thời gian tạo atom, dẫn đến kết quả không ổn định do quá trình khởi động Elixir tải module song song và compiler biên dịch file đồng thời. Sự không đồng bộ này gây ra race condition khi lặp qua map, làm kết quả thay đổi giữa các lần chạy khác nhau. Đề xuất này đưa ra flag emulator để tách biệt thứ tự tạo atom và thứ tự lặp map, giải quyết vấn đề bằng cách cho phép lập trình viên chủ động lựa chọn hành vi mong muốn. Việc này quan trọng với các ứng dụng cần tính xác định như testing và deployment trong môi trường production.
Đề xuất này giúp hiểu cách xử lý thứ tự bản đồ độc lập với thứ tự tạo atom, tăng tính ổn định và dự đoán cho code của lập trình viên.
Bối cảnh bài viết tập trung vào OTP Agentic workflows với GenServers và event sourcing để đảm bảo execution bền vững cho AI agents. Nguyên nhân kỹ thuật là cần cơ chế xử lý trạng thái đáng tin cậy khi làm việc với các tác vụ phức tạp của AI. Hệ quả là việc triển khai này giúp hệ thống phục hồi hiệu quả sau lỗi mà không mất trạng thái quan trọng. Điều đáng học là cách OTP kết hợp event sourcing tạo nền tảng vững chắc cho các hệ thống agent-based. Các kỹ thuật này đặc biệt hữu ích khi xây dựng AI agents cần state persistence và fault tolerance.
Bài viết này giúp lập trình viên hiểu cách triển khai các tác nhân AI bền vững bằng cách sử dụng OTP pattern với GenServer và event sourcing trong hệ thống phân tán.
Hội nghị Erlang, Elixir và Gleam châu Âu diễn ra trong 2 ngày với các buổi nói chuyện, thảo luận và kết nối cho cộng đồng BEAM. Sự kiện này tập trung vào các công nghệ chạy trên virtual machine BEAM như Erlang, Elixir và Gleam. Hội nghị tạo cơ hội để các lập trình viên chia sẻ kiến thức về phát triển hệ thống phân tán và xử lý đồng thời. Tham gia sự kiện giúp cập nhật những xu hướng mới nhất trong ecosystem BEAM và mở rộng mạng lưới quan hệ chuyên môn.
Bài viết này cung cấp thông tin quan trọng về hội nghị Erlang, Elixir và Gleam ở châu Âu - sự kiện không thể bỏ lỡ cho cộng đồng BEAM.
Sự kiện BEAM diễn ra tại châu Âu kéo dài 2 ngày với nhiều bài nói, thảo luận và kết nối cho cộng đồng Erlang, Elixir và Gleam. Đây là hội thảo chuyên sâu về công nghệ BEVM nơi các nhà phát triển chia sẻ kinh nghiệm về hệ thống phân tán và xử lý đồng thời. Hội thảo tập trung vào ứng dụng Erlang và Elixir trong xây dựng hệ thống thời gian thực với khả năng availability cao. Những bài trình bày tại đây cung cấp kiến thức thực tế về hiệu năng và tối ưu hóa ứng dụng trên nền tảng BEAM.
Sự kiện này là cơ hội vàng để kết nối và cập nhật kiến thức về Erlang, Elixir và Gleam từ cộng đồng BEAM hàng đầu châu Âu.
Đang tải bình luận…