Home Blog Page 17

Logging ứng dụng viết bằng node.js qua 3 cấp độ

Logging ứng dụng viết bằng node.js qua 3 cấp độ

Vấn đề

Là một developer chúng ta biết mỗi một đoạn mã được thêm vào thì lại tăng nguy cơ sinh ra lỗi. Có khi mất cả tháng làm một tính năng mới chạy ngon lành trên môi trường development thế nhưng khi lên môi trường production thì lại lỗi!?

Những lúc như thế thay vì vò đầu bứt tai đoán xem mình đã làm gì sai thì hãy nhanh chóng vào xem log của hệ thống. Log có thể là của máy chủ, của công cụ Devops hay chính là những dòng log được thêm trong mã.

Nói như thế để chúng ta hình dung ra được tầm quan trọng của log, nếu không có log chúng ta sẽ chẳng biết điều gì đang xảy ra nếu chẳng may gặp sự cố. Mà log không phải thích là log đâu, có phải log càng nhiều càng tốt? Log phải có hệ thống, có tổ chức và mang lại một giá trị tương xứng nào đó.

Bài viết ngày hôm nay tôi sẽ liệt kê ra 3 cấp độ của việc ghi log. Đây chỉ là quan điểm cá nhân của tôi các bạn đọc để tham khảo thôi nhé!

Logging cơ bản

console.log mọi lúc mọi nơi nào cần, muốn xem log request api? console.log. Muốn xem body của request? console.log. Muốn xem dòng x biến y đang có dữ liệu gì? console.log

Có một điều là console.log không thân thiện với hiệu năng mà còn gây rối console nữa. Thông tin bị trôi mất sau một thời gian, không có hệ thống quản lý tập trung và điều đó làm cho console.log trở nên kém hiệu quả.

Nếu vẫn thích dùng console.log hãy thử gói chúng vào một hàm tương tự như là println nhận vào giá trị cần log và có thể dễ dàng bật/tắt thông qua một biến môi trường:

function println(data) {
    if (process.env.isEnabledLog == true) {
        console.log(data);
    }
}

Khi đó nếu muốn đặt log chỉ cần gọi hàm println, hơn nữa còn dễ dàng trình bày nội dung tập trung và bật/tắt việc ghi log.

Ngoài ra chúng ta còn có thể sử dụng thêm thư viện giúp đặt log trở nên dễ quan sát hơn như đổi màu chúng bằng color, định dạng log theo ý nghĩa (info, debug, error…).

Logging có chủ đích

Việc ghi log bây giờ không phải là cứ in ra console nữa mà chúng ta phải xác định được cần log những gì và làm sao có thể truy vết lại bất kì lúc nào. Ở cấp độ API, chúng ta sẽ log lại những request đến máy chủ hoặc những lỗi phát sinh trong thời gian chạy của ứng dụng (runtime error). Những dữ liệu đó có thể ghi lại vào trong file *.log hoặc lưu vào cơ sở dữ liệu hay thông qua một hình thức nhằm mục đích lưu trữ nào đó.

Định dạng của log cũng đa dạng, nó có thể là những dòng kí tự, dưới dạng json hoặc dữ liệu có cấu trúc trong cơ sở dữ liệu. Điều cần lưu ý là log phải đi kèm với dấu vết thời gian (date) và thông báo lỗi cũng như vị trí gây ra lỗi. Chẳng hạn như đây là một bản ghi log ghi lại request đến máy chủ API:

[2022-07-06T04:00:06Z] 200 - 13ms GET - /api/v1/article/pure-function-trong-javascript-tai-sao-chung-ta-nen-biet-cang-som-cang-tot-15 1.54.251.103 - Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36 INFO

Trong node.js có một thư viện giúp ghi log rất mạnh mẽ là winston. Thư viện cung cấp nhiều chức năng mạnh mẽ như logging levels (phân cấp độ), format (định dạng log), transports (đầu ra của log), query, stream…

const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

logger.info('Hello again distributed logs');

Sau đó mọi log được ghi sẽ nằm trong file combined.log, nó không bị trôi và chúng ta dễ dàng xem lại được.

  Về Logging: Mắt thần của bạn trên hệ thống thực

  Hệ thống ERP là gì? Xây dựng một hệ thống ERP chuyên nghiệp

Logging nâng cao

Logging ứng dụng viết bằng node.js

Gọi là nâng cao thế thôi chứ thực ra vẫn là log có chủ đích, có điều chúng ta sẽ dùng những công cụ quản lý log chuyên nghiệp hoặc sử dụng những dịch vụ trên “mây”.

ELK là một stack quản lý log và visualization rất chuyên nghiệp. Bằng cách sử dụng nó chúng ta có thể tổng hợp, theo dõi, tìm kiếm và phân tích dữ liệu log một cách rất nhanh chóng và trực quan thông qua biểu đồ mà bạn tự tạo. Có điều để sử dụng được thành thạo ELK thì phải mất một ít thời gian để bắt đầu.

Ngoài ELK còn rất nhiều nhà cung cấp dịch vụ cũng hỗ trợ chúng ta lưu lại log và tìm kiếm cũng như phân tích… Sentry là một ví dụ, với Sentry chúng ta có thể tổng hợp log từ nhiều nguồn, thống kê và phân tích log. Điểm trừ của các dịch vụ này là phải trả phí nếu như nhu cầu sử dụng lớn, thông thường gói miễn phí sẽ có nhiều hạn chế về chức năng và khả năng lưu trũ. Tuy nhiên nếu dự án vừa và nhỏ hãy thử dùng qua để trải nghiệm những tiện ích mà chúng mang lại, biết đâu trong tương lai bạn sẽ có chi phí để đầu tư thì sao!

Logging ứng dụng viết bằng node.js

Tham khảo việc làm NodeJS hấp dẫn trên TopDev

Tổng kết

Trên đây mình đã nêu ra 3 level cơ bản của logging. Dù là level nào thì mục tiêu của việc đặt log là để theo dõi và dễ dàng gỡ lỗi, nâng cao hơn thì có thống kê và visualization để qua đó dự đoán hoặc khắc phục trong tương lai.

Bài viết gốc được đăng tải tại 2coffee.dev

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

Hàng loạt việc làm IT hấp dẫn trên TopDev đang chờ bạn ứng tuyển..

IT Onsite là gì? Tất tần tật về việc làm Onsite cho dân IT

IT Onsite là gì

Trong thời đại công nghệ bùng nổ như hiện nay, IT Onsite trở thành một mô hình làm việc thu hút sự quan tâm của đông đảo dân IT. Vậy IT Onsite là gì? Ưu và nhược điểm của mô hình này ra sao? Kỹ năng cần thiết cho IT Onsite là gì? Bài viết này sẽ cung cấp cho bạn những thông tin chi tiết về IT Onsite, giúp bạn hiểu rõ hơn về mô hình làm việc đầy tiềm năng này.

IT Onsite là gì? Các hình thức làm việc IT Onsite phổ biến

IT Onsite là gì

IT Onsite là mô hình làm việc mà nhân viên IT được cử đến trực tiếp địa điểm của khách hàng hoặc dự án để thực hiện công việc. Thay vì làm việc tại văn phòng công ty, nhân viên IT Onsite sẽ làm việc và tương tác trực tiếp với khách hàng, giúp giải quyết các vấn đề kỹ thuật một cách hiệu quả và nhanh chóng.

Có hai hình thức làm việc IT Onsite phổ biến như sau:

Tự tìm kiếm việc làm Onsite trên các trang tuyển dụng

  • Các chuyên gia IT có thể tự tìm kiếm và ứng tuyển vào các vị trí IT Onsite phù hợp với năng lực và mong muốn của mình.
  • Họ cần đáp ứng đủ các yêu cầu về kiến thức chuyên môn, kinh nghiệm làm việc và kỹ năng ngoại ngữ cần thiết.
  • Đây là cách đơn giản nhưng đòi hỏi sự tự tin và năng lực cá nhân.

Được công ty cử đi làm việc Onsite

  • Các công ty cung cấp dịch vụ IT hoặc có hợp tác với đối tác/khách hàng sẽ cử nhân viên của mình đến làm việc Onsite.
  • Điều này giúp hỗ trợ trực tiếp đối tác/khách hàng và đào tạo, nâng cao kinh nghiệm thực tế cho nhân viên.
  • Các công ty chuyên cung cấp dịch vụ IT Onsite thường tạo nhiều cơ hội làm việc theo hình thức này cho nhân sự.

Cơ hội và thách thức khi làm việc Onsite

Cơ hội và thách thức khi làm việc Onsite

Làm việc Onsite mang lại cơ hội và thách thức đặc biệt cho những người làm trong lĩnh vực công nghệ thông tin và các lĩnh vực liên quan. Dưới đây là một số cơ hội và thách thức cụ thể:

1. Cơ hội

Trải nghiệm môi trường làm việc mới: Làm việc Onsite cho phép nhân viên IT được làm quen và trải nghiệm môi trường làm việc mới tại công ty của khách hàng, từ đó mở rộng tầm nhìn và hiểu biết về các quy trình, văn hóa làm việc khác nhau.

  • Nâng cao kỹ năng chuyên môn: Khi làm việc trực tiếp với hệ thống CNTT của khách hàng, các chuyên gia IT có cơ hội áp dụng và nâng cao kiến thức chuyên môn của mình trong các tình huống thực tế phức tạp.
  • Cơ hội phát triển sự nghiệp: Làm việc Onsite giúp các nhân viên IT tích lũy kinh nghiệm đa dạng, mở rộng mạng lưới quan hệ và nâng cao giá trị bản thân, từ đó tạo cơ hội phát triển sự nghiệp tốt hơn.
  • Thu nhập hấp dẫn: Nhiều công ty sẵn sàng trả mức lương cao hơn cho nhân viên Onsite do tính chất công việc đòi hỏi sự di chuyển và làm việc tại các địa điểm khác nhau.

2. Thách thức

Khó khăn trong việc thích nghi: Làm việc trong môi trường mới với quy trình, văn hóa và đồng nghiệp khác có thể gây khó khăn cho các nhân viên IT trong quá trình thích nghi ban đầu.

  • Áp lực công việc cao: Các dự án Onsite thường có yêu cầu nghiêm ngặt về tiến độ và chất lượng, dẫn đến áp lực công việc cao cho nhân viên IT.
  • Vấn đề di chuyển và sống xa gia đình: Trong một số trường hợp, nhân viên IT phải di chuyển xa và sống tách biệt với gia đình trong thời gian dài, gây ra khó khăn về mặt cá nhân và gia đình.
  • Rào cản ngôn ngữ và văn hóa: Nếu làm việc tại một quốc gia khác, rào cản ngôn ngữ và khác biệt văn hóa có thể gây khó khăn trong giao tiếp và hợp tác với đồng nghiệp địa phương.

Để đạt được thành công trong công việc Onsite, các chuyên gia CNTT cần sự chuẩn bị tốt về chuyên môn, kỹ năng giao tiếp và khả năng thích nghi cao. Đồng thời, họ cũng cần cân nhắc kỹ lưỡng cơ hội và thách thức trước khi quyết định lựa chọn hình thức làm việc này.

  Việc làm remote là gì? Top việc làm remote HOT nhất hiện nay

  Vừa đi vừa code – Freelance, Remote, Hybrid hay Office Working?

Lập trình viên cần những kỹ năng gì khi làm việc Onsite?

Để có thể làm việc hiệu quả trong môi trường Onsite, các lập trình viên cần sở hữu một số kỹ năng quan trọng sau:

1. Kỹ năng chuyên môn vững vàng

Kiến thức sâu rộng về ngôn ngữ lập trình, cơ sở dữ liệu, kiến trúc phần mềm và các công nghệ liên quan. Có kinh nghiệm thực tế trong lĩnh vực lập trình, đã từng tham gia phát triển các dự án phần mềm thực tế, có khả năng áp dụng kiến thức đã học vào thực tế để giải quyết vấn đề. Có kiến thức về các công nghệ mới nhất trong lĩnh vực lập trình, chẳng hạn như cloud computing, machine learning, DevOps,…

2. Kỹ năng giao tiếp và làm việc nhóm

Kỹ năng giao tiếp và làm việc nhóm

Khả năng giao tiếp hiệu quả là rất quan trọng khi làm việc Onsite. Lập trình viên cần có khả năng diễn đạt ý kiến một cách rõ ràng và hiểu biết cách tương tác với khách hàng và đồng nghiệp. Lập trình viên cũng cần có khả năng giao tiếp tiếng Anh tốt để có thể làm việc hiệu quả với khách hàng và đồng nghiệp quốc tế.

3. Kỹ năng giải quyết vấn đề và tư duy phân tích

Lập trình viên cần có khả năng phát hiện và giải quyết các vấn đề kỹ thuật một cách nhanh chóng và hiệu quả để đảm bảo tiến độ dự án. Có tư duy logic và kỹ năng debug để xử lý lỗi và sự cố.

4. Khả năng quản lý thời gian và chịu áp lực

Lập trình viên cần trang bị kỹ năng lập kế hoạch và quản lý công việc hiệu quả để đáp ứng các deadline. Làm việc tốt trong môi trường áp lực và khối lượng công việc lớn. Ưu tiên và phân chia công việc một cách phù hợp.

5. Kỹ năng thích nghi và học hỏi

Để làm việc onsite đòi hỏi developer phải có khả năng học hỏi nhanh chóng, linh hoạt trong việc xử lý các tình huống mới, sẵn sàng học hỏi và cập nhật kiến thức liên tục trong lĩnh vực CNTT luôn thay đổi. Có khả năng hòa nhập với văn hóa làm việc của công ty khách hàng, tôn trọng sự khác biệt về văn hóa.

Ngoài ra, các lập trình viên Onsite cũng cần có tinh thần trách nhiệm cao, sự kiên nhẫn và khả năng làm việc độc lập. Họ phải sẵn sàng đối mặt với những thách thức và áp lực mới trong môi trường làm việc khác biệt.

Tham khảo việc làm IT remote hấp dẫn trên TopDev

Những điều cần lưu ý khi làm IT Onsite

Làm việc IT Onsite mang đến nhiều cơ hội cho cả cá nhân và doanh nghiệp, tuy nhiên cũng tiềm ẩn nhiều thách thức. Để thành công trong mô hình này, bạn cần lưu ý những điều sau:

Trước khi đi làm Onsite

  • Chuẩn bị kỹ lưỡng về kiến thức và kỹ năng: Nắm vững kiến thức chuyên môn, kỹ năng giao tiếp, kỹ năng thích nghi và các kỹ năng cần thiết khác cho công việc.
  • Tìm hiểu về văn hóa doanh nghiệp và văn hóa địa phương: Hiểu rõ văn hóa làm việc của công ty khách hàng và văn hóa địa phương nơi bạn sẽ sinh sống để có thể hòa nhập nhanh chóng.
  • Chuẩn bị các thủ tục cần thiết: Xin visa, tìm chỗ ở, sắp xếp bảo hiểm y tế, v.v.
  • Học tiếng Anh: Nâng cao khả năng giao tiếp tiếng Anh để có thể làm việc hiệu quả với khách hàng và đồng nghiệp quốc tế.

Khi làm việc Onsite

  • Giao tiếp hiệu quả: Giao tiếp cởi mở, rõ ràng và thường xuyên với khách hàng, đồng nghiệp và cấp trên để đảm bảo mọi người hiểu rõ về công việc và tiến độ.
  • Tôn trọng văn hóa: Tôn trọng văn hóa làm việc của công ty khách hàng và văn hóa địa phương, tránh những hành vi thiếu tôn trọng hoặc gây hiểu lầm.
  • Thích nghi với môi trường mới: Thích nghi nhanh chóng với môi trường làm việc mới, sẵn sàng học hỏi những điều mới và thay đổi cách làm việc nếu cần thiết.
  • Chủ động và trách nhiệm: Chủ động trong công việc, hoàn thành tốt nhiệm vụ được giao và chịu trách nhiệm cho kết quả công việc.

Tóm lại

IT Onsite là mô hình làm việc đầy tiềm năng với nhiều lợi ích cho cả doanh nghiệp và nhân viên IT. Tuy nhiên, để thành công trong mô hình này, các developer cần trang bị cho mình những kỹ năng cần thiết, chuẩn bị tinh thần cho những thách thức có thể gặp phải và luôn giữ thái độ tích cực, cầu tiến.

Làm việc IT Onsite là cơ hội tuyệt vời để bạn học hỏi kinh nghiệm mới, mở rộng mối quan hệ và phát triển sự nghiệp. Hãy nắm bắt cơ hội này và chinh phục những thử thách để gặt hái thành công!

Xem thêm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

[Clean code- JS] Đừng viết switch case như này nữa!

switch case

Bài viết được sự cho phép bởi tác giả Sơn Dương

Không biết các bạn thế nào, chứ bản thân mình mỗi khi viết một dòng code nào đó đều nghĩ: “Liệu mình viết code như này đã clean code chưa?”, “Liệu code của mình có khiến ai đó văng tục không nhỉ?”.

Tất nhiên, mỗi người sẽ có phong cách và sở thích viết code khác nhau, nhưng nhìn chung là nên tuân theo nguyên tắc dễ đọc, dễ hiểu nhất có thể.

Bạn có để ý là trong các ngôn ngữ lập trình nói chung, Javascript nói riêng, các câu lệnh liên quan tới điều kiện như: if..elseswitch…case được sử dụng rất nhiều không? Đặc biệt là khối lệnh switch…case, thực sự mình không thích sử dụng khối lệnh này một chút nào, mình có cảm giác nó cứ hard-code kiểu gì ấy. Nhưng với nhiều logic dự án, không dùng không được. Đó là lý do mình suy nghĩ: liệu có giải pháp nào thay thế cho khối lệnh switch…case hay không?

Qua bài viết này, chúng ta sẽ cùng nhau tìm hiểu giải pháp viết code thay thế cho khối lệnh switch..case để code của bạn sạch đẹp hơn nhé.

Lưu ý: Nội dung bài viết này giả sử mặc định bạn đã biết cách sử dụng câu lệnh switch…case rồi. Mình sẽ không giải thích chi tiết lại cú pháp câu lệnh này nữa.

Khối lệnh switch case là gì?

Khối lệnh này có nhiệm vụ cực kỳ đơn giản, giải thích kiểu “nông chí điền” là nó nhận đầu vào và tương ứng với nó là một đầu ra. Để dễ hình dung hơn, khối lệnh này giống như hình ảnh phân luồng giao thông: xe máy thì đi vào luồng dành cho xe máy, oto thì vào luồng oto.v.v..

Phân luồng giao thông

Dưới đây là một ví dụ về một đoạn code sử dụng switch..case

function displayPet(pet = 'dog') {
  switch (pet) {
    case 'lizard':
      console.log('I own a lizard');
      break;
    case 'dog':
      console.log('I own a dog');
      break;
    default:
      console.log("I don't own a pet");
      break;
  }
}

Về cơ bản, khối lệnh switch case tương tự như dùng if…else. Và thực tế, bạn hoàn toàn có thể thay thế bằng câu lệnh if…else như dưới đây

function displayPet(pet = 'dog') {
  if (pet == 'lizard') {
    console.log('I own a lizard');
  } else if (pet == 'dog') {
    console.log('I own a dog');
  } else {
    console.log("I don't own a pet");
  }
}
  • Khi bạn phải sử dụng if…else với nhiều điều kiện quá thì nên nghĩ tới dùng switch…case. Nhìn câu lệnh switch…case vẫn có vẻ tường minh và dễ đọc đúng không! Tuy nhiên… có một chữ nhiên ở đây. Bạn đọc tiếp nhé.

Vấn đề của khối lệnh switch

Nhìn chung thì dùng câu lệnh switch…case không có gì sai cả. Nhưng đôi khi, bạn sẽ thấy khối lệnh switch case nó dài vô tận, kiểu như dưới đây.

const handleKeyUp = (e, target) => {
  // if the key is 'Enter'
  if(e.keyCode === 13) {
      switch (target) {
          case 'firstName':
this.lastNameRef.current.lastChild.firstChild.focus()
              break
          case 'lastName':
              this.yobRef.current.lastChild.firstChild.focus()
              break
          case 'yob':
              this.bioRef.current.lastChild.focus()
              break
          case 'bio':

this.emailRef.current.lastChild.firstChild.focus()
              break
          case 'email':

this.passRef.current.lastChild.firstChild.focus()
              break
          case 'password':

this.passConfRef.current.lastChild.firstChild.focus()
              break
          case 'passwordConf':

this.countryRef.current.lastChild.firstChild.focus()
              break
          case 'country':

this.cityRef.current.lastChild.firstChild.focus()
              break
          case 'city':

this.occupationRef.current.lastChild.firstChild.focus()
              break
          case 'occupation':

this.lang1Ref.current.lastChild.firstChild.focus()
              break
          case 'language1':

this.lang2Ref.current.lastChild.firstChild.focus()
              break
          case 'language2':

this.lang3Ref.current.lastChild.firstChild.focus()
              break
          case 'language3':
              this.submitRef.current.focus()
              break
          default:

this.firstNameRef.current.lastChild.firstChild.focus()
              break
       }
  }
}

Nhìn đã  thấy mỏi rùi đúng không?

switch case

Khi soi kỹ các nguyên tắc của clean code thì bạn sẽ thấy một loạt vấn đề ở đây.

  • Đầu tiên, số lượng dòng code lớn hơn nhiều nếu so với cách viết if…else. Bạn sẽ phải ngắt điều kiện thử công bằng câu lệnh break.
  • Vấn đề thứ 2 mới nghiệm trọng nhưng dễ bị bỏ qua. Đó là nó vi phạm nguyên tắc Single Responsibility Principle (SRP). Tức là một hàm làm nhiều hơn một việc.
  • Vấn đề thứ 3 là vi phạm nguyên tắc Open Closed Principle (OCP). Tức là mỗi khi phải thêm một loại điều kiện, bạn bắt buộc phải sửa lại logic của hàm.

Vậy chúng ta phải làm thế nào? Có giải pháp viết code nào ngon lành hơn không? Với những bài toán như này thì không dùng switch case thì dùng cái gì? Tác giả lại chém gió rồi!

Hihi. Tất nhiên là có giải pháp thay thế rồi. Đó là sử dụng Object literal lookup

  Quy tắc viết code dễ đọc, tối ưu và dễ bảo trì nhất

  Viết clean code: Code “đẹp trai” và code “xấu gái” có gì hay ho?

Object Literal lookups

Với Javascript nói riêng, chúng ta sử dụng Object ở mọi nơi, mọi lúc. Vậy tại sao chúng ta không áp dụng Object vào trong trường hợp này. Việc sử dụng Object cho chúng ta cái nhìn thân quen hơn vì theo thống kê thì việc sử dụng Object và Array chiếm nhiều nhất trong cách viết code của chúng ta.

Ok, quay trở lại hàm handleKeyUp() dài ngoằng ở trên, chúng ta có thể viết lại như sau:

const cases = {
  'firstName': this.lastNameRef.current.lastChild.firstChild,
  'lastName': this.yobRef.current.lastChild.firstChild,
  'yob': this.bioRef.current.lastChild,
  'bio': this.emailRef.current.lastChild.firstChild,
  'email': this.passRef.current.lastChild.firstChild,
  'password': this.passConfRef.current.lastChild.firstChild,
  'passwordConf': this.countryRef.current.lastChild.firstChild,
  'country': this.cityRef.current.lastChild.firstChild,
  'city': this.occupationRef.current.lastChild.firstChild,
  'occupation': this.lang1Ref.current.lastChild.firstChild,
  'language1': this.lang2Ref.current.lastChild.firstChild,
  'language2': this.lang3Ref.current.lastChild.firstChild,
  'language3': this.submitRef.current,
}

// Định nghĩa hàm
const handleKeyUp = (e, target) => {
  if(e.keyCode === 13) cases[target].focus()
}

// Lúc sử dụng
handleKeyUp(event, "email")

Giải pháp đơn giản là chúng ta đặt các điều kiện vào trong một Object. Việc Object lookup rất nhanh, đặc biệt khi chúng có kích thước lớn lên theo thời gian.

Ngoài ra, với cách làm trên, mỗi khi phải thêm điều kiện mới, bạn không cần phải sửa lại logic của hàm handleKeyup(), mà chỉ đơn giản là thêm vào trong Object (không có logic gì ở đây cả).

Bạn thấy giải pháp mới này thế nào? Có phù hợp với phong cách viết code của bạn không? Hãy để lại bình luận bên dưới để mọi người cùng trao đổi nhé.

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

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

Distributed Caching – Một sự lựa chọn hoàn hảo về caching cho microservice

Distributed Caching

Bài viết được sự cho phép bởi tác giả Vũ Thành Nam

Nếu bạn có ý định triển khai ứng dụng trên nhiều servers hoặc microservices thì bạn cần nghĩ tới giải pháp tập trung caching lại một service.

Đó chính là giải pháp mà bài viết này mình sẽ đi chi tiết ngay dưới đây. Distributed Caching!

Distributed Caching

Distributed Caching là gì?

Distributed cache được chia sẻ bởi nhiều app servers. Thông tin trong cache không được lưu trong bộ nhớ của một web server riêng biệt và dự liệu được cache là có sẵn trong tất cả các server của ứng dụng.

Distributed cache có thể cải thiện một cách đáng kể khả năng phản hồi của ứng dụng, từ đó data có thể được nhận từ cache sẽ nhanh hơn nhiều so với relational database (hoặc web service).

Distributed cache cung cấp dữ liệu giống nhau và nhất quán trên nhiều servers hay services nếu một server bị trục trặc hay khởi động lại thì dữ liệu được lưu trữ vẫn còn nằm trên những server khác.

Ngoài ra nó còn có thể mở rộng được (scalability). Ví dụ khi bạn triển khai mô hình microservices bạn muốn caching dữ liệu lại trên mỗi cluster, bạn có thể dễ dàng mở rộng các dung lượng size hoặc gắn thêm nhiều node mới cho service caching này của bạn. Khắc phục được hạn chế dung lương của memory cache.

Distributed Caching là gì?

Ưu điểm của distributed caching?

Có lẽ Distributed caching sinh ra để khắc phục những nhược điểm vốn có của In-memory caching. Cụ thể là:

– Liên lạc (Communicate): Dữ liệu trong cache được liên lạc trên tất cả các services. Người dùng không thấy sự khác biệt kết quả cho dù service nào xử lý request của họ. Ngoài ra nó còn là một kênh giao tiếp thông tin trong microservices nữa.

– Sẵn sàng (Availability): Sử dụng cache còn giúp đỡ về tính sẵn sàng cho toàn hệ thống. Dữ liệu trong cache vẫn tồn tại khi bất kỳ service restart và deployments.

– Mở rộng (Scalability) Một service riêng biệt có thể gỡ bỏ hoặc thêm mới vào mà không ảnh hưởng đến cache service. Không những đáp ứng được về khả năng mở rộng, Distributed cache còn có thể mở rộng nhanh chóng, không ảnh hưởng về mặt tính năng

– Hiệu năng (Performance): Không thể phủ nhận là khi sử dụng cache, phần hiệu năng cho end user được tăng lên một cách rõ rệt. Trải nghiệm tuyệt vời hơn, không còn thời gian chờ đợi. Ngoài ra distributed caching còn giữ nguyên tất cả các lợi ích của In-memory caching như: giảm thiểu connection tới database, tăng tốc độ xử lý, cải thiện hiệu suất…

Vậy nhược điểm của distributed caching thì sao?

– Chi phí (Cost): Có lẽ đây là vấn đề đầu tiên được nhắc đến. Khi xây dựng một service tổng hợp caching riêng biệt thì chi phí xây dựng và vận hành nó cũng phải cân nhắc đầu tiên. Tuy nhiên chi phí bỏ ra để xây dựng hoặc thuê các cloud service sẽ giúp ứng dụng của bạn linh hoạt và tiện dụng hơn.

– Thời gian trao đổi (Response time): Tuy rằng về hiệu suất Distributed cache vẫn có khả năng đáp ứng cao nhưng khi so với In-memory cache nó vẫn chậm hơn vì bạn phải dùng 1 cache server riêng biệt thông qua một số giao thức đặc biệt để lấy và trao đổi dữ liệu cho service trước khi trả cho request.

– Triển khai (Deployment): Nếu bạn tự xây dựng một service cache thì bạn cũng tốn khá nhiều công sức để triển khai vận hành nó. Còn nếu bạn sử dụng hàng xây dựng sẵn bạn cũng phải setup tích hợp với cloud service như Azure, AWS, Google (Mình sẽ có bài viết khác viết về Distributed cache in cloud). Mà mỗi dịch vụ của bên thứ ba này có cấu hình khác nhau, bạn phải xây dựng một ứng dụng linh hoạt để có thể thay đổi khi thay đổi bên thứ ba.

Quản lý distributed caching

Thông thường thì hệ thống sẽ đánh dấu thời điểm hết hạn (expire time) của dữ liệu, nếu quá thời hạn thì cache sẽ bị xóa đi như In-memory cache mình đã đề cập ở bài viết trước.

Tuy nhiên đối với Distributed cache thì bạn sẽ xử lý tốt hơn khi tính toán expire time của cache và nó cũng là một bài toán khá đau đầu tùy vào logic của hệ thống đang phát triển.

Có 6 cache xóa cache cơ bản sau:

– First In First Out (FIFO): Các dữ liệu được ghi vào cache trước thì sẽ được ưu tiên xóa đi trước mà không quan tâm tới tần suất hay số lượng truy cập của nó.

– Last In First Out (LIFO): Sẽ ưu tiên xóa những dữ liệu được ghi cũ nhất mà không quan tâm tới tần suất hay số lượng truy cập của nó.

– Least Recently Used (LRU): Sẽ xóa những dữ liệu ít được truy cập

– Most Recently Used (MRU): Sẽ xóa những dữ liệu được truy cập thường xuyên  gần đây nhất.

– Least Frequently Used (LFU): Sẽ xóa những dữ liệu ít được truy cập nhất.

– Random Recently (RR): Sẽ chọn ra một dữ liệu bất kỳ trên cache để thực hiện thao tác xóa.

Các loại distributed caching trong net core

Thực tế distributed caching chỉ là một ý tưởng chung và nó có rất nhiều các bên thứ ba thực hiện hóa nó. Và mỗi ngôn ngữ hay framework cũng đều có những thư viên hỗ trợ vấn đề thực hiện hóa này.

Đối với dotnet nói riêng thì mình biết 3 thư viện hỗ trợ cho 3 loại distributed caching khác nhau và tất nhiên nó cũng có ưu và nhược điểm riêng của nó.

– SQL Server distributed cache: Package Microsoft.Extensions.Caching.SqlServer

– Redis distributed cache: Package Microsoft.Extensions.Caching.StackExchangeRedis

– NCache distributed cache: Package NCache.Microsoft.Extensions.Caching.OpenSource

Mình sẽ hẹn bạn chi tiết sử dụng từng loại thư viện ở một bài viết khác. Với bài viết này mình sẽ nói cụ thể về thư viện thứ 2 bên trên để làm ví dụ minh họa nhé. Và đây cũng là một trong những loại distributed caching phổ biến nhất hiện nay.

Cách sử dụng distributed cache

Trước khi bắt đầu đi cụ thể về Redis distributed cache thì mình đi sơ qua một interface hữu dụng để làm việc khi làm việc với distributed cache trong dot net core.

Để thực hiện hóa bất kỳ loại nào bên trên thì dotnet đã trừu tượng hóa một interface để có thể tương tác linh hoạt dễ dàng cho anh em lập trình viên. Đó chính là IDistributedCache được tích hợp với một package common là Microsoft.Extensions.Caching.Distributed, package này cung cấp các phương thức chính như:

– Get(), GetAsync(): Với tham số là một key kiểu string và nhận về một item đã được cache như một mảng byte[] nếu được tìm thấy trong cache.

– Set(), SetAsync(): Thêm một item (mảng byte[]) tới cache sử dụng một string key.

– Refresh(), RefreshAsync(): Làm mới một item trong cache dựa trên key của nó, đặt lại thời hạn của timeout.

– Remove(), RemoveAsync(): Gỡ bỏ một item cache dựa trên key của nó.

Với interface này bạn có thể tung hoành thực hiện ý tưởng của mình với distributed cache nhé.Để có thể đi tiếp thì bạn lại phải hiểu Redis là gì và Redis cache là gì thì mới có thể sử dụng được nó một cách hiệu quả.

Redis cache là gì?

Redis là một database open-source in-memory, cái mà thường xuyên được sử dụng như một distributed cache. Đừng nghĩ redis chỉ sử dụng làm caching nhé, nó còn có thể làm message bus, pub/sub (Mình cũng sẽ có bài viết khác nói về chủ đề này) hay sử dụng làm distributed lock request (Đó chính là redlock, mình cũng sẽ có bài viết riêng nói về chủ đề này).

Redis được viết bằng ngôn ngữ C cung cấp các kiểu data như strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, và streams (Đừng chủ quan với các kiểu data type này vì nó chính là cái bạn sử dụng để lưu trữ đó. Cụ thể từng datatype thì bạn có thể đọc thêm ở trang chủ redis nhé).

Về mặt cơ bản thì nó là một dạng kiểu key-value (key là khóa để bạn có thể truy vấn và nó là duy nhất, value là dữ liệu bạn lưu trữ với datatype tương ứng ở trên).

Nó cũng được sử dụng trong nhiều website lớn như Twitter, Github, Pinterest, Snapchat, Flickr, Digg, Stackoverflow… Đặc biệt hơn nữa là nó có thể sử dụng trên rất nhiều ngôn ngữ phổ biết khác nhau (Hiện tại là 54 ngôn ngữ)

Một số nhà phát triển cloud cũng đã cung cấp các dịch vụ hỗ trợ redis trên dịch vụ đám mấy của họ để có thể dễ dàng triển khai trên nền tàng tương ứng như Azure Cache for Redis, Amazon ElastiCache for Redis và Memorystore

Ở bài viết này mình sẽ hướng dẫn các bạn build redis local để bạn có thể hiểu bản chất vấn đề, còn thực tế bạn dùng dịch vụ bên thứ ba nào thì có thể triển khai tương tự.

Có 2 cách setup redis trên local đó là:

– Cài đặt Redis Server, bạn download trên trang chủ và cài đặt bình thường với hệ điều hành tương ứng. Sau khi download về thì bạn chạy redis-server.exe đây chính là cache service mà bạn sử dụng làm server lưu trữ tập trung cache data của bạn. Khi ứng dụng này tắt nghĩa là cache server của bạn ngừng hoạt động và bạn sẽ mất hết dữ liệu trong cache. Cẩn thận khi dùng cách host trực tiếp này nhé!
Để test lưu và truy vấn dữ liệu thì trong file zip bạn download được có chưa cả file redis-cli.exe, đây chỉnh là CLI dùng để thao tác với redis phía client thông qua câu lệnh.  Khi chạy nó lên thì nó sẽ kết nối với cache server trên để giúp bạn test hoặc truy vấn giá trị của cache.

– Cách thứ 2 là dùng docker, vì cách đầu tiên mình không nghĩ nó hữu dụng khi deploy do luôn phải đảm bảo nó running và không thể tắt bật tắt bật nếu không muốn dữ liệu của bạn bị mất. Redis có hỗ trợ docker image và mình có tạo sẵn file docker-composer trong demo của mình, bạn có thể lấy sử dụng. Việc của bạn là chỉ cần chạy câu lệnh này để host redis image lên trên docker mà thôi


docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d --build redis
Distributed Caching là gì?

Khi đã có Redis cache service rồi, để thao tác với dữ liệu bằng GUI thì bạn sử dụng tool redis-desktop-manager hoặc bản portable mình cũng để trong source code demo.

Đến đây bạn có thể kết nỗi và check xem redis local của bạn đã thực sự hoạt động bằng cách connect qua tool nhé!

Address: 127.0.0.1
Port: 6379
Distributed Caching là gì?

Tích hợp Redis Cache với AspNet Core

Khi đã có cache service rồi, đảm bảo nó chạy thành công rồi thì bạn có thể sẵn sàng tích hợp với ứng dụng của bạn.

Tương tự như các bước sử dụng của In-memory cache thì Redis cache tích hợp cũng khá đơn giản.

Bước 1: Thêm connection vào appseting.json

"RedisCacheServerUrl": "127.0.0.1:6379",

Bước 2: Config connection trong startup.cs

services.AddStackExchangeRedisCache(options =>
            {
                options.Configuration = Configuration["RedisCacheServerUrl"];
            });

Bước 3: Sử dụng dependence injection để inject IDistributedCache

public class IndexModel : PageModel
{
    private readonly ILogger<IndexModel> _logger;
    private readonly IDistributedCache _cache;
    private readonly DataContext _dataContext;
    
    public IndexModel(ILogger<IndexModel> logger, IDistributedCache cache, DataContext dataContext)
    {
        _logger = logger;
        _cache = cache;
        _dataContext = dataContext;
    }
}

Bước 4: Set hoặc SetAsync data cho cache bao gồm key và value

// Add data in cache
await _cache.SetAsync(cacheKey, newDataToCache, options);

Bước 5: Lấy dữ liệu từ cache ta dùng phương thức Get hoặc GetAsync

// Get data from cache
var cachedData = await _cache.GetAsync(cacheKey);

Bước 6: Sử dụng Refresh hoặc RefreshAsync nếu cần cập nhật giá trị

Bước 7: Sử dụng Remove hoặc RemoveAsync nếu cần xóa cache nào đó

Cũng khá đơn giản phải không nào, còn về các options setting như AbsoluteExpiration và SlidingExpiration thì tương tự như In-memory cache bạn có thể đọc lại bài viết trước để hiểu nó là gì và khi nào sử dụng option này.

// set cache options
var options = new DistributedCacheEntryOptions()
             .SetAbsoluteExpiration(DateTime.Now.AddMinutes(2))
             .SetSlidingExpiration(TimeSpan.FromMinutes(1));

Nếu bạn lưu data vào cache dưới dạng json thì sử dụng hàm SerializeObject và DeserializeObject khi đưa vào và lấy ra sử dụng.

var cacheKey = "GET_ALL_PRODUCTS";
List<Product> products = new List<Product>();


// Get data from cache
var cachedData = await _cache.GetAsync(cacheKey);
if (cachedData != null)
{
    // If data found in cache, encode and deserialize cached data
    var cachedDataString = Encoding.UTF8.GetString(cachedData);
    products = JsonConvert.DeserializeObject<List<Product>>(cachedDataString);
}
else
{
    // If not found, then fetch data from database
    products = await _dataContext.Products.ToListAsync();


    // serialize data
    var cachedDataString = JsonConvert.SerializeObject(products);
    var newDataToCache = Encoding.UTF8.GetBytes(cachedDataString);


    // set cache options
    var options = new DistributedCacheEntryOptions()
        .SetAbsoluteExpiration(DateTime.Now.AddMinutes(2))
        .SetSlidingExpiration(TimeSpan.FromMinutes(1));


    // Add data in cache
    await _cache.SetAsync(cacheKey, newDataToCache, options);
}

Cũng khá dễ dàng đúng không nào!

Trên đây là những kiến thức cơ bản về Distributed Cache và ví dụ minh họa với Redis Cache. Hi vọng bài viết có thể giúp ích được cho bạn phần nào trong quá trình sử dụng.

Theo dõi mình để đọc thêm những bài viết hay ho khác nhé!

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

Xem thêm các bài viết liên quan:

Xem thêm Việc làm IT hấp dẫn trên TopDev

.NET Framework là gì? Khám phá sức mạnh của NET Framework

NET Framework là gì

Trong thế giới công nghệ luôn phát triển không ngừng, .NET Framework đã trở thành một trong những nền tảng phát triển phần mềm hàng đầu và được sử dụng rộng rãi trên toàn cầu. Được phát triển bởi Microsoft, .NET Framework cung cấp một môi trường lập trình đa năng, mạnh mẽ và hiệu quả. Hãy cùng TopDev tìm hiểu về điều làm nên sự thành công của .NET Framework và tại sao nó lại trở thành lựa chọn hàng đầu của nhiều developer.

.NET Framework là gì?

.NET Framework là gì?

.NET Framework là một nền tảng phát triển phần mềm mạnh mẽ và toàn diện do Microsoft phát triển. Nó cung cấp một môi trường lập trình đa năng, bao gồm môi trường thực thi (Common Language Runtime – CLR), thư viện lớn các API, và các công cụ hỗ trợ để xây dựng các ứng dụng chất lượng cao trên nhiều nền tảng khác nhau như Windows, Windows Server, và Windows Phone.

Xem ngay việc làm .NET lương thưởng hấp dẫn tại TopDev

Đặc điểm nổi bật của .NET Framework

Đặc điểm nổi bật của .NET Framework

Microsoft .NET Framework cung cấp một loạt các chức năng quan trọng cho quá trình phát triển phần mềm, bao gồm:

  • Hỗ trợ đa ngôn ngữ lập trình: 

Một trong những điểm mạnh của .NET Framework hỗ trợ nhiều ngôn ngữ lập trình khác nhau như C#, Visual Basic, F#, và nhiều ngôn ngữ khác dựa trên .NET. Điều này mang lại sự linh hoạt và tự do lựa chọn cho các lập trình viên, giúp họ có thể sử dụng ngôn ngữ mà họ thích nhất hoặc phù hợp nhất với dự án của mình.

  • Thư viện giàu tính năng: 

.NET Framework cung cấp một bộ sưu tập khổng lồ các thư viện và API, bao gồm các chức năng từ đồ họa, mạng, truy cập cơ sở dữ liệu, đến xử lý văn bản, thao tác tập tin, và nhiều hơn nữa.

  • Môi trường thực thi đáng tin cậy (CLR): 

Common Language Runtime (CLR) là môi trường thực thi của .NET Framework, đảm bảo môi trường chạy an toàn, bảo mật và hiệu quả cho các ứng dụng .NET.

  • Tích hợp với các công cụ phát triển của Microsoft: 

.NET Framework được tích hợp chặt chẽ với các công cụ phát triển của Microsoft như Visual Studio, Visual Studio cung cấp một môi trường lập trình tích hợp (IDE) mạnh mẽ, giúp các lập trình viên có thể viết mã, gỡ lỗi, và triển khai ứng dụng một cách dễ dàng và hiệu quả hơn. Ngoài ra, .NET Framework cũng được hỗ trợ bởi các công cụ và dịch vụ khác của Microsoft như Azure, SQL Server, và nhiều hơn nữa.

>> Xem thêm: Hướng dẫn cài .NET framework 3.5 trên Window

Ưu điểm và nhược điểm của .NET Framework là gì?

Ưu điểm và nhược điểm của .NET Framework

.NET Framework là nền tảng được sử dụng rộng rãi, cùng TopDev tìm hiểu những ưu và nhược điểm của nền tảng này trong việc phát triển phần mềm.

Ưu điểm

Microsoft .NET Framework có nhiều ưu điểm giúp các developer phát triển phần mềm một cách hiệu quả và linh hoạt, bao gồm:

  • Tính tương thích:

.NET Framework đảm bảo tính tương thích cao với các hệ điều hành Windows. Điều này đảm bảo rằng ứng dụng được xây dựng trên .NET Framework có thể chạy một cách ổn định trên các phiên bản Windows khác nhau.

  • Đa nền tảng: 

.NET Framework không chỉ hỗ trợ phát triển ứng dụng Windows mà còn cung cấp khả năng phát triển ứng dụng Web, Mobile và Cloud. Điều này cho phép nhà phát triển tạo ra các ứng dụng đa dạng trên nhiều nền tảng khác nhau.

  • Đa ngôn ngữ: 

.NET Framework hỗ trợ nhiều ngôn ngữ lập trình, bao gồm C#, VB.NET, F# và C++/CLI. Điều này cho phép lập trình viên lựa chọn ngôn ngữ phù hợp và tiện lợi nhất cho dự án của mình.

  • Thư viện và công cụ hỗ trợ: 

.NET Framework đi kèm với một bộ thư viện và công cụ phong phú, cho phép nhà phát triển tiếp cận các tài nguyên sẵn có để tăng tốc quá trình phát triển. Các thư viện này cung cấp các chức năng và tính năng phổ biến, từ xử lý dữ liệu đến giao tiếp mạng và quản lý tệp tin.

  • Hiệu suất và tốc độ: 

.NET Framework được tối ưu hóa để đạt hiệu suất tốt và tốc độ thực thi cao. Việc sử dụng mô hình quản lý bộ nhớ tự động (Garbage Collector) giúp giải phóng bộ nhớ không còn sử dụng và tối ưu hóa việc quản lý bộ nhớ.

  • Quản lý và bảo mật dữ liệu: 

.NET Framework cung cấp các công cụ và chức năng để quản lý và bảo mật dữ liệu một cách hiệu quả. Các tính năng bảo mật như kiểm soát truy cập, mã hóa dữ liệu và kiểm tra lỗi giúp bảo vệ ứng dụng khỏi các mối đe dọa bảo mật.

>> Xem thêm: Dùng .NET framework với ironpython

Nhược điểm

Tuy nhiên, .NET Framework cũng tồn tại một số nhược điểm và bất cập như sau:

  • Yêu cầu hệ điều hành Windows: 

.NET Framework chỉ chạy trên hệ điều hành Windows. Điều này có nghĩa là người dùng chỉ có thể chạy các chương trình được thiết kế dựa trên .NET Framework trên các máy tính đã cài đặt .NET Framework.

  • Kích thước lớn: 

.NET Framework có kích thước lớn, gây trễ trong quá trình cài đặt và khởi chạy ứng dụng. Việc tải và cài đặt .NET Framework cần tốn thời gian và không phù hợp cho các máy tính có kết nối internet chậm hoặc có dung lượng lưu trữ hạn chế.

  • Đòi hỏi kinh nghiệm và kiến thức: 

Sử dụng .NET Framework đòi hỏi người phát triển có kiến thức về ngôn ngữ lập trình và framework này. Điều này có thể là một rào cản cho người mới học hoặc những người không quen thuộc với .NET Framework.

  • Hiệu suất giảm trên thiết bị có cấu hình yếu: 

.NET Framework không hoạt động tốt trên các thiết bị có cấu hình yếu. Việc chạy ứng dụng .NET Framework trên các máy tính có tài nguyên hạn chế có thể gây ra trễ, giảm hiệu suất và gây khó khăn cho người dùng.

Việc làm fresher .NET HCM update mới nhất

Các câu hỏi thường gặp về .NET Framework

Câu 1. .NET Framework có phải là miễn phí không?

Câu trả lời là có, .NET Framework là miễn phí để sử dụng và phát triển ứng dụng.

Câu 2. Ngôn ngữ lập trình phổ biến nhất trong .NET Framework là gì?

C# là ngôn ngữ lập trình phổ biến nhất trong .NET Framework, mặc dù Visual Basic và F# cũng được sử dụng rộng rãi.

Câu 3. Tôi có thể sử dụng .NET Framework để phát triển ứng dụng trên nền tảng khác ngoài Windows không?

Với sự ra đời của .NET Core, bạn có thể phát triển ứng dụng .NET trên các nền tảng khác như Linux và macOS.

Kết luận

Với sự phát triển không ngừng của công nghệ và nhu cầu ngày càng cao về các ứng dụng hiệu quả và đa năng, .NET Framework đã trở thành một lựa chọn hàng đầu cho nhiều doanh nghiệp và lập trình viên trên toàn thế giới. Nếu bạn đang tìm kiếm một nền tảng phát triển phần mềm đáng tin cậy, linh hoạt và mạnh mẽ, thì .NET Framework chắc chắn là một lựa chọn đáng cân nhắc. Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn nhiều thông tin hữu ích về .NET Framework. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm:

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Mobile Megatrend & Sự Thống Trị Các Lĩnh Vực Trong Cuộc Sống

vietnam mobile summit 2024

Megatrend là gì? Tại sao Mobile là Megatrend trên thế giới & Việt Nam?

Megatrend là những xu hướng mang tính toàn cầu, bắt nguồn từ những thay đổi căn bản về dân số, công nghệ, kinh tế, môi trường và xã hội. Megatrend là một xu hướng lớn, có tác động sâu rộng và kéo dài trong thời gian dài đến nhiều lĩnh vực khác nhau của cuộc sống.

Thế giới đang chứng kiến sự lên ngôi của Mobile như một Megatrend. Sự phổ biến của thiết bị di động thông minh, phát triển của công nghệ mạng không dây như 5G, và thay đổi trong hành vi của người tiêu dùng đã biến mobile trở thành xu hướng lớn, tác động mạnh mẽ đến tất cả các khía cạnh của cuộc sống, từ kinh tế, giáo dục, y tế, giải trí đến giao tiếp và mua sắm.

Những số liệu mới nhất từ GSMA Intelligence và Báo cáo Digital Vietnam 2024 đã cho thấy tầm ảnh hưởng ngày càng mạnh mẽ của mobile trong thời đại kỹ thuật số:

  • Trên phạm vi toàn cầu, hơn 60% lưu lượng truy cập trang web hiện nay đến từ các thiết bị di động, phản ánh sự thay đổi trong hành vi của người tiêu dùng khi ngày càng ưu tiên trải nghiệm di động. Thêm vào đó, xu hướng di động hóa dự kiến sẽ càng mạnh mẽ hơn khi có hơn 1 tỷ kết nối 5G trên toàn cầu vào năm 2025 với hơn 92.3% người dùng internet truy cập bằng thiết bị di động
  • Theo thống kê tháng 4 năm 2024, người dùng sử dụng thiết bị di động đóng góp 60.28% tổng lưu lượng truy cập website. Trong khi đó, vào năm 2011, con số này chỉ đạt 6.1%, và vào năm 2015, con số này đã tăng lên 37.2%.
  • Android thống trị thị phần lưu lượng truy cập web trên thiết bị di động với 69.74%. Cùng với Apple (29.58%), cả hai chiếm 99,32% tổng lưu lượng truy cập web trên thiết bị di động.
  • Tỷ lệ người truy cập internet thông qua thiết bị di động đã tăng lên hàng năm. Quý 1 năm 2017 là lần đầu tiên lưu lượng truy cập trên thiết bị di động vượt qua lưu lượng truy cập từ PC.

Riêng tại thị trường Việt Nam, việc dịch chuyển lên thiết bị di động cũng trở thành xu hướng nổi bật:

  • Ở Việt Nam, theo báo cáo Digital Vietnam 2024, có 168.5 triệu kết nối di động, tăng 3.2% so với năm trước, tương đương 169.8% dân số. 
  • 95.7% dân số sở hữu điện thoại di động (bất kể loại nào) với 98.9% sử dụng internet qua điện thoại di động (94.5% qua smartphone). 
  • Thời gian sử dụng internet trên điện thoại di động là 3 giờ 30 phút mỗi ngày và hơn 19.4% sử dụng dịch vụ thanh toán di động hàng tháng.
  • Ngoài ra, Việt Nam là một trong 11 quốc gia có tỷ lệ người mua sắm qua di động cao hơn so với trung bình toàn cầu. Tính đến tháng 12/2023, chi tiêu của người tiêu dùng cho ứng dụng di động tại Việt Nam đạt 549.9 triệu USD, tăng 8.7% so với tháng 12/2022
  • Tỷ lệ người truy cập internet thông qua thiết bị di động cũng tăng trưởng mạnh mẽ từ 14.71% năm 2013 đến 40.13% năm 2020 và vượt 84% vào năm 2023.
  • Mạng xã hội và app trò chuyện nhắn tin là hai loại hình trang web và ứng dụng phổ biến nhất tại Việt Nam

MOBILE MEGATREND

Với những con số ấn tượng và xu hướng gia tăng mạnh mẽ, không thể phủ nhận mobile đã trở thành một megatrend tác động sâu rộng đến nhiều lĩnh vực tại Việt Nam và trên toàn thế giới. Mobile chính là đòn bẩy giúp doanh nghiệp Việt Nam chinh phục thành công thời đại kinh tế số. Và đón đầu xu hướng này chính là động lực chính cho sự trở lại của Vietnam Mobile Summit 2024 – Mobile & Life.

Đón đầu xu hướng bằng việc làm chủ công nghệ với tư duy mobile commerce & tiếp thị di động hiệu quả

Nắm bắt công nghệ mobile commerce: Công nghệ di động đang ngày càng phát triển và ảnh hưởng đến cách mọi người mua sắm và tiêu dùng. Để đón đầu xu hướng này, cần nắm bắt và làm chủ các công nghệ liên quan đến mobile commerce như ứng dụng di động, thanh toán di động, trải nghiệm người dùng trên các thiết bị di động, và giao tiếp qua các kênh di động.

Áp dụng tư duy mobile commerce: Để đạt hiệu quả trong việc tiếp cận khách hàng thông qua di động, cần áp dụng tư duy mobile commerce. Điều này bao gồm việc tối ưu hóa trải nghiệm người dùng trên các thiết bị di động, tạo ra nội dung và giao diện phù hợp với di động, và hiểu rõ hành vi và nhu cầu của khách hàng khi sử dụng di động. 

Tiếp thị di động hiệu quả: Để đón đầu xu hướng, không chỉ đơn thuần là sở hữu công nghệ và áp dụng tư duy mobile commerce, mà còn cần thực hiện tiếp thị di động hiệu quả. Điều này bao gồm việc phân tích dữ liệu và thông tin khách hàng, xác định chiến lược tiếp thị di động phù hợp, sử dụng các công cụ và kênh tiếp thị phù hợp với di động, và đo lường hiệu quả của hoạt động tiếp thị. 

Với thời đại chuyển đổi số diễn ra nhanh chóng, ngoài tư duy trên, việc làm chủ công nghệ trở thành yếu tố then chốt trong câu chuyện thành bại. Điều này đòi hỏi sự hiểu biết về các công nghệ liên quan, bao gồm phân tích và lựa chọn các nền tảng công nghệ phù hợp (Native, Cross Platform hay Hybrid), phát triển và tùy chỉnh ứng dụng di động, tích hợp các hệ thống thanh toán di động an toàn và tiện lợi, và áp dụng các giải pháp bảo mật và quản lý dữ liệu cho di động, cũng như vận dụng các công nghệ mới như AI/ML, Blockchain, Big Data vào các ứng dụng di động.

Trong hơn 10 năm qua, có đến hơn 4.000 doanh nghiệp trong và ngoài nước đã cùng nhau gặp gỡ tại Vietnam Mobile Summit (tiền thân Vietnam Mobile Day), chuỗi sự kiện thường niên duy nhất về ngành Di động dành cho các nhà phát triển di động từ Mobile Tech, Mobile Commerce & Mobile Marketing cũng như các startup công nghệ. Đây là diễn đàn duy nhất giúp các chuyên gia đầu ngành, chia sẻ kiến thức, gặp gỡ đối tác, và các nhà đầu tư tiềm năng cũng như thu hút tuyển dụng các nhân tài nổi bật trong ngành.

Từ đó, các doanh nghiệp có thể cập nhật những kiến thức và cơ hội mới nhất trong lĩnh vực Mobile nói riêng và công nghệ nói chung, đặc biệt không thể thiếu đến AI cũng như những xu hướng công nghệ nổi bật nhất trên thế giới. Dự kiến năm nay thu hút hơn 5.000 lượt khách tham dự, gần 400 doanh nghiệp cùng hơn 30 chuyên gia kinh nghiệm, đặc biệt là sự tham gia của nhiều diễn giả đến từ các tập đoàn lớn trên thế giới như EY, Qualcomm, Zalo, FPT Software, Momo, Lazada, Elsa, Cake by VPBank,… hứa hẹn mang đến cho người tham dự những nội dung đặc sắc như:

  • Designing Aliveness into Mobile Experiences
  • Những bài học trong hành trình 6 năm be-cake
  • How AI shapes the growth of Retail & Banking in Vietnam? A global perspective to a local strategy
  • Best practice & learnings cho chatbot AI dùng LLM với use case của Momo
  • On-device AI
  • AR, gamification & recommendation – trải nghiệm mua sắm tối ưu từ online đến offline
  • How user behavior analytics make changes in Mobile Payment Product
  • Mobile Cybersecurity in the age of connectivity
  • Design Thinking: Adapt in a fast-changing Tech World
  • Secure your Mobile, Secure your Life
  • Cùng nhiều chủ đề hấp dẫn khác…

vietnam mobile summit 2024

vietnam mobile day

Bên cạnh đó, Vietnam Mobile Summit 2024 – Mobile & Life cũng là nơi demo rất nhiều sản phẩm/ dịch vụ công nghệ của các doanh nghiệp trong nước và quốc tế. Tuyển dụng cũng là một trong những hoạt động mang lại giá trị hữu ích cho cả doanh nghiệp và người tham dự.

Đặc biệt, chương trình K-Global @Vietnam 2024 chính thức trở lại cùng sự kiện với sự tham gia của Bộ Khoa học Công nghệ Hàn Quốc, NIPA & KICC cùng hơn 30 công ty công nghệ từ Hàn Quốc cùng tham gia triển lãm.

Đây là cơ hội lớn để các doanh nghiệp trong và ngoài nước, giới developer & dân yêu thích công nghệ/ khởi nghiệp cập nhật những công nghệ mới nhất, trao đổi trực tiếp cùng các chuyên gia đầu ngành. Sân chơi công nghệ hot nhất nửa đầu năm 2024 đã trở lại, nơi hội tụ của những anh tài Mobile, Data, AI, Security,… hứa hẹn cùng nhau chia sẻ và cập nhật thông tin, xu hướng nổi bật trong ngành. 

ĐĂNG KÝ THAM GIA TẠI:  https://topdev.vn/vms/tickets

THÔNG TIN SỰ KIỆN

  • Thời gian:  Ngày 31 tháng 05 năm 2024 | 08:00 – 16:00
  • Địa điểm: Grand Palace | 142/18 Đ. Cộng Hòa, Phường 4, Tân Bình, Thành phố Hồ Chí Minh
  • Website sự kiện: https://topdev.vn/vms/
  • Liên hệ hợp tác: tuyen.tong@topdev.vn | 078 7544 846

 

10 VSCode Extensions “bỏ túi” cho Web Developer

VSCode Extensions

Bài viết được sự cho phép bởi tác giả Sơn Dương

Visual Studio Code là một trình code editor phổ biến nhất hiện nay. Người người sử dụng, nhà nhà sử dụng. Bản thân mình cũng rất thích sử dụng VS Code, từ dự án học tập tới dự án thực tế ở công ty.

Với các chức năng tích hợp mặc định là đủ dùng cho hầu hết mọi lập trình viên. Tuy nhiên, với bản tính “đua đòi” thích khám phá, thích màu mè… nhầm, thích cải thiện hiệu suất công việc nên bạn luôn muốn nhiều tính năng hơn nữa.

VS Code Marketplace là nơi để bạn thỏa sức khám phá, có rất nhiều extensions hay ho và hữu ích.

Bài viết này mình sẽ chia sẻ combo 10 VSCode Extensions hữu ích dành riêng cho các bạn Web developer.

Live Server

Phải nói thật là lập trình ứng dụng web “sướng” hơn các nền tảng khác rất nhiều. Không phải là vì nó dễ hơn mà vì sửa code phát là xem được kết quả ngay. Mỗi lần sửa code, sau đó quay lại trình duyệt F5 cái là thấy kết quả, không cần build, compile mất thời gian như đội Java, C#…

Với sự hỗ trợ của của Live Server thì nó còn nhanh hơn nữa. Bạn không cần phải vào trình duyệt luôn, kết quả hiển thị gần như realtime mỗi khi bạn sửa code.

Một số frontend framework hiện đại như VueJS, Angular, React.v.v… cũng có tính năng tương tự. Tuy nhiên, với sự hỗ trợ của extension này, bạn có thể sử dụng cho mọi dự án web khác.

Gitlens

Git là một trong những công cụ quản lý source code phổ biến nhất bên cạnh SVN. Mình sử dụng git cho mọi dự án, kể cả dự án chỉ có 1 thành viên.

Bình thường thì mọi người sẽ cài thêm một tool riêng để hỗ trợ quản lý git như SourceTree, GitHub Deskop… Có đúng không nhỉ?

Nhưng sẽ tuyệt vời hơn nữa khi bạn thao tác với git trực tiếp ngay trong VS Code. GitLens là extension giúp bạn làm điều đó.

Gitlens

Có một tính năng cực hay ho của Gitlens là khi bạn click vào một dòng code nào đó, bạn sẽ biết dòng code do ai sửa cuối cùng. Nếu code mà bị lỗi sẽ nhanh chóng lôi cổ ông nào gây ra để bắt bảo hành

GitLens-Line-Blame-Annotations

JavaScript Booster

Tiện ích JavaScript Booster sẽ tự động refactoring lại đoạn mã bạn vừa viết theo đúng chuẩn clean code mà các chuyên gia khuyên dùng.

Nhiều khi do thói quen hoặc nghe theo lời khuyên của các blogger nào đó mà viết code theo cách “rất lạ”. Có thể nhìn cũng đẹp đấy, cũng dễ đọc đấy, nhưng với kinh nghiệm của nhiều chuyên gia thì có thể nó được clean đâu. Sau này nhìn lại code của mình, khéo chính bạn cũng phải thốt lên rằng “Cái quái gì đây?”

Bạn có thể xem minh họa cách thức làm việc của extension này.

Cách sử dụng JavaScript Booster

ESLint

Tiện ích này có lẽ mọi người quá rành rùi. ESLint giúp bạn tìm và gợi ý cách khắc phục các lỗi phổ biến trong mã Javascript của dự án.

ESLint có thể nhận biết được các vấn đề liên quan tới chất lượng code, code style, và các patterns có thể gây lỗi tiềm tàng.

Với ESLint extension, nó sẽ tích hợp trình eslint vào trong VS Code và sẽ tự động cảnh báo nếu gặp lỗi ngay trong editor, mỗi khi bạn viết code.

Ví dụ nhé. Đoạn code dưới đây sẽ bị eslint cảnh báo vì lý do bạn khai báo một biến mà không sử dụng ở đâu cả.

eslint-warning-example

  Những đoạn code tùy biến cho VSCode cực đẹp bởi Evondev (Phần 1)

  9 VSCode extension hay ho

Intellisense for CSS Class Names in HTML

Tiện ích Intellisense for CSS Class Names in HTML sẽ tự động gợi ý những class name phù hợ mà đã được định nghĩa trong css. Nó giúp bạn thay vì phải mò mò thủ công bằng mắt thì giờ tiện ích sẽ gợi ý “tận răng”. Nhờ tiện ích này mà “công lực” viết HTML của bạn phải tăng lên 200% ấy chứ.

Intellisense-for-CSS-Class-Names-inHTML

CSS Peek

Tương tự với tiện ích ở trên, CSS Peek giúp bạn dễ dàng biết được style css tương ứng với class name hay ID của thẻ HTML.

css-peek

Có 3 cách sử dụng CSS Peek:

  • Cách 1: bạn giữ phím ctrl và đưa chuột vào class name hoặc ID của một thẻ HTML, nó hiển thị thông tin CSS tương ứng.
  • Cách 2: Sử dụng phím tắt để mở cửa sổ hiển thị tệp CSS mà có định nghĩa style tương ứng với class name đó.
  • Cách 3: tương tự cách 2 nhưng thay vì mở cửa sổ thì nó sẽ nhảy thẳng tới tệp CSS.

JavaScript (ES6) Code Snippets

Đúng như tên gọi, tiện ích này tập hợp những đoạn mã phổ biến, giúp bạn tiết kiệm kha khá thời gian để gõ.

Dưới đây là demo cách sử dụng. Bạn chỉ cần gõ từ khóa viết tắt imp để tiện gợi ý và bạn chỉ việc chọn mà thôi.

javascript-snippets-code VSCode Extensions cho web developer

Prettier – Code formatter

Trong mọi dự án, việc các thành viên code theo tiêu chuẩn là điều bắt buộc, người ta gọi là coding convention.

Thông thường, mỗi ngôn ngữ lập trình sẽ tuân theo một chuẩn nhất định. Ví dụ: Javascript có cách đặt tên biến, hàm, class… theo chuẩn Camel case.

Prettier là công cụ tự động định dạng lại đoạn mã theo quy tắc (mặc định hoặc bạn tự tùy chỉnh). Đảm bảo mã nguồn của bạn có định dạng nhất quán trong toàn dự án, đặc biệt là các dự án có nhiều thành viên.

Prettier-demo VSCode Extensions cho web developer

Auto Rename Tag

Tiện ích này đặc biệt hữu ích với các web developer. Mỗi khi bạn phải thay đổi thẻ HTML, bạn sẽ phải mò mò sửa cả thẻ mở và thẻ đóng. Với các màn hình có ít code HTML thì không sao, chứ màn hình nào nhiều HTML, tới vài nghìn thẻ thì đúng là cực hình mỗi khi đổi tên đấy.

vscode-auto-rename-tag

Với Auto Rename Tag, công việc của bạn sẽ nhàn hơn rất rất nhiều.

Import Cost

Import thư viện hay module là một phần tất yếu trong mọi dự án rồi. Mặc dù thao tác import nó cũng nhỏ nhỏ thôi, nhưng lại hay phải làm.

Nhiều khi mình muốn import một thư viện mà không biết tên thư viện như thế nào, cứ phải lên trang chủ thư viện đó để tra cứu, rất phiền phức. Import Cost sẽ giúp bạn giải quyết vấn đề này.

import-const-extension VSCode Extensions cho web developer

Tạm kết

Trên là một số VSCode Extensions cho web developer mà mình đã cài đặt và sử dụng, thực sự nó giúp mình rất nhiều.

Một số extension ở trên không chỉ dùng cho các bạn Web developer mà cả các dự án khác cũng dùng được.

Hiện bạn đang sử dụng VS Code extension hay ho nào khác không? Chia sẻ cho mình biết được không?

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

Xem thêm:

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

Những câu lệnh git quan trọng mà bạn dùng hằng ngày

Check list những câu lệnh git quan trọng mà bạn dùng hằng ngày

Bài viết được sự cho phép bởi tác giả Sơn Dương

Có lẽ mọi người quá quen thuộc với Git rồi đúng không? Hầu như mỗi ngày làm việc, bạn đều sử dụng Git ít nhất một lần. Có thể “tỷ dụ” như pull code của người khác về và đẩy code của mình lên.

Tuy nhiên, lâu lâu mà không có dự án nào, rồi quay lại dự án cũ hoặc vào dự án mới, bạn lại bắt đầu thấy quên quên, nhớ nhớ…

Đó là lý do ra đời của bài viết này. Mình sẽ tổng hợp những câu lệnh git quan trọng mà bạn hay sử dụng nhất trong mọi dự án, coi như một stick note để lưu lại nhé.

Tạo branch mới từ một branch

Đây là câu lệnh có lẽ thường xuyên sử dụng nhất trước mỗi dự án. Thông thường, PL sẽ tạo một nhánh master, sau đó mỗi thành viên sẽ đứng tên một nhánh.

Do đó, nhiệm vụ của bạn là cần tạo một branch mới từ nhánh master. Câu lệnh cũng đơn giản:

git checkout -b <ten-nhanh>

Đổi tên nhánh:

git branch -m <ten-nhanh-moi>

Sau khi checkout nhánh mới, bạn nhớ thực hiện lệnh push để đẩy toàn bộ dữ liệu nhánh mới lên git server (hay còn gọi là remote repo)

stash

Lệnh git stash là một tiện ích cho phép bạn lưu tạm thời những thay đổi trong code.

Thường lệnh stash này được gọi trước khi bạn thực hiện quá trình push – đẩy code lên git server như Github, Gitlab.v.v…

Lưu ý là lệnh stash chỉ lưu trữ những thay đổi trên repo local mà thôi. Do đó, người khác không thể thấy được những lưu trữ này cho đến khi bạn thực hiện commit-push

Cú pháp:

git stash save "<Nội dung ghi chú cho stash này>"

Hiển thị danh sách tất cả những stash được tạo trước đó. Stash mới nhất sẽ đứng đầu danh sách:

git stash list

Xóa commit cuối cùng

Lệnh này thường hay sử dụng khi bạn “chẳng may” commit mà lại có cả phần thay đổi mà bạn không muốn đẩy lên server.

Ví dụ, bạn vừa đổi lại base URL của API chỉ để test ở localhost thôi. Nhưng lúc commit lại mải nói chuyện với “gấu” thành ra khi đối soát commit lại bị sót. Thế là..bùm.

Lệnh này sẽ phao cứu cánh cho bạn để sửa chữa những lỗi lầm trong quá khứ

git reset --hard HEAD^

Nếu muốn xóa nhiều commit từ top, bạn có thể sử dụng lệnh sau (lệnh này xóa 2 commits tính từ top):

git reset --hard HEAD~2

Nếu bạn muốn xóa nhiều commit hơn thì cứ tăng chỉ số ở trong lệnh trên kia lên.

  Sự khác biệt giữa ‘git merge’ và ‘git rebase’ là gì?

  Git: merge – rebase và những lưu ý

Xóa một commit cụ thể nào đó

Hoàn cảnh cũng tương tự như ví dụ trên, giờ bạn muốn xóa cụ thể một commit nào đó thì dùng lệnh sau:

git revert <id_của_commit> --no-edit

Lệnh trên sẽ tạo ra một commit mới với nội dung là revert – ngược lại với commit mà bạn muốn xóa. Tất nhiên, commit này vẫn đang ở local repo thôi, bạn cần push nó lên server để người khác cũng thấy được.

Tham khảo Job FrontEnd HOT trên TopDev!

Lệnh commit và push

Nằm ở cuối danh sách nhưng mức độ sử dụng lại là nhiều nhất. Mỗi khi bạn cần đẩy phần code lên git server để người khác cũng thấy đều phải dùng cặp lệnh commit và push.

Lệnh commit là thực hiện trên local repo. Còn lệnh push là đẩy những commit ở local lên remote repo.

Về quy tắc, cá nhân mình hay tách mỗi một commit là một một thay đổi nhỏ nhất liên quan đến một tính năng, một bug fix nào đó. Chứ đừng gom hết tất cả những thay đổi của tất cả tính năng, bug fix vào một commit. Việc gom này vừa làm cho commit trở lên phức tạp, sau này trace lịch sử cũng khó khăn.

git commit -m "<Ghi chú Commit>"

git push origin <tên_nhánh>

Trong trường hợp nếu bạn tạo thêm file mới mà chưa được thêm vào trong commit (bạn có thể kiểm tra bằng lệnh git status), bạn cần thực hiện lệnh add để thêm chúng vào commit.

git add <tên-tập-tin>

git add * // thêm tất cả 

Tạm kết

Trên đây là những tổng hợp nhỏ về những câu lệnh git quan trọng hay sử dụng nhất. Hy vọng rằng, bài viết này sẽ trở thành cuốn sổ ghi chú giúp bạn mỗi khi bắt đầu dự án mới.

Ngoài những câu lệnh trên, bạn còn hay sử dụng lệnh nào nữa? Hãy để lại bình luận bên dưới cho mọi người biết nhé.

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

Xem thêm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Chiếc transaction trên blockchain – bên trong có gì?

transaction trên blockchain

Bài viết được sự cho phép của tác giả Thanh Lê

Tại sao nên đọc bài này?

  • Hiểu rõ hơn bên trong blockchain nó chạy làm sao?
  • Coin của tôi luân chuyển trong blockchain ra sao?

Bài này mình sẽ nói chủ yếu các khái niệm ở bên EVM blockchain (ETH, BNB Chain, Polygon,…) nên có thể nó sẽ không đúng với các chain khác (Solana, NEAR, DOT,…).

Transaction là gì?

An Ethereum transaction refers to an action initiated by an externally-owned account, in other words an account managed by a human, not a contract. For example, if Bob sends Alice 1 ETH, Bob’s account must be debited and Alice’s must be credited. This state-changing action takes place within a transaction.

Transaction là gì?
Nguồn: https://ethereum.org/en/developers/docs/transactions/

Hiểu cơ bản thì Transaction là một action thực hiện bởi một externally-owned account (Account của người thật, hok phải Smart Contract) gửi lên blockchain network, từ đó thay đổi state của network. World state (t) + transaction = New world state (t + 1)

Hiểu ngược lại, nếu không có transaction thì state của network giữ nguyên, không có gì thay đổi cả.

Transaction có gì?

Một chiếc transaction được gửi đi sẽ có những data sau

  • to người nhận, có thể bạn gửi tiền cho một address khác, có thể bạn execute một smart contract khác. Hoặc không có thì khả năng cao transaction này dùng để tạo một smart contract
  • signature chữ kí, cái này để biết chính xác thằng nào là thằng gửi cái transaction này đi
  • value native token gửi trong transaction đó. Nếu bên Ethereum thì là ETH, BNB chain thì là BNB, Polygon thì là MATIC,…
  • data cái này optional, dùng làm input để execute một smart contract, kiểu call smart contract là gửi 30 CAKE cho thằng Y đi thì 30 CAKE cho thằng Y chính là data .Nếu bạn gửi Native token cho ai đó thì không cần cái field này.
  • gasLimit Gas tối đa được sử dụng để chạy transaction này. Gas là gì thì đợi giải thích sau.
  • maxPriorityFeePerGas Đù cái này mình cũng mới biết , nói chung là dùng để tip cho thằng validator nào pick cái transaction này mà chạy.
{

from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",

to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",

gasLimit: "21000",

maxFeePerGas: "300",

maxPriorityFeePerGas: "10",

nonce: "0",

value: "10000000000"

}

VD một chiếc Transaction được gửi đi

  The Merge – Bước tiến quan trọng của blockchain Ethereum

  5 giai đoạn trong kế hoạch tiếp theo của Ethereum sau The Merge

Gas

Gas là một đơn vị dùng để tính computational effort trong blockchain. Hiểu nôm na thì khi bạn chạy một transaction thì cái network phải tính toán gì đó để từ đó gen ra cái New world state, mà tính cái đó thì tốn computation effort, tốn điện. Do đó khái niệm gas được sinh ra để trả phí cho computation effort, cái transaction nào phức tạp, tốn nhiều computation effort thì phải trả nhiều tiền gas hơn và ngược lại.

Ai là người trả tiền gas?

Thằng init cái transaction đó sẽ phải trả tiền gas. Cái này là điểm khác biệt cực kì lớn giữa web3 và web2.

Đối với web2, đã có một thằng mua sẵn con server, trả tiền cho nó chạy để nó handle transaction rồi nên user không phải trả (Hoặc tụi nó thu lại bằng cách khác)

Còn với web3, thì con server là chạy chung, do đó transaction của thằng nào thì thằng đó tự trả – Độc lập, tự do

Nó khá giống xăng xe ngoài đường vậy, bạn đổ xe đầy bình, chạy xong từ A → B còn dư bao nhiêu xăng thì nó trả lại.

Tại sao cần gasLimit vì phòng trường hợp ông nào code bug dẫn tới burn hết mọe gas → tốn tiền → user complain. Do đó gasLimit sinh ra để đề phòng những trường hợp như vậy.

Chưa tới chợ mà hết xăng? Nếu bạn set gasLimit quá nhỏ, có thể không đủ để trả cho computation effort nên nó chạy dc 1 quãng thì đứt gách, với trường hợp này thì transaction sẽ được revert lại, đồng thời gas của bạn cũng bị burn hết nhé, không lấy lại được đâu.

Tiền gas, tùy vào cung cầu mà giá gas sẽ thay đổi. Vì tối đa hiện tại ETH chỉ handle được 30tx/giây nên nếu tại một thời điểm có nhiều giao dịch hơn vậy, thì thằng nào trả nhiều tiền hơn sẽ được verify và cho vào block trước.

Do đó phí cho một giao dịch sẽ phụ thuộc vào gas + tiền gas của giao dịch đó mà không phụ thuộc vào giá trị của một giao dịch. Ví dụ bạn gửi 1$ thì vẫn có thể phải trả 50$ tiền phí mà bạn gửi 1 000 000 000$ thì cũng phải trả 50$ tiền phí.

Tham khảo việc làm Blockchain mới nhất tại đây!

Vòng đời của một transaction

Vòng đời của một transaction

  1. Một transaction được gen ra, thường qua frontend app, nó sẽ sinh ra mớ data cho transaction của bạn (Gửi cho ai, bao gồm những data gì, gas limit phù hợp,…).
  2. Với data đó, sẽ cần bạn sign cái transaction (để bảm bảo là, tao là chủ cái tài khoản này, và tao cam đoan đống data tao gửi lên blockchain là của tao và chỉ duy nhất tao làm được điều này). Thường là qua MetaMask, CoinBase wallet,…, nói chung thằng nào giữ key thì thằng đó mới sign được.
  3. Sau khi submit transaction vào network, nó sẽ cần xếp hàng ở Transaction pool , nhớ lúc nãy mình nói chứ? ETH chỉ có thể handle được tối đa 30tx/giây nên nếu nhiều hơn sẽ cần phải xếp hàng.
  4. Bây giờ mấy ông validator/miner (những người sẽ execute và verify transaction) sẽ pick ra em transaction nào thơm ngon nhất , VD như thằng nào trả phí gas cao nhất, tip cao nhất rồi bắt đầu execute/verify.
  5. Nếu có một ông nào đó đã verify được một block, sẽ broadcast cho toàn network là “tao verify được đống transaciton này rồi nhé, phí giao dịch tao lấy, các em lấy block mới về mà lưu lại, lo mà verify đống tx tiếp theo đi, anh chỉ làm mẫu một lần thôi đấy”.
  6. Ok vậy là giờ transaction đã được verify, cả network đồng ý đây sẽ là state mới và tiếp tục công việc ở bước 3

Mình định sẽ giải thích kỹ hơn hơn về bên trong một tx làm sao mà token, coin có thể luân chuyển trong nhưng nó sẽ đụng vào concept của Smart Contract nên có lẽ để bài sau nhé!

Nimbus

Nimbus

Nhân tiện, đối với một transaction và dưới góc nhìn của technical thì nó quá khó để cho một người như mẹ hay bà ngoại mình có thể hiểu và biết những thứ bên trong transaction là gì. Do đó mình có build một tool tên là Nimbus để có thể giải thích hoặc là lược bỏ những thứ không-cần-hiểu như vậy.

Trong tool có một phần là Transaction Explain, nó sẽ giúp mọi người hiểu ngắn gọn là transaction này làm gì, chuyển tiền cho ai, ai chuyển tiền cho mình.

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

Xem thêm:

Xem thêm những việc làm IT hấp dẫn tại TopDev

Cách để bắt chuyện với mấy anh chị xịn xò trên LinkedIn

Cách để bắt chuyện với mấy anh chị

Bài viết được sự cho phép của tác giả Lê Tuấn Anh

Khi tư vấn hướng dẫn tìm việc, mình luôn khuyến khích các bạn nên có tài khoản LinkedIn, nếu chưa có thì lập một cái, nếu có rồi thì nên bắt đầu dùng. Ở Việt Nam, LinkedIn hiện có hơn 3.8 triệu người dùng (số liệu Napoleon Cat), thời điểm mình gõ dòng chữ này, đang có 78 ngàn cơ hội việc làm tại Việt Nam trên LinkedIn.

Mình khuyến khích các bạn nên dành nhiều thời gian cho LinkedIn nhiều hơn (thay vì Facebook hay Tiktok), bởi LinkedIn sẽ giúp bạn có những mối quan hệ chuyên nghiệp, học được chuyên môn công việc, tìm được cơ hội việc là và có thể kết nối được với những anh chị xịn xò – là giám đốc hay nhân sự cấp cao của các công ty.

Trong bài viết này, mình chia sẻ để các bạn hiểu hơn về những kiểu nhà tuyển dụng đang có trên LinkedIn và cách bạn có thể tiếp cận, bắt chuyện với người ta nhé.

Các Kiểu Nhà Tuyển Dụng

Nếu bạn đang tìm việc, đừng chỉ sửa CV rồi gửi lên các trang web, hãy xây dựng các mối quan hệ càng nhiều càng tốt với những người làm công việc tuyển dụng. Bởi lẽ những nhà tuyển dụng là cầu nối giữa bạn và công ty, chính vì thế những mối quan hệ này có thể giúp bạn biết thêm về cách hỏi lương, văn hóa công ty, cách phỏng vấn hay những vấn đề khác khi đi làm.

Có một số kiểu nhà tuyển dụng như thế này:

  • Săn người (headhunter) ứng viên có chuyên môn: đây có thể là những người làm việc cho một công ty chuyên cung cấp giải pháp nhân sự (ví dụ như Adecco, One Arrow Consulting), họ thu phí của công ty để tìm những nhân sự phù hợp mà công ty cần. Nhân sự họ thường nhắm đến là những nhân sự đã có kinh nghiệm hoặc có vị trí cấp cao.
  • Săn người (headhunter) ứng viên ít kinh nghiệm: cũng giống ở trên nhưng vai trò ngược lại một chút, những nhà tuyển dụng/công ty này sẽ có một danh sách nhiều ứng viên (thường là sinh viên hoặc người chưa nhiều kinh nghiệm), họ cạnh tranh với các công ty khác để giới thiệu ứng viên của họ cho các công ty cần người. Khi giới thiệu thành công, họ sẽ có tiền.
  • Nhà tuyển dụng thuộc công ty: đây là phòng nhân sự của các công ty, phụ trách đăng tin tuyển dụng, lọc ứng viên, phỏng vấn…

Tại Sao Nên Kết Nối Trên LinkedIn?

Theo Navigos Group, với kênh mạng xã hội, LinkedIn – một website dành cho mạng lưới người đi làm chuyên nghiệp là lựa chọn đầu tiên đối với người Việt trong việc xây dựng thương hiệu cá nhân với 31% ý kiến, trong khi tỉ lệ chọn Facebook là 27%. Khảo sát này cho thấy, rất nhiều công ty to đang sử dụng LinkedIn như một kênh để tìm những ứng viên tiềm năng. Nếu bạn chưa bắt đầu sử dụng LinkedIn, hãy bắt đầu sử dụng từ bây giờ với một vài hướng dẫn nhanh của Tuấn Anh tại đây.

Cách Tiếp Cận Nhà Tuyển Dụng

Trên LinkedIn, bạn có thể tiếp cận đến nhà tuyển dụng thông qua 2 cách, thụ động và chủ động.

Thụ động là bạn dành thời gian xây dựng trang LinkedIn thật xịn, đầy đủ thông tin, kỹ năng, kinh nghiệm làm việc, mục tiêu tìm kiếm, có các từ khóa đắt giá để khi nhà tuyển dụng tìm ứng viên trên LinkedIn, tên bạn sẽ hiện lên trên trang tìm kiếm. Ví dụ đây là LinkedIn của Tuấn Anh: https://www.linkedin.com/in/anhtuanle234/ – thời điểm mình viết dòng này, có 986 người đã xem LinkedIn của mình trong tuần và hồ sơ của mình hiện lên trên 370 kết quả tìm kiếm.

Cách Tiếp Cận Nhà Tuyển Dụng

Chủ động là việc bạn tự tìm những nhà tuyển dụng mà bạn thấy tiềm năng, gửi tin nhắn trực tiếp cho người ta. Cách này giúp bạn thu hút sự chú ý ngay lập tức, nhưng hãy thật cẩn thận, tin nhắn phải soạn thật kỹ càng kẻo lại bị lẫn với những người khác.

  20 mẹo xây dựng thương hiệu cá nhân hiệu quả trên LinkedIn (Phần 1)

  Bàn về "peer-pressure" khi lướt LinkedIn và TikTok

Công Cụ Tiếp Cận

Nếu bạn muốn nhà tuyển dụng tự tìm đến bạn, hãy sử dụng tính năng #OpenToWork ở đầu LinkedIn. Tính năng này cho phép chia sẻ thông tin đến các nhà tuyển dụng, và những nhà tuyển dụng nào đang xài tính năng tuyển dụng trả phí của LinkedIn sẽ dễ dàng tìm thấy bạn. Ví dụ mình đang Open To Work với vị trí Counselor chẳng hạn:

Cách Tiếp Cận Nhà Tuyển Dụng trên linkedin

Để chủ động tìm kiếm, bạn có thể tận dụng tính năng “Tìm kiếm” của LinkedIn để tìm theo tên người, tên công việc, tên công ty, cụ thể theo hướng dẫn bên dưới.

Cách Sử Dụng “Lọc” Để Tìm Người Trong Ngành

Để tăng tính hiệu quả khi đi tìm việc, hãy tập trung tìm những người đang làm việc trong ngành bạn quan tâm và tập trung tiếp cận họ, thay vì ai cũng gửi tin đi. Đây là cách làm.

  1. Ở trang chủ bạn ấn vào “My Network.”
  2. Ấn vào “Connections” ở góc trên bên trái
  3. Ấn vào “Search with filters”, và chọn “All filters”.
  4. Ở mục hiện lên, bạn chọn 1st, 2nd, và 3rd connections.
  5. Kéo xuống phần “Industry” và gõ vào những ngành bạn quan tâm.
  6. Kéo xuống Keywords và gõ vào các từ khóa ở mục ‘Title’ như “Recruiter,” “Headhunter,” “Talent Acquisition,” hay “Hiring Manager”
  7. Xem kết qủa.

Trong trang kết quả, bạn ấn ‘Connect’ với những người bạn thích. Sau đó ở mục ‘Add a note’, hãy soạn một tin nhắn mùi mẫn và gửi đến người ta.

Tin Nhắn Mùi Mẫn

Mỗi ngày nhà tuyển dụng nhận cả chục và trăm email, tin nhắn, nên bạn hãy soạn một tin nhắn làm sao cho khác biệt nhé. Tin nhắn nên có Kỹ Năng của bạn, Công Cụ bạn biết dùng, Dự Án bạn đã làm, Công Việc bạn đang quan tâm.

Một số mẫu bằng tiếng Anh (tập xài tiếng Anh vì LinkedIn không dùng tiếng Việt nha):

  • I recently applied to the [NAME OF POSITION] with respect to requisition number [ADD NUMBER].
  • I meet all of the qualifications for the [NAME OF POSITION] including [NAME THE TOP QUALIFICATIONS].
  • Based on my research, I believe this may be a position you are working to fill. If you are not the assigned recruiter for this position, would you be open to connecting me to the recruiter? (This helps to keep the conversation moving forward. Because the recruiter now has the requisition number, they can find the recruiter assigned to the role and pass the information along.) 

Nói Chung Là

LinkedIn một vài năm gần đây được nhà tuyển dụng xài rất nhiều. Nếu bạn đang tìm việc, hãy tập dùng LinkedIn để tiếp cận đến nhà tuyển dụng.

Tuy nhiên, không phải ai tiếp cận thì người ta cũng trả lời. Có người lịch sự, người không. Việc của bạn là cứ làm tốt phần của mình và chờ đợi từ phía đối phương nhé.

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

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Tầm quan trọng của các chương trình đào tạo sau đại học trong kỷ nguyên 4.0

nang trinh ky nang

nâng tầm công nghệTrong bối cảnh kỷ nguyên số cùng sự xuất hiện của nhiều công nghệ mới, thị trường lao động ở tất cả các lĩnh vực từ chuỗi cung ứng đến phát triển kinh doanh, phân tích kinh doanh, tiếp thị kỹ thuật số, và nhiều lĩnh vực khác đòi hỏi nguồn nhân sự phải sở hữu những kỹ năng mới và trình độ chuyên môn cao hơn. Để thay đổi tư duy và nâng cao trình độ, việc lựa chọn các chương trình đào tạo sau đại học là điều quan trọng và hợp lý cho những ai muốn tiếp tục phát triển sự nghiệp. Tuy nhiên, với cuộc sống bận rộn, không phải ai cũng có thể sắp xếp được thời gian để hoàn thành tốt các chương trình học tại trường. Vì thế việc tham gia các chương trình đào tạo sau đại học trực tuyến mang lại nhiều lợi ích, giúp cá nhân linh hoạt trong việc học tập, không bị ràng buộc bởi thời gian và địa điểm cụ thể. Điều này giúp tối ưu hóa việc học tập và làm việc, đồng thời nâng cao kỹ năng trong một môi trường chuyên nghiệp. Hãy cùng khám phá các chương trình đào tạo sau đại học có chất lượng tốt nhất hiện nay đến từ upGrad.

Chứng chỉ Sau Đại học về Generative AI từ upGrad Institute

Các chuyên gia tại upGrad Institute đã thiết kế chương trình này dành cho các kỹ sư, chuyên gia phần mềm và CNTT, chuyên gia dữ liệu có sự quan tâm và mong muốn nghiên cứu mở rộng kiến thức hơn trong lĩnh vực Generative AI. Với hơn 6 dự án thực hành từ đầu đến cuối khoá học, học viên sẽ có cơ hội tìm hiểu và triển khai hơn 10 công cụ Generative AI như OpenAI, Midjourney, DALL-E và các ngôn ngữ lập trình như Python, Flask, Excel. Chương trình bao gồm hơn 180 giờ học trực tiếp và các buổi giải đáp 1-1 với các giảng viên hàng đầu và chuyên gia trong ngành đảm bảo cho học viên học tập hiệu quả nhất. 

Chương trình Thạc Sĩ Khoa Học Dữ Liệu (Data Science) tại Liverpool John Moores University

Với chương trình Thạc Sĩ Khoa Học Dữ Liệu tại trường Đại học Liverpool John Moores danh tiếng, thuộc Top 100 trường Đại học tốt nhất thế giới, học viên sẽ có cơ hội tìm hiểu chuyên sâu về Thống kê, Phân tích dự đoán, Phân tích dữ liệu thăm dò, Trực quan hóa dữ liệu, Phân tích dữ liệu,… trên nền tảng sử dụng thành thạo các công cụ Python, Tableau, MySQL, Excel nâng cao. Chương trình được thiết kế 100% trực tuyến cùng với những buổi học trực tiếp hàng tuần với các chuyên gia và giảng viên đầu ngành, giúp tạo điều kiện thuận lợi cho học viên, đặc biệt là người đang đi làm có thể linh động sắp xếp thời gian học phù hợp. Chương trình là sự lựa chọn phù hợp cho những chuyên gia phần mềm và CNTT, chuyên gia dữ liệu, chuyên gia kinh doanh, kỹ sư từ mọi ngành nghề có mong muốn nâng cao khả năng phân tích, cải thiện khả năng dự đoán và đưa ra quyết định kinh doanh dựa trên số liệu.

Chương trình Thạc Sĩ Máy học (Machine Learning)  & Trí tuệ nhân tạo (AI) tại Liverpool John Moores University

Chương trình được cải tiến để cung cấp các kỹ năng mới nhất về Machine Learning và AI, nhằm giúp học viên làm chủ được các kỹ thuật và ứng dụng nâng cao của AI bao gồm ChatGPT, Open AI, Dall, Midjourney và nhiều công cụ khác. Chương trình học trực tuyến với các giảng viên hàng đầu cùng với cơ hội tham hơn 15 dự án ngành và 6 dự án thực hành thực tế được thiết kế để đảm bảo trải nghiệm học tập của học viên hiệu quả nhất. Sau khi hoàn thành chương trình, học viên sẽ nhận bằng Thạc sĩ được WES công nhận sau và trở thành cựu học sinh của đại học Liverpool John Moores danh tiếng nước Anh với chi phí chỉ bằng 1/10 chi phí của một chương trình học tại trường.

Chương trình Tiến Sĩ Quản trị Kinh doanh – chuyên ngành Công nghệ Tiên tiến từ Golden Gate University

Trường Đại học Golden Gate được xếp hạng #1 dành cho người đã đi làm tại Mỹ đã thiết kế chương trình học hybrid này dành cho các nhà lãnh đạo ngành, CXO, doanh nhân và giám đốc điều hành mong muốn nghiên cứu về tác động của Generative AI trong các lĩnh vực khác nhau và có mong trở thành người dẫn đầu trong ngành, người có thể thúc đẩy sự thay đổi nhằm cách mạng hoá các ngành công nghiệp một cách nhanh chóng. Tham gia vào khóa học, học viên sẽ có cơ hội được giảng dạy bởi đội ngũ giảng viên nổi tiếng toàn cầu và có cơ hội tham gia chương trình trao đổi quốc tế tại San Francisco, Mỹ. Sau khi hoàn thành chương trình, học viên sẽ nhận được bằng và bảng điểm gốc có giá trị tương đương như chương trình tại trường. Học viên còn có cơ hội tham gia phỏng vấn cho các vị trí trợ giảng và trở thành một thành viên trong mạng lưới toàn cầu của Golden Gate.

nang trinh ky nang

Những lợi ích khi lựa chọn đồng hành cùng với upGrad

upGrad áp dụng mô hình học trực tuyến linh hoạt cho phép học viên có thể chủ động sắp xếp thời gian học phù hợp với lịch trình cá nhân nhằm giúp học viên có thể cân bằng giữa công việc và học tập. Các chương trình học tại upGrad là sự kết hợp giữa lý thuyết và thực hành từ những giảng viên hàng đầu thế giới và học liệu chất lượng. Học viên sẽ có cơ hội tham gia những dự án thực tế trong suốt quá trình học. Bên cạnh đó, upGrad luôn quan tâm đến trải nghiệm và cung cấp sự hỗ trợ 24/7 cho người học, giúp giải đáp mọi thắc mắc và vướng mắc trong quá trình học tập. Sự hỗ trợ này giúp người học tự tin hơn trong việc tiếp thu kiến thức, đồng thời tạo điều kiện thuận lợi cho họ hoàn thành khóa học một cách tốt nhất.

nang trinh ky nang

nang trinh ky nang

Về upGrad

upGrad là một trong những công ty EdTech lớn nhất Đông Nam Á, cung cấp cho người học trên toàn cầu một trải nghiệm học tập trực tuyến đa dạng với hơn 3 triệu học sinh đã đăng ký từ hơn 100 quốc gia. Là một trong số ít những doanh nghiệp được chính phủ Việt Nam công nhận cũng như mạng lưới hợp tác với các trường đại học danh tiếng trên thế giới và nhiều doanh nghiệp uy tín trên thị trường lao động. upGrad đã liên tục đầu tư, phát triển và cải thiện nền tảng học tập trực tuyến để tạo điều kiện thuận lợi nhất cho người học tiếp cận nền giáo dục chất lượng bậc cao.

Hãy cùng đầu tư vào bản thân với các khoá học chất lượng và đa dạng tại upGrad để chinh phục mơ ước nghề nghiệp của bạn! Tìm hiểu ngay tại đây đừng bỏ lỡ cơ hội nhận được học bổng lên đến 70% các khoá học của upGrad khi đăng ký thông tin tại đây hoặc liên hệ qua số hotline: 0938386166 (Mrs Nguyên)/ 0375702594 (Ms Tania)

Thà trả người mới lương cao còn hơn tăng lương cho người cũ

Thà trả người mới lương cao còn hơn tăng lương cho người cũ

Bài viết được sự cho phép bởi tác giả Vũ Thành Nam

Câu chuyện lương thưởng của nhân viên này nhân viên kia chưa bao giờ là một chủ đề hết sự tranh cãi. Mình cũng từng có bài viết về vấn đề này nhưng gần đây mình quan sát được một điều nữa về cách thức trả lương của các công ty nói chung mà mình sẽ nêu ra ở bài viết này.

Thà trả người mới lương cao còn hơn tăng lương cho người cũ

Một triết lý và quan điểm rất hay gặp mà không phải anh chị nhân sự nào cũng nói ra được. Mình thấy dường như nó là câu chuyện muôn thủa khi so sánh lương nhân viên cũ và nhân viên mới vậy. Cùng mình phân tích thử tại sao lại như vậy nhé.

Trước tiên, hãy nói đến hệ thống lương của các công ty thường sẽ được bảo mật, về mặt lý thuyết mà nói thì mức lương của mọi nhân viên sẽ là bí mật, mọi thông tin về lương đều gửi cho từng cá nhân và không ai biết ai. Có những công ty còn làm khắt khe hơn khi ghi rõ vào điều khoản trong hợp đồng nếu ai đó tiết lộ lương của bản thân với một hình thức vi phạm cơ chế bảo mật lương.

Tuy nhiên không phải ai cũng giữ kín được mức lương của mình với những bà tám ông buôn sau những câu chuyện phiếm chốn công sở tưởng chừng như vô hại. Điều này chắc chắn khiến cho hệ thống bảo mật mức lương như lý thuyết bên trên có phần vô nghĩa.

tăng lương

Đối với phòng nhân sự hay các anh chị quản lý họ đều biết điều đó và cũng chẳng làm gì hơn được. Mặt khác nhân viên có quyền kiểm tra chéo hay đi đối chiếu và tham khảo mức lương thị trường, các công ty khác, các bộ phận khác để suy đoán mức lương của nhau hết sức dễ dàng. Mặc dù không phải chính xác một trăm phần trăm nhưng mà ước lượng mức lương theo cấp bậc, số năm kinh nghiệm hay thông qua những lần review tăng lương đều có thể cộng dồn và nắm được ít nhiều thông tin. Điều này là khá bình thường.

Vấn đề ở chỗ sau khi biết được mức lương của một người cùng vị trí, năng lực tương đương thì bạn sẽ nghĩ gì và làm gì?

Đối với góc nhìn của nhân sự. Một nhân viên sẽ nằm trong một khoảng lương mà công ty đã định sẵn. Ở một vị trí nếu nhân viên có năng lực hơn sẽ có mức cận trên, những nhân viên yếu hơn sẽ có mức cận dưới. Việc xin và đòi tương lương dường như chỉ nằm trong khoảng lương này mà thôi. Muốn hơn cũng khó vì phải đi giải trình các cấp lãnh đạo trường hợp này trường hợp kia, tại sao lại tăng hơn, abc, xyz thủ tục rất rườm rà nên phòng nhân sự sẽ khó chấp nhận tăng lương vượt quá khung cho phép này.

Khi bạn làm vượt mức và trở nên xuất sắc, nếu công ty nhìn nhận bạn và đánh giá sự phát triển của bạn tốt, tất nhiên bạn sẽ được tăng mà thôi. Nhưng tăng bao nhiêu để không bị bẻ gãy khung lương trên và không làm quá chênh lệch với nhân viên khác cùng vị trí. Mức độ chênh lệch này sẽ ảnh hưởng đến tâm lý của số nhân viên còn lại nếu biết được mức tăng của bạn. Cân đo đong đếm một hồi thì phòng nhân sự sẽ đưa ra con số được cho là phù hợp với thời điểm hiện tại.

Đôi khi nhân sự sẽ không trực tiếp tăng vượt khung cho bạn mà còn kèm theo một số điều khoản thưởng treo hay cam kết và hỗ trợ về mặt nào đó nhằm lấy những phúc lợi đi kèm để bù đắp cho phần lương kỳ vọng ở mức lương của bạn.

Chuyện chẳng có gì để nói nếu khung lương kia được giữ nguyên nhưng đối với một nhân viên mới vào thì lại ngoại lệ. Họ được kỳ vọng và tỉ lệ cao là sẽ được trả mức lương cao hơn so với người cũ khi cùng một vị trí, cùng chức vụ và thậm chí là cùng một dự án.

Đối với một nhân viên mới vào công ty thì thường được định giá theo mức giá thị trường hiện tại, để có thể câu kéo được người mới này, nhân sự thường đưa ra offer cao để hút người về. Điều này làm cho những nhân viên cũ bị ảnh hưởng đến tâm lý nếu biết được mức lương trả cho người mới. Khi này nhân sự thường biện minh bằng những lý do người mới, tuy nhiên nó lại là sự chưa chắc chắn được với khả năng người mới ra sao, nghiệp vụ dự án thì chắc chắn không bằng người cũ. Chỉ dựa vào kỹ năng phỏng vấn sẽ có phần hơi rủi ro khi vào công ty nếu so sánh với người có thâm niên.

Vấn đề được lật ngược lại nếu bạn thử đặt câu hỏi, độ ì của nhân viên cũ càng lâu năm sẽ càng tăng, sự sáng tạo trong công việc không cao như lúc ban đầu. Khả năng cống hiến thì có thể có đó nhưng mà có thể họ sẽ mang tâm lý ếch ngồi đáy giếng tự cho mình là giỏi và có kinh nghiệm nên đòi hỏi hết lần này đến lần khác. Việc này khó có thể điều chỉnh và kiểm soát hơn so với những người mới. Dù cho người mới là mức lương mới đó nhưng họ sau khi được đào tạo sẽ dường như có một làn gió mới cho công ty. Vậy nên nhiều công ty chấp nhận thay máu hàng loạt là vì vậy.

Hơn nữa, số lượng nhân viên mới không nhiều nêu nếu mức lương mới một hai cá thể nếu cân đo đong đếm chắc chắn là sẽ ít tốn kém hơn so với phá vỡ khung lương của tất cả nhân viên cũ bên trên khiến công ty bị mất kiểm soát nếu ai ai cũng ganh tỵ nhau về mức lương hiện tại.Bên cạnh đó, đề xuất cho những người mới một mức lương cao tưởng chừng như là điều vô lý nhưng tiêu chuẩn tuyển dụng và nội dung công việc đều đã thay đổi so với trước kia cho nên tiền lương lên xuống là chuyện bình thường.

tăng lương

Trên đây là những phân tích dưới góc độ cái nhìn của bản thân mình. Đọc đến đây, hãy thử giải định bản thân ở những vị trí sau và để lại ý kiến dưới phần bình luận nhé.

– Nếu bạn đặt vị trí mình là người nhân viên cũ bạn sẽ nghĩ gì và có thái độ ra sao nếu biết mức lương của người mới vào?

– Nếu bạn là người mới vào thì bạn sẽ coi thường những nhân viên cũ và cho họ là dại dột chứ?

– Nếu bạn làm ở bộ phận nhân sự thì bạn có giải pháp nào tốt để cân bằng giữa người cũ và người mới không?

Một điểm mình thấy gần đây không biết có phần hơi lạ không đó là một nhân viên đã từng rời công ty sau một thời gian ngắn thì trở lại chính công ty đó thì lại được tăng lương cũng như cấp bậc trong công ty hơn nhiều lần so với những người cùng làm trước đó và từng bước đi lên theo thâm niên ở công ty.

Thật kỳ lạ và mình cũng chưa tìm được lý do tại sao.

Bạn có thể để lại ý kiến của bản thân bên dưới để chúng ta cùng trao đổi thử!

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

Xem thêm:

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

Load Testing là gì? Tầm quan trọng của Load Testing trong quá trình phát triển phần mềm

Load Testing là gì

Trong thế giới phần mềm ngày nay, người dùng luôn mong muốn có được trải nghiệm mượt mà và được đáp ứng nhanh chóng khi sử dụng các ứng dụng. Tuy nhiên, khi lượng truy cập tăng cao, hiệu suất của ứng dụng có thể bị ảnh hưởng nghiêm trọng, dẫn đến độ trễ, lỗi hoặc thậm chí là gây ra những sự cố nghiêm trọng. Đây là lúc mà Load Testing trở nên quan trọng hơn bao giờ hết. Trong bài viết này, hãy cùng TopDev khám phá về Load Testing, từ khái niệm cơ bản đến vai trò của quá trình này trong phát triển mềm.

Load Testing là gì?

Load Testing là gì?

Load Testing là quá trình đo lường hiệu suất của một hệ thống phần mềm bằng cách mô phỏng tải trọng người dùng thực tế. Quá trình này cho phép các developer và các tester phần mềm đánh giá khả năng xử lý, thời gian phản hồi, sự ổn định và khả năng mở rộng của hệ thống dưới các điều kiện tải cao.

Tại sao Load Testing lại quan trọng?

Load Testing là gì?

Trong thế giới ngày nay, khi mà số lượng người dùng trực tuyến ngày càng tăng cao, việc đảm bảo ứng dụng của bạn có thể đáp ứng được nhu cầu của khối lượng người dùng lớn là điều vô cùng quan trọng. Load Testing giúp bạn đánh giá được hiệu suất của hệ thống dưới các điều kiện tải cao, xác định điểm yếu và các vấn đề về hiệu suất khác trước khi ứng dụng được giới thiệu trên thị trường.

Cách thực hiện Load Testing

Có nhiều phương pháp để thực hiện Load Testing, tuy nhiên thông thường một quá trình Load Testing đơn giản và hiệu quả thường bao gồm các bước sau: 

  • Bước 1. Xác định mục tiêu kiểm tra: 

Đặt ra các chỉ số hiệu suất mong muốn, như số lượng người dùng đồng thời, thời gian phản hồi, v.v.

  • Bước 2. Thiết lập môi trường kiểm tra:

Tạo ra một môi trường giống với môi trường thực tế để kiểm tra.

  • Bước 3. Tạo kịch bản kiểm tra: 

Mô phỏng các tác vụ và hành vi của người dùng thực tế.

  • Bước 4. Thực hiện kiểm tra tải: 

Sử dụng các công cụ tự động để tạo ra lượng tải người dùng giả lập.

  • Bước 5. Phân tích kết quả: 

Đánh giá hiệu suất của hệ thống dựa trên các chỉ số đã đặt ra.

  Stress testing là gì? Phân biệt stress testing và load testing

  Test Scenario là gì? Phân biệt Test Case và Test Scenario

Các công cụ hỗ trợ thực hiện Load Testing là gì?

Các công cụ hỗ trợ thực hiện Load Testing

Có nhiều công cụ Load Testing khác nhau trên thị trường, cả nguồn mở và thương mại. Một số công cụ được sử dụng rộng rãi gồm:

Apache JMeter

Đây là một công cụ nguồn mở mạnh mẽ và linh hoạt để kiểm tra tải trọng và hiệu suất. JMeter cung cấp khả năng mô phỏng hàng nghìn người dùng ảo, hỗ trợ nhiều loại kiểm tra khác nhau như kiểm tra tải, kiểm tra độ bền, kiểm tra hiệu suất, v.v. Đồng thời, công cụ này cũng có thể được tích hợp với nhiều công cụ khác trong quy trình phát triển phần mềm.

LoadRunner

Một sản phẩm thương mại của Micro Focus, cung cấp các tính năng kiểm tra tải nâng cao. LoadRunner cho phép người dùng tạo ra các kịch bản kiểm tra phức tạp, mô phỏng hàng trăm nghìn người dùng đồng thời, và cung cấp phân tích chi tiết về hiệu suất của hệ thống. LoadRunner hỗ trợ nhiều giao thức và công nghệ khác nhau, bao gồm cả ứng dụng di động và ứng dụng dựa trên đám mây.

Gatling

Đây là một công cụ kiểm tra tải nguồn mở, dựa trên ngôn ngữ lập trình Scala. Gatling được thiết kế để dễ sử dụng và mạnh mẽ, cho phép người dùng tạo ra các kịch bản kiểm tra phức tạp với mã nguồn rõ ràng và dễ đọc. Công cụ này cung cấp các báo cáo chi tiết về hiệu suất của hệ thống và hỗ trợ nhiều giao thức khác nhau.

Locust

Locust là một công cụ kiểm tra tải nguồn mở, dễ sử dụng và được viết bằng Python. Locust được thiết kế để dễ dàng mở rộng và tùy chỉnh, cho phép người dùng tạo ra các kịch bản kiểm tra phức tạp với mã Python đơn giản và cung cấp giao diện người dùng trực quan để theo dõi, kiểm soát quá trình kiểm tra tải.

BlazeMeter

Đây là một nền tảng kiểm tra tải dựa trên đám mây, hỗ trợ nhiều công cụ khác nhau như Apache JMeter, Selenium, Gatling, và Taurus. BlazeMeter cho phép người dùng thực hiện kiểm tra tải với quy mô lớn, mô phỏng hàng triệu người dùng đồng thời từ khắp nơi trên thế giới. Ngoài ra, công cụ này cũng cung cấp các tính năng phân tích hiệu suất nâng cao và tích hợp với nhiều nền tảng khác nhau.

Tham khảo việc làm tester lương cao trên TopDev

Các câu hỏi thường gặp về Load Testing

Câu 1. Nên bắt đầu thực hiện Load Testing từ khi nào?

Load Testing nên được thực hiện trong suốt vòng đời phát triển phần mềm, đặc biệt là trong giai đoạn kiểm thử và trước khi triển khai ứng dụng.

Câu 2. Load Testing có thể thực hiện trên môi trường sản phẩm không?

Không nên thực hiện Load Testing trên môi trường sản phẩm, vì điều này có thể ảnh hưởng đến hiệu suất và trải nghiệm người dùng thực tế. Thay vào đó, hãy thiết lập một môi trường kiểm tra riêng biệt.

Câu 3. Tôi nên kiểm tra tải với bao nhiêu người dùng giả lập?

Số lượng người dùng giả lập phụ thuộc vào mục tiêu kiểm tra và dự kiến lượng người dùng thực tế của ứng dụng. Thông thường, bạn nên kiểm tra với số lượng người dùng cao hơn so với dự kiến để đảm bảo khả năng mở rộng.

Câu 4. Load Testing có thể thực hiện trên các ứng dụng di động không?

Câu trả lời là có Load Testing cũng có thể áp dụng cho các ứng dụng di động. Tuy nhiên, quá trình này có thể phức tạp hơn do sự đa dạng của các thiết bị và hệ điều hành di động.

Kết luận

Load Testing đóng một vai trò quan trọng trong quá trình phát triển phần mềm, giúp đảm bảo rằng hệ thống có đủ khả năng xử lý tải cao và cung cấp trải nghiệm người dùng tốt nhất. Quá trình này cho phép các developer phát hiện và khắc phục các vấn đề hiệu suất trước khi ứng dụng được triển khai, tránh được các sự cố đáng tiếc và đảm bảo sự hài lòng của người dùng.

Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn nhiều thông tin hữu ích về Load Testing cũng như các bước triển khai quá trình Load Testing một cách hiệu quả. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm:

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Chứng chỉ AWS là gì? Tầm quan trọng và lợi ích của chứng chỉ AWS

Chứng chỉ AWS là gì

Amazon Web Services (AWS) là một trong những nhà cung cấp dịch vụ đám mây hàng đầu trên thế giới. Để đáp ứng nhu cầu ngày càng tăng về nhân lực có chuyên môn về AWS, chương trình chứng chỉ AWS đã ra đời. Trong bài viết này, hãy cùng TopDev tìm hiểu sâu hơn về chứng chỉ AWS, tầm quan trọng và lợi ích mà chứng chỉ mang lại.

Chứng chỉ AWS là gì?

Chứng chỉ AWS là gì?

Chứng chỉ AWS là một chứng nhận được cấp bởi AWS cho những người có kiến thức và kỹ năng về các dịch vụ và giải pháp của AWS. Chương trình chứng chỉ AWS bao gồm nhiều cấp độ khác nhau, từ cơ bản đến nâng cao, nhằm đáp ứng nhu cầu đa dạng của người học và các vai trò công việc khác nhau.

Các kỳ thi chứng chỉ của AWS 

Các kỳ thi chứng chỉ của AWS 

AWS cung cấp 11 chứng chỉ chia thành bốn cấp: Foundational, Associate, Professional và Specialty.

Foundational level:

  • AWS Certified Cloud Practitioner: Chứng chỉ cơ bản, cung cấp kiến thức tổng quan về AWS.

Associate level:

  • AWS Certified Solutions Architect: Dành cho các kiến trúc sư giải pháp, thiết kế và triển khai hệ thống trên AWS.
  • AWS Certified Developer: Dành cho các lập trình viên và nhà phát triển ứng dụng trên AWS.
  • AWS Certified SysOps Administrator: Dành cho các quản trị viên hệ thống vận hành và triển khai các ứng dụng trên AWS.

Professional level:

  • AWS Certified Solutions Architect – Professional: Dành cho những người có kinh nghiệm với AWS và có khả năng thiết kế, quản lý và triển khai các giải pháp phân tán phức tạp trên AWS.
  • AWS Certified DevOps Engineer – Professional: Dành cho các kỹ sư DevOps có kinh nghiệm làm việc với nguyên tắc DevOps, cũng như triển khai, quản lý và điều phối các dự án phần mềm phân tán trên AWS.

Specialty level:

  • AWS Certified Data Analytics – Specialty: Dành cho các chuyên gia phân tích dữ liệu có kinh nghiệm với các dịch vụ phân tích dữ liệu của AWS như Amazon Athena, Amazon EMR, AWS Glue, Amazon Kinesis, etc.
  • AWS Certified Advanced Networking – Specialty: Dành cho các chuyên gia mạng có hiểu biết sâu về các dịch vụ mạng của AWS như Amazon VPC, AWS Direct Connect, AWS Transit Gateway, etc.
  • AWS Certified Security – Specialty: Dành cho các chuyên gia an ninh mạng có kiến thức chuyên sâu về an ninh trên AWS, bao gồm quyền, mã hóa dữ liệu, kiến trúc an toàn, etc.
  • AWS Certified Machine Learning – Specialty: Dành cho các chuyên gia học máy và trí tuệ nhân tạo có kinh nghiệm với các dịch vụ học máy của AWS như Amazon SageMaker, Amazon Rekognition, Amazon Lex, etc.
  • AWS Certified Database – Specialty: Dành cho các chuyên gia quản trị cơ sở dữ liệu có kiến thức sâu về các dịch vụ cơ sở dữ liệu của AWS như Amazon RDS, Amazon DynamoDB, Amazon Redshift, etc.

  AWS Lambda là gì? Cách hoạt động và ứng dụng của Lambda

  So sánh AWS, Google Cloud và Azure năm 2024

Tầm quan trọng của chứng chỉ AWS

Trong thời đại công nghệ phát triển nhanh chóng và xu hướng chuyển đổi sang đám mây ngày càng gia tăng, việc sở hữu chứng chỉ AWS trở nên vô cùng quan trọng. Chứng chỉ AWS chứng minh rằng bạn có kiến thức và kỹ năng chuyên sâu về các dịch vụ đám mây của AWS, giúp bạn nổi bật trong mắt nhà tuyển dụng và đạt được lợi thế cạnh tranh trong thị trường lao động.

Đối với doanh nghiệp, việc có nhân viên được chứng nhận AWS sẽ giúp họ triển khai, quản lý và tối ưu hóa các giải pháp đám mây hiệu quả hơn, dẫn đến tiết kiệm chi phí và tăng năng suất.

Lợi ích của việc sở hữu chứng chỉ AWS 

Lợi ích của việc sở hữu chứng chỉ AWS 

Sở hữu chứng chỉ AWS mang lại nhiều lợi ích cho cả cá nhân và doanh nghiệp:

  • Nâng cao kiến thức và kỹ năng: 

Quá trình chuẩn bị và thi chứng chỉ sẽ giúp bạn nâng cao kiến thức và kỹ năng về AWS, đồng thời cập nhật các công nghệ và thực hành mới nhất.

  • Cơ hội nghề nghiệp mới: 

Chứng chỉ AWS là một lợi thế cạnh tranh trong thị trường lao động, giúp bạn dễ dàng tìm kiếm các cơ hội nghề nghiệp liên quan đến đám mây.

  • Mức lương hấp dẫn: 

Theo nhiều nghiên cứu, những người sở hữu chứng chỉ AWS thường có mức lương cao hơn so với những người không có chứng chỉ.

  • Thể hiện cam kết và chuyên môn: 

Chứng chỉ AWS cho thấy sự cam kết và chuyên môn của bạn trong lĩnh vực đám mây, điều này rất có giá trị đối với các nhà tuyển dụng.

  • Cơ hội phát triển nghề nghiệp: 

Với chứng chỉ AWS, bạn có thể tiếp tục nâng cao kỹ năng và chuyên môn, mở ra nhiều cơ hội phát triển nghề nghiệp trong tương lai.

Tham khảo việc làm Cloud cao, hấp dẫn trên TopDev!

Các câu hỏi thường gặp về chứng chỉ AWS là gì?

Câu 1. Làm thế nào để đăng ký thi chứng chỉ AWS?

Bạn có thể đăng ký thi chứng chỉ AWS trực tuyến trên trang web của AWS Training và Chứng chỉ. Quá trình đăng ký bao gồm chọn chứng chỉ mong muốn, địa điểm và ngày thi, cũng như thanh toán lệ phí thi.

Câu 2. Tôi cần chuẩn bị như thế nào cho kỳ thi chứng chỉ?

AWS cung cấp nhiều tài liệu chuẩn bị thi, bao gồm khóa học trực tuyến, hướng dẫn học tập, bài tập thực hành và tài liệu tham khảo. Ngoài ra, việc có kinh nghiệm thực tế với các dịch vụ AWS cũng rất quan trọng.

Câu 3. Chứng chỉ AWS có hạn sử dụng không?

Các chứng chỉ AWS có giá trị trong vòng 3 năm kể từ ngày cấp. Sau đó, bạn cần phải gia hạn chứng chỉ bằng cách thi lại hoặc hoàn thành một số yêu cầu đào tạo liên tục.

Câu 4. Chứng chỉ AWS có chi phí là bao nhiêu?

Chi phí cho bài kiểm tra AWS Cloud Practitioner là 100 USD, cấp Associate là 150 USD và bài kiểm tra ở cấp độ Specialty có giá 300 USD.

Kết luận

Trong thế giới công nghệ luôn thay đổi nhanh chóng, việc sở hữu chứng chỉ AWS là một lợi thế lớn cho cả cá nhân và tổ chức. Chứng chỉ này không chỉ chứng minh kiến thức và kỹ năng của bạn về AWS, mà còn mở ra nhiều cơ hội nghề nghiệp mới, cải thiện thu nhập và tạo điều kiện cho sự phát triển nghề nghiệp trong tương lai.

Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn được nhiều thông tin hữu ích về chứng chỉ AWS. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Test Scenario là gì? Phân biệt Test Case và Test Scenario

Test Scenario

Trong quá trình phát triển phần mềm, kiểm thử đóng vai trò quan trọng để đảm bảo chất lượng và sự ổn định của sản phẩm. Một trong những khái niệm cơ bản và quan trọng trong kiểm thử phần mềm là “Test Scenario” hay còn gọi là Kịch bản Kiểm thử. Trong bài viết này, hãy cùng TopDev tìm hiểu sâu hơn về Test Scenario, vai trò và cách xây dựng Test Scenario.

Test Scenario là gì?

Test Scenario là gì?

Test Scenario là một tập hợp các bước, điều kiện và dữ liệu đầu vào cụ thể được sử dụng để kiểm tra một tính năng hoặc yêu cầu nhất định của phần mềm. Nó mô tả một trường hợp sử dụng cụ thể và các bước cần thực hiện để kiểm tra trường hợp đó. Test Scenario giúp các kiểm thử viên có một cách tiếp cận có hệ thống trong việc kiểm tra phần mềm và đảm bảo rằng tất cả các trường hợp quan trọng đều được kiểm tra.

Vai trò quan trọng của Test Scenario trong kiểm thử

Vai trò quan trọng của Test Scenario trong kiểm thử

Test Scenario đóng một vai trò quan trọng trong quá trình kiểm thử phần mềm bởi một số lý do sau:

  • Giúp xác định phạm vi kiểm thử: 

Bằng cách xác định các kịch bản kiểm thử, đội ngũ kiểm thử có thể hiểu rõ phạm vi kiểm thử và đảm bảo rằng tất cả các tính năng quan trọng đều được kiểm tra.

  • Cung cấp một cách tiếp cận có hệ thống: 

Test Scenario cung cấp một khuôn khổ có hệ thống để thực hiện kiểm thử, giúp các kiểm thử viên không bỏ sót bất kỳ trường hợp nào.

  • Tăng độ lặp lại và tính nhất quán: 

Với các kịch bản kiểm thử được định nghĩa rõ ràng, việc kiểm tra có thể được lặp lại và đảm bảo tính nhất quán trong quá trình kiểm thử.

  • Hỗ trợ ghi lại và báo cáo kết quả: 

Test Scenario giúp ghi lại và báo cáo kết quả kiểm thử một cách dễ dàng hơn, cung cấp thông tin chi tiết về các trường hợp đã được kiểm tra và kết quả tương ứng.

  Manual Tester là gì? 8 kỹ năng cần có của một Manual Tester

  Test plan là gì? 4 bước cần thiết để thực hiện test plan?

Cách viết Test Scenario hiệu quả

Cách viết Test Scenario hiệu quả

Tester có thể tạo một Test Scenario hiệu quả theo 5 bước cụ thể như sau:

Bước 1: Đọc kỹ các tài liệu yêu cầu như BRS (Business Requirement Specification), SRS (Software Requirement Specification), FRS (Functional Requirement Specification) của hệ thống cần kiểm thử (System Under Test – SUT). Ngoài ra, cũng nên tham khảo các use cases, sách hướng dẫn sử dụng ứng dụng để hiểu rõ hơn về chức năng và cách sử dụng.

Bước 2: Đối với mỗi yêu cầu được liệt kê trong tài liệu, cần xác định:

  • Hành động và mục tiêu có thể của người dùng khi sử dụng tính năng đó.
  • Các khía cạnh kỹ thuật liên quan đến yêu cầu, như đầu vào, đầu ra, xử lý dữ liệu, tích hợp với hệ thống khác,…
  • Các tình huống lạm dụng hệ thống có thể xảy ra, như nhập dữ liệu không hợp lệ, truy cập trái phép, tấn công bảo mật,… Cần đánh giá với góc nhìn của một hacker.

Bước 3: Sau khi đọc và phân tích các tài liệu yêu cầu, liệt kê các kịch bản kiểm thử nhằm xác minh từng tính năng của phần mềm. Mỗi kịch bản kiểm thử cần bao gồm:

  • Mô tả kịch bản
  • Điều kiện tiên quyết (nếu có)
  • Các bước thực hiện kiểm thử chi tiết
  • Dữ liệu đầu vào
  • Kết quả mong đợi

Bước 4: Khi đã liệt kê đầy đủ các kịch bản kiểm thử, tạo ma trận truy xuất nguồn gốc (Traceability Matrix) để đảm bảo rằng tất cả các yêu cầu đều có ít nhất một kịch bản kiểm thử tương ứng để xác minh.

Bước 5: Các kịch bản kiểm thử được tạo ra cần được xem xét và phê duyệt bởi người giám sát dự án, người quản lý kiểm thử và các bên liên quan khác trong dự án để đảm bảo tính đầy đủ, chính xác và khả thi.

Lưu ý rằng quá trình tạo Test Scenario là một quá trình lặp đi lặp lại. Các kịch bản kiểm thử cần được cập nhật và điều chỉnh khi có bất kỳ thay đổi nào trong yêu cầu hoặc thiết kế của phần mềm.

Khám phá việc làm Tester lương cao trên TopDev

Phân biệt Test Case và Test Scenario

Phân biệt Test Case và Test Scenario

Cả Test Case và Test Scenario là hai thành phần rất quan trọng trong quá trình kiểm thử. Cùng TopDev so sánh sự khác nhau của hai thuật ngữ này.

Test Scenario Test Case
Bao gồm một quy trình tiêu chuẩn thực hiện kiểm thử chi tiết. Một Test Scenario bao gồm nhiều Test Case liên quan. Bao gồm tên Test Case, điều kiện tiên quyết, các bước thực hiện hoặc dữ liệu đầu vào và kết quả mong đợi.
Được phân cấp cao hơn trong nhóm điều kiện kiểm thử dựa trên tính năng của các module và bắt nguồn từ việc sử dụng trong trường hợp nhất định. Thuộc cấp độ hành động thấp hơn và có thể bắt nguồn từ Test Scenario.
Mô tả ngắn gọn và súc tích cho biết cái cần được kiểm thử. Đưa ra thông tin chi tiết về điều kiện tiên quyết (nếu có), cách kiểm thử và kết quả mong đợi.
Trở nên quan trọng khi không đủ thời gian với Test Case; các thành viên nhóm đều tán thành mô tả ngắn gọn nhưng chi tiết về kịch bản kiểm thử. Trở nên quan trọng hơn khi việc phát triển được thực hiện tại chỗ (onsite) và việc quản lý chất lượng được tiến hành từ xa (offshore). Nó giúp các bên hiểu và làm việc đồng bộ.
Trong bối cảnh kiểm thử phần mềm kiểu mới, Test Scenario là một ý tưởng đột phá và tiết kiệm thời gian. Việc sửa chữa và thêm không quá khó khăn và không phụ thuộc vào đối tượng đặc biệt nào. Viết Test Case chỉ tốn công một lần và có khả năng được dùng trong tương lai khi thực hiện kiểm thử hồi quy. Khi báo lỗi, nó giúp tester liên kết giữa số liệu Test Case (ID) và lỗi được phát hiện.
Một trong những ưu điểm nổi bật nhất về Test Scenario là sẽ giảm được sự phức tạp cũng như là tính lặp lại của sản phẩm. Đối với một tester mới, tài liệu chi tiết về Test Case là một tập hợp bằng chứng quan trọng. Trong trường hợp developer bỏ lỡ điều gì đó thì tester cũng có thể nắm bắt được khi thực hiện kiểm thử bằng Test Case.
Trường hợp Test Scenario không có đủ sự chi tiết, nó cần ít thời gian để bàn luận và trao đổi về Test Scenario chính xác đang nói về điều gì. Cần nhiều thời gian cũng như nguồn lực để tiến hành Test Case chi tiết khi bàn luận về việc kiểm thử như thế nào và kiểm thử điều gì.

Các câu hỏi thường gặp về Test Scenario là gì?

Câu 1. Ai là người xây dựng Test Scenario?

Test Scenario thường được xây dựng bởi các tester hoặc nhóm tester, với sự hợp tác của các bên liên quan khác như developer, architect và manager của dự án.

Câu 2. Có nên tự động hóa Test Scenario không?

Tự động hóa Test Scenario là một cách tiếp cận hiệu quả để tăng hiệu suất kiểm thử và giảm thời gian chạy các kịch bản kiểm thử lặp đi lặp lại. Tuy nhiên, không phải tất cả các Test Scenario đều nên được tự động hóa, đặc biệt là các kịch bản phức tạp hoặc liên quan đến các tình huống ngoại lệ khó dự đoán.

Câu 3. Làm thế nào để quản lý và duy trì Test Scenario?

Quản lý và duy trì Test Scenario là một thách thức, đặc biệt khi phần mềm phát triển và thay đổi. Cần có một hệ thống quản lý Test Scenario hiệu quả, bao gồm theo dõi các thay đổi, cập nhật kịch bản kiểm thử, và đảm bảo tính nhất quán. Sử dụng các công cụ quản lý Test Case và kiểm soát phiên bản có thể hỗ trợ quá trình này.

Câu 4. Có nên sử dụng một khuôn mẫu chuẩn cho Test Scenario không?

Sử dụng một khuôn mẫu chuẩn cho Test Scenario có thể giúp đảm bảo tính nhất quán và dễ hiểu trong toàn bộ dự án. Các khuôn mẫu chuẩn thường bao gồm các phần như mô tả kịch bản, điều kiện tiên quyết, bước kiểm thử, dữ liệu đầu vào, và kết quả mong đợi. Tuy nhiên, cần linh hoạt để điều chỉnh khuôn mẫu phù hợp với nhu cầu cụ thể của dự án.

Kết luận

Test Scenario là một phần quan trọng trong quá trình kiểm thử phần mềm. Chúng giúp xác định phạm vi kiểm thử, cung cấp một cách tiếp cận có hệ thống, tăng tính lặp lại và tính nhất quán, cũng như hỗ trợ ghi lại và báo cáo kết quả kiểm thử. Bằng cách xây dựng và sử dụng các Test Scenario hiệu quả, đội ngũ kiểm thử có thể đảm bảo rằng phần mềm đáp ứng các yêu cầu và hoạt động đúng như mong đợi. Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn được nhiều thông tin hữu ích về Test Scenario. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm:

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Phương pháp học lập trình hiệu quả bằng Mindmap

học lập trình bằng mindmap

Bài viết được sự cho phép bởi tác giả Vũ Thành Nam

Trong bài viết “Cách mà tôi học một công nghệ mới” mình đã đề cập đến một phương pháp gọi là Mindmap (sơ đồ tư duy) áp dụng vào trong việc học lập trình. Sau đó có một số bạn hỏi nó là gì, trong một số bình luận không thể trả lời cặn kẽ được cho các bạn nên hôm nay ở bài viết này mình sẽ nói kỹ hơn về Mindmap là gì nhé!

Mindmap

Mindmap hay còn gọi là sơ đồ tư duy, là một trong những phương pháp đơn giản nhưng giúp phát triển tư duy hiệu quả. Sơ đồ này được biểu thị dưới dạng một sơ đồ hình vẽ, dùng để diễn đạt một lượng lớn thông tin, kiến thức, ý tưởng hoặc vấn đề.

Bạn có thể hiểu đơn giản, Mindmap giống như một bức tranh tổng quát bao gồm tất cả những thông tin chính được tóm tắt ngắn gọn và dễ hiểu. Ngoài ra, bạn còn có thể sử dụng hình ảnh để minh họa cho các thông tin trong mindmap. Mindmap của bạn càng trực quan thì bạn càng dễ tiếp thu thông tin và đưa ra ý tưởng nhanh hơn.

Tại sao nên học cách tư duy bằng Mindmap?

Đối với những bạn đang bắt đầu học cách tư duy, phương pháp Mindmap được xem là công cụ giúp phân tích vấn đề, giúp bạn xây dựng lối tư duy riêng.

Dưới đây là một số lợi ích khi bạn học tư duy bằng Mindmap.

– Dễ dàng tìm ra bản chất của vấn đề Khi sử dụng Mindmap, vấn đề của bạn sẽ được phân thành các nhánh nhỏ. Hay nói cách khác, những thông tin trọng tâm sẽ được chia ra thành nhiều nhánh nhỏ. Bạn có thể chú thích mối quan hệ liên kết hoặc bổ sung cho các nhánh nhỏ này. Khi đó, bạn có thể dễ dàng tìm ra gốc rễ nguyên nhân và đưa ra hướng giải quyết cho từng phần nhỏ trong vấn đề bạn đang gặp phải.

– Hệ thống thông tin tinh gọn Mindmap là một trong những công cụ giúp lưu trữ và hệ thống thông tin nhanh nhất. Vì các ý tưởng lớn nhỏ, riêng lẻ trong sơ đồ đều được tóm tắt lại rất đơn giản. Chỉ cần trong nháy mắt, bạn có thể dễ dàng hiểu được mối quan hệ giữa những ý tưởng này. Từ đó, bạn có thể dễ dàng nhìn ra bức tranh tổng quát của mọi vấn đề, mọi thông tin. Sau đó, bạn có thể lựa chọn phương pháp giải quyết hoặc có thể tư duy não bộ dễ dàng hơn.

– Lên kế hoạch công việc logic, khoa học Có thể bạn không biết, Mindmap còn được sử dụng trong nhiều dự án lớn nhỏ. Ví dụ, khách hàng yêu cầu nhóm của bạn thiết kế một phần mềm với các yêu cầu và tính năng riêng biệt. Khi đó, điểm trung tâm của sơ đồ sẽ là tên phần mềm, những nhánh nhỏ sẽ là các phần quan trọng khi thiết kế phần mềm. Và trong những nhánh nhỏ này, bạn sẽ thêm vào các yêu cầu và tính năng khách hàng muốn có trong phần mềm đó. Và cuối cùng bạn có thể phân công công việc cho mỗi người dựa trên những nhánh nhỏ đó. Như vậy, nhóm của bạn có thể thực hiện dự án theo một trình tự logic, không bỏ sót bất kỳ mục quan trọng nào.

– Phát huy khả năng tư duy sáng tạo Ngoài việc phát triển tư duy logic và có hệ thống, sử dụng Mindmap còn giúp bạn phát huy khả năng sáng tạo. Vì khi vận dụng nó, bạn sẽ đồng thời sử dụng cả não phải và não trái để phân tích thông tin. Nhờ các hình ảnh trực quan, bạn có thể sẽ tìm ra được những ý tưởng hay, khám phá ra hướng giải quyết mới lạ,…

  Học lập trình có cần giỏi Toán không?

  Top 9 app học lập trình tốt nhất cho các developer

Cách tư duy bằng Mindmap

Mindmap được chia thành 2 phần:

– Điểm trung tâm chính là ý tưởng lớn hay vấn đề bạn muốn giải quyết, đây cũng là điểm nút nơi các nhánh tỏa ra.

– Nhánh là những ý tưởng nhỏ hơn có liên quan mật thiết với nội dung chính.

Ở các nhánh này, bạn có thể tiếp tục vẽ ra những nhánh nhỏ hơn để làm rõ nội dung hay đưa ra gợi ý cho nhánh lớn.Dưới đây là các bước lập Mindmap đúng chuẩn:

  • Bước 1: Xác định từ khóa chính, ý tưởng lớn hoặc vấn đề mấu chốt cần giải quyết.
  • Bước 2: Vẽ điểm trung tâm ở giữa tờ giấy trắng hoặc bảng trắng. Bạn nên sử dụng màu sắc, ký tự lớn hoặc hình ảnh để làm nổi bật nội dung chính.
  • Bước 3: Vẽ những tiêu đề phụ (nhánh cấp 1). Nên viết chữ in hoa và vẽ theo hướng góc chéo để có thể vẽ ra nhiều nhánh khác dễ dàng hơn.
  • Bước 4: Vẽ nhánh cấp 2, cấp 3,… Các bạn nên vẽ nhánh cấp 2 nối tiếp vào nhánh cấp 1 và nhánh cấp 3 nối vào cấp 2.

Ngoài ra, bạn nên chọn 1 màu riêng biệt cho tất cả các nhánh của một ý để dễ dàng kết nối tất cả ý tưởng và nội dung. Lưu ý nên sử dụng những cụm từ khóa, ký hiệu, biểu tượng hoặc hình ảnh để sơ đồ không bị chi chít chữ, làm bạn khó tư duy hơn.

Việc làm IT Fresher dành cho bạn

Cách sử dụng Mindmap trong việc học lập trình

Thực tế thì mình sử dụng Mindmap chỉ nhằm mục đích lưu lại các từ khóa và quá trình học một công nghệ của mình. Như mình đã đề cập ở bài viết trước thì khi đọc một cuốn sách hay tài liệu của một công nghệ nào đó, mình thường vẽ Mindmap dựa trên mục lục của cuốn sách, sau đó rẽ nhánh tới các công nghệ liên quan, rồi đến các từ khóa.

Mục đích của việc này nhằm có được bức tranh tổng quát của công nghệ mà mình muốn học, tránh việc sót và không có một hệ thống tổng quát. Ngoài ra do cách học chia để trị, học từng mảnh ghép nhỏ trong một bể kiến thức rất khó để mà thống kê lại, nên mình chia nhỏ và research từng những nhánh nhỏ học từ nhỏ tới lớn để hoàn thành một công nghệ thì mình nghĩ mindmap sẽ giúp ích được rất nhiều.

Các công cụ Mindmap mình đã từng dùng qua

– IMindMap: Ngày xưa thích màu mè nên dùng bản crack, sau không xài đồ crack nữa nên thôi, phía đắt quá

– XMind: Cái này có cả free và có phí, dùng ổ, đơn điệu nhưng có bản portable không cần cài cắm gì và có thể dùng được trên Mac khá ok.

– Draw.io: Cái này thì không thực sự là mindmap mà nó là công cụ thiết kế chuyên dụng trong lập trình của mình hay dùng. Nó tích hợp nhiều loại sơ đồ, thấy tiện nên dùng thôi. Hơn nữa nó có thể đồng bộ lên cloud nên dùng ở đâu cũng được.

– …

Đây là một sơ đồ mà mình từng vẽ bằng xMind

img_1

Trên đây là toàn bộ những gì mình biết và sử dụng mindmap, bạn có thể tham khảo cách học của mình, hi vọng bài viết này sẽ giúp ích được cho bạn không chỉ trong việc học lập trình!

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

Xem thêm:

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

Manual Tester là gì? 8 kỹ năng cần có của một Manual Tester

Manual Tester là gì

Trong kiểm thử phần mềm, kiểm thử thủ công đóng vai trò quan trọng và không thể thiếu trong việc đảm bảo chất lượng sản phẩm đối với mỗi dự án. Trong đó Manual Testing được thực hiện bởi Manual Tester và đòi hỏi nhiều kỹ năng liên quan đến phân tích nghiệp vụ và hiểu biết về các phương pháp kiểm thử. Bài viết hôm nay chúng ta cùng tìm hiểu xem Manual Tester là gì và những kỹ năng cần có của một Manual Tester nhé.

Manual Tester là gì?

Manual Tester là những người kiểm thử phần mềm một cách thủ công (hay còn gọi là Manual Testing) với nhiệm vụ chính là kiểm tra hoạt động của phần mềm, phát hiện ra các lỗi, sai sót hay bất cứ vấn đề nào có thể gây ảnh hưởng đến chất lượng phần mềm. Trong Manual Testing, các tester sẽ thực hiện các trường hợp kiểm thử và tạo báo cáo kiểm thử hoàn toàn thủ công mà không sử dụng các công cụ tự động nào.

Manual Tester là gì?

Khái niệm Manual Tester sinh ra để phân biệt với Automation Tester – kiểm thử tự động sử dụng các công cụ để thực hiện các trường hợp kiểm thử (Test case). Hiện nay, kiểm thử tự động đang ngày càng được sử dụng nhiều hơn trong các dự án nhằm tối ưu hiệu suất kiểm thử; tuy nhiên kiểm thử thủ công vẫn luôn không thể thiếu trong quy trình phát triển dự án.

Công việc của một Manual Tester

Manual Tester tập trung vào công việc kiểm tra và đảm bảo chất lượng phần mềm. Để thực hiện được công việc này yêu cầu tester phát hiện lỗi một cách nhanh chóng và báo ngay cho bộ phận lập trình (Developers) giúp họ khắc phục lỗi trước khi bàn giao sản phẩm cho khách hàng. Cụ thể công việc của một Manual Tester bao gồm:

  • Lên kế hoạch kiểm thử (Test Plan)
  • Viết Test Case, thực hiện các kịch bản kiểm thử
  • Tìm kiếm phát hiện lỗi của sản phẩm, hệ thống
  • Xác nhận yêu cầu kỹ thuật và nghiệp vụ của dự án có được đáp ứng bởi sản phẩm, hệ thống hiện tại
  • Sử dụng các công cụ và phương pháp kiểm thử phù hợp để đánh giá chất lượng sản phẩm
  • Phối hợp với các bộ phận liên quan để khắc phục lỗi xảy ra
  • Đề xuất phương án giải quyết, khắc phục lỗi hoặc cải thiện phần mềm
  • Viết báo cáo kiểm thử (Test Reports)

Công việc của một Manual Tester

Manual Testing được chia thành 6 loại, mỗi Manual Tester có thể được phân công cho từng loại kiểm thử trong số đó:

  • Unit Testing: kiểm thử đơn vị
  • System Testing: kiểm thử hệ thống
  • White Box Testing: kiểm thử hộp trắng
  • Black Box Testing: kiểm thử hộp đen
  • Acceptance Testing: kiểm thử chấp nhận
  • Integration Testing: kiểm thử tích hợp

  Test Report là gì? Hướng dẫn cách viết Test Report chuẩn cho Tester

  Triển vọng của automation tester trong tương lai

Những kỹ năng cần có của một Manual Tester

Những kỹ năng cần có của một Manual Tester

Kỹ năng chuyên môn

Điều kiện tiên quyết đầu tiên đối với một Manual Tester là cần có những kiến thức về phát triển phần mềm cùng với nguyên tắc và phương pháp kiểm thử sẽ được áp dụng trong công việc, trong dự án. Kiểm thử không chỉ là thao tác với phần mềm để phát hiện ra lỗi; mà là cả quá trình từ bước lập kế hoạch kiểm thử, viết Test case; thực hiện test; phối hợp sửa lỗi và viết báo cáo kiểm thử. Vì vậy bạn cần trang bị các kỹ năng chuyên môn dưới đây:

  • Kỹ năng lên kế hoạch: Test Plan mô tả chi tiết các mục tiêu, quy trình, phương pháp và kế hoạch cho việc kiểm thử. Kế hoạch kiểm thử ảnh hưởng đến toàn bộ kế hoạch của dự án, quyết định việc có khả năng bàn giao sản phẩm đến với khách hàng đúng yêu cầu hay không. Vì vậy một Manual Tester cũng có có kỹ năng lên kế hoạch, làm chủ thời gian công việc của mình.
  • Kỹ năng làm tài liệu: có 2 loại tài liệu mà mọi Tester cần phải viết là Test Case và Test Report. Có thể xem đây là sản phẩm của quá trình kiểm thử, vì vậy bạn cần có kỹ năng viết chuẩn 2 loại tài liệu này, không chỉ để trong team Tester đọc mà còn giúp các bộ phận liên quan khác có thể đọc hiểu và nắm được rõ ràng thông tin.
  • Kỹ năng kiểm thử: liên quan trực tiếp đến chuyên môn công việc của một Manual Tester. Nắm được các nguyên tắc cơ bản khi kiểm thử, hiểu rõ các loại kiểm thử, các phương pháp kiểm thử được áp dụng và thành thạo sử dụng các công cụ kiểm thử theo yêu cầu là kỹ năng bắt buộc để có thể làm việc được ở vị trí này.
  • Kỹ năng báo cáo: sau tất cả các công việc đã thực hiện thì báo cáo sẽ là bước quan trọng mang lại giá trị dành cho dự án đối với giai đoạn kiểm thử. Việc báo cáo đòi hỏi có thể rõ ràng, ngắn gọn và dễ hiểu giúp các bộ phận khác dễ dàng xử lý giai đoạn tiếp theo. Vì vậy đây cũng là một kỹ năng cần thiết với các Tester.

Khám phá việc làm Tester lương cao trên TopDev

Kỹ năng mềm

  • Kỹ năng phân tích: giúp bạn chia nhỏ hệ thống ra thành các phần đơn vị riêng lẻ, có thể kiểm tra và nắm vững được nghiệp vụ liên quan đến phần đó. Từ đó sẽ nâng cao hiệu quả và hiệu suất làm việc của bản thân.
  • Kỹ năng giao tiếp: làm việc trong môi trường teamwork nên đây là kỹ năng bắt buộc phải có của Tester. Ngoài ra việc biết lắng nghe và có khả năng truyền đạt tốt sẽ giúp bạn hợp tác tốt hơn với các phòng ban khác.
  • Kỹ năng tự học và tìm hiểu: kiểm thử thủ công cũng cần phải làm việc với một số công cụ hỗ trợ kiểm thử, đo lường chỉ số, dữ liệu; vì thế việc tự học và tìm hiểu các công nghệ, cách sử dụng tools phục vụ yêu cầu là điều cần thiết với Manual Tester.
  • Rèn luyện tính cẩn thận, tỉ mẩn: đây là đức tính, thói quen tốt dành cho công việc kiểm thử mà bạn nên trang bị, rèn luyện. Luôn luôn cẩn thận trước khi đánh Pass một test case sẽ giúp bạn hạn chế được tối đa các lỗi xuất hiện trong chương trình.

Kết bài

Kiểm thử thủ công giúp tận dụng tối đa tư duy phân tích và sự nhạy bén của con người để phát hiện lỗi và cải thiện chất lượng sản phẩm, vì thế Manual Tester luôn luôn đóng vai trò không thể thiếu trong một team phát triển dự án. Qua bài viết này, hy vọng các bạn đã hiểu rõ hơn về vị trí này và các bạn Tester cũng có thể trang bị thêm các kỹ năng trong bài để nâng cao khả năng của mình. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình. 

Tác giả: Phạm Minh Khoa

Xem thêm:

Xem ngay tin đăng tuyển lập trình viên đãi ngộ tốt trên TopDev

Cloud là gì? Giải mã các kiến thức cần biết về Cloud

Cloud là gì

Cloud đã trở thành một khái niệm quen thuộc trong thế giới công nghệ thông tin hiện đại. Mô hình này đóng vai trò quan trọng trong việc cung cấp các dịch vụ và tài nguyên máy tính một cách linh hoạt và hiệu quả. Trong bài viết này, hay cùng TopDev tìm hiểu toàn diện về Cloud, từ khái niệm đến cách thức hoạt động, lợi ích và các loại Cloud phổ biến.

Cloud là gì?

Cloud là gì?

Cloud là một mô hình công nghệ cho phép truy cập qua mạng vào một nhóm tài nguyên máy tính chia sẻ, có thể được cấu hình và cung cấp nhanh chóng với sự can thiệp quản lý tối thiểu hoặc tương tác với nhà cung cấp dịch vụ. Các tài nguyên này bao gồm máy chủ, lưu trữ, ứng dụng, dịch vụ, công cụ phát triển và nhiều thứ khác.

Cách thức hoạt động của Cloud

Cloud hoạt động dựa trên nguyên tắc phân chia tài nguyên và cung cấp dịch vụ theo yêu cầu. Các nhà cung cấp dịch vụ Cloud (như Amazon Web Services, Microsoft Azure hoặc Google Cloud) xây dựng và quản lý các trung tâm dữ liệu lớn, được trang bị các máy chủ, lưu trữ và mạng kết nối mạnh mẽ.

Người dùng có thể thuê hoặc mua các dịch vụ và tài nguyên từ nhà cung cấp Cloud. Dữ liệu của họ được lưu trữ trên hạ tầng Cloud và có thể truy cập từ bất kỳ đâu thông qua Internet. Cloud cung cấp linh hoạt và tính sẵn có cao, cho phép người dùng mở rộng hay thu hẹp tài nguyên theo nhu cầu thực tế.

Tham khảo Việc làm  IT Security lương cao

Lợi ích của việc sử dụng Cloud

Lợi ích của việc sử dụng Cloud

Cloud được sử dụng rộng rãi vì mang lại nhiều lợi ích đáng kể cho người dùng, bao gồm:

  • Khả năng mở rộng

Cloud cho phép mở rộng tài nguyên lưu trữ và tính toán theo yêu cầu, giúp các tổ chức linh hoạt đáp ứng với sự tăng trưởng và biến động của doanh nghiệp.

  • Tiết kiệm chi phí

Thay vì phải đầu tư vào việc xây dựng và duy trì hạ tầng máy chủ riêng, người dùng chỉ trả tiền cho tài nguyên mà họ sử dụng thực sự. Điều này giúp giảm thiểu các chi phí cố định và tăng tính hiệu quả kinh tế.

  • Dễ dàng truy cập và chia sẻ dữ liệu

Cloud cho phép truy cập dữ liệu từ bất kỳ đâu và bất kỳ thiết bị nào có kết nối internet. Điều này giúp tăng cường khả năng làm việc từ xa và chia sẻ thông tin dễ dàng trong tổ chức.

  • Bảo mật và sao lưu dữ liệu

Các nhà cung cấp Cloud thường đầu tư mạnh vào bảo mật dữ liệu. Họ cung cấp các biện pháp bảo mật tiên tiến như mã hóa, kiểm soát truy cập và sao lưu dữ liệu định kỳ để đảm bảo an toàn và bảo mật thông tin.

  • Tự động hóa và cập nhật

Nhà cung cấp Cloud chịu trách nhiệm quản lý, bảo trì và cập nhật phần cứng và phần mềm, giảm bớt gánh nặng cho người dùng.

  So sánh AWS, Google Cloud và Azure năm 2024

  Amazon Appsync có gì hay ho?

Các loại Cloud phổ biến

Các loại Cloud phổ biến

Tùy thuộc vào nhu cầu và mục đích sử dụng, mỗi người dùng sẽ chọn cho mình một loại mô hình Cloud phù hợp. Dưới đây là 3 loại mô hình Cloud được sử dụng rộng rãi:

  • Public Cloud

Được cung cấp công khai cho công chúng, Public Cloud cung cấp tài nguyên chia sẻ cho nhiều khách hàng. Ví dụ điển hình là các dịch vụ của Amazon Web Services (AWS)Microsoft Azure.

  • Private Cloud

Private Cloud là một mô hình Cloud riêng được xây dựng và quản lý bởi một tổ chức hoặc doanh nghiệp. Nó cung cấp sự kiểm soát và bảo mật cao hơn so với Public Cloud, vì tài nguyên chỉ được sử dụng bởi một số người được ủy quyền.

  • Hybrid Cloud

Hybrid Cloud kết hợp giữa Public Cloud và Private Cloud. Điều này cho phép tổ chức sử dụng Public Cloud để tận dụng linh hoạt và tính sẵn có, trong khi vẫn giữ được sự kiểm soát và bảo mật của Private Cloud. Mô hình Hybrid Cloud thường được sử dụng khi tổ chức có các yêu cầu đặc biệt về bảo mật hoặc tuân thủ quy định.

Tham khảo việc làm Cloud cao, hấp dẫn trên TopDev!

Các câu hỏi thường gặp về Cloud là gì?

Câu 1. Cloud có an toàn không?

Các nhà cung cấp Cloud áp dụng các biện pháp bảo mật nghiêm ngặt như mã hóa dữ liệu, kiểm soát truy cập, giám sát và các tiêu chuẩn an ninh cao để bảo vệ dữ liệu và ứng dụng của khách hàng.

Câu 2. Tôi có cần kiến thức chuyên sâu về công nghệ để sử dụng Cloud không?

Không, hầu hết các dịch vụ Cloud đều được thiết kế với giao diện đơn giản và dễ sử dụng, cho phép người dùng không chuyên có thể dễ dàng truy cập và quản lý tài nguyên.

Câu 3. Tôi có thể di chuyển dữ liệu và ứng dụng từ Cloud này sang Cloud khác không?

Việc di chuyển dữ liệu và ứng dụng giữa các nhà cung cấp Cloud khác nhau là khả thi, tuy nhiên có thể gặp một số thách thức về tính tương thích và di chuyển dữ liệu.

Kết luận

Cloud đã trở thành một phần không thể thiếu trong thế giới công nghệ thông tin hiện đại. Mô hình công nghệ này mang lại nhiều lợi ích về chi phí, linh hoạt và khả năng mở rộng cho doanh nghiệp và người dùng. Với sự đa dạng về loại hình Cloud và các dịch vụ không ngừng phát triển, Cloud sẽ tiếp tục là một xu hướng quan trọng trong tương lai. Hiểu rõ về Cloud sẽ giúp các tổ chức và cá nhân đưa ra những quyết định sáng suốt để tận dụng tối đa lợi ích từ công nghệ này. Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn được nhiều thông tin hữu ích về mô hình công nghệ Cloud. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Chuẩn Hóa CV, Nhận Quà Hết Ý

Mùa hè đến cùng nhiều cơ hội lý tưởng để nâng tầm sự nghiệp IT của bạn. Cùng TopDev thăng hoa trong sự nghiệp và đảm bảo rằng CV của bạn sẽ nổi bật với nhà tuyển dụng với các công cụ Tạo CV Online và Chuẩn hóa CV. Hơn thế nữa, khi trải nghiệm các tính năng từ TopDev, bạn đã có cơ hội tham gia vào chương trình “Chuẩn hóa CV, Nhận quà hết ý” với nhiều phần quà hấp dẫn. Đừng chần chừ gì nữa mà hãy đăng ký ngay và khám phá các tính năng tuyệt vời của TopDev nhé.

monthly reward may 2024

Check list 10 câu hỏi phỏng vấn Laravel & cách trả lời

câu hỏi phỏng vấn Laravel

Nếu bạn là một lập trình viên PHP thì chắc hẳn không thể chưa từng biết về Laravel, một framework phổ biến nhất của PHP hiện nay. Thị trường tuyển dụng lập trình viên ở Việt Nam trước đến nay thì PHP luôn là một ngôn ngữ được ưa chuộng với nhu cầu lớn và mức đãi ngộ hấp dẫn. Để chuẩn bị tốt nhất cho buổi phỏng vấn sắp tới, bài viết hôm nay chúng ta cùng nhau tìm hiểu top 10 câu hỏi phỏng vấn Laravel thường gặp nhất nhé. 

Câu 1: Laravel là gì?

Laravel là một framework mã nguồn mở miễn phí dựa trên ngôn ngữ lập trình PHP, dùng để xây dựng các ứng dụng Web. Sử dụng mô hình kiến trúc MVC, Laravel cung cấp một hệ thống đóng gói module với các tài nguyên có sẵn để lập trình viên dễ dàng lựa chọn và sử dụng. Hiện nay, Laravel đang là PHP framework phổ biến nhất và tốt nhất được đông đảo lập trình viên PHP lựa chọn.

câu hỏi phỏng vấn Laravel

Câu 2: Các tính năng mà Laravel cung cấp

Laravel cung cấp bộ chức năng phong phú dành cho lập trình viên PHP bao gồm Eloquent ORM, Template Engine, Artisan, Migration system for databases,… Laravel hỗ trợ kiến trúc MVC, đóng gói tài nguyên thành các thư viện (Libraries) và các module giúp chúng ta dễ dàng sử dụng. Các tài nguyên trên được tổ chức và sử dụng thông qua việc khai báo namespaces và interfaces.

Ngoài ra Laravel hỗ trợ chúng ta các phương thức bảo mật Web có sẵn phổ biến cùng khả năng mở rộng bảo trì lâu dài. Framework này cũng có những module dành cho việc kiểm thử Unit Testing mà không cần cài thêm thư viện nào khác.

Câu 3: Blade Template là gì?

Blade là một template engine (công cụ giúp tách mã HTML thành các phần nhỏ hơn) đơn giản nhưng mạnh mẽ được cung cấp bởi Laravel. Các file Blade view có phần mở rộng .blade.php và được lưu trong thư mục resources/views. Tất cả các Blade view sẽ được biên dịch thành mã PHP và được lưu vào bộ nhớ đệm cho đến khi chúng được sửa đổi.

Câu 4: Có những cách query nào trong Laravel?

Có 2 cách query trong Laravel bao gồm: 

  • Query builder: thao tác với database sử dụng PDO (PHP Data Object) có sẵn của PHP có thể kết nối đến các CSDL thông dụng
  • Eloquent: thao tác với database qua model với sự hỗ trợ của nhiều function hữu ích

Câu 5: Middleware trong Laravel là gì?

Middleware là nơi chứa những đoạn mã xử lý trung gian nằm giữa các request và response. Cơ chế này cho phép chúng ta tham gia vào luồng xử lý request trong ứng dụng Laravel. Ví dụ như middleware Authenticate có tác dụng kiểm tra xem user đã đăng nhập chưa; trong trường hợp xác thực thất bại thì trả về trực tiếp response yêu cầu đăng nhập mà không cần xử lý bước tiếp theo.

Middleware trong Laravel là gì?

Câu 6: Liệt kê các phương thức làm việc với session

Các thao tác cơ bản với Session trong Laravel gồm:

  • Lấy dữ liệu từ session: get(‘key’)
  • Lấy toàn bộ dữ liệu từ session: all()
  • Xóa dữ liệu từ session: forget(‘key’) hay flush()
  • Lưu dữ liệu vào session: put(‘key’, ‘value’)

  So sánh Laravel và Phalcon - Framework nào tốt hơn?

  Những tính năng cao cấp trong Laravel mà có thể bạn chưa biết

Câu 7: Xóa mềm trong Laravel là gì?

Xóa mềm – Soft delete là một tính năng của Laravel giúp dữ liệu được ẩn đi khỏi chương trình nhưng không thực sự bị xóa đi khỏi hệ thống. Laravel sử dụng một cột delete_at đánh dấu cho tính năng xóa mềm cho một Model. Ngược lại với xóa mềm là xóa cứng (Hard delete) là việc xóa hoàn toàn 1 record trong table và sẽ không thể khôi phục lại trừ khi có backup database.

Câu 8: Caching trong Laravel được xử lý thế nào?

Mặc định Laravel cấu hình caching lưu trữ các đối tượng trong file một cách nối tiếp, thư mục lưu trữ file cache này là storage/framework/cache/data . Khi các dự án lớn cần quản lý caching tốt hơn thì chúng ta có thể sử dụng Memcached hoặc Redis.

Middleware trong Laravel là gì?

Tham khảo nhiều chương trình tuyển dụng Laravel hấp dẫn trên TopDev

Câu 9: Hãy giải thích về Service Provider

Service Provider là trung tâm khởi tạo tất cả các ứng dụng trong Laravel, các thành phần core sẽ được khởi tạo từ đây. Để đăng ký một service provider mới, chúng ta cần tạo một file Provider và đăng ký thông qua method register; sau đó add service provider này vào config/app.php. Chúng ta cũng có thể sử dụng lệnh php artisan make: provider ClientsServiceProvider trên CLI (command line interface) để tự tạo cho mình một service provider.

Câu 10: Liệt kê những điểm mới trong Laravel 9

Liệt kê những điểm mới trong Laravel 9

Laravel 9 phát hành vào đầu năm 2022 với một số điểm mới hữu ích:

  • Route:list: gọn gàng và đẹp hơn
  • Anonymous Stub Migrations: trả về class Anonymous khi chạy make:migration
  • Symfony Mailer: thay thế cho Swift Mailer
  • Forced Scoping Of Route Bindings: ràng buộc định tuyến
  • Rendering Inline Blade Templates: hỗ trợ render text thành HTML
  • Hỗ trợ Full Text Indexes và Where Clauses

Kết bài

Trên đây là danh sách 10 câu hỏi phỏng vấn Laravel mà bạn sẽ thường xuyên gặp phải trong các buổi phỏng vấn của mình. Hy vọng qua bài viết giúp bạn tự tin hơn để có thể chinh phục được nhà tuyển dụng hay củng cố thêm kiến thức về Laravel của bản thân. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Tham khảo thêm các vị trí tuyển dụng ngành IT tại Topdev