Skip to content

Instantly share code, notes, and snippets.

View a-chernykh's full-sized avatar

Andrey Chernykh a-chernykh

View GitHub Profile
@a-chernykh
a-chernykh / run.sh
Created April 17, 2014 13:16
Debug state leak with Rspec (wait till it fails and re-run with last random seed)
#!/bin/bash
rspec spec --order rand:$RANDOM
while [ $? -eq 0 ]; do
rspec spec --order rand:$RANDOM
done
@a-chernykh
a-chernykh / example.rb
Created April 8, 2014 12:00
em-http-request batch downloader with configurable concurrency level
class Downloader
CONCURRENCY = 50
def initializer(urls)
@urls = urls
end
def download
EventMachine.run do
EM::Iterator.new(@urls, CONCURRENCY).each do |url, iterator|
@a-chernykh
a-chernykh / test_upload_speed.rb
Created April 2, 2014 12:41
Amazon S3 speed test
require 'fog'
require 'benchmark'
storage = Fog::Storage.new({:provider => 'AWS', :aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'], :aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], :region => 'eu-west-1'})
directory = storage.directories.get('roadar-test1')
puts Benchmark.realtime {
directory.files.create(
:key => 'test.jpg',
:body => File.open("test.jpg"),
@a-chernykh
a-chernykh / default.rb
Created March 26, 2014 17:51
Install and compile TBB for android
default[:tbb][:version] = '4.2-20140122oss'
default[:tbb][:url] = 'https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb42_20140122oss_src.tgz'
default[:tbb][:sha] = 'f1bd8d983f93a10e340ba63f3a479632ddca1562a5242814dd82a378d3233b75'
@a-chernykh
a-chernykh / active_admin.en.yml
Created March 17, 2014 12:26
Add "not equals" option to ActiveAdmin string filter
en:
active_admin:
filters:
predicates:
not_eq: "Not equals"
@a-chernykh
a-chernykh / capture_fields.rb
Created January 21, 2014 12:16
Extract from pickle gem which adds capture_fields and parse_fields helpers
module CaptureFields
class Matcher
class << self
def match_quoted
'(?:\\\\"|[^\\"]|\\.)*'
end
def match_label
"(?::? \"#{match_quoted}\")"
end
@a-chernykh
a-chernykh / eager_loading.rb
Created December 13, 2012 10:17
Undocumented options of doing eager loading in ActiveRecord
# 1st way - do it automatically
# AR decides if it's better to use JOIN or separate query
User.includes(:profile)
# -> join or separate query
# 2nd way - always use JOIN
User.eager_load(:profile)
# -> SELECT `users`.`id` AS t0_r0, ..., `profiles`.`user_id` AS t1_r1, ... FROM `users` LEFT OUTER JOIN `profiles` ON `profiles`.`user_id` = `users`.`id`
# 3rd way - always do separate query
@a-chernykh
a-chernykh / hash_keys_dumper.rb
Created December 1, 2012 20:21
HashKeysDumper
class HashKeysDumper
def self.dump(hash)
hash.map do |k, v|
if v.is_a? Hash
keys = dump(v)
keys.map { |k1| [k, k1].join('.') }
else
k.to_s
end
end.flatten
@a-chernykh
a-chernykh / gist:3583565
Created September 1, 2012 19:06
Setup VPN server with WAN forwarding in 5 minutes
apt-get -y install pptpd dnsmasq
Add/uncomment the following line in /etc/sysctl.conf:
net.ipv4.ip_forward=1
Commit the changes by running as root:
sysctl -p
@a-chernykh
a-chernykh / log.txt
Created August 19, 2012 18:18 — forked from steveklabnik/log.txt
IAMA shorthand junkie
$ history | awk {'print $2, $3, $4'} | sort | uniq -c | sort -k1 -rn | head -n 30
681 gs
84 ll
84 gc
80 gd
80 gca
66 ga .
60 gb
48 cd ..
43 gp