Skip to content

Instantly share code, notes, and snippets.

View scalp42's full-sized avatar
🪂

Anthony Scalisi scalp42

🪂
View GitHub Profile
@cflee
cflee / ruby-blocks-procs-lambdas.md
Created January 14, 2015 07:10
Discoveries about Ruby Blocks, Procs and Lambdas

Ruby: Blocks, Procs, Lambdas

Note that for blocks, {} and do ... end are interchangeable. For brevity, only the former will be listed here.

Version differences

Pre-1.9, lambda and proc are synonyms. Essentially the difference is between proc and block.

def method(&block) p block.class; p block.inspect; end
l = lambda { 5 }
@gene1wood
gene1wood / batch-delete-gmail-emails.js
Last active April 7, 2026 09:16
A Google Apps Script script to bulk delete large amounts of email in Gmail while avoiding the error #793 which Gmail encounters normally
/*
This script, when used with Google Apps Scripts, will delete 400 emails and
can be triggered to run every few minutes without user interaction enabling you
to bulk delete email in Gmail without getting the #793 error from Gmail.
Google returns a maximum of 500 email threads in a single API call.
This script fetches 400 threads in case 500 threads is causing timeouts
Configure the search query in the code below to match the type of emails
you want to delete
@peterhellberg
peterhellberg / gateway_deploy.rb
Created December 17, 2014 16:24
Capistrano deploy via gateway host
set :user, 'username'
set :gateway, 'example.com'
set :ssh_options, {
user: fetch(:user),
forward_agent: false,
proxy: Net::SSH::Proxy::Command.new(
"ssh -l #{fetch(:user)} #{fetch(:gateway)} -W %h:%p"
)
}
@kwilczynski
kwilczynski / check.md
Last active February 3, 2025 05:27
Recipe / Role check in Chef

If you want to check whether a node run_list includes a specific role (upon expansion), then you could use role? method on the Node object:

node.role?('name')

Alternatively, you can see whether either would work for you:

node.roles.include?('name')

node.run_list?('role[name]')

@johnsockwell
johnsockwell / VirtualBoxRawDisk
Last active August 29, 2015 14:10
Create a VirtualBox disk with raw access to a device on the host
echo -n "Enter device location: " && read DEVICE && sudo VBoxManage internalcommands createrawvmdk -filename ./host_device.vmdk -rawdisk $DEVICE && sudo chmod 777 $DEVICE && sudo chmod 777 ./sd-card.vmdk
@simlegate
simlegate / custom-error-page
Created October 31, 2014 05:35
Nginx return custom json
error_page 400 404 405 =200 @40*_json;
location @40*_json {
default_type application/json;
return 200 '{"code":"1", "message": "Not Found"}';
}
error_page 500 502 503 504 =200 @50*_json;
location @50*_json {
@jeremyj
jeremyj / haproxy rate limiting
Last active February 7, 2026 17:22
haproxy rate limiting
HTTP request limiting ===================================================================================================================
frontend ft_web
# Use General Purpose Couter (gpc) 0 in SC1 as a global abuse counter
# Monitors the number of request sent by an IP over a period of 10 seconds
stick-table type ip size 1m expire 10s store gpc0,http_req_rate(10s)
tcp-request connection track-sc1 src
# refuses a new connection from an abuser
tcp-request content reject if { src_get_gpc0 gt 0 }
@slyness
slyness / rename_node.md
Last active November 11, 2023 18:09
Rename a Chef Node

How to rename a chef node

  1. Edit existing node name. Update name and save. Chef will copy the node and create a new client entry.
knife node edit oldnode
  1. ssh to node
  2. Change hostname and dns information
@ambakshi
ambakshi / iam-assume-role.sh
Last active July 6, 2024 02:59
Assume an IAM role. An interesting way of doing IAM roles is to give the instance permissions to assume another role, but no actual permissions by default. I got this idea while setting up security monkey: http://securitymonkey.readthedocs.org/en/latest/quickstart1.html#setup-iam-roles.
#!/bin/bash
#
# Assume the given role, and print out a set of environment variables
# for use with aws cli.
#
# To use:
#
# $ eval $(./iam-assume-role.sh)
#
@untergeek
untergeek / logstash-1-collectd.conf
Created May 7, 2014 15:48
Logstash 1.4.1+ Collectd configuration
# This is the simplest definition, with the addition of a type
input {
udp {
port => 25826 # Must be specified. 25826 is the default for collectd
buffer_size => 1452 # Should be specified. 1452 is the default for recent versions of collectd
codec => collectd { } # This will invoke the default options for the codec
type => "collectd"
}
}