#121- Tăng tốc ứng dụng React
Coding skill là kỹ năng cần thiết cho một Software Engineer (SE) giỏi nhưng có một điều thú vị là engineer càng có nhiều kinh nghiệm thì thời gian dành cho code lại càng ít hơn.
Bên cạnh đó, những kỹ năng mềm như: làm việc nhóm, giao tiếp, trao đổi hiệu quả với mọi người cũng cực kì quan trọng. Nắm vững được những kỹ năng này sẽ giúp một SE hoàn thiện hơn.
Engineering Manager (EM) thường là những người đi từ vị trí SE, giúp team làm việc hiệu quả cũng như tạo cơ hội để mọi người có cơ hội học hỏi & phát triển. Đồng thời họ cũng là những mentor giàu kinh nghiệm.
Mời các bạn tham gia Grokking Webinar #05: Engineering Manager 101 để cùng nhau tìm hiểu, thảo luận về vai trò và những kỹ năng cần có của manager, những kỹ năng của manager mà engineer có thể học hỏi và áp dụng được cho công việc của mình.
Những bài viết hay
Phân tích mã độc APT ăn cắp tài khoản Facebook, PayPal — whitehat.vn
Các bạn đã bao giờ thắc mắc mã độc ăn cắp password facebook và các trang giao dịch tài chính như thế nào. Bài viết dưới đây sẽ phân tích chi tiết từ cơ chế ẩn náu, hành vi, nguồn gốc của một mẫu mã độc như vậy.
Tăng tốc ứng dụng React — medium.com
Ngày nay, cùng với sự thay đổi, người dùng càng lúc càng khắt khe hơn trong quá trình trải nghiệm, không những UI đẹp, nội dung hữu ích, thời gian chờ tải cũng cực kì quan trọng. Thống kê cho thấy 60% người dùng sẽ từ bỏ và 80% sẽ không quay trở lại nếu trang web đó tải chậm hơn 3s. Do đó trang web của bạn cần phải hiển thị ra nhanh nhất có thể.
Dominik Tarnowski đã chỉ ra kết quả khá ấn tượng khi giảm thời gian load trang web của mình 4 lần từ 8s xuống còn 2.1s ở lần load đầu tiên, kể từ lần load thứ 2 con số này giảm từ 5s xuống còn 0.3s. Để có được kết quả này Dominik Tarnowski đã thực hiện một loạt thay đổi
- Dùng CSS thuần thay vì CSS-in-JS (styled-components)
- Loại bỏ các phần dư thừa trong các thư viện CSS
- Sử dụng tính năng lazy loading của ReactJs
- Sử dụng giải pháp Progressive Web App
- Loại bỏ các animations không cần thiết
Kiến trúc áp dụng Serverless tốt trông ra sao? — medium.com
Serverless là một trong những kiến trúc mới hình thành những năm gần đây. Hầu hết các nền tảng điện toán đám mây đều hỗ trợ loại kiến trúc này như AWS với Lambda, Google cung cấp Google Cloud Functions hay Microsoft Azure có Azure Functions. Cái tên Serverless cũng gợi ý được mục đích của nó, bạn chỉ cần tập trung phát triển business logic không cần phải lo lắng về server hay scale hệ thống để đáp ứng nhu cầu tăng đột biến. Đặc biệt kiến trúc này giảm chi phí vận hành đáng kể cho công ty của bạn vì bạn chỉ phải "pay as you go".
Có thể bạn chưa biết
Các thuật toán nén dữ liệu được chia thành 2 loại:
- Nén có thất thoát: một phần thông tin ban đầu sẽ bị lược bỏ để giảm thiểu dung lượng file, tuy nhiên sẽ không thể khôi phục lại dữ liệu ban đầu từ file nén. Thường được áp dụng cho các file media.
- Nén nguyên vẹn: dữ liệu được nén lại chủ yếu dựa trên sự trùng lặp về thông tin (VD: AAABBCCCCDEEEEEE => 3A2B4C1D6E). Dữ liệu càng trùng lặp thì tỉ lệ nén càng cao có thể từ vài lần tới vài chục lần. Tỉ lệ này cũng phụ thuộc nhiều vào thuật toán khác nhau. Và để tối ưu được tỉ lệ này có rất nhiều kĩ thuật được phát triển, bắt nguồn từ những năm 70 các thuật giải liên tục được đưa ra để tối ưu & thích ứng với thay đổi của công nghệ máy tính như: LZ77, LZ78, PPM, bzip2... Cùng với đó là rất nhiều phiên bản cải tiến được phát triển từ các mẫu ban đầu.
Code & Tools
Tin tức khác
https://blog.rust-lang.org/2020/05/15/five-years-of-rust.html Vậy là đã 5 năm kể từ ngày Rust release phiên bản 1.0. Rust đã có rất nhiều thay đổi trong suốt thời gian qua, mời các bạn cùng điểm lại những thay đổi chính của Rust qua các lần cập nhật
https://developers.google.com/web/updates/2020/05/heavy-ad-interventions Google Chrome đang thử nghiệm việc giới hạn các tài nguyên máy tính mà một quảng cáo có thể sử dụng, cũng như gỡ bỏ quảng cáo đó nếu sử dụng vượt quá tài nguyên cho phép. Cơ chế này được gọi là Heavy Ad Intervention. Theo đó, một quảng cáo được coi là nặng nếu sử dụng nhiều hơn 4MB network bandwith
https://eclipse-foundation.blog/2020/05/12/moving-to-europe/ Eclipse Foundation đang chuyển đổi để trở thành một tổ chức có trụ sở đặt tại Châu Âu. Với các dự án mới về IoT, cloud, AI, v.v... việc chuyển sang châu Âu là một cách hiệu quả để mở rộng và phát triển hơn các dự án open source
Góc Database
Ivinco là một công ty cung cấp search engine ở quy mô lớn trong đó đặc biệt là hệ thống REST API dành cho full-text search real-time. Các khách hàng của Invinco là sẽ sử dụng hệ thống của Ivinco để lưu trữ thông tin các bài tin tức, blogs, nội dung social media, ... và sử dụng REST API để phân tích dữ liệu trên khoảng 200TB dữ liệu lưu trữ ở MySQL.
Tuy nhiên, giống như nhiều hệ thống khác, khi hệ thống của Ivinco phình to do lượng dữ liệu ngày càng nhiều hơn thì họ đối mặt với nhiều vấn đề như:
- Khó cơi nới thời gian lưu trữ dữ liệu trên hệ thống phân tích do MySQL hơi bị khó scale đặc biệt là theo chiều ngang.
- Các vấn đề về high-availability (HA) và failover.
- MySQL cần nhiều indexes. Càng mở rộng với nhiều loại query thì lại đòi hỏi nhiều indexes trên mỗi table
Phía Ivinco đã cân nhắc nhiều lựa chọn thay thế trong đó có:
- Thay đổi sang ELK stack (Elasticsearch-Logstash-Kibana), lựa chọn này đòi hỏi rất nhiều công sức thay đổi toàn bộ công nghệ hiện tại.
- Cân nhắc sử dụng NoSQL - hơi khó sử dụng và kém hiệu quả cho các tác vụ phân tích
- Sử dụng Clickhouse
Sau một quá trình cân nhắc và thử nghiệm, team Ivinco đã quyết định triển khai sử dụng ClickHouse. Mời các bạn đọc thêm chi tiết về những cân nhắc của họ cho quyết định này: https://www.altinity.com/blog/2018/6/30/realtime-mysql-clickhouse-replication-in-practice
Ngoài ra, mời các bạn dành thêm thời gian để nghe đội ngũ phát triển ClickHouse chia sẻ về quá trình họ tối ưu hoá hệ thống ClickHouse như thế nào.
Đính chính
Trong số trước, do một sai sót trong khâu biên tập, chúng tôi đã để sai link khi trích dẫn lại bài của Thái. Chúng tôi xin gửi lại đường link chính xác tới bài viết của anh Thái như sau:
https://vnhacker.blogspot.com/2020/04/lo-hong-nghiem-trong-trong-phan-mem.html
Ban biên tập thành thật xin lỗi quý độc giả và cảm ơn những độc giả đã kịp thời thông báo lại với chúng tôi.
Quote
In programming the hard part isn’t solving problems, but deciding what problems to solve
- Paul Graham