Thứ Tư, 31 tháng 1, 2018

Tất Cả Những Điều Bạn Cần Biết Về big Data

 

phân tách nhiều dữ liệu chỉ là một phần của việc khiến phân tích big data khác với việc phân tách dữ liệu trước đây. Hãy cùng tìm hiểu các khía cạnh khác.

Có data, và sau đó có big data. Vậy, sự khác biệt là gì?

Big data được định nghĩa

Big data nhìn chung hệ trọng đến các tập dữ liệu có khối lượng lớn và phức tạp đến mức các phần mềm xử lý dữ liệu truyền thống không có khả năng thu thập, quản lý và xử lý dữ liệu trong một khoảng thời gian hợp lý.

 

Những tập dữ liệu lớn này có thể bao gồm các dữ liệu có cấu trúc, không có cấu trúc và bán cấu trúc, mỗi tập có thể được vỡ hoang để tìm hiểu insights.

Bao nhiêu dữ liệu để đủ gọi là ” big ” vẫn còn được tranh biện, nhưng nó có thể là các bội số của petabyte – và các dự án lớn nhất với phạm vi exabytes.

Big data thường đặc trưng với ba Vs:

  • Khối lượng dữ liệu
  • Nhiều loại dữ liệu đa dạng
  • véc tơ vận tốc tức thời mà dữ liệu cần phải được xử lý và phân tích

Dữ liệu tạo thành các kho dữ liệu lớn có thể đến từ các nguồn bao gồm các trang web, công cụ truyền thông tầng lớp, áp dụng dành cho máy tính để bàn và vận dụng trên thiết bị di động, các thử nghiệm khoa học, và các thiết bị cảm biến càng ngày càng tăng và các thiết bị khác trong internet (IoT).

Khái niệm big data đi kèm với các thành phần có hệ trọng cho phép các tổ chức đưa dữ liệu vào sử dụng thực tế và giải quyết một số vấn đề kinh doanh, bao gồm cơ sở hạ tầng IT cần thiết để tương trợ big data; các phân tích ứng dụng với dữ liệu; công nghệ cấp thiết cho các dự án big data; các bộ kĩ năng hệ trọng; và các trường hợp thực tiễn có ý nghĩa đối với big data.

Big data and analytics

Điều thực thụ mang lại giá trị từ các tổ chức dữ liệu lớn là phân tách dữ liệu. Nếu không có phân tách, nó chỉ là một tập dữ liệu với việc dùng hạn chế trong kinh dinh.

Bằng cách phân tách dữ liệu lớn, các công ty có thể có những lợi ích như tăng doanh thu, dịch vụ khách hàng được cải thiện, hiệu quả cao hơn và tăng khả năng cạnh tranh.

phân tách dữ liệu liên hệ đến việc thẩm tra bộ dữ liệu để thu thập thông tin chi tiết hoặc rút ra kết luận về những gì chúng chứa, chẳng hạn như các thiên hướng và dự đoán về hoạt động trong ngày mai.

Bằng cách phân tách dữ liệu, các tổ chức có thể đưa ra các quyết định kinh dinh tốt hơn như khi nào và ở đâu nên chạy chiến dịch tiếp thị hoặc giới thiệu một sản phẩm hoặc dịch vụ mới.

Sự phân tích có thể tham khảo các ứng dụng kinh doanh sáng ý hay tiền tiến hơn, phép phân tách dự đoán như ứng dụng được các tổ chức khoa học sử dụng. Loại phân tách dữ liệu cao cấp nhất là data mining , nơi các nhà phân tách đánh giá các bộ dữ liệu lớn để xác định mối quan hệ, mô hình và thiên hướng.

phân tích dữ liệu có thể bao gồm phân tách dữ liệu thăm dò ( để xác định các mẫu và mối quan hệ trong dữ liệu) và phân tách dữ liệu xác nhận ( vận dụng các kĩ thuật thống kê để tìm ra giả thiết về một bộ dữ liệu có đúng hay không).

Một mảng khác là phân tách dữ liệu định lượng ( hoặc phân tích dữ liệu số có các biến có thể so sánh theo thống kê) so với phân tích dữ liệu định tính ( hội tụ vào các dữ liệu không phải là dữ liệu cá nhân chủ nghĩa như video, hình ảnh và văn bản).

Cơ sở hạ tầng IT để tương trợ big data

Đối với khái niệm big data để làm việc, các tổ chức cần phải có cơ sở hạ tầng để thu thập và chứa dữ liệu, cung cấp quyền truy cập và đảm bảo thông tin trong khi lưu trữ và chuyển tiếp.

Ở cấp độ cao, bao gồm hệ thống lưu trữ và máy chủ được thiết kế cho big data, phần mềm quản lý và tích hợp dữ liệu, thông báo kinh dinh và phần mềm phân tách dữ liệu, và các ứng dụng big data.

đa số các cơ sở hạ tầng này sẽ tụ hợp một chỗ, vì các công ty muốn tiếp tận dụng các khoản đầu tư vào trọng tâm dữ liệu của mình. Nhưng ngày càng có nhiều tổ chức dựa vào các dịch vụ điện toán đám mây để xử lý nhiều yêu cầu big data của họ.

Thu thập dữ liệu đòi hỏi phải có nguồn. Rất nhiều trong số những áp dụng sau đây, như các áp dụng web, các kênh truyền thông tầng lớp, vận dụng di động và lưu trữ email đã được cài sẵn. Nhưng khi IoT trở thành phổ biến hơn, các công ty có thể cần phải khai triển cảm biến trên quờ quạng các loại thiết bị, phương tiện và sản phẩm để thu thập dữ liệu, cũng như các áp dụng mới tạo ra dữ liệu người dùng. ( phân tích dữ liệu theo định hướng IoT có các kỹ thuật và phương tiện chuyên biệt của nó.)

Để lưu trữ quơ các dữ liệu đến, các tổ chức cần phải có đủ dung lượng lưu trữ tại chỗ. Các tùy chọn lưu trữ bao gồm kho dữ liệu truyền thống, data lakes và lưu trữ trên đám mây.

Các công cụ cơ sở hạ tầng bảo mật có thể bao gồm việc mã hóa dữ liệu, chuẩn xác người dùng và các điều khiển truy cập khác, hệ thống giám sát, tường lửa, quản lý di động của doanh nghiệp và các sản phẩm khác để bảo vệ hệ thống và dữ liệu.

Big-data-specific technologies

Ngoài cơ sở hạ tầng IT được dùng cho dữ liệu nói chung, có một số công nghệ cụ thể dành cho big data mà cơ sở hạ tầng IT của bạn nên hỗ trợ.

Hệ sinh thái Hadoop

Hadoop là một trong những công nghệ can hệ chém nhất với big data. Dự án Apache Hadoop phát triển phần mềm mã nguồn mở cho máy tính có khả năng mở rộng và phân tán.

Thư viện phần mềm Hadoop là một khuôn mẫu cho phép xử lý phân tán các bộ dữ liệu lớn trên các nhóm máy tính sử dụng các mô hình lập trình đơn giản. Nó được thiết kế để mở rộng từ một máy chủ độc nhất sang hàng ngàn máy khác, mỗi máy cung cấp tính tình và lưu trữ cục bộ.

Dự án bao gồm rất nhiều phần:

  • Hadoop Common, các tiện ích phổ thông tương trợ các phần Hadoop khác
  • Hadoop Distributed File System, cung cấp khả năng truy cập dữ liệu áp dụng cao
  • Hadoop YARN, một khuôn mẫu cho kế hoạch làm việc và quản lý tài nguyên cụm
  • Hadoop MapReduce, một hệ thống dựa trên YARN để xử lý đồng thời bộ dữ liệu lớn.

Apache Spark

Một phần của hệ sinh thái Hadoop, Apache Spark là một khuôn mẫu tâm tính cụm nguồn mở được sử dụng làm phương tiện xử lý big data trong Hadoop. Spark đã trở nên một trong những khuôn mẫu xử lý big data quan trọng, và có thể được triển khai theo nhiều cách khác nhau. Nó cung cấp các buộc ràng bản địa đối với Java, Scala, Python (đặc biệt là Anaconda Python distro ), và ngôn ngữ lập trình R ( R đặc biệt thích hợp với big data ) và tương trợ SQL , streaming data, machine learning  xử lý đồ thị .

Data lakes

Data lakes là các kho lưu trữ chứa khối lượng dữ liệu thô rất lớn ở định dạng gốc của nó cho đến khi những người dùng doanh nghiệp cần dữ liệu. Các nguyên tố giúp tăng trưởng data lakes là những phong trào kỹ thuật số và sự phát triển của IoT. Các data lakes được thiết kế để giúp người dùng dễ dàng truy cập vào một lượng lớn dữ liệu khi có nhu cầu.

NoSQL Databases

Các cơ sở dữ liệu SQL thông thường được thiết kế cho các giao dịch đáng tin tưởng và các truy hỏi tình cờ, nhưng chúng có những hạn chế như giản đồ cứng nhắc làm cho chúng không phù hợp với một số loại vận dụng. Cơ sở dữ liệu NoSQL nêu ra những hạn chế, và lưu trữ và quản lý dữ liệu theo những cách cho phép tốc độ hoạt động cao và sự linh hoạt sạch. Nhiều cơ sở dữ liệu đã được phát triển bởi các công ty tìm cách tốt hơn để lưu trữ nội dung hoặc xử lý dữ liệu cho các trang web lớn. Không giống như các cơ sở dữ liệu SQL, nhiều cơ sở dữ liệu NoSQL có thể được mở mang theo chiều ngang trên hàng trăm hoặc hàng ngàn máy chủ.

In-memory databases

Cơ sở dữ liệu trong bộ nhớ (IMDB) là một hệ thống quản lý cơ sở dữ liệu cốt tử dựa vào bộ nhớ chính, thay vì đĩa, để lưu trữ dữ liệu. Cơ sở dữ liệu trong bộ nhớ nhanh hơn các cơ sở dữ liệu được tối ưu hóa trong đĩa, một điểm quan yếu để sử dụng phân tích big data và tạo ra các kho dữ liệu và các siêu dữ liệu.

Các kĩ năng big data

Big data và các gắng phân tách big data yêu cầu kĩ năng cụ thể, dù là từ bên trong tổ chức hay chuẩn y các chuyên gia bên ngoài.

Nhiều kĩ năng có liên tưởng đến các thành phần công nghệ dữ liệu quan yếu như Hadoop, Spark, NoSQL, cơ sở dữ liệu trong bộ nhớ và phần mềm phân tách.

Các lĩnh vực khác cụ thể là về các nguyên tắc như khoa học dữ liệu, vỡ hoang dữ liệu, phân tách thống kê và định lượng, hình dung dữ liệu, lập trình mục đích chung, và cấu trúc dữ liệu và các thuật toán. Ngoài ra cũng cần có những người có kĩ năng quản lý tổng thể để quản lý tiến độ của các dự án big data.

Với độ phổ quát của các dự án phân tách dữ liệu và sự thiếu hụt nhân lực về các kĩ năng trên, việc tầng các chuyên gia có kinh nghiệm có thể là một trong những thách thức lớn nhất đối với các tổ chức.

Các trường hợp sử dụng Big data

Big data và phân tích có thể được áp dụng trong nhiều vấn đề kinh dinh và nhiều trường hợp sử dụng khác nhau. Sau đây là vài thí dụ:

  • phân tích khách hàng. Các công ty có thể kiểm tra dữ liệu khách hàng để nâng cao trải nghiệm của khách hàng, cải thiện tỉ lệ chuyển đổi và giữ khách hàng tốt hơn.
  • phân tách hoạt động. Nâng cao hiệu quả hoạt động và dùng tốt hơn tài sản của công ty là đích của nhiều công ty. phân tích big data có thể giúp doanh nghiệp vận hành hiệu quả hơn và cải thiện hiệu suất.
  • gian ăn gian. phân tách dữ liệu có thể giúp các tổ chức xác định các hoạt động khả nghi, và các mẫu có thể chỉ ra hành vi ăn gian và giúp giảm thiểu rủi ro.
  • Tối ưu hóa giá cả. Các công ty có thể sử dụng phân tích big data để tối ưu hóa giá đặt cho sản phẩm và dịch vụ, giúp tăng doanh thu.

Thứ Ba, 30 tháng 1, 2018

10 bước giúp các developer newbies giải quyết bất kì vấn đề lập trình nào

Một số phản hồi tôi nghe từ các nhà phát triển mới vào nghề về vấn đề lập trình xoay quanh việc không biết bắt đầu từ đâu.
Bạn hiểu vấn đề, logic, cơ bản của cú pháp, v.v. Và nếu bạn thấy code của người khác hoặc có người hướng dẫn bạn, bạn có thể làm theo. Nhưng có thể bạn cảm thấy không chắc chắn về việc tự mình thực hiện và gặp rắc rối khi chuyển suy nghĩ của bạn thành code, mặc dù bạn hiểu cú pháp hoặc logic.
Ở đây, tôi sẽ trình bày quy trình của tôi để giải quyết một vấn đề mẫu. Hy vọng rằng, một số bạn sẽ thấy bài này hữu ích hỗ trợ hành trình lập trình của bạn.
1.Đọc vấn đề ít nhất ba lần
Bạn không thể giải quyết vấn đề mà bạn không hiểu. Có một sự khác biệt giữa vấn đề và vấn đề bạn nghĩ rằng bạn đang giải quyết. Thật dễ dàng để bắt đầu đọc vài dòng đầu tiên của một vấn đề và đặt giả thiết cho phần còn lại của nó bởi vì nó giống như một thứ bạn đã nhìn thấy trong quá khứ. Ngay cả khi bạn đang tạo ra một trò chơi phổ biến như Hangman, hãy chắc chắn đọc qua các quy tắc ngay cả khi bạn đã chơi nó trước đây. Tôi đã được hỏi một lần để làm một trò chơi như Hangman và chỉ nhận ra rằng đó là “Evil Hangman” sau khi tôi đọc qua các hướng dẫn (đó là một thủ thuật!).
Đôi khi, tôi thậm chí sẽ cố gắng giải thích vấn đề cho bạn bè và xem liệu họ có hiểu lời giải thích của tôi và đánh giá nó có phù hợp với vấn đề tôi được giao nhiệm vụ hay không. Bạn không muốn phát hiện ra rằng bạn hiểu sai vấn đề khi đã đi được nữa chặng đường. Dành thêm thời gian ở khoảng thời gian đầu là điều đáng làm. Bạn càng hiểu rõ vấn đề, bạn sẽ dễ dàng giải quyết được.
Hãy tưởng tượng chúng ta đang tạo ra một function đơn giản selectEvenNumbers đặt vào một mảng (array) các số và trả về một mảng số selectEvenNumbers chỉ có các số chẵn. Nếu không có số chẵn, nó sẽ trả lại kết quả là mảng rỗng.
Dưới đây là một số câu hỏi trong đầu tôi:
  • Làm thế nào máy tính có thể cho biết một số chẵn? Chia số đó cho 2 và xem phần còn bằng không.
  • Tôi chuyển vào function như thế nào? Một mảng ( array ).
  • Mảng đó chứa gì? Một hoặc nhiều số.
  • Các kiểu dữ liệu của các phần tử trong mảng là gì? Số.
  • Mục tiêu của chức năng này là gì? Tôi sẽ trả lại gì khi kết thúc function này? Mục đích là để lấy tất cả các số chẵn và trả lại chúng trong một mảng. Nếu không có số chẵn, hàm sẽ trả về một mảng trống.

    3. Xử lý các vấn đề thủ công với ít nhất ba bộ dữ liệu mẫu

Lấy ra một mảnh giấy và xử lý các vấn đề thủ công. Hãy nghĩ ra ít nhất ba bộ dữ liệu mẫu bạn có thể sử dụng. Đừng quên xem các trường hợp Corner Edge .
  • Trường hợp Corner: Một vấn đề hoặc tình huống xảy ra bên ngoài các thông số bình thường, đặc biệt khi nhiều biến môi trường hoặc các điều kiện xảy ra đồng thời ở mức cực cao, mặc dù mỗi tham số nằm trong phạm vi được chỉ định cho tham số đó.
  • Trường hợp Edge: Một vấn đề hoặc tình huống xảy ra chỉ ở một tham số cực trị (tối đa hoặc tối thiểu) hoạt động.
Dưới đây là một số bộ dữ liệu mẫu chúng ta có thể sử dụng:
Khi bạn lần đầu tiên bắt đầu, nó rất dễ dàng để vượt qua các bước. Bởi vì não của bạn có thể đã quen với các con số, bạn chỉ có thể nhìn vào một tập hợp các dữ liệu mẫu và kéo ra các con số như 2, 4, 6 và nhiều hơn nữa trong mảng mà không nhận thức đầy đủ về từng bước và mỗi bước bộ não của bạn đang giải quyết nó. Nếu điều này khó khăn, hãy thử sử dụng các bộ dữ liệu lớn vì nó sẽ ghi đè lên khả năng giải quyết vấn đề tự nhiên của bộ não của bạn chỉ bằng cách nhìn vào nó. Điều đó giúp bạn làm việc thông qua thuật toán thực tế.
Chúng ta hãy đi qua mảng đầu tiên [1]
  1. Nhìn vào phần tử duy nhất trong mảng [1] .
  2. Quyết định xem nó là số chẵn hay không. Nó không phải
  3. Lưu ý rằng không có nhiều phần tử trong mảng này.
  4. Xác định rằng không còn số chẵn nào trong mảng được cung cấp này.
  5. Trả lại một mảng trống.
Chúng ta hãy đi qua mảng 1, 2]
  1. Nhìn vào phần tử đầu tiên trong mảng [1, 2]
  2. Đó là 1.
  3. Quyết định xem nó có phải số chẵn hay không. Nó không phải.
  4. Nhìn vào phần tử tiếp theo của mảng.
  5. Đó là 2 .
  6. Quyết định xem nó có phải evenNumbers hay không. Nó đúng là evenNumbers .
  7. Thực hiện một mảng evenNumbers và thêm 2 vào mảng này.
  8. Lưu ý rằng không có nhiều phần tử trong mảng này.
  9. Trả lại mảng evenNumbers với số 2.
Đi qua một vài lần nữa. Lưu ý cách mà tôi đã viết về [1] thay đổi một chút từ [1, 2] . Đó là lý do tại sao tôi cố gắng đi qua một vài bộ khác nhau. Tôi có một số bộ chỉ với một phần tử, một số có thả nổi thay vì số nguyên, một số có nhiều chữ số trong một phần tử, và một số âm để an toàn.

3. Đơn giản hóa và tối ưu hóa các bước

Tìm các mẫu và xem liệu có bất kỳ điều gì bạn có thể khái quát hay không. Xem bạn có thể giảm bất kỳ bước nào hoặc nếu bạn đang lặp lại điều gì.
  1. Tạo một function selectEvenNumbers .
  2. Tạo một mảng rỗng mới evenNumbers khi bạn có thể lưu trữ các số chẵn nếu có.
  3. Đi qua từng phần tử trong mảng y [1, 2] .
  4. Tìm phần tử đầu tiên.
  5. Quyết định xem nó có phải là số chẵn bằng cách xem nó có chia hết cho hai. Nếu nó là số chẵn, thêm nó vào evenNumbers .
  6. Tìm phần tử tiếp theo.
  7. Lặp lại bước # 4.
  8. Lặp lại bước # 5 và # 4 cho đến khi không có thêm các phần tử trong mảng này.
  9. Trả lại array evenNumbers . bất kể nó có bất cứ điều gì trong nó.
Cách tiếp cận này có thể nhắc bạn về cảm ứng toán học bởi vì bạn:
  • Cho rằng nó đúng với n = 1 , n = 2 , ...
  • Giả sử nó đúng cho n = k
  • Chứng minh nó đúng với n = k + 1
  1. Viết pseudocode

Ngay cả sau khi bạn đã tạo ra các bước chung, viết pseudocode mà bạn có thể dịch thành code sẽ giúp xác định cấu trúc code của bạn và làm cho lập trình dễ dàng hơn nhiều. Viết dòng code giả lập theo dòng. Bạn có thể làm điều này trên giấy hoặc qua bình luận trong trình biên tập code của bạn. Nếu bạn mới bắt đầu và thấy các màn hình trống rùng rợn hoặc làm bạn bối rối, tôi khuyên bạn nên làm nó trên giấy.
Pseudocode thường không có các quy tắc cụ thể, đặc biệt là đôi khi tôi kết thúc bằng một số cú pháp từ một ngôn ngữ chỉ vì tôi đã quen với nó. Đừng theo đuổi cú pháp. Tập trung vào logic và các bước.
Đối với vấn đề của chúng tôi, có rất nhiều cách khác nhau để làm điều này. Ví dụ: bạn có thể sử dụng bộ lọc, nhưng để ví dụ này dễ dàng theo dõi tốt nhất, chúng tôi sẽ sử dụng một vòng lặp cơ bản cho bây giờ (nhưng chúng tôi sẽ sử dụng bộ lọc sau này khi chúng tôi tái cấu trúc code của chúng tôi).
Dưới đây là ví dụ về giả mã có nhiều từ hơn:
Dưới đây là ví dụ của pseudocode có ít từ hơn:
Dù bằng cách nào miễn là bạn đang viết nó ra và hiểu được logic trong mỗi dòng.
Hãy tham khảo lại vấn đề để chắc chắn rằng bạn đang đi đúng hướng.
  1. Dịch pseudocode thành code và debug

Khi bạn có sẵn pseudocode của bạn, dịch từng dòng thành mã thực bằng ngôn ngữ mà bạn đang làm việc. Chúng ta sẽ sử dụng Javascript cho ví dụ này.
Nếu bạn đã viết nó trên giấy, hãy viết như bình luận trong trình biên tập code của bạn. Sau đó, thay thế mỗi dòng trong pseudocode của bạn.
Sau đó tôi gọi function và cung cấp cho nó một số tập hợp dữ liệu mẫu mà chúng ta đã sử dụng trước đó. Tôi sử dụng chúng để xem nếu mã của tôi trả về kết quả tôi muốn hay không. Bạn cũng có thể viết bài kiểm tra để kiểm tra xem kết quả thực tế bằng với kết quả dự kiến hay không.



Tôi thường sử dụng console.log () sau mỗi biến hoặc dòng. Điều này giúp tôi kiểm tra xem các giá trị và code có hoạt động như mong đợi trước khi tôi tiếp tục. Bằng cách này, tôi phát hiện ra bất kỳ vấn đề nào trước khi tôi đi quá xa. Dưới đây là một ví dụ về những gì tôi sẽ kiểm tra trước khi bắt đầu. Tôi làm điều này thông qua mã của tôi khi tôi gõ ra.

Sau khi làm việc thông qua mỗi dòng pseudocode của tôi, dưới đây là những gì chúng tôi kết thúc. / / là các dòng trong pseudocode và văn bản in đậm là mã thực tế trong Javascript.
Sau đó tôi thoát khỏi pseudocode để tránh nhầm lẫn.

Đôi khi, các nhà phát triển mới sẽ gặp khó khăn với cú pháp mà nó sẽ trở nên khó khăn để tiếp tục. Hãy nhớ rằng cú pháp sẽ tự nhiên hơn theo thời gian và không cần ngại trong việc tham khảo tài liệu sao cho các cú pháp chính xác sau này khi mã hóa.
  1. Đơn giản hóa và tối ưu hóa mã của bạn

Bây giờ bạn có thể nhận thấy rằng đơn giản hóa và tối ưu hóa là các chủ đề lặp lại.
Trong ví dụ này, một cách để tối ưu hóa chức năng đó là lọc các khoản mục khỏi một mảng bằng cách trả về một mảng mới sử dụng filter . Bằng cách này, chúng ta không cần phải định nghĩa một biến evenNumbers nữa bởi vì bộ lọc sẽ trả về một mảng mới với các bản sao của các phần tử phù hợp với bộ lọc. Điều này sẽ không thay đổi mảng gốc. Chúng tôi cũng không cần phải sử dụng một vòng lặp với cách tiếp cận này. Bộ lọc sẽ đi qua từng khoản mục và trả về true (bao gồm phần tử đó trong mảng) hoặc false (bỏ qua phần tử trong mảng đó).



Đơn giản hóa và tối ưu hoá code của bạn có thể yêu cầu bạn phải lặp lại một vài lần, xác định các cách để đơn giản hóa và tối ưu hóa code.
Dưới đây là một số câu hỏi cần ghi nhớ:
  • Mục tiêu của bạn để đơn giản hóa và tối ưu hóa là gì? Mục tiêu sẽ phụ thuộc vào phong cách của nhóm hoặc sở thích cá nhân của bạn. Bạn đang cố gắng làm gọn code càng nhiều càng tốt? Là mục tiêu để làm cho code dễ đọc hơn? Nếu đó là trường hợp, bạn có thể thích dùng thêm dòng để xác định biến hoặc tính toán một cái gì đó hơn là cố gắng xác định và tính toán tất cả trong một dòng.
  • Làm thế nào khác bạn có thể làm cho code dễ đọc hơn?
  • Có thêm bất kỳ bước nào bạn có thể thực hiện được không?
  • Có bất kỳ biến hoặc function nào mà bạn đã kết thúc thậm chí không cần hoặc sử dụng?
  • Bạn có lặp lại một số bước rất nhiều? Xem nếu bạn có thể xác định trong một function khác.
  • Có những cách tốt hơn để xử lý các trường hợp edge?
  1. Debug

Bước này thực sự cần được áp dụng trong suốt quá trình. Debug toàn bộ sẽ giúp bạn phát hiện bất kỳ cú pháp lỗi hoặc khoảng trống trong logic sớm hơn hơn là sau này. Tận dụng lợi thế của môi trường phát triển tích hợp (IDE) và trình debug. Khi tôi gặp lỗi, tôi theo dõi các dòng mã theo dòng để xem nếu có bất cứ điều gì mà không đi như mong đợi. Dưới đây là một số kỹ thuật tôi sử dụng:
  • Kiểm tra bảng điều khiển để xem những gì thông báo lỗi nói. Đôi khi, nó sẽ chỉ ra một số dòng. Điều này cho tôi ý tưởng sơ bộ về nơi để bắt đầu – mặc dù vấn đề đôi khi không thể ở trong dòng này.
  • Nhận xét các khối hoặc các dòng mã và đầu ra mà tôi có cho đến nay để nhanh chóng xem code có hoạt động như tôi mong đợi hay không. Tôi luôn luôn có thể sửa lại code khi cần thiết.
  • Sử dụng dữ liệu mẫu khác nếu có những tình huống mà tôi không nghĩ đến và xem liệu code vẫn hoạt động hay không.
  • Lưu các phiên bản khác nhau của tệp nếu tôi đang thử một cách tiếp cận hoàn toàn khác. Tôi không muốn mất bất kỳ công việc của tôi nếu tôi chưa muốn kết thúc nó!
  1. Viết những lời bình luận hữu ích

Bạn có thể không nhớ mỗi dòng có ý nghĩa là gì một tháng sau đó. Và một người khác làm trên dòng code của bạn cũng không biết. Đó là lý do tại sao việc viết những nhận xét hữu ích rất quan trọng để tránh những vấn đề và tiết kiệm thời gian sau này nếu bạn cần quay lại làm.
Tránh xa những bình luận như:
// This is an array. Iterate through it.
// This is a variable
Tôi cố gắng viết những bình luận ngắn giúp tôi hiểu điều gì đang xảy ra nếu nó không hiển nhiên. Điều này có ích khi tôi đang làm việc với các vấn đề phức tạp hơn. Nó giúp tôi hiểu những gì một chức năng cụ thể đang làm và tại sao. Thông qua việc sử dụng các tên biến, tên chức năng và nhận xét rõ ràng, bạn (và những người khác) sẽ có thể hiểu được:
  • Code này dành cho cái gì
  • Nó đang làm gì
  1. Nhận phản hồi thông qua đánh giá code

Nhận phản hồi từ các đồng đội, giáo sư của bạn và các nhà phát triển khác. Kiểm tra Stack Overflow . Xem cách những người khác giải quyết vấn đề và học hỏi từ họ. Đôi khi, có một số cách để tiếp cận vấn đề. Tìm hiểu xem chúng là gì và bạn sẽ dần giỏi hơn và nhanh hơn trong việc tự tìm ra giải pháp.
  1. Thực hành, thực hành, thực hành

Ngay cả các nhà phát triển giàu kinh nghiệm, họ vẫn luôn thực hành và học tập. Nếu bạn nhận được phản hồi hữu ích, hãy thực hiện nó. Làm lại vấn đề hoặc làm những vấn đề tương tự. Tiếp tục thúc đẩy bản thân. Với mỗi vấn đề bạn giải quyết, bạn sẽ trở nên giỏi hơn. Đánh dấu mỗi thành công và nhớ kĩ bạn đã đi bao xa. Hãy nhớ rằng lập trình, giống bất cứ điều gì, đang ngày càng trở nên dễ dàng hơn và tự nhiên hơn.
Cảm ơn, Gavin Stark.

Thứ Sáu, 26 tháng 1, 2018

Những “bóng hồng” quyền lực trong ngành tiền ảo

Số phụ nữ trong lĩnh vực công nghệ hiện đang tăng lên nhanh chóng, nhưng con số này vẫn còn rất thấp. Mặc dù nó thay đổi theo từng lĩnh vực, tỷ lệ trung bình bạn sẽ tìm thấy những nữ founder chỉ là 5%.
Mặc dù con số về công nghệ là rất thấp nhưng hiện tại nó vẫn có vị trí tốt hơn khi so với lĩnh vực tiền ảo. Hiện nay, chỉ khoảng từ 5 đến 7% số người dùng là phụ nữ. Mặc dù những con số này thấp dựa trên rất nhiều yếu tố, điều đó vẫn thể hiện rằng phụ nữ cũng tham gia tích cực vào thế giới crypto.

Rachel Wolfson

Wolfson là một doanh nhân và nhà báo đã góp phần thúc đẩy sự phát triển của nền kinh tế tiền ảo. Đồng thời là một nhà báo cho HuffPost, các bài viết của cô ấy có phạm vi trải dài từ các lĩnh vực khác nhau có liên quan tiền ảo -cryptocurrency. Gần đây cô cũng bắt đầu viết cho Tạp chí Bitcoin.

Khi cô ấy không viết về bảo mật, cô ấy dành thời gian của mình làm tư vấn tiếp thị cho các công ty mới thành lập, tập trung chủ yếu vào blockchain và tiền ảo. Cô chuyên về đưa yếu tố con người vào công nghệ, điều mà chắc chắn là cần thiết trong lĩnh vực tiền ảo.

Meltem Demirors

Demirors là một thành viên của Digital Currency Group, cô giữ chức vụ Giám đốc Phát triển. DCG là một công ty đầu tư vào tiền ảo trong khi cũng xây dựng và hỗ trợ các công ty đang tìm kiếm để thay đổi tương lai tài chính. Tại DCG, Demirors giúp giữ mọi người trên cùng chí hướng trong khi cũng tạo ra những con đường mới để phát triển.

Với bằng Thạc sỹ Quản trị Kinh doanh của Trường Quản lý MIT Sloan và bằng B.A trong Toán học Kinh tế từ Đại học Rice, Demirors cũng là một thành viên của Hội đồng Global Future Council on Blockchain tại Diễn đàn Kinh tế Thế giới.

Ambre Soubiran

Với nền tảng về Marketing và 8 năm kinh nghiệm tại ngân hàng toàn cầu HSBC, Soubiran rất đam mê thị trường tài chính, tiền ảo và blockchain. Chính những niềm đam mê và sở thích khác nhau này đã dẫn đến sự ra đời của công ty Kaiko.


Được thành lập vào năm 2014, Kaiko đã được đặt tên theo một đơn vị thăm dò biển sâu từ trạm Mariana. Cũng giống như các tàu ngầm, Kaiko thu thập và lưu trữ thông tin tiền tệ kỹ thuật số có thể được mua bởi các công ty khác để giúp họ hiểu biết tốt hơn về thị trường.

Pamela Morgan

Được ít nói tới hơn nhưng cũng không kém phần quan trọng khi đối phó với thị trường tiền ảo, là luật pháp. Morgan là một luật sư hiểu được điều đó và đã lập ra Empowered Law, một công ty luật chuyên về mật mã số, giúp giải quyết các tranh chấp về tài sản kỹ thuật số.


Morgan cũng là người sáng lập và giám đốc điều hành của Third Key Solutions . Third Key hoạt động với cả cá nhân lẫn doanh nghiệp với mục tiêu bảo vệ tài sản kỹ thuật số của họ tốt hơn. Họ cũng giúp các nhà đầu tư chuẩn bị cho kế hoạch tương lai – bao gồm các vấn đề bất động sản, thừa kế và các vấn đề tương tự khác.

Anastasia Shvetsova


Cô quan tâm đến thế giới của tiền ảo kể từ những ngày đầu của Bitcoin, Shvetsova là một chuyên gia trong quan hệ công chúng, giúp đỡ rất nhiều công ty công nghệ cao. Trong thời gian gần đây, sự quan tâm của cô đến crypto cũng đã dẫn tới việc thu hút được nhiều khách hàng hơn trong lĩnh vực này như Blackmoon Crypto. Cô đã giúp những công ty mới thành lập này tăng hàng chục triệu đô la và thực hiện được mục tiêu họ đề ra.

Thứ Ba, 16 tháng 1, 2018

Tổng hợp các thư viện, xu hướng phát triển của JavaScript trong năm 2018

trước nhất, để cho bạn dễ mường tượng thì có thể hiểu rằng software đang thống trị thế giới. Trong đó, web là vua của software, mà JavaScript thì tạo nên web. Đó là khuynh hướng diễn ra trong những học lập trình viên quốc tế năm gần đây. Cho đến khi 2018 xuất hiện đánh dấu việc React “nuốt trọn” JavaScript.

2018: Năm của React

React vừa chiến thắng cuộc đua về độ phổ biến trong năm 2017. D ù vẫn còn rất nhiều developer đang dùng Angular code bases:
Nhưng với việc React liên tục dành được cảm tình của người dùng, nó nhanh chóng tăng tốc bỏ xa đối thủ.

Vue.js là gì? Có vẻ Hot

Vue.js đã có một năm thành công trong 2017 và được nhiều người quan tâm kì vọng. Và đúng như tôi đã dự đoán, Vue.js cũng chẳng thể nào lung lay được vị trí của React trong năm cũ và có lẽ cũng sẽ không có thay đổi gì trong 2018. Tuy vậy nó vẫn có khả năng chiến thắng Angular trong 2018:
Bạn có thể thấy Vue.js đang ngày càng thu hẹp khoảng cách giữa mình và Angular:.


Trong khi đó React vẫn giữ vững ngôi vương với tốc độ phát triển vượt bậc:


Vue.js vẫn đang phát triển nhanh hơn React. Thế thì nó có gì khác so với React vs Angular vào năm 2017?
Đó là trong cuối năm 2016, thế giới JavaScript đã sẵn sàng cho một framework mới. Cùng lúc đó, người sử dụng Angular trở nên vô cùng khổ sở trong khi React user lại rất hài lòng do đó, có rất nhiều người muốn học React và rất ít người muốn học Angular. Vào cuối năm 2017, sự hài lòng của người dùng Angular ở mức 49%.
Câu chuyện trở nên rất khác nhau đối với React vs Vue.js. React đang đánh bại Vue.js trong sự hài lòng của người dùng (93% đến 90%). Nguyên nhân chính khiến nhiều người bỏ React hồi vào đầu năm 2017 là do sự nhầm lẫn đối với giấy phép React. Facebook đã nghe người dùng và chuyển giấy phép.
Ở giai đoạn này, tôi chỉ đơn giản là không thấy bằng chứng thuyết phục rằng thị trường được thúc đẩy chuyển từ React sang bất kỳ đthứ gì khác. Vue.js sẽ có nhiều thời gian hơn để ăn cắp người dùng từ React hơn là họ đang ăn cắp người dùng từ jQuery và Angular.
Có rất nhiều cơ hội cho Vue.js để thu hút được rất nhiều người dùng Angular và jQuery, nhưng có thể họ sẽ vấp phải một bức tường gạch khi họ bắt đầu ăn cắp người dùng từ React để tiếp tục chuỗi tăng trưởng.
Tôi dự đoán sự tăng trưởng của Vue.js sẽ mạnh mẽ trong một hoặc hai năm nữa, tiếp theo là một trận chiến với React ở vị trí đầu tiên và Vue.js sẽ không chiến thắng trừ khi có một sự thay đổi lớn làm mất cân bằng.

Công việc

React hoàn toàn thổi bay jQuery và mở màng cho một kỉ nguyên mới.

So với năm ngoái:

Điều thực sự thú vị trong những biểu đồ này là các thư viện khác cũng đã phát triển nhiều hơn jQuery. Tổng số công việc mở rộng đề cập đến một khuôn khổ front-end đã tăng hơn 10k so với năm ngoái.
Với mức tăng trưởng việc làm hiện nay, chúng ta cũng nhận thấy mức lương trung bình cũng tăng: $ 110k so với $ 93k vào cuối năm 2016. Lạm phát trong cùng kỳ chỉ ở dưới 2%, chỉ chiếm một tỷ lệ nhỏ trong mức lương đẩy mạnh.
Rõ ràng, nó vẫn là thị trường khá màu mỡ cho ứng cử viên vào năm 2018.

Các Framework nổi bật

Sau khi xem xét số liệu của năm nay, tôi sẵn sàng đề nghị sử dụng React cho hầu hết các trường hợp phát triển ứng dụng chung, bao gồm các ứng dụng dành cho thiết bị di động (PWAs, React Native), các ứng dụng web, hầu hết các ứng dụng văn phòng và ứng dụng sản xuất nội dung phương tiện truyền thông trên máy tính để bàn (xem Electron ).
Các trường hợp ngoại lệ đáng chú ý trong trường hợp một số thứ khác có thể phục vụ bạn tốt hơn bao gồm: Các trang tiếp thị có qui mô lớn, trò chơi 3D, AR / VR. Đối với nội dung 3D, hãy thử Unity, Unreal hoặc PlayCanvas.
Tôi đánh giá rất kĩ tất cả các frameworks năm nay. Và điều này không có nghĩa là chúng không tốt, chỉ không phải là đối thủ của React trong thị trường việc làm. Hãy nhớ rằng, danh sách này là về việc học ROI chứ không phải là công nghệ nào là “tốt nhất”.

Vì sao ai cũng quan tâm tới React?

Duyệt qua các danh sách công việc React, tôi nhận thấy một xu hướng thú vị – rất nhiều trong số đó là cho những thứ mà chúng tôi không nghĩ là công việc web front-end:
React Native (đối với phối cảnh, có nhiều lỗ hổng hơn so Vue.js)
React cho IoT
React cho AR / VR (với Oculus Rift dẫn đầu chi phí tuyển dụng)
React về điều máy tính mơ hồ mà bạn chưa bao giờ nghe
Tính linh hoạt là một trong những điểm mạnh nhất của React. Không giống như nhiều framework khác, việc xài React không bắt buộc phải lo tới data model, hoặc thậm chí browser hoặc DOM. Trên thực tế, tôi đã tìm thấy một số danh sách công việc React mà lại không có đề cập đến JavaScript.
React cũng cung cấp một hệ sinh thái phong phú và sôi động dựa trên các tiêu chuẩn de facto của React – điều mà thế giới JavaScript chưa từng thấy kể từ khi plugin jQuery cai trị web.
Câu hỏi không còn là “Framework nào?”
Câu hỏi đặt ra là “công nghệ nào tốt nhất với React?”
Không có gì đủ soán ngôi React vào năm 2018 (thậm chí có thể là năm 2019). Chúng ta có một framework tuyệt vời để xây dựng các ứng dụng ngay bây giờ, cũng như có một hệ sinh thái tuyệt vời giải quyết xung quanh React.

Bạn nên học những chủ đề nào?

React tuyệt vời là bởi 2 điều:
Deterministic view renders
Tóm tắt view layer khỏi trực tiếp DOM
Với điều đó trong tâm trí, đây là một số chủ đề bạn nên học:

Libraries & Tools

  • React
  • Redux
  • Redux-Saga để quan lí async I/O và cô lập các phản ứng phụ.
  • Next.js  — SSR với Node & Express, automatic bundle splitting, styled-jsx
  • Material UI
  • Storybook
  • Cheerio cho unit testing React components
  • Lodash Import chỉ những thứ bạn cần để tránh tăng bundle size.
  • Babel : sử dụng để compile ES6 để chạy những browsers cũ hơn.
  • Webpack : Bundler phổ biến nhất cho việc tìm kiếm JavaScript chuẩn cho các ví dụ về kit/boilerplate config
  • ESLint: Phát hiện syntax errors và style issues từ sớm. Sau code review và TDD, điều tuyệt vời thứ 3 là giảm bớt bug trong code.
  • Ramda
  • Node & Express
  • RxJS

Những công nghệ nổi bật trong 2018

Chúng bao gồm:
  • Progressive Web Apps (PWAs)
  • Blockchain & fintech
  • Medical technology
  • AR/VR
  • 3D printing
  • AI
  • Drones
Máy tính lượng tử cũng sẵn sàng để biến đổi thế giới nhưng sẽ là trong vài năm nữa. Hiện có các máy tính lượng tử đang hoạt động trên mạng, nhưng chúng không thể làm được nhiều. Vẫn còn quá sớm để hầu hết các nhà phát triển thậm chí bắt đầu thử nghiệm hiệu quả. Microsoft gần đây đã công bố ngôn ngữ lập trình Q # cho điện toán lượng tử. Trong khi đó, IBM và Google cũng tiếp tục đầu tư nhiều để sở hữu thị trường điện toán lượng tử phôi thai.
Nếu bạn muốn được chuẩn bị để học máy tính lượng tử, bạn sẽ muốn nghiên cứu về đại số tuyến tính. Ngoài ra còn có các khám phá chức năng của tính toán lượng tử dựa trên phép toán lambda.

Thứ Ba, 9 tháng 1, 2018

Java dù được sửa lỗi vẫn chưa an toàn

Tương lai mờ mịt của tê giác Java

I. Bản cập nhật OS X mới gỡ Java khỏi trình duyệt

Để đáp ứng nhu cầu phát triển, bộ phận chúng tôi cần tuyển 03 lập trình viên Java/J2me trên mobile biểu lộ công việc:- Nghiên cứu và phát triển các áp dụng java/j2me và các dự án có liên tưởng;- bẩm công việc định kỳ cho trưởng phòng;Yêu cầu:- Đã tốt nghiệp Đại học hoặc tương đương can hệ đến CNTT;- dùng thành thạo ngôn ngữ JAVA;- Tối thiểu 1 năm kinh nghiệm lập trình java trên mobile (J2me);- Đã có các sản phẩm (ứng dụng/game) trên mobile là một lợi thế lớn;- Có kinh nghiệm sử dụng ít nhất 1 hệ quản trị cơ sở dữ liệu như MySQL, MS SQL, Oracle… là một lợi thế;- Có kinh nghiệm làm áp dụng Client-Server, Socket là một lợi thế;- Có kinh nghiệm dùng j2me Polish framework, LWUIT (Lightweight UI Toolkit) là một lợi thế;- Khả năng tư duy, học hỏi nhanh;- Kỹ năng đọc/viết tài liệu kỹ thuật bằng tiếng Anh;Quyền lợi ứng viên:- Được làm việc với các hệ thống lớn hàng đầu của Việt nam;- Làm việc trong môi trường năng động, nhiều thử thách, có dịp được đào tạo nâng cao nghiệp vụ thẳng tắp;- Được cung cấp các trang thiết bị hiện đại, laptop, máy tính cá nhân chủ nghĩa. Đối tượng nhảy xuống sông bỏ trốn sang Trung Quốc, vật chứng bị thu giữ là 15 cá thể giội Java đặc biệt quý hiếm. Không biết sau lần “yêu cầu” sắp tới đây, Excellence có chịu “nghe lời” hay vẫn chứng nào tật nấy? Phạm Thanh. Theo thống kê của hãng bảo mật Sophos thì các lỗ hổng bảo mật trên Java chiếm đến 90% những vụ tấn công trực tuyến năm ngoái, tương đương 12.

Tình bạn giữa các nhãi ranh có nhẽ được truyền cảm hứng từ mối quan hệ gắn bó của các mẹ. Khác với tê ngưu châu Phi, kẻ săn trộm hầu như chơi có thời cơ để tiếp cận với tê ngưu Java vì chúng được các kiểm lâm thiết lập màng lưới bảo vệ khá chém đẹp. Theo ông Trần Quang Phương, quản lý chương trình CPCP: “Đây là một trong những tín hiện khả quan trong công tác bảo tàng trút tại Việt Nam cũng như trên thế giới bởi thường nhật giội có tỷ lệ sống sót khá thấp trong điều kiện nuôi nhốt nhưngvới sự hỗ trợ kịp thời của các cơ quan chức năng tỉnh Ninh Bình, số cá thể hồ hết số động vật được cứu hộ và bình phục thành công và được tái thả sớm hơn so với dự kiến. Để tải áp dụng Java mới về máy tính, bấm vào đây. Tôi cũng chẳng có thời gian để ngơi nghỉ vì ngay sau khi sinh, các thầy thuốc bắt đầu giải thích về những rủi ro của ca giải phẫu. Phần mềm ma này ẩn náu dưới áp dụng RedBrowser với lời lăng xê cho phép người dùng điện thoại truy cập các dịch vụ WAP mà không cần kết nối với trình duyệt này.

II. Phòng Thương mại điện tử tuyển lập trình viên .NET/JAVA

Tại hòn đảo Java, một hiện tượng phun trào bùn đất thiên nhiên được gọi là “núi lửa bùn” đã vấn rất đông du khách đến tham quan trong suốt nhiều năm qua. Gần ba tháng trước, Britney cũng nhuộm đen mái tóc “vàng hoe” đặc trưng của mình, tiếp đó đến lượt Cameron Diaz. Sau một tháng được cứu hộ, giội có tiến triển tốt về sức khỏe cũng như ý thức, nhiều cá thể tăng từ 1 đến 1,5 kg. Sammy Arkinstall, du khách Anh san sẻ trên Twitter: “Tôi còn quá trẻ để chết”. Các hãng Samsung, Panasonic, LG, Sendo, Samsung, Siemens và đương nhiên cả Nokia cũng đều khẳng định như vậy vì hiện thời có khoảng 25 triệu thiết bị cầm tay chạy trên nền Series 60 được người dùng dùng. Siêu mẫu người Đức 34 tuổi này đã là mẹ của 3 đứa con nhưng cô vẫn chan chứa tự tin khi là một trong những “chân dài” kiếm được nhiều tiền nhất trên thế giới.

Các nhà bảo tàng quốc tế hy vọng có thể tăng số lượng tê giác Java, cùng loài với con tê giác đánh dấu sự tuyệt diệt ở Nam Cát Tiên. Con tê ngưu Java này có tên khoa học là rhinoceros sondaicus annamiticus hay còn gọi là tê ngưu một sừng được cho là tuyệt diệt ở khu vực Đông Nam Á. Không cần quan tâm các thí sinh khác thế nào, thể hiện tốt nhất khả năng của em là được!”. Phát hiện đối tượng lái đò trên sông có nhiều biểu đạt nghi vấn, lực lượng chức năng phối hợp tiến hành áp sát.Sun là công ty đóng góp lớn nhất thế giới cho cộng đồng mã nguồn mở. Tìm các Video về người đẹp Heidi Klum tại Baamboo.

III. VCCorp tuyển PHP, Java developer

Không sở thú nào trên thế giới, ngay cả các chương trình nhân giống có thể tạo ra tê giác Java. Ảnh: K' LiệpTheo một cán Học lập trình Java

Thứ Hai, 1 tháng 1, 2018

Hiểu sâu về trí tuệ nhân tạo & Machine Learning tại Apple

Nhiều khả năng, thước đo xác thực nhất cho sự tiến bộ của Machine Learning tại Apple đến từ cộng cuộc mua lại AI quan yếu nhất từ trước đến nay, Siri. Nguồn gốc của Siri chính là chương trình DARPA tham vọng liên hệ đến các trợ lý sáng ý. Sau đó, 1 số scientists đã thành lập công ty riêng, sử dụng chương trình DARPA để phát triển thành ứng dụng. Steve Jobs đã tự mình thuyết phục những người sáng lập bán DARPA lại cho Apple vào năm 2010 và trực tiếp đưa Siri vào hệ thống điều hành. Sau đó, màn ra mắt của Siri chính là điểm nhấn trong sự kiện ban bố iPhone 4S (10/2011). Giờ đây, cách thức hoạt động của Siri đã tiên tiến đến nỗi users không cần phải kích hoạt nó bằng nút home hay thậm chí không cần nói “Hey, Siri” (1 tính năng tận dụng công nghệ Machine Learning, giúp iPhone nghe ngóng được thông báo mà không hao tốn pin). Trí thông minh của Siri đã được tích hợp vào Apple Brain và tự hoạt động dù users không trực tiếp mở lời ra lệnh.

 

 

Eddy Cute chỉ ra 4 nguyên tố cốt lõi của Siri chính là: nhận mặt giọng nói (để hiểu được thời khắc nào bạn trò chuyện với Siri), khả năng hiểu ngôn ngữ tự nhiên (để nắm bắt những gì bạn đang nói), execution (để thực hành truy hỏi hoặc request) và phản hồi (để đáp lại với bạn). “Machine Learning có sức ảnh hưởng đáng kể đến hết thảy các nhân tố đó” – Eddy Cue nói.


Tom Gruber – Trưởng Bộ phận Phát triển Siri Cấp Cao (hình trên) và Alex Acero – Chuyên viên nghiên cứu Giọng nói (hình dưới)

Tom Gruber – người đến với Apple ưng chuẩn thương vụ xác nhập trên (các đồng sáng lập cùng thời với Gruber rời đi sau năm 2011) cho rằng thậm chí trước khi Apple vận dụng neural nets vào Siri thì quy mô user base của Apple đã cung cấp nguồn dữ liệu dùng để “huấn luyện” các nets về sau. “Steve Jobs nói rằng tôi đang có 1 bước ngoặt lớn, từ 1 người đi đầu, 1 áp dụng đến với hàng trăm triệu users mà không hề sở hữu 1 chương trình beta nào. Cứ thế, bạn tự dưng sở hữu rất nhiều users. Users sẽ nói với bạn cách mọi người bàn tán về những gì hiệp với vận dụng của bạn. Đây chính là bước phát triển trước nhất. Và sau đó, neural networks đã xuất hiện”

Quá trình chuyển đổi sang neural net xử lý nhận diện giọng nói của Siri được thực hành khi rất nhiều chuyên gia AI gia nhập Apple, trong đó có Alex Acero. Acero đã bắt đầu sự nghiệp với nhận mặt giọng nói tại Apple trong những năm đầu 90 và sau đó dành nhiều năm làm việc tại Microsoft Research. “Tôi rất yêu thích công việc đó và đã xuất bản nhiều bài viết. Nhưng khi Siri ra đời, tôi nhận ra: Đây là dịp để biến các deep neural networks thành hiện thực, không phải là thứ hàng trăm người sẽ đọc, mà là thứ được hàng triệu người sử dụng”. Nói cách khác, Alex Acero là 1 kiểu scientist mà Apple đang tìm – tối ưu hóa sản phẩm hơn là tụ hợp vào publishing.

Khi Acero đến “nhà táo” cách đây 3 năm, Apple vẫn đang cấp giấy phép cho hầu hết công nghệ giọng nói cho Siri từ bên thứ 3. Federighi bảo đây là 1 pattern mà Apple nghiên cứu liên tiếp. “Khi 1 lĩnh vực công nghệ có đóng góp quan yếu cho sản phẩm trong thời gian dài, chúng tôi sẽ xây dựng đội ngũ in-house để truyền tải được kinh nghiệm mà user muốn. Để tạo ra 1 sản phẩm tiệt, chúng tôi muốn sở hữu và đổi mới công nghệ đó hơn nữa bằng nguồn lực nội bộ. Speech là 1 thí dụ ngoại lệ khi chúng tôi ứng dụng các tài nguyên bên ngoài có sẵn, nhờ đó đạt được hiệu quả tốt ngay từ đầu”

Từ đây, team bắt đầu huấn luyện neural net để thay thế nguyên bản của Siri. “Chúng tôi có GPU (graphics processing unit microprocessor – 1 bộ vi xử lý chuyên dụng nhận nhiệm vụ tăng tốc, xử lý đồ họa cho bộ vi xử lý trọng tâm CPU) lớn nhất và tệ nhất… Và rất nhiều dữ liệu”. Lần ra mắt của Siri vào 7/2014 đã cho thấy sờ soạng hoạt động đó không hề vô ích.

“Tỷ lệ mắc lỗi của Siri giảm… hầu hết là nhờ deep learning và cách chúng tôi tối ưu deep learning – không chỉ nhờ chính thuật toán mà còn nhờ context của cả thảy sản phẩm end-to-end”

Nói về “end-to-end”, Apple không phải là công ty đầu tiên dùng DNNs trong nhận diện giọng nói. Nhưng bằng cách kiểm soát quờ quạng hệ thống delivery, Apple lại có lợi thế riêng. Vì Apple tự tạo chips riêng nên Acero có thể làm việc trực tiếp với đội ngũ thiết kế silicon và các kĩ sư viết firmware cho các thiết bị để tối ưu hiệu suất của neural net. Nhu cầu của Siri team thậm chí còn ảnh hưởng đến thiết kế của iPhone.

“Không chỉ là silicon” – Federighi chia sẻ – “Đó chính số lượng những microphones chúng tôi đặt trong thiết bị, là nơi chúng tôi đặt microphones. Cách chúng tôi điều chỉnh hardware, những mics đó và software stack xử lý audio. Chúng trở thành những mảnh ghép gắn kết với nhau – 1 lợi thế không tưởng so với các doanh nghiệp phải xây dựng 1 vài phần mềm nào đó, và chỉ biết ngồi xem chuyện sẽ xảy đến”.

Một góc cạnh khác: Khi 1 Apple neural net hoạt động trong 1 sản phẩm, nó có thể trở thành 1 công nghệ cốt lõi dùng cho những mục đích khác. vì vậy, khi Machine Learning tương trợ Siri thấu hiểu user, Machine Learning đã trở thành dụng cụ dùng để xử lý chính tả thay thế cho typing. Hệ quả là, users nhận ra thông điệp và emails của họ trở nên mạch lạc hơn nếu họ không sử dụng bàn phím mềm; dần dần, users sẽ nhấn vào microphone key và chuyện trò nhiều hơn.

nguyên tố thứ 2 của Siri mà Eddy Cue đề cập chính là khả năng hiểu được ngôn ngữ thiên nhiên (natural language understanding). Siri bắt đầu sử dụng Machine Learning để hiểu được hoài vọng của người dùng kể từ tháng 11/2014 và ra mắt 1 phiên bản học sâu hơn 1 năm sau đó. thời điểm Siri sở hữu tính năng nhận diện giọng nói thì Machine Learning đã có kinh nghiệm trong việc phiên dịch các dòng lệnh linh hoạt hơn. Eddy lấy iPhone của mình ra, kích hoạt Siri làm ví dụ. “Thông qu áp dụng Square Cash, gửi đến Jane 20 dollars”. Màn hình lúc này sẽ phản ảnh hết thảy request của Cue. Eddy Cue thử 1 lần nữa, nhưng thay đổi ngôn từ 1 chút. “Bắn 20 bucks đến vợ của tôi”. Kết quả vẫn tương tự.

Nếu không có các tiến bộ về Siri, Apple sẽ chẳng thể liên tiếp ra mắt Apple TV – thiết bị nổi bật với tính năng quản lý giọng nói tân tiến. Tuy các phiên bản trước đây của Siri yêu cầu bạn nói 1 cách hạn chế thì phiên bản supercharged-nhờ-deep-learning không chỉ mang đến những lựa chọn chuyên biệt từ rất nhiều catalog về movies và bài hát, mà còn giải quyết các concepts như: Hãy cho tôi 1 bộ phim kinh dị có Tom Hanks (Nếu Siri thật sự sáng dạ, nó sẽ trả về kết quả The Da Vinci Code). “Trước khi có công nghệ supercharged-nhờ-deep-learning, bạn sẽ chẳng thể cung cấp được tính năng này” – Federighi đề cập.

Với iOS 10, được ra mắt vào mùa thu năm nay, giọng nói của Siri đã trở thành nhân tố rút cuộc trong 4 yếu tổ được chuyển đổi bởi machine learning. Về thực chất, dấu ấn của Siri đến từ database gồm các bản thu thanh thu thập được tại voice center; mỗi câu nói là sự chắp vá từ các bản thu thanh này. Theo Gruber, Machine Learning khiến mọi thứ trở thành mượt mà hơn và giúp âm thanh Siri giống người thực hơn.

Acero đã thực hiện 1 phiên bản demo đâu tiên na ná giọng của Siri với các nhân tố robot quen thuộc. Phiên bản này sẽ hỏi bạn bằng 1 chất giọng hấp dẫn lưu loát: “Hi, tôi có thể làm được gì cho bạn?”. Điểm dị biệt ở đây là gì? Chính deep learning!

Mặc dù chỉ là 1 chi tiết nhỏ, nhưng khi sở hữu 1 giọng nói thiên nhiên hơn, Siri có thể đem đến những dị biệt lớn. “Mọi người sẽ thấy tin hơn nếu giọng nói có chất lượng cao hơn. Giọng nói càng thu hút người dùng thì càng khiến users sử dụng nhiều, góp phần tăng hiệu ứng hồi lại (return effect)”

Việc sử dụng Siri cũng như thực hành những cải tiến trên Machine Learning của Apple càng có nhiều ý nghĩa hơn khi rút cuộc, Apple cũng mở Siri cho lập trình viên. Tuy nhiên với các chuyên gia thì quy trình này vẫn xảy ra quá muộn vì số lượng đối tác Siri bên thứ 3 mà Apple sở hữu chỉ dừng lại vài chục, trong khi Alexa của Amazon đã có hơn 1000 “kỹ năng” được cung cấp bởi các lập trình viên bên ngoài. Apple lại cho rằng điều này không kéo dài vì users của Amazon phải sử dụng tiếng nói riêng để tiếp cận các kĩ năng đó. Theo Apple, Siri sẽ tích hợp những thứ như SquareCash hoặc Uber 1 cách thiên nhiên hơn (1 đối thủ khác, Viv - được 1 vị đồng sáng lập Siri tạo nên – cũng hẹn quy trình tích hợp chặt dù chưa công bố ngày ra mắt cụ thể)

Cùng lúc đó, Apple cũng thông báo rằng những cải tiến của Siri đang dần tạo ra sự khác biệt nhờ vào những tính năng mới hoặc thu được các kết quả tốt hơn từ những tầm nã thân thuộc. “Số lượng requests vẫn đang tăng và tăng. Tôi nghĩ Apple đang thực hành tốt hơn công việc truyền thông bít tất những gì chúng tôi làm. thí dụ, tôi thích thể thao và bạn có thể hỏi Siri ai là người mà nó nghĩ sẽ chiến thắng trận bóng, nó sẽ trả lại cho bạn 1 đáp án. Tôi còn không biết là Apple có thể làm được điều đó nữa cơ!” – Eddy Cue san sẻ.

Có thể vấn đề lớn nhất khi Apple ưng ý Machine Learning chính là cách để đạt được thành công dù vẫn cam kết những nguyên tắc bảo mật người dùng. Apple đã mã hóa thông tin users để không ai, kể cả các trạng sư của Apple có thể đọc được (kể cả FBI dù có lệnh nhà tù từ tòa án). Apple cũng không hề thu thập thông báo người dùng nhằm mục đích lăng xê.

hẳn nhiên đứng từ giác độ người dùng thì rất đáng khen ngợi nhưng sự nghiêm chỉnh quá mức của Apple với vấn đề bảo mật này vẫn chưa mang lại hiệu quả trong việc lôi kéo các nhân kiệt AI về với công ty. “tuốt tuột những gì mà các chuyên gia Machine Learning mong muốn đó chính là dữ liệu” – 1 nhân viên cũ của Apple, hiện đang làm cho công ty về AI cho biết – “Nhưng vì lập trường bảo mật mà Apple thường lặng thầm làm mọi thứ. Bạn có thể sẽ tự hỏi liệu đó có phải là điều đúng đắn nhưng cũng chính điều đó khiến Apple trở nên nổi tiếng vì đã không trở nên những kẻ chạy đua theo công nghệ AI”

Quan điểm này bị các nhà điều hành của Apple tranh biện rất nhiều vì họ cho rằng: vẫn có thể lấy được quơ các dữ liệu và tận dụng mạnh mẽ phương tiện Machine Learning mà không cần phải giữ thông báo cá nhân chủ nghĩa của users trên cloud, thậm chí cũng không cần lưu lại hành vì của user để huấn luyện cho neural nets.

Có 2 vấn đề ở đây. Thứ nhất, chính là việc xử lý thông tin cá nhân trong các hệ thống dựa trên Machine Learning. Khi thông tin chi tiết về 1 user được nhặt nhạnh qua hệ thống xử lý neural-net, chuyện gì sẽ xảy ra với thông tin đó? Thứ hai, việc thu thập thông báo đòi hỏi phải huấn luyện các neural-nets nhận mặt hành vi. Nhưng làm thế nào để làm được điều đó mà không thu thập thông báo cá nhân chủ nghĩa của users?

Apple đã có câu giải đáp cho cả 2 vấn đề. “Một số người nhận thức được chúng tôi không thể thực hành những điều này với AI vì chúng tôi không có data. Nhưng chúng tôi đã tìm ra cách để lấy dữ liệu mà chúng tôi cần nhưng vẫn giữ được tính bảo mật. Đó chính là điểm mấu chốt”

Apple đã giải quyết vấn đề đầu tiên – bảo vệ thị hiếu và thông tin cá nhân mà neural nets đã nhận diện được – bằng cách tận dụng khả năng quản lý cả phần mềm và phần cứng độc quyền. Nói 1 cách đơn giản, đó chính là Apple Brain. “Chúng ta giữ lại 1 vài thông tin mẫn cảm nhất khi Machine Learning quét qua tất cả thiết bị” – Federighi nói. ví dụ, Federighi cứ liệu các suggestions ứng dụng, icons xuất hiện khi bạn quét sang phải cũng chính những vận dụng mà bạn định sẽ mở ra tiếp theo. Các dự đoán như thế được hình thành dựa trên rất nhiều nhân tố và rất nhiều trong số chúng liên tưởng đến hành vi của riêng người dùng. Theo Federighi, 90% thời kì con người dùng để tìm những gì họ muốn nhờ các những suggestions.

thông báo khác mà Apple lưu trữ trên các thiết bị có thể là dữ liệu mang tính cá nhân chủ nghĩa nhất mà Apple thu thập được: những từ ngữ mà users gõ bằng bàn phím iPhone QuickType standard. Nhờ có hệ thống neural network theo dõi thời điểm bạn gõ chữ, Apple sẽ phát hiện được các events và items chính như thông báo chuyến bay, số giao thông và lịch hẹn – nhưng các thông tin đó lại nằm trong điện thoại của bạn. Thậm chí trong các backups lưu trên cloud của Apple, thông báo được sàng lọc để backup chẳng thể đụng đến. “Chúng tôi không muốn thông báo đó được lưu trữ trong servers của Apple. Một tổ chức như Apple không có nhu cầu tìm hiểu về thói quen của bạn hay địa điểm bạn sẽ đến”

Apple cũng nỗ lực giảm số lượng thông tin được giữ lại. Federighi đề cập đến thí dụ như sau: khi bạn có 1 cuộc đối thoại và ai đó nói đến 1 thuật ngữ có thể trở nên từ khóa khoảng tiềm năng, các doanh nghiệp khác sẽ phải phân tích tất cuộc đối thoại trong cloud để nhận diện những thuật ngữ đó nhưng 1 thiết bị Apple có thể nhận diện được chúng mà không cần phải lấy data ra khỏi quyền sở hữu của người dùng. Hệ thống của Apple sẽ liên tục kiếm các kết quả thích hợp theo knowledge base (thông tin chung) trong điện thoại (1 phần của “brain” 200 megabyte)

“Thao tác này rất gọn nhẹ nhưng được thực hiện xuyên suốt knowledge basse, với hàng trăm ngàn locations và entities….” quờ quạng áp dụng của Apple đều sử dụng knowledge base (thông tin chung) như app tầng Spotlight, Maps và Safari. Knowledge base còn tương trợ cả auto-correct.

Nhưng liệu những quy định bảo mật nghiêm ngặt của Apple có gây trở lực cho các thuật toán neural net hay không – đó chính là vấn đề thứ 2 đã được đề cập trước. Neural nets cần 1 lượng lớn dữ liệu để được train đầy đủ, xác thực. Nếu Apple không can thiệp vào hành vi của bít tất người dùng, vậy làm sao để lấy được dữ liệu đó? Như nhiều công ty khác đã làm, Apple huấn luyện nets của mình trên các tập thông báo công khai có sẵn (tỉ dụ như bộ thông báo gồm các stock images để nhận diện hình ảnh). Nhưng thỉnh thoảng, nó cần nhiều thông báo chi tiết hơn hoặc cập nhật hơn, mà những thông tin này chỉ có thể đến từ user base. Apple đã thay lấy thông báo này mà không cần biết đến users đó là ai; Apple ẩn dữ liệu, gắn nó với các mã nhận mặt ngẫu nhiên không liên kết với Apple IDs.

Bắt đầu từ iOS 10, Apple dự kiến sẽ tuyển 1 công nghệ khá mới tên là Differential Privacy. Công nghệ này dựa vào thông tin của đám đông và không nhận mặt bất cứ cá nhân chủ nghĩa nào. Chẳng hạn Diffential Privacy sẽ tìm các từ khóa lừng danh mới nhất không có trong knowledge base của Apple hoặc tự vị của Apple, thường xuất hiện bất thần dựa trên rất nhiều đáp án liên quan đến các truy tìm hoặc lượt dùng các emojis nào đó tăng cao. “Cách thức truyền thống mà giới công nghệ giải quyết vấn đề này chính là gửi đi mọi từ, mọi kí tự mà bạn gõ lên servers, sau đó sẽ rà soát tuốt tuột và phát hiện những thông tin thích” – Federighi biểu đạt. “Nhờ thực hiện mã hóa end-to-end, chúng tôi sẽ không làm theo cách thức truyền thống đó”. Dù Differential Privacy được phát triển trong cộng đồng research, Apple đang dần dần áp dụng nó trên diện rộng. “Chúng tôi đang thực hành khảo sát trên 1 tỷ users” – Eddy Cue san sớt.

“Chúng tôi đã bắt đầu nghiên cứu công nghệ này từ nhiều năm trước và đã hoàn tất nhiều sản phẩm hay, có tính thực tại. chừng độ bảo mật của nó thực rất đáng kinh ngạc” – Federighi (sau đó anh ấy biểu đạt 1 hệ thống can dự đến các protocols mã hóa và tung đồng xu ảo mà tôi không theo dõi kịp. Về cơ bản, công nghệ này liên hệ đến việc thêm phương tiện toán học vào những phần nào đó của dữ liệu để Apple có thể phát hiện các usage patterns dù không nhận mặt các users cá nhân chủ nghĩa). Anh cũng đề cập đóng góp của Apple rất có giá trị đối với thế giới vì nó cho phép các scientists làm việc với quy trình implementation, từ đó có thể xuất bản bài viết về công trình cá nhân.

Rõ ràng, Machine Learning đã thay đổi các sản phẩm của Apple nhưng liệu Machine Learning có đang thay đổi Apple hay không?. Ở góc cạnh nào đó, mindset về Machine Learning chừng như dị biệt với các tập quán xưa nay của Apple. Apple là 1 công ty kiểm soát cẩn thận trải nghiệm người dùng, kể cả các cảm biến dự đoán thao tác quét của users. Mọi thứ được thiết kế trước và được xây dựng các đoạn code 1 cách chính xác. Nhưng khi các kĩ sư ứng dụng Machine Learning, họ phải lùi lại, để chính phần mềm tự khám phá các hướng giải quyết. Liệu Apple có ưng ý thực tế là các hệ thống Machine Learning có thể tiếp cận đến thiết kế sản phẩm?

“Thiết kế sản phẩm là cội nguồn của rất nhiều cuộc tranh cãi nội bộ. Chúng tôi thường mang đến các trải nghiệm đã được lên kế hoạch & giám sát chu đáo, từ đó chúng tôi cs thể quản lý tất tật các hướng đi mà hệ thống đang dự định tương tác với người dùng. Khi bạn bắt đầu huấn luyện 1 hệ thống dựa trên lượng dữ liệu hành vi người dùng lớn, [các kết quả xuất hiện] không nhất mực là những gì mà 1 Apple designer chỉ định. Chúng là những gì xuất hiện từ dữ liệu”

Nhưng với Schiller, “Tuy những công nghệ này ảnh hưởng lớn đến cách thiết kế nhưng đến chung cuộc, chúng tôi mới là người sử dụng những công nghệ này vì chúng có thể giúp chúng tôi đem đến 1 sản phẩm chất lượng hơn”

Và đây là kết luận: Apple có thể không nói rõ về những gì họ đang với Machine Learning nhưng công ty sẽ tận dụng Machine Learning nhiều nhất có thể nhằm cải thiện các sản phẩm của mình. bằng cớ chính là “bộ não” bên trong điện thoại của bạn.

“Khách hàng thường ngày đang trải nghiệm deep learning mỗi ngày [và đây chính là ví dụ] cho thấy tại sao bạn lại yêu mến 1 sản phẩm nào đó của Apple. [Ví dụ] thú nhận nhất chính là deep learning khôn khéo đến nỗi bạn thậm chí còn không biết về nó cho đến lần thứ 3 khi thấy nó, bạn sẽ dừng lại và tự hỏi: Điều gì đang xảy ra?”

Đào tạo Java