<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: VNTALKING.COM</title>
    <description>The latest articles on DEV Community by VNTALKING.COM (@vntalking_com).</description>
    <link>https://dev.to/vntalking_com</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F421268%2Ff701f69b-158d-499c-bf99-cd8b7074ce21.jpg</url>
      <title>DEV Community: VNTALKING.COM</title>
      <link>https://dev.to/vntalking_com</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vntalking_com"/>
    <language>en</language>
    <item>
      <title>API là gì? Ứng dụng phổ biến của Web API</title>
      <dc:creator>VNTALKING.COM</dc:creator>
      <pubDate>Wed, 16 Sep 2020 01:56:47 +0000</pubDate>
      <link>https://dev.to/vntalking_com/api-la-gi-ng-d-ng-ph-bi-n-c-a-web-api-4hbh</link>
      <guid>https://dev.to/vntalking_com/api-la-gi-ng-d-ng-ph-bi-n-c-a-web-api-4hbh</guid>
      <description>&lt;p&gt;Có thể bạn đã từng nghe tới API, public API hay private API đúng không? Đặc biệt là chúng thường được sử dụng bởi các công ty phần mềm khi nói về một ứng dụng, hệ điều hành hay một trang web.&lt;/p&gt;

&lt;p&gt;API được sử dụng mọi nơi, mang lại nhiều lợi ích to lớn, góp phần vào thúc đẩy việc phát triển phần mềm.&lt;/p&gt;

&lt;p&gt;Nhưng bạn đã bao giờ tự hỏi API là gì? Sử dụng API như nào? Tại sao phải dùng API?&lt;/p&gt;

&lt;p&gt;Bài viết này chúng ta sẽ cùng nhau tìm hiểu và đi tìm câu trả lời nhé.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đặc điểm của API
&lt;/h2&gt;

&lt;p&gt;Có nhiều cách nhìn và đánh giá đặc điểm của API. Dưới đây là một số đặc điểm mà mình đúc kết được.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API sử dụng mã nguồn mở, dùng được với mọi phần mềm hỗ trợ JSON/XML.&lt;/li&gt;
&lt;li&gt;API có khả năng hỗ trợ đầy đủ các thành phần của HTTP như: URI, header, caching…&lt;/li&gt;
&lt;li&gt;API là kiểu kiến trúc hỗ trợ tốt các thiết bị hạn chế băng thông như điện thoại, IoT…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nguồn: &lt;a href="https://vntalking.com/api-la-gi-ung-dung-pho-bien-cua-web-api.html"&gt;API là gì?&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Thuật toán sắp xếp nhanh (Quick Sort)</title>
      <dc:creator>VNTALKING.COM</dc:creator>
      <pubDate>Fri, 28 Aug 2020 08:50:10 +0000</pubDate>
      <link>https://dev.to/vntalking_com/thu-t-toan-s-p-x-p-nhanh-quick-sort-2e8d</link>
      <guid>https://dev.to/vntalking_com/thu-t-toan-s-p-x-p-nhanh-quick-sort-2e8d</guid>
      <description>&lt;p&gt;&lt;a href="https://vntalking.com/cau-truc-du-lieu-va-giai-thuat-5-thuat-toan-pho-bien.html"&gt;Thuật toán Quick Sort&lt;/a&gt; được phát triển bởi C.A.R&lt;/p&gt;

&lt;p&gt;Đúng như tên gọi, thuật toán sắp xếp nhanh là một thuật toán cho kết qua nhanh, gọn, nhẹ. Thuật toán này dựa trên việc chia một mảng thành các mảng nhỏ hơn.&lt;/p&gt;

&lt;p&gt;Nếu so với các thuật toán sắp xếp khác như Insertion Sort hay sắp xếp nổi bọt (Bubble Sort), thì thuật toán sắp xếp nhanh cho tốc độ nhanh hơn đáng kể.&lt;/p&gt;

&lt;p&gt;Thuật toán Quick sort là một thuật toán chia để trị (divide and Conquer Algorithm). Nó sẽ chọn một phần tử trong mảng làm điểm đánh dấu (pivot). Sau khi lựa chọn được điểm pivot, bước tiếp theo sẽ chia mảng thành nhiều mảng con dựa vào pivot đã chọn. Và lặp đi lặp lại như vậy cho đến khi kết thúc.&lt;/p&gt;

&lt;p&gt;Tốc độ của thuật toán bị ảnh hưởng bởi việc chọn pivot. Có nhiều cách chọn pivot, dưới đây là một số cách:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Luôn chọn phần tử đầu tiên của mảng làm pivot.&lt;/li&gt;
&lt;li&gt;  Luôn chọn phần tử cuối cùng của mảng.&lt;/li&gt;
&lt;li&gt;  Chọn ngẫu nhiên 1 phần tử trong mảng.&lt;/li&gt;
&lt;li&gt;  Chọn phần tử có giá trị nằm giữa mảng (median element).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Để mình họa cho thuật toán sắp xếp nhanh, chúng ta cùng thực hành một bài toán: Sắp xếp mảng sau theo thứ tự tăng dần: [10, 7, 8, 9, 1, 5]&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Quicksort example program in c++:
    #include&amp;lt;iostream&amp;gt;
    #include&amp;lt;cstdlib&amp;gt;

    using namespace std;

    // Swapping two values.
    void swap(int *a, int *b)
    {
        int temp; 
        temp = *a;
        *a = *b;
        *b = temp;
    }

    // Partitioning the array on the basis of values at high as pivot value.
    int Partition(int a[], int low, int high)
    {
        int pivot, index, i;
        index = low;
        pivot = high;

        // Getting index of the pivot.
        for(i=low; i &amp;lt; high; i++)
        {
            if(a[i] &amp;lt; a[pivot])
            {
                swap(&amp;amp;a[i], &amp;amp;a[index]);
                index++;
            }
        }
        // Swapping value at high and at the index obtained.
        swap(&amp;amp;a[pivot], &amp;amp;a[index]);

        return index;
    }

    // Random selection of pivot.
    int RandomPivotPartition(int a[], int low, int high)
    {
        int pvt, n, temp;
        n = rand();
        // Randomizing the pivot value in the given subpart of array.
        pvt = low + n%(high-low+1);

        // Swapping pivot value from high, so pivot value will be taken as a pivot while partitioning.
        swap(&amp;amp;a[high], &amp;amp;a[pvt]);

        return Partition(a, low, high);
    }

    int QuickSort(int a[], int low, int high)
    {
        int pindex;
        if(low &amp;lt; high)
        {
            // Partitioning array using randomized pivot.
            pindex = RandomPivotPartition(a, low, high);
            // Recursively implementing QuickSort.
            QuickSort(a, low, pindex-1);
            QuickSort(a, pindex+1, high);
        }
        return 0;
    }

    int main()
    {
        int n, i;
        cout&amp;lt;&amp;lt;"\nEnter the number of data elements to be sorted: ";
        cin&amp;gt;&amp;gt;n;

        int arr[n];
        for(i = 0; i &amp;lt; n; i++)
        {
            cout&amp;lt;&amp;lt;"Enter element "&amp;lt;&amp;lt;i+1&amp;lt;&amp;lt;": ";
            cin&amp;gt;&amp;gt;arr[i];
        }

        QuickSort(arr, 0, n-1);

        // Printing the sorted data.
        cout&amp;lt;&amp;lt;"\nSorted Data ";
        for (i = 0; i &amp;lt; n; i++)
                cout&amp;lt;&amp;lt;"-&amp;gt;"&amp;lt;&amp;lt;arr[i];

        return 0;
    }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Nguồn: &lt;a href="https://vntalking.com/cau-truc-du-lieu-va-giai-thuat-5-thuat-toan-pho-bien.html#1-thuat-toan-sap-xep-nhanh-quick-sort"&gt;https://vntalking.com/cau-truc-du-lieu-va-giai-thuat-5-thuat-toan-pho-bien.html#1-thuat-toan-sap-xep-nhanh-quick-sort&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vntalking</category>
      <category>quicksort</category>
    </item>
    <item>
      <title>Tài liệu machine learning</title>
      <dc:creator>VNTALKING.COM</dc:creator>
      <pubDate>Wed, 19 Aug 2020 13:42:50 +0000</pubDate>
      <link>https://dev.to/vntalking_com/tai-li-u-machine-learning-2oi6</link>
      <guid>https://dev.to/vntalking_com/tai-li-u-machine-learning-2oi6</guid>
      <description>&lt;p&gt;Khi bắt đầu học bất kỳ một lĩnh vực nào thì việc tìm tài liệu nghiên cứu là công đoạn không thể thiếu. Học machine learning cũng vậy. Tài liệu machine learning cơ bản là từ khóa mà mọi học viên nghĩ tới ngay trong đầu khi bắt đầu tiếp xúc với lĩnh vực này. &lt;/p&gt;

&lt;p&gt;Tuy nhiên, với người mới học lập trình sẽ gặp nhiều khó khăn để tìm tài liệu phù hợp.&lt;/p&gt;

&lt;p&gt;Do vậy, mình tạo bài viết này để tổng hợp các tài liệu machine learning cơ bản mà mình có cơ hội tiếp cận.&lt;/p&gt;

&lt;p&gt;Nguồn bài viết update tại đây: &lt;a href="https://vntalking.com/tai-lieu-machine-learning-co-ban.html"&gt;Machine learning cơ bản&lt;/a&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
    </item>
    <item>
      <title>iOS là gì? Lập trình iOS làm gì?</title>
      <dc:creator>VNTALKING.COM</dc:creator>
      <pubDate>Wed, 29 Jul 2020 15:01:56 +0000</pubDate>
      <link>https://dev.to/vntalking_com/ios-la-gi-l-p-trinh-ios-lam-gi-7nk</link>
      <guid>https://dev.to/vntalking_com/ios-la-gi-l-p-trinh-ios-lam-gi-7nk</guid>
      <description>&lt;p&gt;Có thể hiểu đơn giản, IOS là hệ điều hành có trong mỗi thiết bị di động của Apple, điển hình là trên chiếc điện thoại Iphone.&lt;/p&gt;

&lt;p&gt;Như các bạn đã biết, sự bùng nổ trên thị trường điện thoại, "Iphone" là dòng sản phẩm đang được săn đón vô cùng rộng rãi. Với tính năng vượt trội, cấu hình khủng, khả năng tối ưu hóa hiệu năng của thiết bị cũng như cảm nhận của người dùng là một lợi thế mà hệ điều hành IOS đã lại. Đã đem lại sự vượt trội cho hãng và vượt mặt nhiều đối thủ cạnh tranh trên thị trường. Từ đó, lập trình IOS đang cũng đang trở thành một xu hướng mới của giới trẻ và đang ngày càng mở rộng.&lt;/p&gt;

&lt;p&gt;Một trong những khó khăn lớn nhất ngăn cản bạn đến với nghề lập trình iOS chính là thiết bị. Để có thể bắt tay vào tìm hiểu ngôn ngữ lập trình này, bạn cần một chiếc máy tính chạy MAC OS.&lt;br&gt;
Điều đó hiện giờ là không mấy khó khăn khi chỉ cần trong tay có 5-7 triệu bạn đã sắm được ngay một dòng sản phẩm của thương hiệu này. Bên cạnh đó, để bắt đầu bạn cũng cần cho mình một chiếc điện thoại Iphone để có thể tìm hiểu về hệ điều hành IOS.&lt;/p&gt;

&lt;p&gt;Điều thứ 2, các bạn phải buộc học cho mình ngôn ngữ lập trình. Cũng như các ngôn ngữ khác trên thế giới dùng để giao tiếp, ngôn ngữ lập trình cũng vậy. Đó sẽ là công cụ quan trọng để bạn có thể giao tiếp với máy tính thông minh. Phải từ đó, bạn mới có thể đọc, hiểu và yêu cầu máy tính thực hiện các câu lệnh.&lt;/p&gt;

&lt;p&gt;Bước tiếp theo để trở thành một lập trình viên IOS, là bạn cần phải biết được các thao tác để lập trình. Tôi khuyên các bạn nên ,sử dụng các phần mềm như : TUTSPLUS, APPCODA. Đây đều là các trang wed chứa đựng nhiều thông tin về lập trình IOS, đủ để cung cấp kiến thức cho bạn từ cơ bản đến nâng cao. Ngoài ra có thể mua thêm các khóa giảng online, học offline qua youtube....&lt;/p&gt;

&lt;p&gt;Lưu ý: Khi &lt;a href="https://vntalking.com"&gt;học lập trình&lt;/a&gt; IOS, bạn có thể cảm thấy chán nản bởi việc học ngôn ngữ lập trình. Không những học IOS còn đòi hỏi tính tự giác cao, tự học là chính. Nhưng nếu vượt qua được thì thành quả sẽ rất đáng trông đợi, nhất là trong xã hội đang ngày càng lan tỏa mạng di động mobile cùng hàng tỉ ứng dụng yêu cầu trình độ chuyên viên.&lt;br&gt;
Nguồn: &lt;a href="https://vntalking.com/de-thanh-chuyen-gia-lap-trinh-ban-dau-can-toi-10000-gio.html"&gt;https://vntalking.com/de-thanh-chuyen-gia-lap-trinh-ban-dau-can-toi-10000-gio.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vntalking</category>
      <category>ios</category>
      <category>swift</category>
    </item>
    <item>
      <title>Docker là gì? Tìm hiểu Docker từ chưa biết gì tới biết dùng</title>
      <dc:creator>VNTALKING.COM</dc:creator>
      <pubDate>Wed, 01 Jul 2020 07:00:29 +0000</pubDate>
      <link>https://dev.to/vntalking_com/docker-la-gi-tim-hi-u-docker-t-ch-a-bi-t-gi-t-i-bi-t-dung-5bn1</link>
      <guid>https://dev.to/vntalking_com/docker-la-gi-tim-hi-u-docker-t-ch-a-bi-t-gi-t-i-bi-t-dung-5bn1</guid>
      <description>&lt;p&gt;Trong một lần mình tham gia dự án cloud, mình được một tiền bối bắt tìm hiểu Docker. Quả thật lúc đó mình chỉ nghĩ Docker giống như một máy ảo mà thôi. &lt;br&gt;
Nhưng có vẻ không đơn giản như thế. Vậy Docker là gì? Tại sao lại nên sử dụng Docker?&lt;br&gt;&lt;br&gt;
Chúng ta cùng nhau tìm hiểu trong bài viết này nhé.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker là gì?
&lt;/h2&gt;

&lt;p&gt;Docker là một nền tảng phần mềm ảo hóa hệ điều hành. Nó cho phép bạn dễ dàng tạo, triển khai và chạy ứng dụng trong các Docker container.&lt;br&gt;
Docker tạo các môi trường độc lập để chạy và phát triển ứng dụng. Môi trường này gọi là container.&lt;/p&gt;

&lt;p&gt;Đọc định nghĩa Docker có vẻ hơi lăng nhằng và khó hiểu đúng không?&lt;/p&gt;

&lt;p&gt;Để mình lấy một ví dụ cho dễ hiểu hơn. Giả sử bạn đang phát triển một ứng dụng bằng Node.js kết nối đồng thời 4 loại database: mongo, postgresql, redis, mysql.&lt;/p&gt;

&lt;p&gt;Lúc này, trên máy tính của bạn, môi trường để chạy ứng dụng đã sẵn sàng (bạn đã cài đặt Node.js, PM2, MongoDB, postgresql, redis, mysql). Khi triển khai dự án, bạn cũng phải cài đặt đầy đủ các phần mềm như lúc phát triển dự án.&lt;/p&gt;

&lt;p&gt;Quả thật hơi mất công đúng không?&lt;/p&gt;

&lt;p&gt;Thay vào đó, bạn đóng gói tất cả với Docker và chỉ cần chạy lệnh: docker-compose up trên server thật là được.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lý do sử dụng Docker?
&lt;/h2&gt;

&lt;p&gt;Trong vòng đời phát triển của phần mềm, lúc triển khai dự án ra môi trường thực tế luôn tiềm ẩn nhiều rủi ro. Tại sao lại như vậy?&lt;/p&gt;

&lt;p&gt;Bởi vì môi trường để phát triển ứng dụng luôn khác so với môi trường chạy ứng dụng trên thực tế. Do đó, người ta cố gắng xây dựng giải pháp để hai môi trường này càng giống nhau càng tốt. Đó là lý do ra đời Docker.&lt;/p&gt;

&lt;p&gt;Trong giai đoạn phát triển ứng dụng, việc có một môi trường giống với thực tế để test thì quả thật quá tuyệt vời. Bạn sẽ hạn chế được rất nhiều lỗi mà chỉ lúc chạy thật mới gặp.&lt;/p&gt;

&lt;p&gt;Đấy là chưa kể việc, bạn phát triển một ứng dụng và bán cho rất nhiều khách hàng. Thay vì cứ mỗi khách hàng, bạn lại phải “cài cắm” môi trường trên server khách hàng, lúc này bạn chỉ việc mang container docker đi cài một phát là xong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lợi ích của Docker là gì?
&lt;/h2&gt;

&lt;p&gt;Không phải tự nhiên Docker lại phổ biến và được các devOps ưu thích đến thế. Mình có thể kể một số lợi ích khi sử dụng Docker như sau:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tốc độ start và Stop một Docker rất nhanh. Nhanh hơn rất nhiều nếu dùng máy ảo.&lt;/li&gt;
&lt;li&gt;Dễ dàng cài đặt môi trường phát triển phần mềm. Chỉ cần bỏ công cấu hình một lần và không cần phải quan tâm cài đặt các dependencies sau này nữa. Sau này, khi handover dự án thì chỉ cần lấy config ra và đưa cho họ.&lt;/li&gt;
&lt;li&gt;Docker giữ máy tính làm việc được sạch sẽ. Bởi mỗi khi kết thúc một dự án, bạn có thể xóa nó đi mà không ảnh hưởng đến các phần khác.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trên đây chỉ là một vài lợi ích mà mình nghĩ ra đợi lúc này. Còn thực tế thì Docker nó còn nhiều lợi ích không thể cân đo đong đếm được, bạn cứ dùng là sẽ biết.&lt;br&gt;
Cơ chế hoạt động của Docker&lt;/p&gt;

&lt;p&gt;Để hiểu chi tiết cơ chế hoạt động của Docker cũng khá phức tạp, vì đây là cả một công nghệ đồ sộ. Tuy nhiên, mình tóm gọn lại được như sau: Docker hoạt động thông qua một Docker engine, kết hợp 2 yếu tố:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 server và 1 client.&lt;/li&gt;
&lt;li&gt;Giao tiếp giữa server và client thông qua REST API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trên hệ thống Window/Mac cũ, bạn có thể tận dụng Docker toolbox, nó cho phép điều khiển Docker engine bằng cách sử dụng Compose và Kitematic.&lt;/p&gt;

&lt;p&gt;Nguồn bài viết: &lt;a href="https://vntalking.com/docker-la-gi-tim-hieu-docker-tu-chua-biet-gi-toi-biet-dung.html"&gt;https://vntalking.com/docker-la-gi-tim-hieu-docker-tu-chua-biet-gi-toi-biet-dung.html&lt;/a&gt; &lt;/p&gt;

</description>
      <category>docker</category>
    </item>
  </channel>
</rss>
