Home Blog Page 157

Dịch vụ thị trường Thương mai Điện tử Landscape 2020

Thị trường Thương mại Điện tử 2020

Thị trường Thương mại Điện tử 2020 trong khối Đông Nam Á, có thể nói Việt Nam chúng ta là một nước có tốc độ phát triển kinh tế khá nhanh và vượt trội so với những nước khác. Việt Nam đang trở thành một “miếng bánh ngon” được các nhãn hàng, nhà bán lẻ, nhà đầu tư nhắm đến. Để nước ta có được nền kinh tế như hiện nay thì thị trường Thương mại Điện tử cũng đã góp 1 phần sức lực không hề nhỏ trong những năm gần đây.

Để có thể biết thêm chi tiết tốc độ tăng trưởng của thị trường Thương mại Điện tử, TopDev xin gửi đến bạn đọc bảng báo cáo thị trường Thương mại Điện tử Landscape 2020 với đầy đủ các số liệu cụ thể.

Trong bài viết dưới đây, TopDev sẽ phân tích tình hình thị trường Thương mại Điện tử 2020 đã bị ảnh hưởng như thế nào trong giai đoạn dịch Covid-19.

Thị trường Thương mại Điện tử 2020

Xem thêm báo cáo về Thị trường Thương mại Điện tử Landscape 2020

Tổng quan thị trường Thương mại Điện tử

Thị trường Thương mại Điện tử ở nước ta có xu hướng tăng dần đều ở những năm 2015 đến nay, tuy nhiên để nói về sự bùng nổ thì phải nhắc đến năm 2019. Trong năm, ngành Thương mại Điện tử đã có sự tăng trưởng vượt bậc, thu về 2,7 tỷ USD trong riêng năm 2019 và đã có hơn 35,4 triệu người sử dụng.

Cũng trong năm 2019, lượng người sử dụng mạng tại Việt Nam là 59,2 triệu/tổng dân số cả nước, dự đoán trong năm 2021 con số này sẽ tăng trưởng lên thành 68 triệu người/tổng dân số.

Lượng người sử dụng điện thoại thông minh để mua sắm cũng tăng khá rõ rệt, dự đoán cho đến năm 2021 sẽ tăng thêm 5 triệu người sử dụng, tăng từ 35 triệu lên 40 triệu người.

Với số liệu khá khả quan như vậy, đó cũng là một trong những điều kiện rất tốt để các nhà đầu tư bán lẻ, kinh doanh nhỏ chuyển hướng đầu tư vào mảng kinh doanh, mở shop trên các sàn Thương mại Điện tử.

Để kể đến các sàn Thương mại Điện tử thì phải điểm mặt qua 4 ông lớn tmd đang “nắm trùm” thị trường tại Việt Nam đó là Tiki, Lazada, Shopee và Sendo.

Trong đó có Tiki và Sendo là 2 trang Thương mại Điện tử có quy mô rộng với phạm vi hoạt động bao trùm luôn cả Đông Nam Á.

Đế có thể dấn thân vào thị trường Thương mại Điện tử Việt Nam thật sự không hề dễ dàng đối với các nhà bán lẻ vì thói quen tiêu dùng của người Việt Nam rất khác so với tình hình chung.

Cụ thể là hơn 80% lượng khách mua hàng ưu tiên ship COD, có nghĩa là khách hàng chỉ thanh toán khi đã xem qua hàng và nhận hàng.

Việc này chứng minh rằng khách hàng vẫn giữ thói quen sử dụng tiền mặt và không có thói quen thanh toán online vì nhiều lý do khách quan. Ngoài ra việc khách hàng chỉ ưu tiên ship COD còn cho thấy là họ thật sự chưa đặt nhiều niềm tin vào chất lượng của các sản phẩm được mua trên mạng nói chung và sàn Thương mại Điện tử nói riêng.

Trong bài báo cáo về thị trường Landscape 2019, số liệu cho thấy các nhóm:

  •  Sản phẩm hàng điện tử có doanh thu 685 triệu USD,
  • Sản phẩm thời trang có doanh thu 661 triệu USD, 
  • Sản phẩm đồ chơi có doanh thu 478 triệu USD
  • Nhóm thực phẩm và đồ chăm sóc cá nhân có doanh thu 448 triệu USD

Từ đó ta thấy doanh thu của những nhóm hàng được nêu trên tăng trưởng khá tốt trên các sàn Thương mại Điện tử, các nhóm hàng này cần được đặc biệt chú trọng và đẩy mạnh hơn.

Thị trường Thương mại Điện tử 2020

Căn cứ vào số liệu trên, các doanh nghiệp trên sàn Thương mại Điện tử đặc biệt lưu tâm về tiềm năng phát triển kinh doanh đối với các nhóm hàng chủ yếu đã thống kê ở trên từ đó tạo ra lợi nhuận tăng trưởng cho năm 2020.

Cùng theo số liệu trong báo cáo thị trường Thương mại Điện tử 2020, đa số các giao dịch đều phát sinh trên các thiết bị điện thoại di động, khác với một vài năm về trước, đa số các giao dịch phát sinh đều từ máy tính bàn. Lý do là các thiết bị di động ngày nay đều được cải tiến các chức năng để phù hợp hơn với xu hướng nhu cầu người dùng.

Thương mại điện tử là một trong những thành tố phát triển nhanh nhất của nền kinh tế số tại Việt Nam. Thậm chí tốc độ tăng trưởng của thị trường được đo lường đạt mức 35% mỗi năm, nhanh hơn thị trường Nhật Bản 2.5 lần. Năm 2020, con số của người mua sắm Việt được dự đoán tăng 52%, nâng tổng doanh thu lên đến 10 tỷ USD. 

Một số báo cáo chỉ ra rằng lượng truy cập vào website các sàn Thương mại Điện từ như Tiki, Lazada, Sendo giảm trung bình 9% so với cùng kỳ năm ngoái. Nguyên do đến từ trong mùa dịch, các sàn giảm các hoạt động khuyến mãi hay quảng cáo, thay vào đó là những hoạt động tương tác khác nhằm tăng độ gắn kết với khách hàng. 

  Báo cáo thị trường IT 2020: Việt Nam sẽ trở thành quốc gia IT với nhiều chỉ số trong top thế giới
  Báo cáo thị trường IT quý II 2020: Ngành IT khôi phục trạng thái, Việt Nam khởi sắc “xây tổ” đón “đại bàng”

Trong 3 tháng đầu năm, thị trường bán lẻ về thời trang chứng kiến lượng truy cập giảm 38% so với quý trước đó. Tương tự, thị trường bán lẻ đồ dùng điện gia dụng cũng giảm lượng truy cập đến 17% so với tháng 1.

Tuy nhiên tới tháng 3, trạng thái cách ly xã hội đã tạo cơ hội cho các nhà bán lẻ online như Bách Hóa Xanh, với chỉ số tăng đến 49% so với quý trước, khi mà người tiêu dùng ở nhà tránh dịch nhiều hơn.

Nói chung, thị trường Thương mại Điện tử trải qua nhiều thay đổi trong giai đoạn cách ly xã hội và khi nhu cầu mua sắm của người tiêu thay đổi các thứ tự ưu tiên. Nhưng cũng từ sự biến chuyển này mới thấy sự cần thiết của các website TMĐT luôn phải nhanh nhạy, nắm bắt xu yếu thị trường.

Thách thức trong thị trường Thương mại Điện tử 2020

Tuy đây là một thị trường có sự bùng nổ rõ ràng nhất trong thời kỳ dịch bệnh Covid, tuy nhiên nó vẫn có những khó khăn, thử thách nhất định để có thể đạt được nhiều thành công hơn.

Thời gian giao hàng quá lâu. 

Chắc hẳn là các đơn hàng đều trải dài ở các khu vực trên Việt Nam, đều đó đồng nghĩa với việc bộ phận vận chuyển phải làm việc cực lực để có thể giao hàng đến tận tay người mua. Tuy nhiên, theo báo cáo hiện nay, thời gian khách hàng phải đợi để nhận được hàng kéo dài trong khoảng từ 3 – 7 ngày ở khu vực các tỉnh thành khác.

Còn trong khu vực nội thành như Hồ Chí Minh hay Hà Nội thì sẽ nhận được hàng trong thời gian 3 ngày đổ lại. Điều này gây khá nhiều bất cập trong việc chuyển đổi tỷ lệ mua hàng của khách.

Thị trường Thương mại Điện tử 2020

Có rất nhiều trường hợp khách đã để sản phẩm cần mua vào giỏ hàng và chuyển đến trang thanh toán, tuy nhiên, khi thấy thời gian giao hàng dự kiến thì lại có hành vi thoát ra và không mua nữa. 

Cũng có rất nhiều khách hàng thực hiện hành vi chọn phương thức giao hàng nhanh thay vì giao hàng tiết kiệm dù dịch vụ giao hàng nhanh có giá cao hơn, điều này cho thấy khách hàng trên các sàn Thương mại Điện tử sẵn sàng chi trả 1 khoản tiền cao hơn cho việc giao hàng với mong muốn đẩy nhanh thời gian nhận hàng.

Điều này chứng tỏ chiến lược giao hàng của các sàn Thương mại Điện tử vẫn chưa thật sự đáp ứng được nhu cầu của khách hàng làm ảnh hưởng đến doanh thu. 

Ngược lại với các sàn Thương mại Điện tử, đối với các nhà bán lẻ, cá nhân bán hàng online thì việc chuyển hàng đến tay khách hàng lại hiệu quả hơn nhiều. Cụ thể đối với những khách hàng ở chung khu vực với người bán thì thời gian nhận hàng kéo dài từ 15 – 45 phút tùy vào quãng đường. Còn đối với những khách hàng khác tỉnh thì thời gian nhận hàng sẽ từ 1-3 ngày. 

Có thể nói, do bộ máy hoạt động của các cá nhân bán hàng online khá đơn giản nên họ cũng rất linh hoạt trong việc vận chuyển hàng hóa. Chính điều này cũng đã vớt lại phần nào tình trạng không mấy khả quan trong chiến lược giao hàng của sàn Thương mại Điện tử.

Nhận thức được điểm yếu, các sàn Thương mại Điện tử đã lập ra một chiến lược kế hoạch mới nhằm nâng cao hiệu quả vận chuyển hơn. Chiến lược của Tiki là đảm bảo sẽ giao hàng đến tay người mua hàng trong 2 giờ kể từ lúc đặt hàng, 4 giờ đối với Shopee và 3 giờ đối với Sendo.

Xu hướng thu hút khách hàng mua sản phẩm trong năm 2020 ngoài chất lượng sản phẩm thì thời gian giao hàng cũng là một yếu tố quan trọng cần được các nhà bán lẻ và thị trường Thương mại Điện tử 2020 cân nhắc phát triển mạnh mẽ hơn.

Thị trường Thương mại Điện tử 2020

Thay vì chỉ tập trung vào việc tăng trưởng, tăng lợi nhuận thì trong năm 2020 thiết nghĩ thị trường Thương mại Điện tử sẽ thiết lập chiến lược giao nhận hàng tốt hơn, cải thiện trải nghiệm người dùng tốt hơn để có được sự bùng nổ lớn hơn trong năm tiếp theo.

Sàn Thương mại Điện tử trong và ngoài nước cạnh tranh với nhau

Thách thức đầu tiên đó chính là sự cạnh tranh giữa những sàn Thương mại Điện tử trong nước và những sàn Thương mại Điện tử nước ngoài nổi tiếng như amazon, taobao, ebay… Thị trường shopping online và Thương mại Điện tử trong những năm sắp tới được dự đoán là sẽ có một cuộc bùng nổ lớn xảy ra.

Cụ thể là thị trường sẽ tăng trưởng mạnh nhưng sẽ có đến 70 – 80% thị phần bị các sàn Thương mại Điện tử nước ngoài chiếm lấy, các sàn Thương mại Điện tử cộp mác Việt Nam sẽ chỉ chiếm được khoảng 20% còn lại trong các thị trường ngách.

Nguyên nhân của dự đoán này là do 2 nguyên nhân chính: 

Chi phí cho việc đầu tư vào sàn Thương mại Điện tử quá tốn kém, chính vì thế các doanh nghiệp Việt Nam chưa đủ “lực” để chiến đấu kéo dài với các sàn Thương mại Điện tử nước ngoài.

Xu hướng dùng sản phẩm nước ngoài của dân Việt Nam

Có thể nói đây là lý do chính để sàn Việt Nam khó có thể cạnh tranh lại với sàn nước ngoài. Đa số tâm lý người tiêu dùng tại Việt Nam điều có xu hướng hướng ngoại. Ví dụ, cùng 1 sản phẩm, chức năng, mức giá thậm chí là cùng cả nhãn hiệu nhưng nếu có thể người tiêu dùng vẫn ưu tiên lựa chọn mua những sản phẩm ấy từ các web nước ngoài.

Giải thích nguyên nhân này nhiều người tiêu dùng cho hay nguyên do của việc hướng ngoại này là do họ cảm thấy hàng hóa trên các sàn Thương mại Điện tử nước ngoài đa dạng hơn, nhiều sản phẩm phong phú hơn và đặc biệt là sản phẩm có chất lượng cao hẳn các sản phẩm ở Việt Nam, ít xuất hiện hàng nhái.

Từ đó ta có thể thấy, tuy nhu cầu mua sắm của người tiêu dùng rất lớn nhưng họ không vì thế mà lựa chọn cẩu thả. Người tiêu dùng ngày nay rất thông minh và ngày càng có nhiều sự lựa chọn cho họ, vậy tại sao họ phải lựa chọn một sản phẩm online, một sản phẩm Thương mại Điện tử kém chất lượng trong khi họ có thể có lựa chọn khác tốt hơn?

Có thể nói thị trường Thương mại Điện tử có mức độ cạnh tranh khá cao, các sàn Thương mại Điện tử Việt Nam muốn tồn tại trong thị trường này thì họ bắt buộc phải đầu tư tiền bạc cũng như chất xám nhiều hơn.

Các doanh nghiệp với nền tảng yếu kém, công nghệ thấp, trình độ quản trị chưa cao, nguồn vốn không dồi dào chắc chắn sẽ là ‘vận động viên’ bị loại sớm nhất trên đường đua thị trường Thương mại Điện tử này.

  Magento là gì? Thiết kế website thương mại điện tử với Magento
  Thế Giới Di Động & Điện Máy Xanh làm Thương mại điện tử – Nghe mà thấm!

An ninh mạng không được đảm bảo

Một trong những thách thức lớn của thị trường Thương mại Điện tử đó là rủi ro về an ninh mạng. Có thể nói lượng người dùng truy cập Internet cũng như mua sắm trên Interner tại Việt Nam tăng trưởng khá nhanh.

Trong khu vực Đông Nam Á Việt Nam có số người mua hàng online lên đến 70% trên tổng số người sử dụng Internet. Tuy vẫn còn khá thấp so với mặt bằng chung của các nước Đông Nam Á, nhưng đây cũng là tín hiệu tốt cho thị trường Thương mại Điện tử tại Việt Nam.

Tầm nhìn ở thị trường Thương mại Điện tử Việt Nam chỉ dừng ở mức độ phát triển và thu lợi nhuận, chưa có tầm nhìn sâu như các nước phát triển mạnh về Thương mại Điện tử như mỹ, hàn… ở đó họ chú trọng việc nghiên cứu thị trường, thị hiếu của khách hàng, đầu từ vào các hoạt động huấn luyện chăm sóc khách hàng, nâng cao nền tảng công nghệ, an ninh mạng, cơ sở hạ tầng mạng…

Đó là những vấn đề mà các sàn Thương mại Điện tử nước ta chưa thể đáp ứng được, đặc biệt là an ninh mạng. Vấn đề bảo mật thông tin cá nhân của người tiêu dùng và an ninh mạng tại Việt Nam khá yếu kém và là một vấn đề cần được ưu tiên cải thiện toàn diện để tránh gây ra thiệt hại về cả cho 2 phía là doanh nghiệp và người tiêu dùng.

Luật pháp của việc tiết lộ thông tin người dùng tại Việt Nam chưa thật sự răn đe, ngoài ra chất lượng an ninh mạng tại nước ta cũng cần được quan tâm. Chính vì những lý do này cũng là nguyên nhân góp phần giải thích tại sao Thương mại Điện tử ở nước ta lại không có niềm tin như các sàn Thương mại Điện tử ở nước ngoài.

Thị trường Thương mại Điện tử 2020

Giải pháp cho những thách thức 

Luật bảo vệ 

Dù thị trường phát triển là thế nhưng thật chất, các bộ luật dùng để bảo vệ các doanh nghiệp và người tiêu dùng trong Thương mại Điện tử chưa được hoàn thiện. Nền tảng để có thể phát triển theo hướng tích cực đó chính là bộ luật chi tiết và chỉnh chu, giúp người dùng cà cả doanh nghiệp cảm thấy an tâm khi sử dụng dịch vụ cũng như phát triển thị trường.

Chính phủ nên nghiêm túc hơn trong việc bổ sung các chính sách bảo vệ, tạo môi trường thuận lợi cho việc phát triển thị trường Thương mại Điện tử 2020.

Phát triển thanh toán điện tử

Ngoài bộ luật bảo vệ người tiêu dùng và doanh nghiệp thì chúng ta cũng nên để mắt tới việc đầu tư phát triển kỹ thuật, cơ sở hạ tầng về mô hình thanh toán điện tử, thanh toán không sử dụng tiền mặt trên các sàn Thương mại Điện tử. 

Đảm bảo an ninh 

Đảm bảo sự riêng tư, an toàn khi người tiêu dùng thực hiện giao dịch bằng mọi cách để đem đến sự an tâm cho người dùng, ngăn cản việc các trang web bị virus xâm nhập đánh cắp thông tin. Các thông tin liên quan đến việc thanh toán online nên được bảo mật tuyệt đối để tránh kẻ gian lợi dụng.

Đảm bảo chất lượng hàng hóa

Đảm bảo chất lượng hàng hóa cho người tiêu dùng để lấy được lòng tin, tăng cường hoạt động kiểm tra, đánh giá chất lượng sản phẩm tránh gian lận trong kinh doanh, sử dụng hàng thiếu chất lượng để kinh doanh…

Liên kết với Cục Thuế

Nhiều doanh nghiệp lớn được lựa chọn để thí điểm cho chiến dịch kết nối cổng thanh toán của doanh nghiệp đó trên sàn Thương mại Điện tử với chi Cục Thuế để có thể phát hành hóa đơn điện tử khi xuất hiện giao dịch mới giữa người tiêu dùng với doanh nghiệp đó.

Đầu tư vào nhân lực

Để có thể phát triển được thị trường Thương mại Điện tử 2020 thì việc đầu tư vào nguồn nhân lực là một vấn đề không thể nào phớt lờ. Nhân lực của thị trường Thương mại Điện tử khá bao quát, từ thiết kế cho đến các kỹ sư phần mềm đến chăm sóc khách hàng, giao hàng… và còn rất nhiều vị trí nhân sự khác nữa

Vào cuối năm 2017, cụ thể là ngày 8/11/2017, việc trao đổi mua bán giữa các nước đã được Bộ trưởng bộ Ngoại giao và Kinh tế của các nước APEC thông qua.

Theo báo cáo năm 2016, tổng doanh thu của các giao dịch phát sinh trên Thương mại Điện tử toàn thế giới lên đến 1.920 tỷ USD, đây là minh chứng lớn nhất của việc bùng nổ phát triển của các sàn Thương mại Điện tử.

Tổng kết

Tuy thị trường Thương mại Điện tử còn khá trẻ đối với Việt Nam, nhưng tiềm lực phát triển của thị trường này không hề nhỏ. Nhờ có sự giúp đỡ, chỉ đạo của các bộ ngành liên quan và các doanh nghiệp nên cũng đã phần nào khắc phục được yếu điểm trước mắt.

Trong tương lai chắc chắn thị trường của Thương mại Điện tử sẽ có số liệu còn vượt bậc hơn cả số liệu thị trường Thương mại Điện tử 2020.

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

  Frontend-developer đã hô biến animation trong mắt người dùng như thế nào?
  Học cách Twitter ngăn người dùng View Page Source

Xem thêm Top công việc IT tại TopDev!

Mô hình MVC trong php là gì? Hướng dẫn chi tiết

mo-hinh-mvc-trong-php

Bài viết được sự cho phép của Nhungdongcodevui

Mô hình MVC là mô hình được sử dụng rộng rãi nhất trong việc phát triển ứng dụng web, đặc biệt là trong php. Mặc dù vậy, hiện nay mình thấy rất ít những hướng dẫn thực sự chuẩn và dễ hiểu về mô hình này, do vậy mình sẽ viết một vài chia sẻ về mô hình MVC trong php thật chi tiết.

Mô hình MVC trong php là gì? Hướng dẫn chi tiết
Mô hình MVC trong php là gì? Hướng dẫn chi tiết

Khái quát lại về MVC là gì?

Mô hình MVC (viết tắt của Model View Controller) là mô hình gồm 3 lớp: Model, View, Controller:

  • Model: Lớp này chịu trách nhiệm quản lí dữ liệu: giao tiếp với cơ sở dữ liệu, chịu trách nhiệm lưu trữ hoặc truy vấn dữ liệu.
  • View: Lớp này chính là giao diện của ứng dụng, chịu trách nhiệm biểu diễn dữ liệu của ứng dụng thành các dạng nhìn thấy được.
  • Controller: Lớp này đóng vai trò quản lí và điều phối luồng hoạt động của ứng dụng. Tầng này sẽ nhận request từ client, điều phối các Model và View để có thể cho ra output thích hợp và trả kết quả về cho người dung.

Ta có thể mô tả lại hoạt động của mô hình MVC thông qua sơ đồ sau:

Fig 1 – Luồng xử lí của mô hình MVC

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

Tổ chức chương trình MVC trong php

Đầu tiên ta cần có 1 điểm truy cập ban đầu để vào được ứng dụng, file index.php đảm nhận nhiệm vụ này.

“Cổng vào” ban đầu này sẽ đóng vai trò hiển thị hết những tính năng mà ứng dụng có, và cho người dùng truy cập vào chức năng mong muốn (controller tương ứng), ở đây để đơn giản thì ta chỉ cài đặt 1 chức năng là “quản lí học sinh”. (Ta vẫn có thể truy cập trực tiếp vào từng chức năng cụ thể ở các file controller)

Trong ví dụ tới này, mình sẽ tổ chức source code minh hoạ như mô hình sau đây:

Fig 3 – Tổ chức source code của ứng dung minh hoạ
Fig 3 – Tổ chức source code của ứng dung minh hoạ

a. Tầng Controller

– Đây là tầng điều phối của ứng dụng: nhận request từ client, phân tích request, gọi tầng Model để lấy dữ liệu và tầng View để tổ chức hiển thị dữ liệu.

– Ở đây ta nói tới chức năng quản lí học sinh, nó sẽ được điều phối bởi controller C_Student.php. Do trong chức năng có 2 chức năng con: Hiển thị danh sách học sinh, Hiển thị chi tiết học sinh; vậy nên nó sẽ phân biệt từng tính năng bằng cách kiểm tra tham số đầu vào là “stid”. Tuỳ trường hợp mà controller sẽ gọi view tương ứng.

Fig 4 – Cài đặt controller của ứng dung

b. Tầng Model và các lớp thực thể (Entity class)

– Nhiệm vụ chính của tầng này là việc thao tác với cơ sở dữ liệu để lưu trữ cũng như truy vấn dữ liệu. Các thao tác với CSDL phải được đặt hết ở trong tầng này, nó sẽ chứa các thao tác cơ bản để truy vấn CSDL như: đọc, thêm, xoá, sửa.

– Ngoài ra thì tằng này còn chứ các lớp thực thể (Entity class), nó là các lớp để mô phỏng những đối tượng trong thực tế. Trong ví dụ này, tầng Model bao gồm 2 class: Model_Student và Entity_Student. Lớp thực thể Entity_Student chính là 1 thực thể mô phỏng về 1 student trong thực tế (tên, tuổi, …), lớp Model_Student sẽ sử dụng lớp thực thể này để cấu trúc dữ liệu sẽ lấy từ Database. Lớp Model_Student đóng vai trò giao tiếp với CSDL.

Fig 5 – Entity class, mô tả các bảng trong CSDL
Fig 6 – Lớp Model phụ trách phần lien kết dữ lieu Database

c. Tầng View

– Lớp này dùng để định dạng hiển thị dữ liệu lên cho người dùng, do ta có 2 tính năng trong phần “quản lí học sinh” là: “danh sách học sinh” và “chi tiết học sinh”, nên ta sẽ có 2 view khác nhau tương ứng. Controller sẽ truyền các biến dữ liệu vào các View để chúng có thể dùng các dữ liệu này để hiển thị lên. Việc này được thực hiện bằng cách nhúng mã PHP vào trong mã HTML.

Fig 7 – View của “Danh sách học sinh”
Fig 8 – View của “Chi tiết học sinh”

Nhận xét View:

Việc nhúng mã PHP vào HTML khiến mã nguồn trở nên phức tạp và khó kiểm soát, việc này dẫn tới sự ra đời của các “template engine” sau này, các “template engine” tách biệt mã PHP ra khỏi mã HTML nên sẽ khiến code trở nên rõ ràng hơn rất nhiều. Chúng ta sẽ tìm hiểu sau.

Đối với các ứng dụng thuần AJAX, phần View có thể được triển khai bởi javascript, kéo theo việc sử dụng cấu trúc JSON.

Mô hình tuần tự sau sẽ giúp bạn hình dung luồng hoạt động của một http request trong mô hình MVC:

Fig 9 – Sơ đồ tuần tự mô tả luồng chạy của 1 xử lí trong mô hình MVC

Mô hình MVC tổng quát

Giờ thử xem một ứng dụng web hiện đại có quy trình thế nào nhé

Mô hình MVC
Mô hình MVC tổng quát
  • Người dùng tạo ra một yêu cầu thông qua đường dẫn, ví dụ /home
  • Controller nhận yêu cầu và đưa ra một mệnh lệnh để xử lý yêu cầu đó. Nếu lệnh thực thi với phần View thì cập nhật lại màn hình hiển thị, với Model thì để trình diễn logic. Giả sử yêu cầu của người dùng có yếu tố logic
  • Model thực thi phần logic lấy từ một cơ sở dữ liệu nào đó và gửi trả lại phản hồi theo hướng dẫn từ Controller
  • Controller truyền dữ liệu này ra phần view và cập nhật lại giao diện cho người dùng.
  • Mọi yêu cầu đều phải đi qua Controller trước khi chuyển hóa thành lệnh thực thi cho View hay Model.

Tổng kết

– Mô hình MVC trong php là mô hình thông dụng và tiện lợi hàng đầu trong việc phát triển ứng dụng web, trên đây trình bày cơ bản về mô hình MVC và các thức của nó hoạt động, các framework khác cũng sẽ tạo ra mô hình MVC với cấu trúc gần tương tự như trên.

– Một vài lợi điểm của MVC:

  • Tách biệt Model và View, tạo sự linh hoạt khi thay đổi ứng dụng (giao diện, xử lí, …)
  • Tầng Model và View có thể thay đổi, chỉnh sửa 1 cách độc lập. Ta có thể tạo các ứng dụng giao tiếp thông minh hơn chỉ bằng cách thay đổi View, hoặc cũng có thể thay thế Database bằng các sử dụng Web service, …

Bài viết được sự đồng ý từ Nhungdongcodevui

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

So sánh lợi hại giữa WordPress vs Static site

So sánh lợi hại giữa Wordpress vs Static site
Bài viết được sự cho phép của tác giả Lưu Bình An
Chúng ta cùng nhau điểm qua cái hay, cái dở của từng thằng để nghiền ngẫm xem nó phù hợp trong trường hợp nào.
  11 cách tăng tốc nhanh cho WordPress bằng file wp-conig.php
  Gatsby.js: Cách thiết lập và sử dụng React Static Site Generator

Sếp cũ hôm rồi liên lạc hỏi “em có biết công ty nào nhận làm Gatsby không, anh muốn làm một cái static site cho công ty”, cái blog này bạn đang đọc cũng được viết bằng Gatsby, một static site generator, với developer thì static site không xa lạ, nhưng để trả lời có công ty nào nhận làm static site thì mình ko biết, đa phần người ta sẽ dùng một CMS nào đó như WordPress, để đảm bảo có admin cho bạn vào quản lý. WordPress không có gì sai, mình làm wordpress khoảng hơn 3 năm, cũng tự viết theme, tự viết plugin, mình vẫn xài WordPress một số trường hợp. Tuy nhiên static site mấy năm trở lại đây được quan tâm nhiều hơn trước kia vì những lợi ích mà nó mang lại.

Static site là gì, nói nôm na là một website chỉ bao gồm html/css/javascript không có database, nó sẽ được build từ file markdown, dùng một số tool phổ biến để build như

  • Jekyll
  • Hugo
  • next.js
  • gatsby
  • gitbook
  • nuxt
  • vuepress
  • mkdocs

Static Site

Thế mạnh

Tốc độ

Tốc độ hiển thị nội dung của trang sẽ rất nhanh, nếu không muốn nói là nhanh nhất trong tất cả các “thể loại” website. User có thể chấp nhận một website giao diện ko cần pixel perfect (designer có thể không), nhưng sẽ không tha thứ cho một website load lâu hơn rùa bò. Không cần thời gian để query từ database lên, việc load dữ liệu từ host lên phía client tiết kiệm rất nhiều xử lý.

Đồn đoán là Google nó cũng rank những site có tốc độ load trang nhanh, cao hơn các trang load ì ạch Bài thử nghiệm chi tiết

Để test bạn dùng Ping Dom

Nội dung nhiều lên, vấn đề cũng ít phức tạp hơn

Khi nội dung của trang nhiều lên, thí dụ 10.000 bài viết trong wordpress, thì database nó cũng sẽ phình lên, số lượng user truy cập vượt ngoài mong đợi 10.000 user một ngày, nó sẽ phát sinh ra khá nhiều vấn đề cần xử lý. Và một trong những cách đó là chuyển một phần nội dung đó về static site! Bạn thấy sức mạnh của static site ghê chưa. Tất nhiên static site khi lớn lên nó cũng phát sinh vấn đề, tuy nhiên nó sẽ dễ xử lý và đơn giản hơn như wordpress

Bảo mật

Quá hiển nhiên là static site thì chẳng có gì phải quan tâm đến bảo mật, ko có quản lý user, không có database để mà hack đâu nhé. Những static site chỉ đơn thuần là hiển thị thông tin lên bằng file html, 99.999999% là ko bị hack, trừ khi nó cướp luôn được host và tên miền.

Chi phí duy trì rẻ

Để duy trì một static site, bạn chỉ tốn vài đô hàng tháng cho dịch vụ hosting, vài trăm k một cái tên miền. Nếu dùng wordpress hay một CMS nào đó khác đi, bạn phải trả cao hơn vì bạn dùng đến database và một host chạy php, chưa nói đến việc bạn lưu trữ đủ thứ trên đó khiến dung lượng ổ cứng lúc nào cũng ko đủ dùng. Bèo lắm cũng 120$ một năm. Nếu sử dụng GitHub pages cho static site, bạn gần như chỉ tốn tiền domain

Thế không mạnh

Không thân thiện với người dùng bình thường

Mặc dù markdown được sinh ra là để phục vụ cho đối tượng user không biết gì về lập trình, người dùng bình thường nhất có thể viết được nội dung chuẩn html ko cần chỉnh, tuy nhiên không quá nhiều người không rành công nghệ biết cách viết markdown, và mình thấy đa số họ lại thích một cái editor phức tạp như Word hơn, hoặc là copy từ word lên mà muốn giữ format lại

# Heading 1
## Heading 2
Nội dung
### Heading 3

Khách hàng sẽ thích thú có một cái trang admin, đăng nhập vào và được chủ động cập nhập theo ý thích hơn, một editor đầy đủ tính năng chỉnh màu chữ, chèn hình, xử lý hình, thay đổi font chữ to nhỏ, đổi kiểu chữ lung tung ben lên. Static site sẽ không có những thứ đó cho bạn

So sánh lợi hại giữa WordPress vs Static site

Hạn chế tính năng

Những tính năng căn bản như contact form, bình luận sẽ phải outsource cho một bên thứ 3, static site chỉ giới hạn ở mức hiển thị nội dung, tìm kiếm căn bản, lọc căn bản trong html

Cộng đồng sử dụng không nhiều

Như sếp mình, bạn là một công ty, bạn tìm một công ty làm static site sẽ khó khăn hơn, vì thẳng thắng mà nói, số tiền kiếm được của một static site nói chung rất chi là nhỏ, rất ít công ty thèm làm.

WordPress

Cũng đâu phải tự nhiên mà 33% site trên internet là wordpress, nó cũng có nhiều cái hay ho nên thiên hạ mới ào ào kéo vào xài.

Thế mạnh

Một giao diện admin để cập nhập nội dung mà mọi khách hàng đều hài lòng

Giao diện admin của wordpress thực sự ảnh hưởng rất lớn đến thế giới web, nếu ko muốn nói ai làm trang admin cũng đè wordpress ra tham khảo. Với cái giao diện admin bị chê đó bạn làm được đủ thứ Viết nội dung mới Thay đổi giao diện trang web Tùy biến tính năng Cấu hình SEO Cập nhập, phục hồi dữ liệu cũ

Hàng tá giao diện để lựa chọn

So sánh lợi hại giữa WordPress vs Static site

Kho giao diện không những nhiều mà còn dễ cài, một vài cú click là xong, nếu từng đụng vô Joomla, bạn sẽ thấy việc cài giao diện WordPress dễ dàng hơn như thế nào.

Feature cài thêm đủ đáp ứng mọi nhu cầu từ thấp đến trung bình

Plugin cũng là một thế mạnh của WordPress, cần gì cũng có, thanh toán, tích hợp paypal, forum, ecommerce, social network, tìm là thấy. Được đến ngày hôm nay cũng nhờ cộng động sử dụng WordPress rất đông đảo.

So sánh lợi hại giữa WordPress vs Static site

Nhiều công ty, dịch vụ rẻ như đi chợ cá

Google một phát về dịch vụ làm website ở Việt Nam, trong 100 công ty thì chắc đến 99 công ty làm wordpress, chưa kể đến cộng đồng freelancer. Giá cả thì cũng đủ loại, vô vàn để bạn có thể lựa chọn cho phù hợp từ 500k đến vài trăm triệu.

Thế yếu

Một cách ngắn gọn nhất, những gì là thế mạnh của static site chính là thế yếu của WordPress, load chậm, open source đồng thời với sự nổi tiếng của nó, WordPress luôn là đích ngắm của cộng đồng hacker thực tập (hacker thực thụ ko rãnh hơi đâu hack mấy trang wordpress vặt vãnh). Việc gồng gánh những website có nội dung to nặng đòi hỏi sức người, sức của khá nhiều, không hiểu những trang như tuổi trẻ, vnexpress mà làm wordpress sẽ ra làm sao

Kết luận

Thường những việc trên đời, mình làm thì mình biết, cái nào hợp với mình thì chỉ có mình mới biết được.

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

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

Xem thêm các Tuyển dụng WordPress hấp dẫn tại TopDev

Interview React Developer thì hỏi gì?

Interview React Developer thì hỏi gì?
Bài viết được sự cho phép của tác giả Lưu Bình An
Một vài câu hỏi để kiểm tra mức độ am hiểu react của một lập trình viên frontend
  10 kênh Youtube học lập trình không thể bỏ qua dành cho Junior Web Developer / Designer

Chuyện gì xảy ra khi gọi setState ?

Đầu tiên, object được truyền trong setState sẽ được merge với state hiện tại của component, dựa trên sự thay đổi của object này, UI được update với state mới.

Để làm được chuyện này, React sẽ dựng một cây React Element mới, so sánh sự khác nhau của cây element mới và cây element trước đó, React biết được chính xác chỉ cần update phần UI nào đã bị thay đổi.

Sự khác nhau giữa Element và Component trong React?

React Element ám chỉ những gì thấy trên màn hình.

React component là một function hoặc class có hoặc không có input và sẽ trả về một React element.

Khi nào thì sử dụng Class Component và Functional Component

Nếu component có state và các phương thức của lifecycle, sử dụng Class Component, ngược lại dùng functional component

Ref trong React dùng để làm gì

Ref để truy cập trực tiếp đến DOM sau khi render

<input type="text" ref={(input) => this.input = input} />

Key trong React là gì

Key giúp React theo dõi sự thay đổi của một item trong list. Tại sao thêm key? để tối ưu performance, giúp React tìm nhanh tới element đó khi cần.

{this.state.todoItems.map((task, uid) => {
  return
    <li key={uid}>{task}</li>
  }
)}

Sự khác nhau giữa controlled component và uncontrolled component

Controlled Componentprop hoặc state của component được gán cho giá trị DOM

<input type='text' value={this.state.username} onChange={this.updateUsername} />

Uncontrolled Component: giá trị của DOM thì do DOM quản

<input type='text' ref={(input) => this.input = input} />

Để gọi AJAX, sử dụng sự kiện nào của lifecycle?

componentDidMount

shouldComponentUpdate dùng để làm gì

shouldComponentUpdate cho phép can thiệp quá trình update UI của component và các component con của nó. Nếu return true thì update, ngược lại false

Tại sao nên sử dụng React.Children.map() thay vì props.children.map()

props.children chưa chắc lúc nào cũng là array. Ví dụ

<Parent>
    <h1>Welcome.</h1>
</Parent>

Nếu sử dụng props.children.map trong Parent sẽ bị lỗi vì props.children là một object không phải array.

<Parent>
    <h1>Welcome.</h1>
    <h2>props.children will now be an array</h2>
</Parent>

React.Children.map cho phép props.children là array hoặc object đều được.

Events được xử lý trong React như thế nào?

Các hàm xử lý event trong React sẽ được truyền vào một instance của SyntheticEventSyntheticEvent cũng giống như những native event bình thường của Browser trừ việc nó có thể làm việc trên tất cả các trình duyệt.

React không attach event vô các child node, mà sẽ lắng nghe tất cả các event sử dụng 1 event listener duy nhất, Với mục đích là để tăng performance và React không cần phải update lại event listener khi update DOM.

Sự khác nhau giữa createElement  và cloneElement

createElement là để tạo element, cloneElement copy element và đưa vào các props mới.

Argument thứ 2 của setState dùng để làm gì

callback function, function sẽ chạy sau khi component được render lại với state mới.

setState là một phương thức bất đồng bộ (asynchronous)

Đoạn code sau sai ở đâu

this.setState((prevState, props) => {
 return { streak: prevState.streak + props.count }
})

Không sai gì cả, ít người biết rằng khi setState có thể truyền vào previous state.

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

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

Xem thêm các tuyển react developer hấp dẫn tại TopDev

TensorFlow là gì? Tìm hiểu về TensoFlow từ A đến Z

TensorFlow là gì? Thư viện AI tốt nhất

Tensorflow là gì – Với sự bùng nổ của lĩnh vực Trí Tuệ Nhân Tạo – A.I. trong thập kỷ vừa qua, machine learning và deep learning rõ ràng cũng phát triển theo cùng. Và ở thời điểm hiện tại, TensorFlow chính là thư viện mã nguồn mở cho machine learning nổi tiếng nhất thế giới, được phát triển bởi các nhà nghiên cứu từ Google. Việc hỗ trợ mạnh mẽ các phép toán học để tính toán trong machine learning và deep learning đã giúp việc tiếp cận các bài toán trở nên đơn giản, nhanh chóng và tiện lợi hơn nhiều. 

Các hàm được dựng sẵn trong thư viện cho từng bài toán cho phép TensorFlow xây dựng được nhiều neural network. Nó còn cho phép bạn tính toán song song trên nhiều máy tính khác nhau, thậm chí trên nhiều CPU, GPU trong cùng 1 máy hay tạo ra các dataflow graph – đồ thị luồng dữ liệu để dựng nên các model. Nếu bạn muốn chọn con đường sự nghiệp trong lĩnh vực A.I. này, nắm rõ những điều cơ bản của TensorFlow thực sự rất quan trọng.

Được viết bằng C++ và thao tác interface bằng Python nên phần performance của TensorFlow cực kỳ tốt. Đối tượng sử dụng nó cũng đa dạng không kém: từ các nhà nghiên cứu, nhà khoa học dữ liệu và dĩ nhiên không thể thiếu các lập trình viên. 

Lịch sử ra đời TensorFlow

Vài năm trước, khi phải xử lý lượng dữ liệu khổng lồ, deep learning bắt đầu cho thấy hiệu năng vượt trội so với tất cả các thuật toán machine learning khác. Google sớm nhận ra tiềm năng này và nghĩ rằng họ nên sử dụng deep neural network để cải thiện các dịch vụ của mình, trong đó có:

– Gmail.
– Hình ảnh
– Google search engine

Thế là họ dựng 1 framework có tên là TensorFlow để các nhà nghiên cứu cũng như lập trình viên có thể làm việc cùng nhau trên model A.I. 1 khi đã được phát triển và scale hoàn chỉnh, rất nhiều người đã có thể sử dụng được nó.

Xem thêm: 

  1. Thử làm ứng dụng tô màu bằng AI 
  2. Hiểu thêm về Deep Learning thông qua 12 khóa học online miễn phí

Ra mắt lần đầu vào cuối năm 2015, phiên bản TensorFlow ổn định cuối cùng cũng xuất hiện vào năm 2017. Là mã nguồn mở dưới sự cho phép của Apache Open Source, giờ đây bạn có thể sử dụng, điều chỉnh và tái đóng góp phiên bản được điều chỉnh đó, đổi lại không cần phải trả bất cứ đồng nào cho Google. 

TensorFlow là gì?
TensorFlow trong vũ trụ Machine Learning

Kiến trúc của TensorFlow

Kiến trúc TensorFlow hoạt động được chia thành 3 phần:

– Tiền xử lý dữ liệu
– Dựng model
– Train và ước tính model

Cách TensorFlow hoạt động

TensorFlow cho phép các lập trình viên tạo ra dataflow graph, cấu trúc mô tả làm thế nào dữ liệu có thể di chuyển qua 1 biểu đồ, hay 1 sê-ri các node đang xử lý. Mỗi node trong đồ thị đại diện 1 operation toán học, và mỗi kết nối hay edge giữa các node là 1 mảng dữ liệu đa chiều, hay còn được gọi là ‘tensor’. 

TensorFlow cung cấp tất cả những điều này cho lập trình viên theo phương thức của ngôn ngữ Python. Vì Python khá dễ học và làm việc, ngoài ra còn cung cấp nhiều cách tiện lợi để ta hiểu được làm thế nào các high-level abstractions có thể kết hợp cùng nhau. Node và tensor trong TensorFlow là các đối tượng Python, và các ứng dụng TensorFlow bản thân chúng cũng là các ứng dụng Python.

Các operation toán học thực sự thì không được thi hành bằng Python. Các thư viện biến đổi có sẵn thông qua TensorFlow được viết bằng các binary C++ hiệu suất cao. Python chỉ điều hướng lưu lượng giữa các phần và cung cấp các high-level abstraction lập trình để nối chúng lại với nhau.

Các ứng dụng TensorFlow có thể chạy được trên hầu hết các đối tượng thông dụng: máy local, cluster trong các đám mây, thiết bị di động iOS và Android, CPU hay GPU. Nếu bạn dùng đám mây của riêng Google, bạn có thể chạy TensorFlow trên silicon của TensorFlow Processing Unit (TPU) tùy chỉnh từ Google để tăng tốc hiệu quả hơn nữa. Các model được tạo ra bởi TensorFlow, có thể deploy trên hầu hết các thiết bị nơi chúng được sử dụng để phục vụ các dự đoán.

TensorFlow 2.0, được ra mắt vào tháng 10 năm 2019, cải tiến framework theo nhiều cách dựa trên phản hồi của người dùng, để dễ dàng và hiệu quả hơn khi làm việc cùng nó (ví dụ: bằng cách sử dụng các Keras API liên quan đơn giản cho việc train model). Train phân tán dễ chạy hơn nhờ vào API mới và sự hỗ trợ cho TensorFlow Lite cho phép triển khai các mô hình trên khá nhiều nền tảng khác nhau. Tuy nhiên, nếu đã viết code trên các phiên bản trước đó của TensorFlow thì bạn phải viết lại, đôi lúc 1 ít, đôi lúc cũng khá đáng kể, để tận dụng tối đa các tính năng mới của TensorFlow 2.0. 

Lợi ích từ TensorFlow

Lợi ích dễ thấy nhưng quan trọng nhất mà TensorFlow cung cấp cho việc lập trình machine learning chính là abstraction. Thay vì phải đối phó với những tình huống rườm rà từ việc thực hiện triển khai các thuật toán, hay tìm ra cách hợp lý để chuyển output của 1 chức năng sang input của 1 chức năng khác, giờ đây bạn có thể tập trung vào phần logic tổng thể của 1 ứng dụng hơn. TensorFlow sẽ chăm sóc phần còn lại thay cho bạn.

Ngoài ra TensorFlow còn ung cấp các tiện ích bổ sung cho các lập trình viên cần debug cũng như giúp bạn tự suy xét các ứng dụng TensorFlow. Chế độ eager execution cho phép bạn đánh giá và sửa đổi từng operation của biểu đồ 1 cách riêng biệt và minh bạch, thay vì phải dựng toàn bộ biểu đồ dưới dạng 1 đối tượng độc lập vốn khá mơ hồ hay phải đánh giá chung tổng thể. Cuối cùng, 1 tính năng khá độc đáo của TensorFlow là TensorBoard. TensorBoard cho phép bạn quan sát 1 cách trực quan những gì TensorFlow đang làm.

TensorFlow còn có nhiều cải tiến từ sự hậu thuẫn từ các ekíp thương mại hạng A tại Google. Google không những tiếp lửa cho tiến độ nhanh chóng cho sự phát triển đằng sau dự án, mà còn tạo ra nhiều phục vụ độc đáo xung quanh TensorFlow để nó dễ dàng deploy và sử dụng: như silicon TPU mình đã nói ở trên để tăng tốc hiệu suất đám mây Google, 1 online hub cho việc chia sẻ các model được tạo với framework, sự hiện diện của in-browser và gần gũi với mobile của framework, và nhiều hơn thế nữa…

Lưu ý: Trong 1 số công việc training, vài chi tiết về việc triển khai của TensorFlow làm cho nó khó có thể quyết định được hoàn toàn kết quả training model . Đôi khi 1 model được train trên 1 hệ thống này sẽ có thay đổi 1 chút so với 1 model được train trên hệ thống khác, ngay cả khi chúng được cung cấp dữ liệu như nhau. Các nguyên nhân cho điều này cũng xê xích hay 1 số hành vi khi không được xác định khi sử dụng GPU. Điều này nói rằng, các vấn đề đó có thể giải quyết được, và đôi ngũ của TensorFlow cũng đang xem xét việc kiểm soát nhiều hơn để ảnh hưởng đến tính quyết định trong quy trình làm việc.

Giới thiệu các Component của TensorFlow

Tensor

Tên của TensorFlow được đưa ra trực tiếp là nhờ vào framework cốt lõi của nó: Tensor. Trong TensorFlow, tất cả các tính toán đều liên quan tới các tensor. 1 tensor là 1 vector hay ma trận của n-chiều không gian đại diện cho tất cả loại dữ liệu. Tất cả giá trị trong 1 tensor chứa đựng loại dữ liệu giống hệt nhau với 1 shape đã biết (hoặc đã biết 1 phần). Shape của dữ liệu chính là chiều của ma trận hay mảng.

1 tensor có thể được bắt nguồn từ dữ liệu input hay kết quả của 1 tính toán. Trong TensorFlow, tất cả các hoạt động được tiến hành bên trong 1 graph – biểu đồ. Biểu đồ là 1 tập hợp tính toán được diễn ra liên tiếp. Mỗi operation được gọi là 1 op node  (operation node) và được kết nối với nhau.

Biểu đồ phát thảo các op và kết nối giữa các node. Tuy nhiên, nó không hiển thị các giá trị. Phần edge của các node chính là tensor, 1 cách để nhập operation với dữ liệu.

Graph

TensorFlow sử dụng framework dạng biểu đồ. Biểu đồ tập hợp và mô tả tất cả các chuỗi tính toán được thực hiện trong quá trình training. Biểu đồ cũng mang rất nhiều lợi thế:

– Nó được làm ra để chạy trên nhiều CPU hay GPU, ngay cả các hệ điều hành trên thiết bị điện thoại.
– Tính di động của biểu đồ cho phép bảo toàn các tính toán để bạn sử dụng ngay hay sau đó. Biểu đồ có thể được lưu lại để thực thi trong tương lai.
– Tất cả tính toán trong biểu đồ được thực hiện bằng cách kết nối các tensor lại với nhau. 1 tensor có 1 node và 1 edge. Node mang operation toán học và sản xuất các output ở đầu cuối. Các edge giải thích mối quan hệ input/output giữa các node.

Danh sách các thuật toán nổi bật được hỗ trợ bởi TensorFlow

Tính tới thời điểm phiên bản ra mắt TensorFlow 1.10, nó đã sở hữu built-in API cho:

Linear regression: tf.estimator.LinearRegressor

Classification: tf.estimator.LinearClassifier

Deep learning classification: tf.estimator.DNNClassifier

Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier

Booster tree regression: tf.estimator.BoostedTreesRegressor

Boosted tree classification: tf.estimator.BoostedTreesClassifier

Ví dụ TensorFlow đơn giản

import numpy as np
import tensorflow as tf

Trong 2 line code đầu, ta đã import tensorflow là tf. Với Python, nó chỉ là 1 bài tập thông dụng khi dùng tên viết tắt cho 1 thư viện. Lợi thế là để tránh gõ đầy đủ tên của thư viện khi ta cần sử dụng nó.

Ví dụ: chúng ta có thể import tensorflow là tf, và gọi tf khi chúng ta muốn dùng 1 chức năng TensorFlow.

Ta hãy luyện tập quy trình làm việc cơ bản của TensorFlow với 1 ví dụ cơ bản sau đây:Tạo 1 đồ thị tính toán nhân 2 số lại với nhau.

Chúng ta sẽ nhân X_1 và X_2 lại với nhau. TensorFlow sẽ tạo 1 node để kết nối với operation. Trong ví dụ này, nó được gọi là multiply. Khi đồ thị được xác định, engine tính toán TensorFlow sẽ nhân X_1 và X_2 lại cùng nhau.

tensorflow là gì?
Cuối cùng, chúng ta chạy 1 session TensorFlow mà sẽ chạy đồ thị tính toán với giá trị của X_1 và X_2 và print phần kết quả của phép nhân.


Hãy xác định các input node của X_1 và X_2. Khi ta tạo 1 node trong TensorFlow, chúng ta phải chọn nó là loại node gì. Các node X1 và X2 sẽ là node placeholder – node giữ chỗ. Placeholder chỉ định 1 giá trị mới mỗi khi ta làm 1 phép tính. Ta sẽ tạo chúng như là 1 node TF chấm placeholder.

Bước 1: Xác định giá trị

X_1 = tf.placeholder(tf.float32, name = "X_1")
X_2 = tf.placeholder(tf.float32, name = "X_2")

Khi ta tạo 1 node placeholder, ta phải gửi loại dữ liệu sẽ được thêm số tại đây nên ta có thể sử dụng 1 loại dữ liệu floating-point, hãy dùng tf.float32. Chúng ta cũng cần phải cho node này 1 cái tên. Tên này sẽ xuất hiện khi ta nhìn vào phần trực quan dạng đồ thị của model. Hãy đặt tên node X_1 này bằng cách nhập 1 tham số được gọi bằng tên với 1 giá trị của X_1 và bây giờ hãy xác định X_2 theo cách tương tự.

Bước 2: Xác định phần tính toán

multiply = tf.multiply(X_1, X_2, name = "multiply")

Giờ ta có thể xác định node sẽ thực hiện operation phép nhân. Trong TensorFlow, chúng ta có thể làm điều đó bằng cách tạo 1 node tf.multiply.

Ta sẽ nhập node X_1 và X_2 tới node nhân. Nó sẽ nói với TensorFlow để liên kết những node đó trong đồ thị tính toán, nên ta đang yêu cầu nó để pull các giá trị từ x và y và nhân phần kết quả. Hãy cho node nhân cái tên multiply. Nó là toàn bộ định nghĩa cho đồ thị tính toán đơn giản này.

Bước 3: Thực thi operation

Để thực thi các operation trong đồ thị, ta phải tạo 1 session. Trong TensorFlow, nó được thực hiện bằng tf.Session(). Giờ ta có 1 session ta có thể hỏi session để chạy operation trên đồ thị tính toán của ta bằng cách gọi session. Để chạy phần tính toán, chúng ta sẽ dùng run.

Khi operation bổ sung chạy, nó sẽ thấy rằng nó cần để lấy các giá trị của node X_1 và X_2, nên chúng ta cũng cần cung cấp các trị cho X_1 và X_2. Ta có thể dùng điều đó bằng cách cung cấp 1 tham số được gọi là feed_dict. Chúng ta chuyển giá trị 1,2,3 cho X_1 và 4,5,6 cho X_2.

Chúng ta print phần kết quả với print(result). Chúng ta sẽ thấy 4,10 và 18 cho 1×4, 2×5 và 3,6.

X_1 = tf.placeholder(tf.float32, name = "X_1")
X_2 = tf.placeholder(tf.float32, name = "X_2")

multiply = tf.multiply(X_1, X_2, name = "multiply")

with tf.Session() as session:
    result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})
    print(result)
[ 4. 10. 18.]

Các option tải dữ liệu vào TensorFlow

Bước đầu tiên trước khi train 1 thuật toán machine learning là load dữ liệu. Có 2 cách thông dụng để load dữ liệu:

1. Load dữ liệu vào bộ nhớ: đây là phương pháp đơn giản nhất. Bạn load tất cả dữ liệu vào bộ nhớ như 1 mảng đơn. Bạn cũng có thể viết code bằng Python. Những dòng code này không liên quan gì tới TensorFlow.

2. Pipeline dữ liệu TensorFlow. TensorFlow sở hữu built-in API và nó sẽ giúp bạn load dữ liệu, thực thi các operation và feed thuật toán machine learning 1 cách dễ dàng. Phương pháp này hoạt động tốt đặc biệt khi bạn có 1 dataset lớn. Ví dụ: các hình ảnh thu được được biết khá là khổng lồ và không thể fit vào bộ nhớ. Pipeline dữ liệu sẽ tự quản lý phần bộ nhớ.

Giải pháp sẽ là gì?

Load dữ liệu vào bộ nhớ

Nếu dataset của bạn không quá lớn, chẳng hạn như dưới 10 GB, bạn có thể dùng phương pháp đầu tiên. Dữ liệu có thể dễ dàng fit vào bộ nhớ. Bạn cũng có thể dùng 1 thư viện nổi tiếng có tên là Pandas để import các tệp CSV. 1

Load dữ liệu với TensorFlow pipeline

Phương pháp thứ 2 sẽ hoạt động tốt nhất nếu bạn có 1 dataset lớn. Ví dụ: nếu bạn có 1 dataset nặng 50 GB và máy tính của bạn chỉ có 16GB dung lượng thì rõ ràng là máy sẽ crash thôi.

Trong tình huống này, bạn cần dựng 1 TensorFlow pipeline. Đường ống sẽ load dữ liệu trong batch, hay chunk nhỏ. Mỗi batch sẽ được push tới pipeline và sẵn sàng cho việc training. Dựng 1 pipeline là 1 giải pháp tuyệt vời vì nó còn cho bạn sử dụng phép tính toán song song. Nghĩa là TensorFlow sẽ train model qua nhiều CPU. Thúc đẩy sự tính toán và cho phép training mạng lưới thần kinh mạnh mẽ hơn.

Tóm tắt:

-Nếu bạn có 1 set dữ liệu nhỏ, bạn có thể load dữ liệu trong bộ nhớ với thư viện Pandas.

-Nếu bạn có 1 set dữ liệu lớn và muốn sử dụng nhiều CPU, thì bạn sẽ thoải mái hơn khi làm việc cùng TensorFlow pipeline.

  Bookmark 5 website học lập trình Python tốt nhất

Tạo đường ống TensorFlow

Trong ví dụ trước, ta đã thêm thủ công 3 giá trị cho X_1 và X_2. Giờ chúng ta sẽ xem cách load dữ liệu tới TensorFlow.

Bước 1: Tạo dữ liệu

Đầu tiên, hãy dùng thư viện numpy để tạo ra 2 giá trị ngẫu nhiên.

import numpy as np
x_input = np.random.sample((1,2))
print(x_input)

Bước 2: Tạo placeholder

Giống như ví dụ trước, ta tạo 1 placeholder với tên là X. Ta cần phải chỉ định shape của TensorFlow 1 cách rõ ràng. Trong vài trường hợp, ta sẽ tải 1 mảng với chỉ 2 giá trị. Ta có thể viết shape như là shape=[1,2]

# using a placeholder
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

Bước 3: Xác định phương pháp cho set dữ liệu

Tiếp theo, chúng ta cần phải xác định set dữ liệu nơi ta có thể nhập giá trị của placeholder x. Chúng ta cần dùng phương pháp tf.data.Dataset.from_tensor_slices 

dataset = tf.data.Dataset.from_tensor_slices(x)

Bước 4: Tạo đường ống

Trong bước này, ta cần phải khởi tạo pipeline nơi dữ liệu chạy qua. Ta cần tạo 1 iterator với make_initializable_iterator. Đặt tên cho nó là iterator. Rồi ta cần gọi iterator này để feed cho batch dữ liệu tiếp theo, get_next. Ta đặt tên bước này là get_next. Hãy lưu ý điều này trong ví dụ của mình, vì chỉ có duy nhất 1 batch dữ liệu với 2 giá trị.

iterator = dataset.make_initializable_iterator() 
get_next = iterator.get_next()

Bước 5: Thực thi operation

Bước cuối cũng tương tự như ví dụ trước. Ta khởi tạo 1 session và chạy operation iterator. Ta feed cái feed_dict với giá trị được tạo ra bởi numpy. 2 giá trị này sẽ nhập vào placeholder x. Rồi chúng ta chạy get_next để print kết quả.

with tf.Session() as sess:
    # feed the placeholder with data
    sess.run(iterator.initializer, feed_dict={ x: x_input }) 
    print(sess.run(get_next)) # output [ 0.52374458  0.71968478]
[0.8835775  0.23766978]

10 tài liệu lập trình đág xem qua nhất về Tensorflow

1 – Learn TensorFlow 2.0: Implement Machine Learning and Deep Learning Models with Python

Tài liệu Tensorflow là gì Implement Machine Learning and Deep Learning Models with Python

Learn TensorFlow 2.0 là quyển sách được viết bởi 2 tác giả Pramod Singh và Avish Manure. Sách bắt đầu bằng việc giới thiệu framework TensorFlow 2.0 và những thay đổi chính từ bản phát hành trước đó. Quyển này cũng tập trụng vào phần dựng các model ‘Supervised Machine Learning’ bằng cách dùng TensorFlow.

Learn TensorFlow còn dạy cho bạn cách dựng các model bằng việc dùng ‘customer estimators’. Bạn sẽ học được cách sử dụng TensorFlow để dựng các model machine learning và deep learning. Tất cả code trong sách đều có sẵn ở dạng script thực thi trên GitHub, bạn có thể thực hành nó 1 cách dễ dàng.

2 – Advanced Deep Learning with TensorFlow 2 and Keras

Tài liệu Tensorflow là gì Advanced Deep Learning with TensorFlow 2 and Keras

Advanced Deep Learning with TensorFlow 2 and Keras là 1 quyển sách của tác giả Rowel Atienza, nó dạy cho bạn những kỹ thuật deep learning cao cấp đang sẵn có ở thời điểm hiện tại.

Nó còn dạy cho bạn về deep learning, unsupervised learning bằng cách dùng các thông tin tương quan, xác định đối tượng (SSD). Sách sẽ chỉ cho bạn cách để tạo A.I. hiệu quả với các kỹ thuật tiên tiến nhất hiện tại. Trong Advanced Deep Learning with TensorFlow 2 and Keras, bạn còn được học về GANs và làm thế nào họ có thể mở khoá các cấp độ mới của hiệu năng cho Trí tuệ Nhân Tạo.

3 – Tensorflow in 1 Day

Tài liệu Tensorflow là gì in 1 Day

Học TensorFlow chỉ trong 1 ngày? Nghe thì ảo thật đấy nhưng trong quyển sách bởi tác giả Krishna Rungta này sẽ dạy cho bạn về môn khó nhằn bằng tiếng Anh theo cách dễ hiểu nhất. Nó còn đi kèm đồ thị, tính năng tính toán tuyệt vời. Quyển sách được khá nhiều nhà khoa học dữ liệu khuyến cáo vì độ trực quan mà nó đem lại cho mạng lưới thần kinh khi sử dụng TensorBoard.

Sách bao gồm các chủ đề như Deep learning là gì?, Machine Learning vs. Deep Learning, TensorFlow là gì? cũng như các chủ đề cao cấp hơn như Jupyter Notebook, TensorFlow trên AWS và còn nhiều nữa… Hẳn đây là 1 quyển không thể thiếu cho các bạn mới bắt đầu tìm hiểu về TensorFlow.

4 – TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers

Tài liệu Tensorflow là gì

TinyML: Machine Learning with TensorFlow Lite là quyển được viết bởi Pete Warden và Daniel Situnayke. Với cuốn tham khảo thực hành này, bạn sẽ bước vào lĩnh vực TinyML. Nó bao gồm deep learning kết hợp cùng hệ thống nhúng để tạo ra những thứ đáng kinh ngạc nhất có thể với những thiết bị tí hon.

Quyển TinyML này khá lý tưởng cho các bạn lập trình viên phần mềm lẫn lập trình viên phần cứng, nhất là những ai muốn dựng hệ thống nhúng bằng machine learning.

 

5 – Natural Language Processing with TensorFlow: Teach language to machines using Python’s deep learning library

Tài liệu Tensorflow là gì Natural Language Processing with TensorFlow- Teach language to machines using Python's deep learning library

Natural Language Processing with TensorFlow là quyển sách viết bởi Husan Ganefedara. Bạn sẽ học cách ứng dụng các model RNN hiệu năng cao, các cell short-term memory (LSTM), vào các tác vụ Natural Language Processing. Bạn còn có thể khám phá sự chuyển ngữ neural machine và triển khai thực hiện trình chuyển ngữ neural machine.

Sau khi đọc xong quyển sách này, bạn sẽ hiểu rõ hơn về công nghệ NLP và có thể ứng dụng TensorFlow vào các ứng dụng deep learning NLP, cũng như cách thi hành các tác vụ NLP cụ thể.

6 – TensorFlow Machine Learning Projects: Build 13 real-world projects with advanced numerical computations using the Python ecosystem

Tài liệu Tensorflow là gì TensorFlow Machine Learning Projects- Build 13 real-world projects with advanced numerical computations using the Python ecosystem

TensorFlow Machine Learning Projects là quyển sách bởi bộ 3 tác giả: Ankit Jain, Armando Fandango, và Amita Kapoor. Nó sẽ dạy bạn cách dựng các dự án nâng cao cũng như bạn sẽ có thể va chạm nhiều thử thách thông dụng bằng cách sử dụng các thư viện từ TensorFlow ecosystem.

Ngoài ra, TMLP còn dạy cho bạn cách dựng các dự án đa dạng bằng real-world domains, autoencoders, các hệ thống được đề xuất, reinforcement learning, v.. v.. Khi kết thúc quyển tham khảo này, bạn sẽ có được chuyên môn cần thiết để dựng các dự án machine learning.

7 – Hands-On Computer Vision with TensorFlow 2: Leverage deep learning to create powerful image processing apps with TensorFlow 2.0 and Keras

Tài liệu Tensorflow là gì - Hands-On Computer Vision with TensorFlow 2- Leverage deep learning to create powerful image processing apps with TensorFlow 2.0 and Keras

Hands-On Computer Vision with TensorFlow 2 được viết bởi tác giả Benjamin Planche và Eliot Andres. Quyển này sẽ giúp bạn phám phá về framework nguồn mở cho machine learning này của Google. Bạn sẽ hiểu được cách làm thế nào để hưởng lợi từ việc sử dụng mạng lưới thần kinh tích chập – convolutional neural networks (CNNs) cho các nhiệm vụ trực quan.

Sách bắt đầu với nền tảng của tầm nhìn máy tính và deep learning. Sách cũng dạy cho bạn làm thế nào để dựng 1 mạng lưới thần kinh từ con số 0 cũng như giúp bạn cách phân loại hình ảnh với các giải pháp hiện đại, như Inception và ResNet, và trích xuất nội dung cụ thể qua phương pháp You Only Look Once (YOLO).

Cuối cùng, bạn sẽ biết rõ về lý thuyết lẫn kỹ năng thực tế. Ngoài ra nó còn giúp bạn giải quyết các vấn đề nâng cao về tầm nhìn máy tính.

8 – Pro Deep Learning with TensorFlow: A Mathematical Approach to Advanced Artificial Intelligence in Python

Tài liệu Tensorflow là gì - Pro Deep Learning with TensorFlow- A Mathematical Approach to Advanced Artificial Intelligence in Python

Viết bởi Santanu Pattanayak, Pro Deep Learning with TensorFlow cho bạn hiểu rõ về kiến thức và trực giác toán học. Nó sẽ giúp bạn phát mình ra các cấu trúc và giải pháp deep learning mới cho riêng bạn.

Sách còn cung cấp các bài thực hành chuyên môn để bạn có thể học deep learning dù chưa biết gì. Quyển PDLwT sẽ cho phép bạn tăng tốc nhanh chóng khi dùng TensorFlow, cũng như tối ưu hóa các kiến trúc deep learning khác nhau.

Mang nhiều khái niệm thực hành đa dạng về deep learning được nhấn mạnh có liên quan trong bất kỳ ngành nào. Code trong tài liệu tham khảo còny có sẵn ở dạng scrypt và iPython notebook.

9 – Practical Deep Learning for Cloud, Mobile, and Edge: Real-World AI & Computer-Vision Projects Using Python, Keras & TensorFlow

Tài liệu Tensorflow là gì - Practical Deep Learning for Cloud, Mobile, and Edge- Real-World AI & Computer-Vision Projects Using Python, Keras & TensorFlow

Practical Deep Learning for Cloud, Mobile, and Edge là quyển sách viết bởi Anirudh Koul, Siddha Ganju, và Meher Kasam. Nếu bạn muốn dựng các ứng dụng thực hành deep learning cho đám mây, di động hay trình duyệt thì quyển này sẽ rất thích hợp cho bạn.

Sách dạy cho bạn quá trình chuyển đổi từ 1 ý tưởng trở thành 1 thứ gì đó mà mọi người có thể sử dụng. Sách còn chỉ cho bạn cách phát triển trí tuệ nhân tạo trong pham vi rộng các thiết bị, bao gồm Raspberry Pi và Google Coral. Bạn sẽ nhận được nhiều mẹo thực hành cho việc tối đa hóa độ chính xác và tốc độ các model.

10 – Deep Learning: A Practitioner’s Approach

Tài liệu Tensorflow là gì- Deep Learning- A Practitioner's Approach

Quyển không thể thiếu nếu bạn đang học tập và làm việc có liên quan tới lĩnh vực Deep Learning. Được viết bởi Josh Patterson và Adam Gibson. Cuốn hướng dẫn thực hành này không những cung cấp thông tin thiết thực nhất về deep learning mà còn giúp bạn bắt đầu xây dựng mạng lưới deep learning hiệu quả.

Bạn sẽ được học phần lý thuyết tổng quát của deep learning trước khi được giới thiệu Deeplearning4j (DL4J) nguồn mở của các tác giả, 1 thư viện để phát triển quy trình công việc trong sản xuất. Bằng cách sử dụng các ví dụ thực tế, bạn sẽ tìm hiểu các phương pháp và chiến thuật 1 cách dễ dàng.

Tổng kết về Tensorflow

Trong những năm gần đây, TensorFlow chính là thư viện deep learning nổi tiếng nhất. Người dùng TensorFlow có thể dựng bất kỳ cấu trúc deep learning nào, như CNN, RNN hay artificial neural network – mạng lưới thần kinh nhân tạo.

TensorFlow được dùng nhiều nhất bởi academic, startup và các công ty lớn. Google dùng TensorFlow trong hầu hết tất cả các sản phẩm thường nhật của họ. Bao gồm Gmail, Photo và hệ thống tìm kiếm Google.

Người dùng ưu dùng TensorFlow vì bạn có thể deploy at scale khá là dễ dàng cũng như nó có thể hoạt động trên đám mây hay bất kỳ thiết bị di động nào như iOS hay Android.

Đội ngũ Google Brain đã phát triển TensorFlow để làm khoảng cách giữa các nhà nghiên cứu và lập trình viên sản phẩm lại gần nhau hơn. Năm 2015, họ công khai TensorFlow và nó dần trở nên phổ biến. Ngày nay, TensorFlow đã thành thu viện deep learning với nhiều repo nhất trên GitHub.

Đừng bỏ lỡ những bài viết hay về Tensorflow và AI tại TopDev:

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

Sử dụng ellipsis text với flexbox

Sử dụng ellipsis text với flexbox
Bài viết được sự cho phép của tác giả Lưu Bình An
  Cách vận hành của Flexbox
  Hướng dẫn sử dụng css flexbox cho người mới tìm hiểu
Câu chuyển cắt chuỗi khi quá dài bằng CSS, trong tình huống sau, cái tên file của bạn quá dài, nhưng bạn không muốn cắt ở cuối chuỗi, mà cắt ở giữa để vẫn thấy được file extension

Sử dụng ellipsis text với flexbox

Chuỗi chưa cắt

mobile-phone-screenshot-long-fine-name.png

Chuỗi sau khi cắt

mobile-phone-sc...g-fine-name.png

Sử dụng ellipsis text với flexbox

Cái HTML structure dĩ nhiên là chúng ta tách cái đuôi file ra riêng, độc lập với cái tên

<div class="filename"> <span class="filename__base">this-file-has-a-really-really-really-long-filename.</span> <span class="filename__extension">pdf</span> </div>

CSS:

.filename { display: flex; min-width: 0; } .filename__base { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } .filename__extension { flex-shrink: 0; }

Việc ellipsis text sẽ được thực hiện bởi kết hợp ba thuộc tính text-overflowwhite-space và overflow. Tuy nhiên chúng ta vẫn phải ước lượng được mối liên hệ giữa phần chứa file name .filename__base và element bọc bên ngoài (ở đây là .filename)

Thủ thuật quan trọng ở đây là dùng thuộc tính min-width: 0, chúng ta đặt giá trị nhỏ nhất cho phép của .filename, nó sẽ ép các thằng con bên dưới co lại nếu nó không có khai báo thuộc tính flex-shrink

Demo các bạn xem ở đây

Using Flexbox and text ellipsis together

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

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

Xem thêm các việc làm cho lập trình viên hấp dẫn tại TopDev

Phân biệt sự khác nhau giữa await-return-return await

Bài viết được sự đồng ý của tác giả Lưu Bình An

Khi viết một async function, có sự khác nhau giữa await và return và return await, các bạn nên biết để sử dụng cho đúng

Chúng ta có một async function waitAndMaybeReject

async function waitAndMaybeReject() { // wait 1 giây await new Promise((r) => setTimeout(r, 1000)); const isHeads = Boolean(Math.round(Math.random())); if (isHeads) return "Thành công zòi"; throw Error("Xui thôi!"); }

Sau 1 giây, nó sẽ trả về một Promisehên hên thì resolve cho giá trị Thành công zòi, xui xui thì cho giá trị Xui thôi!.

Giờ khi chúng ta gọi hàm waitAndMaybeReject()

async function test() { try { waitAndMaybeReject(); } catch (e) { return "Oh No!"; } }

Khi viết như vậy, chúng ta sẽ luôn nhận được kết quả fulfill với giá trị undefined, không có waiting

Bởi vì chúng ta không có await trên kết quả trả về của waitAndMaybeReject(), nói chúng là chúng ta ko có phụ thuộc gì vào việc gọi hàm waitAndMaybeReject(). Code như vậy là sai nghe các bạn.

  Flutter - Lập trình bất đồng bộ với Future, async, await
  Xin đừng return mảng kết hợp!

Rồi giờ chúng ta sẽ await trên kết quả của hàm waitAndMaybeReject()

async function test() { try { await waitAndMaybeReject(); } catch (e) { return "Oh No!"; } }

Hàm này khi thực thi nó sẽ chạy như sau, đợi 1 giây, sau đó hoặc là trả về fulfill với undefined, hoặc fulfill với ‘Oh No!’

Bởi vì chúng ta chỉ await trên waitAndMaybeReject(), việc xui xui bị reject trong waitAndMaybeReject sẽ throw ra lỗi và được túm lấy trong hàm test. Và vì không làm gì hết khi waitAndMaybeReject() khi được resolve, nên chúng ta nhận về undefined

Rồi, giờ tới trường hợp return

async function test() { try { return waitAndMaybeReject(); } catch (e) { return "Oh No!"; } }

Nó sẽ thực thi như sau, đợi một giây, sau đó hoặc là fulfill với giá trị Thành công zòi hoặc reject với giá trị Xui thôi!

Với việc return waitAndMaybeReject, chúng ta đã chuyển tiếp hết kết quả trả về của waitAndMaybeReject, đồng nghĩa với việc catch bên trong hàm test chả bao giờ chạy tới.

return await thì sao?

async function test() { try { return await waitAndMaybeReject(); } catch (e) { return "Oh No!"; } }

Nó sẽ thực thi như sau, đợi sau một giây sau đó trả về fulfill với giá trị Thành công zòi hoặc fulfill với giá trị Oh No!

Vì chúng ta await trên kết quả cả waitAndMaybeReject(), reject của hàm waitAndMaybeReject() sẽ đẩy về throw của hàm test, kết quả là Oh No!. Nếu waitAndMaybeReject được resolve, chúng ta return kết quả này, chính là Thành công zòi

Có thể viết như thế này cho dễ hình dung hơn

async function test() { try { const fulfilledValue = await waitAndMaybeReject(); return fulfilledValue; } catch (e) { return "Oh No!"; } }

Lưu ý cuối cùng: Nếu không dùng try/catch mà return await sẽ rất dư thừa

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

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

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

Giải mã sức mạnh từ BIDV – điểm đến lý tưởng để phát triển sự nghiệp

Giải mã sức mạnh từ BIDV - điểm đến lý tưởng để phát triển sự nghiệp

BIDV với tên đầy đủ là Ngân hàng Đầu tư và Phát triển Việt Nam (tên giao dịch quốc tế: Bank for Investment and Development of Vietnam) là ngân hàng thương mại nhà nước lớn nhất Việt Nam hiện đã và đang hợp tác kinh doanh với hơn 800 ngân hàng trên thế giới, chiếm được sự tin tưởng và tín nhiệm của nhiều đối tác trong suốt hơn nửa thế kỷ qua.

Giải mã sức mạnh từ BIDV - điểm đến lý tưởng để phát triển sự nghiệp

BIDV – Điểm tựa niềm tin

Thành lập ngày 26/4/1957, Ngân hàng TMCP Đầu tư và Phát triển Việt Nam (BIDV) tự hào là định chế tài chính lâu đời nhất trong lĩnh vực tài chính ngân hàng tại Việt Nam, có uy tín và giá trị hàng đầu Việt Nam. BIDV cung cấp đầy đủ và đa dạng sản phẩm, dịch vụ đến khách hàng cá nhân, khách hàng doanh nghiệp và định chế tài chính; bao gồm dịch vụ Tiền gửi, Thẻ, Tín dụng, Ngân hàng Điện tử, Thanh toán, Quản lý tiền tệ và các dịch vụ khác.

Trải qua hàng thập kỷ năm phát triển, BIDV đã thể hiện được vị thế của mình với những con số ấn tượng:

  • Hơn 190 chi nhánh, trên 855 điểm giao dịch trên cả nước bao phủ 63 tỉnh/ thành Việt Nam;
  • Hiện diện thương mại tại 6 quốc gia: Campuchia, Lào, CH Séc, Đài Loan, Nga, Myanmar;
  • Hơn 57825 cây ATM và hệ thống máy Pos giúp tiện lợi hóa các giao dịch cho người dùng.

Để đạt được những con số trên, toàn thể đội ngũ hơn 25.000 cán bộ, nhân viên của BIDV luôn không ngừng phấn đấu và chiến đấu dựa trên những mục tiêu kinh doanh, cũng là sứ mệnh và kim chỉ nam cho sự phát triển của BIDV:

  • Đồng hành, chia sẻ và cung cấp dịch vụ tài chính – ngân hàng hiện đại, tốt nhất cho khách hàng;
  • Cam kết mang lại giá trị tốt nhất cho các cổ đông;
  • Tạo lập môi trường làm việc chuyên nghiệp, thân thiện, cơ hội phát triển nghề nghiệp và lợi ích xứng đáng cho mọi nhân viên;
  • Trở thành ngân hàng tiên phong trong hoạt động phát triển cộng đồng.

BIDV – Giữ vững phong độ, không ngại thử thách

Thành công của BIDV là kết tinh của tinh thần đoàn kết – đồng lòng và những nỗ lực không ngừng nghỉ của tập thể cán bộ, nhân viên trong suốt 63 năm – Một BIDV Chuyên nghiệp – Thân thiện – Hiện đại ngày càng tỏa sáng trong hành trình vượt qua thử thách, thắp sáng thành công.

Sức mạnh đoàn kết và niềm tin đến từ chính đội ngũ lao động là cơ sở cốt lõi tạo nên sự tín nhiệm từ những đối tác của công ty, là chiếc chìa khóa giúp BIDV luôn lớn mạnh đến hôm nay. 

Tại BIDV, con người là tài sản quý báu nhất, là một trong những nguồn lực được ưu tiên hàng đầu trong việc “đầu tư để phát triển” thông qua những Chính sách đãi ngộ nhân viên và Chương trình đào tạo đầy hấp dẫn:

  • Các chế độ thưởng cho cán bộ trong các dịp lễ Tết, bổ sung quỹ thu nhập 6 tháng đầu năm và đầy đủ các chế độ về bảo hiểm, thăm ốm, hưu trí…..
  • Cung cấp trang thiết bị tối ưu, không gian làm việc yên tĩnh phù hợp cho cán bộ nhân viên;
  • Đảm bảo các ngày nghỉ lễ theo đúng quy định của pháp luật, không phải đi làm thứ 7, chủ nhật;
  • Được trả lương trên cơ sở trình độ, năng lực của từng cá nhân, vị trí công việc được giao đảm nhận và theo Quy chế lương của Trung tâm Công nghệ Thông tin BIDV, quy chế lương của BIDV;
  • Được chi bổ sung thu nhập theo kết quả làm việc, vị trí công việc và theo quy định của BIDV;
  • Các chương trình đào tạo nâng cao chuyên môn, nghiệp vụ, kỹ năng mềm và kỹ năng quản lý. Các chương trình đào tạo được tổ chức trong nước và tại nước ngoài như Singapore, Hàn Quốc, Úc, Mỹ, Anh, Pháp…

Giải mã sức mạnh từ BIDV - điểm đến lý tưởng để phát triển sự nghiệp

Chiêu mộ nhân tài, căng buồm ra khơi và “cập bến” thành công

BIDV được so sánh như một “con tàu lớn giương cánh buồm đỏ thắm ra khơi”. Con tàu ấy vượt qua bao biển cả không chỉ nhờ sự “lèo lái” của những người “Thuyền trưởng” tài năng và tâm huyết để có thể thành công. Điều đặc biệt giúp đoàn thuyền trở nên lớn mạnh chính là sự góp sức từ những Thủy thủ đoàn đầy nhiệt huyết và năng lượng để cùng nhau vượt mọi sóng cả, cập bến thành công.

Với mục tiêu “giương buồm” đi xa, vươn đến tầm quốc tế, BIDV đang từng bước phát triển vượt bậc với nhiều ứng dụng công nghệ hữu ích thuộc lĩnh vực Ngân hàng:

  • BIDV Online cung cấp các dịch vụ chuyển tiền, thanh toán hóa đơn nhanh chóng, thuận tiện và các dịch vụ thẻ, mua bán ngoại tệ online cùng nhiều tiện ích khác.
  • Với sản phẩm dịch vụ Internet Banking hay còn gọi là BIDV smart Banking, mọi giao dịch trên hệ thống ngân hàng và những thao tác thông qua việc tích hợp tài khoản BIDV được thực hiện dễ dàng, tạo tiện lợi cho người dùng.
  • BIDV mang đến giải pháp thanh toán thẻ hiện đại, an toàn và nhanh chóng với thiết bị đọc thẻ mPos đối với các loại thẻ Quốc tế và Nội địa bằng nhiều hình thức.
  • Sản phẩm dịch vụ BIDV iBank cho phép xử lý giao dịch theo nhiều cơ chế giúp đẩy lệnh thanh toán tới BIDV mà không cần soạn lệnh trực tiếp tại chương trình.
  • BIDV Pay+ đem đến cho người đến trải nghiệm rút tiền không dùng thẻ tại ATM BIDV và thanh toán bằng mã QR nhanh chóng, thuận tiện.
  • Triển khai phương thức xác thực Smart OTP tích hợp trên ứng dụng BIDV SmartBanking dễ dàng thao tác và bảo mật an toàn.

Để phát triển “con tàu” ngày một vững chắc và hưng thịnh hơn, BIDV đang nỗ lực tìm kiếm những nhân tài, những mảnh ghép quan trọng để cùng đồng hành trong những chuyến đi dài, cùng đương đầu với nhiều thử thách và cùng cập bến tại “Bến thành công”.

Bạn đã sẵn sàng trở thành một trong những người “Thủy thủ đoàn” tài năng của BIDV?

Cùng khám phá ngay những vị trí hấp dẫn không thể bỏ lỡ:

BIDV chào đón bạn đến với một môi trường làm việc hội tụ:

  • Những con người thông minh, năng động và sáng tạo nhất;
  • Ban lãnh đạo tài tình luôn thể hiện đúng với 2 chữ “Tâm và Tầm”.

Bạn đã tích đủ đam mê và nhiệt huyết? BIDV sẵn sàng trao cho bạn chiếc chìa khóa mở lối thành công, chỉ cần bạn dám đương đầu.

Bắt lấy cơ hội trải nghiệm “Nơi làm việc tốt nhất Việt Nam” do Anphabe bình chọn năm 2022 và khám phá thêm nhiều điều thú vị từ BIDV ngay hôm nay. 

Trở thành những “Anh hùng Axon” – mang đến sự an toàn cho cộng đồng

TRỞ THÀNH NHỮNG “ANH HÙNG AXON” - MANG ĐẾN SỰ AN TOÀN CHO CỘNG ĐỒNG

Bắt đầu với một garage nhỏ và mong muốn biến thế giới thành một nơi an toàn hơn, AXON được hình thành và phát triển trở thành một công ty công nghệ mở rộng, cung cấp mạng lưới thiết bị và ứng dụng đáng tin cậy nhất về an toàn công cộng.

TRỞ THÀNH NHỮNG “ANH HÙNG AXON” - MANG ĐẾN SỰ AN TOÀN CHO CỘNG ĐỒNG

An toàn cộng đồng – Sứ mệnh đặc biệt của những anh hùng AXON

Thành lập từ năm 1991 tại Scottsdale, Hoa Kỳ, AXON là tập đoàn tiên phong trong lĩnh vực sản xuất, phát triển các thiết bị thông minh cho các cơ quan thực thi pháp luật trên thế giới nhằm giúp cộng đồng có cuộc sống an toàn và tốt đẹp hơn. Vào năm 2017, AXON được thành lập tại Việt Nam đóng vai trò là trung tâm nghiên cứu và phát triển trọng điểm của tập đoàn.

Với hơn 26 năm phát triển công nghệ tiên tiến, AXON là nhà lãnh đạo toàn cầu của các công nghệ an toàn công cộng được kết nối nhằm bảo vệ cuộc sống, bảo vệ sự thật, minh bạch và trách nhiệm. Nhiệm vụ của AXON từ lúc thành lập đến nay đều hướng đến việc hạn chế sử dụng súng đạn, giảm xung đột xã hội và đảm bảo hệ thống tư pháp hình sự được công bằng và hiệu quả.

Các sản phẩm của Axon độc đáo và đa dạng, bao gồm súng bắn điện Taser, body camera, phần mềm quản lý bằng chứng kỹ thuật số (Digital Evidence Management System) dành cho cảnh sát và cơ quan hành pháp. Ngày nay, các thiết bị của AXON đã được sử dụng bởi 18.000 cơ quan tại hơn 100 quốc gia trên thế giới.

TRỞ THÀNH NHỮNG “ANH HÙNG AXON” - MANG ĐẾN SỰ AN TOÀN CHO CỘNG ĐỒNG

Thay đổi an toàn cộng đồng với công nghệ

Đam mê sử dụng công nghệ cao và mong muốn cung cấp các sản phẩm tiên tiến để cải thiện việc thực thi Pháp luật, AXON luôn nỗ lực để làm cho viên đạn trở nên lỗi thời và thay thế tất cả súng ngắn của cảnh sát bằng các thiết bị điện tử. Ngoài ra, AXON còn phát triển và sản xuất máy ảnh trong xe hơi và máy ảnh đeo trên cơ thể để bảo vệ sự thật bằng cách ghi lại cảnh đó, mã hóa và thủy ấn video và gửi tất cả dữ liệu lên kho lưu trữ trong phần mềm riêng biệt, cho phép cảnh sát, công tố viên, bảo vệ luật sư được sử dụng với mục đích chính nghĩa.

Với niềm tin về sự phát triển công nghệ AI tại Việt Nam, AXON Vietnam được thành lập, và là nơi giải quyết những thách thức lớn nhất của AI trong không gian an toàn công cộng. Với những sản phẩm công nghệ thông minh, tiên tiến, các sĩ quan, cảnh sát sẽ tiết kiệm được thời gian trong việc giải quyết từng vấn đề xảy ra, tạo hiệu quả cho mục tiêu bảo vệ an toàn công cộng. 

Đội ngũ công nghệ xuất chúng đã tạo ra những sản phẩm chất lượng, bao gồm: software engineer, cloud services, hardware engineering, mobile services và nền tảng camera platform.

Chính vì sứ mệnh đặc biệt, đội ngũ phát triển tại Axon luôn tìm kiếm những cá nhân tài năng để cùng tiếp bước, cùng bảo vệ an toàn cộng đồng của Việt Nam và khắp nơi trên thế giới.

AXON đang mở ra cơ hội với hàng loạt vị trí hấp dẫn:

Và nếu bạn có mong muốn được trở thành 1 trong những “người hùng” bảo vệ sự an toàn cho cộng đồng, đừng ngại khám phá những điều thú vị đến từ AXON. Tại nơi đây, bạn được trải nghiệm những điều tuyệt vời nhất.

TRỞ THÀNH NHỮNG “ANH HÙNG AXON” - MANG ĐẾN SỰ AN TOÀN CHO CỘNG ĐỒNG

 

Giải mã sức hút, bật mí bí kíp giữ chân nhân tài

Để thực hiện sứ mệnh bảo vệ an toàn cho người dân và tạo nên những sản phẩm tốt nhất để bảo vệ cuộc sống, điều AXON đã làm được chính là níu giữ nhân tài – những người anh hùng góp phần tạo nên những điều kì diệu. Từ việc coi trọng giá trị con người và lấy sự an toàn của con người làm tâm điểm cho sự phát triển của tập đoàn, mỗi cá nhân tại AXON luôn nhận được những điều xứng đáng nhất, bí quyết tạo nên sự gắn bó của những người hùng dũng cảm và AXON:

  • Văn hóa và môi trường làm việc 

Văn hóa cốt lõi của Axon phụ thuộc vào việc hợp tác để liên tục phát triển và cải tiến các công nghệ và sản phẩm hiện tại. Riêng tại AXON, dù mục tiêu của bạn là gì, bạn sẽ có quyền tự do thực hiện các dự án mà bạn quan tâm và nhận được sự hỗ trợ của nhóm những người có kinh nghiệm, kĩ năng, dự đoán sẽ đem đến cho bạn nhiều thách thức theo những cách mới. 

  • Không gian làm việc đầy kích thích và đặc quyền khó cưỡng

Văn phòng tại Thành phố Hồ Chí Minh của Axon được lấy ý tưởng như một con tàu vũ trụ với các tính năng hiện đại, thông minh. Với mong muốn nơi làm việc không chỉ là văn phòng thuần túy mà còn phải là một không gian sáng tạo, truyền cảm hứng và đem đến những trải nghiệm mới mẻ cho đội ngũ nhân viên, văn phòng làm việc tại AXON đã “hóa thân” trong hình dạng phi thuyền và đem đến cảm giác mỗi ngày làm việc là một chuyến du hành thú vị, đầy cảm hứng.

Không chỉ như vậy, các “anh hùng” AXON còn được hưởng các đặc quyền đáng kinh ngạc, bao gồm:

  • Mức lương cạnh tranh xứng với năng lực;
  • Ăn trưa miễn phí, tập thể dục, cho thuê điện thoại và chỗ đỗ xe;
  • Hoạt động nhóm vui chơi và đi chơi giải tỏa căng thẳng, tiếp thêm sức mạnh;
  • Giờ làm việc linh hoạt;
  • Cơ hội được đào tạo, onsite tại Hoa Kỳ và cùng các sĩ quan cảnh sát Hoa Kỳ tìm kiếm nguồn cảm hứng để tạo ra những sản phẩm hữu ích;
  • Được tham gia các sự kiện công nghệ lớn do AXON tổ chức, trau dồi thêm nhiều kiến thức bổ ích.

Những bí mật tại AXON đã khiến bạn bị cuốn hút?

Bạn có mong muốn được trở thành một phần của AXON ngay hôm nay?

AXON đã mở cơ hội, bạn ngại gì không nhanh tay chớp lấy.

Recruitment Challenge: “Em có xứng đáng với mức lương ấy không?”

Recruitment challenge

Những thách thức từ nhà tuyển dụng – Recruitment Challenge luôn được đặt ra trong mọi trường hợp. Liệu bạn có thật sự nắm thế thượng phong để giải quyết tốt thách thức mà nhà tuyển dụng đặt ra? Nếu được hỏi:

 “Tại sao em nghĩ mình xứng đáng nhận mức lương ấy?”, đâu là cách một ứng viên tiềm năng về nhân sự sẽ đáp trả? 

Có thể bạn quá sốc với Recruitment Challenge, bạn đập bàn và bỏ về chăng? Không, không, cách này chỉ phù hợp khi nhà tuyển dụng đặt câu hỏi một cách thiếu tế nhị. Tuy nhiên, lại phát ngôn đầy khéo léo, không thẳng thắn, kiểu sốc đối phương nhưng chỉ bằng những ngôn từ tinh tế. Vì vậy, bạn nên dùng sự thông minh để “đối đáp” lại đòn phủ đầu của họ.

Thế cười trừ, tỏ vẻ ngại ngùng và cho qua thì sao? Cách này lại càng không. Bạn không nên thể hiện mình là người thiếu tự tin. Cuộc phỏng vấn cần sự tương tác của bạn và cả nhà tuyển dụng thì nó mới thú vị.

Vậy làm thế nào cho ngầu đây? Cùng TopDev thiết lập kế hoạch “phản công” nhà tuyển dụng nào.

Nhận thức tổng quát vấn đề là bước đi đầu tiên

Trước hết, bạn cần nhận thức rõ về vấn đề từ đó xác định trọng tâm của vấn đề từ thách thức được nhà tuyển dụng đặt ra chính là lương. Sự am hiểu chiếm 70% khả năng thành công của màn lật bài ngửa. Vì thế, hãy cố gắng nắm bắt trọng tâm một cách tốt nhất có thể.

thách thức

Vậy quỹ lương của một công việc bao gồm những gì?

Theo trải nghiệm cá nhân, nhiều ứng viên đi phỏng vấn tập trung vào hai giá trị. Đó lương net/gross và phúc lợi về bảo hiểm. Để giải quyết thành công thách thức, bạn cần nắm rõ 2 phần quan trọng: phần cứng và phần mềm.

Thứ nhất, phần cứng bao gồm lương cứng, phụ cấp ăn trưa, bảo hiểm, thưởng ngày lễ… Đây là những phần mà nếu không có gì phát sinh, bạn chắc chắn sẽ nhận được. Điều này cũng không quá tệ. Tuy nhiên, để đồng hành lâu dài, việc lựa chọn một công ty có mức lương tốt và xứng đáng với năng lực là vẫn là ưu tiên

Thứ hai, phần mềm bao gồm các giá trị về thưởng KPI, các lợi ích kèm theo,… Và đây là những phần thưởng bạn sẽ được nhận nếu đạt một điều kiện nhất định nào đó. Các yếu tố thuộc phần mềm tạo ra sự khác biệt lớn giữa công ty. Phần đông công ty đề cao giá trị của động lực nên luôn tạo ra những phần thưởng nhằm kích thích nhân viên của mình tự phát triển năng lực của bản thân thông qua những nỗ lực. Cũng chính từ đây, hàng loạt những câu chuyện về công ty tốt, công ty xấu ra đời.

Trải nghiệm công cụ tính lương gross to net chuẩn tại TopDev

Quan tâm đến những yếu tố phụ thuộc vấn đề trong  Recruitment Challenge

Mỗi khối ngành khác nhau sẽ có một mức lương nhất định. Cùng có kinh nghiệm 3 năm trong ngành nhưng người làm về IT lại sở hữu mức lương khác làm hành chính nhân sự.

  Tuyển tập “cheatsheet” bộ câu hỏi cho anh em developer trước buổi phỏng vấn

thách thức

Kỹ năng chuyên môn và kinh nghiệm làm việc rất quan trọng vì nó thể hiện trình độ của bạn. Càng có nhiều năm kinh nghiệm, bạn dễ dàng nhận được mức lương với một vị trí cao hơn và đôi khi mức lương cao hay thấp còn phụ thuộc vào tiềm năng phát triển của bạn nữa.

Không những thế, khả năng làm việc thực tế là một yếu tố bạn cần phải trau dồi vì nó thể hiện bản lĩnh của bạn trong việc giải quyết, thực hiện các vấn đề từ thực tế. Tập trau dồi năng lực để có thể tự tin deal một mức lương xứng đáng với bản thân.

So sánh năng lực với khung quy chiếu tiêu chuẩn – Xác lập mức lương mong muốn

Chắc chắn rằng, sự phụ ứng với các tiêu chuẩn giúp xác lập mức lương rất quan trọng. Nói cách khác, chính là xem xét các tiêu chuẩn về giá trị bản thân, mức độ tham vọng, khối lượng công việc và  lợi ích thực ngoài tiền bạc để bạn tự đánh giá bản thân mình xứng đáng với mức lương bao nhiêu. Recruitment Challenge không khó để thực hiện, quan trọng là bạn có tìm ra được sự xác lập hay không.

Tiếp đến là mức độ tham vọng. Tham vọng ở đây không phải theo hướng tiêu cực, chạy theo các đòi hỏi xa hoa mà đơn giản, nó là phần lương công thêm vì những dự định mà bạn tin rằng mình sẽ làm được trong tương lai gần. Phần này sẽ chiếm khoảng 8-10% giá trị lương của bản thân.

Về khối lượng công việc thực tế: Mỗi công ty đều có những đặc thù công việc riêng nên những yêu cầu có thể cũng khác biệt nhau. Công ty này cần những ứng viên có trình độ chuyên môn cao; công ty khác lại chỉ yêu cầu nhân sự đáp ứng một số tiêu chí đơn giản. 

Các lợi ích ngoài tiền bạc: bao gồm các mối quan hệ, khả năng phát triển, độ tử tế của đồng nghiệp, mức độ yêu thích với vị trí công việc,… Tương tự như khối lượng công việc, bạn không nên quá chú tâm vào tiền bạc. Nếu đi làm mà chỉ tập trung vào nó thì bạn không bao giờ tiến bộ toàn diện được. 

Lời kết

Tóm lại, để chiến thắng trong Recruitment Challenge, bạn cần “biết mình, biết ta”. Việc xác định đúng trọng tâm vấn đề, bạn đã biết mình; hiểu được tầm quan trọng của các yếu tố phụ thuộc, tức là biết ta; so sánh và cải thiện bản thân sau khi so sánh với khung quy chiếu chính là việc đánh giá thời cơ, biết tiến, biết lùi đúng mức. Tất cả chúng sẽ giúp bạn trả lời tốt câu hỏi bạn có xứng đáng với mức lương mà mình kỳ vọng.

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

Xem thêm Top Việc làm IT cho lập trình viên trên TopDev

ORM và SQLAlchemy — ‘chiếc đũa thần’ trong quản trị cơ sở dữ liệu

ORM và SQLAlchemy — ‘chiếc đũa thần’ trong quản trị cơ sở dữ liệu

Tác giả: Ngoc Nguyen

Bạn là một backend developer hàng ngày phải làm việc với những cơ sở dữ liệu (database) đồ sộ, cồng kềnh? Bạn đã quá mệt mỏi với việc phải viết những câu lệnh SQL phức tạp, dài dòng mỗi lần muốn thao tác với database? Để giải quyết những khó khăn và bất tiện khi làm việc với database, khái niệm ORM đã ra đời. Trong bài viết này, hãy cùng hai Software Engineer Intern – Bill và Phi — khám phá xem ORM là gì và tìm hiểu về cách sử dụng SQLAlchemy, một ORM cho ngôn ngữ Python, để hiểu tại sao chúng lại phổ biến như vậy nhé!

Image for post

Chú ý: bởi bài viết này chỉ tập trung vào các hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System, gọi tắt là RDBMS), ví dụ như MySQL, PostgreSQL, SQLite,… nên trong khuôn khổ bài viết, thuật ngữ ‘database’ sẽ được hiểu là các ‘relational database’.

Ngày xửa ngày xưa, …

Xưa kia, khi loài người còn chưa biết đến khái niệm ORM, mỗi khi các lập trình viên muốn tương tác với relational database (tạo, đọc, sửa, xoá dữ liệu trong bảng), họ sẽ phải viết câu lệnh SQL thuần và execute nó ở trong chương trình sử dụng connector. Tưởng tượng bạn có một bảng Person với hai cột name và age trong database và bạn muốn thêm một dòng dữ liệu (record) vào đó, bạn sẽ phải làm như sau (trong các ví dụ ở bài viết này, chúng mình sẽ sử dụng ngôn ngữ lập trình Python):

Image for post

Như bạn thấy, bạn sẽ phải viết câu lệnh SQL thuần dưới dạng một string rồi dùng connector để execute nó. Điều này đôi khi gây phiền toái, bởi những câu lệnh SQL thuần thường dài dòng, khó thay đổi, và đôi khi không tối ưu. Ngoài ra, việc cập nhật, thay đổi cơ sở dữ liệu không hề dễ dàng. Ví như mỗi lần thay đổi cấu trúc bảng, nếu không có ORM, chúng ta sẽ phải truy cập vào database server và thay đổi bằng câu lệnh SQL, dẫn tới quy trình làm việc khó khăn do phải làm việc ở hai môi trường — application code và database server. Trong khi đó, nếu sử dụng ORM, chúng ta có thể thay đổi bảng rồi thực hiện migrate ở ngay trong application code, tránh phải làm việc trong database server (điều này chúng ta sẽ tìm hiểu kĩ hơn ở phần 2 của bài viết với những ví dụ cụ thể sử dụng SQLAlchemy, một ORM hết sức phổ biến hiện nay).

Từ đó, ORM xuất hiện như một hướng tiếp cận khác để giải quyết vấn đề quản trị cơ sở dữ liệu một cách hiệu quả hơn.

  JOINS và những điều cần biết trong cơ sở dữ liệu

  Cách Import dữ liệu từ các bảng khác nhau trong MySQL Workbench

ORM

Image for post

ORM là gì?

ORM là viết tắt của cụm từ Object Relational Mapping. Hiểu một cách đơn giản, ORM là một kỹ thuật trong lập trình giúp biểu diễn các dòng dữ liệu (record) trong cơ sở dữ liệu bằng các đối tượng, vật thể (object) tương ứng trong ngôn ngữ lập trình. Nhờ đó, ta có thể tương tác, xử lí những data record tương tự như những object. ORM như một ‘cây đũa thần’ có thể hoá phép các record trong database thành những object, giúp cho sự tương tác của người dùng với data record đơn giản như với các object của ngôn ngữ lập trình.

Image for post

Nguồn: fullstackpython.com

Ví dụ như trong hình trên, dòng dữ liệu với ID bằng 1 được biểu diễn dưới dạng một Person object với 3 thuộc tính (properties) sau: first_name là John, last_name là Connor và phone_number là +16105551234.

Có những kiểu ORM nào?

Có hai mô hình thiết kế (design pattern) ORM được biết đến và sử dụng rộng rãi: Active Record và Data Mapper.

  • Active Record

Active Record là mô hình thiết kế ORM mà trong đó mỗi bảng trong cơ sở dữ liệu (table in database) được gói gọn trong một model. Do vậy, mỗi object thuộc model sẽ được gắn với một dòng (record) trong bảng. Với Active Record, ở trong model, người dùng sẽ không cần phải ghi rõ những properties của model đó hay sự liên hệ của những properties ấy đến database, mà object sẽ tự động biết được chúng bằng cách nhìn vào database schema. Ngoài ra, các ORM sử dụng Active Record thường có sẵn những CRUD (Create — Read — Update — Delete) method như save()create(),… thuận tiện cho việc tạo object.

Những ORM nổi tiếng sử dụng Active Record bao gồm Eloquent, Ruby on Rails, Django’s ORM hay Yii.

Trở lại với ví dụ về bảng Person bao gồm 3 cột first_name, last_name và phone_number như trên, khi bạn sử dụng Django’s ORM, một ORM với mô hình Active Record, việc khai báo một model sẽ diễn ra như sau:

Image for post

Với mô hình Active Record, model nhất định phải tuân theo cấu trúc bảng, ví dụ như model Person ở đây sẽ phải có 3 cột first_name, last_name và phone_number như ở trong bảng Person.

  • Data Mapper

Khác với mô hình Active Record, ở trong các ORM sử dụng mô hình thiết kế Data Mapper, thay vì kết nối trực tiếp mỗi object với một record trong database, ORM sẽ đóng vai trò như một lớp (layer) có chức năng tách biệt cũng như vận chuyển dữ liệu hai chiều (bidirectional transfers of data) giữa cơ sở dữ liệu và ứng dụng (application). Điều này nghĩa là các objects ở application sẽ không có thông tin gì về database hay những thuộc tính của các models. Các object được tạo ra sẽ không biết đến sự tồn tại của database và ngược lại.

Những ORM nổi tiếng sử dụng Mapper có thể kể đến Doctrine, Hibernate và SQLAlchemy.

Sự khác biệt lớn nhất giữa hai mô hình thiết kế trên chính là trong khi mô hình Active Record hướng tới mục đích xoá đi khoảng cách giữa application và database thì mô hình Data Mapper có vai trò giúp người sử dụng phân tách rõ ràng hơn hai bộ phận trên.

Với ví dụ về bảng Person kể trên, việc khai báo model với SQLAlchemy, một Data Mapper ORM, sẽ được thực hiện như sau:

Image for post

Như các bạn thấy, với các Data Mapper ORMs, model có thể thừa hoặc thiếu một số column so với cấu trúc bảng, ở đây là thiếu đi cột phone_number và có thêm cột address.

ORM có những ưu điểm và nhược điểm gì?

Ưu điểm

  • Ngắn gọn. ORM cho phép người dùng sử dụng ngôn ngữ lập trình mà họ muốn với cú pháp ngắn gọn và đơn giản hơn so với việc sử dụng câu lệnh SQL, qua đó giảm thiểu lượng code phải viết.
  • Tối ưu. ORM cũng cho phép người dùng tận dụng sự tối ưu của phương pháp lập trình hướng đối tượng (Object — Oriented Programming) như kế thừa dữ liệu, đóng gói, khái quát hoá thông qua việc biểu diễn các record trong database dưới dạng các object.
  • Linh hoạt. Có thể chuyển đổi linh hoạt giữa các hệ quản trị cơ sở dữ liệu khác nhau (MySQL, Sqlite3, PostgreSQL,…) cũng như không cần phải biết quá nhiều về các hệ thống này cũng như ngôn ngữ SQL.

Nhược điểm

  • Thời gian. Bởi ORM là framework, người dùng sẽ phải mất thời gian học và làm quen với cách sử dụng các framework này.
  • Sự chủ động. Khi sử dụng ORM, người dùng sẽ có ít sự chủ động và kiểm soát hơn đối với database.

Ở phần hai của bài viết, hãy cùng tìm hiểu cách sử dụng SQLAlchemy, một ORM rất phổ biến trong ngôn ngữ Python, để xem tại sao ORM có thể tiết kiệm cho bạn nhiều thời gian và công sức nhé!

SQLAlchemy

SQLAlchemy là gì?

SQLAlchemy là một bộ công cụ SQL mã nguồn mở và ORM sử dụng trong ngôn ngữ lập trình Python, giúp hỗ trợ việc quản lý và thao tác với cơ sở dữ liệu. SQLAlchemy cung cấp cho người dùng một ORM sử dụng mô hình thiết kế Data Mapper.

Được ra lò vào năm 2006, SQLAlchemy nhanh chóng khẳng định vị thế của mình trong cộng đồng lập trình viên Python, được sử dụng rất rộng rãi bên cạnh Django’s ORM. SQLAlchemy được sử dụng phổ biến ở cả những “ông lớn” trong ngành công nghệ như Yelp!, Reddit, Dropbox, …

Ví dụ về việc sử dụng SQLAlchemy

Kết nối với database

Image for post

Bạn có thể thay parameter tuỳ thuộc vào địa chỉ database của bạn, trong trường hợp này chúng ta sử dụng in-memory sqlite.

  • Khai báo mapping và tạo schema

ORM truyền thống gồm hai bước: mô tả database chúng ta phải xử lý và khai báo class mà sẽ được đối chiếu với các bảng. SQLAlchemy gộp hai bước này vào một, sử dụng Declarative Base.

Image for post

  • Query

Trước khi thực hiện các tác vụ như query hay thay đổi database, chúng ta cần kết nối với database trong một session.

Image for post

Giả sử chúng ta muốn tìm tất cả các Employee có tên là Alice, chúng ta có thấy lấy kết quả rất đơn giản bằng:

Image for post

Nếu chúng ta có quá nhiều người tên là Alice, và muốn giới hạn số lượng lấy ra và xếp theo id

Image for post

  • Thêm và update

Chúng ta có thể dễ dàng thêm và update một (hoặc nhiều) hàng trong database bằng qua thao tác với các instance của class Employee

Image for post

Giả sử chúng ta muốn thay đổi tuổi của Bob

Image for post

Và đừng quên commit sau khi hoàn thành xong thao tác bằng

Image for post

  • Rollback

SQLAlchemy cho phép chúng ta có thể rollback mỗi khi mắc sai lầm.

Giả sử chúng ta thêm nhầm một Employee

Image for post

Chúng ta có thể rollback transaction vừa rồi với câu lệnh, bạn có thể đoán được đấy:

Image for post

Lợi ích về việc sử dụng SQLAlchemy

Bên cạnh thừa hưởng các tính năng của một ORM như liệt kê bên trên, SQLAlchemy còn cung cấp cho người dùng rất nhiều chức năng nổi trội khác.

Thay đổi schema

Bạn đã bao giờ nhận ra mình cần thay đổi schema trong quá trình build chưa? Nếu như sử dụng câu lệnh thuần SQL thông thường, bạn phải tự mình cập nhật trong database server ít nhất một bảng. SQLAlchemy giúp bạn đồng bộ hoá model và schema trong khi bạn chỉ làm việc ở môi trường code. Bằng cách sử dụng add-on alembic của SQLAlchemy, bạn có thể thay đổi schema trong code rồi chạy câu lệnh sau trong terminal:

Image for post

Và kaboom, schema và model của bạn đã được đồng bộ. Quá đơn giản phải không nào?

Công cụ hữu ích trong giai đoạn test

Với bất kì một sản phẩm nào, kiểm thử (test) là giai đoạn hết sức quan trọng. Trong việc test ứng dụng có sử dụng database, người dùng cần đảm bảo mở kết nối trước khi thao tác với database, và ngắt kết nối sau khi thao tác, những điều này phải thật đảm bảo. Điều này không chỉ gây ra lặp code, mà còn gây ra nhiều rủi ro, ví như bạn quên đóng kết nối sau khi thao tác.

SQLAlchemy Core có hàm connect, dùng song song với engine giúp bạn duy trì kết nối với database. Sử dụng connection hợp lý trong việc test đảm bảo rằng trong chỉ có một kết nối trong suốt quá trình test.

Cách tổ chức mối quan hệ giữa các bảng

Một điều tuyệt vời khi làm việc với SQLAlchemy là cách tổ chức mối quan hệ giữa các bảng. Nó giúp người dùng xác định rõ ràng mối quan hệ trong code, được phản ánh cụ thể hơn qua lập trình hướng đối tượng. Các đối tượng này còn có thể liên kết, hay được bọc trong nhau.

Lazy Loading còn giúp người dùng xác định được cách mình muốn lấy đối tượng từ database. Người dùng có thể chọn thông tin từ một bảng (lazy= ‘select’), thông tin liên kết với bảng khác (lazy = ‘joined’), hoặc lấy object để có thể tiếp tục truy sau này (lazy = ‘dynamic’).

Tài liệu chi tiết, cụ thể và dễ theo

Trước khi quyết định có nên sử dụng một thư viện cho ứng dụng của mình, một số câu hỏi được đặt ra là: “Nó có dễ học không?”, “Cộng đồng người dùng có lớn không?”, “tài liệu có chi tiết không?”. Và câu trả lời cho tất cả các câu hỏi trên là có.

Tài liệu của SQLAlchemy rất chi tiết và xuyên suốt. Ngay cả khi bạn là người mới viết Python, bộ tài liệu còn có ví dụ từ giúp bạn đi từng bước một để làm quen với thư viện cho đến sử dụng những tính năng cao cấp nhất của thư viện.

Trên cộng đồng StackOverflow, có hẳn hơn 16000 câu hỏi có tag SQLAlchemy. Vì thế, bạn cũng không sợ mình sẽ gặp vấn đề chưa được giải quyết khi mới nhúng tay vào thư viện này. Còn chần chờ gì mà không đi một vòng qua tutorials của thư viện nhỉ?

SQLAlchemy ở Got It

SQLAlchemy được sử dụng rất rộng rãi ở team backend của Got It. Chẳng những thế mà trước khi một thực tập viên được phép làm việc trên mã nguồn của công ty, bạn ấy phải học một khóa học về SQLAlchemy để có thể sử dụng nhuần nhuyễn thư viện này trong công việc.

Qua bài viết này, hi vọng các bạn đã biết thêm những điều mới về ORM cũng như SQLAlchemy, qua đó có thể áp dụng vào công việc của mình!

Bài viết gốc được đăng tải tại Got It Vietnam

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

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

Sinh viên Mobile nên trang bị những gì, vì sao nên chọn Mobile App?

Sinh viên Mobile nên trang bị những gì, vì sao nên chọn Mobile App?

Lập trình di động (Mobile developer) và lập trình web (web developer) hiện đang là 2 mảng phổ biến với nhu cầu tuyển dụng cao nhất trong lĩnh vực lập trình. Theo báo cáo từ TopDev, mức lương trung bình của Mobile Developer là $1,178, cao hơn so với Backend và Frontend Developer ($901 & $897). Thực tế thì thị trường Mobile App đang diễn ra thế nào?

Cùng TopDev trò chuyện với anh Trần Duy Thanh – giảng viên, phó trưởng bộ môn khoa Hệ thống thông tin Đại học Kinh tế – Luật để nghe câu chuyện nghề nghiệp của anh và những góc nhìn từ giảng đường đến thực tế.

Về khách mời Trần Duy Thanh:

  • Hiện tại đang là giảng viên công tác tại trường Đại học Kinh tế – Luật, Đại học Quốc gia TP. HCM.
  • Là phó trưởng bộ môn khoa Hệ thống thông tin, tham gia giảng dạy từ năm 2009 tới giờ và hiện đã công tác tại trường Kinh tế – Luật khoảng 4 năm.
  • Anh vừa giảng dạy vừa tham gia quản lý dự án cũng như tham gia một số startup, các phần mềm liên quan đến AI Machine Learning chạy trên robo, cụ thể là chuyên về lĩnh vực giáo dục.

Vì sao anh lựa chọn mảng lập trình mobile app, đặc biệt là Android?

Năm 2008 Google bắt đầu thông báo đưa ra các framework liên quan đến Android để phát triển, ngay tại thời điểm đó mình biết là thị trường thế giới cũng đang phôi thai và chắc chắn trong tương lai nó sẽ bùng nổ. Tất cả các ngành nghề đều liên quan đến lập trình cả và mỗi người chúng ta đều có một cái smartphone, đi đâu cũng dùng smartphone để làm việc. Ngoài tính năng nghe, gọi, nhắn tin trên điện thoại còn có chức năng app để tương tác phần mềm cũng như xem các báo cáo, đặc biệt là những leader dù đi công tác người ta cũng có thể dùng điện thoại để tương tác rất dễ dàng.

Từ các thống kê, nhu cầu sử dụng rất lớn nên mình thấy rằng các trường đại học nên phát triển các chương trình đào tạo liên quan đến mobile app và bản thân các lập trình viên đó nếu đã có kiến thức cũng có thể tự nghiên cứu được mobile app, hoặc nếu chỉ đang là sinh viên (chưa là kỹ sư) cũng nên cố gắng tìm những trung tâm hay trường học hoặc những “sư phụ” nào chuyên về mobile app để mình có thể học, trao đổi thêm kiến thức và có nền tảng vững chắc về mobile app sau này.

  5 tips cải tiến chất lượng phát triển Mobile App

  8 câu hỏi phỏng vấn dành cho các lập trình viên Mobile app

Anh hãy chia sẻ thêm con đường nghiên cứu, những kiến thức mà anh đã trau dồi để đến được level như hiện tại?

Năm 2001 là năm đầu tiên mình học về lập trình, lúc đó không có máy tính. Mình mới ngộ ra một điều là để muốn học cho giỏi, trước tiên chúng ta phải “cày” cho nhiều, ngoài những kiến thức cơ bản trên trường chúng ta được học, mình còn học được từ đồng nghiệp, từ bạn bè và các trang mạng cũng được.

Nhưng học là một chuyện, chúng ta phải dấn thân vào, phải “cày bừa” nó, làm thật nhiều dự án. Trong quá trình đi học, mình luôn cố gắng cày bừa rất là nhiều môn, học từ các nhóm chứ không bỏ tiền ra học thêm như bây giờ. Khi mình học nhiều, làm nhiều đồ án như vậy thì thầy cô sẽ để ý đến, cụ thể mình lọt vào mắt xanh của thầy mình, mình có kiến thức môn học để áp dụng vào dự án. Ngoài ra các thầy sẽ trực tiếp gửi mình đi thực tập ở các công ty.

Mình rất muốn đi dạy, ngày xưa nhà rất nghèo nên chỉ muốn đi dạy thôi nhưng mà không được. Mãi đến khi đi làm được 5 năm thì nhận được lời mời từ thầy của mình và mình đồng ý ngay lập tức. Trong quá trình đi dạy đó mình mới nhận ra là kiến thức khi đi làm đó cũng chưa đủ, vì nó chỉ rèn luyện mình thành kỹ sư lành nghề, mình chưa thật sự hiểu sâu hiểu rộng được, nên khi đi dạy mình đối mặt với áp lực đó là tất cả công nghệ liên quan đến chương trình đào tạo, liên quan đến xu thế công nghệ của công ty và trên thế giới mình bắt buộc phải nghiên cứu. Lúc đó mình rơi vào trạng thái thiếu kiến thức và phải nghiên cứu rất nhiều.

Năm 2005 ai cũng nhắc đến bộ XML, nhưng bây giờ XML nó lại trở nên phổ biến, sau đó lại có JSON. Đến năm 2008 thì bắt đầu làn sóng về mobile, mobile app phát triển rất mạnh như vũ bão vậy. Mình tự cảm thấy và mình nghĩ phải chọn cái môn gì khó nhất, những ngành nghề gì khó nhất để mình làm. Tại vì những cái gì đơn giản mình làm được thì người khác cũng làm được, như vậy sẽ có tính cạnh tranh cao, do đó mình chọn môn nào khó nhất, đỉnh nhất, rõ ràng là không có ai cạnh tranh với mình và khi đi làm thì các công ty sẽ chọn mình, nhờ đó mình sẽ thành công.

Sinh viên Mobile nên trang bị những gì -1

Sau đó đến những năm vừa rồi, blockchain, AI machine learning bắt đầu um sùm lên và đa phần người ta tuyển dụng về AI. Sắp tới mình nghĩ rằng nó còn liên quan đến cả robot nữa, theo mình thì có thể nghiên cứu về robot trong tương lai. Do đó phải luôn luôn lắng nghe và nắm bắt xu thế công nghệ để hướng theo đó mà phát triển, mình phải luôn luôn đi nhanh nhất. Như trong một nhóm lập trình tầm trung mình phải đứng nhất trong đám lập trình tầm trung đó, trong một nhóm chuyên gia mình phải đứng nhất trong các chuyên gia. Cái đích mình hướng tới như vậy để nó tụt xuống là vừa.

Đường đi là phải nắm bắt công nghệ của các công ty, thế giới cần cái gì để mình nghiên cứu. Dĩ nhiên là khi đi dạy trong các nhà trường đa phần sẽ lạc hậu 4 – 5 năm so với ở ngoài, vì một chương trình đào tạo 4 năm mới xong, sau 4 năm mới đánh giá được, nên phải chấp nhận trong trường thì mình sẽ lạc hậu 4 – 5 năm. Nếu mình lạc hậu vậy thì mình sẽ đi thế nào so với doanh nghiệp, làm sao để sinh viên hiểu được những kiến thức đó nên mình phải dấn thân thôi. Vai trò giảng viên thì phải đi nghiên cứu và đưa công nghệ mới vào nên mình mời rất nhiều chuyên gia công nghệ về cùng giảng dạy, tham gia thảo luận và có những talkshow.

Chương trình học tại UEL nói riêng và bậc đại học nói chung, các bạn có được lựa chọn và được giảng dạy chi tiết về lập trình mobile app không hay chỉ là những kiến thức cơ bản, nền tảng và từ đó các bạn sẽ phải tự lựa chọn hướng đi, tự trau dồi nếu muốn xây dựng được những ứng dụng có thể “thương mại hóa”?

Khoa Hệ thống thông tin của mình có 3 ngành: Hệ thống thông tin Quản lý (MIS – Management Information System), Thương mại điện tử và Kinh doanh số & Trí tuệ nhân tạo. Đặc điểm của trường mình là 50% về kinh tế và 50% về tin học. Trong quá trình giảng dạy thì chương trình sẽ dạy lập trình từ cơ bản đến nâng cao, rõ ràng là sinh viên phải được cung cấp các kiến thức như kỹ thuật lập trình, cơ bản về lập trình web, web nâng cao, xử lý cơ sở dữ liệu như mobile app, phân tích cơ sở dữ liệu AI.

Dĩ nhiên là mỗi trường sẽ có chương trình đào tạo khác nhau, có các mảng khác nhau, mình không thể so sánh các trường với nhau vì mỗi trường lại có một mục tiêu đào tạo khác nhau. Tuy mình chuyên về lập trình nhưng bản thân vẫn học về kinh tế, tức là mình vẫn có bằng đại học quản trị kinh doanh, mình vẫn có bằng về phần mềm là khoa học máy tính, nhưng trong quá trình học mình lại thích về lập trình hơn nên mình rẽ ngang đi theo lập trình.

Cũng may mắn là khi được thầy trưởng khoa mời về giảng dạy, khoa lại kết hợp 50% kinh tế và 50% lập trình thì rõ ràng đúng là thế mạnh của mình. Mình thấy rất hay vì nếu như chỉ biết về kỹ thuật không thì chỉ biết cắm cúi suốt ngày làm code, còn khi mình biết về kinh tế thì ứng dụng công nghệ thông tin vào việc kinh doanh rất là hay. Nếu như mình biết tiếng Việt không, rất giỏi tiếng Việt thì đưa quyển sách y khoa hay triết học đọc vẫn không hiểu. Trong lập trình cũng vậy, mình giỏi lập trình là một việc, chỉ giỏi mỗi lập trình mà không có kiến thức về kế toán, không có kiến thức về y học, ví dụ vậy, nếu mình nắm dự án yêu cầu viết phần mềm chuyên về kế toán, mình hoàn toàn không biết gì về kế toán thì không làm được. Do đó thời đại này đòi hỏi phải liên ngành, nếu như vừa biết kinh tế, vừa biết phần mềm sẽ rất hay. Mình có thể viết các phần mềm liên quan đến kinh tế, mình có thể vừa nói được vừa làm được. Người ta đã từng nói đa phần dân kỹ thuật làm được mà khó nói, suốt ngày chỉ ngồi coding, máy tính chính là người yêu thứ hai của lập trình viên (cười). Kết hợp 50% kinh tế và 50% lập trình sẽ rất hài hòa, mình mạnh cả hai, nhiều người nói mình học cả 2 thì sẽ yếu cái này hoặc yếu cái kia, mà quan điểm mình thì khác.

Các chương trình đào tạo trong khoa đều có đầy đủ những thứ đó. Dĩ nhiên trong 4 năm sinh viên sẽ học rất nhiều môn, có 1 – 2 năm sinh viên học các kiến thức chuyên ngành, lúc đó sẽ được học các kiến thức chuyên sâu kể cả lập trình và kinh tế. Chúng ta hay nghe người ta nói sinh viên ra trường sẽ được đào tạo lại, mình thì mình không đồng ý lắm, nghe nó nặng nề quá. Sinh viên phải “mài đũng quần” trên ghế nhà trường 4 năm thì mới thành thạo được một nghề nhưng chưa chắc đã làm được, do đó các công ty chỉ bổ sung thêm thôi chứ không thể nói là đào tạo được. Công ty sẽ giúp những vấn đề đó, giúp sinh viên thăng hoa hơn, được triển khai những ý tưởng, những kỹ năng của mình.

Anh nhận thấy đặc điểm chung của các bạn sinh viên về việc xác định hướng đi cụ thể cho sự nghiệp của mình như thế nào?

Trong trường mình thì đa phần đầu vào các sinh viên định hình là sẽ đi theo kinh tế, bằng bên trường mình cũng là cử nhân kinh tế, học 50% kinh tế, 50% kỹ thuật nhưng vẫn là cử nhân kinh tế. Xu hướng chọn vào hiện nay các sinh viên chọn cả 3 là thương mại điện tử, hầu như tất cả mọi ngành nghề chúng ta đều liên quan đến thương mại điện tử, rồi hệ thống thông tin quản lý, quản trị doanh nghiệp các loại. Trong năm nay thì khoa cũng đã phát triển Kinh doanh số và Trí tuệ nhân tạo, sắp tới sẽ tuyển sinh. Ngành này rất nặng về kỹ thuật. Kỹ thuật ở đây không phải là nhăn nhó làm thế nào để coding ra một chương trình nào đó mà là làm thế nào để ứng dụng vào. Cụ thể là phải làm thế nào để print code, học về AI xử lý như thế nào và ứng dụng ra sao API phục vụ cho người dùng. Mình có một bài toán, mình tìm những công cụ để giải quyết bài toán đó chứ không phải chỉ chăm chú tìm ra những đoạn code.

Anh có lời khuyên nào dành cho các bạn sinh viên đang muốn theo nhóm ngành này không?

Nếu khuyên là chọn ngành nào thì đó không phải là nhiệm vụ ngay từ đầu lúc tuyển sinh, nhiệm vụ lúc này có phòng truyền thông. Còn khi đã vào học và chọn chuyên ngành, mỗi lớp sẽ có cố vấn học tập, họ sẽ tư vấn cho từng trường hợp cụ thể. Mình phải biết cụ thể “nội công” của em đó như thế nào, mong muốn của em ra sao, em muốn ra trường làm cái gì, chuyên về ngành gì thì lúc đó mình mới khuyên rõ ràng được. Còn bây giờ hỏi anh lời khuyên như thế nào, chọn ra sao thì rất khó, vì theo quan điểm của anh thì như vậy nhưng năng lực và mong muốn của bạn đó khác. Tại vì năng lực là một chuyện còn muốn là một chuyện khác, họ giỏi về lập trình nhưng lại không muốn lập trình thì sao, không phải ai giỏi cái gì cũng đều thích cái đó, giỏi lập trình và muốn làm kinh tế hoàn toàn không sao cả.

Còn lời khuyên thì bây giờ anh chỉ khuyên là nếu sinh viên muốn chọn ngành nghề thì khi chọn rồi nên cố gắng theo tới cùng, điều quan trọng của con người là ý chí muốn vượt qua và đạt được. Đa phần sinh viên rất mơ mộng, học được vài môn 8, 9, 10 đã nghĩ mình giỏi, nhưng khi vào ngành chuyên về kỹ thuật học rất khó. Mới đầu học phải chấp nhận là nó khó, chứ nếu dễ thì ai cũng đã làm được, nếu mình chọn dễ thì cạnh tranh cao, mình sẽ trở thành con tốt thí, nếu làm không được họ sẽ loại mình luôn, sẵn sàng thay thế mình, như trong cây nhị phân chúng ta học là phần tử thế mạng. Nên đôi khi thấy khó mình phải mừng chứ, khó sẽ ít người theo. Đỗ đại học là mình đã trùng rồi, đặc biệt là các sinh viên Đại học Quốc gia đầu vào rất cao, trung bình từ 7, 8 điểm một môn mới đỗ được, sinh viên đã có căn bản rất tốt rồi vào chỉ định hướng là xong thôi. Do đó anh chỉ có thể khuyên là nếu các em đã lựa chọn ngành của mình rồi thì hãy yêu thích nó, có ý chí theo đuổi đến cùng.

Các em sinh viên hay nhìn qua nhìn lại rồi lo lắng “Ô người kia lương cao quá”, “Ô người đó làm này làm kia”, chúng ta phải nhìn vào quá trình người ta làm việc chứ không phải nhìn vào kết quả. Vì bố mẹ đã tốn rất nhiều tiền lo cho mình ăn học thì mình phải học cho ra trò, mục tiêu phải lấy được cái bằng loại ưu càng tốt rồi xuống dần, phải ra được trường chứ. Đừng lấy Bill Gates ra để nói không cần bằng đại học vẫn thành công, nếu như vậy thì cả thế giới đã không cần phải đi học rồi. Anh cũng khuyên thật sự là ở xã hội Việt Nam thì vẫn cần cái bằng đại học trước đã, vì lần đầu tiên đi xin việc giới thiệu em giỏi lắm nhưng em không có bằng thì không được, gặp lần đầu họ phải cần một cái gì để minh chứng chứ đúng không?

Tóm lại là cần phải cố gắng học cho tốt, trong quá trình học biết đâu thầy cô thấy vậy sẽ gửi bạn đi thực tập, bạn thực tập tốt sẽ được công ty giữ lại làm luôn, mình đỡ mất thời gian xin việc.

Vậy theo anh 1 bạn sinh viên học lập trình nên rèn bản thân đủ cứng trước khi ra trường hay nên tìm công việc thực tập từ những năm 3-4? 

Anh dạy một số trường thì trong đó có 1 trường ở Đồng Nai, có một bạn mới sinh viên năm 2 đã đi làm. May mắn là anh sếp đó rất quan tâm đến khả năng làm việc, anh cần người làm được việc. Nhưng đi làm rất xa nha, em này kiên trì đi làm, lương lúc đó chỉ có mấy trăm đô, cứ lặp đi lặp lại như vậy sau 3, 4 năm đi học, vừa ra trường là có kinh nghiệm 2, 3 năm làm việc, tiền lương cao, hiện tại bạn ấy đã mua được một căn nhà bên Gò Vấp. Cho nên anh muốn khuyên là không nhất thiết đợi cho hết 4 năm học rồi mới đi thực tập, đi làm mà bất cứ khi nào có cơ hội hãy cứ đi làm nhưng không được bỏ học nha. Mình không được lấy lí do là em bận làm quá em không có thời gian học. Nếu làm một việc thì quá đơn giản, anh phải vừa học vừa làm chứ, vừa học vừa làm tốt tôi mới định hình anh là một người bản lĩnh, biết sắp xếp công việc của bạn. Nên anh hay khuyên sinh viên em đi làm càng sớm càng tốt mà không được lơ là việc học vì học là việc tối thượng của sinh viên, còn làm thêm là tùy mỗi người chọn cho phù hợp, những người con nhà giàu sẽ có cơ hội hơn.

Anh hay nói với sinh viên là, 2 sinh viên giỏi giống nhau, tính cách giống nhau, ý chí giống nhau nhưng một người con nhà giàu, một người con nhà nghèo thì chắc chắn con nhà giàu sẽ học tốt hơn vì họ có điều kiện hơn. Vậy nếu em con nhà nghèo không có điều kiện thì thay vì mình có 4 tiếng học hãy học 8 tiếng, người ta ngủ 10 tiếng thì em ngủ 2 tiếng thôi, đi học và làm nhiều thứ vào để có kinh nghiệm. Về việc có nên để “cứng cáp” hay là không, theo anh thì đối với mỗi trường đại học, sau khi sinh viên học đến năm 3 năm 4 là bắt đầu thực tập, tức là ai cũng “cứng” rồi, còn “cứng” như thế nào là tùy vào yêu cầu công việc, mỗi công ty sẽ có đòi hỏi khác nhau.

Về nhu cầu Mobile App và nền tảng của Mobile App

Anh nhận thấy nhu cầu, cơ hội làm việc của Mobile App Dev nói chung và Android Dev nói riêng hiện như thế nào?

Hiện nay tất cả ngành nghề đều liên quan đến tin học, đặc biệt là lĩnh vực mobile app. Mobile app trước kia có 3 ông lớn là iPhone, Android và Windows, nhưng vừa rồi Windows đã “bỏ cuộc chơi” rồi. Theo như thống kê ở thị trường Việt Nam, Mobile App về Android tính đến tháng 6 chiếm khoảng 20%, iOS chiếm khoảng 18%. Độ chênh chỉ khoảng 2% thôi nên cơ hội nghề nghiệp đới với Android và iOS là ngang nhau.

Nhưng theo anh với những tin tức thì android dễ xin việc hơn, vì nó rẻ và các thông tin sử dụng nó rất là nhiều, đặc biệt là Android có thể tương tác trực tiếp phần cứng, có thể gọi điện thoại, nhắn tin,… Còn iOS cũng có thể làm được nhưng khó hơn, các công cụ, thiết bị liên quan đến android cũng rẻ tiền hơn, phần đông chúng ta dễ tiếp cận hơn, vì sinh viên tài chính ít. iOS vẫn tham gia nhưng theo anh nghĩ thì thị phần nó ít hơn một xíu, vì nó khó cả về triển khai phần cứng và giới hạn tài chính. Hầu như các trường học không dám dạy iOS, vì muốn dạy cần phải có tài khoản này tài khoản kia, ít nhất là tài khoản 99 USD/năm, mỗi năm renew một lần, rồi phải sắm máy Mac. Cho nên sử dụng android có vẻ dễ dàng hơn, đó là quan điểm cá nhân của anh thôi. Còn nếu có điều kiện để trang bị thì tốt, tài chính mạnh thì dễ nhưng tài chính eo hẹp trong khi học phí thấp thì cũng không đòi hỏi cao được.

Một sinh viên có kỹ năng thì anh nghĩ sinh viên có khả năng tự học được. Nhà trường đã dạy Android thì sinh viên phải tự mapping qua nghiên cứu iOS chứ, cái gì cũng phải dạy thì bao giờ mới trưởng thành. Các trường đại học thường dạy nền tảng, sinh viên có thể tự bươn chải ra khi có công nghệ mới. Như xây dựng từ gốc thì hầu như gặp giông bão nó không trốc gốc, còn nếu xây từ ngọn thì chỉ cần cơn bão nhẹ đã sụp đổ rồi. Do đó là cơ hội nghề nghiệp của sinh viên android và iOS là ngang nhau, tương đương.

Có vài khái niệm mới cũng đang trở nên phổ biến là Cross Platform. Nếu so sánh với Native App hay Hybrid App thì cả 3 khác nhau như thế nào?

Đó cũng là một số khái niệm khá phổ biến như Native app, Cross Platform, Hybrid App. Mỗi một nền tảng lại có ưu điểm và nhược điểm riêng của nó, tùy vào nhu cầu, khả năng tài chính và kỹ thuật của công ty, người ta sẽ áp dụng cho phù hợp.

Theo kinh nghiệm 20 năm lập trình của anh thì mới bắt đầu học thì học nền tảng quan trọng, cụ thể như một người lập trình viên muốn giỏi trước tiên phải giỏi về kỹ thuật lập trình như C++ chẳng hạn rồi đến cấu trúc dữ liệu giải thuật. Đối với ngành lập trình chỉ cần 2 môn mà giỏi thì anh cam đoan những môn khác không có nghĩa lý gì cả, tại vì có kỹ năng rồi thì những môn khác chỉ là tham chiếu qua và phát triển lên thôi.

Quay lại việc học 3 nền tảng này thì theo anh trước hết nên học về Net app, vì đó chính là cái nền tảng liên quan trực tiếp đến hệ điều hành của nó. Nó sẽ sử dụng hết toàn bộ, khai thác hết toàn bộ tài nguyên hạ tầng trên hệ điều hành đó, bản thân hệ điều hành đó nó xài luôn. Nhưng cái dở là rõ ràng khi nó phân mảnh ra rất nhiều hệ thống, nhiều loại Mobile App, vừa iOS vừa Android, nếu như muốn viết Native app muốn làm 2 app thì em phải viết 2 lần, rất tốn thời gian và chi phí.

Nếu như dùng Cross Platform hay còn gọi Motive Platform, cái quan trọng nhất của nó là tìm ra phím word phù hợp để viết 1 lần mà nó chạy tương thích với nhiều hệ điều hành khác nhau. Bản chất của nó là nó viết ra phần mềm và build ra Native app vậy thì Native app là cái gốc, từ Cross platform cụ thể như Xamarin – một trong những platform rất tốt để viết Motive platform, viết nó ra để build android và build iOS. Dĩ nhiên nó bắt mình tạo máy ảo mình mới build ra được, bản thân cái Cross platform là nó giúp chúng ta build ra nhiều native app cho phù hợp với hệ điều hành đó, cái hay của nó là viết một lần xài nhiều lần nhưng cái dở là nó không tận dụng được hết cơ sở hạ tầng trong hệ điều hành của nó và nguy hiểm nhất là khi gốc bị thay đổi thì Cross platform phải làm lại từ đầu. Đơn cử như Android, version 4 khác, 6.0 khác, 11 khác rõ ràng nếu Cross platform không đổi thì sẽ “chết” ngay, không tương thích.

Còn với Hybrid nó có nhiều khái niệm, mà nhìn chung là nó sự kết hợp của web HTML, CSS… và nhúng vào mobile app để đưa lên chợ ứng dụng. Điểm lợi của nó là cũng viết một lần nhưng dùng nhiều hệ điều hành khác nhau vì nhúng web vào bên trong app, cái dở là nó không mượt bằng Native app và cũng không thể lấy được hết toàn bộ tài nguyên của hệ điều hành đó.

Mỗi nền tảng lại có lợi hại khác nhau nên nếu như phải chọn thì sẽ tùy vào nhu cầu của mình. Nếu chỉ viết android thì viết Native app, còn nếu phải chạy vừa android vừa iOS thì dùng Cross platform.

Sinh viên Mobile nên trang bị những gì -3

Java & Kotlin hiện đang là 2 ngôn ngữ phổ biến nhất. Anh có thể so sánh giữa 2 ngôn ngữ này?

Trước kia Android đa phần dùng Java, sau này Kotlin mới ra đời và được Google mua lại và đã nhúng vào trong hệ thống để lập trình. Theo anh, một ngôn ngữ nào đã là chính thống của nền tảng đó, như Google quá mạnh thì theo anh chúng ta nên viết cả 2. Giống như một “đại ca” nào đó biết nhiều ngón võ công, biết cả của Võ Đan và Thiếu Lâm thì đều tốt, Java và Kollin cũng vậy nên viết cả hai. Nhưng nó cũng có những điểm mạnh và điểm yếu khác nhau,

Điểm mạnh của Kotlin là ra đời sau thì nó sẽ kế thừa lại những cái trước. Java hiện nay thì nó khoảng 20 năm rồi và số lượng thiết bị dùng cho Java rất nhiều, Java có thể già cỗi theo vấn đề thời gian, Kotlin thì nó mới và kế thừa những cái gì hay của Java, những cái gì dở của Java nó sẽ cải tiến. Kotlin có thể viết nhanh hơn, trình dịch nó xây dựng tốt hơn và bảo mật hơn, đặc biệt là nó tương thích với toàn bộ các framework trước đó người ta viết bằng Java, có thể chuyển đổi qua lại, cách viết của Kollin ngắn hơn.

Tuy nhiên ngôn ngữ mới nào nó cũng khó khăn, Java đã 20 năm rồi sinh viên học cách đây 10 năm cũng đã quen rồi hay là 3, 4 năm nay cũng quen rồi nên bây giờ chuyển qua Kollin cũng hơi sốc. Anh khuyên là học tốt Java trước vì Java là cái gốc, nó phổ biến rồi, hệ thống của nó đã ổn định rồi. Những hệ thống nào đã là Java rồi thì cứ làm bình thường, những hệ thống mới nếu chúng ta cảm thấy Kotllin phù hợp thì nên dùng Kotlin vì nó có nhiều ưu điểm mà cũng vì nó mới quá nên trở thành nhược điểm. Kollin mới ra đời mà tâm lý của chúng ta là chống đối lại những cái gì mới đã nhưng chúng ta nên bình tĩnh phán đoán đã, rằng cái mới này nó hay như thế nào.

Do đó mình thấy những cái hay cái dở nhưng mình phải quyết định nên chọn nó vì điểm nào. Nó hay là một chuyện nhưng có phù hợp hay không lại là một chuyện khác.

Học như thế nào là hiệu quả?

Sinh viên Mobile nên trang bị những gì -2

Anh có thể chia sẻ kinh nghiệm, làm thế nào để học và theo đuổi hiệu quả đối với việc lập trình mobile app?

Như anh đã nói “ngành gì cũng phải cày như trâu”, trước khi làm thầy hãy làm thợ trước đã, muốn làm chuyên gia thì phải làm nghiệp dư trước đã. Nói chung là học ngành nghề gì, dù làm bất cứ ngành nghề nào đều phải “cày” đã, đã yêu rồi thì phải yêu cho tới cùng, chung thủy với nó.

Có những người lại chung thủy theo kiểu, em chỉ học cái này thôi không học những cái khác nữa, em chỉ biết Android thôi, em học thật sâu, em học 20 năm về Android là em sẽ giỏi, điều đó là không đúng về quy tắc triết học. Tại sao biển nó rộng? Biển rộng là nhờ nó sâu, biển sâu là nhờ biển rộng, nghĩa là nếu em muốn kiến thức em sâu thì em học cho rộng, nếu em muốn kiến thức em rộng thì em học cho sâu vào. Có nhiều bạn cho rằng chỉ viết android thì sẽ học android cho chuyên sâu vào thế là khi viết phần mềm về chẩn đoán y khoa các bạn không biết, không biết cái gì về phần mềm y khoa thì làm sao viết, không được để xảy ra sai sót về vấn đề bệnh tật đó. Vậy rõ ràng ngoài học chuyên môn của mình, mình còn phải có những môn liên ngành, học cho rộng ra, rộng với nghĩa chuyên gia.

Do đó theo anh học ngoài những môn lập trình trong nhà trường dạy mình phải có trách nhiệm tự lắng nghe, tự đọc báo chí, xem các tin tức về công nghê, đi talkshow như TopDev mình đây có rất nhiều chương trình như Web Summit, Mobile Day chẳng hạn. Chúng ta có thể đi nghe những hội thảo đó để chúng ta nắm bắt công nghệ. Anh khuyên là sinh viên muốn học giỏi thì ngoài những môn mình học trong trường cày đi cày lại và có học nhóm, học nhóm để mình brainstorming với nhau, nói chuyện với nhau trường hợp đó nên làm thế nào, dùng công nghệ gì, trong trường hợp đó dùng kỹ thuật nào là phù hợp và cùng triển khai các dự án thì sẽ tốt hơn. Một điều chắc chắn là phải nghiên cứu công nghệ ở ngoài, nghe và nắm bắt công nghệ chứ. Vì như đã nói thì một chương trình đại học thường học 4 – 5 năm, kết thúc 4 năm mới đánh giá được, lúc đó thì công nghệ nó đã đổi rồi vì trường học thường lạc hậu 4 – 5 năm, đó là một khoảng thời gian phù hợp. Một công ty muốn phát triển một hệ thống cần cả chục năm mới hoàn thiện và ổn định mà.

Anh có thể recommend cho các bạn nguồn tài liệu bổ ích để có thể học thêm kiến thức về mobile app không?

Có rất nhiều tài liệu, tùy vào năng lực của mỗi sinh viên, nếu em giỏi tiếng Anh thì nên đọc tiếng Anh, phải đọc tiếng anh với điều kiện là có nền tảng về tiếng Anh nha. Thường thì các sinh viên ở tỉnh sẽ không có điều kiện để tiếp cận với máy tính và tiếng Anh đâu nên việc đọc rất là khó khăn, vậy thì các em có thể chọn tiếng Việt. Còn đối với người giỏi tiếng Anh thì anh khuyên là nên đọc tiếng Anh luôn để vừa giỏi được kiến thức, vừa nâng cao được tiếng Anh chuyên ngành. Đó là cơ hội vì bây giờ ngoài vấn đề chuyên môn mình phải có tiếng Anh để lương được cao hơn một ít. Bây giờ làm việc đa quốc gia, có công ty nước ngoài mình không biết nói chuyện thế nào rồi trao đổi về chuyên môn bằng tiếng Anh cũng không nói được.

Tài liệu thì trong trường đại học đều có cả, mỗi một chương trình đào tạo đều có nên anh không dám nói là chương trình này hay hơn chương trình kia, theo anh thì cứ lên Google search các tài liệu bản quyền liên quan đến tiếng Anh để chúng ta giải, nó chỉ có mấy chục USD thôi nhưng mà nhiều sinh viên không có tính xa đâu. Cứ kêu sao nó mắc vậy để hack cho rồi. Thế câu hỏi ngược lại là em viết phần mềm ra em có muốn người ta hack không, em hack người ta thì em viết phần mềm em đâu bán được, em viết tài liệu thì người ta cũng hack lại của mình thôi nên là cố gắng bỏ tiền ra mua tài liệu. Tài liệu cụ thể như thế nào thì ứng với mỗi chương trình đào tạo sẽ có, ví dụ như bên trường anh thì khoa có viết 2 cuốn giáo trình là Lập trình mobile cơ bản và nâng cao chuyên về android.

Còn đối với sinh viên kỹ thuật khác thì họ sẽ phải nghe tư vấn của các trường khác, nói chung từng trường sẽ học theo giáo trình của trường mình, vì học kiểu gì học, giỏi mấy thì cũng phải qua môn đã. Nên về giáo trình tiếng việt thì anh khuyên là cứ bám theo giáo trình của khoa đưa, còn tài liệu tham khảo thì em có thể tham khảo bất cứ chỗ nào.

Như của anh thì có 2 nguồn, từ cái giáo trình của chính nhóm anh viết hoặc từ những video anh dạy hay blog. Theo anh khảo sát thì sinh viên thích xem qua blog và video, youtube cũng vậy. Về tiếng Anh thì rất nhiều, nếu như chưa biết gì về android cả thì nên học cuốn Absolute Beginner liên quan đến Android chẳng hạn hoặc về sau nó có Professional Android khoảng mấy ngàn trang rất là nhiều, đương nhiên những cuốn đó thì phải trả tiền. Nếu là sinh viên thì em tải được vì người ta share trên các trường đại học rất là nhiều, còn khi em đi làm rồi thì cố gắng trả bằng tiền. Thực ra mình phải thay đổi tư duy đi, cái gì cũng muốn hack thì khi em viết ra phần mềm, người hack em đâu cãi lại được.

Anh có thể chia sẻ về kỉ niệm đáng nhớ nào khi làm giảng viên? Hay về một bạn sinh viên nào để lại ấn tượng với anh không

Anh đã có được 2 sinh viên bây giờ sinh viên về kỹ thuật mà nhỏ thì có 2 em cuối năm 3 là đi làm, cũng rất là vui về điều đó. Còn kỷ niệm mà anh hạnh phúc nhất thì chắc là sinh viên của anh luôn, hồi đó anh là trưởng bộ môn ở một trường Đồng Nai. Bạn này tên là Trịnh Vĩnh Phúc rất giỏi, bắt đầu từ năm 1 là môn nào anh đi dạy cũng thấy bạn học hết, làm mình nhớ mình của ngày xưa cũng như vậy, môn nào bạn cũng học mà học rất là tốt. Lúc đó có MSP (Microsoft Student Partner) họ vào và bạn này làm rất tốt, được làm kiểu như truyền bá công nghệ, đại sứ cho họ, đi dạy từ lúc sinh viên luôn. Đi dạy chỉ là miễn phí cho họ nhưng được cái là mình đưa được rất nhiều tài nguyên về trường như những phần mềm miễn phí của họ chẳng hạn, hay là các cuộc thi, giải thưởng cũng khá nhiều. Năm 2 thấy bạn giỏi thì cho đi làm luôn. Sau khi đi làm bạn đã tiết kiệm được 100 – 200 rồi và mấy năm kinh nghiệm nữa, rất là giỏi. Mình rất hạnh phúc về điều đó. Hiện tại bạn này vẫn đang làm dự án với anh, thầy trò vẫn đang làm với nhau.

Xin cảm ơn phần chia sẻ từ anh Trần Duy Thanh, hy vọng các bạn sinh viên ngành Mobile nói riêng và lập trình viên nói chung sẽ có thêm những kiến thức, lời khuyên từ chính giảng viên trường Đại học Kinh tế Luật và áp dụng vào chính hàng trang của mình. Ngoài ra, các bạn có thể tham khảo những bài giảng online của anh tại trang WordPress duythanhcse.wordpress

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

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

 

Convert giá trị String qua Number trong Javascript

Convert giá trị String qua Number trong Javascript
Bài viết được sự cho phép của tác giả Lưu Bình An
Javascript rất lạ kỳ, convert giá trị String qua number cũng lắm nẻo dăm ba đường,nào NaN, nào radix. Bài này chúng ta cùng tìm hiểu parseFloat(), Number(), Number.isNaN(), isNaN()

Một cách ngắn gọn, chúng ta nên dùng Number(x) để convert giá trị sang dạng number, hoặc parseFloat(x) nếu muốn chuẩn mực

Để kiểm tra kết quả có convert được hay không, luôn dùng Number.isNaN()không nên dùng phương thức global isNaN().

typeof parseFloat('42'); // 'number' Number.isNaN(Number('42')); // false typeof parseFloat('fail'); // 'number' Number.isNaN(Number('fail')); // true

Sử dụng Number(x) sẽ có vài trường hợp đặc biệt, nó có thể là đúng cũng có thể là sai, tùy theo cách hiểu của chúng ta.

Number(''); // 0

Rất nhiều dev sử dụng +x để convert giá trị x sang number. Theo như khai báo của javascript, +x sẽ tương tự như Number(x)

+'42 fail'; // NaN +({ valueOf: () => '42' }); // 42 +({ toString: () => '42' }); // 42 +(null); // 0 +(' '); // 0

Cái sai của Number(x)

Number(x) và parseFloat(x) xử trí các tình huống đặc biệt rất khác nhau, parseFloat() có vẻ dễ giải hơn khi chấp nhận một số kiểu String

Number('42 fail'); // NaN parseFloat('42 fail') // 42 parseInt('42 fail') // 42 Number(' 10') // 10 parseFloat(' 10') // 10 parseInt(' 10') // 10

Đừng thấy vậy mà kết luận rằng Number(x) chuẩn mực và an toàn hơn. Thực ra, Number(x) hay lấn cấn khi string chứa khoảng trắng, null, và một số tính huống khác. Nó convert khá nhiều trường hợp sang 0.

Number(null) // 0 Number('') // 0 Number(' ') // 0 Number(false) // 0 Number({ toString: () => '' }); // 0 Number({ valueOf: () => ' ' }); // 0

Nguyên tắc làm việc của parseFloat() đơn giản và dễ đoán hơn. Cắt hết khoảng trắng, rồi kiểm tra với một regular expression được quy ước để lấy giá trị số dài nhất trong chuỗi.

// parseInt hoạt động tương tự parseFloat(null); // NaN parseFloat(''); // NaN parseFloat(' '); // NaN parseFloat(false); // NaN parseFloat({ toString: () => '' }); // NaN parseFloat({ valueOf: () => ' ' }); // NaN

Number.isNaN() và isNaN()

Javascript sẽ ko quăng lỗi nếu nó ko convert được giá trị sang number, nó trả về một giá trị đặc biệt gọi là NaN (not a number). Và vẫn chưa đủ độ huyền bí, nếu kiểm tra typeof của một giá trị là NaN chúng ta nhận được ‘number`. Nực cười quá mà.

Number('fail'); // NaN typeof Number('fail') // 'number'

Lý do cho sự có mặt của Number.isNaN() và isNaN() là vì == và === không chạy đúng trên giá trị NaN

Number('fail') == Number('fail'); // false Number('fail') === Number('fail'); // false Number('fail') == NaN; // false NaN === NaN; // false

Number.isNaN() là một hàm mới được bổ sung trong ES6, tuy nhiên ko nhận được nhiều sự quan tâm. Chúng ta nên tập sử dụng Number.isNaN() thay cho isNaN()

isNaN(Number('fail')) // true Number.isNaN(Number('fail')); // true

Một cách dễ hình dung sự khác nhau, nếu Number.isNaN() là so sánh === thì isNaN() là so sánh ==

Thằng isNaN() nó sẽ convert giá trị qua number trước, rồi mới đem đi so sánh kết quả.

isNaN(‘fail’) // true isNaN({}) // true Number.isNaN(‘fail’) // false Number.isNaN({}) // false

Nói cách khác, nếu giá trị x không phải kiểu number, thì Number.isNaN(x) sẽ là false

Cái polyfill cho Number.isNaN() đ

9 tuyệt kỹ “hack” JavaScript mà bạn nên biết

ược hiện thực đơn giản như sau

Number.isNaN = function(x) { return typeof x === 'number' && isNaN(x); }

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

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

Xem thêm các tuyển dụng JavaScript hấp dẫn tại TopDev

Trò chuyện cùng Viễn Nghiêm, CEO tại GoStream để hiểu về công nghệ Livestreaming và những tiềm năng

Công nghệ livestreaming

Livestreaming dần trở thành công nghệ phổ biến, và được nhiều marketer cân nhắc để đưa vào chiến lược của các doanh nghiệp. Theo Go-Global, đến cuối năm 2020, livestreaming dự kiến sẽ chiếm 82% tổng lưu lượng truy cập Internet.

Vậy đâu là lý do khiến livestreaming phổ biến như vậy và công nghệ đứng đằng sau một hệ thống livesteaming cũng như vai trò của developer trong việc vận hành livestreaming là gì? Hãy cùng TopDev trò chuyện cùng Viễn Nghiêm | Founder tại GoStream để hiểu hơn về chủ đề này.

Đôi nét về khách mời

  • Anh Nghiêm Tiến Viễn hiện là CEO của Công ty Cổ phần Công nghệ GoStream.
  • GoStream hiện nay đang là công ty chuyên về livestream trên các nền tảng mạng xã hội như Facebook, Youtube, Twitter.
  • Hiện nay, GoStream đang là ứng dụng top 1 ở Việt Nam trong lĩnh vực này.

Hiểu về công nghệ Livestreaming và những tiềm năng

Khi làm việc tại GoStream không, anh có khoảnh khắc đáng nhớ không?

Mình đã đi làm từ rất sớm, từ khi còn là năm nhất sinh viên. Sau khi ra trường mình đã đi làm 2 năm ở công ty cũng về streaming nhưng là streaming VoD, tức là những video đã quay sẵn như những website phim bây giờ, từ đó mình có những kinh nghiệm và kiến thức về lĩnh vực streaming.

Xem thêm Sinh viên IT cần trang bị gì khi tìm việc

Sau đó do nhu cầu công việc mình cũng phải livestream trên Facebook, Youtube, Twitter và mình cảm thấy công việc livestream cần rất nhiều công cụ khác nhau và khá là phức tạp đối với một người dùng bình thường. Và mình là một IT Developer thì mình cảm thấy cái này mình có thể fix được, cuối cùng thì mình có thể tạo ra GoStream. Trước hết là phục vụ cho công việc của mình lúc đấy, sau đó mình đã thương mại hóa và nhận thấy nhu cầu livestream trong xã hội bây giờ đang rất phổ biến và ngày càng phổ biến hơn nữa.

Theo anh, vì sao VinaCapital Ventures lại chọn GoStream?

Theo mình, VinaCapital chọn GoStream vì có 2 lí do: thứ nhất là trong lĩnh vực này và ứng dụng livestream trên mạng xã hội bọn mình đang là ứng viên sáng giá nhất và chiếm toàn bộ thị trường, hầu như là toàn bộ thị trường ở Việt Nam.

Thứ 2 là thị trường livestream đang ngày càng mở rộng ở Việt Nam, chúng ta có thể nhìn sang Trung Quốc để có thể thấy tương lai, Việt Nam cũng sẽ đi theo con đường đấy. Có thể thấy là dư địa để GoStream phát triển còn rất là nhiều.

Anh có thể chia sẻ thêm về dịch vụ và huớng đối tượng của GoStream không?

GoStream cung cấp cho các bạn một công cụ để livestream trên mạng xã hội một cách dễ dàng nhất có thể. Như bạn có thể thấy thì ngày nay, người ta livestream rất nhiều và cái video livestream hấp dẫn người xem ở lại lâu hơn so với một cái video thông thường.

Dựa vào việc đó thì người ta thường xem việc livestream như một hình thức để quảng cáo. Những người bán hàng ở Việt Nam dùng livestream rất nhiều để quảng cáo cái sản phẩm của họ tới người tiêu dùng. Thì đấy là những đối tượng mà bọn mình nhắm tới, bọn mình giúp cho những người bán hàng có thể bán được nhiều hàng hơn và từ đấy thì họ sẽ sẵn sàng trả tiền cho những dịch vụ mà GoStream cung cấp.

Ngoài ra thì cũng có một số đối tượng khác như là những người chuyên sản xuất nội dung video họ cũng có nhu cầu có thêm khán giả cho những video đó, hoặc những người chuyên sản xuất nội dung hoặc quản trị fanpage, họ muốn phát những video có tính thu hút khán giả hơn để đưa người dùng đến với fanpage của họ.

Chia sẻ về công nghệ livestreaming

Hiểu về công nghệ Livestreaming và những tiềm năng

Về khía cạnh kỹ thuật, cách mà phát trực tiếp được thực hiện trước khi công nghệ livestreaming trở nên phổ biến tại sao lại khó khăn đến như vậy?

Trước khi livestream xuất hiện, người ta thường xem trực tiếp ở trên truyền hình là chủ yếu. Truyền hình có những đặc điểm riêng, ví dụ như kỹ thuật nó rất khó khăn, chẳng hạn các bạn cần có nhiều máy quay ở những góc khác nhau, sau đó những cái máy quay đó đều nối dây cáp về một bàn trội, từ bàn trội đấy có thể phát lên truyền hình hoặc phát lên những nơi khác. Những kỹ thuật và thiết bị đấy hầu như chỉ có nhà đài với nguồn lực kinh tế tốt thì mới phát triển được cái đội ngũ như thế.

Khi livestreaming phát triển, chẳng hạn như từ youtube, đặc biệt là từ sau khi facebook ra mắt tính năng livestream thì nó thay đổi cuộc chơi hoàn toàn. Bạn chỉ cần một cái điện thoại di động các bạn cũng có thể phát được trực tiếp trên trang cá nhân của mình, và khi đấy, mỗi tài khoản cá nhân có thể coi là một kênh truyền hình riêng, việc livestream trở nên cực kỳ đơn giản nhưng nó cũng là một kênh quảng cáo cực kỳ tốt, do đó chúng ta có thể thấy đươc hiệu ứng của nó, đó là lí do mà tất cả mọi người đều livestream.

Để xây dựng một nền tảng hệ thống livestreaming thì có những khó khăn gì, về hạ tầng, kỹ thuật lẫn yếu tố con người?

Khi nói mình làm về livestream, mọi người sẽ nghĩ ngay đến việc mình làm CDN. Tức là livestream nó sẽ có 2 phần giống như những sản phẩm khác, thứ nhất là phần sản xuất và hai là phần phân phối. Phần phân phối ở Việt Nam cũng có một vài đơn vị làm và khi nói mình làm livestream thì mọi người sẽ nghĩ ngay là mình phân phối những cái video đấy đến càng nhiều người dùng càng tốt, nhưng thật ra là không phải. Bọn mình làm phần sản xuất, tức là bọn mình giúp cho những người muốn tạo ra những video livestream, còn phần phân phối thì sẽ do người khác làm. Thứ nhất là khi mình giải thích về livestream với một người khác thì nó hơi khó khăn. Mọi người chưa hình dung ra được đấy là một cái khó khăn của GoStream. Tuy nhiên, những người đã dùng và đã hiểu GoStream quay lại rất là nhiều vì những việc đấy đúng với ý của họ, đúng với cái họ mong muốn để họ bán sản phẩm của mình. Một trong những cái khó khăn của GoStream là làm cho khách hàng hiểu được vì sản phẩm của mình cũng là cái mới trên thị trường.

Bật mí quá trình phát triển livestreaming, và vai trò của developer

Anh có thể chia sẻ cách mà một hệ thống livestreaming hoạt động được không? Về Backend & Frontend thì phải xử lý những gì, có gì khác với backend & frontend thông thường?

Đối với sản phẩm của bọn mình, backendfrontend nó rất khác so với các website thông thường. Đầu tiên là frontend trước chẳng hạn, frontend bọn mình có sản phẩm GoStudio thì nó sẽ lấy webcam của người phát ngay trên trình duyệt web và không cần cài đặt bất cứ một cái phần mềm nào khác, đó là công nghệ web ATC, nó cũng dần dần khá phổ biến ở thời điểm bây giờ. Hai là cái tín hiệu đó được truyền lên server sau đó backend sẽ xử lí, họ sẽ gắn thêm những cái layer như là hình ảnh, text chạy ngang màn hình, như là một cái máy trội ở đài truyền hình thật sự, và việc đấy tiêu tốn khá là nhiều CPU của server. Đó là những khó khăn mà bọn mình gặp phải. Bọn mình phải tốn rất nhiều thời gian để (optimize) tối ưu hóa server chạy cho nó ổn định để có thể phục vụ nhiều người dùng nhất có thể.

Anh có thể chia sẻ vai trò của DevOps trong quá trình vận hành và phát triển live streaming không?

Bọn mình sử dụng rất nhiều các công cụ để deploy code lên server một cách tự động, ngay khi developer commit cái source code lên GitLab thì nó sẽ chạy những cái script tự động để deploy lên một bản staging để bọn mình có thể test trước, sau khi đã pass qua những cái test đấy thì bọn mình sẽ cho deploy tự động lên bản chạy chính thức. Bọn mình cũng áp dụng khá là nhiều các công cụ khác nhau để tự động hóa hết những việc ấy.

Tham khảo thêm các TOP việc làm cho lập trình Devops lương cao

Áp dụng những gì để tối ưu hóa livestreaming cùng những kinh nghiệm thực tế?

Theo em được biết GoStream hoạt động dựa trên hạ tầng của các trang Mạng xã hội để giảm chi phí. Anh có thể giải thích rõ hơn về cách hoạt động của mô hình này không?

Tất cả những mạng xã hội hỗ trợ livestream họ đều có những APA để mình có thể phát livestream lên đấy. Đối với Facebook và Youtube thì nó khá là dễ, tuy nhiên có một số khách hàng ở nước ngoài họ lại dùng Twitter nhiều hơn và họ muốn livestream lên twitter. Ở thời điểm đó cũng khá là khó khăn và có một số bước phải làm thủ công, bọn mình phải cố gắng để liên hệ với twitter rất nhiều lần để xin APA để nó có thể tự động hóa một cách dễ dàng hơn.

Đấy là một quá trình trao đổi rất là lâu và cuối cùng twitter cũng cho phép tụi mình sử dụng APA để có thể phát được lên tất cả các nền tảng đấy. Công cụ của bọn mình hầu như là công cụ duy nhất hiện nay cho phép phát rất nhiều nơi, nhiều nền tảng cùng lúc. Có một số phần mềm mình biết thì nhiều nhất cũng chỉ có 3 điểm phát thôi, còn bọn mình thì không giới hạn.

Không biết là khi livestream với resolution cao thì có khả thi không anh? Và thêm vấn đề FPS, Maximum sẽ dừng lại ở 30FPS hay là 60FPS ạ?

Hiện nay bọn mình có 2 sản phẩm là GoStream và GoStudio, bọn mình có 2 service là livestream thực tế (như mình với bạn ở đây, livestream ở trường quay này) ngay trên Facebook và sự kiện đó diễn ra trực tiếp, thật sự. Sản phẩm đó bọn mình đang support ở chế độ 720p và 30 frame/second. Tất nhiên là bọn mình có thể tăng lên được nhưng với những người dùng bình thường và với việc phát lên mạng xã hội, bọn mình đang để ở mức bình thường như vậy.

Đối với những khách hàng có nhu cầu cao hơn thì bọn mình có thể customize riêng. Thứ 2 là bọn mình có thể quay sẵn 1 cái video đã có sẵn rồi và phát lên những mạng xã hội đó dưới dạng video livestream, những video dạng này có thể phát được ở 1080p và 60 frames per second.

Không biết là khi livestream về các sự kiện âm nhạc, thì chất lượng âm thanh có thể đạt được như Spotify hay iTunes không?

Đúng là bọn mình có sử dụng những công nghệ nén để tối ưu hệ thống. Tuy nhiên, đối với những chương trình cụ thể, những khách hàng cụ thể, họ có những yêu cầu cao hơn về mặt hình ảnh, âm thanh thì đều có thể liên hệ, bọn mình sẽ dành riêng ra một server riêng có những cấu hình riêng biệt để nâng cao chất lượng hình ảnh và âm thanh.

Có những điểm lợi và bất lợi như thế nào so với việc xây dựng một hệ thống live streaming trên nền tảng riêng?

Có những điểm rất lợi thế của bọn mình, đó là chi phí về cơ sở hạ tầng thật sự rất thấp so với ứng dụng tự xây dựng player của họ. Bọn mình chỉ xây dựng phần sản xuất nội dung video livestream thôi, không làm phần phân phối video livestream đấy. Điều đó giúp cho bọn mình có những chi phí rất là tốt và từ đấy có thể duy trì được công ty.

Thứ 2 là khách hàng cũng cần việc đấy. Nếu bọn mình xây dựng nền tảng riêng để livestream thì khách hàng phải lên cái nền tảng đấy để phát và kêu gọi mọi người vào nền tảng đấy để xem, trong khi trên Facebook thì họ đã có sẵn những fan hâm mộ, có sẵn những khách hàng, người ta phải dời tất cả những khách hàng đấy qua một nền tảng mới để xem, thì việc đấy cũng là bất lợi cho khách hàng của bọn mình. Việc bọn mình phát lên facebook, youtube hoặc twitter nó rất phù hợp với bọn mình và cả khách hàng, đó là một điểm rất thuận lợi. Còn có những khó khăn như bọn mình buộc phải optimize hệ thống vì giả sử như mỗi người dùng họ dùng một cái phần mềm và cài đặt trên máy của họ và họ dùng cái đó để phát livestream thì máy tính của họ không cần chịu tải quá nhiều. Tuy nhiên nếu tất cả những người đó cùng chuyển lên server thì server đó buộc phải tối ưu tất cả mọi thứ để phục vụ được tốt nhất.

Theo anh thì vấn đề về độ trễ có thể được khắc phục hoàn toàn khi 5G xuất hiện không?

Thực ra độ trễ lớn nhất là từ server phát cho người xem tới máy của người xem, còn từ server của bên phát tín hiệu đi tới server nhận tín hiệu đấy sẽ rất là thấp. Khi 5G ra đời có thể hỗ trợ từ bên phát đến server bên nhận, tuy nhiên tốc độ đó bây giờ đã là tối ưu rồi, nhanh hơn 1 ít thì cũng không ảnh hưởng lắm. Tuy nhiên công nghệ để phát video livestream tới máy người dùng thì độ trễ đấy là do công nghệ. Nếu bạn muốn độ trễ thấp thì server sẽ phải thiết kế theo một kiểu khác và nó sẽ tốn chi phí hơn rất nhiều lần so với việc phát với độ trễ vừa phải khoảng từ 20 – 40 giây thì chi phí sẽ giảm đi rất là nhiều.

Do đó nên những đơn vị như Facebook hoặc Youtube họ sẽ sử dụng công nghệ thứ 2 là chấp nhận 1 cái độ trễ từ 20 – 40 giây, bù lại chi phí dành cho CDN của họ sẽ thấp hơn. Đây là công nghệ của facebook và youtube nên mình không thể nào can thiệp được vào cái độ trễ đấy.

Thực sự độ trễ đấy cũng làm cho khách hàng của mình phàn nàn rất là nhiều, khi bọn mình muốn triển khai những minigame cần độ tương tác cao ngay trên livestream cũng rất là khó nên dù sao cũng phải cố gắng “sống chung với lũ” thôi.

Sự kiện Covid-19 đã ảnh hưởng thế nào đến thị trường live streaming nói chung và Gostream nói riêng từ góc nhìn của anh – một người trong ngành?

Covid 19 tác động đến bọn mình theo 2 chiều: thứ nhất, những ngành hàng trước dịch livestream nhiều nhất như mỹ phẩm, thời trang,… trong dịch người ta lại ít hàng, ít livestream.

Còn những mặt hàng tiêu dùng thiết yếu trước dịch ít livestream thì trong dịch họ lại livestream nhiều hơn. Cụ thể đối với GoStream trong dịch bọn mình có xu hướng đi xuống, số lượng livestream ít hơn bởi vì những ngành hàng chủ đạo lại đang tạm dừng. Tuy nhiên khi vừa hết dịch là mọi thứ lại bùng lên và ngày càng có nhiều người biết đến GoStream nhiều hơn. Qua đợt dịch này thì những ngành ít livestream lại livestream nhiều hơn và sau dịch thì những ngành đã livestream nhiều lại quay trở lại, nó cũng tạo ra hiệu ứng rất tốt sau dịch.

Còn với những phần mềm khác thì mọi người có thể dễ dàng nhìn ra như Zoom chẳng hạn, một ứng dụng họp trực tuyến đã phát triển rất tốt trong đợt dịch vừa rồi. Những ứng dụng như Zoom hay livetream bọn mình cũng cùng chung một cái kho.

Anh có đánh giá ra sao về nhu cầu nhân sự cho mảng livestreaming trong thời gian tới?

Theo mình nghĩ thì mảng livestreaming nó sẽ phát triển vì thực ra thì khi mọi người nghe đến livestream thường nghĩ nó hơi khác, hơi hiếm và ít có công ty tuyển dụng. Tuy nhiên mọi người có thể nghĩ đến một số những sản phẩm khác có cùng hạ tầng với livestreaming, ví dụ như những công ty về tổng đài ảo là họ đang video call hoặc audio call, họ cũng đang truyền nội dung audio đi dưới dạng realtime trực tiếp cho nhau. Những công ty về tổng đài ảo ở Việt Nam đang phát triển, họ có rất nhiều startup về mảng đấy.

Thứ 2 là những công ty về họp trực tuyến như Zoom thì các bạn có thể thấy nó đang rất phát triển. Mình nghĩ là trong thời gian tới cũng sẽ có những công ty như thế ở Việt Nam và phát triển những sản phẩm tương tự. Do đó mình nghĩ mảng livestreaming trong thời gian tới sẽ có rất nhiều công ty tuyển dụng và nhu cầu sẽ tăng lên.

Dân IT cần trau dồi những gì để theo đuổi lĩnh vực này?

Theo anh những bạn có background chung chung là “dân IT” muốn theo đuổi mảng này thì anh có lời khuyên gì cho các bạn?

Để mà phát triển mảng livestream, các bạn sẽ cần phải trang bị một số kiến thức, ví dụ như là về truyền dẫn nội dung video hoặc audio qua internet, nén và giải nén các bộ mã nội dung video, audio.

Thực ra những vấn đề đó nếu mình đào sâu thì rất là khó, mình có thể sử dụng lại những bộ mã nguồn đã có sẵn, nó cũng phục vụ rất tốt những công việc hiện tại, thời gian để mình học những kiến thức đó cũng sẽ rút ngắn đi rất nhiều, có thể phục vụ được công việc ngay.

Mình khuyên là các bạn cứ bình tĩnh, không phải là một cái gì đó quá ghê gớm, có thể học được thực tế ngay trong công việc.

Xem thêm Các kỹ năng cần có để trở thành một Lập trình viên chuyên nghiệp

Anh có thể recommend nguồn tài liệu nào có thể giúp mình tự học được không?

Thực tế thì mình thường Google là chủ yếu. Mình thường tìm hiểu những công ty lớn trên thế giới họ đã làm như thế nào. Có rất nhiều các bài viết, các bài hướng dẫn, những bài phân tích về việc tại sao họ có thể livestream đến rất nhiều người trong cùng một thời điểm. Mình thường xuyên tìm đọc những bài như thế và chủ yếu là mình sử dụng Google thôi, không có trang cụ thể nào.

Xin cảm ơn những kiến thức rất thực tế về Livestreaming của anh Nghiêm Tiến Viễn. Chúc cho hoạt động của GoStream sẽ ngày càng phát triển và đưa công nghệ Livestreaming đến gần hơn với cộng đồng Internet Việt Nam.

Xem thêm TOP tuyển dụng lập trình IT hấp dẫn tại TopDev

KICC HCMC chính thức hợp tác cùng TopDev phát triển nguồn nhân lực IT Việt

KICC HCMC chính thức hợp tác cùng TopDev phát triển nguồn nhân lực IT Việt

Sáng ngày 29 tháng 7 tại Khách sạn Intercontinental đã diễn ra buổi ký kết biên bản ghi nhớ giữa KICC HCM và TopDev, đánh dấu hợp tác giữa nền tảng tuyển dụng IT hàng đầu tại Việt Nam và tuyển dụng nhân sự IT cao cấp cho công ty Hàn Quốc.

TopDev là cầu nối giữa các công ty công nghệ Hàn Quốc với cộng đồng lập trình viên Việt Nam

Đây là một trong những điều được đề cập trong biên bản ghi nhớ giữa Cơ quan xúc tiến công nghiệp công nghệ thông tin quốc gia Hàn (KICC) và nền tảng tuyển dụng IT TopDev.

Biên bản ký kết bao gồm các mục đích:

  • Hỗ trợ, hợp tác và thúc đẩy tuyển dụng việc làm công nghệ thông tin cho các công ty Hàn Quốc.
  • Hỗ trợ khách hàng tiềm năng của nhau cùng tiếp cận thị trường địa phương, tìm kiếm đối tác, khách hàng tiềm năng và mở rộng kinh doanh tại Việt Nam.
  • Hợp tác các hoạt động khác phù hợp với hai bên.

Phát biểu về lễ ký kết, ông Lee Ju Nam – Director của KICC HCMC cho biết “Chúng tôi hy vọng rằng Dịch vụ hỗ trợ tuyển dụng online sẽ góp sức cho các công ty Hàn Quốc tuyển dụng những ứng viên lập trình viên Việt Nam chất lượng cao. Và lần ký kết này chính thức  đánh dấu cho sự khởi động hợp tác giữa KICC HCMC và TopDev, với mục đích hỗ trợ các công ty Hàn Quốc tại Việt Nam.”

KICC HCMC chính thức hợp tác cùng TopDev phát triển nguồn nhân lực IT Việt

Đại diện cũng là General Director từ TopDev, ông Park Jong Ho hy vọng “Những năm gần đây, Việt Nam là mảnh đất màu mỡ với các doanh nghiệp Hàn Quốc, chúng ta đã chứng kiến rất nhiều phi vụ đầu tư từ quốc gia này vào thị trường Việt. Qua lần hợp tác này, nguồn nhân lực trẻ từ Việt Nam cũng sẽ có nhiều sự lựa chọn hơn. Với sự hỗ trợ từ TopDev, phía các doanh nghiệp sẽ rút ngắn thời gian tìm nhân tài, mà song song với đó, lập trình viên Việt Nam cũng sẽ được trải nghiệm cơ hội nghề nghiệp tại doanh nghiệp công nghệ Hàn Quốc.”

Về KICC HCMC và NIPA:

  • Được thành lập vào ngày tháng 5 năm 2019, KICC HCMC (KICC Hồ Chí Minh) là văn phòng thứ 6 trên toàn cầu và thứ 2 tại Việt Nam. KICC là văn phòng quốc tế trực thuộc Bộ Khoa học – Công nghệ Thông tin Hàn Quốc (MSIT) và Cơ quan Xúc tiến Công nghệ Thông tin – Truyền thông (NIPA) với mục đích giúp đỡ việc kinh doanh quốc tế của những công ty về Công nghệ Thông tin (CNTT) của Hàn Quốc. KICC có 06 văn phòng ở Thung lũng Silicon (Mỹ), Tokyo (Nhật), Bắc Kinh (Trung Quốc), Singapore, Hà Nội (Việt Nam) và Hồ Chí Minh (Việt Nam).
  • NIPA là tổ chức phi lợi nhuận từ Chính phủ Hàn Quốc và là thành viên của Bộ Khoa học – Công nghệ Thông tin Hàn Quốc, chịu trách nhiệm trong việc hỗ trợ các công ty và các chuyên gia CNTT. NIPA hiện dẫn đầu trong kiến thức về cơ sở hạ tầng kinh tế xã hội và phát triển kinh tế quốc gia bằng việc xúc tiến khả năng cạnh tranh của toàn ngành công nghiệp thông qua sự tiến bộ kỹ thuật CNTT và công nghiệp.

Về nền tảng tuyển dụng IT TopDev

Với hơn 300.000 profile lập trình viên, TopDev hiện là một trong những nền tảng tuyển dụng chuyên về IT hàng đầu tại Việt Nam. TopDev là một trong những đơn vị tiên phong ở lĩnh vực IT tại Việt Nam, giúp xây dựng và phát triển thương hiệu tuyển dụng – Employer Brand cho hàng trăm công ty công nghệ trong và ngoài nước. Đây còn là đơn vị chuyên khảo sát, phân tích và phát hành các báo cáo quý, năm về thị trường và nhân lực IT tại Việt Nam.

Tham khảo thêm các vị trí tuyển dụng IT tại HCM hấp dẫn tại đây

Kinh Nghiệm Học Coding Dành Cho Dân Trái Ngành

Kinh Nghiệm Học Coding Dành Cho Dân Trái Ngành
Tác giả: Mai Trần
Dành cho những bạn không phải dân IT nhưng vì dòng đời xô đẩy mà đâm đầu vào con đường coding.

Điểm bắt đầu

Hãy tìm lấy cho mình một động cơ, vì sao bạn muốn học coding? Tớ muốn học từ rất lâu rồi, lúc đầu chỉ cho vui, nhưng khi nhìn thấy khối kiến thức khổng lồ thì hoảng và bỏ cuộc luôn sau tutorial video đầu tiên. Tớ chỉ bắt đầu học coding nghiêm túc sau khi nhập học chương trình Thạc sĩ Data Science ở Đức, trước đó tớ học Cử nhân Kinh tế Đối Ngoại ở FTU Hà Nội và Thạc sĩ Economics & Institutions ở Uni Marburg. Lúc bắt đầu, kiến thức về coding của tớ đúng là con số Không tròn trĩnh, tới mức còn không biết gì về “data types/variable types” các kiểu. Khi đó, tớ mới chỉ tiếp xúc với phần mềm thống kê Stata và viết các câu lệnh theo kiểu mẫu có sẵn, với syntax siêu đơn giản.

Hành trình

Có động cơ rồi thì bạn phải tìm cách thu xếp thời gian và lên kế hoạch, thậm chí chiến thuật cho hành trình của mình. Mục tiêu của bạn là gì? Bạn muốn hoàn thành mục tiêu trong bao lâu? Cái thuận lợi của tớ (hay là bất lợi không biết nữa) là vì bài tập trên trường cứ chất đống lên nên phải nhảy bổ vào học ngấu nghiến để giải quyết vấn đề, không có thời gian mà trăn trở học như thế nào. Các môn học trong chương trình Data Science được dạy bởi Khoa Toán và Khoa CNTT của trường. Và điều đó có nghĩa là bọn tớ “được” ưu ái học các môn Toán với dân Thạc sĩ Toán và học các môn CNTT với dân Thạc sĩ CNTT. Với nhiều bạn thì điều đó không thành vấn đề vì vốn các bạn đã là dân Toán/IT, thậm chí đi làm dev dăm năm rồi, chỉ có một phần nhỏ là dân trái ngành như tớ, bao gồm Kinh tế, Tài chính, Tâm Lý học, Kĩ thuật điện,… Do lúc đó em bé nhà tớ mới được năm tháng, nên tớ quyết định học hết các môn Toán trước (vì vốn cấp Ba học chuyên Toán nên tớ mới bắt đầu như vậy cho dễ), rồi mới chuyển sang các môn IT.
Vì khoa Toán chủ yếu dùng R nên tớ bắt đầu viết thuật toán với R, rồi mới tới Python, Java, mấy ngôn ngữ command line của Linux như bash, awk các kiểu, rồi thêm pyspark lúc học môn Big Data Analytics. Bên cạnh lập trình, thuật toán, tớ còn được học thêm khá kĩ về phần database, cả relational với ngôn ngữ truy vấn SQL lẫn non-relational database với các ngôn ngữ truy vấn kiểu NoSQL. Dĩ nhiên là trình độ coding của tớ tới giờ vẫn còn gà lắm, nhưng so với ngày mới lò dò bước vào lớp “Java for dummies” thì tớ đã vỡ lẽ ra kha khá rồi nên thôi thì cứ viết tổng hợp kinh nghiệm lại, biết đâu có ai đó cần.

Kinh nghiệm

Ngày trước, khi còn ở Việt Nam, tớ từng hỏi một bạn đi du học Pháp rằng liệu bạn có áp dụng được kiến thức đã học vào công việc không. Bạn ấy nói một câu mà tớ nhớ mãi, đó là việc đi học không phải để học hết các kiến thức mình cần, mà là để học được “cách học”. Quả đúng như thế, nhất là khi công nghệ thay đổi không ngừng thì kiến thức nhà trường dạy rất nhanh trở nên lạc hậu. Không quan trọng việc chúng ta đã học được bao nhiêu ngôn ngữ, mà quan trọng là chúng ta phải tìm ra cách học phù hợp với mình, hiệu quả với công việc mình đang làm!
Việc học coding nhìn chung cần sự kiên nhẫn, ham học hỏi, tư duy logic, cẩn thận. Biết tiếng Anh là một lợi thế. Tớ tạm chia việc học một ngôn ngữ ra làm ba chặng như sau:

1. Khởi động:

Trình độ cơ bản thì bắt đầu với syntax chung, data types, operators, conditions, loops là ổn, có thể viết được đủ thứ để chạy chương trình được rồi. Đây là phần khung xương, hơi nhàm chán nhưng cực kì quan trọng, có thể xem như khi bạn học ngữ pháp của một ngôn ngữ mới vậy đó. Lúc này, bạn sẽ được học sâu hơn về tầm quan trọng của từng dấu chấm phẩy, lùi dòng, ngoặc đơn, ngoặc kép, viết comment như thế nào. Hồi mới học Java, tớ viết vài dòng là hỏng lên hỏng xuống, đôi lúc chỉ vì mở mà quên đóng ngoặc hoặc đóng ngoặc sai chỗ ấy (dễ xảy ra khi copy code từ đâu đó về rồi tự xào nấu lại). Lúc debug đọc log mà đến phát khóc vì chả hiểu nó nói lỗi ở đâu. R và Python thì ít khi dùng tới các dấu ngoặc hơn, nhưng phải tuân thủ lùi dòng. Đối với dân Data Science nói riêng thì hai ngôn ngữ này có đủ thư viện cho thống kê, mô hình, đồ thị các kiểu nên ít khi tớ phải tự viết packages mới, hay thậm chí là tạo class mới như khi sử dụng Java. Tớ đã học trình độ cơ bản trên những trang sau:
https://www.tutorialspoint.com: trang này có giải thích đơn giản, ngắn gọn, có nhiều ví dụ với hướng dẫn chi tiết, lại chia làm các phần nhỏ, có từ basic tới advanced nên dễ chia dễ trị. Các bài học cũng được sắp xếp theo thứ tự hợp lý. Sau đó, tùy vào nhu cầu mà bạn học lên hướng advanced cho phù hợp.
https://Coding: trang này là cứu cánh của cuộc đời tớ hồi mới học Java. Trên đó có những đề bài nhỏ với mục đích giúp chúng ta luyện tư duy lập trình. Chẳng hạn, đây là một đề bài ngắn dành cho Java mang tính khởi động.
Hồi đó, tớ thường dùng tư duy toán để giải quyết vấn đề. Thêm một ví dụ nữa, đề bài dưới đây bảo tính tổng các số liên tiếp tới n thì tớ nghĩ ngay tới việc tính n(n+1)/2 và không tài nào hiểu nổi sao lại phải dùng “for loop” làm gì. Dĩ nhiên tư duy toán của tớ không sai, nhưng sẽ không dùng cách đó để tính tổng cho một dãy số bất kì không cách đều nhau, bởi vậy, cách tư duy lập trình là dùng cách tính increment để tổng quát hóa bài toán lên. Rất buồn cười là tư duy toán cũng khiến tớ ngứa cả mắt khi nhìn “đẳng thức” increment sum = sum + num (hình dưới). Mãi tới khi giải rất nhiều đề bài trên codingbat thì tớ mới quen được với một kiểu tư duy giải quyết vấn đề mới. Nhờ thế mà tớ đã bắt đầu hình thành phản xạ trong giải quyết các bài toán nhỏ.
https://www.geeksforgeeks.org/python-programming-examples/: tớ cũng hay đọc trên trang này, nhưng chưa luyện bài tập trên đó bao giờ. Ở đây có thêm nhiều ví dụ, chương trình nhỏ để bạn luyện cách viết code cũng như tư duy. Còn nhiều trang khác gợi ý những đề bài, dự án nhỏ với cả đáp án mẫu cho chúng ta lắm, google là ra thôi.
Bên cạnh những trang trên thì tớ hay tận dụng 10-15 phút mỗi ngày để học thêm trên app điện thoại SoloLearn. Tớ học toàn bộ lý thuyết python trên bản miễn phí này, và thi thoảng vào đấu challenges cho vui, vừa để khỏi quên kiến thức.

2. Vượt chướng ngại vật và tăng tốc:

Đây chắc là lúc bạn thấy ngán, vì nhiều thứ phải học quá và nhìn lên đỉnh núi thấy cao vời vợi. Bạn thấy mình cứ quên trước quên sau, thậm chí lẫn lộn nếu như học vài ngôn ngữ một lúc và lúng túng khi gặp vấn đề mới. Không sao đâu, đây là chuyện bình thường. Cũng giống như khi học ngoại ngữ, bạn không cần biết hết mọi từ vựng để có thể sử dụng được, mà cần tới đâu thì dùng tới đấy. Đây là lúc bạn nên chọn một hướng để học lên advanced. Nếu như công việc đòi hỏi bạn làm gì thì bạn đi theo hướng đó. Như tớ chẳng hạn, phần lớn thời gian tớ viết data pipeline, data modelling với pyspark, khi cần giải quyết vấn đề gì mới trong pipelining thì tớ google và gần như lúc nào cũng tìm thấy đáp án trên các diễn đàn như https://stackoverflow.com/. tớ hay đọc cách mọi người giải quyết vấn đề trên này, theo nhiều hướng khác nhau và quay trở lại đọc thêm trong documentation cũng như các ví dụ khác để học cách sử dụng một cách linh hoạt. Lại phải nói thêm là không phải lúc nào documentation cũng dễ hiểu, bạn nhất định phải nắm chắc các khái niệm cơ bản ở bước 1 để đọc hiểu documentation của ngôn ngữ hay từng package dễ dàng hơn.
Sau này, công việc đòi hỏi tớ phải thiết kế web app, vì vậy tớ tự đọc sách thêm về html, css và javascript. Vốn html và css không phải ngôn ngữ lập trình nên nó lại đòi hỏi kiểu tư duy khác. Tớ hay đọc sách, bạn thích thì có thể coi tutorials trên youtube. Khi nắm được khái niệm mấu chốt rồi thì tớ cứ dựa vào documentation mà làm thôi.

3. Về đích:

chắc chẳng có lúc nào được gọi là về đích cả. Học ngôn ngữ nào cũng thế, học cho chắc, cho thành thạo một ngôn ngữ còn hơn là biết mỗi thứ một tí mà chẳng có tư duy giải quyết vấn đề gì cả. Hồi mới học java trên trường thì thầy dạy cả các khái niệm về object-oriented, rồi lên luôn advanced mà không để ý gì tới bọn beginner như tớ. Khi đó tớ thấy khá là chơi vơi vì đọc phần giải thích trừu tượng mấy lần vẫn chả hiểu gì. Mãi tới khi tớ lấy hết sức can đảm thú thật với thầy rẳng em chẳng hiểu gì hết thì thầy mới tổ chức thêm lớp phụ đạo Java for dummies ngoài giờ. Ấy là lần đầu tiên tớ được chứng kiến tận mắt tư duy lập trình là như thế nào. Thầy ra đề bài viết trò chơi Tic Tac Toe (giống kiểu chơi cờ ca-rô). Sau đó, thầy bắt đầu đặt các câu hỏi nhỏ để bọn tớ phát triển ý tưởng: lấy gì làm bàn cờ, làm sao biết được ai đánh dấu ở đâu, các đối thủ luân phiên chơi như thế nào, trò chơi kết thúc khi nào, và xắn tay áo lên viết từng class mẫu cho bọn tớ. Lúc đó tớ mới hiểu ra sức mạnh của object-orientation và về nhà viết một mạch hết trò chơi ấy. Đến hôm thứ ba, tớ đã có thể tự viết code cho một trò chơi khác (Connect Four) và thầy rất hào hứng bảo tớ phải gửi package đấy lên diễn đàn của lớp (nhưng chắc chả ma nào thèm xem). Đến đây, tớ chỉ muốn nói rằng, dù không có cái đích nào nhưng chúng ta tạm có thể coi như đã về đích khi ta hiểu được những khái niệm trụ cột của một ngôn ngữ, hình thành được tư duy coding, phản xạ khi đối diện với những đề bài cơ bản, và có thể tự học lên mức advanced bằng cách đọc hiểu documentation cũng như các ví dụ cụ thể. À, một lần sếp trên cơ quan gọi pizza về rồi cả nhóm bọn tớ mỗi đứa cầm một miếng bánh pizza ngồi châu đầu bên máy tính của sếp cùng debug, ấy là lúc tớ cảm thấy mình trở thành dân geek thực sự rồi đấy!
Tóm lại, tớ thấy học ngôn ngữ lập trình cũng như học ngoại ngữ ấy, phải sử dụng thì mới ngấm, mới khiến nó thành của mình được, còn cứ ngồi ngâm cứu mấy chương sách, hay bao nhiêu tutorials mà không tự viết chương trình nào, không đâm đầu vào bao nhiêu bugs rồi hí hoáy debug thì khó ngấm vào người lắm. Thôi, bạn còn chờ gì nữa mà không xắn tay áo nhảy vào luôn đi. Have fun coding!
Bài viết gốc được đăng tải tại Blog Mai knows
Có thể bạn quan tâm:

Dịch vụ thị trường thanh toán điện tử Landscape 2020

thị trường thanh toán điện tử landscape 2020

Thị trường thanh toán điện tử được giới chuyên gia đánh giá là có sự tăng trưởng khá tốt trong năm nay. Trong báo cáo thị trường thanh toán điện tử Landscape 2020 đã đưa ra rất nhiều thông số đáng tin cậy về sự tăng trưởng này. Vì sao thị trường thanh toán điện tử lại có xu hướng tăng trưởng dù dịch bệnh vẫn chưa hoàn toàn rút khỏi Việt Nam?

Tổng quan về báo cáo thị trường thanh toán điện tử 2020

Trong hơn 6 tháng đầu năm 2020, mặc dù Việt Nam cũng là một trong những nước bị ảnh hưởng bởi đại dịch thế kỷ – Covid19 thế nhưng dường như những ngành nghề liên quan đến công nghệ lại không chịu quá nhiều ảnh hưởng tiêu cực nhiều như những ngành khác. Điển hình như thị trường thanh toán điện tử vẫn luôn “tấp nập” bất chấp dịch bệnh.

Theo báo cáo thị trường thanh toán điện tử Landscape 2020, trong riêng năm 2020, các giao dịch qua Internet, điện thoại di động tăng trưởng đến 238% (số liệu được trích từ báo cáo của Cục Thương mại điện tử và Kinh tế số – Bộ Công Thương).

Trong bài báo cáo còn cho thấy mức độ phát triển mạnh mẽ của những ứng dụng thanh toán điện tử mới và lâu đời với hơn 78 tổ chức, công ty cung ứng dịch vụ thanh toán qua Internet và 45 tổ chức cung ứng dịch vụ thanh toán qua điện thoại di động (mobile payment).

thị trường thanh toán điện tử 2020

Tổng quan về Thị trường thanh toán điện tử

Thanh toán điện tử đang là xu hướng phát triển mua sắm hiện nay trên toàn thế giới và cả Việt Nam, phương thức thanh toán này được coi như là phương thức sẽ thay thế hình thức thanh toán truyền thống bằng tiền mặt như trước kia. 

Trong báo cáo chi tiết của Bộ Công Thương trong những năm trở lại đây, những người tiêu dùng có thói quen mua sắm trong các siêu thị, trung tâm thương mại có xu hướng chuyển đổi từ việc thanh toán truyền thống thành thanh toán điện tử. Ngành thương mại điện tử phát triển, đồng nghĩa với việc kéo theo sự phát triển của thanh toán điện tử vì hàng hóa, sản phẩm được mua trên các sàn điện tử 90% được thanh toán online thông qua thẻ ngân hàng.

Trong 90 triệu người Việt Nam, số người sử dụng internet chiếm 49%, số người sử dụng internet thông qua thiết bị điện thoại chiếm 34%, chính vì thế Việt Nam được xem như là 1 thị trường béo bở để phát triển thương mại điện tử cũng như thanh toán điện tử. 

Lợi ích của việc thanh toán điện tử là hoàn toàn không thể chối bỏ, chính vì thế nó mới có thể phát triển mạnh mẽ và tăng trưởng vượt bậc đến như vậy. Cụ thể doanh thu từ thị trường thanh toán điện tử 2020 đã tăng trưởng 14.2% so với cùng kỳ năm ngoái, doanh thu đạt được là 8,904 triệu USD. Lượng người dùng cũng đã tăng trưởng lên đến 36,2 triệu, tăng 12.1% so với năm ngoái.

thị trường thanh toán điện tử 2020

Bắt đầu từ thời điểm các ngân hàng triển khai kế hoạch phát hành thẻ ngân hàng, thì cho đến nay, người dùng thẻ ngân hàng thanh toán cũng đã đạt đến con số tăng trưởng khá kinh ngạc. Có thể nói, xu hướng thanh toán điện tử đã làm thay đổi thói quen tiêu dùng của người Việt Nam. Hiện nay, có các loại hình thanh toán điện tử sau:

Thanh toán bằng Thẻ ngân hàng

Đây là hình thức thanh toán điện tử đầu tiên và đặc trưng nhất trong thị trường thanh toán điện tử. Tỷ lệ thanh toán bằng hình thức này lên đến 90% trong tổng tỷ lệ thanh toán điện tử. Với phương thức thanh toán bằng thẻ này, người dùng có thể dễ dàng thanh toán bằng cách cà thẻ tại chỗ hoặc thanh toán online thông qua thẻ khi mua hàng trên các sàn TMĐT.

Thanh toán bằng Cổng thanh toán

Hình thức thanh toán này phần lớn thường xuất hiện ở các trang TMĐT, hình thức hoạt động của thanh toán này rất đơn giản, nó giúp chuyển tiền từ tài khoản người mua thành 1 đơn vị tiền ảo trên Internet nhưng không thay đổi thuộc tính và giá trị tiền. Vì thế người mua hàng vẫn có thể sử dụng tiền đó để mua sắm bình thường.

Để có thể sử dụng hình thức thanh toán này, người tiêu dùng cần phải tạo 1 account, trong đó được điền đầy đủ thông tin đã được xác thực. Điểm mạnh của hình thức thanh toán điện tử này là tính chất bảo mật cao, một số cổng thanh toán nổi tiếng hiện nay như: payoo, vnpay, vtcpay, kaokim.vn… đều có tính bảo mật cao và có lượng người dùng lớn.

thị trường thanh toán điện tử landscape2020Thanh toán bằng Ví điện tử

Đây là hình thức thanh toán khá tiện dụng và rất phổ biến trong giới trẻ ngày ngay. Ví điện tử không chỉ được sử dụng trong các trung tâm thương mại lớn, sàn giao dịch điện tử mà còn sử dụng được đối với bất gì nhà hàng, quán ăn/ nước uống, shop đồ bất kỳ nào có ký hợp đồng liên kết với ví điện tử. Điều kiện kiên quyết khi muốn sử dụng ví điện tử là bạn phải có thẻ ngân hàng có liên kết với ví điện tử.

Với hình thức thanh toán bằng ví điện tử như thế này, người tiêu dùng có thể dễ dàng thanh toán bằng cách quét mã QR của shop và nhập đúng số tiền cần thanh toán là có thể hoàn tất việc mua hàng/ sản phẩm. Những ví điện tử nổi tiếng hiện nay gồm: Momo, Smartpay, Payoo, Airpay….

Thanh toán bằng Smartphone

Đây là hình thức thanh toán bằng phương thức chuyển khoản từ tài khoản ngân hàng này qua tài khoản ngân hàng khác bằng điện thoại di động. Nói đơn giản nghĩa là bạn dùng Mobile Banking/ App của ngân hàng để chuyển khoản hoặc quẹt mã khi thanh toán.

Không phổ biến như ví điện tử, các nhà hàng thường ít liên kết thẳng với ngân hàng mà thường thông qua các loại Ví điện tử hơn. Chính vì thế, người dùng chủ yếu dùng Smartphone để thanh toán chuyển khoản là đa số.

Thị trường thanh toán điện tử lên ngôi 

thị trường thanh toán điện tử landscape 2020

Với số liệu tăng trưởng từng năm theo báo cáo thị trường thanh toán điện tử landscape 2020, thì trong tương lai không xa chắc hẳn loại hình thanh toán không tiền mặt sẽ lên ngôi. Trong 1 bài phỏng vấn, ông Vương Đình Huệ, phó thủ tướng Việt Nam cũng đã nêu lên ý kiến ủng hộ hình thức thanh toán không tiền mặt.

Ông chia sẻ “Lợi ích của thanh toán không tiền mặt đã quá rõ, giảm chi phí và đem lại nhiều tiện ích cho người dân, doanh nghiệp. Đến giờ mà người dân phải đi xa, xếp hàng chờ nộp học phí cho con thì rõ ràng là quá bất tiện”. Theo ông, việc thanh toán điện tử có thể làm nguồn tiền tiêu thụ trở nên minh bạch, chống được việc tham nhũng hay rửa tiền hoặc các vụ án về kinh tế.

Vào năm 2010, ngài Garadahew Warku đã từng đề cập và đưa ra một số đặc điểm về lợi ích của việc thanh toán điện tử như:

  • Tình độc lập
  • Tính bảo mật cao
  • Dễ sử dụng
  • Thuận tiện
  • Dễ dàng truy xuất và kiểm soát
  • Chi phí giao dịch rẻ

Ngoài ra, hình thức thức thanh toán điện tử này cũng mang đến nhiều lợi ích cho những người chủ, bán hàng Online vì giúp họ tiết kiệm chi phí thuê mặt bằng, nhân viên cửa hàng, người mua hàng và người bán hàng thậm chí còn không cần phải gặp mặt nhau nhưng vẫn có thể xuất hiện giao dịch hàng hóa.

Có thể nói, thanh toán điện tử là hình thức thanh toán khá tiện lợi và thuận tiện, người tiêu dùng/ mua sắm chỉ cần cung cấp chính xác thông tin tài khoản thanh toán ngân hàng, đia chỉ giao hàng và sản phẩm cần mua là đã có thể mua hàng một cách nhanh gọn lẹ, không làm mất quá nhiều thời gian của người mua hàng như cách truyền thống. Khó mà có thể phủ nhận 1 phần công lao làm kích thích tiêu dùng của người mua sắm nhờ thanh toán điện tử.

thị trường thanh toán điện tử landscape 2020

Với sự ủng hộ từ Chính phủ, hình thức thanh toán điện tử tại Việt Nam hiện nay đang có những chuyển đổi theo chiều hướng tích cực hơn. Trong khoảng thời gian từ 2018 đến thời điểm hiện tại, Momo là một trong những ví điện tử đứng đầu về số lượng người dùng, hợp tác với hơn 100.000 đối tác đa ngành nghề và đã có hơn 100.000 địa điểm có thể thanh toán bằng Momo.

  10 xu hướng ứng dụng di động dự đoán sẽ thống trị năm 2024
  Báo Cáo Thị Trường IT Việt Nam Năm 2021: Chuyển Mình Vào Cuộc Cạnh Tranh Tri Thức Toàn Cầu

Sự hạn chế của hình thức thanh toán điện tử

Dường như thời kỳ hoàng kim của thanh toán điện tử đã lên ngôi cũng kéo theo thị trường thẻ tín dụng Việt Nam phát triển. Tuy số liệu trong báo cáo thị trường thanh toán điện tử Landscape 2020 tăng trưởng là thế nhưng hiện nay tiền mặt vẫn là loại hình được người Việt Nam ưa chuộng nhất.

Chiếm đến 80% tỷ lệ giao dịch, điều này đồng nghĩa đến việc dù đã có sự tăng trưởng vượt bậc nhưng thị trường thanh toán điện tử cũng chỉ chiếm có 20% tỷ lệ giao dịch trên toàn Việt Nam.

Ngân hàng Nhà nước vừa đưa ra thông tin trong năm 2020 đó là hiện nay số người sử dụng thẻ ngân hàng chỉ chiếm có 30% dân số Việt Nam, 70% dân số còn lại sử dụng tiền mặt làm công cụ lưu thông mua hàng chính. Đa số 70% lượng người không sử dụng thẻ ngân hàng tập trung ở các vùng xa thành thị như thôn quê, vùng sâu hẻo lánh chưa được cập nhật kiến thức về sử dụng các sản phẩm hiện đại.

Cốt lõi của việc thanh toán bằng hình thức điện tử là bắt buộc phải có tài khoản ngân hàng, đây cũng chính là một trong những khó khăn lớn nhất trong việc phát triển phương thức thanh toán điện tử. 

Ngoài ra, còn một vấn đề nữa cũng làm ảnh hưởng không nhỏ đến tình hình phát triển thanh toán điện tử, đó là trong 30% người sử dụng thẻ còn lại chưa hẳn đã thanh toán điện tử. Họ có xu hướng sử dụng thẻ ngân hàng chỉ để đặt hàng online sau đó lại chọn phương thức thanh toán bằng tiền mặt.

Như vậy, để giải quyết được bài toán tăng trưởng thị trường thanh toán điện tử, các ngân hàng, công ty, doanh nghiệp kinh doanh ví điện tử nên cập nhật thêm nhiều ứng dụng tiện lợi hơn và đơn giản hóa cách sử dụng để có thể kích thích người tiêu dùng chuyển sang sử dụng.

Tổng kết thị trường thanh toán điện tử 2020

Với sự ủng hộ từ phía nhà nước cùng với sự tăng trưởng vượt bậc như hiện nay, thì có lẽ trong tương lai hình thức thanh toán điện tử sẽ lên ngôi làm thay đổi thói quen người tiêu dùng. Theo báo cáo của Vietnam IT Landscape 2020 cho thấy thị trường thanh toán điện tử 2020 có sự phát triển gia tăng đáng kể dù dịch bệnh vẫn còn, vì người tiêu dùng vẫn luôn có nhu cầu mua sắm.

Trong thời điểm như thế này, cơ hội phát triển thị trường thanh toán điện tử sẽ mạnh mẽ hơn bao giờ hết vì xu hướng mua sắm sẽ chuyển sang mua online và thanh toán điện tử trong mùa dịch này. Chính vì thế, các số liệu trong báo cáo Vietnam IT Landscape 2020 đã thể hiện sự tăng trưởng từ năm này sang năm khác là hoàn toàn hợp lý.

Các bạn có thể truy cập vào báo cáo Vietnam IT Landscape 2020 hoặc nhấn nút xem báo cáo dưới đây để có thể tìm hiểu thêm các thông số báo cáo không chỉ của riêng thị trường thanh toán điện tử 2020 mà còn nhiều ngành liên quan đến công nghệ khác nữa!

Nguồn tổng hợp từ TopDev

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

Xem thêm việc làm IT hấp dẫn từ TopDev!

Business Intelligence (BI) là gì? Trò chuyện cùng chuyên gia Trường Phan để hiểu hơn về vai trò của BI trong hệ thống

Business Intelligence (BI) là gì

Business Intelligence – BI là gì? Để hiểu đơn giản, BI (hay còn được gọi là trí tuệ doanh nghiệp) là một dạng công nghệ giúp doanh nghiệp hiểu biết về quá khứ, qua đó đưa ra quyết định, hành động và dự đoán tương lai. Trong đó BI bao gồm các kỹ năng, quy trình, công nghệ hay ứng dụng để hỗ trợ ra quyết định. BI là các hoạt động kết hợp giữa phân tích kinh doanh, khai thác dữ liệu, trực quan hóa dữ liệu, công cụ dữ liệu và cơ sở hạ tầng và thực tiễn để giúp tổ chức ra các quyết định-dựa trên data (data-driven decision).

Trong mục chuyên gia nói kỳ này, cùng TopDev trò chuyện với một chuyên gia về Business Intelligence – anh Phan Nguyễn Minh Trường – Technical Architect tại NashTech để hiểu hơn về cách mà nó hoạt động, cũng như những bài học kinh nghiệm rút ra trong quá trình áp dụng và triển khai.

Tuyển dụng business intelligence lương cao cho bạn

Đôi nét về khách mời Phan Nguyễn Minh Trường

  • Khởi đầu sự nghiệp với nghề web designer tại Saigon Postel
  • Chuyển hướng sang data analysis trong lĩnh vực ngân hàng
  • Trải qua các vị trí developer, anh Trường hiện là Technical Architect tại NashTech.

Phần 1: Chia sẻ về quan điểm “gắn bó với công ty hay nhảy việc tìm cơ hội mới”

Vì sao anh lựa chọn gắn bó trong thời gian khá dài tại các công ty ấy? Và quan điểm của anh về “xu hướng nhảy việc” ở người trẻ như thế nào?

Thật ra mình lười đi tìm việc mới, lười tìm công ty khác. Với lại thực ra lúc đầu mình cũng hạnh phúc với công việc hiện tại, trừ phi có một số lý do nào đó thì mình thay đổi thôi. Xu hướng hiện tại các bạn thường thay đổi công việc chắc đâu đó có một vài lý do chính, ví dụ như là họ không hợp với môi trường, hoặc là họ cần có mức sống cao hơn, có một số bạn cần phải hỗ trợ gia đình. Nhưng có một số bạn thì thấy là mình không phát triển được nữa, có đâu đó mình đọc mình thấy là nếu mình là người giỏi nhất trong công ty đó thì mình nên đi, tại vì giỏi thì mình nên đi để trau dồi và thử thách bản thân mình hơn. Cái sau cùng có một lý do hơi kỳ lạ đó là thích, một số bạn thích chuyển việc thôi, họ nghiện chuyển việc, họ làm 1, 2 năm rồi họ chuyển công việc khác.

Business Intelligence là gì

Khi mà anh làm việc ở ACB thì động lực nào khiến anh ở lâu như vậy?

Hồi xưa mình làm việc với sếp ở ACB, mình thấy hạnh phúc lắm, mình thấy rất thích phong cách của sếp quản lý tại thời điểm đó. Sếp luôn giúp đỡ mọi người và luôn nâng cấp nghề nghiệp của mình, đó là lý do chính mà mình gắn bó lâu dài với ACB

Khi nào một coder mới đủ độ “chín” để phát triển một tầm cao mới?

Mình nghĩ lý do quan trọng nhất đó là thuyết phục, làm sao để thuyết phục được người khác nói điều mình đang nói, cái đó là quan trọng nhất. Bạn coder đó cần phải có kỹ năng về quản lý người, kỹ năng về trình bày một số vấn đề để người khác hiểu được, kỹ năng thuyết phục khách hàng, thì lúc đó là thời điểm chín muồi để bạn có thể chuyển sang một title mới. Mình nghĩ là trước khi thành một leader thì mình phải biết sharing, nghĩa là mình cần chia sẻ kiến thức mình đang có, sau đó mình học lại từ các bạn khác, kể cả những bạn yếu hơn, bạn sẽ hỏi mình một số câu hỏi rất ngớ ngẩn nhưng mà mình suy nghĩ lại, mình tìm kiếm và trả lời cho bạn một cách hợp lý nhất. Từ đó mình sẽ nâng kiến thức của mình lên, nhiều khi mình làm việc với khách hàng, khách hàng cũng hỏi ngớ ngẩn như vậy, nhưng mình biết cách mình trả lời thì từ từ mình nâng cấp mình lên.

Phần 2: Chia sẻ về Business Intelligence – BI là gì?

Định nghĩa của anh thì Business Intelligence – BI là gì? BI giúp gì cho doanh nghiệp và nó sẽ giúp như thế nào (cách hoạt động)?

Business Intelligence là gì

Về mặt học thuật thì có rất nhiều định nghĩa về BI, có những định nghĩa gần đây nói rằng BI là một skill, rồi ngoài ra là application, rồi information, rồi technology, hoặc là những định nghĩa trước đó thì nói là sẽ lấy tổng hợp dữ liệu có sẵn rồi sau đó đưa ra hỗ trợ quyết định.

Nhưng mà mình nghĩ thực tế nhất, để hiểu BI là gì cũng giống như là hồ sơ giúp mình quản lý sức khỏe, nó lưu thông tin lại để mình kiểm tra sức khỏe định kỳ, rồi sau đó mình sẽ biết được sức khỏe trong tương lai mình sẽ bị bệnh gì, và sức khỏe mình sẽ yếu ở đâu và nó sẽ báo được cái đó và mình nghĩ cái đó là đơn giản nhất. Đa phần BI giúp monitor doanh nghiệp, bên cạnh đó còn hỗ trợ ra quyết định.

BI phù hợp với những doanh nghiệp thế nào và SMEs có cần phải có một hệ thống BI? Nếu không có thì họ sẽ bỏ lỡ những gì?

Tùy doanh nghiệp có kích thước, kích cỡ khác nhau thì mình có thể áp dụng BI có cồng kềnh hay không cồng kềnh hoặc là nó hoành tráng hay không hoành tráng. Đại loại là mình hình dung hồi xưa sức khỏe của một đứa trẻ sơ sinh, sinh ra cũng cần phải có hồ sơ sức khỏe rồi, khi mình lớn mình cũng cần, khi mình già mình cũng cần, nhưng nếu mình không theo dõi sức khỏe thường xuyên, đùng một phát minh bị bệnh ngã ra thì mình sẽ bị bệnh nặng hơn, lúc đó trở tay không kịp. Nếu mình theo dõi sức khỏe định kỳ, làm tốt chuyện đó thì sẽ phát triển tốt hơn và nắm được sức khỏe của doanh nghiệp.

Ý nghĩa của BI trong banking là gì?

Trong banking có rất nhiều bộ phận khác nhau, mà chính vì nhiều bộ phận tài chính khác nhau mà họ đều có khả năng tự làm tài chính báo cáo được, nó sẽ gây ra chuyện là một báo cáo lên thì mỗi bộ phận báo cáo một con số khác nhau, người quản trị ở trên nhìn vào sẽ thấy sao anh này báo cáo một số, anh kia báo cáo một số.

Quay lại câu chuyện của BI khoảng năm 2007 trở về trước, lúc mà tờ báo của Việt Nam mình ra thì có hình BI được mô tả là thầy bói sờ voi, có nghĩa là mỗi người sờ một chỗ và nói là BI như vậy thì đó là lý do chính tại sao cần phải có hệ thống dữ liệu tập trung và mình sẽ dùng BI đó báo cáo xuyên suốt, thuật ngữ hay dùng là one-cross, nghĩa là một sự thật duy nhất thôi, do có nhiều bộ phận báo cáo quá thì sếp không biết số nào là số đúng, bên nào cũng muốn lấy phần có lợi về mình cho nên không phần nào chịu thiệt

Xem thêm BI là gì? Vì sao có nhiều doanh nghiệp đầu tư vào BI?

Quá trình để đi từ raw data đến khi chúng trở thành những thông tin có giá trị để có thể ra quyết định cần qua những giai đoạn nào, “qua tay” những ai?

Để có thể làm phần phân tích dữ liệu có giá trị thì tất nhiên phải có nhiều yếu tố, nhiều con người cùng hợp sức để làm. Đầu tiên mình cần phải biết business need đó là gì, sau đó mình sẽ xác định được nguồn dữ liệu, ví dụ như nãy business need cần phải có BI hỗ trợ cùng, rồi sau đó lấy dữ liệu về thì cần có data engineer, sau khi có cái đó rồi mình mới làm giàu dữ liệu lên, mình làm sạch dữ liệu, mình visualize data lên, sau đó mình mới dùng, người mà involve vào là data analyst, sau đó thì họ báo cáo. Chìa khóa quan trọng ở đây là cái tốn thời gian nhiều nhất là quá trình xử lý dữ liệu nhưng mọi người sẽ nhìn vào chìa khóa chính là visualization thôi, đó là phần data analyst làm

Phần 3: Những lời khuyên khi áp dụng và triển khai BI

Những lưu ý gì khi một doanh nghiệp áp dụng, sử dụng hệ thống BI?

Các doanh nghiệp khi xác định hệ thống BI họ cần phải xác định là cái số lượng người dùng trước đã, rồi cái lượng báo cáo của họ, tần suất báo cáo như thế nào và đặc biệt quan trọng nhất là họ phải xác định, hồi nãy mình có mô tả về quá trình xử lý dữ liệu thì business mới là cái quan trọng nhất, họ cần phải xác định cái business trước tiên, họ cần define những loại báo cáo nào họ sẽ điền vô để quản lý, giống như chỉ số sức khỏe của mình vậy đó, mình đi khám huyết áp thì cần có chỉ số về đường huyết, về máu mình phải đi kèm theo.

Cần chuẩn bị kỹ năng gì khi theo đuổi BI?

Để làm BI thì phần về kỹ thuật nặng hơn phần business nhưng mà giá trị phần business, cho nên các bạn bên Công nghệ thông tin sẽ có lợi thế hơn về cái phần kỹ thuật nắm khá vững, mình phải tìm hiểu thêm 1 số business mình cần nữa, thì lúc đó mình làm việc trực tiếp với BI thôi mình có thể cover được chuyện đó.

Anh có thể gợi ý nguồn học tập Business cho Devs?

Mình nghĩ chắc qua Đại học Kinh tế học đi, hoặc là Đại học Kinh tế luật cũng có khóa chuyên về dữ liệu mới mở.

Case Study đáng nhớ nhất trong quá trình làm việc của anh là gì?

Lúc đó là năm 2011, lúc đó mình mới lấy vợ thôi như sếp mua công cụ Cognos BI của IBM , công cụ đó là chưa có ngân hàng nào ở Việt Nam sử dụng hết mà sếp kêu là làm trong vòng mấy tháng cuối năm thôi, mới lấy vợ không được đi đâu hết. Phải vô công ty làm từ sáng tới tối, làm sao tới 5h sáng mình dậy rồi về nhà tắm rửa quay lại công ty làm trong vòng có vài tháng thôi mà Cognos BI của IBM không có bất kỳ tài liệu nào để tham khảo, lúc đó là mình tự research, team thì chỉ có 3 người và 1 số bạn làm ITL với BI là riêng. Phần đó khiến mình nhớ nhất luôn, nhưng có giận cũng phải chấp nhận thôi.

Phần 4: Lời khuyên qua các trải nghiệm thực tế

Anh có lời khuyên nào dành cho các bạn junior mới làm về data không?

Mình cũng làm chung với các bạn senior hay các bạn làm lâu 1 chút xíu, nhưng các bạn học thiên về xu hướng hiện đại mà quên phần kiến thức căn bản, rồi các bạn học R, học Python nhưng bạn không học cơ sở dữ liệu cơ bản, bạn không học làm cách nào để tổ chức dữ liệu cho hợp lý và mình khai thác nó tối ưu ví dụ như cách mình bố trí file, cách mình bố trí những bảng biểu ra sao, mình bỏ quên cái đó luôn.

Business Intelligence là gì

Mình cứ hình dung là mình đang có nguyên 1 cái tòa nhà, các bạn muốn làm gì làm nhưng mà mình không có quy hoạch kiến trúc tòa nhà đó chỗ nào sẽ chứa dữ liệu này hay dữ liệu nào, thì cuối cùng nguyên tòa nhà đó mỗi phần bạn làm ra rất là đẹp đẽ, nhưng cuối cùng tới chừng làm tự động hóa lại không được, hoặc scalable nó rất là khó.

Về doanh nghiệp thì anh có lời khuyên nào không?

Doanh nghiệp thì mình không dám nói nhưng mình chỉ nói người dùng thôi, người dùng thường so sánh BI với Excel. Excel chính xác là công cụ làm report rất mạnh, không thể từ chối điểm đó luôn, nhưng mà sẽ liên quan tới chuyện security thì Excel rất khó để quản lý cái đó. Họ có thể đem cái file đi bất kỳ đâu cũng được, 1 số doanh nghiệp cứ dùng Excel thì về sau cái phần linked in data thì mình sẽ khó kiểm soát hơn, hoặc là nó sẽ tập trung vào 1 số người. 

Mình có 1 số người quen làm trong lĩnh vực ngân hàng và bố trí excel mà như chạy đua vũ trang vậy, họ làm 1 cái file excel rất là bự, hoặc họ sử dụng máy 16GB không được họ dùng máy 32GB rồi tới 64GB, máy laptop cá nhân, mà trong khi những cái trường hợp đó mình chỉ lưu trữ trong database là có thể hoàn toàn query được hết data đó ra, mình không cần phải bố trí 1 file excel rất bự và tốn thời gian như vậy.

Khi thiết kế Dashboard nên lựa chọn những nguồn tham khảo nào? Anh hay gặp những vấn đề gì khi thiết kế Dashboard?

Đầu tiên là về UI, khi mà thiết kế Dashboard đưa cho người sử dụng người ta lúc nào cũng nói là phải đẹp trước đã, chứ không quan tâm tới phần thông tin mình cung cấp cho họ và đặc biệt là dân kỹ thuật mình làm thiết kế luôn xấu. Tức là các bạn kỹ thuật thiết kế màu sắc bạn không quan tâm tới, ý nghĩa của chart họ cũng không quan tâm tới, thì đó chính là điểm yếu của các bạn kỹ thuật, thiếu phần nghiên cứu về các màu sắc.

Xem thêm UX là gì? UX Designer thì làm những gì?

Cái phần thứ 2 là business user có quá nhiều điều muốn nói trên một dashboard. Mình có làm tư vấn cho 1 công ty bảo hiểm, họ có rất nhiều thông tin muốn đưa lên đầy đủ nhưng mà trên cái dashboard là 1 màn hình để cho người ta nhìn nhanh thì đâu thể cung cấp đủ hết thông tin. Lúc này mình có khoảng 20 câu hỏi, mình sẽ hỏi là user nào sử dụng, tần suất sử dụng ra sao, kích thước màn hình ra sao, thông tin nào quan trọng nhất, thông tin nào đi kèm theo đó. Lúc đầu có 20 mấy thông tin, đánh số thứ tự 1-2-3-4… sau đó mình lựa chọn thông tin để đưa lên màn hình này thì chọn cái nào, và những thông tin liên quan sẽ nhảy qua 1 trang kế tiếp. Mình có nguyên cái luồng gọi là navigation để cho người ta có tư duy đi phân tích, chứ không phải nguyên cái màn hình nhìn tất cả, rất là khó. Do não người nhìn vào cái dashboard không thể nào nhớ hết được tất cả các chỉ số. Thông tin đó mình đọc và idol trong cái quyển sách của ông Stephen Few – Dashboard Design hoặc Show Me the Numbers, các bạn có thể tìm trên Amazon.

Xin cảm ơn những chia sẻ của anh Phan Nguyễn Minh Trường, hy vọng bài viết này đã cung cấp những định nghĩa BI là gì một cách đơn giản và sát với thực tế nhất. Các bạn mong chờ những chia sẻ về những thuật ngữ công nghê nào ở các số sắp tới, hãy cho TopDev biết nhé!

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

HR & IT – “Cuộc chơi” đầy hoàn hảo cho việc thu hút và giữ chân nhân tài

HR & IT

Trong ngành Nhân sự, việc thu hút và giữ chân nhân tài là quan tâm hàng đầu đối với các nhà tuyển dụng. Để tối ưu hóa mục tiêu tuyển dụng, nhiều doanh nghiệp đã phối hợp chặt chẽ giữa yếu tố về không gian và trên hết chính là sự hợp tác giữa nhân sự (HR)công nghệ (IT).

Không ai nghĩ rằng sự hợp tác ấy lại tạo ra một lực lượng mạnh mẽ như vậy. Việc kết hợp ngẫu nhiên nhưng nhìn dưới góc độ của bối cảnh thời đại, HR & IT như một thỏi nam châm xích lại gần nhau, từ đó tạo ra một đội ngũ lãnh đạo vững mạnh với những sáng kiến, hành động và các chiến lược nhân sự cụ thể nhất.

HR & IT: Mỗi yếu tố – Mỗi vai trò

Yếu tố về không gian

Trên hết, nhận thức và nắm bắt chính xác về thị trường nhân sự để có thể thiết lập một chiến lược thu hút, giữ chân và phát triển nhân tài là một điều không hề đơn giản. Đó không chỉ đơn thuần là câu chuyện về việc lên kế hoạch tuyển dụng, tạo ra các gói và lợi ích cạnh tranh từ phúc lợi,… mà còn là về các chương trình đào tạo song song, hướng dẫn và bổ trợ kiến thức giúp tạo động lực và duy trì tính ổn định về sự đồng hành của các nhân viên hiện tại.

HR & IT

Nếu nói đến một sự hợp tác hoàn hảo trong “cuộc chơi” về tuyển dụng nhân sự, ngoài HR và IT, chúng ta cần xem xét đến yếu tố không gian chi phối đến sự kết hợp đó. Yếu tố không gian được xem là phương tiện để tối ưu hóa danh mục đầu tư vào kế hoạch bất động sản của doanh nghiệp. Điều này hiểu đơn giản là việc phân bổ các trang thiết bị, cải thiện và nâng cao thiết kế không gian làm việc. Chính những điều này cũng góp phần tạo nên cái gọi là môi trường văn hóa doanh nghiệp – một yếu tố quan trọng được nhân viên cân nhắc xem xét trước khi bắt đầu lựa chọn đồng hành lâu dài.

HR – Yếu tố nền tảng tạo ra các lõi nhu cầu

Mỗi thành phần đều có những đặc trưng riêng biệt. HR cũng không ngoại lệ. Chính cái tên HR đã cho thấy một bản mô tả chi tiết về những công việc cần làm, nên làm và sẽ làm. HR là yếu tố cơ sở tạo ra các lõi giá trị cần xem xét như tiêu chí về việc xây dựng nguồn lực nhân sự tiềm năng, đào tạo và phát triển con người, thiết lập và mở rộng nguồn tuyển chọn nhân sự,… Và tất nhiên việc thu hút và giữ chân nhân tài là hai yếu tố nhỏ chịu ảnh hưởng từ việc đào tạo và phát triển con người trong ngành nhân sự.

IT – Yếu tố về công nghệ, người “cộng sự” tuyệt vời

HR & IT

Nhóm công nghệ thông tin thường tập trung vào việc làm thế nào để đảm bảo nhân viên được làm việc trong một môi trường đầy đủ các thiết bị, phần mềm từ chuyên môn cho đến hỗ trợ. Đồng thời, công nghệ chính là yếu tố dẫn dắt con người xử lý các yêu cầu bảo trì, khắc phục các sự cố và đảm bảo rằng công nghệ của công ty đang được vận hành một cách hiệu quả.

Mối quan hệ giữa các yếu tố

Sự đan xen và kết hợp

Đây là điều mà các nhà tuyển dụng nhân sự đang tiến hành thực hiện. Mặc dù mỗi bộ phận có chức năng và chuyên môn riêng, nhưng họ liên tục hỗ trợ nhau để làm thế nào tuyển dụng được một nguồn lực nhân sự hiệu quả.

Nếu yếu tố văn hóa cho phép tạo ra một không gian làm việc giúp nâng cao giá trị văn hóa công ty theo chiều hướng tích cực thì sự kết hợp giữa HR và IT chịu trách nhiệm cung cấp cái nhìn sâu sắc giúp nhân viên định hình về những gì họ cần phải làm.

Ví dụ, yếu tố không gian quyết định việc nhận viên đồng ý lựa chọn đồng hành cùng công ty. Lúc này, sự kết hợp giữa Nhân sự và IT cho phép họ nhận thấy rõ hơn điều gì mình cần làm. IT giúp hỗ trợ các đầu công việc; mỗi công cụ, những chương trình về công nghệ sẽ được phân chia tương ứng với từng loại công việc nhân sự khác nhau. Điều đó giúp họ xác định rõ công việc mà mình được giao phó.

HR & IT

Ngoài ra, khi nhân viên đánh giá về khả năng đồng hành cùng doanh nghiệp, họ cũng dựa vào khả năng kết hợp giữa các ứng dụng công nghệ vào các hoạt động nhân sự. Ví dụ như  bạn cần phải hiểu các yêu cầu về không gian để truy cập cáp hoặc Wi-Fi. Công nghệ có thể giúp bạn giải quyết vấn đề thay đổi của lực lượng lao động: Có chuyển từ máy tính để bàn sang máy tính xách tay không? Cần các thiết bị di động mới hoặc khác nhau? Đây đều là mối quan tâm của nhân viên.

Nâng cao trải nghiệm của nhân viên

Liệu bạn sẽ nghĩ rằng có bao nhiêu nhân viên thường xuyên bị thất vọng bởi những hạn chế về công nghệ tại tổ chức của mình? Dịch vụ bị ngừng hoạt động dẫn đến tình trạng làm chậm hoặc trì hoãn hoàn toàn công việc; phần mềm hoạt động bị lỗi, phải sửa thậm chí phải cập nhất nhiều lần nhưng vẫn không hiệu quả.

Hệ quả là, ảnh hưởng đến tiến độ thực hiện, tác động xấu đến sự phát triển lâu dài của tổ chức. Vì vậy, sẽ không quá khó hiểu để nói rằng HR và IT có thể giúp nâng cao những trải nghiệm của nhân viên. Với sự hiểu biết đầy đủ về các thiết bị công nghệ mà công ty bạn cung cấp, HR có thể hỗ trợ những chương trình, khóa học đào tạo phù hợp để nhân viên có thể sử dụng công nghệ đó, giúp phát huy tối đa tiềm năng trong công việc của mình.

Lời kết

Tóm lại, cả 3 yếu tố về không gian, HR và IT đều có những ý nghĩa nhất định. Chúng là sự kết hợp hoàn hảo giữa không gian văn hóa, tính chất vật lý, xã hội nảy sinh từ yếu tố nhân sự và cả khả năng thích với kỹ thuật số. Hơn hết, cả ba đã góp phần xây dựng nên cái gọi là văn hóa của công ty, những hoạch định cụ thể về việc phát triển chiến lược nhân sự đồng thời thực hiện các mục tiêu thu hút, đào tạo và giữ chân các nhân tài.

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

Xem thêm Việc làm TOP IT Jobs trên TopDev

Cách để tạo một Switch trên iPhone bằng HTML và CSS

Cách để tạo một Switch trên iPhone bằng HTML và CSS

1. Những thành phần trong Switch được tạo bằng HTML và CSS:

Cách để tạo một Switch trên iPhone bằng HTML và CSS

Ngoài 3 thành phần đã  được chỉ ra trong ảnh thì còn một thành phần cực kỳ quan trọng nữa đó là một checkbox (đã được ẩn đi), checkbox có tác dụng xác định trạng thái của cái Switch kia.

Các thẻ trong HTML mà chúng ta cần:

  • label : Thẻ lable sẽ tương ứng với thành phần container như trên hình, được sử dụng để: Tạo một cái khung để bao bọc các thẻ thẻ còn lại, giúp cho các thẻ xác định vị trí cũng như kích thước và cuối cùng là tạo truy cập tới checkbox.
  • input: Thẻ input có kiểu là checkbox sử dụng để xác định trạng thái của switch.
  • span: Thẻ span sẽ dùng để tạo background và mask như trong hình.

2. Tiến hành code:

– Cấu trúc HTML:

<html> <label class="container"> <input type="checkbox"> <span class="background"></span> <span class="mask"></span> </label> </html>

– Code CSS cho thành phần “Container”:

.container { display: block; /* Xác định kiểu hiển thị có dạng là block */ position: relative; /* Xác định vị trí của phần tử là tuyệt đối */ width: 55px; height: 30px; margin: 50px auto; /* Phần tử cách lề trên 50px và căn giữa 2 bên */ }

Giải thích code: display: block; vì thẻ label là một thẻ có kiểu hiển thị là inline nên không thể sử dụng width, height để xét kích thước cho phần tử vì thế chúng ta cần chuyển kiểu hiển thị của nó sang block để có thể xét kích thước cho nó.

– Code CSS cho thẻ <input>:

.container > input[type = checkbox] { display: none; }

Giải thích code: container > input[type = checkbox] truy cập tới thẻ input nằm trong container có type là checkbox sau đó tắt hiển thị của cái input này (display: none;).

– Code CSS cho thành phần “Background”:

.background { display: block; position: absolute; /* Xác định vị trí của phần tử là tuyệt đối so với phần tử bao ngoài */ width: 100%; height: 100%; background-color: white; border-radius: 30px; /* Xác định độ bo cong góc của phần tử */ transition: 0.25s; /* Xác khoảng thời gian để phần tử biến đổi trạng thái */ border: 2px solid #eeeeee; /* Xác định đồ dầy viền là 2px, có kiểu nét liền và có màu #eeeeee*/ }

Giải thích code:

  • position: absolute; xác định vị trí của phần tử là tuyệt đối so với phần tử bao ngoài, nhờ đó chúng ta có thể sử dụng các thuộc tính như top, left, right, bottom để xác định vị trí của phẩn tử so với phần tử bao ngoài có position là relative (ở đây chính là phần tử container).
  • transition: 0.25s; xác định khoảng thời gian để phần tử biến đổi từ trạng thái hiện tại sang trạng thái mới là 0.25 giây.

– Code CSS cho thành phần “Mask”:

.mask { display: block; position: absolute; width: 30px; height: 30px; background-color: white; box-shadow: 1px 1px 3px silver; border-radius: 50%; /* Bo cong các góc để phần từ chuyển từ hình vuông sang hình tròn */ left: 2px; /* Cách lề trái của phần tử container 2px */ top: 2px; /* Cách lề trên của phần tử container 2px */ transition: 0.25s; cursor: pointer; /* Xác định kiểu hiển thị của con trỏ chuột khi rê con trỏ chuột vào phần tử là pointer */ }

Giải thích code: cursor: pointer; khi chúng ta rê chuột vào phần từ thì kiểu hiển thị của con trỏ chuột sẽ chuyển sang dạng bàn tay giống như khi chúng ta rê chuột vào một đường link vậy.

– Code CSS cho phần sự kiện On và Off switch:

.container > input[ type = checkbox ]:checked + .background { background-color: #4cd964; border-color: #4cd964; }

Giải thích code: Nếu như checkbox được chọn (checked) thì phần tử nằm ngay sau nó có tên class là “background” (ở đây là phần tử background) sẽ được cập nhật các thuộc tính trong ngoặc nhọn vậy nên phần tử background sẽ được cập nhật lại background-color và border-color và khi checkbox không được chọn nữa thì các giá trị của các thuộc tính của background sẽ quay lại giá trị ban đầu.

.container > input[ type = checkbox ]:checked ~ .mask { left: 27px; }

Giải thích code: Tương tự câu trên chỉ khác là câu lệnh selector sẽ thay dấu + thành dấu ~, dấu + để chọn phần tử ngay sau còn dấu ~ sẽ chọn tất cả các phần tử nằm sau checkbox có tên class là “mask”.

Trên đây là phần code, để có thể xem được kết quả các bạn có thể vào đây để xem nhé.

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

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

Xem thêm các IT Jobs Developer hấp dẫn tại TopDev