nói dối e blog

Bài Học Nhớ Đời Về Sự Chủ Quan

Tối hôm kia, tôi bắt đầu buổi tập với bài squat bằng tạ. Sau hai hiệp đầu cảm thấy cơ thể không ổn, lập tức chuyển sang máy leg press. Rồi lại thay đổi liên tục các thiết bị tập đùi khác, có lẽ đã tập quá sức. Trên đường về văn phòng, tôi chẳng thấy gì bất thường, còn kịp tắm nhanh ở công ty trước khi về nhà. Nào ngờ, ngay bậc thềm nhỏ trước tòa nhà, đầu gối bỗng dưng mềm nhũn, quỵ xuống đất một cách bất ngờ.

Cho Phép Tính Toán Trong Quá Trình Biên Dịch Của Lua

Lua là một ngôn ngữ lập trình có nhiều kỹ thuật tinh vi, khi sử dụng cần cân nhắc kỹ lưỡng. Trong mã nguồn của dự án Kepler, bạn sẽ thấy kỹ thuật biên dịch lặp lại được áp dụng rất sáng tạo, thậm chí có trường hợp biên dịch nhiều lần liên tiếp. Cụ thể, khi tải mã nguồn lần đầu, một đoạn chương trình Lua sẽ được thực thi để tạo ra mã nguồn thực sự cần thiết, sau đó biên dịch đoạn mã này.

Đừng Nhìn Mặt Mà Bắt Hình Dong

Tối qua rời phòng tập thể dục, tôi đang tìm một quán ăn ven đường thì gặp một cậu bé người địa phương đang hỏi đường. Cậu bé nói giọng Trường Sa đặc sệt. Dù đã ra trường được một thời gian nhưng tôi vẫn còn nhớ vài câu tiếng Trường Sa, bèn vui vẻ đùa giỡn với cậu bé vài câu.

Bên cạnh đứa trẻ có một chàng trai trẻ tuổi, trông cũng ngang tầm bằng tuổi tôi. Tôi vừa cười vừa nói: “May mà tôi từng học ở Trường Sa, nếu không chắc khó mà hiểu nổi cậu ấy nói gì!” Qua trò chuyện, không ngờ anh ta lại chính là cựu sinh viên cùng trường với tôi. Thực ra tôi hơi ngại khi nhắc đến chuyện đồng môn, bởi những năm tháng học đại học tôi gần như bỏ bê việc học hành, đặc biệt sợ nhất là người khác nhắc đến các giáo sư hay giảng viên trong trường, vì tôi chẳng nhớ nổi một cái tên nào cả (vì ngày đó hầu như không đi học, làm sao nhớ tên được).

Lua Không Phải Là C++

Lua không phải là C++

Lua không phải là C++ Chủ đề này bắt đầu từ một dự án công việc gần đây của cá nhân tôi theo đề nghị của đồng nghiệp Dingdang. Tôi đang hỗ trợ dự án game Đại Đường Vô Song trong lĩnh vực lập trình. Lý do chính là bởi vì engine game DT2 đang được chúng tôi phát triển có tầm quan trọng chiến lược - hiện đang được sử dụng trong ít nhất 4 dự án công ty (3 dự án còn lại đang trong giai đoạn nghiên cứu phát triển chưa công bố).

Một Ngày Bị Darcs "Hành Hạ"

Dạo này mình muốn thử nghiệm Darcs thay cho SVN truyền thống trong một dự án con. Chỉ là thử nghiệm thôi nhé! Trước giờ toàn dùng Darcs ở môi trường local nên ít gặp trục trặc. Hôm nay quyết định setup kho lưu trữ tập trung trên một máy FreeBSD. Ai ngờ gặp phải loạt vấn đề rắc rối không tưởng!

Ý tưởng ban đầu rất đơn giản: Tạo một tài khoản chuyên dụng trên máy chủ kho lưu trữ, thêm public key của các thành viên vào, mọi người có thể truy cập qua SSH để thực hiện các thao tác get/put/pull/push một cách thuận tiện. Trên hệ FreeBSD hay Linux thì mọi chuyện đều ổn, nhưng đến Windows thì lại vấp phải sự cố kỳ lạ.

Triển Khai Hàm _Alloca

Trong ngôn ngữ C tồn tại một hàm đặc biệt có tên là alloca, cho phép cấp phát vùng nhớ trên ngăn xếp (stack). Khi hàm chứa lời gọi này kết thúc, vùng nhớ sẽ tự động được giải phóng nhờ cơ chế điều chỉnh con trỏ ngăn xếp của hệ thống.

Nguyên mẫu của hàm alloca như sau:

1
void *alloca(size_t size);

Ngày nay, do chứa nhiều lỗ hổng an toàn tiềm ẩn, việc sử dụng hàm này đã không còn được khuyến khích trong hầu hết tài liệu lập trình hiện đại. Tuy nhiên, trong thư viện CRT (C Runtime), vẫn tồn tại một phiên bản nội bộ có tên _alloca được các trình biên dịch sử dụng để triển khai các tính năng đặc biệt. Chẳng hạn, trong tiêu chuẩn C99 cho phép khai báo mảng độ dài thay đổi (VLA - Variable Length Array) trực tiếp trên ngăn xếp, GCC thực chất đã sử dụng _alloca để thực hiện việc cấp phát này.

0%