Skip to content

Instantly share code, notes, and snippets.

View biboudis's full-sized avatar

Aggelos Biboudis biboudis

View GitHub Profile
@biboudis
biboudis / playlistmanager.cpp
Last active December 28, 2015 19:29
Signals in QT (class taken from clementine's playlist manager header file).
class PlaylistManagerInterface : public QObject {
Q_OBJECT
public:
PlaylistManagerInterface(Application* app, QObject* parent)
: QObject(parent) {}
// methods
public slots:
virtual void Load(const QString& filename) = 0;
@biboudis
biboudis / gist:1931336
Created February 28, 2012 08:53
A quick bloom filter in Rx
public static IObservable<Tuple<TSource, bool>> Bloom<TSource>(this IObservable<TSource> source, int size)
{
BitArray bitmap = new BitArray(size);
return source.Select<TSource, Tuple<TSource, bool>>(value =>
{
var hashCode = value.GetHashCode();
var tuple = new Tuple<TSource, bool>(value, bitmap[hashCode] == true);
bitmap[hashCode] = true;
return tuple;
@biboudis
biboudis / gist:1869437
Created February 20, 2012 14:21
A random number, observable generator in Rx, without closing over a Random value.
IDisposable generator = Observable.Generate<Tuple<Random, int>, int>(
new Tuple<Random, int>(new Random(), 0),
value => value.Item2 < 100,
value => new Tuple<Random, int>(value.Item1, value.Item2 + 1),
value => value.Item1.Next(0, 100), scheduler).Subscribe(Console.WriteLine);
@biboudis
biboudis / Expressions.cpp
Created February 19, 2012 13:02
Just a Visitor pattern skeleton in C++. No gimmicks.
#include "Expressions.h"
void* SumExpression::Accept(Visitor& v)
{
return (void*) v.VisitSum(this);
}
void* ConstantExpression::Accept(Visitor& v)
{
return (void*) v.VisitConstant(this);
@biboudis
biboudis / GoldenRatio.java
Created December 15, 2011 16:17
A simple memoization with AspectJ, for golden ratio calculation.
package tests.recursive;
public class GoldenRation {
public static long fib(int n) {
if (n <= 1) return n;
else return fib(n-1) + fib(n-2);
}
public static double goldenratio(int n){
return fib(n+1)*Math.pow(fib(n),-1);
@biboudis
biboudis / Mandelbrot.java
Last active August 29, 2015 14:00
Test sequential and parallel mandelbrot in Java 8 with JMH. (http://openjdk.java.net/projects/code-tools/jmh/)
package benchmark;
import java.util.stream.*;
import org.openjdk.jmh.annotations.*;
import java.util.concurrent.TimeUnit;
import java.util.*;
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@BenchmarkMode(Mode.AverageTime)
public class MyBenchmark {