Skip to content

Instantly share code, notes, and snippets.

Wolfgang Teuber wteuber

Block or report user

Report or block wteuber

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@wteuber
wteuber / git_branch_gone_prune_delete.sh
Last active Oct 29, 2019
git: prune and delete gone local branches
View git_branch_gone_prune_delete.sh
#!/usr/bin/env bash
git remote prune origin && git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d
@wteuber
wteuber / mysql-install.sh
Created May 28, 2019 — forked from cemeng/mysql-install.sh
Codeship Install MySQL 5.6
View mysql-install.sh
#!/bin/bash
# Install a custom MySQL 5.7 version - https://www.mysql.com
#
# To run this script on Codeship, add the following
# command to your project's setup commands:
# \curl -sSL https://raw.githubusercontent.com/codeship/scripts/master/packages/mysql-5.7.sh | bash -s
#
# Add the following environment variables to your project configuration
# (otherwise the defaults below will be used).
# * MYSQL_VERSION
View colored_git_diff_html.sh
# Mac OS X:
script -q colored_word_diff.txt git diff --word-diff
cat colored_word_diff.txt|ansi2html > colored_word_diff.html
@wteuber
wteuber / redirection.txt
Created Aug 17, 2018
All about redirection of terminal/file output.
View redirection.txt
|| visible in terminal || visible in file || existing
Syntax || StdOut | StdErr || StdOut | StdErr || file
==========++==========+==========++==========+==========++===========
> || no | yes || yes | no || overwrite
>> || no | yes || yes | no || append
|| | || | ||
2> || yes | no || no | yes || overwrite
2>> || yes | no || no | yes || append
|| | || | ||
&> || no | no || yes | yes || overwrite
View benford_generator.rb
r = rand
(1..9).map{|n|Math.log10(1+1.0/n)}.inject([]){|ar,el|ar+[(ar.last||0)+el]}.each_with_index.map{|p,i|[i+1,p]}.find{|n,p|r<p}
@wteuber
wteuber / trace.rb
Created Aug 17, 2017
set_trace_func
View trace.rb
set_trace_func -> (event, file, line, id, binding, classname) do
if event == 'call' && meth = binding.eval('__method__')
params = binding.method(meth).parameters.select{|e| e[0] != :block}
values = params.map{|_, var| [var, binding.local_variable_get(var)]}
printf "%8s %s:%-2d %15s %8s %s\n", event, file, line, id, classname, values.inspect
else
printf "%8s %s:%-2d %15s %8s\n", event, file, line, id, classname
end
end
@wteuber
wteuber / rubocop_stable_auto_correct.rb
Created Jun 2, 2017 — forked from florianpilz/rubocop_stable_auto_correct.rb
Script to check & commit all stable auto-corrections of Rubocop
View rubocop_stable_auto_correct.rb
require 'fileutils'
# TODO get list of Cops that support auto-correct
# for each cop, run the following
# only commit if change was stable
# (each run takes ~2 minutes)
prefix = ARGV[0]
files = Dir["#{prefix}/**/*.rb"].sort
orig = Hash[files.map do |file|
FileUtils.cp(file, "#{file}.orig")
[file, %x(ruby --dump insns #{file}).gsub(/\s+\(\s*\d+\)$/, '')]
@wteuber
wteuber / mov2gif.sh
Last active Jan 27, 2017
Convert mov to gif (made for QuickTime Player screen recordings)
View mov2gif.sh
#! /usr/bin/env bash
if [ -f "$1" ]; then
echo "ffmpeg -i $1 -vcodec copy -acodec copy $1.mp4 ..."
ffmpeg -i $1 -vcodec copy -acodec copy $1.mp4
else
echo "ERROR: Could not find $1"
fi
if [ \( $? -eq 0 \) -a \( -f $1.mp4 \) ]; then
@wteuber
wteuber / memo.rb
Created Jan 11, 2017 — forked from LeFnord/memo.rb
ruby memoization benchmarks
View memo.rb
require "benchmark"
class A
def name
@name ||= begin
rand
end
end
end
View git_subtree_merging.md

Subtree merging and you

If you’re using Git, you’re probably aware of submodules. They’re useful when you want to integrate and track another Git repository into your own. But there are two other options at your disposal.

The first one is to simply merge the other repository. This works fine as long as there are no conflicting files, but chances are there already are or will be in the future, which makes this option not too useful.

This is where the subtree merge strategy comes in. It allows you to merge another repository (let’s call it “Project B”) into your own, but into its own subdirectory. It takes a bit of effort to set everything up the first time, but after that a pull from the other repository is all that is needed to update.

Here’s how you set it up. First you need to add Project B as a remote:

You can’t perform that action at this time.