Grokking Newsletter

Share this post

#244 - Những bài viết được đọc nhiều nhất 2022

newsletter.grokking.org

#244 - Những bài viết được đọc nhiều nhất 2022

Số newsletter cuối cùng của năm 2022

Grokking Vietnam
Dec 29, 2022
15
Share this post

#244 - Những bài viết được đọc nhiều nhất 2022

newsletter.grokking.org

Revue, một nền tảng mà Grokking Newsletter sử dụng để soạn newsletter trong 5 năm qua sẽ chính thức đóng cửa trong tháng 1 sắp tới. Revue vốn được mua lại bởi Twitter vào đầu năm 2021. Việc đóng cửa Revue khiến team Grokking sẽ chính thức chuyển qua nền tảng mới, Substack. Với Substack các bạn có thể comment thảo luận nội dung trực tiếp ngay trên từng số newsletter. Một số tính năng khác như nhúng poll, donate cũng có thể triển khai dễ dàng hơn. Các bạn thử vote trên poll này xem trông như nào nhé.

Loading...

📰Top 5 bài viết được đọc nhiều nhất năm 2022

Chỉ còn vài ngày nữa chúng ta sẽ bước qua năm mới 2023. Cùng điểm qua những bài viết được đọc nhiều nhất trên Grokking Newsletter trong năm 2022 nhé.

  1. Build an Event-Driven Architecture with Apache Kafka, Apache Spark, and Apache Cassandra

  2. Authorization at Netflix Scale

  3. Migrations Done Well: Typical Migration Approaches

  4. Concurrency isn’t Always Faster in Go

  5. How Google, Twitter, and Spotify built a culture of documentation


📻News

(by lpv)

Stack Overflow: 74% of developers are open to new jobs

Nghiên cứu từ Stack Overflow cho thấy rằng gần 3/4 (74%) lập trình viên sẵn sàng nhận công việc mới.

Cái gọi là “Sự từ chức vĩ đại” là một xu hướng kinh tế đang diễn ra sau đại dịch, trong đó nhân viên tự nguyện từ chức vì lương bị đình trệ, đối xử tệ, chính sách làm việc từ xa không linh hoạt, thiếu phúc lợi và không hài lòng với công việc.

Linux 6.1 Officially Adds Support for Rust in the Kernel

Sau hơn hai năm phát triển, hỗ trợ trong việc sử dụng Rust để phát triển kernel, nay Rust đã có mặt trong bản phát hành stable mới nhất, Linux 6.1.


📰Những bài viết hay

Reducing Logging Cost by Two Orders of Magnitude using CLP

(by steven)

Tại Uber, tại mọi cấp bậc mọi quyết định dều dựa trên dữ liệu. Để làm được điều này, Uber đã xây dựng một nền tảng dữ liệu big data với quy mô lớn có thể chạy hơn 250.000 các Spark job phục vụ cho công việc phân tích mỗi ngày, với mỗi job có thể bao gồm hàng trăm nghìn executor, chịu trách nhiệm xử lý hơn hàng trăm petabyte dữ liệu phân tích. Ngoài ra, nền tảng big data cũng sinh ra một lượng lớn dữ liệu log, và cùng với sự phát triển các hoạt động nghiệp vụ tại Uber đã dẫn đến sự gia tăng nhanh chóng các dữ liệu log.

Các dữ liệu logs phát sinh này đều quan trọng với cả các platform engineer và data scientist sử dụng Spark. Thông qua việc phân tích các logs, có thể giúp họ cải thiện chất lượng của ứng dụng, hoặc khắc phục sự cố hay tăng tốc xử lý, phân tích xu hướng, theo dõi các bất thường... Và vì vậy dữ liệu logs thường được yêu cầu lưu trữ tối thiểu từ 03 ngày cho đến ít nhất là một tháng.

Nếu tăng thời gian lưu trữ lên một tháng, chỉ tính riêng chi phí lưu trữ trên HDFS với quy mô dữ liệu lưu trữ đã nêu trên, chi phí đã lên đến hàng triệu đô mỗi năm. Các kỹ sư Uber đã có một vài hướng xử lý vấn đề lưu trữ, như các log không liên quan đến Spark thì được ingest và lưu trữ vào ClickHouse. Tuy nhiên ClickHouse chỉ phù hợp với dữ liệu log có cấu trúc (trong khi Spark log thì hầu như là không có cấu trúc). Và Spark log cũng gặp vấn đề về chi phí lưu trữ nếu như ingest vào ClickHouse, vì một Spark log cần lưu trữ trong một tháng sẽ chiếm dung lượng gấp đôi so với tất cả các service khác cộng lại.

Để giải quyết vấn đề lưu trữ về lâu dài này, các kỹ sư tại Uber đã quyết định nghiên cứu một chức năng nén trong thư viện logging (giúp giảm việc ghi dữ liệu vào SSD) và họ đã tìm thấy CLP (Compressed Log Processor). CLP là một công cụ có khả năng nén cao gấp đôi các công cụ khác, trong khi vẫn cho phép tìm kiếm log mà không cần phải giải nén hoàn toàn dữ liệu.

From Zero to 50 Million Uploads per Day: Scaling Media at Canva

(by quangle)

Được xây dựng từ năm 2013, đến nay Canva đã có hơn 100 triệu người dùng hoạt động hàng tháng và có thể phục vụ cho 50 triệu lượt upload mới mỗi ngày. Để hỗ trợ sự phát triển nhanh chóng này, đội ngũ kỹ sư đã liên tục phát triển, tối ưu media-service (một service quản lý các thao tác và trạng thái của tài nguyên media như: ID, thông tin hình ảnh, content, .v.v..). Tương tự các service trước đó, hệ thống của Canva hầu hết sử dụng MySQL lưu trữ trên AWS RDS với khả năng mở rộng theo chiều ngang, nhưng rồi những hạn chế bắt đầu phát sinh khi dữ liệu ngày càng nhiều:

  • Giới hạn về replication rate của MySQL 5.6

  • Chạm ngưỡng giới hạn của disk EBS của RDS MySQL (16TB)

  • I/O latency tăng cao ảnh hưởng đến requests của users

  • Traffic từ production buộc phải dùng đến hot buffer pool, làm cho các instances bị restart

Vậy nhóm phát triển của Canva làm cách nào để giải quyết được những thử thách trên, mời bạn đọc cùng tham khảo bài viết

10 bài viết hay trong 2022 của GitLab

(by lpv)

Những bài viết được đọc nhiều nhất từ blog của GitLab trong năm 2022:

  • How to troubleshoot a GitLab pipeline failure

  • Take advantage of Git Rebase

  • How we reduced 502 errors by caring about PID 1 in containers


👨‍💻Góc lập trình

(by ndaadn and phucnh)

Đề ra tuần này: Odd Even Linked List

Cho một danh sách liên kết đơn (singly linked list), hãy nhóm những nút có chỉ số lẻ theo sau là những nút có chỉ số chẵn.
Lưu ý: nút đầu tiên có chỉ số là 1

Ví dụ:
Input: 1 → 2 → 3 → 4 → 5
Output: 1 → 3 → 5 → 2 → 4

Lời giải tuần trước: Lowest Common Ancestor of a Binary Tree II

Theo định nghĩa của đề bài, một nút là nút tổ tiên chung gần nhất khi và chỉ khi thoả mãn 1 trong 2 điều kiện sau:
- Nếu nút hiện tại không phải là p hoặc q, và p, q nằm ở 2 cây con của nút hiện tại
- Nếu nút hiện tại là p (hoặc q), và một trong 2 cây con của nút hiện tại chứa nút còn lại

Quan sát trên cho ta giải thuật dựa trên phương pháp duyệt sau (post-order traversal):


class Solution {

    TreeNode lca;
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        lca = null;
        doesRootCoverAtLeastANode(root, p, q);
        return lca;
    }

    private boolean doesRootCoverAtLeastANode(TreeNode root, TreeNode p, TreeNode q) {
        if (root == null) {
            return false;
        }

        int oneNodeIsInLeft = doesRootCoverAtLeastANode(root.left, p, q) ? 1 : 0;
        int oneNodeIsInRight = doesRootCoverAtLeastANode(root.right, p, q) ? 1 : 0;
        int oneNodeIsRoot = root == p || root == q ? 1 : 0;

        // if two of the three conditions are true, the current node is the lowest common ancestor
        if (oneNodeIsInLeft + oneNodeIsInRight + oneNodeIsRoot >= 2) {
            lca = root;
            return true;
        }

        return oneNodeIsInLeft + oneNodeIsInRight + oneNodeIsRoot > 0;
    }
}

Giải thuật có độ phức tạp về thời gian là O(n) với n là số nút của cây, độ phức tạp về không gian là O(h) với h là chiều cao của cây.


History

(by lpv)

Xin chúc mừng sinh nhật Linus Torvalds (28/12/1969). Một người đã quá nổi tiếng trong lĩnh vực của chúng ta, nên xin mời các bạn cùng nghe những chia sẻ của ông từ một cuộc phỏng vấn tại Ted: "I am not a visionary, I'm an engineer, I'm perfectly happy with all the people who are walking around and just staring at the clouds ... but I'm looking at the ground, and I want to fix the pothole that's right in front of me before I fall in”.

Video buổi phỏng vấn: The mind behind linux

May be an image of 1 person, laptop and indoor

🛠️Code & Tools

  • Linux for pirates: A book writing about Linux.

  • Sonic: A blazingly fast JSON serializing & deserializing library.


Quotes

Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning.

Albert Einstein

Share this post

#244 - Những bài viết được đọc nhiều nhất 2022

newsletter.grokking.org
Comments
TopNewCommunity

No posts

Ready for more?

© 2023 Grokking Vietnam
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing