Skip to content

Instantly share code, notes, and snippets.

View brianlmoon's full-sized avatar

Brian Moon brianlmoon

View GitHub Profile
@brianlmoon
brianlmoon / apache_cors_example
Last active November 19, 2023 03:14
CORS example for Apache with multiple domains
# Sets CORS headers for request from example1.com and example2.com pages
# for both SSL and non-SSL
SetEnvIf Origin "^https?://[^/]*(example1|example2)\.com$" ORIGIN=$0
Header set Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
Header set Access-Control-Allow-Credentials "true" env=ORIGIN
# Always set Vary: Origin when it's possible you may send CORS headers
Header merge Vary Origin
@brianlmoon
brianlmoon / socket_connect_timeout.php
Last active February 26, 2021 06:13
Using socket_connect with a reliable timeout in PHP
<?php
/**
* I was having trouble with socket connections timing out reliably. Sometimes,
* my timeout would be reached. Other times, the connect would fail after three
* to six seconds. I finally figured out it had to do with trying to connect to
* a routable, non-localhost address. It seems the socket_connect call would
* not fail immediately for those connections. This function is what I finally
* ended up with that reliably connects to a working server, fails quickly for
* a server that has an address/port that is not reachable and will reach the
@brianlmoon
brianlmoon / run.tpl
Created November 6, 2018 15:22 — forked from efrecon/run.tpl
`docker inspect` template to regenerate the `docker run` command that created a container
docker run \
--name={{.Name}} \
{{range $e := .Config.Env}}--env={{printf "%q" $e}} \
{{end}}{{range $p, $conf := .NetworkSettings.Ports}}{{with $conf}}-p {{(index $conf 0).HostIp}}:{{(index $conf 0).HostPort}}:{{$p}} \
{{end}}{{end}}{{range $n, $conf := .NetworkSettings.Networks}}{{with $conf}}--network {{printf "%q" $n}} \
{{range $conf.Aliases}}--network-alias {{printf "%q" .}} {{end}} \
{{end}}{{end}}{{range $v := .HostConfig.VolumesFrom}}--volumes-from={{printf "%q" .}} \
{{end}}{{range $v := .HostConfig.Binds}}--volume={{printf "%q" .}} \
{{end}}{{range $l, $v := .Config.Labels}}--label {{printf "%q" $l}}={{printf "%q" $v}} \
{{end}}{{range $v := .HostConfig.CapAdd}}--cap-add {{printf "%q" .}} \
@brianlmoon
brianlmoon / current_on_object.php
Last active April 21, 2016 23:18
WTF PHP current() on object?
<?php
class Foo {
private $bar = "private variable 1";
private $bar2 = "private variable 2";
}
$foo = new Foo;
echo current($foo)."\n";
@brianlmoon
brianlmoon / block_mac_nav.js
Created January 27, 2014 17:23
Block Mac navigation when form has changed
function blockLeaving (e){
if(e.metaKey && (e.keyCode == 39 || e.keyCode == 37)){
switch(document.activeElement.tagName){
case "INPUT":
case "TEXTAREA":
break;
default:
if(!window.confirm("You have unsaved changes. Are you sure you want to leave the page?")){
e.preventDefault();
}
@brianlmoon
brianlmoon / gist:4962688
Last active December 13, 2015 19:28
Here is a function to return you the width the browser is using for media queries. For some reason, it is a bit different in each browser.
function getWindowMediaWidth() {
if(!window.matchMedia){
// it should be this, so return it when we can't
// figure it out. Of course, it does not do a lot
// of good if the browser does not support media
// queries.
return document.body.clientWidth;
}
@brianlmoon
brianlmoon / gearman_statsd.lua
Last active October 30, 2015 14:26
Sends stats about a gearmand process to StatsD
#!/usr/bin/lua
-- Requires lua 5.1+ and lua socket
--
-- Copyright (c) 2015, Brian Moon
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions are met:
--
-- * Redistributions of source code must retain the above copyright notice,
@brianlmoon
brianlmoon / gist:1647760
Created January 20, 2012 15:02
Example output from running GearmanManager with do all workers
$ ./pecl-manager.php -c config-single.ini -w ./pecl-worker-classes -vvv
PID Type Message
25968 INFO Loading workers in ./pecl-worker-classes
25969 PROC Helper forked
25969 INFO Loading workers in ./pecl-worker-classes
25968 PROC Started with pid 25968
25970 WORKER Adding server 127.0.0.1
25970 WORKER Adding job Avg
25970 WORKER Adding job Sum
25968 PROC Started child 25970 (Avg,Sum)
@brianlmoon
brianlmoon / gist:1622938
Created January 16, 2012 20:43
Get weeks from a range
<?php
/**
* Given two timestamps returns the Y-m-d ranges for each week within the range.
*
* @param int $start_ts Starting timestamp
* @param int $end_ts Ending timestamp
* @param bool $full_weeks If true, full weeks will be returned meaning
* the start and end will be adjusted to create full weeks
* @return array
@brianlmoon
brianlmoon / gist:1622095
Created January 16, 2012 18:11
Given two timestamps and a integer, returns the Y-m-d range, separated by days of that integer
<?php
/**
* Given two timestamps and a integer, returns the Y-m-d range, separated by days
* of that integer
*
* @param int $start_ts Starting timestamp
* @param int $end_ts Ending timestamp
* @return array
*
* @test