Categories
Dev's Corner

8 Extension Visual Studio Code mọi developer phải có

Visual Studio Code là một trong những trình soạn thảo code phổ biến và được sử dụng rộng rãi nhất. Nó cũng đi kèm với rất nhiều tính năng miễn phí so với các code editor khác.

Hãy thử tải về các tiện ích mở rộng trên VS Code và bạn sẽ thấy thêm một khía cạnh khác ở các tính năng tuyệt vời này.

8 Extension Visual Studio Code

1. Turbo Console Log

Turbo Console Log là một tiện ích mở rộng xuất sắc cho việc debug.

Tiện ích mở rộng này giúp debug dễ dàng hơn bằng cách tự động hóa quá trình viết log message có ý nghĩa.

Tự động chèn log message có ý nghĩa với hai bước sau:

  • Chọn biến là chủ đề debug
  • Nhấn Ctrl + Alt + L
Turbo Console Log
Turbo Console Log. Ảnh: Medium

2. Import cost

Tốc độ là yếu tố quan trọng cho trang web. Nếu trang web hoặc ứng dụng không thể tải nhanh, thì chẳng phải có cũng như không sao.

Tiện ích mở rộng này hiển thị kích cỡ import. Bằng cách này, bạn sẽ biết khối lượng sẽ tải xuống và tìm ra nguyên nhân ứng dụng hoạt động chậm.

Với tiện ích mở rộng này, bạn có thể quyết định xem mình nên viết một function hay import toàn bộ bundle.

Import cost
Import cost

3. Prettier

Prettier dành cho tất cả mọi dev viết Python, JavaScript hoặc bất kỳ ngôn ngữ lập trình nào khác.

Cái tên nói lên tất cả, tiện ích này làm cho code đẹp hơn lên.

Cá nhân tôi rất tệ trong việc giữ cho các dòng, khoảng cách và tab bằng nhau. Do vậy, code của tôi nhìn rất lộn xộn.

Với Prettier, ngay sau khi nhấn tổ hợp lệnh + S, bạn sẽ chứng kiến điều kỳ diệu xảy ra. Tất cả code sẽ có khoảng cách chính xác và đều tăm tắp, khoảng cách các dòng cũng sẽ thống nhất.

Không ai có thể nhận ra bạn là người lộn xộn như thế nào 😐.

Prettier
Prettier. Ảnh: Medium

4. Bracket pair colorizer

Đã bao nhiêu lần xảy ra trường hợp khi chỉnh sửa code JavaScript, bạn luôn gặp khó khăn khi tìm dấu đóng mở ngoặc?

Đừng lãng phí thêm thời gian nữa chứ! Dùng tiện ích này, các dấu mở và đóng ngoặc sẽ được tô màu giống nhau và mọi việc sẽ dễ thở hơn hẳn.

Bracket pair colorizer
Bracket pair colorizer. ẢNh: Medium

5. Live share

Live share là một tiện ích mở rộng tuyệt vời để code cùng bạn bè và team.

Live share cho phép điều khiển từ xa trình soạn thảo VS code, các tệp đã mở. Một người khác có thể thay đổi và lưu code; vì vậy, giờ đây bạn có thể nhận được mọi trợ giúp từ xa.

Một tính năng khác là bạn có thể code real-time, biết ai đang type và type gì. Bên cạnh đó, nó cũng cấp quyền truy cập vào localhost và thiết bị đầu cuối.

Bonus: Bạn còn có thể tải xuống tiện ích mở rộng âm thanh Live share, bổ sung khả năng gọi âm thanh cực đỉnh. Với các dự án làm việc từ xa, đây quả là một extension miễn phí không thể hoàn hảo hơn!

6. Projects

Nếu bạn đang làm nhiều dự án cùng một lúc thì việc chuyển đổi giữa các folder quả rất khó, khi phải điều hướng đến folder cần thiết phải không.

Projects có thể hoạt động như một tab yêu thích của bạn.

Ví dụ: bạn có thể lưu trữ CSS và bootstrap tùy chỉnh trong một folder và sử dụng Projects để điều hướng giữa các folder một cách nhanh chóng.

Projects
Projects. Ảnh: Medium

7. Settings Sync

Tiện ích mở rộng này giúp lưu trữ tất cả bản sao lưu cài đặt của bạn trong GitHub. Bằng cách này, bạn có thể có các cài đặt giống nhau cho nhiều thiết bị hoặc các thiết bị mới của mình. Bất kỳ thay đổi nào đều được đồng bộ hóa liền mạch.

Setting Sync cho phép đồng bộ hóa hầu như là mọi thứ bạn tùy chỉnh trên VS Code sang Github, từ việc cài đặt phím tắt cho đến các tiện ích mở rộng VS Code khác.

8. JavaScript (ES6) Code Snippets

VS Code đi kèm với JS IntelliSense tích hợp sẵn, nhưng JS Code Snippets nâng cao trải nghiệm này hơn nữa bằng cách thêm các đoạn JavaScript snippet được tạo sẵn, chứa các đoạn code được sử dụng phổ biến nhất. Hãy nói tạm biệt việc liên tục lặp lại đoạn code! 🙌

Tiện ích mở rộng này hỗ trợ JS, TypeScript, JS React, TS React, HTML và Vue.

JavaScript (ES6) Code Snippets
JavaScript (ES6) Code Snippets. Ảnh: Medium

Còn extension nào mà bạn thấy hữu ích nữa không nhỉ? Hãy comment cho cộng đồng Gambaru biết nhé!

Theo Ali Haider

Categories
Dev's Corner

5 Giá trị của Scrum và cách Scrum Master làm việc

5 Giá trị của Scrum

Scrum là công cụ tạo nên thành công của rất nhiều team trong suốt nhiều năm nay và có thể nói, yếu tố thành công chủ yếu xoay quanh 5 giá trị của Scrum.

Tôi sẽ kể cho các bạn về khoảng thời gian tôi tham gia nhóm nhảy trường trung học nhé.

Trải nghiệm này liên quan ra sao đến Scrum nhỉ? Gambaru sẽ cùng bạn kết nối dữ kiện và hướng đến 5 giá trị cốt lõi và cực kỳ thực tế của Scrum.

5 Giá trị của Scrum và cách Scrum master làm việc
5 Giá trị của Scrum và cách Scrum master làm việc

1. Can đảm

Trong nhóm nhảy, chúng tôi là một nhóm theo đuổi nhiều phong cách khác nhau.

Tôi nhớ có lần một số chị lớp trên đã lên tiếng và đề xuất một số thay đổi cho bài nhảy giáo viên đã chuẩn bị trước đó, sao cho phù hợp hơn với phong cách khiêu vũ cổ điển.

Các thành viên của một Scrum Team có lòng can đảm để làm những gì phải làm và giải quyết những thách thức khó khăn - The Scrum Guide.
Các thành viên của một Scrum Team có lòng can đảm để làm những gì phải làm và giải quyết những thách thức khó khăn – The Scrum Guide. Ảnh: Pexels

Điều gì xảy ra tiếp theo?

Một số bước nhảy đã được điều chỉnh. Hậu bối chúng tôi lúc đó mới nhận ra rằng bạn có thể nói ra suy nghĩ của mình và điều đó thực sự đã giúp cả nhóm gắn kết tốt hơn.

Tương tự, Scrum Team cần sẵn sàng dũng cảm áp dụng văn hóa phê bình mang tính xây dựng và giao tiếp cởi mở.

Bạn có thể làm gì với tư cách là một Scrum Master?

  • Giúp đỡ team – Nếu thành viên trong team chuẩn bị thực hiện một task mới, hãy hướng dẫn họ nếu họ cần giúp đỡ. Khuyến khích, động viên team trở thành một không gian an toàn để mọi người không cảm thấy có trở ngại trong việc yêu cầu hỗ trợ.
  • Hãy tự xây dựng lòng can đảm – Hãy làm gương. Hãy đứng lên bảo vệ lẫn nhau nếu cảm thấy team mình đang gặp áp lực hoặc tinh thần đội nhóm đang đi xuống.

2. Tập trung

Vì các cuộc thi thay đổi chủ đề và phong cách liên tục, chúng tôi phải chuẩn bị các điệu nhảy trong thời gian ngắn và chuẩn bị/biểu diễn chúng với khả năng tốt nhất của mình.

“Hãy luôn nhớ rằng, sự tập trung sẽ quyết định thực tại của bạn.” - George Lucas.
“Hãy luôn nhớ rằng, sự tập trung sẽ quyết định thực tại của bạn.” – George Lucas. Ảnh: Paul Skorupskas – Unsplash

Trong Sprint theo khung thời gian cố định (time-boxed Sprint), team cần phải tập trung vào các mục tiêu đã đặt ra ban đầu.

Bạn có thể làm gì với tư cách là một Scrum Master?

  • Điều phối – Hướng dẫn team bạn giới hạn lại số lượng task và mức độ ưu tiên cho mỗi người trong một Sprint để đảm bảo mọi thành viên đều tập trung.
  • Nhắc lại trọng tâm trong Daily Scrum – Thảo luận với team làm thế nào để cả nhóm đạt được mục tiêu.

3. Cam kết

Cam kết là điều đã thúc đẩy nhóm nhảy của chúng tôi.

Chúng tôi đều có chung mong muốn giành được danh hiệu cấp khu vực và tất cả mọi người đều cam kết thực hiện mục tiêu trên.

“Các cá nhân cần cam kết đạt được các mục tiêu của Scrum Team.” - The Scrum Guide.
“Các cá nhân cần cam kết đạt được các mục tiêu của Scrum Team.” – The Scrum Guide. Ảnh: freepik

Ở mỗi buổi biểu diễn, chúng tôi phải cố gắng hết sức và làm việc cùng nhau.

Chúng tôi phải nghĩ làm thế nào để mang đến màn trình diễn tốt nhất với tư cách là một nhóm nhảy và đồng thời cũng phải trình diễn đạt nhất có thể với tư cách vũ công cá nhân.

Các thành viên một Scrum Team nên cam kết hướng đến tầm nhìn của team và cùng nhau tạo ra các mục tiêu thực tế.

Các team nhỏ trong Scrum Team cần duy trì cam kết với Mục tiêu Sprint và tự tổ chức để đạt được các mục tiêu này trong thời gian Sprint đề ra.

Bạn có thể làm gì với tư cách là một Scrum Master?

  • Điều phối Sprint Planning – Đảm bảo rằng team mình cảm thấy thoải mái với việc lập kế hoạch và có phạm vi để giải quyết các lỗi hay vấn đề trong quá trình thực hiện.
  • Bảo vệ nhóm trước việc phạm vi dự án bị thay đổi, vượt phạm vi (scope creeps/changes) – Là Scrum Master, hãy bảo vệ team khỏi những thay đổi không mong muốn trong Sprint, những thay đổi về Mục tiêu Sprint và cả áp lực không đáng có từ Product Owner.

4. Tôn trọng

Là một team, để thực hiện hết khả năng của mình, chúng ta cần làm việc như một nhóm duy nhất và điều đó chỉ có thể xảy ra nếu có sự tôn trọng lẫn nhau.

"Không ai trong chúng ta thông minh bằng tất cả chúng ta." - Ken Blanchard, Tác giả sách Vị giám đốc một phút.
“Không ai trong chúng ta thông minh bằng tất cả chúng ta.” – Ken Blanchard, Tác giả sách Vị giám đốc một phút. Ảnh: Matthew Henry – Burst

Trong Scrum Team, tôn trọng có nghĩa là tin tưởng các thành viên hoàn thành nhiệm vụ của họ, lắng nghe và xem xét ý tưởng của mọi người cũng như công nhận thành tích của nhau.

Bạn có thể làm gì với tư cách là một Scrum Master?

  • Ăn mừng các thành tựu – Là một team, hãy cùng ăn mừng thành tích lớn nhỏ của nhau.
  • Tôn trọng các cá nhân – Cho các thành viên không gian riêng của mình và tôn trọng những đóng góp của họ cho cả team.

5. Cởi mở

Khi học một bài nhảy mới, nếu ai trong nhóm gặp khó khăn, chúng tôi thường trao đổi, nói chuyện sớm nhất để có thể học và giải quyết mọi vấn đề sớm nhất.

“Scrum Team và các bên liên quan đồng ý cởi mở về tất cả công việc và những thách thức khi thực hiện công việc.” - The Scrum Guide
“Scrum Team và các bên liên quan đồng ý cởi mở về tất cả công việc và những thách thức khi thực hiện công việc.” – The Scrum Guide. Ảnh: Reshot

Khi các thành viên của một Scrum Team sớm nói về những trở ngại họ đang gặp phải, họ có xác suất quyết tâm và tiến bộ cao hơn.

Bạn có thể làm gì với tư cách là một Scrum Master?

  • Hãy trung thực – Điều này phải bắt đầu từ bạn, hãy có những buổi trò chuyện trung thực với cả nhóm.
  • Hãy là tấm lưới an toàn – Là một Scrum Master, hãy tập quan sát những điểm đang gặp vấn đề. Nếu thấy các vấn đề không được đề cập trong các buổi stand-up chẳng hạn, hãy hỏi các thành viên trong team xem họ có đang đi đúng hướng không.

Bạn nghĩ gì về 5 giá trị Scrum này? Mời các Scrum Master tài năng chia sẻ thêm những kinh nghiệm của riêng các bạn ở phần comment phía dưới cho cả cộng đồng Gambaru học hỏi thêm nhé!

Theo Rishika Mittal

Categories
Dev's Corner

AR, VR, MR: Tái định nghĩa cách nhìn nhận và trải nghiệm thế giới

Ở phần trước, chúng ta đã tìm hiểu sự khác biệt giữa AR, VR và MR.

Phần này, hãy theo dõi kỹ hơn bức tranh toàn cảnh về tình hình đầu tư, công nghệ, yêu cầu kỹ thuật và tương lai của AR, VR và MR.

Một trong những ngành hưởng lợi nhiều nhất khi có sự xuất hiện của VR là ngành công nghiệp giải trí.

Lego Star Wars 360 Experience là một ví dụ về việc áp dụng và triển khai thực tế ảo một cách tuyệt vời, cho phép người xem trải nghiệm câu chuyện được kể theo một cách hoàn toàn khác biệt.

nh: Medium

Gã khổng lồ Facebook cũng đã công bố thiết bị VR headset độc lập đầu tiên (không cần gắn với điện thoại hoặc máy tính).

Oculus Go của Facebook
Oculus Go của Facebook. Ảnh: Justin Doherty – Pexels

Với sự thành công bùng nổ của Pokemon Go vào năm 2016, thế giới đã có cái nhìn đầu tiên về cách AR có thể “di chuyển” thực tế của chúng ta theo đúng nghĩa đen bằng cách tăng cường nó với những con quái vật nhỏ xuất hiện trong và ngoài màn hình điện thoại thông minh.

Thành công của Pokemon Go đã mở ra một cuộc cách mạng
Thành công của Pokemon Go đã mở ra một cuộc cách mạng. Ảnh: Mika Baumeister – Unsplash

Tương lai của MR lại khó xác định hơn.

Cũng giống như VR, MR sử dụng một headset để khởi chạy trải nghiệm. Song, các thiết bị MR khác với phần cứng VR thông thường vì chúng sử dụng kính mờ như Google Glass cho phép chúng ta vẫn ở thế giới thực – thực tế ảo được trộn lẫn với thực tế.

Giống như AR, MR phủ đè nội dung kỹ thuật số và mô phỏng lên trên những gì chúng ta thấy.

Nhưng trải nghiệm MR cho phép bạn thực sự tương tác với mô phỏng theo những cách mà AR chưa thể làm được.

Ngoài ra, thay vì chỉ phụ thuộc vào màn hình điện thoại, bạn có thể sử dụng cơ thể và bộ điều khiển từ xa để tương tác với môi trường một cách sống động hơn.

Intel thích dùng cụm “Merged Reality” hơn là "Mixed Reality"
Intel thích dùng cụm “Merged Reality” hơn là “Mixed Reality”. Ảnh: ExtremeTech

Đầu tư vào AR, VR, MR

Được hỗ trợ bởi các nhà đầu tư nổi tiếng như Google Ventures của Alphabet, Alibaba và Andreessen Horowitz, Magic Leap dẫn đầu cuộc chơi đầu tư MR với gần 2 tỷ đô vốn đầu tư mạo hiểm cho đến thời điểm bài viết này.

Hãy cùng xem lại các khoản đầu tư lớn vào các công ty VR / AR quan trọng trên thị trường hiện nay.

Đầu tư lớn vào các công ty AR, VR
Đầu tư lớn vào các công ty AR, VR. Ảnh: Toptal

Thiết kế VR, AR và MR tương tự như việc tạo ra những thực tế mới. Mô hình mới về tạo nội dung đa chiều và immersive (chìm đắm) này đòi hỏi các quy tắc và cân nhắc mới.

Thiết kế VR, AR và MR thúc đẩy các kỹ năng hiện có từ visual design (3D, UI) đến thiết kế trải nghiệm (UX, sản phẩm) phát triển v.v

Từ sự hiểu biết về giải phẫu con người, sự đồng cảm, âm thanh đến thiết kế hình ảnh và hơn thế nữa, những nhà sáng tạo nay đã có một sân chơi hoàn toàn mới.

3D và Visual Design

Các nhà thiết kế VR phải sử dụng một cách tiếp cận và bộ công cụ hoàn toàn khác để sáng tạo giao diện và trải nghiệm immersive.

Chính xác hơn, họ phải tư duy bên ngoài màn hình 2D và thay vào đó phạm vi sáng tạo bây giờ là một không gian 360° vô hạn.

Các nhà thiết kế VR cần cộng tác với các chuyên gia 3D và/hoặc nắm được hiểu biết cơ bản về đồ họa 3D bằng cách sử dụng WebGL và các công cụ mã nguồn mở khác.

Phần mềm tạo 3D phổ biến bao gồm:

Phần mềm 3D phổ biến
Phần mềm 3D phổ biến. Ảnh: HTC Vive space requirements

Scale và Positioning

Các cân nhắc về quy mô và vị trí cho thiết kế VR và AR được liên kết và ảnh hưởng lẫn nhau.

Một mặt, khoảng cách của một element với người xem ảnh hưởng đến mức độ dễ đọc và mức độ dễ dàng khi tương tác.

Mặt khác, tỷ lệ của một đối tượng trong thực tế mô phỏng phản ánh mức độ lớn/nhỏ, hoặc xa/gần của đối tượng đó trong thế giới thực.

Tracking và Movement

Nguồn ảnh: Oculus Rift Touch Controllers

Khái niệm theo dõi chuyển động liên quan đến phần cứng và phần mềm AR, VR và MR được sử dụng.

Ví dụ: Google Cardboard chủ yếu cho phép theo dõi chuyển động cơ bản từ gia tốc kế của điện thoại, còn VR headset Google Daydream đi kèm với bộ điều khiển từ xa cho phép bạn chỉ vào mọi thứ và thúc đẩy tương tác trong không gian ảo.

Ở phân khúc cao hơn, các hệ thống immersive như Oculus Rift HTC Vive cho phép các hệ thống theo dõi chuyển động và bộ điều khiển tương tác nhanh nhạy hơn.

Thiết kế thiết bị theo dõi và bộ điều khiển chuyển động đòi hỏi sự hiểu biết rộng về các cử chỉ tự nhiên của con người và khả năng tương tác thể chất.

Áp dụng các ngành truyền thống

Chúng ta vẫn có thể áp dụng nhiều nguyên tắc từ các loại hình nghệ thuật thị giác truyền thống.

Ví dụ: lý thuyết màu sắc, quy tắc bố cục và các phương pháp chiếu sáng tốt nhất vẫn áp dụng được cho các phương tiện mới.

Bởi vì đó vẫn là thế giới thực mà ta đang cố gắng mô phỏng và trải nghiệm trong một bối cảnh khác, nên bằng cách tận dụng các công nghệ mới, các nguyên tắc nghệ thuật thị giác cốt lõi có thể được tận dụng khi thiết kế những thực tế mới.

Animation và Transition

Tương tự, ta vẫn có thể áp dụng các nguyên tắc hoạt hình – hiệu ứng chuyển tiếp và chuyển động trong thực tế ảo.

Dưới đây là tóm tắt 12 Nguyên tắc Animation do Disney soạn.

  • Squash and Stretch: Mở rộng và nén một đối tượng để mô phỏng trọng lượng và thể tích trong chuyển động.
  • Anticipation (Dự đoán): Một chỉ báo cho thấy một hành động quan trọng sắp diễn ra.
  • Staging: Thiết lập ý định rõ ràng xuyên suốt mọi trạng thái / vị trí của đối tượng.
  • Straight Ahead and Pose to Pose: Xác định trạng thái bắt đầu và kết thúc trước, sau đó điền vào khoảng trống.
  • Follow Through and Overlapping Action: Khi nhiều vật đang chuyển động dừng lại, chúng không dừng lại cùng một lúc.
  • Slow-In and Slow-Out: Hay hiệu ứng easing – diễn ra chậm, rồi nhanh, rồi chậm.
  • Arc: Thêm một chút độ cong trong hầu hết các chuyển động.
  • Secondary Action (Hành động phụ): Thêm vào hành động chính để củng cố hoặc bổ sung cho hành động đó.
  • Timing: Sử dụng tốc độ hoặc độ trễ để mô phỏng vật lý hoặc canh thời gian.
  • Exaggeration (Cường điệu): Nhấn mạnh các chuyển động cụ thể để giúp truyền đạt điều gì đó.
  • Solid Drawings: Làm mọi thứ trông ba chiều hơn.
  • Appeal (Sự hấp dẫn): Tạo ra những đặc điểm thú vị và hấp dẫn.

Tương lai của AR, VR và MR

AR đã cho thấy tỷ lệ sử dụng rộng rãi hơn nếu chúng ta xem xét sự thành công trên toàn thế giới của cú hit Pokemon Go.

Ngày nay, tất cả những gì cần thiết để trải nghiệm thực tế tăng cường là một chiếc điện thoại thông minh với hệ điều hành cập nhật, có camera tốt và một ứng dụng AR.

Sự gia nhập gần đây của Apple vào sân chơi AR hứa hẹn sẽ thúc đẩy hơn nữa xu hướng thực tế tăng cường.

Mặc dù có lịch sử lâu đời hơn AR hoặc MR, nhưng VR dường như có vấn đề với người dùng, chủ yếu là do chi phí cao để có được một bộ VR headset phù hợp, sự khó chịu về thể chất khi sử dụng thiết bị quá lâu và thiếu các trường hợp sử dụng cụ thể về mặt công nghệ.

Mặc dù vậy, nhiều lĩnh vực có thể sử dụng công nghệ này để tạo ra các cơ hội mới, như VR đang được ứng dụng trong ngành công nghiệp ô tô.

Các ứng dụng về MR là vô hạn.

Giám đốc điều hành Avegant Joerg Tewes đã nói: “MR cho phép mọi người tương tác trực tiếp với ý tưởng của họ thay vì trên màn hình hoặc bàn phím.”

Thế giới đang trên đà mở rộng ranh giới với nội dung 3D và lĩnh vực kỹ thuật số hơn bao giờ hết
Thế giới đang trên đà mở rộng ranh giới với nội dung 3D và lĩnh vực kỹ thuật số hơn bao giờ hết. Ảnh: Pexels

Đây là cơ hội có một không hai cho các nhà thiết kế, kỹ sư và các công ty tham gia vào cuộc cách mạng này.

Theo Miklos Philips

Categories
Dev's Corner

VR, AR, MR là gì? Sự khác biệt giữa AR, VR và MR

Hãy cùng Gambaru phân biệt các khái niệm về VR, AR và MR, đồng thời du hành ngược thời gian xem các công nghệ này đã bắt đầu và phát triển ra sao qua các năm.

VR là gì?

Thực tế ảo, hay VR, là một trải nghiệm được mô phỏng và nhập vai được một thiết bị chiếu vào tầm nhìn của người dùng.
Thực tế ảo, hay VR, là một trải nghiệm được mô phỏng và nhập vai được một thiết bị chiếu vào tầm nhìn của người dùng. Ảnh: Pexels

Hãy tưởng tượng bạn đang đi bộ xuống đại lộ Champs-Elisée (Paris) trong khi vẫn ngồi trong nhà ở San Francisco.

Tất cả những gì bạn cần là một chiếc headset phóng chiếu bạn vào môi trường mô phỏng thông qua kính ngắm. Đó chính xác là những gì VR (Thực tế ảo) hứa hẹn và sẽ còn hơn thế nữa.

VR hoạt động ra sao?

VR cần một bộ kính bên trong khung nhìn trên một headset và một thiết bị được gắn thêm để lưu trữ và lập trình các trải nghiệm.

Từ quan sát thuần túy đến hoàn toàn đắm chìm vào trải nghiệm, phạm vi khả năng VR thay đổi tùy thuộc vào thiết bị và headset được sử dụng.

Sử dụng điều khiển từ xa đồng bộ với headset cho phép người dùng tương tác với các vật thể 3D trong không gian ở các trò chơi VR hoặc các giao diện và ứng dụng VR.

Lịch sử về VR

Theo Hiệp hội VR (Virtual Reality Society) trình bày về Lịch sử thực tế ảo thì VR có thể bắt đầu từ “những bức tranh tường 360 độ (hoặc những bức tranh toàn cảnh) từ thế kỷ 19”.

Sau đó, chúng ta có chuyến bay bay mô phỏng đầu tiên (năm 1929), tiếp theo là Head Mounted Display (Màn hình hiển thị gắn trên đầu) VR đầu tiên của Morton vào năm 1960, và Neo trải nghiệm toàn bộ thế giới dưới dạng mô phỏng trong bộ phim The Matrix (Ma trận) vào năm 1999.

Những công ty nào đang dẫn đầu thị trường VR ngày nay?

Công ty dẫn đầu về VR
Công ty dẫn đầu về VR

Tua nhanh đến năm 2014, Google bắt đầu sản xuất dòng headset DIY trên thị trường đại chúng, sử dụng điện thoại thông minh để thúc đẩy trải nghiệm VR: Google Cardboard.

Năm sau đó, Samsung tiếp nối với Gear VR và cuộc đua mới về thực tế ảo chính thức bắt đầu.

Được mua lại vào tháng 6 năm 2014, Oculus VR đã gia nhập gia đình Facebook để đẩy nhanh mục tiêu thống trị phân khúc headset thực tế ảo cao cấp.

AR là gì?

Đúng như tên gọi, Thực tế tăng cường, hay AR, bổ sung vào nhận thức của chúng ta về thế giới bằng cách tạo chồng thêm các lớp đồ họa, hình ảnh hoặc tập hợp dữ liệu tương tác do máy tính tạo ra.

AR hoạt động ra sao?

AR yêu cầu điện thoại thông minh có camera và ứng dụng AR.

Hai yếu tố chính làm cho nó hoạt động là khả năng máy ảnh ghi lại được môi trường xung quanh khi bạn di chuyển và phần mềm giúp tính toán và phóng chiếu hình ảnh hoặc nội dung do máy tính tạo ra.

Một ví dụ minh họa xuất sắc trên đây chính là ứng dụng AR của IKEA cho phép mọi người tưởng tượng cảm giác ở trong không gian với các sản phẩm nội thất của hãng.

Các nhà thiết kế và kiến trúc sư rõ ràng có thể hưởng lợi từ cách tiếp cận mới này để tạo ra các vật thể có kích thước như thật trong bối cảnh đời thực.

“Giờ đây, công nghệ đã bắt kịp tham vọng của chúng tôi. AR cho phép chúng tôi tái xác định trải nghiệm bán lẻ đồ nội thất, với mục tiêu tạo ra một cuộc sống hàng ngày tốt hơn cho mọi người, ở mọi nơi.”

Michael Valdsgaard, Trưởng nhóm Chuyển đổi Kỹ thuật số tại Inter IKEA Systems cho biết.

Lịch sử về AR

Từ việc tạo ra đường đánh dấu màu vàng ảo đầu tiên trong trận đấu trực tiếp giải bóng bầu dục quốc gia Mỹ NFL vào năm 1998 đến các dữ liệu bản đồ ảo tăng cường để hỗ trợ các chuyến bay mô phỏng của NASA, AR đã không còn chỉ có trong tiểu thuyết khoa học viễn tưởng.

Năm 1974, Myron Kruger đã sử dụng kết hợp máy chiếu và máy quay video trong một môi trường tương tác – đó là sự ra đời của AR như chúng ta biết ngày nay.

Gần đây hơn, AR đã có một bước nhảy vọt hướng đến việc áp dụng AR rộng rãi hơn tại hội nghị WWDC 17 của Apple khi Apple giới thiệu trước công chúng về ARKit, một khung phát triển cho các ứng dụng AR được tạo cho iPhone và iPad.

ARkit vs ARCore – Cuộc chiến giữa Apple và Google để thống trị AR

ARkit vs ARCore.
ARkit vs ARCore. Ảnh: Medium

ARKit của Apple cho iOS 11 hứa hẹn sẽ dân chủ hóa việc phát triển nội dung cũng như sự tiêu thụ AR.

Đây là phản hồi trực tiếp trước ARCore của Google, công ty vốn có lợi thế tận dụng kiến thức đã có trong ngành VR, trái với Apple.

Do các ứng dụng AR vẫn còn mới trên thị trường đại chúng, nên còn quá sớm để nói các bộ công cụ phát triển này thực sự khác nhau như thế nào, ngoại trừ việc chúng dành riêng cho từng hệ điều hành và đối tượng cốt lõi.

Cả hai khung thiết kế và phát triển AR này hứa hẹn sẽ đơn giản hóa và đẩy nhanh quá trình sáng tạo cũng như đưa công nghệ vào tay hàng triệu người dùng điện thoại Android và iOS
Cả hai khung thiết kế và phát triển AR này hứa hẹn sẽ đơn giản hóa và đẩy nhanh quá trình sáng tạo cũng như đưa công nghệ vào tay hàng triệu người dùng điện thoại Android và iOS. Ảnh: Unsplash

Giờ đây, khi hai công ty công nghệ nổi bật nhất này – kiểm soát 99% thị trường điện thoại thông minh – đã có một động thái công khai về AR, chúng ta nên sẵn sàng chứng kiến các ngành công nghiệp sẽ bị disrupt (phá vỡ) – một lần nữa.

MR là gì?

MR (Thực tế hỗn hợp) là sự kết hợp giữa VR và AR.

Ví dụ: MR sử dụng headset giống như VR, nhìn qua một khung nhìn hoặc mắt kính, và nó cũng chiếu hình ảnh lên trên môi trường hiện tại của ta.

Điều làm cho MR nổi bật là khía cạnh tương tác cao và khả năng hiển thị thực tế của hình chiếu mà MR bổ sung vào môi trường xung quanh.

Thay vì chỉ phụ thuộc vào bộ điều khiển từ xa hoặc màn hình điện thoại, ta có thể tương tác với nội dung immersive này bằng cử chỉ cơ thể và các ngón tay.

Apple và Google rõ ràng dẫn đầu về công nghệ AR, nhưng bối cảnh MR ngày nay đang chuộng Microsoft (HoloLens) và Magic Leap (với fund cực lớn).

HoloLens vs Magic Leap – Hai vị vua của cuộc đua MR

Bất chấp sự thất bại về mặt thương mại của Google Glass, Microsoft vẫn không ngại thử nghiệm “holographic computer” của riêng họ trong sân chơi MR.

Cái tên “HoloLens” xuất phát từ trải nghiệm cốt lõi “cho phép bạn tương tác với nội dung kỹ thuật số của mình và tương tác với hình ảnh hologram trong thế giới xung quanh.”

Là một trong những công ty start-up được gây quỹ nhiều nhất giai đoạn pre-product, dự án do Google hậu thuẫn này cũng là một trong những dự án bí mật nhất từ trước đến nay của ngành công nghệ.

Founder của Magic Leap, Rony Abovitz gọi nó là “thực tế điện ảnh – một sự thay đổi hoàn toàn về điện toán trực quan”.

Công ty công nghệ MR này giải quyết thách thức trong việc thiết kế môi trường tương tác bằng cách tận dụng những gì tốt nhất của cả hệ thống VR và AR.

Kính Magic Leap sử dụng công nghệ Dynamic Digitised Lightfield Signal (tạm dịch: Tín hiệu trường sáng số hóa động) – chiếu hình ảnh trực tiếp vào mắt và “lừa” não bộ nghĩ rằng đó là thật.

Kết quả là trải nghiệm sẽ được tăng cường phong phú hơn và đáng tin hơn.

Theo Miklos Philips

Categories
Gambaru News

Top 5 dự đoán xu hướng công nghệ năm 2021

2020 đã khép lại. Hãy cùng Gambaru theo dõi báo cáo của Gartner về những xu hướng công nghệ hàng đầu nào sẽ tạo ra tác động mạnh mẽ trong năm 2021 tới.

5 Xu hướng công nghệ năm 2021

1. Cybersecurity mesh

Theo báo cáo, cybersecurity mesh là một cách tiếp cận kiến trúc phân tán hướng đến việc kiểm soát an ninh tin cậy, linh hoạt và có thể mở rộng.

COVID-19 đã buộc nhiều công ty áp dụng cách tiếp cận kỹ thuật số với nhiều tài sản (asset) được lưu trữ trên cloud và có thể truy cập được ở mọi nơi.

Cybersecurity Mesh
Cybersecurity Mesh. Ảnh: Pixabay – Pexels

Điều này có nghĩa là cybersecurity mesh chú trọng mang đến sự linh hoạt trên tất cả các tài sản đồng thời thiết lập các thông số phù hợp mà không gây cản trở hoạt động.

Với nhiều hoạt động operation và admin hơn, sự phát triển của các tổ chức bị ảnh hưởng, vì vậy các công ty đang tìm cách giảm thiểu sự phức tạp này.

Nếu xem xét cách hoạt động của một service mesh (đây là một thuật ngữ tập trung hơn vào DevOps), ta thấy rằng trọng tâm của nó là tối ưu hóa cách các ứng dụng tương tác và chia sẻ dữ liệu với nhau.

Cybersecurity mesh có thể sẽ đạt được mục tiêu tương tự bằng cách cung cấp bảo mật cần thiết cho bất kỳ tài sản kỹ thuật số nào với centralized policy orchestration (tự động hóa chính sách tập trung).

2. AI/ML Ops

Đến năm 2021, chúng ta sẽ thấy AI – Artificial Intelligence ngày càng gia tăng dấu ấn trong các tổ chức.

Năm 2021 sẽ có sự tập trung mạnh mẽ hơn vào việc tạo ra một cách tiếp cận hoạt động hiệu quả hơn để làm việc với AI
Năm 2021 sẽ có sự tập trung mạnh mẽ hơn vào việc tạo ra một cách tiếp cận hoạt động hiệu quả hơn để làm việc với AI. Ảnh: Unsplash

Các công ty không còn có thể tạo ra các dự án phát sinh theo nhu cầu với hy vọng thành công trong việc tạo ra một mô hình có thể tối ưu hóa một quy trình kinh doanh nhất định.

Giống như cách DevOps tối ưu hóa lập trình các ứng dụng, AI Operations (hoặc MLOps) sẽ tạo ra một quy trình tương tự để phát triển các mô hình này.

Các nguyên tắc DevOps phải được áp dụng cho các tổ chức để tận dụng công nghệ này, đặc biệt là đối với các công việc hoạt động nhiều hơn như data cleaning (làm sạch dữ liệu).

Các dự án AI có và không có MLOps
Các dự án AI có và không có MLOps. Ảnh: What Adhoc versus Organized looks like

Các team sẽ cần áp dụng mọi thứ để giúp theo dõi, lặp lại và quan trọng nhất là mở rộng các mô hình này.

Vào năm 2021, khi các công ty nhận ra rằng AIOps / MLOps sẽ trở nên cần thiết cho một doanh nghiệp có ý định nghiêm túc sử dụng công nghệ này dài hạn, xu thế này sẽ ngày càng tăng nhanh.

Giống như cách DevOps rút ngắn vòng đời sản xuất khi làm việc với sản phẩm, AIOps cũng sẽ giúp chịu trách nhiệm ở cấp độ sản xuất để data scientist có thể tập trung vào việc tìm ra câu trả lời thay vì bị sa lầy vào công việc vận hành.

3. Telemedicine (y tế từ xa)

Về cơ bản, y tế từ xa chỉ đến việc cung cấp cho bệnh nhân các dịch vụ chăm sóc sức khỏe trực tuyến, thường là thông qua các phương pháp viễn thông.

Một vài năm trước, người ta dự đoán sẽ chỉ có 70 triệu người Mỹ sử dụng dịch vụ telehealth vào năm 2020. Vào cuối năm nay, chúng ta sẽ thấy con số này đạt khoảng một tỷ.

Dự đoán xu hướng y tế từ xa vẫn sẽ tiếp tục tăng trong năm 2021
Dự đoán xu hướng y tế từ xa vẫn sẽ tiếp tục tăng trong năm 2021. Ảnh: People vector created by pch.vector freepik.com

Các công ty startup như 98point6 (các cuộc hẹn khám từ xa) đã chứng kiến ​​sự gia tăng về số lượng thành viên thêm 274%.

Ngay cả khi chúng ta trở lại tình trạng bình thường và đại dịch giảm bớt, xu hướng chăm sóc sức khỏe trực tuyến này vẫn sẽ tiếp tục tăng.

4. Total Experience

Gartner liệt kê Multi-experience (đa trải nghiệm) là xu hướng công nghệ vào năm 2020. Đối với năm 2021, Gartner dự đoán một khái niệm mới: TX – Total Experience (tạm dịch: trải nghiệm toàn diện).

Với COVID-19, chúng ta đã thấy được tầm quan trọng của trải nghiệm đối với khách hàng cũng như nhân viên của chính doanh nghiệp.

Trải nghiệm không còn chỉ đơn giản là cách người dùng tương tác với trang web của công ty mà thay vào đó, chính là cách một công ty cung cấp trải nghiệm từ đầu đến cuối từ tất cả các bộ phận của doanh nghiệp.

Total Experience
TX = UX + CX + EX. Ảnh: Abby Chung – Pexels

TX chính là tập hợp của UX – User Experience (trải nghiệm người dùng), CX – Customer Experience (trải nghiệm khách hàng)EX – Employee Experience (trải nghiệm nhân viên).

Một công ty cung cấp tất cả các thành phần trải nghiệm trên sẽ tạo ra sự khác biệt với các đối thủ cạnh tranh vào năm 2021 và đồng thời có nhiều cơ hội phát triển hơn với cách tiếp cận tập trung vào con người này.

5. Hyperautomation

Hyperautomation sử dụng các công nghệ như AI, MLRPARobotic Process Automation (tự động hóa quy trình bằng robot) để tự động hóa các task con người đã từng hoàn thành.

Chuyển đổi kỹ thuật số luôn là tâm điểm đối với các nhà lãnh đạo doanh nghiệp và gần đây, đã thúc đẩy các tổ chức hướng đến các quy trình từ xa và ưu tiên kỹ thuật số.

Do đó, hyperautomation là chìa khóa để giúp tự động hóa các tác vụ, quy trình và giúp điều phối tự động hóa trên các lĩnh vực này.

Khi công nghệ được cải thiện, các doanh nghiệp sẽ liên tục tìm cách tự động hóa nhiều quy trình hơn nữa để số hóa và tiết kiệm chi phí.

Lời kết

Sẽ rất thú vị để xem công nghệ sẽ tăng tốc như thế nào khi bước sang năm 2021.

Ngay cả với COVID-19, chúng ta đã thấy các công ty có thể trở nên thích ứng và linh hoạt, tận dụng công nghệ theo nhiều cách khác nhau.

Với rất nhiều tiềm năng trong năm tới, hãy chờ đón một năm thú vị với những phát triển và xu hướng trên mặt trận công nghệ.

Theo Richard Liu

Categories
Gambaru News

Tổng kết 2020: Nhìn lại thế giới lập trình web và ứng dụng

2020 là một năm khó khăn và đầy biến động. Nhưng khi nói đến thế giới lập trình, chúng ta vẫn có những bản phát hành chính từ những gã khổng lồ công nghệ, những đột phá công nghệ vẫn diễn ra phục vụ cho lập trình viên và người dùng.

Rất nhiều điều đã diễn ra trong năm 2020
Rất nhiều điều đã diễn ra trong năm 2020. Ảnh: Sigmund – Unsplash

Hãy cùng Gambaru nhìn lại lĩnh vực lập trình web và ứng dụng suốt năm 2020 qua bản tổng kết sau. Liệu bạn có bỏ lỡ bất kỳ điều quan trọng nào trong số các bản phát hành này không?

Thế giới lập trình web và ứng dụng qua từng tháng

Tháng 1

Next.js 9.2

Next.JS
Next.JS

Next.js 9.2 được phát hành vào ngày 16 tháng 1. Bản phát hành chính ra mắt vào tháng 1, 2020 và đội ngũ Next tiếp tục phát hành một số bản cập nhật trong suốt các tháng tiếp theo của năm.

Tháng 2

Angular 9

Angular 9
Angular 9

Angular 9 được phát hành vào ngày 6 tháng 2.

Đây là bản đầu tiên trong số các phiên bản nâng cấp lớn của Angular trong năm 2020.

Ionic 5.0

Ionic 5.0
Ionic 5.0

Ionic 5.0 được phát hành vào ngày 11 tháng 2.

Ionic đã phát hành bản phát hành phiên bản chính đầu tiên có tên Magnesium vào tháng 2, với các bản cập nhật cho iOS 13 và các API hoàn toàn mới.

TypeScript 3.8

Cũng trong năm 2020, TypeScript 3.8 được phát hành vào ngày 20 tháng 2.

Sau khi phát hành Angular 9, đội ngũ TypeScript đã cho ra mắt phiên bản tiếp theo: Typescript 3.8.

TypeScript 3.8
TypeScript 3.8

Tháng 3

React Native v0.62

React native 0.62
React native 0.62

React Native v0.62 được phát hành vào ngày 26 tháng 3.

Đây là bản phát hành đầu tiên của đội ngũ React Native dành cho năm 2020.

Tháng 4

Node.js v14

Node JS v14
Node JS v14

Node.js v14 được phát hành vào ngày 21 tháng 4.

Node cực kỳ hữu ích cho cả nền tảng web và di động, và phiên bản thứ 14 đã được phát hành vào tháng 4 năm nay.

Tháng 5

Flutter 1.17

Flutter
Flutter

Flutter 1.17 được phát hành vào ngày 6 tháng 5.

Bản phát hành này bao gồm hỗ trợ Metal để đạt được hiệu suất iOS nhanh hơn và các thành phần Material mới.

TypeScript 3.9

TypeScript 3.9 được phát hành vào ngày 12 tháng 5.

Đội ngũ TypeScript đã ra mắt bản phát hành chính thứ hai, Typecript 3.9, vào tháng 5.

Electron.js 9.0

Electron.js 9.0 được phát hành vào ngày 19 tháng 5.

Bản phát hành này bao gồm các phiên bản nâng cấp lên Chromium 83, V8 8.3 và Node 12.14.

Những phiên bản cập nhật quan trọng được ra mắt ở nửa đầu 2020
Những phiên bản cập nhật quan trọng được ra mắt ở nửa đầu 2020. Ảnh: Joshua Aragon – Unsplash

Tháng 6

Angular 10

Angular 10 được phát hành vào ngày 24 tháng 6.

Đây là lần nâng cấp phiên bản lớn thứ hai của Angular trong năm 2020.

Tháng 7

React Native v0.63

React Native v0.63 được phát hành vào ngày 9 tháng 7.

Đây là bản phát hành thứ hai của đội ngũ React Native trong năm nay.

Ember 3.20

Ember 3.20
Ember 3.20

Ember 3.20 được phát hành vào ngày 29 tháng 7.

Ember đã phát hành một số phiên bản trong nửa đầu năm như 3,16, 3,17, 3,18 và 3,19. Nhưng bản 3.20 mang đến một số thay đổi quan trọng và đó là lý do tại sao nó xứng đáng có mặt trong danh sách này.

Tháng 8

Flutter 1.20

Flutter 1.20 được phát hành vào ngày 5 tháng 8.

Bản phát hành này bao gồm các cải tiến về hiệu suất và nhiều tiện ích thú vị.

TypeScript 4.0

TypeScript 4.0 được phát hành vào ngày 18 tháng 8.

Đây là bản phát hành TypeScript thứ ba vào năm 2020 và có một số thay đổi lớn trong bản phát hành này.

Electron 10.0

Electron 10.0 được phát hành vào ngày 25 tháng 8.

Bản phát hành này bao gồm các phiên bản nâng cấp lên Chromium 85, V8 8.5 và Node 12.16.

Tháng 9

Vue 3
Vue 3

Vue 3 được phát hành vào ngày 18 tháng 9.

Sau gần một năm rưỡi, Vue.js đã đưa ra phiên bản mới nhất của mình, có tên One Piece.

Tháng 10

Flutter 1.22

Flutter 1.22 được phát hành vào ngày 1 tháng 10.

Bản phát hành này bao gồm hỗ trợ cho cả iOS 14 và Android 11.

React 17

React 17 được phát hành vào ngày 20 tháng 10

Mặc dù có một vài bản phát hành của React trong khoảng thời gian đầu năm 2020, nhưng React 17 là bản phát hành chính mà tất cả chúng ta đều chờ đợi, và bất ngờ rằng không có tính năng mới nào trong phiên bản ra mắt này.

Node v15

Node v15 được phát hành vào ngày 20 tháng 10.

Sau bản phát hành v14, đội ngũ Node đã đưa ra bản phát hành thứ hai trong năm với tên gọi v15 vào tháng 10.

Next.js 10

Next.js 10 được phát hành vào ngày 27 tháng 10.

Kể từ tháng 1, Next đã phát hành các phiên bản mới, nhưng sự thay đổi thực sự đến vào tháng 10 với Next.js 10.

Tháng 11

Angular 11

Angular 11 được phát hành vào ngày 11 tháng 11.

Không giống như những năm khác, Angular đã trở lại với một bản phát hành lớn khác, Angular 11. Có lẽ các bản phát hành React và Vue là nguyên nhân chính thôi thúc nên phiên bản này.

TypeScript 4.1

TypeScript 4.1 được phát hành vào ngày 17 tháng 11.

Chỉ sau hai tháng tạm nghỉ, TypeScript đã phát hành bản phát hành chính cuối cùng của họ vào năm 2020.

Electron 11.0

Electron 11.0 được phát hành vào ngày 17 tháng 11.

Bản phát hành này bao gồm các nâng cấp lên Chromium 87, V8 8.7 và Node 12.18.3.

Theo Chameera Dulanga

Categories
All about Japan

Robot Nhật Bản làm việc tại cửa hàng tiện lợi trong thử nghiệm tự động hóa ngành bán lẻ

Vào tháng 8, 2020, nhà sản xuất Telexistence ra mắt robot có hình dạng như một con kangaroo để xếp đồ uống và đồ ăn sẵn lên kệ tại cửa hàng tiện lợi tại Nhật Bản, trong một cuộc thử nghiệm với hy vọng sẽ giúp kích hoạt làn sóng tự động hóa ngành bán lẻ.

“Kangaroo-Bot” đang làm việc. Nguồn: Reuters channel trên YouTube

Sau đợt thử nghiệm này, nhà điều hành cửa hàng FamilyMart cho biết họ có kế hoạch sử dụng nhân viên robot tại 20 cửa hàng tại Tokyo vào năm 2022.

Thời gian đầu, mọi người sẽ vận hành robot từ xa – cho đến khi trí thông minh nhân tạo (AI) có thể giúp robot học cách bắt chước chuyển động của con người.

Theo Telexistence, chuỗi cửa hàng tiện lợi đối thủ Lawson triển khai nhân viên robot đầu tiên của họ vào tháng 9.

“Robot giúp nâng cao phạm vi và quy mô tồn tại của loài người”, ông Jin Tomioka, CEO của Telexistence, cho biết khi giải thích cách công nghệ của họ cho phép mọi người cảm nhận và trải nghiệm những nơi khác nhau ngoài nơi ở hiện tại.

Ý tưởng telexistence, lần đầu tiên được đề xuất bởi người đồng sáng lập của công ty khởi nghiệp này chính là giáo sư Susumu Tachi, Đại học Tokyo, cách đây bốn thập kỷ.

Công ty Telexistence nhận được tài trợ từ công ty đầu tư công nghệ SoftBank Group và nhà điều hành dịch vụ điện thoại di động KDDI của Nhật Bản, cùng các nhà đầu tư nước ngoài như Airbus Ventures, chi nhánh đầu tư mạo hiểm của nhà sản xuất máy bay châu Âu Airbus SE.

Họ đặt tên robot là Model T, một sự tri ân dành cho tên một dòng Ford Motor đã bắt đầu kỷ nguyên sản xuất ô tô hàng loạt cách đây một thế kỷ.

Robot Model T của Telexistence
Robot Model T của Telexistence. Ảnh: japan.topnews.cloud

Thiết kế lạ mắt của nó nhằm giúp người mua sắm cảm thấy yên tâm vì mọi người có thể có cảm giác không thoải mái khi ở cạnh những con robot trông quá giống người.

Robot vẫn chưa phổ biến trong công chúng. Mặc dù có thể làm tốt hơn con người tại các nhà máy sản xuất, song chúng vẫn gặp khó khăn với các nhiệm vụ đơn giản trong môi trường đô thị khó đoán hơn.

Giải quyết vấn đề hiệu suất trên có thể giúp các doanh nghiệp ở các quốc gia công nghiệp phát triển như Nhật Bản với tình hình già hóa dân số ngày càng nhanh, đối phó với số lượng lao động giảm.

Các công ty bị ảnh hưởng bởi đại dịch corona cũng có thể cần phải hoạt động với ít nhân sự hơn.

Ông Tomioka cho biết kể từ khi dịch bệnh bùng phát, các khách sạn, nhà hàng và thậm chí cả công ty xăng dầu đã liên hệ với Telexistence.

Cô Niki Harada, cán bộ tại Liên đoàn Công nhân Nhà hàng Nhật Bản cho biết: “Hiện tại rất khó để biết được tác động của robot trong các nhà hàng – điều này có thể khiến nhân sự giảm đi, nhưng nó cũng có thể tạo ra nhiều việc làm mới”.

Telexistence cho biết, việc sử dụng người điều khiển bằng kính thực tế ảo và điều khiển cảm biến chuyển động để huấn luyện máy giúp giảm chi phí cho robot ngành bán lẻ so với việc lập trình phức tạp có thể tốn gấp 10 lần và mất nhiều tháng để hoàn thành.

Tomohiro Kano, tổng giám đốc phụ trách phát triển nhượng quyền, cho biết: “Mặc dù FamilyMart vẫn sẽ cần con người để điều khiển robot, nhưng người điều hành có thể ở bất cứ đâu và bao gồm cả nhân sự không làm việc tại cửa hàng.”

“Có khoảng 1,6 triệu người ở Nhật Bản không tham gia lực lượng lao động vì nhiều lý do.”

Giáo sư Takeo Kanade, một nhà khoa học về AI và robot tại Đại học Carnegie Mellon ở Hoa Kỳ, gia nhập Telexistence vào tháng 2 với tư cách là cố vấn, dự đoán rằng trong tương lai robot cũng có thể được sử dụng trong các bệnh viện để y bác sĩ có thể làm việc từ xa.

Robot sẽ được sử dụng trong nhiều lĩnh vực hơn để giải quyết vấn đề về hiệu suất và già hóa dân số
Robot sẽ được sử dụng trong nhiều lĩnh vực hơn để giải quyết vấn đề về hiệu suất và già hóa dân số. Ảnh: Arseny Togulev – Unsplash

Tuy nhiên, ông cho rằng có thể phải mất 20 năm nữa robot mới có thể làm việc tại nhà của mọi người.

“Để robot thực sự có thể sử dụng được ở các hộ gia đình, chúng phải biết giao tiếp. Điều cơ bản còn thiếu là chúng lại chưa biết cách con người cư xử thế nào.”

Theo Tim Kelly, Kevin Buckland

Biên tập bởi Gerry Doyle

Categories
Dev's Corner

Tại sao lập trình viên không thể estimate thời gian hiệu quả?

Hãy cùng Gambaru xem xét một cách tiếp cận thống kê để giải thích tại sao nhiều dự án công nghệ lại trễ hạn.

Cho dù bạn là lập trình viên junior, senior, quản lý dự án hay quản lý cấp cao với 20 năm kinh nghiệm, việc ước lượng thời gian trong các dự án phần mềm không bao giờ là dễ dàng.

Không ai dù có kinh nghiệm hay thiên tài đến đâu luôn có thể dõng dạc tuyên bố mình biết chắc chắn các mốc thời hạn chính xác của một dự án phần mềm cả
Không ai dù có kinh nghiệm hay thiên tài đến đâu luôn có thể dõng dạc tuyên bố mình biết chắc chắn các mốc thời hạn chính xác của một dự án phần mềm cả. Ảnh: Medium

Tổng quan

Trước tiên, hãy nhìn tổng thể vào vấn đề, hậu quả và nguyên nhân gốc rễ tiềm ẩn.

Vấn đề

Các dự án phần mềm hiếm khi đáp ứng đúng thời hạn.

Hậu quả

Các nỗ lực tiếp thị bị lãng phí, khách hàng không hài lòng, lập trình viên gặp áp lực có thể viết code chất lượng kém để chạy kịp deadline, khiến độ tin cậy của sản phẩm bị ảnh hưởng, và cuối cùng, các dự án hoàn toàn có thể bị hủy.

Các nguyên nhân đã được biết

  • Estimate thời gian sai (trọng tâm của bài viết này).
  • Yêu cầu không rõ ràng khi bắt đầu dự án và các yêu cầu thay đổi ở những giai đoạn sau.
  • Hội chứng “dát vàng” (gold plating): quá chú ý đến những chi tiết ngoài phạm vi công việc.
  • Không dành đủ hoặc mất quá nhiều thời gian cho giai đoạn nghiên cứu và thiết kế kiến ​​trúc.
  • Bỏ qua các vấn đề tiềm ẩn liên quan đến sự tích hợp của bên thứ ba.
  • Mong muốn “làm đúng ngay lần đầu tiên”.
  • Thực hiện quá nhiều dự án cùng một lúc hoặc bị phân tâm (thường xuyên phá vỡ quy trình).
  • Quy mô chất lượng-số lượng không cân bằng.

Lạc quan quá mức, Hiệu ứng Dunning-Kruger, Yếu tố bất định hay Tất cả chỉ là toán?

Hãy thử điểm qua các giả thuyết
Hãy thử điểm qua các giả thuyết! Ảnh: Unsplash
  • Thật dễ để loại bỏ giả thuyết về việc lạc quan quá mức chỉ vì một lẽ thường thấy rằng không có lập trình viên nào từng vật vã với deadline lại lạc quan khi đặt ra thời hạn làm task. Còn tình huống khi việc quản lý dự án đến từ người không có nền tảng kỹ thuật và họ đặt ra thời hạn mà không biết mình đang làm gì lại là một vấn đề hoàn toàn khác nằm ngoài phạm vi của bài viết này.
  • Một số cũng cho rằng việc ước lượng thời gian kém là do hiệu ứng Dunning-Kruger (đánh giá năng lực của bản thân cao hơn thực tế). Tuy nhiên, nếu việc thiếu kinh nghiệm hoặc đánh giá quá cao khả năng của một người là nguyên nhân dẫn đến đánh giá thấp thời gian, vậy có phải nhiều kinh nghiệm hơn sẽ giảm bớt vấn đề không? Thực tế, các công ty lớn với nhiều nguồn lực vẫn có tỷ lệ trễ deadline cao choáng váng, do đó giả thuyết này bị loại bỏ. 
  • Hầu hết các lập trình viên, đặc biệt là lập trình viên có kinh nghiệm, nhanh chóng kết luận cho yếu tố bất định. Theo họ, việc ước lượng thời gian sẽ luôn sai, “cuộc sống mà”, và điều duy nhất ta có thể làm là cố gắng đáp ứng yêu cầu khách hàng và bảo team lập trình “thôi ráng thêm xíu nữa” khi có sự cố. Tất cả chúng ta đều quen thuộc với những căng thẳng, code lỗi và sự hỗn loạn ở kịch bản này.

Đây có thực sự là cách tốt nhất mà ta có thể hoàn thành công việc không? Chà, tôi không nghĩ vậy và đó là khi tôi bắt đầu cố tìm ra một lời giải thích có tính toán học hợp lý về lý do tại sao những người thông minh như kỹ sư phần mềm không thể ước lượng thời gian hiệu quả được.

Nó chỉ là toán thôi!

3 giả thuyết đã bị loại!
3 giả thuyết đã bị loại!

Ngày nọ, tôi thực hiện một task lẽ ra chỉ mất 10 phút nhưng rốt cuộc nó tốn mất 2 giờ. Tôi bắt đầu suy ngẫm về lý do tại sao.

  • Tôi nghĩ sẽ mất 10 phút vì thực tế trong đầu đã biết 100% đoạn code mình cần viết.
  • Sau đó, nó ngốn mất của tôi đến 2 giờ vì có bug trong framework mà tôi hoàn toàn không biết.

Trong quản lý dự án, điều này được gọi là force majeure (sự kiện bất khả kháng): các nguyên nhân bên ngoài không thể kiểm soát được gây nên chậm trễ.

Đến đây bạn có thể nghĩ rằng tôi đang chứng minh cho giả thuyết các yếu tố bất định với kịch bản này. Đúng và Sai. Hãy nhìn rộng hơn một chút.

Sự bất định là nguyên nhân gốc rễ cho sự chậm trễ của task này bởi vì tôi sẽ không bao giờ đoán trước được có bug đó. Nhưng có nên cho đó là lý do dẫn đến sự chậm trễ của toàn bộ dự án?

Đến đây, ta cần phân biệt được rằng một task đơn lẻ không phải đại diện cho toàn bộ dự án và ngược lại.

Cách chúng ta “thường” ước lượng thời gian

  • Mean (giá trị trung bình)
  • Median (giá trị trung vị): giá trị tách giữa nửa lớn hơn và nửa bé hơn của một mẫu.
  • Mode (giá trị yếu vị): giá trị thường xuyên xuất hiện nhiều nhất.
Phân phối chuẩn (đường cong hình chuông)
Phân phối chuẩn (đường cong hình chuông)

Phân phối chuẩn

Phân phối chuẩn (normal distribution) rất phổ biến và bộ não người đã khá quen với chúng.

Về bản chất, chúng ta là những chuyên gia ước lượng mọi thứ tuân theo nguyên tắc phân phối chuẩn; đó là cơ sở để tích lũy kinh nghiệm trong quá trình làm việc.

Nếu bạn đã đi làm 7-11 lần trên 20 lần trong tháng này và mỗi lần đều mất 5 phút, ngoại trừ hôm thang máy đang bảo trì và bạn phải đợi 10 phút và có hôm bạn đợi vài phút cho đến khi trời tạnh mưa mới đi làm.

Vậy bạn ước tính thời gian đến chỗ làm hôm nay là bao nhiêu? 5 phút?

Nếu nói 15 phút thì không hợp lý vì thang máy hư là sự cố hy hữu hoặc 7 phút nếu hôm nay trời mưa.

Nếu 7-11 lần trên 20 lần, bạn mất 5 phút thì chắc chắn có khả năng lớn là hôm nay cũng chỉ mất 5 phút (median – giá trị trung vị), xác suất khoảng 90%.

Phân phối lệch

Ngay cả khi thực sự giỏi ước lượng thời gian cho một task, điều đó không có nghĩa là bạn sẽ giỏi ước lượng thời gian cho toàn dự án! Trái với những gì mọi người thường nghĩ, bạn sẽ ngày càng mắc nhiều sai lầm.

Meme ở phần 3 chính là nói về phân phối lệch (skewed distribution)! Hãy thử làm rõ cùng tôi.

Phân phối lệch
Giá trị trung vị (median) vẫn có xác suất đúng cao hơn giá trị trung bình (mean), đối với cùng 1 việc! Nếu đoán yếu vị (mode) (giá trị có xác suất cao nhất), bạn thậm chí còn sai nhiều hơn trên quy mô lớn hơn.

Phỏng đoán “tự nhiên” của chúng ta dựa trên số trung vị (median) giúp tối đa hóa xác suất đoán đúng; tuy nhiên, con số thực khi “sự kiện” đó xảy ra đủ số lần sẽ luôn gần với giá trị trung bình (mean).

Nói cách khác: Bạn càng làm nhiều task tương tự nhau, lỗi đó càng tích lại nhiều hơn!

Phương trình tính thời gian trễ theo giả thuyết trên.Phương trình tính thời gian trễ theo giả thuyết trên.
Phương trình tính thời gian trễ theo giả thuyết trên.

Các task lập trình trong một dự án thường khá giống nhau hoặc ít nhất được nhóm thành vài cụm tương tự! Phương trình này cũng gợi ý rằng vấn đề có thể mở rộng! Ai cũng muốn mọi thứ trong dự án phần mềm có thể mở rộng, trừ các vấn đề!

Vậy làm thế nào để áp dụng kiến ​​thức này?

Thành thật mà nói, khi viết bài, tôi không hề có ý định đưa ra “hướng dẫn” dựa trên giả thuyết này.

Bài viết là một phân tích mang tính khám phá, việc kết luận với một giả thuyết và hiểu nó là tùy thuộc vào độc giả.

Tuy nhiên, tôi biết rằng nhiều người sẽ thất vọng với kết luận mở trên, vì vậy đây là những gì cá nhân tôi đúc kết.

  1. Sẽ dễ dàng hơn để biết liệu task X sẽ mất nhiều / ít / cùng thời gian so với task Y hơn là nói chính xác chúng sẽ mất bao lâu. Điều này là do việc so sánh các giá trị median hoạt động giống như việc so sánh giá trị mean nếu độ lệch của các đường cong gần như nhau (điều này đúng với các task tương tự nhau).
  2. Tôi không nhớ hoặc ghi lại mọi task tương tự để tính toán và lấy giá trị trung bình. Vì vậy, tôi thường ước tính sai số không thể tránh khỏi (mean – median) theo phần trăm thời gian làm task đó tăng / giảm tùy thuộc vào mức độ thoải mái của tôi với môi trường development (tôi có thích ngôn ngữ / framework này không? (40%) Tôi có công cụ debug tốt không? (30%) Hỗ trợ IDE có tốt không? (25%) v.v.).
  3. Tôi chia sprint thành các task tương đương nhau, nhằm tạo sự đồng nhất trong quá trình ước lượng thời gian. Điều này cho phép tôi hưởng lợi từ điểm 1 ở trên, do sẽ dễ dàng biết được liệu hai task có thời gian gần bằng nhau hay không. Điều này cũng làm cho các task có thể có độ tương đương nhiều hơn, để có thể áp dụng hiệu quả giả thuyết trên và mọi thứ trở nên dễ đoán hơn.

Áp dụng các nguyên tắc này, bạn có thể thực hiện “thử nghiệm” nếu có đủ tài nguyên.

Ví dụ: nếu trong X1 ngày với Y1 lập trình viên, Z1 task tương đương đã được hoàn thành, thì ta có thể dễ dàng giải quyết X2 (ngày) nếu biết có sẵn Y2 lập trình viên và Z2 số task còn lại.

Theo Hesham Meneisi

Categories
All about Japan

Kioxia xây dựng nhà máy sản xuất chip nhớ tại Nhật Bản

Vào thứ 5, 29 tháng 10, 2020, Kioxia Holdings Corp cho biết họ sẽ xây dựng một dây chuyền sản xuất chip nhớ NAND mới ở miền trung Nhật Bản để đáp ứng nhu cầu lưu trữ dữ liệu ngày càng tăng từ lĩnh vực điện thoại thông minh đến ô tô tự lái.

Các chi nhánh và nhà máy tại Nhật của Kioxia
Các chi nhánh và nhà máy tại Nhật của Kioxia. Ảnh: Kioxia Holdings Corp

Dây chuyền mới này, dây chuyền thứ bảy cho Kioxia, sẽ được xây dựng tại nhà máy hiện có của họ tại Yokkaichi. Giai đoạn xây dựng đầu tiên sẽ hoàn thành vào mùa xuân năm 2022.

Công ty Nhật Bản cho biết trong một thông cáo rằng Kioxia và đối tác Hoa Kỳ, Western Digital, dự kiến sẽ cùng đầu tư vào dây chuyền mới này. Các bên không tiết lộ tổng số tiền đầu tư cho cơ sở mới.

Kioxia là tên thương hiệu mới thay cho Toshiba Memory
Kioxia là tên thương hiệu mới thay cho Toshiba Memory. Ảnh: Toshiba Memory

Theo TrendForce, Toshiba và Western Digital chiếm 32,7% thị phần toàn cầu NAND về mặt doanh thu trong quý tháng 4 – tháng 6, 2020, vượt qua con số 31,4% của công ty đầu ngành là Samsung Electronics, Hàn Quốc.

Theo Makiko Yamazaki

Categories
Dev's Corner

Làm thế nào để viết một unit test hiệu quả?

Viết unit test là một phần quan trọng của quá trình phát triển phần mềm bởi khi làm chính xác và hiệu quả, bạn có thể giảm đáng kể số lượng bug và đẩy nhanh tiến độ công việc.

Hãy cùng Gambaru xem qua một số cách tiếp cận viết unit test sau
Hãy cùng Gambaru xem qua một số cách tiếp cận viết unit test sau! Nguồn ảnh: freepik

Kiểm thử phương thức (method) với business logic

Giả sử ta có lớp Story với phương thức publish. Ta chỉ được phép publish một story nếu nó có trạng thái DRAFT.

Kiểm thử phương thức với Business Logic
Xem code gốc.

Trong trường hợp này, sẽ hợp lý nếu viết bài unit test cho phương thức này bởi nó chứa một quy tắc nghiệp vụ quan trọng.

Ta cần tạo hai bài unit test để bao quát hoàn toàn được quy tắc này:

  • Kiểm tra xem có xuất hiện Error khi trạng thái không phải là DRAFT hay không.
  • Kiểm tra xem liệu trạng thái có chuyển đổi thành Published khi trạng thái là DRAFT hay không.
Kiểm thử phương thức
Xem code gốc.

Chỉ bằng cách kiểm thử phương thức, ta có thể giữ cho các bài unit test ở mức nhỏ. Điều này đặc biệt hữu ích khi kiểm tra business logic khó.

Hãy cố gắng luôn bao quát mọi nhánh trong business logic của mình.

Ngoài ra, sử dụng công cụ báo cáo code coverage để thống kê phần trăm code đã được kiểm thử cũng là một thực tiễn tốt.

Giả lập các thành phần phụ thuộc

Trong một số trường hợp, để đảm bảo rằng mình chỉ đang kiểm tra business logic, bạn sẽ cần giả lập các thành phần phụ thuộc (mock the dependencies). Hãy sử dụng ví dụ sau:

Giả lập các thành phần phụ thuộc

Dịch vụ này có một phụ thuộc vào một event dispatcher. Cần phải giả lập phụ thuộc này vì ta không muốn dispatch MoneyTransferredEvent trong quá trình tiến hành làm unit test.

Ta chỉ muốn biết liệu dịch vụ này có xử lý tất cả các business logic như mong đợi hay không.

Giả lập các thành phần phụ thuộc
Xem code gốc.

Khi giả lập phụ thuộc này, ta có thể thay thế triển khai thực tế bằng triển khai “giả” (fake implementation) và sử dụng triển khai giả này để kiểm tra xem phương thức chính xác đã được gọi hay chưa.

Một giả lập cũng có thể trả về dữ liệu. Điều này có thể hữu ích khi ta giả lập repository chẳng hạn.

Hãy giữ các bài unit test ở mức độ nhỏ và chi tiết. Nếu có các assertion không liên quan trong một bài unit test, bạn có thể xem xét việc tách chúng thành nhiều bài unit test. Dưới đây là một ví dụ:

Tách thành nhiều bài unit test
Xem code gốc.

Bằng cách tách các assertion này ra, bạn sẽ biết trực tiếp phần nào của ứng dụng không hoạt động khi bài unit test không thành công.

Kiểm thử mô-đun

Đôi khi, sẽ hữu ích hơn khi kiểm thử toàn bộ mô-đun thay vì viết một bài unit test cho mọi phương thức.

Giả sử chúng ta có một số code cho cronjob trong ứng dụng của mình. Cronjob này sẽ tìm lấy tất cả các story đang chờ và publish chúng:

Kiểm thử module
Xem code gốc.

Điều quan trọng duy nhất đối với mô-đun này là nó lấy các story và publish từng story một. Viết một bài kiểm thử cho một mô-đun như thế này mang lại một số lợi ích tuyệt vời sau:

  • Bạn chỉ có thể kiểm tra những gì quan trọng: Các endpoint chính xác có được gọi với dữ liệu chính xác không?
  • Bạn có thể dễ dàng tái cấu trúc code của mình. Bài kiểm thử sẽ pass miễn là các endpoint được gọi với dữ liệu mong đợi.
  • Việc kiểm thử một mô-đun thường có thể được thực hiện nhanh hơn so với việc viết một bài kiểm thử cho mọi phương thức.

Hãy cùng xem qua bài kiểm thử mô-đun dưới đây:

Bằng cách giả lập API client, ta có thể trả về hai story. Kiểm thử sẽ pass nếu hai story này cũng được publish. Thêm một số bài kiểm thử khác cho các kết quả API khác nhau cũng là một ý hay.

Một lựa chọn tốt khác để kiểm thử các mô-đun là viết các bài kiểm tra tích hợp (integration test).

Tuy nhiên, lợi ích của làm unit test là bạn có thể dễ dàng chạy nó cục bộ hoặc trong một pipeline. Các bài kiểm thử mô-đun này cũng rất hữu ích cho phát triển hướng kiểm thử (test-driven development – TDD).

Nếu mô-đun chứa nhiều business logic, bạn có thể muốn thêm một số bài kiểm thử cho các quy tắc nghiệp vụ cụ thể này.

Khi bao quát được business logic trong các bài kiểm thử phương thức, các bài kiểm thử mô-đun sẽ trở nên đơn giản.

Các bài kiểm thử mô-đun sẽ vẫn hữu ích để xác nhận xem liệu tất cả các lớp có hoạt động cùng nhau như mong đợi hay không.

Kết

Tôi cực kỳ chuộng kiểm thử mô-đun vì chúng bao quát được rất nhiều code. Chúng cũng có thể hữu ích để kiểm thử dependency injection.

Tuy nhiên, chỉ viết các bài kiểm thử mô-đun thường sẽ không đủ. Sự kết hợp các bài kiểm thử mô-đun và kiểm thử phương thức sẽ mang đến nhiều lợi ích mỹ mãn.

Một điều quan trọng khác cần lưu ý là có nhiều bài kiểm thử phương thức quá có thể làm bạn chậm lại.

Ví dụ, khi thay đổi một chuỗi thành một enum, hầu hết các bài kiểm thử sẽ không thành công.

Tuy nhiên, các bài kiểm thử mô-đun vẫn sẽ pass. Vì vậy, hãy cân nhắc việc chỉ viết các bài kiểm thử này cho các phương thức chứa business logic.

Nếu bạn chưa bao giờ viết một bài unit test, lời khuyên là bạn nên bắt đầu bằng việc thử nghiệm các phương pháp nhất định.

Các bài kiểm thử mô-đun có thể hơi gian nan, phức tạp hơn – đặc biệt nếu chúng có nhiều thành phần phụ thuộc.

Quan trọng nhất là các bài kiểm thử của bạn bao quát hết logic quan trọng nhất và giúp cải thiện chất lượng code của mình
Quan trọng nhất là các bài kiểm thử của bạn bao quát hết logic quan trọng nhất và giúp cải thiện chất lượng code của mình. Ảnh: freepik

Để viết được các bài unit test hiệu quả, bạn sẽ cần tách code của mình đúng cách. Hãy tuân theo nguyên tắc SOLID.

Việc tách dự án của bạn thành các lớp khác nhau bằng cách sử dụng kiến ​​trúc đa tầng (multitier architecture) chẳng hạn, cũng có thể giúp việc kiểm thử ứng dụng dễ dàng hơn.

Theo Stein Janssen