Skip to content

Instantly share code, notes, and snippets.

View JefClaes's full-sized avatar

Jef Claes JefClaes

View GitHub Profile
@JefClaes
JefClaes / gist:8711243
Created January 30, 2014 15:38
Why would events be published more than once?
var Config = require('../config.js').Config;
var eventstore = require('eventstore');
var storage = require('eventstore.mongodb');
var es;
var S4 = function() {
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
};
@JefClaes
JefClaes / gist:8975968
Last active August 29, 2015 13:56
Domain Event flavours
// Udi style w Static Domain Events
var dispatcher = new RecordingDomainEventsDispatcher();
DomainEvents.Dispatcher = dispatcher;
var customer = new Customer(new Address());
customer.Move(new Address());
Console.WriteLine("Customer moved: " + dispatcher.RecordedDomainEvent(new CustomerMoved()));
@JefClaes
JefClaes / gist:9418765
Created March 7, 2014 19:58
A generic self-contained self-refreshing knockout.js model for binding to a dashboard widget.
var ajaxWidgetModel = function (options) {
var self = this;
self.data = ko.observable();
self.tick = function () {
$.get(options.url, function (data) {
self.data(ko.mapping.fromJS(data));
});
};
@JefClaes
JefClaes / gist:9818345
Created March 27, 2014 20:49
Reactive polling
var ticks = Observable.Interval(TimeSpan.FromSeconds(_settings.IntervalInSeconds));
var pollResults = Observable.Create<PollResult>(observer =>
{
var results = // do request
foreach (var result in results)
observer.OnNext(new PollResult(result));
return Disposable.Empty;
@JefClaes
JefClaes / gist:496388c579dc9ce86b56
Created July 19, 2014 19:32
Is this functional C#?
class Program
{
static void Main(string[] args)
{
var item = InventoryItemPure.Register(new InventoryItemName("Domain Driven Design"));
item = InventoryItemPure.CheckIn(item, new InventoryItemCount(4));
item = InventoryItemPure.CheckOut(item, new InventoryItemCount(3));
item = InventoryItemPure.Deactivate(item);
Console.ReadLine();
module Program
open Inventory
open System
[<EntryPoint>]
let main argv =
let item = Inventory.Register (Inventory.InventoryItemName.Make "Domain Driven Design")
let itemAfterCheckingIn = Inventory.CheckIn (InventoryItemCount.Make 3) item
let itemAfterCheckingOut = Inventory.CheckOut (InventoryItemCount.Make 1) itemAfterCheckingIn
let deactivatedItem = Inventory.Deactivate itemAfterCheckingOut
@JefClaes
JefClaes / gist:2c0063514c829181fde5
Last active August 29, 2015 14:07
Code snippet for reading Event Store stream in slices using F#
let rec read stream startFrom (conn : IEventStoreConnection) =
seq {
let size = 10000
let slice = conn.ReadStreamEventsForwardAsync(stream, startFrom, size, true).Result
if (slice.IsEndOfStream) then
yield slice
else
yield slice
yield! read stream (startFrom + size) conn
@JefClaes
JefClaes / gist:e9137dcd4bb8a8636c95
Created October 19, 2014 11:03
Recursion in C#
static void Main()
{
Recursive(0);
}
static void Recursive(int i)
{
Console.WriteLine(i);
Recursive(i + 1);
}
@JefClaes
JefClaes / gist:5a195fe10cc106e88d1b
Created October 19, 2014 11:06
Result of Recursion in C#
...
171424
171425
171426
171427
Process is terminated due to StackOverflowException.
@JefClaes
JefClaes / gist:9a646cea31c05984683b
Last active August 29, 2015 14:07
Recursion in F#
let rec recursiveFun i =
Console.WriteLine(i.ToString())
recursiveFun (i + 1)
recursiveFun 0