Skip to content

Instantly share code, notes, and snippets.

View nicdoye's full-sized avatar
🚲
All shall be well, and all shall be well, and all manner of thing shall be well

Nic Doye nicdoye

🚲
All shall be well, and all shall be well, and all manner of thing shall be well
View GitHub Profile
@nicdoye
nicdoye / mount-cleaner.sh
Created April 18, 2017 12:52
Unmounting installation disks on macOS
#!/bin/bash
# IMPORTANT ASSUMPTION:
# YOU DO NOT HAVE ANY OTHER DISKS MOUNTED WITH AN `s1` PARTITION!
# A better way would be to use `diskutil list --plist` and parse the
# plist using ruby/python/javascript/your-language-of-choice
for disk in $(mount | egrep 'disk.+s1' | awk '{print $1}' | sed -e 's_^/dev/__' -e 's_s1$__')
do
diskutil eject ${disk}
@nicdoye
nicdoye / inode-remover.sh
Created June 15, 2017 13:20
Incredibly dangerous script to remove open inodes of deleted files
#!/bin/bash
while [[ $(lsof -nP +L1 | wc -l) > 1 ]]
do
pair=$(lsof -nP +L1 | tail -n 1 | awk '{print $2" " $4}')
pid=$(echo $pair | awk '{print $1}')
fd=$(echo $pair | awk '{print $2}' | sed -e 's_[a-z]__g')
file=$(mktemp)
# Race condition check on first line of lsof output
@nicdoye
nicdoye / tunnel.sh
Created June 15, 2017 16:12
SSH tunnel to Windows server in AWS VPC
#!/bin/bash
# SECURITY WARNING: the password will be visible in the process list on your local machine.
# Note: you need PuTTY's plink to get this to work, even on macOS
# macOS: `brew install putty`
# Windows: `choco install putty`
# Arguments:
# vpc_ip = Private IP Address of the Windows box. e.g. 172.16.1.1
@nicdoye
nicdoye / IntegerDivision.pm
Last active July 2, 2017 19:51
Perl Integer Division Module
package Math::IntegerDivision;
use Carp;
use Moose;
has 'numerator' => (
is => 'rw',
isa => 'Int'
);
@nicdoye
nicdoye / get-ip.pl
Created July 27, 2017 10:06
Finding your IP in Perl
#!/usr/bin/env perl
use strict;
use warnings;
use feature qw/say/;
use WebService::IFConfig::Client;
my $client = WebService::IFConfig::Client->new();
say $client->get_ip;'
@nicdoye
nicdoye / my_date.sh
Created July 31, 2017 10:43
macOS ISO8601 dates
my_date () {
local date_cmd
local date
# Check if GNU date installed as gdate
: type gdate 2> /dev/null
[ $? == 0 ] && date_cmd=gdate || date_cmd=date
# Attempt GNU date - date will be unset if this fails
date=$(${date_cmd} --iso-8601=second 2> /dev/null)
@nicdoye
nicdoye / time.sh
Created August 9, 2017 15:37
Minutes and Seconds from milliseconds
# Contains a rounding error, but we didn't need the accuracy
# Check if $response is an empty string or not a number
if [ -z ${response} ] || [ $(( ${response} + 0 )) == 0 ]
then
mins=undef
secs=undef
then
else
mins=$(( ${response} / 1000 / 60 ))
secs=$(( ${response} / 1000 - 60 * ${mins} ))
@nicdoye
nicdoye / nginx-hg.conf
Last active May 16, 2018 17:20
nginx conf for Mercurial with uWSGI
location /hg/ {
uwsgi_pass unix:/run/uwsgi/hgweb.sock;
include uwsgi_params;
auth_basic "Mercurial repository";
auth_basic_user_file /etc/nginx/htpasswd;
client_max_body_size 0;
}
@nicdoye
nicdoye / uwsgi.ini
Created May 16, 2018 17:28
uWSGI config for mercurial
[uwsgi]
uid = uwsgi
gid = uwsgi
pidfile = /run/uwsgi/uwsgi.pid
emperor = /etc/uwsgi.d
stats = /run/uwsgi/stats.sock
chmod-socket = 660
emperor-tyrant = true
cap = setgid,setuid
; https://www.mercurial-scm.org/wiki/PublishRepositoriesOnNginx
@nicdoye
nicdoye / hgweb.config
Created May 16, 2018 17:35
hgweb config
[paths]
/hg/ = /srv/hg/repos/*
[web]
style = gitweb
staticurl = /hg/static
allow_push = *