Skip to content

Instantly share code, notes, and snippets.

View bcardiff's full-sized avatar
💭
OOO

Brian J. Cardiff bcardiff

💭
OOO
View GitHub Profile
puts "sfs"
10.times do |i|
puts i
{ "Lon\nrem", i, i + 1 }
sleep 1
end
sleep 2
puts "sfs"
class Crystal::Playground::Agent
def sendp(t)
send(t)
end
end
# $p.try &.sendp("bug")
10.times do |i|
puts i
@bcardiff
bcardiff / match.cr
Last active March 17, 2016 15:31
benchmark for headers matching
require "benchmark"
def string_contains_word(source, word)
return false unless source
start = source.index(word)
return false unless start
return false if start > 0 && source[start-1].alphanumeric?
return false if start + word.size < source.size && source[start + word.size].alphanumeric?
true
end
data = [{"Brian", 42}, {"Alan", 30}, {"Brian", 32}]
# unstable
data.sort_by &.[0] # => [{"Brian", 42}, {"Alan", 30}, {"Brian", 32}]
# stable
data.map_with_index { |d,i| {d,i} }.sort_by { |di| {di[0][0], di[1]} }.map { |di| di[0] } # => [{"Alan", 30}, {"Brian", 42}, {"Brian", 32}]
def ej(a, b)
size = [a.size, b.size].min
a[0...size].zip(b[0...size])
.map { |e| e.max }
.map(&.+(4))
.select(&.>=(10))
.sum
end
ej [1,5,3,4], [5,3,6]
@bcardiff
bcardiff / README.md
Created April 8, 2016 08:59
sample-data-confirm

This sample show how to attach globally to events over dynamically created elements. And how can data-* attributes be used to customize behaviour.

@bcardiff
bcardiff / README.md
Last active October 6, 2016 19:37
Extract csv from a pdf with checkboxes
$ brew install imagemagick
$ brew install tesseract
$ ls -l1
Basic Infrastructure.pdf
extract.rb

$ ruby extract.rb 2> /dev/null
extracting page 1
.....................
@bcardiff
bcardiff / pool_retry_reconnect.cr
Created December 16, 2016 15:11
Test the reconnect/retry logic in crystal-pg
require "pg"
# start a posgress
# $ docker run --name mypg -e POSTGRES_DB=crystal -e POSTGRES_USER=postgress -e POSTGRES_PASSWORD= -p 5432:5432 postgres:9.5
# <ctrl+c> to stop server
# restart it
# $ docker start -a mypg
# <ctrl+c> to stop server
require "json"
struct Slice(T)
def to_json(json : JSON::Builder)
json.array do
each do |e|
e.to_json(json)
end
end
end
@bcardiff
bcardiff / list-deps.cr
Last active May 29, 2024 17:37
List binary dependencies to build a minimal docker image from scratch
unless ARGV.size > 0
puts " Missing executable file argument"
puts " Usage (in a Dockerfile)"
puts " RUN crystal run ./path/to/list-deps.cr -- ./bin/executable"
exit 1
end
executable = File.expand_path(ARGV[0])
unless File.exists?(executable)