Skip to content

Instantly share code, notes, and snippets.

View vcaraulean's full-sized avatar

Valeriu Caraulean vcaraulean

View GitHub Profile
public class BackgroundServiceOnObservableSchedule : BackgroundService
{
private static readonly ILogger Logger = Log.ForContext<BackgroundServiceOnObservableSchedule>();
private readonly IObservable<Unit> workerSequence;
private IDisposable workerSubscription;
public BackgroundServiceOnObservableSchedule()
{
workerSequence = Observable
@vcaraulean
vcaraulean / NunitEquivalentCollectionTests.cs
Created September 12, 2018 14:30
Nunit 3.10.1 and NUnit 3.9.0 have different results in asserting this scenario
[Test]
public void EquivalentCollection()
{
var c1 = new[] { 1, 2, 3 };
var c2 = new[] { 1, 2, 3 };
Assert.That(c1, Is.EquivalentTo(c2).Using<int, int>((first, second) =>
{
Assert.That(first, Is.EqualTo(second));
return true;
@vcaraulean
vcaraulean / Program.cs
Last active July 11, 2016 21:43
Benchmarking NLog's TimeSource implementations
// Required nuget packages:
// - NLog
// - BenchmarkDotNet
namespace BenchmarkNlogTimeSources
{
public class TimeSourceBenchmark
{
private readonly TimeSource _fastLocalTimeSource = new FastLocalTimeSource();
private readonly TimeSource _fastUtcTimeSource = new FastUtcTimeSource();
private readonly TimeSource _accurateLocalTimeSource = new AccurateLocalTimeSource();
@vcaraulean
vcaraulean / starter.ps1
Created June 10, 2016 15:04
psake - passing in parameters
$scriptPath = $MyInvocation.MyCommand.Path
$scriptDir = Split-Path $scriptPath
Get-Module psake | Remove-Module
Import-Module ("C:\Dev\Tools\psake.4.6.0\tools\psake.psm1")
$envProperties = @{
"starterParam1"="start param value"
"starterParam2"=
@vcaraulean
vcaraulean / rx.cs
Created September 18, 2015 15:11
TakeUntilIdleFor
public static class Ex {
public static IObservable<T> TakeUntilIdleFor<T>(this IObservable<T> source, TimeSpan idleTime)
{
return Observable.Create<T>(o =>
{
var published = source.Publish();
var idle = published.Select(_ => Observable.Timer(idleTime)).Switch();
return new CompositeDisposable(published.Connect(), published.TakeUntil(idle).Subscribe(o));
});
}
@vcaraulean
vcaraulean / config_transform.msbuild
Created March 5, 2015 15:53
Confg transformations
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="TransformConfig" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="TransformXml"
AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<Target Name="TransformConfig">
<TransformXml Source="$(SourcePath)\Web.config"
Transform="$(SourcePath)\Web.$(Configuration).config"
Destination="Web.config"/>
</Target>
@vcaraulean
vcaraulean / MyExtensions.cs
Last active May 3, 2020 21:30
Capture logging in LINQPad
// Configuring
// Open Query Properties (F4) for My Extensions
// 1. Additional References: add NLog package from nuget
// 2. Additional Namespace Imports: add NLog.Config & NLog
public static class NLogExtensions
{
public static void LogToResults(string loggerName = "*", string minLevel="Trace")
{
var nlogConfig = @"
@vcaraulean
vcaraulean / Spreadsheet-to-Trello
Last active June 26, 2017 15:11
This is a Google Apps Script Engine that imports data from Google Spreadsheet to Trello. This script was used to import SoftShake'13 conference submissions from the spreadsheets to Trello. So, it's highly specific for SoftShake and it's one-off thing. Still, may be used as a base for more complex things. The conference had 2 spreadsheets, for Fr…
/**
* For more information on using the Spreadsheet API, see
* https://developers.google.com/apps-script/service_spreadsheet
*/
function uploadTracksToTrello() {
// Security settings
// Requesting token: https://trello.com/1/authorize?key=your app key&name=softshake+upload&expiration=never&response_type=token&scope=read,write
ScriptProperties.setProperty("appKey", "your app key");
ScriptProperties.setProperty("token", "your token");
@vcaraulean
vcaraulean / TestFixture.cs
Created May 9, 2011 14:43
Test case for BadUsageException
// Code is throwing exception:
// FileHelpers.BadUsageException : This engine works with record of type Country and you use records of type Country
// at FileHelpers.FileHelperEngine`1.WriteStream(TextWriter writer, IEnumerable`1 records, Int32 maxRecords) in FileHelperEngine.cs: line 558
// at FileHelpers.FileHelperEngine`1.WriteString(IEnumerable`1 records, Int32 maxRecords) in FileHelperEngine.cs: line 600
// at FileHelpers.FileHelperEngine`1.WriteString(IEnumerable`1 records) in FileHelperEngine.cs: line 591
// at FileHelpers.Tests.RunTimeClassesExtra.RuntimeClasses() in RunTimeClassExtra.cs: line 168
[Test]
public void RuntimeClasses()
{