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 / parsing_json.pl
Created July 6, 2018 20:04
Parsing a JSON string in SWI-Prolog
?- use_module(library(http/json_convert)).
true.
?- json:atom_json_term('{"foo":"bar"}',T, []), T=json(J), J.foo=Bar.
T = json([foo=bar]),
J = [foo=bar],
Bar = bar.
@ninjarobot
ninjarobot / brew_install_nsd.sh
Created May 25, 2018 10:55
Installing nsd on macOS with brew
$ brew install nsd
==> Installing dependencies for nsd: openssl, libevent
==> Installing nsd dependency: openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2o_1.high_sierr
######################################################################## 100.0%
==> Pouring openssl-1.0.2o_1.high_sierra.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
apt-get update && apt-get install -y gcc
mkbundle --simple --machine-config /etc/mono/4.5/machine.config --config /etc/mono/config -L /usr/lib/mono/4.5 --library /usr/lib/libmono-btls-shared.so -o paket paket.exe
@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:
@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 / 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 / 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 / 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 / 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 / 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