Skip to content

Instantly share code, notes, and snippets.

@need12648430
need12648430 / gist:0fb5825c4268b988166e
Created Jun 21, 2014
HTTP requests parsed in 4 lines of Lua.
View gist:0fb5825c4268b988166e
local verb, resource, version, headers, body = data:match("(.+)%s+(.+)%s+(HTTP/%d%.?%d?)\r\n(.-)\r\n\r\n(.-)")
headers:gsub("(.-)%s*:%s*(.-)\r\n", function(name, value)
-- do something with name and value here
end)
View gist:67c719b8597a837d59fd
import java.util.Map;
import java.util.Comparator;
import java.util.Collections;
int index = 0;
PImage pokemon, current;
PGraphics pie;
HashMap<Integer,Integer> colorMap;
ArrayList<Integer> colorByCount;
@need12648430
need12648430 / PokéPie
Created Aug 30, 2014
PokéPieChart, now with 200% more comments
View PokéPie
import java.util.Map;
import java.util.Comparator;
import java.util.Collections;
int index = 0;
// sprite sheet
PImage pokemon;
// current pokemon sprite
PImage current;
// current pie chart
View send_sms_get_example.php
<?php
// just for the record
$phone_ip = "10.0.0.2";
$phone_port = 8080;
$phone_page = "/send";
// to be clear, this is set in the app preferences
// you can turn off password protection, but i wouldn't suggest it
$tinysmsgate_password = "password";
@need12648430
need12648430 / name.js
Last active Mar 9, 2019
Pronounceable Seeded Name Generator
View name.js
function name (id, l) {
function n(){return id=(399*id)%509}
var r="BDGKNPTVZ"[n()%9]
for (var i=1;i<l;i++) r+=i%2?"aeiou"[n()%5]:"bdgknptvz"[n()%9]
return r
};
// id=seed, l=length
function name (id, l) {
// lcg prng
@need12648430
need12648430 / shuffle.js
Last active Aug 29, 2015
Shuffle an Array in 1 line, 108 bytes of JavaScript
View shuffle.js
function shuffle(set){
for (var c=set.slice(0),o=[],m=Math; c.length > 0; o.push(c.splice(m.floor(m.random() * c.length), 1)[0]));
return o;
}
with (Math)
for (
// c becomes shallow copy of array
// o is output
var c=set.slice(0),o=[];
@need12648430
need12648430 / lcg.js
Last active Aug 29, 2015
Linear congruential generator (Seedable PRNG) with weighted choices and shuffling in 1.4kb of clean JS.
View lcg.js
var LCG = (function () {
var c = 0x93456789, a = 0x169659, mod, mask, r;
mask = (mod = Math.pow(2, 31)) - 1;
function LCG(seed) {
this.seed = seed || new Date().getTime();
}
LCG.prototype = {
nextInt:
@need12648430
need12648430 / example.js
Last active Aug 29, 2015
tiny mustache-like templating engine in 2.6kb/108 loc
View example.js
var template = "{?condition}Condition exists! {condition}{/condition}\n\n" +
"{^whereami}I am not here!{/whereami}\n\n" +
"{#list}{name} is {age} years old! {?old}They are *old*!{/old}{!old}They are not old!{/old}\n{/list}";
console.log(stache(template, {
condition: "Hello world!",
list: [
{name: "Charles", age: "25"},
{name: "Bob", age: "42", old: true},
{name: "Samantha", age: "32"},
@need12648430
need12648430 / ago.py
Last active Aug 29, 2015
User friendly representation of times in 12 lines of Python.
View ago.py
def ago(elapsed):
o = []
for unit, size in [("yr",365*24*60*60),("mo",30*24*60*60),("wk",7*24*60*60),("d",24*60*60),("hr",60*60),("min",60),("sec",1)]:
if size > elapsed: continue
total = int(elapsed / size)
elapsed = elapsed % size
o.append(str(total) + unit)
@need12648430
need12648430 / display.js
Last active Sep 1, 2015
Maze Generator in 532 bytes.
View display.js
// only semi-golfed, mostly because i was in the headspace; only used for debugging
var w, h, x, y, m=maze(w=16,h=16), g=[];
// generate fully walled grid
for(y = 0; y < h * 2 + 1; y ++) {
g[y]=[]
for(x = 0; x < w * 2 + 1; x ++)
g[y].push(!(y&1)?"#":!(x&1)?"#":" ");
}