nói dối e blog

Một Sai Lầm Kỹ Thuật Trong Cuốn "Những Trải Nghiệm Lập Trình Của Tôi"

Hôm nay, tôi nhận được một lá thư từ độc giả chỉ ra một lỗi kỹ thuật nghiêm trọng trong cuốn sách của mình. Đọc xong, tôi cảm thấy vô cùng áy náy và hối hận. Cụ thể, ở trang 118 khi trình bày về cơ chế xử lý thông điệp Windows, phần giải thích về hàm UpdateWindow đã hoàn toàn sai lệch.

Trong sách tôi viết: “Tại đây, hàm UpdateWindow sử dụng PostMessage để đẩy thông điệp WM_PAINT vào hàng đợi thông điệp”. Đây là một nhận định hoàn toàn sai lầm. Thực tế, UpdateWindow không thông qua hàng đợi thông điệp, mà trực tiếp kích hoạt việc xử lý thông điệp WM_PAINT ngay lập tức. Đây là lỗi do tôi cẩu thả khi hiệu đính bản thảo. Trước đó, một người bạn đồng nghiệp đã từng chỉ ra sai sót này khi đọc bản nháp đầu tiên. Lúc ấy tôi chủ quan nghĩ rằng mình không thể mắc phải lỗi ngớ ngẩn như vậy, nhưng khi kiểm tra lại thì đúng là đã viết sai. Tôi đã sửa lại ngay sau đó. Có lẽ trong quá trình trao đổi bản thảo với biên tập viên, tôi đã vô tình gửi nhầm bản chưa được sửa chữa.

Người Hâm Mộ Opera

Từ thời điểm上网 đầu tiên vào năm 1997 đến nay, Opera đã đồng hành cùng tôi suốt hơn hai thập kỷ. Có lẽ tôi đã bắt đầu sử dụng từ phiên bản thứ 3 hoặc 4 của trình duyệt này.

Một chi tiết thú vị hôm nay khiến tôi nhận ra mình đúng là “fan cứng” của Opera: Khi nhìn kỹ chuột máy tính, phần sơn ở nút trái hầu như còn nguyên vẹn, trong khi nút phải lại bị mài mòn một mảng lớn đến mức lộ rõ lớp nhựa bên trong.

Những Chiếc Đồng Hồ Không Hoàn Toàn Chính Xác

Hiện tại, cơ chế đồng bộ trong game của chúng tôi phụ thuộc vào việc dự đoán dựa trên đồng hồ hệ thống của các thiết bị. Phương pháp này hoạt động dựa trên giả định rằng tốc độ chạy của đồng hồ trên máy client và server phải hoàn toàn giống nhau. Khi đã đồng bộ thời gian ban đầu, chúng ta có thể tính toán khoảng thời gian trễ của các sự kiện được truyền qua mạng mà không cần liên tục trao đổi thông tin thời gian. Cụ thể, người gửi chỉ cần gán nhãn thời gian (timestamp) cho từng sự kiện, sau đó người nhận sẽ tính toán độ trễ bằng cách so sánh với đồng hồ của mình.

Quản Lý Đối Tượng Và Tài Nguyên

Trong nhiều năm sử dụng kiến trúc phần mềm C++, nỗi đau đầu lớn nhất chính là quản lý các đối tượng và tài nguyên trong bộ nhớ. Vấn đề nan giải nhất trong quản lý đối tượng là xác định thời điểm xóa đối tượng. Có lẽ nhiều người đã sớm nhận ra điều này, dẫn đến sự phát triển mạnh mẽ của công nghệ garbage collection (GC).

Khi một đối tượng bị tham chiếu bởi nhiều nơi, phương pháp phổ biến là sử dụng kỹ thuật đếm tham chiếu (reference counting). Khi bộ đếm giảm về 0, đối tượng sẽ bị xóa - một giải pháp tưởng chừng hoàn hảo. Tuy nhiên, có bao nhiêu nơi thực sự nhớ để giải phóng tham chiếu? Với sự hỗ trợ của các tính năng “syntactic sugar” trong C++, chúng ta có thể tự động hóa quy trình này. Đối với quan hệ tham chiếu dài hạn, có thể xử lý thông qua constructor và destructor; còn với tham chiếu ngắn hạn (ví dụ: một đối tượng chỉ được sử dụng trong một hàm), có thể sử dụng các đối tượng wrapper để đảm bảo giải phóng tài nguyên ngay sau khi sử dụng xong.

Trở Về Dương Sóc

!ys01.jpg
Khi khởi hành vẫn còn chút lo lắng, bởi hai tuần trước trong lúc tập hít xà bằng ngón tay ở văn phòng, tôi đã làm chấn thương ngón giữa và ngón đeo nhẫn bên tay phải. Dù đã nghỉ ngơi hai tuần nhưng tình trạng vẫn chưa khỏi hẳn. Tôi đã quyết tâm rằng nếu gặp phải đoạn cần dùng lực ngón tay, sẽ cố gắng dùng ngón trỏ hỗ trợ.

无标题

Kỳ nghỉ dài đã kết thúc.

Kỳ nghỉ dài đã kết thúc.

Kỳ nghỉ dài đã kết thúc

Kỳ nghỉ dài đã qua rồi !pool.jpg Kỳ nghỉ 1/5, ngày mùng 2 tôi đi cưỡi ngựa một chút rồi trở về nhà ở cùng bố mẹ. Vài ngày ở nhà không ra khỏi cửa dù chỉ một lần, xem bố chăm sóc các loại cây cảnh, cùng mẹ xem ti vi và trò chuyện. Không làm việc nhà, chỉ giúp bố dọn dẹp cái hồ cá trên sân thượng. Mang theo máy GBA về chơi một ngày với tựa game mê cung khó quên, đến tầng 28 vì sơ suất thao tác đã vô tình niệm chú sử dụng cuộn giấy thiêng vốn phải đặt dưới chân, kết quả không thể qua cửa ải theo đúng cốt truyện. Đúng như lời đồng nghiệp dặn, chơi game này phải giữ đầu óc thật tỉnh táo. May mắn thoát khỏi bằng cuộn giấy phép nhưng tôi không còn dám thử lại lần nữa, sợ không chịu nổi cú sốc trắng tay trong chốc lát. Sau đó thử chơi PS2 nhưng thấy chẳng có gì hấp dẫn, liền mua vé máy bay trở lại thành phố.

0%