Skip to content

Instantly share code, notes, and snippets.

View adamculpepper's full-sized avatar

Adam Culpepper adamculpepper

View GitHub Profile
@adamculpepper
adamculpepper / proxy.php
Created July 24, 2020 16:06
PHP Proxy for JSON with wildcard CORS
<?php
header('Access-Control-Allow-Origin: *');
header("Content-Type: application/json; charset=utf-8");
$url = htmlspecialchars($_GET['url']);
if ($url) {
$content = file_get_contents($url);
} else {
$content = 'error';
@adamculpepper
adamculpepper / puppeteer-read-json.js
Last active April 25, 2020 07:17
Puppeteer - Read Local File
const puppeteer = require('puppeteer');
const fs = require('fs');
const util = require('util');
// data
const rawdata = fs.readFileSync('plates.json');
const textDecoder = new util.TextDecoder('utf-8');
const stringData = textDecoder.decode(rawdata);
const objects = JSON.parse(stringData);
console.log(objects);
@adamculpepper
adamculpepper / required-indicator.css
Last active January 14, 2020 20:36
Required field indicator (Bootstrap 4)
.form-group.has-required {position:relative;}
.form-group.has-required:after {
content:'\f069';
font-family:'FontAwesome';
position:absolute;
top:1px;
right:1px;
padding:4px 7px;
text-align:center;
font-size:8px;
@adamculpepper
adamculpepper / getUrlParam.js
Last active December 18, 2019 22:20
JavaScript: Get URL Parameters (simple)
//source: https://stackoverflow.com/a/5158301
function getUrlParam(name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.href);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
//USAGE
//assumed url: http://example.com?page=3&sort=asc&perPage=20
getUrlParam('page');
getUrlParam('sort');
@adamculpepper
adamculpepper / moment-snippets.js
Created November 26, 2019 17:06
Moment.JS Snippets
var today = moment();
var tomorrow = moment().add(1, 'day');
var isToday = function(input) {
return moment(input).isSame(today, 'day');
};
var isTomorrow = function(input) {
return moment(input).isSame(tomorrow, 'day');
};
@adamculpepper
adamculpepper / data-watcher.js
Created October 31, 2019 17:46
setInterval Data Watcher
var dataWatcher = setInterval(function() {
var dataComplete = false;
if (dataCompleteGroups == true && dataCompleteEvents == true) {
dataComplete = true;
}
if (dataComplete) {
clearInterval(dataWatcher);
// do stuff
@adamculpepper
adamculpepper / masonry-layout.css
Last active June 3, 2019 16:45
Masonry Layout - CSS only
/* Masonry */
.masonry {column-count:1; column-gap:1.5em; margin:1.5em auto;}
.masonry .item {display:inline-block; margin:0 0 1em; width:100%;}
.masonry .item iframe {max-width:100%;}
/* Large (lg) and up */
@media (min-width:992px) {
.masonry {column-count:2;}
}
@adamculpepper
adamculpepper / bootstrap-helpers.css
Last active March 31, 2019 02:53
Bootstrap 4 Helper CSS
/* Bootstrap 4 Helper CSS */
/* Add-on: Bootstrap 4, hidden-{breakpoint}-{up/down} */
/* taken from Bootstrap 4, alpha 6 */
.hidden-xs-up {display:none!important;}
@media (max-width:575px) { .hidden-xs-down {display:none!important;} }
@media (min-width:576px) { .hidden-sm-up {display:none!important;} }
@media (max-width:767px) { .hidden-sm-down {display:none!important;} }
@media (min-width:768px) { .hidden-md-up {display:none!important;} }
@media (max-width:991px) { .hidden-md-down {display:none!important;} }
@adamculpepper
adamculpepper / gist:b4d63a8f11daa4abd909fb30e927e992
Created November 27, 2018 17:06
jQuery: Updating pseudo element content
<style>
body:after {content:attr(data-content);
</style>
$('body').attr('data-content': 'changed body:after content')
<body data-content="body:after content">
...content...
</body
@adamculpepper
adamculpepper / randomNum.js
Last active October 10, 2018 19:42
Random Number (range)
// random number, inputting botht the min and max number
function randomNum(from, to){
return Math.floor(Math.random() * (to - from + 1) + from);
}
// Usage: randomNum(1, 100)
// random number, inputting only the max number
function randomNum(max) {
return Math.floor(Math.random() * max) + 1;