Home Blog Page 224

Ngành IT: Làm việc “trên mây” kiếm nhiều tiền nhất hiện nay

Kết quả từ cuộc khảo sát đầu năm của Topdev về lương bổng của lập trình viên cho thấy nhiều thay đổi đã và đang diễn ra trong ngành IT – cuộc khảo sát tập trung vào các câu hỏi về khối lượng công việc, triển vọng cũng như sự hài lòng của họ về việc làm và nhiều câu khác. Báo cáo lương bổng ngành IT quý 1/2017 sẽ cho các bạn những cái nhìn sát thực nhất về thị trường hiện nay.

Đa phần các nhân viên lập trình đều cho rằng lương của họ có tăng nhưng vẫn chưa đủ so với những gì họ đã cống hiến cho công ty. Ngoài ra, nhiều người lo lắng với thị trường việc làm hiện nay dù có nhu cầu lập trình rất cao nhưng các công ty có vẻ đang giảm ngân sách chi tiêu cũng như thuê nhân viên IT.

Nhìn chung lương tăng nhưng đang ở chậm hơn so với trước

Sau giai đoạn tăng trưởng bèo bọt từ năm 2009 đến 2014, mức lương ngành IT đã được chú trọng hơn nhiều trong hai năm vừa qua, với mức tăng trung bình từ 3,6% đến 3,9%. Năm 2017 cũng cho dấu hiệu khả quan khi lương IT vẫn đtăng nhưng tốc độ đã giảm xuống còn 3%.

Mặt khác, hơn 67% người tham gia cuộc khảo sát xác nhận họ được tăng lương, giảm 16% so với cùng kì năm ngoái (71% – 2016). Dựa trên những số liệu trên, một số các nhà phân tích cũng như chuyên gia lập trình lo ngại các công ty đang có kế hoạch cắt bớt ngân sách cho IT.

Số lượng nhân sự IT sẽ tiếp tục tăng

Ngoài ra cuộc khảo sát còn cho thấy 43% số lượng nhân viên IT sẽ tăng lên trong năm 2017. Số người cho rằng sẽ không có thay đổi chiếm 49% và chỉ có 7% manager cho rằng công ty sẽ phải cắt giảm nhân sự bên lT.

Khi các IT manager được hỏi về kế hoạch tuyển nhân sự của họ. 66% nói họ đang tìm kiếm các chuyên gia về lập trình có tay nghề cao, trong khi 30% đang cần nhân viên kĩ thuật bình thường (entry-level) và chỉ có 2% là có ý định tìm kiếm nhân sự ở vị trí quản lí

Lĩnh vực IT nào đang được săn đón?

Trong nhiều năm liền, phát triển ứng dụng vẫn đứng đầu danh sách các mảng công nghệ mà IT manager tin rằng công ty sẽ cần tới trong năm 2017. Các kĩ năng như  help desk/tech support, an ninh, phân tích thị trường và phân tích dữ liệu cũng nằm trong top list của các công ty khi tuyển nhân sự nghành IT. Ngoài ra, năm 2017 cũng đánh dấu cho sự chú trọng trong nhiều lĩnh vực khác của IT như điện toán đám mây, quản trị và kết nối mạng.

Nhiều IT manager cho biết họ vẫn đang gặp khó khăn trong việc tìm kiếm nhân sự cho những vị trí trên: 37% nói rằng trong vòng 2 năm qua, họ mất tới 3 đến 6 tháng để kiếm được người thích hợp cho vị trí trên trong khi 15% cho biết họ chỉ thuê được sau hơn 6 tháng tìm kiếm và có khi còn lâu hơn.

Lương vị trí nào khủng nhất?

Không có gì ngạc nhiên khi vị trí được trả lương hậu hĩnh nhất cũng là vị trí yêu cầu kĩ năng mà các công ty đang cần. Ngành cloud computing hiện cũng lá một trong những ngành được quan tâm nhiều nhất. Ngoài ra, bộ tứ nghành phát triển app, an ninh số, phân tích dữ liệu và điện toán đám mây cũng có tốc độ phát triển nhanh nhất. Không chỉ thế, cả 4 nghành đều có rất nhiều cơ hội cho các IT professional tiềm kiếm việc làm cũng như phát triển sự nghiệp nhờ vào nhiều yêu cầu cũng như vai trò chéo thú vị.

Mức độ hài lòng về lương thưởng?

Mặc dù lương có tăng nhưng chỉ có một nửa số người tham gia cuộc khảo sát cho biết họ hài lòng với mức lương thưởng, trong khi một phần tư câu trả lời là không hài lòng. Khi được hỏi về mức lương của họ trong vòng 12 tháng vừa qua, 14% cho biết họ khá vui sau khi được tăng lương và có tới 21% người được hỏi cho biết họ không được hài lòng lắm.

Cũng chỉ có 21%  cảm thấy rằng mức lương của họ có tỉ lệ tăng phù hợp với nhu cầu  của thị trường.

Bạn làm việc bao nhiêu giờ một tuần?

Làm việc liên tục đã không còn gì lạ đối với nghề lập trình, với trung bình khoảng 46 tiếng hàng tuần. Khoảng 52% nói rằng họ vẫn thường xuyên kiểm tra email hoặc làm những việc liên quan đến công việc với công ty ngay trong cả ngày nghỉ, cuối tuần hoặc lễ.

Bắt kịp sự thay đổi và phát triển của công nghệ IT là điều mà phần lớn người được hỏi cho biết. Tiếp sau đó là việc đánh giá thấp giá trị của người lao động lớn tuổi, việc IT sẽ phải kết hợp với các mục tiêu kinh doanh, khả năng mất việc vì thị trường lao động bị bão hòa. Còn với IT manager thì đó là thiếu nguồn nhân lực giỏi, có trình độ cao.

Khi nói về sự nghiệp riêng, các chuyên gia IT cũng lo rằng họ sợ kĩ năng của mình bị mai một sẽ không bắt kịp được yêu cầu của người tuyển dụng (Được lựa chọn bởi 22% số người trả lời) , lương không tăng (17%), không kiếm được vị trí phù hợp với kĩ năng (14%), sự thay đổi về cấu trúc hoạt động cũng như vai trò của phòng IT trong công ty (12%) và khối lượng công việc nhiều (10%)

Lý do khiến nhân sự ngành IT thay đổi?

Được đánh giá là một ngành có thu nhập cao nên không có gì ngạc nhiên khi đại đa số người tham gia công nhận họ làm công việc mới là vì tiền lương cao (chiếm tới 73%). Một số các nguyên nhân nổi bật khác bao gồm điều kiện việc làm tốt hơn, dành được nhiều thời gian cho bản thân, công việc ổn định hơn, bonus thưởng cao, được tham gia vào các project về công nghệ mới và cả là được thời gian nghỉ nhiều hơn.

Trong số những người quyết định kiếm việc làm mới, 60% nói rằng họ muốn công việc với mức lương tốt hơn, 43% thì vì để có cơ hội thăng tiến, 33% lại vì hoàn thiện bản thân cũng như là vì lợi ích cá nhân và cũng ngần ấy người được hỏi xác nhận họ tìm kiếm công việc mới do đã chán công việc hiện tại cũng như là để thử thách bản thân.

Khi được hỏi về điều gì khó nhất trong quá trình kiếm việc làm, khoảng 22% trả lời rằng họ cần phải biết được bản thân muốn gì từ công việc mới; khoảng từ 10 đến 16% cho rằng đó là việc phải nhờ vả và tạo dựng mối quan hệ; phải đòi hỏi mức lương như thế nào, bao lâu thì công ty mới hoàn tất thủ tục tuyển dụng, đáp ứng được đòi hỏi của công ty và cũng như là cách viết CV, phỏng vấn thành công.

Các lập trình viên có cảm thấy hối hận?

Sau cùng thì đại đa số người tham gia cuộc khảo sát tỏ vẻ hài lòng với lựa chọn ngành của mình. Hơn 58% tin rằng ngành công nghệ thông tin có rất nhiều tiềm năng và lương trả hậu hĩnh hơn những ngành khác. 32% thì tin là nó cũng có tiềm năng như các ngành quan trọng và chỉ có 10% nghĩ theo hướng ngược lại.

Và khi được hỏi câu hỏi trên thì có tới 85% người được hỏi cho biết họ hoàn toàn hài lòng với lựa chọn nghề IT. Để xem toàn bộ bản báo cáo, các bạn có thể tải ngay file báo cáo tại đây

Techtalk via topdev

30 tiện ích Chrome cho designer và dev

Với tốc độ ưu việt và nhiều developer tool built-in, Chrome dần phổ biến hơn trong giới designer và developer bên cạnh Firefox. Và cũng chính vì lý do này, số lượng tiện ích mở rộng cho Chrome đang gia tăng ngày càng chóng mặt.

1. CSS-Shack

Công cụ mạnh mẽ này cho phép bạn design thoải mái, và suất thành file CSS dùng được ngay cho web. CSS shack có hỗ trợ layer và hầu hết các tính năng thường thấy của một photo editor.

css-shack

2. Marmoset

Với tiện ích này, bạn có thể xuất code snapshots đẹp lung linh để đưa vào demo và mockup. Bạn cũng có thể thêm theme và nhiều hiệu ứng hình ảnh cho promo và portfolio online.

3. iMacros for Chrome

Với một web developer, công việc test có thể sẽ lặp đi lặp lại rất nhàm chán. Đây chính là cứu tinh của bạn, iMacros sẽ ghi lại và lưu thao tác của bạn. Những công việc lặp lại dài lê thê giờ đây chỉ cần được thực hiện một lần duy nhất. Chỉ với một cú click chuột, bạn có thể test page bao nhiêu lần cũng được.

iMacros for Chrome

4. Font Playground

Một tiện ích hoàn hảo cho (web) designer và developer. Với Font Playground, bạn có thể “đùa nghịch” thỏa thích với các font bạn hiện có và thư viện Google font đồ sộ. Font sẽ được áp thẳng lên web mà không cần phải thao tác phức tạp. Không chỉ đơn thuần áp font, tiện ích còn cho phép bạn thử nghiệm thay đổi weight, style và effect tùy thích.

5. Window Resizer

Tiện ích làm việc đúng như tên, resize lại cửa sổ trình duyệt, từ đó giúp bạn theo dõi design của mình chuẩn xác hơn. Bạn có thể chọn từ một danh sách chuẩn màn hình phổ biến có sẵn, hoặc theo thiết lập tùy chỉnh.

6. Project Naptha

Nhờ vào công nghệ OCR thông minh, tiện ích cho phép người dùng highlight, copy, paste, và thậm chí dịch text ra từ ảnh.

7. What Font

What Font giúp deverloper và designer xác định font dùng cho một web nhất định. Vì vậy, nếu bạn hay thi thoảng bắt gặp vài font đẹp hay ho mà muốn “tái sử dụng”, bạn chỉ cần hơ chuột vào text để biết được.

8. Yslow

Công cụ không chỉ kiểm tra tốc độ load của web, mà còn cho biết lý do web chạy chậm, nếu có. Yslow sẽ kiểm tra đối chiếu với 23 trong số 34 quy luật của Yahoo’s performance team. Đây cũng là công cụ phân tích và tối ưu web vô cùng hiệu quả.

9. Web Developer

“Không dùng cái này thì dev sống sao đây.” Tiện ích thêm hẳn một toolbar vào Chrom với nhiều công cụ lập trình mạnh mẽ.

10. Page Ruler

Page ruler là công cụ đo lường các thành phần trên web “chuẩn từng li”, bạn chỉ việc đặt thước và lấy thông tin của thành phần đó.

11. Web Developer checklist

Công cụ này sẽ kiểm tra web của bạn từ trên xuống dưới (tất nhiên chỉ khi web của bạn là theo chuẩn) về mọi mặt: SEO, khả năng khả dụng, khả năng truy cập, tốc độ,… Ví dụ như, nếu bạn thiếu tag H1 trên page hoặc page thiếu meta title hay meta description, công cụ sẽ thông báo bạn ngay. Nếu bạn click vào link  ‘more info and help’ ở cuối tiện ích, bạn sẽ thấy checklist chi tiết hơn.

12. DevTools Autosave

DevTools AutoSave cho phép tự động lưu bất cứ thay đổi của trang CSS và JS thông qua môi trường Chrome Dev Tools vào file nguồn. Công cụ rất dễ thiết đặt và sử dụng.

13. Instant Wireframe

Biến bất cứ web nào thành wireframe chỉ với một cú click chuột. Bạn giờ đây có thể kiểm tra web, local lẫn live, qua wireframe nhanh chóng.

14. ColorZilla

Tiện ích ColorZillar là một tập hợp eyedropper (đo màu), colour picker(bảng màu), gradient generator (đổ bóng) cùng nhiều công cụ khác cho công việc design.

15. Ripple Emulator

Ripple Emulator là một công cụ giả lập môi trường mobile đa nền tảng giúp test ứng dụng web trên một số thiết bị và màn hình hiển thị. Rippe có thể kết hợp với các công cụ lập trình hiện có để thực hiện debug, kiểm tra DOM và test tự động.

16. Streak

Streak là công cụ quản lý CRM mạnh mẽ có hỗ trợ email trong Gmail. Công cụ biến một hoặc một loạt email thành ticket dễ theo dõi, quãn lý và chia sẻ.

17. Search Stackoverflow

Nếu đã là web developer, chắc hẳn bạn đã nghe qua về Stack Overflow, địa chỉ phải đến khi vấp phải bất cứ vấn đề lập trình nào. Nếu chưa nghe qua, bạn nên vào xem thử ngay đi, cộng đồng Stack Overflow đang phát triển mạnh mẽ với một loạt chủ đề đa dạng từ C#, Java đến PHP và jQuery. Tiện ích này sẽ thêm một search box trực tiếp lên trình duyệt giúp bạn tìm kiếm kho kiến thức khổng lồ của Stack Overflow mọi lúc, mọi nơi.

18. PHP Ninja Manual

Việc nhớ hết tất cả các hàm gần như là không thể, và đây là công cụ giúp bạn giải quyết vấn đề này. The PHP Ninja Manual là kho tài liệu PHP 5.5 kèm theo ví dụ (của 8 loại ngôn ngữ) ngay trên trình duyệt.

19. PerfectPixel

Design rất bực mình khi thấy sản phẩm sau code lại không đẹp “choáng váng” như thiết kế của mình. Perfect pixel thực sự là công cụ hỗ trợ hay cho các designer đang phát triển web đúng theo như thiết kế. Tiện ích sẽ đặt một hình ảnh mờ chồng lên web như hình, đồng thời so sánh giữa hai ảnh để đảm bảo độ chính xác đến từng pixel.

20. Code Cola

Bên cạnh khả năng hiển thị mã nguồn của đối tượng, công cụ còn một CSS editor cho phép bạn chỉnh sửa CSS style và xem kết quả tại chỗ.

21. Chrome Sniffer

Tiện ích này giúp kiểm tra, xác địch thư viện JavaScript và ứng dụng đang chạy trên web. Cách sử dụng không thể dễ hơn được nữa: một icon sẽ xuất hiện trên thanh địa chỉ cho thấy phiên bản CMS và framework được sử dụng.

22. User Agent Switcher

Một công cụ hay nếu muốn thấy giao diện của web trên nhiều thiết bị truy cập khác nhau như: iPad, iPhone, Android,…

23. IE tab

IE tab là một trong những giả lập IE hàng đầu hiện nay. Cộng cụ giúp developer test page cho nhiều phiên bản IE trực tiếp trên trình duyệt Chrome.

24. PicMonkey

Một tiện ích photor editor cho phép bạn chỉnh sửa hành ảnh và screenshots của web. Nhưng đây chưa phải là tính năng làm ứng dụng nổi tiếng. PicMonkey cho phép bạn tải tất cả hình ảnh và screenshot của cả một trang web trong một cú click chuột. Khi đã lựa chọn một hình ảnh, bạn có thể điều chỉnh tùy thích từ thêm hiệu ứng đến phơi sáng,…

25. Chrome Daltonize

Colour Vision Deficiency (CVD) – khiếm khuyết về thị giác hoặc mù màu đang gây nhiều vấn đề cho hàng triệu người trên thế giới. Tiện ích này sử dụng daltonization, một công cụ cho phép tạo ảnh phù hợp hơn cho người có CVD. Công cụ này sẽ tái thể hiện hình ảnh theo cách nhìn của người có CDV, giúp bạn điều chỉnh thiết kế phù hợp hơn.

26. Appspector

Tiện ích giúp developer kiểm tra thư viện javascript và ứng dụng web. Một icon sẽ hiện trên thanh địa chỉ hiển thị framework được kiểm tra. Tiện ích có khả năng xác định đến hơn 100 thư viên CSS và JS.

27. Check My Links

Bạn đã build xong page? Vậy bạn đã kiểm tra lại đường dẫn chưa? Dù bạn có cẩn thận đến mức nào, bạn sẽ không cách nào đảm bảo được tất cả các link, và kiểm tra lại từng cái một là một công việc kinh khủng. Với Check My Links , bạn chỉ việc chạy tiện ích và ngồi chờ.

28. Flickr Tab

Bạn có phát chán trước những phông tab Chrome đơn điệu? Với, Flickr Tab bạn sẽ không còn chán nữa.

Flickr Tab

Tiện ích gọn nhẹ này sẽ hiển thị một hình ảnh Flickr nổi tiếng mỗi khi bạn mở một cửa sổ mới. bạn có thể click vào ảnh để xem trên Flickr hoặc username để xem thêm ảnh của người dùng đó.

29. Google Art Project

Nếu bạn không thích thú với Flickr Tab và những hình ảnh màu mè. Bạn có thể sẽ thích Google’s Art Project.

Với mỗi tab mới mở, bạn sẽ được chiêm ngưỡng những kiệt tác phân giải cao từ Van Gogh hay Monet. Nếu bạn muốn tìm hiểu thêm, chỉ việc click vào ảnh và bạn sẽ được dẫn đến website Google Cultural Institute với đầy đủ thông tin của tác phẩm và họa sĩ.

30. Data Saver (Beta)

Data Saver, sẽ giảm lượng dữ liệu tiêu thụ khi duyệt web. khi kích hoạt, Chrome sẽ dùng máy chủ Google nén trang web trước khi bạn tải trang. Tuy nhiên vẫn có hạn chế: các trang SSL và ẩn danh sẽ không được hỗ trợ.

Nguồn: Techtalk via creativebloq

 

Viết ngôn ngữ lập trình – Ai cũng làm được?

Trong vòng 6 tháng vừa qua, tôi đang phát triển một ngôn ngữ lập trình gọi là Pinecone. Sẽ còn là quá sớm để kết luận rằng nó đã hoàn hảo, nhưng Pinecone đã có nhiều tính năng hoạt động hiệu quả cho việc lập trình, bao gồm:

  • Variables
  • Functions
  • User defined structures

Trước hết, tôi sẽ nói với các bạn rằng tôi không phải là một chuyên gia lập trình, lại càng không biết mình đang làm cái quái gì, tới giờ cũng vậy. Tôi cũng chả qua được một lớp học bài bản nào, chỉ có học chút đỉnh từ internet rồi cứ lao vào “vọc”, nhiều khi còn bỏ qua nhiều lời khuyên, hướng dẫn.

Ấy thế, mà tôi vẫn tạo ra được một ngôn ngữ lập trình mới. Đã vậy lại hoạt động tốt thế mới hay chứ. Điều đó có nghĩa tôi đã làm điều gì đó đúng.

Trong bài viết này, tôi sẽ cho các bạn thấy điều cốt lõi ở Pinecone (cũng như các ngôn ngữ lập trình khác) để có thể biến các dòng code thành ma thuật thần thánh.

Ngoài ra, tôi cũng sẽ nói về những kinh nghiệm đánh đổi bằng xương máu của mình để đi đến những quyết định then chốt tạo ra Pinecone như bây giờ.

Đây không phải là một bài hướng dẫn chi tiết về cách viết một ngôn ngữ lập trình nhưng nó sẽ là mốc bắt đầu cho những bạn muốn biết về ngôn ngữ lập trình.

Điểm khởi đầu

“Nói thật là em chả biết phải bắt đầu từ đâu cả !” – đó là câu nói mà tôi vẫn thường nghe từ các lập trình viên khác khi nói về việc viết một ngôn ngữ lập trình mới. Nếu đó cũng là phản ứng của bạn thì đừng lo, tôi đã chuẩn bị một list các quyết định cần đưa ra và những bước cần phải thực hiện khi bắt đầu viết một ngôn ngữ lập trình mới.

Compiled vs Interpreted

Có 2 loại ngôn ngữ chính: Biên dịch (Compiled) và thông dịch (Interpreted)

  • Ngôn ngữ biên dịch là ngôn ngữ lập trình mà những trình biên dịch có thể biên dịch mã nguồn thành ngôn ngữ máy. Sau đó được lưu lại để executed sau (Compiled).
  • Với một số ngôn ngữ, mã nguồn có thể được thực thi từng dòng một bởi một chương trình được gọi là trình thông dịch (Interpreted).

Theo lí thuyết thì bất cứ ngôn ngữ lập trình nào cũng sử dụng compiled và interpreted được nhưng tùy vào hiệu quả mà sẽ tập trung vào chỉ dùng compiled hoặc interpreted thôi. Thường thì interpreted  sẽ linh hoạt hơn trong khi compiled sẽ cho hiệu năng cao hơn. Nhưng đây chỉ là bề nổi của một tảng băng vốn phức tạp hơn nhiều.

Bản thân tôi đề cao tính hiệu quả và năng suất vì thế mà tôi nhận ra có rất ít các ngôn ngữ lập trình vừa có hiệu năng cao trong khi vẫn dễ hiểu để người dùng tiếp xúc, chính vì thế mà tôi chọn compiled cho Pinecone.

Đây là một quyết định quan trọng cần phải có ngay từ đầu bởi việc viết ngôn ngữ lập trình sẽ bị ảnh hưởng rất nhiều.

Tuy nói rằng Pinecone được viết theo hướng compiled, nó vẫn có full chức năng của interpreter. Tôi sẽ giải thích cho các bạn lí do ở phần sau của bài viết.

Chọn ngôn ngữ lập trình

Các bạn hẳn cũng đã rõ, tự ngôn ngữ lập trình đã là một chương trình rùi thế nên mà bạn phải biết đọc và viết nó. Tôi thì chọn C++ tại nó có hiệu năng cao mà lại bao gồm nhiều tính năng khá hữu ích. Một phần khác là vì tôi cũng khoái C++

Còn nếu bạn muốn viết một ngôn ngữ lập trình dạng thông dịch (interpreted) thì nó càng phải viết theo hướng compiled ( sử dụng C,C++ or Swift) bởi hiệu năng bị mất trong quá trình thông dịch ngôn ngữ sẽ được khắc phục nhờ vào compiled. Ngược lại với compile thì bạn dùng một ngôn ngữ lập trình “chậm hơn” (Python hoặc là JavaScript) để dù tốc độ compile có giảm đi nhưng vẫn còn hơn là ứng dụng chạy bị lỗi hoặc không ổn định.

Level Design phải cao

Có thế hiểu một ngôn ngữ lập trình có cấu trúc như một cái ổng dẫn nước vậy. Nó sẽ có nhiều tầng khác nhau, và mỗi tầng sẽ là những data được định dạng theo một cách riêng biệt. Ngoài ra nó còn có chức năng chuyển đổi data từ tầng này sang tầng khác.

Tầng đầu tiên sẽ là một string chứa tất cả input source file còn tầng cuối cùng sẽ là kết quả khi app chạy thành công. Các bạn sẽ hiểu rõ hơn về cấu trúc “ống nước” của Pinecone sau khi đọc hết bài viết này.

Lexing

Bước đầu tiên của hầu hết các ngôn ngữ lập trình là Lexing. “Lex” là chữ cái viết tắt ám chỉ việc phân tích từ vựng. Nói cách khác, Lexing tức là chia cắt các đoạn text thành các token riêng biệt.

Tokens

Có thể hiểu Token là một đơn vị nhỏ của ngôn ngữ. Một Token có thể là một variable, tên của  function, operator hoặc đơn giản là số.

Nhiệm vụ của Lexer

Lexer sẽ chia string chứa toàn bộ file của mã nguồn thành một list nhiều string nhỏ chứa các token khác nhau.

Bởi các tầng cao hơn trong cấu trúc “ống nước” của Pipecone sẽ không quay về lấy thông tin từ mã nguồn nữa mà Lexer sẽ đảm nhiệm cung cấp tất cả các thông tin cần cho các stage đó. Nguyên nhân cho việc này là bởi vì để Lexer có thể làm những nhiệm vụ như xóa comments, xác định được token nào là số hoặc là identifier. Như vậy sẽ giúp bạn không phải lo lắng về những qui định khi viết một ngôn ngữ lập trình.

Flex

Ngày đầu tiên tôi bắt đầu viết ngôn ngữ lập trình, việc trước hết tôi làm là tạo ra một Lexer đơn giản. Sau một thời gian, tôi lại tiếp tục học được nhiều tool giúp cho Lexer chở nên đơn giản hơn, ít bị bug hơn.

Flex  là một trong những tool đó. Vốn là một phần mềm tạo ra Lexer. Bạn đưa vào một file chứa cú pháp đặc biệt để miêu tả ngữ pháp của ngôn ngữ mà bạn muốn viết. Flex sẽ tạo ra một phần mềm sử dụng C với tính năng lexing một string và cho ra kết như bạn muốn.

Quyết định của tôi

Dù Flex khá là hữu ích nhưng tôi quyết định vẫn sử dụng Lexer do chính tôi làm ra bởi dù sao thì nó chỉ có vài trăm dòng code, chạy khá êm mà cũng rất tiện cho tôi để chỉnh sửa cũng như thêm operator cho ngôn ngữ mà không cần phải sửa nhiều file khác nhau.

Trình phân tích cú pháp – Parsing

Nhiệm vụ của Parser

Parser thêm cấu trúc cho list của tokens sau khi được tạo ra bởi lexer. Để ngăn sự mơ hồ, bộ phân tích cú pháp (Parser) phải đưa vào ngoặc đơn và thứ tự hoạt động. Thật sự parser không hề khó nhưng khi ngôn ngữ được phát triển thì Perser sẽ trở nên phức tạp hơn.

Bison

Lần nữa, ta lại phải đưa ra quyết định liên quan đến library của một nhóm thứ 3 bên ngoài. Một trong những thư viện parsing mạnh nhất là Bison bởi nó hoạt động khá giống Flex. Bạn viết 1 file với format bất kì để chứa thông tin về ngữ pháp của ngôn ngữ đó, sau đó Bison sẽ dựa vào đó để tạo ra 1 phần mềm C để thực hiện Parsing cho bạn. Nhưng tôi thì lại không xài Bison.

Tự làm vẫn tốt hơn

Với Lexer, lựa chọn tự dùng code của mình đối với tôi là điều hiển nhiên. Bởi lexer thật chất chỉ là một phần mềm không đáng kể đến mức nó khiến tôi cảm thấy hơi bị ngốc luôn nếu mà không tự làm được. Thế nhưng với Parser thì đó lại là chuyện hoàn toàn khác. Chương trình Parser của Pinecone hiện tại dài tới 750 dòng code, đó là chỉ sau 3 lần tôi phải viết lại bởi nó chạy dở như hạch.

Điều khiến tôi đưa ra quyết định này là bởi một vài lí do như sau:

  • Giảm thiểu chuyển đổi ngữ cảnh/thông tin: khối lượng thông tin phải chuyển đổi qua lại giữa C++ và Pinecone đã đủ tệ rùi, giờ mà còn cho Bison vào nữa thì chắc nó “banh xác” luôn.
  • Để build nó đơn giản: Cứ mỗi lần thay đổi ngữ pháp thì Bision lại phải chạy trước cái buid. Dù là có thể để auto tự chạy những việc cứ phải đổi qua lại các build system thì cũng đủ chán nản rùi.
  • Tôi thích build cái gì nó ngầu vãi ra: Ngay từ đầu khi bắt đầu viết Pinecone tôi vốn đã không cho rằng nó dễ. Nếu đã thế thì chơi khó luôn, sao phải sợ mà đưa vị trí trung tâm quan trọng cho những đứa khác chứ (ý là để các phần mềm làm giúp).

Ngay từ đầu tôi đã biết rõ con đường mình chọn vốn không hề đơn giản thế nhưng tôi vẫn tự tin nhờ vào những gì mà Walter Bright nói:

“Biết là thế nào cũng gây tranh cãi khi nói điều này, nhưng tôi sẽ không lãng phí thời gian với Lexer hay Parsen đâu. Chúng rất tốn thời gian. Viết một lexer và parser chỉ chiếm một tỷ lệ rất nhỏ trong công việc viết một trình biên dịch (compiler). Cả cái thời gian mà bạn xài mấy cái trình đó thì tự mình viết còn nhanh hơn. Đã thể sử dụng mấy cái trình tạo ra lexer hay parser còn thường xuyên báo lỗi, ồn ào đến mệt người”

Action Tree

Action tree theo như tôi hiểu thì nó liên quan tới  LLVM’s IR (intermediate representation). Mặc dù có vẻ giống nhau như thật ra bản chất của action tree rất khác biệt so với syntax tree. Tôi đã phải mất một khoảng thời gian để tìm ra được điểm khác nhau giữa chúng.

Action Tree vs AST

Nói nôm na thì Action tree chính là AST nhưng thêm context (thông tin) vào. Những context đó là thông tin về loại function nào hoặc là vị trí mà 1 variable được sử dụng. Bởi vì Action tree cần phải biết và nhớ được những thông tin đó nên phần mềm tạo ra Action tree cũng cần rất nhiều namespace và những thứ khác.

Chạy Action Tree

Khi ta đã có một action tree thì việc chạy code sẽ trở nên dễ dàng. Mỗi action node đều có một function “execute”, chúng sẽ lấy các thông tin input để thực hiện những mệnh lệnh được đưa ra để có thể cho ra output là kết quả những mệnh lệnh đó. Đó cũng là cách interpreter hoạt động.

Lựa chọn để Compiling

“Ủa chẳng phải Pinecone vốn đã compiled rồi mà?”. Bạn đúng rồi đấy! nhưng compiling nó có nhiều cách lắm.

Tự tạo Compiler

Bạn đầu khi mới viết Pinecone thì nghe có vẻ là ý tưởng hay. Bạn cũng biết rùi đấy, tôi thích tự làm, tự “vọc” và tự chế. Thế nhưng việc viết một chương trình compiler nhỏ gọn lại cực kì khó. Đồng thời bởi vì số lượng các thiết kế, cấu trúc và hệ điều hành mà gần như là bất khả thi cho việc tạo ra một compiler backend với đa nền tảng mà chỉ có một cá nhân. Ngay đến cả team của các ngôn ngữ lập trình nổi tiếng như Swift, Rust hay Clang còn chán nản và phải dùng đến những chương trình sau:

LLVM

LLVM là một chương trình tổng hợp của các compiler tools. Nói cách khác, LLVM là một libary giúp biến ngôn ngữ lập trình của bạn thành một thư viện biên soạn chất lượng. Nghe thì có vẻ khá là hoàn hảo đúng không? Thật tiếc là nếu bạn không có chuẩn bị thì dễ “chết đuối” y như tôi. LLVM là một library cực kì đồ sộ và phức tạp. Tôi nhận ra mình phải bỏ ra một khoảng kha khá thời gian để có thể sử dụng LLVM được cho Pinecone.

Transpiling

Vừa muốn Pinecone được viết theo hướng compiled lại muốn hiệu năng phải cao, tôi quyết định sử dụng 1 phương thức khác là transpiling (chuyển đổi)

Tôi viết một chương trình Pinecone cho C++ transpiler, rồi lại thêm tính năng tự động compile cũng như cho ra output với GCC. Hiện tại thì cách này hiệu quả với phần lớn các chương trình của Pinecone. Dù không nhỏ gọn cũng chẳng có được sự tinh tế nhưng ít ra thì nó hoạt động khá suôn sẻ.

Tương lai

Nếu mà vẫn có thể tiếp tục phát triển Pinecone thì chắc chắn là nó sẽ phải có LLVM compiling support thôi. Bởi cho dù tôi có cố đến máy thì cách chuyển đổi – transpiler chỉ là chữa cháy tạm thời thôi. Thế nên trong tương lai không xa thì Pinecone sẽ có sự thay đổi về mặt này.

Lời kết

Hi vọng là bài viết giúp bạn hiểu rõ thêm về ngôn ngữ lập trình. Tôi cũng khuyến khích các bạn thử viết cho mình một ngôn ngữ lập trình riêng. Sau đây là những kinh nghiệm đúc kết được của tôi:

  • Khi bạn còn đang hòai nghi thì cứ chọn interpreted. ngôn ngữ thông dịch luôn dễ để viết, build cũng như học. Không phải là tôi chê compiled nhưng nếu mà bạn không biết phải chọn gì thì cứ interpreted mà tới.
  • Đối với lexer và parser thì cứ “vọc” theo ý bạn. Tại việc tự viết hay sử dụng chương trình có sẵn đều có điểm mạnh điểm yếu của nó. Điều quan trọng là ở bạn.
  • Học theo structure “ống nước” của tôi. Đây là kinh nghiệm xương máu mà tôi rút ra được khi viết nên Pinecone vì thế mà bạn hãy làm theo. Chỉ nên bỏ qua nó nếu bạn thật sự có ý tưởng tốt hơn.
  • Nếu bạn không có thời gian cũng như động lực để viết một ngôn ngữ lập trình quá phức tạp thì thử xài những ngôn ngữ lập trình như Brainfuck. Đây là những interpreter khá ngắn với vọn vẹn vài trăm dòng code.

Sau một thời gian phát triển Pinecone, mắc rất nhiều lỗi cũng như là dành thời gian để sửa những lỗi đó. Pinecone hiện giờ đã vào giai đoạn hoạt động hiệu quả và vẫn được tiếp tục phát triển. Việc tạo ra Pinecone quả thật đã cho tôi rất nhiều bài học hữu ích cũng như những trải nghiệm khó quên và đối với tôi thì mọi thứ cũng chỉ vừa mới bắt đầu thôi. Sẽ còn nhiều thứ để phải làm.

Nguồn: Techtalk via medium

Tăng trưởng ‘nóng’, ngành công nghệ thông tin ồ ạt tuyển người

Doanh thu ngành công nghệ thông tin (CNTT) tăng, doanh nghiệp công nghệ nước ngoài “đổ bộ” vào VN và nhiều doanh nghiệp Việt vươn ra thế giới… đang khiến doanh nghiệp CNTT đua nhau tuyển người.

Nhiều hợp đồng CNTT được doanh nghiệp VN ký với nước ngoài, không chỉ bán sản phẩm mà đưa cả người sang làm việc.

Cùng với đó, việc nở rộ các nội dung số, ứng dụng cho điện thoại, máy tính bảng; phong trào khởi nghiệp liên quan đến công nghệ… đang tạo nhiều điểm nhấn mới trong sự phát triển của ngành CNTT tại VN.

Tuyển dụng tăng kỷ lục

Theo báo cáo về ngành CNTT VN 2017 của các công ty tuyển dụng hàng đầu, nhu cầu tuyển dụng ngành CNTT đang ở mức cao nhất trong lịch sử với gần 15.000 việc làm tuyển dụng trong năm 2016.

Trong khoảng 3 năm trở lại đây, số lượng việc làm trong ngành CNTT được đăng tải đã gia tăng gấp đôi (năm 2013: 6.792 việc làm, năm 2016: 14.997 việc làm).

Với hơn 10.000 nhân sự hiện tại, trả lời Tuổi Trẻ, ông Hoàng Nam Tiến, chủ tịch Công ty FPT Software, xác nhận đơn vị này đang cần tuyển tới 20.000 nhân sự ở tất cả các vị trí từ kỹ sư cầu nối, lập trình viên, kiểm thử… trong giai đoạn 2017-2020.

FPT đã mở riêng một đơn vị tại Nhật Bản và FPT Nhật Bản đã trở thành công ty CNTT nước ngoài lớn nhất tại nước này với 760 nhân sự làm việc tại 4 văn phòng.

Năm 2017, FPT Nhật Bản dự kiến quy mô nhân sự lên đến 3.000 người.

Theo ông Hoàng Nam Tiến, cuộc cách mạng công nghiệp lần thứ tư đã mang đến cho các doanh nghiệp công nghệ những động cơ tăng trưởng mới. Không tiết lộ các hợp đồng với nước ngoài nhưng ông Tiến cho biết “chúng tôi cần tuyển rất nhiều chuyên gia công nghệ”.

Một số doanh nghiệp VN cũng được thông tin đã trúng thầu các dự án phần mềm ở nước ngoài, thậm chí ngay ở các thị trường như Myanmar, Bangladesh, vốn được coi là “sân sau” của các “ông lớn” như Ấn Độ, Trung Quốc…

Hiện tại, tìm thông tin về các doanh nghiệp phần mềm, hiện không khó để thấy họ đang có nhu cầu tuyển người.

Như Công ty phần mềm Misa hiện đang tuyển thêm khoảng 60 nhân sự CNTT cho các vị trí như: lập trình viên, nhân viên giám sát an ninh mạng… để phục vụ mở rộng quy mô cũng như phát triển nhiều phần mềm.

Ông Vương Lê Vĩnh Nhân, giám đốc điều hành Công ty khởi nghiệp TrustPay, cho biết cũng đang muốn tuyển thêm 30 nhân sự CNTT để thực hiện dự án thẻ du lịch thông minh CitiPass…

Bên cạnh đó, nhiều doanh nghiệp công nghệ thế giới đổ bộ, mở rộng hoạt động kinh doanh tại VN như: Samsung, LG, Intel… cũng đẩy ngành CNTT VN phát triển, tăng nhu cầu về nhân lực.

Ngoài ra, với xu hướng CNTT hóa trong hoạt động của các đơn vị nhà nước đang thu hút ngày càng lớn, nhiều doanh nghiệp cũng đầu tư khởi nghiệp, mở rộng kinh doanh mảng CNTT.

Cần đầu tư mạnh cho con người

Trước nhu cầu tăng, nhiều doanh nghiệp đã chủ động “săn đầu người” bằng các chính sách, hoạt động riêng. Không ít doanh nghiệp đã chủ động đặt hàng chương trình đào tạo.

Nhiều chương trình phát triển nguồn nhân lực CNTT VN cũng được các công ty công nghệ lớn của nước ngoài đầu tư, như Samsung VN vừa giới thiệu chương trình Samsung Talent Program (STP) 2017 mới với trị giá 8,5 tỉ đồng.

Tập đoàn công nghệ Huawei cũng vừa công bố dành 2 triệu USD cho các chương trình xã hội, trong đó chủ yếu tập trung vào các hoạt động hỗ trợ đào tạo và phát triển nguồn nhân lực…

Dự báo của các chuyên gia, với gần 80.000 nhân lực CNTT sẽ được các trường cho “ra lò” trong 2 năm 2017 và 2018, so với nhu cầu tính đến cuối năm 2018, VN sẽ thiếu đến khoảng 70.000 nhân lực ngành CNTT.

Theo các chuyên gia, có thể nhiều công nghệ VN đang tụt hậu so với thế giới, nhưng với những công nghệ mới như: điện toán đám mây, dữ liệu lớn, trí tuệ nhân tạo, Internet vạn vật…, kỹ sư CNTT VN hoàn toàn có thể cạnh tranh được với kỹ sư CNTT các quốc gia khác.

Vì vậy, việc đầu tư cho con người đang rất cấp bách. Đây cũng là cơ hội cho ngành CNTT VN để không chỉ phát triển trong nước mà còn vươn ra mạnh mẽ hơn trên thị trường thế giới.

Theo một nguyên lãnh đạo Bộ Thông tin – truyền thông, nhiều doanh nghiệp CNTT của VN đang đầu tư mạnh ra nước ngoài.

Ngoài chiến lược phát triển CNTT đã được thông qua, cần nghiên cứu để nếu cần, cập nhật theo hướng hỗ trợ doanh nghiệp mở rộng thị trường, xâm nhập thị trường ngoài nước.

Đặc biệt, cần quan tâm việc hỗ trợ bằng đào tạo, cung ứng nhân lực chất lượng cao. Việc doanh nghiệp CNTT VN chiếm thị phần cao trong nước và dần chiếm lĩnh thị trường nước ngoài là hoàn toàn có thể, nếu đầu tư bài bản, đúng cách.

Doanh thu 
công nghiệp CNTT đạt gần 
1 triệu tỉ đồng

Theo báo cáo tổng kết năm 2016 của Bộ Thông tin – truyền thông, tổng doanh thu phát sinh trong lĩnh vực công nghiệp CNTT ước đạt 939.400 tỉ đồng (tăng khoảng 10% so với năm 2015).

Tổng số nhân lực trong ngành công nghiệp CNTT trên 600.000 người, trong đó số lao động đang làm việc trong các ngành công nghiệp phần cứng – điện tử khoảng 300.000 người, còn lại thuộc về lĩnh vực công nghiệp phần mềm và công nghiệp nội dung số.

Thêm dự án CNTT VN tại nước ngoài trong năm 2017

Ngoài các dự án ở các nước, ngày 23-3-2017, Công ty hệ thống thông tin FPT (FPT IS) đã chính thức vận hành hệ thống ứng dụng quản lý thuế VAT (IVAS) cho cơ quan thuế Bangladesh (33,6 triệu USD, sử dụng nguồn vốn của World Bank).

Hệ thống IVAS giúp Chính phủ Bangladesh quản lý thuế của hơn 500.000 đối tượng nộp thuế VAT.

Tháng 1-2017, Viettel và các đối tác liên doanh đã được Bộ Giao thông và truyền thông Myanmar cấp giấy phép cung cấp dịch vụ viễn thông cơ bản thời hạn 15 năm. Tổng vốn đầu tư của liên doanh là 2 tỉ USD, trong đó Viettel nắm giữ 49% cổ phần.

 

                                      Topdev via tuoitre

Cách Google tạo ra frameworks cho Web

Ai cũng biết rằng Google sử dụng duy nhất một Repository để lưu trữ và chia sẽ tất cả 2 tỉ dòng code của hãng – với phương thức trunk-based development – phát triển từ một nhánh mã nguồn chính

Codebased của Google được dùng bởi hơn 25000 nhân viên lập trình của hãng từ mọi chi nhánh. Trung bình một ngày, hơn 16000 dòng code được chỉnh sửa.

Bài viết sẽ tập trung nói về ngôn ngữ AngularDart – một mã nguồn mở chạy trên đa nền tảng như Windows, Mac OS X và Linux OS(s).

Chỉ sử dụng một phiên bản

Khi cả một đội ngũ tập trung vào việc phát triển một nhánh chính của mã nguồn (trunk-based development) thì tức là họ đang làm việc với một phiên bản duy nhất. Điều đó nghĩa là bạn không thể dùng các ứng dụng mà có web frame work version khác nhau được. Tất cả các ứng dụng đều phải chạy trên cùng một version của web frame work.

Vì vậy mà đôi khi Google vẫn nói là tất cả các phần mềm của hãng đều chạy trên phiên bản web framework mới nhất.  Điều đó cũng có nghĩ là đôi khi những phiên bản quá mới này tồn tại nhiều lỗi và không được ổn định.

Đọc đến đây thì chắc các bạn sẽ nghĩ rằng “Không phải nó nguy hiểm quá sao?”. Và đúng là cái việc tất cả các phần mềm đều dựa trên một nhánh nguồn chính là rất nguy hiểm nếu có lỗi xãy ra. Nhưng mà hóa ra không chỉ đơn giản là vậy.

Cứ mỗi lần thay đổi 1 dòng code, Google sẽ test tới 76000 lần

Khi một dòng code được thay đổi trong repository của Google thì hệ thống sẽ tự động test cho tất cả các ứng dụng đang sử dụng trên framework đó luôn. Hiện tại, con số test là 76000 lần (Tùy vào mức độ thay đổi mà các ứng dụng không bị ảnh hưởng sẽ không cần test nhằm tiết kiệm thời gian)

Để cho bạn dễ hình dung nhất, tôi đã thử thay đổi một thuật toán nhỏ trong mã nhánh nguồn chính của google (Thêm dòng ‘&& random.nextDouble() > .05’ vào dòng code này). Kết quả là, hơn 1601 bài test được diễn ra và hàng tá ứng dụng cũng như client bị lỗi.

Điều quan trọng là các bài test đều chạy dựa trên các app của người dùng. Nói cách khác, nó phản ánh cách mã nguồn được sử dụng bởi các developer. Đây là điều rất quan trọng bởi nó giúp google hiểu được mã nguồn của họ được các developer sử dụng như thế nào.

Nhờ mà nó giúp cho các app ứng dụng có tính đồng nhất cao. Đó là điều khác biệt giữa việc app được phát triển bởi chỉ một cá nhân với framework tự tạo và một app có tính tương thích cao nhờ vào sự phát triển bởi hàng ngàn người. Vì vậy để phát triển các ứng dụng web thì chúng ta phải sử dụng lựa chọn thứ hai : cùng dùng một web framework.

Nhưng nếu vào một ngày đẹp trời, tự nhiên mã nguồn của web bị lỗi thì sao?

Bạn làm hư thì bạn phải sửa

Khi mà các nhà lập trình của AngularDart đưa ra bất cứ thay đổi nào thì đồng thời họ cũng phải sửa những lỗi xảy ra bởi sự thay đổi đó cho người dùng. Cũng bởi vì tất cả mọi thứ của Google đều thuộc trên một mã nguồn chính nên phải xác định được app ứng dụng nào bị lỗi và sửa ngay luôn.

Nói cách khác, khi mà một thay đổi được diễn ra thì tất cả các ứng dụng cũng được update các bản patch và sửa đổi để có thể chạy được trên phiên bản framework đó. Quá trình vừa thay đổi vừa chỉnh sửa diễn ra liên tục và tuần hoàn sau khi được kiểm tra kĩ lưỡng từ nhiều nhóm developer khác nhau.

Một ví dụ điển hình, khi một thành viên từ nhóm AngularDart muốn thực hiện một sửa đổi gây ảnh hưởng đến ứng dụng Appwork thì nhóm phải vào tận mã nguồn để chỉnh sửa cho ứng dụng đó luôn. Sau đó nhóm phải chạy test để kiểm tra. Chỉ khi bảo đảm được kết quả thì mới lập một danh sách liệt kê các thay đổi và yêu cầu sự chấp thuận từ cả 2 nhóm developer của AngularDart và ứng dụng Appwork. Và nếu được thông qua thì thay đổi mới thật sự được thực hiện.  

Hằng ngày, các developer của AngularDart framework phải tiếp xúc với hàng triệu dòng code từ các ứng dụng được phát triển trên framework của họ. Vì vậy việc phát triển framework sẽ chở nên hiệu quả hơn.

Tuy vậy, việc phải update cho các ứng dụng của người dùng sẽ khiến việc phát triển bị chậm lại (thật sự là không nhiều lắm đâu). Điều đó cũng có lợi và hại tùy vào mục đích sử dụng framework của bạn.

Thế nên giờ thì khi nghe Google nói là họ đã update một phiên bản alpha của library ổn định và bắt đầu áp dụng vào mã nguồn chính thì bạn đã hiểu ý họ là sao rùi nhé.

Khi các bản cập nhật lớn xảy ra

Các bạn chắc sẽ thắc mắc rằng đối với các bản cập nhật lớn với sự thay đổi gần như là tất cả khiến cho 74000 bài test đều hiển thì lỗi thì AngularDart phải làm gì? Không lẽ phải sửa hết cả ngần ấy lỗi?

Chính xác đấy!

AngularDart sử dụng một hệ thống đặc biệt gọi là Sound Dart – với tính năng tự sửa đổi tự động mà không cần tới sự xác nhận của developer. Để dễ hình dung thì khi developer muốn thay một đoạn code ‘bar()’ thành ‘baz ()’ thì thay vì cứ phải thực hiện thao tác thủ công lập đi lập lại thì developer sẽ sử dụng Sound type system của Dart và tất cả các đoạn code ‘bar ()’ sẽ tự động đổi thành ‘baz ()’. Vì vậy nếu không có sự trợ giúp của Sound type thì ngay cả một thay đổi nhỏ cũng cực kì nguy hiểm.

Ngoài ra, Google cũng sử dụng dart_style (định dạng mặc định của Dart) để bảo đảm việc update trên diện rộng. Nói cách khác tất cả dòng code của Dart đều được để ở định dạng trên. Nhờ vậy mà việc thay đổi luôn đồng nhất và không bị lỗi.

Chỉ số hiệu suất

Như bài viết đã đưa ra, Test là một tính năng rất có lợi ích cho AngularDart. Nhưng Test còn giúp cung cấp thông tin về hiệu suất của app. Điều mà Google luôn rất chú trọng vì thế mà hầu như tất cả các app đều có bảng ghi chép lại hiệu suất của chúng.

Vì thế mà khi AngularDart đưa ra các bản thay đổi cấp nhật khiến cho AdWords bị chậm load lại khoảng 1% thì họ đã biết kết quả trước khi việc thay đổi xảy ra rùi. Thế nên khi họ đưa ra thông tin rằng các ứng dụng chạy trên AngularDart nhẹ hơn 40% và nhanh hơn 10% so với 2 tháng trước. Thì đó là số liệu thực tiễn từ các app với hàng triệu người sử dụng.

Công cụ build Hermetic

Vậy trong số hơn 74 ngàn bài test đó thì test nào là quan trọng nhất để các developer theo dõi? Mà cũng không thể chọn từng loại test thích hợp để kiểm tra cho từng thay đổi được? Giải pháp nằm ở một phần mềm gọi là Bazel.

Bởi với hơn 2 tỉ dòng code thì bạn không thể chỉ đơn giản lên từng script được nữa bởi nó quá tốn thời gian. Vì vậy mà bạn phải dùng Hermetic build tool.

“Hermetic” ở đây có nghĩa gần giống như Pure function. Khi mà các bước bạn thực hiện một build không được phép có side effect (như temp files, thay thành PATH etc.) và Input giống nhau thì output cũng phải giống nhau. Nói cách khác, bạn có thể chạy nhiều build khác nhau, từ các máy khác nhau, từ bất kì thời điểm nào mà vẫn có output nhất quán.

Google đã bỏ nhiều năm để tạo ra một tool như vậy. Đó chính là Bazel (open sourced)

Nhờ đó mà các chương trình test cũa hãng có thể chọn build hoặc bài test phù hợp với từng thời điểm và loại thay đổi.

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

AngularDart được tạo ra bởi Google với mục đích trở thành mã nguồn mở hiệu quả nhất, tốt nhất với độ tin cậy cao trong việc lập trình tạo website. Và cũng giải thích nguyên nhân vì sao mà các app của google như AdWords và AdSense đều phải sử dụng framework này. Bởi tính tin cậy cao cho người dùng.

Nói cách khác, bởi có lượng lớn khổng lồ các ứng dụng chạy trên AngularDart  mà việc sửa đổi cập nhật lớn sẽ không diễn ra thường xuyên nhằm bảo đảm tính ổn định. Nhờ vậy mà mã nguồn mở cũng trở nên đáng tin cậy hơn bởi mọi thay đổi đều được tính toán kĩ lưỡng.

Theo tôi điều làm nên sự thành công của một mã nguồn đến từ sự bảo trì thường xuyên. Vì vậy mà tôi rất mừng khi Dart có sự tập trung kĩ lưỡng vào các mã nguồn của họ. Bởi nó đều đi theo model của Google trong kinh doanh – tập trung vào chất lượng.

Nguồn: blog.topdev.vn via medium

Xu hướng tuyển dụng 2022: Lương không tăng nhiều!

Tuyển dụng nhân sự luôn là một thử thách đối với các CIO, đặc biệt là đối với việc tìm kiếm nhân sự cho phòng IT với vị trí bảo vệ số và quản trị mạng trong những năm gần đây.

2 nhà tuyển dụng kì cựu về mảng nhân sự IT, Robert Half Technology and TEKsystems đều đưa ra những nghiên cứu phân tích của họ cũng như phán đoán về hướng tuyển dụng trong năm 2022. Sau đây là những điểm nổi bật từ những báo cáo của họ:

Đừng có mong lương tăng nhiều

Phần lớn các leader IT (63%) tin rằng mức lương cho các vi trị của IT trong năm 2017 sẽ ngang bằng với mức cũ của năm ngoái, 1% còn cho rằng lương sẽ giảm. Chỉ có 36% các leader IT là đang có kế hoạch tăng lương cho phòng IT trong năm 2017 này, theo báo cáo của TEKsystems.

“Thực sự là quá thấp, nó chỉ khiến các công ty khó khăn hơn trong việc thu hút nhân tài đến với họ” – TEKsystems nhận xét sau khi thấy số lượng ít ỏi các công ty muốn tăng lương cho nhân viên – “Với sự cạnh tranh hiện nay của thị trường lao động IT, các công ty phải có đối sách lương thưởng để thu hút các nhân tài IT chứ không thể sử dụng mức lương cũ từ mấy năm trước được. Nó chỉ khiến nghành IT bị ảnh hưởng bởi sự trì truệ trong lương bổng”

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

Một vài vị trí sẽ được tăng thêm lương

Cũng theo báo cáo của TEKsystems, mặc dù đa phần các công ty không muốn tăng lương thế nhưng các vị trí đặc biệt mà công ty đang cần thì sẽ là ngoại lệ và được tăng mức lương lên nhằm thu hút nhân sự. Trong đó bao gồm lập trình viên (50% CIO chấp nhận tăng mức lương cho vai trò đó) và lập trình viên phần mềm (47%), an ninh số (45%) và điện toán đám mây (43%).

Chỉ một số ngành IT sẽ tăng thêm nhân sự

Tất cả các CIO đều có kế hoạch tiềm kiếm nhân sự trong năm tới – Nhưng có rất ít có kế hoạch thêm vị trí IT mới: 16% muốn tăng thêm nhân sự IT trong nửa đầu của 2021, và 69% có dự định tuyển dụng thêm nhân sự để lấp đầy vị trí bị bỏ trống, theo báo cáo của Robert Half. Ngoài ra, có khoảng 12% dự định ngừng tạm thời việc tuyển dụng, 2% còn lại có ý định cắt giảm nhân sự bên IT.

Đội ngũ nhân viên IT làm freelancer đang ngày càng gia tăng

Theo báo của các nhà quản lí IT trong năm 2016, 80% nhân viên của họ là làm việc full time trong khi số làm freelancer là 20%. Cũng theo các CIO, họ dự đoán sẽ có sự thay đổi trong năm 2022, với sự tăng lên của các IT làm freelancer được công ty thuê (24%) và giảm của nhân viên fulltime (76%).

Báo cáo của TEKsystems cũng chỉ ra rằng “Với tín hiệu khả quan từ kinh tế, cũng như nguồn vốn tăng lên cho phát triển công nghệ, số lượng nhân sự tuyển dụng cho vị trí full time và freelancer đã tăng đều đặn từ năm 2015 nhưng đang có sự chuyển giao về cán cân tỉ lệ khi phần trăm nhan viên fulltime sẽ giảm và freelancer tăng”.

Các nghành và kĩ năng đang có nhu cầu tuyển dụng cao

Có khoảng 61% CIO cho biết họ gặp nhiều khó khăn để tìm kiếm các chuyên gia công nghệ thông tin với trình độ chuyên môn cao, theo Robert Half. Khỏi được hỏi nghành và kĩ năng nào mà các CIO đang cần nhất thì quản lí dữ liệu đứng đầu tiên (44%); hỗ trợ Desktop (42%); quản lí mạng (42%), an ninh mạng (41%).

TEKsystems cũng hỏi các CIO về những vị trí khó kiếm được nhân sự cho năm tiếp theo. Câu trả lời được đa số các CIO đưa ra là programmers and developers (42%), quản lí mạng (29%), an ninh số (28%) và architect (28%)

Kỳ vọng nghề nghiệp

Trong khi đó, để có cái nhìn khách quan từ phía bên nhân sự, Spiceworks đã khảo sát và hỏi các chuyên gia IT về mức lương và suy nghĩ của họ về công việc và sự nghiệp trong năm 2022. Hóa ra, có tới 37% người được hỏi cho biết họ dự định kiếm việc mới, 26% thì định chấp nhận lời mời làm ở công ty khác.

Hơn nữa, có hơn một nửa (59%) người tham gia cuộc khảo sát tin rằng họ bị trả lương thấp. Thế nhưng chỉ có 24% mong là sẽ được công ty tăng lương (hơn 5% so với năm ngoái) và chỉ có 12% là kì vọng mình được thăng chức.

Nhân viên cũng có kế hoạch riêng

Theo khảo sát của Spiceworks, có rất nhiều nguyên nhân khiến nhân viên muốn kiếm một công việc mới. Sau đây là những lí do thường gặp nhất: Để nâng cao kĩ năng IT (69%); vì mức lương hấp dẫn hơn (64%), làm cho công ty có sự tập trung vào IT hơn (40%); công việc hiện tại quá tải (40%); để có nhiều thời gian cho bản thân hơn (38%), vì có nhiều lợi ích hơn  (bảo hiểm sức khỏe, nhà) (33%); để được làm với team IT chuyên nghiệp và tài năng (26%); để có lợi ích làm xa nhà tốt hơn (ra nước ngoài làm) (24%); để vì chức danh tốt hơn (22%)

“Có rất nhiều chuyên gia IT tin rằng họ được trả thấp hơn những gì mình cống hiến và công ty cũng giảm ngân sách hoặc quá ít cho phòng IT của họ” – Peter Tsai, chuyên gia phân tích IT của Spiceworks, cho biết – “ Vì thế mà khi thấy được dấu hiệu khả quan của thị trường lao động của nghành công nghệ thông tin, có rất nhiều tài năng IT đang có ý định tìm kiếm công việc mới trong năm tới. Họ đặc biệt quan tâm tới những công ty tập trung vào IT, có nguồn nhân lực giỏi và đầu tư nhiều vào các dự án về công nghệ thông tin”

Nguồn: Techtalk.vn via Computerworld

13 điều giúp ứng viên… rớt phỏng vấn xin việc

Chuyên viên tuyển dụng tại Glassdoor, cho biết cô đã được chứng kiến vô vàn các sai lầm mà các ứng viên mắc phải, với hậu quả là họ tự đánh mất cơ hội xin việc của mình.

Hichens cho biết: “Điều tồi tệ nhất là nhiều người đến phỏng vấn mà không hề chuẩn bị trước. Ví dụ như, họ không nghiên cứu về công ty, họ không tìm hiểu về vị trí ứng tuyển, về người đang trực tiếp phỏng vấn mình, và cũng chẳng buồn chuẩn bị câu hỏi ngược lại cho nhà tuyển dụng.”

Tuy nhiên, theo Hichens, việc thiếu chuẩn bị vẫn chưa phải là lý do lớn nhất để nhà tuyển dụng loại bỏ một ứng viên. Thay vào đó, việc đến muộn, hay thậm chí không thèm đến phỏng vấn, sẽ gần như đảm bảo cho bạn một suất “ra về tay không” dù bạn có là một ngôi sao sáng tới đâu đi chăng nữa.

Hichens cho rằng: “Đến trễ cuộc phỏng vấn mà không có bất kì lời giải thích nào, hoặc không gửi email/gọi điện trước thông báo việc đến trễ là một điều tối kỵ. Điều này chắc chắn sẽ hạ knock out 99% số người phỏng vấn. Ít nhất, nếu đến trễ như vậy, hãy gọi và đưa ra một lời giải thích, hoặc bạn có thể đề nghị lên lịch lại chẳng hạn. Quan trọng nhất, hãy nhớ gửi lời xin lỗi đến nhà tuyển dụng vì sự bất tiện này”.

Với nỗ lực giúp đỡ những người đang tìm việc tránh những sai lầm có thể xảy ra, Hichens đã soạn ra danh sách 13 điều bạn nên tránh, dù là bạn đang phỏng vấn cho vị trí thực tập hay giám đốc:

1. Nói xấu công ty và người quản lý cũ. Bạn cần tránh xa điều này bằng bất cứ giá nào!

2. Ăn, uống, thậm chí là nhai kẹo cao su ư? Thời gian phỏng vấn đâu dành để “nhấm nháp” những thứ miễn phí trong văn phòng.

3. Văng tục: bạn không thể làm điều này dù cho văn hoá công ty cho phép, hay ngay cả khi người phỏng vấn bạn cũng đang làm điều đó. Hãy cực kỳ cẩn trọng về chuyện này cho đến khi bạn cảm thấy thật sự an toàn.

4. Nói “à ừm” hay “thì là mà” quá nhiều. 100% các nhà tuyển dụng sẽ lưu ý nếu cuộc phỏng vấn của bạn bị lấp đầy bởi những từ như vậy. Tốt hơn hết là bạn nên tạm dừng để suy nghĩ và không nói bất cứ điều gì, vậy vẫn còn hơn là cứ ậm ừ.

5. Hành động lúng túng: nếu thấy bạn bối rối, hãy dành chút thời gian và hít thở sâu, việc đó hoàn toàn chấp nhận được. Việc cứ lúng túng cố lấp đầy chỗ trống sẽ có hại hơn thôi.

6. Đừng đổ lỗi cho các lý do bên ngoài: Nếu có vấn đề gì xảy ra, hãy coi đây là một cơ hội tuyệt vời để chứng tỏ sự linh hoạt và khả năng giải quyết vấn đề của bạn. Đừng đổ lỗi cho các yếu tố bên ngoài chỉ vì bạn đã một cuộc phỏng vấn không như ý muốn.

7. Trang phục không phù hợp: Hãy tìm hiểu trước buổi phỏng vấn xem kiểu trang phục nào phù hợp với văn hóa công ty mà bạn ứng tuyển. Câu nói “dress for the job you want” (tạm dịch: mặc cho công việc bạn muốn) chẳng bao giờ sai đâu.

8. Không hỏi người phỏng vấn bất cứ câu nào. Bạn nên đưa ra một câu hỏi mỗi khi ai đó đề nghị bạn có bất kỳ câu hỏi nào không. Ngay cả khi bạn cảm thấy như đã “cạn kiệt” câu hỏi, thì vẫn còn 2 câu hỏi dự phòng dưới đây bạn có thể dùng: “Tại sao anh/chị lại chọn công ty này?” và “Trong tương lai, anh/chị cảm thấy hào hứng điều gì nhất về công ty này?”

9. Không mang theo hồ sơ (resume) của bạn. Hãy mang theo vài bản sao – ít nhất một bản cho mỗi người phỏng vấn bạn.

10. Không đưa ra câu trả lời chi tiết. Bạn nên sẵn sàng cung cấp các câu chuyện và ví dụ cụ thể về những gì bạn đã từng làm.

11. Quan tâm đến tiền lương hơn mọi khía cạnh khác. Dĩ nhiên, lương là một phần quan trọng của công việc, nhưng bạn sẽ khó mà tạo được thiện cảm nếu như đó là điều duy nhất mà bạn tỏ ra quan tâm.

12. Không biết sử dụng ngôn ngữ cơ thể, hoặc không nhìn vào mắt người đối diện. Nếu như bạn tỏ ra là một người khó gần và cứng nhắc, liệu có ai muốn làm việc với bạn không?

13. Không thể hiện sự nhiệt tình đối với công ty hoặc vị trí tuyển dụng. Một thái độ nhiệt tình luôn được chú ý cao.

Dĩ nhiên, luôn có những ngoại lệ đối với mọi quy tắc. Ví dụ như bạn có thể an tâm mặc quần jeans khi đi phỏng vấn cho một công ty công nghệ.

Hichens cho biết: “Điều quan trọng nhất là phải tự nhận thức được bản thân và hành động giống một con người bình thường. Không ai mong đợi bạn trở thành một con robot hoàn hảo cả. Hãy làm mọi thứ tốt nhất để chứng tỏ mức độ thông minh về mặt cảm xúc (EQ) của mình, cũng như thể hiện sự bình thản khi đối mặt với các tình huống khó nhằn nhất”.

Tạo CV Online mới nhất cho dân IT

AI giúp cuộc sống tương lai tốt đẹp hơn như thế nào?

AI với tương lai
AI giúp cuộc sống tương lai tốt đẹp hơn như thế nào?

AI với tương lai sẽ ra sao? AI có thể giúp cho cuộc sống tốt đẹp hơn, giúp chúng ta hiểu rõ cuộc sống của chính mình hơn. Đó chính là cách AI được mang đến với mọi người và hiện đang được nghiên cứu, phát triển ngày một rộng mở.

  "Cơ hội phát triển sự nghiệp AI với các ngành nghề là tương đồng" - Bảo Đại, AI Researcher tại Knorex
  5G & IoT hứa hẹn điều gì trong tương lai?

AI có thể giúp gì cho các hoạt động của mỗi cá nhân?

AI với hoạt động thường nhật

Hãy tưởng tượng buổi sáng bạn thức dậy và AI chơi một bản nhạc nhẹ để bạn có thể khởi đầu ngày mới vui vẻ hơn. Tiếp theo đó, khi trên đường đi làm, AI có thể tự động điều hướng và tìm kiếm cho bạn lộ trình đường đi sao cho nhanh chóng và an toàn nhất, tránh được kẹt xe.

Sau khi kết thúc một ngày làm việc, bạn có thể tham gia các hoạt động thể dục thể thao và AI sẽ hỗ trợ thông qua các thiết bị như đồng hồ. Từ đó AI thu thập các chỉ số cơ thể và giới thiệu những bài tập phù hợp với tình trạng cơ thể hiện tại mà vẫn đáp ứng được các bài tập mà trainer giao cho bạn.

Khi chuẩn bị đi ngủ vào ban đêm, AI có thể dựa vào sở thích âm nhạc và các chỉ số cơ thể hiện tại của bạn để chọn ra những bài nhạc phù hợp nhất tại thời điểm đó, giúp bạn dễ đi vào giấc ngủ và có một giấc ngủ sâu hơn. Bên cạnh đó, AI cũng giúp lưu giữ chất lượng giấc ngủ của bạn mỗi đêm để đưa ra các giải pháp cải thiện giấc ngủ vào ngày tiếp theo.

AI cho một chuyến du lịch thoải mái hơn

AI còn giúp việc đi du lịch thoải mái và tiện lợi hơn nhiều so với trước đây. Hãy tưởng tượng bạn đang lên kế hoạch cho một chuyến du lịch, AI dựa vào lịch trình có thể gợi ý những điểm du lịch phù hợp cho bạn. Dựa trên tình hình thời tiết và địa điểm, AI có thể đề xuất những việc nên và không nên làm khi đến nơi. Không những vậy, khi tới địa điểm checkin, AI còn có thể giới thiệu với bạn những điểm vui chơi hay du lịch hấp dẫn xung quanh điểm đến đó.

AI với tương lai
AI trong tương lai sẽ được cải tiến với nhiều công nghệ hiện đại hơn

AI với công nghệ shopping thông minh

AI giúp việc shopping thuận tiện hơn. Cuộc sống bận rộn khiến việc ra cửa hàng trực tiếp để mua hàng trở nên khó khăn hơn do mất nhiều thời gian để lựa chọn. Trong AI có một chức năng gọi là AR, qua ống kính AR có thể đo được kích thước vật phẩm, màu sắc vật phẩm trong môi trường thật có chính xác hay không.

Hoặc khi đang đi trên đường, bạn nhìn thấy một vật phẩm mà không biết giá và tên của nó là bao nhiêu thì AI có thể detect và báo tên cũng như các thông tin của sản phẩm ngay lập tức.

Và AI cũng hỗ trợ việc thanh toán không cần tiền mặt. Hiện nay có rất nhiều ví điện tử ra đời và áp dụng các hình thức thanh toán như scan QR code. Nhưng với sự ứng dụng ngày một rộng rãi của AI, việc sử dụng code sau này sẽ không còn cần thiết, mà mọi thứ sẽ được đơn giản hóa qua sự kết nối của các công nghệ giúp việc thanh toán đơn giản hơn.

Đâu là giải pháp để tối ưu hiệu quả làm việc của AI?

Huawei đưa ra một giải pháp cho tương lai, đó là sự kết hợp giữa các thiết bị thông minh và mạng 5G, sẽ phá vỡ rào cản của thế giới vật lý và thế giới số. Những hệ thống được đưa ra là sự kết hợp giữa phần mềm và phần cứng để xây dựng một hệ sinh thái thông minh cho tất cả các thiết bị.

Hệ sinh thái này gồm có 3 thành phần:

  • Applications Eco – hệ sinh thái ứng dụng
  • Hardware Eco – hệ sinh thái phần cứng
  • AI-5G-Harmony OS – thành phần kết nối và cốt lõi

Applications Eco (HMS)

Là phần core mobile service, cung cấp cho các nhà phát triển những tools, services trên hệ thống di động như location, reading, music, video, xa hơn nữa là các bộ tool kits dùng để phát triển game, entertainment, social, office, media,…

Hardware Eco

Hardware Eco được phát triển theo hướng 1+8+N. 1 là điện thoại di động, 8 là 8 loại devices do Huawei sản xuất như laptop, tai nghe,… N là các thiết bị của nhà sản xuất thứ 3 như TV, modem,…

AI-5G-Harmony OS

Các thành phần ở giữa sẽ giúp kết nối 2 thành phần trên với nhau và phá bỏ những rào cản mà hiện tại các nhà phát triển đang gặp phải. Đó là các vấn đề về kết nối và chia sẻ dữ liệu giữa phần cứng và phần mềm của các hãng điện thoại khác nhau và các thiết bị khác nhau.

Sơ lược về lịch sử phát triển của Huawei Mobile Service

AI với tương lai

Huawei Mobile Service được phát triển từ 4 năm về trước. Vào năm 2016 khi vừa ra đời đó là version 2.0, lúc đó chỉ có account, in-app purchases và push kit. Lần lượt đến tháng 8/2019, HMS Core 3.0 ra đời, 1/2020 là HMS Core 4.0 và gần nhất là 6/2020, HMS Core 5.0 có khả năng hỗ trợ rất nhiều về đồ họa, games và tools cho các nhà phát triển.

HMS Eco đang phát triển rất nhanh chóng, đây được xem là giải pháp mở và toàn thắng cho cả hai bên. Hiện nay Huawei đang là 1 trong 3 hệ thống lớn nhất thế giới, bên cạnh Google và Apple. Số lượng mobile phone đã tăng đến 7 triệu thiết bị, cộng đồng developer tăng đến 1.600.000 người và application hiện có 81000 ứng dụng, chỉ trong 1 năm từ 2019 đến 2020.

Tổng quan về HMS Core

HMS Core là một hệ thống mở, phát triển trên 7 lĩnh vực gồm App services, Graphics, Media, Smart Device, AI, Security, System.

App services

Huawei sở hữu những công cụ giúp cho các nhà phát triển build ứng dụng một cách nhanh chóng và tiện lợi.

Graphics

Huawei luôn phát triển theo tiêu chí chipset, device và cloud. Chipset có các bộ kits hỗ trợ tối ưu hóa những chipset của thương hiệu gồm Scene Kit, CG kit, AR engine.

System

Một điểm mạnh nữa của Eco system hiện tại là phần System. Các bộ kits Nearby service giúp các thiết bị di động như điện thoại, loa, đồng hồ, tai nghe có thể nhận biết được các thiết bị xung quanh, kết nối nhanh. Huawei hiện cũng đang dẫn đầu về công nghệ 5G và công nghệ truyền thông dữ liệu. Đó chính là điểm mạnh trong hệ thống Eco system có thể đáp ứng được các yêu cầu khi phát triển một ứng dụng AI.

Media

Hỗ trợ các thiết bị audio và video hoạt động một cách mượt mà và bảo mật. Khi phát triển AI và AI kết hợp với những services như play music, play video, chúng ta thường quan tâm đến vấn đề bản quyền – copyright protection. Huawei cung cấp giải pháp đó là WisePlay DRM sẽ cover tất cả những services như Camera Kit, Audio Kit, Video Kit và Image Kit. Sâu hơn có thể cung cấp thêm Camera Engine và Audio Engine.

Camera của Huawei hiện tại được đánh giá là camera tốt nhất thế giới. Vậy làm sao để tận dụng được sức mạnh đó? Các services như Camera Kit và Camera Engine sẽ giúp bạn tận dụng tối đa được sức mạnh này để làm cho application của mình tốt hơn.

Smart Device

Huawei là đơn vị có thể sản xuất đa dạng các loại thiết bị. Do đó Huawei cung cấp các Distributed Capability gồm những bộ kit để các thiết bị có thể kết nối với nhau và truyền tải dữ liệu một cách dễ dàng. Nhờ đó đáp ứng được các yêu cầu mà một ngôi nhà thông minh đòi hỏi, như sự kết nối giữa điện thoại, đèn, các thiết bị điện, TV, các thiết bị gia dụng trong ngôi nhà của chúng ta.

AI

Huawei cung cấp một trải nghiệm hoàn toàn mới về AI. Việc phát triển AI trong công cuộc phát triển phần mềm sẽ cung cấp các foundation và framework, với các bộ kit ở 2 level để tối giản hóa việc phát triển (Computer visual, AI innovation và Customizing Model).

Security

Việc để một thiết bị AI nắm quá nhiều thông tin cá nhân là không nên, do đó mọi người luôn suy nghĩ về việc làm thế nào để bảo mật thông tin cá nhân. Trong hệ sinh thái của Huawei chúng tôi cung cấp các giải pháp về security và đạt đến mức bảo mật cao nhất của châu Âu là TEE. Áp dụng các tiêu chuẩn bảo mật lên tất cả các lĩnh vực như Authentication, Data, Application, Content.

Một số ứng dụng AI, ML đang được Huawei phát triển

AI với tương lai

Face Detection: hiện tại AI đã có thể bắt được tất cả các biểu cảm trên khuôn mặt người dùng. Đây là nền tảng dựa trên các cảm xúc và khuôn mặt của con người.

Text Recognition: nhận biết về text, extract các text từ ống kính AI cũng như dịch thuật.

Scan Kit: với các ứng dụng scan thông thường, khi barcode nằm quá xa sẽ rất khó để scan hoặc barcode nằm ở những góc thiếu ánh sáng, góc xiên sẽ không thể scan được. Nhưng khi sử dụng giải pháp của Huawei, bạn có thể tận dụng được sức mạnh của camera zoom tới 30x và 50x, tận dụng AI và machine learning để có thể scan được QR code nằm ở rất xa, góc xiên hay môi trường thiếu ánh sáng.

Ngoài ra, AI cũng có thể apply trong Awareness Kit. Đây là một giải pháp thông minh được Huawei cung cấp để lấy được user behavior và experience. Những thông tin có thể lấy được như time, location, device awareness, ambient light, weather, behavior.

Về AR Engine, sẽ giúp tăng convergence như AR Games, AR Show, AR Education, AR Shopping,…

Trong tương lai, AI sẽ giúp cho mọi thứ trở nên thông minh hơn và dễ dàng kết nối với nhau.

Bài viết được trích dẫn từ phần trình bày của anh Nguyễn Quang Nhật tại sự kiện Vietnam Mobile Day 2020 LIVE do TopDev tổ chức


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

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

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

Flipkart là trang website bán hàng lớn nhất tại Ấn Độ. Với hơn 100 triệu người dùng đăng kí, cung cấp hơn 80 triệu sản phẩm đến từ 80 ngành hàng khác nhau cùng với gần 8 triệu chuyến hàng vận chuyển hàng tháng. Tuy vậy, theo số liệu chỉ ra, app web của Flipkart vẫn đang bị giảm số lượng khách hàng cũng như tỉ lệ người dùng từ bỏ app cao. Vì vậy, chúng tôi đã quyết định sẽ thiết kế lại UX của Flipkart nhằm cải thiện trải nghiệm sử dụng cho khách hàng.

Có thể nói, việc phải nhìn nhận lại thiết kế của UX là điều tất yếu nhằm tìm ra giải pháp phù hợp cho việc tạo nên một thói quen sử dụng cho khách hàng cũng như ảnh hưởng lên quyết định người dùng, bao gồm:

  • Tiếp cận khách hàng tốt hơn
  • Nâng cao hình ảnh thương hiệu của Flipkart
  • Kích thích tăng trưởng

Khách hàng mua sắm online rất nhạy cảm về giá cả. Nói cách khác, họ chẳng quan tâm sản phẩm đến từ website nào miễn là cái giá hời nhất cho họ.

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

Chính vì vậy mà chúng ta luôn cần phải tự hỏi:

  • Làm sao để khiến trang web của mình là lựa chọn đầu tiên để khách hàng tìm kiếm
  • Làm sao để thuyết phục khách hàng lắng nghe thông tin của mình trước so với những đối thủ khác để rồi quyết định mùa sản phẩm của ta

Việc làm thiết kế ux ui

Sau một thời gian tìm hiểu, chúng tôi đã xác định được một số vấn đề đang tồn tại trong team thiết kế UX cho app của Flipkart – sau đây là cách chúng tôi giải quyết chúng:

Hiểu được khách hàng thông qua những câu hỏi thông minh

Điều rõ ràng là phải hiểu được suy nghĩ của khách hàng cũng như thói quen mua sắm của họ thì mới có thể tối ưu hóa trải nghiệm sử dụng cho khách hàng

Để xác định được vấn đề gốc cần phải tự hỏi “Why” 5 lần. Bằng cách tự hỏi bản thân “tại sao” nhiều lần, bạn sẽ nhìn thấu được đâu là triệu chứng và đâu mới là vấn đề thật sự

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

Sau đó, Flipkart Team lại tiếp tục tự hỏi:

  • Làm thế nào để khiến khách hàng trung thành và tăng sự tương tác của họ đối với app của mình?
  • Cần phải phân tích hành vi nào của khách hàng để có thể đưa ra hướng giải pháp tốt nhất?
  • Làm thế nào để khách hàng có trải nghiệm tốt nhất cũng như đưa ra được những giá trị bền vững để khiến khách hàng luôn quay lại mua và sử dụng sản phẩm của mình?
  • Làm sao để khắc phục việc khách hàng xóa bỏ app của mình?

Với sự hợp tác từ nhiều nhóm thiết kế UX khác nhau, cùng với các lần họp lên ý tưởng, chúng tôi quyết định thay đổi chiến thuật cho UX cũng như thiết kế lại Flipkart app

Giải pháp được đặt ra là thiết kế lại app để tạo ra một trải nghiệm sử dụng hàng toàn khác biệt so với những app online mua sắm khác

Tuy vậy, trước tiên ta phải nhận ra một số thách thức được đặt ra:

Thách thức #1: Tỉ lệ khách hàng xóa app vẫn còn cao

Mối liên hệ giữa người dùng và app là rất mỏng manh: họ chỉ giữ lại những app mà họ thật sự yêu thích và xóa phần lớn những app khác. Số liệu đã chỉ ra: 77% người dùng không bao giờ sử dụng lại một app sau 72 tiếng từ lúc cài đặt. Nói cách khác, những nhà thiết kế app cần phải khiến người dùng yêu thích ứng dụng của họ ngay từ tuần đầu tiên.

Những app thành công nhất luôn là ứng dụng có thiết kế tương thích với thói quen mua sắm của khách hàng – Đó là những “sticky” app không thể thiếu và được người dùng sử dụng thường xuyên.

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

Các trang web bán hàng online luôn dựa vào các sự kiện bán hàng. Đó có thể là ngày lễ hoặc là những ngày đặt biệt như sự kiện giảm giá. Một ví dụ điển hình, Amazon’s “Prime Day” là ngày bán hàng hàng giảm giá của riêng hãng và không được xem là một ngày lễ nào cả. Thế nhưng Amazon’s “Prime Day” vẫn được xem là sự kiện thành công nhất trong nghành bán hàng online với doanh số cao ngất ngưỡng, đạt 60% sale toàn cầu trong năm 2015.

Cũng trong năm 2015, Flipkart thu vào hơn 300 triệu đô nhờ vào sự kiện “Big Billion Day”, một sự kiện tương tự như Amazon’s “Prime Day”. Số lượng người  download Filpkart app cũng tăng đột biến trông thời điểm trên nhờ vào nhiều ưu đãi cho người mua hàng thông qua mobile.

Tuy vậy, ngay sau sự kiện “Big Billion Day” kết thúc, tỉ lệ người dùng xóa bỏ ứng dụng lại tăng nhanh ngay lập tức. Chỉ khoảng 30% người dùng, trước và sau sự kiện “Big Billion Day”, là vẫn giữ app. Một trong số những nguyên nhân là do sự giới hạn về mặt lưu trữ đối với dịch vụ di động (tại Ấn Độ, một số dịch vụ di động chỉ cho phép người dùng lưu trữ 20 app). Vì vậy, người dùng tại Ấn Độ thường chỉ giữ lại những ứng dụng quan trọng mà họ sử dụng thường xuyên như Facebook, Youtube, WhatApp và một số app khác.

Chúng tôi tiếp tục tìm hiểu sâu hơn về mối liên kết giữa từng loại ứng dụng và sự trung thành của người dùng

Có thể thấy, News, Sports, Weather dẫn đầu trong nhóm app được khách hàng “giữ lại”. Nguyên nhân là bởi đó là những ứng dụng cần thiết, luôn được người dùng sử dụng. Vì vậy, để Flipkart nằm trong nhóm trên thì cần phải thiết kế app theo khuôn mẫu “habbit forming” – trở nên cần thiết cho người dùng.

Thế thì “Habbit froming” app là gì? Làm sao để khiến ứng dụng cần thiết với người dùng?

Thử Thách #2: Khách hàng không có sự trung thành

Thói quen là những hành động được thực hiện trong vô thức hoặc rất ít. Các nhà nghiên cứu chỉ ra rằng khoảng 40% những gì chúng ta làm hàng ngày là thói quen. nói cách khác, khi chúng ta thích làm một điều gì đó hoặc lặp đi lặp lại một hành động thì thói quen sẽ được hình thành. Đó cũng là cách mà các nhà làm game áp dụng, họ tạo ra những game dựa trên những ý tưởng “hook” mà người dùng yêu thích nhằm khiến họ luôn quay lại và chơi game của hãng.

Qua “hook”, ta thấy được con người sẽ thực hiện một hành động nhất định để nhận được phần thưởng (Reward). nói cách khác, phần thưởng sẽ khiến chúng ta thực hiện một hành vi và từ đó tạo nên một vòng tròn hoàn chỉnh khiến người dùng luôn thực hiện hành động để nhận phần thưởng.

“Hook” bắt đầu khi người dùng nhận được một sự “kích hoạt”. Có 2 loại “kích hoạt”. “kích hoạt” bên ngoài với ví dụ điển hình là bản thông báo sản phẩm, thông tin cho người dùng. Tuy vậy, “kích hoạt” từ bên trong có tác động mạnh mẽ hơn trong việc tạo nên thói quen bền vững. Thường “kích hoạt” từ bên trong có liên quan đến cảm xúc của người dùng, họ muốn được thoải mái, vui vẻ. Đó là nguyên nhân người dùng thường xuyên sử dụng Facebook để xem ảnh hoặc Gif chó mèo khi họ buồn.

FOMO

Mỗi khi chúng ta thức dậy, đôi lúc sẽ cảm thấy lo lắng vì không cập nhật được những chuyện xung quanh. Vì vậy mà mỗi sáng, chúng ta luôn check mail, Facebook, Youtube và những app khác để được kết nối và cảm thấy an toàn. Dựa vào đó, nhóm Flipkart nhận ra cơ hội để sử dụng “kích hoat” này để khiến “hook” cho app của hãng tốt hơn.

FOMO (Fear of missing out) là một từ mới được đưa vào từ điển tiếng anh Oxford vào năm 2013. FOMO ám chỉ nổi sợ khi chúng ta mất đi sự liên kết với môi trường và xã hội xung quanh khiến cho ta phải luôn check thông tin thông qua nhiều app khác nhau.

Để có thể tạo ra một “hook” tốt thì cần phải có khuôn mẫu UX khả thi và phù hợp. Để có được điều đó thì ta phải chấp nhận rằng phương thức thông báo kiểu cũ không còn hiệu quả bởi người dùng không còn quan tâm đến thông báo như trước.

Flipkart có hơn 80 triệu sản phẩm thuộc hơn 80 nhóm khác nhau. Vì thế, việc phân chia sản phẩm phù hợp với khách hàng dựa trên sở thích, vị trí là điều không thể thiếu. Do vậy, một thức thách khác được đặt ra.

Thử thách #3: Sự liên quan và cá nhân hóa

Một nhóm người dùng Kipflart được phỏng vấn về cách thức họ mua sắm online. Kết quả cho thấy, người dùng thường chỉ mua sản phẩm liên quan và tương đồng với sở thích, tính cách cũng như cần thiết với họ. Chúng ta đều biết, hệ thống gợi ý sản phẩm (traditional model) cho người dùng dựa vào thói quen mua và sử dụng sản phẩm trong quá khứ. Tuy vậy, đối với Flipkart, nó chỉ giải quyết được 1 phần vấn đề. Chúng tôi nhận ra rằng người dùng sẽ hay mua một sẩn phẩm dựa vào 2 tiêu chí (Themes):

  1. Ý định: Người dùng tìm kiếm sản phẩm mà họ đã xác định được ngay từ đầu. Nói cách khác, ta cần phải quan sát và theo dõi nội dung tìm kiếm (“online searching”) của từng người dùng.
  2. Sở thích: Người dùng tìm kiếm sản phẩm trong phạm vi xa hơn, gồm nhiều loại sản phẩm khác nhau nhưng đều nằm trong sở thích của người dùng. Nói cách khác, nó tùy thuộc vào sở thích cũng như xu hướng. Một ví dụ điển hình là người dùng có sở thích với leo núi, cặp và xe mô tô cũng sẽ thường xuyên tìm kiếm những sản phẩm trong các nhóm trên.

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

Phân loại vs Kết nối

Sau khi đã giản lược đi hàng triệu sản phẩm thành một số nhóm nhỏ hơn. Chúng tôi cần phải sắp xếp những sản phẩm trong những group đó sao cho tương đồng với sở thích của người dùng.

Qua quan sát người dùng, chúng tôi nhận ra họ thường tìm kiếm và mua sản phẩm dựa theo từng nhóm chủ đề. Vì vậy, Flipkart đặt ra một set các tag khác nhau cho từng loại sản phẩm nhằm tạo ra kết nối đến người dùng có sở thích và chủ đề tương đồng. Thay vì sử dụng khuôn mẫu sắp xếp và phân chia theo loại, chúng tôi thay đổi cách tiếp cận và sắp xếp các sản phẩm dựa theo “chủ đề” phù hợp.

Để tạo ra một ma trận chủ đề kết nối với nhau và với người dùng, Flipkart đã yêu cầu người dùng chọn những tag và chủ đề theo ý thích của họ nhằm tạo nên những “câu chuyện” riêng về từng khách hàng – a customer persona

Kết quả là một vụ trũ thông tin chứa đựng sở thích khách hàng được tạo ra vững chắc và kết nối với một vũ trụ thông tin khác của các sản phẩm, phục vụ cho việc shoping của từng khách hàng phù hợp với ý định cũng như sở thích của họ.

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

Mục tiêu của Flipkart là để người dùng không chỉ xem sản phẩm họ đang tìm kiếm mà còn các sản phẩm khác nằm trong sở thích của họ. Nhờ đó mà tạo ra cảm giác phong phú trong sự lựa chọn sản phẩm cho người dùng mà không gây cảm giác mơ hồ, lộn xộn.

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

 

Giải pháp: Thông báo ngắn gọn hàng ngày

Internet chứa đựng lượng thông tin gần như là vô tận. Tuy vậy, khách hàng thì chỉ muốn những thông tin thiết thực và chất lượng. Do đó, Flipkart đã phải xây lại một search engine mới từ con số 0.

Feed vô tội vạ vs có chừng mực

Chúng tôi đã quyết định chỉ sử dụng một bài thông báo ngắn gọn hàng ngày về một set các sản phẩm nhất định cho từng khách hàng. tất nhiên là nội dung sản phẩm luôn được thay đổi nhưng vẫn phù hợp với sở thích của người dùng. nói cách khác, Flipkart nhận ra nếu cứ đưa ồ ạt thông tin của tất cả các sản phẩm cho khách hàng sẽ khiến người dùng bị bối rối, nhầm lẫn và dẫn đến không quan tâm đến các thông tin đó.

Vì vậy cứ mỗi buổi sáng, từng khách hàng sẽ nhận được thông báo về thông tin sản phẩm thích hợp với họ (daily digest)

Cải thiện “Hook” để tăng khả năng thành công hình thành thói quen online shopping từ người dùng

Điều cốt lõi của giải pháp mà Flipkart đề ra chính là việc sử dụng “Hook” để tạo thói quen shopping cho người dùng nhằm thu hut khách hàng tiềm năng sử dụng app của hãng.

Chúng ta đã biết khách hàng sẽ dễ chấp nhận tham gia vào một sự kiện nếu như họ được nhận một phần thưởng cho việc đó. Thế nên, Flipkart sử dụng “daily digest”, một loại hình thông báo dựa trên các chủ đề và sở thích của từng người dùng.

“Daily digest”, giải pháp của Flipkart được thiết kế dựa vào sự hiểu biết của hãng về thói quen của khách hàng. Cùng với việc chỉ đưa ra thông báo về một nhóm các sản phẩm mà hãng chắc chắn người dùng quan tâm tới, Flipkart có thể tận dụng được thói quen mua sắm online bằng điện thoại vốn đã ăn sâu vào người dùng.

Thay vì cứ cố gắng thay đổi thói quen mua sắm của khách hàng hoặc thuyết phục họ tin vào Flipkart, chúng tôi cho người dùng thêm nhiều lựa chọn để củng cố thêm thói quen mua sắm dựa trên hành vi FOMO – fear of missing out

Các hãng mua sắm trực tiến vẫn đang tranh đua với nhau nhằm thu hut khách hàng mà theo dự đoán của giới chuyên gia là sẽ đạt mức 4 tỉ vào nằm 2020. Tuy vậy, những ông lớn thành công và đứng đầu sẽ vẫn là những người biết hướng tới sự cải thiện vào đổi mới thay vì dựa vào công thức tiếp cận khách hàng cũ kỹ.

Bí mật giúp thiết kế UX cực hiệu quả cho sản phẩm e-commerce

Tương lai của ngành mua sắm trực tuyến nằm ở khả năng thu hút người dùng nhờ vào cách tiếp cận dựa trên sự tương đồng về sở thích, thói quen của khách hàng chứ không đơn giản là phân loại sản phẩm và ép buộc người dùng mua sản phẩm mà hãng muốn.

Nguồn: Techtalk via Toptal

10 bí kíp để startup và FinTech startup thành công đột phá

Ngày càng nhiều ngân hàng đang xem xét việc hợp tác với các Fintech startups và biến họ trở thành đồng minh của mình. Vấn đề đặt ra là làm sao chọn được ứng viên phù hợp trong nhiều doanh nghiệp đang hoạt động trong lĩnh vực FinTech?

Sau đây là 10 bí kíp mà bất kỳ Fintech startup nào cũng nên nắm rõ để không bỏ lỡ cơ hội hợp tác với các ngân hàng lớn trong tương lai.

1. Huy động đủ nguồn vốn hỗ trợ

Hãy xác định trước khi bắt đầu dự án là chi phí luôn bị đội lên gấp hai và thời gian sẽ tốn thêm gấp ba lần so với dự tính.

Có thể thấy được rằng tạo dựng nguồn vốn không đủ cho công ty thường có mức độ ảnh hưởng nhanh hơn tất cả những gì startup đã dự tính trước. Khi startup nhận ra cần bổ sung kinh phí hoạt động, họ thường không tính đến thời gian trước khi tiền được chuyển vào từ nhà đầu tư.

Thời gian để các nhà đầu tư xem xét cấp vốn có thể mất từ 3 tháng đến 1 năm. Đó là chưa tính đến việc họ phải kiểm duyệt nhiều lần, làm chậm trễ rất nhiều hoạt động của startup.
Thậm chí, nhiều startup còn cho rằng khách hàng sẽ tự tìm đến sản phẩm của mình, đặc biệt là những mối quan hệ từ ngân hàng nên theo họ, chi phí kinh phí Marketing là không cần thiết.

Nhưng, nên nhớ rằng chỉ cần vụ mua bán này thất bại hoặc bị trì hoãn, startup của bạn sẽ trở nên “nguy kịch”

Các FinTech startups nên tìm nhiều nguồn liên kết vốn càng sớm càng tốt; không bao giờ phụ thuộc vào thỏa thuận hứa hẹn ban đầu rồi mới xét đến thương vụ tiếp theo mà phải tiếp tục tìm các hợp đồng hợp tác khác. Và cuối cùng, hãy dành nguồn kinh phí lớn cho các hoạt động Marketing.

Kết quả hình ảnh cho funding

2. Ước lượng thời gian của chu trình bán hàng

Nếu bạn đang có giải pháp kinh doanh FinTech cho bất kì tổ chức tài chính nào – cả tổ chức nhỏ hoặc ngân hàng tiền tệ trung tâm – đều phải chấp nhận một chu trình bán hàng dài hạn, gian khổ với nhiều sự chậm trễ.

Các FinTech startups thường nghĩ rằng sản phẩm hay dịch vụ của họ là tốt nhất và hay coi thường các nguyên tắc về thời gian khi họ bán sản phẩm, dịch vụ của mình cho các tổ chức tài chính. Tuy nhiên, FinTech startups cần phải kiên nhẫn và suy nghĩ thực tế để xây dựng một chu trình bán hàng dài hơn trong kế hoạch hoạt động – ít nhất là 18 tháng.

3. Tìm hiểu kỹ về thị trường

Nhiều startup luôn tin rằng giải pháp của công ty mình sẽ thay đổi hoàn toàn cách vận hành của ngân hàng và không cần phải sử dụng những công cụ đang có.

Trừ trường hợp bạn hợp tác tốt với những đơn vị khác, còn không nguyên tắc “Khách hàng sẽ tự tới” không thể áp dụng trong lĩnh vực FinTech.

4. Xây dựng chiến lược bán hàng thành công

CEO là người biến tất cả các kế hoạch trở nên khả thi nhưng thực tế là những người sáng lập của Fintech startup thường là các kỹ thuật viên phần mềm có ít kỹ năng về Marketing và bán hàng. Vì vậy, bước đầu tiên của các CEO và Người sáng lập là phải học hỏi thêm kinh nghiệm về bán hàng và Marketing, chuẩn bị đầy đủ những kiến thức cần thiết trong những bước đi đầu tiên.

5. Chia sẻ cơ hội bán hàng với tất cả nhân viên kinh doanh

Bạn phải luôn có những nhân viên kinh doanh dưới trướng của mình, phòng hờ trường hợp “nhân viên superstar” xin nghỉ việc. Chuyện startup thuê những người đại diện bán hàng thời vụ chỉ xuất hiện khi có đơn đặt hàng lớn là chuyện bình thường.

 

Hình ảnh có liên quan

Đừng để việc như thế này xuất hiện “Bob của chúng ta, cậu ấy biết giám đốc của 3 ngân hàng và đã chốt deals xong, vì vậy chúng ta không cần nỗ lực bán hàng trong năm nay nữa. Sau khi Bob thực hiện các hợp đồng bán hàng, chúng ta có thể bắt đầu tuyển nhân viên kinh doanh cho năm sau”

Và hãy đưa ra cho nhân viên kinh doanh những lý do hợp lý để họ cam kết ở lại với công ty với các cổ phần vốn ưu đãi. Ngoài ra, một nhân viên kinh doanh nên biết về mục tiêu dài hạn của công ty: chiến lược thoái vốn là gì? Công ty có tiềm năng cho một thương vụ sáp nhập không? Liệu nhân viên có biết họ sẽ được tưởng thưởng thế nào nếu làm việc trung thành trong 5 năm?

6. Hãy khởi đầu tốt

Bạn chỉ có duy nhất một cơ hội để gây ấn tượng với thị trường. Các tổ chức tài chính sẽ bỏ qua những công ty không thể truyền đạt chính xác những gì công ty đó muốn. Tại sao khách hàng/ các nhà đầu tư tiềm năng nên mua sản phẩm của công ty bạn và mua sản phẩm đó với giá trị chính xác bao nhiêu – xét cả về thời gian lẫn tiền bạc

Nếu công ty của bạn vẫn đang trong quá trình tìm hiểu sản phẩm và phân khúc thị trường, vậy thì đừng bán sản phẩm.

Khi cần, bạn hãy chi thêm tiền vào bộ phận nghiên cứu và phát triển sản phẩm để xây dựng một giải pháp bán hàng khả thi. Không bao giờ để nhân viên của bạn đem bán ra thị trường một sản phẩm hoặc một dịch vụ nào đó chưa hoàn chỉnh.

7. Rộng rãi trong thời gian chuẩn bị bán hàng

Những người làm trong lĩnh vực FinTech thường xuyên phải bỏ ra 5 đến 6 năm “mồ hôi nước mắt” cũng như sống tiết kiệm để đầu tư vào một dự án tâm huyết. Đó là kiệt tác, là tầm nhìn của họ và chỉ có họ mới kể câu chuyện của mình một cách tốt nhất.

Mọi yếu tố của bản thuyết trình bán hàng đều được họ hoàn thiện và chuẩn bị kỹ càng như một vở kịch Shakespears. Những bài thuyết trình bán hàng tuyệt vời không thể chỉ qua một đêm là có được. Thế giới kỹ thuật số làm thay đổi khả năng tập trung của con người. Bây giờ không còn ai sử dụng một bản Powerpoint 50 trang nữa. Những slide ngắn gọn, đơn giản với nhiều hình ảnh minh họa đã trở thành chuẩn mực Powerpoint mới.

8. Đừng bao bọc mọi thứ quá kỹ càng

Đừng để cơ hội vuột mất khỏi tầm tay do quá bao bọc giải pháp của công ty mình. Tuy rằng, CEO của những FinTech startup thành công không bao giờ tiến hành bất cứ điều gì mà không có sự kiểm tra, kiểm soát kỹ càng. Thực tế, một khi công ty bắt đầu vận hành thành công, danh tiếng công ty đã lấp đầy truyền thông thông qua chính sách PR và Marketing táo bạo.

Điều quan trọng nhất là nên thiết lập ưu thế tiếp cận đầu tiên tại thị trường thông qua các hoạt động PR và Marketing hơn là chờ đợi đến khi có đối thủ cạnh tranh thì mới bắt đầu truyền thông cho sản phẩm của mình.

9. Trang web phải sẵn sàng khi bắt đầu chạy sản phẩm

Hãy nhớ rằng trang web là “mặt tiền”, là lý do khiến khách hàng quay lại thường xuyên, dành thời gian cho đến khi họ mua hàng. Nếu trang web chưa sẵn sàng hoạt động, hãy để dòng chữ “Sorry you found our homepage. We’re not ready for any business” tại trang chủ.

Kết quả hình ảnh cho 404 not found

Cho dù đó là sản phẩm hay dịch vụ nào thì trang web cũng là một công cụ bán hàng và Marketing đắc lực. Hãy xây dựng trang web của bạn trước khi bắt đầu bán hàng. Nên nhớ, trang web nên cung cấp 90% thông tin về sản phẩm dịch vụ của bạn cho những khách hàng tiềm năng.

10. Tư duy sản phẩm phải độc lập

Trước khi một công ty đạt được tham vọng của mình, họ phải nỗ lực hết sức để xây dựng các mối quan hệ đối tác hoặc ít nhất là liên kết với các ngân hàng tương đương.

Có khả năng startup của bạn đang phát triển một giải pháp tương tự với các giải pháp cốt lõi giữa các ngân hàng. Tuy nhiên ta thường thấy các ngân hàng mua sản phẩm của FinTech startup nếu sản phẩm chứng minh được sự vượt trội. Startup cũng nên tìm kiếm sự tư vấn từ các chuyên gia trong ngành, các nhà phân tích và các phương tiện hỗ trợ truyền thông. Đây là những lực lượng ảnh hưởng đến những giá trị cốt lõi và ảnh hưởng đến cả các tổ chức tài chính

Nguồn: Techtalk via bankingexchange

Các kênh Youtube mà developer và designer không thể không Subscribe

các kênh youtube

Youtube đang dần trở thành TV của thế hệ mới – và người ta đang phụ thuộc ngày càng nhiều hơn vào Youtube để cập nhật những thông tin mà họ quan tâm. Dưới đây là một số kênh design và công nghệ nổi tiếng bạn có thể theo dõi.

Tác giả: Fabricio Teixeira

For Designers

The Futur

Channel này có nội dung khá dang dạng, từ thiết kế UX, đến Branding, trải đến Business. Các video được sản xuất rất kỹ và có đầu tư.

 

Howard Pinsky

Adobe Photoshop với nhiều kỹ thuật khác nhau, như text effects, photo composition, photo retouch, photoshop cơ bản, special effects,… Đặc biệt, giọng đọc của Howard rất dễ nghe.

Laith Wallace

Lời khuyên, công cụ, và nguồn động lực cho những ai đang theo học UX/UI Design, các doanh nghiệp nhỏ và cá nhân mong muốn bắt đầu sự nghiệp về UX.

No Divide

Là nơi học tập và tìm cảm hứng trong ngành thiết kế web. Trong loạt video #LetsTalkDesign của mình, tác giả bàn về một loạt chủ đề đang dạng như sự nghiệp, học tập và quản lý các dự án thiết kế.

UX Hacker & Sketch TV

Các bài hướng dẫn về Sketch App, lời khuyên cho prototype gồm có InVision, Marvel và Principle.

Adobe Photoshop

Cái này thì chắc khỏi cần giới thiệu.

Mike Locke

Từ hướng dẫn phần mềm đến lời khuyên sự nghiệp; đây là kênh nội dung đa dạng liên quan đến Design và UX.

High Resolution

Tuy chỉ mới ra mắt, nhưng channel này đã có thể mang đến những cuộc phỏng vấn với senior designers về quan điểm, cách giao tiếp và triển khai thiết kế của các công ty lớn.

Sarah Doody

Video chân thật về lời khuyên sự nghiệp trong ngành thiết kế, công nghệ và kinh doanh.

Expose UX

Web series về trải nghiệm người dùng, tại đây startup founder tìm sự trợ giúp từ các chuyên gia về UX.

UX Salon

Mỗi tháng là một video mới về những ý kiến độc đáo từ các chuyên gia đi đầu về User Experience và Design. Các video là những chuỗi đối thoại đầy thú vị.

UX Mastery

 Kênh Youtube bổ ích với những video dễ hiểu về UX cùng các thách thức trong nghề.

Better Elevation

Kênh Youtube giải thích lý do và cách thức làm ra thứ này thứ kia. Số lượng video không quá đáng kể, mang đến một số lý giải kỳ thú về những chủ đề hay ho như The Future of Interfaces, và Designing for Humans.

CareerFoundry

Hỗn hợp hội thảo web, phỏng vấn, và video truyền cảm hứng về thiết kế và UX. Đôi khi có chèn vào một ít nội dung được tài trợ.

Mackenzie Child

Product Designer và Illustrator chia sẽ các bài hướng dẫn thiết kế landing pages, illustrations, wireframes…

Topic: User Experience

Bên cạnh các kênh cụ thể trên, bạn cũng có thể follow topics trên interest — như User Experience, chẳng hạn.

For Developers

DevTips

Video hàng tuần về chủ đề phát triển và thiết kế web. Playlists gồm có Design Thinking, CSS, Responsive Design…

Ihatetomatoes

Channel về lập trình Front-end với rất nhiều hướng dẫn về web animation, deconstructions cùng thủ thuật cho các developers và designers front-end. Được cập nhật hàng tuần.

Google Developers

Được cập nhật khá thường xuyên, Kênh Youtube này được rât nhiều lập trình viên tại Google liên tục cung cấp thông tin, và bàn đến nhiều chủ đề như Android, Chrome, và Web Development.

Code Course

Kênh Youtube giúp bạn học cách code, với lượng lớn videos đào sâu vào từng công nghệ một.

LevelUp Tutorials

Kênh Youtube nhắm vào vấn đề nan giải trong việc học công nghệ — sự thiếu hụt các bài hướng dẫn chuyên sâu, cơ bản; dạy bạn nhiều hơn những gì bạn đã gõ vào thanh tìm kiếm.

LearnCode.Academy

Hướng dẫn lập trình web theo các chủ đề như HTML, CSS, JavaScript, Responsive Design, React.js, Node.js, Angular.js, Backbone.js, Docker,…

The New Boston

Các chủ đề xoay quanh lập trình Angular, Node.js và Android.

JREAM

Hướng dẫn lập trình phần mền với các chủ đề: PHP, Python, JavaScript, Node, Front-End, Linux, Photoshop, Illustrator, và các chủ đề tương tự.

Sass Bites

Một channel nữa với hướng dẫn và phỏng vấn về lập trình.

TheDigiCraft

Nhiều mặt về coding — PHP, AJAX, CSS Media Queries,…

The New Boston

Hướng dẫn video cho lập trình viên về các ngôn ngữ như Java, HTML5, Angular và các framework lập trình khác.

Techtalk via medium

Xem thêm: Developer Job hay Designer job lương cao hấp dẫp tại Topdev.vn

Tăng trưởng thị phần nhờ phân loại khách hàng và tối ưu theo thời gian

tối ưu trải nghiệm người dùng
Tăng trưởng thị phần nhờ phân loại khách hàng và tối ưu theo thời gian

Sau hơn 6 năm làm việc ở những công ty tăng trưởng rất mạnh mẽ, giành được nhiều thị phần trong khoảng thời gian ngắn, mình muốn chia sẻ với mọi người cách để tối ưu trải nghiệm người dùng, những hướng tiếp cận có thể áp dụng vào doanh nghiệp của mình trong thời gian tới. Mẫu số chung của những doanh nghiệp thành công là gì và làm thế nào để áp dụng vào công ty của bạn, liệu chúng ta có bị cản trở vì thiếu tiền hay chọn sai thị trường hay không?

tối ưu trải nghiệm người dùng

Các công ty hiện tại đang phát triển không chỉ nhờ lựa chọn đúng thời điểm, đúng thị trường mà còn vì họ làm việc một cách tối ưu hóa và rất chi tiết. Mọi thông tin và số liệu đều được cập nhật theo từng ngày. Họ làm document rất tốt, theo dõi tất cả mọi thứ rất cặn kẽ.

tối ưu trải nghiệm người dùng

Làm thế nào để đạt được hiệu quả khi tối ưu trải nghiệm người dùng?

Trước tiên là sự khác biệt trong cách tiếp cận vấn đề. Mỗi một giai đoạn bạn sẽ được giao một ngân sách nhất định và mục tiêu là làm thế nào để với ngân sách giới hạn đó, bạn có thể tối ưu hóa hiệu quả công việc.

Phân tích Business view

Khách hàng từ hai nơi là Hồ Chí Minh hoặc Hà Nội mua hàng thông qua hình thức offline hoặc online (app/web). Khi mua hàng online, dữ liệu khách hàng sẽ được lưu trữ trong hệ thống Data Warehouse, lúc đó mình sẽ biết được khách hàng đã mua hàng như thế nào, tính toán được lợi nhuận so với mức chi phí đã bỏ ra.

tối ưu trải nghiệm người dùng

Hiện tại hầu hết các doanh nghiệp đang sử dụng các công cụ khác nhau để theo dõi việc kinh doanh. Để tracking traffic trong app hoặc web, bạn có thể sử dụng Appsflyer / Adjust / Kochava để quan sát các số liệu về tỷ lệ organic vs inorganic, CPI/installation từ Facebook hoặc Google, phải tốn bao nhiêu chi phí để khách hàng submit một order.

Ở giai đoạn thứ 2, sau khi khách hàng đã hoàn tất việc mua hàng thì có thể thấy được hành vi mua hàng của khách trong app/web như thế nào, tỉ lệ bounce rate, cancel ra sao. Cuối cùng, sau khi đã có được dữ liệu hoàn chỉnh trong data warehouse, bắt đầu quá trình phân tích dữ liệu Data Studio, Big Query,…

  Thực tế ảo - trải nghiệm công nghệ mới lạ ở Việt Nam
  App User Centricity: Làm sao tăng tỷ lệ duy trì lên 66%?

Nhưng vấn đề là nếu tiếp tục phát triển theo hướng này, tất cả những thứ mà business làm chỉ đơn thuần là làm thế nào để thúc đẩy khách mua hàng nhiều hơn, đơn hàng lớn hơn trong khi chưa thật sự quan tâm đến trải nghiệm của user, nên không thể tạo ra các loyal user. Vì thế câu hỏi đặt ra ở đây là làm thế nào để gia tăng trải nghiệm người dùng?

Làm thế nào để tăng trải nghiệm người dùng?

Thay vì đặt câu hỏi xem làm cách nào để tối ưu hóa việc sử dụng tiền của doanh nghiệp, việc định hướng cách làm thế nào để tạo ra giá trị mà khách hàng thích nhất xuyên suốt trải nghiệm mua hàng là một trong những giải pháp hữu ích.

Tối ưu trải nghiệm người dùng trong bài chia sẻ này sẽ được phân ra thành 4 chặng:

  • Firsting stage: đây là giai đoạn cả hai bên vẫn chưa biết gì nhau.
  • Dating stage: giai đoạn này đã có tiếp xúc một cách tương đối khi khách hàng vào app/web và đặt đơn hàng thành công.
  • In-a-relationship stage: đây là giai đoạn từ lúc khách hàng mua đến khi nhận được đơn hàng.
  • Marriage stage: lúc này khách hàng đã unbox món hàng và quyết định có mua lại sản phẩm đó nữa hay không. Điểm cuối cùng của giai đoạn này mình muốn tạo ra một khách hàng “heathy and balance” – sự khỏe mạnh theo đúng tính chất mà họ có. Làm thế nào để giúp khách hàng có trải nghiệm mua hàng tốt nhất và phù hợp nhất với họ. Đó chính là nền tảng cho sự phát triển của một doanh nghiệp.

Firsting stage

Một người trung bình mỗi ngày sẽ nhận khoảng 46 thông báo mới trên điện thoại từ Facebook, Instagram, các phần mềm thanh toán, email,… Nếu chúng ta cố gắng bắn cho khách hàng thêm một thông báo nữa cũng sẽ trở thành một thứ mờ nhạt trong số đó. Do đó bạn cần tạo ra một thông báo thật sự đáp ứng đúng những gì khách hàng đang cần thì họ mới để tâm đến thông báo này.

Cuộc chiến này không chỉ nằm ở thông báo trên điện thoại mà còn ở Facebook, Google, tất cả những kênh thông tin nào mà chúng ta tiếp cận khách hàng. Và trở ngại chính là các đối thủ của chúng ta cũng sẽ tiếp cận khách hàng ở những kênh thông tin tương tự như thế.

Điểm thứ hai cần cân nhắc là khi làm về marketing, về truyền thông, chúng ta nên cố gắng tận dụng những trend đang có trên thị trường để tăng hiệu quả về hiển thị. Điều quan trọng là chúng ta phải biết cách cân bằng giữa tính chất thương hiệu với xu hướng đó. Nếu không phù hợp với nhau rất dễ tạo ra sự bất đối xứng và không gây được ấn tượng với khách hàng.

Dating stage

Giai đoạn này quyết định trải nghiệm mua hàng của khách hàng sẽ như thế nào. Trung bình trên điện thoại mỗi người sẽ có từ 60 – 90 apps nhưng chúng ta chỉ thực sự sử dụng khoảng 3 apps. Do đó việc làm sao để khách hàng truy cập vào app của mình thật sự rất quan trọng.

Vấn đề thứ 2 là giữa khách hàng nữ và nam, khách hàng mới và cũ, liệu họ có thể nhìn thấy được các vấn đề giống nhau hay không? Có gì cuốn hút họ vì nó đã được cá nhân hóa cho phù hợp với tính chất của họ hay không.

tối ưu trải nghiệm người dùng
Các giai đoạn của quá trình tối ưu trải nghiệm người dùng

In-a-relationship stage

Giai đoạn này có hiệu ứng tâm lý cần để tâm, đó là nếu trong khoảng thời gian chờ đợi món hàng, khách hàng không phải làm gì hết thì họ sẽ thấy việc chờ đợi này lâu hơn so với thời gian thực tế rất nhiều. Từ đó tạo ra trải nghiệm rất tệ cho khách hàng và việc tối ưu trải nghiệm người dùng gần như là không thể.

Thêm vào đó, một đơn hàng lớn liệu có thật sự tốt hay không? Thực tế là mỗi khách hàng sẽ có mức thu nhập khác nhau và cách chi tiêu khác nhau nên chúng ta không thể đánh đồng cách chi tiêu của mọi khách hàng đều như nhau được. Không chỉ đơn giản là làm thế nào để khách hàng mua được nhiều hơn mà còn phải làm thế nào để giúp họ chi tiêu một cách thông minh nhất trong số tiền hàng tháng mà họ có.

Marriage stage

Nếu khách hàng thật sự thích sản phẩm thì làm thế nào để kích thích họ chia sẻ thông tin và nên chia sẻ những gì? Đa phần khách hàng sẽ chia sẻ về tinh thần của thương hiệu, trải nghiệm mua hàng như thế nào hay chỉ đơn giản là việc họ mua món hàng với giá rất rẻ. Người chủ doanh nghiệp cần nhìn nhận xem mình muốn tạo ra giá trị gì cho khách hàng chia sẻ.

Thật ra có một trải nghiệm tâm lý khác, đó là khi khách hàng không thể nhớ hết toàn bộ trải nghiệm này mà họ chỉ nhớ lúc họ vui nhất, lúc họ tệ nhất và khi nhận hàng, sản phẩm như thế nào mà thôi. Do đó mọi người cũng nên cân nhắc về trải nghiệm tâm lý này.

Tối ưu trải nghiệm người dùng thông qua mỗi quy trình làm việc riêng biệt

1. Phần đầu tiên là Psychographic segment (Personas): chia khách hàng thành những nhóm khác nhau dựa trên yếu tố tâm lí.

2. Phần thứ hai là Behavioral segment: dựa trên hành vi mua hàng của khách hàng để phân chia.

3. Phần thứ ba là Performance: khả năng chi tiêu và hành vi mua hàng sau một khoảng thời gian sẽ như thế nào. Mô hình RFM thường được dùng trong hình thức này.

4. Phần thứ tư là giai đoạn Willing to share: dùng “Net Promoter Score” segment làm rõ vấn đề xem ai là người chia sẻ trải nghiệm và giới thiệu nhãn hiệu của mình với những người khác.

Để dễ hiểu hơn, mình sẽ chia sẻ về cách làm việc ở mỗi giai đoạn theo thứ tự từ dưới lên:

NPS segment

Chia khách hàng thành 3 nhóm:

  • Promoter: những người sẵn sàng giới thiệu thương hiệu, sản phẩm của mình với người khác.
  • Passive: những người không có ý định làm gì.
  • Detractors: những người thật sự không thích sản phẩm.

RFM segment

Khách hàng sẽ được chia thành rất nhiều nhóm khác nhau dựa trên đóng góp chi tiêu của họ như thế nào. Bằng cách chia nhiều loại khách hàng như thế có thể tạo ra những coupons riêng biệt. Cá nhân mình thấy RFM hoạt động cực kỳ hiệu quả và dễ dàng ứng dụng. Đặc biệt trong thời điểm Covid-19 này, bạn có thể bán cả Cash vouchers cho khách hàng.

Có nhiều cửa hàng trong thời kỳ giãn cách xã hội sẽ không có traffic đến cửa hàng nữa, nên họ rất cần tìm cách để giữ được mối quan hệ với khách hàng trong khoảng thời gian họ không đến tiệm, cũng như tối ưu hóa được hiệu suất làm việc của nhân viên khi work from home. Đối với nhóm khách hàng Loyal và Champions thì việc họ mua cash vouchers để dùng sau này sẽ rất cao. Từ phía doanh nghiệp, không chỉ khắc phục được những nhược điểm trên mà còn tối ưu được dòng tiền.

Behavioral segment

Giai đoạn này chia nhóm khách hàng dựa trên hành vi mua hàng của họ. Ở app/web, dữ liệu được lưu trữ rất nhiều nên có thể dùng machine learning, các thuật toán về gom nhóm để làm việc.

Psychographic segment

Giai đoạn này phân loại khách hàng dựa vào mặt tâm lý. Có 3 mô hình chính mà mọi người có thể tham khảo: Myers-Briggs type, Big Five personality traits, The nine Enneagram type.

The nine Enneagram type là mô hình được lựa chọn nhiều nhất vì 2 mô hình đầu tiên quá khó để thu thập dữ liệu. Với mô hình thứ 3 mọi người có thể tạo ra những hướng tiếp cận riêng, phân loại khách hàng và tạo những coupons phù hợp. Nó không còn là vấn đề giá trị coupons đến mức nào nữa mà đã trở thành nội dung truyền thông bạn đẩy đến họ có phù hợp hay không.

Vậy đối với những công ty nhỏ, không đủ ngân sách đáp ứng các công cụ này thì giải pháp là gì? Với một số tiền nhất định, bạn có thể sử dụng hiệu ứng tâm lý The Peak-end Rule. Với hiệu ứng này, trải nghiệm mua hàng của khách hàng phụ thuộc vào 2 thời điểm, thời điểm cao nhất và thời điểm kết thúc. Điều đó có nghĩa, nếu bạn không có quá nhiều tiền, trong 4 giai đoạn ở trên bạn có thể tập trung vào giai đoạn mà công ty làm tốt nhất để hoàn chỉnh hiệu suất công việc của mình cũng như tối ưu trải nghiệm người dùng.

Bài viết được trích dẫn từ phần trình bày của anh Mạnh Phan tại sự kiện Vietnam Mobile Day 2020 LIVE do TopDev tổ chức


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

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

Xây dựng nội dung và tận dụng Google Assistant theo nhiều cách khác nhau

google assistant
Những cách làm việc khác nhau với Google Assistant

Google Assistant là trợ lý ảo của Google. Đây là kết quả phát triển từ tính năng Android Google Now, mục đích là cung cấp cho người dùng những thông tin mà không cần bạn phải hỏi. Google Assistant được xem là đối thủ cạnh tranh với Siri của Apple, Alexa của Amazon và Cortana của Microsoft.

Google Assistant hiện đang hỗ trợ với hơn 19 ngôn ngữ ở hơn 80 quốc gia. Google Assistant cũng có mặt trên các thiết bị smart display, android phone, iphone, google home và rất nhiều các thiết bị khác. Chúng ta có thể tận dụng các lợi thế đó của Google Assistant để phục vụ cho công việc và sử dụng platform này cho việc hoạt động trên Google.

google assistant
Google Assistant giúp các lập trình viên thuận lợi hơn trong quá trình làm việc

Nếu là một web content owner, bạn có thể sử dụng Content Actions: recipes, how-tos, podcasts, news,… Nếu là lập trình viên Android app, bạn có thể sử dụng App Actions. Hoặc với Innovator cho các nền tảng chat, bạn có thể sử dụng Conversational Actions trong Interactive Canvas. Ngược lại, nếu là một Hardware developer, bạn có thể sử dụng Smart home SDK.

  10 Add-on Google Sheets phải có dành cho các Recruiters
  AWS, Azure và Google Cloud là gì? Chứng chỉ nào tốt nhất cho sự nghiệp của bạn?

Content Actions – giải pháp cho nội dung trở nên tuyệt vời hơn cùng Google Assistant

Bạn có thể build website bằng cách tìm kiếm các giả định trên Google để phục vụ cho công việc. Với một website, podcasts, news, recipes, FAQs, how-to bạn có thể đồng bộ thông tin thông qua Google Assistant. Đánh dấu cấu trúc dữ liệu để làm cho các contact available trong những tìm kiếm mang tính kết nối.

App Actions

Kích hoạt chức năng giọng nói cho các apps trên thiết bị Android

App Actions cho phép người dùng khởi chạy các tính năng cụ thể trong ứng dụng bằng Google Assistant. Thông qua việc kích hoạt App Actions để mở rộng ứng dụng, người dùng có thể dễ dàng liên kết sâu hơn và làm việc với Assistant khi nói yêu cầu của mình với Assistant. Nó kết nối với người dùng trên gần 18 thiết bị Android phones khác nhau, thông qua việc sử dụng tính năng hiểu ngôn ngữ tự nhiên của Google để làm việc trong ứng dụng.

Đưa thông tin trực tiếp vào hệ thống

Đầu tiên, người dùng có thể nói yêu cầu của mình vào thiết bị. Sau đó thiết bị sẽ xác nhận yêu cầu của user và những thông tin cần thiết sẽ được xử lý.

Xem thêm 10 Add-on Google Sheets phải có dành cho các Recruiters

Built-in Intents

Built-in Intents (BII) là hình thức mô hình hóa những cách phổ biến mà người dùng thể hiện các nhiệm vụ họ đang cố gắng thực hiện, hoặc thông tin họ tìm kiếm, chẳng hạn như đặt một bữa ăn, đặt một chuyến xe hay kiểm tra số dư tài khoản. Việc xây dựng App Actions yêu cầu bạn triển khai các built-in intents (ý định có sẵn). Khi xây dựng App Actions, bạn nên nghiên cứu và thử nghiệm với tất cả BII có liên quan đến chức năng trong ứng dụng của bạn để có thể cung cấp trải nghiệm tốt hơn cho những người dùng muốn kích hoạt App Actions.

Android Slices

Slices là các mẫu giao diện người dùng có thể hiển thị nội dung phong phú và tương tác từ từ trong ứng dụng Google Search và cả ở những nơi khác như Google Assistant.

Smart Homes – Kiểm soát thiết bị bằng giọng nói

Phân loại và đặc điểm các thiết bị thông minh cho gia đình

Các loại thiết bị smart home được hỗ trợ hiện nay khá đa dạng với những đặc điểm riêng mà bạn có thể lựa chọn sao cho phù hợp với nhu cầu của mình. Các loại thiết bị này đều khai thác khả năng xử lý ngôn ngữ tự nhiên của Google Assistant.

google assistant
Google Assistant hỗ trợ đắc lực cho các thiết bị Smart Home

Ví dụ, một thiết bị như đèn có thể được bật theo nhiều cách khác nhau khi người dùng điều khiển bẳng giọng nói như “Bật đèn”, “Bật đèn phòng khách của tôi”. Ngoài đèn thì rèm cửa, máy quạt, điều hòa, lò sưởi,… hiện đều đã được tích hợp chức năng này. Một số ưu điểm có thể kể đến của các thiết bị thông minh này là khả năng lựa chọn thoải mái để phù hợp nhất với gia đình, đa dạng các trạng thái hoạt động, có thể điều khiển thông qua mạng, độ cảm biến cao và dễ dàng vận chuyển.

Vậy các thiết bị này được tích hợp với nhau như thế nào?

Để kết nối thiết bị với Google Assistant, bạn cần thiết lập Smart home actions – Hành động cho ngôi nhà thông minh. Assistant sẽ xử lý cách người dùng kích hoạt Actions của bạn (bằng nhiều ngôn ngữ) và cung cấp siêu dữ liệu hữu ích thông qua Home Graph (chẳng hạn như trạng thái của một thiết bị cụ thể dựa trên thông tin của người dùng). Tất cả những gì bạn cần làm là phản hồi các yêu cầu thông qua dịch vụ thực hiện của bạn.

Local Home SDK

Local Home SDK cung cấp các kiểu gõ TypeScript để xây dựng ứng dụng hỗ trợ việc thực hiện tích hợp mang tính cục bộ cho gia đình dưới sự hỗ trợ của Google Assistant. Các kiểu chữ này được phân phối dưới dạng npm. Bạn có thể tìm thấy mã nguồn trong repo GitHub Local Home SDK. SDK có sẵn thông qua mạng phân phối nội dung của Google (CDN).

Xây dựng các cuộc trò chuyện phong phú hơn

Xây dựng trải nghiệm trò chuyện tùy chỉnh bằng API giọng nói và hình ảnh của Google Assistant. Sử dụng khả năng hiểu ngôn ngữ tự nhiên (Natural Language Understanding) của Assistant và các công cụ hữu ích khác cho các dev. Người dùng sẽ gửi câu hỏi đến Google Assistant, user input sẽ được xử lý thông qua Conversational Action và trả về phản hồi. Google Assistant sẽ chuyển câu trả lời đến với user ngay lập tức.

Natural Language Understanding (NLU)

Các cuộc trò chuyện và tương tác bằng lời nói có thể có nhiều dạng và nhận được dữ liệu người dùng sớm, giúp các Action trở nên hữu ích, hiệu quả và thú vị hơn. Khi làm việc, hãy chú ý đến các lỗi và cảnh báo. Ngay cả khi Actions của bạn đang hoạt động tốt, nó có thể gặp sự cố trong tương lai và bạn sẽ dành nhiều thời gian hơn để điều tra các vấn đề. Quá trình đọc hiểu ngôn ngữ tự nhiên này diễn ra giữa Google Assistant và Conversational Action. Dữ liệu ở quá trình này sẽ được đọc hiểu và trả về kết quả dễ hiểu nhất cho user.

Actions Builder

Actions Builder là một IDE dựa trên web, dễ sử dụng trong bảng điều khiển Actions. Giao diện người dùng Builder được truy cập trong tab Develop của bảng điều khiển.

Scenes

Scenes là một trong những nền tảng chính của Actions Builder và đại diện cho các trạng thái riêng biệt của cuộc trò chuyện. Mục đích chính của họ là sắp xếp cuộc trò chuyện thành các phần hợp lý, thực hiện các tác vụ, thu thập dữ liệu cụ thể từ người dùng và trả lại lời nhắc cho người dùng.

Intents

Intents đại diện cho một tác vụ mà Assistant cần thực hiện, như xử lý thông tin nhập của người dùng hoặc các sự kiện hệ thống.

Types

Types cho phép trích xuất dữ liệu từ đầu vào của người dùng. Được sử dụng để chú thích các cụm từ trong intent và dữ liệu để xử lý. Types cũng có thể được sử dụng để xác nhận các điều kiện trong một scene.

Actions SDK

Actions trên Google cho phép bạn mở rộng chức năng của Google Assistant với Actions. Các tác vụ cho phép người dùng hoàn thành công việc thông qua giao diện trò chuyện. Actions SDK là một phương pháp phát triển conversation mà không cần sử dụng Dialogflow.

  SDKMan là gì? Tại sao lập trình viên Java nên cài đặt SDKMan?

Khi sử dụng Actions SDK, bạn cũng phải cung cấp các mẫu truy vấn trong Actions để xác định các cụm từ mẫu mà người dùng có thể nói. Có nhiều cách khác nhau để phát triển ứng dụng dựa trên phương thức này như dựa trên file, cấu hình, resources, khả năng sử dụng local IDE, giao diện dòng lệnh, nhập/xuất hàng loạt dữ liệu, triển khai thư viện ứng dụng webhook Node.js client.

Ngoài ra, việc nâng cao trải nghiệm người dùng được thể hiện qua những app mang tính tương tác cao hơn. Các dev có thể sử dụng Interactive Canvas – xem thêm về các tính năng hiện có của Interactive Canvas với bài viết này: Sử dụng Google Assistant để tạo ra các Interactive Games

Continuous Match Mode (CMM)

CMM cho phép các nhà phát triển Canvas luôn mở microphone cho các truy vấn của người dùng và nhận kết quả nhận giọng nói có độ trễ thấp hơn. Tính năng này cho phép người dùng cung cấp một loạt các đầu vào mà Canvas Action xác nhận được trong thời gian thực. Sử dụng CMM bạn vẫn có thể hoạt động với Interactive Canvas, microphone vẫn được mở, sử dụng trong khoảng thời gian tối đa 180 giây, người dùng có thể thoát khỏi chương trình với các nút lệnh như “cancel”, “exit”,…

Ngoài ra, Interactive Canvas sở hữu nhiều tính năng khác:

  • Cấu hình là một phần trong Canvas response.
  • Các dev được cung cấp danh sách các cụm từ dự kiến và thời lượng.
  • Web app nhận callbacks cho mỗi user input phù hợp.
  • Không truy cập vào raw query.
  • Mode ends ở thời lượng cấu hình hoặc có thể invoke một API để close mode.
  • Action quay lại để chuyển sang hội thoại.

Bài viết được trích dẫn từ phần trình bày của Jessica Dene Earley-Cha tại sự kiện Vietnam Web Summit 2020 LIVE do TopDev tổ chức


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

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

PHP & MySQL: Novice to Ninja, 5th Edition

PHP & MySQL: Novice to Ninja, 5th Edition

Dưới đây là tài liệu về PHP & MySQL mà Topdev đã tham khảo được trên diễn đàn.

Người mới làm quen với Ninja là một hướng dẫn thực hành thực tế để tìm hiểu tất cả các công cụ, nguyên tắc và kỹ thuật cần thiết để xây dựng một trang web hướng cơ sở dữ liệu đầy đủ chức năng bằng cách sử dụng PHP & MySQL

Tải tại đây

Tham khảo thêm việc làm php nhiều ngành nghề tại đây

Cách tuyển dụng coder độc nhất vô nhị từ Google: cực kỳ hiệu quả, lọc được toàn nhân tài mà không tốn chi phí “săn đầu người”

Có lẽ với Google, những gì bạn tìm kiếm sẽ phản ánh chính trình độ và con người bạn, vậy tại sao lại không gửi lời mời tuyển dụng đến những người mà họ cần.

Google có rất nhiều cách khác nhau để tìm kiếm tài năng. Bên cạnh một bộ phận tuyển dụng chuyên nghiệp “cây nhà lá vườn” của mình, họ luôn có một danh sách dài các ứng viên đến từ bên ngoài. Nhưng nếu bạn có thói quen tra cứu các câu lệnh khó hiểu, bạn có thể thấy một trong những phương pháp tuyển dụng “còn khó hiểu” hơn của công ty này. Đó là một thông điệp từ Google cho biết rằng bạn đang “nói ngôn ngữ của chúng tôi,” và hỏi xem bạn có “sẵn sàng cho một thách thức”.

Theo Max Rosett, một cựu tư vấn tuyển dụng đang trong quá trình hoàn thành khóa học Master trực tuyến về khoa học máy tính từ Đại học Công nghệ Georgia, cho biết trên trang TheHustle.co, anh đã gặp một lời mời như vậy trong khi tìm kiếm một thuật ngữ của Python.

Sau khi hoàn thành sáu câu hỏi liên tiếp, anh được yêu cầu gửi bản thông tin liên lạc của mình và một vài ngày sau, anh nhận được một email từ nhà tuyển dụng. Anh được bỏ qua phần kiểm tra tiêu chuẩn qua điện thoại, và ba tháng sau khi lần đầu tiên nhìn thấy các câu hỏi từ công ty, anh cho biết giờ mình là một nhân viên của Google.

Bạn cũng có cơ hội thử thách bản thân nếu click vào link này, nhưng bạn chỉ có thể đăng nhập và thử nó nếu nó “đang tìm bạn”.

Những câu chuyện tương tự cũng đã từng xuất hiện trên các phương tiện truyền thông trước đây. Ví dụ vào cuối năm 2014, một thành viên của trang Hacker News, sau một loạt các tìm kiếm có liên quan đến ngôn ngữ lập trình python, đã được Google mời làm một bài kiểm tra. Ngoài ra, cũng vào năm 2014, một nhà nghiên cứu mã hóa có tên Phil Tower, sau khi truy cập vào địa chỉ 146.148.62.204 và giải được một ô chữ mật mã, cũng nhận được lời mời vào làm tại công ty.

Với bài đăng của Rosett cho thấy công cụ này không hẳn chỉ là một dự án của ai đó ở công ty khởi động và bỏ quên trên internet – nó thực sự là một cách để có được công việc. Nó cũng khuyến khích những người đang tìm cách bước chân vào ngành công nghệ hoặc thay đổi công việc rằng, có một con đường phi truyền thống để vào được công ty như một lập trình viên.

Dưới đây là lời mời mà David Yanofsky, phóng viên nhóm Things của trang Quartz nhận được sau khi tìm kiếm một số từ khóa về ngôn ngữ Python.

Còn đây là màn hình sau khi anh ấn vào dòng chữ “I want to play” (Tôi muốn tham gia chơi).

Theo trang Hacker News, một số thuật ngữ tìm kiếm và chủ đề sẽ dẫn mọi người đến thách thức trên ví dụ như “angularJS directives” (các lệnh trong thư viện angularJS) hay “ mutex lock ”. Trong khi đó, Rosett tìm kiếm với từ khóa “ Python lambda function list comprehension .”

Trang Quartz đã liên lạc với Google để hỏi về vấn đề này, và dưới đây là câu trả lời mà họ nhận được:

\u0050\u0075\u007a\u007a\u006c\u0065\u0073\u0020\u0061\u0072\u0065\u0020\u0066\u0075\u006e\u002e\u0020\u0053\u0065\u0061\u0072\u0063\u0068\u0020\u006f\u006e\u002e

Để dịch dòng trên thành bảng mã Unicode mà bạn có thể đọc được, hãy mở terminal trên máy tính của bạn, gõ echo –e, sau đó là dấu cách và toàn bộ dòng trên được đặt trong dấu ngoặc đơn, nhấn Enter bạn sẽ nhận được kết quả (rất tiếc với những người dùng Windows, cách này chỉ dùng cho Linux và Mac). (Đáp án là “Puzzles are fun. Search on.”)

Chiến thuật này cũng tương tự như một biển quảng cáo khó hiểu mà công ty đặt tại Boston và California vào năm 2004, trong đó là một câu đố toán học để dẫn tới một website. Những người có thể truy cập được vào trang web đó sẽ thấy một câu đố khác. Nếu họ giải được chúng, họ sẽ được mời gửi lý lịch của mình tới một hòm thư đặc biệt.

Biển quảng cáo tuyển dụng vào năm 2004 của Google.

Mặc dù cách làm này khá thú vị, nhưng theo quyển sách gần đây của Laszlo Bock, cựu giám đốc bộ phận nhân sự của Google, điều này sẽ dẫn đến một đợt lũ lụt các hồ sơ lý lịch và câu hỏi tuyển dụng, chất lượng đầu vào thấp và lãng phí nguồn lực. Ông không tán thành cách làm này. Dưới đây là những gì ông mô tả trong quyển sách của mình:

Phần lớn những người truy cập vào được không vượt qua được các câu đố. Trong cuộc phỏng vấn với những người đã làm được, chúng tôi nhận ra rằng những người giỏi trong việc một mình giải quyết các câu hỏi không phải lúc nào cũng có thể trở thành một thành viên trong nhóm. Và cho dù những người thắng trong các cuộc thi này rất tài giỏi, nhưng họ thường chỉ thành thạo trong một lĩnh vực. Hoặc họ đã quen với việc giải quyết những vấn đề với các mục đích giới hạn và những giải pháp rõ ràng thay vì hướng đến những thách thức phức tạp của thế giới thực.”

Trong trường hợp này, nhà tuyển dụng nên được kiểm soát nhiều hơn, họ nên được tiếp xúc trước với người mà họ chọn, thay vì phải đối mặt với một trận đại hổng thủy của các hồ sơ lý lịch.

Theo Quartz

Thử thực hiện 4 Stage khi Compile C bằng GCC

GCC biên dịch một file .c thành file chạy trong 4 Stage.

Preprocessing (tiền xử lý), Assembly Code Compiling (diên dịch sang mã Assembly), Machine Code Compiling (biên dịch sang mã máy), Linking.

Trong compile thông thường dạng

$gcc -o HelloWorld HelloWorld.c

Với câu lệnh trên, ta sẽ không thấy kết quả của 3 Stage đầu tiên.

Để hiểu rõ hơn, trong giới hạn hiểu biết, mình sẽ thử thực hiện các Stage bằng tay xem liệu có thể tạo ra file chạy như câu lệnh compile trên hay không.

1. Thực hiện Stage 1 (Preprocessing)

Như trong bài trước, stage này sẽ lấy đầu vào là file .c và cho kết quả đầu ra là file .i (thông thường)

Đầu vào: HelloWorld.c

Đầu ra: HelloWorld.i

Câu lệnh thực hiện:

$gcc -E HelloWorld.c -o HelloWorld.i

Hoặc bằng câu lệnh cpp:

$cpp HelloWorld.c -o HelloWorld.i

File HelloWorld.i khá dài so với HelloWorld.c.

Về nội dung, file HelloWorld.i vẫn là một file source C như bao file Source Code C khác mà thôi, chứ hoàn toàn chưa chuyển sang dạng khác.

2. Thực hiện Stage 2 (Compiling to Assembly Code)

Stage này sẽ chuyển từ source C chứa trong các file HelloWorld.i sang Assembly Code, file HelloWorld.s:

Đầu vào: HelloWorld.i

Đầu ra: HelloWorld.s

Câu lệnh thực hiện:

$gcc -S HelloWorld.i -o HelloWorld.s

3. Thực hiện Stage 3 (Compiling to Machine Code)

Bước này sẽ chuyển Assembly Code sang mã máy mà chương trình sẽ chạy:

Đầu vào: HelloWorld.s

Đầu ra:HelloWorld.o

Câu lệnh thực hiện:

$as HelloWorld.s -o HelloWorld.o

as chính là Assembler, một trình biên dịch Assembly.

4. Thực hiện Stage 4 (Linking)

Linker trong Linux là ld hay tên đầy đủ là GNU Linker. Xem thêm ở man ld

  • Lần 1: Ta thấy 3 stage ở trên thực hiện không mấy khó khăn gì.
    Cùng dạng câu lệnh như thế mà thực hiện thì sao.
    Đây là kết quả:
$ ld HelloWorld.o -o HelloWorld
ld: warning: cannot find entry symbol _start; defaulting to 00000000004000b0
HelloWorld.o: In function `main':
HelloWorld.c:(.text+0xa): undefined reference to `puts'

Lần 2: Đọc một chút về Linker trong man page.
Có vẻ puts sinh ra từ printf đang được gọi trong source.
Và hiểu ra một chút rằng, chương trình C ta viết sử dụng hàm printf, hàm này không phải ta tự viết.
Người mới học vẫn gọi là hàm chuẩn, hầu như không quan tâm nó đến từ đâu.
Nhưng ta đang làm manual mà. Bản thân ngôn ngữ C không bao gồm một thư viện, hay hàm nào cả.
Vậy hàm printf lấy từ đâu, ta phải chỉ cho Linker biết. Đó là thư viện libc, chứa những hàm cơ bản mà chúng ta bảo là chuẩn cho Linux.
Tham khảo ví dụ trong
man page,
ta thực hiện lại việc link bằng command:

$ ld -o HelloWorld /lib/crt0.o HelloWorld.o -lc
ld: cannot find /lib/crt0.o: No such file or directory

Lỗi trên do không có file.

Bỏ /lib/crt0.o đi thì sao:

$ ld -o HelloWorld HelloWorld.o -lc
ld: warning: cannot find entry symbol _start; defaulting to 0000000000400260

Lỗi trên entry_point (địa chỉ hàm mà CPU sẽ nhảy vào đầu tiên để bắt đầu thực hiện chương trình) chưa được khai báo.

Sửa như sau:

$ld -o HelloWorld HelloWorld.o -lc --entry main

Câu lệnh thành công, file HelloWorld được tạo ra.

Tuy nhiên, khi chạy thì:

./HelloWorld
bash: ./HelloWorld: No such file or directory

Lỗi trên là không có file nào như thế. WTF, lỗi gì lạ vậy, rõ ràng là có mà.

Lần 3: Sau một hồi hỏi thầy GG. Nguyên nhân có vẻ là do dynamic loader linker mà HelloWorld yêu cầu không có trong hệ thống.

Kiểm tra như sau:

$ readelf -l HelloWorld|grep interpreter
      [Requesting program interpreter: /lib/ld64.so.1]
$ ls /lib/ld64.so.1
ls: cannot access '/lib/ld64.so.1': No such file or directory

Kiểm tra dynamic loader linker từ file kết quả được build “không manual”.

Tức là bằng câu lệnh:

$gcc -o HelloWorld_auto HelloWorld.c
$ readelf -l HelloWorld_auto |grep interpreter
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

Ta thử “ép buộc” sử dụng dynamic loader linker hiện có thì sao.

$ /lib64/ld-linux-x86-64.so.2 ./HelloWorld
Hello World
Segmentation fault (core dumped)

Chạy được nhưng bị Segmentation fault.

Để hiểu kĩ tại sao xảy ra lỗi này, chắc có vẻ mất thời gian.

Lần 4: Bắt chước câu lệnh biên dịch auto thì sao nhỉ? GCC đã thực hiện quá trình linking khi tạo ra file HelloWorld_auto ở trên như thế nào? Thật may, sau một hồi hỏi thầy GG. Ta có thể thấy được toàn bộ tham số của câu lệnh biên dịch ở trên bằng tham số -v vào câu lệnh biên dịch.

$gcc -v -o HelloWorld_auto HelloWorld.c

Kết quả từ câu lệnh trên khá rắc rối, (có lẽ cần 1 bài khác để nói kĩ hơn về nó).

Tuy nhiên ta chỉ quan tâm đến đoạn tham số của collect2 (chính là Linker mà GCC sử dụng cho ngôn ngữ C) mà thôi.

Nó như thế này:

COLLECT_GCC_OPTIONS='-v' '-o' 'HelloWorld_auto' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccy1PInh.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o HelloWorld_auto /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. /tmp/ccocGwHc.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o

Nhìn nản luôn, edit lại chút cho “rắc rối hơn”

COLLECT_GCC_OPTIONS='-v' '-o' 'HelloWorld_auto' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/5/collect2 
-plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so 
-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper 
-plugin-opt=-fresolution=/tmp/ccy1PInh.res 
-plugin-opt=-pass-through=-lgcc 
-plugin-opt=-pass-through=-lgcc_s 
-plugin-opt=-pass-through=-lc 
-plugin-opt=-pass-through=-lgcc 
-plugin-opt=-pass-through=-lgcc_s 
--sysroot=/ 
--build-id 
--eh-frame-hdr 
-m elf_x86_64 
--hash-style=gnu 
--as-needed 
-dynamic-linker /lib64/ld-linux-x86-64.so.2 
-z relro 
-o HelloWorld_auto 
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o 
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o 
/usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o 
-L/usr/lib/gcc/x86_64-linux-gnu/5 
-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu 
-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu 
-L/lib/../lib -L/usr/lib/x86_64-linux-gnu 
-L/usr/lib/../lib 
-L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. /tmp/ccocGwHc.o 
-lgcc 
--as-needed -lgcc_s --no-as-needed 
-lc -lgcc 
--as-needed -lgcc_s --no-as-needed 
/usr/lib/gcc/x86_64-linux-gnu/5/crtend.o 
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o

Ồ, dù không thể hiểu hết các tham số nhưng ta cũng thấy một số tham số sau:

  1. -dynamic-linker /lib64/ld-linux-x86-64.so.2: chỉ ra dynamic linker nào được được sử dụng để ghi vào file kết quả.
  2. -L<đường dẫn> : chỉ định các đường dẫn chứa thư viện mặc đinh hay chúng ta vẫn nói là chuẩn.
  3. –sysroot=/ : là thông số cực kì quan trọng trong cross-compling. Nó sẽ chỉ ra dường dẫn mà các đường dẫn trong qua trình biên dịch lấy đó là thư mục root.

Ok, ta thử chạy manual Linker với mớ tham số ở trên xem sao (nhớ xóa tham số -o HelloWorld_auto nữa.

ld -o HelloWorld HelloWorld.o -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o

Và đây là HelloWorld:

$./HelloWorld
Hello World

Đến đây, muốn để hiểu rõ hơn tại sao lại chạy thì cần thêm thời gian và cao thủ. :))

5. Tham số cho GCC

Nếu muốn xem các file kết quả trung gian từ 3 Stage đầu, ta có thể thêm tham số –save-temps khi biên dịch.

$gcc --save-temps -o HelloWorld HelloWorld.c 
$ls -lia
total 52
5097125 drwxrwxr-x 2 oedev oedev  4096  1月  8 15:09 .
5097103 drwxrwxr-x 3 oedev oedev  4096  1月  8 15:09 ..
4990864 -rwxrwxr-x 1 oedev oedev  8608  1月  8 15:09 HelloWorld
4990859 -rw-rw-r-- 1 oedev oedev    70  1月  8 15:09 HelloWorld.c
4990861 -rw-rw-r-- 1 oedev oedev 17121  1月  8 15:09 HelloWorld.i
4990863 -rw-rw-r-- 1 oedev oedev  1504  1月  8 15:09 HelloWorld.o
4990862 -rw-rw-r-- 1 oedev oedev   460  1月  8 15:09 HelloWorld.s

Nguồn: Techtalk

7 điểm chung của những người phụ nữ “cân cả thế giới”

Anna Eleanor Roosevelt – người được mệnh danh là Đệ nhất phu nhân của thế giới là người nổi tiếng với tài năng đàm phán và khả năng lãnh đạo của mình. Marie Curie là người phụ nữ đầu tiên trong lịch sử đạt giải Nobel. Sự kiên trì, bền bỉ và không sợ thất bại của bà đã đưa bà đến thành công. Vậy đặc điểm chung của những người phụ nữ làm thay đổi thế giới là gì?

Trong khi bất bình đảng giới vẫn xảy ra hàng ngày ở nơi công sở, trong gian bếp, phụ nữ còn phải đối mặt với nhiều khó khăn. Từng vận hành hãng Boomerang suốt 4 năm qua, Katy Cowan chia sẻ hầu như cô không nghĩ về giới tính của mình nhiều trong khi làm việc, nhưng đôi khi điều đó khiến cô đau đầu. Có lần, một khách hàng tiềm năng từng hỏi cô rằng liệu cô có ý định sinh con hay không. Cô cho rằng đó không còn là chuyện cá nhân mà còn liên quan trực tiếp đến việc anh ta có hợp tác với cô nữa hay không.

Mặc dù phải đối mặt với những tình huống kỳ quặc mà một người đàn ông sẽ không bao giờ phải đối mặt. Nếu phụ nữ có những đặc điểm tính cách sau, họ sẽ dễ dàng đánh bại được những khó khăn, phát huy ưu điểm của mình để trở thành những nhà lãnh đạo hàng đầu, những người phụ nữ “cân” cả thế giới.

1. Tự tin

Ngay cả trong suy nghĩ bạn cũng không dám nghĩ rằng mình có thể đi xa, thì bạn sẽ mãi mãi dậm chân tại chỗ. Tự tin là tính cách quan trọng nhất đối với mọi doanh nhân thành đạt. Muốn là một phụ nữ thành đạt thì càng cần phải tự tin.

“Đối với phụ nữ, tự tin là một loại cơ bắp, sử dụng nó càng nhiều, bạn càng trở nên mạnh mẽ” – Viết bởi 1 ai đó

2. Nắm bắt cơ hội

Khi đối mặt với một thách thức, một người phụ nữ thành công sẽ biết cách nhìn thấy cơ hội trong đó. Họ nhìn thấy một cốc nước chưa đầy, hơn là một cốc nước vơi. Họ biết cách gạt bỏ những rào cản và đối mặt với những hoàn cảnh trái nghịch, họ học được từ những khó khăn có khi thất bại từ đó.

Estée Laude – đồng sáng lập thương hiệu mỹ phẩm nổi tiếng danh giá toàn cầu là con gái thứ 2 của một gia đình gốc Do Thái di cư từ Hungary sang Mỹ. Bà cũng là một người phụ nữ biết cách nắm bắt cơ hội. Trong suốt cuộc khủng hoảng mua sắm sau chiến tranh, phụ nữ thường muốn mua các gói mỹ phẩm dùng thử trước khi quyết định mua chính thức. Bà Lauder đã nhận ra điều đó và nhanh chóng áp dụng vào thương hiệu mỹ phẩm của mình.

3. Tính toán

Người ta vẫn thường nói, phụ nữ là đại diện cho một “giống loài” bất ổn và phức tạp nhất trên trái đất. Họ thường bất chợt đưa ra một ý tưởng mà không có sự tính toán. Tuy nhiên, để trở thành một nữ lãnh đạo thành đạt, người phụ nữ thường phải luôn tính toán, có kế hoạch và tiên liệu những điều bất ngờ có thể xảy ra.

Coco Chanel – nữ vương bất tử của thời trang xa xỉ, chiến sĩ giải phóng phụ nữ – đã từng có một câu nói bất hủ về phụ nữ: “Cuộc đời tôi không mấy vui vẻ, vì vậy tôi đành phải tự tạo cuộc sống cho mình“.

4. Đam mê

Phụ nữ thường vin vào những lý do hoàn cảnh mà chọn cho mình một công việc ổn định mà để dành đam mê như một thú vui, không dám tiến tới nó như một sự nghiệp chính. Vì vậy, họ thường không đạt vị trí cao trong công việc.

Điểm khác biệt lớn nhất giữa người phụ nữ thành đạt và người phụ nữ bình thường là họ không mất thời gian băn khoăn có nên đi theo đam mê hay không vì họ luôn xác định rõ họ thích và muốn gì. Những công việc họ làm luôn đi kèm với đam mê và định hướng.

5. Không so sánh, ghen tị

Nếu bạn có một tấm gương để học hỏi và vươn lên thì điều đó thật tuyệt vời. Nhưng nếu không tỉnh táo, luôn lấy mình ra so sánh để mà rơi vào hố sâu ghen tị, người phụ nữ sẽ không thể nghĩ xa và thậm chí là đánh mất chính bản thân mình. Họ sẽ mãi cảm thấy bất an và không hài lòng với bản thân.

6. Khiêm tốn và sẵn sàng học hỏi

Thế giới luôn vận động và không ngừng thay đổi. Những người phụ nữ thành đạt nhận thức được điều này và luôn có tinh thần cầu thị, học hỏi để tiến bộ. Họ sẽ đọc sách, tham dự hội thảo và lắng nghe chia sẻ của tất cả mọi người. Họ không sợ thừa nhận những sai sót của bản thân và không bao giờ phóng đại về những gì mình đang có, vì họ biết chỉ có thay đổi là luôn không thay đổi.

7. Thông minh cảm xúc

Những nhà lãnh đạo cực kỳ thành công đều phải trải qua khó khăn và trở ngại trên con đường dẫn tới thành công của họ. Khi đối mặt với vấn đề, họ phát huy sức đề kháng, sự kiên trì, và ý chí mạnh mẽ không chỉ cho sự sống còn của bản thân họ mà còn là rất nhiều những người khác. Có nhiều người thất bại trước khó khăn, có nhiều người thành công bởi họ có trí thông minh cảm xúc. Các nhà lãnh đạo thành công biết cách đối phó với cảm xúc của họ, làm cho họ trưởng thành về mặt tình cảm và thông minh.

Bill Gates, Elon Musk và Stephen Hawking cảnh báo về việc làm trong tương lai

“Tự động hóa trong nhà máy đã dần dần thay thế con người các công việc sản xuất truyền thống và sự trỗi dậy của trí tuệ nhân tạo có khả năng lấn sang những công việc trung lưu chỉ còn lại công việc bảo dưỡng, sáng tạo hoặc giám sát.”-Stephen Hawking
“Khúc hành ca” quan ngại về việc robot đang nhanh chóng chiếm mất công việc của con người.
Dưới đây là lời của Elon Musk tại Hội nghị cao cấp Chính phủ thế giới diễn ra tại Dubai:
“Đối phó với thất nghiệp hàng loạt? Đây là thách thức lớn của xã hội. Sẽ ngày càng ít công việc mà robot làm không tốt bằng con người. Đây không phải là điều mà tôi mong muốn xảy ra. Chỉ đơn giản là tôi nghĩ nó sẽ đến sớm thôi.”Elon Musk
Và hôm nay, Bill Gates đã đề xuất với chính phủ nên bắt đầu đánh thuế robot giống như cách chúng ta đánh thuế người lao động bình thường:
“Chúng ta đang bước qua giai đoạn thay đổi chớp nhoáng, rất nhiều công việc truyền thống đều bị thay thế cùng một lúc. Vì vậy, bạn biết đấy, công việc dọn kho, lái xe, dọn phòng và các công việc tương tự, chắc chắn sẽ biến mất trong 20 năm tới.”– ​​Bill Gates
Công việc đang biến mất nhanh hơn nhiều so với những gì mà bạn có thể tưởng tượng.
Trong năm 2013, các nhà hoạch định chính sách lờ đi lời cảnh báo của hai nhà kinh tế học Oxford rằng 45% của tất cả việc làm ở Mỹ có thể được tự động biến mất trong vòng 20 năm tới. Nhưng ngày hôm nay điều đó đã trở thành sự thật mà không thể tránh khỏi.

Nhân lực ngành vận tải và kho vận lên đến 5 triệu (Mỹ)

Những chiếc xe không người lái sẽ tiếp tục thay thế những tài xế.

Tình trạng hiện tại ở Mỹ, đó là:

  • 600,000 tài xế Uber
  • 181,000 tài xế taxi
  • 168,000 tài xế phương tiện công cộng
  • 505,000 tài xế xe bus trường học

Ngoài ra còn có khoảng 1 triệu tài xế xe tải ở Mỹ. Và Uber vừa mua một công ty xe tải tự lái.

Xe tự lái hợp pháp tại nhiều tiểu bang, chúng ta sẽ thấy cuộc cách mạng tự động hóa nhanh chóng trong công việc lái xe. Nếu chỉ với 30.000$ để trang bị xe tải tự động mà có thể thay thế cho tài xế xe tải với lương 40.000$ mỗi năm, thì sớm thôi một triệu tài xế xe tải sẽ bị thay thế.

Và robot không chỉ thay thế trong ngàng vận tải mà cả ngành kho vận cũng sẽ tự động hoá.

Tôi nên bạn nên bỏ ra 3 phút xem video này. Nó cho thấy thế nào mà một đội robot nhỏ có thể thay thế một số lượng lớn các công nhân kho vận.

Hiện vẫn còn một số người làm việc trong những nhà kho, nhưng nó cũng chỉ là vấn đề thời gian trước khi hệ thống tự động thay thế họ nốt.

8 triệu người Mỹ làm nhân viên bán hàng và thủ quỹ.

Nhiều lĩnh vực trong hai ngành này cũng sẽ sớm tự động hoá.

Amazon đang thử nghiệm một loại cửa hàng hầu như không có nhân viên. Bạn chỉ cần đi vào, lấy những gì bạn muốn và đi ra.

Phần lớn của kế hoạch bán hàng là tìm ra hoặc thậm chí dự đoán những gì khách hàng sẽ muốn.  Và, Amazon đạt doanh thu 136 tỷ $ năm ngoái, và “nhân viên bán hàng” của họ là thuật toán giới thiệu trên web. Hãy tưởng tượng tác động của Amazon trong bán lẻ khi họ áp dụng trí tuệ nhân tạo vào các cửa hàng sản nghiệp.

Nhân sự trong ngành nhà hàng ở Mỹ là 14 triệu

Nhật bản đã tự động hoá các hoạt động nhà hàng trong nhiều thập niên như dùng đặt đơn hàng, phục vụ thực phẩm, rửa chén, và thậm chí chuẩn bị bữa chính.

Và Mỹ hiện đang sở hữu một số nhà hàng tự động rất tốt.

Thậm chí có một công ty mà làm xe tải giao hàng mà trên đường đi vừa làm pizza để bánh luôn còn mới.

Tự động hóa là điều không thể tránh khỏi. Nhưng chúng tôi vẫn có thời gian để hành động và giúp người lao động chuyển đổi.

Tự động hóa đang được đẩy nhanh. Phần mềm của các robot trở nên mạnh mẽ hơn mỗi ngày. Chúng ta không thể thể ngăn cản nó. Nhưng chúng ta có thể thích ứng với nó.

Bill Gates đề nghị chúng ta đánh thuế “công nhân” robot để có thể thu lại khoản thuế của những người thất nghiệp.

Elon Musk khuyến cáo chúng ta áp dụng hỗ trợ thu nhập cơ bản và cung cấp cho tất cả mọi người một số tiền nhất định mỗi năm nhờ vậy chúng tôi có thể giữ cho nền kinh tế ổn định thậm chí là hàng triệu người lao động thất nghiệp do tự động hóa.
Tôi đề nghị chúng ta dùng một phần tiền của người đóng thuế để trợ cấp công nhân của ngành công nghiệp mà bây giờ chủ yếu là robot và thay vì đầu tư trong đào tạo công nhân cho các công việc kỹ thuật đang nổi lên.
Câu trả lời cho vấn đề tự động hóa có thể bao gồm việc ràng buộc với bên thứ ba. Nhưng chúng ta cần phải có hành động bây giờ, trước khi chúng tôi phải đối mặt với những thảm họa tồi tệ nhất của thất nghiệp kể từ cuộc Đại khủng hoảng.
Tôi chân thành khuyên bạn làm 3 điều:
  1. Tự học về tự động hóa và tác động kinh tế của nó. Đây là cuốn sách hay nhất về đề tài này.
  2. Nói chuyện với bạn bè và gia đình về tự động hóa. Chúng tôi không thể bỏ qua nó chỉ vì nó là đáng sợ và không thể đoán trước.Chúng ta cần phải có một tiếng nói chung để thống nhất sẽ làm gì trước khi công ty quyết định cuộc sống của chúng ta.
  3. Liên hệ với đại diện của bạn, yêu cầu họ trình bày cách giải quyết vấn đề về tự động hóa và thất nghiệp. Nói với họ, chúng ta cần đánh thuế robot, hỗ trợ thu nhập hoặc nhiều tiền đầu tư vào công nghệ giáo dục, những điều phù hợp với quan điểm chính trị của bạn.

Nếu chúng ta hành động bây giờ, chúng ta vẫn có thể giải quyết những thách thức tự động hóa và giúp hàng triệu người Mỹ thoát khỏi khó khăn.

Cảm ơn bạn đã đọc bài viết và quan tâm về việc này. Giúp tôi truyền tải về vấn đề quan trọng này mà các chính trị gia của chúng ta không ai lên tiếng. Chia sẻ bài viết này trên Facebook hoặc tweet trên Twitter.

Nguồn: topdev via Medium

Web Scalability 101: Biết giới hạn của hệ thống

Sau mấy tuần vật lộn với công việc sau Tết thì cũng có thời gian viết lách. Đây là bài viết về kỹ thuật đầu tiên của năm và là bài đầu tiên trong loạt bài chia sẻ về các chiến thuật scaling hệ thống web có tên là “Web scalability 101 (vỡ lòng)”.

Nếu quan tâm đến scale hệ thống, bạn có thể google những từ khóa liên quan đến scale, ngôn ngữ, công nghệ mà hệ thống bạn đang sử dụng, và phần lớn là các bài viết chỉ về các cài đặt, cấu hình cụ thể của một công nghệ nào đó như tùy chỉnh PHP thế nào, tùy chỉnh nginx, tùy chỉnh mysql ra sao…và có thể bạn sẽ lạc trong một mớ hỗn độn các kiến thức cấu hình này.

Mình không nói cách tiếp cận này là sai, nhưng nếu chỉ theo hướng này thì bạn sẽ không thể nào lường trước được khi tiếp cận công nghệ mới, hướng này là chưa đủ. Bạn cần một cách tiếp cận ở mức căn bản, nền tảng hơn và khi nắm được các kiến thức nền tảng thì mình nghĩ việc vì sao mình cấu hình php, mysql, nginx hoặc thay đổi kiến trúc sang microservice sẽ trông có vẻ rõ ràng và cụ thể hơn trước khi bắt tay vào triển khai. Và đó là mục tiêu của loạt bài “vỡ lòng” này.

Nội dung đầu tiên mà mình muốn chia sẻ và cực kỳ quan trọng khi bạn muốn bắt tay vào scale hệ thống, đó là phải biết được giới hạn của hệ thống hiện tại. Bởi vì chỉ khi bạn biết được giới hạn của hiện tại thì các nâng cấp, cải tiến sẽ mở rộng được giới hạn này và lượng hóa được khả năng của hệ thống trong tương lai. Có 2 loại giới hạn rõ ràng đó là giới hạn công nghệ và giới hạn của stack mà bạn đang sử dụng.

Giới hạn công nghệ

Nhóm này mình chia thành một số nhánh rõ ràng như là giới hạn của dung lương lưu trữ dữ liệu, tốc độ đọc ghi dữ liệu, tốc độ truyền dẫn dữ liệu và tốc độc xử lý dữ liệu. Biết được các giới hạn này sẽ giúp bạn dễ dàng tính toán được các giới hạn trần khi sử dụng một công nghệ nào đó. Ví dụ khi ghi dữ liệu vào ổ SSD của hãng X thì không thể nào nhanh hơn tốc độ A/s…

Giới hạn của công nghệ là thông tin khá dễ biết vì nó là các tiêu chuẩn của ngành hoặc 1 nhà sản xuất…Tùy theo nhu cầu của hệ thống bạn mà bạn sẽ quan tâm đến các số liệu nào. Mình không bàn nhiều về giới hạn này vì hầu như bạn không thể thay đổi các giới hạn này, trừ khi bạn là nhà chế tạo hoặc cải tiến các công nghệ hiện tại.

Bạn có thể tham khảo link sau với nội dung “Latency Numbers Every Programmer Should Know” (https://gist.github.com/jboner/2841832)

Giới hạn của stack

Các giới hạn này liên quan trực tiếp đến hệ thống mà bạn đang xây dựng. Ví dụ hệ thống của bạn một giây phục vụ được bao nhiêu request và có thể cải tiến được hơn nữa không. Áp dụng công nghệ X,Y,Z vào sẽ cải tiến được bao nhiêu…Việc đo đếm các giới hạn này không đơn giản và nếu một action của bạn lệ thuộc vào nhiều công nghệ, phần mềm thì việc cải tiến sẽ phức tạp hơn rất nhiều. Ví dụ 1 web request bạn có xử lý đụng đến đọc ghi dữ liệu database, đọc ghi file, gọi web service khác, tính toán thì việc cải thiện giới hạn bằng cách xem xét các thành phần cụ thể.

Tính toán giới hạn của web server

Ở đây mình sẽ lấy một ví dụ cụ thể về việc tính toán được giới hạn của web server sử dụng PHP và nginx để hình dung được bức tranh và có thể giúp ra quyết định scale. Cho đề bài sau:
– Bạn đang có 1 server có 2GB Ram
– Chạy 4 PHP worker process (xử lý đồng thời 4 request 1 thời điểm)
– Mỗi PHP worker process tốn 20MB Ram
– Mỗi request trung bình xử lý 100ms.
Câu hỏi: Mỗi giây server này phục vụ được tối đa bao nhiêu request. Và có thể nâng lên tối đa bao nhiêu request nếu không muốn đầu tư server cấu hình mạnh hơn.

Nếu mỗi request chiếm 100ms của process thì 1 giây mỗi process có thể phục vụ 10 request. Chúng ta có 4 process có nghĩa là mỗi giây chúng ta có 4×10 request có nghĩa là với cấu hình hiện tại, server này phục vụ tối đa 40 request. Nếu quá con số request này truy cập vào server thì các request sau sẽ chờ cho đến khi các request trước đó xử lý xong. Và tùy theo “ứng xử” của hệ thống, nếu chờ quá lâu thì sẽ bỏ/hủy request này và thông báo lại cho người dùng.

Để cải tiến được giới hạn này, chúng ta cần xem xét các thông tin tham gia vào bài toán. Hiện tại có 3 tham số khả dụng sẽ giúp cải tiến. Đó là số process có thể tăng thêm để tận dụng ram trống, vì hiện tại ram của server là 2G, giả sử dành 200M cho các xử lý khác của hệ thống thì còn thừa 1.8G (~1800MB Ram), như vậy, ta có thể tăng lên 1800/20=90 process. Theo như phần trước thì mỗi process xử lý được 10 request thì nếu có 90 process thì xử lý được 900req/s. Như vậy tăng gấp 22.5 lần so với cấu hình đầu.

Ở đây bạn sẽ thấy chưa cần làm gì, chỉ với việc thay đổi cấu hình là đã tăng khả năng phục vụ của hệ thống lên 20 lần. Giả sử team của bạn thấy mình hoàn toàn có khả năng giảm thời gian xử lý trung bình xuống còn 50ms/req, tức là tăng khả năng thêm gấp đôi nữa. Hoặc team bạn sử dụng công nghệ khác giúp tối ưu bộ nhớ của 1 process xuống trung bình còn 10MB Ram, tức là tăng thêm gấp đôi 1 lần nữa.

Lưu ý 1: để biết được dung lượng của 1 process, bạn có thể google để tìm câu lệnh trên linux để biết hoặc có thể đơn giản chạy câu lệnh top để xem process của bạn chiếm bao nhiêu memory.

Lưu ý 2: trong ví dụ trên giả sử bạn đang sử dụng MySQL để truy cập dữ liệu. Giả sử ở 40 req/s thì mysql hỗ trợ OK, nhưng khi lên 900req/s thì Mysql của bạn sẽ quá tải và có thể đã ngưng phục vụ ở 200req/s. Có nghĩa là con số 900 bạn không đạt được do giới hạn của mysql. Như vậy, bạn sẽ thấy bài toán sẽ cần giải thêm 1 cách khác để mở rộng hệ thống vượt ra ngoài con số 200req/s.

Lưu ý 3: đề bài trong ngữ cảnh là các con số trung bình (ram trung bình, thời gian trung bình), trong thực tế có thể có những request tốn nhiều ram hơn nhiều (vd: 500MB), xử lý lâu hơn trung bình rất nhiều (2000-3000ms/req) khiến cho các con số bị sai lệch cũng như treo hệ thống vì với cấu hình 90 process, nếu memory không cấp đủ thì xảy ra tình trạng swap ổ cứng, khiến cho hệ thống bị đơ đơ, nên không phải dùng hết ram cấp cho process là hiệu quả vì nó cũng đi kèm rủi ro hết ram. Đây là nguyên nhân chính vì sao mình phải cần nhiều server để chia tải cho toàn hệ thống.

Như vậy, với việc biết được các phụ thuộc của request thì mình sẽ có những hướng thay đổi, cải tiến phù hợp cho hệ thống. Bài viết này sẽ không đi sâu vào các cấu hình và các giả thuyết mình đặt ra nhằm giúp những bạn nào chưa có kinh nghiệm scale hệ thống hiểu được một phần câu chuyện. Việc đo đạc này sẽ giúp bạn biết được giới hạn của hệ thống, và bạn sẽ có các chiến lược scale khi hệ thống của bạn lên tới ngưỡng phục vụ cảnh báo (vd 80% giới hạn).

Bài tiếp theo mình sẽ nói về kiến trúc microservice sẽ giúp giải bài toán scale mysql như thế nào vì mysql là một trong những thành phần rất khó scale.

Nguồn: blog.topdev.vn via Techtalk via bloghoctap

Google AMP là gì ? Cài đặt AMP cho website asp.net mvc

Tìm hiểu AMP là gì?

APM viết tắt của Accelerated Mobile Pages là trang cho thiết bị di động được tăng tốc. Trang cho thiết bị di động được tăng tốc (AMP) là một sáng kiến mã nguồn mở để làm các web tải nhanh và có giao diện đẹp trên thiết bị di động, thậm chí khi mạng chậm.

Khi cấu trúc website của bạn thỏa điều kiện của AMP project, nó sẽ được tối ưu, từ đó tăng tốc độ load trang trên các thiết bị di động.

Các website đã tích hợp responsive hoặc có phiên bản dành cho mobile thì có cần tích hợp Google AMP nữa không? Website responsive chỉ thay đổi giao diện ở các màn hình khác nhau thôi nhưng bản chất cấu trúc HTML, dung lượng HTML, Javascript, Image đều không thay đổi. Để xem những kỹ thuật amp sử dụng bên dưới để có câu trả lời có nên tích hợp cho website của bạn không

Phân tích kỹ thuật của Google AMP

  • Google AMP sử dụng kỹ thuật lazyload hình ảnh
  • Google AMP sử dụng kỹ thuật tải javascript bất đồng bộ async
  • Google AMP sử dụng kỹ thuật cdn để javascript nhanh chóng

Để xem website mình có APM chưa thì vào Google Master Tool

screen-shot-2016-12-28-at-2-22-47-pm

Cách kiểm tra Google AMP:

screen-shot-2016-12-28-at-2-25-47-pm

Công cụ Web Interface https://validator.ampproject.org

screen-shot-2016-12-28-at-2-28-26-pm

Sử dụng trình duyệt Chrome: gõ link thêm “#development=1” vào đường link cần kiểm tra và ấn F12 chọn Tab Console

screen-shot-2016-12-28-at-2-28-55-pm

Hướng dẫn cài đặt cấu hình cho website amp:

Làm thế nào Google sẽ tìm các trang AMP của bạn? Google sẽ index trang AMP được định nghĩa như sau:

  • Không phải là AMP: phải khai báo cho google nhận dạng thông qua cấu trúc sau
  • Là trang AMP: phải khai báo cho google nhận dạng thông qua cấu trúc sau

The AMP HTML format Sample:

<!doctype html>
<html ⚡>
  <head>
    <meta charset="utf-8">
    <title>Sample document</title>
    <link rel="canonical" href="./regular-html-version.html">
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <style amp-custom>
      h1 {color: red}
    </style>
    <script type="application/ld+json">
    {
      "@context": "http://schema.org",
      "@type": "NewsArticle",
      "headline": "Article headline",
      "image": [
        "thumbnail1.jpg"
      ],
      "datePublished": "2015-02-05T08:00:00+08:00"
    }
    </script>
    <script async custom-element="amp-carousel" src="https://cdn.ampproject.org/v0/amp-carousel-0.1.js"></script>
    <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  <body>
    <h1>Sample document</h1>
    <p>
      Some text
      <amp-img src=sample.jpg width=300 height=300></amp-img>
    </p>
    <amp-ad width=300 height=250
        type="a9"
        data-aax_size="300x250"
        data-aax_pubname="test123"
        data-aax_src="302">
    </amp-ad>
  </body>
</html>

Các bạn có thể đọc thêm cách làm đầy đủ tại đây. Và xem thêm các theme về amp địa chỉ sau https://ampbyexample.com/

Xong khi làm xong những yêu cầu của google đặt ra thì cùng trải nghiệm xem kết quả đạt được

screen-shot-2016-12-28-at-2-29-56-pm

Kết quả tìm kiếm

screen-shot-2016-12-28-at-2-43-18-pm

Còn đây là màn hình sau khi click vào kết quả tìm kiếm

So sánh tốc độ google amp

Các bạn có thể tham khảo bài viết đo tốc độ website như thế nào. Hình ảnh bên dưới lần lượt là page bình thường và page sử dụng google amp

screen-shot-2016-12-28-at-2-43-49-pm

Ưu điểm:

  • Website sử dụng AMP sẽ được ưu tiên tăng thứ hạng trong kết quả tìm kiếm của Google trên thiết bị di động
  • AMP giúp tăng tốc độ tải trang so với trang web không cài AMP
  • Tốc độ tải trang nhanh hơn đồng nghĩa với việc tăng lượt truy cập trang web và kiếm được tiền quảng cáo nhiều hơn

Facebook cũng có tính năng tương tự là Facebook Instant Articles giúp việc đọc tin trên thiết bị di dộng nhanh như chớp.

Tham khảo thêm các vị trí tuyển dụng ASP.NEt lương cao cho bạn.

Techtalk via Matercode.vn