Skip to content

Instantly share code, notes, and snippets.

View ninjarobot's full-sized avatar

Dave Curylo ninjarobot

  • Microsoft @Azure
  • Atlanta, GA
View GitHub Profile
@ninjarobot
ninjarobot / Main.java
Created August 14, 2017 11:15
GC scenario when producing a lot of large string buffers
public class Main {
private static String buildBigString (int numStrings) {
StringBuffer sb = new StringBuffer();
for(int i = 0; i < numStrings; i++) {
sb.append("12345678");
sb.append(",");
}
return sb.toString();
}
@ninjarobot
ninjarobot / dotnet_sdk2_dev_env.sh
Last active April 11, 2018 03:10
Script to install a .NET Core 2.0 development environment with Mono as needed for Ionide.
# Sets up a development environment for Ubuntu 16.04.
sudo apt-get install -y curl
# Microsoft source
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
@ninjarobot
ninjarobot / Using_postgres_from_FSharp_with_driver.fs
Created September 26, 2017 13:50
Run a query against PostgreSQL with F# using the Npgsql driver
async {
use conn = new NpgsqlConnection (connectionString)
use cmd = conn.CreateCommand (CommandText="SELECT field1, field5 FROM some_table WHERE foo=:bar")
cmd.Parameters.AddWithValue ("bar", "baz) |> ignore
do! conn.OpenAsync () |> Async.AwaitTask // Automatically closed when disposed
use! reader = cmd.ExecuteReaderAsync() |> Async.AwaitTask
// Need a function to iterate through results
let rec readData results = async {
let! hasRecord = reader.ReadAsync () |> Async.AwaitTask
match hasRecord with
@ninjarobot
ninjarobot / regular_cleanup.sh
Created November 6, 2017 16:22
Clean up Ubuntu periodically
#!/bin/bash
sudo apt-get clean # removes cached packages
sudo apt autoremove --purge # removes old kernels
@ninjarobot
ninjarobot / AzureFunctionSecret.fs
Created January 5, 2018 20:58
Example of retrieving a secret from an F# Azure Function App
namespace AzurefnSecret
open Microsoft.Azure.KeyVault
open Microsoft.IdentityModel.Clients.ActiveDirectory
module Example =
let getSecret (appKeyDescription:string) (appKeyValue:string) (secretUrl:string) =
async {
use keyVault = new KeyVaultClient(fun authority resource (_:string) ->
async {
@ninjarobot
ninjarobot / LoadFromDynamicallyCompiledModule.fs
Created February 5, 2018 18:40
Example reading data from a dynamically compiled module.
// Works from .NET Core (netcoreapp2.0), just add nuget package FSharp.Compiler.Service
open System
open System.IO
open Microsoft.FSharp.Compiler.SourceCodeServices
let nugetPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), ".nuget")
let systemRuntimePath = Path.Combine(nugetPath, "packages/System.Runtime/4.3.0/ref/netstandard1.5/System.Runtime.dll")
[<EntryPoint>]
@ninjarobot
ninjarobot / Makefile
Created March 21, 2018 01:15
Makefile for Large .NET Project
HOME:=$(shell pwd)
NAME:=someLargeProject
DOCKER_REPO := my.internal.repo
DOCKER_REPO_DIR := mystuff
BUILD_CONTAINER := microsoft/dotnet:2-sdk
BASE_VERSION = 2.0
BUILD_NUMBER ?= 1
VERSION = ${BASE_VERSION}.${BUILD_NUMBER}
@ninjarobot
ninjarobot / pgsql_cidr_examples.md
Last active April 17, 2018 01:18
Examples of using the cidr type from Postgres
-- Increment addresses, with increment of octet
select inet '192.168.0.1' + 256;

-- Increment addresses starting with a network
select cidr '192.168.100.128/25' + 256;

-- Get a cidr network address from shorthand
select cidr '10.1.2';
@ninjarobot
ninjarobot / Suave-Logary.fs
Created May 2, 2018 12:04
Sample usage of Logary with Suave from @haf
type TraceLogger(name, minLevel) =
let logWithAck level fac =
if level < minLevel then async.Return () else
async {
let m = fac level
match m.value, level with
| Event event, _ when level >= LogLevel.Error ->
System.Diagnostics.Trace.TraceError(event, [||])
| Event event, _ when level = LogLevel.Warn ->
@ninjarobot
ninjarobot / paket-mkbundled-install.log
Last active May 8, 2018 17:07
Attempting a paket install with mkbundled paket
Paket version 5.156.7
found: /src/suaveapp/paket.dependencies
Parsing /src/suaveapp/paket.dependencies
Resolving packages for group Main:
0 packages in resolution.
1 requirements left
- Suave, 2.2.1 (from /src/suaveapp/paket.dependencies)
Trying to resolve Suave 2.2.1 (from /src/suaveapp/paket.dependencies)
Performance: