Skip to content

Instantly share code, notes, and snippets.

<div id="consolelog" style="font-family: 'Courier New', Courier, monospace; font-size: 12px; margin: 40px 30px 0px; background-color: white; border: 2px solid black; padding: 10px;"></div>
<input type="text" id="consoleinput" style="margin: 0px 30px; width: 400px;" onkeypress="return evalConsoleInput(event, this.value);" />
<script type="text/javascript">
var appendConsole = function(message, type) {
var color = "black";
if (type === "error") {
color = "red";
} else if (type === "debug") {
@netpoetica
netpoetica / indexOfAll.js
Created June 8, 2014 18:52
Return the index of all instances of an item in an String
String.prototype.indexOfAll = function(s){
// Make sure it's 1 char, use first char of string.
s = s[0];
var results = [],
result = null,
i = 0,
offset = 0, // Incremented by previous index
@netpoetica
netpoetica / enumerate.js
Last active August 29, 2015 14:03
enumerate - decompose an array for iteration in a for...in
/*
Usage
// You have an array
var myArr = ["a", 'b', "c"];
// You want to enumerate through it w/ specified index. If you enumerate
// through an array by default index cannot be "guaranteed" as per MSDN:
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
// for..in should not be used to iterate over an Array where index order is important. Array indexes are just enumerable properties with integer names and are otherwise identical to general Object properties. There is no guarantee that for...in will return the indexes in any particular order and it will return all enumerable properties, including those with non–integer names and those that are inherited.
@netpoetica
netpoetica / SupplementToRedemptionFromCallbackHell
Created July 15, 2014 23:45
An Example of Why Promises and Generators are Important
// An Example of Why Promises and Generators are Important
// Based on this awesome video: https://www.youtube.com/watch?v=hf1T_AONQJU
// You can just copy and paste this code into your console to see it in action
var App = function App(){
// Named anonymous functions for clear picture
// of the call stack in the error stack trace
this.asyncError = function myAsynchronousError(){
throw new Error('Asynchronous error');
@netpoetica
netpoetica / decoupling-dependencies
Created October 16, 2014 18:53
Even more decoupled than the original - pass dependencies in as args so that they can be easily changed later
document.addEventListener("DOMContentLoaded", function(event) {
/*
Later you can easily change this to any other PubSub library you like.
var _pubSub = PubSub;
or you can even wrap it to define your own API. This way, later on
you can still continue to use _ps.sub and _ps.pub even if you change
out the library defining that behaviour. Let's go with the latter.
@netpoetica
netpoetica / propDeepExists
Last active August 29, 2015 14:10
Check if a property exists - for use in debugger only. Very slow operation
// Note: this function is evil, and probably should never be used.
// It may be useful for when you are working in the console/debugger
// and need to analyze some large object. Not for production.
// http://jsperf.com/check-if-deep-property-exists-with-willnotthrow
function propDeepExists(target, propPath){
try {
var result = eval("target." + propPath);
} catch(e){
return false;
}
@netpoetica
netpoetica / gist:4d16382c3cfbf6db0f58
Created December 26, 2014 01:00
Node Memory Growing
➜ Desktop node test2.js
==================================
Empty Node Module Memory Usage
==================================
RSS: 11.828 MB and Heap: 2.116 MB of 3.894 MB total
RSS: 11.867 MB and Heap: 2.141 MB of 3.894 MB total
RSS: 11.875 MB and Heap: 2.147 MB of 3.894 MB total
RSS: 11.879 MB and Heap: 2.151 MB of 3.894 MB total
RSS: 11.883 MB and Heap: 2.155 MB of 3.894 MB total
RSS: 11.887 MB and Heap: 2.158 MB of 3.894 MB total
@netpoetica
netpoetica / gist:1a0a6652fa6c22b76951
Created December 26, 2014 01:21
Node v0.11.14 Memory Usage
➜ Desktop node test2.js
==================================
Empty Node Module Memory Usage
==================================
RSS: 16.273 MB and Heap: 3.466 MB of 6.191 MB total
RSS: 16.316 MB and Heap: 3.505 MB of 6.191 MB total
RSS: 16.316 MB and Heap: 3.512 MB of 6.191 MB total
RSS: 16.316 MB and Heap: 3.516 MB of 6.191 MB total
RSS: 16.316 MB and Heap: 3.520 MB of 6.191 MB total
RSS: 16.316 MB and Heap: 3.524 MB of 6.191 MB total
@netpoetica
netpoetica / gnuplot-requests-per-ms
Last active August 29, 2015 14:12
gnuplot script for web requests / time
#!/bin/sh
# RESOURCES:
# Blog - http://www.gnuplotting.org/
# Blog - http://gnuplot-surprising.blogspot.com/
# Colors, Line Types - http://kunak.phsx.ku.edu/~sergei/Gnuplot/line_point_types.html
# Linespoints - http://www.gnuplotting.org/tag/linespoints/
# Gnuplot and ab - http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/
gnuplot << EOF
reset
@netpoetica
netpoetica / Property.js
Created August 31, 2012 19:00
Properties (Getter and Setter accessible attributes) in JavaScript. An attempt to make variables with getters and settes in JavaScript easily. Basically, make them an object instead. Maybe useful to someone!
var Property = function(vari){
console.log("Creating a public accessor...");
this.vari = vari;
return function(){
if(arguments.length > 0){
console.log("Setting the variable to " + arguments[0] + "...");
vari = arguments[0];
return;
}
console.log("Getting the variable...");