Docker Container Mỗi container có địa chỉ IP và tài nguyên riêng. Các container cùng chia sẻ tài nguyên CPU, bộ nhớ và OS của máy host. Điều này đảm bảo tính cô lập và hiệu quả trong việc sử dụng tài nguyên máy tính host. Container chỉ hoạt động nếu app bên trong nó… Continue reading Hiểu về Docker
Một số lưu ý khi triển khai FastAPI, PostgreSQL, Traefik lên Docker
Bài viết này nói về một số điểm cần lưu ý khi triển khai FastAPI, PostgreSQL và reverse proxy Traefik lên Docker. Cấu trúc của project: ├── app │ ├── __init__.py │ └── main.py └── requirements.txt └── Dockerfile └── docker-compose.yml └── traefik.dev.toml FastAPI Mã nguồn của API server phải được đặt tách biệt với các… Continue reading Một số lưu ý khi triển khai FastAPI, PostgreSQL, Traefik lên Docker
Tạo sub-command với argparse
Bài viết này sẽ hướng dẫn cách phân chia chức năng của 1 chương trình thành nhiều commands (tương tự như git có git add, git restore, git branch,...) với thư viện argparse. Để dễ dàng trong việc tạo sub-command, chúng ta sẽ sử dụng decorator, xem đoạn code sau: cli = argparse.ArgumentParser() subcommand_maker =… Continue reading Tạo sub-command với argparse
“this” trong JavaScript
Keyword "this" trong JavaScript trỏ đến đối tượng cụ thể, tùy vào ngữ cảnh. Sau đây là một số ngữ cảnh thường có sự xuất hiện của "this": 1. "this" nằm bên trong object method "this" là tham số ẩn được tự động truyền vào object method, giá trị của "this" chính là object sẽ… Continue reading “this” trong JavaScript
Vai trò của file __main__.py trong Python package.
Chúng ta đều biết "__main__" là giá trị của biến __name__ khi Python module được thực thi như một script. Thế __main__.py là gì? __main__.py là entry point của một Python package khi chúng ta chạy package đó với lệnh python -m <package-name>, điều này có nghĩa là nội dung của file __main__.py sẽ được… Continue reading Vai trò của file __main__.py trong Python package.
Viết một device driver đơn giản cho Linux
Một số thuật toán sắp xếp
Selection Sort Đây là một trong những thuật toán sắp xếp đơn giản nhất, Selection Sort hoán đổi phần tử thứ #n với phần tử nhỏ nhất của sub-array đứng sau phần từ thứ #n đó. Ví dụ: cho mảng array có 10 phần tử, đầu tiên ta hoán đổi phần tử array[0] với phần… Continue reading Một số thuật toán sắp xếp
Hiểu và sử dụng “third-party libraries” thật hiệu quả
Trong lập trình, third-party libraries (thư viện của bên thứ 3) là thứ không thể thiếu và chất lượng của chúng là điều rất đáng quan tâm. Những thư viện chất lượng cao cung cấp cho chúng ta các giải pháp tốt, giúp rút ngắn thời gian phát triển sản phẩm. Tuy nhiên, thư viện… Continue reading Hiểu và sử dụng “third-party libraries” thật hiệu quả
[Tiva C] Sử dụng uDMA
Direct Memory Access (DMA) là phương thức truyền nhận dữ liệu giữa bộ nhớ và ngoại vi mà không cần sự can thiệp của CPU, nhờ đó mà giảm tải cho CPU. Tiva C MCUs được trang bị 01 bộ micro-DMA (uDMA) với các tính năng sau: 32 kênh, mỗi kênh có đến 5 lựa… Continue reading [Tiva C] Sử dụng uDMA
Hiệu chuẩn camera với OpenCV 3
Camera gồm 2 thành phần cơ bản là màn ảnh và ống kính. Đối với các camera giá rẻ, màn ảnh thường không được lắp đặt chính xác, còn ống kính bị biến dạng, điều này dẫn đến sự méo mó trong bức ảnh chụp được. Hiệu chuẩn camera là quá trình chỉnh sửa các… Continue reading Hiệu chuẩn camera với OpenCV 3