Tag Archives: algorithm

Đừng hỏi “có nên học cái này cái kia không” nữa!!!

Hôm trước, mình đã làm một bài chửi về việc lười làm bài tập, thích ăn sẵn: Thực trạng học lập trình của sinh viên Việt Nam.

Hôm này, sau khi đi dạo vòng quanh Facebook, đọc nhiều câu hỏi khiến mình cảm thấy buồn bực, ngứa ngáy tay chân. Do vậy, mình viết bài này để chửi thêm một phát về thói lười học và… ngại học.

Bạn nào đọc mà thấy nhột nhột thì cứ nhủ: Chắc thằng Code Dạo nó chừa mình ra nhé :))

Continue reading Đừng hỏi “có nên học cái này cái kia không” nữa!!!

Advertisements

Series Phản Phác Quy Chân – Thuật toán sort nào nhanh nhất??

Mình rất ít khi viết bài về thuật toán. Lý do không phải vì mình …. dốt thuật toán mà vì bản thân mình thấy nó hơi khô khan. Vả lại, phần lớn thuật toán đã được dạy kĩ càng trong trường đại học nên mình cũng không muốn dạy lại những thứ các bạn đã biết rồi.

Tuy nhiên, hôm nay mình nổi hứng phá lệ một bữa, chúng ta sẽ cùng “phản phác quy chân”, bàn luận về một trong những thuật toán phổ biến nhất: thuật toán sắp xếp!

Chuyện thanh niên lập trình viên FA

Hãy tưởng tượng, bạn phải lòng một em gái mặt xinh ngực khủng chân dài cùng lớp lập trình (Tất nhiên điều này là hư cấu vì ngành này gái đã hiếm, gái ngực khủng chân dài lại càng hiếm).

Sau một hồi thả thính qua lại, bạn quyết định tỏ tình thì nàng bảo “Anh trả lời đúng câu hỏi thì này em sẽ đồng ý”. Vốn tự tin, bạn vỗ ngực bảo “Ok, em cứ hỏi đi!”.

Nàng nhẹ hỏi một câu hỏi đơn giản: “Thuật toán sắp xếp nào là nhanh nhất vậy anh?”. Trả lời đúng thì cuộc sống nở hoa, trả lời sai là vạn kiếp bất phục!

Ảnh minh hoạ bạn nữ cùng lớp (Gốc: Jade Raymond – Một trong các nữ lập trình viên sexy hiếm hoi ngành game)

Liệu bạn sẽ trả lời thế nào? Xem hết bài viết sẽ rõ.

Continue reading Series Phản Phác Quy Chân – Thuật toán sort nào nhanh nhất??

Series Nhận diện Idol: Phần cuối – Từ Demo tới Deploy – Hoàn chỉnh ứng dụng

Toàn bộ series Nhận diện Idol:

Kết thúc phần trước, chúng ta đã Oauth WebTask để viết xong RestAPI của ứng dụng theo kiến trúc Serverless. Ở phần cuối này, chúng ta sẽ sử dụng AngularJS để tạo một ứng dụng Web đơn giản.

Nếu chưa sử dụng AngularJS bao giờ, hãy đọc bài viết này để có đủ kiến thức cơ bản AngularJS để làm theo hướng dẫn nhé: http://sangplus.com/angular-js-101-gioi-thieu-ve-angularjs.html

Viết code HTML

Mở IDE ưa thích của bạn lên để bắt đầu code nào. Ta tạo 3 file index.html, script.jsstyle.css cùng thư mục nhé.

screen-shot-2017-01-17-at-2-25-34-pm

Continue reading Series Nhận diện Idol: Phần cuối – Từ Demo tới Deploy – Hoàn chỉnh ứng dụng

Series Nhận diện Idol: Phần 6.2 – Từ Demo tới Deploy, viết RestAPI cho ứng dụng với WebTask

Toàn bộ series Nhận diện Idol:

Sau khi đọc phần trước, bạn đã hiểu được khái niệm serverless. Ở phần này, chúng ta sẽ biến hàm recognize đã viết ở phần 5 thành một RestAPI. Với cách thông thường, ta sẽ dùng NodeJS để viết một ứng dụng rồi deploy nó lên 1 server nào đó (Xem ví dụ phần 3 bài deploy chatbot).

Tuy nhiên, lần này chúng ta sẽ dùng kiến trúc Serverless, chỉ viết code và để bên thứ 3 lo các phần server và deploy. Sau khi đã có RestAPI này, ta viết 1 ứng dụng web nho nhỏ, dùng API này để nhận diện VAV idol. Sản phẩm cuối cùng: http://jav-idol.toidicodedao.com/vav/

Continue reading Series Nhận diện Idol: Phần 6.2 – Từ Demo tới Deploy, viết RestAPI cho ứng dụng với WebTask

Series Nhận diện Idol: Phần 6.1 – Luận về Serverless – Vô Thai Kiếm

Toàn bộ series Nhận diện Idol:

Như đã nói trong bài đầu của series, mình áp dụng kiến trúc serverless trong thiết kế hệ thống. Kiến trúc này giúp ứng dụng có thể đáp ứng hàng triệu người truy cập với giá thành vô cùng rẻ. Trước khi bắt tay vào code, ta hãy cùng tìm hiểu khái niệm và kiến trúc Serverless nhé.

Serverless là cái chi chi?

Serverless được dùng để chỉ 2 khái niệm khác nhau (nhưng lại khá liên quan với nhau):

  1. Một số ứng dụng chuyển phần lớn logic về front-end, không có server để làm back-end (serverless)  mà chỉ sử dụng các API của bên thứ 3 để thay thế. Ví dụ trong Nhận diện Idol, mình không viết code trên server mà dùng API của Cloudinary upload ảnh và Firebase để hiển thị realtime. Nhiều ứng dụng di động cũng dùng kiến trúc này (Backend as a Service – BaaS).
  2. Một số trường hợp khác, lập trình viên phải tự viết code để làm back-end. Với mô hình client-server thông thường, ta phải thuê server rồi deploy ứng dụng lên server. Với mô hình serverless, thay vì deploy code này lên server, ta deploy nó đưới dạng một Function (Function as a Service – FaaS). Funtion này có thể được gọi dưới dạng RestAPI hoặc chạy theo lịch đã sắp sẵn.

Continue reading Series Nhận diện Idol: Phần 6.1 – Luận về Serverless – Vô Thai Kiếm

Series Nhận diện Idol: Phần 5 – Kiểm tra độ chính xác của thuật toán

Toàn bộ series Nhận diện Idol:

bài trước, chúng ta đã submit dữ liệu để huấn luyện cho API. Bài này sẽ hướng dẫn các bạn cách sử dụng API này để viết một method nhận diện hoàn chỉnh.

Sử dụng API như thế nào?

Chúng ta sẽ viết một method như sau:

  • Đầu vào (Input): URL của một ảnh bất kì
  • Đầu ra (Output): Vị trí các khuôn mặt trong ảnh (để hiển thị) và tên của chủ nhân khuôn mặt

Trong phần 4 mình đã nói về cơ chế nhận diện khuôn mặt gồm 2 quá trình: Face Detection và Face Recognition. Hai quá trình này tương ứng với 2 API của Microsoft Cognitive API:

  • Detect: Phát hiện khuôn mặt trong ảnh và vị trí các khuôn mặt này.
  • Identity: Đầu vào là id của khuôn mặtid của Person Group. Đầu ra là id của Person giống nhất.

Bắt đầu viết code thôi nào, nếu các bạn đã download project của mình ở bài trước thì sẽ thấy code đã có sẵn trong file test.js. Tuy vậy, mình sẽ giải thích một số hàm để các bạn dễ hiểu.

Continue reading Series Nhận diện Idol: Phần 5 – Kiểm tra độ chính xác của thuật toán

Series Nhận diện Idol: Phần 4.2 – Sử dụng Microsoft Face API để training hệ thống

Toàn bộ series Nhận diện Idol:

Sau phần 4.1, hẳn các bạn cũng đã hiểu cơ chế hoạt động của một hệ thống nhận diện khuôn mặt. Trong phần này, chúng ta sẽ sử dụng dữ liêu khuôn mặt đã có của 12 VAV Idol để huấn luyện cho máy (Được ngắm gái xinh chắc nó mừng lắm). Bắt đầu nào!

screen-shot-2017-01-06-at-4-45-17-pm

Continue reading Series Nhận diện Idol: Phần 4.2 – Sử dụng Microsoft Face API để training hệ thống