Skip to content

Instantly share code, notes, and snippets.

View dbalduini's full-sized avatar

Diego Balduini dbalduini

  • Brazil
View GitHub Profile
@dbalduini
dbalduini / fileutil.py
Last active December 23, 2015 16:49
File and Directory util functions for common use.
#!/usr/bin/python2.7 -tt
# -*- coding: utf-8 -*-
"""
File Util
~~~~~~
File and Directory util functions for common use.
:copyright: (c) 2013 by Diego T. Balduini.
:license: BSD, see LICENSE for more details.
@dbalduini
dbalduini / cache.scala
Created February 11, 2014 20:22
AKKA -> Hot Swapping an Actor Behavior
class CacheSupervisorActor extends Actor with ActorLogging {
import CacheSupervisorActor._
val cache = context.actorOf(Props[CacheHotSwapActor])
override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) {
case e: ActorInitializationException => cache ! Memcached; Restart // When redis fails to connect, try memcached
case e: IllegalStateException => Stop // When memcached fails to connect
}
@dbalduini
dbalduini / RedisCachePlugin.scala
Created February 26, 2014 21:14
A Play Framework CachPlugin implementation for Redis. @see https://github.com/debasishg/scala-redis-nb
package plugins
import play.api.Application
import play.api.cache.CachePlugin
import play.api.cache.CacheAPI
import play.Play.{application => App}
import scala.concurrent.Await
import scala.concurrent.duration.DurationInt
@dbalduini
dbalduini / MemcachedCachePlugin.scala
Last active August 29, 2015 13:56
A Play Framework CachPlugin implementation for Memcached. @see https://github.com/couchbase/spymemcached
package plugins
import net.spy.memcached.ConnectionFactoryBuilder.Protocol
import net.spy.memcached.auth.{PlainCallbackHandler, AuthDescriptor}
import play.api.{PlayException, Application}
import play.api.cache.CachePlugin
import play.api.cache.CacheAPI
import net.spy.memcached._
import net.spy.memcached.transcoders.{SerializingTranscoder, Transcoder}
@dbalduini
dbalduini / FileStreaming.java
Last active November 23, 2016 19:42
SQL to File streaming with NIO
/**
*
* Statefull File Streaming class that write files with java.nio.
*
*/
class FileStreaming(filename: String) {
val output = new java.io.File(ApplicationConf.outputDir, filename)
output.createNewFile()
@dbalduini
dbalduini / Reaper.scala
Last active August 29, 2015 14:00
Akka Actor that tracks actors for shutting down the system when they all are terminated. @see http://letitcrash.com/post/30165507578/shutdown-patterns-in-akka-2
import akka.actor.{ActorLogging, Terminated, ActorRef, Actor}
import scala.collection.mutable
object Reaper {
case class WatchMe(ref: ActorRef)
}
class Reaper extends Actor with ActorLogging {
import Reaper._
@dbalduini
dbalduini / cleanup.scala
Created May 12, 2014 23:04
CleanUp Hook for scala tests
// src/test/scala/
package integration.config
class CleanUpHook {
//DBs.closeAll()
println("CleanUpHook => Connection Closed!")
}
// build.sbt
testOptions in Test += Tests.Cleanup( (loader: java.lang.ClassLoader) => {
@dbalduini
dbalduini / levenshtein.scala
Last active August 29, 2015 14:01
Levenshtein Distance Algorithm
// The straightforward, but very slow version
def levenshteinDistance(a: String, b: String): Int = {
val aLen = a.length
val bLen = b.length
def minimum(x: Int, y: Int, z: Int) = Math.min(Math.min(x, y), z)
def max(i: String, j: String) = if (i >= j) i else j
def min(i: String, j: String) = if (i <= j) i else j
def cost = if (aLen - 1 == bLen - 1) 0 else 1
if (min(a, b).length == 0) max(a, b).length
@dbalduini
dbalduini / DurationBridge.scala
Created July 16, 2014 18:25
Specs2 Duration Adapter
import scala.concurrent.duration.FiniteDuration
import scala.concurrent.duration.{Duration => ScalaDuration}
import org.specs2.time.{Duration => Specs2Duration}
import org.specs2.time.TimeConversions._
import java.util.concurrent.TimeUnit
object DurationBridge {
@dbalduini
dbalduini / MyDefaultFormats.scala
Created August 6, 2014 16:55
Some Default formats for ReactDynamo
import io.react2.reactdynamo._
import io.react2.reactdynamo.exceptions.ReadsException
import org.joda.time.{Period, DateTime}
import org.joda.time.format.ISODateTimeFormat
trait MyDefaultFormats {
val fmt = ISODateTimeFormat.dateTime
implicit object DateTimeWrites extends Writes[DateTime] {