Skip to content

Instantly share code, notes, and snippets.

View DarinMacRae's full-sized avatar

Darin MacRae DarinMacRae

View GitHub Profile
@DarinMacRae
DarinMacRae / documentdb_random.js
Last active September 28, 2018 16:57 — forked from murdockcrc/documentdb_random.js
DocumentDB stored procedure to retrieve a random document
/*
The MIT License (MIT)
Copyright (c) 2015 HdV Media GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
@DarinMacRae
DarinMacRae / FilesystemWatchCache.cs
Created December 15, 2016 15:10 — forked from anaisbetts/FilesystemWatchCache.cs
An Rx-friendly Filesystem Watcher
using System;
using System.IO;
using System.Reactive.Disposables;
using System.Reactive.Linq;
using ReactiveUI;
namespace SaveAllTheTime.Models
{
interface IFilesystemWatchCache
{
@DarinMacRae
DarinMacRae / main.cs
Created June 6, 2013 14:07
The program accepts a filename which contains an arbitrary number of lines. Each line contains an integer user ID and an integer user age, delimited by a comma. The program outputs a list of tuples, where each tuple contains a distinct age and the count of users with that age, delimited by a comma.
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
@DarinMacRae
DarinMacRae / NimbleCache.cs
Last active December 18, 2015 03:58
Here is a class I wrote several years back. We needed a thread-safe dictionary and it was before .NET 4.5 shipped with its "concurrent" collections. It is mostly obsolete code now but it illustrates the kind of code I am capable of writing. It's super fast, has good error checking and handling. It supports testability and some customization.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace Caching
{
public class NimbleCache<K, V> : ICache<K, V>
{
public NimbleCache(string name)
@DarinMacRae
DarinMacRae / Intro2MSpec
Created March 20, 2013 19:36
This is a super cool way to specify tests, IMO!
Establish context = () =>
{
persistence.Setup(x => x.Initialize());
persistence.Setup(x => x.GetUndispatchedCommits()).Returns(commits);
dispatcher.Setup(x => x.Dispatch(commits.First()));
dispatcher.Setup(x => x.Dispatch(commits.Last()));
};
Because of = () =>
new AsynchronousDispatchScheduler(dispatcher.Object, persistence.Object);