Skip to content

Instantly share code, notes, and snippets.

@mikeslattery
mikeslattery / gc-mon.sh
Last active May 24, 2021 15:49
Monitor memory use of all running java applications
#!/bin/bash
# Display memory useage of all running java processes
pidof java | xargs -r ps -f
echo ''
echo $'PID\t% MEM\tTMEM\tGC Time'
while true; do
for pid in $(pidof java); do
echo -n "$pid "
@mikeslattery
mikeslattery / tunic-uml.dot
Last active May 24, 2021 15:57
Tunic Design
// Usage: dot -Tpdf -o tunic-uml.pdf tunic-uml.dot; xdg-open tunic-uml.pdf
digraph G {
Presenter -> View;
View [shape=box];
Presenter -> Service;
Service -> System;
@mikeslattery
mikeslattery / notify-send.ps1
Last active February 20, 2020 18:02
Windows Notification Toast
function notify($notificationTitle) {
$app = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe'
[void][Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
# Fetch empty template
$templateType = [Windows.UI.Notifications.ToastTemplateType]::ToastText01
$template = [xml]([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent($templateType).getXml())
#Convert to .NET type for XML manipuration
[void]$template.GetElementsByTagName("text").AppendChild($template.CreateTextNode($notificationTitle))
@mikeslattery
mikeslattery / shlint.sh
Created January 23, 2020 16:06
Lint shell scripts
#!/bin/bash
# Thorough syntax check for #!/bin/sh scripts.
# (For bash scripts, shellcheck by itself is enough)
set -eu
for f in "$@"; do
dash -n "$f" && \
shellcheck -x "$f" && \
@mikeslattery
mikeslattery / fake_dockerfile.sh
Last active February 19, 2021 15:16
Mock Dockerfile syntax for local testing
alias FROM='docker run -it --rm'
ADD() { curl -sLf "$1" -o "$2"; }
alias RUN='' ARG='' ENV='' CMD=''
alias LABEL=: EXPOSE=: ENTRYPOINT=: VOLUME=: ONBUILD=: STOPSIGNAL=: HEALTHCHECK=: SHELL=:
SHELL() { eval "export SHELL=$1"; }
alias WORKDIR=cd
USER() { sudo -u "$1" bash --init-file fake_dockerfile.sh; }
@mikeslattery
mikeslattery / clone_to_docker.sh
Last active February 23, 2022 17:24
Convert local Linux distro into a container.
#!/bin/bash
# Usage - clone_to_docker.sh <image-name>
# This will convert the local distro to a container image and run it.
# Also works for WSL.
# The container will run as the user that created the image.
# If using WSL, you should mount (or symlink) /c to /mnt/c
image="wsl"
@mikeslattery
mikeslattery / .bashrc
Created March 6, 2019 16:36 — forked from JanTvrdik/.bashrc
ssh-agent support for Git Bash / MinGW / msys / Windows
# put this in ~/.bashrc
export SSH_AUTH_SOCK=/tmp/.ssh-socket
ssh-add -l > /dev/null
if [ $? = 2 ]; then
rm -f $SSH_AUTH_SOCK
echo Starting new ssh-agent...
eval $(ssh-agent -a $SSH_AUTH_SOCK) > /dev/null
ssh-add && echo "ssh-agent set up successfully with the following keys:" && ssh-add -l
fi
#!/bin/bash
# More seemless integration between git-bash/WSL/Cygwin and Docker for Windows
set -euo pipefail
( [ -d 'C:\'] && cygpath . > /dev/null; ) || \
{ echo 'Must be run from GitBash, Msys or Cygwin'; exit 1; }
export MSYS_NO_PATHCONV=1
USER="$(whoami)"
docker run \
#!/bin/bash
# Wrapper over docker-compose to run on remote server.
# Usage:
# Takes same arguments as docker-compose.
# Typical usage:
# remote-compose server down
#!/bin/bash
# Workaround docker wrapper for git-bash/Msys/Cygwin quirks
# Copy this to ~/bin/docker or /usr/local/bin/docker
set -euo pipefail
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL='*'
os="$(uname -o)"