Skip to content

Instantly share code, notes, and snippets.

@lrvick
lrvick / angular-socket.js
Created October 18, 2013 15:53
AngularJS service to connect to a websocket server (SockJS or pure WebSocket), manage reconnection, and allow the rest of the angular application to easily send/retrieve data from an open socket.
//TODO: make this a module
/**
* # SockJS socket management service
*
* Creates SockJS socket connection to server, re-connects on disconnection,
* and exports hooks to map handlers for various data interactions.
*
*/
angular.module('app').factory
@lrvick
lrvick / app.js
Last active April 26, 2024 13:06
AngularJS credit card form with validation
// MIT: http://opensource.org/licenses/MIT
angular.module('app', []);
angular.module('app').controller
( 'MainCtrl'
, function($scope,$locale) {
$scope.currentYear = new Date().getFullYear()
$scope.currentMonth = new Date().getMonth() + 1
$scope.months = $locale.DATETIME_FORMATS.MONTH
@lrvick
lrvick / pig.js
Created April 30, 2014 16:53
Pig Latin Translator / Mocha example
var assert = require("assert")
var pigLatinTrans = function(text){
var pigText = text.replace(/[A-Za-z]+/gi,function(word){
var letters = word.split('')
var firstLetter = letters.shift()
if (firstLetter.toUpperCase() == firstLetter){
letters.push(firstLetter.toLowerCase())
letters[0] = letters[0].toUpperCase()
letters.push(firstLetter)
@lrvick
lrvick / sync-repos.sh
Last active July 25, 2022 06:15
Locally sync all Github repos & branches for user/org
#!/bin/bash
USER='lrvick'
ACCESS_TOKEN='YOUR_TOKEN_HERE'
API="https://api.github.com/orgs"
ENDPOINT="/${USER}/repos?per_page=200&access_token=${ACCESS_TOKEN}"
FOLDER='/home/lrvick/Sources'
REPO_NAMES=$( curl -s "${API}${ENDPOINT}" | \
grep \"name\" | sed 's/ \"name\": \"\(.*\)\",/\1/g'
@lrvick
lrvick / nginx.conf
Last active August 29, 2015 14:09
Nginx conditions to deny *.appcache files to IOS7 users to avoid their severe bugs.
# If IOS7 sees a *.appcache file it freaks out and disables browser
# history until browser cache is cleared AND it is rebooted.
# Tell IOS7 users asking for a *.appcache file to GTFO with a 412
# "precondition failed" response so they don't hurt themselves.
if ( $http_user_agent ~* '(iPad|iPhone);.*CPU.*OS 7_' ){
set $test IOS7;
}
if ($request_filename ~* ^.+.appcache$) {
set $test "${test}_APPCACHE";
}
@lrvick
lrvick / nginx.conf
Created November 13, 2014 18:40
Convert specific GET params to Cookies with NGINX.
# Convert GET access_token to Cookie to avoid Referrer leaks.
location / {
if ($request_uri ~ (.*[\?&])access_token=[^&]*&?(.*)){
add_header Set-Cookie access_token=$arg_access_token;secure;HttpOnly
return 301 $1$2;
}
}
@lrvick
lrvick / Dockerfile
Created November 13, 2014 19:40
Dockerfile for simple nginx static hosting
#Get latest debian image
FROM debian:wheezy
RUN echo "deb http://nginx.org/packages/debian/ wheezy nginx" >> /etc/apt/sources.list.d/nginx.list
RUN apt-key adv --fetch-keys "http://nginx.org/keys/nginx_signing.key"
# Update package repos
RUN apt-get update -y --fix-missing
RUN apt-get upgrade -y --fix-missing
@lrvick
lrvick / gist:ba303eae8ad89b7f0f4d
Created December 8, 2014 22:29
Twilio Node.JS SMS sending example.
var twilioNumber = '+19252414543';
var twilioSID = 'Your twilio account SID';
var twilioToken = 'Your twilio auth tokenn'
var client = require('twilio')(twilioSID,twilioToken);
var sendSMS = function(number,message){
client.sms.messages.post({
to:twilioNumber,
from:fromNumber,
@lrvick
lrvick / Dockerfile
Last active August 29, 2015 14:12
Cassandra single instance Docker
FROM abh1nav/java7
# Download and extract Cassandra
RUN \
mkdir /opt/cassandra; \
wget -O - http://www.us.apache.org/dist/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz \
| tar xzf - --strip-components=1 -C "/opt/cassandra";
ADD cassandra.yaml /opt/cassandra/conf/
ADD run.sh /tmp/
@lrvick
lrvick / crashff.html
Created January 28, 2015 06:20
Little example that consistently crashes Firefox. This is why it makes more sense to do one process per tab.
<html>
<body>
<a href="#" onclick="die()">click me!</a>
<script>
function die () {
setTimeout(function () {die(); die()}, 0)
}
</script>
</body>
</html>