Skip to content

Instantly share code, notes, and snippets.

@DaneWeber
DaneWeber / create-minecraft-sync-task.ps1
Created September 10, 2018 17:23
Sync Minecraft saves via cloud syncing solution like OneDrive
$syncScript = $PSScriptRoot + "\sync-minecraft-saves.ps1"
$minuteRepeat = 10
schtasks /create /sc minute /mo $minuteRepeat /ru System /tn "Minecraft Save Sync" /tr "powershell.exe -NoLogo -WindowStyle hidden -file $syncScript"
@DaneWeber
DaneWeber / nightRoute.rb
Created August 2, 2018 15:29
2018-08-02 Bits, Please! Code Fight
def nightRoute(city)
final = city.length - 1
hops = {}
hops[0] = city[0].each_with_index.map{ |length, island| length == -1 ? nil : [0, island] }.compact
(1..final).each do |iter|
hops[iter] = hops[iter - 1].map do |path|
if path[-1] == final
nil
else
city[path[-1]].each_with_index.map do |length, island|
@DaneWeber
DaneWeber / perfectCity.rb
Created July 26, 2018 15:15
2018-07-26 Bits, Please! Code Fight
def perfectCity(departure, destination)
diff(departure[0], destination[0]) + diff(departure[1], destination[1])
end
def diff(dep, dest)
naiveDiff = (dep - dest).abs
extraDiff = 0
if dep.ceil == dest.ceil
lower, higher = [dep, dest].sort
extraDiff = [lower - lower.floor, higher.ceil - higher].min * 2
@DaneWeber
DaneWeber / Jenkinsfile
Created July 15, 2018 04:01
Conflict Manager - check git branches for conflicts early and often
// This defines a cron trigger for a scripted Jenkinsfile:
properties([pipelineTriggers([cron('*/10 8-22 * * 1-5')])])
node {
stage('Checkout Repo with Script') {
checkout scm
}
dir('conflict-checker') {
stage('Check branches for merge conflicts') {
// These were defined in the Jenkinsfile for my particular needs, but don't have to be.
@DaneWeber
DaneWeber / swagger2pdf-Makefile
Last active October 30, 2018 20:28
Makefile command to use docker images for swagger2markdown piped to asciidoctor
# swagger2markup output fed to asciidoctor-pdf - all via published docker images
# The following is a Makefile command in the root of a web service repo with the following assumptions:
# ./swagger/v1/swagger.json is the swagger definition (created by rswag in my case)
# ./_docs/ is where we want the PDF and intermediate ADOC to live
# The ADOC file is pretty useful, but if you just want the PDF, it's a byproduct you might want to clean up
api_pdf:
docker run --rm -v $(shell pwd):/opt swagger2markup/swagger2markup convert -i /opt/swagger/v1/swagger.json -f /opt/_docs/api-definition
docker run --rm -v $(shell pwd)/_docs:/documents/ asciidoctor/docker-asciidoctor asciidoctor-pdf api-definition.adoc
@DaneWeber
DaneWeber / repo_states.sh
Created September 28, 2017 19:49
Quick status on all git repos in a directory. Based on this answer: https://unix.stackexchange.com/a/394245/63051
# Run the following from a directory containing multiple git repositories
# The `28` in the printf command is arbitrary and just matches the number of characters in the longest-named repo I have.
function repo_states () {
for repo in */; do
printf '%-28s' "$repo"
( cd "$repo" && git status --short --branch --untracked-files=no )
done
}
@DaneWeber
DaneWeber / AHK-Excel-Paste.ahk
Created April 4, 2016 17:09
Especially when you have hidden rows/columns, this pastes into the visible cells, based on tabs and new lines.
#z::
KeyWait, LWin
KeyWait, RWin
Clip0 = %ClipBoardAll% ; Save formatted text for later
ExcelBound = %Clipboard%
Loop, parse, ExcelBound, `r`n
{
if A_LoopField =
continue
nonemptyline := A_LoopField
@DaneWeber
DaneWeber / jsoftware.xml
Created September 15, 2015 20:19
Notepad++ syntax highlighting for the J programming language (jsoftware.com) - unknown original source
<NotepadPlus>
<UserLang name="J" ext="ijs" udlVersion="2.1">
<Settings>
<Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments">00NB. 01 02 03 04</Keywords>
<Keywords name="Numbers, prefix1"></Keywords>
<Keywords name="Numbers, prefix2"></Keywords>
@DaneWeber
DaneWeber / AHK-mailto-gmail.ahk
Last active September 13, 2015 00:39 — forked from anonymous/AHK-mailto-gmail.ahk
AHK script to be Windows default mailto app, forwarding to Gmail
; Copied from http://www.autohotkey.com/board/topic/39551-change-the-default-mailto-to-gmail/
; #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
; SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
Haystack = %1%
;~ If no paramter is given when the run of it, it registers itself as the default mailto
; commented out because I'd rather set it as default by myself.
@DaneWeber
DaneWeber / AHK-per-file-7zip.ahk
Last active August 29, 2015 14:27
Use 7Zip on each file within a directory, saving the resulting archives to a new directory
InputBox, password, Enter Password for Archives, The generated archives will be protected with the password you enter below. Your input will be masked., hide
; Using FileSelectFolder is just one way of choosing your folders.
FileSelectFolder, sourcepath,,, Source Folder
sourcepath := RegExReplace(sourcepath, "\\$") ; Removes the trailing backslash, if present.
FileSelectFolder, destinationpath,,, Destination Folder
destinationpath := RegExReplace(destinationpath, "\\$") ; Removes the trailing backslash, if present.
sourcelen := StrLen(sourcepath) + 1 ; Determine the start of the variable part of the path.
Loop, Files, %sourcepath%\*.*, R
{