Skip to content

Instantly share code, notes, and snippets.

@ngbrown
ngbrown / appveyor.yml
Last active August 29, 2015 14:16
AppVeyor for rabbitmq-dotnet-client
version: 3.4.5.{build}
configuration: Release
platform: Any CPU
environment:
RABBITMQ_RABBITMQCTL_PATH: C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.1\sbin\rabbitmqctl.bat
install:
- ps: >-
choco install rabbitmq -Version 3.4.1.0
Set-Item -Path Env:\ERLANG_HOME -Value ([Environment]::GetEnvironmentVariables("Machine")["ERLANG_HOME"])
#! /usr/bin/python
# logging to DbgView with OutputDebugString
# from https://gist.github.com/ngbrown/d38064a844426a00fdaa and https://gist.github.com/wh13371/92df4715fc17eb74299d
import logging
import ctypes
# output "logging" messages to DbgView via OutputDebugString (Windows only!)
OutputDebugStringW = ctypes.windll.kernel32.OutputDebugStringW
OutputDebugStringW.argtypes = [ctypes.c_wchar_p]
@ngbrown
ngbrown / gist:953502517ccabd5bd264
Last active August 29, 2015 14:22
Determine lines of code
Function IIf($If, $IfTrue, $IfFalse) {
If ($If -IsNot "Boolean") {$_ = $If}
If ($If) {If ($IfTrue -is "ScriptBlock") {&$IfTrue} Else {$IfTrue}}
Else {If ($IfFalse -is "ScriptBlock") {&$IfFalse} Else {$IfFalse}}
}
Get-ChildItem -include *.js -exclude *.min.js -recurse | ?{$_.fullname -notmatch "\\node_modules\\?"}
Get-ChildItem -include *.js -recurse | select-string . | Group-Object Path -NoElement | ForEach-Object {IIf($_.Count -le 50) "a. <=50" {IIf($_.Count -le 100) "b. <=100" {IIf($_.Count -le 200) "c. <=200" {IIf($_.Count -le 500) "d. <=500" "e. >500"}}}} | Group-Object -NoElement | Sort-Object Name
@ngbrown
ngbrown / ScanSum.cs
Created June 19, 2010 17:03
Examples of using TextScanner
namespace ScanSum
{
using System;
using System.Globalization;
using System.IO;
using TextScanner;
internal class ScanSum
{
@ngbrown
ngbrown / WideCharToMultiByteTest.c
Created April 23, 2012 01:06
Demonstrates Windows reading past the source string when using WideCharToMultiByte.
// WideCharToMultiByteTest.c : Demonstrates Windows reading past the source string
// when using WideCharToMultiByte.
// The source problem uses UNICODE_STRING, so it may not be null terminated.
//
#define _WIN32_WINNT 0x400
#include <WinSDKVer.h>
#include <stdio.h>
#include <tchar.h>
@ngbrown
ngbrown / strstartswith.h
Created July 3, 2012 17:52
string starts with
#ifndef STRSTARTSWITH_H_
#define STRSTARTSWITH_H_
// From http://blogs.msdn.com/b/the1/archive/2004/05/07/128242.aspx
#ifndef __GNUC__
template <typename T, size_t N>
char ( &_ArraySizeHelper( T (&array)[N] ))[N];
#define countof(array) (sizeof(_ArraySizeHelper(array)))
#else
@ngbrown
ngbrown / WhenGivenAttribute.cs
Created November 9, 2012 19:52
It would be nice if SpecFlow accepted custom attributes based off of StepDefinitionBaseAttribute
namespace StepDefinitions
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using TechTalk.SpecFlow;
using TechTalk.SpecFlow.Assist;
@ngbrown
ngbrown / database_spaceused.sql
Created November 3, 2015 23:49
Determine table row count and sizes of full database
-- Determine table row count and sizes of full database
-- Inspired from http://stackoverflow.com/a/19916574/25182
SET NOCOUNT ON
DECLARE @TableInfo TABLE (tablename varchar(128), [rows] int, reserved varchar(18), [data] varchar(18), index_size varchar(18), unused varchar(18))
DECLARE @cmd1 varchar(200)
SET @cmd1 = 'exec sp_spaceused ''?'''
INSERT INTO @TableInfo (tablename,[rows],reserved,[data],index_size,unused)
EXEC sp_msforeachtable @command1=@cmd1
@ngbrown
ngbrown / TileCanvas.cs
Last active December 19, 2015 08:19 — forked from robfe/TileCanvas.cs
TileCanvas updated to be more efficient with adding and removing tiled images.
public class TileCanvas : Canvas
{
public static readonly DependencyProperty ImageSourceProperty = DependencyProperty.Register(
"ImageSource",
typeof(ImageSource),
typeof(TileCanvas),
new PropertyMetadata(null, ImageSourceChanged));
private Size lastActualSize;
public abstract class BindableBase : INotifyPropertyChanged
{
/// <summary>
/// Multicast event for property change notifications.
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Checks if a property already matches a desired value. Sets the property and
/// notifies listeners only when necessary.