Lately, I’ve been trying to systematically organize tree traversal techniques in a structural way, and I realized that there were some missing concepts I took for granted for years (e.g. I used to assume that BFS is just a post-order traversal 😅) . Therefore, I’m writing this to help clear the confusion, and hopefully it will help others to have a better understanding of different traversal techniques, too.

Tree traversal is a special case of Graph traversal, and therefore, this techniques is also applicable to graph traversal. …


I remember the first time I got to know the concept of Permutation and Combination was back in my secondary school time. It was a really confusing concept to wrap my head around.

Lately, when I started practicing programming, Permutation and Combination came up again. However, this time, not the concept that caused me problem, but the actual programming technique that gave me a hard time to understand how to to implement them. Therefore, I decided to write this to hopefully have a more structured way to see the difference and how to implement them properly.

Quick recap

In this post, I’ll…


This might be obvious for many, but based on my personal experience, I realized that people (including me) sometimes get confused on when to use @classmethod and @staticmethod. Hopefully this article will help clarify the usage of both.

Class method

First of all, what’s the definition of a class method? Based on Python’s official doc: “a class method receives the class as implicit first argument, just like an instance method receives the instance”. To declare a class method, we can use @classmethod decorator:

A class method can be called either on the class (Example.foo()) or on the instance level (Example().foo()). The…


Gần đây, mình có làm việc nhiều hơn với Python, và mình phát hiện ra một số functions khá hữu dụng và được các bạn Data Scientists sử dụng khá nhiều. Vì thế, mình hy vọng bài viết ngắn này có thể đưa ra vài techniques có tính ứng dụng cao.

Hãy bắt đầu với ví dụ đơn giản:

def find_max(a, b):
return a if a > b else b
def find_max_list(list1: list, list2: list) -> list:
return [find_max(list1[i], list2[i]) for i in range(len(list1))]

find_max_list([1, 2, 3, 4, 5], [10, 11, 0, 13, 14])
===> Output:
[10, 11, 3, 13…


Mình đang làm về 1 dự án mà ở đấy vận dụng Accelerometer, Gyroscope, Magnetometer thu thâp được từ thiết bị di động để phục vụ cho Machine Learning. Là dân mới bắt đầu làm việc với những loại dữ liệu này, mình thấy khá lơ mơ về 3 loại sensor data trên. Vì thế, mình viết bài viết này hy vọng sẽ giúp đưa ra cái nhìn rõ hơn về sự giống và khác nhau, và tính ứng dụng của từng loại sensor.

Hình 1: Hệ thống tọa độ được dùng trong Sensor API của điện thoại Android. (Android developer guide)

Nhìn về mặt tổng quát, Accelerometer, Gyroscope và Magnetometer là 3 loại raw sensor data chính…


Chắc hẳn khi mới làm việc với Python, thỉnh thoảng bạn sẽ nhìn thấy vài keywords khá khó hiểu, ví dụ như global, hoặc nonlocal. Chẳng phải variables thì hoặc là global, hoặc là local. Như thế nonlocal chẳng phải là global?

Bài viết này sẽ giải thích cho bạn sự khác nhau của nó.

Global & local variable

Đầu tiên, nhắc lại khái niệm global và local variables:

  • Global variable là variable mà bạn có thể access ở mọi lúc, mọi nơi
  • Local variable là variable mà chỉ accessible trong phạm vi function của nó

Hãy quan sát ví dụ đơn giản này…


The beauty of Generator (:

Trong bài viết về sự kháu nhau giữa Iterator và Generator trong Python, mình có giới thiệu sơ qua về Generator trong Python. Nhưng mình nhận thấy Generator là 1 tool khá hữu dụng và có tính ứng dụng rất cao. Vì vậy, mình quyết định viết 1 bài viết riêng về nó.

Ở bài trước, mình đã nhắc đến một khái niệm cơ bản khi làm việc với generator, đấy chính là keyword “yield”. Tuy nhiên, thật sự generator được sử dụng làm gì? Và tính ứng dụng của nó nằm ở đâu?

Hãy bắt đầu với bài toán…


Một chút tản mạn vì tại sao lại có bài viết này. Hôm trước mình có dạo quanh Quora, mình vô tình đọc được 1 comment của 1 bác làm ở Google về Python developers. Đại loại, bác ấy chia Python developers làm 3 loại:

- Loại 1: hiểu rõ được sự khác nhau giữa Generator và Iterator
- Loại 2: không phân biệt được sự khác nhau
- Loại 3: chưa bao giờ nghe thấy Generator là gì

Đọc xong comment của bác ấy, mình thấy hơi chột dạ và nghĩ ngay ra việc nên viết bài viết này…


Ví dụ về decorator trong Django

Chắc hẳn nếu bạn làm việc với Python và đặc biệt khi sử dụng các frameworks, thỉnh thoảng bạn sẽ nhìn thấy kí hiệu @ … ở trước các functions. Để sử dụng nó thì thật đơn giản, bạn chỉ cần copy-paste như trong tutorials, thế là có thể chạy. Nhưng bạn đã bao giờ thật sự đặt câu hỏi cái dòng bắt đầu bằng dấu @ ấy là gì và nó có vai trò như thế nào chưa? Mình hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về nó.

Để hiểu về decorator, mình cần giới…


Motivation: currently, I have been working on a Machine Learning project in which I need to deploy not one but multiple Keras models into our production. Our project uses Django as the backend framework, and therefore, I needed to find a way to load Keras models into Django project correctly.

So, the challenges are:
1. How to load a Keras model in Django project?
2. How to load multiple models in the same project?

This blog will tell you how I have solved those 2 challenged and successfully deployed the cool models into production. Let's get started!

  1. How to load…

att288

Work hard, stay humble

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store