Skip to content

Instantly share code, notes, and snippets.

@kch
kch / filetrim.rb
Created January 1, 2010 23:57
removes trailing spaces on every line, leading and trailing empty lines; ensures files end with a line feed
#!/usr/bin/env ruby -pi
#
# Copyright © 2010 Caio Chassot
# Licensed under the WTFPL <http://sam.zoy.org/wtfpl/COPYING>
#
# File Trim. (Vertical and Right trim.)
# Command receives file paths as arguments. Modifies them in-place.
# - removes trailing spaces on every line;
# - removes leading and trailing empty lines;
# - ensures files end with a line feed.
@kch
kch / remove_entities.sh
Created January 2, 2010 19:38
decode all html entities in a project's files, in-place
$ ack --no-sql --ignore-dir=vendor -l '&\S+?;' | xargs \
ruby1.9 -rhtmlentities -pi -e '$_ = HTMLEntities.new.decode($_)'
@kch
kch / functions.sh
Created January 3, 2010 00:57
Awesome bash functions for the mac-minded
# Allows gnu du to accept bsd's du -d option by wrapping
# gdu and translating -d to --max-depth before calling it.
# Useful on linux and solaris
du --help 2>&1 | grep -q -- '-d depth' || du () {
args=`echo "$@" | perl -pe 's/(-\w*)d(\d+)\b/$1 --max-depth=$2/'`
gnu_du=`which gdu du 2>/dev/null | head -1`
"$gnu_du" $args
}
egem () { $EDITOR $(dirname `gem which $@`)/..; } # opens a gem directory in $EDITOR
@kch
kch / ssh-put-key.sh
Created January 4, 2010 19:11
puts your ssh public key(s) on a remote server in a single command without fuss
#!/usr/bin/env bash
if [ $# -lt 1 ]; then
echo "Usage: `basename $0` <destination_ssh_connection_arguments>"
echo "Adds your public keys to a remote server."
exit
fi
ssh $@ "
mkdir -p ~/.ssh
@kch
kch / output
Created January 19, 2010 03:00
how I can't shut up on the @lettersapp mailing lists
# #### email-init
# Caio Chassot....: 18.4%  ==================
# Jonas Wisser....:  6.8%  =======
# Paul Ward.......:  4.7%  =====
# Gavin Eadie.....:  4.0%  ====
# Jesper..........:  3.7%  ====
# Michael Ströck..:  3.6%  ====
# Faisal N Jawdat.:  3.4%  ===
# Mo McRoberts....:  3.3%  ===
# Brent Simmons...:  3.1%  ===
@kch
kch / quiz.rb
Created January 26, 2010 23:22
yet another annoying ruby quiz. now solved.
#!/usr/bin/env ruby1.9
# encoding: UTF-8
###############################################################################
#### The quiz: turn this hash… ################################################
###############################################################################
def initial_hash
{ 'child.name' => "a",
'child.surname' => "b",
@kch
kch / fizz-fucking-buzz.rb
Created February 2, 2010 08:00
Who doesn't love fizzbuzz?
i, f = 1, 100
i.upto(f) { |n| puts \
[[3, "Fizz"], [5, "Buzz"]].map { |d, s|
s if n % d == 0 }.join.sub(/^$/, n.to_s) }
@kch
kch / 1-yconvert.rb
Created February 4, 2010 22:28
Converts Yojimbo's export format for password and serial number records into CSV.
#!/usr/bin/env ruby1.9
# encoding: UTF-8
# rb-yconvert by Caio Chassot
# because yconvert by Steven Frank is PHP and this cannot stand.
# http://stevenf.com/downloads/yconvert.php.txt
#
# Converts Yojimbo's export format for password and serial number
# records into CSV.
#
@kch
kch / rb_main.rb
Created May 2, 2010 16:09
A more idiomatic rb_main for MacRuby applications
# Loading the Cocoa framework. If you need to load more frameworks, you can do that here too.
framework 'Cocoa'
# Loading all the Ruby project files.
[__FILE__].concat(Dir[File.join(NSBundle.mainBundle.resourcePath.fileSystemRepresentation, '*.{rb,rbo}')])
.map { |path| File.basename(path, File.extname(path)) }.uniq[1..-1]
.each { |name| require(name) }
# Starting the Cocoa main loop.
NSApplicationMain(0, nil)
@kch
kch / cd-last.sh
Created May 7, 2010 12:42
make each new terminal tab open in the last dir you cd'd to. put this in your .bashrc
lastdir_store="$HOME/.last_cd_path"
function cd () {
builtin cd "$@"
exitcode=$?
pwd > "$lastdir_store"
return $exitcode
}
[ -f "$lastdir_store" ] && target=`cat "$lastdir_store"`