Skip to content

Instantly share code, notes, and snippets.

@nicwolff
nicwolff / gist:1414689
Created December 1, 2011 07:36
Password generator bookmarklet
javascript:var%20b64pad='';var%20chrsz=8;function%20b64_sha1(s)%7Breturn%20binb2b64(core_sha1(str2binb(s),s.length*chrsz));%7Dfunction%20core_sha1(x,len)%7Bx%5Blen%3E%3E5%5D%7C=0x80%3C%3C(24-len);x%5B((len+64%3E%3E9)%3C%3C4)+15%5D=len;var%20w=Array(80);var%20a=1732584193;var%20b=-271733879;var%20c=-1732584194;var%20d=271733878;var%20e=-1009589776;for(var%20i=0;i%3Cx.length;i+=16)%7Bvar%20olda=a;var%20oldb=b;var%20oldc=c;var%20oldd=d;var%20olde=e;for(var%20j=0;j%3C80;j++)%7Bif(j%3C16)w%5Bj%5D=x%5Bi+j%5D;else%20w%5Bj%5D=rol(w%5Bj-3%5D%5Ew%5Bj-8%5D%5Ew%5Bj-14%5D%5Ew%5Bj-16%5D,1);var%20t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w%5Bj%5D),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;%7Da=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);%7Dreturn%20Array(a,b,c,d,e);%7Dfunction%20sha1_ft(t,b,c,d)%7Bif(t%3C20)return%20(b&c)%7C((~b)&d);if(t%3C40)return%20b%5Ec%5Ed;if(t%3C60)return%20(b&c)%7C(b&d)%7C(c&d);return%20b%5Ec%5Ed;%7Dfunction%20sha1_kt(t)%7Bretur
@nicwolff
nicwolff / gist:1484025
Created December 16, 2011 01:47
Perl tr to replace Microsoft Wingdings in UTF-8 text with similar Unicode characters
tr/\x{F0F0}\x{F08D}\x{F063}\x{F0FC}\x{F0AF}\x{F022}\x{F051}\x{F06B}\x{F03F}\x{F07C}\x{F02A}\x{F069}\x{F036}\x{F0AA}\x{F041}\x{F074}\x{F084}\x{F056}\x{F0F4}\x{F087}\x{F0A1}\x{F07B}\x{F060}\x{F0F5}\x{F062}\x{F0EF}\x{F08B}\x{F08A}\x{F091}\x{F06C}\x{F0A4}\x{F07E}\x{F046}\x{F0F6}\x{F0B6}\x{F0D8}\x{F0D6}\x{F028}\x{F05E}\x{F037}\x{F048}\x{F083}\x{F058}\x{F076}\x{F0FE}\x{F0B3}\x{F065}\x{F045}\x{F04E}\x{F061}\x{F0FA}\x{F0F7}\x{F081}\x{F064}\x{F0A0}\x{F066}\x{F04F}\x{F0E8}\x{F093}\x{F05C}\x{F07F}\x{F067}\x{F08F}\x{F086}\x{F0AD}\x{F0AE}\x{F08C}\x{F094}\x{F079}\x{F0F1}\x{F05A}\x{F029}\x{F04A}\x{F077}\x{F07A}\x{F088}\x{F072}\x{F09E}\x{F06E}\x{F0F8}\x{F023}\x{F0F9}\x{F0D5}\x{F090}\x{F068}\x{F0B5}\x{F0FB}\x{F0AB}\x{F059}\x{F0B1}\x{F0A7}\x{F06F}\x{F0A5}\x{F05F}\x{F095}\x{F080}\x{F075}\x{F054}\x{F0FD}\x{F0F2}\x{F078}\x{F03E}\x{F082}\x{F05D}\x{F0DC}\x{F0AC}\x{F085}\x{F047}\x{F089}\x{F0F3}\x{F0B2}\x{F09F}\x{F0A8}\x{F092}\x{F04C}\x{F06D}\x{F07D}\x{F073}\x{F021}\x{F06A}\x{F08E}\x{F05B}\x{F052}\x{F071}/\x{21E8}\x{2777}\x{264D}\x{2
@nicwolff
nicwolff / gist:1484073
Created December 16, 2011 01:59
Perl script to translate Windows CP1252 characters hidden in UTF-8 text
#!/usr/bin/perl
use strict;
# This program attempts to translate Windows CP1252 characters in UTF-8 text
# This will work pretty well, except where a file has a CP1252 character in the range
# 0xC0-0xDF followed by one in 0x80-0xBF, or one in 0xE0-0xEF followed by two in 0x80-0xBF.
# Those (hopefully rare) cases will get translated to the wrong Unicode characters.
use Encode;
@nicwolff
nicwolff / gist:1553103
Created January 3, 2012 02:12
Push work log entries into JIRA via the SOAP API
#!/usr/bin/perl -s
use SOAP::Lite;
use constant HOST => 'your.jira.host';
our ($u, $p, $d, $soap, $auth);
if ( ! $d ) {
@nicwolff
nicwolff / gist:1648637
Created January 20, 2012 17:43
IO::File::Cycle
package IO::File::Cycle;
use base 'IO::File';
sub open {
my $io = shift;
*{$io} = \ {
cycle_count => 1,
cycle_file => $_[0],
cycle_called_with => [@_],
};
@nicwolff
nicwolff / gist:1648639
Created January 20, 2012 17:43
IO::File::Sitemap
package IO::File::Cycle;
use base 'IO::File';
sub open {
my $io = shift;
*{$io} = \ {
cycle_count => 1,
cycle_file => $_[0],
cycle_called_with => [@_],
};
@nicwolff
nicwolff / gist:1663989
Last active September 29, 2015 20:38
tcsh Git completion rules
set complete = enhance
complete git "p/1/(commit branch remote merge pull push amend clone grep rebase reset bisect diff clone blame log checkout fetch status wdiff symbolic-ref reflog delete-merged)/" \
'n/br/`git branch|cut -c 3-|xargs echo --contains`/' 'N/br/`git branch|cut -c 3-`/' \
'n/cb/`git branch|cut -c 3-`/' \
'n/branch/`git branch|cut -c 3-`/' 'N/branch/`git branch|cut -c 3-`/' \
'n/co/`git branch|cut -c 3-`/' \
'N/symbolic-ref/`git branch|cut -c 3-`/' \
'n/merge/`git branch|cut -c 3-|xargs echo --no-ff --ff-only --squash`/' \
'N/merge/`git branch|cut -c 3-`/' \
'n/rebase/`git branch|cut -c 3-| xargs echo --continue --abort --onto --skip --interactive`/' \
@nicwolff
nicwolff / gist:1678003
Created January 25, 2012 19:19
Parse XML to a DOM object
function parseXML( xml ) {
if( window.ActiveXObject && window.GetObject ) {
var dom = new ActiveXObject( 'Microsoft.XMLDOM' );
dom.loadXML( xml );
return dom;
}
if( window.DOMParser )
return new DOMParser().parseFromString( xml, 'text/xml' );
throw new Error( 'No XML parser available' );
}
@nicwolff
nicwolff / gist:1679350
Last active September 29, 2015 22:37
.gitconfig
[user]
name = Nic Wolff
email = nwolff@hearst.com
[alias]
st = status -sb
pr = pull --rebase
co = checkout
back = checkout '@{-2}'
cb = checkout -b
br = branch
@nicwolff
nicwolff / gist:1771712
Created February 8, 2012 18:01
Simple-minded stack trace for when I can't use Carp::cluck
sub stack_trace {
my ( $path, $line, $subr, $trace );
my $max_depth = 30;
my $i = 1;
$trace = "--- Begin stack trace ---\n";
while ( (my @call_details = (caller($i++))) && ($i<$max_depth) ) {
next if $call_details[1] =~ m{/(Mason|Plack)/};
$trace .= "$call_details[1] line $call_details[2] in function $call_details[3]\n";
}
$trace .= ("--- End stack trace ---\n");