SheCodes: Calling for Mentors

Điểm tin

SheCodes Virtual Hackathon đã chốt được danh sách speaker, và đang tìm kiếm ~ 20 mentors để hỗ trợ cho các bạn tham gia. Anh chị em hứng thú có thể xem trên facebook của SheCodes, thông tin ở đây.

Editor Pick

1) Stacking context và làm việc với z-index

Z-index: z-index là một thuộc tính để specify thứ tự paint cho các element có overlap với nhau. Chắc hẳn các bạn đã hoặc sẽ gặp phải trường hợp chỉ dùng z-index thôi không đạt được behaviour mà bạn mong muốn. Hoặc việc tồn tại quá nhiều z-index value trong code base và z-index cứ được tăng dần đều mỗi khi bạn muốn đảm bảo rằng một element nào đó phải nằm trên những element khác. Hiểu về stacking context sẽ giúp lựa chọn phương án để xử lí và quản lí các tình huống trên tốt hơn.

Paint-Order: Trước khi nói về stacking context thì ta phải nói về paint order. Một số rule cơ bản cần nhớ cho paint-order:

  • Trong cùng một stacking context, element có z-index value thấp hơn sẽ được paint trước, nếu z-index value bằng nhau thì sẽ paint theo thứ tự xuất hiện trong source.

  • Nếu mỗi element tạo ra một stacking context mới (tạm gọi là stacking container) thì toàn bộ children sẽ được paint ngay lập tức sau đó mà không consider đến sibling của container. Điều này có nghĩa là z-index value của các children element của stacking context khác nhau sẽ không có ảnh hưởng lẫn nhau trong việc quyết định paint order. Paint order lúc này sẽ phụ thuộc vào paint order của container.

Ứng dụng: Ngoài z-index, ta có thể manipulate paint order bằng cách tạo ra stacking context mới qua nhiều cách khác nhau. Trong stacking context đó, z-index value sẽ được isolate, không chịu ảnh hưởng từ yếu tố bên ngoài.

Khi mỗi sibling element/component tạo ra stacking context riêng, chúng ta chỉ cần quan tâm đến z-index và paint order của bản thân element/component khi compose chúng. Tuy nhiên vẫn cần cân nhắc tradeoff trong việc khi nào nên tạo stacking context mới; và strategy bên trong mỗi isolated component.

2) Một số nguyên lý khi optimize hệ thống

  • Configurable: Đẩy hết tuning configuration về phía runtime. Chỉ tuning parameter khi thực sự deployment vào hệ thống thực. Performance sẽ thay đổi dù chỉ đổi phần cứng (ví dụ AMD hay Intel, thêm RAM, CPU, etc.)

  • Metrics matter: Toàn bộ optimization phải được đo lại, và thường sẽ phải chuẩn bị 2-3 solutions khác nhau. Đừng over assume bất cứ điều gì về scaling của hệ thống trong production.

  • Test với minimum hardware để biết được bottleneck hệ thống, trước khi scale, vì có những vấn đề rất khó biết khi chạy prod: OOM, pool database đầy, crash services. Không nên đợi đến lúc có bug về scaling ở performance.

  • Local local local: Đẩy hết mọi thứ về local (single thread, single CPU, single machine). Scaling cũng như perf của single threaded  (2 ví dụ kinh điển là Redis trước 6.0 và LMax Disruptor) sẽ được cải thiện đáng kể.

  • Sử dụng lock-free data structure càng nhiều càng tốt.

  • RAM, Network, CPU: pick two. Bạn không thể optimize đồng thời cho cả 3 được.

  • Learn compression algorithm (varint, snappy) phần này rất quan trọng nếu làm việc với dữ liệu cỡ 1 vài TB đến 100TB. Với những thuật toán nén hiện đại, bạn vẫn có thể filter, compute, aggregation ngay chính bên trong dữ liệu nén mà không cần giải nén.

  • GC that matter.

#til

Crypto News

  • AXS reached all-time high (ATH) again. And Trung appeared on every newspaper. Congrats.

  • Bitcoin makes double-digit gains since last week. Road to $40k

  • Brazil’s police seized $33 million in a money-laundering probe. The police claim the crypto exchanges knew all about it.

  • Dfinity's ICP Rises 28% in Weekend Boost. Also Dfinity faces class-action lawsuit claiming ICP token is unregistered security.

  • 18% of World's super rich see crypto as inflation hedge :stonk:

  • Amazon says it's 'exploring' cryptocurrency payments. Link and link.