Setting up your new machine - A simple dev environment configuration guide

2024-11-30
configurationproductivitysoftware-engineeringterminaltoolunixwindows

As developers, we interact with all kinds of machines every day. A well-configured development environment can significantly boost productivity and make coding more enjoyable. This comprehensive guide will help you set up a comfortable and efficient workspace. It's mainly for beginners, but experienced developers may also find some useful tips.

Simple Git Tutorial

2024-11-27
collaborationgitsoftware-engineeringtoolversion-control

This is mainly a simple tutorial of Git. Some info about GitHub also included. You may also read Simple GitHub Tutorial.

Simple Git Tutorial: Branching and Merging

2024-11-25
branchinggitmergingsoftware-engineeringversion-control

Git's powerful branching and merging capabilities can help you deal with parallel collaborative development processes. Let's take a look.

Simple GitHub Tutorial

2024-11-25
gitgithubsoftware-engineeringsshversion-control

I wrote a tutorial on Git. In this post, I'd like to introduce the platform that is indispensable when it comes to Git: GitHub.

Managing Multiple Python Versions with pyenv and conda

2024-11-15
condaenvironment-managementpyenvpythontool

As a CS student, I often find myself working on projects that require different Python versions, each with its own set of dependencies and libraries. In such scenarios, having a reliable and efficient method for managing these versions becomes crucial. Inspired by pyenv 与 conda 双轨制:管理 Python 版本和环境, this blog post aims to document my experience with managing multiple versions of Python using pyenv and conda.

My GDB Cheat Sheet

2024-03-09
ccheat-sheetcppdebugginggdbtool

The GNU debugger is a powerful tool for the debugging of (mainly) C/C++ programs. In this post I document the common operations of gdb and some useful learning resources.

Notes for Algorithms, Part II: Shortest Paths

2024-02-10
algorithmcourseradata-structuregraph-theorynotespanning-tree

This is a note for 4.4 Shortest Paths, Algorithms, Part II.

Testing Typescript project with Mocha and Istanbul NYC

2024-02-08
javascriptmochanyctestingtypescript

Mocha is a popular JS test framework, and Istanbul is a popular JS test coverage tool. How to use them when it comes to Typescript? This post shows a simple demo.

A very interesting VimGolf

2024-01-28
quicksorttoolvimvimgolf

VimGolf.com is a good place for vimers to practice and improve their vim skills. This post records my experience of solving a very interesting VimGolf game -- Quicksort.

Two Way Binding in Vue3

2024-01-26
typescriptvue

A simple two way binding example in vue3.

Note for Intro to Machine Learning

2023-11-12
decision-treemachine-learningmean-absolute-errornotepythonrandom-forest

This is a note for the course on Kaggle: Intro to Machine Learning.

Awesome CLI Apps

2023-10-09
clicommand-lineterminaltoolunix

This is a list of some awesome CLI (command-line interface) apps.

Notes for Machine Learning Specialization: More numerically accurate code examples

2023-08-14
aicourseramachine-learningnotesoftmaxtensorflow

This is a note for the Machine Learning Specialization.

Notes for Machine Learning Specialization: Vectorization

2023-08-09
ailinear-algebramachine-learningnotepythonvectorization

This is a note for the Machine Learning Specialization.

Notes for 《tmux Productive Mouse-Free Development》

2023-08-05
noteproductivityshellterminaltmuxunix

Notes for tmux Productive Mouse-Free Development written by Brian P. Hogan.

Notes for Algorithms, Part II: Minimum Spanning Trees

2023-08-03
algorithmcourseradata-structurejavaminimum-spanning-treenote

This is a note for 4.3 Minimum Spanning Trees, Algorithms, Part II.

Notes for Algorithms, Part II: Directed Graphs

2023-07-29
algorithmcourseradata-structuredigraphjavanote

This is a note for 4.2 Directed Graphs, Algorithms, Part II.

Notes for Algorithms, Part II: Undirected Graphs

2023-07-27
algorithmcourseradata-structuregraph-theoryjavanote

This is a note for 4.1 Undirected Graphs, Algorithms, Part II.

Notes for Nand2Tetris: Virtual Machine I: Stack Arithmetic

2023-07-19
nand2tetrisnoteprogramming-languagesoftware-engineeringstack-machinevm-abstraction

This is a note for Nand2Tetris unit 7 (Part II, Unit 1).

Notes for Nand2Tetris: Assembler

2023-07-17
assemblernand2tetrisnoteprogramming-languagepythonsoftware-engineering

This is a note for Nand2Tetris Unit 6.

Notes for Machine Learning

2023-07-14
aicourseralinear-regressionlogistic-regressionmachine-learningnoteoctavepython

Here are my notes for course Machine Learning taught by Andrew Ng.About exercise: I didn't do the original version exercise which depends on Octave or Matlab, but a third-party Python version (See nsoojin/coursera-ml-py).

Notes for Nand2Tetris: Computer Architecture

2023-07-12
assembly-languagecomputer-architecturecourserahardware-designnand2tetrisnote

This is a note for Nand2Tetris Unit 5.

joshuto: A great file manager in terminal

2023-07-12
file-managerrustterminaltoolvim-like

When in a terminal, sometimes it's really annoying to keep on typing in cd or something else to browse the files and directories. Can we do it just like what we do in GUI? Then joshuto may be helpful to you.

Notes for Nand2Tetris: Machine Language

2023-07-11
algorithmassemblynand2tetrisnoteprogramming-languagesoftware-engineering

This is a note for Nand2Tetris unit 4.

Notes for Nand2Tetris: Memory

2023-07-09
computer-architecturedigital-logicnand2tetrisnote

This is a note for Nand2Tetris unit 3.

Notes for Nand2Tetris: Boolean Arithmetic and the ALU

2023-07-08
algorithmcourseradigital-logichardware-designnand2tetrisnote

This is a note for Nand2Tetris Unit 2.

Notes for Nand2Tetris: Boolean Functions and Gate Logic

2023-07-08
boolean-logicdigital-circuitshardware-descriptionnand2tetrisnote

This is a note for Nand2Tetris Unit 1.

Python libraries mentioned in CS50P

2023-07-07
cs50pprogramming-languagepythonsoftware-engineeringtool

This is a list of some Python libraries mentioned in CS50P 2022.

Matching IPv4 addresses with RegExp

2023-07-04
ipv4programming-languagepythonregexsoftware-engineering

While solving the NUM3RS problem of CS50P, I was asked to match IPv4 addresses with RegExp.

Notes for Matplotlib

2023-06-29
data-visualizationmatplotlibnotepythontool

Here are some notes for Matplotlib.

My personal summary of Stanford CS106L

2023-06-01
cppcs106lmodern-cppprogramming-languagesoftware-engineeringstanford

This is CS106L, an in-depth modern C++ language course from Stanford. I enrolled in it at the beginning of April and almost finished it today.

Const Correctness in C++

2023-06-01
constcppcs106lnoteprogramming-languagesoftware-engineeringstanford

This is a note for Lecture 8, CS106L, Spring 2023.

Type Safety and std::optional in C++

2023-05-31
constcppcs106lnoteprogramming-languagesoftware-engineeringstanfordtype-safety

This is a note for Lecture 14, CS106L, Spring 2023.

Move Semantics in C++

2023-05-30
cppcs106lmove-semanticsnoteprogramming-languager-value-referencespecial-member-functionsstanford

This is a note for Lecture 13, CS106L, Spring 2023.

static_cast and const_cast in C++

2023-05-30
constcppcs106lnoteprogramming-languagesoftware-engineeringstanford

This is a note for Lecture 8, CS106L, Spring 2023.

Permutations and Combinations in Python (itertools)

2023-05-28
algorithmdata-structureitertoolspermutations-combinationsprogramming-languagepython

Extracted from itertools — Functions creating iterators for efficient looping — Python 3.11.3 documentation

My personal summary of Algorithms, Part I on Coursera

2023-05-12
algorithmcourseradata-structureonline-courseprinceton

As the title says, this is my personal summary of Algorithms, Part I on Coursera.

Installing Ubuntu

2023-04-27
linux-setupsoftware-engineeringterminalubuntu-installationunix

This is NOT a tutorial on how to install Ubuntu. I am just documenting some problems I encountered during my installation.

Set up a blog with Hexo

2023-04-15
blog-setupgithub-pageshexonext-themeweb

This is a simple record of my further attempt to set up a blog with Hexo. I built one on GitHub Page before, using Hexo with the Icarus theme. This time I want to try something different. I also cleaned up my old blog and selectively migrated some old posts here.

Use std::cin.ignore() to keep the user typing until the input meets the requirements

2023-03-25
ccppinput-validationstd-cin

I used to control users' input by making the input a string and process it later. But today, my friend posed this question to me: Can we control input without a char array or string class?

const and constexpr in C++

2023-03-24
constcppprogramming-language

In this blog post, I will list the various uses of const in C++.

Package managers on Linux (TBC)

2023-03-11
aptlinuxpackage-managertoolunix

This post tries to simply introduce some package managers and their basic usage.