Blog

Writing on AI, machine learning, software engineering, and the engineering behind real-world ML systems.

92 posts

20267 posts

20253 posts

20243 posts

20238 posts

20222 posts

  • Airflow, MLflow or Kubeflow for MLOps?

    Machine learning is now focusing more on the data (data-centric AI), and MLOps is obviously the way to bring ML projects into production. Today, I will review three popular MLOps frameworks, which are Airflow, MLflow and Kubeflow. The target is to answer two questions: what are the differences between them, and which f...

  • With Daisykit – Everyone can build AI projects!

    Imagine you are a software engineer or a DIY hobbyist with great ideas to build AI-powered projects. However, it will be such difficulty when you know very little or nothing about AI. The complexity of deep learning models is a barrier for everyone wishing to integrate AI services into their projects. Understanding thi...

202121 posts

  • Install OpenCV 4 on macOS using Homebrew

    This is my note on how to install OpenCV 4 on macOS with Homebrew. I tested this tutorial on my Macbook Air 2020 with Apple silicon (M1 chip). When using Ubuntu, you may have already use `apt`, the popular package manager for Debian, on Windows, we can install `Chocolately` as the package manager. How about macOS? Home...

  • My development environment on macOS - Macbook Air M1

    I maintain this note as my instruction for setting up macOS for development. Currently, I apply this on my Macbook Air M1 2020 - 16GB RAM and 512GB SSD. My first experience with this laptop was pretty good. Right after receiving my new Macbook, I upgraded it to macOS Monterey 12.1 for the latest OS. I installed some so...

  • Install ROS 2 on Raspberry Pi 4 (SD card image available)

    ROS2 is an excellent framework for robotics applications. You can go further and embed a completed ROS 2 application stack in a small robot base with a Raspberry Pi computer. This post will tell you how to set up ROS 2 on Raspberry Pi 4 - the latest version of Pi family. The 1GB version of Pi 4 is probably too limited ...

  • Paper review: "YOLOX: Exceeding YOLO Series in 2021" and application in traffic sign detection - VIA Autonomous

    YOLOX is an anchor-free version of YOLO, with a simpler design but better performance! It aims to bridge the gap between research and industrial communities. With this version of YOLO, the authors won the 1st Place on Stream Perception Challenge (Workshop on Autonomous Driving at CVPR 2021. This note reviews YOLOX pape...

  • Paper review: CenterTrack - CenterPoint - CenterPoint++

    This is my note for 3 papers: CenterTrack - 2D object tracking, CenterPoint - 3D object detection and tracking, and CenterPoint++ - submission to the Waymo Real-time 3D Detection Challenge. CenterTrack applies a detection model to a pair of images and detections from the prior frame. Given this minimal input, CenterTra...

  • NotePaper review: CenterTrack - CenterPoint - CenterPoint++

    This is my note for 3 papers: CenterTrack - 2D object tracking, CenterPoint - 3D object detection and tracking, and CenterPoint++ - submission to the Waymo Real-time 3D Detection Challenge. CenterTrack applies a detection model to a pair of images and detections from the prior frame. Given this minimal input, CenterTra...

  • Paper review: SECOND - Sparsely Embedded Convolutional Detection

    LiDAR-based or RGB-D-based object detection is used in numerous applications, ranging from autonomous driving to robot vision. In this note, we review SECOND: Sparsely Embedded Convolutional Detection, a SOTA 3D object detection network in 2018. This note only sums up the main points of the paper. If you want to know t...

  • NoteESP32-CAM Video Streaming over HTTP and Face Detection

    Today I had some experience with ESP32 camera module. I was really surprised that it can stream camera over HTTP quite well with a very cheap price. I had an ESP32 CAM board + a USB programmer from my friend to upload program onto the chip and I decided to write this note to introduce this board to you. This is my ESP3...

  • NoteInstall Fira Code Font for Ubuntu

    This tutorial provides instructions for installing the Fira Code font in various versions of Ubuntu. This is my favorite font due to its various ligatures. Ubuntu 16.04 ```shell sudo apt-install git cd /tmp git clone https://github.com/tonsky/FiraCode.git sudo mv -i /tmp/FiraCode/distr/ttf /usr/share/fonts/truetype/fir...

  • NoteHow do I install Ubuntu on a new machine?

    Viet-Anh maintains this note as an instruction to install Ubuntu on a new machine and setup development environment as fast as possible. This note contains my autonomous scripts, and instructions to install necessary packages that I often use. - Supported Ubuntu versions: 20.04 -> 24.04. These instructions may work wit...

  • NoteInstall Zsh and Auto suggestion plugin for Ubuntu

    ZSH, also called the Z shell, is an extended version of the Bourne Shell (sh), with plenty of new features, and support for plugins and themes. Since it's based on the same shell as Bash, ZSH has many of the same features, and switching over is a breeze. This short tutorial guide you to install zsh and auto-suggestions...

  • Build a Pushup counter app with OpenCV and Deep learning

    | | ResNeSt backbone | 0.818 | 0.028 | 10,563,989 | | ShuffleNet backbone | 0.766 | 0.032 | 1,557,443 | | MobileNet backbone | 0.786 | 0.029 | 1,910,437 | | BlazePose - Heatmap branch | 0.760 | 0.032 | 885,559 | 3. Use signal processing to count Use signal processing to count Pushups In the first implementation, we pic...

  • Note[MOOC] Autoware Course - Lecture 1 - Setup the environment

    This is my note for lesson 1 of MOOC course: Self-Driving Cars with ROS and Autoware. You should follow the instructions in the course. I only write some notes here to highlight the best practices and how to fix some errors. - Autoware course: https://www.apex.ai/autoware-course - Lecture 1 tutorial: https://gitlab.com...

  • Note[MOOC] Apollo Lessons on Self-Driving Cars

    This is an introduction course to self-driving cars and Apollo platform - The Android of Self-Driving Car. Through this course, you will be able to identify key parts of self-driving cars and get to know Apollo architecture. You will be able to utilize Apollo HD Map, localization, perception, prediction, planning and c...

  • Note[MOOC] Apollo Lesson 7: Control

    This is my note for lesson 7 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Understand how to use steering, throttle and brake to execute our planned trajectory and master different types of controllers in Apollo. The control module goal is to use variable control inputs to minimize the deviatio...

  • Note[MOOC] Apollo Lesson 6: Planning

    My note for lesson 6 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Identify several different approaches Apollo uses to develop trajectories for autonomous vehicles. In planning, we incorporate HP maps, localization and prediction to build a trajectory for the vehicle. The first step is route n...

  • Note[MOOC] Apollo Lesson 5: Prediction

    My note for lesson 5 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Study different ways to predict how other vehicles or pedestrians might interact with Apollo self-driving cars.. After perceiving the world using sensors, we need to predict how the world is going to look in the future. It's imp...

  • Note[MOOC] Apollo Lesson 4: Perception

    My note for lesson 4 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Identify different perception tasks such as classification, detection, segmentation. Intro Perception module is much like our brain. It receives data from car sensors such as cameras, LiDARs, radars and use AI models and algorit...

  • Note[MOOC] Apollo Lesson 3: Localization

    This is my note for lesson 3 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: How the vehicle localizes itself with a single-digit-centimeter-level accuracy. Localization methods in Apollo - The RTK (Real Time Kinematic) based method which incorporates GPS and IMU (Inertial Measurement Unit) infor...

  • Note[MOOC] Apollo Lesson 2: HD Maps

    This is my note for lesson 2 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: High Definition maps for self driving cars. HD Maps have a high precision and contain a lot of information than your ordinary map on smartphone, such as lane line markings, 3D representation of the road network, traffic ...

  • Note[MOOC] Apollo Lesson 1: SDC Fundamentals

    | | High traffic accident rate | More reliable driving | | Learn to drive from scratch | Learnable driving system | | Parking trouble | No parking trouble | Six levels of self-driving car - Level 0: Base level - No autonomous task - Level 1: Driver assistance - Driver Fully Engaged - Level 2: Partial Automation - Autom...

202014 posts

  • Cài đặt và sử dụng VS Code trên Google Colab

    GPU miễn phí từ Google Colab là môi trường rất tốt để phát triển, thử nghiệm các mô hình học máy một cách miễn phí. Tuy vậy, cá nhân tôi thấy việc dùng Notebook của Colab có phần bất tiện hơn việc code bằng trình sửa code quen thuộc là VS Code. Bài viết này sẽ hướng dẫn các bạn cài đặt và sử dụng VS Code ngay trên môi ...

  • Tìm hiểu mô hình YOLO cho phát hiện vật - Từ YOLOv1 đến YOLOv3

    YOLO - You Only Look Once là một trong những mô hình phát hiện vật tốt nhất ở thời điểm hiện tại. Dù đều được gọi là YOLO, các phiên bản của mô hình này đều có những cải tiến rất đáng kể sau mỗi phiên bản. Sau 3 phiên bản của tác giả chính Joseph Redmon là YOLOv1 đến v3. Lưu ý: Bài viết này chỉ mang tính chất tổng hợp ...

  • Advanced driver-assistance system on Jetson Nano Part 3 - Deep neural networks

    | | 23 | 46 | 79 | 288 | 166 | 270 | 209 | 209 | 207 | 64 | 138 | 31 | 123 | 87 | 2000 | Experiments I trained traffic sign classification network with image size 64x64, Adam optimizer with learning rate 0.0001, batch size 32, loss function categorical cross entropy. In order to deal with class imbalance problem, I set...

  • Advanced driver-assistance system on Jetson Nano Part 2 - Software design

    Recently, I have built a prototype of an advanced driver-assistance system (ADAS) using a Jetson Nano computer. In this project, I have successfully deployed 3 deep neural networks and some computer vision algorithms on a super cheap hardware of Jetson Nano. I decided to write this post series to share about how this s...

  • Advanced driver-assistance system on Jetson Nano Part 1 - Intro & Hardware design

    Recently, I have built a prototype of an advanced driver-assistance system (ADAS) using a Jetson Nano computer. In this project, I have successfully deployed 3 deep neural networks and some computer vision algorithms on a super cheap hardware of Jetson Nano. I decided to write this post series to share about how this s...

  • Hackathon: Xây dựng giải pháp biến đổi, stream giấy viết cho giáo dục từ xa

    Vừa rồi, chúng tôi đã tham gia Cuộc thi IBM Hackathon tổ chức tại Đại học Bách khoa Hà Nội và may mắn dành giải Nhì cho hạng mục Call For Code với giải pháp biến đổi, stream giấy viết cho giáo dục từ xa. Trong bài viết này, tôi muốn chia sẻ với mọi người về giải pháp nhóm tôi đã thiết kế và triển khai trong 48h của cuộ...

  • Chúng tôi đã xây dựng xe tự hành trên giả lập thế nào?

    Trong năm 2020, tôi và một số anh em cùng lớp đại học đã tham dự Cuộc Đua Số, một cuộc thi lập trình xe tự hành cho sinh viên. Ở vòng trường đại học, các đội chơi phải thực hiện thử thách lập trình điều khiển xe tự hành di chuyển trên đường theo biển báo và tránh các chướng ngại vật trong môi trường giả lập. Trong bài ...

  • Tìm hiểu mô hình CenterNet - Objects as Points

    CenterNet là một mạng object detection có thiết kế cực kỳ đơn giản, nhưng lại đạt được cân bằng giữa tốc độ và độ chính xác tốt vừa được ra mắt năm 2019. Ở bài viết này mình muốn giới thiệu đến các bạn những ý tưởng cơ bản của mạng này, cách thức hoạt động và cách huấn luyện CenterNet. Mình sẽ tập trung vào mục đích ph...

  • Thiết lập ban đầu cho Jetson Nano

    | | CPU | Quad-core ARM® A57 CPU | Quad-core ARM Cortex-A53, 1.2GHz. | Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz | | GPU | 128-core NVIDIA Maxwell GPU | Broadcom VideoCore IV. | Broadcom VideoCore VI. | | RAM | 4 GB 64-bit LPDDR4 | RAM: 1GB LPDDR2 (900 MHz) | RAM – 1GB, 2GB hoặc 4GB LPDDR4-240...

  • NoteCác tài liệu và khoá học về học máy

    Việc học về học máy của tôi đã được giúp ích rất nhiều bởi các khoá học online. Ở trang này tôi sẽ tổng hợp lại các tài liệu và các khoá học hay về học máy kèm một vài đánh giá. Hi vọng các tài liệu / khoá học này sẽ phần nào giúp ích được cho các bạn mới làm quen với học máy / học sâu. Các khoá học Khoá nhập môn học m...

  • Gọi hàm Python trên C++ với OpenCV

    Có nhiều khi chúng ta cần gọi một hàm xử lý ảnh hoặc chạy mô hình học máy trên code Python từ C++. Lý do rất đơn giản, có thể là vì bạn muốn dùng luôn code Python, hoặc bạn chưa có thời gian chuyển sang code C++. Bài viết này sẽ hướng dẫn các bạn cách khởi tạo object và gọi đến phương thức Python từ code C++ và truyền ...

  • Linear Regression - Hồi quy tuyến tính cơ bản

    Linear Regression (hồi quy tuyến tính) là một trong những thuật toán cơ bản nhất của Machine Learning. Ở bài viết này, tôi sẽ giới thiệu đến các bạn khái niệm về thuật toán này, lý thuyết toán học và cách triển khai thuật toán trên Python. Bài viết này được viết bằng Jupyter Lab. Trước hết hãy import và setup các thư v...

  • Configure integrated GPU for rendering and NVIDIA GPU for CUDA works in Ubuntu 18.04

    In fact, besides CUDA tasks (which could be deep neural network training), our operating system also consumes a decent amount of memory for graphic rendering. This article will guide you to use onboard graphic card for display, thereby saving a considerable amount of GPU VRAM for model training. It's especially useful ...

  • Note[Concepts] Classification metrics

    Classification is a basic family of models in machine learning. In very naive logic, people can use accuracy to evaluate how good a model is. However, do we really want accuracy as a metric for our performance? Actually, there are many metrics to evaluate a classification model depending on our problem in a real situat...

20198 posts

  • Phát hiện đường thẳng với Hough Transform - OpenCV

    Hough Transform là thuật toán phát hiện đường thẳng khá hiệu quả trong xử lý ảnh. Ở bài viết này, chúng ta sẽ cùng tìm hiểu về cách thức hoạt động cũng như cách sử dụng Hough Transform để phát hiện đường thẳng trong ảnh bằng thư viện OpenCV. I. Lý thuyết Ý tưởng chung của việc phát hiện đường thẳng trong thuật toán này...

  • Thiết kế thùng rác thông minh tự phân loại rác với Raspberry Pi 3

    Nóng lên toàn cầu, bảo vệ môi trường, rác thải nhựa là những từ khoá nóng trong thời gian gần đây. Mỗi ngày, con người thải ra rất nhiều chai lọ, mà một lượng lớn trong số chúng không được xử lý đúng cách, trở thành nguyên nhân đe doạ sự sống của rất nhiều loài sinh vật và tàn phá môi trường. Tôi có nghĩ đến một giải p...

  • Xây dựng bộ phân loại VGG16 với Tensorflow Keras và áp dụng phân loại chó mèo

    Dù Tensorflow Keras đã hỗ trợ VGG16, ở bài viết này, chúng ta vẫn sẽ cùng nhau viết lại VGG16 trong Tensorflow với Keras để hiểu cấu trúc mạng và cùng thử nghiệm với dataset Kaggle Dogs and Cats để phân loại chó mèo nhé. Mình sẽ trình bày bài viết này giống như một Jupyter Notebook kèm theo kết quả đã thực hiện để mọi ...

  • Thị giác máy tính và những gì cần học để bắt đầu

    Ở bài viết này, chúng ta sẽ cùng tìm hiểu chung về ngành thị giác máy tính (computer vision) và phương pháp học để có một công việc trong ngành này. I. Sơ lược về thị giác máy tính Ta thường nhắc đến tác nhân khai sinh ra vũ trụ là vụ nổ lớn big bang. Ngày nay, người ta cũng tin rằng trong sinh học cũng có một "big ban...

  • Các hàm kích hoạt (activation function) trong neural network

    Hàm kích hoạt (activation function) mô phỏng tỷ lệ truyền xung qua axon của một neuron thần kinh. Trong một mạng nơ-ron nhân tạo, hàm kích hoạt đóng vai trò là thành phần phi tuyến tại output của các nơ-ron. Trong bài viết này, chúng ta sẽ cùng tìm hiểu các hàm kích hoạt phổ biến nhất và các ưu, nhược điểm của chúng. T...

  • Xây dựng bộ phân loại chó, mèo hay gấu trúc với k-NN

    images ... ``` Xây dựng bộ tiền xử lý và nạp dữ liệu Mở file `datasetloader.py` và chèn đoạn code sau: ```py Import necessary packages import numpy as np import cv2 as cv import os class DatasetLoader def load(self, imagepaths, verbose=-1): Initialize the list of images and labels data = [] labels = [] Loop over input ...

  • Locked myself out of SSH port Ubuntu AWS server using ufw

    Currently, I locked myself out of my VPS (Amazon EC2) after configuring ufw firewall. Here are what I've done to disable ufw and take back the control of my VPS. 1. Stop your problem instance 2. Paste this script in `Instance Settings > View/Change User Data` ``` Content-Type: multipart/mixed; boundary="//" MIME-Versio...

  • ReactJS lifecycle method inside a functional Component

    - Understand more about React component types: React Functional or Class Components: Everything you need to know . - In the case you want to combine a functional component with some lifecycle functions like `componentDidMount`, `componentWillUnmount`..., you can use `react-pure-lifecycle` package. - Detail code: ```jsx...

20184 posts

  • Những package cần có cho Ubuntu

    Dưới đây tôi xin giới thiệu một số package tôi thường dùng trên Ubuntu và cách cài đặt. Những package này là các gói phần mềm mà tôi hay dùng, chủ yếu là phục vụ các nhu cầu cơ bản của việc lập trình. Cần có ở đây chỉ mang ý nghĩa cá nhân theo ý kiến của tôi. Tôi viết bài này để lưu lại như một bản note có thể bỏ ra xe...

  • Lọc ảnh (Image Filtering)

    Lọc ảnh (làm mịn ảnh, làm mượt ảnh) là một bước rất quan trọng trong xử lý ảnh. Lọc ảnh thực tế có rất nhiều tác dụng như loại bỏ nhiễu, tìm biên đối tượng. Bài viết này sẽ giới thiệu nguyên tắc chung của lọc ảnh và một số phép lọc ảnh cơ bản. A. Nguyên tắc chung của lọc ảnh Nguyên tắc chung của các phương pháp lọc là ...

  • Các thao tác cơ bản với ảnh trên OpenCV

    | | CV8U | uchar | | CV8S | schar | | CV16U | ushort | | CV16S | short | | CV32S | int | | CV32F | float | | CV64F | double | OpenCV cũng đưa ra dạng rút gọn tên các kiểu dữ liệu Vec: ```cpp typedef Vec< uchar, 2 > cv::Vec2b typedef Vec< uchar, 3 > cv::Vec3b typedef Vec< uchar, 4 > cv::Vec4b typedef Vec< short, 2 > cv:...

  • Ảnh số và các không gian màu trong xử lý ảnh

    Ảnh số (digital image) là một thành phần biểu diễn hình ảnh trong hầu hết các thiết bị điện tử hiện nay như máy ảnh, điện thoại, máy tính, các công cụ hỗ trợ có sử dụng ảnh. Để bắt đầu với xử lý ảnh, chúng ta phải nắm được các kiến thức cơ bản về ảnh số và cách biểu diễn ảnh số trong máy tính. Bài viết này sẽ khái quát...

20177 posts

  • Xây dựng một cấu hình Emacs từ đầu

    Emacs là một trình soạn thảo văn bản đa chức năng và có thể mở rộng các chức năng một cách mạnh mẽ. Khi chưa cấu hình (tất cả thiết lập để ở mặc định), Emacs có thể coi là trình soạn thảo hơi khó dùng, giao diện khá đơn giản, nếu không nói là xấu. Tuy nhiên khi tuỳ biến bằng các tệp cấu hình, bạn có thể biến Emacs thàn...

  • Install mysql2 gem on macOS using MAMP as mySQL server

    When installing `mysql2` gem on a system using MAMP as mySQL server, you may end up with a compilation error because of incorrect mysql path. To deal with this problem, instead of `gem install mysql2`, try to specify mysql configuration directory: ```bash gem install mysql2 -- --with-mysql-config=/Applications/MAMP/Lib...

  • Minify multiple Javascript files in a folder with UglifyJS

    To minify multiple Javascript files, you can use Grunt. However, there is a much easier way to archive it using UglifyJS and Bashscript. Step 1: Install UglifyJS ``` npm install -g uglify-js ``` Step 2: Write some Bash script code to find and minify all js files in a folder ```bash for file in path/to/js/folder/.js; do...

  • Một cách nhập xâu kí tự trong C - giải quyết vấn đề của fflush cho Linux, Mac OS

    Khi lập trình C trên Windows, bạn có thể sử dụng `fflush()` để làm sạch bộ đệm trước khi nhập một xâu, tránh tình trạng "lạc trôi" của lệnh nhập xâu. Tuy nhiên khi làm việc với các hệ thống khác như Linux, hay Mac OS, mọi chuyện không đơn giản nữa: nhiều khi `fflush()` sẽ không làm việc. Bài viết này sẽ cho bạn một các...

  • Lấy địa chỉ IP thật của client trên Heroku với Nodejs

    Khi sử dụng Express js của Nodejs, bạn đơn giản chỉ cần sử dụng `req.ip` để lấy IP người dùng. Tuy thế, khi bạn ứng dụng của chúng ta được host trên Heroku thì việc lấy IP thế này sẽ cho kết quả sai, đơn giản vì Heroku thực hiện một số routing khiến IP bạn nhận được là IP của router Heroku hoặc proxy. Vậy chúng ta nên ...

  • Tạo contact form đơn giản với Nodejs - nodemailer

    Nếu website của bạn sử dụng một CMS như Wordpress thì việc tạo contact form đã khá dễ dàng với các plug-in. Tuy nhiên nếu bạn đang có một website tĩnh, bạn sẽ cần một dịch vụ để xử lí các form liên hệ của bạn. Bài viết này sẽ hướng dẫn bạn tự tạo một backend đơn giản để xử lí các form liên hệ. Form liên hệ của chúng ta...

  • Một số kĩ thuật xử lí tiếng Việt trong Javascript

    Các kĩ thuật xử lí sau sẽ giúp chúng ta thao tác với tiếng Việt dễ dàng hơn mà không cần mất công xây dựng lại. Xoá dấu tiếng Việt Hàm xoadau() sau sẽ xoá loại bỏ hoàn toàn dấu câu tiếng Việt, không phân biệt hoa thường. ```javascript function xoadau(str) { str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a') s...

201615 posts

  • Kinh nghiệm ban đầu với Fedora Linux

    Cũng lâu rồi tôi không viết bài trên blog của mình. Hôm nay nhân dịp cài đặt và dùng thử hệ điều hành Fedora Linux (bản Workstation 24), tôi muốn viết một bài chia sẻ cho mọi người những kinh nghiệm đầu tiên về việc sử dụng Fedora. Trước hết, tôi xin phép so sánh Fedora với một bản phân phối linux hết sức nổi tiếng - U...

  • Thuật toán loang ứng dụng trong game dò mìn

    Thuật toán loang (thuật toán vết dầu loang) là một thuật toán dùng khá nhiều trong tin học, ứng dụng trong các bài toán thực tế như các bài toán tìm đường đi, game dò mìn, game line98... Gọi là thuật toán loang vì nguyên lí của thuật toán này rất giống với hiện tượng loang của chất lỏng. Khi ta đổ nước xuống một về mặt...

  • Xây dựng thuật toán sinh mìn trong trò chơi dò mìn Minesweeper viết bằng C

    Gần đây, Việt Anh mới viết lại trò chơi dò mìn cổ điển bằng ngôn ngữ C. Trò chơi này có thể thực hiện với những thuật toán đơn giản. Bài viết này sẽ nói về thuật toán khởi tạo mìn mỗi lúc bắt đầu trò chơi. Trước hết tôi muốn gửi bạn file mã nguồn trò dò mìn tôi viết: https://github.com/vietanhdev/minesweeper-in-c/blob/...

  • Thay đổi độ phân giải màn hình Raspberry Pi

    Khi cài đặt các phiên bản hệ điều hành dựa trên Linux, tôi nhận thấy nhiều hệ điều hành đôi lúc không nhận được độ phân giải thật của màn hình máy tính, dẫn đến việc hiển thị màn hình với độ phân giải thấp hơn mức bình thường, khiến các đối tượng trên màn hình bị mờ, nhìn rất xấu. Trên với các hệ điều hành Fedora, Ubun...

  • A very simple guide to GNU Emacs

    | | M-f | Word Forward | | M-b | Word Backward | | C-a / C-e | Jump to beginning / end of line | | M-\{ / M-\} | Paragraph Forward / Backward | | C-v / M-v | Page Forward / Backward | | M-< / M-> | Jump to beginning / end of file | | M-C-a / M-C-e | C Function Forward / Backward | Above is a very basic guide to GNU Ema...

  • Cấu hình Emacs để lập trình C

    Link hướng dẫn cài đặt và sử dụng các chức năng: http://tuhdo.github.io/c-ide.html Sau đây là vài thứ cơ bản ko cần đọc cái bên trên cài và dùng luôn đã >> Anh em thực hiện cài đặt: Mở Terminal, gõ lệnh: `git clone https://github.com/tuhdo/emacs-c-ide-demo.git ~/.emacs.d` Nếu hiện thông báo đã tồn tại thư mục ` ~/.emac...

  • Lập trình viên nên tạo website cá nhân

    Trong thời đại số mà các công nghệ, mạng xã hội đang ngày càng thể hiện sự ảnh hưởng của chúng, mỗi chúng ta không chỉ tồn tại trong thế giới thực, mà còn trong thế giới online. Sự hiện diện của mỗi người trong thế giới online đang dần trở nên quan trọng, khi mà ở đó, ta không những có thể kết nối với những người quen ...

  • Cấu trúc rẽ nhánh trong C

    Cấu trúc rẽ nhánh trong mỗi ngôn ngữ lập trình luôn luôn là một thành phần quan trọng. Đó là thành phần cơ bản tạo nên hầu hết các thuật toán hiện đại. Nếu bạn muốn mô tả một đoạn chương trình kiểu như: Nếu gặp điều kiện C thì thực hiện hành động A, ngược lại, thực hiện hành động B thì bạn chắc chắn cần sử dụng cấu trú...

  • Biến, hằng và nhập xuất dữ liệu trong C

    | | 42 | %6d | 42 | | 42 | %-6d | 42 | | 'z' | %3c | z | | 2.71828 | %10.2f | 2.71 | | "printf" | %10s | printf | b) Nhập dữ liệu từ bàn phím: Cú pháp: `scanf ("xâu kí tự…", <các con trỏ>);` Ví dụ ta muốn nhập một số nguyên vào biến a: ```c int a; scanf("%d", &a); ``` Lưu ý: Ở đây `&a` là con trỏ trỏ tới biến a. Chú ý ...

  • Toán tử trong C

    | | Postfix | `() [] -> . ++ - -` | Trái sang phải | | Unary | `+ - ! ~ ++ - - (type) & sizeof` | Phải sang trái | | Tính nhân | ` / %` | Trái sang phải | | Tính cộng | `+ -` | Trái sang phải | | Dịch chuyển bit | `<< >>` | Trái sang phải | | So sánh không ngang bằng | `< <= > >=` | Trái sang phải | | So sánh ngang bằn...

  • Cài đặt Geany – gcc làm môi trường soạn thảo và biên dịch ngôn ngữ C trên Ubuntu

    Trong bài viết này Việt Anh sẽ hướng dẫn các bạn cài Geany và gcc để soạn thảo và biên dịch chương trình viết bằng ngôn ngữ C trên Linux (cụ thể ở đây là hệ điều hành Ubuntu). 1.Trước hết bạn phải tải và cài đặt Geany: Mở Terminal (Ctrl + Alt +t) và gõ lần lượt các lệnh sau để cài đặt trình soạn thảo mã nguồn Geany: ``...

  • Cấu trúc chương trình C cơ bản

    Các thành phần của một chương trình C cơ bản bao gồm: - Các lệnh tiền xử lí - Các hàm - Các biến - Các lệnh và biểu thức - Các comment (ghi chú về code giúp ích cho công tác bảo trì và nâng cấp) Chúng ta hãy cùng nghiên cứu chương trình Hello World – Chào thế giới trong ngôn ngữ C. Chương trình này có chức năng in dòng...

  • Giới thiệu serie học lập trình C

    > Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất. C là ngôn ngữ rất có hiệu quả và được ưa chuộng nhất để viết các phần mềm h...

  • Thiết lập Sublime Text 3 để biên dịch và chạy ngôn ngữ C

    Xem hướng dẫn cài đặt Sublime text 3. 2. Tiếp đó cài đặt gcc để biên dịch ngôn ngữ c: Mở Terminal (Ctrl + Alt +t) và gõ lần lượt các lệnh sau để cài đặt gói build-essential: ```sh sudo apt-get update sudo apt-get install build-essential ``` 3. Cấu hình Build system cho Sublime Text để biên dịch và chạy C: Mở Sublime Te...

  • Sống với đam mê hoặc một cuộc đời nhàm chán

    Các bạn ạ, đã có rất nhiều bài viết, hội thảo, cuộc nói chuyện của các chuyên gia nổi tiếng xoay quanh chủ đề “sự đam mê“. Bạn đã đọc? Bạn đã nghe? Bạn đã thấy? Vậy bạn đã hiểu được bao nhiêu phần trăm về cái mà người ta gọi là đam mê, và về cách đam mê ảnh hưởng, xây dựng và khiến cuộc sống của mỗi con người trở nên c...