Skip to content

Instantly share code, notes, and snippets.

Avatar

Kevin McCormack HarlemSquirrel

View GitHub Profile
@HarlemSquirrel
HarlemSquirrel / find_present.rb
Created Nov 8, 2021
Enumerable#find_present extension for Rails
View find_present.rb
require 'rails'
# Return the first value from the block that evalues to present.
#
# objects = [OpenStruct.new(name: nil), OpenStruct.new(name: ' '), OpenStruct.new(name: 'Matz')]
# objects.find_present(&:name) # => "Matz"
module Enumerable
def find_present(&block)
each do |item|
result = yield(item)
View refresh_aws_mfa_creds.rb
#! /usr/bin/env ruby
##
# Retrieve MFA credentials using the default profile and saving them to the mfa profile.
# Old credentials are removed in this process.
#
require 'json'
AWS_CREDS_FILE_PATH = File.join(ENV['HOME'], '.aws/credentials')
@HarlemSquirrel
HarlemSquirrel / docker-compose.yml
Last active Aug 30, 2021
Valheim Server Docker Compose file
View docker-compose.yml
# https://github.com/sorisum/valheim-server-docker
version: "3.9"
services:
valheim:
image: lloesche/valheim-server
volumes:
- /mnt/valheim:/config
- valheim_data:/opt/valheim
ports:
- "2456-2458:2456-2458/udp"
@HarlemSquirrel
HarlemSquirrel / pre-commit
Last active Feb 2, 2021
A pre-commit file for Ruby on Rails applications
View pre-commit
#!/bin/bash
#
# A set of commands to run as pre-commit hooks for git.
#
# Save this to .git/hooks/pre-commit and make executable to enable
#
# This will run whenever we run `git commit`.
# To skip this, add `-n` or `--no-verify` flag.
#
@HarlemSquirrel
HarlemSquirrel / OpenLDAPClient.java
Created Dec 11, 2020
Example doing paged search with UnboundID Java SDK and OpenLDAP
View OpenLDAPClient.java
import com.unboundid.ldap.sdk.LDAPConnection;
import com.unboundid.ldap.sdk.LDAPException;
import com.unboundid.ldap.sdk.LDAPSearchException;
import com.unboundid.ldap.sdk.SearchResult;
import com.unboundid.ldap.sdk.SearchResultEntry;
import com.unboundid.ldap.sdk.SearchRequest;
import com.unboundid.ldap.sdk.SearchScope;
import com.unboundid.ldap.sdk.controls.SimplePagedResultsControl;
import com.unboundid.util.ssl.SSLUtil;
import com.unboundid.util.ssl.TrustAllTrustManager;
@HarlemSquirrel
HarlemSquirrel / diff_filter.sh
Created Dec 5, 2020
Filter a command like rubocop to look for issues only on modified lines.
View diff_filter.sh
#!/bin/bash
##
# Filter a command like rubocop to look for issues only on modified lines.
#
# Inspired by http://takemikami.com/2018/01/30/RubocopPullRequestCI.html
#
BASE_REMOTE=origin
BASE_BRANCH=master
@HarlemSquirrel
HarlemSquirrel / thingiverse-api-examples.js
Last active Jan 2, 2021
Thingiverse API Examples using JavaScript
View thingiverse-api-examples.js
// https://www.thingiverse.com/developers/rest-api-reference
/*******************************************************************************
* The headers needed for authenticating with the API.
* Get the SECRET_TOKEN using the browser tools of Firefox or Chrome:
* 1. Open the browser tools with F12 or ctrl+shift+i
* 2. Navigate to the Network tab
* 3. Reload a Thingiverse page
* 4. Locate a and select a request to api.thingiverse.com
* 5. Find the request headers and copy the token next to Authorization: Bearer
@HarlemSquirrel
HarlemSquirrel / thread_issue_demo.rb
Last active Sep 23, 2020
Reproduce ActiveLdap thread-safe issue
View thread_issue_demo.rb
##
# This can reproduce https://github.com/activeldap/activeldap/issues/186
#
# Uses OpenLDAP Docker container
# docker run -p 1389:389 --name activeldap-test --detach osixia/openldap
#
require 'active_ldap'
class User < ActiveLdap::Base
@HarlemSquirrel
HarlemSquirrel / dn_issue_demo.rb
Created Aug 5, 2020
A demonstration of the DN and base issue detailed in activeldap/activeldap#185
View dn_issue_demo.rb
##
# A demonstration of the DN and base issue detailed in
# https://github.com/activeldap/activeldap/issues/185
# Due to how requires are handled, we need to do some directory
# trickery to require our local copy of the source code.
base_dir = File.expand_path(File.dirname(__FILE__))
top_dir = File.expand_path(File.join(base_dir, ".."))
lib_dir = File.join(top_dir, "lib")
$LOAD_PATH.unshift(File.join __dir__, 'lib')
@HarlemSquirrel
HarlemSquirrel / thread_concurrency_limit_demo.rb
Created Apr 20, 2020
Ruby thread concurrency limit demo
View thread_concurrency_limit_demo.rb
# The total number of threads we want to all to run at the same time
concurrent_thread_limit = 4
# The total number of threads to run for this demo
total_thread_count = 13
@threads = []
##
# Print the status of all threads to the console
#