Skip to content

Instantly share code, notes, and snippets.

Avatar

Filippos Vasilakis vasilakisfil

View GitHub Profile
@vasilakisfil
vasilakisfil / deadpool_postgres.rs
Created Jul 20, 2020
deadpool postgres simple setup
View deadpool_postgres.rs
use deadpool_postgres::tokio_postgres::NoTls;
use deadpool_postgres::{Config, ManagerConfig, Pool, PoolError, RecyclingMethod};
use once_cell::sync::Lazy;
use std::sync::Arc;
static DB_POOL: Lazy<Arc<Pool>> = Lazy::new(|| {
let mut cfg = Config::new();
cfg.dbname = Some(
std::env::var("DATABASE_URL")
.map_err(|_| String::from("Environment variable Database URL could not be read"))
@vasilakisfil
vasilakisfil / error.rs
Created Apr 4, 2020
basic error structure in Rust
View error.rs
use std::{error::Error as StdError, fmt};
#[derive(Debug)]
pub struct Error {
pub kind: ErrorKind,
pub context: ErrorContext,
}
#[derive(Debug)]
pub enum ErrorKind {
@vasilakisfil
vasilakisfil / timing_benchmark.rb
Created Feb 27, 2019
simple timing/benchmark mechanism for Ruby
View timing_benchmark.rb
class TimingBenchmark
def measure(label, &block)
@label_times ||= {}
start = Time.now
result = block.call
@label_times[label] = Time.now - start
return result
end
@vasilakisfil
vasilakisfil / hash_first.rb
Created Nov 16, 2018
Accessing a hash value by key is extremely fast. Is it possible to access the value of the first key with the same performance ?
View hash_first.rb
require 'benchmark/ips'
require 'faker'
_hash = 100.times.inject({}){|hash, i|
hash[Faker::Lorem.word] = Faker::Lorem.word
hash
}
_hash[:aaa] = 'a'
HASH = _hash
@vasilakisfil
vasilakisfil / performance.rb
Created Sep 23, 2018
instance_exec vs args in a lambda
View performance.rb
require 'bundler/setup'
Bundler.require(:default)
class Serializer
def user_path(id)
"/user/#{id}"
end
end
class User
@vasilakisfil
vasilakisfil / decorators.rb
Last active Dec 21, 2017
Decorator strategies battletested. Original script: https://gist.github.com/rbishop/7555357
View decorators.rb
#ENV: Ruby 2.4.1, a i7-6700HQ CPU, 16GB RAM
require 'benchmark'
require 'delegate'
require 'forwardable'
class Person
def initialize(name)
@name = name
end
@vasilakisfil
vasilakisfil / nested_controllers.rb
Created Oct 24, 2017
A module for creating UI controllers in Rails
View nested_controllers.rb
module NestedControllers
CALLBACKS_OPTS = [:filter, :if, :unless, :kind].freeze
#adds the relative paths to controller so you can do `render 'subcontroller/something'`
#instead of `render 'parent_controller/subcontroller/something'`
#(solves 2)
def self.extended(base)
base.prepend_view_path("app/views/#{base.controller_path}/")
end
@vasilakisfil
vasilakisfil / file.rb
Created Oct 4, 2017
Weird Ruby behavior on private method
View file.rb
class Foobar
def run!
self.foobar = 'test' #doesn't fail?
hey = self.foobar #bang! fails
end
private
attr_accessor :foobar
end
Foobar.new.run!
@vasilakisfil
vasilakisfil / flash_hash.rb
Created Jun 1, 2017
Rails flash improvements
View flash_hash.rb
module ActionDispatch
class Flash
class FlashHash
# Returns a hash that includes everything but the given keys.
# hash = { a: true, b: false, c: nil}
# hash.except(:c) # => { a: true, b: false}
# hash # => { a: true, b: false, c: nil}
#
# This is useful for limiting a set of parameters to everything but a few known toggles:
# @person.update(params[:person].except(:admin))
View gist:0186bea379ed80fefe40c7638512c5c3
pi@raspberrypi:~ $ crystal
/opt/crystal/embedded/bin/crystal: /lib/arm-linux-gnueabihf/libtinfo.so.5: no version information available (required by /opt/crystal/embedded/bin/crystal)
/opt/crystal/embedded/bin/crystal: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /opt/crystal/embedded/bin/crystal)