Skip to content

Instantly share code, notes, and snippets.

View zh4ngx's full-sized avatar

Andy Zhang zh4ngx

  • San Francisco, CA
View GitHub Profile
@zh4ngx
zh4ngx / .profile fragment
Created June 11, 2012 04:03 — forked from jcamenisch/.profile fragment
Lightning-fast project-wide find/replace with git grep and sed
gg_replace() {
if [[ "$#" == "0" ]]; then
echo 'Usage:'
echo ' gg_replace term replacement file_mask'
echo
echo 'Example:'
echo ' gg_replace cappuchino cappuccino *.html'
echo
else
find=$1; shift
@zh4ngx
zh4ngx / _profile_preview.haml
Created September 6, 2012 19:23
CarrierWave Image Preview/Upload
.river-pics
= profile_image_for current_user
%p #{current_user.first_name}, #{current_user.age}
.blurb
%p
#content
%h1 Satisfied?
%p Hover your mouse over your picture.
%p This is how others will see you.
$stack, $draws = [], {}
def method_missing *args
return if args[0][/^to_/]
$stack << args.map { |a| a or $stack.pop }
$draws[$stack.pop(2)[0][0]] = args[1] if args[0] == :<
end
class Array
def +@
Log onto bad mongo primary
Use mongotop to find bad database
Run this to find long running queries
db.currentOp()['inprog'].filter(function (t){return t.secs_running > 10}).map(function (t){return t.opid})
Kill bad ops with
db.killOp(<opid>)
@zh4ngx
zh4ngx / find_missing_number.rb
Last active December 23, 2015 23:39
Find missing number from array
def missing_number num_array:
n = num_array.length + 1
expected = n * (n + 1) / 2
actual = num_array.reduce :+
missing = expected - actual
return missing
end
@zh4ngx
zh4ngx / fizzbuzz.rb
Created September 26, 2013 08:10
Extensible FizzBuzz
def fizzbuzz(max):
1.upto(max).each do |num|
line = ''
line << 'Fizz' if num % 3 == 0
line << 'Buzz' if num % 5 == 0
line = num if line.empty?
p line
end
end
@zh4ngx
zh4ngx / tokenize_string.rb
Created September 26, 2013 08:39
Given string and punctuation, tokenize string on punctuation and whitespace. Done using both split and scan.
def tokenize_query_split query, punctuation
punc_regex = /[#{punctuation}\s]+/
tokens = query.split(punc_regex)
tokens.each do |token|
p token
end
end
@zh4ngx
zh4ngx / simple_datastore.rb
Created October 2, 2013 07:59
Simple key-value datastore. Basic data & transaction commands.
## SUMMARY
# Use Hash($db) to maintain state
# Track # open transactions
# Memoize modified vars per transaction ($history)
# Be naught, use globals (not thread-safe)
$db = {}
$transactions = 0
$history = {}
@zh4ngx
zh4ngx / stack_machine_functional.rb
Created October 8, 2013 06:31
Functional-ish version of stack machine
$stack = []
def solution(s)
s.each_char do |c|
case c
when /[0-9]/
$stack.push c
puts c
when '+'
return -1 unless op_nums(lambda { |left, right| left + right })
@zh4ngx
zh4ngx / sudoku.py
Created October 10, 2013 02:36
Quick solution to sudoku checker. Does NOT check if board is correctly completable, only if it's currently correct.
# Check nums for rows, columns and blocks
def check(nums):
num_dict = {}
# assume nums is a list of integers
# placeholder for empty is None
for num in nums:
if not num:
continue
if num in num_dict:
return false