Nhiều người băn khoăn về mức lương lập trình viên, họ sẽ kiếm được là bao nhiêu? Đó là thắc mắc chung của nhiều người, điều gì sẽ ảnh hưởng tới mức lương của bạn kinh nghiệm? Tạo một chiếc CV đẹp và chất? Về bản chất, có thể xem nó như một vấn đề xã hội vì câu chuyên về lương bổng của dân lập trình đã thu hút sự quan tâm lớn. Những bí mật nào sẽ được bật mí. Cùng TopDev theo dõi bài viết sau để có nhiều góc nhìn hơn về vấn đề này.
Vấn đề về mức lương lập trình viên, hiểu thế nào cho đúng
Cái nhìn về mức lương lập trình viên hiện nay liệu đã chính xác?
Nếu được hỏi tại mức lương hiện tại của ngành lập trình có tương xứng với công sức bỏ ra hay không? Câu trả lời chắc chắn là không.
Đại đa số họ nghĩ lương của ngành lập trình cao, thậm chí rất cao (overpaid). Thế nhưng, thực tế không như vậy nếu phân tích nhiều khía cạnh.
Để có thể đánh giá chính xác giá trị lương, ngoài lương cứng, bạn nên quan tâm sâu sắc đến lương lậu và những công sức mà bạn đã bỏ ra.
Lương cứng: chính là lương bạn nhận được từ công việc. Điều này không có gì bàn cãi.
Lương lậu: được xem là mức lương bạn kiếm được từ bên ngoài. Lương này chính là lương nỗ lực thêm vì các mục tiêu khác mà bạn theo đuổi.
Những công sức bạn bỏ ra: Chính là mức hạn định phản ánh lại cách bạn vượt ra áp lực, đối mặt với những thách thức, tính cao độ và chuyên tâm trong hành trình thu nạp kiến thức ngành lập trình,…
Những nhầm tưởng của người ngoài cuộc
Từ cách phân tích lương chính như trên, nếu áp vào thực tế bạn có thể nhận thấy lương của ngành lập trình thật sự không cao. Tại sao lại như thế? Những lầm tưởng tạo ra sự so sánh chủ quan khiến chính những anh em lập trình càng thêm áp lực.
Người ngoài cuộc luôn bị thổi phồng bởi những định hướng của báo chí. Các bạn nên hiểu rằng, trong chính ngành lập trình lương cũng có những sự chênh lệch. Cụ thể, bạn tốn quá nhiều công sức nhưng mức lương chỉ bằng hoặc thấp hơn những vị trí công việc của các ngành khác.
Lấy một minh chứng cụ thể, bạn có thể thấy rõ khi các app di động nổi lên, trở thành một hiện tượng. Các hình thức Android, Java dường như dễ code hơn các Web Service. Điều này có nghĩa là lập trình viên mobile dễ hơn lập trình web. Tuy vậy, mức thu thập của lập trình viên mobile lại cao hơn hoặc ngang bằng lập trình web. Điều này tạo ra sự chênh lệch trong chính những phân nhánh nhỏ của ngành lập trình.
Bàn cân ngành lập trình: Lương – Giá trị từ những công sức?
Câu chuyện về lương sàn
Lương sàn, lương khởi điểm luôn của ngành lập trình đều được nhiều người quan tâm. Chúng ta cùng xem qua lương của một số vị trí.
Có thể thấy, mức lương cho 1 vị trí ngành lập trình sẽ dao động từ khoảng 8-12tr với người dưới 2 năm kinh nghiệm. Điều này đồng nghĩa một sinh viên mới ra trường hoàn toàn có thể đạt được mức lương như ý này.
Đến đây chúng ta sẽ nhận định 8-12tr là quá tốt cho một bạn trẻ vừa mới đi làm. Sự lý tưởng đó nhiều người phải thèm khát có được. Và chính điều này vô hình tạo ra một vẻ đẹp cho ngành lập trình. Từ đây các câu chuyện thổi phồng về lương bắt đầu lớn dần hơn.
Các vị trí có mức lương như thế nào?
TopDev đã tổng hợp các vị trí tương ứng với các mức lương để người đọc có cái nhìn cụ thể nhất về vấn đề lương.
Mức lượng hiện tại vẫn có thể sẽ biến động khi những yếu tố xã hội ảnh hưởng. Trên hết, đó là những mức đang ổn định. Tuy vậy, đằng sau những con số đáng mơ ước đấy là cả hành trình của những nỗ lực.
Hãy hiểu tin tường, đừng bị “dắt mũi” bởi dư luận
Chúng ta không chỉ xem xét một khía cạnh, hãy dùng con mắt tinh tường mà phán xét.
Nhiều người nghĩ nó là mức lương cao so với các ngành khác. Đúng, đó là sự thật không có gì phải tranh cãi.
Thế nhưng, đối với những người làm lập trình, mức lương ấy chỉ là cơ bản. Thỏa mãn tương xứng với những nỗ lực họ bỏ ra khi quyết tâm theo đuổi lĩnh vực này. Hãy nghĩ xem các ngành nghề khác, mặc bằng chung lương khởi điểm có thể là 5-8tr nhưng những áp lực họ trải qua liệu có thể so sánh với anh em trong ngành lập trình?
Hoàn toàn không thể so sánh như vậy được. Trước khi có được con số 8-12tr, người làm lập trình cần phải có kiến thức đủ giỏi và những trải nghiệm đủ dày dặn để có thể đáp ứng nhu cầu công việc. Họ cần cọ xát thực tế trước khi rơi vào guồng quay với những lăn xả đặc thù ngành.
Bạn có biết họ đã “sống sót” trong ngành lập trình như thế nào hay không? Biết bao áp lực. Mỗi ngày là một cơn stress khác nhau. Chưa kể họ phải luôn nâng cấp, cải tiến chính mình để không bị lạc hậu về chuyên môn lẫn tư duy lập trình. Nào là kiến thức chuyên môn, nào là các kỹ năng đánh giá hiệu suất, kỹ năng mềm,…
Sở hữu mức lương 8-12tr đối với họ không phải nhiều mà là cái tất nhiên được nhận. Vì thế, đừng đặt cho họ gánh nặng rằng lương 8-12tr là siêu cao.
Khía cạnh về lương lậu cần được quan tâm
Nhiều người thuộc các cấp cao nhất trong ngành lập trình với kinh nghiệm lâu năm, dường như không quá khó để có những mức lương lên đến hơn 50tr. Lại một lần nữa bạn tưởng rằng đó là con số quá cao chăng.
Báo cáo về các mức lương 2020 của ngành lập trình
Tuy nhiên, rất tiếc bạn lại sai lầm một lần nữa. Nhiều người thuộc các cấp cao của lĩnh vực khác ngành lập trình có thể sở hữu số giá trị lương lên đến hơn cả cả trăm triệu. Bạn có bất ngờ không, đừng quá ngạc nhiên vì đó là sự thật.
Điều này phụ thuộc vào một yếu tố đó chính là trải nghiệm đa ngành. Cùng một số năm kinh nghiệm nhưng tại sao lương của ngành lập trình lại bằng hoặc thấp hơn.
Sự thua thiệt về trải nghiệm đa ngành?
Nhiều người nghĩ rằng người làm lập trình dễ dàng tạo ra các sản phẩm cho mình. Đồng thời sử dụng để tạo ra lương lậu (mức lương về giá trị nỗ lực thêm). Thực tế, việc tạo ra sản phẩm là một chuyên đơn giản. Thế nhưng, mấu chốt ở chỗ làm sao để xây dựng kế hoạch marketing, kinh doanh nhằm mục đích vận hành, quảng bá và bán sản phẩm.
Đặc thù chung, các bạn ngành lập trình đều bị zero về vấn đề này. Nếu có biết cũng dừng ở mức cơ bản. Đây được xem là hệ quả nảy sinh từ những áp lực nảy sinh. Họ phải đối mặt với áp lực từ chính kiến thức chuyên môn của mình. Đó là lý do họ không có thời gian để học thêm những cái mới thuộc các nhóm ngành khác.
Ngược lại, những bạn ngành khác lại dễ dàng có nhiều cơ hội hơn. Thời gian là thứ quan trọng và là lợi thế lớn giúp họ trải nghiệm với cái mới. Họ tiếp thu được nhiều hơn những kiến thức đa ngành và mối liên quan giữa các ngành có liên quan. Tất cả đều hướng đến sự phát triển và thăng tiến toàn diện.
Lời kết
Đến đây, chúng ta có thể kết luận mức lương ngành lập trình so với các ngành khác chưa thật sự cao nếu xét về những giá trị về công sức. Họ bỏ ra công sức quá nhiều, đánh đổi nhiều thứ vì đam mê. Chúng ta hãy tôn trọng và đừng phán xét về mức lương của họ.
Nếu chúng ta cứ nhìn nhận một cách phóng đại, không chỉ tạo ra áp lực lên bản thân những người làm lập trình, mà còn làm giảm đi mức lương hiện tại một ngày không xa. Vì chính truyền thông đã tạo ra vẻ hào nhoáng về mức lương cho ngành lập trình. Dư luận đã rất thành công khi ngành này đã trở thành xu hướng. Nhưng liệu nó có tiếp tục được duy trì khi câu chuyện thật sự về ngành lập trình được vén màn? Không gì là không thể. TopDev hy vọng bài viết này sẽ giúp mọi người hiểu hơn về mức thu nhập của ngành lập trình chỉ nằm ở tầm trung và nỗ lực chính là cách để họ tự tạo giá trị cho bản thân mình.
Có một ông bạn nọ có cái blog ở trên mạng, cũng có dăm bảy người vào đọc. Tánh ổng không thích học sâu, chỉ thích học rộng, mà lẽ đời, học rộng mà không sâu thì viết bài nào cũng hỏng. Cho nên bài nào ổng viết ra cũng không sai chỗ này thì cũng lỗi chỗ kia. Cơ mà ổng đâu có biết.
Chỉ tội cho những người theo dõi blog của ổng, thấy bài sai be bét mà không làm gì được vì không có phương tiện gì để họ góp ý ngay trên blog. Cũng có mấy người quan tâm, ráng tìm cho bằng được cái địa chỉ email để mà góp ý (comment).
Thế rồi ổng cũng sắm cho blog một cái nút comment,
Thời đó người ta toàn xài Disqus, thế là ổng cũng xài Disqus.
Thế rồi theo phong trào, người ta bắt đầu nói nhiều đến những mặt trái của Disqus, ổng cũng học đòi, nghỉ chơi với Disqus, và tự build một cái chức năng comment riêng cho blog.
Ổng build cái chức năng comment này bằng Rust, mà thực ra nó chỉ là một cái REST API chỉ có 2 endpoints để list danh sách các comment và post comment mới.
Bài toán đặt ra
Để comment thì người ta cần phải login, vốn là một con người lười biếng, ổng xài luôn dịch vụ login của Google, đỡ phải build authentication system rồi đau đầu với việc lưu trữ thông tin người dùng. Phía frontend chỉ cần lấy ra tên hiển thị (display name) và hình ảnh đại diện (profile picture) của user đã đăng nhập, cho nó vào comment payload và gửi đi.
Và cũng vì là một con người lười biếng, ổng biết ai rồi cũng sẽ lười biếng. Nên rất có thể người ta sẽ chẳng thèm comment luôn, vì phải tốn thêm một bước login. Thế nên ổng quyết định, bên cạnh việc login, ổng sẽ cho phép người ta comment mà không cần login luôn. Trong trường hợp này, phía frontend sẽ gán display name thành “Không Tên”, và profile picture sẽ là ảnh con Vô Diện (Kaonashi) trong phim Spirited Away. Hợp lý quá chừng.
Nhưng cũng lại vì, vốn là một con người lười biếng, nên ổng code cái comment API mà không thèm áp dụng bất kì một hình thức bảo vệ nào cho cái API đó. Suy cho cùng, đó cũng không hẳn là lười biếng, chỉ là ổng đã quá tin tưởng vào các bạn độc giả.
Thế là từ đó, cứ dăm ba bữa, ổng lại phải ngồi hì hục xóa comment của các bạn độc giả dễ thương, vô tình view source của blog và phát hiện ra cái comment API hớ hênh, viết luôn script comment tự động với tốc độ ánh sáng.
Nói cho công bằng thì có đến 2 loại nghịch ngợm thường gặp từ khi có cái chức năng comment:
Loại mất công:
Là những comment không có nội dung gì, và các thanh niên thường kiên nhẫn tự mình spam vào ô comment rồi bấm submit.
Loại tự động hóa:
Phát huy tinh thần công nghệ bốn chấm không, các bạn thường viết script gửi request tự động submit comment với số lượng lớn và cường độ cao.
Loại thứ nhất thì ổng quan niệm là, vì người ta đã bỏ công ra spam một cách thủ công, thật là thất lễ nếu chúng ta không xử lý bằng một cách mất công tương tự:
Đối với các đối tượng sử dụng công nghệ 4.0, thì cũng phải dùng 4.0 để xử lý.
Thực ra thì cũng cần phải mạnh dạn tự kiểm điểm một tí, gốc rễ của vấn đề đến từ việc chủ nhà không chịu đưa ra các biện pháp để giữ nhà. Cho nên giải pháp khắc phục là, làm sao để hạn chế được khả năng spam nhưng phải bảo đảm rằng, chỉ cần việc comment thực sự được thực hiên bởi người đọc – không phải máy tính, thì vẫn sẽ ghi nhận đó là comment hợp lệ.
Có rất nhiều phương án khắc phục được đưa ra:
Sử dụng một token thay đổi sau mỗi lượt comment để xác minh tính hợp lý của việc comment
Giới hạn tần suất gọi API comment (rate limiting)
Cấu hình server để chỉ chấp nhận request từ thefullsnack.com
Đặt ra challenge để xác minh “tính người” mỗi khi comment
Sử dụng AI để ngăn chặn spam (Anonymous Indian, không phải Artificial Intelligence)
Năn nỉ user đừng có spam nữa
Gắn banner cảnh báo nếu spam thì sẽ bị báo công an
…
Sau khi cân nhắc ưu, nhược điểm giữa các phương án, ông blogger quyết định sẽ sử dụng phương pháp challenge, nhưng vốn là một người lười biếng, ổng biết nếu cứ bắt người ta gõ captcha mỗi lần comment thì họ sẽ chọn cách không thèm comment nữa.
Rất may, Google reCAPTCHA có một hình thức xác minh khá hay đó là captcha ẩn.
Với hình thức này, Google sẽ dựa trên nhiều yếu tố khác nhau để xác định request được gửi đi có xuất phát từ một hành động thực tế của một user không, hay là xảy ra tự động. Việc tích hợp invisible captcha vào hệ thống sẵn có cũng khá đơn giản:
Khi phía frontend chuẩn bị gửi comment request, thì phải gửi một request đến Google reCAPTCHA trước, nhận về một mã xác thực, rồi mới gửi mã xác thực này kèm với comment request.
Việc xử lý comment request ở phía server cũng phải thực hiện một bước xác minh với server của Google, trước khi chấp nhận request từ phía user.
VietAI xin hân hạnh giới thiệu khóa học Trực Tuyến (Online) đầu tiên: HỌC MÁY CƠ BẢN – FOUNDATION OF MACHINE LEARNING – Course #01.
Giới thiệu khóa học
Theo báo cáo mới nhất về những việc làm triển vọng của Linkedin năm 2020, kỹ sư Học Máy (Machine Learning – ML) và kỹ sư Trí Tuệ Nhân Tạo (Artificial Intelligence – AI) đứng đầu bảng với nhu cầu tuyển dụng tăng trưởng 74% mỗi năm trong 4 năm gần với mức lương cao mơ ước.
Tại Việt Nam, nguồn nhân lực làm việc trong lĩnh vực ML – AI chỉ đáp ứng được 10% nhu cầu thị trường Việt Nam.
Có rất nhiều bạn trẻ mong muốn được bắt đầu bước chân vào lĩnh vực mới mẻ và đầy tiềm năng này nhưng không biết bắt đầu từ đâu? Và bắt đầu học kiến thức gì?
Các bạn mong muốn kiến thức sau khi học có thể ứng dụng vào công việc và giúp cho các bạn tiếp tục học nâng cao và chuyên sâu trong những chuyên ngành: Thị Giác Máy Tính (Computer Vision) hay Xử Lý Ngôn Ngữ Tự Nhiên (Natural Language Processing) vv.
Học viên ở xa Hồ Chí Minh, Hà Nội và không có điều kiện tham gia học trên lớp?
Khóa học Online ra đời để các bạn có thể bắt đầu xây dựng nền tảng học máy vững chắc cho tương lai!
Tại sao các bạn nên tham gia khóa học này?
Khóa học này được thiết kế dựa trên những kiến thức toán và lập trình nền tảng mà mọi người từ sinh viên cho đến những kỹ sư ở các lĩnh vực khác nhau đều có thể học được.
Học trực tuyến, học viên có thể học ở bất cứ đâu và bất kỳ lúc nào. Không chỉ dừng lại ở việc học bằng cách xem những video được ghi hình sẵn, học viên còn được trực tiếp gặp gỡ, học hỏi và trao đổi với Giảng Viên, trợ giảng thông qua Webinar định kỳ trong suốt khóa học.
Giảng viên, Cố vấn giàu chuyên môn là các Phó giáo sư, Tiến sĩ, các chuyên gia hàng đầu trong ngành. Đặc biệt, khóa học còn đặc biệt nhận được sự tài trợ bởi Google và FPT AI.
Bạn học được gì từ khóa học này?
Những kiến thức toán và lập trình nền tảng của Học máy và Trí tuệ nhân tạo.
Hiểu và thực hành các bài toán điển hình trong Học máy: Hồi quy tuyến tính. Bài toán phân loại nhị phân. Mạng nơ-ron (Neural Network) cơ bản và những ứng dụng.
Áp dụng kiến thức ML vào để giải quyết những vấn đề gần gũi với cuộc sống hàng này sau mỗi bài giảng.
Kiến thức được cập nhật và giảng dạy chương trình mới nhất từ trung tâm Công nghệ Trí tuệ nhân tạo – thung lũng Silicon (Mỹ) – nhưng được chuẩn hóa theo bối cảnh Việt Nam.
Hãy nhanh tay đăng ký để trở thành những học viên đầu tiên và nhận nhiều ưu đãi
10 suất học bổng dành cho Học viên Nữ (trị giá 50% học phí của khóa học)
05 suất học bổng dành cho các sinh viên xuất sắc nhất (trị giá 50% học phí của khóa học)
10 thẻ ELSA Speak premium – Thành viên 1 năm – trị giá $75 cho các sinh viên suất xắc nhất.
Còn chần chừ gì nữa ? Mọi thông tin chi tiết về khóa học đều có thể tìm thấy ở đây: https://ml.vietai.org/
Dù đang là sinh viên hay đã làm việc trong ngành công nghệ thông tin về mảng lập trình web thì những gì mình sắp giới thiệu dưới đây đều là những kỹ năng thiết thực và quan trọng để bạn trở thành 1 lập trình viên frontend tốt hơn cũng như giúp bạn tìm 1 công việc phù hợp ưng ý được dễ dàng khi hầu hết các công ty đều yêu cầu các kĩ năng này khi tuyển dụng.
Lập trình viên frontend là gì?
Trong các bài viết trước, mình đã giới thiệu đến các bạn 7 hướng đi của 1 lập trình viên web cũng như lộ trình trong sự nghiệp lập trình viên web cho những ai còn đang phân vân chưa biết mình nên trở thành 1 frontend, backend hay devops thì hôm nay mình chỉ tập trung nói về lập trình viên frontend. Chúng ta bắt đầu thôi: Để bạn có cái nhìn rõ hơn mình xin giới thiệu sơ về mảng lập trình web 1 chút, cơ bản gồm 2 phần chính, với yêu cầu những kỹ năng, kiến thức công nghệ khác nhau: frontend sẽ là thứ người dùng tương tác trực tiếp (user interface – giao diện người dùng) và backend là những gì đằng sau nó và làm cho 1 website hoạt động. Tóm lại, frontend sẽ chăm sóc ‘client-side’, còn backend chính là ‘server-side’. Nếu ví von 1 trang web như cơ thể người thì HTML sẽ là khung xương, phần cơ bản nhất. Để cơ thể vận động được cần có cơ và gân, hay để 1 dynamic web chạy cần có JavaScript và các ngôn ngữ lập trình khác. Cuối cùng để xem cơ thể đó xấu hay đẹp cần da thịt đắp lên hay nói cách khác muốn 1 website đẹp đẽ thì sẽ cần tới CSS để trang trí trang web đó được bắt mắt.
Điều này cần được phân biệt rõ để bạn có thể xác định những kỹ năng cần thiết cho 1 lập trình viên frontend.
10 kỹ năng phải có cho công việc lập trình viên frontend
HTML / CSS ⚡️
Thành thục HTML5, CSS3 là bắt buộc phải có. Mình biết chắc trong lúc tìm hiểu bạn đã thấy 2 cái tên này xuất hiện khắp nơi. Bạn sẽ không thể tìm được công việc lập trình frontend nào mà không yêu cầu việc sử dụng hiệu quả 2 ngôn ngữ này. Giờ hãy kể sơ qua về nó 1 chút nhé:
– HTML hay HyperText Markup Language là ngôn ngữ đánh dấu tiêu chuẩn được dùng để tạo các trang web. Ngôn ngữ đánh dấu là cách bạn ghi chú trong tài liệu kỹ thuật số để có thể được phân biệt với văn bản thông thường. Đây là phần cơ bản nhất bạn cần để phát triển 1 trang web. – CSS hay Cascading Style Sheets là ngôn ngữ định kiểu theo tầng được dùng để giới thiệu phần tài liệu bạn đã tạo với HTML. HTML đến trước tiên để tạo nền tảng cho trang web, CSS tiếp đó được dùng để tạo layout, màu sắc, font chữ và style cho trang web của bạn. Cả 2 ngôn ngữ này rõ ràng rất thiết thực để bạn trở thành 1 lập trình viên frontend. Nói gọn hơn nữa rằng nếu không có HTML/CSS thì sẽ không có lập trình web. Mẹo nhỏ xíu : Bạn nên comment trong code của mình từ khi viết HTML, tuy dài và công phu hơn nhưng mọi chuyện sau cùng sẽ dễ dàng hơn.
1 công cụ quan trọng khác trong bộ đồ nghề frontend của bạn chính là JavaScript (JS). Trong khi HTML là ngôn ngữ đánh dấu và CSS là ngôn ngữ định kiểu, thì JS mới chính là ngôn ngữ lập trình thực thụ. Điểm khác nhau là gì? Nếu HTML và CSS quyết định phần trình bày của 1 trang web, thì JS sẽ quyết định phần chức năng.
Trong vài trường hợp nhất định, 1 trang web siêu đơn giản có thể sẽ không cần tới, nhưng trong trường hợp bạn cần các tính năng tương tác như âm thanh, video, trò chơi, khả năng cuộn, hoạt ảnh trên trang thì JS chính là công cụ bạn sẽ dùng để triển khai chúng. (Hiện tại CSS cũng đã được phát triển để có khả năng xử lý 1 vài tác vụ này rồi.) Bạn không cần phải vội vàng trong việc sớm thành thạo jQuery hay những framework khác, vì không hề đơn giản. Hãy thử những gì cơ bản nhất như tìm hiểu kỹ DOM, 1 phần không thể thiếu trong việc lập trình web, mình xin giới thiệu 1 chút về các thành phần DOM:
DOM document: lưu trữ toàn bộ thành phần trong tài liệu của trang web.
DOM element: truy xuất đến 1 thẻ HTML thông qua các thuộc tính như id, tên class, tên thẻ HTML.
DOM HTML: thay đổi giá trị nội dung và thuộc tính các thẻ HTML
DOM Event: gán các sự kiện như onclick(), onload() vào thẻ HTML
DOM Listener: lắng nghe các sự kiên tác động lên 1 thẻ HTML
DOM Navigation: quản lý, thao tác với thẻ HTML, thể hiện mối quan hệ cha và con của các thẻ HTML
DOM Node, Nodelist: thao tác với HTML thông qua object.
1 điểm nổi trội để giúp JS trở nên cần thiết là nhờ vào sự tồn tại của các thư viện như jQuery, 1 bộ sưu tập các plugin và extension làm nó nhanh và dễ sử dụng JS hơn trên web của bạn. jQuery sẽ nhận các tác vụ thông thường vốn yêu cầu nhiều dòng code JS và nén chúng vào 1 format mà có thể thực thi được chỉ trong 1 dòng code duy nhất. Đây là sẽ lợi thế lớn khi bạn dùng JS, trừ khi… bạn không thích tiết kiệm thời gian (mình đùa thôi).
CSS và các framework JavaScript là các bộ sưu tập của các file CSS hay JS mà sẽ làm khá nhiều việc cho bạn bằng việc cung cấp chứng năng thường gặp (như đăng nhập vào 1 trang web hay tìm kiếm blog). Thay vì bắt đầu bằng 1 tài liệu văn bản trống thì bạn bắt đầu bằng 1 file code mà đã có sẵn khá nhiều JS tuyệt vời trong nó rồi.
Các framework thật ra cũng có điểm mạnh và điểm yếu của nó, và thực sự quan trọng để chọn framework tốt nhất cho loại website bạn muốn dựng. Ví dụ: vài framework JS khá tuyệt cho việc dựng phần giao diện người dùng phức tạp, trong khi những cái khác lại xuất sắc trong việc hiển thị tất cả nội dung trang web của bạn.
Tuyệt hơn nữa là bạn có thể dùng nhiều framework cùng nhau. Việc xài cặp Bootstrap với framework JS khác như AngularJS là chuyện bình thường. Phần nội dung sẽ được chăm sóc bởi Angular và phần giao diện với Bootstrap (và 1 ít CSS trong đó nữa).
Vì bạn sẽ dùng CSS và JS suốt trong sự nghiệp lập trình web của mình, cũng như nhiều dự án sẽ bắt đầu với các yếu tố style và code tương tự, nên có kiến thức thâm sâu về những framework này sẽ cực kì hữu ích cho bạn trong việc trở thành 1 lập trình viên web có năng lực được các công ty chào đón.
Ngoài ra, mình cũng xin giới thiệu sơ về 1 framework nổi tiếng về responsive mà mình đã nhắc tới ở trên là Bootstrap. Phải công nhận là mọi thứ điều trở nên thuận tiện và dễ dàng hơn cùng Bootstrap, và gần như trở thành 1 thứ không thể thiếu khi làm responsive nên việc thành thục nó là điều rất tuyệt.
Tuy nhiên, nó khá nặng và trong vài trường hợp đặc biệt không sử dụng được bạn sẽ phải tự viết CSS, nên hãy làm chủ kỹ năng CSS của mình ngay từ đầu. Theo mình cách tốt nhất là nên sử dụng nó 1 cách hợp lý và đúng lúc.
Tiền xử lý CSS – CSS Preprocessing ⚡️
CSS Preprocessing
Thêm 1 kỹ năng cần thiết khác có liên quan tới CSS! CSS bản thân nó đã luôn cần thiết, nhưng cũng có đôi lúc bị giới hạn. 1 trong những giới hạn rõ nhất là bạn không thể xác định biến, chức năng hay thực thi các phép tính toán học.
Vốn là 1 vấn đề đáng ngại khi 1 dự án dần tăng trong khoản scale và code base, và bạn sẽ thấy mình tốn quá nhiều thời gian cho việc viết những code lặp đi lặp lại chỉ để thực hiện các thay đổi. Như các framework CSS (và JS), Tiền xử lý CSS cũng là 1 cách để làm cho công việc lập trình web của bạn được dễ dàng và linh hoạt hơn.
Sử dụng các bộ tiền xử lý CSS – CSS preprocessor như Sass, LESS hay Stylus, bạn sẽ có khả năng viết code bằng ngôn ngữ của bộ tiền xử lý (cho phép bạn được nhiều thứ vốn khá khó chịu với CSS cũ). Bộ tiền xử lý rồi sẽ chuyển đổi code đó tới CSS để nó hoạt động được trên web của bạn.
Giả sử bạn quyết định điều chỉnh sắc độ màu xanh lam đang dùng trên web. Với bộ tiền xử lý CSS, bạn chỉ phải thay đổi giá trị hex ở 1 chỗ thay vì phải chuyển tất cả phần CSS của mình và thay đổi giá trị hex mọi nơi.
Hệ thống quản lý phiên bản – Version Control / Git ⚡️
Version Control / Git
1 trong những kỹ năng cũng quan trọng không kém và tuy không có cái tên HTML, CSS hay JS nào trong đó nhưng vẫn đủ vì sự liên quan mật thiết!
Sau tất cả nỗ lực với việc marking-up bằng HTML, styling với CSS và lập trình với JS, bạn sẽ trải qua vô số lần sửa đổi khi phát triển.
Nếu có gì đó trục trặc xảy ra trong suốt chặn đường, điều cuối cùng bạn sẽ muốn làm là bắt đầu lại từ đầu. Version control là quá trình truy lùng và điều chỉnh những thay đổi tới source code của bạn để điều tệ hại đó không xảy ra.
Phần mềm version control, như Git – 1 nguồn mở cực ổn định, chính là công cụ bạn sẽ dùng để truy ra những thay đổi để bạn có thể trở về 1 phiên bản trước đó và tìm ra những gì sai sót mà không cần phải làm rối tung hết mọi thứ.
Và đây là 1 kỹ năng thú vị mà bạn (và cả khách hàng hay sếp của bạn nữa) sẽ rất hài lòng với nó.
Thiết kế responsive ⚡️
Thiết kế responsive
Nhớ lại ngày xưa cách duy nhất để bạn có thể lướt những trang web là sử dụng các máy tính để bàn. Ngày nay chúng ta có vô số thiết bị như máy vi tính, điện thoại, máy tính bảng để làm việc đó. Những trang web đó dù bạn có xài thiết bị gì đi nữa, chúng cũng đều làm tốt công việc hiển thị của mình dù bạn không cần phải làm gì cả.
Đó là nhờ vào phần thiết kế responsive. Hiểu rõ các nguyên tắc thiết kế responsive và cách triển khai chúng ở phần coding của mình chính là mấu chốt cho lập trình frontend.
1 thứ thú vị cần ghi nhớ về thiết kế responsive nữa là nó cũng là 1 phần nội tại trong các framework CSS như Bootstrap mà mình đã kể ở trên. Tất cả những kỹ năng này đều được kết nối với nhau, nên khi học 1 kỹ năng này, bạn cũng sẽ bổ trợ cho những kỹ năng khác cùng 1 lúc.
Từ 1 trang web kinh doanh nhỏ lẻ cho tới 1 trang quốc tế cho ngân hàng trực tuyến, bug là thứ dù rất đáng ghét nhưng sẽ luôn song hành với bạn trong sự nghiệp lập trình (trừ khi là bạn không code nữa…).
Và để giữ mọi thứ tiếp tục phát triển, bạn cần phải test code của mình để tìm bug suốt chặng đường, nên khả năng test và debug cũng nằm trong danh sách những kỹ năng không thể thiếu cho các dev frontend.
Có khá nhiều phương pháp test cho lập trình web. Test chức năng – functional testing sẽ trông hộ 1 phần chức năng cụ thể trên web của bạn (như 1 form hay database) và đảm bảo rằng nó thực hiện đúng mọi chức năng mà bạn đã code.
Test đơn vị – unit test cũng là 1 phương pháp. Nó test từng bit nhỏ nhất của code mà chịu trách nhiệm cho 1 thứ gì đó trên web của bạn và xem từng cá thể đó có hoạt động chính xác hay không.
Test là 1 phần lớn cho quá trình phát triển frontend, may thay, đã có sẵn những framework để giúp bạn làm điều này. Những chương trình như Mocha và Jasmine được thiết kế để giúp bạn tăng tốc và đơn giản hóa quá trình testing của bạn. (trừ khi bạn muốn làm quen với em tester nào đó ở chỗ làm).
Các công cụ phát triển trình duyệt ⚡️
Các công cụ phát triển trình duyệt
Dù thế nào đi nữa, những người dùng cuối cùng sẽ tương tác với web của bạn thông qua 1 trình duyệt web. Cách web của bạn được hiển thị bởi các trình duyệt này sẽ là phần quan trọng quyết định thành quả của bạn có thành công hay không.
Tương tự như testing hay debugging mình đã đề cập ở trên, tất cả trình duyệt web hiện đại đều đi kèm với developer tools – các công cụ phát triển trình duyệt. Nó cho phép bạn test và tinh chỉnh các trang trong chính trình duyệt đó, theo nhiều cách cụ thể để thể hiện cách trình duyệt diễn giải code của bạn.
Các chi tiết cụ thể sẽ khác nhau giữa các trình duyệt, nhưng không sao, thường các developer tools bao gồm trình kiểm tra và bảng điều khiển JavaScript.
Inspector – trình kiểm tra cho phép bạn thấy runtime HTML trên trang của bạn trông ra sao, CSS nào được liên kết với từng yếu tố trên trang, còn cho phép bạn edit phần HTML/ CSS và xem những thay đổi trực tiếp khi thực hiện. Bảng điều khiển JS còn cho phép bạn xem bất kỳ lỗi nào xảy ra khi trình duyệt cố gắng thực thi mã JS của bạn.
Mẹo nhỏ xíu : Hãy tìm hiểu sự khác nhau giữa các trình duyệt phổ biến (như Chrome, Firefox, Safari, Opera, Cốc Cốc hay gần đây nhất là Edge…). Điều thú vị là mỗi trình duyệt trên các nền tảng khá nhau sẽ hiển thị phần CSS khác đi 1 chút.
Ví dụ như dù sử dụng chung nền tảng -webkit- nhưng CSS của Chrome, Safari và Edge sẽ không giống hệt nhau đâu. Tốt nhất là hãy thử code của mình trên các trình duyệt khác nhau vì người dùng có vô số sự lựa chọn hay sở thích để sử dụng.
Dựng web và công cụ tự động/hiệu năng web ⚡️
Dựng web và công cụ tự động / hiệu năng web
Chắc bạn cũng biết bộ ba HTML/ CSS và JS là những công cụ chính để phát triển frontend. Trong khi hầu hết các kỹ năng khác đều giúp cho các công cụ đó hiệu quả hơn hay giúp test trang của bạn và sửa lỗi. Chúng ta sẽ tiếp tục với chúng trong phần này với việc dựng web, công cụ tự động và hiệu năng web.
Bạn có thể code ra những trang web xịn sò nhất nhưng nếu nó chạy 1 cách rùa bò trên thiết bị của người dùng thì mọi chuyện lại thành công cốc. Hiệu năng web là về việc mất bao lâu để trang web của bạn có thể load được. Nếu bạn có vấn đề với điều này thì mình có sẽ chỉ cho bạn vài cách để cải thiện chúng:
Tối ưu hóa hình ảnh: scaling và nén các hình ảnh cho hiệu năng web cao nhất.
Thu gọn CSS và JavaScript: gỡ bỏ tất cả những ký tự không cần thiết mà không làm thay đổi các chức năng.
Thực hiện các tác vụ này để tăng hiệu năng web có thể hơi tốn thời gian, nhưng đây cũng là lý do công cụ tự động tồn tại. Những chương trình như Grunt và gulp có thể được dùng để tự động tối ưu hóa hình ảnh, thu gọn CSS và JS, và các công việc khác về hiệu năng web. Để trang web được tốt nhất, việc làm quen với những điều này là thực sự cần thiết.
Dòng lệnh ⚡️
Dòng lệnh – Command Line
Sự gia tăng của giao diện người dùng đồ họa – Graphic User Interfaces (GUI) vào máy tính là 1 trong những điều tuyệt nhất từng xảy ra. Sẽ dễ dàng hơn nhiều để trỏ và nhấp vào 1 menu đầy tương tác và sống động thay vì phải ngồi gõ và gõ.
GUI khá hấp dẫn cả về việc phát triển web lẫn coding nữa. Chúng khá ổn định và tiện dụng. Nhưng 1 GUI đa năng sẽ có những hạn chế với 1 vài ứng dụng nhất định. Sẽ có lúc bạn cần mở 1 terminal trên máy tính để nhập các dòng lệnh để nhận được những gì bạn cần.
Đó là điểm khác biệt giữa việc máy tính của bạn chỉ mang lại những gì có sẵn trên bề nổi và có thể nhận được những gì bạn cần bằng cách đào sâu hơn bằng cách thủ công.
Ngay cả khi những công việc chính của bạn vẫn được thực hiện xong bằng GUI, các công ty sẽ thực sự ấn tượng và tín nhiệm bạn hơn với các kỹ năng frontend của mình nếu bạn thành thạo các dòng lệnh.
Kỹ năng mềm ⚡️
Cho dù có tích góp được bao nhiêu kỹ năng trong sự nghiệp của bạn, sẽ có những thứ luôn cần thiết cho công việc của bạn bên cạnh, đó là kỹ năng mềm. Nhất là đối với dân kỹ thuật thường các bạn cũng hơi rụt rè hay không được tốt trong việc giao tiếp. Hãy luôn trau dồi sự chuyên nghiệp của mình bất kỳ lúc nào trên con đường sự nghiệp đầy thú vị và sáng tạo này.
Trở thành 1 lập trình viên frontend vừa khó mà vừa dễ, hãy luôn trau chuốt, tỉ mỉ và chi tiết từng chút cho web hay ứng dụng của bạn được mượt mà và bắt mắt. Hãy luôn kiên nhẫn và luôn trao dồi thêm kiến thức, công nghệ mới nữa nhé.
Chúc các bạn sớm trở thành 1 lập trình viên frontend đầy kỹ năng và thành công trên sự nghiệp.
Ra đời với sứ mệnh số hóa ngành công nghiệp vận tải đường bộ, LOGIVANcung cấp hệ thống tự động hóa, đem đến sự kết hợp giữa chất lượng cao và dịch vụ Logistics uy tín đến mọi doanh nghiệp Việt Nam. Từ đó mang lại giải pháp cho bài toán “xe tải rỗng chiều về”, giúp chủ hàng tiết kiệm chi phí hơn so với cách thức vận hành truyền thống, tạo hiệu quả cao cho nền kinh tế nước nhà.
LOGIVAN – Sự ra đời của một sáng kiến công nghệ, mở ra thời kì mới cho ngành vận tải Việt Nam
Dịch vụ vận chuyển hàng hóa từ lâu đã đóng vai trò quan trọng trong nền kinh tế của đất nước, là yếu tố cốt lõi trong việc phân phối và lưu thông hàng hóa, thúc đẩy cho hoạt động sản xuất được diễn ra nhanh chóng, liên tục và dễ dàng. Tuy nhiên, còn nhiều hoạt động diễn ra khiến cho chi phí Logistics luôn đạt mức cao gây nên tình trạng kém hiệu quả và bế tắc đối với ngành vận tải.
Hiểu được nhu cầu và thách thức của các doanh nghiệp trong vấn đề vận chuyển, lưu thông hàng hóa, LOGIVAN ra đời như một làn gió mới, khởi đầu sứ mệnh số hóa ngành công nghiệp vận tải Việt Nam.
Được hình thành từ năm 2017, LOGIVAN là startup công nghệ trong lĩnh vực Logistics, tập trung giải quyết bài toán kết nối thị trường vận tải, giúp chủ xe và chủ hàng tìm được đến nhau thông qua một nền tảng công nghệ cao, giải quyết bài toán “xe tải rỗng chiều về” – bài toán lớn đối với ngành vận tải Việt Nam.
Trong suốt 3 năm nỗ lực phát triển, LOGIVAN đã không ngừng đem đến nhiều giá trị cho ngành vận tải và cả nền kinh tế Việt Nam:
Thay đổi cách thức mọi người đặt xe tải;
Giúp tài xế tăng thêm chuyến hàng, nâng cao thu nhập;
Giảm thiểu chi phí Logistics, chi phí vận tải của các doanh nghiệp.
Nỗ lực của LOGIVAN, đã được khẳng định bởi những giải thưởng, danh hiệu danh giá, đem đến sức mạnh bứt phá đáng tự hào:
Chiến thắng cuộc thi khởi nghiệp Uber Exchange (2018), LOGIVAN trở thành startup duy nhất giành tấm vé tới thung lũng Silicon (Mỹ) và nhận được sự cố vấn trực tiếp từ Tổng GIám đốc công nghệ toàn cầu UBER – Thuận Phạm;
Giành giải Công ty khởi nghiệp tốt nhất trong PITCH 2018 tại RISE 2018 và mang về chiến thắng đầu tiên cho các công ty khởi nghiệp Việt Nam tại Hội nghị thượng đỉnh Châu Á;
Giải nhất Pitch@Palace 2018 do hoàng tử Anh Andrew – Công tước xứ York tổ chức và được đánh giá là đem lại giải pháp đột phá trong lĩnh vực logistics, đồng thời có tác động tích cực đến xã hội, nền kinh tế và môi trường sống tại Việt Nam.
Khởi nghiệp với những giải thưởng uy tín, LOGIVAN là cái tên dần được nhắc đến phổ biến trong ngành vận tải hàng hóa tại Việt Nam, khẳng định được thương hiệu với chỉ vỏn vẹn 3 năm phát triển.
Ứng dụng LOGIVAN – Xu hướng mới cùng tính chuyên nghiệp, an toàn, hiệu quả
LOGIVAN cung cấp dịch vụ vận tải 4.0 dựa trên nền tảng kết nối trực tiếp chủ hàng và mạng lưới xe tải trên toàn quốc với 2 sản phẩm chính là LOGIVAN – Chủ hàng và LOGIVAN – Chủ xe. Các sản phẩm ứng dụng công nghệ này ra đời với các tính năng tiện lợi, giúp người dùng dễ dàng trong thao tác sử dụng và quản lý trên nền tảng iOS và Android.
Ứng dụng công nghệ vận tải LOGIVAN – Chủ xe: giúp kết nối trực tiếp các tài xế xe tải với các đơn hàng cần vận chuyển trên toàn quốc. Giải pháp công nghệ vận tải giúp chủ xe chủ động, linh hoạt trong mỗi chuyến hàng đồng thời tăng thêm thu nhập, thúc đẩy lưu thông hàng hóa.
Ứng dụng công nghệ vận tải LOGIVAN – Chủ hàng: giúp kết nối trực tiếp các doanh nghiệp, chủ hàng với mạng lưới đối tác vận tải trên toàn quốc. An toàn, hiệu quả với tính năng theo dõi hành trình của tài xế, giúp chủ hàng yên tâm về hàng hóa cần vận chuyển với giá thành hợp lý, tiết kiệm.
Tự hào là startup đầu tiên áp dụng trí tuệ nhân tạo vào ngành vận tải Việt Nam, LOGIVAN đã ra mắt hệ thống tính giá gói dịch vụ chuyển hàng 5 sao LOGINOW, giúp chủ hàng tra cứu giá nhanh chóng và chính xác với cước phí tốt nhất.
Trở thành LOGINEER – Những “siêu nhân vận tải” và gặt hái thành công ngay hôm nay cùng LOGIVAN
Không dừng lại ở đó, LOGIVAN luôn nỗ lực hết mình mở rộng thị trường, tìm kiếm giải pháp tối ưu cho các bài toán lớn trong ngành vận tải Việt Nam. Và để thực hiện mục tiêu đó, LOGIVAN liên tục chiêu mộ nhân tài công nghệ, những con người chủ chốt giúp LOGIVAN thực hiện ước mơ của mình.
LOGIVAN tin rằng mỗi người là một người hùng, đặc biệt khi đến với LOGIVAN, mỗi người là một nhân tố tài năng, đã khẳng định rằng bản thân mang trong mình sức mạnh, ý chí và khát khao thay đổi mọi thứ. Với tất cả niềm tin, sự nỗ lực, hãy cùng nhau, cùng LOGIVAN, cùng công nghệ cách mạng hóa thế giới vận tải.
Với tất cả tâm huyết, LOGIVAN luôn mong muốn “kết nạp” các thành viên LOGINEER, những người sở hữu:
Niềm đam mê công nghệ mãnh liệt;
Sự mạnh mẽ dám thực hiện;
Sự bứt phá và dám thành công.
Cùng khám phá những lý do giúp LOGIGAN thành công trong việc thu hút và “giữ chân” những nhân năng của mình.
LOGIGAN luôn ghi nhận mọi thành tích và tạo cơ hội tối đa cho LOGINEER thăng tiến trong sự nghiệp.
Tại đây, LOGINEER được hòa mình vào môi trường làm việc thân thiện, cởi mở và tràn đầy niềm vui với cơ hội cộng tác với những đồng đội thông minh, tài năng và hài hước;
Mở rộng cơ hội phát triển bản thân thông qua các buổi chia sẻ, những khóa đào tạo chuyên môn do LOGIVAN tài trợ;
Nhận về nhiều đãi ngộ xứng đáng như mức lương cạnh tranh, loạt thưởng xứng đáng cho sự tiến bộ và những thành tựu đạt được.
Với sự phát triển không ngừng, LOGIGAN hứa hẹn là điểm dừng chân lý tưởng cho các “tay đua công nghệ” trên chặng đường vươn tới thành công.
>>> Khám phá ngay các vị trí hấp dẫn đến từ LOGIVAN:
Tài liệu ngành công nghệ thông tin đã tiếp tục được TopDev tổng hợp, TopDev xin tiếp tục gửi đến cho các bạn phần tiếp theo các môn học của ngành CNTT tại Việt Nam, đặc biệt là những bạn sinh viên ngành Công nghệ thông tin đang sắp làm quen với các môn học chuyên ngành.
Hi vọng tài liệu ngành công nghệ thông tin sẽ giúp cho các bạn học tập được hiệu quả hơn khi còn đang chập chững những bước đầu trên con đường trở thành 1 lập trình viên tương lai!
Phần này sẽ là nội dung các môn học thuộc ‘Kiến thức cơ sở ngành’, bao gồm:
1. Cấu trúc dữ liệu và giải thuật 🌟:
Trong khoa học máy tính, cấu trúc dữ liệu là một cách lưu dữ liệu trong máy tính sao cho nó có thể được sử dụng một cách hiệu quả.
Thuật toán, còn gọi là giải thuật, là một tập hợp hữu hạn của các chỉ thị hay phương cách được định nghĩa rõ ràng cho việc hoàn tất một số sự việc từ một trạng thái ban đầu cho trước; khi các chỉ thị này được áp dụng triệt để thì sẽ dẫn đến kết quả sau cùng như đã dự đoán trước.
Cơ sở dữ liệu (Database) là một tập hợp các dữ liệu có tổ chức, thường được lưu trữ và truy cập điện tử từ hệ thống máy tính. Khi cơ sở dữ liệu phức tạp hơn, chúng thường được phát triển bằng cách sử dụng các kỹ thuật thiết kế và mô hình hóa chính thức.
Trí tuệ nhân tạo đang trở thành một xu hướng công nghệ trên toàn thế giới những năm gần đây. Việc nghiên cứu phát triển các trí thông minh nhân tạo nhằm giải quyết các vấn đề nhu cầu trong cuộc sống đang rất được quan tâm. Lương dành cho các kĩ sư AI cũng cao không kém, chính vì vậy nếu bạn không muốn bỏ lỡ các cơ hội khi học tập lập trình Trí tuệ nhân tạo thì có thể tham khảo tài liệu “Nhập môn trí tuệ nhân tạo” sau.
Công nghệ phần mềm còn có tên gọi khác là “Kĩ thuật phần mềm” là một cách tiếp cận có hệ thống, có kỷ luật, và định lượng được cho việc phát triển, sử dụng và bảo trì phần mềm. Cuốn sách này sẽ đi chi tiết các nội dung làm việc, lý thuyết và thực tế cơ bản khi làm việc trong lĩnh vực thiết kế phần mềm. Nếu bạn là một lập trình viên thì tuyệt không thể bỏ qua cuốn sách này để trao dồi kiến thức bản thân thêm nữa.
Giáo trình này không tập trung vào một hệ điều hành hay phần cứng cụ thể nào. Thay vào đó, giáo trình sẽ thảo luận những khái niệm cơ bản được áp dụng trong từng hệ điều hành khác nhau.
Để dễ dàng đọc và hiểu tài liệu ngành công nghệ thông tin này, người đọc phải nắm các cấu trúc dữ liệu cơ bản, tổ chức của một hệ thống máy tính và ngôn ngữ lập trình cấp cao. Các khái niệm và giải thuật cơ bản được trình bày trong giáo trình dựa trên việc chúng được dùng trong các hệ điều hành thương mại hay trong các hệ điều hành thử nghiệm.
Lập trình hướng đối tượng là một mẫu hình lập trình dựa trên khái niệm “công nghệ đối tượng”, mà trong đó, đối tượng chứa đựng các dữ liệu, trên các trường, thường được gọi là các thuộc tính; và mã nguồn, được tổ chức thành các phương thức. Trong lập trình hướng đối tượng, chương trình máy tính được thiết kế bằng cách tách nó ra khỏi phạm vi các đối tượng tương tác với nhau.
Ngôn ngữ lập trình hướng đối tượng khá đa dạng, phần lớn là các ngôn ngữ lập trình theo lớp, nghĩa là các đối tượng trong các ngôn ngữ này được xem như thực thể của một lớp, được dùng để định nghĩa một kiểu dữ liệu.
Windows là hệ điều hành đồ họa trực quan, do dó các tài nguyên của hệ thống cung cấp rất đa dạng đòi hỏi người lập trình phải nghiên cứu rất nhiều để phát hay hết sức mạnh của hệ điều hành.
Theo như những mục đích tiếp cận của các nhà lập trình thì các ứng dụng trên Windows phải hết sức thân thiện với người dùng thông qua giao diện đồ họa sẵn có của Windows. Về lý thuyết thì một người dùng làm việc được với một ứng dụng của Windows thì có thể làm việc được với những ứng dụng khác.
Nhưng trong thực tế để sử dụng một ứng dụng cho đạt hiệu quả cao trong Windows thì cần phải có một số huấn luyện trợ giúp hay tối thiểu thì phải cho biết chương trình ứng dụng làm việc như thế nào.
Đa số các ứng dụng trong Windows đều có chung một giao diện tương tác với người dùng giống nhau. Ví dụ như các ứng dụng trong Windows đa số đều có thanh thực đơn chứa các mục như : File, Edit, Tool, Help… Và trong hộp thoại thì thường chứa các phần tử điều khiển chung như : Edit Control, Button Control, Checkbox….
Trong toán học và tin học, lý thuyết đồ thị (graph theory) nghiên cứu các tính chất của đồ thị. Một cách không chính thức, đồ thị là một tập các đối tượng được gọi là các đỉnh (hoặc nút) nối với nhau bởi các cạnh (hoặc cung). Cạnh có thể có hướng hoặc vô hướng. Đồ thị thường được vẽ dưới dạng một tập các điểm (các đỉnh nối với nhau bằng các đoạn thẳng (các cạnh).
Đồ thị biểu diễn được rất nhiều cấu trúc, nhiều bài toán thực tế có thể được biểu diễn bằng đồ thị. Ví dụ, cấu trúc liên kết của một website có thể được biểu diễn bằng một đồ thị có hướng như sau: các đỉnh là các trang web hiện có tại website, tồn tại một cạnh có hướng nối từ trang A tới trang B khi và chỉ khi A có chứa 1 liên kết tới B. Do vậy, sự phát triển của các thuật toán xử lý đồ thị là một trong các mối quan tâm chính của khoa học máy tính.
Mạng máy tính là một hệ thống các máy tính được kết nối với nhau bằng các phương thức truyền dẫn nào đó và tuân theo 1 kiến trúc nhất định sao cho chúng có thể chia sẻ tài nguyên (dữ liệu, thiết bị) với nhau. Qua bài giảng này các bạn sẽ được học các thành phần cơ bản của mạng máy tính, lịch sử phát triển và còn nhiều nữa…
Kỳ tiếp theo TopDev sẽ tiếp tục với các môn chuyên ngành ‘Hệ thống thông tin’, ‘Mạng máy tính’, ‘Công nghệ phần mềm’ & ‘An ninh mạng’, các bạn nhớ đón xem nhé!
Chúc các bạn có những giờ học tập và làm việc hiệu quả.
Tài liệu ngành công nghệ thông tin đã được TopDev tổng hợp từ nhiều nguồn kiến thức uy tín, hôm nay TopDev xin gửi đến cho các bạn, đặc biệt là những bạn sinh viên ngành Công nghệ thông tin năm nhất những môn đại cương mà bạn sẽ được học trên ghế giảng đường, mà cụ thể là các môn về Khoa học tự nhiên: Toán – Tin và Ngoại ngữ chuyên ngành công nghệ thông tin.
Hi vọng tài liệu ngành công nghệ thông tin này sẽ giúp cho các bạn học tập được hiệu quả hơn khi còn đang chập chững những bước đầu trên con đường trở thành lập trình viên tương lai! 🥳
Nội dung các môn Đại cương này bao gồm:
I. Ngoại ngữ 🔥
Tiếng Anh chuyên ngành 🌟
Công nghệ thông tin từ lâu đã đóng vai trò quan trọng trong cuộc sống của chúng ta. Việc dạy và học Tiếng Anh Công nghệ thông tin tại Học viện công nghệ Bưu chính viễn thông từ lâu đã được quan tâm và phát triển.
Tiếp theo cuốn giáo trình Tiếng Anh công nghệ thông tin đã và đang được dạy và học tại Học viện, cuốn sách Hướng dẫn học Tiếng Anh công nghệ thông tin dùng cho Hệ đào tạo từ xa đã được ra đời nhằm mục đích giúp học viên có thể tự học tập tốt hơn.
Cuốn sách cũng được hình thành dựa trên sườn của cuốn giáo trình gốc 10 bài gồm các hướng dẫn cụ thể từ mục từ mới, ý chính của bài khoá, phần dịch, ngữ pháp xuất hiện trong bài học.
Ngoài ra, để giúp học viên có cơ hội tự trau dồi vốn từ vựng và hoàn cảnh giao tiếp chuyên nghiệp hơn trong lĩnh vực Công nghệ thông tin, nhóm tác giả còn dành riêng một mục Hội thoại ở cuối của mỗi bài học.
Kèm theo phần nội dung hướng dẫn dạy và học cho 10 bài, các bạn học viên còn có thể tự luyện tập củng cố các kiến thức học được trong 10 bài qua việc luyện tập làm các bài tập và so sánh kết quả ở phần đáp án.
Giải tích là một trong những công cụ hữu dụng nhất trong CNTT. Nó được sử dụng trong xử lý tín hiệu số, trong bài toán tối ưu hóa… từ đó ứng dụng trong các bài toán của trí tuệ nhân tạo, máy học, xử lý âm thanh, thị giác máy tính…
Đại số được sử dụng nhiều trong xử lý ảnh, trong các bài toán của khai thác dữ liệu. Dữ liệu thường được lưu dưới dạng ma trận và các phép tính trên ma trận được sử dụng. Kiểu dữ liệu array thực chất cũng chỉ là biến thể của ma trận.
Học CNTT không có nghĩa là học lập trình và sử dụng công cụ (framework – library này nọ). Thầy mình từng nói với lớp mình là “Học lập trình cũng như học nói thôi. Có người nói hay, có người nói dở nhưng quan trọng là nội dung bạn nói”. Học cách sử dụng ngôn ngữ, framework, bạn học cách nói hay, nhưng cái quan trọng nhất của nó là nội dung bạn xử lý. Toán đóng vai trò quan trọng trong các thao tác xử lý và biến đổi dữ liệu.
Đại số tuyến tính là một ngành toán học nghiên cứu về không gian vectơ, hệ phương trình tuyến tính và các phép biến đổi tuyến tính giữa chúng. Và là 1 trong những môn quan trọng cho các bạn sinh viên ngành Khoa học máy tính.
Đại số tuyến tính được sử dụng nhiều trong toán học, như trong đại số đại cương, giải tích hàm, hình học giải tích… để giải các bài toán như phép quay trong không gian, nội suy bình phương nhỏ nhất, nghiệm của hệ phương trình vi phân, tìm đường tròn qua ba điểm…
Nó cũng có vô vàn ứng dụng trong khoa học tự nhiên (vật lý, công nghệ…) và khoa học xã hội (kinh tế…), vì các mô hình phi tuyến tính hay gặp trong tự nhiên và xã hội thường có thể xấp xỉ bằng mô hình tuyến tính.
Toán rời rạc là một lĩnh vực nghiên cứu và xử lý các đối tượng rời rạc dùng để đếm các đối tượng, và nghiên cứu mối quan hệ giữa các tập rời rạc. Một trong những yếu tố làm Toán rời rạc trở nên quan trọng là việc lưu trữ, xử lý thông tin trong các hệ thống máy tính về bản chất là rời rạc. Chính vì lý do đó, Toán học rời rạc là một môn học bắt buộc mang tính chất kinh điển của các ngành Công nghệ thông tin và Điện tử Viễn thông.
Tài liệu hướng dẫn môn học Toán học rời rạc được xây dựng cho hệ đào tạo từ xa Học viện công nghệ Bưu chính Viễn thông được xây dựng dựa trên cơ sở kinh nghiệm giảng dạy môn học và kế thừa từ giáo trình “Toán học rời rạc ứng dụng trong tin học” của Kenneth Rossen.
Trong mỗi phần của tài liệu, tác giả cố gắng trình bày ngắn gọn trực tiếp vào bản chất của vấn đề, đồng thời cài đặt hầu hết các thuật toán bằng ngôn ngữ lập trình C nhằm đạt được hai mục tiêu chính cho người học: Nâng cao tư duy toán học trong phân tích, thiết kế thuật toán và rèn luyện kỹ năng lập trình với những thuật toán phức tạp.
Thống kê là môn đáng học đối với tất cả mọi người, không riêng gì lập trình viên. Cá nhân mình nghĩ tùy định hướng, lập trình viên mấy nhập môn ban đầu cũng không cần thống kê nhiều lắm. Nếu bạn học chuyên sâu hơn, mình nghĩ thống kê lúc đó sẽ rất cần thiết (làm A/B testing, đọc report…).
Ngoài ra, thống kê giúp bạn tỉnh táo hơn, có thể nhận ra mấy chiêu bài lừa gạt bằng thống kê đầy rẫy trên mạng. Cá nhân mình nghĩ thống kê có ích cho cuộc sống, và ai cũng nên biết.
Nhập môn công nghệ thông tin là một trong những môn học tiên quyết nhằm cung cấp kiến thức cơ bản cho học viên bước đầu tiếp cận với thông tin, xử lý thông tin và truyền thông. Môn học trang bị những kién thứ chung và các thao tác cơ bản trên các thiệt bị dùng hề điều hành Windows, nền tảng cho việc sử dụng các thiết bị và các phần mềm trên máy vi tính.
Bên cạnh đó, môn học còn cung cấp kiến thức về cách sử dụng các phần mềm thông dụng phục vụ cho công tác học tập và làm việc cho học viên như: hệ điều hành thông dụng Windows, kỹ năng sử dụng phần mềm soạn thảo văn bản Microsoft Word, phần mềm thiết lập bảng tính điện tử Microsoft Excel, phần mềm soạn thảo và trình chiếu bài thuyết trình Microsoft Powerpoint.
Cung cấp cho các bạn sinh viên những khái niệm cơ bản về tin học, các khái niệm và phương pháp, kỹ năng lập trình bằng một ngôn ngữ lập trình có cấu trúc: ngôn ngữ C để giải một số bài toán cơ bản.
Về mặt lý thuyết: cung cấp một số kiến thức đại cương và các nguyên lý cơ bản về Tin học, về Hệ Điều hành Windows Các khái niệm, phương pháp, kỹ năng lập trình có cấu trúc trên máy vi tính bằng ngôn ngữ cấp C.
Về thực hành: biết sử dụng Windows và một số tiện ích, biết sử dụng các cấu trúc lập trình trong cài đặt cho một số bài toán.
Kỹ thuật lập trình là 1 trong những môn tiên quyết bắt buộc với tất cả dân lập trình nếu xác định đi theo con đường lập trình viên. Kỹ thuật lập trình tuy được gọi là căn bản nhưng lại cung cấp cho người học những kiến thức nền tảng, tư duy lập trình và đặc biệt với những người mới bắt đầu tiếp cận với lập trình thì đây là hành trang quan trọng nhất.
Trong thời đại công nghệ phát triển mỗi ngày, hàng đống ngôn ngữ lập trình, các framework, engine hỗ trợ, dự án hôm nay xài cái này mai lại xài cái khác, nếu khả năng thích ứng của bạn không cao thì bạn sẽ bị ngộp ngay.
Tuy nhiên nếu nắm chắc kỹ thuật lập trình và có được tư duy lập trình, bạn chỉ cần nắm được “cốt lõi” thì từ đó công nghệ có biến hóa thay đổi ra sao Bạn vẫn nắm được hết. Việc học giữa các ngôn ngữ cũng không thành vấn đề khi bạn đã có nền tảng.
Do đặc thù của ngành nghề kỹ thuật, cũng như môi trường làm việc hầu như chỉ tiếp xúc với máy tính cả ngày nên các kỹ năng mềm của các bạn kỹ thuật hay ngay cả lập trình viên trong cuộc sống thường không phải ai cũng có thể làm tốt. Ngoài ra không những hữu ích cho bản thân bạn trong cuộc sống hàng ngày và xã hội thì khi đi làm, các bạn cũng sẽ phải tiếp xúc với nhiều đồng nghiệp khác, kỹ năng mềm cũng quan trọng không kém cho teamwork trong công việc.
Giáo trình “Kỹ năng mềm” của Đại học Khoa học Tự nhiên HCM được soạn bài bản và khá chi tiết, bao gồm: kỹ năng tư duy, kỹ năng trình bày, kỹ năng đặt câu hỏi, kỹ năng quản lý bản thân, kỹ năng giao tiếp ứng xử, làm việc nhóm, v..v.. và còn nhiều nữa, bên cạnh các trò chơi/ test rất hấp dẫn hi vọng sẽ giúp cho các bạn dev phát triển bản thân toàn diện hơn.
Ngoài những môn thuộc bộ môn ‘Lý luận chính trị’ và ‘Giáo dục thể chất’ ra thì những môn học trên tương đối đầy đủ cho các bạn sinh viên mới nhập môn ngành CNTT, nhưng do tùy chương trình giảng dạy của mỗi trường nên cũng chỉ mang tính chất tương đối để các bạn tham khảo. Hi vọng sẽ giúp các bạn trong quá trình học tập.
Tình hình là một số bạn đặt câu hỏi rất nhiệt tình, rằng: “Ừa nếu Erlang/OTP tốt thế, sao không dùng Erlang thôi mà dùng Elixir chi cho mắc mệt vậy?”.
Một số lý do có thể khiến bạn cân nhắc Elixir thay vì Erlang. Elixir có bộ standard library nhất quán hơn Erlang, có Mix là build tool cung cấp các tác vụ để tạo, compile project, và quản lý dependencies. Ngoài ra, các module như Protocol, Struct, Stream, ExUnit giúp cho việc lập trình dễ dàng. Documentation được xem như first class citizen trong ngôn ngữ, lập trình viên Elixir được khuyến khích viết và maintain docs, với các công cụ như doctest. Ngoài ra, theo ý kiến chủ quan của tui, code Elixir dễ đọc và dễ học hơn nhiều, so với code nhìn như đám rừng của Erlang
Cơ mà trên tất cả, một lần nữa theo ý kiến chủ quan của tui, metaprogramming là một tính năng bạn không nên bỏ qua khi cân nhắc Elixir. Nhờ có metaprogramming, Elixir có những thư viện với DSL đẹp như Ecto, Phoenix, Nerves. Nhờ metaprogramming, bạn có thể tự viết compiler của riêng mình như một stage trong quá trình biên dịch. Nhờ metaprogramming, một thư viện đã được tăng tốcchỉ với vài dòng code.
Metaprogramming Elixir
Như bạn đã biết, meta-programming là một kỹ thuật dùng code để viết code. Nắm vững kĩ thuật meta-programming trong Elixir như đã nói có thể giúp bạn tận dụng compile time để nâng cao performance, viết DSL và làm nhiều trò vui khác.
Mặc dầu hướng dẫn meta-programming không phải là mục tiêu của bài viết này, tui vẫn sẽ nói sơ qua về định nghĩa và cách sử dụng một số construct như quote, unquote, và macros để bạn meta-program trong Elixir. Bạn có thể đọc tutorial trên trang chủ Elixir nếu muốn tìm hiểu chi tiết hơn.
quote và unquote
Meta-programming trong Elixir được thực hiện thông qua hai construct là quote và unquote.
quotetrả về AST (Abstract Syntax Tree) của biểu thức nhận vào. Một AST trong Elixir là một tuple gồm ba phần tử: tên của AST, metadata chứa environment của AST, và các tham số của AST đó.
Trong khi đó unquote cho phép bạn inject một value bên ngoài vào biểu thức trong quote. Hãy tưởng tượng unquote như string interpolation, khác với interpolation là giá trị của biến được chèn vào chuỗi, unquote cho phép bạn chèn giá trị của biến vào một biểu thức trong quote.
Chú ý một biến ở ngoài quote không ảnh hưởng đến biểu thức bên trong nó, trừ phi bạn unquote biến đó một cách tường minh. Ví dụ sau đây, thay vì chèn 3 vào AST như ví dụ ở trên, {:a, [], Elixir} đại diện cho biến a được chèn vào trong AST trả về.
Với quote và unquote, bạn đã đủ đồ chơi để bắt đầu meta-program một ứng dụng Elixir. Mặc dù vậy, bạn cần thêm sự trợ giúp của macros.
Macros
Macros là một trong những viên gạch giúp bạn metaprogram trên nền tảng ngôn ngữ Elixir. Macros trong Elixir là hygienic, lexical, và explicit. Mặc định biến định nghĩa trong macros không ảnh hưởng đến code của caller; muốn dùng macros của một module, bạn phải require hoặc import module đó tường minh, và không có chuyện tự động import một module ở mức global (nhắc đến thì cơn đau đầu của tui với Ruby lại tràn về); cuối cùng là bạn không thể chạy một macro mà không gọi nó.
Để khai báo một macros, bạn dùng defmacro. Chú ý macros phải được khai báo trong một module. Ở ví dụ sau, macro HelloWorld.define_hello_world() giúp bạn định nghĩa hàm hello_world/0 trong Foo mà không cần phải viết toàn bộ hàm.
defmoduleHelloWorlddodefmacrodefine_hello_world() doquotedodefhello_world() do
IO.puts("hello world")
endendendenddefmoduleFoodo
import HelloWorld
define_hello_world()
end
Foo.hello_world()
# hello world
Elixir – Ngôn ngữ được viết bằng macros
Thật vậy, không ngoa khi nói Elixir là một ngôn ngữ được viết bằng macros của chính nó.
Ngoài một số construct được định nghĩa dưới dạng special forms được ngôn ngữ bảo vệ, tất cả mọi hàm và macros khác của Elixir, bạn đều có thể override lại được, kể cả biểu thức và “keyword” if, in, def, defmodule, hay thậm chí là cả … defmacro nữa.
Để chứng minh tui không chém gió, ta hãy cùng đọc code của if được định nghĩa trong Kernel.
defmacroif(condition, clauses) do
build_if(condition, clauses)
enddefpbuild_if(condition, do: do_clause) do
build_if(condition, do: do_clause, else:nil)
enddefpbuild_if(condition, do: do_clause, else: else_clause) do
optimize_boolean(
quotedocase unquote(condition) do
x when:"Elixir.Kernel".in(x, [false, nil]) -> unquote(else_clause)
_ -> unquote(do_clause)
endend
)
enddefpbuild_if(_condition, _arguments) do
raise ArgumentError,
"invalid or duplicate keys for if, only \"do\" and an optional \"else\" are permitted"end
Như ta thấy, về bản chất if chỉ là một macro viết lại biểu thức truyền vào thành một mệnh đề sử dụng case (là một special form). Nếu condition trả về có giá trị là false hoặc nil, mệnh đề else sẽ được thực hiện; ngược lại, mệnh đề do sẽ được thực hiện.
Tương tự với unless, nó chỉ là đảo ngược lại của if.
Cả &&, ||, or và and cũng không phải là special forms mà chỉ là macros .
defmacroleft && right do
assert_no_match_or_guard_scope(__CALLER__.context, "&&")
quotedocase unquote(left) do
x when:"Elixir.Kernel".in(x, [false, nil]) ->
x
_ ->
unquote(right)
endendend
Thật tuyệt vời khi một ngôn ngữ có thể tự viết chính nó chỉ bằng một số special form ban đầu đúng không? Với các special forms này, bạn có thể tự viết lại phiên bản if của riêng mình. Ví dụ, ta sẽ viết lại if với điều kiện nghiêm ngặt hơn: chỉ chấp nhận boolean condition.
# lib/sane_if.exdefmoduleSaneIfdodefmacroif(condition, do: do_clause, else: else_clause) doquotedocase unquote(condition) dotrue -> unquote(do_clause)
false -> unquote(else_clause)
_other -> raise ArgumentError, "This is a sane macro that only works with boolean"endendendend# lib/use_sane_if.ex
import Kernel, except: [if:2]
defmoduleUseSaneIfdo
import SaneIf
defsane?(a) do
if a do"sane"
else
"insane"endendend# iex(1)> UseSaneIf.sane?(true)# "sane"# iex(2)> UseSaneIf.sane?(false)# "insane"# iex(3)> UseSaneIf.sane?(is_number(3))# "sane"# iex(4)> UseSaneIf.sane?(nil)# ** (ArgumentError) This is a sane macro that only works with boolean
Làm thế nào để Elixir làm được điều này? Tất cả là nhờ vào expansion stage trong quá trình compile, tui sẽ viết rõ hơn trong một bài viết khác .
Bài viết này sẽ giúp bạn tăng lương thế nào?
Như thường lệ, bài viết không giúp bạn tăng lương.
Nếu bạn vừa tiếp cận với Elixir, tui hy vọng bài viết đã giúp bạn hiểu rõ hơn một chút về ngôn ngữ này, về cách mà nó đã dùng macro để tạo nên ngôn ngữ.
Nhân bài viết về macros trong Elixir, tui muốn nhắc lại là mỗi khi bạn định viết một macro nào đó, hãy nhớ rằng … bạn KHÔNG CẦN phải viết macros. Macros thường làm code của của bạn khó đọc hơn và ảo diệu hơn, mà cái gì mà ảo diệu hơn thì thường khó maintain hơn.
Hay nói rõ hơn là hầu như bạn không cần đến macros trừ phi bạn có một lý do thật sự mạnh mẽ. Lý do DRY code (Don’t Repeat Yourself) thường là không đủ thuyết phục. Bạn có behaviours, protocols, đủ để bạn DRY code mà không cần đến macro.
Ngay trên trang chủ, core team của Elixir đã viết:
Elixir already provides mechanisms to write your everyday code in a simple and readable fashion by using its data structures and functions. Macros should only be used as a last resort. Remember that explicit is better than implicit. Clear code is better than concise code.
Bài viết được sự cho phép của BBT Tạp chí Lập trình
Trong lập trình, thông thường để hoán đổi hai giá trị phải sử dụng 1 biến phụ và mất tới 3 dòng lệnh. Bạn có ngạc nhiên không nếu có một cách đơn giản hơn nhiều để hoán đổi hai giá trị mà không cần biến phụ mà chúng ta có thể sử dụng được trong JavaScript?
Sẽ có hai loại hoán đổi ở đây. Loại thứ nhất là hoán đổi biến kiểu nguyên thủy, ta sẽ hoán đổi hai số trước. Loại còn lại phức tạp hơn, ta sẽ hoán đổi hai biến kiểu bất kỳ: Object, String, Float,…
Phương pháp truyền thống
Mục tiêu ở đây ta sẽ hoán đổi hai biến a và b (kiểu bất kỳ)
Như thường lệ, ta sử dụng một biến c, tạm thời lưu trữ giá trị ban đầu của a rồi sau đó tiến hành hoán đổi. Nhưng liệu có cách nào mà không phải sử dụng biến tạm thời không? Có, có chứ!
Đối với số nguyên
Hãy bắt đầu với loại đầu tiên: hoán đổi hai số nguyên.
Sử dụng toán tử toán học
Hoặc
Sử dụng toán tử XOR
Với biến kiểu số nguyên, ta có thể khéo léo sử dụng toán tử đảo bit là XOR:
Hoặc
Đây gọi là thuật toán hoán đổi sử dụng XOR. Nguyên lý của nó được miêu tả cụ thể ở đây (Wikipedia).
Cách này ta sử dụng comma operator (toán tử dấu phẩy) không cần biến phụ, không cần mảng, có thêm thắt một chút, và nó chạy rất nhanh. Trong thực tế đôi khi nó còn nhanh hơn cách dùng biến phụ nếu chạy trên một vài nền tảng. Và nó đúng với mọi loại số, không bao giờ tràn bộ nhớ, và cân luôn mấy trường hợp đặc biệt chẳng hạn Infinity hay NaN.
Các bước chạy cụ thể như sau:
(b=a, 0): gán giá trị ban đầu của a cho b, trả về số 0.
a = b + 0: gán giá trị b (ban đầu) + 0 cho a, tức gán a = b.
Vuex là một cái store cho Vue, nó giống hệt như redux store của React, cũng giải quyết những vấn đề như redux, nên nếu bạn ko biết tại sao nó lại cần thì có thể đọc lại Redux là gì và tại sao phải dùng.
mutations được config trong store (nó như reducer của redux) là tập những phương thức được dùng để update state. Chúng ta không update state trực tiếp, không gọi đến các hàm mutation trực tiếp, chúng ta gọi this.$store.commit('ten-phuong-thuc', payload) để gọi các phương thức này.
Mutation là những phương thức synchronous
// gọi mutation
methods:{unregister(registration){this.$store.commit({
type:'unregister',
userId: registration.userId
});}},// khai báo mutation trong lúc tạo store
mutations:{register(state, userId){
state.registrations.push(userId);},}
Actions
Sự khác biệt lớn nhất giữa action và mutation là trong action có thể return promise, nó có thể thực hiện các thao tác asynchronous
Nếu trong redux bạn cần một middleware để xử lý các thao tác asynchronous, thì action trong vue store chính là các hàm bạn dùng để làm chuyện này. Chúng ta cũng không gọi trực tiếp đến các hàm của actions mà phải gọi qua dispatch. Mục đích cuối cùng của action cũng là commit một mutation, nó cũng không chỉnh sửa gì state.
// gọi một action ở component, map nó vô phương thức
methods:{registerUser(user){this.$store.dispatch('register', user.id);}}// khai báo action trong store
actions:{register(context, userId){setTimeout(()=>{// vẫn commit lên mutation
context.commit('register', userId);},2000)}}
Getters
Trong store chúng ta khai báo các phương thức gọi chung là getters, nó giống như các computed property của store.
Các hàm `getters` luôn trả về giá trị
Nếu bạn chưa biết computed property là gì, mình quote lại ngắn gọn cho các bạn nhớ
Computed property là những giá trị cần tính lại khi một biến nó phụ thuộc thay đổi giá trị.
Ví dụ, giỏ hàng, tổng tiền là computed property được tính lại khi trên tất cả sản phẩm có trong giỏ hàng.
Khi ứng dụng của chúng ta lớn lên, để hết mọi quản lý ở một chỗ như vậy sẽ rất mệt. Modules giúp chúng ta tách cái store ra theo từng feature
const moduleA ={
state:{...},
mutations:{...},
actions:{...},
getters:{...}}const moduleB ={
state:{...},
mutations:{...},
actions:{...}}const store =newVuex.Store({
modules:{
a: moduleA,
b: moduleB
}})
store.state.a // -> `moduleA`'s state
store.state.b // -> `moduleB`'s state
Các phần còn lại: getters, actions, mutations truy cập trực tiếp như bình thường, KHÔNG cần thông qua store.actions.moduleName. Nó sẽ được lồng vào trong module name khi chúng ta bật namespaced: true
const store =newVuex.Store({
modules:{
account:{
namespaced:true,// module assets
state:{...},
getters:{isAdmin(){...}// -> getters['account/isAdmin']},
actions:{login(){...}// -> dispatch('account/login')},
mutations:{login(){...}// -> commit('account/login')},// nested modules
modules:{// kế thừa namespace từ module cha
myPage:{
state:{...},
getters:{profile(){...}// -> getters['account/profile']}},
posts:{
namespaced:true,
state:{...},
getters:{popular(){...}// -> getters['account/posts/popular']}}}}}})
Lương Gross là tổng thu nhập của người lao động, bao gồm cả các khoản đóng bảo hiểm và thuế. Mức lương thực nhận của người lao động sẽ thấp hơn mức này vì họ sẽ phải trích ra một phần để đóng bảo hiểm và nộp thuế thu nhập cá nhân.
Lương Net là lương thực nhận của người lao động sau khi đã trừ hết các khoản chi phí bảo hiểm và thuế thu nhập cá nhân, nói một cách đơn giản đó là mức tiền thực tế của bạn khi nhận về sau mỗi đợt lương.
Nếu nhìn sơ qua người lao động có thể tưởng rằng lương Net có lợi hơn vì đó chính là số tiền thực nhận, còn lương Gross dễ tạo cảm giác người lao động bị mất một khoảng tiền mỗi tháng. Tuy nhiên, khi nhìn vào thực tế khi chúng ta quy đổi lương Net sang Gross và ngược lại thì số tiền người lao động nhận được không đổi, dù bạn thỏa thuận với nhà tuyển dụng bằng cách nào nào thì họ sẽ tính toán để lương Net và lương Gross ở mức tương đương với nhau.
Ví dụ: Mức lương Gross là 16,000,000 VND sẽ tương đương với mức lương Net 14,154,000 trong trường hợp đóng bảo hiểm trên lương chính thức
-Vậy nên khi nhà tuyển dụng quyết định trả bạn mức lương Gross là 16,000,000 VND, nếu bạn đàm phán mức lương Net thì lương của bạn sẽ là 14,154,000 và ngược lại. Về cơ bản lương bạn nhận được vẫn không đổi dù bạn đàm phán lương Net hay Gross.
Theo quy định mới nhất (Từ 1/7/2020)
Nếu để ý kỹ, người lao động sẽ thấy rằng khi dùng cách tính lương Gross, mức lương họ nhận được sẽ rõ ràng hơn, đồng nghĩa với việc họ sẽ chủ động tính toán được mức lương Net của cũng như các phúc lợi mà công ty đang đóng cho mình. Trái lại với mức lương Net người lao động sẽ khó biết được mức bảo hiểm công ty đóng cho mình thực tế sẽ là bao nhiêu. Điều này sẽ được nói rõ hơn ở phần bên dưới.
Ví dụ: Mức lương Net là 14,500,000 VND
– Nếu bạn đóng bảo hiểm trên mức lương chính thức lương Gross sẽ là 16,406,940 VND
– Trường hợp đóng bảo hiểm ở mức 6,000,000 VND lương Gross sẽ là 15,130,000 VND
Như ví dụ trên, bạn có thể thấy cùng một mức lương Net nhưng với mức đóng bảo hiểm khác nhau mức lương Gross bạn nhận được chênh nhau khá nhiều, lương Gross sẽ thể hiện chính xác quyền lợi bạn nhận được hơn là lương Net.
Theo quy định mới nhất (Từ 1/7/2020)
Điều gì sẽ ra sao nếu bạn thỏa thuận lương 1 đằng, công ty lại trả 1 nẻo?
Bình tĩnh lại nào! Trước khi giận dữ bạn nên nhớ lại xem lúc bạn thỏa thuận với nhà tuyển dụng bạn đã yêu cầu mức lương GROSS hay lương NET đã nhé! Lương Gross và Net rất dễ gây sự lẫn lộn nếu bạn ít tìm hiểu về nó, vậy để tránh những trường hợp thỏa thuận “lộn” lương với HR thì bạn nên hiểu rõ khái niệm và cách tính của 2 loại lương này nhé.
Lương Net và Gross là 2 cách tính lương/ hình thức trả lương thông dụng nhất trong xã hội hiện nay. Có thể bạn đã nghe qua 2 khái niệm Gross và Net nhưng bạn đã thực sự hiểu rõ cách tính lương Gross, Net như thế nào hoặc nhận lương Gross hay Net thì hình thức nào có lợi hơn chưa?
Lương Net được hiểu là khoản lương thực lãnh mà công ty sẽ trả bạn sau khi trừ hết tất cả các chi phí như bảo hiểm, thuế….Có nghĩa là, đó sẽ là khoản lương chính xác mà bạn nhận về mà không cần phải đóng thêm bất cứ khoản nào cho nhà nước nữa.
Lấy ví dụ cụ thể:
Nếu 1 công ty offer bạn mức lương là 10 triệu Net thì có nghĩa là số tiền bạn sẽ nhận được trong mỗi tháng chính xác là trọn vẹn 10 triệu. Bạn sẽ không cần phải chi trả thêm bất kỳ khoản nào trong số tiền lương bạn nhận được.
Ưu điểm
Bạn sẽ nhận được đúng số tiền mà bạn đã thỏa thuận từ trước mà không cần phải tính toán hay chịu bất kỳ khoản chi phí nào vì công ty sẽ là người giải quyết những vấn đề đó.
Nhược điểm
Nhiều công ty sẽ lợi dụng sự thiếu hiểu biết hoặc sơ sót của bạn để trả cho bạn số tiền thấp hơn mức lương bạn mong muốn.
Ví dụ:
Khi nhà tuyển dụng hỏi bạn muốn mức lương như thế nào? Dù bạn đã đưa ra mức lương thỏa thuận là 10 triệu nhưng khi nhận lương thì chỉ còn có 8 triệu 950 ngàn. Vậy vấn đề là ở đâu? Có thể là do đôi bên sơ sót không nói rõ khi thỏa thuận lương, sau đó nhà tuyển dụng mặc định lấy lương Gross.
Hoặc cũng có thể là do bạn không phân biệt được lương Gross với Net là gì nên đã nhầm lẫn… Hàng ngàn lý do có thể xảy ra nếu bạn không đủ kiến thức về 2 hình thức chi trả lương này.
Lương Gross là gì?
Khái niệm và ưu nhược điểm của lương Gross
Lương Gross là khoản lương mà bạn sẽ nhận được sau khi công ty đã chi trả hết các loại chi phí như bảo hiểm xã hội, bảo hiểm sức khỏe, bảo hiểm thất nghiệp và thuế thu nhập cá nhân. Chắc chắn số tiền lương thực lãnh của bạn sẽ thấp hơn khoản lương Gross mà bạn đã thỏa thuận với nhà tuyển dụng.
Lấy ví dụ:
Nếu 1 công ty offer bạn mức lương 10 triệu Gross thì đồng nghĩa với việc bạn chỉ nhận mức thực lãnh là 8 triệu 950 ngàn vì bạn đã phải trích ra 8% cho Bảo hiểm Xã hội, 1.5% Bảo hiểm Y tế và 1% bảo hiểm thất nghiệp. Ngoài ra với mức lương Gross là 10 triệu bạn còn phải chi trả mức thuế thu nhập cá nhân nữa.
Ưu điểm
Bạn sẽ nhận được đầy đủ tất cả các quyền lợi về bảo hiểm, đồng thời bạn cũng có thể tự chủ động để tính toán mức lương bạn sẽ nhận được.
Khuyết điểm
Nếu bạn không phải là một người giỏi tính toán hoặc chưa rõ số tiền mình phải chi ra cho bảo hiểm và thuế thì hãy cẩn thận nhé, vì có thể bạn sẽ tính sai và nhận được số tiền lương thấp hơn số lương bạn mong muốn đấy!
Ví dụ: Bạn kỳ vọng mức thực lãnh của bạn ở mức 10 triệu nhưng vì bạn tính toán nhầm hoặc bạn không rõ số % phải trả cho bảo hiểm như thế nào nên bạn chỉ thỏa thuận với nhà tuyển dụng mức lương Gross 10 triệu 500 ngàn. Với 10 triệu 500 ngàn Gross thì chắc chắn số tiền thực lãnh sẽ không đủ 10 triệu như bạn dự tính.
Cách tính lương Gross và Net
Để tránh những trường hợp như tính nhầm lương, không rõ bảo hiểm trừ lương bao nhiêu thì TopDev sẽ đút kết ra một vài công thức về cách tính lương Net, lương Gross và thuế thu nhập cá nhân, bạn chỉ cần dựa vào công thức chuẩn này là sẽ có thể tính toán mức thực lãnh của bạn một cách dễ dàng.
Thuế TNCN: Thuế Thu nhập Cá nhân (% tùy vào giá trị lương)
Bạn có thể tiết kiệm được nhiề thời gian, công sức và tăng tính chính xác hơn khi sử dụng công cụ tính lương của TopDev.
Cách tính thuế Thu nhập Cá nhân
Thuế Thu nhập Cá nhân = Thu nhập tính thuế x thuế suất
Thu nhập tính thuế= Tổng lương nhận được – Các khoản được miễn thuế – Các khoản giảm trừ
Trong đó :
Tổng lương nhận được= Lương + phụ cấp + các khoản bổ sung khác
Tổng lương nhận được: toàn bộ các khoản thực lãnh của người lao động nhận được trong tháng
Các khoản được miễn thuế (Nếu có)= Lương tăng ca + Thưởng + Phụ cấp cơm trưa + Phụ cấp điện thoại + Phụ cấp đồng phục
Phụ cấp tăng ca và phụ cấp cơm trưa còn có điều kiện kèm theo. Trong đó phụ cấp tăng ca chỉ tính thuế trên mức lương cơ bản, ví dụ ngày công thông thường của bạn là 200 ngàn, hôm nào tăng ca thì sẽ được 500 ngàn => bạn chỉ cần đóng phần thuế cho 200 ngàn. Ngoài ra, phụ cấp ăn trưa sẽ bị tính thuế nếu số tiền phụ cấp nhiều hơn 730 ngàn.
Các khoản giảm trừ (theo luật mới nhất từ 1/7/2020):
Giảm trừ gia cảnh = Người lao động (11 triệu/tháng/người) + Người phụ thuộc (4,4 triệu/tháng/người)
Lưu ý:
Đối với người lao động thì không cần phải đăng ký với sở về khoản giảm trừ 11 triệu này, mà chỉ cần chọn 1 nơi để tính vào giảm trừ gia cảnh nếu đã từng làm nhiều nơi.
Đối với người phụ thuộc thì phải đăng ký, khai báo với cục Thuế
Nơi có thể đăng ký giảm trừ không nhất thiết phải là nơi nhận lại khoản tiền giảm trừ.
Người lao động có thể đăng ký chịu cho nhiều người phụ thuộc.
Các khoản giảm trừ có hiệu lực ngay kể từ khi ký tên đăng ký.
Người phụ thuộc chỉ có thể đăng ký giảm trừ cho duy nhất 1 người lao động.
Nếu người lao động có chung 1 người phụ thuộc thì 2 bên tự thỏa thuận ai là người đăng ký cho người phụ thuộc ấy.
Ví dụ: Đặt trường hợp trong một gia đình 3 người có cha mẹ và con, trong đó con là người phụ thuộc, cha mẹ là người lao động thì họ sẽ phải thỏa thuận ai mới là người đăng ký giảm trừ cho con.
Sau khi đọc qua các tính lương ở trên thì bạn cũng có thể dễ dàng hình dung được lương Gross và Net thật ra không có gì khác biệt, bạn vẫn sẽ nhận được đúng số tiền mà bạn đã thỏa thuận dù là lương Gross hay Net.
Tuy nhiên, bạn có thể dựa vào ưu nhược điểm mà TopDev đã phân tích ở trên để chọn cho mình hướng deal lương phù hợp với bạn. Đối với những bạn không giỏi tính toán nhanh thì bạn nên chọn deal lương Net và yêu cầu có toàn bộ Bảo hiểm (BHXH, BHYT, BHTN), Thuế thu nhập, đãi ngộ theo luật pháp lao động của nước ta hiện nay để tránh bị các công ty luồn lách bỏ qua.
Còn đối với các bạn giỏi tính toán hoặc trong trường hợp không thể nhớ nổi các loại Bảo hiểm thuế mà bạn phải đóng thì bạn hãy mạnh dạn chủ động yêu cầu mức lương Gross. Lưu ý khi bạn chọn Gross là bạn đã thực sự tính đúng được khoản thực lãnh của mình nhé!
Ngoài ra còn cách đơn giản hơn hết là bạn tự đặt cho mình 1 mức lương bạn có thể chấp nhận được cho vị trí đó. Sau đó bạn chỉ cần lấy kết quả mà bạn đã tự tính toán sẵn ở nhà bằng công thức mà TopDev đã cung cấp ở trên hoặc sử dụng tool chuyển đổi lương Gross Net để deal với công ty. Với cách này, bạn chắc chắn sẽ không bao giờ bị “hố” khi deal lương với bất kỳ công ty nào!
Để có sự chuẩn bị tốt nhất cho Quiz 04, các bạn có thể luyện tập giải các đề thi về AI đã diễn ra trong các Quiz cũ của Kambria. Các vòng thi Quiz có những dạng đề bài tương tự nhau, nên việc luyện tập các vòng thi trước sẽ giúp bạn làm quen và nâng cao điểm số khi tham gia dự thi.
Các vòng thi cũ của Kambria Code Challenge luôn được lưu tại tab Previous Challenges trong mỗi quiz. Chỉ cần vài cú click đơn giản, bạn sẽ tìm thấy đề thi cũ và tiến hành giải thử.
Hoặc, bạn có thể luyện tập giải Quiz 01 và Quiz 02 ngay khi click vào các đường link dưới đây. Ngoài ra, bạn cũng có thể xem lại bài giải của các Quiz sau khi hoàn thành xong.
Kambria cũng chuẩn bị các tài liệu khác để giúp bạn ôn tập kiến thức. Bạn có thể xem tại đây: https://app.kambria.io/library
Kambria Code Challenge có tổng cộng 4 Quiz, trong đó Quiz 04 có giải thưởng lớn nhất với 2 bounty được mở cùng lúc:
Standard Quiz 04 Bounty: tất cả mọi người đều có thể đăng ký tham gia. Bounty này có tổng cộng 15 câu hỏi với độ khó tương đương với các Quiz trước đây của Kambria Code Challenge.
Special Quiz 04 Bounty: chỉ những thí sinh đã tham gia ít nhất 2 Quiz của Kambria Code Challenge mới được tham gia Special Bounty. Special Bounty có tổng cộng 20 câu hỏi với độ khó cao hơn, cùng với giải thưởng lớn hơn.
Kambria Code Challenge hiện tại đang diễn ra Quiz 04. Bạn click vào link sau để tìm hiểu thêm thông tin! Hoặc đăng ký tham dự Quiz 04 theo hướng dẫn tại:
Chuẩn hóa văn phong theo hướng quốc tế luôn là vấn đề mà nhiều người Việt mắc phải khi viết CV. Vì thế, việc nắm bắt chính xác những yếu tố cần thiết để viết một CV – Hồ sơ xin việc tiếng Anh là điều cần thiết. Nhất là trong thời đại hội nhập quốc tế như hiện nay, một chiếc CV tiếng Anh chuẩn về nội dung, đúng về cách thức sẽ là lợi thế lớn cho bạn trong “cuộc chơi” nghề nghiệp.
Đảm bảo nội dung CV có bố cục rõ ràng và khoa học
3s đầu tiên được đánh giá là rất quan trọng. Vì đó là cơ sở để nhà tuyển dụng xem xét và sàng lọc CV của bạn. Liệu CV của bạn sẽ có một tổng thể hoàn chỉnh hay sơ sài? Hãy đảm bảo rằng CV của bạn bao gồm đầy đủ các mục trọng tâm trước khi đi sâu khai thác nội dung từng phần
Một CV xin việc thường phải đảm bảo ít nhất các thông tin sau đây.
– Khi viết CV tiếng Anh, bạn cần phải có ảnh đại diện (nên lựa chọn ảnh rõ mặt, nghiêm túc, miêu tả thần thái tốt nhất của bạn).
– Ngoài ra, bạn tạo ra ấn tượng bằng cách thêm phần mô tả ngắn về bản thân. Đó có thể là phương châm sống – làm việc hay một câu châm ngôn mà bạn tâm đắc.
Mục này được xem là điểm nhấn thu hút nhà tuyển dụng. Hãy trình bày những nội dung để nhấn mạnh về đặc điểm tính cách, các giá trị chứng tỏ bạn là ứng viên tiềm năng nhất cho vị trí ứng tuyển.
Ghi nhớ: Hãy nhớ chia mục tiêu nghề nghiệp thành hai mục nhỏ rõ ràng gồm:
Mục tiêu dài hạn
Mục tiêu ngắn hạn
Trình độ học vấn (Education and qualifications)
Mục này cần bạn trình bày những nội dung như bằng cấp, tên trường học, chuyên ngành học và thời gian bắt đầu học/tốt nghiệp (chính thức hoặc dự kiến).
Ghi nhớ: Những thông tin về trình độ học vấn nên được triển khai một cách ngắn gọn và rõ ràng.
Kinh nghiệm làm việc (Work Experience)
Nếu trong trường hợp, bạn nhảy việc nhiều lần. Hãy thông minh trong việc lựa chọn và liệt kê những kinh nghiệm có liên quan đến vị trí ứng tuyển hiện tại.
Tiếp đó là sắp xếp chúng theo một trình tự logic. Để tạo điểm nhấn, đừng quên sử dụng các từ khóa phản ánh tính hiệu quả cao như: developing, planning, organizing, creating…
Ngoài ra, nếu bạn nghĩ rằng các kinh nghiệm chạy bàn, dạy thêm,.. là những trải nghiệm thừa thãi. Đó là suy nghĩ hoàn toàn sai lầm. Ở đây, chúng ta không so sánh những trải nghiệm. Mọi kinh nghiệm đều có giá trị riêng của nó. Tùy vào vị trí ứng tuyển, bạn hãy xem xét để điều chỉnh sao cho phù hợp nhất. Biết đâu một vài kỹ năng về giao tiếp, truyền đạt, chăm sóc khách hàng,… lại là thứ nhà tuyển dụng họ đang mong đợi.
Ghi nhớ: Hãy cố gắng thể hiện những kỹ năng có liên quan đến vị trí bạn đang ứng tuyển để gia tăng cơ hội.
Sở thích và thành tích hoạt động ngoại khóa (Interests and achievements)
Đừng đưa vào những sở thích quá trẻ con và tẻ nhạt vào CV. Thay vào đó, bạn hãy giới thiệu về các sở thích rèn luyện về chuyên môn, hoạt động ngoại khóa phát triển kỹ năng mềm,…,
Ghi nhớ:
Nội dung cần ngắn gọn và rõ ràng khi liệt kê các sở thích khác nhau.
Tránh dùng những sở thích đại trà, giảm hiệu ứng tương tác với nhà tuyển dụng: watching TV, reading, stamp collecting,…
Kỹ năng (Skills)
Đây là mục để bản thể hiện ra những kỹ năng chuyên môn, kỹ năng mềm và khả năng ngoại ngữ của bạn.
Ghi nhớ: Đừng bao giờ thể hiện những kỹ năng bạn không có. Dù có cố tình hay không, dưới con mắt chuyên môn, bạn sẽ trở thành kẻ bại trận trong phút chốc.
Người tham khảo/người giới thiệu (References)
Mục này không nhất thiết phải có. Nhưng đối với các vị trí nhiều kinh nghiệm, thông tin người giới thiệu có ý nghĩa quan trọng. Bạn có thể thêm thông tin của sếp cũ, thấy cô giảng viên hay những người bạn đã từng công tác.
Ghi nhớ: Bạn nên nhận được sự đồng ý từ người giới thiệu trước khi đưa thông tin của họ vào CV của mình.
Một số lưu ý quan trọng giúp CV đạt chuẩn
Ưu tiên sử dụng động từ ở dạng Danh động từ/V-ing (Gerund)
Để đảm bảo tính chuyên nghiệp của CV, bạn nên thống nhất cách sử dụng danh động từ ngay từ đầu.
Theo quy chuẩn chung của thể thức trình bày văn bản khoa học tiếng anh, có 3 loại động từ được linh động sử dụng nhất: động từ nguyên mẫu, động từ ở quá khứ và danh động từ/V-ing. Tuy nhiên, cách dùng V-ing (Gerund) được sử dụng nhiều nhất và nhận được đánh giá cao từ các chuyên gia.
Tăng hiệu quả ứng tuyển bằng cách tạo CV Online hiệu quả trên TopDev
V-ing (Gerund) giúp bố cục nội dung CV được truyền tải một cách sang trọng. Đồng thời, Gerund cũng giúp nhà tuyển dụng nắm bắt nhanh và chính xác các thông tin.
Không sử dụng câu văn quá dài
Nhà tuyển dụng sẽ rất ngao ngán khi thưởng thức những đoạn văn bản quá dài dòng. Thay vì mất thời gian dông dài, bạn hãy tối ưu từ ngữ cùng cách diễn giải cô đọng. Đúng trọng tâm mà vẫn có sức hút, không lan man với những ngữ pháp hay câu từ quá phức tạp.
Chú ý về cách thức đặt tiêu đề
Bạn không cần phải quá khuôn mẫu theo lối đại trà. Hãy loại bỏ sự nhàm chán bằng cách đặt dòng chữ họ và tên của bạn vào vị trí trung tâm, phía trên CV.
Thiện cảm ban đầu rất quan trọng. Bạn không cần làm lố, cũng không cần quá cách điệu. Đơn giản là bạn chị tạo ấn tượng bằng cách đặt tiêu đề. Một chút điều chỉnh có thể tạo ra sự khác biệt, giảm thiểu đi sự đơn điệu vốn có. Biết đâu, nhà tuyển dụng sẽ nhớ ra bạn là ai vì cách đặt tiêu đề khác những ứng viên còn lại. Đó là một tín hiệu tốt.
Bổ sung thêm Cover Letter để hoàn thiện hồ sơ xin việc
Bên cạnh có một CV – Hồ sơ xin việc hoàn chỉnh, bạn nên bổ sung thêm một lá thư xin việc – Cover Letter.
Lưu ý, Cover Letter cũng đảm bảo tính ngắn gọn và súc tích. Không nên kể lể quá nhiều trong thư xin việc.
Bên cạnh đó, cách xưng hô thông qua lời chào ban đầu cũng được xem là một phần quan trọng. Đối với nhà tuyển dụng mà bạn đã biết rõ tên và giới tính, hãy dùng “Dear + Ms/Mr + Tên”. Nếu không biết thì bạn cũng tránh cách dùng quá chung chung như “Dear + Tên công ty”. Hãy cân nhắc đến một vài cụm từ khác phù hợp hơn, chẳng hạn “Dear + HR Department/ HR team”. Đó là tính chuyên nghiệp cần có khi bạn bắt đầu cuộc trò hội thoại thông qua con chữ và sự cảm nhận.
Thông minh trong việc chọn từ vựng
Bạn nên ưu tiên những từ vựng thể hiện sự khẳng định và có tính phổ quát. Sau đây để tạo nên một CV hấp dẫn. Dưới đây là top 15 từ vựng bạn nên thêm vào CV của mình.
Achieve (đạt được)
Improve (cải thiện/tiến bộ)
Train/Mentor (đào tạo/cố vấn)
Manage (thành công trong việc gì đó)
Create (sáng tạo)
Resolved (quyết tâm)
Volunteer (tình nguyện)
Influence (ảnh hưởng)
Increase/Decrease (tăng/giảm)
Idea (ý kiến, ý tưởng)
Negotiate (đàm phán, thương lượng)
Launch (ra mắt, khởi đầu)
Revenue/Profits (doanh thu/lợi nhuận)
Under budget (tiết kiệm, chi tiêu trong mức cho phép)
Win (chiến thắng)
Hạn chế những từ ngữ sáo rỗng
Một loạt những tính từ dưới đây được bắt gặp nhiều trong CV tiếng Anh. Thế nhưng, chúng lại không được các nhà tuyển dụng đánh giá cao. Vì vậy, bạn nên cân nhắc về việc sử dụng chúng nhé!
Hard worker: Làm việc chăm chỉ
Dynamic: Năng động
Detail-oriented: Chú ý đến từng chi tiết nhỏ
Self-motivated: Tự tạo động lực cho bản thân
Motivated: Có khả năng thúc đẩy người khác làm việc
Với index bắt đầu nhận vào là undefined nó sẽ hiểu là 0 (em cũng lại javascript)
Index bắt đầu lớn hơn độ dài của array? Nó sẽ cho ta kết qua là một mảng rỗng
Chưa đủ thú vị? Vậy truyền vào số âm thì sao?
Lúc này nó sẽ được tính theo cơ chế index ngược, các giá trị âm sẽ được tính theo index: thằng cuối cùng là -1, áp cuối là -2, và cứ tiếp tục đi ngược lên.
Chúng ta có thể dùng nó để lấy các phần tử từ phải qua trái (2 phần tử cuối, 3 phần tử cuối, ví dụ vậy)
Đối với String thì cũng cách dùng cũng tương tự như Array (mai quá!)
Mình nghĩ slice cũng là một trong những phương thức chúng rất hay sử dụng, như trong reducer của redux, dùng nó để sao y một state nào đó. Nên việc nắm vững, thực hành với nó nhiều là điều rất chi cần thiết.
Bài viết được sự cho phép của tác giả Lương Văn Phúc
Lời tựa
Chỉ mới tuần trước thôi, cộng đồng developer trên thế giới đã “dậy sóng” khi Apple thông báo sẽ KHÔNG hỗ trợ 16 Web API cho trình duyệt Safari của mình. Bạn thử search google từ khóa “Apple declined to implement 16 Web APIs” sẽ thấy các trang lớn nhỏ đều đăng tin này. Vậy 16 Web API này cụ thể là gì? Việc Apple từ chối chúng có ảnh hưởng gì đến miếng cơm manh áo của lập trình viên tụi mình không? Hãy cùng mình xem xét và bạn sẽ tự có câu trả lời cho bản thân.
Trong bài viết này, mình sẽ cố gắng giải thích rõ hơn về ngữ cảnh của thị trường, sau đó mình sẽ giúp các bạn hiểu (cơ bản) về từng API và ứng dụng của nó như thế nào. Đương nhiên những giải thích của mình đến từ việc tự tìm hiểu cá nhân, nên nếu có sai sót gì thì các bạn góp ý trong phần Comment nhé.
Khoảng cách công nghệ giữa App và Web
Cuộc chiến âm thầm giữ Web (app) và Mobile app
Bạn hãy tự hỏi mình xem vì sao chúng ta tải một app từ Appstore về dùng, thay vì sử dụng các trang web với những chức năng tương tự? Có rất nhiều lý do không thể kể hết, mình xin liệt kê một vài lý do ngẫu nhiên theo trí nhớ của mình (mình mặc định các bạn hiểu là native app nhé, chứ không phải webapp):
App chạy nhanh hơn web rất nhiều?
App có thể chạy offline, web thì không?
App có các tính năng như Geolocation, Bluetooth, Push notification, Device Motion, Sensors… web thì không?
KHOAN, hình như có gì đó KHÔNG đúng! Nếu bạn đang cảm giác như vậy, thì chứng tỏ bạn cũng rất hay cập nhật tin tức công nghệ. Đúng vậy, web đã có những tính năng trên, và còn nhiều hơn thế nữa.
Web đang phát triển từng ngày, hàng loạt các API được phát triển trong cuộc đua với app. Những gì app có thể làm được, thì web cũng đang dần rút ngắn khoảng cách với app. Và trong một tương lai không xa, web sẽ thay thế app? Các bạn có tin vào điều đó không?
Các bạn có thể tham khảo trang web What web can do today để xem “Ngày nay web có thể làm được gì”.
“Thuyết âm mưu” về Apple
Bạn nghĩ sao nếu thật sự tương lai web sẽ thay thế app, và người dùng sẽ không còn tải app từ các Appstore nữa? Apple sẽ ra sao nếu app không còn đất dụng võ? Các native app developer sẽ thay đổi thế nào để thích ứng?
Và vì thế, có tin đồn rằng Apple đang muốn kìm hãm sự phát triển của web để hạn chế sự đe dọa đến đế chế của mình. Và tin đồn đó càng được tin tưởng khi Apple vừa từ chối không hỗ trợ 16 Web API giúp tăng sức mạnh của web và rút ngắn khoảng cách với app.
Lý do Apple đưa ra là gì?
User Fingerprinting
Tin đồn ở trên vẫn chỉ là tin đồn thôi nhé. Lý do Apple đưa ra là để tránh “user fingerprinting”. Nói đơn giản là Apple không muốn tăng khả năng user bị lấy cắp thông tin về hành vi sử dụng web (bởi các công ty quảng cáo trực tuyến hay công ty thu thập và phân tích thông tin người dùng) để phục vụ cho nhiều mục đích khác nhau như quảng cáo online…
Tất nhiên lý do Apple đưa ra rất hợp tình hợp lý với triết lý phát triển sản phẩm lâu đời của mình. Nên tin đồn trên là mình bổ sung để các bạn đọc chơi cho biết thôi nhé.
Mình xin dài dòng thêm một câu nữa thôi nhé 😅. Tuy Apple từ chối hỗ trợ (cho Safari) nhưng hầu hết đều được hỗ trợ bởi Chrome và Firefox, vì thế chúng ta vẫn có thể lạc quan về sự phát triển của web trong tương lai.
1. Web bluetooth
API này cho phép trang web kết nối đến các thiết bị xung quanh thông qua bluetooth. Chỉ với API này, ứng dụng của nó là vô cùng nhiều. Bạn hãy tưởng tượng căn nhà của bạn sử dụng bóng đèn được tắt mở thông qua bluetooth. Thông thường bạn sẽ phải tải app để điều khiển tắt mở, nhưng giờ web đã có thể làm được rồi nhé.
API này cho phép trang web kết nối với các bộ cảm biến đo từ trường (từ kế) xung quanh. Đây là loại cảm biến ít được biết đến, nó giúp trang web có khả năng đọc được cường độ từ trường bằng cách sử dụng cảm biến của thiết bị. Ứng dụng của nó thường dành cho các thiết bị ngoại vi như gamepad (điều khiển hành động của người chơi), hoặc cũng có thể biến trang web của bạn thành một chiếc la bàn. Các bạn có thể tham khảo demo ứng dụng WebVR (Web Virtual Reality) ở link bên dưới. Mình không thực sự rành về lĩnh vực này, nếu các bạn muốn tìm hiểu sâu hơn về nó thì có thể google thêm nhé.
API này cho phép trang web tương tác với các thẻ thông minh NFC (gọi là Tag) thông qua thiết bị đọc NFC. Theo thế giới di động, NFC (Near-Field Communications) là công nghệ kết nối không dây tầm ngắn trong khoảng cách 4 cm. Công nghệ này sử dụng cảm ứng từ trường để thực hiện kết nối giữa các thiết bị (smartphone, tablet, loa, tai nghe,…) khi có sự tiếp xúc trực tiếp (chạm).
Ví dụ minh họa máy đọc NFC
API vẫn đang được phát triển và chưa có trên các browser hiện tại. Tuy nhiên bạn có thể thử với Chrome khi bật cờ enable-experimental-web-platform-features lên.
Cho phép trang web lấy được thông tin về bộ nhớ (RAM) của thiết bị (tình bằng gigabyte). API này khá đơn giản, bạn hãy thử chạy đoạn script này với Chrome nhé:
const memory = navigator.deviceMemory;
console.log(`This device has at least ${memory}GiB of RAM.`);
API này cung cấp thông tin về kết nối mạng của thiết bị, và cho phép trang web biết khi nào loại kết nối (connection type) thay đổi. Bạn hãy thử chạy đoạn script này với Chrome nhé:
Cho phép trang web dò (scan) các thiết bị kết nối bluetooth trong phạm vi. Tính năng này vẫn đang được phát triển, nếu bạn muốn thử nghiệm thì có thể bật cờ enable-experimental-web-platform-features lên nhé.
Google translate: “Cho phép trang web nhận biết được mức độ ánh sáng hiện tại hoặc độ rọi của ánh sáng xung quanh thiết bị thông qua các cảm biến của thiết bị. Bạn hãy tưởng tượng mình đang lướt web, mức độ độ ánh sáng phòng tự nhiên tụt xuống (ai đó kéo rèm chẳng hạn), thì trang web sẽ tự động chuyển sang các chế độ màu sắc phù hợp với mức độ sáng hiện tại.
HDCP là viết tắt của High-bandwidth Digital Content Protection. API này cho phép trang web kiểm tra xem thiết bị có “HDCP policies” hay không, thường được sử dụng trong việc streaming video. HDCP không nằm trong hiểu biết của mình, nên mình lược dịch một vài thông tin từ nguồn trên mạng nhé.
Mục đích của HDCP là để bảo vệ bản quyền các nội dung số khi nó được truyền đến TV nhà bạn, thường là thông qua cổng kết nối HDMI hoặc DVI. Netflix yêu cầu HDCP khi stream nội dung từ thiết bị kết nối với TV của bạn.
Ngày nay, HDCP là một chính sách bắt buộc để stream các nội dung chất lượng cao. Ngày trước các web developer muốn có được quyền HDCP sẽ phải chờ đợi được cấp phép hoặc buộc phải stream với chất lượng thấp. HDCP Policy Check API ra đời để giải quyết vấn đề đó.
Cho phép trang web biết được khoảng cách (và các thông tin khác) giữa thiết bị và một vật ở xa, thông qua cảm biến “proximity sensor”. Một ví dụ để tưởng tượng về ứng dụng của nó với app nhé. Bạn có để ý khi gọi điện thoại (smartphone), bạn kê điện thoại lên gần tai để nghe, và wow (chỉ là bộ cảm biến bắn ra một event thôi), điện thoại tự tắt màn hình để tiết kiệm pin (và giảm nóng thiết bị). Ứng dụng của nó thì nhiều vô số kể, chỉ là bạn có nghĩ ra không thôi.
Cho phép trang web biết được thông tin về các thiết bị HID (Human Interface Device) được kết nối. Các thiết bị này ví dụ như: chuột máy tính, bàn phím, gamepad, touchscreen…
Cho phép trang web đọc và ghi dữ liệu từ các thiết như microcontroller, máy in 3D… Mình không quan tâm về phần cứng lắm, tuy nhiên nếu bạn yêu thích về phần cứng, thì bạn sẽ hiểu ứng dụng của nó nhiều thế nào.
Cho phép trang web giao tiếp với các thiết bị thông qua cổng USB (Universal Serial Bus). Tất nhiên khi nói đến USB, chúng ta không chỉ nói đến các thiết bị lưu trữ mà chúng ta vẫn hay gọi là USB, mà còn các thiết bị khác như chuột, bàn phím và rất nhiều thiết bị khác. Và với những thiết bị “không chuẩn” ấy (non-standardized USB devices), thường chúng ta sẽ phải cài driver để có thể sử dụng. Đó là một trong những vấn đề mà WebUSB API giải quyết.
Trước đó chúng ta đã Geolocation API rồi, và đây là phiên bản mở rộng “xịn” hơn. Nó được giới thiệu là mang tính nhất quán với các bộ API khác trong “gia đình” Sensor APIs (https://www.w3.org/das/roadmap), tăng khả năng bảo mật, quyền riêng tư và dễ dàng mở rộng.
Cho phép chúng ta biết được khi nào thì user ở trạng thái “idle”, hay có thể nói nôm na là không tương tác với thiết bị. Các trường hợp user ở trạng thái idle như: user không tương tác với chuột, bàn phím, màn hình, bật chế độ screensaver, khóa màn hình, hoặc thao tác trên một màn hình khác. Chúng ta có thể xác lập khoảng thời gian để bắn ra sự kiện này.
Như các bạn thấy, các API trên hầu hết được phát triển để Web có thể tương tác với phần cứng và người dùng tốt hơn (với mobile app, windows app hay macos app thì đơn giản). Tuy nhiên tiện dụng quá thì sẽ dễ bị kẻ xấu lợi dụng, và đó là cũng là lý do Apple từ chối phát triển các API trên, ngay cả Chrome và Firefox cũng phải cân nhắc một số API với lý do tương tự.
Wireframe là một công cụ quan trọng trong quá trình thiết kế và phát triển sản phẩm. Trong quá trình sáng tạo sản phẩm, nó được xem là “ngôn ngữ” được thể hiện thông qua các bản vẽ thiết kế giúp developer, product manager và designer có thể giao tiếp được với nhau. Cùng TopDev xem Wireframe có những điều thú vị nào cần khám phá.
Wireframe là gì?
Wireframe(khung xương/cấu trúc dây) là một công cụ trực quan để thiết kế web ở cấp độ cấu trúc. Một wireframe thường được sử dụng để bố trí nội dung và chức năng trên một trang. Wireframe còn được sử dụng trong quá trình thiết lập cấu trúc cơ bản của trang web trước khi thiết kế trực quan. Tất nhiên, quá trình ấy cần được tạo lập, bổ sung và hoàn thiện nội dung.
Một cách mô tả khác, có thể hiểu Wireframe là các bố cục trắng đen được phác thảo theo kích thước và vị trí cụ thể tương ứng với từng thành phần trang, tính năng trang, các khu vực chuyển đổi hay mỗi sự điều hướng cho trang web của bạn. Chúng đơn thuần, không có màu sắc, sự chọn lựa về phông chữ, logo hay bất kỳ yếu tố thiết kế nào. Điều wireframe tập trung chính là cấu trúc của trang web.
Yếu tố phân biệt và mục đích sử dụng Wireframe?
Wireframe có khả năng hỗ trợ và phụ ứng với những vấn đề nảy sinh trong quá trình thiết kế giao diện. Một Wireframe là một bố cục của một trang web thể hiện những yếu tố giao diện nào sẽ tồn tại trên các trang chính. Đây là một phần quan trọng của quá trình thiết kế tương tác.
Wireframe không phải là bản phác thảo, bản nháp… Và tất, bản thảo, bản nháp cũng không được gọi là Lo-fi Wireframe, nó chỉ đơn thuần là Sketch.
Khi nhìn vào Sketch (hình bên trái), khó để chúng ta nắm bắt được ý đồ cụ thể UX. Ngược lại, cũng là những nét nguệch ngoạc tưởng chừng khó hình dung, nhưng nếu là dân học thuật về thiết kế bạn sẽ biết rõ về các chức năng, vị trí, vai trò các thành phần.
Nếu chỉ đơn thuần thảo luận và vẽ ra các chức năng thì nó cũng chỉ là Sketch, không phải Wireframe. Khi thực hiện UX dựa trên một quyết định tổng thể chung, thì sự thống nhất đó bước đầu gọi là Wireframe.
Mục đích của Wireframe trước hết là cung cấp sự hiểu biết trực quan đầu tiên về một trang web.
Tiếp đó là thu hút để nhận được sự đồng ý của các bên liên quan và nhóm dự án trước khi giai đoạn sáng tạo được tiến hành. Wireframes cũng có thể được sử dụng để tạo điều hướng, đảm bảo những thuật ngữ và cấu trúc nội dung được sử dụng cho trang web đáp ứng đúng mong đợi của người dùng.
Ưu – nhược điểm của Wireframe
Ưu điểm
Wireframe cung cấp một hình ảnh tổng thể trong thời gian sớm nhất, được sử dụng để xem xét đàm phán với khách hàng. Nhìn nhận từ góc độ thực tế, các wireframe đảm bảo đầy đủ nội dung và chức năng của trang trên cơ sở định vị chính xác dựa trên nhu cầu của người dùng và doanh nghiệp. Đây cũng chính là lợi thế lớn nhất mà cấu trúc wireframe mang lại cho người dùng.
Khi phát triển dự án, chúng có vai trò thiết thực hỗ trợ sử dụng giữa các thành viên của một nhóm, giúp họ làm việc để thống nhất về tầm nhìn và phạm vi hoạt động của dự án.
Nhược điểm
Vì các wireframe không bao gồm bất kỳ thiết kế hoặc yêu cầu kỹ thuật nào, nên không phải lúc nào khách hàng cũng dễ dàng nắm bắt được khái niệm/thuật ngữ này. Nhà thiết kế web cũng sẽ phải dịch các wireframe thành một thiết kế. Ngoài ra, cần có sự phối hợp giữa người thiết kế và copywriter khi làm việc với phần nội dung website cho phù hợp.
Tại sao bạn nên sử dụng Wireframe?
Thứ nhất, khả năng hiển thị và truyền tải trực quan: Mỗi sơ đồ trang web đa phần được tổ chức thực hiện một cách trừu tượng. Trong khi đó, wireframe biến bản chất trừu tượng – phức tạp thành một đối tượng – object cụ thể – đơn giản hơn, dễ nắm bắt.
Thứ hai, sự tiếp cận và phản ánh chính xác các tính năng của một trang web: Trong nhiều trường hợp, khách hàng chưa hiểu rõ về ý tưởng mà bạn truyền tải. Wireframe tiếp cận và mô tả đầy đủ, cung cấp những thông tin rõ ràng về cách vận hành các tính năng và mức độ hữu dụng của chúng thế nào. Từ đó, bạn dễ dàng đưa ra quyết định loại bỏ một tính năng nào đó nếu nó chưa phù hợp với mục tiêu của trang web.
Thứ ba, ưu tiên về khả năng sử dụng: Wireframe đẩy khả năng sử dụng lên hàng đầu cũng như nhìn nhận nó một cách khách quan về: đường dẫn chuyển đổi, đặt tên liên kết, vị trí điều hướng,… Đồng thời, wireframe có thể chỉ ra các lỗ hổng trong kiến trúc trang web. Điều này sẽ giúp bạn kiểm soát được những rủi ro có thể xảy ra và kịp thời có những phương án, giải pháp back-up một cách hiệu quả hơn.
Cuối cùng, tối ưu hóa thời gian cho quá trình: Wireframes đảm bảo rằng việc kết hợp các khía cạnh đa chiều về sự sáng tạo, thương hiệu của trang web trong một bước. Điều này cho phép khách hàng cung cấp phản hồi sớm hơn trong quy trình. Hơn thế nữa, Wireframe giúp người dùng tính toán nhiều hơn, khiến mọi thứ trở nên rõ ràng, cụ thể nhất.
Wireframe và những thuật ngữ có liên quan
Mỗi thuật ngữ khi được sinh ra để mô tả cho một hoạt động khoa học chuyên ngành nào đó. Khi đặt chung một phạm trù, chúng ta sẽ nhận ra mối liên hệ giữa nó và các thuật ngữ liên quan. Cả 3 thuật ngữ Wireframe, Mockups và Prototype đều có mục đích, vai trò khác nhau đối với quá trình thiết kế.
Wireframes là các minh họa đơn giản về cấu trúc và các thành phần của một trang web. Đó là các yếu tố đồ họa như đường thẳng, hình hộp với các gam màu đen, trắng ,… Wireframe cung cấp những mô tả, hướng dẫn cụ thể giúp bạn định hình chính xác ngay từ ban đầu.
Mockups là cấp độ tiếp theo từ Wireframe. Nó thường tập trung vào các yếu tố thiết kế trực quan. Mockups có thể sử dụng các yếu tố đồ họa tinh tế thay cho những tông màu thiếu tính thẩm mỹ. Điều này có ý nghĩa quan trọng đối với bản sắc thương hiệu. Vì nó là sự tái diễn của các ngôn ngữ hình ảnh thương hiệu.
Prototype được sử dụng trước khi lập trình logic trên một trang. Nó mang bố cục trang web semi-functional của một mockup với mục đích cung cấp cái nhìn sâu sắc hơn về các chức năng của trang web trước khi nó được xây dựng. Nguyên mẫu Prototype thường được tạo bằng HTML/CSS, thậm chí là JavaScript, để hiển thị cách giao diện người dùng hoạt động.
Các mức độ trung thực
Tính chân thật luôn là điều mà mỗi nhà sáng tạo mong muốn truyền tải đến người xem. Dựa trên những định ban đầu, bạn nên có những thay đổi linh hoạt về mức độ chi tiết và mục tiêu của Wireframe.
Block diagrams
Block diagrams cung cấp các thông tin cơ bản nhất của một Wireframe như: bố cục, các loại nội dung hoặc các chức năng cơ bản mà bạn muốn thể hiện.
Bạn có thể dễ dàng thiết lập hệ thống phân cấp thông tin, kiểu chữ, thêm văn bản, thay đổi kích thước để nhấn mạnh nội dung. Đừng quá đi sâu vào chi tiết. Nhớ rằng việc đề cao tính tổng quát sẽ tốt hơn khi không làm mất bố cục tổng thể của Wireframe.
Grey boxes
Các sắc thái của gam màu xám là lựa chọn tốt để bạn làm nổi bật bố cục, đồng thời tiết kiệm thời gian lựa chọn màu sắc đến mức tối đa. Cách này giúp bạn dễ dàng kiểm tra được User Flows và cách tổ chức nội dung.
Cách thức này tạo ra sự chân thật nhất. Khi nó không đi quá sâu vào các chi tiết đồ họa. Cụ thể hơn là điền những đoạn văn thật (không phải “lorem ipsum”), chiều dài đoạn văn, font chữ lý tưởng,…
High-Fidelity Color
Tuong tự, đây cũng là cách thức giúp bạn có thể thêm màu sắc vào background, nút, đoạn văn để nhấn mạnh hành động mong muốn hoặc User Flows. Tuy nhiên, đừng sa đà và bị phân tâm vào các yếu tố chi tiết. Điều đó sẽ khiến người xem bị mất tập trung bởi màu sắc và các yếu tố quá nhiều.
High-Fidelity Media
Cách thức này giúp bạn hạn chế đi các chi tiết đồ họa. Có nghĩa, bạn có thể chèn hình ảnh, video hoặc cái gì tương tự. Điều này cũng một phần giúp nhấn mạnh nội dung, tác động đến cấu trúc và hệ thống phân cấp thông tin tổng thể.
Các bước xây dựng khung thiết kế wireframe hiệu quả
Thiết kế Wireframe là một bước rất quan trọng bất kỳ quá trình thiết kế giao diện nào.
Nó trông giống như một bản thiết kế kiến trúc; bạn cần trình bày nó trong sơ đồ đen trắng trước khi xây dựng một cấu trúc hoàn chỉnh. Tương tự, đối với một thiết kế giao diện, bạn cần nắm các bước thực hiện, tổ chức bố cục, nội dung,…
Wireframe xác định cách thức mà người dùng tương tác với giao diện. Chẳng hạn như, Wireframe chứa nhiều trạng thái khác nhau: nút bấm hoặc các hành vi của menu.
Thiết kế wireframe tạo ra sự tương tác với giao diện trực quan. Điểm đặc biệt chính là nó không bị phân tâm bởi các yếu tố màu sắc, kiểu chữ,… Có 9 bước mà bạn cần lưu tâm khi thiết lập thiết kế Wireframe hiệu quả.
Bước 1: Khai thác những cảm hứng
Tìm ra những ý tưởng hay là điều đầu tiên bạn phải quan tâm. Một bức ảnh có thể vẽ ra hàng nghìn từ ngữ khác nhau. Theo dõi và cố gắng nắm bắt ạn có thể nhanh chóng có được một cái nhìn tổng thể và nắm bắt được sự trực quan về cách các nhà thiết kế đang vận hành quy trình thiết kế Wireframe như thế nào?
Ban cũng có thể sử dụng các phần mềm đánh dấu bookmark trên trình duyệt khá tiện dụng này.
Một điểm khá thú vị là nếu liên tục quan sát những gì mà các nhà thiết kế hoặc các trang web đang làm cho Wireframe của họ, bạn sẽ dần hình dung ra cách Wireframe giúp tổ chức thông tin cho giao diện như thế nào.
Bước 2: Thiết kế quy trình của bạn
Thiết kế là một quá trình được tổ chức. Bạn phải tìm ra các quy trình nếu bạn muốn phát huy những thế mạnh của mình. Sau đây là một số sơ đồ cho thấy một số quy trình điển hình:
Dựa vào trải nghiệm cá nhân, bạn nên cân nhắc việc nên lựa chọn bất kỳ Framework HTML/CSS nào trong các dự án. Hãy đưa ra các quyết định, quá trình nào bạn cảm thấy phù hợp nhất. Đôi khi, hãy thử nghiệm để tự đánh giá được quy trình nào mang lại hiệu quả cao. Bạn không cần quá giỏi trong việc phát thảo. Đơn giản là hãy cố gắng để tự xem xét hành trình. Đó là cơ sở để bạn phát triển quy trình ưa thích của riêng mình.
Lấy một ví dụ minh họa. bạn sử dụng Illustrator như là công cụ thiết kế Wireframe chủ yếu là vì ba lý do:
1. Phong cách, bạn có thể linh động và lưu các phong cách của kiểu và đối tượng, sử dụng lại chúng trong suốt phần còn lại, tương tự như CSS.
2. Dễ dàng chỉnh sửa, di chuyển hoặc co giãn kích thước các đối tượng.
3. Có sự linh hoạt trong việc chuyển đổi sang Photoshop.
Tuy nhiên, tôi có sử dụng các công cụ khác và nó phụ thuộc vào tình huống của dự án. Tôi sẽ tóm tắt một số công cụ phổ biến, điểm mạnh và yếu của chúng trong phần tiếp theo.
Bước 3: Thông minh trong việc lựa chọn các công cụ
TopDev gợi ý cho bạn một số công cụ được sử dụng phổ biến hiện nay trong việc xây dựng Wireframe trong UI UX.
Đầu tiên phải kể đến 3 công cụ được các designer yêu thích trong thiết kế wireframe:
1. Omnigraffle
Đây là một công cụ được yêu thích của người dùng Macbook. Omnigraffle cũng có một thư viện đóng góp từ dữ liệu thực từ những người dùng. Và được hỗ trợ rộng rãi bao gồm các thành phần có thể tái sử dụng.
Omnigraffle còn có các tính năng hiệu quả: tự động bố cục, kiểu đối tượng tùy biến, smart guide,… Các tính năng này cũng có mặt trong bộ phần mềm Adobe CS. Nếu bạn không có bộ CS, Omnigraffle là lựa chọn hợp lý (khoảng 100$) để tạo các Wireframe chi tiết.
2. Axure
Được xem là “người anh cả”, Axure là công cụ hỗ trợ tốt cho thiết kế Wireframe chuyên nghiệp. Nhưng công cụ này mới xuất hiện trên hệ điều hành Windows.
Tuy nhiên, công cụ này chỉ mới xuất hiện. Dù vậy độ phủ sóng vì các năng thông minh, đặc biệt là Dark mode của Axure là điều không cần bàn cãi.
3. Illustrator
Nếu có xuất phát điểm từ một designer thì bạn hẳn rất rõ về Adobe Illustrator.
Đây là một trong những công cụ khá được các nhà thiết kế yêu thích. Illustrator giúp tạo ra các Wireframe nhanh chóng, như vẫn đảm bảo được độ phức tạp đặc thù. Điểm nổi bật của Illustrator là khả năng xuất sang định dạng PSD với các layer có thể chỉnh sửa. Đồng thời, công cụ này còn hỗ trợ sao chép và dán mạnh mẽ cho Photoshop; kiểm soát typography mạnh mẽ với các phong cách mà bạn có thể lưu, chỉnh sửa và tái sử dụng. Dưới đây là mẫu giao diện làm việc của Adobe Illustrator.
Ngoài các công cụ phổ biến, bạn có thể tham thêm các công cụ dưới đây:
4. Indesign
Indesign thu hút người dùng do lợi thế đặc biệt. Như việc tạo ra sự các nguyên mẫu có tính tương tác và độ chuẩn xác cao.
Có những điểm mạnh tương đồng với Adobe Illustrator về khả năng kiểm soát typography mạnh mẽ hơn; Indesign có khả năng kiểm soát typography tốt hơn. Đồng thời, hỗ trợ các master page mạnh mẽ và gần đây là có khả năng tạo ra các nguyên mẫu có tính tương tác.
5. Balsamiq
Balsamiq được giới thiết kế đánh giá cao và trở nên phổ biến khi các Wireframe được tạo ra giống với các bản thảo chuyên nghiệp. Công cụ này nổi bật hơn với một thư viện khổng lồ bao gồm các thành phần có thể tái sử dụng.
Bạn cũng có thể sử dụng nó trên hầu hết các nền tảng khác nhau: Mac, Windows và Linux. Hơn thế nữa, còn có một phiên bản web nếu bạn muốn làm việc trên đám mây. Các ứng dụng của bên thứ ba như iMockups cho iOS cũng hỗ trợ việc xuất ra các định dạng Balsamiq.
6. Flairbuilder
Flairbuilder là một công cụ mới được sáng chế nhằm hỗ trợ mạnh mẽ cho các tương tác.
Không những thế, nó còn có một thư viện thành phần khổng lồ, hỗ trợ các master page. Và tất nhiên, bạn dễ dàng có thể xuất ra nguyên mẫu để xem trực tuyến.
Các bạn đừng lo nếu các phần mềm desktop không phải là sự lựa chọn hoàn hảo. Hãy thử trải nghiệm các ứng dụng trực tuyến hữu ích sau đây:
7. Keynote/Powerpoint
Với những tính năng nổi bật, Keynotopia chuyển đổi ứng dụng thuyết trình yêu thích của bạn thành công cụ thiết kế nguyên mẫu nhanh nhất. Chính điều này đã giúp tạo các mockup ứng dụng di động, web và desktop. Đối với những người không sử dụng mac, Keynotopia còn cung cấp các template powerpoint.
Fireworks
Fireworks có thể làm việc trên toàn bộ quá trình thiết kế. Từ các Wireframe cơ bản cho đến giao diện đầy đủ. Fireworks hỗ trợ các master page (được mô tả như các template) tái sử dụng trên các trang con. Ngoài ra, Fireworks còn cho phép bạn tạo các các nguyên mẫu có tính tương tác.
Bước 4: Thiết lập một Grid
Hiểu một cách đơn giản, hệ thống Grid là một cách tổ chức theo cấu trúc. Nó không quá phức tạp trong việc bố trí các thành phần.
Lấy ví dụ cụ thể, bạn dùng Illustrator để tiến hành thiết lập. Trước tiên, đó là thiết lập kích thước tài liệu. Giả sử bạn chọn kích thước 1280 x 900. Điều này cho phép sự co giãn giữa các độ phân giải di động lên mức tối đa 1140 pixel.
Đặt template đã tải về từ CSS grid vào tài liệu của bạn
Bước 5: Xác định bố cục với các ô
Hãy bắt đầu bằng cách vẽ các ô trên Grid. Tiếp đó hãy quan tâm đến thứ tự thông tin mà bạn muốn trình bày với người xem. Một trình tự hoàn hảo sẽ bắt đầu từ trên xuống dưới, sau đó là từ trái sang phải. Như ví dụ dưới đây mô tả.
Tùy vào mục tiêu và đối tượng, bạn có thể sáng tạo với bố cục. Tuy nhiên, vẫn giữ được thứ bậc của thông tin trong đầu. Dưới đây là một ví dụ thực tế mô tả vấn đề này.
Bước 6: Xác định thứ bậc thông tin với Typography
Khi đã sắp xếp các ô hợp lý, bạn hãy bắt đầu thêm vào đó một ít nội dung. Nó sẽ giúp bạn đánh giá được thông tin có được cấu trúc hóa tốt hay không. Nguyên tắc quan trọng nằm ở sự giống nhau. Tức là thông tin mà bạn muốn truyền tải phải rõ ràng, ngay cả trong một Wireframe đen trắng.
Một bí quyết ở bước này là bạn hãy sử dụng các kích thước phông chữ khác nhau. Đó là cách tuyệt vời để phân biệt các cấp độ thông tin khác nhau.
Mặt khác, bạn nên điền thêm thông tin chi tiết vào. Bạn có thể nhận ra bố cục ban đầu không hoạt động tốt. Đó là toàn bộ vấn đề của quá trình thiết kế Wireframe. Như ví dụ dưới đây mô tả.
Bước 7: Tinh chỉnh với dãy màu xám
Tận dụng dãy màu xám giúp bạn xác định được cường độ trực quan của các thành phần.
Bước 8: Wireframe có mức độ chi tiết cao
Đây là bước giúp nâng cao và tối ưu hóa toàn bộ quá trình tổ chức Wireframe. Nó không bắt buộc phải được thực hiện. Tuy nhiên, để đảm bảo hiệu suất của quá trình sáng tạo, bạn có thể cân nhắc.
Việc tạo ra một Wireframe có độ chi tiết cao cũng rất quan trọng. Nó đồng nghĩa bạn cần bổ sung nhiều chi tiết hơn. Hãy điền các bản sao thực tế vào Wireframe và cố gắng xác định kích thước phông chữ lý tưởng:
Hoặc nó cũng có thể liên quan đến màu sắc:
Ở giai đoạn trực quan hoặc viết code, bạn muốn mình thoát ra khỏi chế độ phác thảo hoặc thử nghiệm thì cách tốt nhất là thực hiện việc lặp lại các chu kỳ (phản hồi <-> thiết kế Wireframe).
Bên cạnh đó, tốt nhất là bạn hãy bỏ qua việc xác định quá nhiều chi tiết. Và đi thẳng vào giai đoạn thiết kế nguyên mẫu có tính tương tác (đó là 37signals). Hiểu đơn giản là các chi tiết không thể được truyền đạt đầy đủ trên một hình ảnh phẳng. Vì thế, đừng tập trung quá nhiều vào nó. Nếu bạn làm việc với một nhóm các nhà phát triển, hãy nhờ họ đánh giá các Wireframe. Đây là cơ sở quan trọng bạn cần nhớ khi làm việc trên giao diện trực quan.
Bước 9: Chuyển đổi Wireframe thành Giao diện trực quan
Đây là bước cuối cùng trước để hoàn thiện giao diện trực quan. Đề xuất công cụ lý tưởng cho bước này chính lại là Illustration. Công cụ này có thể xuất nó thành một tập tin .psd với hầu hết các layer có thể chỉnh sửa.
Dưới đây là một ví dụ về Wireframe đã được chuyển đổi sang một giao diện trực quan. Bộ khung của Wireframe còn khá nguyên vẹn, mặc dù đã thực hiện các tinh chỉnh một cách trực quan.
Những nền tảng sáng tạo Wireframe ưa chuộng
Để tối giản quy trình thiết kế, chúng ta có thể tìm kiếm những mẫu thiết kế trên các trang web thuộc nền tảng sáng tạo. Những trang web dưới đây đều cung cấp cho các mẫu thiết kế được người dùng chia sẻ. Bạn có thể thỏa sức trải nghiệm. Đây có thể là bước đầu để bạn nắm bắt được xu hướng thiết kế mới nhất.
Cho dù bạn làm việc với Wireframe hay Prototype trong một hay vài năm, bạn vẫn sẽ cảm nhận được sự hữu ích. Đồng thời, có thể học hỏi, tự sáng tạo theo cách riêng của mình. Hoặc bạn cũng có thể khai thác những cảm hứng cho các sản phẩm và gắn trực tiếp vào các công cụ thiết kế như Sketch, Balsamiq,…
Cùng TopDev điểm qua một số thư viện tiềm năng cho chuyên mục sáng tạo giao diện trực quan.
Có rất nhiều mẫu thiết kế do cộng đồng đóng góp. Tại đây, bạn có thể tìm thấy vô số UI Component hoặc Wireframe cho toàn bộ trang web. Lưu ý, các mẫu thiết kế tại trang này chỉ hỗ trợ cho Balsamiq Mockups mà thôi.
Có lẽ chúng ta cũng không quá xa lạ với Sketch, Nó là một công cụ thiết kế phổ biến hiện nay và chỉ chạy trên Mac OS. Trang web sáng tạo này có nhiều mẫu dành cho Web, Mobile, Wearable và icon.
Dù được xem là đàn em của Sketch nhưng xét về chức năng thì Figma có những thế mạnh vượt trội hơn. Điển hình là nó hỗ trợ đa nền tảng như Mac OS, Windows và Web. Ngoài điểm nổi trội, trang web này vẫn đảm bảo những tính năng tương tự như Sketch App Resources.
Nhiều mẫu thiết kế được cộng đồng đóng góp vào một group trên vào một group trên chung trên một nền tảng. Thường những mẫu thiết kế sáng tạo trên trang web này rất đặc biệt và đa dạng thể loại hơn.
Đây là một trang web khá thú vị. Vì đặc trưng của nó là loại bỏ tất cả hình ảnh,, chữ. Đồng thời, trang web trừu tượng hóa các thành phần bằng các kí hiệu dùng trong Wireframe một cách hiệu quả.
Tổng kết về Wireframe
Wireframe hiện tại đã trở thành người bạn đồng hành không thể thiếu của nhóm ngành sáng tạo. Ngoài ra, các công ty, tổ chức lớn cũng đưa Wireframe vào việc phát triển các sản phẩm sáng tạo của họ thông qua các dự án.
Dù vẫn còn nhiều điểm chưa hoàn thiện nhưng Wireframe vẫn có những ưu thế nhất định. Những chức năng và hiệu ứng phác họa, đen trắng xám hoặc xanh, thể hiện được giao diện một cách tốt nhất. Nhờ sự hỗ trợ đắc lực từ các công cụ công nghệ, Wireframe lại tạo ra các sản phẩm giao diện đậm tính sáng tạo và đầy nổi trội.
Với sự phát triển ngày càng nhiều của các ứng dụng web, các nhà phát triển đã bắt đầu tìm kiếm những giải pháp có thể cải thiện tính bền vững và khả năng bảo trì của mã nguồn. Đó là lý do mà TypeScript, một ngôn ngữ lập trình được phát triển bởi Microsoft, đã ra đời như một sự mở rộng mạnh mẽ của JavaScript. Trong bài viết này, chúng ta sẽ so sánh hai ngôn ngữ Typescript vs JavaScript, để xem chúng khác nhau ra sao và nên chọn ngôn ngữ lập trình nào.
Nhắc lại về TypeScript
TypeScript làm một ngôn ngữ lập trình mã nguồn mở được phát triển bởi Microsoft. Cha đẻ của TypeScript là Anders Hejlsberg, một kiến trúc sư trưởng (Lead Architect) của ngôn ngữ C# và là cha đẻ của ngôn ngữ lập trình Delphi và Turbo Pascal.
TypeScript được biết đến như một ngôn ngữ lập trình hướng đối tượng trong khi JavaScript là ngôn ngữ dựa trên prototype.
TypeScript có tính năng kiểu tĩnh nhưng JavaScript không hỗ trợ tính năng này.
TypeScript hỗ trợ interfaces nhưng JavaScript không có.
Tính Năng
TypeScript
JavaScript
Kiểu Dữ Liệu
Cung cấp kiểu tĩnh
Kiểu động
Công Cụ Hỗ Trợ
Có IDE và trình soạn thảo tốt
Công cụ tích hợp hạn chế
Cú Pháp
Tương tự JavaScript, với tính năng bổ sung
Cú pháp JavaScript tiêu chuẩn
Tương Thích
Tương thích ngược với JavaScript
Không thể chạy TypeScript trong tệp JavaScript
Gỡ Lỗi
Kiểu mạnh mẽ giúp phát hiện lỗi
Có thể cần nhiều gỡ lỗi hơn
Đường Học
Cần thời gian để học tính năng bổ sung
Cú pháp quen thuộc
Có thể nói TypeScript là một phiên bản nâng cao của JavaScript vì nó bổ sung những kiểu dữ liệu tĩnh và các lớp hướng đối tượng, đồng thời nó bao gồm luôn các phiên bản ES mới nhất (tùy version của TypeScript).
Các file TypeScript có đuôi (phần mở rộng – extension) là *.ts . Trong khi các file JS có đuôi được biết là *.js
Code được viết bằng TypeScript sẽ được biên dịch thành JavaScript thuần. Thường thì chúng ta sẽ dùng lệnh tsc để biên dịch vì trong TypeScript có tích hợp sẵn một trình biên dịch được viết bằng TypeScript luôn.
Với TypeScript chúng ta có thể khai báo biến với từ khóa: var, let và const. Trong khi var chỉ được dùng trong JS ( hình như từ ES6 trở đi JavaScript cũng dùng được var, let và const)
Các biến trong code TypeScript thường được dùng với kiểu dữ liệu rõ ràng hơn trong code JavaScript.
Ví dụ 1: Khai báo biến trong TypeScript
var name: string = "Thang Pham";
var isSingle: bool = true;
Ví dụ 2: Khai báo biến trong JavaScript
var name = "Thang Pham";
var isSingle = true;
TypeScript kiểm tra kiểu của các biến khi biên dịch code (compile time) trong khi JS kiểm tra lúc chạy (run time)
Ngăn ngừa lỗi: TypeScript phát hiện lỗi tại thời điểm biên dịch, giảm thiểu khả năng gặp lỗi trong thời gian chạy. Điều này đặc biệt có giá trị trong các dự án lớn, nơi việc gỡ lỗi có thể tốn thời gian.
Kiểu tĩnh: Với TypeScript, bạn có thể định nghĩa kiểu cho biến, hàm và đối tượng, giúp mã của bạn trở nên dễ dự đoán và dễ bảo trì hơn. Điều này đặc biệt hữu ích trong môi trường làm việc nhóm, nơi sự nhất quán là rất quan trọng.
Khả năng mở rộng: Nếu bạn đang làm việc trên một dự án lớn hoặc có kế hoạch mở rộng ứng dụng, các tính năng như interfaces, enums và generics của TypeScript có thể giúp quản lý độ phức tạp.
Đơn giản và nhanh chóng: JavaScript dễ bắt đầu hơn, đặc biệt cho các dự án nhỏ hoặc khi bạn cần xây dựng nhanh.
Quen thuộc: Nếu bạn đã quen thuộc với JavaScript và làm việc trên các dự án nhỏ, có thể không cần thiết phải chuyển sang TypeScript.
Tại sao chọn TypeScript trong khi đã có JavaScript?
JavaScript, ban đầu được thiết kế như một ngôn ngữ phía client, đã mở rộng ra sử dụng phía server. Tuy nhiên, sự phức tạp ngày càng tăng và những hạn chế trong lập trình hướng đối tượng đã cản trở việc áp dụng JavaScript trong các doanh nghiệp. Để giải quyết vấn đề này, TypeScript đã được tạo ra để cải thiện JavaScript, cung cấp kiểu tĩnh và các tính năng cho phát triển server-side mạnh mẽ hơn.
TypeScript được sử dụng để code Front-end như Angular 2 (và các phiên bản về sau), React, Ionic,… và back-end như NodeJs.
TypeScript hỗ trợ đầy đủ các tính năng mà JavaScript có với các phiên bản JavaScript mới nhất (ECMAScript versions) vì như mình đã nói nó được xem như là một bản nâng cao của JS.
Bạn có thể code với JS thì với qua TypeScript cũng như vậy. Vì dù sao thì code TypeScript cũng sẽ được biên dịch lại thành JS mà.
TypeScript giúp bạn viết code theo phong cách OOP như: C#, Java. Nghĩa là nó có: class, abstract class, interface, encapsulation, ….
Dễ dàng hơn để phát triển các dự án lớn vì nó giúp bạn kiến trúc hệ thống theo Module, namespace.
Bạn sẽ dễ dàng code TypeScript khi mà nó được tích hợp trong rất nhiều IDEs như: Visual Studio Code, Sublime Text,…
Trên đây là những so sánh TS vs JS. Hy vọng giúp được anh em trong quá trình chọn học cũng như chọn ngôn ngữ để bắt đầu project của mình.
Theo Global Knowledge, dữ liệu cho thấy các khách hàng của họ sau khi chọn học các khóa này thì đã có công việc tốt hơn sau khi tốt nghiệp. Các báo cáo về thị trường tuyển dụng IT cũng chỉ ra sự thật là các nhà tuyển dụng đang dần nâng cao yêu cầu và tìm kiếm những ứng viên có nhiều kỹ năng để đáp ứng công việc.
Điểm qua top 20 chứng chỉ IT danh giá nhất trong ngành CNTT, những chứng chỉ lập trình viên này hoàn toàn có thể được học online tại nhà, cùng tìm hiểu thật kỹ để xác định lĩnh vực bạn muốn trau dồi bản thân để thăng tiến trong sự nghiệp nhé.
TITIL – Thư viện cơ sở hạ tầng công nghệ thông tin
ITIL (Information Technology Infrastructure Library) nói tóm gọn là một framework tổng hợp được nhiều doanh nghiệp sử dụng để xây dựng hệ thống quản lý dịch vụ CNTT (IT Service Management).
Mục tiêu mà ITIL hướng tới là nâng cao sự hài lòng của khách hàng, tối ưu hóa chi phí hoạt động CNTT, nâng cao hình ảnh bộ phận CNTT, giúp tạo ra lợi thế cạnh tranh, framework mô tả quy trình cần có trong dịch vụ CNTT, hướng dẫn triển khai, kỹ năng cần có, định nghĩa từng vai trò và trách nhiệm của người tham gia cung cấp dịch vụ.
Một số doanh nghiệp đầu tư FDI vào Việt Nam yêu cầu vendor phải có chứng chỉ ITIL quốc tế có thể kể đến Lazada, Suntory PepsiCo Vietnam, Coca Cola Vietnam, HSBC Bank Vietnam, SCC Vietnam, AIG Insurance vì hệ thống dịch vụ CNTT mà họ cung cấp được xây dựng theo giá trị thực tiễn của ITIL và đạt mức tăng trưởng nhất định. Các tập đoàn lớn trong nước cũng dần triển khai nâng cao năng lực đội ngũ với ITIL như VNPT, EVN, PVN, bộ Tài Chính hay Kho bạc Nhà nước.
Ai cần học ITIL?
CIO/CTO: Vị trí này cần biết ITIL để hoạch định chiến lược phát triển dịch vụ, cách quản lý các danh mục đầu tư
IT Manager: Tham gia hoạch định chiến lược cung cấp dịch vụ CNTT, danh mục đầu tư, đưa ra các cam kết SLA (Service Level Agreement), tham gia thiết kế hệ thống dịch vụ CNTT
IT Operation Manager: Tham gia thiết kế quy trình dịch vụ, hướng dẫn, triển khai công cụ Helpdesk/ Service Desk, quản lý Service Catalogue,…
IT Help desk/ Service Desk: Nắm rõ quy trình hệ thống, phân tích và thực hiện vận hành hệ thống dịch vụ CNTT hiệu quả.
VCP-DCV
VMware Certified Professional (VCP) được chứng nhận và cấp bởi Vmware, chứng nhận kỹ năng và chuyên môn về kỹ thuật ảo hóa trung tâm dữ liệu. Chứng chỉ VCP là sự kết hợp giữa mạng data center truyền thống và quản lý đám mây.
Để đạt được chứng chỉ lập trình này, các ứng viên cần tối thiểu sáu tháng kinh nghiệm với các công nghệ về cơ sở hạ tầng VMware và nắm vững kiến thức Domain Name System (DNS), định tuyến và kỹ thuật kết nối cơ sở dữ liệu, biết triển khai cấu hình, quản lý và quy mô các môi trường VMware vSphere.
Kiến thức và kinh nghiệm sau khi bạn hoàn thành chứng chỉ VCP:
Có thể cài đặt, cấu hình, nâng cấp & Server vCenter an toàn và VMware ESXi.
Có thể xác định Kiến trúc và giải pháp vSphere.
Có thể cấu hình vNetwork Standard và chuyển mạch phân tán.
Có thể xác định và cấu hình cài đặt VLAN, VSS và Policies VDS .
Có thể lập kế hoạch, triển khai và cấu hình Shared Storage và Virtual Appliance Storage (SVA) cho vSphere.
Có thể tạo, triển khai và quản lý các máy ảo, Templates và vApps.
Có thể di chuyển các máy ảo, và sao lưu / khôi phục các máy ảo sử dụng VMware Data Recovery.
Có thể thực hiện xử lý sự cố cơ bản cho Mạng vSphere, lưu trữ và máy chủ ESXi.
Có thể giám sát việc thực hiện và quản lý vSphere vCenter Server
AWS Certified Cloud Practitioner, Chứng chỉ về kỹ năng đám mây AWS
Bài thi The AWS Certified Cloud Practitioner examination dành cho những cá nhân có kiến thức và kĩ năng cần thiết để chứng minh việc hiểu tổng thể về AWS Cloud, độc lập với các vai trò kỹ thuật cụ thể được chứng nhận bởi các chứng chỉ IT khác. Bài thi diễn ra tại trung tâm khảo thí hoặc từ nơi thoải mái và tiện lợi như ở nhà hoặc văn phòng với kì thi trực tuyến.
Trở thành AWS Certified Cloud Practitioner là một khuyến nghị, và tùy chọn để hướng tới đạt được Associate-level (cấp độ hội viên) hoặc Specialty certification (cấp độ chuyên môn).
Đưa ra định nghĩa về AWS Cloud và cơ sở hạ tầng chung cơ bản
Mô tả các nguyên tắc kiến trúc cơ bản của AWS Cloud
Mô tả giá trị của AWS Cloud
Mô tả các dịch vụ chính trên nền tảng AWS và các trường hợp sử dụng phổ biến (ví dụ: điện toán và phân tích)
Mô tả các khía cạnh cơ bản về bảo mật và tuân thủ của nền tảng AWS và mô hình bảo mật được chia sẻ
Xác định các mô hình thanh toán, quản lý tài khoản và định giá
Xác định các nguồn tài liệu hướng dẫn hoặc hỗ trợ kỹ thuật (ví dụ: báo cáo nghiên cứu chuyên sâu hoặc phiếu hỗ trợ)
Mô tả các đặc điểm cơ bản/cốt lõi của việc triển khai và vận hành trên AWS Cloud
Yêu cầu:
Các thí sinh nên có ít nhất sáu tháng kinh nghiệm với AWS Cloud ở vai trò bất kỳ, bao gồm vai trò kỹ thuật, quản lý, bán hàng, thu mua hoặc tài chính
Thí sinh cần có hiểu biết cơ bản về các dịch vụ CNTT và cách sử dụng những dịch vụ đó trên nền tảng Đám mây AWS.
AWS Certified Solutions Architect-Associate
Bài thi AWS Certified Solutions Architect – Associate dành cho những người muốn thực hiện vai trò kiến trúc sư giải pháp và có một năm kinh nghiệm hoặc nhiều hơn trong việc thiết kế các hệ thống phân tán khả dụng, tiết kiệm chi phí, và có hệ thống phân phối mở rộng cao trên AWS.
Mô tả một cách hiệu quả kiến thức của việc làm thế nào để kiến trúc và triển khai các ứng dụng bảo mật và mạnh mẽ trên nền tảng các công nghệ của AWS
Xác định giải pháp dựa trên các nguyên tắc thiết kế kiến trúc theo yêu cầu của khách hàng
Cung cấp hướng dẫn thực thi dựa trên những kinh nghiệm thực tế tốt nhất cho tổ chức thông qua vòng đời của dự án
Yêu cầu tiên quyết:
Kinh nghiệm sử dụng thực tế các dịch vụ điện toán, kết nối mạng, lưu trữ và cơ sở dữ liệu của AWS
Kinh nghiệm làm việc thực tế với các dịch vụ triển khai và quản lý của AWS
Khả năng nhận biết và xác định các yêu cầu kỹ thuật đối với ứng dụng dựa trên AWS
Khả năng nhận biết dịch vụ AWS nào đáp ứng được điều kiện kỹ thuật đề ra
Kiến thức về thực tiễn tốt nhất được khuyến nghị cho việc xây dựng các ứng dụng bảo mật và tin cậy trên nền tảng AWS
Hiểu biết về các nguyên tắc kiến trúc cơ bản khi xây dựng trên AWS Cloud
Hiểu biết về cơ sở hạ tầng toàn cầu của AWS
Hiểu biết về các công nghệ mạng liên quan đến AWS
Hiểu biết về các tính năng và công cụ bảo mật mà AWS cung cấp cũng như mối liên quan giữa các tính năng và công cụ đó với các dịch vụ truyền thống
Bằng AWS Certified Developer – Associate
Chứng nhận, từ Amazon, được thiết kế cho các nhà phát triển làm việc với các dịch vụ AWS. Qua đó chứng minh khả năng của bạn để phát triển, triển khai và gỡ lỗi các ứng dụng dựa trên Cloud với AWS. Khi các tổ chức ngày càng khẩn trương áp dụng công nghệ Cloud, internet of things, machine learning và các công nghệ mới nổi khác, chứng nhận AWS Certified Developer certification đã trở nên có giá trị hơn đối với ứng viên.
Yêu cầu: Một hoặc nhiều năm kinh nghiệm thực hành thiết kế và duy trì các ứng dụng dựa trên AWS, kiến thức vững chắc về một hoặc nhiều ngôn ngữ lập trình bậc cao cũng như là sự hiểu biết về các dịch vụ AWS.
Certified Information Systems Auditor, viết tắt là CISA – Chuyên gia kiểm định hệ thống thông tin.
Chuyên gia kiểm định hệ thống thông tin (CISA) là một loại chứng chỉ lập trình do Hiệp hội kiểm toán và kiểm soát hệ thống thông tin (ISACA) ban hành. Đây là tiêu chuẩn toàn cầu cho các chứng chỉ liên quan đến các công việc trong hệ thống thông tin, đặc biệt là kiểm toán, kiểm soát và bảo mật giám sát và đánh giá hệ thống CNTT của một tổ chức hoặc doanh nghiệp. Bài kiểm tra của chứng chỉ này sẽ đánh giá chuyên môn của bạn trong quy trình kiểm toán hệ thống thông tin (IS), khả năng báo cáo của bạn về các quy trình tuân thủ và truy cập vào các lỗ hổng bảo mật.
Để đủ điều kiện thi chứng chỉ CISA, bạn cần có 5 năm kinh nghiệm trở lên trong ngành kiểm toán, kiểm soát, đảm bảo hoặc bảo mật hệ thống thông tin hoặc CNTT. Để duy trì chứng chỉ, bạn sẽ cần báo cáo ít nhất 20 khóa học CPE hàng năm, chứng chỉ sẽ hết hạn sau 3 năm.
CISSP – Chứng chỉ bảo mật CNTT
Tới thời điểm hiện tại, chứng chỉ CISSP (Certified Information Systems Security Professional) được coi là một trong những chứng chỉ cao cấp và giá trị nhất ở lĩnh vực bảo mật và công nghệ thông tin, được cấp và quản lý bởi tổ chức độc lập (ISC)².
Chứng chỉ này cần thiết cho những ai? Câu trả lời là những vị trí đảm nhiệm về bảo mật như: Chuyên viên tư vấn bảo mật, Chuyên viên phân tích bảo mật, Giám đốc bảo mật, Kỹ sư bảo mật hệ thống, Giám đốc/Trưởng phòng CNTT, Giám đốc An ninh thông tin (CISO), Chuyên viên đánh giá bảo mật, Giám đốc bảo mật, Kỹ sư an ninh mạng, Kỹ sư mạng, …
Một số nội dung trong bài thi chứng chỉ CISSP:
Quản lý truy cập thông tin
An toàn mạng và viễn thông
Điều hành an toàn thông tin và quản lý rủi to
An toàn bảo mật trong phát triển phần mềm
Mã hóa thông tin
Kiến trúc và thiết kế an toàn
Pháp lý, quy định, điều tra và tuân thủ
An toàn trong môi trường vật lý
Để đạt được chứng chỉ IT này không hề đơn giản, cho đến tháng 7 năm 2020 mới chỉ có khoảng 26 người Việt Nam sở hữu – một con số quá nhỏ so với nhu cầu bảo mật thông tin mạnh mẽ như hiện nay. Cho nên, nếu sở hữu chứng chỉ này trong tay, bạn chính là gương mặt vàng của lĩnh vực bảo mật!
PMP – Chứng chỉ quản lý dự án chuyên nghiệp
PMP – Project Management Professional là một chứng chỉ lập trình viên quốc tế do Viện Quản lý Dự án (Hoa Kỳ) đưa ra từ năm 1984. Đây là chứng chỉ quốc tế công nhận một người có tri thức và kỹ năng để dẫn dắt, quản lý nhóm nhằm thực hiện dự án, chuyển giao kết quả đáp ứng theo yêu cầu ràng buộc của dự án.
PMP cần thiết vì nó phục vụ cho chính công việc của những người làm dự án, kể cả ở vị trí quản lý như Project Management Office staff, Project Manager hay ở vị trí là một thành viên bình thường. Người PM có thể áp dụng khung (framework) trong PMP vào việc điều hành dự án, thay đổi những cách làm không hiệu quả, nâng cao khả năng thành công của dự án. Các thành viên dự án cũng có thể dùng kiến thức PMP để hiểu được các thuật ngữ, nắm được quy trình, process trong phát triển dự án, hỗ trợ PM quản lý dự án…
Tuy trong cùng lĩnh vực PM (Project Manager) có rất nhiều loại chứng chỉ khác nhưng PMP (Project Management Professional) được đánh giá là thông dụng nhất bởi tính đa ngành với một số lĩnh vực như: xây dựng, sản xuất, CNTT.
Nếu bạn đạt trình độ học vấn Tốt nghiệp Trung học/Cao đẳng: yêu cầu tối thiểu 5 năm kinh nghiệm quản lý dự án ~ tương đương 7500 giờ làm việc.
Nếu bạn đạt trình độ Tốt nghiệp Đại học: yêu cầu tối thiểu 3 năm kinh nghiệm quản lý dự án ~ tương đương 4500 giờ làm việc thực tế
Ngoài ra 2 đối tượng trên phải tham gia 35 giờ học về quản lý dự án.
CRISC – Chứng chỉ kiểm soát rủi ro và an ninh CNTT
Chứng chỉ CRISC (Certified Risk and Information Systems Control) của ISACA dành cho các chuyên gia thiết kế, thực hiện, giám sát và duy trì kiểm soát an ninh CNTT. CRISC là một trong những chứng chỉ uy tín nhất trong ngành công nghiệp đổi mới, tập trung vào đánh giá rủi ro CNTT trong kinh doanh.
Bài kiểm tra bao gồm 4 phần chính: Nhận dạng rủi ro CNTT (Identification), Đánh giá rủi ro (Assessment), Ứng phóGiảm thiểu thiệt hại (Mitigation), Giám sát và Báo cáo rủi ro (Control Monitoring and Reporting)
Điều kiện tiên quyết để thi lấy chứng chỉ là ba năm kinh nghiệm liên quan đến việc xác định và quản lý rủi ro bảo mật.
CIS – Chứng chỉ quản lý bảo mật
Tương tự với chứng chỉ CISSP, có cùng cấp độ về quản lý bảo mật. Tuy nhiên, chứng chỉ CISM (Certified Information Security Manager) thiên về các hoạt động, công tác bảo mật cũng như cách thức phát triển, tích hợp duy trì các chương trình bảo mật dựa theo mô hình tổng thể.
CISM bao gồm 4 lĩnh vực:
Quản trị bảo mật thông tin
Quản trị rủi ro thông tin
Quản lý và phát triển chương trình bảo mật thông tin
Quản lý sự cố bảo mật.
Chứng chỉ được thiết kế dành cho các đối tượng thuộc cấp độ chuyên gia quản lý bảo mật thông tin (IS Professional level). Đây là những người phải giữ được tầm nhìn bằng cách quản lý, thiết kế, giám sát và đánh giá hệ thống bảo mật thông tin trong tổ chức/doanh nghiệp.
Sở hữu chứng chỉ này sẽ đảm bảo được ứng viên có kỹ năng thành thạo trong việc quản lý rủi ro bảo mật, quản trị, quản lý và phát triển các chương trình, quản lý và khắc phục sự cố.
Google Certified Professional Cloud Architect
Theo báo cáo của People Knowledge về thu nhập và kỹ năng CNTT toàn cầu, các chuyên gia CNTT được trả lương cao nhất thế giới phần lớn tập trung nhiều hơn trong các lĩnh vực liên quan đến điện toán đám mây, an ninh mạng, quản lý dự án và mạng.
Dù chỉ mới ra mắt từ năm 2017 nhưng chứng chỉ GCP Cloud Architect do Google cấp lại đứng đầu bảng hai năm liên tiếp trong danh sách.
Chứng chỉ này công nhận những năng lực về:
Thiết kế và lập kế hoạch kiến trúc giải pháp đám mây
Quản lý và cung cấp cơ sở hạ tầng giải pháp đám mây
Thiết kế để bảo mật và tuân thủ
Phân tích và tối ưu hóa các quy trình kỹ thuật và kinh doanh
Quản lý và triển khai kiến trúc đám mây
Đảm bảo giải pháp và độ tin cậy hoạt động
Có thể thấy hoàn thành chứng chỉ này bạn sẽ được chứng minh năng lực ở khả năng thiết kế, phát triển và quản lý kiến trúc đám mây của Google khi sử dụng các công nghệ GCP. Và để đạt được nó, chuyên gia IT cần có kiến thức chuyên sâu về giải pháp ở những tình huống riêng biệt.
Trong tương lai gần, thành thạo các công cụ Google sẽ là điểm sáng trong CV, cũng như dần trở thành điều kiện quan trọng khi tuyển dụng tại hầu hết các công ty lớn, khi mà kỹ năng về cloud đang được tìm kiếm và yêu cầu ở rất nhiều nơi.
Chứng nhận trong quản trị doanh nghiệp CNTT ( Certified in the Governance of Enterprise IT – CGEIT)
Được cung cấp thông qua ISACA, chứng nhận CGEIT thể hiện kiến thức của bạn về quản trị CNTT doanh nghiệp. Nó cho thấy bạn có khả năng áp dụng những nguyên tắc và khái niệm quản trị CNTT trong môi trường chuyên nghiệp. Khóa học vốn được thiết kế cho những người có “vai trò quản lý, tư vấn hoặc các vị trí đảm bảo liên quan đến quản trị CNTT”, bao gồm IS và IT director, chuyên gia tư vấn, giám đốc điều hành, manager, theo ISACA. Chứng nhận CGEIT hiện đang được xếp hạng là một trong những chứng chỉ IT quốc tế có giá trị nhất, theo dữ liệu từ Global Knowledge.
Yêu cầu: Năm năm kinh nghiệm quản lý hoặc nhiều hơn, đã từng đảm nhiệm vai trò tư vấn hoặc giám sát hay hỗ trợ các sáng kiến quản trị CNTT trong môi trường doanh nghiệp. Bạn sẽ cần trải nghiệm ở hai hoặc nhiều lĩnh vực CGEIT, bao gồm quản lý chiến lược, phân tích lợi ích, tối ưu hóa rủi ro và tài nguyên.
Chứng nhận ScrumMaster
Scrum Alliance cung cấp chứng nhận ScrumMaster vốn rất nổi tiếng và được tôn trọng trong ngành IT. Trở thành một ScrumMaster tức bạn đã thành thạo về Scrum và cách áp dụng nó tại nơi làm việc. Đó là một chứng nhận đặc biệt hữu ích cho các vị trí quản lý dự án, chương trình, cũng như là các nhà phát triển sản phẩm. Song song đó, bạn cũng sẽ nhận được tư cách là thành viên hai năm với Scrum Alliance, điều này sẽ cho phép bạn truy cập vào các sự kiện dành riêng cho các thành viên.
Yêu cầu: Bạn sẽ cần tham dự khóa học CSM trực tiếp, do một giảng viên Scrum giảng dạy.
Chứng nhận Hacker (Certified Ethical Hacker – CEH)
Được cung cấp bởi EC-Council, chứng chỉ Hacker (CEH) được chứng nhận cho thấy bạn có các kỹ năng và kiến thức để tìm lỗ hổng trong hệ thống máy tính và có khả năng ngăn chặn tấn công. Một “hacker có đạo đức” là người sử dụng cùng một kỹ năng và kiến thức như một hacker mũ đen để phát triển các biện pháp an ninh nhằm ngăn chặn các cuộc tấn công tiềm năng. Thông thường, các doanh nghiệp sẽ yêu cầu bạn phải nghĩ như một hacker để tìm điểm yếu trong hệ thống và mạng máy tính, nhờ đó sẽ dễ dàng hơn trong việc sửa các lỗ hổng bảo mật và ngăn chặn các mối đe dọa tiềm ẩn.
Yêu cầu: Bạn sẽ cần hai năm kinh nghiệm làm việc trong lĩnh vực bảo mật thông tin.
Bằng đai xanh Six Sigma
Six Sigma là một phương pháp quản lý được sử dụng để đơn giản hóa quản lý chất lượng liên quan đến nhiều cấp độ. Vì vậy mà bạn không thể nhảy vượt các cấp trong chứng chỉ Six Sigma, vì vậy bất kể bạn đang ở đâu trong sự nghiệp của mình thì đều phải bắt đầu với chứng chỉ Green Belt – cấp thấp nhất. Là một đai xanh Six Sigma, bạn sẽ được hướng dẫn bởi một đai đen trong tổ chức của mình, người sẽ cố vấn bạn trong khi bạn học phương pháp luận.
Yêu cầu: Ba năm kinh nghiệm làm full-time tại một hoặc nhiều lĩnh vực của Six Sigma Green Belt.
Chứng chỉ Citrix Certified Professional – Virtualization (CCP-V)
Chứng nhận của CCP-V thể hiện năng lực trong các ứng dụng desktop ảo sử dụng công nghệ Citrix. Trong đó bao gồm cài đặt các công nghệ, định thành phần kỹ thuật và cấu hình thử nghiệm. Trong năm 2014, chứng nhận này cũng đã thay thế chứng chỉ Citrix Certified Enterprise Engineer (CCEE) và tập trung vào các kỹ năng để triển khai, duy trì và xác định giải pháp dựa trên phần mềm XenDesktop của Citrix.
Yêu cầu: Bạn cần phải đạt được chứng nhận cấp associate của mình trước khi có thể chuyển sang CCP-V.
Chứng chỉ Microsoft Certified Solutions Expert (MCSE) – Cơ sở hạ tầng máy chủ
Chứng nhận MCSE là đặc biệt nhất trong danh sách này, vì nó không còn được cung cấp thông qua Microsoft – mà được thay thế bằng chứng nhận MCSE: Cloud Platform và Infrastructure. Tuy nhiên, chứng nhận vẫn được góp mặt vào trong danh sách vì nó vẫn hợp lệ nếu bạn nhận được chứng chỉ trước tháng 3 năm 2017.
Chứng nhận này chứng minh khả năng của bạn để chạy một trung tâm dữ liệu hiệu quả cũng như là kiến thức vững vàng trong các lĩnh vực như công nghệ đám mây, ảo hóa, lưu trữ, mạng, hệ thống và quản lý danh tính.
Yêu cầu: Để kiếm được chứng nhận MCSE, trước tiên bạn cần có một trong bốn chứng chỉ MCSA được cung cấp bởi Microsoft.
Chứng nhận Cisco Certified Network Professional (CCNP) Routing và Switching
Chứng nhận CCNP dành cho các chuyên gia IT đã hoàn thành chứng chỉ CCNA và chuyển sang lớp tiếp theo. Theo giấy chứng nhận CCNP, bạn có thể chọn chuyên về Cloud, trung tâm dữ liệu, định tuyến và chuyển mạch cũng như là bảo mật.
Yêu cầu: Bạn sẽ cần hoàn thành bài kiểm tra CCNA Routing và Switching hoặc bất kỳ bài kiểm tra CCIE nào trước khi chuyển sang kỳ thi chứng nhận CCNP.
Chứng chỉ Citrix Certified Associate – Networking (CCA-N)
Chứng chỉ CCA-N tập trung vào việc chứng minh trình độ sử dụng NetScaler Gateway trong môi trường doanh nghiệp. Bài kiểm tra bao gồm các lĩnh vực xung quanh việc sử dụng NetScaler Gateway để truy cập an toàn các máy tính desktop, ứng dụng và dữ liệu từ xa.
Yêu cầu: Không có điều kiện tiên quyết để lấy chứng chỉ CCA-N.
Đừng chỉ học khi còn là sinh viên. Đừng ra trường và mãi chỉ là “thợ code”. Để tiến xa hơn trong giới lập trình, ngoài kinh nghiệm thực chiến, bạn sẽ cần một “giấy chứng nhận” năng lực được công nhận bởi tổ chức uy tín trên toàn cầu. Trau dồi kiến thức không bao giờ là thừa thãi, nếu là bạn, thì bạn sẽ lựa chọn chứng chỉ lập trình nào để phấn bắt đầu?
Khởi đầu từ một dự án start up còn non trẻ, Topica đã không ngừng vươn lên và ngày một lớn mạnh, hướng đến mục tiêu phát triển giáo dục, lan tỏa tri thức, liên kết giữa học viên với giảng viên tại nhiều quốc gia khác nhau trên thế giới.
TOPICA và sự vươn lên vị trí hàng đầu Đông Nam Á
Tổ hợp Công nghệ Giáo dục TOPICA (TOPICA) là Công ty Công nghệ Giáo dục đa quốc gia sở hữu đội ngũ lên đến hơn 2000 nhân viên và nhiều văn phòng đặt tại Singapore, Bangkok, Hà Nội, TP. HCM và Đà Nẵng.
Topica, tiền thân là Dự án vườn ươm doanh nghiệp CRC-TOPIC do World Bank Infodev tài trợ, được khởi động lần đầu tiên tại Việt Nam vào năm 2004. Sau đó 2 năm, với sự hỗ trợ từ Bill Gates – Chủ tịch Microsoft và Phó Thủ tướng Phạm Gia Khiêm, chương trình Phát triển hạ tầng E-Learning được công bố và khởi động tại 64 tỉnh thành trên khắp Việt Nam (TOPIC64).
Đến năm 2008, Tổ hợp giáo dục TOPICA chính thức được thành lập với sứ mệnh nhân rộng mô hình đào tạo trực tuyến chất lượng cao tới người học ở Việt Nam và Đông Nam Á.
Sau Harvard, Stanford, MIT và Duke, lần đầu tiên tại Việt Nam, TOPICA đưa ứng dụng công nghệ 3D vào giảng dạy. Sinh viên học trực tuyến những trải nghiệm việc “đến trường”, “vào lớp”, “thực hành” trong môi trường Second Life như trên giảng đường thật.
Lần đầu trong lịch sử, Việt Nam xuất khẩu công nghệ E-Learning với 12 hệ thống tích hợp, 300 quy trình cho trường ĐH chuyên ngành IT lớn nhất của “cường quốc gia công phần mềm” Philippines. Đồng thời, sản phẩm luyện nói tiếng Anh live trực tuyến của Việt Nam dẫn đầu thị trường Thái Lan, trở thành đơn vị xuất khẩu E-learning dẫn đầu Đông Nam Á.
Tạo dựng hướng đi riêng, tiên phong xuất khẩu công nghệ E-Learning
Sớm nhìn thấu được hiệu quả và lợi ích của công nghệ E-Learning đem lại, TOPICA đã và đang dẫn đầu trong việc triển khai, phát triển và đưa việc học tập online lan rộng, phát triển vững mạnh trên thị trường trong nước và nước ngoài.
TOPICA tự hào là đơn vị đào tạo trực tuyến hàng đầu Đông Nam Á với hệ thống sản phẩm giáo dục có mặt tại hơn 6 quốc gia, cung cấp các chương trình giáo dục trực tuyến bao gồm: Topica UNI, Topica Native, Edumall, Kidtopi, TOPICA Founder Institute.
Topica Uni là sản phẩm cung cấp hạ tầng công nghệ và dịch vụ cho 15 trường Đại học tại Việt Nam, Mỹ và Philippines để triển khai chương trình đào tạo Cử nhân trực tuyến chất lượng cao với hơn 1000+ Giảng viên doanh nhân.
Topica Native là đơn vị tiên phong trên thế giới phát triển ứng dụng luyện nói tiếng Anh online qua Google Glass, mang đến trải nghiệm Augmented Reality (thực tế ảo) đầu tiên cho học viên tại Thái Lan, Indonesia và Việt Nam.
Edumall là nền tảng học tập trực tuyến lớn nhất cung cấp hàng ngàn khóa học về tất cả các chuyên ngành, lĩnh vực khác nhau, thu hút hàng triệu học viên Việt Nam và Thái Lan.
Kidtopi là chương trình học tiếng Anh cao cấp 1-1 trực tuyến, với các giáo viên Mỹ hàng đầu, và công nghệ AI theo dõi hứng thú và tiến bộ của học sinh.
Topica Founder Institute là vườn ươm khởi nghiệp duy nhất tại Việt Nam đã có các startup nhận đầu tư tổng cộng gần 30 triệu USD.
Sức hút đến từ sự độc đáo trong văn hóa và quyền lợi đặc biệt cho các nhân tài IT
Coi trọng giá trị con người, đề cao tính sáng tạo và sự độc nhất của từng cá nhân, TOPICA mang đến cho mỗi “Topican” môi trường làm việc thoải mái, được tự tin thể hiện bản thân và thoải mái cháy hết mình với niềm đam mê công việc. Topican được phép là chính mình, được thưởng khi dám nhận bản thân chưa hiểu vấn đề, dám đứng lên thể hiện quan điểm và dám thuyết phục sếp chấp nhận ý tưởng.
Thêm vào đó, Topica tạo cơ hội tuyệt đối cho thành viên của mình tham gia các dự án đầy thách thức. Ngay cả khi thất bại, mỗi Topican vẫn là một “hiệp sĩ” vì những nỗ lực, cố gắng đã bỏ ra.
Và để tăng tốc trong cuộc đua công nghệ đầy gam go của thời đại 4.0, TOPICA đang nỗ lực tìm kiếm những lập trình viên tài năng, những người có thể cùng sánh vai và phát triển TOPICA ngày một lớn mạnh.
Cùng khám phá các vị trí việc làm IT đang chờ đợi các nhân tài lựa chọn để bùng nổ tại TOPICA:
TOPICA luôn chào đón những nhân tố tài năng dám đương đầu với thách thức và sẵn sàng trao tay những quyền lợi đặc biệt:
Tại Topica, Developer là “ngôi sao” của mỗi dự án, là “cha đẻ” của mỗi sản phẩm và được khuyến khích tự hào về “đứa con” của mình.
Tech Seminar hàng tháng, Hackathon hàng quý, Startup Founder Showcase hàng năm với hàng chục nhà đầu tư trong ngoài nước và các Startup hàng đầu.
E-Sports, Fussball, Bóng bàn, Phi tiêu, Gym. Flashmob với anh chị em đồng nghiệp hàng ngày
Cơ hội phát triển bản thân với các dự án thử thách và thoải mái đề xuất ý tưởng của chính mình;
Mức lương cạnh tranh, xứng đáng với năng lực cùng loạt thưởng hấp dẫn: Thưởng dự án, thưởng sáng kiến, thưởng tăng tốc, thưởng nóng, thưởng khi nghĩ ra cách thưởng mới…
Trang phục tự do với “quần sóc dép lê”, nhấn mạnh sự thoải mái tuyệt đối;
Các tài năng công nghệ còn chần chờ gì không mau ứng tuyển và trở thành Topican ngay hôm nay.
Thị trường điện toán đám mây & Lưu trữ web 2023 là một thị trường đã khá nổi tiếng với thế giới, nhưng tại Việt Nam thì thị trường này lại còn khá mới mẻ và trẻ. Tuy còn non nớt là thế nhưng thị trường Điện toán đám mây đã được những chuyên gia trong ngành dự đoán về sự bùng nổ phát triển của nó trong tương lai và Điện toán đám mây cũng đã đạt được những thành công nhất định tại thị trường Việt Nam trong những năm gần đây.
Tổng quan
Cha đẻ của Điện toán đám mây là một tập đoàn công nghệ máy tính đa quốc gia IBM. Sau khi ra mắt vào năm 2008, thì Điện toán đám mây đã được ông lớn VNTT, Microsoft nhắm tới để phát triển tại thị trường Việt Nam. Sau đó Microsoft đã hợp tác với FPT để cùng nhau phát triển Điện toán đám mây trong dự án RQ1-Renovation.
Dự án kế tiếp mà FPT hợp tác với Microsoft là một dự án với sứ mệnh là đem lại nền công nghệ mới, tạo điều kiện cho các lập trình viên Việt Nam có thêm cơ hội để phát huy thể hiện tài năng. Dự án này bao gồm mục tiêu phát triển truyền thông, dịch vụ hạ tầng, hợp tác và đặc biệt là lưu trữ dữ liệu.
Thị trường Điện toán đám mây & Lưu trữ web Landscape
Cũng đã có một số cơ quan của Chính phủ đã áp dụng mô hình Điện toán đám mây riêng tư và Điện toán đám mây chung (cộng đồng) để triển khai một vài dự án làm mới bộ trung tâm tích hợp dữ liệu của Chính phủ, xây mới môi trường kiểm thử/phát triển cho Bộ Tài nguyên & Môi trường, TT&TT, Khoa học & Công nghệ cho các khu vực như HCM, Đà Nẵng…
Trong thời gian gần đây Microsoft và FPT không còn “độc chiếm” thị trường Điện toán đám mây nữa, đã có thêm nhiều công ty khác cũng đồng thời phát triển trong thị trường và cung cấp dịch vụ Điện toán đám mây như HostVN, MOS, VNTT, Prism, Exa…
Đã có một vài công ty SI (công ty tích hợp hệ thống) và một số ISV (nhà cung cấp phần mềm độc lập) có chiến lược đầu tư nguồn vốn, chất xám vào thị trường Điện toán đám mây để phát triển Điện toán đám mây riêng tư và Điện toán đám mây công cộng.
Tuy Thị trường điện toán đám mây & Lưu trữ web có chút nhộn nhịp nhưng các nhà cung cấp Điện toán đám mây tại Việt Nam vẫn còn bị hạn chế nhiều mặt và vẫn chỉ là những công ty nhỏ lẻ với quy mô nhỏ. Thậm chí còn có một vài công ty chỉ triển khai dự án Điện toán đám mây ở mức khảo sát và nghiên cứu chứ chưa thật sự ứng dụng công nghệ Điện toán đám mây này.
Nhiều chuyên gia công nghệ nhận xét thị trường Thị trường điện toán đám mây & Lưu trữ web là giải pháp ít tốn kém, đem lại hiệu quả cao và tối ưu nhất để giúp các doanh nghiệp, công ty trong nước giảm thiểu chi phí tối đa, tăng năng suất làm việc tối đa. Nhưng với những gì thị trường Điện toán đám mây ở Việt Nam đem lại trong thực tế thì chúng ta vẫn chưa thể đạt được những kết quả đó.
Tại Đông Nam Á, doanh thu từ thị trường điện toán đám mây ước lượng đạt 40 tỷ đô trong năm 2025, trong đó Việt Nam là một trong những nước có tốc độ tăng trưởng kinh tế nhanh nhất liên quan đến sử dụng điện toán đám mây, từ năm 2010 đến 2016, tốc độ tăng trưởng đạt 64.4%
Có thể trong tương lai ngắn, thị trường Điện toán đám mây sẽ được phát triển mạnh mẽ. Dấu hiệu rõ nhất để thể hiện dự đoán này sẽ thành hiện thực đó là vì đa số các doanh nghiệp, cơ quan, tổ chức tại Việt Nam đã có hiểu biết nhất định về những kiến thức cơ bản của Điện toán đám mây.
Chính vì thế việc phát triển bùng nổ Thị trường điện toán đám mây & Lưu trữ web tại nước ta là điều hoàn toàn có thể diễn ra. Trong một số công cố đã qua nghiên cứu trong VIO đã cho biết có khoảng:
25% thị trường vẫn đang trong giai đoạn nghiên cứu, tìm hiểu thông tin nhưng chưa có kế hoạch sử dụng đám mây.
8% thị trường cho biết họ sẽ sử dụng Điện toán đám mây sau thời gian tìm hiểu.
39% thị trường đã dấn thân và đang sử dụng Điện toán đám mây.
19% thị trường còn lại đã hoàn toàn bị “thu phục” bởi Điện toán đám mây và đã lên kế hoạch phát triển, sử dụng lâu dài trên thị trường Điện toán đám mây 2020.
3% còn lại cho biết họ hoàn toàn không có dự định triển khai dự án đám mây.
Khó khăn của thị trường Điện toán đám mây
Dù Thị trường điện toán đám mây & Lưu trữ web đang trong giai đoạn phát triển tích cực, tuy nhiên vẫn còn một số yếu tố khách quan làm ảnh hưởng đến tốc độ phát triển của nó như:
Cơ sở hạ tầng chưa được phát triển một cách đồng bộ để có thể vận hành đám mây trơn tru
Vẫn còn một số doanh nghiệp, khách hàng chưa có sự tin tưởng vào dịch vụ, các nhà cung cấp Điện toán đám mây
Vấn đề bảo mật thông tin dữ liệu nước ta còn nhiều thiếu sót
Chi phí sử dụng, đầu tư cao so với quy mô công ty và quy mô của thị trường Điện toán đám mây
Không cạnh tranh lại các công ty dịch vụ Điện toán đám mây nước ngoài
Tính liên kết giữa các nhà cung cấp với nhau còn chưa được vững mạnh
Không có tính sáng tạo, không thu hút, gây kích thích được các doanh nghiệp sử dụng
Trong năm 2018, Việt Nam chỉ đứng ở vị trí thứ 14 trong bảng xếp hạng các nước nhiều doanh nghiệp sử dụng dịch vụ đám mây với số điểm là 41/100. Trong giai đoạn từ năm 2010 – 2016 Việt Nam đạt kỷ lục có mức độ tăng trưởng cao nhất khối ASEAN với mức tăng trưởng là 64,4% (so với mức phát triển trung bình của cả khối ASEAN là 49.5%).
So với mô hình Công nghệ truyền thống thì chắc hẳn công nghệ mới mẻ như thị trường Điện toán đám mây sẽ ngày trở nên phổ biến và chiếm ưu thế hơn rất nhiều lần.
Tuy số liệu tăng trưởng khả quan là thế nhưng doanh thu mà thị trường Điện toán đám mây mang về còn rất thấp. Cụ thể là vì các doanh nghiệp chỉ chấp nhận chi trả trung bình 1,7$/năm/người cho việc sử dụng đám mây (số liệu từ năm 2016).
Nếu so sánh mức chi phí này với Singapore thì họ chấp nhận chi tiêu cho việc sử dụng dịch vụ đám mây gấp 107 lần so với nước ta. Malaysia gấp 6,5 lần, Thái gấp 2,4 lần và Philippines gấp 1,3 lần Việt Nam.
Bộ trưởng Bộ Thông tin và truyền thông Nguyễn Mạnh Hùng cho biết, Việt Nam là một trong số những nước sớm ban hành tiêu chí, chỉ tiêu kỹ thuật cho hạ tầng điện toán đám mây. Điện toán đám mây sẽ là thành phần quan trọng nhất của hạ tầng số. Hạ tầng số phải được đầu tư trước, thúc đẩy chuyển đổi số phát triển kinh tế số.
Tín hiệu tốt là ngày càng có nhiều doanh nghiệp lựa chọn sử dụng dịch vụ đám mây vì họ đã dần nhìn nhận được những lợi ích mà dịch vụ này đem lại. Theo báo cáo, các tổ chức, doanh nghiệp sử dụng Điện toán đám mây có thể tiết kiệm lên đến 40% chi phí dự định tự đầu tư, rút ngắn thời gian dự án từ 1 tháng đến 1.5 tháng, không còn tốn chi phí về nhân sự, bảo hành, bảo trì hệ thống….
Lợi thế Thị trường điện toán đám mây & Lưu trữ web 2023
Tuy thị trường Điện toán đám mây 2023 ở Việt Nam còn chưa được đầu tư với quy mô lớn để có thể phát triển mạnh mẽ hơn nhưng trong thời đại công nghệ lên ngôi, xu hướng thị trường cũng đang dần chuyển sang công nghệ AI thì việc bùng nổ thị trường Điện toán đám mây là điều chắc chắn sẽ xảy ra.
Có 3 nhóm cung cấp dịch vụ chính trong thị trường Điện toán đám mây 2023 đó là:
Doanh nghiệp cung cấp nước ngoài
Doanh nghiệp lớn trong nước tự thực hiện dự án Điện toán đám mây
Doanh nghiệp nhỏ/lẻ, startup cung cấp dịch vụ đám mây
Các doanh nghiệp cung cấp dịch vụ đám mây như Google, Microsoft có lợi thế hơn trong việc triển khai các dự án liên quan vì họ không những có nguồn vốn dồi dào mà họ còn có nhiều kinh nghiệm và đã dành rất nhiều thời gian cho nó hơn các công ty tại Việt Nam. Dù là vậy như những công ty nước ta cũng đang từng bước chạy tiến lên trong thị trường Điện toán đám mây.
Lợi thế về chi phí băng thông
Bài toán chi phí về băng thông khá rõ ràng, đối với các doanh nghiệp sử dụng các server ở nước ngoài, khi truyền tải dữ liệu chi phí sẽ mắc hơn rất nhiều khu sử dụng hạ tầng đám mây.
Nếu sử dụng dịch Điện toán đám mây của các doanh nghiệp cung cấp dịch vụ đám mây trong nước thì chi phí chắc chắn sẽ tiết kiệm được khá nhiều (rơi vào khoảng 50%), lý do là vì lượng server/người nhiều hơn dẫn đến việc đường truyền rẻ hơn, ổn định hơn.
Ngoài ra nếu sử dụng Điện toán đám mây tại các doanh nghiệp cung cấp trong nước thì sẽ đc hỗ trợ nhiều hơn, thậm chí là nhận được sự hỗ trợ tức thì.
Với lợi thế về chi phí, khi người dùng không cần phải lắp đặt phần cứng hay bất kỳ phần mềm nào. Ngoài ra Enterprise Mobility với nhu cầu ngày càng tăng về lưu trữ dữ liệu cũng là nhân tố góp phần cho sự phát triển của các dịch vụ đám mây trong những năm tới.
Các chuyên gia cho biết, việc xã hội ngày càng tiến bộ và cập nhật nền tiên tiến mỗi ngày là điều không thể tránh khỏi, dần dà công nghệ AI sẽ thay thế con người trong nhiều lĩnh vực và Điện toán đám mây cũng thế, chúng sẽ mang lại nhiều lợi ích.
Sau đại dịch Covid-19, thống kê cho thấy các doanh nghiệp có xu hướng sử dụng đám mây nhiều hơn, dữ liệu từ các doanh nghiệp được lưu trữ và thu về hiệu quả hơn. Vai trò thực thụ của những doanh nghiệp cung cấp Điện toán đám mây là giúp người dùng có thể dễ dàng sử dụng đám mây và hỗ trợ những lúc thật sự cần thiết.
Ông Vũ Minh Trí – Chủ tịch Câu lạc bộ Điện toán đám mây và Trung tâm dữ liệu Việt Nam cho hay: “Phải hướng đến các giải pháp cụ thể cho doanh nghiệp. Trong đó, giải các bài toán cho doanh nghiệp hiện nay như giảm chi phí”. Trên thực tế, đây cũng là mục tiêu mà các doanh nghiệp cung cấp các hướng đến, đó là chủ động thiết kế giải pháp Điện toán đám mây cho các ngành có nguồn dữ liệu khổng lồ cần lưu trữ như ngân hàng, bất động sản, bảo hiểm, xây dựng…
Câu lạc bộ Điện toán đám mây và Trung tâm dữ liệu Việt Nam là câu lạc bộ được lập nên với 12 thành viên có chuyên môn trong lĩnh vực Điện toán đám mây với sứ mệnh lan tỏa kiến thức về thị trường Thị trường điện toán đám mây & Lưu trữ web, chia sẻ của những doanh nghiệp về việc sử dụng đám mây.
Ông Trí cho hay: “Đồng thời, là nơi quy tụ những chuyên gia hàng đầu về cloud tại thị trường Việt Nam, chúng tôi cũng muốn tư vấn cho Chính phủ những định hướng phát triển cloud trong tương lai”.
Lợi thế kết hợp công nghệ AI và Điện toán đám mây sớm
Việc kết hợp công nghệ AI và Điện toán đám mây là một nước khá thông minh của giới công nghệ trong thế giới. Các chuyên gia trên thế giới đánh giá thị trường Thị trường điện toán đám mây & Lưu trữ web 2023 là: “Việt Nam đang trong thời điểm sớm để triển khai trí tuệ nhân tạo (AI). Điều đó sẽ giúp Việt Nam có không gian để phát triển, thay đổi và ứng dụng AI trong tương lai”.
Vì thế việc có thể sớm nhận thức và triển khai kế hoạch dự án kết hợp giữa công nghệ AI và Điện toán đám mây sẽ là lợi thế lớn nhất của Việt Nam so với thế giới. Dù Việt Nam chỉ là một thị trường với quy mô không lớn nhưng với bước đi sớm như thế này thì trong tương lai thị trường Điện toán đám mây sẽ phát triển nhanh chóng.
Hiện nay thị trường Điện toán đám mây của Việt Nam đã có khả năng tính toán, tiếp nhận và xử lý dữ liệu… Có thể nói Điện toán đám mây Việt Nam đã trang bị đủ và sẵn sàng cho việc bùng nổ.
Tổng thư ký Hiệp hội Internet Việt Nam Vũ Thế Bình dự đoán trong 2-3 năm tới, thị trường Điện toán đám mây và Trung tâm dữ liệu tại Việt Nam sẽ sôi động và có lẽ sẽ đóng góp lớn cho quá trình chuyển đổi số của các doanh nghiệp nói riêng và của đất nước nói chung.
Câu chuyện về cái comment tại một blog nọ
Bài viết được sự cho phép của tác giả Huy Trần
Chuyện rằng,
Có một ông bạn nọ có cái blog ở trên mạng, cũng có dăm bảy người vào đọc. Tánh ổng không thích học sâu, chỉ thích học rộng, mà lẽ đời, học rộng mà không sâu thì viết bài nào cũng hỏng. Cho nên bài nào ổng viết ra cũng không sai chỗ này thì cũng lỗi chỗ kia. Cơ mà ổng đâu có biết.
Chỉ tội cho những người theo dõi blog của ổng, thấy bài sai be bét mà không làm gì được vì không có phương tiện gì để họ góp ý ngay trên blog. Cũng có mấy người quan tâm, ráng tìm cho bằng được cái địa chỉ email để mà góp ý (comment).
Thế rồi ổng cũng sắm cho blog một cái nút comment,
Thời đó người ta toàn xài Disqus, thế là ổng cũng xài Disqus.
Thế rồi theo phong trào, người ta bắt đầu nói nhiều đến những mặt trái của Disqus, ổng cũng học đòi, nghỉ chơi với Disqus, và tự build một cái chức năng comment riêng cho blog.
Ổng build cái chức năng comment này bằng Rust, mà thực ra nó chỉ là một cái REST API chỉ có 2 endpoints để list danh sách các comment và post comment mới.
Bài toán đặt ra
Để comment thì người ta cần phải login, vốn là một con người lười biếng, ổng xài luôn dịch vụ login của Google, đỡ phải build authentication system rồi đau đầu với việc lưu trữ thông tin người dùng. Phía frontend chỉ cần lấy ra tên hiển thị (display name) và hình ảnh đại diện (profile picture) của user đã đăng nhập, cho nó vào comment payload và gửi đi.
Và cũng vì là một con người lười biếng, ổng biết ai rồi cũng sẽ lười biếng. Nên rất có thể người ta sẽ chẳng thèm comment luôn, vì phải tốn thêm một bước login. Thế nên ổng quyết định, bên cạnh việc login, ổng sẽ cho phép người ta comment mà không cần login luôn. Trong trường hợp này, phía frontend sẽ gán display name thành “Không Tên”, và profile picture sẽ là ảnh con Vô Diện (Kaonashi) trong phim Spirited Away. Hợp lý quá chừng.
Nhưng cũng lại vì, vốn là một con người lười biếng, nên ổng code cái comment API mà không thèm áp dụng bất kì một hình thức bảo vệ nào cho cái API đó. Suy cho cùng, đó cũng không hẳn là lười biếng, chỉ là ổng đã quá tin tưởng vào các bạn độc giả.
Thế là từ đó, cứ dăm ba bữa, ổng lại phải ngồi hì hục xóa comment của các bạn độc giả dễ thương, vô tình view source của blog và phát hiện ra cái comment API hớ hênh, viết luôn script comment tự động với tốc độ ánh sáng.
Nói cho công bằng thì có đến 2 loại nghịch ngợm thường gặp từ khi có cái chức năng comment:
Loại mất công:
Là những comment không có nội dung gì, và các thanh niên thường kiên nhẫn tự mình spam vào ô comment rồi bấm submit.
Loại tự động hóa:
Phát huy tinh thần công nghệ bốn chấm không, các bạn thường viết script gửi request tự động submit comment với số lượng lớn và cường độ cao.
Loại thứ nhất thì ổng quan niệm là, vì người ta đã bỏ công ra spam một cách thủ công, thật là thất lễ nếu chúng ta không xử lý bằng một cách mất công tương tự:
Đối với các đối tượng sử dụng công nghệ 4.0, thì cũng phải dùng 4.0 để xử lý.
Thực ra thì cũng cần phải mạnh dạn tự kiểm điểm một tí, gốc rễ của vấn đề đến từ việc chủ nhà không chịu đưa ra các biện pháp để giữ nhà. Cho nên giải pháp khắc phục là, làm sao để hạn chế được khả năng spam nhưng phải bảo đảm rằng, chỉ cần việc comment thực sự được thực hiên bởi người đọc – không phải máy tính, thì vẫn sẽ ghi nhận đó là comment hợp lệ.
Có rất nhiều phương án khắc phục được đưa ra:
Sau khi cân nhắc ưu, nhược điểm giữa các phương án, ông blogger quyết định sẽ sử dụng phương pháp challenge, nhưng vốn là một người lười biếng, ổng biết nếu cứ bắt người ta gõ captcha mỗi lần comment thì họ sẽ chọn cách không thèm comment nữa.
Rất may, Google reCAPTCHA có một hình thức xác minh khá hay đó là captcha ẩn.
Với hình thức này, Google sẽ dựa trên nhiều yếu tố khác nhau để xác định request được gửi đi có xuất phát từ một hành động thực tế của một user không, hay là xảy ra tự động. Việc tích hợp invisible captcha vào hệ thống sẵn có cũng khá đơn giản:
Khi phía frontend chuẩn bị gửi comment request, thì phải gửi một request đến Google reCAPTCHA trước, nhận về một mã xác thực, rồi mới gửi mã xác thực này kèm với comment request.
Việc xử lý comment request ở phía server cũng phải thực hiện một bước xác minh với server của Google, trước khi chấp nhận request từ phía user.
Bài viết gốc được đăng tải tại thefullsnack.com
Có thể bạn quan tâm:
Xem thêm các việc làm Developer hấp dẫn tại TopDev