Skip to content

Instantly share code, notes, and snippets.

View dennisfaust's full-sized avatar

Dennis Faust dennisfaust

View GitHub Profile
@dennisfaust
dennisfaust / DesEncrypter.scala
Created February 23, 2012 22:08
Triple DES (3DES) Encryption for Scala - adapted from exampledepot java
import com.sun.org.apache.xml.internal.security.utils.Base64
import javax.crypto._
import javax.crypto.spec._
import java.security.spec._
import java.io._
import java.security.{NoSuchAlgorithmException, InvalidAlgorithmParameterException}
import javax.management.openmbean.InvalidKeyException
import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException
import play.api.Logger
@dennisfaust
dennisfaust / sidekiq_unique_jobs_hash_compactor.rb
Created July 12, 2017 20:46
sidekiq-unique-jobs gem not deleting expired keys in its uniquejobs hash
# https://github.com/mhenrixon/sidekiq-unique-jobs/issues/161
# Even worse: https://github.com/mhenrixon/sidekiq-unique-jobs/issues/234
class SidekiqUniqueJobsHashCompactor
include Sidekiq::Worker
sidekiq_options queue: "slow"
def perform
# Skip if there are jobs queued...
return unless Sidekiq::Queue.all.select { |q| q.size > 100 }.blank?
@dennisfaust
dennisfaust / session_cookie_manipulation.rb
Last active March 2, 2017 18:58
Manipulating Rails 3 Session Cookies in Minitest
tl;dr:
$ set -o vi
$ bind '"\ee": emacs-editing-mode'
Then hit Esc-e
$ bind -P| grep edit
edit-and-execute-command can be found on "\C-x\C-e".
emacs-editing-mode is not bound to any keys
vi-editing-mode is not bound to any keys
@dennisfaust
dennisfaust / delayed_job_formatted_logger
Created December 20, 2013 01:57
Formatted log entries from Delayed Job without banging your head...
#
# config/delayed_job_config.rb
#
Delayed::Worker.logger = Logger.new(Rails.root.join('log', 'delayed_job.log'))
# The base logger is terrible. It only puts what you send. Nothing else. So I had to dig this up and add it.
class DJFormatter
def call(severity, time, progname, msg)
formatted_severity = sprintf("%-5s","#{severity}")
"#{Time.now.utc} [#{progname} #{formatted_severity} pid:#{$$}] #{msg.strip}\n"
@dennisfaust
dennisfaust / gist:7030268
Created October 17, 2013 18:54
Rspec for Testing Static Pages in a Ruby on Rails Site
describe "StaticPages", type: :feature do
header_links = [
{ name: 'Sign Up', link: '/signup', text: 'Contacts associated with purchases' },
{ name: 'Log In', link: '/login', text: 'Forgot your user name or password?' }
]
footer_links = [
{ name: 'Home', link: '/', text: 'Easily and efficiently track'},
{ name: 'Plans & Pricing', link: '/plan', text: 'Standard Features'},
@dennisfaust
dennisfaust / nullstring_example.go
Created November 5, 2015 19:51
github.com/go-playground/validator Custom null.string validator example
// NewNotBlankValidator - given field must be declared as a null.* type. This checks to make sure the
// field value is its zero or null, or filled in but NOT set to empty String
// e.g. {value="", err=false} is not valid.
func NewNotBlankValidator(db *gorm.DB) validator.Func {
return func(v *validator.Validate, topStruct reflect.Value, currentStruct reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool {
switch fieldKind {
case reflect.String:
if field.String() == "" && field.IsValid() {
return false
}
@dennisfaust
dennisfaust / ruby_redis_connect.rb
Created November 8, 2012 22:55
Ruby/Redis Connection - redis-rb doesn't throw an exception until you try to do something...
#
# Check: http://redis-rb.keyvalue.org/v2.2.0/
#
if Redis_connect
case Rails.env
when "production"
opts = {:host => "YOUR HOST NAME OR IP", :port => "6379", :thread_safe => true }
when "staging"
opts = {:host => "YOUR HOST NAME OR IP", :port => "6379", :thread_safe => true }
else
@dennisfaust
dennisfaust / etc_init_god.conf
Created November 8, 2012 19:37
Using Upstart to keep God process monitor up under RVM
# god upstart service
description "God process monitoring"
# When to start and stop the service
start on runlevel [2345]
stop on runlevel [016]
# Automatically restart process if crashed
kill timeout 20
respawn
@dennisfaust
dennisfaust / apache_basic_rewrite
Created July 26, 2011 23:07
Apache Basic Authentication for a Rewrite Condition Not a Directory
# Apache Basic Authentication for A Rewrite Condition not a Directory
#
# NOTE: Locations work off of URLs not directories
#
# Put this in your virtualhost block
#
<Location /YOUR_URL_PATH/>
AuthType Basic
AuthName "Authorization Required."
AuthUserFile /etc/httpd/conf/htpasswd