nói dối e blog

Thứ Tự Tìm Kiếm Của LoadLibrary

Trong quá trình lập trình hôm nay, tôi gặp phải một vấn đề khá khó hiểu. Tôi đã phát triển một thư viện mở rộng C tên là “console” cho Lua, nhưng không hiểu sao nó luôn thất bại khi tải. Sau nhiều giờ vật lộn, cuối cùng tôi phát hiện ra nguyên nhân: Bộ thông dịch Lua thực tế đang tìm thấy một file DLL cùng tên trong thư mục Windows/System32. Hóa ra hệ thống đã tồn tại một file console.dll rồi!

无标题

Máy bay có thể cất cánh không?

Máy bay có thể cất cánh không?

Máy bay có cất cánh được không?

Tối nay đọc được một bài blog rất thú vị về vấn đề Máy bay - Băng chuyền: Liệu chiếc máy bay này có thể cất cánh được hay không?

Ban đầu tôi chỉ suy nghĩ đơn giản qua phân tích lực tác động, kết luận là máy bay hoàn toàn có thể bay lên được. Tuy nhiên vẫn còn một số điểm chưa thực sự rõ ràng: Băng chuyền rốt cuộc ảnh hưởng thế nào đến chuyển động của máy bay? Rõ ràng trường hợp có băng chuyền và mặt đường cố định là có sự khác biệt đáng kể. Sau khi suy nghĩ thêm vài giờ đồng hồ, tôi đã có kết luận như sau:

Gỡ Lỗi Thiết Lập Điểm Dừng Trong Mã Lua

Lua 5.1 đi kèm với một thư viện debug mạnh mẽ, xuất khẩu toàn bộ các API liên quan đến gỡ lỗi từ C API. Khi sử dụng Lua như một ngôn ngữ độc lập, những công cụ này hoàn toàn đủ để xây dựng một hệ thống gỡ lỗi tiện lợi.

Khi nói đến phương pháp gỡ lỗi phổ biến nhất - thiết lập điểm dừng (breakpoint), chúng ta thường nghĩ đến việc sử dụng hook trong thư viện debug của Lua. Cách tiếp cận cổ điển là tạo một bảng ghi nhớ các vị trí điểm dừng, kích hoạt hook theo từng dòng mã, và kiểm tra xem dòng hiện tại có phải là điểm dừng hay không. Nếu đúng, chương trình sẽ tạm dừng để chờ tương tác gỡ lỗi.

Một Số Kỹ Thuật Khi Viết Thư Viện Mở Rộng C Trong Lua

Hôm nay, một đồng nghiệp trong nhóm Ark đã hỏi tôi vài câu hỏi về Lua, chủ yếu liên quan đến việc phát triển thư viện mở rộng C. Tôi nhận thấy một số mẹo kỹ thuật khá thú vị nên muốn chia sẻ với mọi người thông qua bài viết này.

Thông thường, khi viết mã C cho thư viện mở rộng, chúng ta thường cần lưu trữ một số dữ liệu trong máy trạng thái Lua. Lua cung cấp cơ chế bảng đăng ký (registry) để thực hiện việc này. Tuy nhiên, như tài liệu chính thức đã cảnh báo, vì bảng đăng ký là không gian toàn cục được chia sẻ, việc chọn khóa (key) cần được thực hiện cẩn trọng. Các khóa là số nguyên đã được hệ thống reference sử dụng sẵn, do đó chúng ta thường ưu tiên dùng chuỗi ký tự làm khóa.

Sổ Tay Tham Khảo Lua 5.1 Bản Tiếng Việt

Vài tháng trước, tôi đã phân công một đồng nghiệp dành thời gian làm việc để dịch tài liệu tham khảo chính thức của Lua. Mục đích ban đầu là muốn người dịch có cơ hội hiểu sâu hơn về ngôn ngữ này thông qua quá trình chuyển ngữ. Đồng thời, khi mọi người tra cứu tài liệu cũng sẽ thuận tiện hơn.

Tuy nhiên, kết quả không như mong đợi. Bản dịch tiếng Việt trải qua vài tháng hiệu đính liên tục nhưng tính dễ đọc vẫn còn nhiều hạn chế. Mỗi lần tôi cần tra cứu thông tin trong tài liệu đều phát hiện ra việc đọc bản gốc tiếng Anh vẫn hiệu quả hơn. Điều khiến tôi thất vọng không phải là văn phong dịch còn gượng gạo, mà là vào những phần quan trọng thì lại dịch một cách mơ hồ, thậm chí sai lệch nội dung.

0%