Skip to content

Instantly share code, notes, and snippets.

@ishu3101
ishu3101 / read_arguments.js
Last active March 12, 2024 18:10
Accept input via stdin and arguments in a command line application in node.js
#!/usr/bin/env node
var args = process.argv.slice(2);
var input = args[0];
var isTTY = process.stdin.isTTY;
var stdin = process.stdin;
var stdout = process.stdout;
// If no STDIN and no arguments, display usage message
@paulirish
paulirish / what-forces-layout.md
Last active November 17, 2025 21:20
What forces layout/reflow. The comprehensive list.

What forces layout / reflow

All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.

Generally, all APIs that synchronously provide layout metrics will trigger forced reflow / layout. Read on for additional cases and details.

Element APIs

Getting box metrics
  • elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParent
@tomalec
tomalec / gist:af93bb87241d9d3abd5b
Last active September 9, 2021 12:50
PuppetJS and JSON-Patch Operational Transformations

Why do we need PuppetJS versioning and Operational Transformations?

Optional Version control and JSON-Patch Transformations

Because of the asynchronous nature of bidirectional web communication (caused by network latency, server side push, etc), it can be assumed that client and the server are for most of the time out of sync.

In fact it is not necessarily client and server, all following applies as well to server-server, client-client, or any peer-to-peer collaborating on JSON document.

To improve mutual view-model consistency, we introduce optional features:

  1. Versioning,
  2. Operational Transformations.
@alepez
alepez / client.js
Last active July 1, 2025 05:00
nodejs file transfer with http post
var request = require('request');
var path = require('path');
var fs = require('fs');
var filename = process.argv[2];
var target = 'http://localhost:3000/upload/' + path.basename(filename);
var rs = fs.createReadStream(filename);
var ws = request.post(target);
@pbroschwitz
pbroschwitz / supplant.js
Created October 15, 2012 07:58
supplant - Crockford
/**
* supplant() does variable substitution on the string. It scans through the string looking for
* expressions enclosed in { } braces. If an expression is found, use it as a key on the object,
* and if the key has a string value or number value, it is substituted for the bracket expression
* and it repeats.
*
* Written by Douglas Crockford
* http://www.crockford.com/
*/
String.prototype.supplant = function (o) {
@jlong
jlong / uri.js
Created April 20, 2012 13:29
URI Parsing with Javascript
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"