Skip to content

Instantly share code, notes, and snippets.

Jonathan Barber jbarber

View GitHub Profile
jbarber /
Last active Aug 29, 2015
Moose meta-example
use strict;
use warnings;
use Moose;
my $meta = Moose::Meta::Class->create_anon_class();
$meta->add_attribute("foo" => (is => "rw", isa => "Int"));
my $object = $meta->new_object(foo => 2);
jbarber / timer.go
Created Jul 7, 2014
Go routine on a changable timer
View timer.go
package main
Example of creating go routine with time based channel - this time can be
adjusted by the parent, so it can postpone (or bring forwards) whatever the
child should do. This could be useful for creating a polling mechanism which
you occasionally want to run sooner.
The parent creates the channel and passes it to the go routine to wait for 10
seconds. This channel is used to communicate how long the child should wait
jbarber / xml-parse.go
Created Jul 9, 2014
Example of parsing XML in Go, including extracting attributes
View xml-parse.go
package main
import (
type document struct {
Title string `xml:"title"`
jbarber / limiter.go
Last active Aug 29, 2015
Function that returns updated values once every time period, no matter how often it is called
View limiter.go
package main
import (
// This function returns a function that returns the current time. The current
// time is only updated when the returned function is called, and at most once
// during every period
jbarber / shibboleth-login.clj
Created Oct 13, 2014
Shibboleth example login
View shibboleth-login.clj
(comment (defproject otrs "0.1.0-SNAPSHOT"
:description "Example of Shibboleth login to OTRS with htmlunit"
:url ""
:license {:name "Eclipse Public License"
:url ""}
:dependencies [[org.clojure/clojure "1.6.0"]
[net.sourceforge.htmlunit/htmlunit "2.15"]]))
(ns otrs.core
(:import (com.gargoylesoftware.htmlunit WebClient)))
jbarber / get-ldap-tls
Last active Aug 29, 2015
Get LDAP TLS certificate in PEM format
View get-ldap-tls
#!/usr/bin/env perl
use strict;
use warnings;
use Net::SSLeay qw(get_peer_certificate);
use Net::LDAP;
my $ldap = Net::LDAP->new("") or die $!;
$ldap->start_tls or die $!;
$ldap->bind or die $!;
jbarber / gist:143351e2db1bebb4c910
Last active Aug 29, 2015
Example of liberator resource with post redirect and setting flash
View gist:143351e2db1bebb4c910
(ns user
(:require [liberator core representation]
[ring.middleware params session flash]
;; Return HTTP 303 - have to manage Location ourselves
:available-media-types ["text/html" "application/x-www-form-urlencoded"]
:allowed-methods [:get :post]
jbarber / huffman.clj
Created Mar 12, 2015
Huffman encoding example
View huffman.clj
(defn freq2leaves
"Convert a sequence of symbols and their frequency into a sequence of hash-maps with keys :sym :freq"
[xs] (map #(hash-map :sym (first %) :freq (second %)) xs))
(defn huffman
"Perform Huffman encoding for the sequence xs of hash maps from freq1leaves.
Return tree of hash-maps with keys :freq and either :symbol (when a leaf) or
:children (when an internal node). :children is a vector of the child nodes."
(letfn [(sort-queue [xs] (sort #(compare (:freq %1) (:freq %2)) xs))
jbarber /
Created Apr 2, 2015
Example perl DBUS service with AnyEvent::DBUS
#!/usr/bin/env perl
# Simple (!) Net::DBus service example using AnyEvent::DBus to run the event
# loop. You can examine the service with the following command:
# gdbus introspect --session --dest=pt.up.fe.door -o /pt/up/fe/door
# And invoke the unlock method as follows:
# dbus-send --session --dest=pt.up.fe.door /pt/up/fe/door pt.up.fe.door.unlock
# Once the unlock method is invoked, the program terminates.
jbarber /
Created Apr 2, 2015
Example of Net::SIP and AnyEvent with hanging up caller
#!/usr/bin/env perl
# Make call when program receives SIGHUP, hangup when call is answered
use strict;
use warnings;
use 5.10.0;
use Net::SIP 0.687;
#use Net::SIP::Debug 1;
You can’t perform that action at this time.