Software RAID has come a long way. Unless you have some very high-rate, high-volume, I/O workloads with SLAs that will otherwise cost you money, for the most part a software RAID will perform just fine. One of the primary benefits of using software RAID is the portability of your disks/data. If a box on which you have a software RAID dies somehow and at least some (depending on your RAID configuration) of drives survive, you can easily resurrect the RAID → Continue reading “Setting up software RAID on Debian with mdadm”
Category: Software
[SOLVED] debsig-verify for Failed verification error, “signatures using the SHA1 algorithm are rejected” and “Can’t check signature: Invalid digest algorithm”
If you are using debsig-verify for the verification of a downloaded .deb file and are unable to verify it, run it with the -d option to get more information. If you see the following two lines
gpg: Note: signatures using the SHA1 algorithm are rejected
gpg: Can't check signature: Invalid digest algorithm
It is likely that the PGP signature used to sign the package uses the SHA1 algorithm which has been deprecated in most of the recent Linux distros. If → Continue reading “[SOLVED] debsig-verify for Failed verification error, “signatures using the SHA1 algorithm are rejected” and “Can’t check signature: Invalid digest algorithm””
LVM Resize – reduce the size of one logical volume to enable expanding another
I’m running an Ubuntu workstation and when setting it up simply went the “next-next-next” route when setting up the encrypted disk via LVM. The default is to create a 1G swap partition which is just not enough when you attempt to run too many things and locks up and/or crashes the machine.
My goal was to reduce my /root partition and then use that space to extend my swap partition.
Ensure that you back up your data first! There is → Continue reading “LVM Resize – reduce the size of one logical volume to enable expanding another”
Convert a Slice of Any Type to a CSV in Go
There are times, mostly for logging and debugging, when you have a slice of a given type that you would like to print to a log file or just convert to a CSV of values.
A quick and easy way to convert a slice to a CSV in Golang is to use the json module to Marshal it a JSON encoded array.
package main
import (
"encoding/json"
"fmt"
)
func main() {
ints := []int64{1, 2, 3, → Continue reading “Convert a Slice of Any Type to a CSV in Go” Earthly Cheat Sheet
I have just recently started using Earthly and the following is a list of commands that I want to keep track of
Caching
Completely clearing the cache: Earthly stores artifacts in docker volumes. If you want to completely flush that data and start fresh run the following
docker stop earthly-buildkitd && \
docker rm earthly-buildkitd && \
docker volume rm earthly-cache→ Continue reading “Earthly Cheat Sheet” git Cheat Sheet
A handful of handy git commands that I don’t use all that often but want to keep track of:
Stashing
Stash a single file
git stash push -m 'message here' -- path/to/file
Drop a specific stash
First figure out the id of the stash you want to drop with git stash list, then issue the following command
git stash drop stash@{n}
Add all untracked files across the entire repository
git add -A
Editing Commits
Changing author of already pushed
→ Continue reading “git Cheat Sheet”Use printf to join an array in Bash
If you would like to join an array of elements with a defined delimiter in Bash there is an easy way to go about it by using printf. Following is an example
#!/bin/bash
declare -a arr=()
for i in `seq 1 5`
do
arr=("${arr[@]}" $i)
done
# Generate a single string joined by a comma. The printf string can contain
# any arbitrary delimiter.
printf -v joined '%s,' "${arr[@]}"
# Print out the string minus the trailing comma
echo → Continue reading “Use printf to join an array in Bash” Specifying a commit in go.mod instead of a local replace for development
Sometimes you are making changes to a dependency in another of your go projects and instead of adding a replace command in the go.mod file you want to update that entry in go.mod to point to a specific commit in the repo.
To do so, all that you need to do is:
- Get the git commit that you want included in your build
- Change directories to the same directory that your project’s
go.modfile resides in which you want to
Using Microsoft PowerRename to Rename Batches of Files
If you have to rename a large number of files under Windows it is very tedious to do it one-by-one via the gui. Instead of writing a batch file, Microsoft has a suite of tools called PowerToys. PowerToys installs a utility called PowerRename that will do the job.
I did this under Windows 10, but I imagine that it is the same in Windows 11 based on the documentation on the PowerToys installation page.
Installation
- Start a PowerShell as
Docker Cheat Sheet
Following are a number of my commonly used docker commands for my own reference
Building
Run the following in the same directory in which your Dockerfile resides
docker build -t <image-name>:<version> .
Or you can specify the path to the Dockerfile
docker build . -t <image-name>:<version> -f /path/to/Dockerfile
Running
Run a container interactively
Especially useful when debugging commands that you will encapsulate in a Docker file, this will enable you to run a base image and then execute commands interactively → Continue reading “Docker Cheat Sheet”