Sau khi “chuyển nhà” qua Substack, Grokking Newsletter đã đón nhận được khá nhiều phản hồi tích cực. Một điểm trừ là khá nhiều email rơi vào phần “Promotions” trên Gmail. Các bạn có thể kéo email này qua phần “Primary” để tránh bỏ lỡ những số newsletter khác nhé.
Trong năm 2022, Grokking Newsletter đã đạt hơn 10000 lượt subscribers, lượt đọc trung bình mỗi số là 40%. Hy vọng trong năm mới con số này sẽ tiếp tục được duy trì.
Hôm nay đã là ngày 27 Tết, Grokking kính chúc các bạn độc giả có những ngày Tết bên gia đình hạnh phúc, ấm áp, an toàn. Mong rằng trong năm mới 2023 Grokking vẫn sẽ tiếp tục đồng hành cùng các bạn trên con đường sự nghiệp.
Xin trân trọng cảm ơn sự ủng hộ của các bạn và chúc mừng năm mới.
📻News
(by lpv)
Why are there so many tech layoffs, and why should we be worried? Stanford scholar explains
Gần đây chúng ta đã nghe khá nhiều tin tức về layoff. Lần này hãy cũng nghe những giải thích về nguyên nhân tại sao các công ty đang tiến hành layoff và một số dự đoán về tình hình sắp tới.
Microsoft launches Azure OpenAI service with ChatGPT coming soon
ChatGPT là một công cụ đang nổi lên gần đây. Tại Việt Nam để sử dụng thì chúng ta phải tiến hành nhiều cách như fake VPN. Tuy nhiên gần đây khi Microsoft tích hợp ChatGPT vào Azure OpenAI service, các bạn có thể trải nghiệm công cụ này một cách đơn giản hơn.
Facebook tracking is illegal in Europe
Các cơ quan quản lý quyền riêng tư của EU cho biết Facebook và Instagram không được ép buộc người dùng đồng ý theo dõi bằng cách đưa yêu cầu này vào các điều khoản của họ. Mô hình kinh doanh này của Meta là bất hợp pháp theo GDPR.
The Triumph of Safari
Mặc dù không được nhiều người chú ý nhưng gần đây Safari đã đánh bại Chrome và Firefox trên một số chỉ số quan trọng. Về mặt hiệu suất, Safari đang đứng đầu với điểm số 96% trong khi trước đó chỉ đạt 59% trong một bài test đầu năm ngoái.
📰Những bài viết hay
(by lpv)
Reflection on System Efficiency at Meta: A Personal Perspective
Đây là bài viết của một cựu nhân viên tại Meta nói lên một số suy nghĩ về khoảng thời gian làm việc tại đây. Mặc dù Meta tuyển dụng những người giỏi nhất và trả mức lương hậu hĩnh, nhưng dường như hệ thống của họ không đạt mức độ hiệu quả tốt nhất. Một tiết lộ từ một cựu nhân viên khác là họ chỉ sử dụng 5% GPU! Rõ ràng đây là một điều khó chấp nhận ở một công ty “toàn người giỏi” như Meta. Tác giả đã điểm ra một số nguyên nhân dẫn tới tình trạng này xảy ra:
Thiếu những metrics đo lường quan trọng.
Tầm nhìn ngắn hạn từ các engineer.
Thiếu thành thật và suy nghĩ dài hạn.
Mời các bạn cùng đọc bài viết để tìm hiểu về những nguyên nhân này.
Cache invalidation really is one of the hardest problems in computer science
Bài viết là một phiên bản giải thích đơn giản từ bài viết gốc trên Netflix blog.
Hình trên thể hiện mức độ sử dụng CPU của các node khác nhau trong một cluster. Các node này được cấu hình giống nhau, chạy cùng một ứng dụng, cùng traffic. Trong hình ta thấy có 2 band, một band sử dụng CPU chỉ dao động từ 15-20%, một band còn lại từ 25-90%. Trong bài viết này sẽ giải thích nguyên nhân tại sao lại xảy ra vấn đề này, CPU caching liên quan tới vấn đề này như thế nào?
Tuy nhiên là 27 Tết rồi và thực sự là mình cũng hơi lười viết vào thời điểm này nên xin giới thiệu vậy thôi. Các bạn có thể đọc trực tiếp tại đây.
👨💻Góc lập trình
(by ndaadn and phucnh)
Đề ra tuần này: Find Unique Binary String
Cho một mảng nums chứa n chuỗi nhị phân, mỗi chuỗi có độ dài n, trả về một chuỗi nhị phân có độ dài n không xuất hiện trong nums. Nếu có nhiều câu trả lời, bạn có thể trả lại bất kỳ câu trả lời nào.
Ví dụ:
Input: nums = ["01","10"]
Output: "11"
Giải thích: ngoài “11”, chuỗi “00” cũng là câu trả lời đúng.
Lời giải tuần trước: Odd Even Linked List
Ta chỉ cần duyệt qua danh sách liên kết ban đầu, nối các nút có chỉ số lẻ, chẵn lần lượt thành 2 danh sách liên kết. Sau đó nối nút đầu danh sách liên kết của các nút chẵn vào đuôi của danh sách liên kết lẻ, ta được kết quả của bài toán.
Cài đặt tham khảo bằng ngôn ngữ Java như sau:
public class Solution {
public ListNode oddEvenList(ListNode head) {
if (head == null) {
return null;
};
ListNode odd = head, even = head.next, oddHead = odd, evenHead = even;
while (even != null && even.next != null) {
odd.next = even.next;
odd = odd.next;
even.next = odd.next;
even = even.next;
}
odd.next = evenHead;
return oddHead;
}
}
Độ phức tạp thuật toán của giải thuật trên là O(N), với N là tổng số nút trong danh sách liên kết ban đầu.
📜History
Xin gửi lời chúc mừng sinh nhật tới Donald Knuth (10/1/1938), tác giả của bộ sách "The Art of Computer Programming".
🛠️Code & Tool
Public APIs: A collective list of free APIs for use in software and web development
Advanced GIT: Fixing Mistakes
Quotes
“Education never ends, Watson. It is a series of lessons, with the greatest for the last.”
― Sir Arthur Conan Doyle, His Last Bow
Comment :-?