Skip to content

Instantly share code, notes, and snippets.

View glaforge's full-sized avatar

Guillaume Laforge glaforge

View GitHub Profile
@Grab('com.github.groovy-wslite:groovy-wslite:1.1.0')
import wslite.rest.*
import wslite.http.auth.*
import groovy.json.*
def j = new JsonSlurper()
def base = 'http://apibunny.com'
def client = new RESTClient(base)
@glaforge
glaforge / Result from the Github API
Created March 30, 2015 20:23
Get star creation timestamps for a given repository
[
{
"login": "rsutphin",
"id": 2503,
"avatar_url": "https://avatars.githubusercontent.com/u/2503?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/rsutphin",
"html_url": "https://github.com/rsutphin",
"followers_url": "https://api.github.com/users/rsutphin/followers",
"following_url": "https://api.github.com/users/rsutphin/following{/other_user}",
@glaforge
glaforge / gist:1f481e0f0d043260aa9a
Created December 2, 2014 15:42
List and Map constructor coercion in Groovy
import groovy.transform.Immutable
@Immutable
class Point {
double x, y
}
Point p1 = [1.23, 5.67]
assert p1.x == 1.23 && p1.y == 5.67
@glaforge
glaforge / groovyCoffee.groovy
Created October 15, 2014 12:17
Calling @netopyr's CoffeeScript javax.script engine from Groovy with @grab
@Grab('com.netopyr.coffee4java:coffee4java:1.0.0')
import javax.script.ScriptEngineManager
def coffeescript = new ScriptEngineManager().getEngineByName('coffeescript').factory.scriptEngine
assert coffeescript.eval('''\
square = (x) -> x * x
return square 3''') == 9
### Keybase proof
I hereby claim:
* I am glaforge on github.
* I am glaforge (https://keybase.io/glaforge) on keybase.
* I have a public key whose fingerprint is C85A BAF0 7611 7C9D ACAD 94D1 5534 CABE 8D9C 5BD2
To claim this, I am signing this object:
@glaforge
glaforge / gist:e1d88601c053611678ae
Created July 1, 2014 10:24
List of some of the Netflix Groovy-related jobs
http://jobs.netflix.com/jobs.php?id=NFX01044
http://jobs.netflix.com/jobs.php?id=NFX00979
http://jobs.netflix.com/jobs.php?id=NFX01209
http://jobs.netflix.com/jobs.php?id=NFX01033
http://jobs.netflix.com/jobs.php?id=NFX01176
http://jobs.netflix.com/jobs.php?id=NFX01123
http://jobs.netflix.com/jobs.php?id=NFX01428
http://jobs.netflix.com/jobs.php?id=NFX00586
http://jobs.netflix.com/jobs.php?id=NFX01393
@glaforge
glaforge / gist:c44f439974b631a384e9
Created June 4, 2014 07:28
Super lean Grails 3.0 micro-services coming!
@Grab("com.h2database:h2:1.3.173")
import grails.persistence.*
@Entity
@Resource(uri='/books')
class Book {
String title
}
@glaforge
glaforge / LongAdderTest.groovy
Last active August 29, 2015 14:00 — forked from timyates/LongAdderTest.java
Tim's long adder test with streams but groovier :-)
import java.util.Random
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.atomic.LongAdder
import java.util.stream.IntStream
def frequencyMap = new ConcurrentHashMap<>()
def rnd = new Random()
IntStream.range( 0, 10000 )
.parallel()
import groovy.transform.*
import groovyx.gpars.actor.*
import groovyx.gpars.group.*
@Immutable class Calculate {}
@Immutable class Work { int start, nrOfElements }
@Immutable class Result { double value }
@Immutable class PiApproximation { double pi ; long duration }
double calculatePiFor( int start, int nrOfElements ) {
@glaforge
glaforge / gist:6692100
Created September 24, 2013 22:17
Safer usage of memcache service in Google App Engine
// when doing the following...
if (ms.containsKey(key)) {
return ms.get(key);
} else {
// ... fetch and cache
}
// you run the risk that between the existence check in the if statement
// and the moment you actually call the get,