Skip to content

Instantly share code, notes, and snippets.

View styopdev's full-sized avatar
:octocat:
Working from home

Stepan V styopdev

:octocat:
Working from home
View GitHub Profile
@styopdev
styopdev / JSON.stringify-replacer-sort-keys.js
Created October 16, 2023 12:37 — forked from davidfurlong/JSON.stringify-replacer-sort-keys.js
JSON.stringify replacer function for having object keys sorted in output (supports deeply nested objects)
// Spec http://www.ecma-international.org/ecma-262/6.0/#sec-json.stringify
const replacer = (key, value) =>
value instanceof Object && !(value instanceof Array) ?
Object.keys(value)
.sort()
.reduce((sorted, key) => {
sorted[key] = value[key];
return sorted
}, {}) :
value;
@styopdev
styopdev / gist:1afdad46b92997d155e0106ccf1549ed
Last active October 23, 2022 08:11
print range of numbers promises
function printNumbers(a, b) {
if (a > b || typeof a !== 'number' || typeof b !== 'number') {
throw 'Incorrect arguments';
}
for(let i = a, counter = 0, promises = []; i <= b; i++, counter++) {
promises.push(
new Promise((resolve, reject) => {
setTimeout(() => {
resolve(i)
}, 1000 * counter)
@styopdev
styopdev / print_numbers.js
Created October 23, 2022 07:04
Print numbers in range
function printNumbers(a, b, cb) {
if (a > b || typeof a !== 'number' || typeof b !== 'number') {
throw 'Incorrect arguments';
}
for(let i = a, counter = 0; i <= b; i++, counter++) {
setTimeout(() => {
cb(i);
}, 1000 * counter)
}
@styopdev
styopdev / .htaccess
Created March 15, 2018 04:29
Angular .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) /index.html [NC,L]
@styopdev
styopdev / rotate-image.js
Created November 14, 2017 10:23
Image rotation by exif orientation using loadimage library.
loadImage.parseMetaData(
file, (data) => {
if (!data.imageHead) {
return;
}
const orientation = data.exif ? data.exif[0x0112] : null;
if (orientation) {
loadImage(
@styopdev
styopdev / social-regexps.js
Created October 19, 2017 11:03
Social networks profiles validation regexps
// Facebook
/((https?):\/\/)(www[.])?(mbasic.facebook|m\.facebook|facebook|fb)\.(com|me)\/(?:(?:\w\.)*#!\/)?(?:pages\/)?(?:[\w\-\.]*\/)*([\w\-\.]*)/ig,
// LinkedIn
/((https?):\/\/)(www[.])?linkedin\.com\/(in|company|groups)\/.?\/?.?\/?([0-9]*)/,
// Google+
/((https?):\/\/)(www[.])?plus\.google\.com\/u\/.?\/?.?\/?([0-9]*)/,
// Twitter
/((https?):\/\/)(?:www\.)?twitter\.com\/([a-zA-Z0-9_]+)/,
// IMDb
/(http:\/\/)(www[.])imdb\.com\/.?\/?.?\/?([0-9]*)/,
@styopdev
styopdev / loading.js
Created July 8, 2016 13:20
Node,js console loading
var startLoader = function () {
(function() {
process.stdout.write('Some text here...' + "\n");
var P = ["\\", "|", "/", "-"];
var x = 0;
return setInterval(function() {
process.stdout.write("\r" + P[x++]);
x &= 3;
}, 250).unref();
})();
@styopdev
styopdev / pick-schema.js
Last active February 15, 2022 22:59
Get mongoose schema fields, excluding specified values, for lodash.
_.mixin({ pickSchema: function (model, excluded) {
var fields = [];
model.schema.eachPath(function (path) {
_.isArray(excluded) ? excluded.indexOf(path) < 0 ? fields.push(path) : false : path === excluded ? false : fields.push(path);
});
return fields;
}
});
// Example
function getActivityColor(activityID) {
var color;
for (var key in activityColors) {
if (activityColors[key].activityID == activityID) {
color = activityColors[key].color;
break;
}
}
if (!color) {
var letters = '0123456789ABCDEF'.split('');
@styopdev
styopdev / isotope.txt
Created July 22, 2015 12:06
html/css/js Isotope grid example
<div class="grid">
<div class="grid-item grid-item--width2">1</div>
<div class="grid-item grid-item--height2">2</div>
<div class="grid-item">3</div>
<div class="grid-item">4</div>
<div class="grid-item grid-item--width2 grid-item--height2">5</div>
<div class="grid-item grid-item--width2">6</div>
<div class="grid-item grid-item--height2">7</div>
<div class="grid-item">8</div>