Categories
Dev's Corner

Ruby on rails là gì? Các web học Ruby on rails miễn phí mà chất lượng

Ruby on Rails là gì?

Ruby on Rails (đôi khi là RoR) là khung ứng dụng web mã nguồn mở phổ biến nhất.

Ruby on Rails là gì?
Ruby on Rails là gì? Ảnh: onix-systems

Nó được xây dựng bằng ngôn ngữ lập trình Ruby.

Bạn có thể sử dụng Rails để giúp bạn xây dựng các ứng dụng, từ đơn giản đến phức tạp, không có giới hạn nào cho những gì bạn có thể làm với Rails!

Khung là gì?

Khung là một tập hợp mã, công cụ và tiện ích cung cấp cho bạn một cấu trúc cụ thể để làm việc khi bạn viết phần mềm.

Cấu trúc này làm cho code của bạn có tổ chức hơn.

Công việc của bạn trở nên dễ dàng khi bạn học cách sử dụng nó một cách chính xác.

Ruby on Rails chính xác làm gì?

Rails giúp bạn xây dựng website.

Loại website mà bạn sử dụng hàng ngày.

Các website cho phép bạn đăng nhập, để lại nhận xét và đánh giá, mua hàng…

Rails được làm từ một số thành phần để tạo điều kiện thuận lợi cho việc này.

Ví dụ:

Active Record giúp bạn đọc, tạo và cập nhật các bản ghi trong cơ sở dữ liệu của mình mà không cần phải là một thiên tài về cơ sở dữ liệu.

Trong khi cơ chế định tuyến cho phép bạn dễ dàng ánh xạ URL (như /login) với các hành động cụ thể.

Nếu bạn phải code tất cả những thứ này từ đầu, không có khung, thì đó sẽ là một khối lượng công việc KHỔNG LỒ.

Rails xử lý tất cả những chi tiết này cho bạn…

Vì vậy, bạn có thể tập trung vào việc xây dựng các ứng dụng của riêng mình!

Ví dụ về ứng dụng Ruby on Rails

Ai đang sử dụng Rails?

Đây là một vài ví dụ về các trang web Ruby on Rails

Đây là một số:

  • Github
  • Shopify
  • Ask.fm
  • Kickstarter
  • Viết nguệch ngoạc
  • ConvertKit
  • Twitch
  • Instacart
  • Zendesk
  • SoundCloud

Đây không phải là những công ty nhỏ!

Và tất cả họ đều được hưởng lợi từ việc sử dụng Ruby on Rails để phục vụ khách hàng của mình.

Bạn có nên học Ruby on Rails?

Nếu bạn đang tìm kiếm một sự nghiệp đầy thử thách, vui vẻ và sáng tạo trong việc xây dựng website tuyệt vời giúp ích cho mọi người thì Ruby on Rails có thể dành cho bạn.

Bất kỳ ai cũng có thể học Rails, ngay cả khi bạn chưa có kinh nghiệm lập trình.

Có thể mất nhiều thời gian hơn hoặc ít hơn tùy thuộc vào vị trí của bạn.

Nhưng mọi kỹ năng đều CÓ THỂ được học và làm chủ.

Những lợi ích của việc sử dụng Rails:

  • Đó là một giải pháp tích hợp. Rails cung cấp cho bạn mọi thứ bạn cần để tạo một ứng dụng web.
  • Các quy ước và cấu hình mặc định của Rails giúp bạn tiết kiệm rất nhiều công việc!
  • Rails có một hệ sinh thái tuyệt vời để bạn có thể tìm thấy tất cả các công cụ và hỗ trợ mà bạn có thể cần
  • Nó đang được phát triển tích cực, vì vậy bạn thường xuyên nhận được các bản sửa lỗi và các tính năng mới!

Và lý do tốt nhất của tất cả:

“Bạn nên sử dụng Ruby, thứ ngôn ngữ đẹp và sang trọng nhất mà tôi chưa từng gặp”

– DHH, cha đẻ Ruby on Rails

Triết lý Rails

Ruby on Rails là một khung dựa trên quy tắc.

Một trong quy tắc đó là ‘quy ước quan trọng hơn cấu hình’.

Điều đó nghĩa là gì?

Điều đó có nghĩa là bạn phải đưa ra ít quyết định hơn vì những người tạo ra Rails đã đưa ra những quyết định đó cho bạn.

Bởi vì bạn phải đưa ra ít quyết định hơn, bạn sẽ năng suất hơn và hoàn thành công việc nhanh hơn.

Nhưng nếu bạn muốn thay đổi một số trong số này, bạn vẫn có thể.

Một số ví dụ về ‘quy ước cao hơn cấu hình’?

Rails tìm kiếm các tên tệp cụ thể khi tìm kiếm code của bạn.

Ví dụ: nếu bạn có mô hình Book, Rails sẽ tìm kiếm một tệp có tên là app/models/book.rb.

Đó là quy ước.

Thay vì phải nói: “Này Rails, đây là nơi để tìm tệp này”

Rails cho bạn biết nó phải ở đâu.

Tổng quan về Rails

Làm thế nào để Rails phù hợp với bức tranh toàn cảnh của một ứng dụng web hoàn chỉnh?

Tôi vẽ cái này để bạn dễ hiểu:

Tổng quan về Rails
Tổng quan về Rails

Rails nhận các yêu cầu, định tuyến chúng đến hành động thích hợp, sau đó tương tác với cơ sở dữ liệu (thông qua ActiveRecord) để thực hiện yêu cầu. Sau đó, nó trả về kết quả (HTML hoặc JSON) cho người dùng.

Nếu bạn muốn xem kỹ thành phần Rails, chúng ta phải có một chút kỹ thuật.

Rails sử dụng kiến trúc MVC.

MVC là viết tắt của Model, View, Controller.

Đây là minh họa:

Kiến trúc MVC
Kiến trúc MVC

Các hành động được tổ chức thành các bộ điều khiển (controller), các bộ điều khiển ra quyết định về cách xử lý yêu cầu và chúng yêu cầu cơ sở dữ liệu cung cấp bất kỳ dữ liệu nào mà mình cần.

Sau đó, bộ điều khiển hiển thị chế độ xem.

Chế độ xem là thiết kế và nội dung của trang.

Đây là sản phẩm cuối cùng sẽ được trả lại cho người dùng.

Ai đã phát minh ra Ruby on Rails?

David Heinemeier Hansson (DHH) đã phát hành Ruby on Rails 1.0 vào tháng 12 năm 2005.

Gần 14 năm sau, David vẫn đang làm việc trên Rails với một nhóm lớn các cộng tác viên mã nguồn mở để làm cho nó tốt hơn và nhanh hơn.

Tại sao anh ấy lại tạo ra Rails?

“Tôi tạo Rails vì tôi muốn tận hưởng những gì mình làm”

DHH

Ruby vs. Ruby on Rails

Ruby là một ngôn ngữ lập trình.

Ruby on Rails là một khung công tác được xây dựng trên nền tảng của Ruby.

Có gì khác biệt?

Ruby là thứ chuyển đổi code (bao gồm cả Rails) thành thứ mà máy tính của bạn có thể hiểu.

Rails là một lớp trên của Ruby. Một lớp giúp bạn xây dựng các ứng dụng web.

Nhưng bản thân Ruby có thể làm được nhiều hơn thế, nó là một ngôn ngữ lập trình rất mạnh.

Dưới đây là một số điều bạn có thể làm:

  • Bạn có thể thu thập thông tin và tìm kiếm các trang web để trích xuất thông tin
  • Bạn có thể tự động hóa các tác vụ như sao lưu, cảnh báo và thông báo
  • Bạn có thể xây dựng tất cả các loại công cụ và tiện ích, như trình phân tích cú pháp nhật ký, trình quét bảo mật, phân tích nội dung tệp…

Bài học rút ra là:

Rails làm cho Ruby trở thành một nền tảng thực sự tốt để xây dựng các ứng dụng web, nhưng vẫn có một hệ sinh thái mạnh mẽ các chương trình không phải Rails được xây dựng bằng Ruby.

Làm thế nào để học Rails

Đây là sai lầm lớn nhất mà nhiều người mắc phải, nhưng bạn có thể tránh nó nếu bạn hiểu điều này:

Hãy tìm hiểu các khái niệm lập trình chung và ngôn ngữ lập trình Ruby trước. Rồi hãy nhảy vào Rails!

Lý do rất đơn giản.

Bạn KHÔNG THỂ bắt đầu xây một ngôi nhà từ mái được…

Nếu bạn không hiểu cơ sở về cách Rails hoạt động, bạn sẽ bị rối hàng.

Khi bạn thấy thông báo lỗi, nó sẽ như thể tiếng nước ngoài.

Và điều đó sẽ RẤT khó chịu đối với bạn.

Giải pháp?

Bắt đầu bằng cách học Ruby.

Hãy kiên nhẫn, hãy chắc rằng bạn sẽ học tốt mọi thứ.

6 Website miễn phí giúp bạn học Ruby on Rails

Dưới đây là tổng quan các website học Ruby on Rails miễn phí giúp bạn thiết lập và viết code nhanh chóng.

1. Codecademy

Codecademy là một trong những trường dạy code trực tuyến nổi tiếng nhất cung cấp các khóa học lập trình miễn phí.

Trang web bao gồm các hướng dẫn riêng biệt cho cả Ruby và Rails, và khi hoàn thành, bạn sẽ xây dựng được tám ứng dụng web đầy đủ chức năng.

2. The Ruby on Rails Tutorial

Nếu phong cách của bạn là đọc, chắc chắn bạn sẽ bị cuốn hút vào Hướng dẫn về Ruby on Rails của Michael Hartl.

Ngay cả khi bạn chưa bao giờ lập trình một dòng Ruby nào, cuốn sách của Hartl sẽ dạy bạn cách xây dựng “các ứng dụng web thực sự, có sức mạnh công nghiệp”.

Ấn bản gần đây nhất của cuốn sách đã được cập nhật cho Rails 5, vì vậy bạn được đảm bảo sẽ tìm hiểu các phương pháp RoR cập nhật nhất.

Sách có sẵn miễn phí trực tuyến, nhưng mẹo là: mua sách điện tử và bạn cũng sẽ có quyền truy cập vào các video độc quyền.

3. Try Ruby

Try Ruby, giống như Codecademy, là một trang web tương tác dành cho người mới bắt đầu sử dụng Ruby on Rails cho phép bạn lập trình trong trình duyệt của mình.

Nhưng không giống như Codecademy, nó có một phong cách siêu vui nhộn và dễ tiếp cận.

Tất cả những gì cần làm là hoàn thành một loạt các bài tập ngắn và bạn sẽ nắm được những kiến ​​thức cơ bản về ngôn ngữ Ruby.

4. Ruby Koans

Bạn nghĩ rằng bạn đã là một chuyên gia Ruby? Hãy thử Ruby Koans.

Trong Thiền tông, công án là một câu hỏi hoặc một câu nói nghịch lý nhằm khơi gợi sự suy nghĩ của người nghe.

Trong Ruby Koans, mỗi “công án” là một bài tập viết code phức tạp đòi hỏi bạn phải sử dụng kiến ​​thức về Ruby để chương trình hoạt động chính xác.

Các bài tập được sắp xếp thành một loạt các bài kiểm tra mà bạn cần vượt qua để tiếp tục xây dựng với khung web Rails.

5. Rails for Zommbie

Rails for Zombies là bản sao của hướng dẫn Try Ruby.

Sử dụng video hướng dẫn và định dạng tương tác, giống như trò chơi, khóa học Rails for Zombies giúp bạn học Rails từ đầu thông qua một loạt các bài tập lập trình.

Tác giả của khóa học nổi tiếng vì đã giúp xây dựng Envy Labs, Starter Studio và Code School, và bản dùng thử miễn phí 10 ngày sẽ giúp bạn bắt đầu và sử dụng trước khi bạn biết điều đó.

6. Roadmap for Learning Rails

Vì vậy, bạn đã thử Rails với một số tài nguyên khác, nhưng bạn đã thực sự sẵn sàng sử dụng nó trong production chưa?

Lộ trình Học Rails sẽ giúp bạn nắm vững RoR và phát triển web back-end — và đó không phải là tất cả.

Trang web phác thảo tất cả các khái niệm quan trọng nhất mà bạn cần biết để thành công trong sự nghiệp phát triển phần mềm, không chỉ bao gồm Ruby on Rails mà còn cả HTML / CSS, JavaScript, Git, Heroku và SQL.

Nguồn: RubyGuides, Fullstack Academy

Categories
Dev's Corner

Lộ trình trở thành Full stack developer: 6 Bước trọng yếu

Full-stack developer là một kỹ sư (engineer) có thể xử lý tất cả các việc như cơ sở dữ liệu, máy chủ, thiết kế hệ thống và khách hàng.

Là một trong những chủ đề nóng nhất trong giới developer, các thảo luận chưa bao giờ dừng lại.

Trên LinkedIn và Facebook, rất nhiều người đặt chức danh cho mình là full stack developer. Bên cạnh đó, dường như “Full Stack” đã trở thành một xu hướng việc làm mới.

Một bài báo trên Medium thảo luận về full stack designer đã nhận được cả khen ngợi lẫn chê trách. Một số người cho rằng full stack chỉ là một chức danh, cái mà người đó nên tập trung là thực lực cá nhâncông nghệ.

Về cơ bản, tôi nghĩ thảo luận về full stack cũng là một loại tranh luận liên quan đến những người toàn diện và chuyên gia trong ngành CNTT, và tranh luận về độ sâu rộng của kỹ năng development.

Bạn không thể vừa muốn có cái bánh, vừa muốn ăn bánh được. Nhưng full stack developer full stack designer có vẻ như đang thách thức khả năng này. Bởi vì cây kỹ năng theo chiều ngang mang lại cho họ khả năng vừa có bánh, vừa ăn được bánh.

Có một câu nói khác là cái gì cũng biết, nhưng không biết cái gì sâu. Vậy nên, cần phải suy nghĩ về cách trở thành một full stack developer thực thụ chứ không phải một chức danh trống rỗng.

Vậy Full stack developer là gì?

Cây kỹ năng theo bề ngang của Full stack developer
Cây kỹ năng theo bề ngang của Full stack developer. Ảnh: hackernoon

Nói một cách đơn giản, full stack developer là kiểu người thành thạo nhiều kỹ năng và sử dụng những kỹ năng này để hoàn thành sản phẩm một cách độc lập.

1 câu trả lời được bình chọn nhiều nhất trên Quora khi giải thích một full stack developer là gì:

Full-stack developer là một kỹ sư (engineer) có thể xử lý tất cả các việc như cơ sở dữ liệu, máy chủ, thiết kế hệ thống và khách hàng.

Tùy vào dự án, những gì khách hàng cần có thể là các stack mobile, Web hoặc native app.

Trên thực tế, “full stack” đề cập đến tập hợp các công nghệ cần thiết để hoàn thành dự án.

“Stack” đề cập đến tập hợp các mô-đun con. Các mô-đun con hoặc thành phần phần mềm này kết hợp với nhau để đạt được chức năng đã thiết lập mà không cần đến các mô-đun khác.

Tại sao full stack developer lại được thảo luận đầy tranh cãi?

Như đã đề cập ở trên, thảo luận về full stack developer thực sự là cuộc tranh luận về độ sâu rộng của các kỹ năng.

Đặc biệt tại hội nghị OSCON, một kỹ sư của Facebook cho biết họ chỉ thuê một “full stack developer” mà thôi.

Chủ đề này là kết quả của một cuộc thảo luận sôi nổi về ưu và nhược điểm của việc trở thành một full stack developer.

Điểm mạnh

Các full stack developer tham gia vào một yêu cầu kỹ thuật theo chiều ngang, vì vậy họ có thể tạo thiết kế nguyên mẫu cho một sản phẩm rất nhanh chóng nhờ kỹ thuật đa dạng của mình.

Với khả năng full stack, họ có góc nhìn rộng hơn và tư duy tích cực hơn. Hơn nữa, họ sẽ nhạy cảm hơn với kỹ thuật và sản phẩm.

Vì vậy, những người này luôn có thể có ý kiến ​​của mình đối với sản phẩm hoặc thiết kế.

Từ một khía cạnh khác, họ có thể giúp đỡ mọi người trong nhóm và giảm đáng kể thời gian và chi phí kỹ thuật của giao tiếp nhóm, cập nhật công nghệ.

Vì vậy, nhiều người trong số họ trở thành doanh nhân hoặc là đối tác kỹ thuật trong các công ty mới thành lập.

Nhược điểm

Chính vì sự phát triển công nghệ theo chiều ngang, một số full stack developer không thể chuyên sâu một kỹ năng.

Hầu hết những người tự nhận là “full stack dev” chỉ biết một chút ở nhiều kỹ năng. Đối với việc làm thế nào để làm cho kiến ​​trúc phù hợp hơn với sự phát triển mô-đun, đó là một câu hỏi.

Mặc dù vậy, vẫn có người đặt câu hỏi…

Làm thế nào để trở thành một full stack developer?

Một full stack dev chất lượng phải có kiến ​​thức và khả năng vận hành đối với tất cả các khía cạnh liên quan đến việc xây dựng ứng dụng. Kiến thức này bao gồm:

1) Ngôn ngữ lập trình

Bạn cần phải thành thạo nhiều ngôn ngữ lập trình, chẳng hạn như JAVA, PHP, C#, Python, Ruby, Perl, v.v.

Vì hầu hết các quy trình kinh doanh cốt lõi của bạn cần phải được viết bằng các ngôn ngữ này.

Nhưng bạn cũng phải nắm vững ngữ pháp ngôn ngữ và quen thuộc với cách cấu trúc, thiết kế, triển khai và kiểm tra dự án dựa trên một ngôn ngữ hoặc nhiều ngôn ngữ.

Ví dụ: nếu bạn chọn JAVA, thì bạn cần phải nắm vững thiết kế hướng đối tượng và phát triển, các mẫu thiết kế, các thành phần dựa trên J2EE của quá trình phát triển, v.v.

Nơi học: Git / GitHub – Bạn phải biết cách sử dụng Git để quản lý và chia sẻ code của mình.

Ngôn ngữ lập trình Full stack developer cần nắm vững
Ngôn ngữ lập trình Full stack developer cần nắm vững. Ảnh: hackernoon

2) Khung phát triển và thư viện của bên thứ ba

Các ngôn ngữ phát triển phổ biến thường đi kèm với một khung phát triển tốt (development framework), chẳng hạn như JAVA Spring, MyBatis, Hibernate, Python Django, PHP thinkphp, Yin, nodeJs express, v.v.

3) Công nghệ front-end

Công nghệ front-end ngày càng trở nên quan trọng hơn trong quá trình phát triển sản phẩm và dự án ngày nay.

Ngoài tính năng của sản phẩm thì trải nghiệm của người dùng cũng là một trong những tiêu chí để kiểm chứng sự thành công của một sản phẩm.

Tất cả điều đó phụ thuộc vào việc triển khai công nghệ front-end, vì vậy bạn cần phải nắm vững một số công nghệ front-end cơ bản như HTML5, CSS3, JavaScript và nghiên cứu sâu hơn về các khuôn khổ front-end hoặc thư viện của bên thứ ba như JQuery, LESS, SASS, AngularJS hoặc REACT.

4) Cơ sở dữ liệu và cache

Bất kỳ sản phẩm hay dự án nào cũng cần có cơ sở dữ liệu để lưu trữ dữ liệu.

Là một full stack developer, bạn cũng cần phải có ít nhất một hoặc hai cơ sở dữ liệu và biết cách tương tác với cơ sở dữ liệu.

Hiện tại, cơ sở dữ liệu phổ biến là MySQL, MongoDB, Redis, Oracle, SQLServer, v.v.

Là một cơ sở dữ liệu dạng tài liệu, MongoDB, đang được sử dụng rộng rãi hơn trong các sản phẩm Internet.

Đối với các dự án lớn hơn, khuyên bạn nên sử dụng MySQL hoặc Oracle thương mại làm cơ sở dữ liệu back-end.

Trong khi cơ sở dữ liệu bộ nhớ, chẳng hạn như Redis, có thể được sử dụng để lưu vào bộ nhớ đệm nhằm cải thiện hiệu suất hệ thống.

5) Khả năng thiết kế cơ bản

Hầu hết các bài báo hoặc thảo luận về full stack developer khi liên quan đến các yêu cầu thiết kế.

Nhưng tôi nghĩ kỹ năng thiết kế rất quan trọng, nguyên tắc và kỹ năng của thiết kế nguyên mẫu cơ bản, thiết kế UI, UX cũng cần hiểu rõ.

Full stack developer cần có khả năng thiết kế căn bản
Full stack developer cần có khả năng thiết kế căn bản. Ảnh: hackernoon

6) Tư duy, kỹ năng mềm

Yêu cầu bản thân cũng là một yếu tố cần thiết để trở thành full stack developer

  • Tư duy toàn cầu
  • Kỹ năng giao tiếp tốt
  • Sáng tạo
  • Sự tò mò
  • Kỹ năng quản lý thời gian

Tổng kết

Theo luật 10.000 giờ của Gladwell, bạn sẽ mất 10 năm để nắm vững nội dung kiến thức hướng đến khách hàng, front-endback-end để trở thành một full stack developer.

Do đó, full stack developer hoàn toàn không thể đạt được trong một sớm một chiều. Những gì bạn cần làm là đặt nền tảng kỹ thuật, củng cố các kỹ năng cốt lõi và tiếp tục học hỏi để đạt được nhiều thử thách hơn.

Gambaru Team. Lược dịch từ hackernoon.com.

Categories
Dev's Corner

Front-end là gì? 13 Kỹ năng cần có để trở thành Front End Developer

Front-end là gì? Front end developer là sao?

Bạn đã bao giờ nhìn vào website yêu thích của mình và tự hỏi tại sao nó lại trông như vậy, các nút hoạt động như thế nào, hoặc nghĩ, “nó phức tạp đến mức nào?” hoặc, “Ước gì mình có thể làm giống vậy“?

Trong khi thiết kế web quyết định giao diện của một trang web, thì front end developement là cách mà thiết kế đó thực sự được triển khai trên web.

Mọi thứ bạn thấy trên website đều được xây dựng bằng front end development (đôi khi còn được gọi là front end web development) – và những người đứng đằng sau nó là: front end developer.

Một front end web developer là một kỹ sư phần mềm, người thực hiện các thiết kế web thông qua các ngôn ngữ lập trình như HTML, CSS và JavaScript.

Front end developer có là xu hướng nghề nghiệp trong năm 2021?

Công việc của front end developer (đôi khi còn được gọi là công việc front end engineering) là một số trong các vai trò có nhu cầu nhiều nhất.

Theo khảo sát của Stack Overflow năm 2020, các front end developer ở Mỹ kiếm trung bình 110.000 đô mỗi năm.

Hiện tại, có 14.000 vị trí front end developer đang tuyển trên khắp nước Mỹ, so với 11.600 vị trí back end developer.

Mức lương trung bình của Front End Developer
Mức lương trung bình của Front End Developer. Ảnh: StackOverFlow

Trở thành front end developer có phải là lựa chọn sự nghiệp bền vững?

Trở thành front end developer là một sự thay đổi sự nghiệp về lâu dài.

Việc tuyển dụng các web developer ở Mỹ dự kiến ​​sẽ tăng 8% từ năm 2019 đến năm 2029, nhanh hơn nhiều so với mức trung bình cho tất cả các nghề nghiệp.

Chỉ riêng ở bang California, số lượng web developer dự kiến ​​sẽ tăng nhanh hơn nhiều so với tốc độ tăng trưởng trung bình cho tất cả các ngành nghề – công việc cho web developer dự kiến ​​sẽ tăng 27,6%, tương đương 13.210 việc làm vào năm 2028.

Nếu những điều này nghe giống công việc mơ ước của bạn, chúng ta hãy chia nhỏ tất cả các kỹ năng mà front end developer cần tới để bạn có thể bắt đầu sự nghiệp front end development.

Bước đầu tiên là bắt đầu học một số kỹ năng cơ bản mà các front end developer sử dụng hàng ngày.

Các kỹ năng chính của Front end developer

Các Front end developer sử dụng 3 ngôn ngữ lập trình chính để lập trình website và các thiết kế ứng dụng web được web designer tạo:

  • HTML
  • CSS
  • JavaScript
CSS HTML Javascript
CSS HTML Javascript. Ảnh: Freepik

Code mà front end developer viết chạy bên trong trình duyệt web của người dùng (được gọi là phía client, ngược với back end developer, người viết code chạy phía server bằng cách sử dụng môi trường thời gian chạy mã nguồn mở – open source runtime environment như Node.js hoặc với ngôn ngữ lập trình như Python).

Các full-stack developer có thể thoải mái lập trình với cả ngôn ngữ front end và back end.

Một back end developer giống như một kỹ sư thiết kế và tạo ra các hệ thống giúp một thành phố hoạt động (điện, nước và cống rãnh, phân vùng, v.v.), còn front end developer là người dựng ra đường phố và đảm bảo mọi thứ đều được kết nối hợp lý để mọi người có thể sống trong đó.

Một front end developer còn chịu trách nhiệm đảm bảo rằng không có lỗi nào trên giao diện người dùng, cũng như đảm bảo rằng thiết kế xuất hiện đúng như yêu cầu của nó trên các nền tảng và trình duyệt khác nhau.

Tất cả những tác vụ này đều quan trọng với trải nghiệm người dùng.

Tôi đã xem qua hàng chục danh sách việc làm của vị trí front end developer để xem kỹ năng nào đang được cần nhiều nhất.

Hãy nắm vững những kỹ năng này bên dưới và bạn chắc chắn sẽ có một công việc tuyệt vời dành cho front end developer!

1. HTML & CSS

HTML (Ngôn ngữ đánh dấu siêu văn bản) và CSS (Trang tính kiểu xếp tầng) là những khối xây dựng cơ bản nhất của lập trình web.

Nếu không có hai kỹ năng này, bạn không thể tạo thiết kế trang web – tất cả những gì bạn có là văn bản thuần túy chưa được định dạng trên màn hình.

Trên thực tế, bạn thậm chí không thể thêm hình ảnh vào một trang mà không có HTML!

Trước khi bắt đầu bất kỳ con đường sự nghiệp phát triển web nào, bạn sẽ phải thành thạo việc lập trình với HTML và CSS.

Tin tốt là việc có được kiến thức làm việc vững chắc về một trong hai thứ này có thể được thực hiện chỉ trong vài tuần. Chỉ riêng kiến thức HTML và CSS sẽ cho phép bạn xây dựng các trang web cơ bản.

2. JavaScript

JavaScript cho phép bạn thêm rất nhiều chức năng vào trang web của mình và có thể tạo rất nhiều ứng dụng web cơ bản chỉ sử dụng HTML, CSS và JavaScript (viết tắt là JS).

JavaScript - một trong những kỹ năng cơ bản của Front End Developer
JavaScript – một trong những kỹ năng cơ bản của Front End Developer. Ảnh: Dev.to

Ở cấp độ cơ bản nhất, JS được sử dụng để tạo và kiểm soát những thứ như bản đồ cập nhật theo thời gian thực, phim tương tác và trò chơi trực tuyến.

Các trang web như Pinterest sử dụng JavaScript để làm cho giao diện người dùng của họ dễ sử dụng (thực tế là trang không tải lại là nhờ JavaScript!).

Đây cũng là ngôn ngữ lập trình phổ biến nhất trên thế giới, vì vậy, bất kể kế hoạch nghề nghiệp của bạn là gì, đó cũng là thứ cực kỳ quý giá cần học.

3. jQuery

jQuery là một thư viện JavaScript: một tập hợp các plugin và tiện ích mở rộng giúp phát triển với JavaScript nhanh hơn và dễ dàng hơn.

Thay vì phải lập trình mọi thứ từ đầu, jQuery cho phép front end web developer thêm các phần tử tạo sẵn vào các dự án, sau đó tùy chỉnh khi cần thiết (đó là lý do tại sao việc biết JavaScript lại quan trọng như vậy).

Bạn có thể sử dụng jQuery cho những thứ như hẹn giờ đếm ngược, tự động hoàn thành biểu mẫu tìm kiếm và thậm chí tự động sắp xếp lại và thay đổi kích thước layout dạng lưới.

4. JavaScript framework

Các JS framework (bao gồm Angular, Backbone, Ember, Vue.js và React) cung cấp một cấu trúc tạo sẵn cho JavaScript code của bạn.

Có nhiều loại JavaScript framework khác nhau cho các nhu cầu khác nhau, mặc dù 5 framework được đề cập là phổ biến nhất trong danh sách việc làm thực tế, đặc biệt là React.

Trên thực tế, biết React có thể giúp bạn kiếm thêm tới 8.000 đô la so với mức lương trung bình của front end developer.

Mặc dù việc học các JavaScript framework mất thời gian, nhưng chúng thực sự tăng tốc độ phát triển bằng cách cho bạn một bước khởi đầu và có thể được sử dụng với các thư viện như jQuery để giảm thiểu khối lượng công việc ban đầu bạn phải làm.

5. Front end framework

CSS và front end framework (front end framework phổ biến nhất là Bootstrap) làm cho CSS những gì mà JS framework làm cho JavaScript: chúng cung cấp cho bạn khởi điểm để lập trình nhanh hơn.

Vì rất nhiều CSS bắt đầu với các yếu tố giống nhau từ dự án này sang dự án khác, nên một framework xác định tất cả những điều này cho bạn từ trước là cực kỳ có giá trị.

Hầu hết các danh sách việc làm front end developer đều mong bạn quen thuộc với cách hoạt động của những framework này và cách sử dụng chúng.

6. Có kinh nghiệm với ngôn ngữ tiền xử lý CSS (CSS Preprocessors)

Ngôn ngữ tiền xử lý là một yếu tố khác mà front end developer có thể sử dụng để tăng tốc lập trình CSS.

Ngôn ngữ tiền xử lý CSS thêm chức năng bổ sung vào CSS giúp cho CSS có thể mở rộng và dễ làm việc hơn.

Nó xử lý code trước khi xuất bản lên trang web và biến nó thành CSS được định dạng tốt và thân thiện với nhiều trình duyệt.

Sass và LESS là hai ngôn ngữ tiền xử lý được sử dụng nhiều nhất.

7. Có kinh nghiệm với các Dịch vụ và API RESTful

REST là viết tắt của cụm từ Chuyển trạng thái đại diện (Representatinal State Transfer).

Về cơ bản, đó là một kiến ​​trúc nhẹ giúp đơn giản hóa giao tiếp mạng trên web, còn các Dịch vụ và API RESTful là các dịch vụ web tuân theo kiến ​​trúc REST.

Giả sử bạn muốn viết một ứng dụng hiển thị tất cả những người bạn trên mạng xã hội của bạn theo thứ tự mà bạn đã trở thành bạn bè.

Bạn có thể thực hiện cuộc gọi tới API RESTful của Facebook để đọc danh sách bạn bè của mình và trả lại dữ liệu đó.

Là một front end developer, bạn cũng có thể gọi API của Twitter (Twitter cũng sử dụng API RESTful).

Quá trình chung là giống nhau đối với bất kỳ dịch vụ nào sử dụng RESTful API, chỉ có điều dữ liệu trả về sẽ khác.

Mặc dù nghe có vẻ phức tạp và mang tính kỹ thuật, nhưng đó là một tập hợp các nguyên tắc và phương pháp thực hành đơn giản để bạn biết cách giao tiếp với một dịch vụ web.

Nó cũng giúp cho dịch vụ web hoạt động tốt hơn, mở rộng tốt hơn, hoạt động đáng tin cậy hơn và dễ dàng sửa đổi hoặc di chuyển hơn.

8. Thiết kế Responsive và Mobile

Chỉ riêng ở Mỹ, nhiều người truy cập Internet từ thiết bị di động của họ hơn là từ máy tính để bàn, vì vậy, không có gì ngạc nhiên khi kỹ năng thiết kế responsive và mobile là cực kỳ quan trọng đối với nhà tuyển dụng.

Thiết kế responsive và mobile.
Thiết kế responsive và mobile. Ảnh: Smallbiztrends

Thiết kế responsive nghĩa là bố cục của trang web (và đôi khi là chức năng và nội dung) sẽ thay đổi dựa trên kích thước màn hình và thiết bị mà ai đó đang sử dụng.

Ví dụ: khi bạn truy cập một trang web từ máy tính để bàn có màn hình lớn, bạn sẽ thấy nhiều cột, đồ họa lớn và tương tác được tạo riêng cho người dùng chuột và bàn phím.

Trên thiết bị di động, cùng một trang web sẽ xuất hiện dưới dạng một cột duy nhất được tối ưu hóa cho tương tác chạm, nhưng sử dụng các tệp cơ sở giống nhau.

Thiết kế dành cho thiết bị di động có thể bao gồm thiết kế responsive, hoặc cũng có thể là tạo ra thiết kế dành riêng cho thiết bị di động.

Đôi khi bạn muốn trải nghiệm người dùng khi truy cập trên máy tính để bàn hoàn toàn khác với khi truy cập từ smartphone. Trong trường hợp đó, trang web dành cho thiết bị di động sẽ hoàn toàn khác.

Một tngân hàng trực tuyến nếu có một thiết kế riêng cho thiết bị di động sẽ cho phép người dùng xem những thứ như vị trí ngân hàng gần nhất và chế độ xem tài khoản được đơn giản hóa (vì màn hình di động nhỏ hơn).

9. Phát triển Cross-browser

Các trình duyệt hiện đại đang trở nên khá tốt trong việc hiển thị các trang web một cách nhất quán, nhưng vẫn có sự khác biệt trong cách chúng diễn giải code ở phía back end.

Cho đến khi tất cả các trình duyệt hiện đại hoạt động hoàn hảo với các tiêu chuẩn web, việc biết cách làm cho từng trình duyệt hoạt động theo cách bạn muốn là một kỹ năng quan trọng.

Đó là tất cả những gì về phát triển cross-browser (nhiều trình duyệt).

10. Hệ thống quản lý nội dung (CMS) và E-commerce

Hầu hết các trang web hiện nay đều được xây dựng trên hệ thống quản lý nội dung (CMS), nền tảng thương mại điện tử là một loại CMS cụ thể.

CMS phổ biến nhất trên thế giới là WordPress, là “hậu trường” của hàng triệu trang web. Trên thực tế, gần 60% các trang web sử dụng CMS là WordPress.

Các CMS phổ biến khác bao gồm Joomla, Drupal và Magento. Mặc dù việc biết những thứ này sẽ không đưa bạn trở thành một chuyên gia WordPress, nhưng chúng có thể cho cho bạn một ngách thị trường tiềm năng là các công ty sử dụng các hệ thống đó.

Là một front end developer, các kỹ năng liên quan CMS có thể mang lại lợi thế cho bạn khi tìm việc.

11. Kiểm thử và gỡ lỗi

Một thực tế xảy ra như cơm bữa đối với front end: Bug. Việc làm quen với quy trình kiểm thử và gỡ lỗi là rất quan trọng.

Kiểm thử và gỡ lỗi
Kiểm thử và gỡ lỗi. Ảnh: Strongqa

Kiểm thử đơn vị (Unit testing) là quá trình kiểm tra các khối mã nguồn (source code) riêng lẻ (các hướng dẫn cho biết trang web sẽ hoạt động như thế nào) và các khung kiểm thử đơn vị cung cấp một phương pháp và cấu trúc cụ thể để thực hiện việc đó (có những cấu trúc và phương pháp khác nhau cho mỗi ngôn ngữ lập trình).

Một loại kiểm thử phổ biến khác là kiểm thử UI (giao diện người dùng), hay còn gọi là kiểm thử chấp nhận (acceptance testing), kiểm thử trình duyệt (browser testing) hoặc kiểm thử chức năng (functional testing), trong đó bạn kiểm tra để đảm bảo rằng trang web hoạt động như bình thường khi người dùng thực sự sử dụng trang web.

Bạn có thể viết các bài kiểm thử để tìm kiếm những thứ như HTML cụ thể trên một trang web sau khi thực hiện một hành động – chẳng hạn như đảm bảo rằng nếu người dùng quên điền vào trường thông tin bắt buộc, thông báo lỗi sẽ bật lên.

Gỡ lỗi chỉ đơn giản là lấy tất cả các “lỗi” mà các bài kiểm thử đó phát hiện ra (hoặc người dùng của bạn phát hiện ra sau khi trang web của bạn được khởi chạy), hãy tìm ra lý do và cách chúng xảy ra và khắc phục sự cố.

Các công ty khác nhau sử dụng các quy trình khác nhau cho việc này, nhưng nếu bạn đã sử dụng một quy trình này, bạn có thể thích nghi với những quy trình khác một cách khá dễ dàng.

Vì kiểm thử và ghi lỗi đóng góp rát nhiều vào trải nghiệm người dùng tích cực, chúng là những kỹ năng quý giá mà nhà phát triển giao diện người dùng cần biết.

12. Hệ thống kiểm soát phiên bản và Git

Hệ thống kiểm soát phiên bản cho phép bạn theo dõi các thay đổi đã được thực hiện đối với code theo thời gian. Chúng cũng giúp bạn dễ dàng hoàn nguyên về phiên bản cũ nếu bạn gặp trục trặc.

Giả sử bạn thêm một plugin jQuery tùy chỉnh và đột nhiên một nửa mã của bạn bị hỏng.

Thay vì phải cố gắng hoàn tác thủ công và sửa tất cả các lỗi, bạn có thể quay lại phiên bản trước và sau đó thử lại bằng một giải pháp khác – chẳng hạn như nhấn nút reset.

Git được sử dụng rộng rãi nhất trong số các hệ thống kiểm soát phiên bản và có thể được cài đặt bằng dòng lệnh.

Biết cách sử dụng Git sẽ là một yêu cầu đối với hầu như bất kỳ công việc phát triển nào, có thể là front end development, back end development hoặc full stack development.

Đây là một trong những kỹ năng công việc quan trọng mà các nhà phát triển cần phải có nhưng ít người thực sự nói đến.

13. Kỹ năng giải quyết vấn đề

Nếu có một thứ mà tất cả các nhà phát triển giao diện người dùng phải có, bất kể mô tả công việc hay chức danh chính thức, thì đó là kỹ năng giải quyết vấn đề xuất sắc.

Từ việc tìm ra cách triển khai tốt nhất một thiết kế, sửa các lỗi phát sinh, đến việc tìm cách làm cho front end code hoạt động với back end code mà một kỹ sư phần mềm khác đã viết, việc phát triển nói cho cùng chỉ là giải quyết vấn đề một cách sáng tạo.

Ví dụ: bạn đã tạo front end web hoạt động hoàn hảo và bàn giao cho back end developer để họ tích hợp nó với hệ thống quản lý nội dung (CMS). Đột nhiên, phân nửa tính năng ngừng hoạt động.

Một front end developer giỏi sẽ coi đây là một câu đố cần giải hơn là một thảm họa.

Tất nhiên, một front end developer ở cấp độ lão luyện sẽ lường trước những vấn đề này và cố gắng ngăn chặn ngay từ đầu!

Lược dịch từ skillcrush.com

Categories
Dev's Corner

DevOps là gì? Cánh cửa tương lai của công việc DevOps

Công việc của DevOps được cho là mang lại rất nhiều lợi ích trong chu trình phát triển phần mềm.

Quá rõ ràng DevOps là sự kết hợp giữa công việc Development (phát triển) và Operations (Vận hành).

Thế nhưng, bạn có biết sự cộng tác này bắt nguồn từ đâu, tại sao lại có và cuộc hành trình DevOps hướng đến sẽ như thế nào không?

Cùng Gambaru tìm hiểu nhé.

Devops là gì? Sự tích DevOps

Ngày xửa ngày xưa, khi những chiếc máy tính đầu tiên được lưu hành, các nhà lập trình ngồi tại máy trạm, viết code, biên dịch và tiến hành kiểm tra trên cùng một thiết bị.

Quá trình “deploy” lúc bấy giờ đơn giản chỉ là sao chép vào hàng chục đĩa flop, lặp đi lặp lại.

Khi các “trung tâm hoạt động mạng” thô sơ đi vào hoạt động, các nhân viên Vận hành bắt đầu xuất hiện để quản lý cấu hình và uptime của mạng.

Ở giai đoạn Word Wide Web, quy mô hệ thống nhân lên, phát triển và vận hành CNTT tách biệt thành hai bộ phận độc lập.

Phát triển bao gồm phần việc của UI designer, developer, QA/QC… còn vận hành liên quan đến các công việc về quản lý, giám sát hệ thống.

DevOps là gì? Sự tích Devops
Công nghệ ngày càng tiên tiến và hiện đại, đòi hỏi cần có năng lực mới để đáp ứng

Sự bùng nổ của mạng Internet và công nghệ đi kèm với sự ra đời của thuật ngữ “Site Reliability Engineers” – kỹ sư ổn định hệ thống (SRE), chịu trách nhiệm giảm “downtime”, duy trì “uptime” cao, đảm bảo hoạt động liên tục không xảy ra gián đoạn để mang lại sự hài lòng cho khách hàng. SRE chính là tiền thân của DevOps Engineer sau này.

Cùng xem video buổi chia sẻ về SRE tại Technical Event #07 vừa qua:

Technical Event #07: Design for Failure – AWS Philosophy for Reliability

Lý do xuất hiện DevOps

Trong khi Development thực hiện những thay đổi để sáng tạo ra tính năng mới thì Operations lại có nhiệm vụ đảm bảo duy trì sự ổn định.

Chính điều này đã gây ra mâu thuẫn giữa hai bên.

Để đáp ứng yêu cầu ngày càng gắt gao vừa tối ưu hóa sản phẩm vừa rút ngắn thời gian delivery nhưng vẫn giữ được tính ổn định, đòi hỏi Development và Operations phải xích lại gần nhau hơn.

Lý do xuất hiện DevOps
Dev và Ops cần tích cực phối hợp vì mục đích chung là tối ưu hóa và tiết kiệm thời gian

Khoảng cách giữa phát triển và vận hành mất đi, nhường chỗ cho sự giao tiếp hiệu quả cộng với khả năng làm việc cross-function giúp hạn chế rủi ro, giảm thiểu thất bại và đồng thời cải thiện khả năng cung cấp dịch vụ IT một cách đáng kể.

Công việc và yêu cầu với DevOps

DevOps được hiểu là một văn hóa, một phương thức làm việc đem lại sự thành công dựa vào sự cộng tác, liên tục thử nghiệm và cải tiến.

DevOps đóng vai trò quan trọng trong Software Development Life Cycle (SDLC) – Vòng đời phát triển sản phẩm phần mềm.

Ngoài việc hỗ trợ hoàn thiện quá trình chuyển đổi từ Waterfall sang Agile, nó còn giúp vận hành phần mềm chuyển sang phát triển liên tục.

Công việc của DevOps

Thông thường các công việc DevOps phụ trách xoay quanh những nội dung sau:

CI/CD (Continuous Integration/Continuous Deployment)

Bộ đôi công việc giúp tối ưu hóa thao tác test và build một phần mềm.

Quá trình tích hợp nhanh chóng hơn khi code cũng như thường xuyên cập nhập phiên bản mới.

Cùng xem video buổi chia sẻ về CI/CD trong chuỗi Technical Event của Gambaru:

Technical Event #03: CI/CD Practices & Monorepo

Xây dựng kiến trúc (Infrastructure as code)

IaC là một phần thiết yếu trong thực hành DevOps.

Các phiên bản cơ sở hạ tầng nhanh chóng được tạo ra và theo dõi, với mục đích tránh sự mâu thuẫn giữa các môi trường CNTT có thể gây ra các vấn đề nghiêm trọng trong quá trình triển khai.

Giao tiếp và cộng tác (Communication and collaboration)

Hai nhân tố then chốt góp phần xúc tiến việc phát triển diễn tra nhanh hơn, vận hành đạt hiệu quả hơn đồng thời cũng hỗ trợ cho các team khác cùng phát triển.

Yêu cầu đối với DevOps

Khả năng lập trình đem lại lợi thế cho công việc DevOpsKhả năng lập trình đem lại lợi thế cho công việc DevOps
Khả năng lập trình đem lại lợi thế cho công việc DevOps

Những yêu cầu để có thể đảm đương công việc DevOps:

  1. Về khía cạnh kỹ thuật, kỹ năng coding thật cứng là một trong những đòi hỏi đầu tiên. Có thể là bất cứ ngôn ngữ lập trình nào: Python, Ruby, Lua Scripting …
  2. Ngoài ra, thông thạo về hệ điều hành (Linux, Docker, …) cũng là một điểm mạnh. Không thể không kể đến những hiểu biết về các dịch vụ vận hành và hỗ trợ CNTT, xây dựng và phát hành (build and release), QA hoặc testing.
  3. Thêm vào đó, kỹ năng mềm cũng tạo điều kiện để DevOps có thể thực hiện tốt công việc của mình.
  4. Người làm công việc DevOps cần có kỹ năng nghiên cứu thật tốt để có thể nhanh chóng tìm ra cách giải quyết khi vấn đề phát sinh.
  5. Kèm theo đó, kỹ năng giao tiếp, phối hợp làm việc đội nhóm là không thể thiếu.
  6. Cẩn thận, tỉ mỉ và luôn đặt lợi ích tập thể lên hàng đầu là những tố chất gắn liền với công việc này.

Từ đó, chúng ta có thể nhìn nhận, DevOps không hẳn chỉ là một vị trí công việc.

Một team DevOps gồm những thành viên với kiến thức chuyên môn và kỹ năng đa dạng cùng nỗ lực phát triển không chỉ đem đến những sản phẩm chất lượng mà còn gia tăng sức cạnh tranh cho doanh nghiệp.

Tương lai của DevOps

Bạn có biết, công việc DevOps nhận được mức lương khá ấn tượng trong giới chuyên gia CNTT không?

Cũng dễ hiểu thôi! Nhu cầu DevOps tại các doanh nghiệp ngày càng tăng, và một phần nữa chính nhờ vào sự đa năng của người làm công việc này.

Không giới hạn bất kỳ công nghệ cụ thể nào, từ lập trình, xây dựng hạ tầng và cấu hình, đến thử nghiệm, xây dựng và phát hành.

DevOps liên tục tìm hiểu, làm việc để tích hợp và tự động hóa trên nhiều công nghệ khác nhau.

Định hướng tương lai của DevOps
DevOps đi cùng với thời đại tự động hóa Industry 4.0

Với sự phát triển không ngừng trong thời đại Công nghiệp 4.0, thời đại của tự động hóa, AI, IoT…, DevOps được dự đoán tiếp tục tồn tại mạnh mẽ.

Cho dù trong tương lai, sự xuất hiện của một số phương pháp mới hoặc công nghệ mới có khả năng làm lu mờ sự hiện diện của DevOps, nhưng tin chắc rằng với tư duy tìm tòi, học hỏi cùng với nền tảng kiến thức đa dạng, người làm DevOps sẽ luôn tìm được cho mình những vị trí vững chắc trong ngành CNTT.

Nguồn: Tổng hợp

Categories
Dev's Corner

Embedded software, embedded system là gì? Khác biệt và cách phân loại

Embedded Software là gì?

Embedded software application là chương trình chuyên dụng trong các thiết bị không phải PC (hoặc một bộ phận của microchip hoặc một bộ phận của ứng dụng khác nằm trên chip) để điều khiển các chức năng cụ thể của thiết bị.

Không như các ứng dụng PC có thể được cài đặt trên nhiều hệ thống máy tính và được sửa đổi để cung cấp các mức chức năng khác nhau, embedded software có các yêu cầu và khả năng phần cứng cố định.

Nó được tạo riêng cho thiết bị cụ thể mà nó chạy trên đó, với các hạn chế về xử lý và bộ nhớ gắn trực tiếp với thông số kỹ thuật của thiết bị đó.

Embedded software được sử dụng cho một chức năng cụ thể góp phần vào hoạt động chung của thiết bị
Embedded software được sử dụng cho một chức năng cụ thể góp phần vào hoạt động chung của thiết bị

Ví dụ về các chức năng dựa trên Embedded software

Các hệ thống phần mềm nhúng phổ biến trong cuộc sống hàng ngày và được tìm thấy trên khắp công nghệ tiêu dùng, công nghiệp, ô tô, hàng không vũ trụ, y tế, thương mại, viễn thông và quân sự.

Các ví dụ phổ biến về các tính năng dựa trên phần mềm nhúng bao gồm:

  • Hệ thống xử lý hình ảnh trong thiết bị hình ảnh y tế
  • Hệ thống điều khiển điện tử (fly by wire) trong máy bay
  • Hệ thống phát hiện chuyển động trong camera an ninh
  • Hệ thống kiểm soát giao thông trong đèn giao thông
  • Hệ thống thời gian và tự động hóa trong các thiết bị nhà thông minh

Khác biệt giữa firmware và embedded software

Mặc dù hai thuật ngữ này đôi khi được sử dụng thay thế cho nhau, nhưng “firmware” thực chất là một loại embedded software.

Firmware thực chất là một loại Embedded software
Firmware thực chất là một loại Embedded software. Ảnh: Freepik

Embedded software được sử dụng cho một chức năng cụ thể góp phần vào mục đích chung của thiết bị, còn firmware đóng vai trò như một hệ điều hành (OS) tối giản cung cấp hướng dẫn cho các chức năng điều khiển, giám sát và thao tác dữ liệu của thiết bị.

Thông thường, firmware được phát triển cùng với phần cứng (hardware) của thiết bị (thiết kế chip) để tối ưu hóa các hoạt động tiêu thụ điện năng, tốc độ và bảo mật.

Sau khi hoàn thiện firmware và hardware, các ứng dụng embedded software được phát triển để thực thi các chức năng trong thành phẩm hoặc hệ thống.

Để giúp bạn phân biệt giữa hai phần mềm này, hãy nhớ:

Tất cả firmware đều là embedded software, nhưng không phải embedded software nào cũng là firmware.

Embedded Software và Embedded System (Hệ thống nhúng)

Các bộ phận phần cứng trong thiết bị đang chạy embedded software được gọi là “embedded system” (hệ thống nhúng).

Embedded system - hệ thống nhúng
Embedded system – hệ thống nhúng. Ảnh: Researchgate.net

Một số ví dụ về các bộ phận phần cứng được sử dụng trong hệ thống nhúng là mạch cấp nguồn, bộ xử lý trung tâm, thiết bị bộ nhớ flash, bộ định thời và cổng giao tiếp nối tiếp.

Trong giai đoạn thiết kế ban đầu của thiết bị, phần cứng tạo nên hệ thống nhúng – và cấu hình của nó trong thiết bị – sẽ được quyết định.

Sau đó, embedded software được phát triển từ đầu để chạy độc quyền trên phần cứng đó với cấu hình chính xác đó.

Điều này làm cho thiết kế phần mềm nhúng trở thành một lĩnh vực rất chuyên biệt, đòi hỏi kiến thức sâu sắc về khả năng phần cứng và lập trình máy tính.

Có những loại hệ thống nhúng nào?

Hệ thống nhúng thường được phân loại theo 2 cách:

Khi dựa trên các yêu cầu về hiệu suất và chức năng, có bốn loại hệ thống nhúng chính:

  • Các hệ thống nhúng thời gian thực (real time embedded system) hoàn thành nhiệm vụ của chúng hoặc đưa ra phản hồi trong một thời gian cụ thể – thường là “ngay lập tức” hoặc theo thời gian thực.
  • Các hệ thống nhúng độc lập (stand-alone embedded system) có thể hoàn thành nhiệm vụ của chúng mà không cần hệ thống chủ hoặc tài nguyên xử lý bên ngoài. Chúng có thể xuất hoặc nhận dữ liệu từ các thiết bị được kết nối, nhưng không phụ thuộc vào các thiết bị này để hoàn thành nhiệm vụ.
  • Hệ thống nhúng nối mạng (networked embedded system) phụ thuộc vào mạng được kết nối để thực hiện các tác vụ được giao.
  • Hệ thống nhúng di động (mobile embedded system) là những hệ thống có tính hạn chế cao thường được triển khai trong các thiết bị nhỏ, có tính di động.

Khi dựa trên độ phức tạp của kiến trúc phần cứng của hệ thống, có ba loại hệ thống nhúng chính:

  • Hệ thống nhúng quy mô nhỏ
  • Hệ thống nhúng quy mô trung bình
  • Hệ thống nhúng tinh vi (phức tạp)

Đặc điểm và tính năng của hệ thống nhúng

Mặc dù có nhiều loại hệ thống nhúng, chúng đều có chung các tính năng và đặc điểm thiết kế

  • Tất cả các hệ thống nhúng đều có nhiệm vụ cụ thể. Chúng thực hiện cùng một chức năng được lập trình sẵn trong suốt thời gian sử dụng và không thể thay đổi được.
  • Tất cả các hệ thống nhúng được thiết kế để có độ tin cậy cao và ổn định. Chúng được yêu cầu thực hiện nhiệm vụ của mình với thời gian phản hồi và chức năng nhất quán trong suốt vòng đời của thiết bị chứa chúng.
  • Tất cả các hệ thống nhúng đều có hiệu suất cao. Các yêu cầu về tài nguyên của phần mềm nhúng không bao giờ được vượt quá dung lượng của phần cứng mà nó được cài đặt và các thông số kỹ thuật của phần cứng không bao giờ được vượt quá các yêu cầu tối thiểu của phần mềm nhúng.

Nguồn từ automation.siemens.com

Categories
Dev's Corner

BrSE là gì? Nhiệm vụ và yêu cầu đối với một BrSE

BrSE có lẽ là một thuật ngữ còn khá lạ ở Việt Nam, nhưng thực tế, công việc này rất được săn đón trong ngành CNTT ở Nhật Bản đấy.

BrSE là viết tắt của Bridge System Engineer, tức là Kỹ sư cầu nối, có nhiệm vụ kết nối Team kỹ thuật của công ty với Khách hàng đảm bảo sự thông hiểu giữa hai bên để quá trình hợp tác thuận lợi, đáp ứng được kỳ vọng của Khách hàng về cả chất lượng và thời hạn bàn giao dự án.

Có thể nói, BrSE là một vị trí cực kỳ quan trọng trong công ty phần mềm khi tương tác với các công ty khách hàng.

BRSE đại diện công ty liên lạc và tiếp nhận yêu cầu của Khách hàng
BRSE đại diện công ty liên lạc và tiếp nhận yêu cầu của Khách hàng

Vậy, công việc chính của BrSE là gì và những kỹ năng, tố chất nào cần thiết để có thể trở thành một BrSE thành công?

Cùng Gambaru tìm hiểu nhé!

Nhiệm vụ chính của BrSE

Có một công thức viết riêng cho BrSE, được truyền tay trong cộng đồng IT, như sau:

BrSE = Developer + Business Analyst + Tester + Project Manager

BRSE truyền tải nội dung làm việc với Khách hàng cho team nhà được rõ
BRSE truyền tải nội dung làm việc với Khách hàng cho team nhà được rõ

Tới đây, có lẽ không ít thì nhiều, bạn cũng hình dung ra được công việc của BrSE rồi đúng không?

  • Trong giai đoạn đầu dự án, BrSE với tư cách là đầu mối liên lạc của công ty, sẽ thu thập những thông tin từ Khách hàng, phân tích yêu cầu, lên kế hoạch về thời gian và nhân sự thực hiện, …
  • Ở giai đoạn phát triển, BrSE ngoài việc truyền đạt lại tất cả yêu cầu kỹ thuật từ Khách, còn theo dõi và báo cáo định kỳ cho Khách. Nếu cần, BrSE sẽ tham gia vào quá trình coding sau đó thực hiện test cũng như kiểm định chất lượng trước khi bàn giao sản phẩm.
  • Khi dự án đi vào kết thúc, Khách hàng tiếp nhận sản phẩm, BrSE sẽ tiếp tục đối ứng nếu có phát sinh bug. Cuối cùng, vẫn là BrSE tổng kết toàn bộ dự án, đút kết những bài học kinh nghiệm cho cả nhóm.

Việc BrSE có tham gia sâu vào các vấn đề kỹ thuật hay không còn tùy vào tính chất dự án, bố trí của công ty và cả năng lực kỹ thuật của bạn ấy nữa.

Xuyên suốt quá trình dự án, nếu có những thay đổi hay phát sinh nào khác, BrSE sẽ là người trực tiếp đứng ra để xử lý, truyền đạt và cập nhật cho cả hai phía: team kỹ thuật ở công ty và Khách hàng.

BRSE còn làm việc như một quản lý dự án, lập tiến độ, theo dõi, và báo cáo
BRSE còn làm việc như một quản lý dự án, lập tiến độ, theo dõi, và báo cáo

Những yêu cầu đối với BrSE

Hai yêu cầu mà một BrSE không thể không có, đó chính là: Ngoại ngữKiến thức về CNTT.

Ngoại ngữ

Việt Nam hiện đang là một đối tác tiềm năng trong lĩnh vực công nghệ phần mềm của nhiều quốc gia trên Thế giới, đặc biệt là Mỹ, Nhật.

Do đó, để có thể liên lạc và nắm rõ những yêu cầu từ Khách hàng, bản thân BrSE phải thông thạo ngoại ngữ.

Là người kết nối Team kỹ thuật của đội nhà và Công ty Khách hàng, BrSE cần đảm bảo được thông tin rõ ràng, chính xác, tránh gây hiểu lầm do rào cản ngôn ngữ.

Điều này sẽ ảnh hưởng đến tiến độ và chất lượng sản phẩm, dẫn đến sự thất vọng từ phía Khách hàng.

Kiến thức CNTT

Ngoài ra, BrSE cũng nên có kiến thức về CNTT để dễ dàng hơn trong việc giao tiếp với Khách, hiểu rõ hơn về các yêu cầu kỹ thuật.

Hiểu biết về coding sẽ khá thuận tiện cho công việc của BRSE
Hiểu biết về coding sẽ khá thuận tiện cho công việc của BRSE

Tư duy lập trình sẽ giúp BrSE rất nhiều khi lập kế hoạch dự án tổng thể. Thời gian coding, testing, … cũng sẽ được ước định chính xác hơn.

Thêm vào đó, một BrSE luôn phải chủ động trong công việc, vừa là một người tạo động lực cho team hoàn thành sản phẩm tốt trong thời gian đã giao hẹn với Khách, vừa là một nhà đàm phán, thương lượng và thuyết phục Khách hàng.

Một số kỹ năng khác như quản lý thời gian, kỹ năng truyền đạt, giao tiếp và làm việc đội nhóm… cũng góp phần rất lớn đem lại sự thành công cho nghề BrSE.

Mặc dù tính chất công việc khá thử thách, đòi hỏi trách nhiệm và trình độ cao, nhưng không thể phủ nhận những lợi ích mà nó mang lại.

Bật mí cho bạn, mức lương cho công việc này thuộc hàng top thu nhập đáng mơ ước đấy. Cũng còn tùy vào kinh nghiệm và trình độ chuyên môn, ngoại ngữ nữa, nhưng không khó để đạt được mức từ $2000 đâu.

Công việc có áp lực nhưng cũng rất “ấm áp” cho chiếc thẻ của bạn đấy!!!
Công việc có áp lực nhưng cũng rất “ấm áp” cho chiếc thẻ của bạn đấy!!!

Bạn thấy công việc BrSE có thú vị không?

Theo Gambaru, công việc này không những giúp chúng ta rèn luyện, học hỏi thêm nhiều kiến thức mới mà còn có dịp tương tác, giao tiếp và gặp gỡ nhiều người.

Nếu bạn cảm thấy phù hợp với mình thì còn chần chừ gì nữa, hãy đăng nhập Gambaru để tìm kiếm cơ hội ngay thôi!!!

Gambaru Team.

Categories
Dev's Corner

Backend là gì? Kỹ năng cần thiết để trở thành Backend Developer

Backend Development là gì?

Backend Development đề cập tới việc phát triển ở phía máy chủ. Nó tập trung vào cơ sở dữ liệu, ngôn ngữ kịch bản (scripting), kiến trúc website.

Nó bao gồm các hoạt động đằng sau (behind-the-scene) xảy ra khi thực hiện bất kỳ hành động nào trên website. Đó có thể là đăng nhập tài khoản hoặc mua hàng từ cửa hàng trực tuyến. Mã (code) được viết bởi back-end developer giúp các trình duyệt giao tiếp với thông tin cơ sở dữ liệu.

Ví dụ:

Back end là gì?
Back end là gì?

Trong bài viết này, bạn sẽ hiểu được:

  • Các kỹ năng cần thiết để trở thành Backend developer
  • Vai trò và trách nhiệm của một Backend developer
  • Sự khác nhau giữa Frontend developerBackend developer

Các kỹ năng chính của Backend Developer

Kỹ năng để làm backend developer
Kỹ năng để làm backend developer. Ảnh: guru99.com

Đây là những kỹ năng bạn cần có để trở thành Back end developer:

1. Ngôn ngữ phát triển web

Kỹ sư backend nên biết ít nhất một ngôn ngữ lập trình phía máy chủ hoặc ngôn ngữ lập trình Backend như Java, Python, Ruby, .Net,

2. Cơ sở dữ liệu và Cache

Kiến thức về các công nghệ DBMS (hệ quản trị CSDL) khác nhau là một trong những kỹ năng quan trọng của Backend developer. MySQL, MongoDB, Oracle, SQLServer, Redis được sử dụng rộng rãi cho mục đích này.

Kiến thức về các cơ chế bộ nhớ đệm như varnish, Memcached, Redis là một điểm cộng.

3. Máy chủ

Kinh nghiệm xử lý máy chủ Apache, Nginx, IIS, Microsoft IIS là điều cần thiết. Có nền tảng tốt về Linux sẽ giúp ích rất nhiều trong việc quản trị máy chủ.

4. API (REST & SOAP)

Kiến thức về các dịch vụ web hoặc API cũng rất quan trọng. Kiến thức về việc tạo và sử dụng các dịch vụ REST và SOAP là cần thiết.

Các kỹ năng và kinh nghiệm hữu ích khác

  • Kinh nghiệm làm việc với các framework như Django cho Python, Larval cho PHP,…
  • Khả năng viết các unit test (kiểm thử đơn vị) chất lượng
  • Kiến thức về các thuật toán và cấu trúc dữ liệu
  • Nhận thức về các vấn đề bảo mật là rất quan trọng, vì mỗi lớp đều có lỗ hổng bảo mật
  • Hiểu rõ sự khác biệt giữa các nền tảng phân phối như di động và desktop
  • Tiếp xúc cơ bản với các công nghệ front end như HTML và CSS cũng quan trọng.
  • Kiến thức về quản lý session trong môi trường máy chủ phân tán

Vai trò và trách nhiệm của Back end developer

  • Công việc của Back end developer là hiểu rõ mục tiêu của website và đưa ra các giải pháp hiệu quả
  • Lưu trữ dữ liệu và đảm bảo rằng nó được hiển thị cho người dùng có quyền truy cập
  • Chịu trách nhiệm phát triển hệ thống xử lý Thanh toán như chấp nhận dữ liệu, lưu trữ an toàn thông tin và tính phí cho khoản thanh toán đó
  • Quản lý tài nguyên API hoạt động trên các thiết bị
  • Có thể tham gia vào kiến trúc hệ thống và phân tích Khoa học dữ liệu (data science)
  • Chịu trách nhiệm tổ chức logic hệ thống chạy trên các thiết bị khác nhau
  • Back end developer cũng cần tham gia vào việc xây dựng các framework hoặc kiến trúc giúp lập trình dễ dàng hơn.
  • Back end developer nên có kỹ năng triển khai các thuật toán và giải quyết các vấn đề liên quan đến hệ thống.

Khác biệt giữa Back end và Front end developer

Về bộ kỹ năng

  • Backend: Cơ sở dữ liệu, máy chủ, API…
  • Frontend: HTML, CSS và JavaScript

Về Team

  • Back-end developer phát triển ứng dụng hỗ trợ cho front-end. Nó còn cung cấp sự hỗ trợ, bảo mật và quản lý nội dung.
  • Front-end developer thiết kế giao diện của trang web, bằng cách lấy thông tin đầu vào của người dùng và điều chỉnh nó thông qua thử nghiệm

Dịch vụ độc lập

  • Back end development có thể được cung cấp như một dịch vụ độc lập dưới dạng BaaS (Back-end as a service).
  • Front-end development không thể được cung cấp độc lập.

Mục tiêu

  • Backend: Team back-end có thể cần tạo một ứng dụng xung quanh front-end và hỗ trợ nó. Ngoài ra, họ cần đảm bảo web hoạt động bình thường.
  • Frontend: Các front-end developer cần đảm bảo người dùng có thể truy cập trang web và đáp ứng tốt trên cả di động và desktop.

Lương trung bình

  • Backend: 120.000 USD mỗi năm
  • Frontend: 104.000 USD mỗi năm

Công cụ thường dùng

  • Backend: MySQL, PHP
  • Frontend: jQuery, HTML5

Tóm lại

  • Back end Development liên quan đến sự phát triển ở phía máy chủ
  • Các kỹ năng của back end developer bao gồm Ngôn ngữ phát triển, Cơ sở dữ liệu và bộ nhớ cache, Máy chủ, API (REST & SOAP)…
  • Backend web developer nên hiểu mục tiêu của trang web và đưa ra các giải pháp hiệu quả
  • Các ngôn ngữ mà front-end developer nên làm quen là HTML, CSS và JavaScript trong khi Back End developer phải làm quen với cơ sở dữ liệu, Máy chủ, API…
  • Dịch vụ phát triển front-end không thể được cung cấp độc lập nhưng dịch vụ phát triển web Backend có thể được cung cấp độc lập.

Lược dịch từ: guru99.com

Categories
Dev's Corner

Cách tương tác với Smart Contract từ một web app

Juan Cruz Martinez sẽ hướng dẫn chúng ta tạo một smart contract (hợp đồng thông minh) nhỏ để lưu trữ và truy xuất dữ liệu trên Ethereum blockchain và tạo một web app cho phép truy cập và thay đổi dữ liệu trên smart contract này.

Hãy thực hành cùng Gambaru nhé!

Smart Contract

Đầu tiên, tôi sẽ trình bày về smart contract mà ta sẽ sử dụng để xây dựng các ứng dụng web.

Vì bài viết tập trung vào việc liên kết JavaScript với blockchain, nên tôi tạo contract càng đơn giản càng tốt:

Tạo một Smart Contract đơn giản
Tạo một Smart Contract đơn giản. Xem code gốc ở đây

Hợp đồng CoolNumberContract chứa một biến trên blockchain được gọi là coolNumber với giá trị ban đầu là 10.

Biến này là public, nghĩa là ta có thể truy cập giá trị của nó từ blockchain mà không cần tạo hàm getter.

Ngoài ra, contract này chứa một hàm publicsetCoolNumber, sẽ thay đổi giá trị của biến trên blockchain.

Điều quan trọng cần nhớ ở đây là bất kỳ thay đổi nào trong dữ liệu blockchain đều cần được thể hiện bằng một giao dịch.

Có nghĩa là việc gọi phương thức setCoolNumber sẽ yêu cầu một giao dịch và giao dịch đó sẽ có phí gas đi kèm.

Hãy triển khai hợp đồng trên một test network trước khi tiếp tục.

Thiết lập project và dependency

Để tương tác với bất kỳ Ethereum blockchain nào từ JavaScript, bạn sẽ cần một library.

Trong trường hợp này, hãy sử dụng web3 https://web3js.readthedocs.io/en/v1.3.0/

Web3 sẽ cho phép tương tác với bất kỳ Ethereum network nào thông qua MetaMask hoặc provider của web3 như Ganache.

Hãy bắt đầu một project mới. Tôi sẽ sử dụng JavaScript HTML, nhưng mọi người có thể sử dụng bất kỳ framework nào mình muốn như React hoặc Vue.

Tất cả code sẽ đi vào một file là index.html và hãy bắt đầu với cấu trúc sau:

Thiết lập project và dependency
Thiết lập project và dependency. Xem code gốc ở đây

Hãy xem thử thẻ body.

Đây là một giao diện người dùng đơn giản với hai button và một khoảng biểu thị trạng thái.

Cả hai button đều gọi các hàm JavaScript mà hiện tại vẫn chưa được định nghĩa.

Trên thẻ head, thẻ quan trọng là script ta đang import. Đó là thành phần phụ thuộc vào web3.

Hãy thêm thành phần phụ thuộc này vào code như tôi đã làm hoặc nếu đang sử dụng một framework, chỉ cần import package này với:

Import Package
Import Package

Nếu chưa cài đặt library, bạn có thể thông qua NPM:

Cài thông qua NPM
Cài thông qua NPM

Cuối cùng, trước khi tiếp tục, lời khuyên là hãy cài đặt tiện ích mở rộng MetaMask.

Nếu muốn sử dụng bất kỳ provider nào khác, bạn có thể phải thay đổi các phần của code cho phù hợp, vì các sample được cung cấp sử dụng provider web3 được MetaMask đưa vào.

Kết nối web app với Ethereum Blockchain

Khi cấu trúc cơ bản và các thành phần phụ thuộc sẵn sàng, ta có thể thêm code để kết nối ứng dụng với blockchain.

Bên trong script tag ở body, hãy thêm:

Kết nối web app với Ethereum Blockchain
Kết nối web app với Ethereum Blockchain. Xem code gốc ở đây

Các đoạn code trên khá đơn giản ngoại trừ hàm loadWeb3.

Chức năng này chịu trách nhiệm thiết lập kết nối và cấp quyền tương tác với blockchain.

Để làm việc với smart contract này, ta sẽ cần một instance Web3 mới. Khi tạo instance này, cần chỉ định provider ta muốn sử dụng.

Vì đang sử dụng MetaMask làm proxy nên hãy dùng provider window.ethereum được đưa vào bởi tiện ích mở rộng MetaMask.

Khi truy cập trình duyệt và tải trang (bằng file hoặc trình duyệt web), ta sẽ thấy luồng ủy quyền MetaMask như sau:

Cấp quyền kết nối cho app thông qua MetaMask
Cấp quyền kết nối cho app thông qua MetaMask

Hãy nhấn Next Connect.

Truy cập vào smart contract

Đến lúc này, code đã có quyền truy cập để tương tác với blockchain.

Tạo một chức năng mới để tạo một contract instance phù hợp với giao diện contract.

Tạo Contract Instance
Tạo Contract Instance

Để có được một instance của bất kỳ contract nào trên blockchain, tất cả những gì chúng ta cần là: thông số ABI của contract và địa chỉ contract, cả hai đều có thể trích xuất từ ​​Remix.

Để có thông số kỹ thuật ABI của contract, hãy đến Remix trên tab Compile. Compile và nhấp vào ABI.

Sao chép ABI specification của contract
Sao chép ABI specification của contract

Nút này sẽ sao chép thông số ABI cho contract dưới dạng một JSON array trên clipboard mà ta có thể sử dụng trực tiếp như một phần của tham số đầu tiên.

Tham số thứ hai là địa chỉ contract đã triển khai, có thể lấy từ Remix tại thời điểm triển khai hoặc Etherscan.

Sao chép địa chỉ contract từ Remix
Sao chép địa chỉ contract từ Remix
Sao chép địa chỉ contract từ Remix
Sao chép địa chỉ contract từ Remix

Code chức năng hoàn chỉnh cho contract này sẽ như sau:

Code chức năng hoàn chỉnh cho Contract
Code chức năng hoàn chỉnh cho Contract. Xem code gốc ở đây

Sau khi hoàn tất, ta có thể chỉ cần gọi loadContract từ hàm loader:

Gọi loadcontract từ hàm loader
Gọi loadcontract từ hàm loader

Đọc các giá trị từ smart contract

Nay ta đã sẵn sàng để bắt đầu gọi các chức năng của smart contract và sẽ bắt đầu bằng cách lấy coolNumber từ contract này.

Có thể lấy dữ liệu từ contract rất nhanh nhờ web3. Đây là một ví dụ để lấy giá trị của biến public coolNumber:

Lấy giá trị của biến public coolNumber
Lấy giá trị của biến public coolNumber. Xem code gốc ở đây

Siêu dễ đúng không?

Sử dụng instance contract từ phần trước, hãy lấy các phương thức và gọi một hàm với tên biến (đây là getter đã được đề cập ở phần đầu), và cuối cùng, sử dụng lệnh call để bắt đầu yêu cầu từ xa.

Cập nhật các giá trị vào smart contract

Cuối cùng, cần đảm bảo rằng ta cũng có thể giao dịch với smart contract.

Do đó, hãy hiển thị một instance bằng cách truy cập hàm setter để thay đổi coolNumber được lưu trữ trong contract.

Chức năng change sẽ chỉ định một số ngẫu nhiên mới và lưu nó trên blockchain:

Truy cập hàm setter để thay đổi coolNumber
Truy cập hàm setter để thay đổi coolNumber. Xem code gốc ở đây

Có hai điều cần chú ý:

  • Đầu tiên, chúng ta đề cập đến một hàm getCurrentAccount() hiện chưa được định nghĩa. Ta sẽ làm việc này sau.
  • Thứ hai là cách gọi setter. Hãy chú ý đến dòng gọi phương thức setCoolNumber từ contract, nó trông hơi khác so với những gì đã làm cho caller:
Cách gọi setter
Cách gọi setter

Thay vì sử dụng phương thức call, ta đang sử dụng phương thức send. Ta cần xác định tài khoản người gửi. Tại sao? Phải cần một giao dịch để thay đổi các giá trị trên blockchain. Như đã nói, một giao dịch yêu cầu tài khoản từ và đến phải hợp lệ – từ người khởi tạo giao dịch và trong trường hợp này, là địa chỉ của smart contract này.

Có thể sử dụng bất kỳ tài khoản nào làm từ giá trị không? Không! Đó phải là tài khoản bạn có quyền truy cập (và trong trường hợp này, tài khoản được đăng ký trên ví MetaMask của bạn), vì bạn sẽ cần ủy quyền giao dịch và xác nhận hóa đơn tiền gas.

Vấn đề đã được giải quyết, hãy xây dựng phương thức getCurrentAccount():

Xây dựng phương thức getCurrentAccountxây dựng phương thức getCurrentAccount
Xây dựng phương thức getCurrentAccount

Web3 thực sự tuyệt vời. Mọi người có thể tương tác với blockchain và ví của mình, vì vậy có thể thông qua Web3 để yêu cầu thông tin về các tài khoản đã đăng ký trên ví. Trong trường hợp này, chỉ cần lấy tất cả và sử dụng tài khoản đầu tiên để thực hiện các giao dịch.

Vận dụng những gì đã học

Tôi đã tải code lên GitHub gist để bạn so sánh và tham khảo. Hãy thử xây dựng dự án nhỏ nhưng thú vị này nào!

Application Flow
Application Flow

Nếu thành công, bạn hãy comment phía dưới cho Gambaru biết nhé!

Theo Juan Cruz Martinez

Categories
Dev's Corner

8 Công cụ CSS Web Developer phải có

Nếu bạn đang tìm danh sách các công cụ CSS giúp việc học và thành thục CSS trở nên dễ dàng và hiệu quả hơn, đây là bài viết dành cho bạn.

CSS là một trong những nền tảng cơ bản của lập trình web. Tuy nhiên, để hiểu thấu đáo về cách vận hành CSS lại không hề đơn giản.

Làm thế nào để code CSS với sự trợ giúp của các công cụ chuyên dụng cũng như học về CSS trong môi trường tương tác?

Hãy khám phá cùng Gambaru!

Công cụ tạo CSS trực tuyến

1. EnjoyCSS

Công cụ cực kỳ đơn giản này được coi là vị cứu tinh cho web developer đang mày mò CSS, cho phép thiết kế các element với UI đơn giản và đưa ra output phù hợp.

EnjoyCSS giảm thiểu thời gian và công sức cho lập trình viên để tạo các style phức tạp vì nó rất dễ sử dụng.

Đồng thời, bạn không bắt buộc phải có nền tảng quá sâu để hiểu về CSS phức tạp.

EnjoyCSS
EnjoyCSS mang đến sự thay đổi quy trình làm việc đáng kể.

2. CSS Arrow Please!

CSS Arrow Please! giúp tạo và xuất code cho các hộp với một mũi tên và có thể tùy chỉnh mũi tên kéo dài từ bất kỳ phía nào bạn muốn.

CSS Arrow Please
CSS Arrow Please! giúp tạo và xuất code cho các hộp với một mũi tên

Mặc dù điều này nghe có vẻ khá phức tạp để viết code từ đầu, nhưng công cụ này giúp chúng ta nhận được code chỉ sau vài cú nhấp chuột.

Khi nhận được, bạn có thể bắt đầu sử dụng code đó và thực hiện những thay đổi nhỏ, như thêm shadow chẳng hạn.

3. CSSmatic

CSS Matic
CSSmatic có giao diện người dùng đơn giản và trực quan.

Công cụ tất cả trong một này cung cấp những tính năng như:

  • Tạo gradient: Ta có thể sử dụng nhiều màu sắc và độ mờ để có được độ chuyển màu gradient đẹp đáng kinh ngạc.
  • Border radius: Siêu dễ sử dụng và siêu tiết kiệm thời gian. Tất cả các đường viền được chọn có thể được thay đổi cùng một lúc.
  • Noise texture: Tạo các background pattern tinh tế với các pixel chất lượng thấp và bị nhiễu, thay đổi màu sắc, giá trị và đồng thời xem trước được kết quả trong thời gian thực.
  • Box Shadow: Thay đổi độ mờ, màu sắc và kích thước đổ bóng – mọi thứ bạn cần để tạo bóng tuyệt vời cho 1 vật thể.

Tất cả những điều này có sẵn trên CSSMatic với một giao diện người dùng đơn giản và trực quan. Đây chắc chắn là một công cụ buộc phải có.

4. Patternizer và Patternify

PatterNizer
PatterNizer

Cả hai công cụ này cho phép tạo ra các pattern tuyệt vời với CSS trên giao diện thân thiện người dùng.

Với sự trợ giúp của PatternizerPatternify, bạn có thể tạo các pattern thú vị có thể dễ dàng áp dụng trên trang web của mình do nó được viết trực tiếp bằng CSS.

Công cụ học CSS trực tuyến

1. CSS Grid

CSS Grid
Khám phá 25 video bổ ích từ CSS Grid!

Trang web cung cấp một khóa học ngắn bốn giờ để hiểu được nền tảng căn bản về CSS Grid.

Khóa học hoàn toàn miễn phí này được sáng tạo bởi developer nổi tiếng – Wes Bos.

Hiện đang có tổng cộng 25 video đang chờ bạn mày mò và khám phá đấy.

2. Grid Garden

Grid Garden
Vừa làm vườn vừa viết code cùng Grid Garden!

Trò chơi tương tác Grid Garden nhắc bạn phải viết CSS code để trồng và chăm sóc vườn cà rốt của riêng mình.

Thật thú vị phải không?

Cách học này đảm bảo người dùng học được những điều cơ bản về CSS Grid theo một cách không hề khô khan chút nào.

Trò chơi bao gồm 28 cấp độ, mỗi cấp độ yêu cầu người dùng viết một CSS code để đáp ứng từng yêu cầu cụ thể.

3. Flexplorer

Flexplorer
Một ứng dụng hữu ích để học CSS.

Là một ứng dụng đơn giản, Flexplorer cho phép bạn mày mò nhiều tính năng Flexbox khác nhau và xem kết quả trực tiếp trên màn hình cùng với code.

Bạn cũng có thể chỉnh sửa văn bản trong các hộp và xem cách bố trí của các hộp này. Cách học mới lạ này hướng đến làm cho việc học dễ dàng và thuận lợi hơn.

4. Image Effects with CSS

Image Effects with CSS
Một công cụ học CSS bổ ích khác đáng để tìm hiểu.

Công cụ tuyệt vời này là sản phẩm của Bennett Feely, cũng là nhà sáng tạo Flexplorer.

Là một công cụ thực sự hữu ích, Image Effects with CSS cho phép người dùng thử nghiệm các thuộc tính CSS, như background-blend-mode, mix-blend-mode và filter để thao tác và tạo ra những hình ảnh tuyệt đẹp.

Happy coding!

Theo Mahdhi Rezvi.

Categories
Dev's Corner

Đừng chỉ viết code, hãy tập giải quyết vấn đề

Những lần gặp khó khăn khi code là những lần ta tích lũy kinh nghiệm, nhận ra được các mẫu có tính lặp lại và khám phá những chiến lược nhất định. Nếu phân loại được đoạn code và những vấn đề tương tự sẽ giúp ích rất nhiều cho lập trình viên.

Tập trung giải quyết vấn đề
Tập trung giải quyết vấn đề để cải thiện kỹ năng lập trình. Ảnh: lloorraa – Pixabay

Việc học giải quyết vấn đề theo hệ thống như vậy đã được thảo luận từ rất lâu.

Gambaru xin giới thiệu với các bạn một trong những nhà toán học tuyệt vời đã chia sẻ về vấn đề này, George Polya, qua cuốn sách nổi tiếng How to solve it, a new aspect of mathematical method xuất bản lần đầu năm 1945.

Không rõ George Polya có mong đợi lập trình viên thế kỷ 21 đọc được tác phẩm toán của mình hay không, nhưng tôi mong các bạn nhận ra được những góc nhìn của ông có giá trị đến thế nào.

George Polya
Nhà toán học George Polya. Ảnh: Alchetron
How to Solve it
Sách How to Solve it – A new aspect of mathematical method viết bởi George Polya. Ảnh: Amazon

Giải quyết vấn đề không phải là một năng khiếu

“Giải toán là một kỹ năng thực tế như bơi lội. Chúng ta thành thục được bất kỳ kỹ năng nào bằng cách bắt chước và thực hành. Khi tập bơi, bạn bắt chước theo cách mọi người dùng tay và chân để giữ cho đầu ở trên mặt nước và cuối cùng, bạn biết bơi nhờ tập luyện. Khi tập giải toán, bạn quan sát và bắt chước những gì người khác làm khi giải toán và cuối cùng, bạn biết giải toán nhờ thực hành.”

George Polya, How to solve it

Giải quyết vấn đề không chỉ là về “trí óc”

“Dạy giải toán chính là sự rèn luyện ý chí. Để giải quyết những bài khó, người học sẽ học cách kiên trì vượt qua thất bại, trân trọng những tiến bộ nhỏ, chờ đợi ý tưởng cần thiết và tập trung hết sức khi ý tưởng xuất hiện.”

George Polya, How to solve it

Quyết tâm và cảm xúc đóng một vai trò quan trọng khi giải quyết các vấn đề khó.

Quy trình giải quyết vấn đề

Bất cứ khi nào thực hiện quá trình giải quyết vấn đề, hãy ghi nhớ bốn bước sau:

  • Hiểu vấn đề
  • Lập kế hoạch
  • Thực hiện kế hoạch
  • Nhìn lại và đánh giá

1. Hiểu vấn đề

Hiểu vấn đề
“Thật ngớ ngẩn khi trả lời một câu hỏi bạn không hiểu. Thật đáng buồn khi làm việc để ra một kết quả bạn không mong muốn.” – George Polya, How to solve it. Nguồn ảnh: Rawpixel

Trước khi đi tìm giải pháp, cần phải trình bày được tất cả các yếu tố của vấn đề để hiểu nó rõ hơn.

Bạn có thể nêu vấn đề trong một câu không?

Bài tập nhỏ này rất hữu ích: thuyết phục bản thân rằng bạn đã hiểu mục tiêu và không tốn quá nhiều năng lượng để hiểu nó nữa khi đang tập trung giải quyết vấn đề.

Như được đề cập trong sách The Pragmatic Programmer, khi lập trình viên debug với “vịt cao su” chính là buộc bản thân phải hiểu rõ vấn đề để có thể dạy nó cho người khác.

Debug bằng vịt cao su
Kỹ thuật debug đỉnh cao với vịt cao su: Bạn có giải thích được vấn đề cho người khác

Có những ràng buộc nào cần phải đáp ứng không?

Những ràng buộc cần đáp ứng
“Trước hết, hãy hiểu vấn đề một cách tổng thể. Từ đó, ta mới có thể đánh giá những điểm cụ thể nào là quan trọng nhất. Sau khi xem xét một hoặc hai điểm trọng yếu, ta mới có thể đánh giá xem chi tiết nào đáng để điều tra kỹ hơn. Hãy đi vào sâu chi tiết và phân tích vấn đề dần dần, nhưng không đi xa hơn mức mình cần.” – George Polya, How to solve it. Ảnh: Freepik

Những hạn chế trong vấn đề bạn đang giải quyết là gì?

Hãy viết chúng ra. Nó có thể là một comment phía trên dòng đầu tiên của một hàm bạn viết, một danh sách các gạch đầu dòng trên đầu tài liệu thiết kế.

Điều quan trọng là phải tập trung vào chúng khi cố gắng tìm giải pháp.

Gỡ bỏ nhiều ràng buộc khỏi bộ não cũng là một cách loại bỏ một số quả bóng khi tâm trí ta chơi trò “tung hứng” trong khi cố gắng đưa ra một ý tưởng hay.

Ngoài ra, hãy cẩn thận nếu có quá nhiều ràng buộc.

Theo Polya, nếu xem xét quá nhiều chi tiết cùng một lúc, bạn có thể lạc lối. Chúng có thể khiến bạn mất tập trung vào điểm chính yếu hoặc thậm chí không nhìn thấy điểm chính yếu đó.

Bạn có thể vẽ hình minh họa hay một hệ thống ký hiệu phù hợp?

Vẽ minh họa hay hệ thống ký hiệu
Vẽ minh họa hay hệ thống ký hiệu “Một bước quan trọng khi giải toán là chọn hệ thống ký hiệu. Điều này cần được thực hiện một cách cẩn thận. Làm được ta sẽ tiết kiệm thời gian cho sau này do tránh được những do dự và nhầm lẫn không đáng.” – George Polya, How to solve it. Nguồn ảnh: Sarah Pflug – Burst

Các bản vẽ hay phác thảo sẽ giúp bỏ bớt một số suy nghĩ ra giấy và tạo nhiều khoảng trống hơn cho bộ não tập trung vào những phần khó.

Hãy chọn hệ thống ký hiệu giúp bạn hiểu rõ mọi thứ hơn: diagram, flowchart….

2. Lập kế hoạch

Lập kế hoạch
“Ta có kế hoạch khi biết, hoặc ít nhất là biết sơ bộ, mình phải thực hiện những phép tính, thuật toán hoặc cấu trúc nào để tìm ra lời giải. Con đường từ hiểu vấn đề đến hình thành một kế hoạch có thể dài và quanh co. Thành tựu chính khi tìm ra giải pháp là hình thành ý tưởng về một kế hoạch.” – George Polya, How to solve it. Nguồn ảnh: ThisIsEngineering – Pexels

Giải quyết vấn đề trên giấy trước. Việc viết code luôn có vẻ dễ dàng hơn trong đầu và trở nên phức tạp hơn nhiều khi làm nó chạy được.

Đừng làm cả hai việc cùng một lúc. Đầu tiên, hãy giải quyết vấn đề. “Chạy thử” một ví dụ trên sổ hoặc trên pseudocode. Sau đó, chạy trên máy.

Bạn có biết một vấn đề liên quan?

Bạn cần biết ít nhất loại vấn đề hoặc nhóm vấn đề bạn đang giải quyết. Đối với dân phần mềm, hãy thử trả lời những câu hỏi sau:

  • Đây có phải là vấn đề kiến ​​trúc không?
  • Có những mẫu kiến ​​trúc nào thường được sử dụng trong kịch bản này không?
  • Vấn đề này có nhiều hơn ở cấp độ của một giải thuật không?
  • Có giải thuật đã được chứng minh có thể giải quyết loại vấn đề này không?

Khi có thể tìm thấy một vấn đề liên quan đến vấn đề của mình và đã được giải quyết trước đó, bạn nên ăn mừng.

Đặt tiếp câu hỏi: “Mình có thể sử dụng nó không?”

Nhiều vấn đề có thể có một số điểm chung, nhưng những vấn đề có chung các yêu cầu hoặc nền tảng cốt lõi nhất có lẽ sẽ hữu ích nhất.

Bạn có thể trình bày lại vấn đề được không?

Bạn có thể nhìn nhận vấn đề ở một góc độ khác? Có thể bỏ một phần điều kiện hoặc một số yêu cầu không? Có thể nêu vấn đề này theo một kịch bản cụ thể hơn không?

Nếu đang viết các bài test, hãy thử nghĩ đến các ví dụ đơn giản được tạo ra chỉ bởi các điều kiện cụ thể của vấn đề để tìm ra giải pháp cuối cùng, tổng quát hơn.

Điều này dẫn chúng ta đến…

Nếu không thể giải quyết vấn đề được đề xuất, hãy cố giải quyết một số vấn đề liên quan trước tiên

Hoặc một vấn đề liên quan và đơn giản hơn.

Giống như viết phần mềm hiệu quả, việc thực hiện giải quyết vấn đề hiệu quả có thể được coi là một quá trình mang tính tịnh tiến.

Đừng cố làm mọi thứ cùng một lúc.

Xây dựng code cuối cùng hoặc thậm chí là các sơ đồ và ý tưởng thiết kế hệ thống là một quá trình sẽ mang lại lợi ích rất nhiều từ việc thực hiện điều tương tự cho các vấn đề quy mô nhỏ hơn.

3. Thực hiện kế hoạch

Thực hiện kế hoạch
“Đề ra phương án, hình thành ý tưởng giải pháp không hề đơn giản. Ta cần rất nhiều yếu tố để thành công: kiến ​​thức tích lũy, thói quen tư duy, sự tập trung và may mắn. Thực hiện kế hoạch lại dễ hơn nhiều; yếu tố chủ chốt là kiên nhẫn.” – George Polya, How to solve it. Nguồn ảnh: Pixabay

Phiên bản dành cho lập trình viên của câu trên là “Nghĩ trước, code sau”. Khi đã hiểu các bước của giải thuật hoặc thiết kế hệ thống, việc triển khai sẽ dễ dàng hơn rất nhiều.

Polya cho rằng những người giải toán giỏi có khả năng kiểm tra từng bước trong giải pháp sau khi hoàn thành và chất vấn từ đầu đến cuối.

Chỉ một dòng suy nghĩ về phân tích, phép toán sai sẽ làm hỏng mọi thứ.

Điều này có vẻ không mang đến nguy hiểm tức thì trong lập trình phần mềm, nhưng nó có thể là nguy hiểm chí mạng, vì bug nghiêm trọng sẽ xuất hiện trong thời điểm tồi tệ nhất – và có thể trong trường hợp rất cụ thể.

Điều này có nghĩa là cần có phạm vi kiểm thử tốt.

Nếu không kiểm thử, bạn sẽ không chất vấn, cứ tự tin coi giải pháp của mình là hoàn hảo.

Rất hữu ích khi có tư duy “Nó sẽ có lỗi chứ?” và liên tục đưa ra tất cả các kịch bản thất bại khác nhau trong giải pháp của mình và tư duy này sẽ được thể hiện rõ trong các bài test phần mềm.

4. Nhìn lại

Nhìn lại
“Ngay cả học sinh khá giỏi, khi đã có được lời giải bài toán và viết xong các lập luận, các bạn liền đóng tập lại. Các bạn đã bỏ lỡ một giai đoạn quan trọng. Khi nhìn lại bài giải, xem xét và nhìn nhận lại kết quả và con đường dẫn đến nó, các bạn có thể củng cố kiến ​​thức và phát triển khả năng giải quyết vấn đề của mình.” – George Polya, How to solve it. Nguồn ảnh: Reshot

Không nhìn lại và đánh giá sự đánh đổi của giải pháp thường xảy ra khi mọi thứ được thực hiện trong vội vàng.

Nếu đó là một giải thuật, bạn có thể nói rõ độ phức tạp về thời gian và không gian không? Code có đọc tốt không?

Nếu đang đưa ra quyết định sẽ có tác động đến toàn hệ thống, hãy ghi ra những đánh đổi.

Dành một giờ để xem xét lại kết quả công việc sẽ giúp bạn tiết kiệm hơn rất nhiều sau này.

Bạn có thể nghỉ ngơi rồi quay lại với nó sau. Việc đắm chìm sâu vào vấn đề đang giải quyết có thể sẽ khiến bạn quên mất những chi tiết liên quan.

Ngoài ra, giải pháp cho vấn đề cụ thể đó có thể được tổng quát hóa để được sử dụng trong nhiều tình huống.

Dùng sự nhạy bén và tư duy cẩn thận để tạo ra những abstraction mới là một cách giải quyết vấn đề đó cho những người khác đối mặt với nó sau này.

Kết

Dù là một cuốn sách dạy giải toán, nhưng How to solve it của George Polya với những lời khuyên vượt thời gian của ông lại hữu ích với dân lập trình như tôi khi tập giải quyết vấn đề bởi lập trình thực sự là một quá trình sử dụng nhiều tư duy và kỹ năng giải quyết vấn đề hiệu quả.

Theo Douglas Navarro