Home Blog Page 58

Chuyển đổi Unicode dựng sẵn & tổ hợp với Python

chuyển đổi Unicode dựng sẵn

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

Dạo này các ứng dụng với dữ liệu tiếng Việt đang ngày một nhiều, trong đó vấn đề sai khác giữa Unicode dựng sẵn và tổ hợp, tuy nhỏ, nhưng cũng gây mất chút kha khá thời gian debug cho những người mới vào nghề. Mình chia sẻ xíu kinh nghiệm này, để việc phát triển ứng dụng tiếng Việt trở nên trơn tru hơn, và cũng để “khoe hàng” về hệ sinh thái giàu mạnh của Python.

Tưởng tượng một tình huống sau. Ứng dụng của bạn cho người dùng nhập vào một chuỗi tiếng Việt, khi nhận được chuỗi, phần mềm sẽ dò trong cơ sở dữ liệu để chọn ra bản ghi nào ăn khớp với chuỗi đó. Cơ sở dữ liệu này được một người khác nhập liệu. Bạn đã chắc chắn rằng chuỗi đó có tồn tại trong cơ sở dữ liệu, nhưng không hiểu sao phần mềm so sánh, dò tìm không ra. Hóa ra là người nhập liệu, khi gõ chuỗi vào thì dùng Unicode tổ hợp (decomposed), trong khi người dùng lúc nhập chuỗi tìm kiếm vào thì dùng Unicode dựng sẵn (composed). Dưới dạng chuỗi byte thì hai chuỗi này không giống nhau, nên bằng biện pháp so sánh chuỗi unicode thông thường, phần mềm sẽ không nhận ra.

  Tại sao bạn nên sử dụng Python Generator

Lấy ví dụ một chuỗi sau, “Tiếng Việt bão táp”, nếu là Unicode dựng sẵn, khi thể hiện dưới dạng chuỗi byte, dàn theo bảng mã UTF-8, thì là chuỗi byte này:

b'Ti\xe1\xba\xbfng Vi\xe1\xbb\x87t b\xc3\xa3o t\xc3\xa1p'

Trong khi nếu là Unicode tổ hợp, khi thể hiện ở dạng chuỗi byte UTF-8, thì sẽ thành:

b'Tie\xcc\x82\xcc\x81ng Vie\xcc\xa3\xcc\x82t ba\xcc\x83o ta\xcc\x81p'

Vậy muốn so sánh hai chuỗi, phải đưa chúng về cùng một kiểu Unicode trước. Cách làm ra sao?

Trên mạng có lưu truyền một cách thô thiển là tạo một bảng đối chiếu, chuyển đổi từng chữ cái một, như ví dụ này.

Đây rõ ràng là một phương án “vai u thịt bắp”. Có một giải pháp đơn giản hơn nhiều. Trong thư viện chuẩn của Python, có module unicodedata đã có sẵn chức năng này. Ví dụ:

>>> import unicodedata

>>> to_hop = 'Tiếng Việt bão táp'                                               

>>> dung_san = unicodedata.normalize('NFC', to_hop)

>>> to_hop.encode()
b'Tie\xcc\x82\xcc\x81ng Vie\xcc\xa3\xcc\x82t ba\xcc\x83o ta\xcc\x81p'


>>> dung_san.encode()
b'Ti\xe1\xba\xbfng Vi\xe1\xbb\x87t b\xc3\xa3o t\xc3\xa1p'

Như vậy, bí quyết là dùng hàm unicodedata.normalize(), truyền vào tham trị “NFC” nếu muốn chuyển đổi thành dựng sẵn, truyền vào “NFD” nếu muốn chuyển đổi thành tổ hợp. Mẹo nhớ: Chữ “C” trong “NFC” nghĩa là “composed”, tức là “Unicode dựng sẵn”.

Thông tin sâu thêm một chút về kĩ thuật. Lấy ví dụ chữ “ế”, nếu ở kiểu “dựng sẵn” thì chữ này sẽ được dành riêng một vị trí (U+1EBF) trong bảng Unicode luôn, trong khi nếu ở kiểu “tổ hợp” thì các dấu thanh sẽ được tách ra (decomposed), đại diện bằng các ô khác trong bảng Unicode.

e unicode

Để phát triển giải pháp này lên một bước nữa, ta sẽ làm cho việc chuyển đổi này xảy ra một cách tự động, vô hình trong phần mềm. Quay về tình huống kể trên, đó là tình huống trong một dự án cũ mà tôi tham gia. Tôi đã làm thêm một lớp validation để làm sạch dữ liệu đầu vào, ở cả hai khâu: khâu nhập liệu và khâu người dùng tìm kiếm, chuyển đổi chúng về Unicode dựng sẵn hết. Với mục đích kiểm tra sự hợp lệ (validate) dữ liệu ở các dự án Python thì tôi thường chọn thư viện Pydantic. Công dụng của nó là: kiểm tra sự hợp lệ dữ liệu đầu vào, nếu không hợp lệ thì hoặc là báo lỗi, hoặc là tự gò nắn cho đúng rồi nhận vào. Công dụng này tương tự như Django form.

  Python: Sự khác nhau giữa List và Tuple?

Lấy ví dụ, ứng dụng của ta cần tiếp nhận dữ liệu bên ngoài truyền vào với cấu trúc như sau:

class Person:
    name: str
    age: int

và dữ liệu truyền vào có thể là một chuỗi JSON:

{"name": "Ếch Xanh", "age": 11}

Ta luôn cần bước kiểm tra hợp lệ, vì không thể đảm bảo lúc nào dữ liệu truyền vào cũng đúng ý, nó có thể thiếu một vài field, chuỗi dư kí tự lạ, hoặc không đúng kiểu dữ liệu (cần integer nhưng lại truyền vào string):

{"name": "Mèo Đen   ", "age": "09"}

Khi dùng Pydantic thì tôi sẽ implement cấu trúc trên như sau:

from pydantic import BaseModel                                              

class Person(BaseModel):
    name: str 
    age: int 

Dùng thử:

>>> Person.parse_obj({"name": "Mèo Đen   ", "age": "09"})                       
Person(name='Mèo Đen   ', age=9)

Để đảm bảo dữ liệu của field “name” sẽ được tự động chuyển đổi thành Unicode dựng sẵn, tôi sẽ định nghĩa một kiểu field mới cho Pydantic:

from pydantic import ConstrainedStr


class VinaStr(ConstrainedStr):
    '''
    A constrained string type which automatically normalizes Vietnamese Unicode string.

    It converts from decomposed ("tổ hợp") to composed ("dựng sẵn") Unicode.
    '''
    strip_whitespace = True

    @classmethod
    def validate(cls, value: str):
        cleaned = super().validate(value)
        if cleaned:
            return unicodedata.normalize('NFC', cleaned)
        return cleaned

Áp dụng vào class Person bên trên:

class Person(BaseModel):
    name: VinaStr
    age: int

Thử lại với dữ liệu hơi không sạch:

>>> p = Person.parse_obj({'name': ' Hoẵng Con ', 'age': '04'})

>>> p
Person(name='Hoẵng Con', age=4)

>>> p.name.encode()
b'Ho\xe1\xba\xb5ng Con'

Có thể thấy rằng ở field name, chuỗi đầu vào vừa được xóa sạch kí tự khoảng trắng dư, vừa được chuyển đổi Unicode, và field age thì chuỗi được biến thành số nguyên.

Xem lại code từ đầu với hình động cho đỡ chán:

animation

Như vậy tôi đã trình bày xong cách chuyển đổi Unicode tổ hợp dựng sẵn trong Python, tặng kèm bí quyết về xử lý dữ liệu nói chung trong công việc. Mong rằng cộng đồng lập trình viên Việt Nam sẽ áp dụng các thói quen thực hành tốt để nâng cao chất lượng sản phẩm hơn nữa.

Đừng quên theo dõi TopDev để cập nhật các việc làm Python mới nhất nhé!

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

Xem thêm:

Python Là Gì? Các Bước Tự Học Lập Trình Python

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

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

Ứng tuyển ngay hàng loạt IT Job Hot trên TopDev!

Thông não về các khái niệm Web1, Web2, Web3

web1 web2 web3 là gì

Bài viết được sự cho phép của tác giả Phạm Minh Khoa

Gần đây, từ khóa Web3 đã không còn quá xa lạ với một lập trình viên website; nó được mô tả như là 1 tương lai của Internet. Thực tế thì khi có tên gọi Web3 ra đời thì người ta mới định nghĩa lại những cái tên Web1 hay Web2 một cách cụ thể hơn. Bài viết này mình sẽ cùng các bạn tìm hiểu, thông não về những khái niệm trên để đi nghe chém gió có hiệu quả hơn nhé.

khái niệm về web 3

World Wide Web (WWW) là gì?

WWW, mạng lưới toàn cầu là một không gian thông tin toàn cầu mà mọi người có thể truy cập thông qua các thiết bị kết nối Internet. Web là 1 dịch vụ chạy trên Internet cùng với các dịch vụ khác như Email, FTP, …

Cuộc cách mạng World Wide Web bắt đầu từ những năm 1991 được xem như là thời điểm đánh dấu sự ra đời của Web1 – 1 mạng lưới liên kết toàn cầu bằng Internet. Ở thời điểm này, Web được tạo ra đa phần với các nội dung đơn giản, thường chỉ có số và chữ hoặc ảnh tĩnh. Người dùng tiếp nhận thông tin 1 cách thụ động 1 chiều, hiểu đơn giản như 1 cách đọc báo giấy hàng ngày qua Internet. Giai đoạn của Web1 kéo dài đến những năm đầu của thế kỷ 21 với hạn chế về giới hạn tốc độ truyền tải của Internet cũng như các thiết bị có khả năng truy cập Internet.

  Web3 tất cả những điều cần biết

Sự ra đời của Web2

Năm 2004, Internet đã được các nhà phát triển định nghĩa lại như một nền tảng nơi mà ai cũng có thể tham gia sáng tạo nội dung và xây dựng cộng đồng. Và đây chính là thời kỳ của chúng ta hiện nay, Web2 ra đời với sự phát triển chóng mặt của Facebook, Youtube; từ iPhone đến Macbook; và các khái niệm Youtuber, Tiktoker cũng ra đời. Nhờ hệ thống hạ tầng Internet phát triển đáp ứng được khả năng truyền tải nội dung, ngày nay chúng ta dễ dàng tham gia vào các group trên mạng xã hội Facebook; xem video 4K trên youtube hay ngồi nhà làm việc remote hoặc học online.

Đến nay thì Web2 vẫn đang phát triển và còn nhiều tiềm năng được khai thác, tuy nhiên cùng có những lo ngại với Web2 đã được đưa ra và bàn luận. Cụ thể là sự lo ngại cho vấn đề bảo mật thông tin người dùng, sự thao túng thông tin đến từ các tập đoàn lớn, sở hữu lượng người dùng khủng trong nền tảng ứng dụng của họ. Hãy thử tưởng tượng rằng Facebook đã có đến hơn 1 tỷ người dùng trên toàn thế giới, nếu như Facebook muốn tìm ra bạn thì đâu có quá khó khăn; hoặc nghiêm trọng hơn khi Facebook đăng 1 tin tức về sự kiện nào đó đến 1 tỷ người, liệu có sự xác thực nào đã được kiểm duyệt hay chưa?

  Xu hướng phát triển của IoT hiện nay

Web3 giải quyết vấn đề trên

Từ bài toán trên, ta có thể mường tượng ra vấn đề ở chỗ dữ liệu của chúng ta – những người dùng Internet đang không thực sự thuộc về chúng ta, nó đang được lưu trữ vào 1 nơi mà chỉ những ứng dụng đó mới có toàn quyền quyết định. Với sự phát triển của 1 công nghệ khác có tên là Blockchain, Web3 ra đời để giải quyết bài toán đã đặt ra.

web 3 giải quyết các vấn đề gì?

Web3 xây dựng 1 hệ thống xử lý dữ liệu phi tập trung khổng lồ bằng Blockchain, AI và sức mạnh xử lý phần cứng. Có thể hiểu đơn giản là khi bạn tham gia vào Web3, bạn sẽ được định danh là duy nhất, không ai thay thế được bạn bằng cách ghi đè lên định danh của bạn.

Với dữ liệu bạn sở hữu và lưu trữ, nó được lưu trữ 1 cách phân tán, không tồn tại ở 1 ổ cứng, 1 đám mây lưu trữ cụ thể nào cả; từ đó việc lấy cắp thông tin khi không được phép là điều có thể xem là bất khả thi.

Xem thêm tuyển dụng việc làm Web Design 

Vẫn còn nhiều tranh cãi về Web3

Mang trong mình 1 lý tưởng khá tốt đẹp, tuy nhiên hiện nay thì Web3 vẫn còn vấp phải nhiều sự nghi ngờ đến từ các chuyên gia công nghệ hay các tập đoàn lớn. Elon Musk – tỷ phú công nghệ CEO Tesla có phát biểu kém thân thiện với Web3 khi cho rằng đó là 1 khái niệm viển vông, mang tính tiếp thị nhiều hơn thực tế. Ngoài ra 1 số chuyên gia khác cũng cho rằng, thực chất Web3 vẫn đang và sẽ nằm dưới sự kiểm soát của các nhà đầu tư lớn, không có sự đảm bảo tính bình đẳng về dữ liệu trong hệ thống này.

tranh cãi về web3

Rõ ràng còn nhiều tranh cãi về tương lai và tính hữu ích của Web3. Với người dùng hiện nay, đã có quá nhiều công nghệ mới cần phải tìm hiểu học cách sử dụng. Hy vọng bài viết này đã mang đến cho các bạn cái nhìn cơ bản nhất về Web3.

Đừng quên truy cập TopDev để cập nhật các thông tin mới nhất về việc làm Web Developer bạn nhé. Hẹn gặp lại các bạn trong các viết sau của mình.

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

Theo dõi những bài viết mới nhất của TopDev nhé:

Tìm kiếm việc làm IT mới nhất tại TopDev!

Làm thế nào để tối ưu chi phí vận hành doanh nghiệp dưới tác động của đại dịch Covid-19

Zoho - Giải pháp phần mềm tích hợp

Hiện nay, khi nền kinh tế đang dần bước sang giai đoạn thích ứng với những tác động kéo dài của đại dịch Covid-19, việc chuyển đổi số và áp dụng các giải pháp số mang tầm quan trọng về chiến lược. Chủ doanh nghiệp, đặc biệt là ở quy mô vừa và nhỏ, mong muốn các khoản đầu tư vào giải pháp công nghệ sẽ tạo ra giá trị cao hơn số tiền bỏ ra ban đầu, đồng thời tiết kiệm được chi phí trong giai đoạn dịch bệnh còn diễn biến phức tạp.

Quyết định giải pháp nào phù hợp với doanh nghiệp thật sự là bài toán khó khi trên thị trường có quá nhiều sự lựa chọn.

Trong bối cảnh đó, Giải pháp phần mềm tích hợp – nhiều phần mềm chức năng cùng hoạt động trên một nền tảng duy nhất – đang là xu hướng được thế giới quan tâm. Đây cũng là đáp án phù hợp nhất mà các doanh nghiệp Việt cần ở thời điểm hiện tại. Giải pháp phần mềm tích hợp có thể đơn giản hóa quá trình thích ứng của doanh nghiệp và giảm thiểu đáng kể chi phí đầu tư công nghệ trên mỗi nhân viên.

Doanh nghiệp tìm kiếm giải pháp tiết kiệm chi phí

zoho - tối ưu chi phí vận hành doanh nghiệp

Các khoản đầu tư về phần mềm và công nghệ rất khó tính toán do có nhiều yếu tố ảnh hưởng đến chi phí trên mỗi nhân viên (cost per employee). Một số phần mềm tính chi phí dựa trên số lượng tài khoản truy cập mà công ty sử dụng. Một số khác tính dựa trên đơn vị tổ chức, khiến cho chi phí trên mỗi nhân viên của doanh nghiệp nhỏ cao hơn so với doanh nghiệp lớn. Hơn nữa, khi doanh nghiệp muốn mua thêm các tài khoản phần mềm phục vụ những mục đích kinh doanh khác, chi phí đầu tư công nghệ trên mỗi nhân viên dễ dàng tăng phi mã.

Theo đó, doanh nghiệp thường phải trích ra 6-10% doanh thu để đầu tư cho công nghệ. Tuy nhiên, mức chi phí đầu tư có thể thay đổi phụ thuộc vào hiệu quả và tỷ suất lợi nhuận của việc kinh doanh.

Đối mặt với những thách thức này, doanh nghiệp phải làm gì để kiểm soát chi phí đầu tư cho công nghệ?

Giải pháp tích hợp tính năng cho người dùng

Nhiều công ty phát triển ứng dụng di động (mobile app) trực tiếp cho người dùng đã tìm cách phát triển để giải quyết vấn đề tương tự. Những công ty này tạo ra giá trị bằng cách cung cấp dịch vụ tích hợp theo chiều dọc nhằm giảm các chi phí trực tiếp và gián tiếp, đồng thời nâng cao hiệu quả sử dụng.

Một ví dụ điển hình của sản phẩm công nghệ tích hợp dịch vụ khách hàng là sự nổi lên của các siêu ứng dụng như WeChat (Trung Quốc), Grab (Singapore), GoJek (Indonesia) và Kakao (Hàn Quốc). Điểm chung của những ứng dụng này là cung cấp rất nhiều dịch vụ tích hợp trên một giao diện di động, từ dịch vụ vận tải, nhắn tin, giao hàng, bán vé, đến dịch vụ tài chính. Thông thường, toàn bộ dịch vụ đều được thanh toán từ một ví chung, đảm bảo trải nghiệm liền mạch và thuận tiện cho khách hàng. Do đó, nền tảng giải pháp tích hợp theo chiều dọc sẽ làm tăng giá trị cho khách hàng.

Giải pháp tích hợp tính năng cho doanh nghiệp

Câu hỏi đặt ra ngay lúc này là các nhà cung cấp phần mềm cho doanh nghiệp có thể làm gì để giải quyết vấn đề chi phí đầu tư cho công nghệ trên mỗi nhân viên, đồng thời vẫn mang lại giá trị thông qua những dịch vụ tích hợp.

Dù chưa có công ty nào hiện nay có thể cung cấp toàn bộ phần mềm cùng một lúc, nhiều tên tuổi lớn đang hướng đến mục tiêu này. Kể từ năm 2018, đã có một số thương vụ mua lại nổi tiếng trong lĩnh vực SaaS (phần mềm dạng dịch vụ), tạo tiền đề cho các nhà cung cấp phần mềm bổ sung nhiều dịch vụ tích hợp vào nền tảng có sẵn của họ. Điều này có nghĩa là càng nhiều dịch vụ được tích hợp vào nền tảng chung, chi phí đầu tư cho hệ điều hành doanh nghiệp càng tiết kiệm và thuận tiện.

Hiện nay, khách hàng doanh nghiệp yêu cầu phần mềm có khả năng đảm đương nhiều chức năng trong doanh nghiệp hơn, từ quản lý khách hàng đến tài chính và nhân sự. Bên cạnh đó, phần mềm cũng cần hỗ trợ sâu về chuyên môn, từ giao diện người dùng, lưu trữ dữ liệu, đến tự phát triển ứng dụng và truy cập mọi lúc mọi nơi.

Dự đoán được xu hướng này, Zoho chính thức ra mắt Zoho One vào năm 2017, cho phép doanh nghiệp quản lý công ty thông qua bộ ứng dụng của Zoho chỉ với một lần đăng nhập. Trải qua 5 năm phát triển và cải tiến, Zoho One đã đạt được những con số ấn tượng: 45 phần mềm làm việc hiệu quả trên một nền tảng chung, tin dùng bởi hơn 48.000 doanh nghiệp trên khắp thế giới, trong đó khách hàng lớn nhất có hơn 46.000 nhân viên. Zoho định vị là nhà cung cấp các ứng dụng tích hợp được phát triển bởi chính Zoho, hứa hẹn mang lại trải nghiệm liền mạch cho người dùng.

Không những dễ sử dụng, việc tích hợp đa dạng các ứng dụng đóng vai trò quan trọng giúp giảm thiểu những chi phí ẩn mà nhiều công ty đang gặp phải do sử dụng các phần mềm rời rạc không tích hợp. Sự thiếu liên kết này có thể gây ra tình trạng chồng chéo tính năng khi sử dụng và làm tăng gấp đôi khối lượng công việc nhập liệu vào từng nền tảng.

Bên cạnh những ưu điểm kể trên, việc Zoho tiếp tục phát triển theo hướng tích hợp nhiều giải pháp sẽ giúp trả lời câu hỏi tưởng chừng như đơn giản: Chi phí đầu tư cho công nghệ trên mỗi nhân viên của công ty này là bao nhiêu? Trong lúc đó, doanh nghiệp nên cân nhắc và đánh giá những phần mềm hiện tại liệu có xứng đáng với ngân sách đầu tư.

Xem thêm:

Giải pháp cho phần lưu, quản lý log hiệu quả và cực kỳ tiết kiệm chi phí

PangoCDP – Giải pháp cho trải nghiệm khách hàng đặc biệt

Google Cloud hướng tới hỗ trợ tất cả dữ liệu phi cấu trúc

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

Trí tuệ nhân tạo (Artificial Intelligence) và cơn đau tim (Heart Attack)

trí tuệ nhân tạo

Tiêu đề giật tít ư, ồ không, bài viết này đề cập tới Trí tuệ nhân tạo và áp dụng trí tuệ nhân tạo trong y tế, cụ thể ở đây là giúp đỡ trong điều trị trong phòng chống bệnh đau tim.

Thế mới nói, là kỹ sư, bản thân có thể đóng góp một phần lớn vào rất rất nhiều lĩnh vực trong đời sống.

Bệnh đau tim

CAD – Coronary Artery Disease (bệnh mạch vành) là bệnh tim mạch phổ biến nhất và là nguyên nhân hàng đầu dẫn tới các cơn đau tim (heart attack). Bản thân bệnh mạch vành tiến triển âm thầm, việc dự đoán một người có khả năng bị bệnh mạch vành đã có từ lâu.

Đồng nghĩa với việc nếu có thể dự đoán một người có các vấn đề mạch vành từ sớm, ta có thể thực hiện can thiệp, giảm thiểu các rủi ro. Cụ thể là giảm lượng mỡ trong máu, vốn là nguyên nhân dẫn tới tắc mạch vành. Việc phát hiện sớm cũng góp phần ngăn ngừa bệnh, hướng tới sức khoẻ tích cực (positive health).

Quy trình dự đoán cần có độ chính xác cao để tránh đánh giá sai nguy cơ. Việc xét nghiệm tới lui nhiều lần không những gây lãng phí thời gian, công sức của người bệnh, nó còn gây áp lực nặng nề lên hệ thống y tế, gánh nặng cho xã hội.

Mô hình đánh giá nguy cơ bệnh mạch vành hiện tại chủ yếu dựa trên các yếu tố rủi ro truyền thống. Tức là những yếu tố đã được đánh giá và phát hiện trước đó. Cụ thể như lipid trong máu, hút thuốc, huyết áp, tiểu đường). Ngoài ra các thông tin khác cũng sẽ được xem xét như giới tính, tuổi, tiền sử gia đình) cũng là một yếu tố cần xem xét.

Trí tuệ nhân tạo trong y tế (Artificial Intelligence) đã được xem xét để ứng dụng, vậy nó có thể giúp đỡ gì trong trường hợp này?

  Hiểu sâu về trí tuệ nhân tạo & Machine Learning tại Apple
  Sự khác nhau giữa AI, Machine Learning và Deep Learning

Cá nhân hoá thuốc

Về đánh giá rủi ro cũng như các yếu tố có thể gây ra bệnh mạch vành thì anh em đã rõ rồi. Nhưng rủi ro thì như nhau nhưng có người thì đi sớm, người thì đi muộn. Rõ ràng là cho dù có nhiều yếu tố nguy cơ, nhưng cách phản ứng của mỗi người lại khác nhau.

Ví dụ như lipid trong máu, nguy cơ lipid trong máu hình thành từ chế độ ăn không lành mạnh. Nhưng tuỳ vào sự biến đổi của hệ vi sinh vật trong đường ruột mà việc chuyển hoá cũng như làm trầm trọng thêm các yếu tố nguy cơ trở nên khác đi.

Chính vì vậy, y tế ngày nay hướng tới thuốc, nhưng cá nhân hoá cho từng đối tượng. Giúp quản lý và chăm sóc sức khoẻ tối ưu hơn, đạt hiệu quả cao hơn. Đó cũng là một trong những yếu tố thúc đẩy ứng dụng trí tuệ nhân tạo trong y tế.

Vấn đề khi ứng dụng trí tuệ nhân tạo trong y tế

Rồi, qua 1 và 2 thì ta nắm được bệnh mạch vành, các yếu tố nguy cơ dẫn tới bệnh. Nhưng ứng dụng trí tuệ nhân tạo vào trong y tế (Artificial Intelligence) bao gồm các tiêu chí cần quan tâm.

Bản thân bệnh mạch vành lại có rất nhiều yếu tố nguy cơ. Đơn cử như ngoài dữ liệu lâm sàng, các yếu tố bổ sung bao gồm (căng thẳng, giấc ngủ, không khí ô nhiễm, chế độ ăn, hệ vi sinh đường ruột). Quá nhiều dữ liệu đầu vào biến thành tập dữ liệu đầu vào rất lớn (big data).

Lúc này Trí tuệ nhân tạo trong ý tế sẽ kết hợp với Machine Learning để đưa ra những đánh giá về nguy cơ bệnh mạch vành.

trí tuệ nhân tạo trong y tế

Mục đích

Sau khi đã có mục tiêu ứng dụng trí tuệ nhân tạo vào y tế. Để giải quyết vấn đề bệnh và tìm ra các yếu tố quan trọng để dự đoán rủi ro. 6 nhà nghiên cứu ở Latvia đã xuất bản một bài báo nghiên cứu bao gồm các mục tiêu sau:

  • Tìm các phương pháp AI/ML được sử dụng nhiều nhất và trường hợp sử dụng khác nhau của chúng để dự đoán rủi ro CAD
  • Mô hình hóa nội dung, lựa chọn và tác động của các yếu tố chế độ ăn uống đối với dự đoán rủi ro CAD
  • Phân loại các cá nhân theo thành phần hệ vi sinh vật đường ruột của họ thành các trường hợp CAD so với các biện pháp kiểm soát
  • Mô hình hóa các tương tác giữa hệ vi sinh vật đường ruột và chế độ ăn uống và tác động của chúng đối với rủi ro CAD Cung cấp một triển vọng để kết hợp tất cả các yếu tố rủi ro và thông qua việc sử dụng AI/ML để cải thiện khả năng phán đoán.

Phương pháp thu thập và xử lý dữ liệu

Thu thập dữ liệu, việc thu thập dữ liệu cho hồ sơ sức khoẻ từ lâu đã được hỗ trợ bởi các thiết bị thông minh. Anh em giờ nào xài đồng hồ thông minh có thể cung cấp dữ liệu nhịp tim, dinh dưỡng sức khoẻ cho ứng dụng.

Các dữ liệu này cũng được tích hợp vào hồ sơ sức khoẻ điện tử. Y tế hiện nay còn có thể lập hồ sơ hệ vi sinh vật đường ruột. Việc phân loại, dự đoán và giải thích dữ liệu thông qua AI/ML có thể được thực hiện theo ba cách:

  • Được giám sát (tận dụng dữ liệu được dán nhãn)
  • Không giám sát (sử dụng dữ liệu không được gắn nhãn)
  • Bán giám sát (sử dụng cả dữ liệu được gắn nhãn và không được gắn nhãn)

Đối với dữ liệu được giám sát (có gán nhãn) và được chia ra cụ thể rõ ràng, một số phương pháp được sử dụng để sử dụng dữ liệu bao gồm:

  • Random Forest(RF)
  • Decision Tree(DT)
  • Support Vector Machine(SVM)
  • Gradient Boosting(GB)
  • Artificial Neural Network(ANN)

Kết quả

Trước đây, các nghiên cứu về bệnh mạch vành chủ yếu dựa trên dữ liệu lâm sàng (bao gồm hình ảnh chẩn đoán, xét nghiệm lipid, …). Với trí tuệ nhân tạo trong y tế, kết hợp với machine learning.

Dữ liệu thu thập giúp dự đoán rủi ro CVD (xem xét 473 biến số khác bao gồm các yếu tố chế độ ăn uống) tốt hơn so với phương pháp thông thường. Nó cũng cải thiện đáng kể dự đoán rủi ro tử vong CVD so với mô hình tiêu chuẩn chỉ với các yếu tố rủi ro truyền thống.

Trí tuệ nhân tạo và học máu đã đóng góp nhiều hơn vào các lĩnh vực khác nhau, y tế là một trong số đó. 

Tham khảo

Tóm lại, trí tuệ nhân tạo đã mang lại nhiều lợi ích và cơ hội cho sự phát triển của xã hội trong nhiều lĩnh vực. Hiện nay, nguồn nhân lực AI tại Việt Nam như “muối bỏ bể”, vẫn chưa đủ đáp ứng được “cơn khát” nhân lực cho các doanh nghiệp. Vậy nên, nếu anh em đam mê lĩnh vực này thì đây là một cơ hội rất lớn và đầy tiềm năng. 

Cảm ơn anh em đã chú ý – Thank you for your attenion – Happy coding!

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

Đừng quên, thường xuyên theo dõi TopDev để cập nhật các thông tin tuyển dụng AI mới nhất được cập nhật liên tục anh em nhé!

Xem thêm:  

Xem thêm tuyển dụng it mới nhất tại TopDev

Không phải keys của bạn, không phải crypto của bạn

Blockchain

Dạo gần đây anh em nếu theo dõi vụ FTX, lướt mạng báo nước ngoài sẽ thấy cụm từ “Not your keys, not your crypto”.

Rõ ràng vụ bể banh xà lành của FTX gây shock cho thị trường tiền số, có thể nói là cú sốc lớn nhất cho thị trường tiền số năm nay. Sau Luna, FTX trở thành cú vấp lớn nhất trong ngành. Ảnh hưởng rõ ràng là lớn, nhưng cụ thể thì “Not your keys, not your crypto” được hiểu là gì?

Nghe not not và sợ rồi, kiểu tiền trong ví tao nhưng lại không phải là của tao. Ủa ủa, chuyện gì đã xảy ra và tại sao lại như vậy?

Non-custodial wallet – ví không giữ

Dịch vậy chả biết đúng không nhưng Non-custodial thì đúng nghĩa là cái ví đó trên sàn và sàn không hề kiểm soát chuyện anh em chuyển tiền đi đâu, làm gì.

Đi kèm với Non tất nhiên là ngược lại, hiện nay trên thị trường tiền số tồn tại 2 loại ví tiền chính bao gồm:

  • Non-custodial wallet (ví không giữ)
  • Custodial wallet (ví giữ)

Cũng có thể dùng từ lưu ký (lưu ký ở đây anh em có thể hiểu là lưu lại, ký gửi lại). Vậy nếu có lưu ký lại, có ký gửi lại thì private key vẫn thuộc về anh em, nhưng anh em không toàn quyền kiểm soát tiền của mình. Vậy thực sự là tiền của anh em chỉ có chuyển đi chuyển lại, mua đi bán lại nhưng không hề rời khỏi sàn.

Có chạy tới chạy lui vài ba chục vòng thì tiền vẫn nằm đâu đó trên sàn và do sàn kiểm soát.

Private keys – thứ quan trọng nhất

Khi đăng ký một ví điện tử, sàn sẽ tạo ra cho anh em 2 cặp khoá. Public keys và private keys. Public thì rõ rồi, anh em muốn cho ai, muốn công khai như nào cũng được.

Việc chia sẻ public key không ảnh hưởng tới tiền trong ví của anh em. Nhưng nếu private keys mà mất thì xác định. Lúc đó là not your keys.

Hiểu đơn giản thì public keys của anh em như là email, muốn chia sẻ với ai cũng được, công khai chỗ nào cũng được. Private keys thì như là mật khẩu, chỉ nên là một mình mình biết mà thôi.

Tham khảo việc làm blockchain tại Hà Nội

Đừng bao giờ chia sẻ private keys

“Not your keys, not your crypto”, chìa khoá không còn, tiền điện tử cũng không còn.

Nếu một sàn hoặc một bên thứ ba có quyền truy cập hoặc sở hữu private keys của anh em, lúc đó tiền không còn là của anh em nữa. Nếu FTX tạo ra tiền, điều gì đảm bảo rằng FTX không có một bản sao public và private keys của anh em. Rõ ràng là họ rút được tiền từ sàn để đem đi thế chấp, sau đó tạo thêm tiền đem vào thị trường.

Chia sẻ private keys đó về cơ bản giống như đưa cho ai đó chìa khóa két an toàn hoặc nhà của anh em. Vì lý do đó, anh em tuyệt đối không bao giờ nên chia sẻ khóa riêng của mình.

Sự mong manh của thị trường và sàn

Nhìn lại, sàn tiền số lớn thế hai thế giới. Rõ ràng sàn đang có quá nhiều quyền lực, họ kiểm soát gần như mọi thứ.

Giá đang cao chót vót nhưng tiền trong ví của anh em có thật sự đang còn trên sàn. Sàn trở thành như một gã huy động vốn lớn, tự tạo ra thứ bán được, anh em bỏ tiền vào. Sau khi đã bỏ tiền vào, liệu sàn có giữ lại một số tiền cần thiết để anh em có thể rút ra hay không?

Binance sau sự sụp đổ của FTX, CEO đã ra tuyên bố nếu tất cả mọi người đồng loạt rút tiền, sàn Binance vẫn có thể đáp ứng được yêu cầu đó.

Nhưng câu hỏi đặt ra là ai giám sát? Anh em đi vay tiền ở ngân hàng chắc chắn hiểu điều này, vô cùng mong manh. Tại sao? Ngân hàng được ngân hàng nhà nước giám sát và quy định số tiền phải giữ lại ngân hàng. Đi huy động được 10 đồng thì cho vay ra chỉ được 8 đồng. Lượng tiền giữ lại phải tuyệt đối tuân thủ số tiền mà ngân hàng nhà nước quy định.

Tổng số tiền cho vay cũng được quy định (trong giới gọi là room), hết room thì tiền trong ngân hàng còn cả đống cũng phải để yên, chứ không phải bản thân anh chỉ có 10 đồng mà đi cho vay 15 đồng.

Vậy với tiền số, ai là người kiểm soát? Public và privates nếu sàn biết thì đã đành, đằng này cũng không có bất cứ một tổ chức, một chính phủ nào đứng ra kiểm soát lượng tiền đó.

Không thể kiểm soát

Với blockchain, mọi người trong mạng có quyền giám sát tiền ra tiền vào. Nhưng sàn bằng một cách vi diệu nào đó vẫn rút hoặc chuyển tiền ra ngoài cho một công ty phụ.

Không có sự kiểm soát rõ ràng là điểm yếu chí mạng của tiền điện tử. Nhà sáng lập Luna có thể lập tức cất cánh bay xa, ôm theo số tiền khổng lồ. Một đồng tiền được tạo ra được thừa nhận bởi mọi người, nhưng lại không có ai đứng ra đảm bảo rằng đồng tiền sẽ được lưu thông.

Bài toán cân bằng giữ kiểm soát bởi cộng đồng và sự tin tưởng của đồng tiền chưa bao giờ là dễ. Mà nói thẳng ra, tương lai có thể còn là điểm yếu chí mạng của tiền điện tử. 

Cảm ơn anh em đã đón đọc – Thank you for your reading – Happy coding!

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

Anh em có thể đón đọc thêm các bài viết khác về tiền điện tử tại TopDev. Đừng quên, các việc làm mới về Blockchain sẽ được liên tục cập nhật.

Xem thêm:

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

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

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

Xem thêm tuyển dụng it mới nhất tại TopDev

Lộ trình từng bước để trở thành Data Analyst

Lộ trình từng bước để trở thành Data Analyst

Anh em đang muốn trở thành Data Analyst?. Ngành với vốn hoá thị trường lên tới 300 tỷ Biden trong năm 2022.

Ôi, thế thì bài viết này đích thị là dành cho anh em. Học Data Analyst rõ ràng là không dễ, nhưng nếu có đủ quyết tâm và nghị lực, anh em có thể thoải mái thử sức với ngành này.

À, bài viết dựa trên quan điểm của cá nhân tác giả, đường thì có nhiều đường nên có khúc nào không hợp hoặc anh em đã từng đi qua thì cứ bypass nha. Feel free to do, Data ở đây cũng bao gồm nhiều vị trí và chức vụ, nào là Data Analyst, Data Scientist, Data Engineer, Data Architect. Các công ty thì khỏi phải bàn, đỏ mắt tìm người có kỹ năng về Data, mà toàn các tập đoàn lớn hoặc các công ty đã thành công trên thị trường.

Nội dung bài viết này sẽ cập tới những skill anh em cần có, một số tools cần học để trở thành một Data Analyst xuất sắc. OK bắt đầu thôi anh em.

Data Analyst là gì?. Họ thường làm gì?

Chưa bao giờ vào thẳng vấn đề mà quên đi định nghĩa. Roadmap road mủng gì khi mà chưa biết Data Analyst họ làm gì cơ chứ?

Vậy chính xác thì Data Analyst sẽ làm công việc gì?

“A data analyst is responsible for collecting data, processing it, and analyzing it to find sensible insights for decision making.” Nói một cách đơn giản thì Data Analyst sẽ chịu trách nhiệm cho việc thu nhập dữ liệu, xử lý dữ liệu và tìm ra những thứ có giá trị trong data để ra quyết định.

Quyết định ở đây có thể là quyết định về chính sách, nhưng đôi khi cũng có thể là những quyết sách lớn liên quan tới business của cả một tập đoàn. Điều đó cho thấy vị trí Data Analyst quan trọng tới nhường nào.

Hầu hết những dữ liêu mà data analyst tiếp cận và xử lý ban đầu đều là dữ liệu dạng thô (raw), các nhà phân tích dữ liệu sẽ bóc tách để tìm ra dữ liệu có giá trị. Đôi khi anh em nhầm là Data Analyst thì làm luôn cả Machine Learning và Deep Learning, nhưng thực ra không phải. Dữ liệu thì chỉ work với dữ liệu, bóc tách ra thôi.

  Phỏng Vấn Data Analyst: TOP 5 Câu Hỏi Bạn Không Nên Bỏ Qua!
  Những điều cần biết về nghề Data Analytics và Business Analytics

Thống kê (Statistics)

Đối với tất cả những ông làm data chuyên nghiệp, thống kê và toán và hai thứ không thể thiếu. Vì sao, vì nếu thiếu thống kê và xác suất, anh em không thể bóc tách những gì tinh cmn tuý từ trong dữ liệu.

Raw nó là một cái gì đó rất là thô, vừa nhiều, vừa ít có ý nghĩa, hoặc có ý nghĩa đi thì cũng phải kết nối thống kế được với nhau mới đẻ ra được ý nghĩa. Chính vì vậy, kỹ năng thống kê và phân tích là hai kỹ năng quan trọng cần của Data Analyst.

Data Analyst

Một số khoá học anh em có thể tham khảo.

Excel

Excels, không phải là để tính lương hay viết code macro để dịch chuyển vài sheet . Đối với Data Analyst, Excel là công cụ vô cùng hữu ích để xử lý dữ liệu. Thật ra thì không phải chỉ mỗi Excel có thể giúp ích được cho các nhà phân tích dữ liệu. Mà thực ra excel là cái ông có thể làm được nhiều việc nhất. Excel cung cấp nhiều các tính năng quan trọng như:

  • VBA
  • Filters
  • Formulas
  • Hàm pivot table
  • VLOOKUP

Chính vì Excel được nhiều các nhà phân tích dữ liệu sử dụng nên pro excel là một kỹ năng cần thiết và thật sự có giá trong mắt nhà tuyển dụng. Có một vài khoá học anh em tham khảo để có thể pro excel trong lĩnh vực Data analyst.

Data Analyst

Một số thứ hay ho anh em có thể học hoặc tham khảo:

Việc làm Data Analytics HOT tại TP. Hồ Chí Minh

SQL

Không ai trong số những ông dùng SQL hoặc làm việc với SQL nói cho ta biết tầm quan trọng của SQL bằng ông Data Analyst, dữ liệu raw thường được lưu trong các bảng. Các điều kiện WHERE, JOIN, … chính là thứ phương tiện đầu tiên được sử dụng để làm việc với dữ liệu dạng raw.

Không những SQL, các ông DA còn khá là thông thạo một vài hệ cơ sở dữ liệu. Có thể là Oracle, có thể là Postgres, …

Data Analyst

Nói chung là SQL là thứ bắt buộc phải biết đối với anh em muốn bắt đầu để trở thành Data Analyst

Một số thứ hay ho anh em có thể học hoặc tham khảo:

Business Intelligence Tools

Business Intelligence Tools hay còn gọi là BI, BI là các công cụ được sử dụng phục vụ cho mục đích phân tích mô hình kinh doanh. Các ngôn ngữ chính được sử dụng để làm việc với BI bao gồm R, Python và SQL.

Những tính năng thường được sử dụng trong BI là dashboarding, report making, và data visualization (trực quan hoá dữ liệu). Một số công cụ phổ biến là Tableau, PowerBL, và Looker.

Data Analyst

Một số chứng chỉ anh em có thể tham khảo:

Programming Language

Rồi, nói tới nói lui tưởng làm Data Analyst không phải code. Thực chất là nghề nào liên quan tới IT mà biết code cũng tốt anh em ạ. Đôi khi chỉ với SQL là không đủ để giải quyết vấn đề

Hai ngôn ngữ được suggest nhiều nhất là R và Python. Có nhiều thư viện được sử dụng anh em cũng có thể tham khảo dplyr, ggplot in R.

Một số khoá học để bắt đầu anh em có thể tham khảo:

Kết luận

Lộ trình, công cụ liệt kê ở đây hầu hết là các kĩ năng cần có, kỹ năng chung nhất của một Data Analyst. Bước vào thế giới của data luôn là điều hứng thú với tất cả anh em. Để tránh lạc trôi không tìm thấy đường ra.

Đây cũng là một số kỹ năng cơ bản, khi đã được nhận vào, anh em có cơ hội làm việc với data thực tế, chính đó mới là kinh nghiệm quý báu nhất mà anh em có thể tích luỹ được. Thông qua bài viết này, chúc anh em đi đúng đường, đúng hướng, trở thành Data Analyst trong tương lai.

Cảm ơn anh em đã đọc – Thank you for your time to read – Happy coding!

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

Anh em có thể tham khảo tin tuyển dụng Data Analyst tại đây nha. Việc làm HOT liên tục được cập nhật tại TopDev!!

Xem thêm:

Data Analyst là gì? Chuyện nghề của một Data Analyst

Data scientist vs data analyst: những khác biệt mà bạn cần biết

Lộ trình cho mọi lập trình viên web trong năm 2022 – TopDev

Tìm kiếm việc làm IT mới nhất tại TopDev!

 

Factory Method Pattern – Giải thích đơn giản, dễ hiểu

Factory Method Pattern

Đã lâu không quay trở lại với series design pattern. Tiếp tục với Creational Pattern (pattern khởi tạo), đi cho hết luôn cả luồng. Bài viết này giới thiệu với anh em pattern Factory Method, một pattern khá nổi tiếng, được nhiều anh em biết tới.

Anh em ready chưa, bắt đầu ngay thôi!

1. Định nghĩa Factory Method pattern

Rất chi là khó hiểu nhưng luôn luôn là định nghĩa về pattern. Nếu anh em mới tìm hiểu về pattern này lần đầu thì đừng lo. Cứ lướt qua định nghĩa, đi xuống ví dụ, từng từng một sẽ rõ ràng ra.

Sau khi đọc hết và có cái hiểu cơ bản về pattern, quay lại đọc khái niệm đôi khi lại vỡ lẽ ra nhiều điều.

Factory Method is a creational design pattern that provides an interface for creating objects in a superclass, but allows subclasses to alter the type of objects that will be created. Factory method là design pattern khởi tạo cung cấp interface để khởi tạo các đối tượng (object) ở superclass, nhưng cho phép class phụ (subclasses) thay đổi kiểu của object sẽ được tạo ra.

Nghe ảo ma canada chưa, khởi tạo ở superclass nhưng lại cho phép thay đổi được kiểu của object cho phù hợp với subclass của mình. Vậy Factory Method pattern đã làm điều đó như thế nào?

  Các loại Design patterns
  Adapter Pattern – Xoá nhoà khác biệt

2. Đặt vấn đề

Giả sử như anh em đang khởi tạo một ứng dụng liên quan tới giao vận (cũng có thể gọi là hệ thống quản lý giao vận – logistics management application). Đầu tiên, tiền còn ít nên anh em chỉ cố gắng xoay xở gom góp mua được con xe tải.

Quản lý giao vận bằng xe tải (truck), anh em sẽ tạo Truck class.

Một thời gian sau, các nhà đầu tư bần bần nhảy vô (nhầm, các agents) nhảy vào, ứng dụng của anh em trở nên phổ biến hơn cả Ahamove, Ninja Van. Một ông khách hàng to bự, bay vào nhờ anh em quản lý thêm giao vận trên biển (sea logistics).

Ngon, business phát triển rồi, nhưng giờ code thì sao?. Truck class thì viết đầy vào rồi, mà thêm Ship vào thì thay đổi mất code base. Mà không chỉ có mỗi sea, sau này còn có mở thị trường giao vận hàng không thì sao?.

factory method

3. Giải quyết với Factory Method pattern

Với Factory Method pattern, với bài toán ở trên, anh em mong muốn xây dựng một class sao cho cả Truck, Sea hoặc Airplane sau này có thể kế thừa. Mỗi lần xử lý đơn hàng là mỗi lần tạo transport.

Vậy phương thức createTransport sẽ tạo ra object chính xác cho từng loại hình vận chuyển.

  • createTransport ở RoadLogistics sẽ return new Truck()
  • createTransport ở SeaLogistics sẽ return new Ship()

Phương thức createTransport sẽ nằm ở SuperClass, subclass (Road, Sea) lúc này trả về các kiểu khác nhau.

factory method

Constructor khởi tạo lúc này di chuyển về Factory Method class (superclass), các class con thực hiện override lại, tất cả các phương thức vận chuyển đều sử dụng chung một interface, cái khác là kiểu trả về cho từng class

factory method

Ví dụ, cả Truck (xe tải) và Ship (thuyền) đều implement chung Transport interface. Trong interface rõ ràng khai báo method deliver(). Nhưng mỗi class lai hiện thức method này ở class của mình khác nhau. Truck thì di chuyển trên đường bộ, Ship thì di chuyển trên đường sông.

Factory Method lúc này, sau khi khởi tạo constructor ở class RoadLogistics sẽ trả về truck object, còn ShipLogistics sẽ trả về ship object. Rõ ràng nếu làm được vậy thì sau này có airplane hay hàng không vũ trụ gì cũng không là vấn đề.

factory method Tất cả các class đều implement chung một common interface, với Factory Method, ta pass các object cho đúng đối tượng nhưng không làm phá vỡ đi code base của Factory.

4. Thực tế giải quyết bài toán

Rồi, giờ triển khai cụ thể với class diagram

factory method
  • Số 1: Product sẽ khai báo interface, cái này là common interface tất cả các class đều sử dụng. doStuff() đây anh em có thể hiểu là vận chuyển, xác nhận đơn, giao thành công hoặc bất cứ thứ gì khác. Nói chung là có giao vận bằng hình thức nào thì nó cũng có các phương thức cần implement.
  • Số 2: Concrete ProductA và Concrete ProductB sẽ implement inferface common, cụ thể làm gì thì viết vào đây. Ví dụ thuyền thì số km tính bằng hải lý, còn đường bộ thì tính bằng km
  • Số 3: Class Creator sẽ khai báo các factory method trả về new product objects. Kiểu trả về ở đây khớp với Product interface là ok
  • Số 4: Concrete Creators sẽ override các method base ở Factory với các kiểu trả về khác nhau.

5. Code ví dụ

Ví dụ giờ mình dùng cái Factory Method pattern để tạo một cái UI cross platform (đi qua nhiều platform). Cái UI này có một nút nhấn, từ đó mở được 2 loại:

  • Web dialog
  • Windows dialog
factory method

Lúc này ở interface sẽ có 2 method là render(), show cái button ra. Cái thứ hai là ấn vào để mở dialog.

Ở GUIFactory.java ta define interface tạo button và click. Render đổi qua thành createButton nha anh em. Đây là 2 common interface.

package refactoring_guru.abstract_factory.example.factories;

import refactoring_guru.abstract_factory.example.buttons.Button;
import refactoring_guru.abstract_factory.example.checkboxes.Checkbox;

/**
 * Abstract factory knows about all (abstract) product types.
 */
public interface GUIFactory {
    Button createButton();
    Button onClick();
}

Kế đến là MacOS (giả cái sử như là MacOS) có đi nha. Cái này sẽ implement GUIFactory.

package refactoring_guru.abstract_factory.example.factories;

import refactoring_guru.abstract_factory.example.buttons.Button;
import refactoring_guru.abstract_factory.example.buttons.MacOSButton;
import refactoring_guru.abstract_factory.example.checkboxes.Checkbox;
import refactoring_guru.abstract_factory.example.checkboxes.MacOSCheckbox;

/**
 * Each concrete factory extends basic factory and responsible for creating
 * products of a single variety.
 */
public class MacOSFactory implements GUIFactory {

    @Override
    public Button createButton() {
        return new MacOSButton();
    }

    @Override
    public function onClick() {
        return smt with click event
    }
}

Phía Windows factory cũng tương tự

package refactoring_guru.abstract_factory.example.factories;

import refactoring_guru.abstract_factory.example.buttons.Button;
import refactoring_guru.abstract_factory.example.buttons.WindowsButton;
import refactoring_guru.abstract_factory.example.checkboxes.Checkbox;
import refactoring_guru.abstract_factory.example.checkboxes.WindowsCheckbox;

/**
 * Each concrete factory extends basic factory and responsible for creating
 * products of a single variety.
 */
public class WindowsFactory implements GUIFactory {

    @Override
    public Button createButton() {
        return new WindowsButton();
    }

    @Override
    public function onClick() {
        return smt with click event
    }
}
Footer

Xong phần Factory, giờ là lúc hiện thực Button cho từng class. Button là common interface có method paint() để render button.

package refactoring_guru.abstract_factory.example.buttons;

/**
 * Abstract Factory assumes that you have several families of products,
 * structured into separate class hierarchies (Button/Checkbox). All products of
 * the same family have the common interface.
 *
 * This is the common interface for buttons family.
 */
public interface Button {
    void paint();
}
Footer

Lúc này ở MacButton thì khoẻ rồi. Override method và implement những gì mình thích thôi

package refactoring_guru.abstract_factory.example.buttons;

/**
 * All products families have the same varieties (MacOS/Windows).
 *
 * This is a MacOS variant of a button.
 */
public class MacOSButton implements Button {

    @Override
    public void paint() {
        System.out.println("You have created MacOSButton.");
    }
}

Xong xuôi đâu vào đấy thì ở application còn làm gì nữa đâu. Cứ gọi factory là trả ra đúng object của button cần tạo, thích button thì button, thích checkbox thì có checkbox. Rồi từ đó cứ gọi ra các method implement là xong thôi.

package refactoring_guru.abstract_factory.example.app;

import refactoring_guru.abstract_factory.example.buttons.Button;
import refactoring_guru.abstract_factory.example.checkboxes.Checkbox;
import refactoring_guru.abstract_factory.example.factories.GUIFactory;

/**
 * Factory users don't care which concrete factory they use since they work with
 * factories and products through abstract interfaces.
 */
public class Application {
    private Button button;
    private Checkbox checkbox;

    public Application(GUIFactory factory) {
        button = factory.createButton();
        checkbox = factory.createCheckbox();
    }

    public void paint() {
        button.paint();
        checkbox.paint();
    }
}
Footer

6. Ưu nhược điểm

  • Đầu tiên là với Factory pattern anh em sẽ hạn chế đụng độ giữa các class.
  • Mỗi product giờ nằm ở một nơi, chia ra rõ ràng, dễ dàng hơn để maintain sau này.
  • Open,close principles: Anh em thoải mái tạp thêm creator mới mà không cần đụng tới các methods, class cũ đã implement. ít bug hơn.
  • Sử dụng Factory pattern đôi khi làm cho code trở nên khó hiểu hơn, phức tạp. Trường hợp có nhiều subclass.

7. Tham khảo

Thank you for your time – Happy coding!

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

Cảm ơn anh em đã dành thời gian để đọc bài. Anh em có thể tham khảo thêm tin tuyển dụng IT trên TopDev để phát triển sự nghiệp.

Xem thêm:

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

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

Mediator Design Pattern – Collaborate via me

RPA Career Talk: Triển vọng và công việc của RPA Developer

RPA Developer

Tổng quan về RPA

RPA là gì?

RPA là từ viết tắt của Robotic Process Automation, nghĩa là tự động hoá quy trình bằng robot. Đây là công nghệ phần mềm được tạo ra để bắt chước hành động của con người, thực hiện các tác vụ lặp đi lặp lại nhằm tăng hiệu quả công việc.

Tự động hóa quy trình bằng Robot
Tổng quan về RPA

Cách thức hoạt động: RPA hoạt động trên tầng giao diện của trình duyệt, phần mềm… Hiểu một cách đơn giản, con người sẽ “dạy” cho robot ảo các quy trình làm việc với nhiều bước, trên nhiều ứng dụng khác nhau như: nhận form, gửi tin nhắn xác nhận, sắp xếp form vào folder, nhập dữ liệu trên form..

RPA thường được ứng dụng cho những tác vụ thủ công lặp đi lặp lại có tính quy luật, thao tác trên những dữ liệu đã được cấu trúc hoá.

Triển vọng của công nghệ RPA

Thị trường RPA được dự đoán sẽ đạt 2,9 tỷ USD vào năm 2021 theo Forrester. Đây cũng là top 10 công nghệ hot nhất trên thị trường trong những năm 2020, theo Gartner.

Con đường sự nghiệp của RPA Developer

Vì sao RPA là ngành tiềm năng?

  • Công việc không những ít bị ảnh hưởng mà còn có tiềm năng phát triển mạnh do sự tác động của COVID-19
  • Công nghệ có tốc độ tăng trưởng nhanh những năm gần đây: 2020 tăng 11.94%, 2021 tăng 19.53%… (Gartner, tháng 9/2020)
  • Cơ hội làm việc với khách hàng enterprise-level (tầng ứng dụng công nghệ cao nhất): Gartner dự đoán tới 2022, 90% công ty, tập đoàn lớn trên toàn cầu sẽ ứng dụng RPA. 2024, họ sẽ x3 năng lực ứng dụng RPA của doanh nghiệp

Từ góc độ của người trong ngành, bạn Thịnh Nguyễn đã chia sẻ rằng: Thực tế nhu cầu tự động hóa phát sinh từ chính các doanh nghiệp, họ đang trong cuộc đua chuyển đổi số và tìm giải pháp tối ưu vận hành, nhất là trong mùa dịch. Một tổ chức/ doanh nghiệp có thể ‘đặt hàng’ lên đến hàng trăm quy trình tự động hóa. Vì thế, những nhân sự công nghệ trong ngành RPA có rất nhiều tiềm năng để làm việc, hỏi học tại nhiều lĩnh vực khác nhau cùng một lúc.

Tiêu chí tuyển dụng phổ biến đối với RPA Developer là gì?

Theo anh Vũ Tùng:

RPA Solution Architect Leader – người quản lý tất cả RPA Developer của akaBot cho biết, tiêu chí tuyển dụng được phân biệt rõ ràng với hai đối tượng: Chưa có kinh nghiệm và đã có kinh nghiệm làm việc

Với người chưa có kinh nghiệm như các bạn sinh viên mới ra trường hoặc Fresher có ít hơn 1 năm kinh nghiệm thì yêu cầu bao gồm:

  • Học vấn: Tốt nghiệp các ngành liên quan đến công nghệ hoặc đã từng học qua các khóa đào tạo về lập trình & ngôn ngữ lập trình.
  • Tinh thần & thái độ: Ham học hỏi, sẵn sàng tiếp thu cái mới, tiếp thu nhanh và không ngại khó. Ngoài ra, sự tự tin, năng động và chủ động cũng là yếu tố cần thiết.
  • Khả năng ngoại ngữ: Đây là yêu cầu bắt buộc vì Developer phải nắm bắt được ý nghĩa của thuật ngữ cũng như yêu cầu từ khách hàng. Bạn có thể chuẩn bị trước tối thiểu là chứng chỉ TOEIC từ 500-600 điểm.
  • Tư duy logic: Với Fresher, trong quan điểm của nhà quản lý, các bạn cần phải tự chủ trong quá trình làm việc để bất cứ khi nào gặp vấn đề, bạn phải tư duy được cách giải quyết, từ đó đẩy nhanh công việc hơn.

Đối với những bạn đã có kinh nghiệm trong ngành RPA, có thêm các yêu cầu cao hơn:

  • Sở hữu ít nhất 1 chứng chỉ Nâng cao/ Advanced lĩnh vực RPA, được cấp bởi UiPath hoặc các nền tảng RPA khác. Càng có nhiều chứng chỉ RPA, bạn càng có lợi thế.
  • Đã có kinh nghiệm ‘chế tạo’ ít nhất 05 robot ảo. Điều này đảm bảo bạn đã có kinh nghiệm thực tế trong quá trình xây dựng, triển khai và giải quyết vấn đề với bot.
  • Về các mặt học vấn, tinh thần, tư duy và khả năng ngoại ngữ vẫn được yêu cầu tương tự như nhóm fresher, vì đây là điểm chung mà các RPA Developer phải có trong quá trình làm việc.

>> Xem thêm: Câu hỏi phỏng vấn RPA Engineer nhất định bạn phải biết!

Điểm tích cực mà các RPA Developer cải thiện được nhiều nhất sau khi gia nhập ngành là gì?

Kiến thức và kỹ năng chuyên môn là điều chắc chắn được cải thiện đầu tiên. Tuy nhiên, các kỹ năng mềm cũng được thay đổi khá đáng kể. Nếu các bạn nghĩ Developer chỉ là người ẩn mình sau các màn hình máy tính thì với RPA, các bạn Developer dần trở nên năng động, linh hoạt hơn, kỹ năng giao tiếp cũng tốt hơn rất nhiều. Cơ bản vì các bạn phải tiếp xúc với khách hàng liên tục, để cho ra những trợ lý Robot ảo đáp ứng yêu cầu tốt nhất và hoàn thiện nhất. Ngược lại, nếu các bạn thụ động, ít va chạm & giao tiếp, thì chắc chắn Robot ảo sẽ phải làm đi làm lại rất nhiều lần.

Lộ trình thăng tiến của RPA Developer

Các RPA Developer sẽ trải qua những ‘title’ sau:

Intern/Fresher > RPA Junior Developer > RPA Senior Developer > Technical Leader > Solution Architecture

Cấp bậc thăng tiến của RPA Developer

Người mới bắt đầu cần học gì để gia nhập ngành RPA?

Hiện nay có rất nhiều khóa học trên các nền tảng khác nhau như Udemy hay từ chính các RPA Platform phổ biến. Bạn có thể tìm hiểu thêm về các khóa học tại đây.

Sự phát triển của công nghệ đã và đang đem lại nhiều cơ hội rộng mở cho các bạn trẻ. Thông qua RPA Career Talk, khán giả đã phần nào hình dung rõ hơn về đặc thù công việc RPA Developer. Tuy nhiên, sẽ còn rất nhiều các câu hỏi liên quan đến lĩnh vực này, mời các bạn cùng trao đổi tại RPA Vietnam Community.

Cùng khám phá thêm những thông tin hữu ích về công việc RPA Developer và các vị trí khác với Hành Trình Nhập Môn RPA – Cuốn e-book dành riêng cho những “người ngoại đạo” yêu thích và muốn thử sức với ngành RPA, đúc kết những kinh nghiệm thực chiến từ chính đội ngũ nhân sự tại akaBot. Download e-book ngay!

Nguồn: akaBot

Xem thêm:

Thông não về các khái niệm Web1, Web2, Web3

Trí tuệ nhân tạo (Artificial Intelligence) và cơn đau tim (Heart Attack)

Java Developer là gì? Lộ trình để trở thành Java Developer

Khám phá thêm các việc làm IT hấp dẫn tại TopDev

Why Your Data is Safest in a Cloud ERP System

Businesses in today’s digital economy are struggling to protect their data from the continuous onslaught of cyberattacks. This makes many wonder: “Is cloud ERP safer than other options?” Acumatica’s VP of Product Management says the answer is “yes,” and he’ll explain why today.

Is Your Data Safe in Cloud ERP_Acumatica

Data safety is a common concern for today’s businesses—and it should be. According to an article by Tech.co, data breaches in 2022 were prolific, forcing US businesses to pay millions in damages. Combatting such data disasters is challenging, but it is possible. It all begins with implementing a secure and comprehensive ERP solution.

But businesses have a choice to make. Should they select an on-premises or a cloud-based ERP solution? Which is the safest home for their data?

Understanding the differences between the two software options can help answer these important questions.

Data Safety: Cloud Vs. On-Premises ERP Systems

Let’s start by looking at an on-premises ERP solution. It requires that a business physically purchase, maintain, and store in its own facility the hardware on which the ERP system runs. Substantial upfront and recurring costs go into storing the technology and hiring the IT staff needed to manage required operating system and database upgrades and to mitigate security/access risks. For some businesses, an on-premises ERP system causes tremendous stress, as their IT teams are constantly striving to keep the system secure and to stay ahead of incessant and increasingly elaborate cyberattacks.

In comparison, cloud-based ERP solutions allow businesses to relinquish their maintenance and security concerns to the ERP vendor. The vendor maintains the servers in its own datacenters, provides automatic software updates, upgrades the hardware as needed, and ensures that all data stored in the system is safe from today’s newest cyberattacks and most ingenious hackers. With a cloud ERP system, businesses pay a subscription fee that covers these services, which eliminates the considerable initial costs associated with on-premises ERP solutions.

Cloud ERP’s Security Capabilities

A cloud ERP solution ensures end-to-end cloud data security—from authentication to data entry, from transmitting the data to protecting it in the database. For example, cloud ERP solutions are hosted on secure platforms, like Amazon Web Services (AWS), which automatically encrypt the data that enters their global networks. They also give customers the tools to set up the processes and controls needed to comply with industry regulations (e.g., PCI DSS, HIPPA, and GDPR).

Cloud-based solutions are also designed to identify and immediately address security threats using tried-and-true methods, such as constant monitoring, frequent testing, and automatic—and regular—backups. If vulnerabilities and weaknesses do occur, the ERP vendor is responsible for finding and fixing them. For the vendor, failing to protect a business’s data results in huge monetary payouts, significant reputational damage, or both. So, it’s in the vendors’ best interest to ensure that their users’ data is safe and protected.

How Businesses Can Help Safeguard Their Own Data

Once a company has implemented a cloud ERP solution, it has taken the first and biggest step toward unrivaled security. However, even with the many cloud data security features and functionalities provided by a cloud ERP solution, businesses can—and should—play a role in safeguarding their own data.

For instance, companies should have an established access management system and protocols that help them manage employee permissions. As new users are added to the ERP system, the business must set the right permissions for these new users, thoroughly train them in proper data etiquette, and teach them to recognize cyber threats. When employees change jobs, they immediately should be assigned a new role so they get the data they need and cannot see data outside their job area. And when employees leave the company, their access permissions to the ERP system should be cancelled immediately.

Passwords are still the most common way to securely access accounts, but passwords have also become the weakest single point of security over time. Attackers have developed new ways to breach passwords much faster than ever before. Even if long, complex passwords are used, relying on a single authentication method isn’t enough. A password can be mismanaged and subsequently stolen or guessed through a specialized cyberattack.

Using multiple-factor authentication (MFA) enhances account security. According to Microsoft, 99.9% of account compromise cyberattacks can be prevented by just enabling MFA for company or personal accounts. From a corporate point of view, MFA can and should be enforced for all the accounts in an organization.

Beyond internal considerations, businesses must also remember that, as Forrester predicted for 2022, “Sixty percent of security incidents will result from issues with third parties.” Data breaches may stem from the third-party applications a company uses to manage its business operations and extend the functionality of its cloud ERP system. Or they may come through different links in the company’s supply chain—links with which the business has had to share proprietary information.

Unfortunately, though all inbound and outbound data does go through the cloud ERP system’s business logic, the ERP vendors themselves do not control all these third-party integrations or supply chain links. Businesses must regularly review the safety of their applications and establish protocols for carefully sharing information with their supply chains.

How Acumatica Can Help

To recap, on-premises ERP systems are popular with many businesses, but the data stored in these systems is vulnerable to sophisticated cyberattacks or insider mistakes. Maintaining an on-premises ERP solution’s hardware and software, managing upgrades, and researching and battling the latest viruses and malware concerns requires more time and money than most businesses can provide—particularly because these things rest squarely on the shoulders of already overextended IT teams.

But, with Acumatica’s modern cloud ERP solution, businesses can rest easy knowing their information is in the best hands and is well protected by Acumatica’s dependable layers of cloud data security. These layers are described in detail below.

  1. Access Security
    • Object-level access controls allow you to set up role-based access to specific screens, inquiries, fields, and reports.
    • Your data is protected by federated security through the use of Single-Sign-On (SSO) and Multifactor Authentications options (MFA).
  2. Data Security and Integrity
    • For every screen, inquiry, and report, you control the setup of access permissions for user accounts, sub-accounts, customers, financial accounts and much more. These permissions are automatically enforced by every screen and report.
    • Any data entered by a user, whether it is in the main program or via an API integrated function, is neither trusted nor accepted until it has been processed through every facet of Acumatica’s business logic.
  3. Application Security
    • Application code and verification logic are entirely managed on the Acumatica server. New code is introduced via highest-quality, industry-standard procedures, and regular audits ensure these processes are followed and maintained.
    • Acumatica’s hosted SaaS environment utilizes a NextGen Web Application security solution that continuously monitors and protects your information from malicious attacks that could result in a data breach.
  4. Transmission Security
    • To ensure the integrityof data packets during transmission, Acumatica encrypts all connectivity via web browser and through all API integrations.
    • For network data transmissions, Acumatica utilizes the following encryption algorithms:
      • Advanced Encryption Standard (AES) 128, 192 or 256-bit encryption
      • TLS 1.2
  5. Storage Security
    • Data stored in your Acumatica Database instance, whether on hosted SaaS or an on-premise server, is encrypted.
    • Sensitive data is only accessible through the Acumatica business logic.
  6. Physical Security
    • All application code runs on Acumatica servers, which are maintained in a professionally secured datacenter.

Acumatica customer Elena Mheidze (CFO, Erickson International) experienced firsthand the relief Acumatica’s safeguards and security layers provide.

Mheidze and her team were relying on Sage 100, which was difficult to implement and ran slowly on Erickson International’s on-premises servers. Mheidze says, “With Sage 100, we had to maintain a server, and that server had a lot of associated costs. So, removing the headache to maintain the on-premises system was the number one reason we chose to go with Acumatica.”

Today, Erickson International relies on Acumatica and AWS for automatic back up and security procedures. Says Mheidze, “Before, there were a lot of costs, maintenance, and roadblocks about security. I was constantly worried. Now, all I need is a solid internet connection to get to the ERP [solution] from anywhere.”

To learn more about how Acumatica and our hosting partners ensure 24/7 cloud data security for businesses like Erickson International, contact our experts with any questions and/or to schedule a demonstration.

Is cloud ERP safe? The answer is a resounding “yes” with Acumatica.

Get the latest cloud ERP insights, advice, and best practices all in one place to empower your mid-sized business. Click here to read more https://www.acumatica.com/blog/

Source: https://www.acumatica.com/

 Khám phá các việc làm IT hấp dẫn tại TopDev

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

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

Sau sự kiện The Merge diễn ra vào giữa tháng 9 vừa rồi, đội ngũ kỹ thuật của Ethereum đã đưa ra các thông tin quan trọng liên quan đến sự thay đổi trong kế hoạch phát triển của hệ sinh thái này. Trên trang Twitter của mình ngày 5/11, founder của Ethereum là Vitalik Buterin đã đưa ra bản roadmap mới của Ethereum cùng với 5 giai đoạn mới trong quá trình nâng cấp, cải tiến về khả năng mở rộng hậu The Merge. Bài viết này chúng ta cùng nhau tìm hiểu sâu hơn về các giai đoạn được CEO này nhắc đến nhé.

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

Quá trình nâng cấp hiệu suất và khả năng mở rộng của Ethereum gồm 6 giai đoạn: The Merge, The Surge, The Scourge, The Verge, The Purge và The Splurge. Với việc The Merge đã diễn ra đánh dấu thay đổi đầu tiên của Ethereum là chuyển đổi cơ chế đồng thuận từ POW (proof-of-work) sang POW(proof-of-state).

  Web3 techstack - Hành trang cho anh em developer

The Surge – Tăng trưởng

Giai đoạn The Surge đề cập đến việc bổ sung công nghệ sharding – một giải pháp mở rộng quy mô mà theo như đội ngũ Founder Ethereum tuyên bố sẽ tiếp tục cho phép các giao thức Layer 2 hoạt động hiệu quả hơn, giảm chi phí và giúp người dùng vận hành các node bảo mật mạng dễ dàng hơn. Một khi giai đoạn tăng trưởng này hoàn tất, mạng Ethereum cũng được hứa hẹn sẽ xử lý các giao dịch nhanh hơn.

Về mặt tốc độ giao dịch, hiện nay Ethereum có thể xử lý khoảng 15-20 giao dịch mỗi giây; sau cải tiến tốc độ kỳ vọng mang lại sẽ là con số 100.000 giao dịch mỗi giây. The Surge dự kiến sẽ được diễn ra vào năm sau 2023.

The Surge – Tăng trưởng

The Scourge – Rủi ro, tai họa

Đây là 1 giai đoạn mới được thêm vào trong roadmap lần này, mục đích của giai đoạn này là nhằm đảm bảo tính trung lập và công bằng của các giao dịch Ethereum. Như chúng ta đã biết trong các mạng lưới như Bitcoin hay Ethereum, Miner chịu trách nhiệm tổng hợp và đưa giao dịch lên block, sau đó block sẽ được xác thực bởi toàn bộ mạng lưới. Từ đó nảy sinh vấn đề liên quan đến thứ tự các giao dịch được submit on-chain, Miner lúc này được toàn quyền quyết định và họ sẽ chọn những giao dịch trả phí gas cao nhất để tối đa lợi nhuận. MEV là thuật ngữ dành để chỉ cho lợi nhuận của các thợ đào trong trường hợp này, tuy nhiên MEV hiện tại lại đến hầu hết từ các bots của bên thứ 3. Điều này tác động xấu làm trượt giá ảnh hưởng đến giao dịch Ethereum, khiến người dùng mất hàng triệu USD vì phí gas tăng.

Có lẽ nhận thức được rủi ro từ vấn đề trên mà giai đoạn The Scourge mới được thêm vào trong lần công bố này, nhằm giải quyết triệt để vấn đề MEV, tạo ra sự công bằng cho các giao dịch Ethereum.

The Scourge – Rủi ro, tai họa

Hiện tại chưa có thêm thông tin về giải pháp được đưa ra cho giai đoạn này. Tuy nhiên hiện nay có 1 số đề xuất nổi bật cho vấn đề MEV bot như: đề xuất EIP-1559, Flash bots hay Chainlink FSS. Đây thực tế là 1 trong những vấn đề nan giải nhất của blockchain, hãy chờ thêm thông tin cho giải pháp đến từ đội ngũ phát triển của hệ sinh thái này.

The Verge – Giới hạn

The Verge là giai đoạn nâng cấp mở rộng nhằm tối ưu hóa dung lượng lưu trữ trên mạng và giảm kích thước nút. Cụ thể The Verge sẽ giới thiệu Verkle Trees – 1 bản nâng cấp mạnh mẽ cho Merkle proofs, cho phép kích thước proof trở nên nhỏ hơn rất nhiều. 

Merkle proof là 1 gói các nút trên Merkle Tree cần để sử dụng cho việc kiểm tra xem dữ liệu đầu vào có thuộc Merkle Tree hay không mà không cần phải tiết lộ tất cả các dữ liệu tạo thành cây đó. Trong blockchain, Merkle Tree được sử dụng rất phổ biến nhằm xác minh các giao dịch. Verkle Tree được xem như 1 cải tiến của Merkle Tree do John Kuszmaul giới thiệu vào năm 2018, nó giúp giảm từ 6-8 lần kích thước Verkle proof so với Merkle proof. 

The Verge – Giới hạn

Các bạn có thể tham khảo trên chính blog của Vitalik Buterin để hiểu sâu hơn về thuật toán này ở đường link dưới đây:

https://vitalik.ca/general/2021/06/18/verkle.html

Hậu The Merge, sự chuyển đổi từ cơ chế PoW sang PoS đòi hỏi người dùng có 32 ETH trở lên để tham gia stake và nhận phần thưởng từ giao dịch. The Verge sẽ giúp hỗ trợ tốt hơn cho các nhà đầu tư tìm cách trở thành nhà xác thực giao dịch nhưng sở hữu ít hơn 32 ETH. Cùng với việc giới thiệu Verkle trees giúp hỗ trợ ETH trở nên mở rộng hơn. Về cơ bản thì điều này cho phép người dùng trở thành nhà xác thực mạng mà không cần phải lưu trữ lượng lớn dữ liệu trên máy của họ. 

Bạn có thể xem thêm việc làm Blockchain tại TopDev

The Purge – Thanh lọc

Đúng như tên gọi của nó, đây này là giai đoạn dọn dẹp nhằm loại bỏ một số dữ liệu lịch sử để hợp lý hóa việc lưu trữ và giảm tắc nghẽn mạng. Thông qua đề xuất EIP-4444 (đề xuất cho phép thêm bớt lịch sử cho các khách hàng Ethereum) yêu cầu các node lưu trữ ít lịch sử hơn. Điều này đang là vấn đề nóng được đưa ra bàn luận và tranh cãi khi nó sẽ loại bỏ một số chức năng cho khách hàng cũng như không còn có thể hiển thị lịch sử dữ liệu và hành vi người dùng trong quá khứ. 

The Purge – Thanh lọc

Nếu như đề xuất này chính thức được áp dụng, nó có thể tác động không nhỏ đến tổng thể mạng lưới Ethereum trong quá trình vận hành và mở rộng. Nhưng theo Buterin thì điều này là cần thiết, đòi hỏi sự hy sinh trong ngắn hạn để đạt được lợi ích lâu dài trong quá trình xây dựng 1 hệ sinh thái phi tập trung.

The Splurge – Bùng nổ

Đây là giai đoạn cuối cùng để nâng cấp Ethereum 2.0 với hàng loạt các nâng cấp và tinh chỉnh nhỏ hơn khác nhằm đảo bảo mạng hoạt động và vận hành tốt hơn so với 4 giai đoạn trước. Một số từ khóa công nghệ liên quan được đề cập đến trong giai đoạn này như: công nghệ mật mã học ZKP (Zero-knowledge proof), cơ chế đốt token EIP-1559, … Trong những dòng tweet của mình, Buterin cũng chia sẻ về sự sẵn sàng tích hợp các công nghệ mới bổ sung, đáp ứng cho sự phát triển của Ethererum nói riêng và blockchain nói chung trong tương lai.

Lời kết

Như lời của founder Buterin lưu ý đến với các nhà phát triển rằng: “sự khác biệt giữa Bitcoin và Ethereum là các Bitcoiners xem Bitcoin đã đạt 80% mức hoàn thiện, còn người Ethereans xem Ethereum đang ở mức 40%”; sẽ còn nhiều vấn đề cần hoàn thiện hơn nữa trong hệ sinh thái blockchain này. 5 giai đoạn hậu The Merge cũng sẽ chỉ là những bước đi mang tính định hướng cho tương lai do sự phức tạp của mạng và tốc độ thay đổi nhanh chóng trong không gian blockchain. Cùng chờ đợi và kỳ vọng đội ngũ phát triển Ethereum có thể hoàn thành lộ trình đề ra đáp ứng kỳ vọng mong chờ từ cộng đồng. Cảm ơn các bạn đã theo dõi bài viết của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

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

Ethereum là gì? Tìm hiểu cơ bản về Blockchain (P1)

Web3 techstack – Hành trang cho anh em developer

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

 

 

TINOHOST – ĐƠN VỊ CUNG CẤP HOSTING GIÁ RẺ HÀNG ĐẦU VIỆT NAM

TINOHOST - Đon vi cung cap hosting

Được thành lập chính thức vào năm 2019, trực thuộc Công ty Cổ phần Tập đoàn Tino, TinoHost là đơn vị cung cấp dịch vụ cho thuê hosting, máy chủ cũng như tên miền với giá thành phải chăng, phù hợp với đại đa số nhu cầu sử dụng của người dùng website tại Việt Nam. 

TINOHOST - Don vi cung cap hosting gia re

Những dịch vụ được đánh giá cao tại TinoHost

Dịch vụ hosting

TinoHost cung cấp các dịch vụ Hosting như: Hosting EPYC, Business Hosting EPYC, Cloud Hosting, Unlimited Hosting, SEO Hosting và Reseller Hosting. Trong đó, Hosting EPYCBusiness Hosting EPYC là hai sản phẩm độc quyền được cung cấp bởi TinoHost vừa “trình làng” vào tháng 8/2022.

Với nền tảng hosting cao cấp được phần cứng vượt trội: AMD EPYC thế hệ mới, ổ cứng NVMe Raid 10, Hosting EPYC và Business Hosting EPYC – hai sản phẩm do đội ngũ TinoHost thiết kế tự tin đưa website của bạn chạm mốc tốc độ nhanh nhất với hiệu suất cao nhất giúp tăng trưởng tối đa doanh thu qua website. 

TINOHOST - don vi cung cap Hosting gia re

Không chỉ chọn phần cứng cao cấp hàng đầu CPU E5 2683/2699 v3/4 – Cloud Storage 100% SSD Enterprise, Litespeed Web Server, backup hàng ngày, TinoHost còn sử dụng giải pháp bảo vệ website khỏi mã độc số 1 thế giới – Imunify360, hỗ trợ Memcached và Redis cache service thông qua giao thức Unix socket.

Dịch vụ máy chủ

Các dịch vụ máy chủ tại TinoHost là: Cloud VPS, VPS Pro, Dedicated server, …

Với hệ thống được xây dựng theo trải nghiệm riêng của người sử dụng, TinoHost đã tạo ra những chức năng gần như là tự động và dễ dàng cho các quản trị viên. Tất cả dịch vụ máy chủ tại TinoHost.com có giá rẻ nhất với cấu hình mạnh mẽ, ứng dụng công nghệ hiện đại nhất. 

Dịch vụ tên miền

TinoHost cung cấp tên miền quốc gia .VN và tên miền quốc tế với mức phí ưu đãi nhất thị trường nhưng vẫn đảm bảo đầy đủ các dịch vụ đi kèm. Ở đâu rẻ hơn, liên hệ ngay với TinoHost để nhận ưu đãi. 

Sản phẩm của TinoHost bán được trên toàn cầu, không giới hạn ở Việt Nam. Bạn sẽ toàn quyền quản lý, hệ thống bảo mật 2 lớp xác thực qua điện thoại. 

Để hỗ trợ tốt nhất cho anh chị SEO-ER chuyên nghiệp, TinoHost có dịch vụ Mua domain theo gói. Khi mua một lúc nhiều Extension (tld) khác nhau, người dùng sẽ được nhận mức giá siêu ưu đãi.

7 lý do bạn nên chọn TinoHost

  1. Với đội ngũ nhân sự với nhiều năm kinh nghiệm trong lĩnh vực cung cấp dịch vụ hosting, máy chủ, tên miền và email doanh nghiệp, TinoHost sẽ tặng thêm một tháng sử dụng dịch vụ cho khách hàng nếu ticket hỗ trợ trên 5 phút. Đây là cam kết tuyệt đối mà chưa có nhà cung cấp nào dám đảm bảo. 
  2. 7 ngày dùng thử không cần thanh toán. Cam kết hoàn tiền 100% trong 30 ngày nếu quý khách không hài lòng.
  3. Cơ hội sử dụng VPS giá rẻ: sở hữu thông số VPS có IOPS lớn đi kèm DirectAdmin với giá thành thấp nhất thị trường. 
  4. Gói Unlimited Hosting cung cấp nền tảng lưu trữ không giới hạn mang đến những khả năng vượt trội cho website. Quản lý lưu trữ hiệu quả sẽ giúp doanh nghiệp phát huy tối đa tiềm năng và nội lực sẵn có.
  5. Tên miền giá thấp nhất Việt Nam.
  6. Cấu hình mạnh mẽ, ứng dụng công nghệ hiện đại nhất.
  7. Liên tục đưa ra nhiều giải pháp sáng tạo mang lại giá trị tốt nhất cho người dùng: phát triển dựa trên nền tảng Cloud Storage, giải quyết hoàn toàn vấn đề lây lan mã độc trên cùng 1 hệ thống máy chủ với Imunify360 và Cloudlinux, tối ưu tốc độ khi hỗ trợ Memcached/Redis qua Unix socket, … 

TINOHOST - don vi cung cap Hosting gia re

Sau hơn 3 năm hoạt động, đến nay, Tino Host đã trở thành một trong những nhà cung cấp hosting hàng đầu Việt Nam, nhận được đánh giá cao từ phía người dùng nhờ những điểm sáng về dịch vụ. Với mong muốn mang đến cho người dùng website cảm giác trải nghiệm tốt nhất, TinoHost được xây dựng trên nền tảng những giá trị cốt lõi: đặt khách hàng ở vị trí trung tâm, chú trọng đào tạo nhân sự “có tâm và có tầm”. Không ngừng cải thiện để nâng cao chất lượng dịch vụ, TinoHost tự tin mang lại những giải pháp công nghệ tiên tiến, tạo ra những giá trị kinh doanh nhất định cho các công ty, doanh nghiệp hàng đầu hiện nay trong hành trình vươn mình ra thế giới.

———————

CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO

Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn, Phường Bến Nghé, Quận 1, Thành phố Hồ Chí Minh

Văn phòng đại diện: 42 Trần Phú, Phường 4, Quận 5, Thành phố Hồ Chí Minh

Điện thoại: 0364 333 333

Tổng đài miễn phí: 1800 6734

Email: sales@tino.org

Website: www.tino.org

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

Xem thêm:

Chuyển Hosting bao lâu thì mới cập nhật?

13 hosting miễn phí dành cho lập trình viên

Tạo website với Firebase Hosting

PangoCDP – Giải pháp cho trải nghiệm khách hàng đặc biệt

Giai phap PangoCDP

Thấu hiểu hành vi người dùng qua dữ liệu là một điều quan trọng để giúp bạn tạo ra sự khác biệt cho sản phẩm, dịch vụ của mình. PangoCDP – Nền tảng dữ liệu khách hàng mạnh mẽ chính là một trong những giải pháp mà bạn cần để mang lại những trải nghiệm đặc biệt cho người dùng dựa trên định hướng dữ liệu.

Con người là yếu tố quan trọng của một sản phẩm

Con người chính là yếu tố trung tâm của bất kỳ sản phẩm nào bởi nó được tạo ra để cho con người sử dụng. Vì vậy, dù là ai, trong vai trò nào, đặc biệt là những kỹ thuật viên, IT hay UX-UI giúp góp phần xây dựng, phát triển và duy trì một sản phẩm công nghệ cũng cần quan tâm đến nhu cầu và trải nghiệm người dùng.

Chính vì thế, việc hiểu người dùng là ai, họ đến từ đâu, họ mong muốn gì dựa trên định hướng dữ liệu là một điều quan trọng đối với những người nghiên cứu và tạo ra sản phẩm.

Tuy nhiên, vấn đề lớn mà mọi người đều đang gặp phải trong việc thu thập và phân tích dữ liệu người dùng đó là: Nguồn dữ liệu lớn thường bị phân mảnh và lưu trữ rời rạc từ nhiều hệ thống riêng biệt, dữ liệu hỗn độn và không đồng nhất khiến chúng ta mất nhiều thời gian trong việc xử lý để hiểu được hành vi của người dùng và đánh giá nhằm tối ưu sản phẩm.

PangoCDP – Nền tảng dữ liệu mạnh mẽ giúp xây dựng trải nghiệm khách hàng tối ưu

Giải pháp tối ưu giúp doanh nghiệp giải quyết được những rắc rối về dữ liệu từ đó hiểu hơn về người dùng, chính là Pango CDP – Nền tảng dữ liệu khách hàng mạnh mẽ.

PangoCDP là gì?

Thuật ngữ Customer Data Platform hay CDP được David Raab đặt ra vào năm 2013. Đến năm 2018, thuật ngữ này đã được chấp nhận và sử dụng rộng rãi, đặc biệt là trong giới Marketing và Công nghệ.

PangoCDP là nền tảng giúp thống nhất dữ liệu khách hàng (Unify Customer) trên tất cả các điểm tiếp xúc từ Online đến Offline (Touchpoints) vào một nền tảng duy nhất (All Data One Place). Từ đó cung cấp những thông tin chi tiết và có ý nghĩa, giúp mang đến trải nghiệm nhất quán, có mục tiêu, phù hợp với ngữ cảnh và từng đối tượng khách hàng trên các kênh. Đây là cơ sở để doanh nghiệp phát triển bền vững dựa trên định hướng dữ liệu (Data-Driven).

PangoCDP - Nền tảng dữ liệu khách hàng mạnh mẽ
PangoCDP – Nền tảng dữ liệu khách hàng mạnh mẽ

PangoCDP giúp sử dụng và tối ưu dữ liệu khách hàng như thế nào?

  1. Tập hợp toàn bộ dữ liệu về mọi tương tác của khách hàng từ Online đến Offline vào một nơi an toàn duy nhất.
  2. Chuẩn hóa và chuyển đổi dữ liệu đó bằng cách đối sánh danh tính khách hàng cá nhân từ mỗi hệ thống (định danh khách hàng) và kết hợp chúng lại để tạo thành một hồ sơ khách hàng nhất quán, chính xác. Cung cấp bức tranh toàn cảnh 360 độ về hồ sơ khách hàng.
  3. Phân khúc khách hàng mạnh mẽ theo thời gian thực. Từ đó, bạn có thể xây dựng trải nghiệm sản phẩm phù hợp cho từng phân khúc khách hàng chỉ với vài thao tác đơn giản trên giao diện mà không phải phụ thuộc vào các phòng ban khác.
  4. Tích hợp sẵn hơn 20 kết nối tới các kênh Digital phổ biến nhất, giúp bạn hoàn toàn chủ động trong việc tương tác trực tiếp với khách hàng.

Tóm lại, PangoCDP sẽ giúp doanh nghiệp mang đến giá trị trải nghiệm cao cho khách hàng theo ngữ cảnh tức thì. Hơn hết, PangoCDP sẽ cho phép bạn tạo ra những trải nghiệm đáng nhớ cho khách hàng (Customer Experience) một cách hiệu quả.

Đăng ký sử dụng dịch vụ PangoCDP ở đâu?

VietGuys sẽ là người đồng hành đáng tin cậy nhất dành cho bạn khi lựa chọn sử dụng dịch vụ PangoCDP –  Nền tảng dữ liệu khách hàng mạnh mẽ.

Theo đó, VietGuys hiện đang là đối tác được đầu tư chiến lược từ công ty Accrete, Nhật Bản và là đơn vị cung cấp các Giải pháp Tiếp thị trên Di động (Mobile Marketing Solutions) toàn diện cho hơn 5,000 nhãn hàng trong và ngoài nước như Pharmacity, Concung, Vietnam Airlines, Thegioididong, CGV, Garena, Grab, Shopee, Samsung, LG,…

PangoCDP là giải pháp được hợp tác thương mại giữa VietGuys và ByteTech. Trong đó, ByteTech giữ vai trò sở hữu và phát triển hệ thống sản phẩm. VietGuys giữ vai trò phát triển thương mại, hỗ trợ giới thiệu và kết nối khách hàng quan tâm sử dụng giải pháp PangoCDP, một trong những giải pháp trong hệ sinh thái của ByteTech.

Trải qua hơn 15 năm đồng hành cùng doanh nghiệp, VietGuys sẽ biết cách giúp bạn tạo ra trải nghiệm khách hàng đặc biệt với giải pháp PangoCDP. Từ đó giúp củng cố và phát triển thương hiệu, tạo mối quan hệ gắn kết bền vững với khách hàng.

Xem thêm:

9 câu hỏi phỏng vấn Frontend Developer có thể bạn chưa biết

Ứng dụng thuật toán và cấu trúc dữ liệu lúc đi làm

Cách tuần tự hóa dữ liệu trong Java như Protobuf

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

Google Cloud hướng tới hỗ trợ tất cả dữ liệu phi cấu trúc

Google Cloud hướng tới hỗ trợ tất cả dữ liệu phi cấu trúc

Điện toán đám mây (Cloud Computing) được xem như là 1 giải pháp toàn diện cho các chủ doanh nghiệp trong việc xây dựng cơ sở hạ tầng về CNTT thông qua Internet. Hiện nay lĩnh vực này đang là cuộc cạnh tranh khốc liệt giữa các ông lớn như Google, Amazon hay Microsoft. Trong nỗ lực cải thiện chất lượng lưu trữ dữ liệu của mình, mới đây Google đã giới thiệu công cụ Big Lake cùng với những cam kết hỗ trợ tất cả các định dạng dữ liệu phi cấu trúc trên nền tảng Google Cloud.

Vậy nên, việc liên tục update những cải tiến mới về Google Cloud sẽ là một lợi thế cho các Devops Engineer. Ở bài viết này chúng ta cùng đi tìm hiểu về những nội dung cập nhật trên để xem Google đã có bước tiến thế nào trong lĩnh vực điện toán đám mây này nhé.

GCP, GCB, Big Lake là gì?

Google Cloud Platform (GCP) là một nền tảng điện toán đám mây (Cloud Computing) do Google cung cấp, bao gồm gần 100 dịch vụ được lưu trữ để tính toán, lưu trữ và phát triển ứng dụng chạy trên phần cứng của Google.

GCP cho phép các doanh nghiệp, tổ chức xây dựng và chạy các ứng dụng của mình trên chính hệ thống mà Google cung cấp, đồng thời được sử dụng tất cả các dịch vụ thiết yếu của Google bao gồm Big Data, Storage, Compute Engine, Networking, Developer Tool, …

Cùng với Azure của Microsoft và AWS của Amazon, GCP là 1 trong 3 nền tảng điện toán đám mây hàng đầu hiện nay cho việc phân phối các tài nguyên CNTT theo nhu cầu thông qua Internet.

Google Cloud Big Query (GCB) là 1 công cụ nội bộ của Google dùng để truy vấn một khối lượng dữ liệu khổng lồ trên nền tảng hạ tầng của chính Google. GCB được xem như 1 data warehouse có khả năng mở rộng cao, Google thiết kế chúng để giúp các nhà phân tích dữ liệu làm việc nhanh và hiệu quả hơn với 1 chi phí hợp lý, thay vì việc phải tự xây dựng 1 cơ sở hạ tầng có sẵn cho riêng từng doanh nghiệp.

Trong hội nghị dữ liệu đám mây diễn ra vào tháng 4/2022 vừa qua, Google đã công bố bản phát hành của Big Lake, 1 công cụ lưu trữ hợp nhất mới giúp hỗ trợ các doanh nghiệp trong việc phân tích dữ liệu trong kho data warehouse và data lake của họ 1 cách dễ dàng hơn. Khái niệm Data Lake dùng để chỉ hình thức lưu trữ dữ liệu bao gồm cả loại dữ liệu phi cấu trúc và có cấu trúc từ nhiều nguồn khác nhau; phân biệt với hình thức Data Warehouse trong bài toán lưu trữ dữ liệu lớn (Big Data). 

Ý tưởng cốt lõi của Google là việc tận dụng khả năng hoạt động và quản lý dữ liệu kho (warehouse) Big Query mở rộng sang data lakes trên Google Cloud Storage để có thể kết hợp thành 1 dịch vụ duy nhất. 

GCP, GCB, Big Lake là gì?

BigLake hỗ trợ chính thức Apache Iceberg

BigLake lúc ra mắt đã hỗ trợ người dùng lưu trữ dữ liệu ở các định dạng file mở, chẳng hạn như Apache Parquet – 1 định dạng dữ liệu theo cột.

Trong nỗ lực tiếp tục hỗ trợ các loại dữ liệu phi cấu trúc của mình, cuối tháng 10 vừa rồi trong 1 thông báo tại hội nghị Google Cloud Next, Google chính thức thông báo hỗ trợ định dạng Apache Iceberg – 1 định dạng hiệu suất cao mã nguồn mở cho các bảng phân tích khổng lồ. Ice berg là 1 định dạng mã nguồn mở phổ biến cho khách hàng đang tìm cách xây dựng các Data Lakes, nó cung cấp nhiều tính năng sẵn có trong kho dữ liệu (data warehouse). 

Link bài thông báo của Google Cloud:

https://cloud.google.com/blog/products/data-analytics/announcing-apache-iceberg-support-for-biglake

BigLake hỗ trợ chính thức Apache Iceberg

Đặc điểm kỹ thuật mở của Iceberg cho phép khách hàng chạy nhiều công cụ truy vấn trên 1 bản sao dữ liệu duy nhất được lưu trữ. Với sự hỗ trợ từ cộng đồng thì định dạng Apache Iceberg đang trở thành 1 tiêu chuẩn cho data lakes, mang lại khả năng tương tác trên các cloud cho công việc phân tích dữ liệu kết hợp với các hệ thống trao đổi dữ liệu.

Tiếp theo sẽ là Hudi và Delta Lake

Cũng trong thông báo trên của mình, Google Cloud cũng đã hứa hẹn việc sẽ hỗ trợ thêm các định dạng dữ liệu Hudi và Delta Lake trên công cụ Big Lake trong tương lai, mặc dù chưa có kế hoạch chính thức cho thời điểm hỗ trợ. Apache Hudi là 1 framework quản lý dữ liệu mã nguồn mở được sử dụng để đơn giản hóa quá trình xử lý dữ liệu gia tăng và phát triển dữ liệu pipeline. Delta Lake là 1 lớp định dạng lưu trữ mã nguồn mở mang lại độ tin cậy, bảo mật và hiệu suất tốt hơn trên data lake, bao gồm cả các xử lý streaming. Theo như số liệu của viện nghiên cứu Ventana, có hơn 57% những người sử dụng data lakes đang sử dụng ít nhất một trong những định dạng dữ liệu bảng Iceberg, Hudi hay Delta. Việc BigLake GCP hỗ trợ được cả 3 định dạng dữ liệu trên hứa hẹn mang đến nhiều tiện ích cho người sử dụng trong việc xử lý dữ liệu. Các đối thủ của Google Cloud cũng đã hoặc đang có kế hoạch về việc công bố hỗ trợ các định dạng trên trong hội nghị thường niên CloudWorld sắp tới.

Định dạng dữ liệu Hudi và Delta Lake trên công cụ Big Lake

Big Query hỗ trợ dữ liệu phi cấu trúc

Một điểm cập nhật đáng chú ý nữa từ Cloud Next, Google cũng đã thêm các tính năng mới vào kho dữ liệu doanh nghiệp được quản lý của mình – Big Query – bao gồm việc bổ sung hỗ trợ cho dữ liệu phi cấu trúc. Theo Google, chỉ 10% dữ liệu mà các doanh nghiệp sử dụng và tạo ra là nhóm dữ liệu có cấu trúc – đấy là các dữ liệu hoạt động, các ứng dụng SaaS hay dữ liệu bán cấu trúc lưu dưới dạng JSON. Dữ liệu phi cấu trúc chiếm đa số gồm các video, âm thanh và các tài liệu ở định dạng khác nhau, do đó các doanh nghiệp phải đối mặt với việc nhu cầu làm việc với dữ liệu phi cấu trúc ngày càng tăng. Động thái này của Google được xem như 1 sự khác biệt với các nền tảng Cloud khác, nó giúp tạo ra 1 nền tảng duy nhất hứa hẹn đơn giản hóa mọi thứ cho các nhà khoa học dữ liệu và phát triển khi sử dụng.

Kết bài

Trong lĩnh vực điện toán đám mây Cloud Computing hiện nay, thị phần của Google Cloud vẫn đang xếp sau khá nhiều so với Azure của Microsoft và đặc biệt là AWS của Amazon.

AWS vs Azure vs Google Market Share

Với những động thái tích cực, cải tiến việc hỗ trợ nhiều định dạng dữ liệu phi cấu trúc trên, hy vọng sẽ là bước phát triển tốt của Google Cloud nhằm chiếm lấy thị phần trong thị trường Cloud hiện nay. Điều quan trọng là người sử dụng ngày càng có nhiều công cụ và tiện ích hơn trong việc phát triển hạ tầng và phân tích dữ liệu trên các nền tảng đám mây. Hy vọng bài viết này đã mang lại cho các bạn những thông tin hữu ích, hẹn gặp lại các bạn trong các bài viết sau của mình.

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

Tác giả: Phạm Minh Khoa

Xem thêm:

Java Developer là gì? Lộ trình để trở thành Java Developer

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

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

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

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

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

useWindowSize

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

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

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

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

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

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

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

useQueryString hay usePushQueryString

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

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

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

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

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

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

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

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

  return handlePushLocationSearch;
}

export default usePushQueryString;

useScrollToTop

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

import React, { useLayoutEffect } from 'react'

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

export default useScrollToTop

useCookie

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

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

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

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

  return [item, setValue];
}

export default useCookie;

usePrevious

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

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

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

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

useFetch

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

import { useState, useEffect } from "react";

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

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

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

  return { data, error };
}

Kết bài

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

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

Tác giả: Phạm Minh Khoa

Xem thêm:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

lap trinh lap trinh vien

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AGENDA HỘI THẢO

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Thumnail-VWS2022

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

Vietnam Web Summit 2022

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

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

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

Vietnam Web Summit 2022 - pic1

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

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

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

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

Vietnam Web Summit 2022 - pic2

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

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

Vietnam Web Summit 2022 - pic3

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

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

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

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

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

Xem thêm:

 

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

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

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

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

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

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

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

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

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

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

Kiểu error

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

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

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

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

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

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

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

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

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

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

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

math: square root of negative number.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kết luận

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

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

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

Xem thêm:

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

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

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

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

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

JavaScript là gì?

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

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

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

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

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

Nguồn: miro.medium.com

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

nodejs framework

Nguồn:hackr.io/blog

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

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

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

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

mobile framework

Nguồn: discoversdkcdn.azureedge.net

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

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

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

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

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

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

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

  Giới thiệu Fetch API trong Javascript

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

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

JavaScript là gì

Nguồn:blog.eduonix.com

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

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

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

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

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

Kết bài

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

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

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

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

Tác giả: Phạm Minh Khoa

Xem thêm:

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