Skip to content

Instantly share code, notes, and snippets.

View jadamcrain's full-sized avatar

Adam Crain jadamcrain

View GitHub Profile
@jadamcrain
jadamcrain / gist:918250b9de44ce6fc5c1c67e7c124ad5
Created July 6, 2018 21:55
pattern for storing/extracting different datatypes in C++
struct IDataHandler
{
virtual void handle(<data type #1> value) = 0;
...
virtual void handle(<data type N> value) = 0;
};
using stored_data_type_t = std::function<void (IDataHandler&)>;
using data_vector_t = std::vector<stored_data_type_t>;
@jadamcrain
jadamcrain / gist:19d472547b7556672d13
Created June 30, 2015 01:32
parsing of a time string to seconds since unix epoch
#include <iostream>
#include <chrono>
#include <assert.h>
#include <cstring>
using namespace std;
using namespace std::chrono;
bool parse_oadr_time(system_clock::time_point& time, const char* input)
{
@jadamcrain
jadamcrain / gist:64346c0901b7efefd153
Created March 11, 2015 22:21
Time change test program
#include <iostream>
#include <chrono>
#include <thread>
int main(int argc, char* argv[])
{
int i = 0;
while (true)
@jadamcrain
jadamcrain / gist:6993679
Last active December 25, 2015 14:49
Integer truncation and overflow
#include <iostream>
#include <cstdint>
#include <limits>
using namespace std;
/* Produces output:
count16 is: 65536
count16 is: 0
@jadamcrain
jadamcrain / gist:5374293
Last active December 16, 2015 03:59
Functional solution in Scala to: http://www.scoopshot.com/hiring-developer Hopeless plagiarism of multiple sources
/**
* Functional solution in Scala to:
* http://www.scoopshot.com/hiring-developer/
*
* Hopeless plagiarism of multiple sources
*/
object PiFinder extends App {
def isPalindrome(digits: Seq[BigInt]): Boolean = digits == digits.reverse
@jadamcrain
jadamcrain / UUIDTest.java
Created August 11, 2012 14:37
Oracle Java 7 update 5 UUID race condition
import java.util.List;
import java.util.concurrent.ConcurrentSkipListSet;
import java.util.LinkedList;
import java.util.Set;
import java.util.UUID;
class UUIDGenThread extends Thread {
private final Set<UUID> set;
private final int numUUIDS;
@jadamcrain
jadamcrain / UUIDTest.scala
Created August 11, 2012 14:31
Scala 2.10M6 / Oracle Java 7 Update 5 UUID bug
import java.util.UUID
object MutlithreadedUniquenessOfUUID extends App {
class UUIDThread(numUUID: Int, set: java.util.Set[UUID]) extends Thread {
override def run() {
for(i <- 1 to numUUID) {
val uuid = UUID.randomUUID()
if(!set.add(uuid)) println("Collision: " + uuid)
}
@jadamcrain
jadamcrain / UUIDTest.java
Created August 11, 2012 11:12
Looking for UUID collisions in Java
import java.util.HashSet;
import java.util.LinkedList;
import java.util.UUID;
public class UUIDTest {
public static void main(String[] args) throws InterruptedException {
HashSet<UUID> set = new HashSet<UUID>(1000);
LinkedList<Thread> threads = new LinkedList<Thread>();
for(int i=0; i<128; ++i) {
@jadamcrain
jadamcrain / MultithreadedUniquenessOfUUID.scala
Created August 10, 2012 23:38
Problem with Java 7 UUID.random()
package com.automatak.archivist.server.uuid
import org.scalatest.FunSuite
import org.scalatest.matchers.ShouldMatchers
import org.scalatest.junit.JUnitRunner
import org.junit.runner.RunWith
import com.automatak.commons.testing._
import java.util.UUID
@jadamcrain
jadamcrain / TreeMapStmVsSynchronized.scala
Created July 30, 2012 19:40
Help me optimize the tree map rangeImpl query
package test
import org.scalatest.FunSuite
import org.scalatest.matchers.ShouldMatchers
import org.scalatest.junit.JUnitRunner
import org.junit.runner.RunWith
import collection.immutable.SortedMap
import concurrent.stm.Ref
import java.util.UUID