Skip to content

Instantly share code, notes, and snippets.

View mardambey's full-sized avatar
👾
Getting things done.

Hisham Mardam-Bey mardambey

👾
Getting things done.
View GitHub Profile
@mardambey
mardambey / fb-upload.html
Created June 13, 2015 14:20
POC client side Javascript image upload to Facebook's Graph API.
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
</head>
<body>
<form>
<input type="file" accept="image/*" id="capture" capture="camera">
<img id="blah" src="#" alt="your image"/>
</form>
sub vcl_hash {
set req.hash += req.url;
set req.hash += req.http.host;
set req.http.X-Calc-Hash = "true";
if( req.http.Cookie ~ "JSESSIONID" ) {
set req.http.X-Varnish-Hashed-On =
regsub( req.http.Cookie, "^.*?JSESSIONID=([a-zA-z0-9]{32}\.[a-zA-Z0-9]+)([\s$\n])*.*?$", "\1" );
@mardambey
mardambey / gist:1326933
Created October 31, 2011 04:42
Sample Kafka stdin producer
package com.edate.data.test
import java.util.Properties
import kafka.producer.ProducerConfig
import kafka.producer.Producer
import kafka.message.Message
import kafka.producer.ProducerData
import kafka.producer.ProducerData
import kafka.producer.Partitioner
/**
@mardambey
mardambey / mod_js.erl
Created March 31, 2012 22:45
mod_js is a *prototype* module that uses erlang_js to allow filtering stanza's through JavaScript for altering, dropping, etc.
%% mod_js is a prototype module that uses erlang_js
%% to allow filtering stanza's through JavaScript
%% for altering, dropping, etc.
%%
%% NOTE: The JavaScript path is hardcoded to "test.js"
%% at the end of this file.
%%
-module(mod_js).
-author('hisham.mardambey@gmail.com').
@mardambey
mardambey / gist:2654382
Created May 10, 2012 16:41
Reset Kafka offsets in ZooKeeper by deleting the corresponding nodes.
/**
* Notes: This code uses AsyncValue[T], a custom class that uses actors
* to allow concurrent operations on the provided type. It can be replaced
* by an Atomic object from the java.util.concurrent package or something
* that provides similar functionality.
*/
/**
* Resets the offsets for the given group / topic pair.
@mardambey
mardambey / AsyncValue.scala
Created May 12, 2012 01:51
An actor wrapping an object of type T providing async get/set calls without blocking (sacrificing accuracy).
import scala.actors.Actor
case class Set(value:Any)
case class Get()
case class Destroy()
/*
* An actor wrapping an object of type T providing async get/set
* calls without blocking (sacrificing accuracy).
*
@mardambey
mardambey / ConsistentHashRouter.scala
Created August 23, 2012 02:22
An Akka router that sends messages to its routees based on a consistent hash.
object ConsistentHashRouter {
/**
* Creates a new ConsistentHashRouter, routing to the specified routees
*/
def apply(routees: Iterable[ActorRef]): ConsistentHashRouter =
new ConsistentHashRouter(routees = routees map (_.path.toString))
}
case class ConsistentHashRouter(
@mardambey
mardambey / JedisSentinelPoolRunner.java
Created August 24, 2013 19:05
Testing JedisSentinelPool subscribed to Redis Sentinel following +switch-master to find the new master.
package redis.clients.jedis;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Logger;
public class JedisSentinelPoolRunner {
private static Logger log = Logger.getLogger(JedisSentinelPoolRunner.class.getName());
@mardambey
mardambey / LimitedOutputStream.scala
Created January 17, 2017 16:24
An output stream that throws an exception if more than the given bytes have been written to it.
import java.io.{FilterOutputStream, IOException, OutputStream}
class LimitedOutputStream(out: OutputStream , maxBytes: Long) extends FilterOutputStream(out) {
private var bytesWritten: Long = 0L
@throws(classOf[IOException])
override def write(b: Int) {
ensureCapacity(1)
super.write(b)
@mardambey
mardambey / mod_msg_filter.erl
Created April 25, 2012 03:58
mod_msg_filter allows the filtering of "message" stanzas across an HTTP service.
%%
%% mod_msg_filter allows the filtering of "message"
%% stanzas across an HTTP service. The URL of the
%% service must be passed as part of the module's
%% configuration. Both JIDs and their resources are
%% passed as part of the query string and the result
%% is expected to be one of:
%%
%% <status value="denied">
%% <stanza1><error/></stanza1>