Home Blog Page 175

TẤT TẦN TẬT VỀ PHP – Tìm hiểu về PHP như thế nào?

tat-tan-tat-ve-php

Dưới đây là một vài nội dung tổng hợp được của Topdev cho bạn về học tài liệu tham khảo PHP.

Các trang web tốt nhất cho bạn để tìm hiểu về PHP

Các bạn tự vào google gõ tên web là ra nhé

1) PHP Manual

Hướng dẫn toàn diện về PHP và bao gồm mọi thứ, từ các lệnh cơ bản và cách sử dụng chúng cho đến các chức năng và bảo mật tổng thể. Nếu bạn cần biết điều gì đó – đây là bất cứ điều gì – về PHP bạn sẽ tìm thấy nó trang web.
Tìm việc làm php lương cao không yêu cầu kn

2) PHP 101

Đúng như tên gọi của nó, Trang web dành cho người chưa biết gì về php. Nếu bạn chỉ mới bắt đầu với PHP và bạn muốn tìm hiểu bằng ví dụ, thì đây là một nơi tuyệt vời để ghé thăm. Trang web cung cấp một loạt các hướng dẫn giải trí và hữu ích được viết bởi Vikram Vaswani – người sáng lập và CEO của Melonfire. Nội dung rõ ràng, súc tích và cực kỳ dễ hiểu đặc biệt là đối với người mới viết mã. Khi bạn hoàn thành toàn bộ hướng dẫn, bạn sẽ chuyển sang tạo một trang tổng hợp tin tức RSS đơn giản thông qua PHP. Nhược điểm duy nhất của trang web này là không có nhiều ảnh chụp màn hình để tham khảo, vì vậy bạn sẽ phải tìm hiểu sự xuất hiện của mã PHP bởi sự đơn độc của bạn – điều không nhất thiết phải là một công cụ giải quyết.

3) Killer PHP

Đây là trang web giúp bạn học các kỹ năng PHP có thể sử dụng nhanh nhất có thể

4) PHP Tutorial by Tizag

Đây là trang web có rất nhiều tài liệu tham khảo cho bạn, phần lớn tập trung vào định nghĩa của PHP, các lệnh và phương thức để sử dụng chúng.

5) Hacking With PHP (Formerly Practical PHP Programming)

Như tên gọi , đây là một trang có nhiều tài liệu tham khảo tuyệt vời cho những người thích các bài học áp dụng một cách tiếp cận thực tế.

6) PHP Tutorial by W3schools

Đây là trang web gần giống với trang thứ 4 (ý mình nói là về tài liệu, cái trang web hướng đến….k nói về giao diện nhé)
Trang này Miễn phí, nhưng nếu bạn muốn có chứng nhận từ W3schools, sẽ có giá $ 95.

7) Getting Started with PHP by Randy Hoyt

Nó sẽ giúp bạn sử dụng PHP để xây dựng một trang thương mại điện tử. Bạn sẽ học được các yếu tố, câu lệnh và các bước cần thiết – và sẽ sử dụng tốt chúng.
Trang này phải trả phí. Sau 14 ngày dùng thử miễn phí, có giá khởi điểm $ 25 / tháng

8) The Learn PHP Tutorial

Trang này sẽ hướng dẫn bạn qua những điều cơ bản của PHP. Nó tuyệt vời cho người mới bắt đầu và cung cấp một hướng dẫn trực quan hơn. Bạn sẽ không chỉ học PHP mà còn học những gì bạn có thể làm với nó thông qua các ví dụ và thực tiễn tốt nhất.

9) PHPBuddy

Đây là trang web chưa rất nhiều bài học và bài viết về lập trình với PHP.
Các tài nguyên PHP trực tuyến hữu ích khác

10) Keydata

Nếu bạn đang tìm kiếm các hướng dẫn cơ bản bao gồm mọi chủ đề về PHP thì đây là trang web nên ghé thăm. Bạn sẽ học các lệnh cơ bản, hàm, chuỗi, cú pháp và nhiều hơn thế.

11) SitePoint PHP

SitePoint có cách tiếp cận hiện đại hơn. Web này hợp hơn đối với những người trình độ trung cấp trở lên.

12) About.com

Là một nơi tuyệt vời để tìm tài liệu tham khảo cho bất cứ điều gì. Có khá nhiều hướng dẫn cụ thể hướng dẫn bạn cách sử dụng PHP để thực hiện những việc như hàm, vòng lặp, tạo biểu mẫu, gọi các hàm toán học đơn giản, sử dụng thời gian và lịch, chuyển hướng URL….

13) GoodPHPTutorials

Đây là nơi tuyệt vời để các bạn tìm hướng dẫn và tài liệu tham khảo PHP.

14) PHP Cheatsheetshttp://overapi.com/php

Trang này chủ yếu dành cho các lập trình viên từ trung cấp đến cao cấp

15) PHP The Right Way

Bạn sẽ tìm thấy các hướng dẫn mở rộng về các chủ đề PHP khác nhau và rất nhiều tài liệu tham khảo.

16) PHP Academy (YouTube)http://bit.ly/2NpUKoi

Nếu bạn là người học trực quan hơn và thích xem mã và cách thức hoạt động của PHP thì hãy ghé thăm kênh youtube này. Có hàng trăm bài hướng dẫn, kéo dài nhiều năm học. Nội dung mới được thêm vào hàng tuần – nếu không phải hàng ngày – và nó bao gồm một loạt các chủ đề liên quan đến PHP. Thật tuyệt nếu bạn đang tìm kiếm một cái gì đó cụ thể, như cách sử dụng PHP để tạo đăng ký người dùng và hệ thống đăng nhập hoặc thiết lập xác thực PHP.

17) FreaksPHP

Trang web này phù hợp với mọi cấp độ kỹ năng và bao gồm hơn 400 đoạn mã có thể sử dụng. Bạn có thể sử dụng với các dự án hiện tại hoặc nghiên cứu để tìm hiểu PHP.

18) PHPVideoTutorials

Trang web này cung cấp một số ít các video hướng dẫn liên quan đến PHP, có độ dài từ khoảng 6 phút đến 22 phút – tùy thuộc vào bài học.

19) DevelopPHP

Cung cấp rất nhiều video hướng dẫn liên quan đến PHP từ cấp độ sơ cấp đến trung cấp. Các video thực sự được lưu trữ qua YouTube và được nhúng trên trang web
Kết quả hình ảnh cho PhP
  10 Frameworks tốt nhất hiện nay cho PHP
  Nâng skill lập trình PHP như thế nào?

Và 1 vài trang web khác….

11) LateralCode
12) Sourcecodester
13) PHP for Kids
14) Webassist
15) TutorialsPoint PHP
16) HScripts
17) PHPJabbers
18) PHPEveryday
19) FreewebmasterhelpPHP
20) MPSoftware
21) VideoPHPBlog
22) CSS-Tricks
23) Webucator
24) MPSoftware.dk
26) Bento.io
27) Wikibooks
700 TẬP LỆNH VỀ PHP

Bộ sưu tập PHP – Webshells

Công cụ

Trình giải mã PHP Online :
FOPO PHP Deobfuscator ver. 0.1
Toolki’s PHP decoder
Trình làm đẹp PHP
Online:
Offline :

Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev

Những dự án hay ho giúp bạn nhanh chóng “chạm tay” tới đỉnh lập trình

nhung-du-an-hay-ho-giup-ban-nhanh-chong-cham-tay-toi-dinh-lap-trinh

“Một người sau 1000 đào tạo mới lên được trình độ beginner, nhưng sau 10,000 ngày thực hành luyện tập mới lên được master.” Lý do vì sao?

Câu nói nổi tiếng của Mas Oyama đủ để tóm tắt tất cả những gì tôi muốn nói trong bài này. Chìa khóa để trở thành một developer chuyên nghiệp nằm ở 2 từ: NỖ LỰC. Việc dành hàng giờ code chai lì trên bàn phím từng bước giúp bạn phát triển thành một developer thực thụ.

Sau đây là 7 dự án nhỏ thú vị bạn có thể thử sức giúp bạn nâng cao kĩ năng lập trình nhanh chóng.

Dự án 1: Pac-man

Thử build game Pac-man là cách học nhanh nhất để hiểu rõ tường tận một game được build như thế nào. Bạn có thể build trên framework của JavaScript ví dụ như React hoặc Vue.

Những điều bạn có thể học được:

  • Chuyển động của các nhân vật 
  • Detect các key nào được nhấn 
  • Detect các va chạm
  • Bạn có thể nâng cấp bằng cách add thêm vào các chuyển động điều khiển cho các con ma trong game.

Bạn có thể tham khảo một vài dự án với GitHub tại đây.

  [Update] 43 kho lưu trữ Github JS phổ biến nhất 2024 -  Bạn đã biết hết chưa?

Dự án 2: Quản trị người dùng

Tạo 1 ứng dụng CRUD để quản lý người dùng sẽ giúp bạn nhiều thứ về những nguyên tắc cơ bản của lập trình. Nó phù hợp với các dev mới bắt đầu biết và học về lập trình.

Bạn sẽ học được:

  • Cách routing
  • Xử lý các mẫu và phương thức thẩm định cơ sở dữ liệu người dùng đưa vào
  • Tương tác với cơ sở dữ liệu – tạo, đọc, cập nhật và xóa các action.

Xem thêm dự án tại đây.

Dự án 3: Cập nhật thời tiết theo địa điểm của bạn

Nếu bạn muốn bắt đầu build một app thì tạo app thời tiết sẽ là một điểm bắt đầu lý tưởng. Bạn có thể tạo bằng Swift.

Ngoài việc tích lũy được chút kinh nghiệm build app, bạn chắc chắn sẽ học hỏi thêm được:

  • Cách tương tác với một API
  • Cách sử dụng chức năng định vị địa lý
  • Bạn có thể khiến app của bạn trở nên sống động hơn bằng add thêm phần nhập text để người dùng nhập vị trí để xác định thời tiết tại vị trí của mình.

Một API mà bạn có thể sử dụng để thu thập dữ liệu về thời tiết là OpenWeather API. Bạn có thể tìm thêm thông tin về OpenWeather API tại đây.

Dự án 4: Chat Box

Build một Chat Box là cách hay để tìm hiểu về socket. Bạn sẽ có nhiều lựa chọn về tech stalk để tiến hành. Node.js có thể là một lựa chọn tốt để bạn bắt đầu đấy.

Điều lớn nhất mà bạn học được từ dự án này đó là bạn sẽ biết được cách các socket hoạt động và cách ứng dụng chúng.

Nếu bạn chuyên lập trình Laravel và muốn thử làm việc với các socket, bạn có thể tham khảo bài viết này. Nó sẽ giúp bạn tìm hiểu sâu hơn cách ứng dụng một chat box trên bằng socket.

Dự án 5: GitLab Cl

Nếu bạn là một ma mới với CI (Continuous Intergration), bạn nên thử tìm tòi thêm về GitLab CI. Hãy thử lập ra nhiều môi trường và chạy thử trên đường truyền của bạn. Đây không phải là một chương trình quá “nặng”, nhưng tôi chắc là bạn sẽ học được nhiều thứ. Hiện nay nhiều team dev cũng sử dụng CI, và đây là công cụ tốt bạn nên trang bị cho bản thân.

Bạn sẽ học được những gì:

  • Hiểu biết về GitLab CI
  • Sử dụng hàm .gitlab-ci.yml để báo GitLab runner cần làm gì
  • Khai thác các trường

Xem cụ thể hơn tại đây.

  Triển khai CI/CD với Gitlab

Dự án 6: Công cụ phân tích Website

Bạn có thể thử tạo một scraper giúp phân tích cách vận hành của website và tạo một ranking cho chúng. Lấy ví dụ, bạn có thể kiểm tra được những alt tag bị mất trên các hình và những meta tag của SEO có còn hiện trên trang không. Bạn thậm chí còn có thể áp dụng scraper mà không cần tạo 1 UI.

Bạn sẽ học được gì:

  • Cách làm việc của một scraper
  • Tạo các DOM selector
  • Cách viết thuật toán

Dự án 7: Khai thác xu hướng social media

Khai thác xu hướng của social media là một cách tiếp cận với machine learning hiệu quả.

Bạn có thể bắt đầu bằng cách khai thác một platform mạng xã hội cụ thể nào đó, ví dụ như Twitter chẳng hạn.

Dev nhiều kinh nghiệm hơn thì có thể khai thác cùng lúc nhiều platform mạng xã hội và sau đó tổng hợp các dữ liệu đã thu thập lại.

Mày mò thực hiện với dự án này, bạn sẽ nắm được tổng quan về machine learning. Nghiên cứu kĩ hơn tại đây.

Kết luận: 

Những dự án trên có thể sẽ tiêu tốn của bạn kha khá thời gian để hoàn thành. Đừng quên quay lại đây và chia sẻ về kết quả anh em thu được nhé.

TopDev via Medium

CORS là gì? Giới thiệu tất tần tật về CORS

CORS là gì

Cors là gì? Vai trò của Cors? Nó là một nhu cầu rất thông dụng với các developer web đó là truy truy vấn qua API. Tuy nhiên, việc truy vấn và xử lý dữ liệu từ API nhiều khi cũng rất khó khăn.

Rất nhiều lập trình viên phải đối mặt với các vấn đề liên quan đến CORS. Vậy CORS là gì? Và lý do tại sao chúng ta cần CORS?

CORS là gì?

CORS là viết tắt của Cross-Origin Resource Sharing là một cơ chế cho phép nhiều tài nguyên khác nhau (fonts, Javascript, v.v…) của một trang web có thể được truy vấn từ domain khác với domain của trang đó.

Nói cách khác, CORS cho phép hoặc ngăn chặn các yêu cầu giữa các nguồn khác nhau trên web.

Tại sao chúng ta cần CORS?

CORS được sinh ra là vì same-origin policy, là một chính sách liên quan đến bảo mật được cài đặt vào toàn bộ các trình duyệt hiện nay. Chính sách này ngăn chặn việc truy cập tài nguyên của các domain khác một cách vô tội vạ.

Ta có ví dụ một kịch bản như sau:

  • Bạn truy cập một trang web có mã độc. Trang web đó sử dụng Javascript để truy cập tin nhắn Facebook của bạn ở địa chỉ https://facebook.com/messages.
  • Nếu bạn đã đăng nhập Facebook từ trước rồi. Nếu không có same-origin policy, trang web độc hại kia có thể thoải mái lấy dữ liệu của bạn và bất cứ điều gì chúng muốn.

Same-origin policy chính là để ngăn chặn những kịch bản như trên để bảo vệ người dùng, giúp an toàn hơn khi lướt web. Bạn có thể thử trên web console và sẽ nhận được lỗi ngay:

$.get('https://facebook.com/messages')
Access to XMLHttpRequest at 'https://facebook.com/messages' from
origin 'xxx' has been blocked by CORS policy: No
'Access-Control-Allow-Origin' header is present on the requested
resource.

Truy cập URL trên từ bất kỳ domain nào ngoài facebook.com bạn cũng sẽ nhận được lỗi như vậy. Đó chính là nhờ same-origin policy.

>> Tìm hiểu chi tiết: Lỗi CORS là gì?

Thế nhưng trong thế giới web, lập trình viên thường xuyên phải thực hiện truy vấn đến các domain khác, đặc biệt là khi làm việc với các API.

Đó là lúc chúng ta cần đến CORS. CORS sử dụng các HTTP header để “thông báo” cho trình duyệt rằng, một ứng dụng web chạy ở origin này (thường là domain này) có thể truy cập được các tài nguyên ở origin khác (domain khác).

Một ứng dụng web sẽ thực hiện truy vấn HTTP cross-origin nếu nó yêu cầu đến các tài nguyên ở origin khác với origin nó đang chạy (khác giao thức, domain, port). Sự khác biệt về giao thức ở đây là khác biệt kiểu như HTTP với FTP chứ không phải HTTP và HTTPS (dù nhiều trình duyệt không cho phép trộn lẫn các tài nguyên truy cập bằng HTTP và HTTPS nhưng đó là vấn đề khác, không liên quan đến CORS).

cors là gì

Các trường hợp cần đến CORS rất phổ biến trong thực tế. Một ví dụ rất điển hình như sau: một ứng dụng web chạy ở domain foo.com và nó cần truy vấn đến bar.com để lấy một vài dữ liệu (thường được thực hiện bởi JavaScript bằng cách sử dụng XMLHttpRequest).

Các trình duyệt đều cài đặt same-origin policy và tuân thủ nó rất chặt chẽ. Cài đặt XMLHttpRequest và kể cả Fetch API cũng đều tuân thủ chính sách này. Do đó những truy vấn như ở trên sẽ không thu được kết quả gì, trừ khi máy chủ trả về response có các header CORS phù hợp.

Như vậy, bằng việc sử dụng CORS, chúng ta có thể thúc đẩy việc giao tiếp trong ứng dụng web dễ dàng hơn rất nhiều.

Các truy vấn dùng CORS

Các truy vấn sau bắt buộc phải sử dụng CORS, theo tiêu chuẩn quốc tế.

  • Các truy vấn bằng XMLHttpRequest hoặc Fetch API đến một domain khác.
  • WebGL Texture
  • Ảnh, video được vẽ vào canvas sử dụng drawImage.
  • Web fonts truy vấn đến domain khác qua @fontface của CSS, trong đó trang web chỉ có thể sử dụng font dạng True Type nếu được cho phép.

  RESTful API là gì? Cách thiết kế RESTful API

Làm thế nào để sử dụng CORS?

Một hiểu lầm khá phổ biến, nhất là với các lập trình viên mới làm việc với API lại được làm việc với API của các hãng lớn, tài liệu đầy đủ, đó là cho rằng CORS là công việc của frontend. Nhưng thực ra CORS hoàn toàn là công việc của backend.

Các lập trình viên frontend thường không cần phải thao tác nhiều nếu cần dùng đến các truy vấn CORS (trừ một số ngoại lệ như không được sử dụng thư viện hoặc phải hỗ trợ IE 8). Khi một trình duyệt gửi một truy vấn đến máy chủ, nó sẽ tự động thiết lập một số HTTP header (ví dụ Origin) chứa các thông tin về nguồn gốc của truy vấn đó.

Về phía máy chủ, sau khi có được thông tin về nguồn gốc của truy vấn, nó có thể lựa chọn không phải hồi truy vấn đó, trả về lỗi hoặc trả về dữ liệu cần thiết. Trong trường hợp trả về dữ liệu, máy chủ cần thiết lập các HTTP header sao cho trình duyệt hiểu rằng truy vấn đó đã được chấp nhận.

Như vậy, chúng ta có thể thấy rằng, CORS giúp thúc đấy quá trình trao đổi dữ liệu giữa trình duyệt và máy chủ. CORS hoàn toàn không có liên quan gì đến việc trao đổi trực tiếp giữa ứng dụng web mà một máy chủ web khác, ví dụ backend của ứng dụng đó truy cập đến tài nguyên trên một origin khác, nó cũng không cần đến CORS.

Tạo truy vấn CORS bằng XMLHttpRequest

Trong phần này chúng ta sẽ tìm hiểu cách tạo ra các truy vấn CORS bằng JavaScript. CORS được hỗ trợ bởi hầu hết các trình duyệt hiện đại. Riêng với IE, nó chỉ hỗ trợ từ IE 8 trở lên mà thôi.

cors là gì

Tạo truy vấn

Các trình duyệt Chrome, Firefox, Safari đều sử dụng version mới của XMLHttpRequest do đó việc truy vấn CORS diễn ra hết sức thuận lợi. IE thì sử dụng XDomainRequest, nó hoạt động gần giống với XMLHttpRequest nhưng có nhiều hạn chế hơn.

Chúng ta có thể bắt đầu bằng cách tạo ra các object cần thiết. Dưới đây là một đoạn code như thế:

const createCORSRequest = (method, url) => {
    let xhr = new XMLHttpRequest();
    if ('withCredentials' in xhr) {
        // Kiểm tra XMLHttpRequest object có thuộc tính
		// withCredentials hay không
        // Thuộc tính này chỉ có ở XMLHttpRequest2
        xhr.open(method, url, true);
    } else if (typeof XDomainRequest != 'undefined') {
        // Kiểm tra XDomainRequest
        // Đây là đối tượng chỉ có ở IE và
		// là cách để IE thực hiện truy vấn CORS
        xhr = new XDomainRequest();
        xhr.open(method, url);
    } else {
        xhr = null;
    }
    return xhr;
}

const request = createCORSRequest('GET', 
	'https://jsonplaceholder.typicode.com/posts/1');
if (!request) {
    throw new Error('CORS is not supported');
}

Sau khi tạo được đối tượng XMLHttpRequest rồi thì chúng ta cần một số event handler, trong trường hợp này, chúng ta chỉ cần quan tâm 2 event onload và onerror là đủ. Ngoài ra còn một số event khác như ontimeoutonprogress không được sử dụng nhiều lắm.

request.onload = () => {
    const responseText = request.responseText;
    console.log(responseText);
}
request.onerror = () => {
    console.log('Error');
}

Thực ra các trình duyệt khác nhau lại có cách cài đặt rất khác nhau với event onerror. Ví dụ, Firefox trả về status là 0 và statusText luôn rỗng với mọi lỗi. Ngoài ra, các trình duyệt cũng thường không cho phép truy cập đến nội dung cụ thể của lỗi đã xảy ra, chúng ta chỉ biết rằng đã có lỗi mà thôi.

withCredentials

Mặc định, các truy vấn CORS không gửi hoặc thiết lập bất cứ cookie nào trên trình duyệt. Nếu muốn sử dụng cookie trong truy vấn đó, chúng ta phải đặt thuộc tính withCredentials của truy vấn bằng true:

xhr.withCredentials = true;

Tuy nhiên, đó cũng mới chỉ là một nửa mà thôi. Nửa còn lại thuộc về phía máy chủ, đó là HTTP header Access-Control-Allow-Credentials phải là true (chúng ta sẽ tìm hiểu ở phần sau).

Với giá trị withCredentials bằng true, cookie sẽ được tự động thêm vào cũng như thiết lập nếu có phản hồi từ máy chủ. Lưu ý rằng, cookie trong trường hợp này là third-party cookie và việc lưu trữ, truy cập cookie vẫn hoàn toàn thuân theo same-origin policy, do đó, chúng ta không thể truy cập cookie bằng document.cookie được. Nó hoàn toàn được xử lý tự động bởi trình duyệt.

Gửi truy vấn

Sau khi mọi việc đã hoàn tất, việc cuối cùng chúng ta cần làm là gửi truy vấn đi nữa mà thôi:

request.send();

Lúc này truy vấn sẽ được gửi đến máy chủ, và nếu máy chủ đó chấp nhận CORS thì nó sẽ trả về response tương ứng. Hoạt động của truy vấn lúc này hoàn toàn giống với truy vấn có chúng origin thông thường.

Tạo truy vấn CORS bằng jQuery

Hàm $.ajax của jQuery có thể được sử dụng cho các truy vấn thông thường lẫn truy vấn CORS (cookie cũng được hỗ trợ mặc định). Do đó nếu sử dụng jQuery thì công việc của lập trình viên cũng khá dễ dàng. Tuy nhiên, cần lưu ý một số điều như sau:

  • Truy vấn CORS của jQuery không hỗ trợ object XDomainRequest của IE, chúng ta cần sử dụng thêm plugin để hỗ trợ việc này.
  • Giá trị $.support.cors sẽ được gán là true nếu trình duyệt hỗ trợ CORS (với IE sẽ là false). Giá trị này có thể được sử dụng để kiểm tra xem CORS có được hỗ trợ hay không.

Dưới đây là một đoạn code sử dụng jQuery để tạo truy vấn CORS:

$.ajax({
	type: 'GET',
	url: 'https://jsonplaceholder.typicode.com/posts/1',
	success: data => {
		console.log(data);
	},
	error: () => {
		console.log('Error');
	}
})

Tạo truy vấn CORS bằng Fetch API

Chúng ta cũng có thể sử dụng Fetch API để tạo truy vấn CORS. Tuy nhiên, fetch mới chỉ xuất hiện từ ES6 nên nhiều trình duyệt vẫn chưa hỗ trợ nó (cụ thể là IE tất cả các phiên bản đều không hỗ trợ).

Fetch API cho chúng ta một phương thức đơn giản để tạo các truy vấn, và nó đã cài đặt sẵn việc hỗ trợ CORS nên chúng ta cũng có thể thao tác rất đơn giản, giống như jQuery vậy. Tuy nhiên, kết quả trả về của fetch là một Promise do đó các thao tác xử lý kết quả sẽ khác nhiều jQuery. Xem thêm nên học gì khi dùng jQuery.

Lập trình với fetch rất đơn giản, thậm chí còn đơn giản hơn của với jQuery:

fetch('https://jsonplaceholder.typicode.com/posts/1')
	.then(response => response.json())
	.then(console.log)

Cấu hình máy chủ hỗ trợ CORS

Đây là phần phức tạp nhất, cũng là phần quan trọng nhất đối với CORS. Như đã nói ở trên, thực ra việc hỗ trợ CORS hay không phụ thuộc hoàn toàn vào máy chủ chứ không phải client.

Có hai loại truy vấn CORS: loại truy vấn “đơn giản” và “không đơn giản”.

Một truy vấn đơn giản hoàn toàn không cần đến CORS preflight. Một truy vấn sẽ được gọi là đơn giản nếu nó thoả mãn những điều kiện sau:

  • Phương thức của truy vấn là một trong các loại GETHEADPOST.
  • Giá trị của Content-Type phải là một trong số các loại application/x-www-form-urlencodedmultipart/form-datatext/plain.
  • Không có event handler nào với event XMLHttpRequest.upload.
  • Không sử dụng đối tượng ReadableStream trong truy vấn.
  • Các HTTP header sau phải khớp:
    • Accept
    • Accept-Language
    • Content-Language
    • Last-Event-ID

Những truy vấn này được gọi là “đơn giản” bởi chúng có thể được coi là truy vấn thông thường từ trình duyệt mà không cần đến CORS, giống như submit một form HTML thông thường chẳng hạn.

Những truy vấn không phải “đơn giản” sẽ là truy vấn không đơn giản, và chúng cần CORS preflight. CORS preflight có nghĩa là trước khi truy vấn được gửi, nó cần phải gửi một truy vấn trước bằng phương thức OPTIONS. Mục đích của truy vấn “preflight” này là nhằm kiểm tra xem truy vấn thực sự có an toàn để gửi và nhận hay không.

Đối với truy vấn đơn giản

Một truy vấn CORS đơn giản như đã nói ở trên, có thể có gói tin HTTP dạng như sau:

GET /cors HTTP/1.1
Origin: https://api.topdevvn.com
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/...

Với các phương thức khác, gói tin HTTP cũng tương tự như vậy. Lưu ý rằng, một truy vấn CORS hợp lệ luôn luôn có Origin ở trong header. Giá trị của header này hoàn toàn được thiết lập tự động bởi trình duyệt, và không ai có thể thay đổi nó được. Giá trị của header này sẽ bao gồm scheme (http), domain (api.bob.com) và cổng (trong trường hợp dùng cổng mặc định thì không cần, ví dụ http dùng cổng 80). Giá trị của header chính là biểu thị nguồn gốc của truy vấn.

Một điểm lưu ý nữa là sự xuất hiện của header Origin không đồng nghĩa với việc truy vấn đó là cross origin. Dù tất cả các truy vấn cross origin đều có header này, nhưng một số truy vấn same origin cũng có header này. Điều đó phụ thuộc vào từng trình duyệt cụ thể.

Ví dụ, Firefox không có header này cho các truy vấn same origin nhưng Chrome và Safari vẫn thêm header nay khi truy vấn same origin nhưng sử dụng các phương thức POSTPUT hoặc DELETE. Đây là một diểm cần lưu ý với các lập trình viên backend, vì nếu không để ý có thể không thêm origin của chính app trong danh sách các domain được chấp nhận, điều đó khiến cho chính truy vấn same origin lại gặp lỗi.

Dưới đây là response của máy chủ phản hồi cho một truy vấn CORS hợp lệ:

Access-Control-Allow-Origin: https://api.topdevvn.com
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: FooBar

Tất cả các header liên quan đến CORS đều có phần đầu tiên là Acess-Control-. Ý nghĩa của từng header như sau:

  • Access-Control-Allow-Origin (bắt buộc): đây là header phải có trong mọi response cho một truy vấn CORS hợp lệ. Nếu không có header này, truy vấn sẽ bị lỗi, giá trị của nó có thể là giá trị của header Origin được gửi lên hoặc * biểu thị cho mọi origin.
  • Access-Control-Allow-Credentials (tuỳ chọn): Mặc định, cookie sẽ không được sử dụng trong các truy vấn CORS. Header này sẽ biểu thị giá trị logic rằng có thể sử dụng cookie hay không. Giá trị duy nhất của header này là true. Nếu không muốn sử dụng cookie thì thông thường người ta sẽ bỏ header này trong response chứ không phải đặt giá trị nó là false. Lưu ý rằng, header này chỉ hoạt động nếu phía client cũng đặt giá trị withCredentials = true như đã nói ở phần trước.
  • Access-Control-Expose-Headers (tuỳ chọn): Một đối tượng XMLHttpRequest có một phương thức getResponseHeader, phương thức này sẽ trả về giá trị của một header cụ thể trong response. Với các truy vấn CORS, phương thức này chỉ có thể truy cập được một số header đơn giản mà thôi. Nếu muốn phương thức này có thể truy cập nhiều header hơn, chúng ta cần đến giá trị của header này. Giá trị của header này là một danh sách các header có thể truy cập được, ngăn cách bằng dấu phẩy.

Đối với truy vấn cần preflight

Không phải truy vấn nào cũng là đơn giản do việc trao đổi dữ liệu giữa trình duyệt và máy chủ diễn ra rất đa dạng. Các phương thức PUT hay DELETE cũng thường xuyên được sử dụng. Ngoài ra kiểu dữ liệu JSON (Content-Type: application/json) cũng là lựa chọn của nhiều lập trình viên. Trong những trường hợp như vậy, trước khi truy vấn chính được thực hiện thì một truy vấn gọi là preflight sẽ được gửi đi trước.

Ở phía frontend, các truy vấn đơn giản hay phức tạp đều trông sẽ giống nhau. Truy vấn preflight hoàn toàn được thực hiện ngầm và trong suốt với người dùng. Truy vấn preflight sẽ được gửi đi trước nhằm xác định xem truy vấn thực sự có thể thực hiện được hay không.

Sau khi có được phản hồi tích cực, trình duyệt sẽ gửi truy vấn thực sự. Kết quả của truy vấn preflight có thể được cache nên nó không cần phải thực hiện cho mọi truy vấn.

  Tuốt tuồn tuột về HTTP Polling và SSE (Server-sent event)

  Cách làm HTTPS hoạt động trên local trong 5 phút

Dưới đây là một gói tin HTTP cho truy vấn preflight:

OPTIONS /cors HTTP/1.1
Origin: https://api.topdevvn.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: X-Custom-Header
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/...

Tương tự như truy vấn đơn giản, truy vấn này cũng tự động được thêm header Origin. Truy vấn preflight sẽ được thực hiện bằng phương thức OPTIONS với một số header đặc thù:

  • Access-Control-Request-Method: Đây là phương thức HTTP dùng trong truy vấn thực sự. Giá trị của header luôn luôn phải có, ngay cả khi các phương thức đó cũng là phương thức của một truy vấn đơn giản.
  • Access-Control-Request-Headers: Đây là danh sách (ngăn cách bằng dấu phẩy) các header được thêm vào truy vấn.

Truy vấn preflight là một cách để hỏi máy chủ rằng, liệu truy vấn thực sự có thể thực hiện được hay không. Mà máy chủ dựa vào hai header này để quyết định xem có chấp nhận truy vấn hay không. Nếu chấp nhận, máy chủ sẽ phản hồi như sau:

Access-Control-Allow-Origin: https://api.topdevvn.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Content-Type: text/html; charset=utf-8

Trong đó, response có thể có những header như sau:

  • Access-Control-Allow-Origin (bắt buộc): Tương tự như trường hợp truy vấn CORS đơn giản.
  • Access-Control-Allow-Methods (bắt buộc): Là một danh sách (ngăn cách bằng dấu phẩy) các phương thức HTTP được chấp nhận. Dù truy vấn preflight có hỏi về một phương thức cụ thể của truy vấn tiếp theo, giá trị của header này trong responses có thể bao gồm tất cả các phương thức được chấp nhận.
  • Access-Control-Allow-Headers (bắt buộc nếu truy vấn có header Access-Control-Request-Headers): Là danh sách các header (ngăn cách bằng dấu phẩy) được hỗ trợ. Tương tự như header trước, giá trị của header này cũng có thể bao gồm tất cả các header được chấp nhận.
  • Access-Control-Allow-Credentials (tuỳ chọn): Tương tự như trường hợp truy vấn CORS đơn giản.
  • Access-Control-Max-Age (tuỳ chọn): Truy vấn preflight không nhất thiết phải được thực hiện cho mọi truy vấn, mà kết quả của nó có thể cache được. Giá trị của header này chính là số giây mà giá trị của truy vấn preflight có thể được cache.

Một khi truy vấn preflight có được phản hồi và được chấp nhận, trình duyệt sẽ thực hiện truy vấn thực sự. Truy vấn lúc này tương tự như truy vấn CORS đơn giản và quá trình xử lý cũng như phản hồi hoàn toàn tương tự như vậy.

Nếu muốn từ chối truy vấn CORS, máy chủ có thể phần hồi một gói tin HTTP bình thường (mã 200) nhưng không có chứa HTTP header nào liên quan đến CORS. Trong trường hợp truy vấn preflight nhận được phản hồi như vậy, trình duyệt sẽ hiểu là truy vấn không được chấp nhận và nó sẽ không gửi thêm truy vấn nào nữa.

Về phía client, nếu trong trường hợp không thực hiện được truy vấn, event onerror sẽ được gọi. Tuy nhiên, như đã nó ở trên, trình duyệt cũng không thể truy cập được nhiều thông tin về lỗi đó, chỉ đơn giản là biết có lỗi mà thôi.

Hỗ trợ CORS của các framework

Laravel CORS

Khi chúng ta code vài ứng dụng dưới local mà có connect tới Laravel backed, thì bạn sẽ nhận cái thông báo error CORS ngay. Vì vậy cần tạo một middleware sau:

$ php artisan make:middleware Cors

Sau đó update header trong app/Http/Middleware/Cors.php

<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
  public function handle($request, Closure $next)
  {
    return $next($request)
      ->header(‘Access-Control-Allow-Origin’, ‘*’)
      ->header(‘Access-Control-Allow-Methods’, ‘GET, POST, PUT, DELETE, OPTIONS’)
      ->header(‘Access-Control-Allow-Headers’, ‘X-Requested-With, Content-Type, X-Token-Auth, Authorization’);
  }
}

Sau đó, đăng ký middleware trong app/Http/kernel.php

protected $routeMiddleware = [
  ‘auth’ => \App\Http\Middleware\Authenticate::class,
  ‘auth.basic’ => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
  ‘guest’ => \App\Http\Middleware\RedirectIfAuthenticated::class,
  ‘cors’ => \App\Http\Middleware\Cors::class, // <-- thêm vào hàng này
 ];

Nếu bạn muốn bật CORS bất kỳ route nào, chỉ cần add middleware này trong route registration. Ngoài ra bạn có thể dùng packgage ngoài tại barryvdh/laravel-cors.

Xem thêm việc làm Laravel lương cao lên đến 3000 USD

CORS Nodejs

Chúng ta sử dụng dòng code dưới đây để set một header trên response của bạn để bật CORS:

res.header("Access-Control-Allow-Origin", "*");

Bật CORS cho toàn bộ resource trên server

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

Chỉ định file nào đó

app.get('/file', function(req, res){
  var file = __dirname + '/file.zip';
  res.download(file); // Set disposition and send it.
});

Ví dụ đầy đủ:

var express = require('express');
var app = express();
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});
app.get('/', function (req, res) {
  var data = {
    "SmartPhone": [
      "iPhone",
      "Samsung"    ]
  };
  res.json(data);
});
app.get('/file', function(req, res){
  var file = __dirname + '/file.zip';
  res.download(file); // Set disposition and send it.
});

Ruby on Rails

Ruby on Rails cho phép chúng ta thiết lập cũng như thay đổi các header trong response khá dễ dàng, do đó, muốn chấp nhận truy vấn CORS, chúng ta có thể đơn giản là làm như sau:

skip_before_filter :verify_authenticity_token
before_action :cors_preflight_check
after_action :cors_set_access_control_headers

def cors_set_access_control_headers
  headers["Access-Control-Allow-Origin"] = "*"
  headers["Access-Control-Allow-Methods"] = "GET, POST"
  headers["Access-Control-Max-Age"] = "1728000"
end

def cors_preflight_check
  headers["Access-Control-Allow-Origin"] = "*"
  headers["Access-Control-Allow-Methods"] = "GET, POST"
  headers["Access-Control-Allow-Headers"] =
    "X-Requested-With, X-Prototype-Version"
  headers["Access-Control-Max-Age"] = "1728000"
end

Tham khảo thêm các việc làm Ruby on Rails cho bạn

Django

Với Django chúng ta phải sử dụng thêm một package, đó là Django CORS headers. Package này sẽ giúp chúng ta thiết lập các header cần thiết cho một truy vấn CORS, đồng thời cho chúng ta khả năng cấu hình URL nào cho phép CORS, URL nào thì không.

Với package này, chúng ta có thể cấu hình sao cho chỉ có API mới hỗ trợ CORS như sau:

CORS_ORIGIN_ALLOW_ALL = True
CORS_URLS_REGEX = r'^/api/v1/.*$'

Ngoài ra còn rất nhiều cấu hình khác nữa, cho phép chúng ta chỉ chấp nhận truy vấn CORS từ một vài origin nhất định chẳng hạn (CORS_ORIGIN_REGEX_WHITELIST). Nội dung chi tiết xin mới các bạn xem cụ thể tại README của package đó.

Xem thêm các vị trí tuyển dụng lập trình Django lương cao

Flask

Tương tự như Django, với Flask, chúng ta cũng phải sử dụng thêm một package, đó là Flask-CORS mới có thể chấp nhận các truy vấn CORS được.

from flask import Flask
from flask.ext.cors import CORS, cross_origin


app = Flask(__name__)
app.config['SECRET_KEY'] = 'The quick brown fox jumps over the lazy dog'
app.config['CORS_HEADERS'] = 'Content-Type'

cors = CORS(app, resources={r'/foo/*': {'origins': '*'}})


@app.route('/foo')
@cross_origin()
def foo():
	return 'Hello, world! CORS works'


if __name__ == '__main__':
	app.run()

Kết luận

Trên đây là tất cả những gì cơ bản để bạn biết CORS là gì, cách nó giúp các ứng dụng web dễ dàng hơn trong việc trao đổi thông tin cũng như hiển thị nội dung, tăng khả năng tương tác giữa các dịch vụ trên Internet. Hy vọng bài viết giúp ích cho mọi người trong quá trình làm việc.

Có thể bạn muốn xem thêm:

Xem thêm việc làm IT tại TopDev!

Chỉ sau 4 tháng đọc FreeCodeCamp, tôi đã là một full-stack developer

Bài viết được biên dịch từ lời chia sẻ của một web developer đến từ miền Nam Châu Âu nhận được gần 13k lượt xem trên FreeCodeCamp

Xin chào tất cả anh em đang quan tâm đến câu hỏi làm thế nào để trở thành một lập trình viên,

Tôi là một gã khờ 33 tuổi vừa được nhận vào vị trí full-stack developer lần đầu tiên trong cuộc đời sự nghiệp của tôi. Tôi thấy cần chia sẻ những kinh nghiệm quý giá này trên FreeCodeCamp – nơi đã giúp tôi thực hiện giấc mơ này. Việc nghiền ngẫm tất cả những chia sẻ của những người đi trước đã giúp tôi có động lực rất nhiều trên hành trình gian nan này.

Kẻ thất bại có “học thức”

Hành trình sự nghiệp của tôi những năm đầu đời quả không mấy tốt đẹp. Dù có trong tay tấm bằng đại học chuyên ngành xã hội học và tờ giấy chứng chỉ IT, tôi vẫn không thể kiếm cho mình một công việc tử tế. Thậm chí lúc cuộc khủng hoảng kinh tế đang diễn ra, tôi còn suýt phải đi đặt tờ rơi ở cửa kính trước của ô tô để kiếm sống. Cuối cùng, sau nhiều tháng ngập trong vô vọng, tôi chấp nhận làm việc tại một văn phòng bán bất động sản giá rẻ với mức lương bèo bọt vì không muốn tiếp tục phụ thuộc tài chính vào ba mẹ.

Thời gian trôi qua, công ty này trở nên tồi tệ hơn tôi nghĩ. Bất chấp sự đầu tư chăm chỉ vào công việc, mức lương không hề nhúc nhích, môi trường làm việc ngày càng xuống cấp, cũng chẳng tồn tại sự phát triển chuyên sâu về kiến thức nào cả. Tôi đã trên 30 tuổi và cảm giác của tôi lúc này về mọi thứ dường như kết thúc khi đối diện với sự cạnh tranh việc làm khốc liệt ở Nam Âu. Và rồi, Reddit đến để giải thoát tôi khỏi mớ bòng bong này, đập vào mặt tôi là hàng tá các tips từ những redditor có tiếng. Những lời khuyên hay ho đó đã vực tôi dậy và giúp tôi phát triển hướng đi mới: trở thành một software developer.

  10 Công cụ Go-To Tech dành riêng cho các Software Developer

Thay đổi ư?! Nó là cả một quá trình dài

Tôi bắt đầu từ từ học C++ và thực hành một số bài task nhỏ tập hack ranking (chỉ để vui thôi). Cũng chính từ những bước khởi đầu này đã giúp tôi khám phá ra niềm đam mê với code bấy lâu nay bị bỏ quên. Sau vài tháng luyện tập, tôi chuyển sang thực hành với những dự án có giá trị hơn từ Github. 

Quay lại với công việc của tôi vào năm ngoái, tình trạng trở nên báo động: tất cả những công việc đã được tự động hóa và tôi sẽ sớm trở thành người thừa. Tôi phải nhanh chân hơn nữa, sử dụng cả những thời gian rảnh ở nhà để chuẩn bị sẵn sàng cho việc bị sa thải. Đó thực sự là quãng thời gian năng suất nhất trong cuộc đời tôi:

  • Tôi tiết kiệm tối đa đến mức có thể, chỉ sử dụng tiền cho những nhu cầu thiết yếu: tiền thuê nhà, tiền hóa đơn, ăn uống, tiền xăng xe; những chi phí còn lại thì hạn chế tối thiểu.
  • Tháng 6: tôi thực hành với Linux shell, tôi học Git và đăng những dự án tốt nhất tôi thực hành bằng C++ lên Github
  • Tháng 7: học Python và Regex
  • Tháng 8: học chuyên sâu tiếng Tây Ban Nha (đạt chứng chỉ B2) và touch typing (khoảng giữa tháng 7 đến tháng 8, tôi thực sự cần một sự nghỉ ngơi khỏi lập trình để nâng cao một số kĩ năng mềm có lợi cho xin việc sau này)
  • Tháng 9: học lập trình web trên FreeCodeCamp, và tôi nhận ra tôi thích nó hơn là OOP.
  • Tháng 10: tạo Front-end React app
  • Cuối tháng 11: tự tạo full-stack MERN app
  Con đường mình đang đi để trở thành Fullstack Web Developer

Vào cuối năm ngoái, tôi tiết kiệm đủ tiền để duy trì cuộc sống sau thất nghiệp và tự tin thoát khỏi nơi khốn khiếp đó. Dù chỉ có 2 web app, tôi vẫn quyết định chọn đi theo lập trình web và rải hồ sơ ở khắp mọi nơi trên Linkedin. Thật ngạc nhiên, lần này tôi chỉ phải đi phỏng vấn ở 3 nơi. Vị trí đầu tiên làm việc với C++, trong khi công việc thứ 2 và thứ 3 liên quan đến lập trình web (front-end và full-stack) và tôi được cả 2 công ty sau nhận. Cuối cùng tôi chọn công ty thứ 3, tuy hơi xa nhưng ở một nơi phong cảnh lý tưởng, có thể chơi đá banh trong giờ nghỉ giải lao thay vì ngồi ngắm đống warehouse tẻ nhạt như trước kia. Lần nhảy việc này tôi chỉ mất 10 ngày để đi phỏng vấn và tìm việc.

Những bài học tôi rút ra từ quá trình tìm việc

Tôi biết chắc sẽ có nhiều bạn nghĩ điều kiện của tôi khá hơn so với mặt bằng chung: tôi sống ở châu Âu, đã có một nền tảng về IT từ thời trung học và được cung cấp tài chính từ gia đình. Nhưng tôi vẫn muốn đưa ra một số lời khuyên bởi ít hay nhiều nó cũng sẽ phần nào áp dụng được cho tình hình của bạn:

  • Nếu bạn đang có ý định thử sức với lĩnh vực này, xin chúc mừng bạn thật may mắn: thời điểm ngày nay có một sự khan hiếm nhân lực trong ngành lập trình đặc biệt là ở châu Âu. Khác xa với những lĩnh vực khác, các công ty không quan tâm đến bằng cấp, cái họ quan tâm là NĂNG LỰC THỰC SỰ.
  • Kĩ năng mềm là rất cần thiết, nếu bỏ qua nó bạn sẽ là kẻ thất bại. Tin hay không, bạn có cơ hội được nhận cao hơn khi bạn có một quan điểm sống tích cực và năng động. Hãy thể hiện một cách chân thành cho nhà tuyển dụng thấy bạn yêu thích những điều bạn làm và đừng ngại trình bày những điểm mạnh và điểm yếu của bạn. 
  • Hãy đánh bóng hồ sơ Linkedin của bạn: hồ sơ phải hoàn thiện, với dòng bio đầy đủ súc tích và một bức hình thật chuyên nghiệp. Nếu bạn đang thất nghiệp, hãy khéo léo ghi rằng bạn là một software/web developer “đang tìm kiếm cơ hội việc làm.” Hãy để nhà tuyển dụng thấy bạn đang tìm chứ không phải đang cần họ.
  • Hãy giữ resume của bạn đơn giản: sử dụng bản thiết kế tối giản với font chữ dễ đọc. Lọc sơ những kĩ năng bạn cần để trên CV, không nên quá chi tiết hoặc làm quá trình độ của bạn. Đừng liệt kê quá cụ thể công việc trước, hãy để những mô tả đó trên Linkedin. Không nên để thông tin về nơi ở và ngày tháng năm sinh của bạn.
  • Tạo một cover letter ấn tượng, nhưng hãy dành thời gian nghiên cứu công ty bạn sắp apply vào để viết sao cho phù hợp. Tránh văn phong mẫu sáo rỗng. Bạn nên thêm địa chỉ của bạn vào nữa.
  • Học Git, áp dụng nó và đăng tải những dự án của bạn lên Github. Hãy để tối thiểu 2-3 dự án tốt nhất của bạn với cách trình bày ấn tượng nhất. Hãy commit hàng ngày để gây ấn tượng với những nhà tuyển dụng, đừng đơn thuần chỉ commit cho 1 dự án rồi thôi.
  • Thật may mắn nếu bạn không hề gặp trở ngại nào khi viết code, nhưng ở một khía cạnh nào đó, nó đồng nghĩa với việc bạn không học thêm điều gì mới. Điều bạn cần làm đó là thoát ra khỏi vùng an toàn và chuẩn bị cho hướng đi mới trong tương lai.
  Cách viết CV giúp lập trình viên ghi điểm với nhà tuyển dụng

Hãy lập danh sách những yêu cầu của nhà tuyển dụng – điều họ mong muốn từ ứng viên. Cụ thể như sau:

  • “Yêu cầu tối thiểu 2 năm kinh nghiệm” đồng nghĩa với việc “không yêu cầu kinh nghiệm.” Apply!
  • “Yêu cầu bằng cấp liên quan” đồng nghĩa với “không yêu cầu bằng cấp”. Apply!
  • “Chúng tôi đang tìm kiếm một senior dev” đồng nghĩa với “thực ra thì một junior cũng có thể đáp ứng đấy!”. Apply!

Đọc điều thứ 3 một lần nữa, và sau đó apply. Đó là cách tôi lấy tự tin để đi phỏng vấn và thành công.

Những nguồn tham khảo đáng xem

  • Hãy bắt đầu với kiến thức giới thiệu về CS50 trong khoa học máy tính trên edX CS50’s Introduction to Computer Science, đây đơn giản là những tài liệu cho người mới miễn phí tốt nhất mà tôi từng tìm. Sau đó hãy đọc tiếp lập trình web CS50 bằng Python và JavaScript CS50’s Web Programming with Python and JavaScript.
  • Xem qua lộ trình mới nhất về thiết kế web qua video tại đây.
  • FreeCodeCamp là nguồn hiệu quả nhất để đi từ con số 0 lên con số 10. Ghi chú lại tất cả những gì bạn học được và thực hành nó.
  • Một số subreddit mà tôi theo dõi: r/learnprogramming, r/programming, r/webdev, r/web_design, r/reactjs, r/freecodecamp, r/cscareerquestions (tôi liệt kê một số tiêu biểu thôi nhé). Tôi tự tạo một tài khoản Reddit chỉ đơn thuần cập nhật các subreddit về CS, để đảm bảo rằng feed của tôi không bị nhiễm những thứ không liên quan khác.
  • Udemy: khóa học duy nhất tôi từng mua là MERN Stack Front To Back của Brad Traversy. Những video hướng dẫn rất tuyệt vời sẽ giúp bạn trở thành một chuyên gia trên các platform mạng xã hội. Tuy nó mất phí nhưng tin tôi đi, nó rất đáng đồng tiền bát gạo đấy.
  • Hướng dẫn của Net Ninja về Node/Express tại đây
  • Stack Overflow, cái này thì không cần phải động não quá nhiều. Search GG và đọc định nghĩa là đủ.
  • Học CSS qua các kênh Flexbox Froggy, Grid Garden. Xem xong bạn sẽ vận dụng khá tốt cho các buổi phỏng vấn đấy.
  • Các nguồn sách ebook về JavaScript miễn phí: The Road to Learn React, You Don’t Know JS, và Eloquent Javascript nếu bạn muốn thử cái gì khó hơn.
  • Hackerrank hoặc Leetcode để rèn luyện kĩ năng problem solving (giải toán) của bạn. Nếu bạn thực sự giỏi kĩ năng này bạn có thể apply vào Big-N.
  • Tính chần chừ không dám hành động có thể là một trở ngại lớn trong công việc của bạn. Nếu bạn đang là một con người như vậy, đừng lo lắng hãy yên vị ở một công ty tốt và bạn sẽ cải thiện được tính chất này. 

Và đó là tất cả những gì tôi muốn chia sẻ. Tuy dài dòng nhưng hi vọng bài viết đang và sẽ truyền động lực cho những anh em có chung ước mơ giống như tôi. Chúc may mắn!

TopDev via FreeCodeCamp

Đừng quên cập nhật các công việc lập trình Full Stack hấp dẫn tại đây

Mẫu bảng mô tả công việc lập trình NodeJS

Mẫu bảng mô tả công việc lập trình NodeJS

Lập trình NodeJS là người phát triển các server-side logic web ứng dụng bằng JavaScript và/hoặc các biến thể của JS (CoffeeScript, v.v), chịu trách nhiệm quản lý việc trao đổi dữ liệu giữa server và users, phát triển các thành phần back-ends, liên kết ứng dụng với các web services khác (thường là bên thứ 3) và hỗ trợ Front-End Developers trong việc tích hợp công việc của họ với các ứng dụng của NodeJS. Hy vọng, Mẫu bảng công việc lập trình NodeJS này sẽ giúp các bộ phận nhân sự dễ dàng hơn cho việc tuyển dụng những vị trí này.

Về lập trình viên NodeJS: Để thành một NodeJS Developer giỏi, các lập trình viên cần nắm rõ cấu trúc dữ liệu và giải thuật, kỹ thuật lập trình hướng đối tượng cũng như có kiến thức hoặc kinh nghiệm về Spring/ Hibernate/ Struts để cùng tham gia nghiên cứu, thiết kế, phát triển và tích hợp các các giải pháp và hệ thống ứng dụng phục vụ công việc quản trị, vận hành và điều hành cho sản phẩm công ty/ khách hàng.

Xem thêm các tin đăng việc làm nodejs trên TopDev

Mẫu bảng công việc lập trình NodeJS

YÊU CẦU CÔNG VIỆC

  • Thành thạo lập trình NodeJS
  • Có kinh nghiệm Web API, Web Services REST
  • Có kiến thức cơ bản về Front-End, như HTML5, CSS3.
  • Hiểu biết tốt về ngôn ngữ tạo server-side template.
  • Thực hiện các nền tảng thử nghiệm tự động và unit tests.
  • Thành thạo các công cụ tạo phiên bản code , chẳng hạn như Git.
  • Kỹ năng tư duy logic và thuật toán tốt, phân tích và giải quyết vấn đề
  • Có khả năng đọc hiểu tiếng Anh chuyên ngành

MÔ TẢ CÔNG VIỆC

  • Lập trình NodeJS tham gia quản lý việc trao đổi dữ liệu giữa server và users, phát triển các thành phần back-ends, liên kết ứng dụng với các web services khác (thường là bên thứ 3)
  • Tích hợp các yếu tố hướng tới người dùng được phát triển bởi Front-End Developers với server-side logic.
  • Thiết kế và triển khai các ứng dụng có độ trễ thấp, tính sẵn sàng cao và hiệu suất cao.
  • Thực hiện bảo mật và bảo vệ dữ liệu
  • Tích hợp các giải pháp lưu trữ dữ liệu.
  • Nghiên cứu công nghệ mới để áp dụng cho các dự án của công ty
  • Duy trì và phát triển các website, code và cấu trúc dữ liệu có sẵn của công ty
  • Thực hiện nâng cấp đều đặn để giúp phần mềm và các hệ thống trở nên bảo mật và hiệu quả hơn.

Tham khảo thêm những công việc lập trình hot nhất thị trường tại đây

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

Bài viết này mình sẽ giúp các bạn có cái nhìn tổng quan về MongoDB. Chúng ta không lạ gì với cơ sở dữ liệu quan hệ, còn với cơ sở dữ liệu phi quan hệ thì sao? MEAN stack (MongoDB, Express, AngularJS, NodeJS) đang dần thay thế cho LAMP stack (Linux, Apache, MySQL, PHP/Python). Để tìm hiểu về MongoDB thì đầu tiên chúng ta sẽ cùng tìm hiểu xem NoSql là gì nhé

1. NoSql

Đầu tiên về cơ sở dữ liệu phi quan hệ chúng ta cùng tìm hiểu về NoSql nhé, vậy NoSql là gì?.

  • NoSQL là 1 dạng CSDL mã nguồn mở và được viết tắt bởi: None-Relational SQL hay có nơi thường gọi là Not-Only SQL.
  • NoSQL được phát triển trên Javascript Framework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value.
  • NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ RDBMS (Relational Database Management System – Hệ quản trị cơ sở dữ liệu quan hệ) về tốc độ, tính năng, khả năng mở rộng,…
  • Với NoSQL bạn có thể mở rộng dữ liệu mà không lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc .v.v …
  • NoSQL bỏ qua tính toàn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và khả năng mở rộng.
  • NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable,…

Đến đây chắc các bạn cũng phần nào hiểu về NoSql rồi phải không, giờ chúng ta đi đến khái niệm MongoDB nhé.

2, MongoDB là gì?

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

  • MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng.
  • MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.
  • Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server…) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng
  • So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ dùng các document thay cho row trong RDBMS.
  • Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định.
  • Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB

Vậy là mình đã giới thiệu xong khái niệm và một số điểm khác cơ bản của MongoDB so với CSDL quan hệ rồi, tiếp theo sẽ là một vài thao tác với MongoDB để các bạn có thể hình dung rõ hơn nhé

3. Một số câu lệnh cơ bản trên MongoDB

CSDL MySQL MongoDB
Tạo csdl CREATE DATABASE test; use test;
Tạo bảng CREATE TABLE students (ten_cot – kieu_du_lieu); db.createCollection(‘students’);
Tạo bản ghi INSERT INTO studetns (‘name’, ‘gender’) VALUES(‘thanh’, ‘male’); db.students.insert({ name:’thanh’, gender: ‘male’});
Cập nhật UPDATE students SET name = ‘thanh update’ WHERE id = 1; db.students.update({ _id: 1 },{$set:{ name: ‘thanh update’ }});
Xóa bản ghi DELETE FROM students Where id = 1; db.students.remove({ _id: 1});
Tìm kiếm all SELECT * FROM students; db.students.find({});
Tìm kiếm SELECT * FROM students WHERE name = ‘thanh’; db.students.find({ name: ‘thanh’ });

4. Ưu điểm của mongoDB.

  • Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái.
  • Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS.
  • MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster:
  • Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.
  • Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.
  • Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL.

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

5. Nhược điểm của mongoDB.

  • Một ưu điểm của MongoDB cũng chính là nhược điểm của nó. MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.
  • Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên dễ bị dữ thừa dữ liệu.
  • Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện…

6. khi nào nên dùng MongoDB

Ví dụ như các hệ thống realtime (thời gian thực) yêu cầu phản hồi nhanh, Các hệ thống bigdata với yêu cầu truy vấn nhanh hay các hệ thống có lượng request lớn thì MongoDB sẽ là sự lựa chọn ưu tiên hơn CSDL quan hệ. Tùy theo dự án và trường hợp cụ thể để sử dụng CSDL quan hệ hay sử dụng MongoDB đem lại hiệu quả cao.

Tham khảo các vị trí tuyển dụng lập trình MongoDB lương cao tại Topdev

TopDev via Viblo

Mẫu bảng mô tả công việc của IT Support

Mô tả công việc IT Support mức lương hấp dẫn

IT Support là người phụ trách phối hợp ăn ý với các bộ phận liên quan như Technical để có thể hỗ trợ và giúp đỡ khách hàng giải quyết những vấn đề lỗi kỹ thuật, hỏng hóc,… một cách nhanh chóng và hiệu quả cao. Tiến hành theo dõi và kiểm tra hệ thống liên tục và xuyên suốt trong quá trình sử dụng để đảm bảo rằng việc bảo trì và khắc phục sự cố luôn được xử lý kịp thời và nhanh chóng. Thu thập thông tin và các đóng góp phản hồi của khách hàng là công việc khá quan trọng, qua những thông tin nhận xét về sản phẩm dịch vụ công ty sẽ dễ dàng hơn trong việc rà soát, cải tiến và nâng cao chất lượng của sản phẩm dịch vụ hơn đồng thời phải thường xuyên chăm sóc và quan tâm tới khách hàng sử dụng sản phẩm dịch vụ của công ty.Hy vọng, Mẫu bảng mô tả công việc IT Support này sẽ giúp các bộ phận nhân sự dễ dàng hơn cho việc tuyển dụng những vị trí này.

Mẫu bảng công việc IT Support

YÊU CẦU CÔNG VIỆC

  • Tốt nghiệp các trường kỹ thuật hoặc có kiến thức về CNTT (Microsft, Oracle, Cisco, Jupiter)
  • Kinh nghiệm về giao tiếp và phục vụ khách hàng là lợi thế.
  • Có kỹ năng đào tạo, hướng dẫn sử dụng trang thiết bị CNTT, phần mềm cho người sử dụng.
  • Có khả năng làm việc độc lập cũng như làm việc nhóm tốt.

MÔ TẢ CÔNG VIỆC

  • Hỗ trợ giải đáp các yêu cầu về nghiệp vụ của sản phẩm đang cung cấp cho khách hàng
  • Tư vấn khách hàng khi có những yêu cầu cần thay đổi mới
  • Làm và chỉnh sửa báo cáo trên sản phẩm
  • Kiểm tra số liệu trên hệ thống đảm bảo data chính xác
  • Hỗ trợ về phần mềm nghiệp vụ, các hệ thống kiểm soát nội bộ, tin học văn phòng
  • Tiếp nhận và xử lý các sự cố về phần mềm nghiệp vụ, lỗi người dùng và các lỗi cơ bản của phần mềm.
  • Hướng dẫn sử dụng phần mềm và đề xuất giải pháp xử lý dữ liệu.
  • Chi tiết việc làm it support

Tham khảo thêm những công việc lập trình hot nhất thị trường tại đây

System Admin là gì? Mô tả công việc vị trí System Administrator

Mô tả công việc System Administrators mức lương hấp dẫn

System Admin là một nghề khá mới và được nhiều chuyên gia dự đoán sẽ là nghề HOT và hái ra tiền trong giai đoạn sắp tới. Vậy, System Admin là gì? Công việc này đòi hỏi những kỹ năng nào? Hãy cùng tìm hiểu về chi tiết mô tả công việc này trong bài viết hôm nay cùng TopDev nhé.

Mô tả công việc System Administrators mức lương hấp dẫn
System Admin là gì? Mô tả công việc vị trí System Administrator

System Admin là gì?

System Admin, viết tắt của System Administrator (Quản trị viên hệ thống), là người chịu trách nhiệm quản lý, vận hành và duy trì các hệ thống máy tính và mạng trong một tổ chức. Họ đảm bảo rằng các hệ thống hoạt động ổn định, an toàn và hiệu quả, đáp ứng được nhu cầu của người dùng và yêu cầu của công ty.

System Administrators thường duy trì các yếu tố cần thiết như hệ điều hành, ứng dụng kinh doanh, công cụ bảo mật, web-servers, email, PC, mạng cục bộ và mạng diện rộng cả phần cứng, phần mềm và phần cứng máy chủ tầm trung.

Mô tả công việc System Administrators

System Admin
Mô tả công việc System Administrators
  1. Đảm bảo hệ thống hoạt động hiệu quả:
    • Giám sát liên tục các thành phần phần cứng và phần mềm của hệ thống máy chủ và hệ thống mạng.
    • Đảm bảo hệ thống hoạt động trơn tru, không có các lỗi hỏng hóc kỹ thuật trong quá trình vận hành.
    • Thực hiện sửa chữa và khắc phục ngay lập tức các lỗi hệ thống khi chúng xảy ra.
    • Thay thế các thiết bị, phụ tùng hoặc chi tiết kỹ thuật khi không thể sửa chữa hoặc can thiệp kỹ thuật.
  2. Quản lý hệ thống mạng:
    • Đảm bảo hệ thống mạng luôn có đầy đủ các thành phần cần thiết, hoạt động trơn tru và thiết kế chuẩn chỉnh.
    • Thực hiện các thao tác để duy trì và nâng cấp phần mềm trong hệ thống mạng.
    • Thực hiện các nghiệp vụ chuyên môn để ngăn ngừa các sự cố như rò rỉ dữ liệu, chương trình hoạt động chậm, virus, và các thiết bị lỗi thời hoặc hoạt động kém.
  3. Bảo đảm an ninh mạng và hệ thống internet:
    • Thực hiện các biện pháp bảo mật để bảo vệ sự an toàn và bí mật dữ liệu của doanh nghiệp.
    • Triển khai các biện pháp bảo vệ để đảm bảo hệ thống mạng an toàn, không bị hack hoặc đánh cắp dữ liệu.
    • Xây dựng và tối ưu hóa các hàng rào bảo vệ để bảo vệ máy chủ và hệ thống mạng.
    • Thực hiện sửa chữa và khắc phục các lỗi thuộc về hệ thống mạng khi cần thiết.
  4. Hỗ trợ kỹ thuật và khắc phục sự cố:
    • Cung cấp hỗ trợ kỹ thuật cho người dùng cuối, giải quyết các vấn đề liên quan đến phần mềm và phần cứng.
    • Đào tạo người dùng về cách sử dụng hệ thống và các công cụ công nghệ thông tin.

Kỹ năng và kiến thức cần có của vị trí System Admin:

  • Kiến thức chuyên môn: Thành thạo các hệ điều hành (Windows, Linux, macOS), mạng và các thiết bị mạng.
  • Kỹ năng bảo mật: Khả năng thiết lập và quản lý các biện pháp bảo mật hệ thống, chống lại các mối đe dọa mạng.
  • Kỹ năng giám sát và phân tích: Sử dụng các công cụ giám sát để theo dõi hiệu suất hệ thống và phân tích log để phát hiện sự cố.
  • Kỹ năng khắc phục sự cố: Khả năng nhận diện và giải quyết các vấn đề kỹ thuật một cách nhanh chóng và hiệu quả.
  • Giao tiếp và hỗ trợ: Kỹ năng giao tiếp tốt để hỗ trợ người dùng và phối hợp với các bộ phận khác trong tổ chức.

>> Xem thêm: Câu hỏi phỏng vấn System Admin và cách trả lời ghi điểm

Mức lương và cơ hội nghề nghiệp của System Admin ở Việt Nam

Mức lương của System Admin tại Việt Nam

Mức lương của System Admin tại Việt Nam có thể khác nhau tùy thuộc vào nhiều yếu tố như kinh nghiệm, trình độ chuyên môn, quy mô công ty, và vị trí địa lý. Dưới đây là một số thông tin về mức lương trung bình (Theo Vietnam IT Market Report):

  1. Junior System Admin (dưới 2 năm kinh nghiệm): Mức lương trung bình: từ 8 triệu đến 15 triệu VND/tháng.
  2. Mid-level System Admin (2-5 năm kinh nghiệm): Mức lương trung bình: từ 15 triệu đến 25 triệu VND/tháng.
  3. Senior System Admin (trên 5 năm kinh nghiệm): Mức lương trung bình: từ 25 triệu đến 40 triệu VND/tháng.
  4. System Admin tại các công ty quốc tế hoặc các tập đoàn lớn: Mức lương có thể lên đến 50 triệu VND/tháng hoặc cao hơn, tùy thuộc vào trách nhiệm và yêu cầu công việc.

Cơ hội nghề nghiệp cho System Admin tại Việt Nam

Với sự phát triển không ngừng của ngành công nghệ thông tin và số hóa doanh nghiệp, nhu cầu về các chuyên gia quản trị hệ thống ngày càng tăng. Các công ty trong nhiều ngành nghề đều cần System Admin để đảm bảo hệ thống CNTT hoạt động ổn định và bảo mật.

System Admin có thể làm việc trong nhiều lĩnh vực khác nhau như tài chính, ngân hàng, giáo dục, y tế, sản xuất, và dịch vụ. Điều này mở ra nhiều cơ hội nghề nghiệp cho các chuyên gia trong lĩnh vực này.

Xem các vị trí tuyển dụng System Administrator tại TopDev

Có thể bạn muốn xem thêm:

Tham khảo thêm những công việc lập trình hot nhất thị trường tại đây

8 cạm bẫy lập trình viên dù biết vẫn khó tránh khỏi

Hãy thành thật với nhau. Một số trong chúng ta có lẽ đã theo đuổi nghề IT chỉ vì bố mẹ bắt buộc hoặc bởi vì bạn nghĩ rằng có thể kiếm được nhiều tiền theo cách này. Bạn không bắt đầu code ngay từ khi còn trẻ vì chả có đam mê với máy tính và cũng không thật sự thích phát triển phần mềm. Bạn sẽ mãi mãi luôn ở mức tầm thường. Kiếm chỉ đủ đồng tiền vì ngành này vẫn còn nhu cầu cao. Tuy vậy, bài viết này không hề dành cho cho những người như vậy.

Nếu bạn sẵn sàng vọc phá máy móc chỉ để hiểu cách chúng hoạt động. Nếu bạn luôn bỏ thời gian để học về cách làm game, viết ứng dụng. Nếu bạn tìm thấy chính mình trong phần mềm như một nghề nghiệp, bài viết này là dành cho bạn.

Bạn cần phải thay đổi cách bạn nghĩ về sự nghiệp của mình. Bạn không viết code cho đam mê nữa; bạn đang làm ra tiền. Hãy thể hiện sự đam mê cho các dự án phụ của bạn. Bằng mọi cách, hãy chắc chắn rằng bạn ít nhất vẫn thích công việc hiện tại của mình – thậm chí sẽ tốt hơn nếu bạn thích nó. Nếu không, hãy tìm một nơi bến khác trong khi nền kinh tế vẫn còn nóng.

Tuy nhiên, mục tiêu của bạn nên là có lương đạt tới tầm $401,000/mỗi năm để có đủ tiền mua một căn nhà, một chiếc xe hơi và làm bất cứ điều gì bạn muốn. Nếu không, bạn sẽ mãi mãi phải sống trong cực khổ.

Bạn cần phải suy nghĩ xa hơn về sự nghiệp chứ không dừng lại với chỉ công việc hiện tại. Để làm điều đó bạn cần phải tránh xa tám cạm bẫy này.

Cạm bẫy số 1: Chỉ làm về một công nghệ duy nhất

Tôi hiểu. Bạn thích Microsoft C # hoặc Java hoặc JavaScript hoặc Python hoặc Cobol. Tuy nhiên, hầu hết các công nghệ đều có vòng đời riêng biệt bao gồm nhưng lúc cao điểm, thích hợp và thoái trào. Có nghĩa là nếu bạn biết Cobol trong những năm 1980, thì điều đó thật tuyệt vời. Nếu bạn chỉ biết có mình nó vào đầu những năm 1990 thì bạn sẽ có nguy cơ mất việc.

Còn Java thì sao? Tôi đã từng kiếm được $ 300 một giờ với công việc tư vấn Java.

Còn hiện nay? Chả ai muốn phí tiền khi đã có sự giúp đỡ của internet và Google. Nếu bạn không nghĩ rằng JavaScript hay Python hay bất cứ thứ gì bạn thích sẽ giống như vậy thì bạn thật sự như một kẻ mù.

Cạm bẫy số 2: Đặt hết vào một công nghệ duy nhất

Vài năm trước, có vẻ như Ruby sẽ lên ngôi. Tại một thời điểm khác, Perl trông giống như nó sẽ đạt đến cùng cấp độ của Java. Dự đoán tương lai là rất khó khăn, vì vậy hãy luôn có những phương án thay thế để kịp thời xoay xở.

Cạm bẫy số 3: Yêu một cách mù quáng

Không bao giờ nói với Groovy user rằng nó đã “kết thúc”. Tuy nhiên, mọi người sẽ không phải trả phí bảo hiểm cho các nhà phát triển Groovy. Nếu sếp của bạn cho phép bạn sử dụng nó trên một dự án, có thể là vì anh ấy không quan tâm bạn sử dụng cái gì, nó không quan trọng lắm hoặc anh ta không biết gì.

Bằng mọi cách, hãy bám lấy công nghệ tốt nhấ và học chúng. Hãy sẵn sàng trở thành một trong những người đầu tiên biết điều đó và quảng cáo bản thân như một chuyên gia trong đó.

Tuy nhiên, cũng sẵn sàng để nhảy đi khi nhu cầu tuột xuống thấp hơn. Luôn có những công nghệ mới khác để yêu, dù đó là ngôn ngữ hay cơ sở dữ liệu.

Cạm bẫy số 4: Bị dị ứng với chính trị

Mọi tổ chức, dù lớn hay nhỏ đề có tồn tại một loại chính trị nào đó. Vì vậy, bạn cần trau dồi kỹ năng chính trị của mình. Nếu bạn không biết gì về chính trị, bạn sẽ là một con tốt trong các trò chơi của người khác. Không có nghĩa là bạn phải là kẻ ngốc, nhưng trong mọi công ty đều có một trò chơi chính trị đang diễn ra.

  32 cuốn sách học lập trình bạn nhất định phải đọc

Cạm bẫy số 5: Không quan tâm đến việc kinh doanh

“Tôi chỉ là một nhà phát triển, tôi không quan tâm đến kinh doanh” – Đây là điều mà tôi gọi là “tự sát sự nghiệp”. Bạn cần phải biết công ty của bạn có hoạt động tốt không? Thách thức kinh doanh chính của nó là gì? Các dự án quan trọng nhất là gì? Công nghệ hoặc phần mềm giúp đạt được chúng như thế nào? Công ty của bạn phù hợp với ngành công nghiệp tổng thể như thế nào? Nếu bạn không biết câu trả lời cho những câu hỏi đó thì tức là bạn đang làm việc trên các dự án không liên quan cho những người không liên quan trong các công ty không liên quan với số tiền tương đối không liên quan. Và bạn cũng sẽ rất dễ dàng bị thay thế.

Cạm bẫy số 6: Có tâm lý bị động

Một trong những công việc đầu tiên của tôi khi ấy có gặp một người đồng nghiệp hơn tôi vài tuổi. Anh ấy mắc sai lầm khi quyết định “đi nghỉ” mà không báo trước nên tôi đã phải hoàn thành toàn bộ dự án trong hai tuần. Dù vậy, có thể nói là tôi đã cứu anh ấy không bị mất việc. Tôi mong anh ta sẽ vui vì điều này. Nhưng anh ấy thì không. Trái ngược lại, anh ta nắm lấy mọi cơ hội để tôi bị sa thải. Nó dường như trở thành một nhiệm vụ của anh trong cuộc sống.

Tất nhiên, tôi đã hoàn thành công việc của mình. Tôi đã sáng tạo. Tôi luôn tìm ra những cách thức mới để hoàn thành công việc tốt hơn, nhanh hơn và giải quyết tốt vấn đề. Anh ấy giờ đã nghỉ hưu ngay sau khi tôi rời công việc đó. Đôi khi, chúng tôi có vô tình gặp ở quán cà phê nhưng giả vờ không nhớ nhau.

Lời khuyên của tôi là làm điều đúng đắn, nhưng hãy sẵn sàng đối mặt với những gì đang đến.

Cạm bẫy số 7: Không biết (hoặc quan tâm) giá trị của bạn

Nếu bạn nói rằng “tôi làm ở đây không vì tiền” thì hãy nên có một sở thích thay vì đi làm. Bằng mọi cách, đừng đi làm mỗi ngày chỉ để chật vật sống cho ngày tiếp theo. Nhưng cũng đừng đi làm ít hơn 50% so với những người khác. Hãy biết giá trị của bạn và thu nhập nó xứng đáng được hưởng.

Cạm bẫy số 8: Làm việc đối phó

“Nó chỉ là một công việc.” Không, đó là một bước trong sự nghiệp của bạn. Bạn sẽ không làm việc này mãi mãi. Vậy, bạn có thể học được gì ở đây? Bước tiếp theo là gì? Ai là nơi cuối cùng bạn muốn trở thành? Công việc này giúp bạn đạt được điều đó như thế nào?

Hãy phát triển khả năng nhận thức tình huống của doanh nghiệp. Nó sẽ làm cho chính bạn và những người bạn làm việc thoải mái hơn rất nhiều. Hơn nữa, đây không chỉ là một công việc, nó là một cuộc hành trình.

TopDev via infoworld

Có thể bạn quan tâm:

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev

Session là gì? Cookie là gì?

session là gì

Session là gì? –  Session, Cookie là 2 khái niệm được nhắc đến thường xuyên đối với các lập trình web. Khi mới bắt đầu tập làm web, nhiều bạn chắc hẳn rất hay nhầm lẫn giữa các khái niệm này. Sẽ có lúc bạn không biết lúc nào thì mình nên dùng session, lúc nào mình nên dùng cookie.

Session là gì?

Khái niệm session là gì không quá xa lạ với các fresher, Session là một phiên làm việc là một khái niệm phổ biến được dùng trong lập trình web có kết nối với database. Đặc biệt các chức năng như đăng nhập, đăng xuất người dùng sẽ khó có thể thực hiện được nếu không sử dụng session.

session là gì

Cách sử dụng Session

Một session bắt đầu khi client gửi request đến server, nó tồn tại xuyên suốt từ trang này đến trang khác trong ứng dụng web và chỉ kết thúc khi hết thời gian timeout hoặc khi bạn đóng ứng dụng. Giá trị của session sẽ được lưu trong một file trên server.

Ví dụ khi bạn đăng nhập vào một trang web và đăng nhập với tài khoản đã đăng ký trước đó. Server sau khi xác thực được thông tin bạn cung cấp là đúng thì nó sẽ sinh ra một tập tin chứa dữ liệu cần lưu trữ của người dùng.

Với mỗi session sẽ được cấp phát một định danh duy nhất SessionID. Khi kết thúc một phiên làm việc và bắt đầu một phiên mới, dĩ nhiên bạn sẽ được cấp một SessionID khác với trước đó. Bạn có thể tuỳ ý quyết định xem nên lưu trữ những thông tin nào vào Session. Nhưng thông thường chúng ta chỉ nên lưu những thông tin tạm thời trong session.

Giống khái niệm session là gì, khái niệm cookie cũng được dùng để lưu những thông tin tạm thời. Nhưng tập tin cookie sẽ được truyền từ server tới browser và được lưu trữ trên máy tính của bạn khi bạn truy cập vào ứng dụng.

Cách sử dụng Cookie

Cookie thường được tạo ra khi người dùng truy cập một website, cookie sẽ ghi nhớ những thông tin như tên đăng nhập, mật khẩu, các tuỳ chọn do người dùng lựa chọn đi kèm. Các thông tin này được lưu trong máy tính để nhận biết người dùng khi truy cập vào một trang web.

session là gì

Khi người dùng truy cập đến một trang web có sử dụng cookie, web server của trang đó sẽ tự động gửi cookie đến máy tính của người dùng. Khi truy cập đến các trang web sử dụng được cookie đã lưu, những cookie này tự động gửi thông tin của người dùng về cho chủ của nó (người tạo ra cookie). Tuy nhiên những thông tin do cookie ghi nhận không được tiết lộ rộng rãi, chỉ có website chứa cookie mới có thể xem được những thông tin này.

Mỗi cookie thường có khoảng thời gian timeout nhất định do lập trình viên xác định trước. Những thông tin được lưu vào cookie ví dụ như thông tin đăng nhập, thao tác người dùng, tần xuất ghé thăm website, thời gian truy cập… Tất cả chúng đều là những thông tin mang tính tạm thời và được lưu trong 1 khoảng thời gian.

Cookie được xem là một thành phần không thể thiếu được với những website có khối lượng dữ liệu lớn, có số lượng người dùng đông, và có những chức năng đi kèm với thành viên đăng ký.

  Đánh cắp Cookie bằng cách lợi dụng lỗi bảo mật XSS
Cookie Session session là gì session là gì
Cookie được lưu trữ trên trình duyệt của người dùng. Session không được lưu trữ trên trình duyệt.
Dữ liệu cookie được lưu trữ ở phía client. Dữ liệu session được lưu trữ ở phía server.
Dữ liệu cookie dễ dàng sửa đổi hoặc đánh cắp khi chúng được lưu trữ ở phía client. Dữ liệu session không dễ dàng sửa đổi vì chúng được lưu trữ ở phía máy chủ.
Dữ liệu cookie có sẵn trong trình duyệt đến khi expired. Sau khi đóng trình duyệt sẽ hết phiên làm việc (session)

 

Có thể bạn muốn xem thêm:

Xem thêm xin việc công nghệ thông tin lương cao tại TopDev!

Digital Transformation: Survive and Thrive – Cách mạng số và những bước ngoặt lịch sử

Những giá trị mà Digital Transformation có thể đem lại cho xã hội có thể kể đến lực lượng lao động được upgrade kỹ năng, automation thay thế sức người,… Trong đó, giá trị kinh tế tích lũy ước tính trong giai đoạn 2016 đến 2025 dao động từ khoảng 310 tỷ đô la đến 550 tỷ đô la. Về lợi ích phi kinh tế, digitalization có khả năng giảm phát thải CO2 từ 60 – 100 triệu tấn, cứu sống 20 đến 30 người và tránh 2.000 đến 3.000 người bị thương trong thập kỷ tới.

Nếu lúc trước là Kodak thì nay là Instagram, trước là Borders Books, nay là Amazon, trước là khách sạn, nay là Airbnb.

Sự thật là cứ 10 cái tên có trong danh sách Fortune 500 thì sẽ có 4 cái tên biến mất khỏi bảng xếp hạng trong vòng 10 năm tới, chính là nhường chỗ cho các công ty mới biết tận dụng công nghệ để để vượt trội.

Vậy các hướng đi của một doanh nghiệp trong việc ứng dụng công nghệ (Digitalize) là gì? Hay nói cách khác, đâu xu hướng Digital Transformation hiện nay?

IA (Intelligent Automation): Tự động hóa thông minh đã sẵn sàng cho sự phát triển bùng nổ. Trước đây, IA bị giới hạn trong việc hỗ trợ các quy trình rất phức tạp như xử lý tài chính trong ngân hàng và cung cấp dịch vụ trên các mạng viễn thông khổng lồ.

AI (Artificial Intelligence): Đến năm 2021, 75% ứng dụng doanh nghiệp thương mại sẽ được tích hợp AI và hơn 50% người tiêu dùng sẽ tương tác với AI. Đến năm 2020, các trợ lý kỹ thuật số và bot cá nhân sẽ ảnh hưởng đến 10% tổng doanh số.

Digital Transformation & Business Intelligence): nghe như khó có sự liên kết nhưng bạn có hình dung được đây là một tổ hợp giữa một hệ thống hiện đại góp phần giải quyết những phép tính khó và một quá trình xây dựng văn hóa digital. Nhìn chung đều hướng đến một doanh nghiệp dẫn đầu!

Big Data Analyst: hiểu khách hàng bằng những con số “biết nói”. Vì vấn đề cốt lõi không nằm ở việc bạn thu thập dữ liệu như thế nào mà thay vào đó, là bạn dùng dữ liệu để làm gì?

Thực tế, trên thế giới đã có nhiều câu chuyện về sự thành công của các manager khi áp dụng digital transformation. Ví dụ, thông qua dữ liệu và phân tích dự đoán, doanh nghiệp có thể giải quyết các vấn đề sản xuất và bảo trì trước, hoặc bệnh viện có thể cung cấp dịch vụ chăm sóc sức khỏe thông qua công nghệ chẩn đoán nâng cao.

Tóm lại: “Những phát minh công nghệ mang đến cho doanh nghiệp hai lựa chọn: đột phá để dẫn đầu hoặc là kẻ theo sau”

Trên đây chỉ là những phần nổi của tảng băng chìm mang tên Digital Transformation. Những bước ngoặt lịch sử mà cuộc cách mạng số này đem lại là gì? Tại sao đây được xem là phương pháp phát triển hàng đầu được nhiều công ty săn đón? Đây chắc chắn là một trong 6 topics nổi bật của Vietnam Web Summit 2019 mà bạn sẽ không muốn bỏ lỡ. Sân chơi công nghệ hot nhất nửa cuối năm đã trở lại, nơi hội tụ của những anh tài data, AI, Java,… cùng nhau chia sẻ và cập nhật thông tin, xu hướng nổi bật trong ngành.

Code giảm giá dành cho thành viên TopDev: TOPDEVBLOG@VWS2019  (số lượng có hạn, độc giả nhập mã tại trang mua vé)

Heroku là gì? Cách đưa ứng dụng lên Heroku

Heroku là gì? Cách đưa ứng dụng lên Heroku

Heroku là gì? Heroku là nền tảng đám mây cho phép các lập trình viên xây dựng, triển khai, quản lý và mở rộng ứng dụng (PaaS – Platform as a service).

Bạn có ý tưởng cần thử nghiệm và đo đạc các đánh giá của người dùng? Tuy nhiên để đưa một website hoạt động thì bạn cần nào là code, nào là cài đặt máy chủ, webserver...

Với Heroku, bạn chỉ cần tập trung chuyên môn vào code và deploy là bạn có thể đưa sản phẩm ngay đến người dùng để lấy ý kiến.

Heroku là gì?

Heroku là gì? Nó là nền tảng đám mây cho phép các lập trình viên xây dựng, triển khai, quản lý và mở rộng ứng dụng (PaaS – Platform as a service).

Nó rất linh hoạt và dễ sử dụng, cung cấp cho một con đường đơn giản nhất để đưa sản phẩm tiếp cận người dùng. Nó giúp các nhà phát triển tập trung vào phát triển sản phẩm mà không cần quan tâm đến việc vận hành máy chủ hay phần cứng…

Heroku là gì

Heroku hoạt động như thế nào?

Sau khái niệm Heroku là gì thì hãy cùng nhau tìm hiểu các hoạt động của nó. Heroku chạy các ứng dụng trong dynos – nó là một máy ảo mà có thể tăng giảm sức mạnh dự vào độ lớn của ứng dụng.

Hiểu đơn giản là dynos nhưng là các block, bạn muốn tăng tốc độ xử lý nhiều công việc phức tạp thì thêm block (scale chiều ngang) hoặc tăng kích thước block (scale chiều dọc) .

Heroku sẽ thanh toán phí tháng dựa trên số lượng dynos và kích thước mỗi dyno bạn sử dụng.

Heroku có ưu và khuyết điểm gì?

Bạn có thể dùng Heroku miễn phí cùng với vô vàn các addons hỗ trợ cực kỳ hữu ích thì đấy được coi là một trong những dịch vụ hấp dẫn. Hỗ trợ nhiều ngôn ngữ lập trình như:

Ngoài ra chúng ta còn được cung cấp Database, SSL miễn phí, hỗ trợ mạnh làm việc team cũng như liên kết với Github một cách đơn giản.

Khuyết điểm thì tất nhiên là có, việc miễn phí sẽ chỉ có giới hạn là 550 giờ mỗi tháng. Nếu muốn tăng lên 1000 giờ thì bạn cần cài đặt phương thức thanh toán trên đó. Tuy nhiên để kiểm nghiệm một ý tưởng hay một trang web nhỏ thì nhiêu đó là quá đủ để thu về kết quả.

Sau 2 đến 3 giờ nếu server không có người truy cập thì server sẽ chuyển sang trạng thái ngủ. Về việc server bị tắt khi không có traffic, cách đơn giản nhất là tự tạo traffic cho nó.

Cách dễ nhất là dùng Pingdom để ping trang blog của bạn thường xuyên giữ cho server không bị tắt.

Heroku có những tính năng gì?

  • Heroku Runtime

Nó cung cấp các smart container mà ứng dụng của bạn sẽ chạy trong đó. Nó xử lý mọi từ từ cấu hình, điều phối, cân bằng tải, backup, log, bảo mật…

  • Heroku Teams

Đây là một công cụ quản lý nhóm, kết hợp nhiều lập trình viên lại với nhau để xây dựng phần mềm tốt hơn.

Các nhóm này có thể tự tổ chức, kiểm soát, thêm thành viên và sử dụng các công cụ cộng tác như Heroku Pipelines.

  • Scale

Heroku có thể mở rộng quy mô ứng dụng ngay lập tức, cả theo chiều dọc và chiều ngang.

  • Add-ons

Mở rộng, nâng cao và quản lý các ứng dụng của bạn với các dịch vụ được tích hợp sẵn như New Relic, MongoDB, SendGrid, Searchify, Fastly, Papertrail, ClearDB MySQL, Treasure Data…

  • Code/data rollback

Heroku cho phép bạn khôi phục mã nguồn hoặc cơ sở dữ liệu của mình về trạng thái trước đó ngay lập tức.

  • App metrics

Với tính năng giám sát tích hợp lưu lượng, thời gian phản hồi, bộ nhớ, tải CPU và lỗi…bạn sẽ luôn biết được ứng dụng của bạn đang hoạt động ra sao.

  • Continuous delivery

Heroku Flow sử dụng Heroku Pipeline, Review Apps và tích hợp Github để xây dựng quy trình CI/CD gồm build, test, deploy…

  • GitHub Integration

Tích hợp Github giúp bạn có thể pull request, push, commit,…

Deploy ứng dụng sử dụng Heroku

Đây là một ví dụ về việc đưa một project Laravel lên Heroku. Đầu tiên hãy lên Heroku đăng ký một account.

Bước 1: Cài Heroku CLI

Bạn cài đặt theo link hướng dẫn dưới đây cho hệ điều hành mình đang dùng, do mình sử dụng MacOS nên sẽ cài thông qua homebrew

brew install heroku/brew/heroku

Sau đó xác định phiên bản của nó bằng command:

heroku --version

Bước 2: Cài đặt ứng dụng Laravel

Mở terminal và sử dụng command sau:

composer create-project laravel/laravel herokularavel --prefer-dist

Bước 3: Tạo một Procfile

Bên trong thư mục gốc của Laravel (root), tạo một file gọi là Procfile – chứa câu lệnh mà heroku sẽ chạy. Sau đó bỏ dòng này vào procfile:

# Procfile
web: vendor/bin/heroku-php-apache2 public/

Bước 4: Khởi tạo dự án với Git repo

git init

Bước 5: Đăng nhập vào Heroku từ terminal

heroku login

Bước 6: Tạo một ứng dụng Heroku

Gõ lệnh sau tại thư mục chứa code, Heroku sẽ yêu cầu bạn nhập tài khỏan, rồi tạo một “app” cho bạn, đồng thời thiết lập git để sẵn sàng “đẩy code lên Heroku”

heroku create
Creating app... done, ⬢ ironman-spiderman-12345
https://ironman-spiderman-12345.herokuapp.com/ | https://git.heroku.com/ironman-spiderman-12345.git

Nó sẽ tự động tạo một ứng dụng với tên random, ví dụ như: ironman-spiderman-12345. Bạn sẽ có một url là ironman-spiderman-12345.herokuapp.com

Bước 7: Setting một Laravel encryption key

Gõ lệnh sau:

php artisan key:generate --show

Nó sẽ show một key và bạn copy vào cho vào lệnh sau:

heroku config:set APP_KEY={Your copied key}

Bước 8: Push sự thay đổi lên Heroku

Sau đó add các file vào Git:

git add .

Commit các thay đổi:

git commit -m "laravel deploy to heroku"

Push nó lên Heroku server:

git push heroku master

Và bạn sẽ thấy:

Heroku là gì

  Jenkins là gì? Build và deploy code nhanh chóng với Jenkins
  Kubernetes là gì? Cùng tìm hiểu cách hoạt động của K8s
  Microservices là gì? Speed up Microservices 1: Tác dụng phụ và một số chiến lược cơ bản

Bước 9: Start ứng dụng

Để start ứng dụng trên Heroku, bạn gõ lệnh sau:

heroku open

Lúc này ứng dụng sẽ live trên url: https://ironman-spiderman-12345.herokuapp.com/ (cái này mình chỉ ghi ví dụ để bạn dễ mường tượng)

Tổng kết

Bài viết giúp các bạn biết về Heroku là gì, đồng thời hướng dẫn các bước cơ bản chạy một ứng dụng web app trên Heroku. Một số lưu ý:

  • Heroku hỗ trợ 1 free database PostgreSQL.
  • Khi chạy production, hầu hết các web app sẽ được chạy trên các “máy ảo”/”server”/”cloud” riêng. Người dùng sẽ tự cài đặt database, cài requirements và chạy code. Heroku là dịch vụ rất tiện nhưng khá đắt khi website bắt đầu lớn, theo mình chỉ thích hợp sử dụng test mà thôi.

Có thể bạn muốn xem thêm:

Xem thêm tuyển dụng ngành cntt hấp dẫn trên TopDev

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2024

9-du-an-moi-nhat-giup-ban-thanh-trum-front-end-trong-nam-2020

Dù xuất phát điểm bạn ở đâu, là một tay gà mờ hay lão làng trong ngành, việc liên tục cập nhật khái niệm, ngôn ngữ và framework mới là điều bắt buộc để theo kịp xu hướng, đặc biệt là các tip và trick về frontend. Lấy ví dụ, cách đây 4 năm, React, nguồn mở của Facebook trở thành lựa chọn số 1 của các nhà lập trình JavaScript trên toàn cầu.

Tuy nhiên, Vue và Angular có chỗ đứng nhất định trong thị trường, và theo sau đó là sự ra đời hàng loạt của các framework Next.js, Nuxt.js và Gatsby, Gridsome, Quasar. Nếu bạn định hướng bản thân là một nhà lập trình JavaScript chuyên nghiệp, bạn cần có sự phong phú trong kinh nghiệm ở nhiều framework khác nhau.

Và nếu bạn thực sự đã vạch ra kế hoạch để trở thành một master, thì xin chúc mừng bạn, những tổng hợp dưới đây là 9 dự án, bao gồm những topic cụ thể kèm theo thư viện JavaScript để bạn tham khảo. Hãy nhớ rằng bạn chỉ thực sự thành thạo nó khi bắt tay thực hành và tự tạo cho riêng mình.

Xây dựng ứng dụng tìm kiếm phim bằng React (với Hook)

Bạn sẽ học được gì?

Xây dựng ứng dụng này, bạn sẽ cải thiện Kỹ năng React của mình bằng Hooks API. Dự án minh họa dưới đây sử dụng các thành phần của React, tập hợp nhiều hook, API bên ngoài và tất nhiên là một số định dạng thông qua CSS.

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Tech Stack & Features

  • React with Hooks
  • create-react-app
  • JSX
  • CSS

Dù không sử dụng bất kì một class nào, những dự án này mang đến cho bạn một điểm khởi đầu hoàn hảo với các chức năng của React trong năm 2022. Bạn có thể tham khảo ví dụ dưới đây: https://www.freecodecamp.org/news/how-to-build-a- phim-search-app-using-Reac-hook-24eb72ddfaf7/

Ứng tuyển ngay các vị trí tuyển dụng Frontend trên TopDev

Xây dựng ứng dụng trò chuyện với Vue

Một dự án tuyệt vời khác dành cho bạn là xây dựng một ứng dụng trò chuyện bằng thư viện JavaScript VueJS.

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Bạn sẽ học được gì?

Theo hướng dẫn này, bạn sẽ tìm hiểu cách thiết lập ứng dụng Vue từ đầu, tạo các component, handling state, tạo route, liên kết dịch vụ với bên thứ 3 và thậm chí handling authentication.

Tech Stack & Features

  • Vue
  • Vuex
  • Vue Router
  • Vue CLI
  • Pusher
  • CSS

Đây thực sự là một dự án tuyệt vời để bắt đầu với Vue hoặc cải thiện các kỹ năng hiện có của bạn để khắc phục sự phát triển vào năm 2022. Bạn có thể tìm thấy hướng dẫn ngay tại đây: https://www.sitepoint.com/pizer-vue-real-time-chat-app/

Xây dựng một ứng dụng thời tiết đẹp với Angular 8

Ví dụ này sẽ giúp bạn xây dựng một ứng dụng thời tiết đẹp bằng cách sử dụng Angular 8 của Google:

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Bạn sẽ học được gì?

Dự án này sẽ dạy cho bạn các kỹ năng có giá trị như trong khi bắt đầu tạo một ứng dụng, phát triển các thiết kế đi đến triển khai.

  Roadmap Frontend Developer - "Con đường tắt" để trở thành cao thủ Frontend Developer

Tech Stack & Features

  • Angular 8
  • Firebase
  • Server-Side Rendering
  • CSS with Grid Layout and Flexbox
  • Mobile friendly & responsive
  • Dark Mode
  • Beautiful UI

Điểm độc đáo của phần mềm đọc hiểu này là bạn không phải học từng thứ một mà sẽ được học toàn bộ lộ trình từ bản thiết kế sơ khai đến bản hoàn chỉnh cuối cùng để triển khai được.

https://medium.com/@hamedbaatour/build-a-real-world-beautitable-web-app-with-angular-6-a-to-z-ultimate-guide-2018-part-i-e121dd1d55e

Xây dựng ứng dụng việc cần làm với Svelte

Tuy là tân binh so với React, Vue và Angular, Svelte kinda cũng là một trong những dự án hấp dẫn nhất hành tinh trong năm 2022.

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Bạn sẽ học được gì?

Hướng dẫn này sẽ chỉ cho bạn cách tạo một ứng dụng bằng Svelte 3 từ đầu đến cuối. Nó sử dụng các component, styling và event handlers.

Tech Stack & Features

  • Svelte 3
  • Components
  • Styling via CSS
  • ES 6 syntax

Tham khảo một trong những dự án Svelte thành công hiếm hoi: https://medium.com/codingthesmartway-com-blog/building-a-svelte-3-todo-app-from-start-to-deployment-1737f72c23a6

Xây dựng giỏ hàng thương mại điện tử với Next.js

NextJs là framework phổ biến nhất để tạo các ứng dụng React hỗ trợ kết xuất phía máy chủ.

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Bạn sẽ học được gì?

Trong dự án này, bạn sẽ tìm hiểu cách thiết lập môi trường phát triển Next.js, tạo các trang và component mới, tìm nạp dữ liệu, định dạng và triển khai một ứng dụng tiếp theo.

Tech Stack & Features

  • Next.js
  • Components and Pages
  • Data Fetching
  • Styling
  • Deployment
  • SSR and SPA

Tham khảo một ví dụ đã triển khai thực tế: https://snipcart.com/blog/next-js-ec-Commerce-tutorial

Xây dựng một trang web blog đa ngôn ngữ đầy đủ bằng Nuxt.js

Nuxt.js sẽ phản ứng lại những gì Next.js sẽ phản ứng. Một framework tốt để kết hợp sức mạnh giữa render từ phía máy chủ và ứng dụng một trang. Ứng dụng cuối cùng mà bạn có thể tạo sẽ trông như thế này:

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Bạn sẽ học được gì?

Dự án ví dụ này sẽ dạy cho bạn cách xây dựng một trang web đầy đủ bằng cách sử dụng Nuxt.js từ lúc sơ khai đến bước triển khai cuối cùng. Nó sử dụng nhiều tính năng thú vị mà Nuxt cung cấp như các trang và component cũng như kiểu dáng với SCSS.

  Tính năng Frontend Presets của Laravel 5.5

Tech Stack & Features

  • Nuxt.js
  • Components and Pages
  • Storyblok module
  • Mixins
  • Vuex for state management
  • SCSS for styling
  • Nuxt middlewares

Theo cá nhân tôi, làm việc với Nuxt thực sự giúp bạn trở thành một nhà phát triển Vue tốt hơn! Tham khảo về dự án tại đây: https://www.storyblok.com/tp/nuxt-js-multilLanguage-website-tutorial

Xây dựng một blog với Gatsby

Gatsby là một trình tạo trang tĩnh tuyệt vời sử dụng React và GraphQL dưới hood. Đây là kết quả của dự án này:

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Bạn sẽ học được gì

Trong hướng dẫn này, bạn sẽ học cách tận dụng Gatsby để xây dựng một blog nổi bật mà bạn có thể sử dụng để viết bài của riêng mình trong khi sử dụng React và GraphQL.

Tech Stack & Features

  • Gatsby
  • React
  • GraphQL
  • Plugins & Themes
  • MDX / Markdown
  • Bootstrap CSS
  • Templates

Nếu bạn từng muốn tạo blog thì đây là một ví dụ hay ho để tận dụng React và GraphQL. Dù không chê giao diện của WordPress, nhưng với Gatsby, bạn có thể tạo các trang web có hiệu suất cao còn khi sử dụng React thì lại tạo một sự kết hợp tuyệt vời! Tham khảo thêm dự án dưới đây:

https://blog.bitsrc.io/how-to-build-a-blog-with-gatsby-and-boostrap-d1270212b3dc

Xây dựng một blog với Gridsome

Tương tự Next / Nuxt, Gridsome và Gatsby đều sử dụng GraphQL làm lớp dữ liệu nhưng Gridsome sử dụng VueJS. Gridsome là một trình tạo trang tĩnh tuyệt vời sẽ giúp bạn tạo các blog.

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Bạn sẽ học được gì

Dự án này sẽ dạy bạn cách xây dựng một blog đơn giản để bắt đầu với Gridsome, GraphQL và Markdown. Nó cũng bao gồm cách triển khai ứng dụng thông qua Netlify.

Tech Stack & Features

  • Gridsome
  • Vue
  • GraphQL
  • Markdown
  • Netlify

Dù không phải là hướng dẫn toàn diện nhất, tổng hợp trên đã bao gồm các khái niệm cơ bản về Gridsome và Markdown giúp cho các bạn mới bắt đầu dễ dàng hơn.

https://www.telerik.com/bloss/building-a-blog-with-vue-and-markdown-USE-gridsome

Xây dựng ứng dụng trình phát âm thanh giống SoundCloud với Quasar

Quasar là một framework khác của Vue cũng được sử dụng để xây dựng các ứng dụng di động. Trong dự án này, bạn sẽ tạo một ứng dụng trình phát âm thanh như sau:

9 dự án mới nhất giúp bạn thành trùm Frontend trong năm 2020

Bạn sẽ học được gì

Mặc dù các dự án khác tập trung chủ yếu vào các ứng dụng web, nhưng dự án này sẽ chỉ cho bạn cách tạo một ứng dụng di động bằng Vue thông qua framework Quasar. Bạn nên tự tạo một thiết lập Cordova hoạt động với cấu hình android studio/xcode. Nếu bạn chưa có, hãy tham khảo đường link tới Quasar ở dưới.

Tech Stack & Features

  • Quasar
  • Vue
  • Cordova
  • Wavesurfer
  • UI Components

Một dự án nhỏ cho thấy sức mạnh của Quasar khi xây dựng các ứng dụng di động:

Kết

Hẳn khi các anh em đọc qua bài này sẽ thực sự phân vân, liệu có nên bắt đầu với một framework hoàn toàn mới, hay tham gia vào một dự án mà bạn đã có kiến thức nền tảng. Đừng ngần ngại chia sẻ kinh nghiệm với TopDev nhé!

Có thể bạn quan tâm:

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev

Lập trình viên, hãy tự cứu lấy đôi mắt mình trước khi quá muộn

Lập trình viên, hãy tự cứu lấy đôi mắt mình trước khi quá muộn

Nghề lập trình viên làm việc nhiều giờ liên tục, cường độ cao với máy tính là điều không thể tránh khỏi. Đó chính là nguyên nhân của các vấn đề về mắt cảm giác mệt mỏi, mờ nhạt đôi khi đi kèm những cơn nhức đầu vào buổi chiều muộn. Đặc biệt, khi cùng một lúc sử dụng nhiều thiết bị: máy tính, điện thoại, máy tính bảng, tivi,.. thì những dấu hiệu này càng đến sớm hơn. Đó là những dấu hiệu cho thấy mắt bạn bắt đầu có vấn đề, và đã đến lúc cần quan tâm tới nó nhiều hơn.

Với đặc thù công việc của mình, thật khó để yêu cầu lập trình viên hạn chế hay không sử dụng máy tính. Nhưng may mắn thay, có một vài lời khuyên từ chuyên gia có thể giúp bạn có được đôi mắt sáng, khỏe mà vẫn có thể đảm bảo tốt công việc của mình:

Sử dụng style chữ hợp lý

Có thể bạn chưa biết, cỡ chữ và màu sắc của trang văn bản được hiển thị cũng rất quan trọng đối với thị giác. Cỡ chữ lý tưởng là cỡ chữ gấp 3 lần cỡ chữ nhỏ nhất mà bạn có thể đọc được dù đứng xa máy tính một khoảng cách gấp 3 lần khoảng cách thông thường khi sử dụng máy. Bạn nên chọn chữ đen trên nền trắng hoặc chữ đậm trên nền sáng. Cần nhớ không nên chỉnh cho độ tương phản giữa chữ và nền quá kém hoặc đọc chữ trên một nền quá rối rắm sẽ không tốt cho thị giác của bạn chút nào.

Chớp mắt đúng cách

Nhìn chằm chằm vào máy tính liên tục nhiều giờ liền khiến chung ta quên chớp mặt, dẫn tới tình trạng mắt bị khô gây cảm giác khó chịu. Khi tập trung thật khó để nhớ phải chớp mắt. Giải pháp dành cho bạn là sử dụng nước mắt nhân tạo để giúp ngăn ngừa và làm giảm khô mắt. Thuốc nhỏ mắt không có chứa chất bảo quản có thể sử dụng một cách thường xuyên. Còn nếu sử dụng thuốc nhỏ mắt chứa chất bảo quản thì không nên dùng quá 4 lần/ngày.

 Đặc biệt lưu ý là bạn cần tránh nhầm lẫn giữa thuốc nhỏ mắt thông thường với các loại thuốc nhỏ mắt đặc dụng chữa các bệnh về mắt vì chúng có thể làm trầm trọng thêm các triệu crứng khô mắt, không có lợi cho đôi mắt của bạn.

 

Tùy chỉnh độ sáng

Màn hình chói có thể gây mỏi mắt và đau đầu. Điều chỉnh độ sáng của bạn để tránh phản xạ trên màn hình của bạn hoặc xem xét nhận phim chống lóa.

Không chỉ ánh sáng từ màn hình máy tính mới là nguyên nhân khiến đôi mắt bạn gặp vấn đề. Ánh sáng hoàn hảo là phải nên kết hợp hài hoà giữa nguồn sáng tự nhiên và nguồn sáng nhân tạo. Ánh sáng mờ hay quá rõ, ánh sáng trắng hay ánh sáng vàng đều khiến mắt bạn phải điều tiết, sẽ tác động tiêu cực tới thị giác. Ví dụ khi làm việc trong phòng tối sẽ làm cho mắt bạn mệt mỏi vì mắt phải điều tiết theo độ sáng của màn hình và bóng tối xung quanh.

Quy tắc 20-20-20

Sau 20 phút làm việc, mất 20 giây để nhìn vào thứ gì đó cách xa 20 feet (~6m). Đôi mắt của bạn có các cơ giúp chúng di chuyển và tập trung vào các vật thể khác nhau, nhưng nếu chúng ta nhìn chằm chằm vào màn hình cùng khoảng cách trong nhiều giờ tại một thời điểm, những cơ đó sẽ khó điều chỉnh khi chúng ta di chuyển trở lại.

Bố trí  màn hình máy tính hợp lý

Trong quá trình làm việc, ánh sáng chói và ánh sáng phản xạ từ màn hình máy tính chiếu trực tiếp tới mắt sẽ khiến mắt bạn khó chịu và căng thẳng. Bạn nên điều chỉnh độ tương phản và độ sáng trên màn hình đến một mức độ thoải mái, đảm bảo các chữ cái trên màn hình rất dễ đọc hoặc đặt thêm kính lọc cho màn hình.
Đồng thời, bạn cần giữ cho màn hình trong tầm mắt hoặc dưới tầm nhìn một chút, vị trí màn hình máy tính nên được đặt cách mắt 50 đến 60 cm. Lưu ý là bạn phải lau sạch bụi từ màn hình máy tính thường xuyên nếu không lượng bụi sẽ làm giảm độ tương phản, khúc xạ và ánh sáng của màn hình.

Tư thế ngồi làm việc

Tư thế ngồi sử dụng máy tính thường rất hay bị mọi người bỏ qua. Nghển cổ hoặc nghiêng đầu khi nhìn vào máy tính sẽ gây đau đầu và nhìn mờ. Việc duy trì khoảng cách giữa mắt với màn hình không những làm giảm tác động xấu mà còn giúp mắt nhìn được tốt hơn. Hãy chú ý để có tư thế ngồi làm việc hiệu quả mà vẫn thoải mái nhất.

Ăn uống đủ chất

Bổ sung thêm chế độ ăn giàu vitamin, đặc biệt các loại vitamin A, E, C, B2… có nhiều trong các loại rau xanh, quả đỏ và uống nhiều nước nữa bạn nhé. Việc ăn uống đầy đủ chất, giúp cơ thể bổ sung năng lượng và làm mới thực đơn hàng ngày là liều thuốc giúp dân văn phòng phòng ngừa nhiều bệnh về mắt.

Tôi đã lên trình senior thế đấy!

Một bí kíp nho nhỏ được đúc kết từ một senior developer với nhiều năm kinh nghiệm xông pha chiến trường.

Ngã ở đâu – đứng dậy từ chỗ đấy

Có công mài sắt có ngày nên kim! Không phải tự nhiên một lão làng trong giới lập trình lại có thể chễm chệ ngồi ở vị trí đấy. Sau đây tôi sẽ chia sẻ cho anh em một chu trình để tu luyện đến cảnh giới bất khả chiến bại: mắc sai lầm – sửa lỗi sai – học được gì từ những lỗi sai đó – chia sẻ với anh em và quay lại bước 1.

>>> Xem thêm: Senior Developer là gì? Những điều thú vị về Senior Developer

Ma cũ liệu có hơn ma mới?!

Nhiều anh em dev nghĩ rằng chỉ cần trưng cái CV cộp mác +2, +5 năm thì các nhà tuyển dụng sẽ bị mờ mắt bởi những con số. Thực chất, khi thật sự bắt tay vào công việc, một điều sẽ sớm lộ ra rằng thực chiến mới sử dụng được trong cuộc chiến mạng khốc liệt ngày nay. Sẽ thật đáng buồn nếu trong số 5 năm kinh nghiệm bạn trải qua, bạn chưa từng vấp ngã và rút ra bài học cho những sai lầm đó.

Biết người biết ta – trăm trận trăm thắng

Dù không phải là một điều trong list dài dặc JD, nghiên cứu thị trường là công việc một dev chuyên nghiệp dành thời gian để thực hiện. Nếu chỉ dựa vào kinh nghiệm cá nhân, các dev sẽ dễ “chủ quan khinh địch” và dễ bị tấn công bởi những lỗi mới chưa gặp. Khi mang những “đứa con” của bạn ra thử nghiệm thực tế, bạn sẽ biết được ưu nhược một cách khách quan hơn.

>>>Xem thêm: Hãy commit code có tâm như Senior Developer

Tại sao, tại sao và tại sao?

Chuyện một tay mơ trong làng “cốt” bị phang ngay câu chốt “vì nó vốn như thế, anh gặp rồi, không sửa được” là điều thường xuyên như cơm bữa. Cái thằng nó dám lẳng lặng gõ gõ bàn phím để lục tung bằng được lỗi là ở đâu chính là cái thằng sẽ sớm làm nên chuyện! Đó là lý do có những lão làng kinh nghiệm lên đến 6,7 năm nhưng kiến thức chưa hẳn bằng một bé 3 năm vì họ có thói quen skip những lỗi mắc phải. Trong quá trình làm việc, đụng đến bug, không biết fix và chỉ ước rằng giá như được quay lại quá khứ để dũng cảm đối mặt với những sai lầm đó hơn.

Nếu không có lỗi, hãy cố gắng đào cho ra lỗi bởi một chương trình hoàn hảo là một chương trình mong manh và dễ bị tấn công nhất.

Tìm việc làm senior lương cao trên TopDev

Chủ động hướng dẫn cho anh em cấp dưới

Người ta nói cách xào lại kiến thức hiệu quả nhất là hướng dẫn cho người khác cách làm việc sao cho hiệu quả hơn. Một dev xuất sắc phải chứng minh được năng lực thông qua cách anh ta làm việc nhóm và hỗ trợ những người khác. Với những kinh nghiệm chia sẻ, những junior dev sẽ “tò mò” tìm tòi được hướng đi riêng cho chính mình, đồng thời những đàn anh dev sẽ rèn luyện các kĩ năng mềm của bản thân. Chưa kể, những câu chuyện trong đoạn hội thoại của người mới biết đâu sẽ giúp các senior dev cập nhật những xu hướng mới mà họ bỏ lỡ khi đang dành thời gian cày cuốc bên bàn phím.

>>> Xem thêm: Sự khác biệt giữa senior developer và developer with seniority

“Tôi không biết và tôi muốn biết tại sao”

Freakonomics – một tiểu thuyết gia bán chạy nhất thời đại có một câu châm ngôn rất nổi tiếng: “Ba từ khó nói nhất đối với con người không phải là “tôi yêu bạn” mà là “tôi không biết””.

Thật khó để một ai đó tự thừa nhận rằng họ không biết, đặc biệt khi họ đã đạt đến level “dev siêu cấp”. Một nghiên cứu chỉ ra rằng chỉ có những dev với kiến thức nửa vời mới cố gắng “giấu dốt”. Một lập trình viên đẳng cấp sẽ chứng minh năng lực của anh ta thông qua những điều chưa biết, và hãy quay lại điều 3: đụng vấn đề, đặt câu hỏi tại sao và tìm hiểu để giải quyết nó.

Kết luận

Chúc anh em sớm nắm trọn bí kíp tu luyện để trở thành những ngôi sao sáng trong làng code nhé.

Xem thêm việc làm developer tại TopDev

Thu hút ứng viên IT bị động – Dễ hay Khó?

Theo thông tin được cập nhật về thị trường IT mới nhất của TopDev, hiện nay có đến 62% ứng viên IT bị động, gấp gần 5 lần số lượng ứng viên chủ động tìm việc chỉ với 14%. Xu hướng này đã gây ra nhiều trở ngại cho các nhà tuyển dụng, đòi hỏi họ phải ngày một chủ động hơn trong việc tìm kiếm nhân tài. Chủ động hơn đồng nghĩa với việc các nhà tuyển dụng phải nỗ lực hơn, đầu tư nhiều thời gian để tìm kiếm và thu hút kiểu ứng viên này.

Nào hãy cùng TopDev tìm hiểu kĩ về ứng viên IT bị động, các ưu khuyết điểm, cũng như các biện pháp thực tiễn và chi tiết để cải thiện các vấn đề phát sinh từ kiểu ứng viên khó nhằn này nhé!

1. Ứng viên IT bị động là gì?

Ứng viên IT bị động – nôm na là những ứng viên IT không chủ động tìm việc nhưng được các nhà tuyển dụng chủ động tìm kiếm để lấp đầy cho các vị trí trống. Nói cách khác, họ không hề chủ động nộp CV ứng tuyển, mà chính những người tuyển dụng mới là người tìm kiếm thông tin liên lạc và trực tiếp mời họ ứng tuyển.

ứng viên IT bị động

Như bạn có thể thấy hiện nay có hơn 2/3 ứng viên IT khảo sát là ứng viên bị động, trong khi ứng viên chủ động chỉ dừng lại ở con số hạn chế 14%. Nói tới đây, bạn có thể thắc mắc kiểu ứng viên này có gì đặc biệt khiến cho mọi đội ngũ tuyển dụng phải “cuống cuồng” lên tìm kiếm? Cùng TopDev tìm hiểu kĩ hơn về điểm mạnh yếu của ứng viên IT bị động nhé!

2. Ưu khuyết điểm của ứng viên IT bị động?

Ưu điểm

Nguồn ứng viên đếm không xuể

Hiển nhiên là số người không quan tâm vị trí công việc của bạn gấp nhiều lần người quan tâm, tỉ lệ này cũng na ná khi bạn đăng một ảnh lên Instagram, số người like chắc chắn sẽ thấp hơn nhiều số người theo dõi bạn! Hãy nhớ rằng bất kì ai trong độ tuổi lao động ngoài kia đều có thể là những nhân tài tiềm năng góp phần không hề nhỏ cho doanh nghiệp.

Quan trọng hơn là để việc vận hành doanh nghiệp lâu dài, tiếp cận những ứng viên IT bị động là không thể tránh được, như số liệu TopDev đề cập ở trên, chỉ với 14% ứng viên trong thị trường là chủ động tìm đến bạn, theo dõi website của bạn thường xuyên, thì liệu nguồn ứng viên này có đủ để lấp đầy vị trí trống mỗi lúc một nhiều trong thời kì mật độ nhảy việc cao như hiện nay?

Giảm bớt căng thẳng về mặt thời gian

Một trong những ưu điểm cực lớn mà các nhà tuyển dụng thường hay bỏ qua khi nhắc tới  tuyển ứng viên IT bị động là họ bớt thấy áp lực hơn trong tình huống phải ra quyết định tức thời.

TopDev sẽ giúp bạn rõ hơn với so sánh nhỏ sau. Với ứng viên chủ động tìm việc, có khả năng rất cao họ đang ứng tuyển cho nhiều công ty khác nhau. Nếu quá trình tuyển dụng của bạn không tinh gọn và mất nhiều thời gian, ứng viên đó đã có thể chấp nhận làm ở một công ty khác. Và cho dù bạn có tăng độ hấp dẫn cho offer ngay từ đầu, họ vẫn chờ xem những công ty khác sẽ offer cho họ những gì. Kết quả là bạn sẽ đứng ngay ranh giới giữa sắp để mất một nhân tài và tăng chi phí cho doanh nghiệp.

thu hút ứng viên IT bị động -căng thẳng về mặt thời gian

Ứng viên IT bị động – ngược lại, thường sẽ không ứng tuyển cho nhiều công ty đơn giản vì họ đâu có chủ động tìm việc! Nếu quá trình tuyển của bạn khá dài và rườm rà, bạn cũng không phải lo lắng ứng viên sẽ được mời gọi offer hấp dẫn hơn.

Thẳng thắn, khách quan và công bằng

Do ứng viên IT bị động không tìm kiếm việc làm, có khi là họ đã có chỗ làm ổn thỏa, nên bạn không phải sợ việc bị ứng viên nói dối, phóng đại khả năng bản thân, làm mọi cách để được chấp nhận vào công ty. Chỉ đơn giản là bạn tiếp cận họ, nêu rõ những gì bạn cần, bạn cho họ, họ cân nhắc và chấp nhận ứng tuyển mà thôi. Vừa tiết kiệm thời gian cho cả hai, mà quyền lợi của 2 bên cũng dễ dàng thống nhất và đảm bảo hơn.

Ứng viên tiềm năng trong tương lai

Điều hiển nhiên là không phải ứng viên nào bạn tiếp cận cũng chấp nhận làm cho bạn ngay lúc đó. Bạn có thể không nhận được phản hồi nào từ cái email đầu tiên, nhưng đừng bỏ cuộc. Bây giờ họ không chấp nhận không có nghĩa là vài tháng sau họ vẫn thế.

Thay vì bỏ cuộc hoặc theo đuổi họ đến cùng (càng khiến họ thấy hoảng sợ hơn với doanh nghiệp của bạn) thì TopDev khuyên là bạn nên giữ liên lạc với họ với mật độ ổn định, 1 lần/tháng chẳng hạn, vừa duy trì được mối liên hệ về lâu dài, vừa có thể thuyết phục họ ứng tuyển trong tương lai.

Khuyết điểm

TopDev cũng tin rằng bạn có thể lường trước rằng khuyết điểm cực kì lớn của ứng viên bị động là “Quá tốn công để thu hút”. Vừa tốn sức tìm kiếm, vừa tốn thời gian làm mọi cách để thu hút, khiến doanh nghiệp mình hấp dẫn hơn trong mắt họ. Có thể nói đây là một bài toán cực kì nan giải cho các doanh nghiệp hiện nay.

  4 bí kíp đẩy mạnh tuyển dụng IT trên Facebook ít người biết

  Cập nhật xu hướng Employer Branding Event cho nhà tuyển dụng IT

3. Làm sao để thu hút ứng viên bị động

Một cách cơ bản cũng như quan trọng nhất mà TopDev thường hay nhấn mạnh trong các bài blog của mình là bạn phải đẩy mạnh “Thương hiệu tuyển dụng”. TopDev sẽ gợi ý cho bạn 2 cách để thu hút ứng viên bị động bằng qua việc thúc đẩy Employer Branding nhé.

Cách 1: Thương hiệu tuyển dụng gián tiếp qua Digital Channels

-Bài đăng trên các trang Blog: Theo báo cáo thị trường IT mới nhất của TopDev, có đến 70% ứng viên cập nhật kiến thức qua Tech blog, điều đó chứng tỏ rằng bạn có thể gia tăng mức độ nhận diện cho doanh nghiệp mình bằng việc đăng tải các bài blog với kiến thức hữu dụng, thông tin cần thiết để ứng viên dễ dàng tiếp cận.

Bạn có thể tận dụng trang Blog của doanh nghiệp bạn với vài nội dung như:

-Kiến thức lập trình hữu dụng

-Case studies thực tế từ công ty

-Chia sẻ kỹ thuật chuyên sâu từ team dev cũng như về môi trường và văn hóa làm việc…

Bên dưới là một số dữ liệu mà TopDev đã tiếp cận các dev để để tìm hiểu sâu hơn về thị hiếu, xu hướng cập nhật thông tin IT và học ngôn ngữ lập trình mới. Bạn có thể tham khảo và cân nhắc áp dụng vào xây dựng thương hiệu tuyển dụng cho doanh nghiệp mình nhé:

Thu hút ứng viên IT bị động

Tuy nhiên, nếu việc đó mất nhiều thời gian hay chưa thành công như mong đợi thì đừng quên là TopDev có cung cấp các bài viết xây dựng thương hiệu qua Techtalk.vn và Blog Topdev.vn nhé. Techtalk là chuyên trang tin tức và thông tin công nghệ hàng đầu Việt Nam với 1.500.000 lượt truy cập mỗi tháng. Bên cạnh đăng bài qua Techtalk, TopDev còn chia sẻ lên các Fanpage công nghệ với cộng đồng IT dày đặc như như TopDev, Hội những Dev vui tính, Tech Talk, Lập Trình Viên Confession, Anh Lập Trình Viên…giúp việc xây dựng thương hiệu đơn giản hơn rất nhiều.

thu hút ứng viên IT bị động - banner

-Banner trên Techtalk: Hiển thị banner trên các website công nghệ lớn (như Techtalk.vn, TopDev.vn). Như đã đề cập ở trên, Techtalk có gần 1.500.000 truy cập/tháng và đến 99% đối tượng là lập trình viên, đây là những người thường xuyên truy cập Techtalk để cập nhật thông tin, dĩ nhiên là khi banner của bạn được đặt ở những web có lượng traffic cao như thế, bạn đang dần cải thiện mức độ nhận diện và khơi gợi sự tò mò từ những ứng viên tiềm năng về doanh nghiệp bạn đó.

-Email Marketing: Một cách vô cùng quen thuộc để tiếp cận ứng viên bị động là trực tiếp gửi email quảng bá về doanh nghiệp, những vị trí còn trống cũng như những điều thú vị về công ty. Tuy nhiên vấn đề là làm sao để có database ứng viên IT dồi dào và sáng tạo được nội dung cực kì thu hút? Cả 2 điều kiện cần trên là cực kì thiết yếu để một chiến dịch Email Marketing hiệu quả. Thiếu yếu tố đầu thì sẽ không ai có động lực mở email bạn cả, nếu không có yếu tố 2 thì bạn đã bỏ lỡ quá nhiều ứng viên bị động bên ngoài kia.

TopDev có thể giúp kế hoạch Email Marketing hiệu quả hơn với kho dữ liệu 300.000 ứng viên IT, tỉ lệ mở trung bình lên đến 20% và tỉ lệ chuyển đổi cực ấn tượng.

Cách 2: Thương hiệu tuyển dụng trực tiếp qua Event

-Tech Event/Workshop: Không gì bàn cãi khi các event chuyên ngành là nơi hội tụ những ứng viên tiềm năng đến tham gia và tìm hiểu thêm về IT, đây là cơ hội cực kì lớn để bạn đẩy mạnh thương hiệu tuyển dụng của mình. Có thể nói đây là cách tốt nhất để branding và tiếp cận trực tiếp với ứng viên ngay tại event.

Bạn có thể tổ chức event với nội dung như: chia sẻ những bài toán kĩ thuật khó nhằn và cách xử lý mà doanh nghiệp bạn đã áp dụng thành công; câu chuyện có thật từ những người đứng đầu công ty hay từ 1 anh dev tiêu biểu chẳng hạn,..bất kì nội dung hấp dẫn nào để thu hút các ứng viên IT tham gia. Tuy nhiên, việc xây dựng nội dung hấp dẫn không quyết định 100% sự thành công trong tuyển dụng của bạn, bạn và doanh nghiệp phải nỗ lực nhằm tạo cho ứng viên cảm giác gần gũi, thân thiện, nắm rõ hơn về công ty bạn cũng như những tiềm năng cơ hội phát triển mà bạn mang lại cho họ.

Nếu như việc tự tổ chức mất nhiều chi phí và thời gian, TopDev có thể là trợ thủ đắc lực cho doanh nghiệp của bạn từ khâu lên nội dung, truyền thông, logistics và vận hành sự kiện. Với năng lực tổ chức nhiều sự kiện lớn trong năm và tần suất hơn 15 sự kiện mỗi tháng, doanh nghiệp cũng có thể tận dụng xuất hiện thương hiệu tuyển dụng của mình tại các kỳ sự kiện này, với nội dung phong phú với các chủ đề từ Mobile, Database tới hot trend như Machine Learning, AI,..Tìm hiểu thêm tại đây nhé!

-Tham gia các sự kiện công nghệ lớn: Bên cạnh các Tech event/Workshop đề cập bên trên, TopDev sẽ gợi ý 1 vài event lớn thường niên để bạn cân nhắc tham gia nhé:

Thu hút ứng viên IT bị động - event

  • Forbes Vietnam’s Tech Summit: hội nghị về công nghệ với diễn giả là các nhà đầu tư mạo hiểm, doanh nhân công nghệ tầm cỡ thế giới cùng chia sẻ tầm nhìn, tư duy về xu hướng công nghệ, thúc đẩy doanh nghiệp khởi nghiệp và mở ra khả năng phát triển mới.
  • Techfest Vietnam:còn gọi “Ngày hội Khởi nghiệp đổi mới sáng tạo”được tổ chức vào ngày 4-6/12 năm nay. Mục tiêu là nhằm quy tụ hệ sinh thái khởi nghiệp sáng tạo, kết nối đầu tư trong nước và quốc tế cũng như đề xuất cơ chế chính sách phục vụ Khởi nghiệp.
  • DevDay Da Nang: sự kiện phi lợi nhuận với những buổi hội thảo đầy tính tương tác theo xu hướng CNTT mới nhất, gian hàng tuyển dụng thu hút các ứng viên tiềm năng và buổi tiệc đêm giao lưu gắn kết cộng đồng lập trình viên tại Đà Nẵng.
  • Vietnam Mobile Day: tập trung vào lĩnh vực ứng dụng di động, hơn 100 chủ đề chuyên sâu cùng đối tượng đa dạng như developer, marketer và designer. Ngoài ra đây cũng là nơi để triển lãm các sản phẩm, tiếp cận ứng viên tiềm năng phục vụ cho việc tuyển dụng hiệu quả.
  • Vietnam Web Summit: sự kiện IT lớn và qui mô nhất Việt Nam tập trung về Công nghệ với diễn giả gồm quản lí cấp cao và chuyên gia hàng đầu. Điều quan trọng hơn đây là cơ hội lớn không được bỏ lỡ khi bạn muốn thu hút ứng viên IT bị động bởi có gần 10.000 người tham gia và hơn 3 triệu online reach. Ngày hội được tổ chức vào ngày 6,13/12 lần lượt tại HCM và Hà Nội với dự kiến hơn 10.000 người tham gia.

Thu hút ứng viên IT bị động - VWS

Nếu còn gì chưa rõ, hãy vào đây và đội ngũ TopDev sẽ giúp bạn giải đáp mọi thắc mắc !

Có thể bạn quan tâm:

Xem thêm việc làm Developers hấp dẫn tại TopDev

TopDev tổng hợp

  TOP 20 thách thức tuyển dụng nhân sự IT năm 2024 (Phần 1)

  TOP 20 thách thức tuyển dụng nhân sự IT năm 2024 (Phần 2)

SOLID – Đã đến lúc cần thay đổi bản thân

Người viết: Quách Đại Phúc

Có thể trong quá trình làm việc với người thông minh chú ý quan sát thì chỉ cần vài tháng, nhưng với những người kém thông minh hơn hay lười hơn thì phải mất cả năm để nhận ra code mình có vấn đề và Bốc mùi đến như thế nào, rõ ràng việc code sạch đẹp, dễ maintain nó cũng như cách sống vậy, có người gọn gàng ngăn nắp, người thì bừa bộn, luộm thuộm (Mình không nói những bạn code không sạch là bừa bộn nhé  cái này chỉ là ví dụ).

Mình tự nhận là người khá ngăn nắp nhưng code thì không sạch (chán). Và mình nghĩ cũng đã đến lúc chúng ta cần tự trau chuốt lại cả cách sống và cách code nếu chúng ta còn tiếp tục muốn sống sót được trong cái nghề mà mỗi ngày càng có nhiều người giỏi hơn, thông minh hơn chúng ta xuất hiện. Chúng ta không thể thông minh, nhanh nhẹn hơn họ được nhưng bù lại chúng ta có sự chỉn chu và những kinh nghiệm xương máu. Để tự thanh lọc mình trong việc code mình bắt đầu lang thang đi tìm những design patterns, Principles … thứ mà những anh hùng đi trước để lại cho hậu thế. Mình đã tìm hiểu DDD, DI …tuy nhiên thấy chúng khá khó hiểu và gây lú (vì mình già rồi chăng). Và nguyên lý SOLID xuất hiện trong quá trình tìm kiếm, đọc … ồ mình nên bắt đầu từ đây, nó khá dễ hiểu, có nhiều người đã áp dụng và chia sẻ trước đây rồi. Tại sao mình lại không chứ. Đầu tiên hãy cùng bắt đầu thanh lọc cơ thể bằng những khái niệm cơ bản nào.

1. Single responsibility principle

Nguyên lý đầu tiên có nghĩa là:

Một Class chỉ nên có một chức năng duy nhất, chỉ sửa đổi với một lý do duy nhất. Giúp dễ dàng quản lý code và bảo trì hơn.

Hãy cùng xem ví dụ sau:

class QuanLySinhVien {
    
    public function getListSV() {}

    public function getDSLopHoc() {}
    
    public function getDSMonHoc() {}

    public function saveSV() {}

    Public function editSV() {}

    public function deleteSV() {}
}

Trước giờ khi học ở trường chúng ta thường viết code theo kiểu 3 trong 1, tức là có gì cũng tống chung vào một class, đôi khi chúng ta lại nghĩ class này thật đa năng nhưng nó chỉ đa năng khi chúng ta đi học ở trường, làm mấy cái project nho nhỏ, và đương nhiên cũng chẳng thầy cô nào phàn nàn về vấn đề đó. Kể cả khi đi làm nhiều lúc chúng ta vẫn thường thấy có những function nghe tên thì đã thấy ngay nó thuộc class B nhưng vẫn có người cố nhét nó vào class A. Nguyên nhân là bởi trong class A đó đang có một số biến mà function này muốn sử dụng mà họ lười khai báo lại ở class B. Điều này là hoàn toàn sai lầm cho sự maintain sau này.

Vậy theo nguyên lý 1, chúng ta sẽ tách class trên ra thành những class con, mà mỗi class thể hiện một đối tượng cụ thể, giữ những chức năng của riêng nó.

class LopHoc {
    public function getDSLopHoc() {}
}

class MonHoc {
    public function getDSMonHoc() {}
}

class SinhVien {
    public function getListSV() {}

    public function saveSV() {}

    Public function editSV() {}

    public function deleteSV() {}
}

Khi đã có những class với những chức năng cụ thể của riêng nó, chúng ta sẽ gặp tình huống trong khi làm việc là spec thay đổi vậy nên chúng ta bắt buộc phải sửa lại code. Chúng ta cùng xem nguyên lý thứ 2.

2. Open/closed principle

Nội dung của nguyên lý này là :

Chúng ta có thể mở rộng một class, nhưng hạn chế thay đổi bên trong class đó.

Thoạt nghe thì thấy không đúng cho lắm, nhưng nghe lại thì thấy không đúng thật (haha) . Các bạn để ý mình đã tô đậm từ Hạn chế bởi lẽ với nguyên lý này chũng ta không nên áp dụng một cách máy móc là cứ có tính năng mới là tôi lại tạo ra một class con kế thừa class cha. Điều này làm cho code các bạn không dễ hiểu mà còn loằng ngoằng hơn. Mà theo mình class mới chỉ nên sinh ra khi nó là một thực thể riêng biệt, không có nó thì thực thể khác vẫn không ảnh hưởng gì, còn nếu sau khi phân tích chúng ta thấy rằng thiếu đi chức năng này sẽ làm ảnh hưởng đến tất cả thì đương nhiên là code cũ đang thiếu, ta nên bổ sung thêm vào cho class đó. Nếu là framework hay plugin thì chúng ta nên tạo commit để contribute cho framework/plugin đó. Giả sử như trong ví dụ về quản lý sinh viên trên, chúng ta muốn tạo chức năng thêm môn học thì thay vì máy móc ta viết class con kế thừa class MonHoc chỉ để thêm tính năng addMonHoc thì ta nên thêm luôn nó vào class MonHoc vì việc thêm môn học là tính năng mà bắt buộc môn học nào cũng cần có.

Hoặc cùng xem class SinhVien, nếu muốn thêm tính năng đăng ký nội trú thì chúng ta nên tách riêng class con kế thừa từ class SinhVien, bởi lẽ không phải tất cả sinh viên đều muốn đăng ký ở nội trú, ví dụ thích ra ở trọ chẳng hạn.

class NoiTru extends SinhVien {
    public function DangKyNoiTru(SinhVien $id) {}
}

3. Liskov Substitution Principle

Nguyên lý này có nội dung như sau:

Các đối tượng thuộc loại con có thể thay thế các đối tượng thuộc loại cha mà không làm thay đổi tính đúng đắn của chương trình.

Nguyên lý này rất trừu tượng và khó hiểu, nên các bạn hãy cố gắng tiêu hóa nhé. Đã có rất nhiều tranh cãi đúng sai về nguyên lý này. Chúng ta có thể hình dung ví dụ: Các đối tượng HinhVuong đều có thể xem là các đối tượng HinhChuNhat.

Bởi vì chúng ta đều biết hình vuông là hình chữ nhật có 2 cạnh kề bằng nhau, vì thế hình vuông sẽ kế thừa hết các thuộc tính của hình chữ nhật.

4. Interface Segregation Principle

Nội dung của nguyên lý này là :

Thay vì dùng 1 interface lớn, ta nên tách thành nhiều interface nhỏ, với nhiều mục đích cụ thể

Nguyên lý này khá đơn giản đó là chúng ta không nên có một interface quá lớn vài trăm method, mà chúng ta nên tách chúng ra thành từng loại nhỏ, mỗi loại thể hiện một mục đích cụ thể nào đó.

Ví dụ thay vì viết tất cả các thuộc tính của class DongVat như bên dưới

interface DongVat {
    public function chay();
    
    public function boi();
    
    public function bay();
}

Chúng ta có thể tách ra thành class cha và các interface như sau:

interface DongVatTrenCan {
    public function chay();
}

interface Chim {
    public function bay();
}

interface Ca {
    public function boi();
}

Mỗi loại tách riêng theo từng đặc tính, như vậy sẽ giúp chúng ta dễ dàng quản lý và maintain sau này cũng như dễ dàng đọc hiểu và sửa code.

5. Dependency inversion principle

Nội dung của nguyên lý này là:

  1. Các module cấp cao không nên phụ thuộc vào các module cấp thấp. Cả 2 nên phụ thuộc vào abstraction.
  2. Abstraction không nên phụ thuộc vào detail. Detail nên phụ thuộc vào abstraction. (Các class giao tiếp với nhau thông qua interface, không phải thông qua implementation.)

Trước tiên chúng ta nên hiểu Interface là một chuẩn kết nối giữ class cấp cao hơn và class cấp thấp, để thiết bị A có thể kết nối được với thiết bị B chúng cần giáo tiếp thông qua 1 chuẩn riêng, chỉ cần một thiết bị có chuẩn như vậy là có thể giao tiếp được với thiết bị A. Ví dụ thường thấy đó là chân sạc điện thoại, Iphone và SAMSUNG có một chân cắm riêng và chỉ cần cái sạc nào có rắc cắm phù hợp là có thể cắm vào sạc được.

class Backend {
    public function codeJava() {
        // code here
    }
}

class Frontend {

    public function codeJS() {
        // code
    }

}

class Project {

    public function build() {
        $backend = new Backend();
        $frontend = new Frontend();
        $backend->codeJava();
        $frontend->codeJS();
    }

}

Như chúng ta có thể thấy qua ví dụ trên class Project đang phụ thuộc vào 2 class Backend và Frontend, Nếu sau này công nghệ thay đổi back end không còn là java nữa, hay frontend không còn là js nữa thì chúng ta phải thay đổi cả code của class cấp thấp và cấp cao. Chúng ta sẽ tạo ra một interface Develop để cho các modules trên phụ thuộc vào:

interface Develop {
    public function develop();
}

class Backend implements Develop {
    public function develop()
    {
        $this->codeJava();
    }

    private function codeJava() {
        // code here
    }
}

class Frontend implements Develop {

    public function develop()
    {
        $this->codeJS();
    }

    private function codeJS() {
        // code
    }

}

class Project {

    protected $develop;

    public function __construct(Develop $develop)
    {
        $this->develop = $develop;
    }

    public function build() {
        $this->develop->develop();
    }

}

6. Kết luận

Vậy là mình đã giới thiệu cho các bạn về nguyên lý SOLID, việc vận dùng như thế nào trong quá trình code còn là cả quá trình dài, vì không dễ dàng gì để thay đổi một thói quen đã ăn sâu vào tính cách trong một khoảng thời gian dài. Hy vọng bài viết này sẽ phần nào giúp các bạn có cái nhìn sâu sắc hơn và tự nhìn lại code của chính mình xem đã đủ sạch sẽ chưa. Ngoài có còn có bao nhiêu nguyên lý khác sinh ra với mục đích làm cho code sạch đẹp hơn, các bạn cũng có thể áp dụng để tự nâng cao chất lượng sản phẩm của chính mình tạo ra. Một lần nữa cảm ơn các bạn đã đón đọc, trong quá trình viết bài mình có tham khảo nhiều nguồn, dùng nhiều ví dụ trên mạng, có thể đúng hoặc sai hy vọng các bạn thông cảm (bow).

Đừng bỏ lỡ một số bài viết hay về:

Xem thêm việc làm Software Developers hot nhất trên TopDev

TopDev via Viblo

  Cách tạo một Docker đơn giản cho Node.JS

Mẫu bảng mô tả công việc vị trí Technical Leader

Mô tả công việc lập trình Technical Leader mức lương hấp dẫn

Technical leader đảm nhiệm công việc giám sát một nhóm tập trung vào các vấn đề kỹ thuật, bao gồm phát triển phần mềm, phát hành sản phẩm và các nhiệm vụ kỹ thuật khác. Đôi lúc, technical leader cũng hợp tác với các nhân viên để xác định và sửa chữa các vấn đề kỹ thuật. Họ thường đánh giá các quy trình làm việc của nhóm và thực tiễn tốt nhất và thực hiện các thay đổi để hợp lý hóa các hoạt động. Hy vọng, Mẫu bảng mô tả công việc Technical Leader này sẽ giúp các bộ phận nhân sự dễ dàng hơn cho việc tuyển dụng những vị trí này.

Mẫu bảng công việc Technical Leader

YÊU CẦU CÔNG VIỆC

  • Đảm bảo các ứng dụng hiện tại được cập nhật và phù hợp với việc triển khai các ứng dụng mới;
  • Phân tích nhu cầu của end-users và chọn ứng dụng để đáp ứng các nhu cầu đó;
  • Các nhiệm vụ khác có thể bao gồm phát triển các chương trình khắc phục sự cố và giám sát sửa đổi hệ thống;
  • Tạo và thực hiện các quy trình giảm thiểu rủi ro và tiến hành kiểm toán bảo mật để xác định điểm yếu trong các ứng dụng

MÔ TẢ CÔNG VIỆC

  • Có kinh nghiệm trong việc quản lý một nhóm phát triển
  • Có nhiều kinh nghiệm thiết kế cơ sở dữ liệu, thiết kế cơ bản, thiết kế chi tiết, UML
  • Có nhiều kinh nghiệm về ngôn ngữ lập trình: PHP, C#, Ruby on Rails, Java …
  • Có nhiều kinh nghiệm về design patterns and code refactoring…
  • Khả năng nhận yêu cầu trực tiếp từ người quản lý sản phẩm, sau đó phân tích và thảo luận giữa các bên liên quan để làm rõ
  • Có thể đề xuất ý tưởng tốt / giải pháp sáng tạo cải thiện sản phẩm của công ty ngay cả khi không có vấn đề gì cả;
  • Giải quyết vấn đề: đưa ra ý tưởng, thiết kế, coding, code reviewing. “
  Team Leader là gì? Những kỹ năng nào mà một Team Leader cần có?
  "Bắt đầu từ vị trí dev, làm tốt sẽ được trao cơ hội trở thành leader"

Tham khảo thêm những việc làm Technical leader lương cao trên TopDev 

Mẫu bảng mô tả công việc lập trình .NET

Mẫu bảng công việc lập trình .NET

Lập trình .NET làm việc trong nhóm phần mềm, sử dụng các ngôn ngữ lập trình C# để phát triển các ứng dụng, website dựa trên nền tảng .NET. Đồng thời, .NET Developer cũng tham gia vào toàn bộ quá trình phát triển sản phẩm, từ lên concept, phân tích, thiết kế, đến kiểm tra, vận hành vào thực tế dựa trên kế hoạch đã đề ra…Mẫu bảng công việc lập trình .NET này sẽ giúp các bộ phận nhân sự dễ dàng hơn cho việc tuyển dụng những vị trí này.

Về lập trình viên .NET: Để trở thành một .NET Developer thực thụ, bạn cần vững nền tảng C# và .NET căn bản cũng như có kiến thức và kỹ năng về SQL server, HTML, CSS và Javascript. Bạn có thể học thêm về .NET Core và ASP.NET Core vì đây chính là tương lai của .NET. Khi đã vững vàng, bạn có thể bắt đầu chọn cho bản thân con đường đi theo ASP.NET hoặc Winform.

Mẫu bảng công việc lập trình .NET

YÊU CẦU CÔNG VIỆC

  • Thành thạo lập trình .NET Webform, Winform hoặc C#, ASP.NET MVC/ MVC5.
  • Nắm vững lập trình OOP, MVC.
  • Có kiến thức tốt về HTML, CSS, Javascript/ JQuery/ Bootstrap.
  • Có kinh nghiệm sử dụng database (SQL, NoSQL).
  • Có kiến thức tốt về RESTful service/ Web API.
  • Kỹ năng tư duy logic và thuật toán tốt, phân tích và giải quyết vấn đề
  • Có khả năng đọc hiểu tiếng Anh chuyên ngành

Ứng tuyển ngay các vị trí tuyển dụng .NET mới nhất trên TopDev

MÔ TẢ CÔNG VIỆC

  • Lập trình các ứng dụng trên nền tảng .Net 
  • Tối ưu hiệu xuất xử lý của các sản phẩm, dịch vụ hiện có
  • Tham gia xuyên suốt các công đoạn thiết kế, xây dựng, phát triển và tối ưu cho các chức năng hệ thống.
  • Nghiên cứu, phát triển công nghệ mới để ứng dụng xây dựng các sản phẩm dịch vụ mới
  • Hỗ trợ các thành viên trong nhóm với các chức năng phức tạp, tham gia nhận xét, đánh giá source code của các thành viên trong nhóm.

Tham khảo thêm những công việc lập trình cho fresher .NET tại đây

Làm sao để không bị “ngộp” khi học cái mới?

lam-sao-de-khong-bi-ngop-khi-hoc-cai-moi

Trong ngành IT chúng mình, học cũng là một phần của công việc

  • Để làm mới những skill của bản thân, để theo kịp thời đại, không bị thụt lùi so với thế giới, chúng ta phải tự học.
  • Đôi khi vì yêu cầu của dự án, vì nhu cầu tìm việc chúng ta phải học và tìm hiểu những ngôn ngữ/công nghệ mới.

Thế nhưng, khi bắt đầu học một thứ gì đó, bạn sẽ dễ dàng thấy ngộp, thấy bối rối, vì có quá nhiều kiến thức cần phải học.

Vậy làm sao để học dễ vào hơn, làm sao để không còn “ngộp” khi học kiến thức mới?

Hãy xem những kinh nghiệm mình chia sẻ qua bài viết này nha. Bài này sẽ rất có ích cho các bạn sinh viên, cho những bạn vừa ra trường hoặc đang đi làm đấy.

Tại sao việc học cái mới lại khó và gây “ngộp” như vậy?

Để tìm cách giải quyết chuyện, trước tiên chúng ta phải tìm hiểu vì sao học cái mới lại khó, tại sao ta lại dễ thấy ngộp và choáng?

Lý do đơn giản là vì: Trong ngành mình, khi học và sử dụng ngôn ngữ/công nghệ, ta không chỉ học nó, mà còn phải tìm hiểu về toàn bộ hệ sinh thái (ecosystem) của nó, những công nghệ liên quan tới nó.

Những kiến thức này vô cùng rộng và … không có giới hạn.

Mỗi ngôn ngữ/công nghệ luôn đi kèm với một hệ sinh thái “to bự” và phức tạp

Khi thử tìm hiểu React, các bạn sẽ thấy có… vô vàn những thứ liên quan đến nó mà các bạn phải học:

  1. React là gì? Các khái niệm trong React như ComponentPropsState
  2. Các tổ chức code React, phân tách component cho hiệu quả
  3. Cú pháp ES6 của Javascrip
  4. Cách setup Babel để transpile code React thành code JS chạy trên trình duyệt
  5. Cách setup Webpack để bundle source code, build source code thành JavaScript
  6. CSS in JS, cách dùng JS để setup style CSS cho các component
  7. Redux hoặc Mobx dùng kèm với React, state management để quản lý state cho ứng dụng

React – Redux – Webpack – Babel và đủ thứ hầm bà lằng khác

Các bạn thấy đấy, học React chỉ cần học 1 và 2. Nhưng để sử dụng React cho hiệu quả, ta phải học và biết cách dùng 3 đến 7. Khi tìm hiểu 6, 7 các bạn sẽ thấy lòi ra những cái 8,9 khác nữa.

Càng học, bạn càng cảm thấy có quá nhiều thứ mình không biết, có quá nhiều thứ cần phải học. Bạn sẽ ngộp, sẽ thấy nản vì … chả biết học bao giờ mới xong, dẫn đến chuyện bỏ cuộc.

Vậy làm sao để giải quyết chuyện này? Hãy đọc phần dưới nhé!

Phương pháp chống “ngộp” hiệu quả

Ngày xưa, mình cũng từng thấy “ngộp” khi học cái mới như bạn vậy, về sau mới quen dần. Đây là một số kinh nghiệm mà mình rút ra được:

1. Đặt ra mục tiêu rõ ràng

Đây là thứ quan trọng nhất. Trước khi học, hãy đặt ra mục tiêu là, mình học xong sẽ làm được gì, chứ đừng học chỉ để học.

  • Học React/VueJS, hãy đặt ra mục tiêu là hiểu architecture của chúng, làm được một web app đơn giản bằng React/VueJS.
  • Học Android/React-Native hãy đặt mục tiêu là biết cách tạo các screen, viết được một app note/to-do list.

Những khi học thấy mệt hay nản, hãy nhìn vào mục tiêu, bạn sẽ biết mình đã đi được bao xa, sắp đạt được hay chưa ngay.

2. Tìm hiểu bức tranh toàn cảnh (overview), chọn học thứ quan trọng nhất

Quay lại chuyện React, sau khi đã có bức tranh toàn cảnh, các bạn sẽ thấy mối tương quan giữa các công nghệ.

Bạn sẽ nhận ra rằng 1 và 2 là thứ quan trọng nhất cần học, những thứ khác chỉ cần biết sơ, về sau tìm hiểu dần là được.

Thấy được toàn cảnh, bạn sẽ biết thứ gì nên tập trung học, thứ gì chỉ cần tìm hiểu qua. Khi học mà gặp những thứ mới, bạn sẽ biết nó có quan trọng hay không, có cần học ngay hay có thể để sau.

3. Học tập trung, học dần dần chứ đừng dàn trải

Để chống ngộp, bạn hãy học tập trung chứ đừng học dàn trải. Tập trung vào những thứ quan trọng, sau đó mới đến những thứ “râu ria”.

  1. Ví dụ như lúc học React, hãy dùng create-react-app để có thể bắt tay ngay vào việc viết code React.
  2. Sau khi đã nắm vững các khái niệm React cơ bản và nâng cao, bạn mới bắt đầu tìm hiểu cách hoạt động của Babel, của Webpack, cách setup một dự án React từ đầu.
  3. Khi dự án đã lớn, code React bắt đầu rối rắm, lúc này bạn có thể tìm hiểu về Redux/MobX để xem quản lý state ra sao, component giao tiếp thế nào cho hiệu quả.

Học tập trung, tìm hiểu dần dần chứ đừng dàn trải

Vì mỗi lần ta chỉ tập trung vào học và thành thục một thứ duy nhất, bạn sẽ không cảm thấy ngộp hay nản nữa.

Kết

Việc học luôn luôn là một hành trình dài. Hành trình ngàn dặm chỉ bắt đầu từ một bước chân. Hãy biết nhìn xa, nhưng hãy đi từng bước nhỏ.

Với việc học, ta cũng phải học dần dần, biết dần dần. Bạn không thể nào học một phát là biết hết, mà cũng không cần phải biết hết tất cả. Chỉ cần biết đủ là bạn đã có thể áp dụng thứ vừa học vào công việc được.

Việc học có thể làm việc cảm thấy ngộp và nản, but that’s okay.

Đừng so sánh việc học của mình với người khác. Nếu người có nhiều kinh nghiệm, có kiến thức liên quan, họ sẽ học nhanh hơn. Nếu bạn không đủ kiến thức nền, bạn sẽ học chậm hơn.

Tuy nhiên, việc học không phải là cuộc đua đi nhanh hay đi chạm thì cuối cùng cũng đến đích cả! Quan trọng là bạn có chịu khó đi tới cuối cùng hay không mà thôi!

Bản thân bạn thì sao, đã bao giờ bạn cảm thấy ngộp, cảm thấy nản khi học chưa? Hãy chia sẻ về cảm xúc của mình, những cách bạn vượt qua trong phần comment nhé!

Có thể bạn quan tâm:

Xem thêm việc làm ngành it mới nhất trên TopDev