Skip to content

Instantly share code, notes, and snippets.

View NV's full-sized avatar

Nikita Vasilyev NV

View GitHub Profile
@NV
NV / README.markdown
Last active August 29, 2015 13:57
Precise sum of float numbers.
@NV
NV / named-arguments.js
Created December 13, 2013 01:25
JavaScript named arguments
callWithNamed({one: 1, two: 2, three: 3}, function(three, one, two) {
console.log(one, two, three);
});
function callWithNamed(dict, fn, context) {
var newArgs = [];
var parsedArgs = parseArgs(fn);
for (var i = 0; i < parsedArgs.length; i++) {
var name = parsedArgs[i];
@NV
NV / parse-css.js
Created November 3, 2013 03:44
Parse CSS in a browser
var style = document.createElement('style')
var iframe = document.createElement('iframe')
document.body.appendChild(iframe)
iframe.contentDocument.documentElement.appendChild(style)
iframe.style.display = 'none'
style.textContent = 'a {color: red}'
style.sheet // CSSStyleSheet
style.sheet.cssRules[0].cssText // 'a { color: red; }'
style.sheet.cssRules[0].selectorText // 'a'
@NV
NV / connect.js
Last active December 26, 2015 00:29
2 Rectangles Convex Hull, e.g. find minimum polygon that wraps any two rectangles.
attachPair(document.getElementById('a'), document.getElementById('b'), createPolygon());
attachPair(document.getElementById('c'), document.getElementById('d'), createPolygon());
attachPair(document.getElementById('e'), document.getElementById('f'), createPolygon());
function attachPair(a, b) {
var polygon = createPolygon();
draggable(a, {
onMove: function(e) {
update(a, b, polygon);
}
@NV
NV / README.markdown
Last active December 22, 2015 03:09
Command-line tool for pow!

Serve static files in a current directory and create $current_dir.dev host name.

Usage

~/Sites/usercss.ru ➤ pow
open http://usercss.ru.dev/

~/Sites/n12v.com/static ➤ pow n12v

@NV
NV / serve.fish
Created August 30, 2013 02:57
Serve current directory at "current-dir-name.dev". Pow!
function serve
set NAME (basename $PWD)
mkdir -p "$HOME/.pow/$NAME"
ln -s $PWD "$HOME/.pow/$NAME/public"
open "http://$NAME.dev"
end
@NV
NV / Readme.md
Last active May 28, 2023 20:42
Prepend the debugger statement to a function as easy as stopBefore('Element.prototype.removeChild'). Works in Chrome DevTools and Safari Inspector, doesn’t work in Firebug‘s and Firefox Developer Tools‘ console (I don’t know why). Works as a standalone script everywhere.

stopBefore.js

2min screencast

Examples

stopBefore(document, 'getElementById')
stopBefore('document.getElementById') // the same as the previous
stopBefore(Element.prototype, 'removeChild')
@NV
NV / devtools.html
Created November 24, 2012 22:11
Append style rules created in elements panel to last included CSS file
<script src="devtools.js"></script>