nói dối e blog

Sự Cố Bug Do Liên Kết Kép Thư Viện Lua Và Bài Học Lần Thứ Ba

Hôm nay đã mất gần 3 giờ đồng hồ để hỗ trợ đồng nghiệp xử lý một lỗi crash xảy ra trong Lua VM, kết quả là làm gián đoạn kế hoạch ban đầu và không hoàn thành được các công việc dự kiến trước Tết. Thực tế đây không phải là vấn đề quá nghiêm trọng - bản thân cũng đã từng gặp phải trước đây. Tôi tự nhận thấy sai sót của mình nằm ở việc khi nhìn thấy call stack lỗi ban đầu đã không lập tức kiểm tra mã nguồn liên quan đến Lua. Nếu làm như vậy, với kinh nghiệm xử lý lỗi tương tự trước đây, có thể nhanh chóng xác định nguyên nhân như phản xạ tự nhiên, thay vì mất cả nửa ngày trời vật lộn vô ích.

Thiết Kế Đơn Giản Cho Hệ Thống Đặt Vé Tàu Hỏa Trực Tuyến

Trong thời gian cao điểm như dịp Tết Nguyên Đán, hệ thống đặt vé tàu hỏa thường đối mặt với thách thức lớn nhất là lượng lớn yêu cầu truy cập đồng thời. Giải pháp hiệu quả để xử lý vấn đề này chính là xây dựng một hệ thống xếp hàng thông minh. Ban đầu tôi chỉ dự định chia sẻ suy nghĩ này ngắn gọn trên mạng xã hội, nhưng không ngờ nhận được nhiều câu hỏi. Vậy nên tôi sẽ phân tích kỹ hơn ở đây.

Về Hợp Tác Chia Sẻ

Về nghệ thuật phân công công việc trong phát triển phần mềm

Gần đây khi làm việc, tôi có vài suy ngẫm thú vị về cách phân chia nhiệm vụ trong các dự án công nghệ. Có một chân lý tưởng chừng đơn giản nhưng vô cùng sâu sắc: thiết kế và hiện thực hóa gần như không thể tách rời. Khi bạn không tự tay xây dựng hệ thống mà mình hình dung, sẽ luôn tồn tại những điểm mù về hiệu năng, tính khả thi hay chi tiết kỹ thuật. Ngay cả khi mọi thứ có vẻ hoàn hảo trên bản vẽ, việc truyền đạt trọn vẹn ý tưởng thiết kế cho người khác cũng gần như bất khả thi - bởi mỗi lập trình viên đều có lăng kính tư duy riêng.

无标题

Hôm nay cuối cùng tôi đã leo đến đỉnh!

Hôm nay cuối cùng tôi đã leo đỉnh.

Cuối cùng hôm nay cũng chinh phục được lead climbing rồi! Nói ra thì cũng thấy ngại ngùng, chơi climbing đã 7,8 năm rồi mà vẫn chưa dám thử leo lead bao giờ. Dù các kiểu khác cũng đã trải nghiệm đủ: từ onsight, đến top rope, thậm chí còn leo multi-pitch cũng từng rồi, nhưng cái cảm giác tự mình mang dây leo lên cao vẫn còn mới mẻ lắm.

_ENV Trong Lua 5.2

Lua 5.2 mang đến một sự thay đổi mang tính đột phá trong cách quản lý môi trường (environment) – một yếu tố then chốt trong thiết kế ngôn ngữ. So với phiên bản 5.1 trở về trước, khái niệm “environment” truyền thống đã được thay thế hoàn toàn bằng một cơ chế hiện đại hơn, kết hợp chặt chẽ giữa khái niệm _ENV và upvalue.

Trong phiên bản mới, mọi biến toàn cục đều được hiểu ngầm là các field của bảng _ENV. Điều này có nghĩa, khi bạn viết print("hello"), trình biên dịch sẽ tự động chuyển nó thành _ENV.print("hello"). Mỗi chunk Lua đều nhận được một upvalue đặc biệt tên _ENV, cho phép toàn bộ hệ thống hoạt động theo cơ chế truyền tham chiếu thay vì quản lý môi trường riêng lẻ như trước.

Binding Lua Cho Thư Viện Pbc

Một trong những mục tiêu ban đầu khi tôi bắt đầu phát triển thư viện pbc cách đây vài ngày chính là tạo điều kiện thuận lợi cho việc tích hợp với các ngôn ngữ kịch bản (dynamic language). Chính vì vậy hôm nay tôi dành trọn một ngày để tự viết một thư viện binding Lua đơn giản, công việc này diễn ra khá tự nhiên và thuận lợi.

0%