Home Blog Page 59

Một số custom hooks hay sử dụng cho React

Một số custom hooks hay sử dụng cho React

Hooks là một bổ sung mới trong React 16.8, nó là những function cho phép bạn kết nối React state và lifecycle vào các components sử dụng hàm. React cung cấp cho chúng ta những hooks có sẵn như useState, useEffect, useMemo, … và đang tiếp tục bổ sung thêm các hooks hữu ích khác trong các phiên bản React mới. Không chỉ có vậy, React cũng có phép chúng ta tự định nghĩa các custom hooks để sử dụng. Trong bài viết này mình sẽ giới thiệu một vài custom hooks hữu ích cho các bạn tham khảo nhé.

useWindowSize

Trường hợp chúng ta muốn lấy kích thước của trình duyệt (chiều rộng và chiều cao), ta có thể sử dụng hook dưới đây; lưu ý là trường hợp code chạy phía server (server-side) thì biến window sẽ trả về undefined.

function useWindowSize() {
  // biến kiểm tra nó có phải client hay không
  const isClient = typeof window === "object";

  // lấy chiều rộng và chiều cao của cửa sổ của trình duyệt đang có
  function getSize() {
    return {
      width: isClient ? window.innerWidth : undefined,
      height: isClient ? window.innerHeight : undefined,
    };
  }

  // state quản lý kích thước của trình duyệt
  const [windowSize, setWindowSize] = useState(getSize);

  // effect set kích thước của cửa sổ của trình duyệt
  useEffect(() => {
    if (!isClient) {
      return false;
    }

    // set state kích thước của trình duyệt
    function handleResize() {
      setWindowSize(getSize());
    }

    // lắng nghe sự thay đổi kích thước của trình duyệt và set lại
    window.addEventListener("resize", handleResize);
    return () => window.removeEventListener("resize", handleResize);
  }, []); // chỉ chạy khi mount và unmount
  return windowSize;
}
  Làm quen với React Hook bằng ví dụ
  Làm sao để fetch dữ liệu bằng React Hook

useQueryString hay usePushQueryString

React Router không hỗ trợ query string, nên nếu bạn muốn xử lý URL có chứa params thì việc tạo 2 custom hook dưới đây là việc cần thiết. Trong 2 hooks này mình sử dụng thêm thư viện query-string cho việc get hay set giá trị URL.

import { useMemo } from "react";
import { useLocation } from "react-router-dom";
import qs from "query-string";

function useQueryString() {
  const location = useLocation();
  const queryString = useMemo(
    () => qs.parse(location.search),
    [location.search]
  );

  return queryString; // { page: 1, search: 'deptrai', filter: 'male' }
}

export default useQueryString;
import { useHistory, useLocation } from 'react-router-dom';
import qs from 'query-string';

function usePushQueryString() {
  const location = useLocation();
  const history = useHistory();

  function handlePushLocationSearch(data) {
    const locationSearch = qs.parse(location.search);

    history.push({ search: `?${qs.stringify({ ...locationSearch, ...data })}` });
 }

  return handlePushLocationSearch;
}

export default usePushQueryString;

useScrollToTop

Hook đơn giản nhất mình viết nhưng cũng được sử dụng rất nhiều, đấy là tính năng cuộn lên đầu trang web. Cũng lưu ý các bạn là chỉ sử dụng khi ứng dụng render ở client thôi nhé.

import React, { useLayoutEffect } from 'react'

function useScrollToTop() {
    useLayoutEffect(() => {
       window.scrollTo( 0,0)
    }, [])
}

export default useScrollToTop

useCookie

Một hook mình viết khi sử dụng thư viện js-cookie cho việc quản lý cookie trang web React của mình. Cookie giúp các bạn lưu trữ thông tin phiên đăng nhập và xác thực website.

import { useState } from "react";
import * as Cookies from "js-cookie";

/**
 * useCookie - React Hook for Cookies based on js-cookie
 * @param {string} key Cookie 
 * @param {Object|string} [initialValue]  Value will be assign if cookie doesn't exist.
 * @returns {Array} Returns cookie value, and the function to update it.
 */
export function useCookie(key, initialValue) {
  const [item, setInnerValue] = useState(() => {
    return Cookies.get(key) || initialValue;
  });

  /**
   * Set value of cookie
   * @param {Object|string} value 
   * @param {Cookies.CookieAttributes} [options]
   */
  const setValue = (value, options) => {
    setInnerValue(value);
    Cookies.set(key, value, options);
  };

  return [item, setValue];
}

export default useCookie;

usePrevious

Đây là hook giúp bạn lấy được giá trị trước đó của state và props trong React. Trước đây nếu chúng ta sử dụng Class Component thì có thể sử dụng componentDidUpdate, còn với Functional Component, chúng ta sử dụng useRef để lưu lại giá trị props và state trước đó

function usePrevious(value) {
  // Với ref, ta có thể lưu trữ bất kỳ giá trị nào, tương tự với  việc thể hiện 1 instance của 1 lớp
  const ref = useRef();

  // lưu giữ giá trị hiện tại vào trong ref
  useEffect(() => {
    ref.current = value;
  }, [value]); // Chỉ re-render khi giá trị thay đổi

  // trả về giá trị trước đó
  return ref.current;
}

useFetch

Mỗi khi cần call API get dữ liệu từ server mà không cần đẩy vào Redux hoặc 1 state management nào khác thì mình thường sử dụng hook này cho nhanh và tiện.

import { useState, useEffect } from "react";

export default function useFetch(url, options) {
  const [data, setData] = useState([]);
  const [error, setError] = useState(null);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const resp = await fetch(url, options);
        const res = await resp.json();
        if (isMounted) setData(res.data);
      } catch (e) {
        if (isMounted) setData([]);
        if (isMounted) setError(e);
      }
    };

    let isMounted = true;
    fetchData();
    return () => {
      isMounted = false;
    };
  }, []);

  return { data, error };
}

Kết bài

Trong quá trình làm dự án thì có rất nhiều tính năng mà bạn có thể viết lại thành 1 custom hook. Trên đây chỉ là vài custom hook cơ bản mà hầu như dự án React nào mình cũng sử dụng. Hy vọng bài viết hữu ích dành cho các bạn, cảm ơn các bạn đã đọc và theo dõi. Hẹn gặp lại các bạn trong các bài viết tiếp theo của mình.

Bạn có thể tham khảo những nhiệm vụ và yêu cầu của lập trình viên ReactJS thông qua hàng loạt việc làm ReactJS trên TopDev.

Tác giả: Phạm Minh Khoa

Xem thêm:

Thủ thuật xử lý lỗi trong Golang

AngularJS Là Gì? Khác Biệt Nào Giữa Angular Và Frontend Framework Khác

Tối ưu ứng dụng React bằng Code-Spliting

Xem thêm việc làm ngành IT hàng đầu tại TopDev

FPT Jetking đồng hành cùng sự kiện VietNam Web Summit 2022

FPT Jetking đồng hành cùng sự kiện VietNam Web Summit 2022

Vietnam Web Summit chính thức trở lại đường đua dành cho “Giới công nghệ” với hình thức offline sau thời gian vắng bóng vì dịch Covid-19. Năm nay, FPT Jetking là một trong những nhà tài trợ song hành cùng Vietnam Web Summit 2022 với tư cách nhà tài trợ đồng. Ngoài quy tụ hàng trăm công ty và doanh nghiệp Công nghệ lớn nhỏ trên cả nước, sự kiện Vietnam Web Summit lần này có sự tham gia đặc biệt từ Tổ chức giáo dục – FPT Jetking giúp trang bị kiến thức vững chắc cho người quản trị trong khi các cuộc tấn công mạng ngày càng gia tăng về số lượng lẫn độ phức tạp. 

FPT jetking là đơn vị tài trợ đồng của Vietnam Web Summit 2022
FPT Jetking là đơn vị tài trợ đồng của Vietnam Web Summit 2022

FPT Jetking – đơn vị đào tạo Quản trị An ninh mạng và Đám mây tại Việt Nam

FPT Jetking là đơn vị đào tạo liên kết giữa Tổ chức Giáo dục FPT và Học viện Jetking (Ấn Độ) từ năm 2011. Trong xu thế “chuyển đổi số” và “lên mây”, sinh viên FPT Jetking được trang bị các kiến thức vững chắc từ hạ tầng mạng cục bộ cho đến đám mây nhằm đáp ứng nhu cầu quản trị mạng toàn diện và an toàn của các doanh nghiệp. 

Với mục tiêu hàng đầu là nâng cao trải nghiệm học tập cho sinh viên, tại FPT Jetking, các bạn không những được tiếp cận với chương trình và trang thiết bị học tập luôn được cập nhật mới nhất, mà còn được trải nghiệm phương pháp giảng dạy sáng tạo và hiện đại, giúp tăng khả năng tiếp thu bài học và phát triển toàn diện các kỹ năng cho sinh viên.

Sinh viên FPT Jetking luôn được trang bị các kiến thức mới
Sinh viên FPT Jetking luôn được trang bị các kiến thức mới

Thời gian đào tạo tại FPT Jetking ngắn hơn các trường đại học thông thường, sinh viên không cần học các môn đại cương mà tập trung học kiến thức chuyên ngành. Đặc biệt, thời lượng thực hành chuyên môn chiếm đến 70% khóa học, giúp các bạn có đầy đủ hành trang khi tốt nghiệp tại trường.  

FPT Jetking “xứng danh” là đơn vị đào tạo uy tín tại Việt Nam khi sinh viên có khả năng làm việc ngay sau khi tốt nghiệp trong những lĩnh vực đang là xu hướng mới, có nhu cầu nhân lực lớn trong ngành CNTT toàn cầu như: an ninh mạng, quản trị hệ thống, điện toán đám mây,… 

FPT Jetking – đào tạo nguồn nhân lực ngành an ninh mạng chất lượng.

Với hơn 10 năm kinh nghiệm đào tạo ngành Quản Trị Hệ Thống & An Ninh Mạng tại Việt Nam và là đơn vị đào tạo An ninh mạng duy nhất tại Hệ thống FPT, Hệ thống đào tạo An Ninh Mạng quốc tế FPT Jetking là cái nôi của nhiều chuyên viên an ninh mạng giỏi.   

Đồng hành cùng sự kiện Vietnam Web Summit 2022,  FPT Jetking hy vọng sẽ mang đến cho người tham dự những hoạt động và trải nghiệm bổ ích, giúp khách mời có góc toàn diện về chuyển đổi số và an ninh mạng hiện nay. 

Tại sự kiện này, ngoài việc được “đắm chìm” vào những công nghệ hiện đại nhất, người tham dự còn được nghe chia sẻ trực tiếp đến từ Thầy Nguyễn Hoài Linh – Giám đốc đào tạo của FPT Jetking về chủ đề “Cloud and Cybersecurity Management in Digital Transformation

Giám đốc đào tạo FPT Jetking - Nguyễn Hoài Linh
Giám đốc đào tạo FPT Jetking – Nguyễn Hoài Linh chia sẻ về chủ đề “Cloud and Cybersecurity Management in Digital Transformation”

Sự hợp tác lần này giữa FPT Jetking và Hội nghị công nghệ Web Summit không chỉ giúp bạn trực tiếp trải nghiệm những công nghệ mới nhất mà còn giúp bạn hiểu rõ về tầm quan trọng và quy trình “chuyển đổi số” và “lên mây”. 

Mọi người hãy đón chờ màn kết hợp giữa FPT Jetking và sự kiện Vietnam Web Summit 2022 sắp tới nhé! Hứa hẹn sẽ mang đến cho bạn rất nhiều bất ngờ.

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

Con đường ngắn nhất để trở thành lập trình viên? Review FPT Aptech

lap trinh lap trinh vien

Làm thế nào để bạn có thể gia nhập vào thị trường việc làm Công nghệ thông tin – Lập trình phần mềm đang vô cùng sôi động và luôn khát nhân lực? Hướng đi nào tốt nhất, học ở đâu hiệu quả? FPT Aptech – Hệ thống đào tạo Lập trình viên quốc tế với hơn 23 năm kinh nghiệm, liệu có phải lựa chọn tin cậy? 

Theo Báo Cáo Thị trường IT Việt Nam 2022 của TopDev, dự kiến từ năm 2022 – 2024, Việt Nam sẽ thiếu hụt 150.000 – 195.000 lập trình viên/năm, và nhu cầu nhân lực vẫn còn tiếp tục tăng cao trong những năm tới. Sự thiếu hụt này xuất phát từ sự chênh lệch giữa trình độ của lập trình viên với yêu cầu của doanh nghiệp.

Bởi vậy mà việc nỗ lực trau dồi những kỹ năng cần thiết cũng như việc chọn lựa môi trường học tốt để trở thành một Lập trình viên đáp ứng yêu cầu thực tế là vô cùng quan trọng. Trả lời cho câu hỏi đưa ra ở đầu, thông thường, sẽ có 3 con đường học Lập trình phổ biến, điển hình như: học chính quy đại học/cao đẳng (3 – 4 năm), đơn vị đào tạo ngắn hạn (6 tháng – 2 năm), tự học online (không giới hạn thời gian),..

Mỗi con đường đều có ưu và nhược điểm riêng, trước khi lựa chọn bạn cần đánh giá vào các yếu tố như: giáo trình học, chương trình học có cập nhật mới nhất không? Đội ngũ giảng viên có kinh nghiệm thực chiến không? Đơn vị đào tạo có bề dày kinh nghiệm, có tiếng trong lĩnh vực không?

Vậy Hệ thống Đào tạo Lập trình viên quốc tế FPT Aptech, địa chỉ cung cấp nguồn nhân lực được nhiều doanh nghiệp tin cậy lựa chọn, có phải là điểm đến học tập lý tưởng?

Lợi thế hấp dẫn khi chọn học Lập trình tại FPT Aptech 

Năm 1999, Hệ thống đào tạo Lập trình viên Quốc tế FPT Aptech được thành lập, trực thuộc Tập đoàn FPT, đồng thời là đơn vị sáng lập, Master Franchise duy nhất tại Việt Nam của tập đoàn Aptech Ấn Độ. Hơn 23 năm phát triển song hành cùng sự thay đổi của công nghệ, FPT Aptech trở thành môi trường học Lập trình lý tưởng không chỉ cho học sinh mới tốt nghiệp Trung học phổ thông, mà còn cả các bạn sinh viên các trường đại học, cao đẳng muốn học song song, hay người đi làm muốn chuyển ngành với thời gian học ngắn gọn từ 6 tháng đến 2 năm

FPT-Aptech Khai giang khóa đầu tiên
Hình ảnh ngày khai trương FPT Aptech cơ sở TP. Hồ Chí Minh từ năm 1999

Chọn FPT Aptech vì muốn học thật nhanh để đi làm sớm, Nguyễn Xuân Trường, cựu sinh viên FPT Aptech chia sẻ:

Khi tốt nghiệp cấp 3, em cũng giống như nhiều bạn đắn đo chọn trường học. Thật may, em được cậu giới thiệu học tại đây. Việc được thực hành liên tục giúp em tự tin hơn và có công việc sớm khi học hết kỳ 2”.

Bạn Nguyễn Xuân Trường - Cựu sinh viên FPT Aptech hiện đang làm Developer tại công ty SmartOSC
Bạn Nguyễn Xuân Trường – Cựu sinh viên FPT Aptech hiện đang làm Developer tại công ty SmartOSC

Với ưu điểm thời gian thực hành chiếm 70% thời lượng học cùng với chương trình đào tạo được cập nhật liên tục, bám sát nhu cầu thực tế của doanh nghiệp, những đồ án sinh viên có tính ứng dụng cao, FPT Aptech từng bước chinh phục người học bằng chính chất lượng đào tạo của mình. 

Là sinh viên ngành Công nghệ thông tin của một trường đại học có tiếng, Nguyễn Tiến Dương lựa chọn học thêm ở FPT Aptech như một “bệ phóng” giúp cậu tăng khả năng thực chiến hơn: “Em muốn học thêm thực hành nhiều hơn nữa để tăng cơ hội việc làm. Dù chương trình học 2 năm nhưng đến kỳ 2 (sau 1 năm) em cảm thấy đã đủ kiến thức để có thể tự “bơi” đi làm được rồi”.

Bạn Nguyễn Tiến Dương - Cựu sinh viên FPT Aptech
Bạn Nguyễn Tiến Dương – Cựu sinh viên FPT Aptech hiện đang là Lập trình viên tại Công ty cổ phần công nghệ thông tin Địa lý eK

Ngoài những ưu điểm trong chương trình học cũng như chất lượng giảng viên theo tiêu chuẩn khắt khe của Tổ chức giáo dục FPT, sinh viên FPT Aptech còn được ưu tiên thực tập và làm việc tại các doanh nghiệp thuộc Tập đoàn FPT, 100% giới thiệu việc làm tại các công ty phần mềm mà nhà trường đã và đang hợp tác như NashTech, Vinmec, Viettel, FPT Software, LG,…

Cán bộ Tập đoàn VNPT học nâng cao nghiệp vụ Lập trình tại FPT Aptech
Cán bộ Tập đoàn VNPT học nâng cao nghiệp vụ Lập trình tại FPT Aptech

Hiện nay, FPT Aptech đang đào tạo các chương trình: Lập trình viên quốc tế Full stack (2 năm), Backend (12 tháng), Frontend (6 tháng) và đặc biệt chương trình Lập trình game đa nền tảng – Game Development with Unity mới ra mắt gần đây giúp các bạn trẻ đam mê Lập trình có thêm nhiều cơ hội theo đuổi con đường mà mình mơ ước.

Hệ thống đào tạo Lập trình viên quốc tế FPT Aptech

Cơ sở tại Hà Nội: 

  • Tòa nhà Detech – số 8A Tôn Thất Thuyết, Mỹ Đình, Từ Liêm 
  • Hotline: (024) 7300 8855 – 0973111086

 Cơ sở tại TP. Hồ Chí Minh: 

  • 590 Cách Mạng Tháng Tám, Phường 11, Quận 3 
  • Hotline: (028) 7300 8866 – 0981578920 

Email: aptech.fpt@fe.edu.vn | Website: aptech.fpt.edu.vn | Fanpage: fb.com/aptech.fpt  

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

[Thư mời] Tham dự Hội thảo: Microsoft Intelligent Cloud for app development tại Microsoft Technology Summit 2022 | 12:30 – 16:00 l 07.12.2022

We’re back.
Microsoft Technology Summit 2022.
What’s new? What’s next?
#MicrosoftTechnologySummit2022 #Do_more_with_less_with_Microsoft_Cloud #Innovate_for_tomorrow

Phát triển công nghệ đồng nghĩa với việc tiếp cận những giải pháp tân tiến và cải tiến hơn so với phát kiến trước nhằm phục vụ đối tượng mục tiêu. Trong đó, công nghệ điện toán đám mây vượt trội là giải pháp được thiết kế cho các doanh nghiệp hiện đại và phức tạp, đóng vai trò là nền tảng mạnh mẽ cho sự đổi mới. Công nghệ này được xây dựng dựa trên trí thông minh nhân tạo bổ sung các chức năng tân tiến, khiến người dùng làm việc hiệu quả hơn gấp nhiều lần, đặc biệt đối với các công việc liên quan đến phát triển phần mềm – vị trí đòi hỏi tiếp cận nguồn tài nguyên lớn.

Hãy cùng chúng tôi tham dự Hội thảo “Intelligent Cloud for app development – Phát triển ứng dụng cùng giải pháp đám mây thông minh” do Microsoft tổ chức vào lúc 12:30 – 16:00, ngày 07.12.2022 tại Vinpearl Landmark 81, để cùng tìm hiểu về các giải pháp phân tích dữ liệu, phát triển phần mềm, hiện đại hóa những ứng dụng cốt lõi.

AGENDA HỘI THẢO

Thời gian Chủ đề Diễn giả
12:30 – 13:00 Đón khách
13:00 – 13:40 Hỗ trợ phát triển game với giải pháp Azure for Gaming Annie Mathew – Giám đốc phụ trách nhà phát triển Microsoft APAC
Triệu Hải Linh – Chuyên gia tư vấn giải pháp Azure, Data và Trí tuệ nhân tạo Microsoft Vietnam
13:40 – 14:20 Thúc đẩy sáng tạo trong phát triển phần mềm một cách bảo mật với GitHub Andre Kolodochka – Kỹ sư giải pháp cấp cao Github
14:20 – 15:00
Hỗ trợ kinh doanh hiệu quả cùng Cloud Scale Analytics
Lê Quốc Hoà – Kiến trúc sư giải pháp điện toán đám mây Microsoft
15:00 – 15:40 Hiện đại hoá các ứng dụng Cloud Native với Azure RedHat OpenShift
Nguyễn Hoàng Tín – Kiến trúc sư giải pháp, RedHat Việt Nam
15:40 – 15:50 Hỏi – Đáp Tất cả diễn giả
15:50 – 16:00 Bế mạc  

Hội thảo “Intelligent Cloud for app development – Phát triển ứng dụng cùng giải pháp đám mây thông minh” nằm trong chương trình sự kiện “Microsoft Technology Summit 2022” do Microsoft tổ chức ngày 07.12.2022 tại Vinpearl Landmark 81. Ngoài hội thảo về Cloud, sự kiện còn có các Chuyên đề khác:

Thúc đẩy đổi mới cùng Microsoft Azure
Trong bối cảnh công nghệ hóa toàn cầu, điện toán đám mây đã và đang trở thành giải pháp hàng đầu nhằm giải quyết nhiều vấn đề đối với cơ sở dữ liệu của doanh nghiệp. Đặc biệt với sự chuyển dịch khối lượng công việc lên các nền tảng trực tuyến, việc lưu trữ, sử dụng, bảo mật dữ liệu qua các máy chủ thông qua dịch vụ đám mây càng trở nên cần thiết.

Chuyên đề này cung cấp những nội dung chuyên sâu về cách Microsoft Azure đang hỗ trợ chuyển đổi số đồng thời thúc đẩy những cơ hội, sáng tạo mới trong nhiều lĩnh vực, ngành nghề khác nhau.

Microsoft Security cho tất cả Không khó để tìm ra các số liệu thống kê hàng trăm vụ xâm nhập vào cơ sở dữ liệu của các công ty hàng đầu, gây ra những thiệt hại không nhỏ cho các công ty nói riêng và nền tảng dữ liệu toàn cầu nói chung.

Nhằm tạo ra nền móng vững chắc cho sự phát triển của Doanh nghiệp và mọi cá nhân, Microsoft đã và đang thực hiện các bước đi tiên phong trong các giải pháp bảo mật toàn diện dành cho các dịch vụ đám mây. Trong chuyên đề “Microsoft Security cho tất cả” chúng ta sẽ tìm hiểu về các công cụ và giải pháp bảo mật từ Microsoft nhằm bảo vệ mọi cá nhân, tổ chức, trên mọi thiết bị, tại bất cứ đâu.

Định hình môi trường làm việc của tương lai Các nền tảng làm việc và trao đổi công việc trực tuyến, hay các phát kiến mới trong quy trình tự động hóa từ xa ngày càng được ứng dụng nhiều hơn trong đời sống, hỗ trợ gỡ bỏ cản trở trong giao tiếp ở những khoảng cách địa lý khác nhau, đồng thời tăng cường năng suất lao động.

Để có thể tối ưu hoá các quy trình cũng như mang lại hiệu quả công việc tối đa, mô hình làm việc kết hợp đã dần trở thành xu thế mới cho môi trường làm việc của tương lai.

Tại chuyên đề ” Định hình môi trường làm việc của tương lai “, các chuyên gia sẽ tập trung chia sẻ về các giải pháp nhằm nâng cao năng suất làm việc, sự cộng tác nhóm và tối ưu hoá trải nghiệm của nhân viên với sự hỗ trợ của các sản phẩm và giải pháp mới nhất đến từ Microsoft.

Trong kỉ nguyên của chuyển đổi số, Microsoft đang tích cực thúc đẩy sự thay đổi mang tính thời đại để cung cấp những cải tiến mới về công nghệ, hỗ trợ các Khách hàng và Đối tác phát triển mạnh mẽ, nhanh chóng và hiệu quả hơn. Hãy cùng chúng tôi tham dự Hội thảo “Microsoft Technology Summit 2022” – sự kiện công nghệ lớn nhất trong năm do Microsoft tổ chức, nhằm:

  • Tìm hiểu ngay về các giải pháp hỗ trợ của Microsoft dành cho doanh nghiệp để ứng dụng công nghệ hiệu quả
  • Mở ra cơ hội giao lưu, tương tác và học hỏi từ các chuyên gia công nghệ hàng đầu
  • Đón đầu các xu hướng công nghệ giúp tối ưu hoá vận hành và chi phí

Đây là cơ hội không thể bỏ qua để đi tắt đón đầu, nắm bắt ngay những cập nhật công nghệ mới nhất, đầy đủ nhất với rất nhiều sự lựa chọn chuyên đề, được thiết kế riêng cho từng nhu cầu của Doanh nghiệp trong các lĩnh vực khác nhau.

8:30 – 16:00, Thứ Tư, ngày 07.12.2022
Khách sạn Vinpearl Landmark 81, Autograph Collection, TP. Hồ Chí Minh
#MicrosoftTechnologySummit2022
#Do_more_with_less_with_Microsoft_Cloud
#Innovate_for_tomorrow

Vietnam Web Summit 2022: Serverless Architecture, Web3 và Data-driven – Bệ phóng đưa ngành Công nghệ bứt phá trong kỷ nguyên mới

Thumnail-VWS2022

Công nghệ và Chuyển đổi số được xem là chìa khóa quan trọng giúp con người, doanh nghiệp, nền kinh tế hồi phục và phát triển sau đại dịch. Sự phát triển mạnh mẽ của Serverless Architecture, Web3 và Data-driven sẽ mở ra một kỷ nguyên mới, dẫn dắt làn sóng công nghệ Việt Nam và toàn cầu trong năm 2023.

Vietnam Web Summit 2022

Đón đầu xu hướng để đột phá

Với sự thay đổi liên tục, khó lường của nhu cầu thị trường thì việc “đón đầu” các xu hướng mới trong tương lai sẽ điều tất yếu để doanh nghiệp đảm bảo lợi thế cạnh tranh. Serverless Architecture, Web3 và Data-driven chính là 3 “trụ cột” mấu chốt giúp doanh nghiệp tạo đột phá trong tương lai:

  • Serverless Architecture là mô hình thực thi Cloud computing (điện toán đám mây), trong đó nhà cung cấp tự động quản lý việc phân bổ và cung cấp máy chủ. Do đó, doanh nghiệp không phải theo dõi máy chủ, không cần quan tâm việc phân bổ, quản lý tài nguyên của hệ điều hành và cả vấn đề về nâng cấp hay bảo mật. Chính vì vậy, doanh nghiệp sẽ tối ưu được nhiều thời gian, nhân lực cũng như chi phí phát sinh từ việc phải liên tục cài đặt bản vá, cập nhật và theo dõi 24/24 đề phòng các lỗi bất ngờ có thể xảy ra ảnh hưởng tới sự liền mạch vận hành của sản phẩm, dịch vụ.
  • Web3 tập trung vào một hệ sinh thái các sản phẩm công nghệ phi tập trung (decentralized), không tin cậy (trustless), không cần sự cho phép (permissionless) và có thể tương tác (interoperable). Đây được xem là thế hệ thứ 3 của World Wide Web, nơi ứng dụng các đột phá công nghệ mới như trí tuệ nhân tạo (AI), máy học (machine learning) và web ngữ nghĩa (Semantic Web), đồng thời sử dụng blockchain như một hệ thống bảo mật cho thông tin của người dùng. Với Web3 quyền lực sử dụng thông tin cá nhân sẽ được đưa về tay người dùng thay vì các “ông lớn”, đem đến môi trường internet tự chủ, thông minh và cởi mở hơn. 
  • Data-driven có thể được hiểu là một trạng thái trong kinh doanh nơi dữ liệu được sử dụng để ra quyết định và các hoạt động liên quan khác một cách hiệu quả, trong thời gian thực. Data-driven thường yêu cầu: cơ sở dữ liệu với chất lượng cao, được tích hợp tốt và tự động hóa theo thuật toán, bao gồm cả trí tuệ nhân tạo (AI). Đây là một phản ứng đối với quá trình chuyển đổi kinh tế và văn hóa lớn đang diễn ra, được biết đến là Thời đại Công nghệ 4.0. Các công ty giờ đây đã nhận ra rằng dữ liệu là “nhiên liệu” quan trọng cần tận dụng để tồn tại và phát triển trong kỷ nguyên mới.

Vietnam Web Summit 2022 - pic1

Có thể thấy, tổng hòa của 3 yếu tố trên sẽ tạo nên môi trường hoàn hảo cho doanh nghiệp có những bước phát triển đột phá trong tương lai. Với sức mạnh của Serverless Architecture, có khả năng giải quyết tất cả các vấn đề về lưu trữ dữ liệu, từ đó tạo nền tảng cho quá trình thu thập, xử lý và đưa ra quyết định chiến lược dựa trên cơ sở dữ liệu (Data-driven). Web3 sẽ là môi trường hoàn hảo để đem sự tương tác giữa doanh nghiệp với người dùng nhanh chóng, tiện lợi và thông minh hơn bao giờ hết, hứa hẹn đem đến trải nghiệm tuyệt vời cho khách hàng và doanh số vượt bật cho doanh nghiệp.

Các doanh nghiệp hàng đầu như Amazon, Google, Alibaba,… đã bắt đầu ứng dụng mô hình này để giải quyết các vấn đề khác nhau tạo nên sự thay đổi tích cực cho nền kinh tế toàn cầu. Đây là dấu hiệu rõ ràng nhất cho làn sóng công nghệ mới tại Việt Nam và trên thế giới trong thời gian tới.

Vietnam Web Summit 2022 đồng hành cùng doanh nghiệp bước vào kỷ nguyên mới

Chính vì những lý do trên, ngày hội Công nghệ được mong chờ nhất – Do TopDev tổ chức (nền tảng tuyển dụng IT) sẽ chính thức trở lại tại Tp. HCM (02.12.2022) và Hà Nội (08.12.2022). Sự kiện tập trung phân tích những chủ đề nổi bật của công nghệ trong năm 2022 theo hướng đi mới .. với những nội dung xoay quanh các vấn đề chính: Adoption & Change Management, Customer – centric Mindset, Digital – first culture & Movement, Engineering Fundamentals, Data – driven organization, Serverless architecture, Technological humanism.

Vietnam Web Summit 2022 - pic2

Sự kiện năm nay sẽ là nơi quy tụ của các tập đoàn Công nghệ lớn tại Việt Nam: NAB Innovation Centre Vietnam, Amanotes, BSS Group, akaBot FPT Software, Microsoft, NIPA, EPAM, Zoho… góp phần tạo ra một bức tranh công nghệ toàn cảnh với những xu hướng thị trường được cập nhật mới nhất.

Vietnam Web Summit 2022 không chỉ mang những giá trị cốt lõi là phục vụ và phát triển cộng đồng mà còn là cơ hội cho các doanh nghiệp lớn, nhỏ chia sẻ, hợp tác, trao đổi kiến thức – kỹ năng, đồng thời mở rộng quan hệ và giới thiệu sản phẩm. Dự kiến năm nay sự kiện thu hút sự tham gia của 10.000 lượt khách, 500 doanh nghiệp cùng sự xuất hiện của hơn 60 diễn giả hàng đầu trong lĩnh vực. Điều này minh chứng cho tầm ảnh hưởng mạnh mẽ của Vietnam Web Summit đối với cộng đồng Công nghệ Việt Nam. Trải qua 5 năm nỗ lực mang đến giá trị cốt lõi là phục vụ và phát triển cộng đồng, Vietnam Web Summit dần trở thành sân chơi không thể thiếu và là “điểm hẹn” thường niên dành cho mọi cá nhân, tổ chức lớn nhỏ đang hoạt động trong lĩnh vực công nghệ tại Việt Nam.

Vietnam Web Summit 2022 - pic3

hứa hẹn sẽ là sự kiện không thể bỏ qua với những người yêu công nghệ, những doanh nghiệp đang tìm kiếm lời giải đáp cho những vấn đề công nghệ nổi bật hiện nay.

—————————————–

Vietnam Web Summit 2022 do TopDev tổ chức:

  1. Hồ Chí Minh: 02/12/2022 (thứ Sáu) tại Grand Palace, 142/18 Cộng Hòa, P.4, Q. Tân Bình, Tp.HCM
  2. Hà Nội: 08/12/2022 (thứ Năm) tại CTM Palace, 131 Nguyễn Phong Sắc, Dịch Vọng Hậu, Cầu Giấy, Hà Nội

Trang chủ sự kiện: https://topdev.vn/vws/ / https://vietnamwebsummit.com

Xem thêm:

 

Thủ thuật xử lý lỗi trong Golang

Xử lý lỗi trong Golang nhu thế nào?

Bài viết được sự cho phép của tác giả Code Toàn Bug

Lỗi là một điều gì đó bất thường xảy ra trong chương trình, nhưng ở Golang lỗi lại mang một ý nghĩa khác. Lỗi chỉ là một giá trị hàm có thể trả về nếu có gì đó không mong đợi xảy ra.

Nếu bạn đã viết mã bằng Golang, ắt hẳn bạn sẽ gặp kiểu error. Go sử dụng các giá trị error để chỉ ra sự bất thường của ứng dụng. Cho ví dụ, hàm os.Open trả về 1 giá trị error khi không mở được tệp:

1 func Open(name string) (file *File, err error)

Đoạn mã sau sử dụng os.Open để mở một tệp. Nếu một lỗi xảy ra, nó sẽ gọi log.Fatal để in thông báo lỗi và dừng lại:

1 f, err := os.Open("filename.ext")
2 if err != nil {
3      log.Fatal(err)
4 }
5 // do something with the open *File f

Bạn có thể làm được nhiều việc với kiểu error trong Go, nhưng trong bài viết này, chúng ta sẽ xem xét kỹ hơn về lỗi và thảo luận một số phương pháp hay để xử lý lỗi trong Go.

  Golang là gì? Top 07 Framework tối ưu “cực căng” cho Golang

Kiểu error

Kiểu error thực chất là 1 kiểu interface. Một biến error đại diện cho bất kỳ giá trị nào có thể mô tả chính nó dưới dạng một string.

Đây là khai báo của interface:

1 type error interface {
2      Error() string
3 }

Với kiểu error, thì Go đã tích hợp sẵn được khai báo trước trong universe block.

Cách triển khai lỗi thường được sử dụng nhất là package errors không hỗ trợ kiểu errorString:

1 // errorString is a trivial implementation of error.
2 type errorString struct {
3      s string
4 }
5
6 func (e *errorString) Error() string {
7      return e.s
8 }

Bạn có thể tạo 1 trong những giá trị này với hàm errors.New. Nó nhận 1 string và convert thành errors.errorString, sau đó chuyển về giá trị error:

1 // New returns an error that formats as the given text.
2 func New(text string) error {
3      return &errorString{text}
4 }

Đây là cách bạn sử dụng errors.New trong hàm tính căn bậc 2:

1 func Sqrt(f float64) (float64, error) {
2      if f < 0 {
3           return 0, errors.New("math: square root of negative number")
4 }
5 // implementation
6 }

Khi người dùng cố tình tính cân bậc 2 của số âm, sẽ có 1 thông báo lỗi đưa ra:

math: square root of negative number.

Chúng ta sử dụng hàm trên như sau:

1 f, err := Sqrt(-1)
2 if err != nil {
3      fmt.Println(err)
4 }

Gói fmt hiển thị error bằng cách gọi phương thức Error() string của nó.

Trách nhiệm của thông báo lỗi là phải mô tả đầy đủ ngữ cảnh của nó. Hàm os.Open trả về lỗi là “open /etc/passwd: permission denied,” chứ không mỗi “permission denied.”  Lỗi do hàm Sqrt của chúng ta trả về là thiếu thông tin về đối số không hợp lệ.

Để thêm thông tin chúng ta thêm gói fmt.Errorf. Nó định dạng một chuỗi theo các quy tắc của Printf và trả về nó dưới dạng một lỗi tạo bởi error.New:

1 if f < 0 {
2      return 0, fmt.Errorf("math: square root of negative number %g", f)
3 }

Trong nhiều trường hợp thì fmt.Errorf là đủ tốt, nhưng vì error là 1 interface, nên bạn có thể chỉnh sửa tùy ý data của bạn như các giá trị error, để bạn kiểm tra tùy theo ngữ cảnh của bạn.

  Channel trong Golang là gì? So sánh Callback function và mutex lock với channel

Cho ví dụ, bạn muốn khôi phục giá trị không hợp lệ của đối số truyền vào Sqrt, bạn có thể định nghĩa 1 kiểu mới thay vì dùng string:

1 type NegativeSqrtError float64
2
3 func (f NegativeSqrtError) Error() string {
4      return fmt.Sprintf("math: square root of negative number %g", float64(f))
5 }

Sau đó chúng ta có thể sử dụng type assertion để kiểm tra NegativeSqrtError và xử lý 1 cách đặc biệt, mà các hàm fmt.Println or log.Fatal sẽ không nhìn thấy sự thay đổi đó.

Một ví dụ khác, package  json chỉ định loại SyntaxError mà hàm json.Decode sẽ trả về lỗi khi không parsing được JSON:

1 type SyntaxError struct {
2      msg string // description of error
3      Offset int64 // error occurred after reading Offset bytes
4 }
5
6 func (e *SyntaxError) Error() string { return e.msg }

Trường Offset sẽ không được hiển thị ở format của error, nhưng chúng ta có thể sử dụng biến line để thêm thông tin về lỗi đó:

1 if err := dec.Decode(&val); err != nil {
2      if serr, ok := err.(*json.SyntaxError); ok {
3          line, col := findLine(f, serr.Offset)
4           return fmt.Errorf("%s:%d:%d: %v", f.Name(), line, col, err)
5      }
6      return err
7 }

Đoạn code trên thuộc dự án Camlistore.

Interface error chỉ có 1 method Error, triển khai lỗi cụ thể có thể có các methods bổ sung. Cho ví dụ, package net  trả về lỗi thuộc kiểu error, tuân theo quy ước thông thường, nhưng một số triển khai error có các methods bổ sung được xác định bởi interface net.Error:

1 package net
2
3 type Error interface {
4      error
5      Timeout() bool // Is the error a timeout?
6      Temporary() bool // Is the error temporary?
7 }
dser

Client có thể test với net.Error bằng cách kiểm tra các assertion, sau đó phân biệt lỗi mạng tạm thời với lỗi vĩnh viễn. Cho ví dụ, trình crawler web có thể sleep và thử lại khi gặp 1 lỗi tạm thời và từ bỏ nếu gặp lỗi vĩnh viễn:

1 if nerr, ok := err.(net.Error); ok && nerr.Temporary() {
2      time.Sleep(1e9)
3      continue
4 }
5 if err != nil {
6      log.Fatal(err)
7 }

Việc làm Golang Hồ Chí Minh hấp dẫn tại TopDev!

Đơn giản hóa việc xử lý lỗi lặp lại

Trong Go xử lý lỗi là rất quan trọng. Thiết kế và quy ước của ngôn ngữ khuyến khích bạn kiểm tra nơi xảy ra lỗi,(khác biệt với quy ước trong các ngôn ngữ khác là ném ra các ngoại lệ và đôi khi bắt chúng). Trong một số trường hợp, điều này làm cho mã Go trở nên dài dòng, nhưng may mắn thay, bạn có thể sử dụng một số kỹ thuật để giảm thiểu việc xử lý lỗi lặp đi lặp lại.

Hãy xem xét ứng dụng App Engine , với xử lý HTTP lấy các bản ghi từ datastore và định dạng nó bằng 1 template:

1 func init() {
2      http.HandleFunc("/view", viewRecord)
3 }
4
5 func viewRecord(w http.ResponseWriter, r *http.Request) {
6      c := appengine.NewContext(r)
7      key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil)
8      record := new(Record)
9      if err := datastore.Get(c, key, record); err != nil {
10          http.Error(w, err.Error(), 500)
11           return
12      }
13      if err := viewTemplate.Execute(w, record); err != nil {
14          http.Error(w, err.Error(), 500)
15      }
16 }

Hàm xử lý lỗi trả về bởi hàm datastore.Get, và hàm viewTemplate’s Execute. Trong 2 trường hợp, nó đều trả về 1 lỗi đơn giản với thông báo mã 500 (“Internal Server Error”). Bạn nhận ra là code đã lặp lại.

Để giảm sự lặp lại, bạn định nghĩa 1 kiểu HTTP là appHandler như sau:

1 type appHandler func(http.ResponseWriter, *http.Request) error

Sau đó chúng ta có thể thay đổi hàm viewRecord như sau:

1 func viewRecord(w http.ResponseWriter, r *http.Request) error {
2      c := appengine.NewContext(r)
3      key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil)
4      record := new(Record)
5      if err := datastore.Get(c, key, record); err != nil {
6           return err
7      }
8      return viewTemplate.Execute(w, record)
9 }

Điều này trông đơn giản hơn, nhưng package http  không hiểu kiểu trả về error. Để khắc phục, chúng ta triển khai interface ServeHTTP của http.Handler như sau:

1 func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
2      if err := fn(w, r); err != nil {
3          http.Error(w, err.Error(), 500)
4      }
5 }

Phương thức ServeHTTP gọi hàm appHandler và trả về error nếu có tới user.

Bây giờ chúng ta đăng ký hàm Handle( thay vì hàm HandleFunc) như appHandler là 1 http.Handler(nó không phải là 1 http.HandlerFunc):

1 func init() {
2      http.Handle("/view", appHandler(viewRecord))
3 }

Với cách xử lý này, chúng ta làm nó thân thiện hơn với user. Để hiển thị string thông báo lỗi và HTTP error code, chúng ta tạo 1 struct appError như sau:

1 type appError struct {
2      Error error
3      Message string
4      Code int
5 }

Tiếp theo chúng ta sửa giá trị trả về thuộc kiểu *appError:

1 type appHandler func(http.ResponseWriter, *http.Request) *appError

Và làm cho method appHandler’s ServeHTTP hiển thị thông báo lỗi appError’ chính xác với error code và message cho developer:

1 func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
2      if e := fn(w, r); e != nil { // e is *appError, not os.Error.
3          c := appengine.NewContext(r)
4          c.Errorf("%v", e.Error)
5      http.Error(w, e.Message, e.Code)
6      }
7 }

Cuối cùng chúng ta cập nhật lại hàm viewRecord để trả về chi tiết hơn khi gặp lỗi:

1 func viewRecord(w http.ResponseWriter, r *http.Request) *appError {
2      c := appengine.NewContext(r)
3      key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil)
4      record := new(Record)
5      if err := datastore.Get(c, key, record); err != nil {
6           return &appError{err, "Record not found", 404}
7      }
8      if err := viewTemplate.Execute(w, record); err != nil {
9           return &appError{err, "Can't display record", 500}
10      }
11      return nil
12 }

Phiên bản này có cùng độ dài với phiên bản ban đầu, nhưng mỗi dòng đều có ý nghĩa riêng và thân thiện hơn với người dùng. Nếu bạn muốn cải thiện thì sau đây là 1 số ý tưởng:

  1. Cung cấp cho trình xử lý error bằng 1 template HTML.
  2. Giúp việc debug dễ dàng hơn bằng stack trace vào HTTP response nếu user đó là quản trị viên.
  3. Viết 1 constructor function vào appError để lưu trữ  stack trace cho việc debug dễ dàng hơn.
  4. recover panic bên trong appHandler, logging trên console bằng “Critical”, và thông báo cho user “a serious error has occurred.” Đây là một cách tốt để tránh cho người dùng thấy các thông báo lỗi khó hiểu do lỗi lập trình gây ra. Xem thêm Defer, Panic, and Recover.

Kết luận

Xử lý lỗi là 1 phần quan trọng trong việc viết 1 phần mềm tốt. Bằng việc sử dụng các kỹ thuật trong bài đăng này sẽ giúp bạn viết code Go 1 cách ngắn gọn và đáng tin cậy hơn.

Bạn có thể tham khảo những nhiệm vụ và yêu cầu của lập trình viên Golang thông qua hàng loạt việc làm Golang trên TopDev.

Bài viết gốc được đăng tải tại codetoanbug.com

Xem thêm:

JavaScript là gì? Làm thế nào để trở thành lập trình viên JavaScript?

JavaScript là gì? Làm thế nào để trở thành lập trình viên JavaScript

Nhắc đến lập trình Web thì không thể không nói đến JavaScript, một trong ba thành phần mà bạn nhất định phải học và nắm vững nếu muốn trở thành một FrontEnd Developer bên cạnh HTML và CSS.

Hiện nay, JavaScript không chỉ là một ngôn ngữ lập trình dành riêng cho Web mà nó còn được dùng để viết code dành cho server, cho ứng dụng mobile hay viết game. Chính vì vậy mà nhu cầu tuyển dụng JavaScript Developer hiện tại đang rất lớn.

Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu JavaScript là gì và làm thế nào để trở thành một JavaScript Developer nhé. 

JavaScript là gì?

Trước hết, đừng nhầm lẫn JavaScriptJava, đây là 2 ngôn ngữ lập trình hoàn toàn khác nhau. Mặc dù cùng tiền tố “Java” nhưng thực tế 2 ngôn ngữ này chả có tí gì liên quan đến nhau cả.

JavaScript (JS) là một ngôn ngữ lập trình thông dịch, được phát triển bởi Netscape từ những năm 1995. Nó có cú pháp được phát triển dựa trên ngôn ngữ C.

JavaScript ban đầu được tạo ra để sử dụng trên các trình duyệt, giúp thiết kế các trang web động và xử lý các một số hiệu ứng hình ảnh thông qua DOM. Ngôn ngữ này là một sự bổ sung cần thiết giúp thực hiện các tác vụ mà không thể thực hiện được với chỉ HTML.

Trải qua gần 30 năm phát triển, JavaScript hiện nay đã trở thành một công cụ quan trọng và không thể thiếu đối với lập trình viên khi xây dựng Website. Hiện nay có đến 92% số lượng website sử dụng JavaScript. Điều này giúp nó trở thành ngôn ngữ phổ biến nhất (số liệu dựa theo khảo sát của cộng đồng lập trình viên trên StackOverflow): 

ngôn ngữ lập trình phổ biến

Nguồn: miro.medium.com

JavaScript không chỉ dành cho Website hay lập trình viên Frontend, nó còn có nhiều thứ khác từ Backend cho đến ứng dụng di động. Khái niệm lập trình viên Fullstack cũng được nhắc đến nhiều hơn từ khi NodeJS – một platform viết bằng JavaScript sử dụng để lập trình server-side ra đời năm 2009. NodeJs giúp cho JavaScript Developer có thể tự mình tạo ra Website bằng chính ngôn ngữ của mình.

nodejs framework

Nguồn:hackr.io/blog

NodeJS là một môi trường runtime dùng để chạy JavaScript bên ngoài trình duyệt. Từ đó giúp JavaScript có thể làm được vô số thứ khác. Hiện nay có rất nhiều framework của NodeJS được sử dụng để xây dựng website (phát triển cả BE và FE) như: Express, Nest, Hapi, …

  9+ cách để xóa một phần tử ra khỏi JavaScript Array

Những năm gần đây, với sự phát triển của smartphone và các thiết bị di động, mảng lập trình dành cho các ứng dụng chạy trên mobile devices cũng thu hút các lập trình viên tham gia. Không thể thiếu JavaScript – một ngôn ngữ đa năng.

React Native, Ionic, NativeScript là những framework tiêu biểu dành cho việc phát triển các ứng dụng di động. Với ưu điểm là khả năng phát triển nhanh, code được build cho nhiều nền tảng khác nhau (phổ biến là Android và iOS) thì các framework trên đang giúp JavaScript được ưu tiên bởi các startup công nghệ.

mobile framework

Nguồn: discoversdkcdn.azureedge.net

Ngoài những khả năng trên, JavaScript có thể làm Game với những engine như Phaser, Babylon, Lime; hay đơn thuần là dùng để viết code như với Unity engine (Unity engine được viết bởi C, nhưng phát triển game trên Unity thì chúng ta có thể sử dụng JavaScript làm ngôn ngữ lập trình). Rất nhiều thư viện hiện nay được viết bởi JavaScript, có thể kể đến như:

  • jQuery: một thư viện giúp thao tác, xử lý sự kiện với HTML DOM.
  • Three.js: một thư viện để tạo và hiển thị đồ họa 3D sử dụng WebGL.
  • Chart.js: một thư viện giúp xây dựng biểu đồ, trực quan hóa các dữ liệu.
  • Socket.IO: một thư viện hướng sự kiện cho các ứng dụng web thời gian thực.
  • D3.js: một thư viện giúp xử lý tài liệu dựa trên dữ liệu và tạo hình ảnh trực quan.

Việc làm JavaScript Fresher tốt nhất tại TopDev

JavaScript Developer cần học những gì?

JavaScript khá dễ học, dễ hiểu và không mất thời gian để cài đặt hay thiết lập môi trường. Tuy nhiên, JavaScript lại rất rộng, để học hết và hiểu hết được thì phải mất rất nhiều thời gian cũng như sự tìm hiểu chuyên sâu. JavaScript làm được rất nhiều thứ với nhiều công nghệ khác nhau, chính vì vậy bạn nên chọn một công nghệ cụ thể khi bắt đầu và tập trung vào nó.

Khi bắt đầu làm quen với JavaScript, hãy nắm thật vững những kiến thức cơ bản nhất: cú pháp, loại dữ liệu, khai báo biến, cấu trúc dữ liệu, các khối câu lệnh, cách viết hàm trong JS, … Các bạn có thể tự tìm hiểu theo cách gạch đầu dòng dưới đây:

  • Loại dữ liệu: string, number, boolean, null, undefned, object.
  • Cấu trúc dữ liệu: Map, Set, Array, JSON.
  • Vòng lặp: for, do…while, while, for…in, for…of.
  • Điều kiện: if…else, switch…case.
  • Xử lý ngoại lệ: try…catch…finally.
  • Hàm: arrow function, this.
  • Bất đồng bộ: Promises, async/await, seTimeout.

  Giới thiệu Fetch API trong Javascript

JavaScript được tạo ra để chạy trên trình duyệt, vì thế để debug được nó chúng ta có công cụ Chrome Dev Tools. Đây là công cụ rất hữu ích cho việc debug liên quan đến issues, memory hay performance, vì thế bạn nên tìm hiểu để sử dụng một cách hợp lý nhất.

Tuyển dụng JavaScript Developer nhiều cấp bậc đãi ngộ tốt trên TopDev

JavaScript là gì

Nguồn:blog.eduonix.com

Sau khi trang bị những kiến thức cơ bản, bạn sẽ bắt đầu lựa chọn cho mình hướng đi chuyên sâu hơn. Hãy tìm hiểu các thư viện, framework phổ biến hiện nay của JS theo định hướng của bạn.

Nếu muốn làm Frontend, hãy học ReactJS, VueJS hay jQuery, … Nếu muốn trở thành Backend Developer, hãy tìm hiểu NodeJS và framework như Express, NestJS, …. Còn nếu đam mê với lập trình di động, bạn có thể lựa chọn React Native.

Định hướng của bạn có thể trở thành Fullstack Developer, nhưng hãy bắt đầu từ một hướng trước để có thể tham gia vào các dự án cũng như giải quyết các bài toán thực tế có thể gặp phải. Theo ý kiến cá nhân mình, cần ít nhất 2 năm làm việc trong dự án cho mỗi hướng, sau đó kết hợp lại thì mới đủ yêu cầu để trở thành một Fullstack JS Developer.

Một số các framework, thư viện JavaScript phổ biến hiện nay, các bạn có thể tham khảo và chọn học:

  • Frontend: React, Vue, Angular, jQuery, Svelte, Ember, Backbone.
  • Backend: Next, Express, Gatsby, Meteor, Nest, Hapi.
  • Mobile: React Native, Native Script, PhoneGap, Ionic, Titanium…..

Kết bài

JavaScript nói không quá thì là ngôn ngữ có vai trò lớn nhất trong sự phát triển của Website, nó đã biến trình duyệt web thành nền tảng ứng dụng và giúp lập trình viên tha hồ thỏa mãn sức sáng tạo của mình trên website đó.

JavaScript Developer hiện nay và trong tương lai sắp tới với sự phát triển mạnh mẽ sẽ vẫn luôn là vị trí hot, nhu cầu cao trong thị trường IT nói chung.

Bạn có thể tham khảo những nhiệm vụ và yêu cầu của lập trình viên JavaScript thông qua hàng loạt việc làm JavaScript trên TopDev.

Hy vọng bài viết này đã mang lại cho các bạn cái nhìn tổng quan về JavaScript là gì và giúp bạn định hướng tốt hơn trong hành trình trở thành một lập trình viên JavaScript. Hẹn gặp lại các bạn trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Việc làm IT mọi cấp độ dành cho Developer, tìm hiểu ngay!

Lập Trình với Game Flappybird Python

Lập Trình với Game Flappybird Python

Bài viết được sự cho phép của tác giả Nguyễn Chí Thức

Vào những năm 2014, tựa game flappybird miễn phí bình thường trong nước và quốc tế. Game flappybird có đồ họa đơn giản dễ chơi nhưng rất khó để đạt được điểm cao. Luật chơi vô cùng đơn giản, bạn chỉ điều khiển các chú chim vượt chướng ngại vật. Mỗi lần vượt qua, bạn sẽ được cộng một điểm, nhưng nếu bạn để chú chim chạm vào các vật thể khác, thì bạn sẽ bị thua.

Bắt đầu lập trình:

Nhập các yêu cầu thư viện.

Tạo một lớp Bird.

Hàm khởi tạo.

Hàm bật sound.

Lưu ý :

Ở đây mình dùng một tập tin có âm thanh click.

Chỉ sử dụng âm thanh có đuôi là .wav với  Bitdepth là 16.

 

Hàm để vẽ các hình ảnh.

Hàm display point.

Colunm method.

Hàm run.

Lưu ý: Các bạn ghi chú vào phần chú thích . Kiểm tra xem con chim chạm cột. Mình sẽ kiểm tra xem chim có cột vào các trường hợp như sau. Và cũng tương tự như chim chạm vào tường.

Run try.

Hoàn thành

Vậy là chúng ta đã hoàn thành rồi. Nếu các bạn thấy hay thì hãy chia sẻ bài để ủng hộ mình nhé. Bạn cũng có thể tham khảo thêm các việc làm Python hoặc tin tuyển dụng Game Developer để hiểu thêm về những yêu cầu cũng như công việc nhé.

Cảm ơn các bạn đã đọc.

Ứng tuyển ngay các vị trí tuyển dụng lập trình Game lương cao trên TopDev

Bài viết gốc được đăng tải tại ucode.vn

Xem thêm:

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

Tình hình hiện tại và tương lai của IoT năm 2024

IoT

Năm 2024 đã bắt đầu, hãy cùng mình nhìn lại những gì IoT đã đạt được trong năm 2023, tương lai của ngành IoT trong năm 2024 sẽ như thế nào đây.

Rõ ràng mà nói, năm qua là một năm khó khăn cho cả thế giới, từ kinh tế, chính trị cho tới các bất ổn khác về chính trị. Cho dù gặp phải những khó khăn lớn như vậy, thị trường IoT năm 2023 (tính tới thời điểm đầu tháng 11), vẫn phát triển nhanh theo cấp số nhân.

Theo số liệu thống kê, IoT phát triển với tốc độ tăng trưởng kép hằng năm là 26,4%. Quy mô của toàn thị trường sẽ đạt 2,5 nghìn tỷ USD vào năm 2029. Gấp năm lần so với quy mô thị trường dự đoán hiện nay là 0,5 nghìn tỷ đô.

Song song với trí tuệ nhân tạo, thời điểm năm nay (2024) có phải là thời điểm tuyệt vời để đầu tư vào thị trường IoT vốn đang bị chững lại chút xíu do tình hình khó khăn chung của kinh tế toàn cầu?

1. Các động lực tăng trưởng của IoT

1.2 Linh kiện và giá nhân công

Vào năm 2017, con số thống kê của Cisco cho thấy, chỉ có khoảng 60% các dự án liên quan tới IoT thành công (tức là có thể release được sản phẩm).

Cũng vào năm đó, giá cả thiết bị phần cứng cho IoT, tiền lương nhân lực cũng ở mức khá cao so với mặt bằng thị trường.

Quay lại năm 2022, sau 5 năm, một số đột phá công nghệ đã thay đổi, giảm giá thành sản xuất cái linh kiện phần cứng phục vụ cho ngành IoT. Chi phí để triển khai dự án IoT từ đó cũng giảm xuống. Thiết bị, phần mềm, ứng dụng xuất hiện khắp mọi nơi, các thiết bị thông minh tại nhà, thiết bị thăm khác sức khoẻ tại các bệnh viện. Thiết bị IoT xuất hiện ở khắp mọi nơi với giá thành rẻ hơn rất nhiều.

Với hai động lực chính là giá thành linh kiện và chi phí nhân công giảm, dự án IoT rõ ràng có nhiều hơn các động lực để phát triển và tăng trưởng nóng trong giai đoạn 2020 tới năm 2022.

1.2 Giao tiếp 4G – 4G communication

Một thành tựu khác về mặt công nghệ là 4G. So với cách thức giao tiếp và truyền tải dữ liệu kiểu cũ, 4G đem lại tốc độ truyền tải nhanh hơn, an toàn hơn.

Tháo gỡ này về mặt truyền tải cho phép các thiết bị IoT thoải mái giao tiếp và phát triển. Ứng dụng IoT cũng không còn lo lắng về tình trạng truyền tải dữ liệu bị quá như khi còn là 3G hay các giao tiếp cũ hơn.

1.3 Artificial Intelligence và Machine Learning

Không thể phủ nhận sự phát triển của trí tuệ nhân tạo và học máy cũng là động lực to lớn cho ngành IoT phát triển hơn.

Với sự phát triển mạnh mẽ và không ngừng của AI và ML, autopilot không phải là thứ chỉ xuất hiện ở trong phim. Sự kết hợp giữa thành tự về AI, ML và IoT thực tế lại đem tới kết quả rõ ràng hơn, dễ nhìn nhận hơn. Bản thân IoT đôi khi mất đi việc làm của người tài xế, nhưng bản thân nó cũng tạo ra những việc làm khác liên quan tới công nghệ.

ứng dụng IoT

2. Tương lai của IoT

Nghành công nghiệp IoT hiện nay đang đứng giữa các điểm giao của công nghệ 5G, AI và ML. 5G cung cấp tốc độ truyền tải dữ liệu nhanh hơn 4G gấp 10 lần.

Tốc độ giao tiếp cực nhanh này cho phép các thiết bị IoT giao tiếp với nhau nhiều hơn, giao tiếp theo thời gian thực. Bản thân 5G chính là yếu tố chủ chốt thay đổi cuộc chơi cho nghành công nghiệp IoT.

Về mặt phạm vi, IoT hiện nay vượt ra khỏi nhà ở, nhà máy và các phạm vi công nghiệp khác. Một số dự án IoT đã và đang được phát triển để chống lại biến đổi khí hậu, bảo vệ môi trường sống. Đây thực sự là một điều đáng mừng.

Một số ví dụ có thể kể tới như việc United Nations Food (tổ chức nông lương thế giới), gần đây:

  • Chia sẻ dữ liệu cho nông dân về chất lượng đất canh tác.
  • Giải pháp bảo tồn nguồn nước ngọt
  • Giảm phát thải nhà kính thông qua đo lường từ các thiết bị IoT

IoTIoT những năm vừa qua đã có đóng góp đáng kể trên nhiều lĩnh vực. Nông nghiệp cũng không nằm ngoài số đó

Với tiềm năng to lớn và các điều kiện thuận lợi, ngành công nghiệp IoT đang trên đường tới đỉnh cao, lộ trình đang thẳng băng băng. Nhưng liệu có phải ngành công nghiệp IoT không có thách thức?

3. Thách thức của ngành IoT

IoT không thể hoạt động mà không có dữ liệu. Dữ liệu từ chip, sensor trực tiếp truyền tải tới trung tâm dữ liệu. Từ đây dữ liệu được phân tích, sàng lọc và sử dụng vào các mục đích khác nhau.

Việc sử dụng dữ liệu thuần tuý sẽ không có vấn đề gì nếu tính bảo mật ngày nay hiện đang chưa được xem trọng.

Từ quy mô khổng lồ như việc lưu trữ dữ liệu và phát tán cho một tổ chức khác như các tập đoàn lớn. Cho tới rò rỉ dữ liệu nhạy cảm từ camera trong nhà của một hộ cá nhân nào đó. Rõ ràng là IoT vẫn đang tồn tại điểm yếu chết người về tính bảo mật dữ liệu.

IoT
IoT đối mặt với thách thức không nhỏ từ tính an toàn, độ bảo mật

May mắn thay, blockchain có thể giải quyết vấn đề này. Bản chất của mạng blockchain khiến blockchain trở nên đáng tin cậy để sử dụng với thiết bị IoT. Mạng giao tiếp trong blockchain được sử dụng các phương thức mã hoá an toàn. Việc đánh cắp và can thiệp vào mạng blockchain trở nên khó khăn hơn rất nhiều. Độ an toàn dữ liệu từ đó cũng được đảm bảo hơn.

4. Tổng kết

Ngành IoT bản thân đối mặt với những thách thức không nhỏ về cách mà nó tác động tới con người. Bảo mật dữ liệu càng ngày cũng đang được quan tâm nhiều hơn. Tuy nhiên, không vì những hạn chế và khó khăn đó mà bản thân IoT trở nên kém sức hút.

Dự báo trong 3 năm tới, ngành IoT sẽ trở nên cực kì sôi đội. Bản thân các thiết bị IoT sẽ xuất hiện nhiều và thường xuyên hơn trong đời sống con người. Sự phát triển của trí tuệ nhân tạo, học máy và blockchain cũng là động lực to lớn cho toàn ngành IoT phát triển.

Mời anh em tham khảo tin tuyển dụng IoT Developer mới nhất tại đây nhé!

Cảm ơn anh em đã đón đọc và dành thời gian cho bài viết – Thank you for your attention – Happy conding!

Tác giả: Kiên Nguyễn

Xem thêm:

Khám phá ngay hàng loạt việc làm IT hấp dẫn trên TopDev!

Lộ trình từng bước trở thành Machine Learning Engineer

lộ trình Machine Learning Engineer

Anh em đang trông chờ, háo hức từng bước từng bước một trở thành Machine Learning Engineer?. Nếu đúng, bài viết này đích thị là dành cho anh em.

Trong bài mình sẽ liệt kê đầy đủ, tuần tự 6 bước (cũng có thể xem là 6 kỹ năng) để anh em trở thành Machine Learning Engineer đích thực. Lưu ý là 6 bước là ý kiến tổng hợp và có thể khác đi tuỳ vào trình độ, lộ trình và khả năng tiếp cận của từng anh em nhá.

Trước khi bắt đầu phân tích từng thành phần, để tui liệt kê ra trước cho anh em 6 kỹ năng cần có cho Deep Learning:

1. Kỹ năng toán – Maths Skills.

2. Kỹ năng lập trình – Programming Skills.

3. Kỹ năng xử lý dữ liệu – Data Engineering Skills.

4. Hiểu biết về học máy – Machine Learning Knowledge.

5. Hiểu biết về deep learning – Knowledge of DL Algorithms.

6. Hiểu biết về các deep learning framework – Knowledge of DL Frameworks.

Tại sao lại là Deep Learning?, rồi anh em vào mục 1 sẽ thấy ngay.

1. Deep learning, Machine Learning và Artificial Inte

Đầu tiên, sự khác nhau giữa 3 thanh niên này tóm gọn như sau:

Machine learning and deep learning are both types of AI. In short, machine learning is AI that can automatically adapt with minimal human interference. Deep learning is a subset of machine learning that uses artificial neural networks to mimic the learning process of the human brain.

Machine learning và deep learning đều là một loại của AI (trí tuệ nhân tạo). Nói ngắn gọn, machine learning là trí tuệ nhân tạo có thể tự động thích ứng với sự can thiệp tối thiểu từ con người (chủ yếu là máy làm). Còn deep learning là một tập hợp con của machine learning sử dụng mạng trí tuệ nhân tạo để huấn luyện cho máy học như con người.

Vậy từ đó ta hiểu ra, deep learning và thành phần con, nằm trong cái khái niệm rộng hơn là machine learning (học máy)

Machine Learning Engineer

Chính vì Deep learning là cái cốt lõi, nên lộ trình trở thành Machine Learning Engineer chính xác hơn phải bắt đầu từ Deep Learning skill.

2. Kỹ năng toán – Math skills

Không ngoa mà cũng giống như các meme thường có trên mạng. Machine Learning Engineer thì bước đầu tiên và phải có là kỹ năng toán học. Toán học giúp ta có thể hiểu được các thuật toán deep learning và machine learning hoạt động như thế nào?. Bao gồm 3 thành phần nhỏ:

Cùng điểm qua các hạng mục này yêu cầu gì nhé.

2.1 Xác suất và thống kê – Probability & Statistics

Cơ bản của xác suất có định lý Bayes. Định lý này sử dụng trong thuật toán Naive Bayes để phân loại dữ liệu, kế tiếp là Probability Distribution, thường được sử dụng để xác định tần suất một sự kiện có thể xảy ra. Cũng cần tìm hiểu thêm về lấy mẫu (Sampling) và kiểm tra giả thuyết (hypothesis testing)

2.2 Đại số tuyến tính – Linear Algebra

Trong đại số tuyến tính thì có hai khái niệm chính thường được sử dụng là deep learning (học sâu) và machine learning (học máy). Matrices (ma trận) và các vector được sử dụng để nhận dạng hình ảnh. Những hình ảnh mà ta muốn nhận dạng được hiểu ở dạng ma trận.

2.3 Giải tích – Calculus

Giải tích, môn học thần thánh ám ảnh từ hồi cấp 3 sẽ quay trở lại nếu như anh em dấn thân vào con đường Machine Learning Engineer.

Trong giải tích, anh em có hai cái là phép tính vi phân và phép tính tích phân. Hai ông thần này giúp ta xác định xác suất của các sự kiện. Ví dụ, trong việc tìm xác suất trong thuật toán Naive Bayes.

Trên đây chỉ là 3 subject cơ bản khuyến nghị cho anh em, còn lại anh em có thể tìm hiểu thêm các subject khác. Nói chung là càng giỏi về toán càng tốt, tiến về ML càng nhanh, chả mất vào đâu cả.

Machine Learning Engineer Chốt kèo anh em bình tĩnh, không toán là không làm được đâu

3. Kỹ năng lập trình – Programming language

Bản thân Machine Learning Engineer có từ Engineer (kỹ sư). Nếu anh em đi theo hướng nghiên cứu thì khỏi bàn đi ha. Còn theo hướng ML thì kỹ năng lập trình (programming language) là yếu tố bắt buộc để anh em có thể trở thành expert.

Có rất nhiều rất nhiều ngôn ngữ lập trình ngoài kia anh em có thể học. Trong phạm vi bài viết này xin phép được giới thiệu 4 ngôn ngữ sau:

  • Python.
  • R.
  • C.
  • Java.

Trong 4 ngôn ngữ này, Python và R là hai ngôn ngữ phù hợp nhất cho deep learning và machine learning. Mình suggest cho anh em go với Python và R. Nếu là beginner thì start với Python có vẻ là dễ thở nhất, dễ học nhất.

4. Kỹ năng xử lý dữ liệu – Data Engineering Skills

Có kiến thức về Deep learning, giỏi toán, thành thạo ngôn ngữ lập trình. Mỗi kỹ năng như một phát mài cho cây kiếm sắc bén của anh em. Nhưng giờ chém vào đâu?. Chả lẽ chém vào không khí, không, chém vào dữ liệu. Đối với anh em Machine Learning thì có dữ liệu là có tất cả. Vậy kỹ năng tiếp theo để trở thành Machine Learning Engineer là Data Engineering Skills

Kỹ năng cụ thể ở đây cần có là Data Wrangling (bóc tách dữ liệu), dịch nếu có hơi không sát tí mong anh em thông cảm, nghĩa thì như nhau. Bóc tách là biến dữ liệu thô đầu vào thành dữ liệu tinh tuý đầu ra.

4.1 Xử lý tiền dữ liệu

Machine Learning cần một lượng lớn dữ liệu để học, bước đầu tiên và tiền xử lý dữ liệu, trong Data Wrangling bao gồm các thành phần sau:

  • Cleaning – làm sạch
  • Parsing – chuyển đổi
  • Correcting – làm đúng
  • Consolidating – hợp nhất

Machine Learning Engineer Các thành phần của Data Wrangling

4.2 ETL (Extraction, Transformation, Load) – Khai thác, chuyển đổi, tải

Khai thác ở đây được hiểu là kỹ năng trích xuất dữ liệu từ các máy chủ. Chuyển đổi ở đây là chuyển đổi sang định dạng phù hợp cho bạn sử dụng. Tải ở đây được hiểu là tải các dữ liệu đã được xử lý để sử dụng trong nghiên cứu của mình.

Cuối cùng là hiểu biết về cơ sở dữ liệu

4.3 Hiểu biết về hệ cơ sở dữ liệu

Deep learning liên quan tới dữ liệu, mà dữ liệu thì không thể bảo là chỉ lưu một cục hổ lốn trong csv hay excel. Nên hiểu biết về hệ cơ sở dữ liệu cũng là điều bắt buộc anh em cần có.

Bảo là hiểu hết như ông DBA thì không cần, nhưng anh em cần có hiểu biết nhất định về SQL, NoSQL, một số hệ quản trị phổ biến như là MySQL và Oracle.

5. Hiểu biết về deep learning – các khái niệm chính

Sau khi đã nắm trong tay, có hiểu biết về từng bước để trở thành Machine Learning Engineer thì bước tiếp theo đây, không kém phần quan trọng là concepts của ML.

Một số thuật toán anh em cần thiết phải nắm cơ bản:

  • Naive Bayes.
  • Support Vector Machine.
  • K nearest Neighbour.
  • Linear Regression.
  • Logistic Regression.
  • Decision Tree.
  • Random Forest.
  • K means Clustering.
  • Hierarchical Clustering.
  • Apriori.

Các thuật toán trên đây chủ yếu chia thành 2 loại (Classification Category – phân loại) và (Clustering Category – phân nhóm). Trong phân nhóm lại chia thành hai loại nữa là phân nhóm và hồi quy (regression).

Hồi quy sử dụng để đưa ra dự đoán cho dữ liệu, trong khi phân loại chia dữ liệu thành các loại khác nhau.

6. Hiểu biết về thuật toán deep learning

Sau khi đã nắm rõ và hiểu về cách phân loại, khái niệm liên quan tới deep learning thì giờ là lúc cho thuật toán algorithm (a lờ go ri thầm). Những thứ phổ biến và thông dụng thường được sử dụng của thuật toán Deep learning là:

  • Artificial Neural Network.
  • Convolutional Neural Network.
  • Recurrent Neural Network.
  • Generative Adversarial Network.
  • Deep Belief Network.
  • Long Short Term Memory Network.

Machine Learning Engineer

Do bài viết nhắm tới việc làm rõ từng bước từng bước để trở thành Machine Learning Engineer nên mình sẽ không đi sâu vào từng thuật toán. Vả lại từng thuật toán để làm rõ được chắc phải cần ít nhất 3 bài =)).

7. Có kinh nghiệm với deep learning framework

Sau khi đã đi theo 4 bước:

  1. Hiểu vấn đề
  2. Lựa chọn thuật toán có thể giải quyết được vấn đề
  3. Tạo ra model với một hoặc nhiều thuật toán
  4. Tối ưu model để có độ chính xác tốt nhất

Để tự giải quyết cho mình các vấn đề bằng Machine Learning, giờ là lúc anh em cần tới sức mạnh của Framework. Bản thân các ML framework cũng như framework trong các lĩnh vực khác, bản thân nó hỗ trợ rất nhiều công cụ, thư viện để làm việc nhanh chóng, thuận tiện và an toàn hơn.

Dưới đây là một số ML frameworks tiêu biểu anh em có thể tìm hiểu (má líu lưỡi)

  • TensorFlow.
  • Theano.
  • scikit learn.
  • PyTorch.
  • Keras.
  • DL4J.
  • Caffe.
  • Microsoft Cognitive Toolkit.

Cùng lướt qua một số frameworks tiêu biểu để xem có gì hút hàng nha:

7.1 Tensorflow

Tensorflow là framework tiêu biểu được sử dụng rộng rãi cho ML và DL. Tensor là open source, thường dùng để tính toán số liệu bằng biểu đồ luông dữ liệu (data flow).

Machine Learning Engineer TensorFlow, vị thần trong các vị thần

7.2 Theano

Theano giúp anh em xác định, tối ưu hóa và đánh giá các phép toán. Một số thư viện nổi tiếng của nó bao gồm LASAGNE, BLOCKS và KERAS. Hẳn là anh em nếu sử dụng framework này chắc đã một lần dùng qua

Anh em có thể tham khảo tin tuyển dụng kỹ sư Machine Learning tại đây nha. Biết đâu có thể bắt đầu hoặc chuyển đổi bước ngoặt mới cho sự nghiệp của mình.

Cảm ơn anh em đã đọc bài, thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm:

Việc làm IT lương cao, đãi ngộ hấp dẫn có trên TopDev. Ứng tuyển ngay!

Bàn Về Định Nghĩa Yêu Cầu – Phần 2

định nghĩa yêu cầu phần 2

Bài viết được sự cho phép của tác giả Nguyễn Văn Trọng

Chào bà con, cũng mấy năm rồi mới ngồi lại viết. Có 2 lý do chính, một là bận, hai là hết chữ. Nhưng lý do chính là cái số 2. Trong mấy năm vừa qua mình tập trung vào việc trau dồi kỹ năng Requirement và Consultant, nôm na là tư vấn nghiệp vụ – công nghệ, và định nghĩa yêu cầu giúp khách hàng. Cũng thu được một chút ít kinh nghiệm nên nay sẽ viết trở lại. Trước mắt là Requirement Define (sâu hơn phần 1), sau đấy tới phần thiết kế và tư vấn giải pháp.

Mình nhắc lại một chút kiến thức như đã nói ở phần trước (viết cách đây 5 năm), vì cũng có nhiều bạn trẻ chưa hình dung được luồng dự án. Một dự án thông thường sẽ chạy qua các step sau.
1. Bối cảnh, mục đích, ý tưởng
2. Phân tích tài chính, được – mất và phương châm triển khai
3. Tư vấn giải pháp, chiến lược
4. Tìm đối tác (một hoặc nhiều) : 3 và 4 có thể đảo ngược tuỳ bối cảnh
5. Assessment : bao gồm business, technology, risk
6. PROJECT DEVELOPMENT

Trong [giai đoạn 6] thì sẽ có các [công đoạn] sau :

Trong bài viết này mình sẽ đi qua các mục bên dưới:
– Khái niệm
– Thành Phần
– Cách tiến hành

Khái Niệm Và Câu Hỏi Tiền Đề

Định Nghĩa Yêu Cầu – 要件定義 (RD) là công đoạn đầu trong chuỗi qui trình phát triển phần mềm, nhằm mục đích tài liệu hoá các yêu cầu về tính năng hệ thống. Gồm 3 phần chính : nghiệp vụ, chức năng và phi chức năng

RD : viết tắt của Requirement Define

Có nhiều người sẽ nhảy bổ vào phán : Thời nay người ta làm Scrum-Agile, ai còn ngồi làm mấy cái RD vớ vẩn nữa, vừa tốn thời gian, chả được tích sự gì. Cũng giống như lúc bạn đang xây nhà cấp 4, sẽ có mấy ông bà rảnh việc đi ngang xỉa xói : thời buổi nào rồi còn xây nhà cấp 4, sao không xây nhà cao tầng, biệt thự. Dám cá luôn là giao cho họ cái chuồng heo cũng chưa chắc làm nổi. Vậy nên kệ đi, mình cứ học dần, làm dần, đắp từng viên gạch một, kiên trì tới 1 ngày nào đấy thành quả thu được sẽ hơn cả sức tưởng tượng của bản thân cũng như mấy ông hàng xóm “tốt bụng”.

Vậy thử đặt câu hỏi, có cần thiết phải làm RD không (Có nghĩa là bạn đủ năng lực để làm nhưng cân nhắc có nên làm hay không, khác với việc không làm được và chọn cách tránh né). Trả lời : Cái đấy còn tuỳ. Nó không phụ thuộc vào Model phát triển phần mềm (Agile/WaterFall) như các bạn vẫn lầm tưởng, mà phụ thuộc vào mục đích và ý tưởng của khách hàng. Khi mọi thứ chưa được rõ ràng, ngay cả khách hàng cũng không biết họ muốn gì thì thường sẽ áp dụng theo cách vừa làm vừa sửa, Agile được sinh ra như một hệ quả tất yếu để tiết kiệm chi phí – thời gian, và giảm risk cho cách làm cũ theo water-fall hay V-Model. Bởi vậy nên trong trường hợp này, requirement là không cần thiết hoặc được tinh giảm tối đa ở mức có thể biểu đạt ý tưởng bằng một vài câu chữ hoặc biểu đồ đơn giản – vì còn phải sửa đi sửa lại.

Câu hỏi 2, vì sao các dự án làm với Nhật đa phần đều có Requirement Define – Design rồi mới tới Code-Test ? Lý do thì có nhiều, nhưng có 2 lý do chính : Thứ nhất là văn hoá chắc cú đã ăn sâu vào tiềm thức của người Nhật, họ rất ghét sự mất kiểm soát – thay đổi liên tục. Thứ hai là trong một dự án lớn với nhiều bên tham gia, nó không phải đơn giản như việc code 1 cái app nhỏ demo-update, mà là các hệ thống với hàng trăm người cùng làm việc đồng thời. Bởi vậy cần có in-out rõ ràng.

Câu 3 : Có nên nhận làm RD hay để khách làm.
Câu 4 : Làm sao để xác định được độ sâu cần thiết (độ sâu = độ chi tiết)
Câu 5 : Thành phần bao gồm những gì, có cần thiết phải làm hết không hay chỉ 1 phần.
Câu 6 : Yếu tố cốt lõi của một RD tốt là gì
Câu 7 : Làm sao để nâng cao năng lực

Mình sẽ viết, còn việc hiểu và giải đáp lần lượt từng câu hỏi là của các bạn.

Thành Phần

Trên đây là danh sách gần như đầy đủ các file tài liệu cần thiết trong công đoạn.
Với những application đơn giản về mặt nghiệp vụ – kỹ thuật, không quá 20MM (man-month effort) Code-Test, hoặc các system thuộc loại Renew/Migration mà không thay đổi nhiều về mặt nghiệp vụ thì chỉ cần làm một số file : Flow nghiệp vụ tổng quan, danh sách màn hình và luồng di chuyển. Còn đối với các dự án lớn, phân bổ nhiều team thì cần làm hầu như toàn bộ.

Nghiệp Vụ

Sau khi tiến hành, chúng ta sẽ có được bộ tài liệu cơ bản như này. Khi estimate các bạn cần chú ý về tỉ lệ % effort giữa Code-RD tuỳ vào độ sâu – độ rộng của tài liệu. Với hình trên thì rơi vào tầm 0.5–>0.7, tức là 10MM code thì cần 5–>7MM để RD, việc chênh lệch tuỳ vào lĩnh vực nghiệp vụ (quản lý sản xuất, tài chính – ngân hàng, bảo hiểm, quản lý nội bộ doanh nghiệp …) để điều chỉnh.

Với mỗi một loại tài liệu, cần chia làm 2 bước, bước 1 tổng quan – lấy xác nhận OK của khách trước khi tiến hành làm chi tiết hoá. Ví dụ : trước khi vẽ Flow, cần tạo 1 list danh sách tính năng hệ thống, đưa khách xem họ có bổ sung thêm bớt gì không, sau đấy mới ngồi vẽ lại sơ đồ hệ thống. Mặc dù biết là sau khi vẽ xong khách sẽ có yêu cầu thay đổi 1 đôi chỗ, nhưng chia làm 2 bước sẽ giảm thiểu thời gian re-work. Các bạn BrSE/PM cần chú ý chỗ này.

Với trường hợp hệ thống phức tạp, ở bước 1 thì ngoài file liệt kê chức năng, cần có flow hệ thống như file bên dưới để khách dễ hình dung.

Sơ đồ tổng quan hệ thống quản lý sản xuất – seisankanri

Chức Năng

Sau khi khách đã xác nhận, chúng ta tiến hành bước tiếp theo là chi tiết hoá Flow nghiệp vụ ở level [Cụm chức năng], trong đó có 3 thông tin chính : 1.Chức năng, 2. InputData, 3. OutputData. Data ở đây chưa cần tới mức table – field mà chỉ cần loại data như : thông tin khách hàng, thông tin sản phẩm, thông tin kho …

Ứng với từng nhóm chức năng, sẽ có tiếp 2 step nữa.
Step 1. Tách nhóm thành nhiều màn hình riêng lẻ và flow di chuyển. Ví dụ nhóm quản lý order bao gồm : Search Order, Order Detail, Order Update, Order Delete …
Step 2. Danh sách màn hình và detail chức năng – nhiệm vụ của màn hình.

Sau khi nhóm tất cả lại với nhau chúng ta sẽ có được bộ tài liệu về ScreenList-ScreenFlow cho toàn bộ hệ thống. Tới bước này thì mọi thứ đã gần như rõ ràng và có thể tiến hành Basic Design được rồi.

Phi Chức Năng

Phần này mọi người thường hay bỏ qua. Cũng đúng vì đa phần là làm theo thói quen hoặc khách hàng sẽ là người làm. Ví dụ qui định về tính bảo mật, tuỳ vào hệ thống để thiết lập network riêng, như admin system cần phải VPN mới access được chẳng hạn. Hoặc là điều kiện vận hành – bảo trì, cơ chế backup-revert data định kỳ hoặc khi xảy ra sự cố…

Cách Tiến Hành

Nhìn vào sơ đồ trên mọi người cũng hiểu được luồng rồi, có một chú ý ở phần phân tích tính khả thi về mặt kỹ thuật – nghiệp vụ. Người làm RD cần tỉnh táo và nhạy bén để biết được yếu tố nào cần cải tiến – thêm bớt – loại bỏ để đáp ứng được technical cũng như cost. Trong trường hợp có thể đáp ứng được nghiệp vụ – kỹ thuật nhưng phải mua library với mức giá rất cao mới làm được thì nên suggest phương án thay thế chẳng hạn. Lúc này RD đóng vai trò là Consultant.

Với chi tiết từng step cần – nên làm gì chắc mình sẽ chia sẻ trong 1 dịp khác.

Kết

Trên đây là bài viết chi tiết hơn một chút sau 5 năm lăn lộn bổ sung thêm kiến thức kể từ phần 1. Tính ra cũng chưa sâu lắm, để mình làm thêm ít năm nữa rồi viết phần 3. Cũng có khi lúc đấy người ta chả cần làm RD, 1 phát ăn Code luôn, hoặc cũng có thể không còn cần Code nữa mà sử dụng các FW-Platform No-Code, Low-Code để tiến hành …kéo thả. Có khi vậy cũng nên.

Nhưng các bạn đừng lo, làm được cái này không đói đâu. Đây là nền tảng để xây nên mọi thứ. Kể cả No-Code, muốn sinh ra 1 hệ thống kiểu vậy, hoặc để hiểu và vận hành các Platform đó cũng cần có mức độ sâu sắc về phân tích nghiệp vụ để đưa ra giải pháp. Như ví dụ từ đầu bài, kinh nghiệm xây được nhà cấp 4 sẽ giúp bạn xây được nhà cao tầng, và đừng bao giờ để tâm đến mấy lời xỉa xói từ những đứa ngay cả cái chuồng heo cũng không làm nổi.

Mời bạn tham khảo tin tuyển dụng BrSE tại đây!

Bài viết gốc được đăng tải tại kysubrse.com

Xem thêm:

Việc làm CNTT mới nhất trên TopDev

9 Câu Hỏi Phỏng Vấn Frontend Developer Có Thể Bạn Chưa Biết

Câu hỏi phỏng vấn Frontend Developer

Frontend Developer (FE Dev) là thuật ngữ để chỉ những lập trình viên phát triển ứng dụng client side. Công việc chính của FE Dev là xây dựng giao diện và trải nghiệm cho người dùng (UI và UX). Trong một dự án thông thường số lượng FE Dev sẽ nhiều hơn so với Backend Developer, vì thế hiện nay nhu cầu tuyển dụng Frontend Developer là rất lớn. Trong bài viết này, mình sẽ tổng hợp các câu hỏi thường được sử dụng nhất giúp các bạn có thể có được sự chuẩn bị tốt cho buổi phỏng vấn vị trí lập trình viên Frontend

Câu hỏi phỏng vấn Frontend Developer

Nguồn: tma.vn

Hiện nay khi làm frontend chúng ta có rất nhiều thư viện hay framework được sử dụng phổ biến như Bootstrap, jQuery, Angular, Reac, Vue, … Mỗi thư viện sẽ có cách sử dụng và đặc thù khác nhau, vì thế khi bạn phỏng vấn vào từng vị trí cụ thể sẽ có những câu hỏi khác nhau dành cho từng framework. Trong bài viết này mình sẽ không đi sâu vào câu hỏi dành cho từng thư viện trên mà sẽ chỉ đề cập đến phần nội dung kiến thức dành cho lập trình viên Frontend.

Frontend Developer cần được trang bị những kiến thức và HTML, CSS và JavaScript – đấy là những ngôn ngữ (kỹ năng) chủ đạo; ngoài ra kiến thức về UI/UX cùng một số thao tác sử dụng cơ bản phần mềm thiết kế như Photoshop hay AI cũng là cần thiết.

Chúng ta cùng bắt đầu vào các câu hỏi cụ thể nhé.

A. Kiến thức về HTML

1. Phân biệt thẻ HTML inline và block, khi nào sử dụng 2 loại này?

HTML block/inline ý chỉ cách hiển thị 1 thẻ HTML trên trình duyệt, trong đó block là dạng khối với width mặc định là 100% , height thì phụ thuộc vào nội dung bên trong, ngược lại thì inline sẽ hiển thị dạng nối tiếp nhau với width phụ thuộc vào độ dài của dữ liệu hiển thị.

Các thẻ dạng block là div, p, header, footer, table, …

Các thẻ dạng inline là span, i, b, a, br, label, button, …

Về cách sử dụng, nếu muốn các dữ liệu hiển thị trên 1 hàng thì sẽ sử dụng thẻ inline, còn nếu muốn tạo 1 khối có thể thiết lập khoảng trống giữa nội dung và đường viền thì sẽ sử dụng các thẻ block. Ngoài ra chúng ta có thể sử dụng thuộc tính display trong CSS để thiết lập hiển thị inline hay block.

2. Mô tả cấu trúc bố cục thường sử dụng của HTML

Thông thường 1 trang web sẽ có cấu trúc gồm những phần như dưới đây:

  • Header: Phần bắt đầu của web, chứa các thông tin về tiêu đề, logo, liên hệ (các thẻ meta), các link CDN css thông thường cũng được import ở đây.
  • Footer: Phần cuối cùng của trang web, thông thường sẽ chứa các thông tin liên hệ, bản quyền, tác giả hay các link liên kết.
  • Menu hay Nav: thanh điều hướng của trang. Có nhiều kiểu style menu khác nhau, phổ biến là top menu, sidebar.
  • Body: Phần thân của website, chứa các phần tử chính hiển thị lên màn hình như văn bản, hình ảnh, liên kết, form, …
  • Style: phần khai báo thuộc tính CSS sử dụng trong trang web.
  • Script: phần khai báo mã JavaScript sử dụng trong trang web.

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

3. HTML5 là gì? Sự khác biệt giữa HTML và HTML5

HTML5 là một ngôn ngữ lập trình, còn HTML đơn thuần là một ngôn ngữ đánh dấu dành cho việc hiển thị. HTML5 được phát triển trên nền tảng HTML với nhiều cải tiến và hỗ trợ giúp cho lập trình viên cũng như người sử dụng (end-user). HTML5 được phát hành từ năm 2018, có khả năng tương thích với các trang web cũ, chuẩn hóa các kỹ thuật không chính thức và twang khả năng phục vụ đa phương tiện. 

Đối với lập trình viên, HTML5 hỗ trợ tốt hơn khi thiết kế web dành cho di động, thuộc tính data được thêm vào các thẻ giúp bạn có thể tùy biến dữ liệu mà không cần sử dụng thêm đoạn xử lý JS nào khác.

Đối với người dùng đầu cuối, HTML5 giúp nâng cao trải nghiệm, xem được các hình ảnh, video đa phương tiện mà không cần cài đặt thêm các plugin khác.

  HTML5 khác HTML như thế nào?

B. Kiến thức về CSS

1. Có những cách nào để khai báo CSS, thứ tự ưu tiên giữa các cách sử dụng đó.

Có 3 cách thông thường để sử dụng CSS trên 1 trang HTML

  • Inline: đặt trực tiếp bên trong các phần tử HTML qua thuộc tính style.
  • Internal: khai báo css trong thẻ style nằm trong chính trang HTML đó. Có 3 rule sử dụng để liên kết giữa css và phần tử bao gồm: thông qua thẻ, thông qua khai báo class hoặc thông qua khai báo id.
  • External: đặt phần css này thành 1 file riêng so với file html và sử dụng thẻ link để liên kết với nhau. Cách liên kết cũng tương tự như khai báo Internal, thông qua thẻ, class và id.

Về thứ tự ưu tiên, CSS sẽ ưu tiên khai báo inline có tác dụng cao nhất, tiếp đó sẽ đến id, class và thẻ. Ngoài ra chúng ta có thể sử dụng khai báo !important để ưu tiên css mình muốn sử dụng.

2. Bạn thường dùng kỹ thuật nào để responsive một trang web

Responsive là cách thiết kế website làm sao cho các phần tử trong web có thể hiển thị một cách phù hợp trên các thiết bị với kích thước và độ phân giải khác nhau. Có một số thủ thuật (tips) hay sử dụng như sau:

  • Sử dụng percentages (%): để set width/height của nội dung hiển thị, chúng ta có thể sử dụng % giúp nó co giãn theo kích thước của màn hình. Set % cũng thường sử dụng cho việc chia khối layout.
  • Sử dụng Media Query: Media Query là 1 module giúp chúng ta xác định được device đang hiển thị, từ đó style các thành phần của web một cách hợp lý. 
  • Sử dụng max-width, min-width: cho phép đặt chiều rộng tối đa cho 1 phần tử, ngăn không cho phần tử này vượt quá phạm vi bạn set và giúp bạn giữ được bố cục layout màn hình.
  • Sử dụng Box-sizing: Box-sizing giúp chúng ta thoải mái điều chỉnh padding cho từng loại màn hình khác nhau mà không sợ ảnh hưởng đến width của phần tử.

3. Hãy giải thích các thuộc tính về vị trí (position) trong CSS

Thuộc tính vị trí (position) trong CSS có những giá trị sau:

  • Absolute: vị trí tuyệt đối cho phần tử theo thành phần bao ngoài hoặc cửa sổ trình duyệt.
  • Static: vị trí ở trạng thái mặc đinh của phần tử (trường hợp này thì các thuộc tính top, bottom, left, right đều không có hiệu lực).
  • Relative: vị trí tương đối so với vị trí mặc định.
  • Fixed: định vị trí theo màn hình và luôn cố định ở 1 vị trí trên viewport.
  • Sticky: vị trí của phần tử được xác định khi người dùng sử dụng thanh cuộn.
  Thành thạo kỹ năng CSS của bạn với bộ code cực chất
  3 Cách Làm Border Gradient Trong CSS Mà Bạn Nên Biết

C. Kiến thức về JavaScript

1. Liệt kê 1 số function thao tác với DOM bạn hay sử dụng

Một số thao tác DOM cơ bản thường sử dụng:

  • getElementById: trả về phần tử có thuộc tính ID là giá trị được chỉ định.
  • getElementsByClassName: trả về tập hợp các phần ử trong trang có thuộc tính class được chỉ định.
  • querySelector: trả về phần tử đầu tiên trong tập hợp các kết quả được tìm thấy bởi CSS selector được chỉ định. 
  • addEventListener / removeEventListener: thêm / xóa sự kiện hay hành động cho 1 phần tử HTML.
  • appendchild / removechild: thêm / xóa 1 DOM Node vào DOM Tree.

2. BOM là gì? Các loại BOM hay dùng.

BOM viết tắt của Brower Object Model là những đối tượng liên quan đến trình duyệt browser. Có 1 số loại BOM hay dùng như:

  • Window: đối tượng toàn cục cấp cao nhất, thường sử dụng để lấy kích thước trình duyệt (window.innerHeight), mở cửa sổ mới (window.open) hoặc đóng (window.close), di chuyển (window.moveTo), … Các BOM còn lại dưới đây các bạn đều có thể sử dụng như 1 thuộc tính của Window (ví dụ Window.Screen).
  • Screen: lấy width, height, color depth hay pixel depth của màn hình.
  • Location: thao tác với url của trình duyệt như: tải lại (reload), replace (ghi đè), load trang mới (assign).
  • History: thao tác với lịch sử web, trở về trang trước hoặc tới trang tiếp theo, …
  • Navigator: lấy thông tin ngôn ngữ, hệ điều hành, version của client và trình duyệt.
  • Cookies: thao tác với Cookies của trình duyệt.

3. Cơ chế bất đồng bộ trong JavaScript

JavaScript là 1 ngôn ngữ Single thread (luồng đơn), tức là nó chỉ có 1 thread duy nhất. Điều đó có nghĩa là các câu lệnh được thực hiện 1 cách tuần tự theo thời gian, xong cái trước mới bắt đầu thực hiện cái sau. Cơ chế bất đồng bộ sinh ra để khắc phục việc JavaScript không hỗ trợ multi-thread bằng cách bắt đầu thực hiện cái sau ngay cả khi cái trước chưa hoàn thành.

Trong JS, chúng ta sử dụng Callback, Promise hoặc Async/Await để thực hiện bất đồng bộ. Lưu ý là Promise được thêm vào trong ES6, còn Async/Await chỉ có mặt trong phiên bản ES7 về sau. Bài toán chúng ta hay sử dụng Async/Await nhất là khi cần lấy dữ liệu từ server thông qua API, lúc này sẽ cần chờ đợi phản hồi từ server trả về; và đấy chính là một yêu cầu HTTP không đồng bộ.

Kết bài

Trên đây là tổng hợp của mình về một số câu hỏi phỏng vấn thường gặp cho vị trí FrontEnd Developer. Còn rất nhiều câu hỏi khác mà bạn có thể gặp, vì thế hãy trang bị cho mình đầy đủ các kiến thức liên quan từ HTML, CSS hay JS, nó sẽ giúp bạn tự tin để có thể pass được vị trí lập trình viên mà bạn mong muốn. Chúc các bạn thành công và hẹn gặp lại các bạn ở các bài viết sau của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Tìm việc làm IT mới nhất trên TopDev

Khắc phục tình trạng VPN WireGuard bị treo

Khắc phục tình trạng VPN WireGuard bị treo

Bài viết được sự cho phép của tác giả Nguyễn Hồng Quân

Trước đây tôi có viết bài Dựng mạng VPN với WireGuard . Sau một thời gian sử dụng, để ý thấy do các máy con (client) của tôi thỉnh thoảng xảy ra tình trạng treo WireGuard: từ các máy khác không ping đến nó được. Vì vậy tôi lại tiếp tục đề tài WireGuard này, giới thiệu một cách khắc phục.

Trước tiên, xin nêu vài nguyên nhân khiến VPN WireGuard bị treo:

  • WireGuard của năm 2018 (lúc tôi viết bài trên) được nạp lên hệ thống dưới dạng DKMS. Như ta đã biết, khác với các giải pháp VPN thông thường, WireGuard chạy dưới dạng một driver/module của nhân Linux. Nhưng khi được phân phối ở dạng DKMS, mỗi lần máy được nâng cấp nhân mới thì module này phải trải qua quá trình build lại từ mã nguồn bên ngoài. Điều này đôi khi gây ra tình trạng, phiên bản cũ vẫn còn lơ lửng trong RAM và phiên bản mới chưa thế chân vào được, thế là WireGuard bị treo. Từ Linux 5.6 trở đi thì WireGuard đã được tích hợp vào nhân, không còn ở dạng DKMS nữa nên tình trạng này không còn.
  • Network interface của WireGuard (ví dụ wg0) được khởi tạo khi máy vẫn chưa thực sự kết nối với Internet (sai thứ tự), việc kết nối với server VPN không thành công, khiến việc cấu hình không hoàn tất. Hoặc khi đang chạy ngon bỗng dưng Internet bị rớt, mất luôn mối kết nối với server. Điều này hay xảy ra với các máy con (client) vì các máy này không được đảm bảo luôn có Internet, thậm chí là không phải lúc nào cũng có điện.

Dựa vào các nguyên nhân trên thì có hai bước phải làm để trị dứt điểm tình trạng WireGuard treo.

  1. Nâng cấp hệ điều hành. Nếu máy của bạn dùng Ubuntu thì nâng cấp lên Ubuntu 20.04 là vừa đủ. Mặc dù Ubuntu 20.04 mới chỉ có Linux 5.4 thôi nhưng đội ngũ tác giả đã “backport” lại sự tích hợp WireGuard của Linux 5.6 vào. Sau khi nâng cấp, nhớ gỡ gói wireguard-dkms ra.
  2. Không dùng script wg-quick để khởi tạo network interface cho WireGuard nữa, mà chuyển việc đó cho các phần mềm chuyên quản lý mạng như systemd-networkd, NetworkManager v.v… để đảm bảo việc khởi tạo network interface cho WireGuard diễn ra sau khi đã kết nối Internet. Dưới đây tôi sẽ trình bày cách chuyển đổi khi bạn đang có WireGuard chạy với wg-quick rồi.

Bài chỉ dẫn này dành cho systemd-networkd trên Ubuntu. Tôi viết cho Ubuntu vì đây là hệ điểu hành mà các máy con của tôi dùng. Ngoài systemd-networkd, tôi cũng đã thử nghiệm NetworkManager, nhưng trên Ubuntu 20.04, NetworkManager dường như có bug khiến thông số “persistent-keepalive” của WireGuard không được tôn trọng, nên tôi không viết về NetworkManager nữa.

Ta sẽ bắt đầu bằng cách chỉnh sửa cấu hình mạng trong Netplan. Netplan là một phần mềm riêng của Ubuntu để giúp việc cấu hình mạng đơn giản hơn. Bản thân Netplan không phải là phần mềm quản lý mạng, tức là nó không cùng thể loại với systemd-networkd, NetworkManager. Nó chỉ giúp việc sinh ra các file cấu hình cho systemd-networkd, NetworkManager bằng một file đầu vào đơn giản hơn.

Tuyển dụng IT mọi cấp độ, lương cao, đãi ngộ hấp dẫn tại đây!

Bây giờ hãy mở file cấu hình Netplan của bạn, trong /etc/netplan. Ví dụ trên máy tôi thì là file /etc/netplan/wired.yml. Ban đầu nó có nội dung tương tự thế này (máy này chỉ có một cổng mạng dây (Ethernet) là enp1s0):

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: true
      optional: true

Giả sử mạng LAN ảo, do WireGuard tạo ra, của bạn là 192.168.2.0/24, và máy con có địa chỉ trong mạng LAN ảo này là 192.168.2.100. Thêm vào file đó cấu hình cho WireGuard như sau:

  tunnels:
    wg0:
      mode: wireguard
      key: private_key_cua_may_con
      addresses: [192.168.2.100/24]
      peers:
        - keys:
            public: public_key_cua_server
          allowed-ips: [192.168.2.0/24]
          keepalive: 25
          endpoint: ip_cua_server:51820

Lưu ý, chữ tunnels thụt lề cùng cấp với ethernets.

Ta sẽ tắt tính năng tự khởi động service wg-quick đi, để tránh nó tranh chấp với systemd-networkd:

sudo systemctl disable wg-quick@wg0.service

Nếu bạn đang không truy cập từ xa vào máy con qua ngả VPN này thì nó thể tắt nó luôn bằng lệnh:

sudo systemctl disable --now wg-quick@wg0.service

Tiếp đến, yêu cầu Netplan sinh ra cấu hình mới cho systemd-networkd và làm các bước cần thiết để systemd-networkd tạo mới lại mạng theo chỉ dẫn trong cấu hình này:

sudo netplan apply

Ta có thể kiểm tra wg0 có đang được tạo ra và quản lý bởi systemd-networkd bằng cách:

$ networkctl
IDX LINK   TYPE      OPERATIONAL SETUP      
  1 lo     loopback  carrier     unmanaged  
  2 enp1s0 ether     routable    configured 
  3 wg0    wireguard routable    configured

Nhớ ping thử từ máy khác xem VPN có hoạt động thật không. Sau đó bạn có thể xóa file /etc/wireguard/wg0.conf đi được rồi.

Thế là xong, bây giờ ta có thể yên tâm WireGuard không còn bị treo nữa. Nhân tiện xin khoe hình ảnh trang nội bộ của AgriConnect để theo dõi trạng thái online/offline của các máy đặt tại trang trại khách hàng, cũng như bot Telegram cảnh báo khi có máy bị offline:

AgriConnect Status

Status bot

Bài viết gốc được đăng tải tại quan.hoabinh.vn
Xem thêm:

Tham khảo ngay việc làm IT mọi cấp độ dành cho mọi Developer trên TopDev!

Kỹ Sư Cầu Nối (BrSE) Là Gì? BrSE Cần Học Những Gì?

Kỹ sư cầu nối (BrSE) là gì

Kỹ sư cầu nối là gì? BrSE là gì? Ngày càng nhiều tin tuyển dụng BrSE, Kỹ sư cầu nối xuất hiện. Liệu rằng đây là vị trí liên quan đến “cầu, đường”? Con đường sự nghiệp của Kỹ sư cầu nối như thế nào? Cùng mình giải đáp những câu hỏi này bằng thông tin bên dưới.

Kỹ sư cầu nối (BrSE) là gì?

Kỹ sư cầu nối hay BrSE (Bridge Software Engineer) là người có trách nhiệm kết nối công ty với khách hàng. Họ giúp team thực hiện dự án hiểu rõ mục tiêu, yêu cầu của khách hàng, đồng thời giúp khách hàng hiểu về quá trình phát triển sản phẩm của team. Từ đó, đảm bảo việc hai bên hiểu nhau, tiến triển của dự án diễn ra thuận lợi và đạt hiệu quả.

Để làm được điều này, kỹ sư cầu nối phải luôn theo sát tiến độ dự án, từ giai đoạn nhận yêu cầu đến khi bàn giao sản phẩm. 

kỹ sư cầu nối brse là gì

Hiện nay, ngày càng nhiều doanh nghiệp phần mềm của Nhật Bản lựa chọn Việt Nam là nơi phát triển kinh doanh với nguồn nhân lực chất lượng cao. Vì vậy, nhu cầu tuyển dụng Kỹ sư cầu nối tiếng Nhật lại ngày càng “nóng”. Theo đó, chức danh Kỹ sư cầu nối hay BrSE được sử dụng phổ biến cho thị trường Nhật Bản và có lẽ cũng được tạo ra từ đây.

Với thị trường Âu-Mỹ, BrSE sẽ được thay thế bằng DM – Delivery Manager. Đây cũng là câu trả lời cho thắc mắc “Có phải kỹ sư cầu nối chỉ làm cho các công ty Nhật?”.  Thực tế, nhu cầu tuyển dụng kỹ sư cầu nối tiếng Nhật tại Việt Nam cao. Song song với đó vẫn có kỹ sư cầu nối sử dụng ngôn ngữ khác nhưng với số lượng ít.

Công việc của Kỹ sư cầu nối là gì?

Công việc mỗi ngày của một kỹ sư cầu nối còn tùy thuộc vào lĩnh vực, quy mô kinh doanh của doanh nghiệp. Nhưng nhìn chung, ta có thể tóm gọn bằng những đầu việc dưới đây:

  • Quản lý và xử lý email, trao đổi với khách hàng.
  • Lên kế hoạch công việc cho từng ngày và theo đó thực hiện.
  • Đại diện khách hàng trả lời Q&A cho team.
  • Báo cáo công việc, quy trình, tiến triển của dự án cho khách hàng.

Có thể thấy, nhiệm vụ của BrSE là sự luân phiên cập nhật tình hình cho team nội bộ và khách hàng để đảm bảo sự thống nhất giữa hai bên. 

công việc của BrSE

Mặt khác, công việc của BrSE còn thay đổi theo từng giai đoạn của dự án. Cụ thể:

  • Bắt đầu dự án: nghiên cứu kỹ thuật, lập kế hoạch và sẵn sàng triển khai.
  • Trong quá trình thực hiện dự án: giám sát và quản lí dự án. Có thể linh hoạt thay đổi chiến lược và phương pháp để nâng cao năng suất và chất lượng dự án. 
  • Cuối dự án: xem xét và kiểm tra sản phẩm trước khi bàn giao cho khách hàng.

Kỹ năng cần có của một BrSE

Ngoại ngữ

Để hiểu chính xác thông tin được truyền tải cũng như giao tiếp trôi chảy, Kỹ sư cầu nối tiếng Nhật ít nhất cần chứng chỉ N2. Ngoài ra, tiếng Anh sẽ giúp bạn tự học từ các nguồn tài liệu trên mạng, song song đó bạn có thể tiếp cận được khách hàng và thị trường nước ngoài.

Nếu bạn hỏi “Không giỏi ngoại ngữ có làm BrSE được không?” Câu trả lời là không – khá phũ nhỉ! Tuy nhiên, đây là thực tế. Bạn là “cầu nối” mà bạn không hiểu khách hàng nói gì hoặc hiểu sai thì hậu quả sẽ như thế nào? Đặc biệt đối với thị trường Nhật, CV của bạn nên bao gồm chứng chỉ N2 trở lên hoặc bạn sẽ bị loại.

Chuyên môn (lập trình)

Nếu vị trí bạn làm chỉ thiên về phiên dịch thì bạn chưa cần học code. Tuy nhiên, để có thể bao show cả dự án từ lúc bắt đầu đến lúc kết thúc với nhiều vấn đề kỹ thuật khó nhằn, bạn cần hiểu code và biết code. Ngoài ra, nhiều công ty cũng đòi hỏi ứng viên biết code cho vị trí Kỹ sư cầu nối.

Khả năng giao tiếp hiệu quả

Có thể nói đây là một kỹ năng không thể thiếu. Bạn là người đảm bảo truyền đạt thông tin một cách chính xác, cũng như giải quyết các xung đột trong dự án. Việc trau dồi tốt kỹ năng giao tiếp hiệu quả sẽ giúp bạn làm tròn vai trò kết nối của mình. 

Khả năng tự học

Không riêng BrSE mà hầu như tất cả các nghề đều cần tinh thần tự học cao. Có vậy thì bạn mới có thể theo nghề, liên tục phát triển và nâng cao kỹ năng nghề nghiệp của bạn được. 

Riêng về Kỹ sư cầu nối, mỗi dự án sẽ dùng một công nghệ, ngôn ngữ khác nhau. Nên việc tự học là vô cùng quan trọng. Bạn có thể học qua Google, học qua tài liệu, học từ những người đi trước, học từ cộng đồng chuyên môn.

Những tố chất và kỹ năng mềm khác

Kỹ năng làm việc nhóm, kỹ năng giải quyết vấn đề phối hợp với sự điềm tĩnh, trách nhiệm cao, cốt yếu lại vẫn giúp bạn giải quyết thỏa đáng những vấn đề phát sinh. Vừa bảo vệ “team nhà” và bảo vệ khách hàng.

BrSE cần học những gì

Có nên đi theo con đường Kỹ sư cầu nối?

Có thể thấy yêu cầu từ một Kỹ sư cầu nối là khá cao với nhiều kỹ năng quan trọng. Ngoài ra, để có thể làm việc độc lập với mức lương đáng mơ ước thì bạn cần ít nhất 2 năm để học hỏi và rèn luyện. Phải thật kiên nhẫn thì bạn mới có thể thành công trên con đường trở thành Kỹ sư cầu nối. 

Mặt khác, nhiều cơ hội sẽ đến với bạn khi theo nghề

  • Thu nhập cao, với những BrSE từ 2 năm kinh nghiệm. Điều này là hiển nhiên vì bạn vừa phải biết code vừa phải giỏi ngoại ngữ cơ mà.
  • Cơ hội định cư tại nước ngoài.
  • Được làm việc trực tiếp với nhiều khách hàng khác nhau từ đó mở rộng mối quan hệ và học hỏi tư duy kinh doanh từ họ.

Từ những khó khăn, cơ hội, yêu cầu trên. Bạn hãy xác định xem bản thân có thích, có cảm thấy thú vị không. Khi đã có mục tiêu rồi thì bắt tay vào rèn luyện thôi!

BrSE cần học những gì?

Đơn giản thôi! À không hẳn đơn giản =)). Hai yếu tố quan trọng của một BrSE là ngoại ngữ và kỹ thuật (code). Bạn cứ theo đó mà học tập và rèn luyện.

Trường hợp bạn đang và đã biết code rồi. Bạn là dân kỹ thuật và muốn trở thành BrSE, hãy học ngoại ngữ. Tiếng Nhật của bạn nên ở mức độ giao tiếp trôi chảy hoặc chứng chỉ đo đếm tối thiểu là N2.

Trường hợp bạn là dân ngoại ngữ muốn đánh hướng sang BrSE, hãy bắt đầu học code khoảng 1 năm (“khoảng” thôi, sớm hay muộn hơn là do khả năng của bạn). Song song với đó bạn nên bắt đầu với công việc của BA (Business Analyst) hoặc tester, để ứng dụng kiến thức kỹ thuật cũng như làm quen với quy trình sản xuất phần mềm.

Đến đây thì chắc bạn cũng hình đung được Kỹ sư cầu nối là gì rồi, cũng như những được mất nếu theo ngành. Nếu bạn muốn hiểu hơn về nhu cầu thị trường hiện tại cho vị trí này như thế nào? Những yêu cầu và nhiệm vụ của một BrSE ở từng công ty sao? Mời bạn tham khảo tin tuyển dụng BrSE trên TopDev nhé!

Xem thêm:

Tìm việc làm IT lương cao, đãi ngộ hấp dẫn trên TopDev

Python là gì? Tổng hợp kiến thức cho người mới bắt đầu

python la gi

Nhắc đến ngôn ngữ lập trình phổ biến nhất thì Python luôn luôn được xếp trong top đầu trong hầu hết các bảng xếp hạng. Với sự phát triển của khoa học dữ liệu hiện nay, Python lại càng được ưa chuộng hơn nhờ tốc độ xử lý dữ liệu của mình. Bài viết hôm nay mình sẽ cùng các bạn tìm hiểu xem Python là gì?các bước để tự học lập trình Python nhé.

Python Là Gì? Tổng hợp kiến thứ cho người mới bắt đầu
Python Là Gì? Tổng hợp kiến thứ cho người mới bắt đầu

Python là gì?

Python là một ngôn ngữ lập trình bậc cao, mã nguồn mở và đa nền tảng. Python được sử dụng rộng rãi để phát triển các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML).

Python là một ngôn ngữ lập trình mà máy tính có thể hiểu và thực thi trực tiếp mà không cần phải biên dịch trước. Nó được thiết kế để dễ đọc và dễ viết, với cú pháp đơn giản và rõ ràng.

Python được Guido van Rossum giới thiệu vào năm 1991 và đã trải qua 3 giai đoạn phát triển khác nhau tương ứng với các version, mới nhất hiện nay là Python version 3x (3.12.3 vào 9 tháng 4 2024). Python có cú pháp rõ ràng và ngắn gọn, giúp cho việc học và sử dụng ngôn ngữ này trở nên dễ dàng.

Video giới thiệu Python từ W3school:

Tại sao lại chọn ngôn ngữ Python?

Dưới đây là bảng xếp hạng các ngôn ngữ lập trình phổ biến nhất năm 2024, được đăng tải trên trang twitter chính thức của Python Developer:

Python - ngôn ngữ được sử dụng nhiều nhất thế giới
Python – ngôn ngữ được sử dụng nhiều nhất thế giới

Nguồn: https://x.com/Python_Dv

Ta có thể thấy, Python là ngôn ngữ lập trình được sử dụng nhiều nhất thế giới hiện nay. Vậy tại sao các lập trình viên lại yêu thích ngôn ngữ này? Sau đây là bảy lý do khiến nhiều programmer sử dụng Python:

Tại sao Python được sử dụng phổ biến?
Tại sao Python được sử dụng phổ biến?

  1. Cú pháp đơn giản và dễ đọc: Cú pháp của Python rất giống với ngôn ngữ tiếng Anh tự nhiên, dễ học và dễ đọc, giúp lập trình viên tập trung vào giải quyết vấn đề hơn là việc ghi nhớ cú pháp phức tạp.
  2. Đa dụng: Python có thể được sử dụng trong nhiều lĩnh vực khác nhau như phát triển web, khoa học dữ liệu, trí tuệ nhân tạo, tự động hóa, phân tích dữ liệu, và nhiều ứng dụng khác.
  3. Thư viện phong phú: Python có một kho thư viện đồ sộ, hỗ trợ nhiều tác vụ khác nhau. Các thư viện như NumPy, Pandas, TensorFlow, và Django giúp lập trình viên tiết kiệm thời gian và công sức khi phát triển các ứng dụng phức tạp.
  4. Cộng đồng lớn mạnh: Python có một cộng đồng lập trình viên rộng lớn và năng động, cung cấp nhiều tài liệu, hướng dẫn, và hỗ trợ qua các diễn đàn, nhóm thảo luận và các khóa học trực tuyến.
  5. Đa nền tảng: Python có thể chạy trên nhiều hệ điều hành khác nhau như Windows, macOS, Linux, Raspberry Pi,… giúp cho việc phát triển và triển khai ứng dụng trở nên dễ dàng.
  6. Khả năng mở rộng và tích hợp tốt: Python có thể dễ dàng tích hợp với các ngôn ngữ lập trình khác và các công nghệ hiện có, giúp nó trở thành một lựa chọn lý tưởng cho nhiều dự án khác nhau.
  7. Hỗ trợ từ các tổ chức lớn: Nhiều công ty và tổ chức lớn như Google, Facebook, NASA sử dụng Python và đóng góp vào việc phát triển ngôn ngữ này, làm tăng uy tín và sự tin cậy của nó.
  Biến toàn cục (global), biến cục bộ (local), biến nonlocal trong Python

Đặc điểm của Python

Python được thiết kế với tư tưởng giúp người học dễ đọc, dễ hiểu và dễ nhớ; vì thế ngôn ngữ Python có hình thức rất clear, cấu trúc rõ ràng, thuận tiện cho người mới học. Cấu trúc của Python cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu, nói cách khác thì so với các ngôn ngữ lập trình khác, chúng ta có thể sử dụng ít dòng code hơn để viết ra một chương trình trong Python.

Ban đầu, Python được phát triển để chạy trên nền Unix, vì thế nó là mã nguồn mở. Sau này qua thời gian phát triển, Python mở rộng và hiện nay đã hỗ trợ hầu hết các nền tảng khác như Window hay MacOS. 

Python sử dụng một trình thông dịch để chạy mã. Khi bạn viết mã Python, bạn không cần phải biên dịch nó thành mã máy trước khi chạy. Thay vào đó, trình thông dịch sẽ đọc và thực thi mã của bạn trực tiếp, từng dòng một

Python là một ngôn ngữ lập trình đa mẫu hình, nó hỗ trợ hoàn toàn mẫu lập trình hướng đối tượng và lập trình cấu trúc; ngoài ra về mặt tính năng, Python cũng hỗ trợ lập trình hàm và lập trình hướng khía cạnh. Nhờ vậy mà Python có thể làm được rất nhiều thứ, sử dụng trong nhiều lĩnh vực khác nhau.

Python có sẵn các cấu trúc dữ liệu mạnh mẽ như list, dictionary, tuple, giúp bạn dễ dàng xử lý và lưu trữ dữ liệu. Ngoài ra bạn không cần phải khai báo kiểu dữ liệu cho các biến, Python sẽ tự động xác định kiểu dữ liệu dựa trên giá trị của biến.

  Tuple Python là gì? Tìm hiểu về tuple python

Triết lý thiết kế Python?

Triết lý thiết kế của Python nằm trong câu châm ngôn: “chỉ nên có một và tốt nhất là chỉ một cách rõ ràng để làm việc này”. Thay vì việc tích hợp tất cả các tính năng vào phần cốt lõi, Python được thiết kế để dễ dàng mở rộng bằng các module, đồng thời trình thông dịch của Python cũng dễ dàng được mở rộng.

Nếu so về tốc độ độc lập, Python sẽ chậm hơn Java hay C, nhưng nếu bạn cần tốc độ, các bạn có thể chuyển các hàm đó sang các module mở rộng viết bằng C. Phần lõi của Python luôn hướng đến những cú pháp đơn giản, gọn gàng và sẽ luôn chứa chỉ một lời giải rõ ràng nhất cho bài toán của bạn.

Tham khảo việc làm python Hồ Chí Minh lương cao

triết lý thiết kế Python

Nguồn:d3sujgifhk94se.cloudfront.net

10 ứng dụng tuyệt vời của Python

10 ứng dụng tuyệt vời của Python
10 ứng dụng tuyệt vời của Python

Phát triển Web

Python là một ngôn ngữ phổ biến trong phát triển web nhờ vào các framework mạnh mẽ như Django và Flask. Django, với triết lý “bao gồm mọi thứ bạn cần,” giúp các nhà phát triển xây dựng các trang web phức tạp chỉ trong thời gian ngắn. Flask, ngược lại, linh hoạt và nhẹ, phù hợp cho các dự án nhỏ hơn hoặc các ứng dụng cần cấu trúc tùy biến.

Khoa học Dữ liệu và Phân tích Dữ liệu

Python là công cụ chính cho các nhà khoa học dữ liệu. Thư viện Pandas cung cấp các công cụ mạnh mẽ để thao tác và phân tích dữ liệu. NumPy cho phép thực hiện các tính toán số học với hiệu suất cao. Matplotlib và Seaborn giúp tạo ra các biểu đồ đẹp mắt và dễ hiểu. Các nhà khoa học dữ liệu có thể dễ dàng làm việc với các tập dữ liệu lớn, thực hiện các phân tích phức tạp và trực quan hóa kết quả một cách sinh động.

Trí tuệ Nhân tạo và Học máy

Python là ngôn ngữ hàng đầu cho trí tuệ nhân tạo và học máy. TensorFlow và Keras giúp xây dựng các mô hình học sâu (deep learning) mạnh mẽ. PyTorch nổi bật với tính linh hoạt và dễ sử dụng, là lựa chọn ưa thích của nhiều nhà nghiên cứu. Scikit-learn cung cấp các công cụ đơn giản nhưng hiệu quả để thực hiện các thuật toán học máy truyền thống. Python giúp biến những ý tưởng phức tạp thành hiện thực với ít dòng mã hơn.

Tự động hóa và Scripting

Python là ngôn ngữ lý tưởng cho tự động hóa các tác vụ hàng ngày. Bằng cách viết các script đơn giản, bạn có thể tự động hóa mọi thứ từ việc quản lý hệ thống, xử lý tệp, đến gửi email hàng loạt. Các công cụ như Selenium cũng giúp tự động hóa việc kiểm thử các ứng dụng web.

Phát triển Game

Pygame là thư viện nổi tiếng giúp phát triển game đơn giản với Python. Nó cung cấp các công cụ để xử lý đồ họa, âm thanh và tương tác người dùng. Pygame không chỉ là một cách tuyệt vời để học lập trình mà còn để hiện thực hóa các ý tưởng game sáng tạo.

Ứng dụng Desktop

Python cũng mạnh mẽ trong phát triển ứng dụng desktop. Thư viện Tkinter giúp tạo giao diện người dùng đơn giản. PyQt và Kivy cung cấp các công cụ để xây dựng các ứng dụng phức tạp và đa nền tảng. Bạn có thể phát triển các ứng dụng từ trình quản lý công việc đến phần mềm đồ họa chuyên nghiệp.

Mạng và Bảo mật

Python là công cụ đắc lực trong lĩnh vực mạng và bảo mật. Bạn có thể viết các script để phân tích gói tin, kiểm thử bảo mật, hoặc thậm chí phát triển các công cụ bảo mật của riêng bạn. Thư viện như Scapy giúp bạn làm việc với mạng một cách dễ dàng.

Internet of Things (IoT)

Python phổ biến trong phát triển các ứng dụng IoT, đặc biệt là với Raspberry Pi. Bạn có thể dễ dàng viết mã để điều khiển các cảm biến, thiết bị và thu thập dữ liệu từ môi trường. Python giúp hiện thực hóa các dự án IoT từ những ý tưởng sáng tạo nhất.

Xử lý Hình ảnh và Video

OpenCV là thư viện nổi tiếng cho xử lý hình ảnh và video trong Python. Nó cho phép bạn thực hiện các tác vụ từ nhận diện khuôn mặt, theo dõi đối tượng, đến xử lý video thời gian thực. Python giúp bạn tạo ra các ứng dụng xử lý hình ảnh mạnh mẽ và hiệu quả.

Xử lý hình ảnh bằng Python

Khoa học và Nghiên cứu

Python là công cụ không thể thiếu trong nghiên cứu khoa học. Các nhà nghiên cứu sử dụng Python để phân tích dữ liệu trong các lĩnh vực như sinh học, vật lý, hóa học. Thư viện như SciPy và SymPy hỗ trợ các tính toán khoa học và mô phỏng phức tạp, giúp các nhà khoa học tập trung vào nghiên cứu của mình mà không phải lo lắng về công cụ lập trình.

Những thư viện và framework Python bạn nên biết

Thư viện Python

  • Matplotlib: thư viện giúp hiển thị dữ liệu dưới dạng đồ họa (2D và 3D) cho các ứng dụng khoa học máy tính
  • Pandas: thư viện giúp đọc, ghi, xử lý dữ liệu cho các tác vụ phân tích dữ liệu và machine learning
  • NumPy: thư viện giúp thực hiện các phép toán đại số tuyến tính
  • Requests: thư viện cung cấp các hàm hữu ích cho việc phát triển Web
  • OpenCV: thư viện cho các tác vụ liên quan đến xử lý ảnh
  • Keras: thư viện mạng Neural cho việc xử lý dữ liệu

 Framework Python

Python Frameworks
Framework Python phổ biến nhất

  • Django: framework fullstack phát triển ứng dụng Web trên quy mô lớn
  • Flask: framework micro để phát triển các ứng dụng Web nhỏ
  • TurboGears: framework phát triển Web
  • Apache MXNet: framework xây dựng các ứng dụng Deep Learning
  • Pytorch: framework xây dựng dựa trên thư viện Torch giúp xây dựng  các ứng dụng NLP, xử lý ảnh, …

Tuyển dụng python Hà Nội mới nhất, tham khảo ngay!

Các bước để bắt đầu tự học Python

Như đã đề cập ở trên, Python là một ngôn ngữ lập trình dễ học và gần gũi với lập trình viên. Python dễ học nhưng lại có thể làm được rất nhiều thứ, vì thế trước khi bắt đầu bước vào thế giới Python, hãy lựa chọn cho mình hướng phát triển sau này.

Nếu muốn học Python để làm web, hãy tìm hiểu các framework như Django hay Flask; nếu muốn trở thành một Data Analyst, hãy tìm hiểu các thư viện phân tích dữ liệu sẵn có của Python.

Tiếp theo, bạn hãy bắt đầu bằng những project nhỏ để có thể training cú pháp, khái niệm, câu lệnh cơ bản của Python. Python cũng có hầu hết các kiểu dữ liệu cơ bản, các function trong các ngôn ngữ lập trình khác, dù vậy thì cách sử dụng, các case study tất nhiên sẽ khác nhau phụ thuộc vào từng bài toán mà bạn gặp phải.

Vì thế hãy luyện tập bằng cách giải quyết các bài toán lập trình bằng các project nhỏ, chúng sẽ giúp bạn không mất thời gian khi vào thực tế các project lớn hơn của bạn hay khách hàng.

Tập trung vào tìm hiểu các thư viện, module trong Python. Có thể nói mỗi thư viện của Python là một tập hợp các function xử lý hầu hết các bài toán trong một lĩnh vực nhất định – đấy cũng là điểm mạnh giúp Python khác biệt so với các ngôn ngữ khác. Vì vậy, việc nắm bắt, hiểu rõ các function trong một thư viện là điều bắt buộc nếu bạn muốn làm việc với Python.

Chẳng hạn nếu bạn sử dụng thư viện OpenCV để xử lý ảnh trong Python, gần như tất cả các giải thuật về xử lý ảnh đã được tích hợp trong đó, bạn chỉ cần gọi hàm, truyền tham số và sử dụng. Hiểu đúng về giải thuật cũng như tham số truyền vào sẽ giúp bạn sử dụng đúng và hiệu quả để giải quyết bài toán của mình.

Kết bài

Với Python, bạn có thể làm được tất cả mọi thứ – đây là câu mô tả không hề quá khi nói về ngôn ngữ lập trình này. Hy vọng bài viết này đã mang lại cho các bạn những thông tin hữu ích để trả lời cho câu hỏi Python là gì? Bạn có thể tham khảo tin tuyển dụng Python mọi cấp bậc tại đây, để có thể hình dung về những nhiệm vụ, yêu cầu của một lập trình viên Python nhé!

Cảm ơn các bạn đã đọc, hẹn gặp lại trong các bài viết tiếp theo của mình.

Đừng bỏ lỡ hàng loạt việc làm IT trên TopDev!

So Sánh Giữa Regression Testing Và Retesting

Bài viết được sự cho phép của tác giả Tô Thị Vân Anh

Hai khái niệm vô cùng quen thuộc với đội ngũ trong nghề đúng không nào?!, Thực ra khi mà nhắc đến hai khái niệm này và bảo so sánh với nhau, hầu như là ai cũng sẽ có đầy tự tin mà trả lời được rằng retest là test lại bug đã có, còn regression test là test hồi quy – test xem việc sửa 1 bug có sinh ra bug mới hay không. Câu trả lời này tất nhiên là đúng, nhưng mà chưa đủ, hehe. Muốn biết câu trả lời đầy đủ là gì, thì xin mời đọc tiếp!

Retesting

Retesting – Kiểm thử lại: là công việc thực hiện để đảm bảo rằng bug đã log và được fix trước đó có đúng là đã được sửa ở phiên bản hiện tại này hay chưa.

Hay đơn giản là như thế này, bạn tìm thấy 1 bug > sau đó gán cho 1 chú dev nào đó > chú dev này sửa bug, và báo với bạn là bug này tui sửa rồi đó, bản build ngày mai sẽ có > tới ngày mai, bạn vào test lại cái bug này để xác nhận là ồ đúng là chú này đã fix con bug, cái việc này gọi là retesting. 

Việc re-test này chỉ thực hiện kiểm thử ở chỗ đã xảy ra lỗi trước đó, tức là trước đó lỗi ở đâu thì sau khi sửa mình sẽ test lại đúng chỗ đó.

Regression testing

Regression testing – kiểm thử hồi quy: là một loại kiểm thử phần mềm để đảm bảo rằng việc sửa lỗi, hay sửa đổi, cập nhật chức năng không làm sinh ra lỗi mới liên quan đến các phần được sửa đổi đó.

Tức là việc này có thể test lặp lại những phần mà trước đây đã từng test rồi, và mục đích ở lần này là để phát hiện liệu phần sửa đổi kia có là nguyên nhân gây ra lỗi hay không.

Thông thường, ta sẽ thực hiện regression testing khi:

  • Ứng dụng có thêm một function mới nào đó
  • Có yêu cầu thay đổi (Change Requirement)
  • Sau khi sửa lỗi
  • Sau khi sửa lỗi hiệu năng
  • Môi trường ứng dụng thay đổi (VD: Chuyển đổi Database từ MySQL sang Oracle…)

Bảng so sánh Retesting vs Regression testing

REGRESSION TESTING RETESTING
Kiểm thử hồi quy được thực hiện để đảm bảo các thay đổi không ảnh hưởng đến các chức năng hiện có. Kiểm thử lại được thực hiện để đảm bảo rằng các test case failed trước đó đã pass khi các bug được sửa
Kiểm thử hồi quy được thực hiện để xác minh xem liệu có chức năng hiện có nào bị ảnh hưởng hay không, liên quan đến sự thay đổi đó. Kiểm thử lại được thực hiện trên việc bug log trước đó đã được sửa.
Tùy theo tình hình dự án, regressiton testing có thể được thực hiện song song với retesting. Retesting được đánh giá có độ ưu tiên cao hơn so với regression testing, nên thường được thực hiện trước regresstion testing.
Verify defect không thuộc kiểm thử hồi quy Verify defect là một phần của retesting.
Ta thường thực hiện kiểm thử tự động với regresstion testing, thực hiện manually có thể tốn nhiều chi phí và thời gian. Ta không thể thực hiện tự động với những case cần retest.
Regresstion testing được biết đến như là một loại kiểm thử chung chung. Re-testing là một kiểu kiểm thử có kế hoạch.
Việc thực hiện test này có thể thực hiện trên cả những test case đã từng pass trước đó. Re-testing chỉ thực hiện trên những test case fail.
Regresstion test case được đưa ra dựa vào mô tả chức năng Thực hiện re-testing với cùng bộ dữ liệu test, môi trường test.

Tóm lại

Bài viết dông dài thế kia thôi, tóm lại là như này cho dễ hình dung, dễ thuộc bài nè. Re-testing là kiểm tra xem có thực sự là lỗi đã được sửa hay không, và Regression testing là kiểm tra xem liệu có lỗi mới nào phát sinh sau khi chỉnh sửa hay không. :))

Bạn có thể tham khảo việc làm, tin tuyển dụng Tester mới nhất tại đây nhé!

Bài viết gốc được đăng tải tại vananhtooo.wordpress.com

Xem thêm:

Tham khảo việc làm IT mọi cấp độ được cập nhật mỗi ngày trên TopDev!

8 Bước Trong Lộ Trình Trở Thành DevOps Engineer

lộ trình trở thành Devops Engineer

Devops Engineer từ lâu đã là một nghề hot trong bộ các ngành liên quan tới IT, bài viết này sẽ chỉ ra 8 bước trong lộ trình trở thành Devops Engineer.

DevOps Engineer không đơn thuần là thao tác với phần cứng, viết vài dòng CICD cho code auto run build deploy. 8 bước sau đây sẽ cho anh em cái nhìn tổng quan từng bước để trở thành kỹ sư DevOps.

Gét gô thôi anh em ơi!

1. Học một ngôn ngữ lập trình

Tin không vui cho anh em nào bảo chuyển qua devops không cần code củng gì nữa. Thực tế là bắt đầu để trở thành DevOps Engineer, ta vẫn cần kiến thức cơ bản của một ngôn ngữ lập trình.

Có thể là không được sâu như các Senior Software Engineer nhưng ít nhất cũng phải hiểu biết những thuật ngữ, khái niệm, concept cơ bản nhật của lập trình.

Devops Engineer không chỉ đơn thuần động tới phần cứng, Devops Engineer.

Chính vì vậy lộ trình trở thành Devops Engineer, bước đầu tiên không thể nào khác đi, đó là học một ngôn ngữ lập trình. Ở thời điểm hiện tại, một số ngôn ngữ lập trình sau được recommended nha anh em:

Thử nghĩ nếu một Devops Engineer vừa có thể debug code cho development team, vừa có thể đọc lock code, hiểu về các command và development thực hiện để run code. Ôi, ông devops ấy thật đáng ngưỡng mộ biết nhường nào.

Không biết ít thì biết nhiều vẫn phải biết code nha anh em

Hơi lố nhưng sau khi đã nắm cơ bản về một ngôn ngữ lập trình, bước kế tiếp là tìm hiểu về hệ điều hành.

Nhiều việc làm DevOps lương cao trên TopDev, ứng tuyển ngay

2. Học về hệ điều hành (Operating System)

Bước thứ hai nhìn thì có vẻ dễ hơn bước một trong lộ trình trở thành DevOps Engineer nhưng thực tế là không phải vậy.

Cho dù là bạn có kinh nghiệm cài win dạo mười năm, hackintosh 5 năm thì hiểu sâu về hệ điều hành (operating system) lại là câu chuyện hoàn toàn khác. Devops Engineer làm việc ở đâu?, làm việc trên hệ điều hành chứ ở đâu. Nếu không hiểu về nó làm sao có thể nhận biết lỗi, làm sao có thể điều khiển nó hoạt động? Chính vì thế, tìm hiểu về Operating System là bắt buộc nha anh em.

Kế tiếp là các hệ điều hành hiện nay. Cái này thì không cần nói hầu như mọi người cũng biết. 3 hệ điều hành phổ biến hiện nay để tìm hiểu là:

  • Linux (Khuyến khích)
  • Unix
  • Windows

Tại sao các máy chủ hiện tại lại yêu thích Linux. Trường hợp nào máy chủ Linux được ưu tiên hơn máy chủ Windows. Lợi và hại của từng loại máy chủ.

Ngoài tìm hiểu nội dung cơ bản, anh em cũng cần học về terminal, kể cả là có GUI hay không có GUI anh em cũng chiến rầm rầm. Mở terminal lên là deploy thôi.

Tiện đây giới thiệu cho anh em con Terminus, xài bao đã, remember vào cứ click và bay thẳng vào server gõ lạch cạch.

Lộ trình trở thành devops engineerQuản lý danh sách host, server. Truy cập bằng 1 click

Lộ trình trở thành devops engineerThêm host mới nhanh chóng, dễ dàng

Anh em có thể tìm hiểu thêm về sự khác biệt giữa các hệ điều hành tại đây.

3. Tìm hiểu về mạng máy tính, bảo mật (networking security ) và các phương thức (protocols)

Sau khi đã thành thạo bá đạo các hệ điều hành rồi. Tới độ mở terminal lên là gõ thôi, mọi câu lệnh nằm trong đầu, không phải tra cái gì cả.

Nhắm mắt vào cũng rm -rf, pm2 delete rầm rầm thì xin chúc mừng anh em đã qua bước thứ 2 trong lộ trình trở thành DevOps Engineer. Bước thứ 3 là tìm hiểu về mạng máy tính, bảo mật và các phương thức (protocols).

Bước này có một số khái niệm cơ bản anh em phải nắm vững:

Ví dụ như HTTP, anh em cần tìm hiểu thật sâu nó có những phương thức nào (tham khảo bài Http Methods: thất tinh bắc đẩu trận). Nếu có điều kiện thì thực hành với postman, sự khác biệt giữa các methods là gì?. Thực tế lúc nào cần xài cái nào?

Lộ trình trở thành devops engineerMô hình OSI trong mạng máy tính

Ngoài những thông tin trên, rõ ràng là bất cứ ứng dụng nào cũng sẽ có protocols (phương thức) giao nhận để truyền đạt thông tin. Mỗi giao thức lại hỗ trợ một kiểu khác nhau, nên anh em cần nắm kỹ.

  • TCP/IP (Transmission Control Protocol/Internet Protocol) suite.
  • ARP (Address Resolution Protocol)
  • DHCP (Dynamic Host Configuration Protocol)
  • DNS (Domain Name System)

4. Học về Infrastructure

Sau khi đã nắm kiến thức về Security và Protocols thì bước kế tiếp là tìm hiểu về Infrastructure. Bước thứ 4 trong lộ trình trở thành Devops Engineer không đơn giản.

Infrastructure as Code (IaC) là công việc hợp lý hoá, thiết kế và phân tích cơ sở hạ tầng để triển khai ứng dụng. Các ứng dụng khác nhau lại có yêu cầu về cơ sở hạ tầng khác nhau.

Ví dụ, một ứng dụng truyền đạt dữ liệu đơn giản có thể không yêu cầu nhiều về mặt hạ tầng. Nhưng với những dự án có sử dụng thiết bị IoT hoặc các thiết bị truyền đạt dữ liệu lớn, việc thiết kế hạ tầng đòi hỏi cần người có trình độ cao, có kinh nghiệm.

Lộ trình trở thành devops engineerMột ví dụ về thiết kế hạ tầng cho hệ thống IoT. Nguồn ảnh: f5.com

Bước này có lẽ là bước tốn nhiều thời gian nhất để trở thành một Devops Engineer giỏi. Ngoài việc nắm chắc kiến thức, bước này còn cần thời gian để thực hành. Cơ hội để tham gia vào dự án thực tế.

  DevOps là gì? Cần học gì để trở thành DevOps

5. Lấn sâu vào CI (Continuous Integration) và CD (Continuous Deployment)

Nghe có vẻ hơi ngược trong lộ trình trở thành DevOps Engineer nhưng bước thứ 5 lại là lấn sâu vào CI và CD. Thực tế CI và CD không hề khó nếu anh em đã có kiến thức nền ở các bước số 1 và 2.

Tích hợp liên tục (CI) và Triển khai liên tục (CD) là nguyên tắc trung tâm và cốt lõi cho Devops Engineer. Bản thân công việc của người kỹ sư là tự động hoá để làm sao việc phát triển, triển khai các ứng dụng được thực hiện liên tục, không có sự ngắt quãng.

Để đạt được việc này, hầu hết các kỹ sư giỏi đều nắm chắc các công cụ hỗ trợ CI, CD. Sau khi thiết lập hoàn thiện các phần này, công sức triển khai không còn là bao nhiêu.

Một số cái tên có thể liệt kê ra đây để anh em tìm hiểu:

  • GitHub
  • GitLab
  • Bamboo
  • Jenkins

Ở trình độ cao hơn, một số anh em có thể tự xây dựng CI, CD cho riêng bản thân mình. Có thể một số tính năng như count time, log, auto retries chưa có, nhưng cũng không phải là điều không thể.

6. Hiểu sâu về Application Monitoring và Infrastructure Monitoring.

Sau khi đã triển khai CI, CD thành công. Bước thứ 6 trong lộ trình trở thành DevOps Engineer là Monitoring.

Trong bài viết này mình chia thành 2 loại là Applicaiton Monitoring và Infrastructure Monitoring.

Vậy Monitoring là gì?. Bản thân nó là giám sát, sau khi đã triển khai ứng dụng, trong quá trình vận hành làm sao anh em có thể giám sát. Trường hợp có sự cố hoặc tiềm tàng phát hiện sự cố, việc giám sát giúp hạn chế rủi ro, hạn chế thiệt hại khi có sự cố phát sinh.

Lộ trình trở thành devops engineer Ví dụ về mornitoring application. Nguồn ảnh/ Source: solarwinds.com

6.1 Application Monitoring

Theo dõi ứng dụng ở đây là theo dõi các thông số hoạt động liên quan tới ứng dụng. Các chỉ số này bao gồm các tính năng liên quan tới ứng dụng. Nếu có một form đăng ký, bình thường hàng ngày số lượt đăng ký là 300. Nếu hôm nay tự nhiên là 5, vậy có khả năng nó có vấn đề.

Một số công cụ Application Monitoring anh em có thể tham khảo:

  • Prometheus (recommended)
  • Nagios
  • Datadog

6.2 Infrastructure Monitoring

Infrastructure theo dõi ở cấp độ hạ tầng, kết nối giữa ứng dụng và các hạ tầng khác liên quan. Ví dụ một ứng dụng IoT có lưu dữ liệu lên đám mây. Nếu kết nối cloud có vấn đề, việc theo dõi có thể ngăn chặn sớm lỗi này.

Một số công cụ Infrastructure Monitoring anh em có thể tham khảo:

  • New Relic (recommended)
  • Jaeger
  • AppDynamics
   Top 10 khóa huấn luyện kỹ sư DevOps cho dân Dev

7. Tìm hiểu về các dịch vụ cloud.

Hầu hết các ứng dụng hiện này đều được host trên cloud. Mỗi bên cung cấp dịch vụ về cloud lại có một tài liệu kỹ thuật riêng. Dịch vụ cloud cung cấp bảo mật, khả năng mở rộng

Bước thứ 7 trong lộ trình trở thành DevOps Engineer là tìm hiểu và thi lấy chứng chỉ nếu được cho các Cloud Provider này. Việc thi chứng chỉ sẽ bao gồm rất nhiều hạng mục:

  • Sử dụng Cloud như thế nào
  • Tính toán chi phí
  • Ước lượng, thiết kế hạ tầng cloud cho ứng dụng

Việc tìm hiểu, thực hành cho các bên cung cấp dịch vụ Cloud là bắt buộc. Có thể kể tới đây một số bên cung cấp dịch vụ cloud lớn nhất hiện nay:

  • AWS (recommended)
  • Azure
  • Google Cloud
  • Heroku

Lộ trình trở thành devops engineerTop 10 Cloud Provider – Nguồn ảnh: allcode.com

8. Nắm chắc, hiểu sâu về cloud design patterns

Sau khi đã thành thạo và hiểu sâu về các bên cung cấp dịch vụ cloud. Bước cuối cùng để trở thành DevOps Engineer trình độ cao là hiểu biết về Cloud Design Pattern.

Design Pattern là các pattern cần tuân theo để thiết kế Cloud sao cho có khả năng mở rộng, đạt được độ tin cậy và bảo mật.

Một ví dụ đơn giản là giải quyết bài toán độ trễ (high latency) trong hệ thống cloud.

Một số lĩnh vực anh em có thể tìm hiểu về Cloud Design Pattern bao gồm:

  • Availability
  • Data Management
  • Design and Implementation

9. Tham khảo thêm về lộ trình trở thành devops engineer

Anh em lưu ý là lộ trình tui đề xuất ra đây là lộ trình cơ bản và không bao gồm tất cả những nội dung anh em cần học để trở thành DevOps Engineer nha. Lộ trình để tham khảo thôi đấy.

Chứ đi theo lộ (đường) thì đôi khi mỗi anh em lại hợp với một loại đường. Có anh em thích đi đường nhựa tay ga, có anh em thích đi đường đá chân trần. Anyway

Cảm ơn anh em đã dành thời gian đọc bài. Thank you for your time – Happy Coding

Anh em có thể tham khảo tin tuyển dụng DevOps để phát triển sự nghiệp nhé!

Tác giả: Kiên Nguyễn

Xem thêm:

Tìm việc làm IT mới nhất trên TopDev

Mức lương Lập trình viên tại Việt Nam năm 2022

Mức lương Lập trình viên 2022

Thực tế hiện nay, khi Công nghệ hiện hữu hầu hết khắp nơi trong đời sống con người, nghề làm IT càng trở nên thu hút hơn bao giờ hết. Và nghe đến “làm IT”, thì có lẽ thu nhập và cơ hội thăng tiến sẽ là những chủ đề được quan tâm nhất. Trong bài viết này, hãy cùng mình tham khảo mức lương các vị trí Lập trình 2022 qua những thống kê từ Báo cáo thị trường IT Việt Nam – Tech Hiring 2022 do TopDev phát hành nhé! Giờ thì… bắt đầu thôi nào!

Báo cáo thị trường IT Việt Nam – Tech Hiring 2022 do TopDev phát hành đã đưa ra bảng so sánh mức lương giữa các vị trí lập trình mới nhất trong năm 2022. Các vị trí ngành lập trình có mức lương dao động từ 8 – 140 triệu/tháng

Mức lương lập trình viên theo Công nghệ & lĩnh vực

Xếp hạng các công nghệ được trả lương cao nhất có thể được chia thành 2 nhóm lớn: High-tech liên quan đến xu hướng AI / ML (Kubernetes, Tensor Flows, Python) và Điện toán đám mây (AWS, GCP, Azure). Nhóm thứ hai là các công nghệ mới nổi – Unity và xu hướng play-to-earn & NFT.

Theo Báo cáo thị trường IT Việt Nam – Tech Hiring 2022, Lập trình viên với từ 1 đến 3 năm kinh nghiệm làm về AWS có mức lương Gross trung bình $1,775; đối với GCP là $1,698; với Azure là $1,526. Mức lương Lập trình viên làm về các công nghệ thuộc nhóm High Tech bao gồm Tensor Flows, Kubernetes, Python,  lần lượt đạt mức $1,732, $1,669, $1,389. Mức lương Gross của Lập trình viên Unity hiện ở mức trung bình $1,378/tháng khi có từ 1 đến 3 năm kinh nghiệm.

Mức lương Lập trình viên 2022 theo công nghệ

3 ngành có thu nhập cao hàng đầu hiện nay là Blockchain, High Tech và Fintech. Du nhập vào Việt Nam từ năm 2015, lĩnh vực High tech (AI, IoT, Điện toán đám mây, …) được coi là chìa khóa mang lại lợi thế cạnh tranh, là xu hướng bắt buộc đến năm 2025. Đối với Fintech, đây được coi là ngành thực sự cần thiết đối với các ngân hàng và tất cả các hệ thống quản trị doanh nghiệp. Mức lương của các ngành này dao động từ $1,000 đến $3,500 tùy vào số năm kinh nghiệm.

IT Service, Banking, Telecommunication, PropTech, E-Commerce,… vẫn là những ngành được quan tâm phát triển mạnh mẽ. Mức lương của các ngành này trung bình từ $800 tới $2.200, tùy vào số năm kinh nghiệm và năng lực thực chiến.

Mức lương lập trình theo số năm kinh nghiệm 

Theo Báo cáo thị trường IT Việt Nam năm 2022 do TopDev phát hành, mức lương lập trình viên dao động từ $350 (Fresher) đến $1.190 cho vị trí Mid-Senior. Lập trình viên Senior có mức lương dao động từ $860 đến $1.510. Các vị trí Quản lý (từ 5 năm trở lên) hoặc cấp cao hơn được khảo sát có mức lương từ $1.410 cho đến hơn $2.300

Mức lương Lập trình viên 2022 theo level

Ngành Công nghệ thông tin khởi sắc và nở rộ với các xu hướng về Chuyển đổi số và đầu tư phát triển Công nghệ. Các doanh nghiệp ngày càng nhận thấy sự cần thiết của lực lượng nhân sự IT và tăng cao nhu cầu tuyển dụng. Điều này đã thu hút ngày càng nhiều nhân lực IT tham gia vào thị trường. Ngoài ra, với nhu cầu tuyển dụng lớn cùng yêu cầu về kỹ năng và kinh nghiệm thì mức lương Lập trình viên theo từng cấp độ cũng có xu hướng tăng lên. 

Cụ thể, kết quả báo cáo thị trường IT Việt Nam – Tech Hiring 2022 do TopDev phát hành, mức lương Lập trình viên Fresher đã tăng 4.93% so với cùng kỳ năm ngoái và đạt đến $565. Mức lương Lập trình viên Senior (có từ 4 năm kinh nghiệm trở lên) tăng 8,97% để đạt mức lương Gross lên đến $1.510. Mức lương của nhân lực IT từ cấp Director trở lên (sở hữu từ 10 năm kinh nghiệm) ở cả định hướng Business và Technical tăng hơn 10%, và có thể chạm đến mức lương trung bình là $2,750.

Tính lương chuẩn với công cụ tính lương lương gross sang net từ TopDev

Mức lương lập trình viên theo vị trí: 140 triệu/ tháng liệu có dễ dàng?

Theo thông số do báo cáo cung cấp, các vị trí được trả lương cao nhất yêu cầu các kỹ năng đặc biệt như Data Analyst, Cloud, DevOps, Machine Learning hoặc AI. Và với tác động của Covid-19, Cloud Service & DevOps đã đóng một vai trò quan trọng trong việc duy trì và phát triển doanh nghiệp. Do đó, nhu cầu về kỹ sư Cloud / DevOps đã có sự tăng trưởng mạnh mẽ, kéo theo đó là các vị trí này được trả lương ngày càng cao. 

Mức lương càng cao thì trách nhiệm công việc, kinh nghiệm thực chiến và kỹ năng cũng càng phải đạt những yêu cầu khắc nghiệt hơn. Hãy cùng điểm qua một số vị trí với định hướng phát triển và mức lương khi đảm nhiệm ngay sau đây nhé!

Mức lương Lập trình viên theo vị trí

CIO/CTO 

Vai trò CTO hay CIO, phụ trách Tech Management nói chung có mức lương lên đến $5.933 (trên 140 triệu đồng), được coi là mục tiêu nghề nghiệp cao nhất của nhân sự ngành IT. Để vươn tới vị trí này, các lập trình viên không những vững kỹ năng cơ bản, mà còn phải xử lý những công việc quản trị và xây dựng, tối ưu những công nghệ và sản phẩm công nghệ của doanh nghiệp.

Solution Architect 

Người làm Solution Architect có vai trò đưa ra kiến trúc để xây dựng phần mềm đáp ứng các yêu cầu về functional và non-functional cho phần mềm đó. Ngoài ra, trong nhiều dự án thì Solution Architect cũng phải tham gia vào cả giai đoạn phân tích nghiệp vụ cùng với Business Analyst. Vị trí này có mức lương trung bình cho từ 1 – 3 năm kinh nghiệm là $4,242 (trên 100 triệu đồng).

Technical Architect

Vai trò của vị trí này là đảm nhiệm công việc giám sát một nhóm tập trung vào các vấn đề kỹ thuật, bao gồm phát triển phần mềm, phát hành sản phẩm và các nhiệm vụ kỹ thuật khác. Technical Architect là người đánh giá các quy trình làm việc của nhóm, hợp tác với các nhân viên để xác định và sửa chữa các vấn đề kỹ thuật và thực hiện các thay đổi để tối ưu quy trình. Mức lương của vị trí này ở khoảng: $4,127/tháng (khoảng 98 triệu đồng).

DevOps Engineers

DevOps Engineers đảm nhiệm vai trò làm giảm chi phí và vòng lặp của dự án, là cầu nối giữa Developers và nhóm IT khác. DevOps Engineers hiểu cặn kẽ về vòng đời phát triển phần mềm và các công cụ tự động hóa được sử dụng để tạo CI / CD Pipeline (tích hợp liên tục / phân phối liên tục), giúp giảm thiểu lỗi, tạo điều kiện triển khai nhanh chóng các sản phẩm với chất lượng tốt hơn và đồng thời cải thiện khả năng duy trì cơ sở hạ tầng. Năm 2022, vị trí này có mức lương dao động trong khoảng $2,149/tháng.

Project Manager

Project Manager có trách nhiệm quản lý dự án, hoàn thành các mục tiêu đề ra từ khi bắt đầu đến khi thực hiện và kết thúc. Họ là người đứng giữa khách hàng và team lập trình, đại diện tiếp nhận và trao đổi yêu cầu, vấn đề gặp phải của cả hai bên. Trở thành Project Manager, bạn cần có khả năng thích ứng với các quy trình nội bộ khác nhau của khách hàng và hình thành sự liên kết cho đôi bên, giải quyết các vấn đề phát sinh giữa họ và Team Lập trình. Vị trí này có mức lương trong khoảng: $1,890/tháng.

Full-stack Developers

Thông thường, vị trí này yêu cầu phải có khả năng làm việc với CSS & JS tốt (Truy vấn media, ứng dụng trang đơn và DOM, ES6). Biết các công cụ như Grunt, Gulp & Browserify, framework web (ít nhất một). Ngoài ra, họ còn được yêu cầu có thể thiết kế mô hình relation tốt, thực hiện các truy vấn tiên tiến và SQL Joins. Biết cách deploy code của mình trên AWS EC2 bằng Apache2 hoặc Nginx như web server, có kiến thức làm việc với Docker và Virtualization. Vị trí này có mức lương dao động trong khoảng: $1.405/tháng

Tham khảo: Việc làm lập trình Full Stack 2022

System Administrator

Vai trò của vị trí này là cài đặt, nâng cấp và giám sát phần mềm và phần cứng. System Administrator thường là người duy trì các yếu tố cần thiết như hệ điều hành, ứng dụng kinh doanh, công cụ bảo mật, web-servers, email, PC, mạng cục bộ và mạng diện rộng cả phần cứng, phần mềm và phần cứng máy chủ tầm trung. Mức lương dao động cho vị trí này ở khoảng $1,381/tháng.

Game Developers 

Đây là người phát triển phần mềm tạo ra các trò chơi video. Game Developers sẽ tham gia vào các lĩnh vực khác nhau của game từ khái niệm, viết cốt truyện cho đến lập trình. Các lĩnh vực tiềm năng khác cho Game Developers bao gồm âm thanh, thiết kế, sản xuất và visual arts. Game Developers có mức lương trong khoảng: $1,279/tháng.

Mobile Developers 

Mobile Developers giữ vai trò là người phát triển ứng dụng trên các nền tảng Google, Android, iOS và Microsoft, Windows Phone,…. Nhiệm vụ chính của một Mobile Developer là phối hợp với các nhóm chức năng để xây dựng và phát triển các chức năng của ứng dụng di động, không ngừng cải thiện và tối ưu hóa ứng dụng di động để đáp ứng nhu cầu người dùng. Mức lương dao động trong khoảng: 1,174$/tháng

Product Manager 

Product Manager là người chịu trách nhiệm về sự thành công của sản phẩm, đảm nhiệm xây dựng tính năng của sản phẩm thông qua kết hợp làm việc với Developer và UX/UI Designer. Vị trí này có mức lương trong khoảng: $1.033/tháng.

UX/UI Designer 

Vai trò của vị trí này là tìm hiểu người dùng, triển khai các ý tưởng để giải quyết nhu cầu của người dùng – nhu cầu của kinh doanh – và cả xây dựng, đo lường những giải pháp thực tế để xem chúng có thực sự hiệu quả hay không. Mức lương dao động trong khoảng: $943/tháng.

IT Helpdesk

Đây là người theo dõi và kiểm tra hệ thống liên tục, phụ trách phối hợp ăn ý với các bộ phận liên quan như Technical để hỗ trợ và giúp đỡ khách hàng giải quyết lỗi kỹ thuật, hỏng hóc,… nhanh chóng và hiệu quả. Ngoài ra, họ còn thu thập thông tin và đóng góp phản hồi của khách hàng về sản phẩm dịch vụ công ty để dễ dàng rà soát, cải tiến và nâng cao chất lượng của sản phẩm, đồng thời chăm sóc & quan tâm tới khách hàng sử dụng dịch vụ của công ty. Mức lương của vị trí này từ 1 – 3 năm kinh nghiệm ở khoảng $331/tháng.

Hi vọng những thông tin về mức lương Lập trình viên năm 2022 ở bài viết trên có thể mang lại giá trị tham khảo cho những ai muốn “dấn thân” vào lĩnh vực Lập trình. Thu nhập cao gắn liền với trách nhiệm cao hơn và cả sự đánh đổi. Có thể thấy rằng để đạt được mức lương 140 triệu/ tháng không phải là điều dễ dàng. Ngoài vốn kiến thức & kinh nghiệm dày dặn, người làm IT muốn hướng tới mức lương này cần trang bị cho mình tinh thần cầu thị, khả năng lãnh đạo cùng nhiều kỹ năng khác để có thể vượt trội hơn số đông còn lại. Nhưng điều này không phải là không thực hiện được. Hãy không ngừng cố gắng bạn nhé! Chúc bạn thành công!

Ngoài ra, bạn có thể tham khảo thêm nhiều thông tin và chỉ số khác của toàn ngành IT thông qua bản báo cáo đầy đủ nhất tại đây: Báo Cáo Thị Trường IT Việt Nam 2022

Đừng bỏ qua:

Xem thêm việc làm IT mức lương lương hấp dẫn trên TopDev

Hội nghị Devcon 2022 dành cho cộng đồng Ethereum

devcon 2022

Chỉ chưa đầy 1 tháng sau sự kiện hợp nhất The Merge của mình, cộng đồng Ethereum cùng hướng đến sự kiện Devcon 2022 – hội nghị toàn cầu thường niên diễn ra tại Bogata, Columbia. Sự kiện năm nay thu hút được sự chú ý lớn đến từ toàn thị trường blockchain nói chung khi mà các thông tin liên quan đến bước tiến tiếp theo đối với hệ sinh thái ETH sẽ được đưa ra thảo luận. Bài viết này mình sẽ cùng các bạn tìm hiểu các thông tin liên quan đến sự kiện này nhé.

Devcon là gì?

Devcon viết tắt cho Developers Conference là sự kiện lớn nhất do ETH Foundation tổ chức dành cho các nhà phát triển, nhà nghiên cứu, nhà tư tưởng và nhà sản xuất Ethereum. Mục đích của hội nghị này là tập hợp các dự án tiên tiến nhất, các nhà phát triển và cộng đồng hiểu biết về tiền điện tử trên toàn thế giới để trao đổi thông tin và các ý tưởng cải tiến cho hệ sinh thái ETH.

Devcon lần đầu được tổ chức vào năm 2015 (1 năm sau sự ra đời của ETH), tại London, Anh. Sự kiện thường niên này thu hút sự quan tâm của cộng đồng, được tổ chức trải rộng trên khắp các địa điểm trên thế giới: Thượng Hải, Trung Quốc; Osaka Nhật Bản; Praha Cộng hòa Séc; Cancun Mexico.

Năm 2020 và 2021, do ảnh hưởng của đại dịch Covid-19; sự kiện đã bị hoãn lại cho đến năm nay. Sau 3 năm, sự kiện Devcon 2022 này mới quay trở lại và được chú ý hơn nhất là sau sự kiện The Merge – một trong những cột mốc quan trọng nhất đối với hệ sinh thái ETH.

Devcon lần thứ 6 được diễn ra từ ngày 11 đến 14 tháng 10 ở Bogota, Columbia. Tất cả các bài thuyết trình của sự kiện đều được trực tiếp trên các nền tảng trực tuyến, các bạn quan tâm có thể dễ dàng truy cập vào blog chính thức của hội nghị để theo dõi.

hội nghị devcon 2022

Nguồn: cryptoevents.global

Devcon 2022 có gì đáng chờ đợi?

Năm nay, các diễn giả chính của hội nghị Devcon bao gồm: đồng sáng lập Ethereum Vitalik Buterin; giám đốc điều hành Ethereum Foundation Aya Miyaguchi và nhà nghiên cứu Ethereum Danny Ryan. 3 Labs về ETH lớn nhất hiện nay là Offchain Labs, Optimism Labs và Matter Labs cũng có đại diện tham dự và cùng thảo luận xung quanh các chủ đề Layer 2 – một giải pháp cho tính mở rộng và là chìa khóa cho sự phát triển của Ethereum trong tương lai.

Sau sự kiện The Merge, dẫu quan trọng và được kỳ vọng nhiều, nhưng giá ETH lại đang bắt đầu có xu hướng giảm mạnh. ETH từ mức gần 1.800 USD trước The Merge đã xuống chỉ còn 1.300 USD khiến cộng đồng hơn bao giờ hết hy vọng 1 tín hiệu tích cực sẽ đến khi Devcon diễn ra. Cộng đồng Ethereum cần 1 sự đảm bảo đến từ những diễn giả tại hội nghị – cũng là những nhà phát triển và nghiên cứu trực tiếp hệ sinh thái blockchain này để tiếp tục đặt niềm tin vào tương lai của coin ETH.

Về mặt công nghệ, vấn đề liên quan đến tính mở rộng Ethereum cũng được quan tâm hơn. Các giải pháp giải quyết vấn đề đưa ra (gọi chung là Layer 2) hứa hẹn vẫn có thể kế thừa tính bảo mật từ Layer 1, đồng thời có khả năng xử lý nhiều giao dịch hơn, giảm chi phí và tốc độ xác thực giao dịch nhanh hơn Layer 1. Tất cả hứa hẹn sẽ được giới thiệu và làm rõ trong Devcon lần này.

vi du ethereum layer 2

Nguồn: miro.medium.com

Ngoài lề sự kiện, có 1 số lo ngại về an ninh cũng như việc tấn công từ hacker khiến cho 1 số diễn giả nổi tiếng không thể tham gia. Đồng sáng lập Polygon, Sandeep Nailwal do lo ngại về sự an toàn của nước chủ nhà nên đã quyết định không tham gia hội nghị lần này. 

Các bạn đam mê Blockchain đừng bỏ qua cơ hội việc làm mới, hàng loạt tin tuyển dụng Blockchain Developer hấp dẫn tại đây!

Devcon 2023 có thể tổ chức ở Việt Nam

Devcon đã đi qua 6 quốc gia và 3 lục địa với mong muốn có thể phổ biến đến mọi thành viên quan tâm đến blockchain nói chung và ETH nói riêng. Địa điểm tổ chức của hội nghị Devcon 2023 (lần thứ 6) sẽ được bình chọn trên forum chính thức của sự kiện. Hiện nay, Việt Nam đang đứng đầu trong cuộc bình chọn trở thành địa điểm tổ chức Devcon VI, theo sát sau đó là Thổ Nhĩ Kỳ.

Việt Nam của chúng ta đang có ưu thế lớn trong cuộc bầu chọn này với ước tính có khoảng 41% cư dân Việt Nam đang sở hữu tiền điện tử; blockchain cũng là một trong những công nghệ được ưu tiên trong cuộc cách mạng công nghiệp lần thứ 4 của nước ta. Các dự án nổi bật về blockchain và tiề n điện tử của chúng ta hiện nay như Tomochain, Kyber Network, Kyros, … cũng góp phần làm tăng uy tín trong việc bình chọn. Địa điểm tổ chức được đề xuất là ở Nha Trang. Các bạn có thể theo dõi đề xuất và thực hiện việc votes tại link: https://forum.devcon.org/t/proposed-location-nha-trang-city-vietnam/697

Cùng hy vọng với sự ủng hộ của cộng đồng quốc tế, năm sau chúng ta, những người quan tâm đến ETH hay blockchain có thể chào đón các diễn giả nổi tiếng đến với đất nước Việt Nam.

Hy vọng bài viết đã mang đến cho bạn những thông tin hữu ích liên quan đến sự kiện Devcon 2022hệ sinh thái Ethereum. Cảm ơn các bạn đã theo dõi và hẹn gặp lại các bạn trong các bài viết sau của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Tham khảo ngay tin tuyển dụng ngành IT lương cao trên TopDev!

CEO TopDev nhấn mạnh về yếu tố “Con người” trong thời đại số: “Tất cả cho sự phát triển kinh tế lấy nhân tài làm trung tâm”

Lễ ra mắt Hội đồng Công ty ICT Hàn Quốc tại TPHCM (KICH)

Đầu tháng 9 vừa qua, TopDev – Nền tảng tuyển dụng IT hàng đầu vừa phát hành Báo cáo thị trường IT Việt Nam – Tech Hiring 2022 với những đánh giá và phân tích về vận hội cũng như viễn cảnh của thị trường lao động IT. 

Lễ ra mắt Hội đồng Công ty ICT Hàn Quốc tại TPHCM

Chiều ngày 22/9/2022, trong Lễ ra mắt Hội đồng Công ty ICT Hàn Quốc tại TPHCM (KICH) – Launching Ceremony of Korea ICT Company Council in Ho Chi Minh City (KICH), ông Park JongHo – CEO của TopDev đã có bài phát biểu nhằm giới thiệu về Báo cáo thị trường IT Việt Nam – Tech Hiring 2022 và nhận định về thị trường nhân lực IT tại Việt Nam trong thời gian tới. Tại sự kiện, ông Park đã chia sẻ về những thay đổi đối với ngành Công nghệ Thông tin sau giai đoạn đại dịch COVID-19. Qua đó, ông Park cũng chỉ ra những điểm tích cực đáng tự hào trong năm vừa qua với sự chuyển dịch & thích nghi nhanh của người lao động và doanh nghiệp Việt Nam khi triển khai các mô hình tuyển dụng & làm việc mới. 

“Những biến động khó lường của thị trường IT cũng đã vượt ra khỏi những tính toán ban đầu. Tuy vậy, có thể nhận thấy rằng nội lực kỹ thuật mạnh mẽ đến từ lực lượng nhân sự CNTT và các chính sách thúc đẩy chuyển đổi số chính xác và kịp thời của Chính phủ Việt Nam đã tạo ra nền tảng và sự cộng hưởng lớn giúp giữ vững nền kinh tế và lấy lại đà khôi phục nhanh chóng trong năm 2022” – Ông Park nhận định.

Nhiều năm qua, TopDev không ngừng hoàn thiện và phát hành các Báo cáo về thị trường IT, nhằm mang đến cái nhìn toàn diện về nguồn nhân lực IT cho các Doanh nghiệp, Nhà đầu tư và những cá nhân có định hướng hoạt động trong lĩnh vực này. Bài báo cáo cung cấp đầy đủ thông tin cần thiết về Tổng quan tình hình kinh tế & Xã hội tại Việt Nam, mức lương Lập trình viên, những vận hội cũng như thách thức dành cho Nhà tuyển dụng và Nhân lực ngành IT. 

Lễ ra mắt Hội đồng Công ty ICT Hàn Quốc tại TPHCM

Những kết quả thu được từ Báo cáo thị trường IT Việt Nam – Tech Hiring 2022 đã cho thấy sự thay đổi về nhu cầu và xu hướng làm việc của người làm trong ngành IT. Ông Park JongHo cũng nhấn mạnh: “Để thích ứng nhanh chóng với đại dịch COVID-19, các phương thức làm việc mới đã xuất hiện và dần trở thành sự lựa chọn của các Lập trình viên. Nhu cầu về sức khỏe tinh thần và vấn đề về cân bằng cuộc sống – công việc cũng đang là mối quan tâm lớn của người tìm việc. Nhưng trên thực tế, với những yêu cầu kể trên về quản lý nhân sự để đáp ứng cho người tìm việc, Nhà tuyển dụng vẫn đang cố gắng hồi phục và thích nghi bối cảnh kinh doanh hoàn toàn mới. Đây được xem là thử thách lớn cho lĩnh vực nhân sự nói chung và tuyển dụng nhân lực IT nói riêng.”

Ở thời điểm hiện tại, công nghệ đang không ngừng cải tiến và ngày càng xuất hiện nhiều trong đời sống hàng ngày. Đằng sau sự phát triển đó phải kể đến sự nỗ lực cống hiến và tiềm năng sáng tạo của Con người. 

Lễ ra mắt Hội đồng Công ty ICT Hàn Quốc tại TPHCM

Tại sự kiện tối ngày 22/9/2022, nhấn mạnh về yếu tố “Con người” trong thời đại công nghệ số, ông Park JongHo đã nhận định: “Việt Nam đang có một nguồn nhân lực IT đầy hứa hẹn về chất và lượng cũng như thị trường tiềm năng và tăng trưởng kinh tế. Điều quan trọng nằm ở các kế hoạch, chiến lược về đầu tư, phát triển và định hướng cho nguồn lực này nhằm thúc đẩy các mục tiêu kinh tế, xã hội Quốc gia trong bối cảnh toàn cầu hóa. Đây thực sự là một chủ đề lớn và là chặng đường dài cho tất cả chúng ta, nhưng TopDev tin rằng SỰ THAY ĐỔI sẽ làm nên những điều lớn lao. Và để tạo ra sự thay đổi, mỗi bên đều có thể đóng góp theo vai trò riêng. Tất cả cho sự phát triển kinh tế LẤY NHÂN TÀI LÀM TRUNG TÂM.”

Những nhận định trên của CEO TopDev – ông Park JongHo là lời phát biểu tại Lễ ra mắt Hội đồng Công ty ICT Hàn Quốc tại TPHCM (KICH) diễn ra ngày 22/09/2022 tại Khách sạn New World, TP. Hồ Chí Minh, được tổ chức bởi Cơ quan Xúc tiến CNTT Hàn Quốc (NIPA). NIPA là tổ chức phi lợi nhuận trực thuộc Bộ Khoa học và Công nghệ thông tin tại Hàn Quốc, chịu trách nhiệm hỗ trợ cho các doanh nghiệp và chuyên gia CNTT với mục đích thúc đẩy các cơ hội kinh doanh mạnh mẽ hơn giữa Hàn Quốc và các nước ASEAN trong ngành IT. NIPA hiện dẫn đầu về cơ sở hạ tầng phát triển Kinh tế xã hội và Kinh tế quốc gia dựa trên tri thức từ việc xúc tiến khả năng cạnh tranh của tổng thể các ngành công nghiệp thông qua việc sử dụng CNTT và thúc đẩy ngành công nghiệp này.

Lễ ra mắt Hội đồng Công ty ICT Hàn Quốc tại TPHCM (KICH)

Cùng với bối cảnh Kinh tế – Xã hội nước ta trong năm qua, Việt Nam đã trở thành điểm đến đầu tư đầy tiềm năng của các doanh nghiệp nước ngoài, đặc biệt là Hàn Quốc. Trong lĩnh vực Kinh tế, Hàn Quốc là đối tác FDI lớn của Việt Nam, đóng góp vào lĩnh vực công nghiệp mũi nhọn, đồng thời chuyển giao công nghệ cho nước ta. Với triển vọng thị trường IT tại Việt nam như hiện tại, dự đoán trong tương lai sẽ ngày càng nhiều các công ty IT Hàn Quốc đầu tư vào thị trường và nguồn nhân lực IT tại Việt Nam.

Để cập nhật những thông tin mới nhất về tình hình thị trường IT trong năm 2022, mời bạn tải xuống Báo cáo thị trường IT Việt Nam – Tech Hiring 2022 tại đây.

Xem thêm:

BÁO CÁO THỊ TRƯỜNG IT VIỆT NAM NĂM 2022: Từng bước thay đổi hướng đến sự phát triển kinh tế lấy nhân tài làm trung tâm

Chân Dung Lập Trình Viên Gen Z – Lực Lượng Lao Động Tương Lai