Saturday, 5 September 2020

Bucket list của tôi

Trong tiếng anh có một thuật ngữ "bucket list", được định nghĩa như này:

-  a number of experiences or achievements that a person hopes to have or accomplish during their lifetime

- những thứ bạn muốn làm và đạt được trong cuộc đời mình (thứ hữu hạn)

Có hẳn một bộ phim tên là The Bucket List bạn đã xem chưa? Bạn nên xem nếu bạn thấy cuộc đời mình đang vô lý và nghĩa (bế tắc mạnh).

Tôi viết bài blog này để lưu lại các khoá học hay, mà tôi cho là hữu ích. Chắc là tôi sẽ bắt đầu học chúng khi tôi về nghỉ hưu xD


1. Online Crytography Course

2. Probability and Statistics

3. https://www.edx.org/micromasters/mitx-statistics-and-data-science



Lưu mật khẩu xuống database an toàn

Một ngày hệ thống của bạn bị hacked, dù bạn có mong chờ hay không.

Làm thế nào để, dù hacker có lấy được thông tin mật khẩu người dùng trong database ứng dụng của bạn, thì anh ta cũng không biết được (hoặc sẽ mất rất nhiều công sức và thời gian để biết được) mật khẩu của người dùng trong database ứng dụng của bạn là gì?

Hãy tham khảo bài viết chi tiết này của Taylor Hornby (defuse.ca), trong đó Taylor chia sẻ về cách lưu mật khẩu người dùng đúng cách xuống database:

https://crackstation.net/hashing-security.htm

tl;dr

- khi lưu mật khẩu người dùng vô db cần hash trước khi lưu

- dùng các thư viện và hàm hash chuẩn như Argon2, bcrypt, scrypt, or PBKDF2 

- thêm muối (salt) khi hash, tạo salt bằng hàm random mạnh

- dùng slow hash function để làm chậm khả năng bị brute force và dictionary 


và cuối cùng là bạn không nên tự thiết kế một hàm băm mật khẩu rồi đem xài nó cho production (trừ khi bạn là một chuyên gia trong việc này). Hãy dùng các hàm băm chuẩn đã được sử dụng và đánh gía bởi các chuyên gia.

Saturday, 27 June 2020

Nghề SRE

Vị trí SRE (Site Reliability Engineer) đảm bảo cho hệ thống được vận hành trơn tru, ổn định cao bằng cách sử dụng các kỹ năng, phương pháp, lập trình phần mềm vào việc vận hành hệ thống. Vị trí này ngoài việc hiểu về Hardware, Networking, OS, System bạn cũng cần có kỹ năng về lập trình phần mềm. 

Đối với team nhỏ thì bạn cần có càng nhiều kỹ năng trên càng tốt, còn trong team lớn thì thường mỗi người sẽ đảm nhiệm chuyển sâu về một mảng.

Thông thường các công việc vận hành hệ thống thường có nhiều việc xử lý manually cần được tự động hoá nhiều nhất có thể để tránh các lỗi do con người.

Các công ty lớn có đội ngũ SRE riêng thì họ thường tự viết các tools để xài, trong khi các công ty nhỏ có thể dùng các công cụ nguồn mở hoặc sử dụng các dịch vụ DevOps của bên thứ 3. 

Tôi thấy có các nguồn tài liệu hay cho các bạn muốn theo hướng làm SRE hay DevOps ở dưới

Chạy ứng dụng machine learning trên production


Đi cùng với sự phổ cập AI/ML trong đời sống từng người dân,  khái niệm DevOps cho các ứng dụng Machine Learning, thường gọi MLOps, đang dần hình thành ở giai bước đầu với nhiều công cụ open-source với nhiều đóng góp khá sôi động.

Theo tôi MLOps dựa trên các khái niệm, công cụ sử dụng trong DevOps tuy nhiên có một vài đặc thù  phát triển và vận hành các ứng dụng ML cần có các công cụ được tuỳ biến để phù hợp với việc xây dựng một life cycle cho các ứng dụng ML từ khâu design, development tới chạy production.

Các điểm khác biệt của một ứng dụng ML 

- Data Versioning
- Model Versioning
- GPU, hardware requirements
- Release, Production ML application


Các bài viết, công cụ trên internet liên quan tới MLOps về các công cụ này mà tôi sưu tầm được

- Continuous Delivery for Machine Learning (CD4ML) https://martinfowler.com/articles/cd4ml.html
- What I learned from looking at 200 machine learning tools https://huyenchip.com/2020/06/22/mlops.html




<tiếp tục cập nhật>

Bucket list của tôi

Trong tiếng anh có một thuật ngữ "bucket list", được định nghĩa như này: -  a number of experiences or achievements that a person ...