Skip to content

Instantly share code, notes, and snippets.

@LeeCampbell
LeeCampbell / KdbClient.cs
Created June 4, 2013 17:16
KDB Client rewritten from sample Kx code to use more useful names.
//2012.06.07 fixed scoping of GUID
//2012.05.29 for use with kdb+v3.0, changed handshake and added Guid. boolean v6->vt tracks type capability.
//2012.01.26 refactored clamp into clampDT, for Date.DateTime()
//2012.01.25 rz() clamp datetime to valid range
//2010.11.17 Block sending new timetypes to version of kdb+ prior to v2.6 (use prior release of KdbClient.cs for older kdb+ versions)
// Max buffer size (default 64kB) used for reading is now a parameter to the KdbClient constructor
// Date, Month, Minute, Second, KTimeSpan are now serializable, implement IComparable
// and have default constructors for xml serialization.
// Added GetNullRepresentation(Type t)
//2010.08.05 Added KException for exceptions due to server error, authentication fail and func decode
@LeeCampbell
LeeCampbell / INotifyPropertyChangedExtensions.cs
Created February 9, 2012 15:19
Extension methods to help with INotifyPropertyChanged interface (and ObservableCollection<T>)
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
//TODO: Allow the ability to provide multiple properties to WhenPropertyChanges
@LeeCampbell
LeeCampbell / TestsToEnglish.linq
Created February 13, 2012 10:47
LinqPad Query to query the Given/When/Then list of tests
void Main()
{
//I want to have it format like:
//-------------------------------
// Given a new strategy
// When the name is modified
// Then raise property changed
// When trade added
// The DeltaCashSum equals Trade DeltaCash
// When invalid trade added
@LeeCampbell
LeeCampbell / Logger.cs
Created October 2, 2012 08:20
Logging implementation with Rx features
using System;
using System.Diagnostics;
using System.Reactive.Disposables;
using System.Reactive.Linq;
using System.Reactive.Concurrency;
using Microsoft.Practices.Prism.Logging;
using log4net;
using log4net.Core;
//From ResSharper --> Options --> Code Inspection --> Code Annotations -->Copy default implementation to clipboard
@LeeCampbell
LeeCampbell / InstallSqlForDev.ps1
Created November 15, 2016 08:40
Install SQL 2016 Dev command line (Powershell)
#Installs SQL Server locally with standard settings for Developers/Testers.
# Install SQL from command line help - https://msdn.microsoft.com/en-us/library/ms144259.aspx
$sw = [Diagnostics.Stopwatch]::StartNew()
$currentUserName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name;
$SqlServerIsoImagePath = "???\Downloads\Microsoft\SQL Server 2016 Developer Edition\en_sql_server_2016_developer_x64_dvd_8777069.iso"
#Mount the installation media, and change to the mounted Drive.
$mountVolume = Mount-DiskImage -ImagePath $SqlServerIsoImagePath -PassThru
$driveLetter = ($mountVolume | Get-Volume).DriveLetter
$drivePath = $driveLetter + ":"
@LeeCampbell
LeeCampbell / ProjectDependencies.cs
Created November 3, 2016 05:41
LinqPad Script that generates the GraphViz file to visualize dependencies.
void Main()
{
//Generates the .gv file content that can be put into GraphViz to vizualize your dependency tree.
// Once in GrpahViz, export to svg to avoid guessing how big you will need it (e.g. compared to PNG/JPG or other raster formats)
var rootPath = @"C:\source\GitHub\Mercury";
var outputPath = @"C:\source\GitHub\Mercury\references.dot";
var limit = 1000;
var projects = Directory.GetFiles(rootPath, "*.csproj", SearchOption.AllDirectories)
.Where(path=>!path.ToLowerInvariant().Contains("test")) //Exclude tests for sanity
@LeeCampbell
LeeCampbell / PerfTest.cs
Created October 11, 2015 15:28
Simple LinqPad sample of how to execute a performance test in C#
void Main()
{
var messageCount = 10000;
var sum =0L;
var result = ThroughputTestResult.Capture(messageCount, () => sum = SumOfSquares(messageCount));
Console.WriteLine($"Result: SumOfSquares({messageCount}) = {sum}");
Console.WriteLine(result.ToString());
}