Bash

Interprocess Communication with Redis

There are many methods to communicating between processes. Many methods work best when only using a single programming language, while others require custom packets and parsing. Simplicity is key and Redis is an efficient solution. Redis is an open-source in-memory database project implementing a distributed, in-memory key-value store. Start Redis Server We will be using a Docker Redis container to run the Redis server. docker run -d --rm --name my_redis -p 6379:6379 redis -d, --detach: Run container in background and print container ID --rm: Automatically remove the container when it exits --name string: Assign a name to the container -p, --publish list: Publish a container’s port(s) to the host Client Installation This quick tutorial will focus on Python, so let’s install the recommended package.

Testing Python Packages with Docker

Package management is hard. Sometimes in Python package development, your local (development) environment may behave a little differently than a deployment target. Below is a simple method I use to replicate a clean environment and test Python package installs and tests. docker run -v `pwd`:`pwd` -w `pwd` python pip install . docker run -v `pwd`:`pwd` -w `pwd` python python setup.py install docker run -v `pwd`:`pwd` -w `pwd` python python setup.py test First, we bind the current directory to our container (-v) and switch our working directory (-w).

Convert Images in a Directory

for i in *.png ; do convert "$i" "${i%.*}.jpg" ; done convert: convert between image formats using ImageMagick A simple bash for-loop for convert many images at once.

Count the Number of Files in a Directory

ls -l | wc -l ls: list directory contents -l: list in long format wc: word, line, character, and byte count -l: the number of lines is written to the standard output This command counts the number of listed lines. I find this most useful when I want to quickly see how many logs or records have been generated by a process.

Count the Number of Words in a LaTeX Document

detex my-document.tex | wc -w detex: a filter to strip TeX commands from a .tex file wc: word, line, character, and byte count -w: The number of words in each input file is written to the standard output

Recursively Git Reset All Submodules

git submodule foreach --recursive git reset --hard This command recursively resets all submodules in a git project. This is especially useful for projects with submodules (and maybe even submodules within submodules) when you want to reset your working copy to a completely clean state.

Start a Simple Web Server

python -m http.server 8000 This will serve index.html in the current working directory.