Skip to content

Instantly share code, notes, and snippets.

import java.util.concurrent.atomic.AtomicReference
import java.util.concurrent.{TimeUnit, Executors}
import java.util.Date
import javax.servlet.http.{HttpServletRequest, HttpServletResponse, HttpServlet}
import javax.servlet.{ServletContext, ServletConfig}
import org.glassfish.grizzly.comet._
import org.glassfish.grizzly.http.HttpRequestPacket
import collection.JavaConversions._
import org.glassfish.grizzly.http.server.{Response, HttpServer}
import org.glassfish.grizzly.servlet.ServletHandler
@casualjim
casualjim / ScalatraServer.scala
Created April 14, 2011 18:56
dsl proposal for embedded servers
object Main {
def main(args: Array[String]) {
WebServer("src/main/webapp", Config.webServerPort) { server =>
server.inContext("/api") { context =>
context.mount("validate", new ValidateApp)
context.mount("channels", new MessageChannelApp)
context.mount("streams", new StreamsApp)
context.mount("", new AccountApp)
@casualjim
casualjim / growler.rb
Created April 15, 2011 13:32
A growl script for backchat notifications.. will be turned into a gem
require 'rubygems'
require 'growl'
require 'net/http'
require 'net/https'
require 'yajl/json_gem'
API_KEY="YOUR_API_KEY"
STREAM_NAME="controlbox"
ICON_PATH="/Users/ivan/Dropbox/Mojolly/design/backchat/apple-touch-icon.png"
import java.nio.charset.Charset
import java.util.concurrent.{TimeUnit, Executors}
import java.util.Date
import org.zeromq.ZMQ
trait ZeroMQTrials
object Server {
def main(args: Array[String]) {
@casualjim
casualjim / zeromq_poller.scala
Created April 25, 2011 22:48
A poller to have a more event driven interface to jzmq
object ZeroMQPoller {
type ZMessageHandler = ZMessage => Unit
}
class ZeroMQPoller(context: Context) {
import ZeroMQPoller._
private var poller: Poller = null
private val pollinHandlers = ListBuffer[ZMessageHandler]()
± ivan@azkaban:~
» cd src/scala/specs2
± ivan@azkaban:~/src/scala/specs2
git:(2.9.0-1.4) ✗ » sbt test-compile
[info] Building project specs2 1.4-SNAPSHOT against Scala 2.9.0
[info] using Project with sbt 0.7.7 and Scala 2.7.7
[info]
[info] == compile ==
[info] Source analysis: 0 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
@casualjim
casualjim / rvmrc.sh
Created June 2, 2011 14:02
baseline rvmrc file
export RUBYOPT="rubygems"
rvm_install_on_use_flag=1
if [ -z $(rvm gemset list | grep virtmachines) 2> /dev/null ]; then
rvm ruby-1.8.7
rvm gemset create virtmachines
fi
rvm ruby-1.8.7@virtmachines
import sbt._
import Keys._
import org.sbtidea._
import SbtIdeaPlugin._
import Scope.{GlobalScope, ThisScope}
object BuildSettings {
val buildOrganization = "com.mojolly.backchat"
val buildScalaVersion = "2.9.0-1"
val buildVersion = "0.8.1-SNAPSHOT"
type Transformer = Request => Request
object OptimusPrime extends Transformer { def apply(req: Request) = req }
object Megatron extends Transformer { def apply(req: Request) = throw new RuntimeException("Invalid operation!")}
@casualjim
casualjim / ipv6_address_parser.scala
Created August 6, 2011 14:26
A ParserCombinator base ipv6 address parser
trait IPv6AddressParser extends RegexParsers {
def hexDigit = """[0123456789abcdefABCDEF]""".r
def decOctet = """25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d""".r
def dottedDecOctet = decOctet <~ "."
private def IPv4Address = dottedDecOctet ~ dottedDecOctet ~ dottedDecOctet ~ decOctet ^^ {
case a ~ b ~ c ~ d ⇒ a + "." + b + "." + c + "." + d
}
private def h16_2 = repN(2, hexDigit)