NỘI DUNG BÀI VIẾT
Bài viết này là một phần của series “Hướng dẫn lập trình web cho người mới bắt đầu”. Bạn có thể xem Phần 1: Frontend | Hướng dẫn lập trình web cho người mới bắt đầu, Phần 2: Backend | Hướng dẫn lập trình web cho người mới bắt đầu
Tiếp tục cuộc nói chuyện của chúng ta về việc học lập trình web. Bây giờ, hãy bỏ qua các ngôn ngữ lập trình web đi và thay vào đó tập trung vào môi trường nơi các ứng dụng web được chạy và phát triển. Phần này bao gồm một số chủ đề lớn:
- Một số công cụ phát triển cơ bản mà mọi lập trình viên nên biết, không chỉ đối với lập trình web
- Vì ứng dụng trên Web, chúng ta sẽ xem xét một số chủ đề cơ bản liên quan đến mạng
- Môi trường, nơi các ứng dụng của chúng ta được chạy
Màu sắc của biểu đồ rất đơn giản: các đường màu vàng (📒) hiển thị những điều cơ bản bạn cần học, màu cam (📙) đại diện cho các chủ đề nâng cao hơn mà bạn có thể để lại học sau và màu xám (📓) là các chủ đề đôi khi sẽ hữu ích với bạn hơn trong một số trường hợp.
📒 Công cụ phát triển
Để đảm bảo rằng bạn cảm thấy thoải mái với các công cụ phát triển và có thể nhanh chóng tiến bộ trong việc viết code và fix bug ứng dụng của mình, các công cụ phát triển được ra đời. Mỗi nền tảng mà bạn sử dụng sẽ cung cấp rất nhiều công cụ dành riêng cho nền tảng đó.
Có một số công cụ được hầu hết các lập trình viên sử dụng. Cùng tìm hiểu chúng nào:
Là một trình soạn thảo mã, đa nền tảng, miễn phí do Microsoft tạo ra. Nó có tích hợp cho JavaScript, TypeScript, CSS và HTML, một số ngôn ngữ khác có sẵn dưới dạng phần mở rộng. VS Code cung cấp tính năng đánh dấu cú pháp, tự động hoàn thành mã, tạo mã tự động, khả năng tái cấu trúc và tích hợp đồng bộ trên các thiết bị.
Nó cũng có một trình gỡ lỗi tích hợp để giúp bạn khắc phục các lỗi trong ứng dụng của mình. Mặc dù bộ tính năng có thể không nhiều như trong các IDE mang tính thương mại, nhưng chắc chắn là đủ để bạn bắt đầu.
Đây là một tập hợp các IDE do JetBrains phát triển cho các nền tảng khác nhau. Có WebStorm để phát triển giao diện người dùng, Intellij IDEA cho Java và PhpStorm cho PHP, v.v. Mỗi thứ đều tập trung vào việc hỗ trợ các ngôn ngữ, framework và công cụ tương ứng.
Nó cũng tích hợp với hệ thống quản lý phiên bản, lịch sử thay đổi cục bộ,… và bạn sẽ có được một môi trường làm việc hiệu quả cao. Các sản phẩm này bắt buộc phải trả phí nhưng vẫn có một phiên bản IntelliJ Community Edition miễn phí cho người dùng.
Là một IDE thương mại do Microsoft phát triển. Nó có ba dịch vụ: community (miễn phí), professional và enterprise. Nó hỗ trợ một loạt các ngôn ngữ lập trình và các công cụ khác nhau để lập trình và gỡ lỗi các ứng dụng của bạn.
Trên hết, nó cung cấp tích hợp với các sản phẩm và dịch vụ khác của Microsoft như Azure hoặc Azure DevOps. C# và TypeScript là những “công dân hạng nhất” của VS.
IDE là gì? Có những tính năng gì? Một số IDE thông dụng hiện nay
📒 Hệ thống quản lý phiên bản
Hệ thống quản lý phiên bản (Version Control Systems – VCS) đóng một vai trò quan trọng trong mọi quá trình phát triển. VCS cho phép bạn lưu trữ lịch sử đầy đủ về tất cả các thay đổi mã của bạn trong một kho lưu trữ từ xa. Bạn có thể duyệt qua kho lưu trữ để xem lại lịch sử thay đổi, so sánh các phiên bản khác nhau hoặc khôi phục về phiên bản cũ hơn.
Nhiều lập trình viên có thể đẩy các thay đổi vào cùng một kho lưu trữ để cộng tác trong một dự án, đồng bộ hóa đoạn mã,… Ngày nay, VCS được sử dụng như một chân lý cho việc quản lý các đoạn mã và là xương sống của các quy trình phát triển hiện đại.
VCS có thể được sử dụng thông qua giao diện dòng lệnh, nhưng cũng có sẵn các ứng dụng GUI khác nhau cũng như tích hợp với các trình chỉnh sửa mã khác nhau.
📒 Git
Cho đến nay, Git là VCS phổ biến nhất. Đây là một hệ thống phân tán, có nghĩa là khi người dùng sao chép kho lưu trữ, họ cũng có được toàn bộ lịch sử của dự án và có thể làm việc với nó ngoại tuyến. Người dùng có thể đẩy các thay đổi của họ lên kho lưu trữ từ xa và tải xuống những thay đổi do người khác thực hiện.
Có nhiều dịch vụ minh chứng kho lưu trữ Git được lưu trữ. Phổ biến nhất trong số đó là GitHub và BitBucket.
GitHub là gì? Những lợi ích GitHub mang lại cho lập trình viên
Là một hệ thống quản lý phiên bản khác. Không giống như Git, SVN chỉ cho phép bạn kiểm tra một nhánh duy nhất. Để chuyển sang một nhánh khác, bạn sẽ cần tải nó xuống từ kho lưu trữ. Mặc dù hiện tại nó vẫn được sử dụng nhưng Git đã phổ biến hơn nhiều bởi có nhiều công cụ và dịch vụ hơn so với SVN.
📒 Terminal hoặc Command Prompt
Là một lập trình viên, điều quan trọng là bạn cảm thấy thoải mái khi sử dụng terminal trên OS X hoặc Linux hoặc dấu nhắc lệnh trong Windows. Ngay cả khi bạn có thể thực hiện hầu hết công việc của mình từ GUI, bạn vẫn sẽ gặp phải rất nhiều công cụ hữu ích chỉ cung cấp giao diện dòng lệnh.
Bạn cũng có thể thấy mình đang làm việc với một số máy tính từ xa không có GUI. Đảm bảo rằng bạn có thể làm những việc cơ bản, chẳng hạn như duyệt qua hệ thống tệp, tạo hoặc xóa tệp, xem nội dung của chúng và chạy các công cụ CLI.
Vì vậy, hãy học cho mình thói quen sử dụng các câu lệnh để khiến việc lập trình trở nên dễ dàng hơn.
📙 Shell scripting
Một khi bạn cảm thấy thoải mái với việc sử dụng command shell, bạn có thể tiết kiệm cho mình rất nhiều thời gian bằng cách tự động hóa các tác vụ hàng ngày như deploy chẳng hạn. Tùy thuộc vào hệ điều hành của bạn, bạn nên học cách viết cho Linux và OSX bằng Bash hoặc cho Windows bằng cách sử dụng file batch hoặc PowerShell.
Thường thì các phần mềm khác nhau đi kèm với một tập hợp các tập lệnh khác nhau. Vì vậy, việc có thể đọc và hiểu các lệnh cơ bản cũng sẽ rất hữu ích.
📙 Linux
Linux là một hệ điều hành mã nguồn mở, miễn phí, được xây dựng dựa trên nhân Linux. Có rát nhiều các phiên bản Linux khác nhau, chẳng hạn như Ubuntu, Debian, CentOS, Mint, openSUSE, v.v. Bạn có thể tìm thấy các bản Linux chạy trên mọi loại thiết bị, bắt đầu từ thiết bị điện tử và thiết bị nhúng cho đến điện thoại thông minh và máy chủ.
Linux khác với Windows ở một số điểm, vì vậy nếu bạn xuất thân từ nền tảng Windows, bạn sẽ cần tìm hiểu một số nguyên tắc cơ bản, chẳng hạn như cách hệ thống tệp được cấu trúc, cách kiểm soát các hoạt động, cách cài đặt phần mềm, v.v.
Đối với một lập trình web, điều quan trọng là phải làm quen với Linux vì đây là hệ điều hành cực kỳ phổ biến để chạy máy chủ web. Có rất nhiều sách và tài liệu học tập dành cho Linux, tuy nhiên, để thực sự hiểu về nó, bạn nên bắt đầu sử dụng nó. Bạn có thể cài đặt Linux làm hệ điều hành chính hoặc phụ và sử dụng nó cho các công việc hàng ngày. Khi bạn bắt đầu, bạn sẽ tìm ra các chi tiết trên đường đi.
Hệ điều hành Linux là gì? Ưu, nhược điểm của hệ điều hành Linux
📒 Networking
Vì chúng ta đang nói về lập trình web nên mạng sẽ đóng một vai trò quan trọng. Người dùng ứng dụng của bạn sẽ truy cập ứng dụng đó bằng Internet qua cáp hoặc mạng không dây. Bản thân ứng dụng của bạn có thể giao tiếp với các dịch vụ khác qua mạng. Để hiểu cách hoạt động của điều này, điều quan trọng là bạn phải tìm hiểu một số giao thức mạng cơ bản:
- 📒 Hypertext Transfer Protocol (HTTP) – Giao thức truyền siêu văn bản, là giao thức cơ bản của World Wide Web. Nó xác định cách trình duyệt hoặc máy khách yêu cầu tài nguyên từ máy chủ web. Khi bạn nhập URL của một trang web vào trình duyệt, nó thực sự tạo một hoặc một số request HTTP tới máy chủ để tải HTML, CSS, tập lệnh và các nội dung khác. Giao thức truyền siêu văn bản an ninh (HTTPS) mã hóa thông tin được truyền để cho phép giao tiếp an toàn.
- 📙 HTTP/2 hoặc HTTP/3 là một bản cập nhật lớn cho HTTP nhằm mục đích cải thiện hiệu suất của các ứng dụng web. Nó cho phép đa request, nghĩa là bạn có thể chuyển các nội dung khác nhau qua một yêu cầu mở cùng một lúc.
- 📙 Transmission Control Protocol (TCP) là một giao thức tầng vận chuyển cho phép gửi các gói tin giữa các ứng dụng khác nhau một cách đáng tin cậy, có thứ tự và không có lỗi. HTTPS và HTTPS hoạt động trên TCP.
- 📙 Internet Protocol (IP) là một giao thức lớp internet xác định cách một gói tin được định tuyến từ máy chủ này sang máy chủ khác. TCP sử dụng IP để định tuyến. Có hai phiên bản chính của giao thức hiện đang được sử dụng: IPv4 và IPv6.
📒 Hệ thống tên miền
Hệ thống tên miền (Domain Name System – DNS) chịu trách nhiệm chuyển đổi các tên miền mà con người dễ ghi nhớ (dạng ký tự, ví dụ www.hocjavascript.net) sang địa chỉ IP vật lý (dạng số, ví dụ 123.45.6.78) tương ứng của tên miền đó.
DNS giúp liên kết với các trang thiết bị mạng cho các mục đích định vị và địa chỉ hóa các thiết bị trên Internet. Việc phân giải tên miền thành địa chỉ là một quá trình khá phức tạp và bạn sẽ cần ít nhất một số kiến thức cơ bản về cách nó hoạt động để có thể định cấu hình ứng dụng của mình một cách chính xác.
📒 Máy chủ Web
Máy chủ Web là một loại phần mềm đặc biệt có nhiệm vụ lắng nghe các kết nối đi đến bằng các giao thức khác nhau và phản hồi với nội dung được yêu cầu. Máy chủ Web có thể cung cấp các tệp tĩnh, chẳng hạn như HTML, tệp JavaScript hoặc hình ảnh, chạy các tập lệnh động được viết bằng các ngôn ngữ khác nhau hoặc phục vụ như một proxy cho các quy trình chạy như các ứng dụng riêng biệt.
Máy chủ Web cũng có thể đóng một phần quan trọng trong việc cải thiện hiệu suất của ứng dụng của bạn bằng cách cho phép nén, lưu vào bộ nhớ đệm và cân bằng tải.
Đây là một số máy chủ Web phổ biến:
- 📒 Apache HTTP Server là một máy chủ Web mã nguồn mở miễn phí được phát triển dưới Apache Software Foundation. Đây là một máy chủ web nhanh và mạnh có thể được cấu hình để cung cấp các nội dung tĩnh, nhưng cũng thường được sử dụng để chạy các tập lệnh được viết bằng PHP, Python, v.v.
- 📒 Microsoft IIS là một máy chủ Web của Microsoft có sẵn trên hệ điều hành Windows Server. IIS là một lựa chọn phổ biến cho các công ty sử dụng công nghệ Microsoft.
- 📒 NGINX là một máy chủ Web thường được sử dụng làm máy chủ nội dung tĩnh, hiệu suất cao hoặc proxy cho các ứng dụng động. Ngược lại với Apache, nó không thể tự cung cấp các nội dung động, nhưng đôi khi có thể đạt được hiệu suất tốt hơn. NGINX là một máy chủ Web mã nguồn mở và miễn phí nhưng cũng có một phiên bản trả phí nâng cao hơn có tên là NGINX Plus.
📒 Khắc phục sự cố mạng
Đôi khi bạn có thể gặp phải tình huống ứng dụng hoặc máy chủ Web của bạn vì lý do nào đó mà không khả dụng. Mặc dù việc gỡ lỗi những trường hợp như vậy có thể phức tạp và có thể có nhiều lý do gây ra sự cố, nhưng có một số công cụ bạn có thể sử dụng để cố gắng chẩn đoán tình huống và tìm ra nguồn gốc của sự cố.
- 📒 Ping là một tiện ích CLI đa nền tảng có thể được sử dụng để xác minh xem một địa chỉ IP cụ thể có thể truy cập được hay không. Nó cũng đo lường mất gói và thời gian khứ hồi sẽ cho biết một số ý tưởng về tình trạng của kết nối.
- 📙 Ncat là một công cụ Linux CLI mạnh mẽ của quân đội Thụy Sĩ, cho phép bạn gửi tin nhắn bằng các giao thức khác nhau, quét các cổng đang mở, tạo đường hầm và hơn thế nữa.
📙 Virtualisation
Virtualisation là một khái niệm quan trọng trong máy tính đã thay đổi hoàn toàn cách quản lý tài nguyên. Sử dụng virtualisation đối với người dùng, tất cả các tài nguyên này xuất hiện dưới dạng tài nguyên vật lý thực, tuy nhiên, chúng thực sự được cung cấp bằng phần mềm, được trừu tượng hóa từ phần cứng bên dưới.
- 📙 VirtualBox là một hypervisor đa nền tảng, mã nguồn mở, miễn phí hiện đang được phát triển bởi Oracle. Nó hỗ trợ tạo và chạy các máy ảo, cũng như chia sẻ tài nguyên, chẳng hạn như thư mục hoặc khay nhớ tạm, với máy chủ.
- 📓 Parallels Desktop for Mac cho phép bạn chạy các ứng dụng Windows trên máy Mac của mình. Parallels rất tiện lợi nếu bạn cần thiết lập môi trường phát triển Windows trên máy Mac của mình hoặc để kiểm tra một thứ gì đó trên Windows.
📙 Containers
Containers là một cơ chế ảo hóa khác để chạy phần mềm, nhưng không giống như máy ảo, containers không chạy một hệ điều hành hoàn chỉnh, nhưng chia sẻ cùng một nội dung. Điều này làm cho chúng nhẹ hơn và khởi động nhanh hơn nhiều, có nghĩa là bạn có thể chạy nhiều containers trên một máy duy nhất mà không lãng phí nhiều tài nguyên.
Các phương pháp hay nhất cho containers là chạy từng phần ứng dụng của bạn, chẳng hạn như backend, máy chủ Web hoặc cơ sở dữ liệu, tách biệt với những phần khác, cung cấp khả năng kiểm soát và cô lập chi tiết hơn.
- 📙 Docker là nền tảng phần mềm cho phép bạn dựng, kiểm thử và triển khai ứng dụng một cách nhanh chóng. Docker đóng gói phần mềm vào các đơn vị tiêu chuẩn hóa được gọi là container có mọi thứ mà phần mềm cần để chạy, trong đó có thư viện, công cụ hệ thống, mã và thời gian chạy. Bằng cách sử dụng Docker, bạn có thể nhanh chóng triển khai và thay đổi quy mô ứng dụng vào bất kỳ môi trường nào và biết chắc rằng mã của bạn sẽ chạy được.
- 📙 Kubernetes là một nền tảng nguồn mở, khả chuyển, có thể mở rộng để quản lý các ứng dụng được đóng gói và các service, giúp thuận lợi trong việc cấu hình và tự động hoá việc triển khai ứng dụng. Kubernetes là một hệ sinh thái lớn và phát triển nhanh chóng. Các dịch vụ, sự hỗ trợ và công cụ có sẵn rộng rãi.
Kết luận
Trong phần này, chúng ta chủ yếu tập trung vào các công cụ và nền tảng có thể hữu ích cho các lập trình viên trên các nền tảng khác nhau chứ không nói riêng lập trình web. Tuy nhiên, khi bạn bắt đầu làm việc với một nền tảng cụ thể, bạn sẽ khám phá ra rất nhiều công cụ mới sẽ hữu ích trong ngữ cảnh cụ thể của bạn.
Lần tới, chúng ta sẽ xem xét các tùy chọn triển khai đám mây để bạn có thể chọn một cái phù hợp để triển khai các ứng dụng của mình.
Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.
TỔNG HỢP TÀI LIỆU HỌC LẬP TRÌNH CƠ BẢN CHO NGƯỜI MỚI BẮT ĐẦU
KHOÁ HỌC BOOTCAMP JAVA/PHP/.NET TRỞ THÀNH LẬP TRÌNH VIÊN TRONG 5-6 THÁNG