Các bài viết ngắn phần 22

Giới thiệu CS50 free video youtube

Bạn có từng nghe về khoá CS50, một khoá học nền tảng dành cho bất cứ ai muốn bắt đầu với lĩnh vực khoa học máy tính ?

 

Các chủ đề bao gồm các khái niệm trừu tượng (abstraction), thuật toán (algorithms), cấu trúc dữ liệu (data structures), đóng gói (encapsulation), quản lý mã nguồn (resource management), bảo mật (security), kỹ thuật phần mềm (software engineering), và lập trình web (web programming).

Các ngôn ngữ bao gồm C, Python, và SQL, thêm vào đó là HTML, CSS, và JavaScript.

 

Nội dung theo từng bài học như sau:

* Lecture 0 – Scratch

* Lecture 1 – C

* Lecture 2 – Arrays

* Lecture 3 – Algorithms

* Lecture 4 – Memory

* Lecture 5 – Data Structures

* Lecture 6 – Python

* Lecture 7 – SQL

* Lecture 8 – HTML, CSS, JavaScript

* Lecture 9 – Flask

* Lecture 10 – Emoji

* Cybersecurity

Khoá học 25 giờ này hoàn toàn miễn phí được giảng dạy bởi David J. Malan.

Cám ơn freecodecamp cho tài liệu tuyệt vời này!

Lưu ngay vào danh sách todo của bạn để có một bước nền tảng vào ngành khoa học máy tính nha !

Hãy dành cho nó 5 phút

Hãy dành cho nó 5 phút

(Give it five minutes)

Một bài viết từ mười năm trước nhưng khi đọc vẫn thấy hay nên chia sẻ đến mọi người, đúng kiểu “old but gold”.

Tác giả chia sẻ mình là người nóng tính, khi ai nói gì không vừa ý là bật lại ngay, hay luôn là người sẽ đưa ra các ý kiến phản pháo đầu tiên.

Tuy nhiên,

“bạn càng phản ứng nhanh bao nhiêu, bạn càng thiếu suy nghĩ bấy nhiêu”.

Câu chuyện:

Trong một cuộc hội thảo nơi người viết làm diễn giả, sau bài trình bày thì có một anh bạn Richard vô cùng tốt bụng đã đến nói chuyện và gửi lời khen đến phần trình bày của người viết. Thay vì tử tế đáp lại, người viết đã nhân tiện gửi đến Richard những phản hồi (tiêu cực) về phần trình bày của anh ta.

Những điều Richard đáp lại đã làm chấn động người viết:

“Man, give it five minutes”.

Richard bảo không đồng ý hay phản đối thì tốt thôi, luôn có những quan điểm và niềm tin mạnh mẽ, quyết đoán là điều tuyệt vời, nhưng hãy cho ý kiến của tôi một thời gian để bạn hiểu hơn trước khi bạn muốn tranh luận phản đối nó.

5 phút đại diện cho suy nghĩ (“think”), không phản ứng (“react”).

Và anh ấy đã đúng, tác giả nói anh ấy thừa nhận mình tham gia tranh luận để chứng tỏ mình đúng, chứ không phải để học hỏi.

Đó là khoảnh khắc đã thay đổi cuộc sống của tác giả!

Richard đã dành ra hơn 30 năm để suy nghĩ về những vấn đề này và trình bày chúng trong vài phút. Vẫn có thể là tôi đúng còn anh ấy sai nhưng tốt hơn là nên suy nghĩ cẩn thận về điều đó.

Có sự khác nhau giữa phản ứng lại và đặt câu hỏi. Phản ứng lại là khi bạn nghĩ là bạn đã biết còn đặt câu hỏi là khi bạn muốn biết.

Học cách suy nghĩ trước khi phản ứng lại là điều cần học trong cả cuộc đời. Nếu bạn không chắc về điều này có thể đọc thêm trích dẫn sau về Steve Jobs:

And just as Steve loved ideas, and loved making stuff, he treated the process of creativity with a rare and a wonderful reverence. You see, I think he better than anyone understood that while ideas ultimately can be so powerful, they begin as fragile, barely formed thoughts, so easily missed, so easily compromised, so easily just squished.

Có hai điều trên đời này không cần đến kỹ năng:

1. tiêu tiền của người khác

2. loại bỏ một ý tưởng của người khác

Loại bỏ một ý tưởng là vô cùng dễ dàng vì nó không liên quan đến bất cứ công việc gì. Bạn có thể bỏ qua, chế giễu nó, đó là điều dễ làm. Cái khó là làm sao bảo vệ, suy nghĩ và nuôi dưỡng nó.

Ý tưởng đúng hay sai đều có thể là bắt đầu của cuộc sống.

Vì thế, lần sau khi ai đó trình bày hay đề xuất một ý tưởng, hãy dành ra năm phút để suy nghĩ về nó, bạn nhé!

https://signalvnoise.com/posts/3124-give-it-five-minutese

CDN và cách hoạt động

CDN (Content Delivery Network) là hệ thống các máy chủ trên khắp thế giới.

Ban đầu hệ thống này giúp phân phối nội dung tĩnh của website (HTML) cho người dùng. Qua nhiều thập kỷ, CDN ngày càng phát triển và trở thành công cụ nên được sử dụng bất cứ khi nào có HTTP request.

Vậy CDN giúp gì cho bạn?

Thông qua hệ thống máy chủ PoP (Points of Presence) hay Edge Server trên toàn thế giới, CDN đưa nội dung đến gần với người dùng hơn, từ đó nâng cao trải nghiệm của người dùng.

Các CDN khác nhau (Amazon Cloudfront, Cloudflare, Akamai, Microsoft Azure CDN) sử dụng các loại công nghệ khác nhau để mang HTTP request từ user đến các PoP ở gần họ.
Có 2 loại công nghệ phổ biến là DNS-based routing và Anycast

– Với DNS-based routing, mỗi PoP có địa chỉ IP riêng. Khi người dùng gọi đến CDN, DNS trả về địa chỉ IP của PoP gần với người dùng nhất.
– Với Anycast, tất cả các PoP chia sẻ cùng địa chỉ IP

Mỗi edge server hoạt động như một reverse proxy với nội dung cache khổng lồ. Nội dung được cache thường chỉ các các file tĩnh như HTML cho nên nếu nội dung nào cần yêu cầu thêm thì PoP sẽ gửi yêu cầu đến máy chủ để tải về.

Điều này giúp giảm tải nội dung cần yêu cầu trực tiếp đến máy chủ.

CDN còn giúp nén nội dung lại (minify hay thay đổi format png sang webp, …) và giúp giảm thời gian khi request bằng giao thức TLS (https)

Ngoài ra CDN còn giúp tăng tính bảo mật(tránh được DDoS) và tăng tính khả dụng (một PoP chết thì request sẽ chuyển đến PoP khác)

Mời bạn xem video nội dung ở https://www.youtube.com/watch?v=RI9np1LWzqw

Vì sao NGINX là reverse proxy?

Vì sao NGINX gọi là reverse proxy? proxy là gì?

Proxy là một server trung gian đứng giữa máy tính của bạn và thế giới internet ngoài kia.

Có 2 loại proxy phổ biến là Forward Proxy và Reverse Proxy.

Forward Proxy đứng giữa một nhóm người và internet, như trung gian chặn các request và nói chuyện với các máy chủ khác đại diện cho các request đó.

Vì sao lại sử dụng forward proxy?
Một số lý do:
– bảo vệ thông tin của người dùng trong hệ thống, máy chủ sẽ không biết được địa chỉ IP của người dùng
– sử dụng để bỏ qua các hạn chế khi duyệt web (các công ty, trường học, …)
– sử dụng để chặn một số nguồn nhất định

Reverse Proxy (như NGINX) đứng giữa web server và internet, như trung gian chặn các request từ client và nói chuyện với web server đại diện client đó.

Vì sao website sử dụng reverse proxy?
Một số lý do:
– bảo vệ máy chủ web, client không biết được địa chỉ IP của máy chủ vì địa chỉ này được reverse proxy ẩn đi, hạn chế các tấn công đồng loạt như DDoS
– reverse proxy sử dụng cho load balancing, vì nếu một trang web có lưu lượng truy cập lớn sẽ cần có nhiều server thì reverse proxy đóng vai trò chuyển đổi các request đến nhiều máy chủ khác, giúp giảm quá tải server. 
Dịch vụ như Cloudflare có máy chủ reverse proxy trên toàn cầu, gần với người dùng nhất có thể.
– reverse proxy cache các nội dung tĩnh (static content) giúp các truy cập nhanh hơn.
– reverse proxy có thể xử lý các kết nối mã hoá SSL, giảm tải cho server

Reverse Proxy được sử dụng khắp mọi nơi (Google, Meta, Amazon, Apple, …) và có nhiều lớp reverse proxy.
– Lớp đầu tiên có thể là một dịch vụ Edge Server như Cloudflare
– Lớp thứ hai có thể là API gateway hay load balancer của hosting

Mời bạn xem video thú vị này ở đây
https://youtu.be/4NB0NDtOwIQ

Khóa học “chất lừ” từ Google

Một số khóa học “chất lừ” từ Google dành cho bạn bước vào thế giới web

Nếu có ai đó hỏi mình là nên học lập trình web từ đâu?
Mình sẽ gửi các khóa này đầu tiên để các bạn có thể bắt đầu.
Các khóa học này được đội ngũ Google thực hiện có lẽ là nguồn tài liệu tốt nhất, cả về nội dung, chất lượng, minh họa, ví dụ, … rất dễ hiểu và rất chuyên nghiệp.

Learn HTML (https://web.dev/learn/html/)
Mô tả:
HTML (HyperText Markup Language), là ngôn ngữ cấu trúc website, dựng nội dung mà bạn đang nhìn thấy trên trang web.

Khóa này sẽ dạy bạn từ cơ bản đến nâng cao về HTML, cách xây dựng cấu trúc cho một trang web.
Các nội dung chính gồm: Document Struture, Metadata, Semantic HTML, Headings and sections, Attributes, Text basics, Links, Lists, Navigation, Tables, Forms, Images, Audio and Video, …

Learn CSS (https://web.dev/learn/css/)
Mô tả:
CSS (Cascading Style Sheets) giúp bạn làm giao diện cho website

Khóa này chia nhỏ các kiến thức nền tảng CSS ra thành các phần dễ hiểu. Bạn sẽ tìm hiểu cách thức hoạt động của CSS và cách sử dụng chúng một cách hiệu quả.
Các nội dung chính gồm: Box Model, Selectors, The cascade, Specificity, Inheritance, Color, Sizing Units, Layout, Flexbox, Grid, Spacing, Pseudo-elements, Pseudo-classes, Borders, Shadows, Focus, Z-index, …

Learn Responsive Design (https://web.dev/learn/design/)
Mô tả:
Các website hiện đại được sử dụng trên nhiều loại thiết bị khác nhau như desktop, iPad, mobile. Làm sao mã nguồn trang web của bạn có thể hoạt động tốt cho tất cả? Các kiến thức về Responsive Design sẽ giúp bạn làm việc đó.

Các nội dung chính gồm: Media queries, Macro layouts, Micro layouts, Typography, Responsive Images, Icon, Theming, Accessibility, …

Ngoài ra bạn cũng nên học các khóa về web khác như:
Learn Forms (https://web.dev/learn/forms/)
Learn PWA (https://web.dev/learn/pwa/)
Learn Accessibility (https://web.dev/learn/accessibility/)

Bạn ghé https://web.dev/learn/ để xem nhé.
Lưu lại để học dần nha các bạn web developer ơi!

Nội dung này thuộc BeautyOnCode’s short posts là các bài viết ngắn tóm tắt nội dung và ý kiến cá nhân từ các nguồn như các slack channels (công ty, cộng đồng), các new letters, …

Các bài viết này cũng được đăng ở:

👉 BeautyOnCode trên Careerly (lời hứa với Careerly) Trên đây có gần 900 người theo dõi, và là trang tin công nghệ khá hay, bạn có thể tải app rồi theo dõi mình nhé.

👉 Blog BeautyOnCode, chuyên mục “Short Posts”

👉 Fanpage BeautyOnCode

👉Trang notion này tổng kết các bài viết

Nếu bạn thích đọc hàng ngày thì hãy follow các trang trên nhé. Chúc bạn đọc vui ^^

Nếu bạn nghĩ những nội dung này là hữu ích, bạn có thể khích lệ mình bằng cách:

Mời mình ☕️ cafe qua Ko-fi hay Momo

Theo dõi 👀 để nhận các bài viết mới trên: Careerly, fanpage, linkedin

Subscribe channel Youtube BeautyOnCode giúp mình với! 

🤘 Nhắn mình nhé 🤘

Hẹn gặp mọi người một ngày nào đó!

Leave a Reply

Your email address will not be published. Required fields are marked *

RELATED POST

Cặp đôi hủy diệt code xấu: DRY và Orthogonality

Bạn có nghĩ giai đoạn bảo trì (maintenance) là sau khi chương trình được phát hành (release)? Và trong giai…

Nguyên tắc SOLID trong lập trình hướng đối tượng (OOP) – thực hành cùng ngôn ngữ Python

SOLID là gì? SOLID là 5 nguyên tắc nền tảng trong lập trình hướng đối tượng OOP (Object Oriented Programming), giúp…

BeautyOnCode đạt top 1 trên Careerly

Time flies! Nhanh thật, vậy là mình đã đồng hành cùng các đọc giả trên Careerly được hơn 6 tháng,…

Các bài viết ngắn phần 23

UI/UX cơ bản dành cho dev Kiến thức cơ bản về Graphic Design dành cho web developer sẽ giúp bạn,…

%d bloggers like this: