Skip to content

Instantly share code, notes, and snippets.

View olim7t's full-sized avatar

Olivier Michallat olim7t

  • DataStax
  • San Jose, CA
View GitHub Profile
@olim7t
olim7t / Tocttou.java
Created March 25, 2011 22:53
Example code for my blog post "The TOCTTOU attack", available at http://out-println.appspot.com/posts/tocttou.
import java.util.Date;
/**
* Example code for my blog post "The TOCTTOU attack", available at http://out-println.appspot.com/posts/tocttou.
*/
public class Tocttou {
public static final class Interval {
private final Date min;
@olim7t
olim7t / gist:957409
Created May 5, 2011 16:52
ToArrayTest.java
package test;
import java.util.concurrent.ConcurrentLinkedQueue;
/**
* Illustrates a case when Collection.size() cannot reliably indicate how many elements were dumped by
* Collection.toArray().
*
* Assuming that the array is reused and was previously filled with unrelated values, the fact that toArray()
* writes null after the last element is the only way to find out how many elements were actually dumped.
@olim7t
olim7t / gist:1061569
Created July 2, 2011 19:38
Game of Life
/**
* Clear-headed attempt at a functional-style, "Scala-way" implementation.
*
* Seems to work on trivial cases. Too lazy to write unit tests now (note to self: write them later and then pretend I did TDD).
*/
class GameOfLife(val width: Int, val height: Int, val liveCells: Set[(Int, Int)]) {
def nextIteration: GameOfLife = {
val newCells = for {
(cell, liveNeighborCount) <- liveNeighborCounts
/* Finds the version history of a POM in a Subversion repository */
import scala.sys.process.Process
object Conf {
val url = "put the url of your POM here"
val svn = "svn --username xxx"
}
case class Revision(number: Int, date: String, version: String) {
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Iterator;
import java.util.NoSuchElementException;
/** Streams the lines of a {@link BufferedReader} while applying some parsing method. */
abstract class LineParsingIterator<T> implements Iterator<T> {
private final BufferedReader input;
private T buffered; // parsed but not yet returned to the client
@olim7t
olim7t / DriverDemo.java
Created November 13, 2015 11:45
Standalone program that can be used as a template to reproduce Java driver issues
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import com.datastax.driver.mapping.Mapper;
import com.datastax.driver.mapping.MappingManager;
import com.datastax.driver.mapping.annotations.Frozen;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import com.datastax.driver.mapping.annotations.UDT;
public class DriverDemo {
@olim7t
olim7t / graphite.sh
Last active December 12, 2015 09:39
Install Graphite 0.9.10 on a Mac
# Install graphite 0.9.10 on a Mac (Python 2.6 preinstalled)
# Gathered from my notes, might not be 100% accurate
brew install py2cairo
sudo pip install Django==1.3
sudo pip install django-tagging
sudo pip install carbon
sudo pip install whisper
sudo pip install graphite-web
sudo pip install tagging # not sure if really useful
@olim7t
olim7t / FutureToTry.scala
Last active December 28, 2015 21:09
Coursera / Reactive Programming in Scala / Week 3 / Combinators on Futures Sample code for answers C and D of the quiz.
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
import scala.util.{Try, Success, Failure}
val f: Future[Int] = Future(1 / 0)
// answer C
def applyC[T](f: Future[T]): Future[Try[T]] = f.map(x => Try(x))
// answer D
// Naive solution (two passes)
def volume(l: List[Int]) = {
def peakRight(l: List[Int]) = l.foldRight(List(0)) { case (i, acc) => (i max acc.head) :: acc }.tail
def peakLeft(l: List[Int]) = peakRight(l.reverse).reverse
val waterLevels = peakLeft(l) zip peakRight(l) map { case (l, r) => l min r }
val volumes = l zip waterLevels map { case (g, w) => (w - g) max 0 }
volumes reduceLeft (_ + _)
}
@olim7t
olim7t / GatherAllListenAddresses.java
Created January 7, 2016 09:43
Use custom LBP to query system.local on each host
import com.datastax.driver.core.*;
import com.datastax.driver.core.policies.Policies;
import java.net.InetAddress;
public class GatherAllListenAddresses {
public static void main(String[] args) {
Cluster cluster = null;
try {
cluster = Cluster.builder()