Skip to content

Instantly share code, notes, and snippets.

View szanata's full-sized avatar
🏠
Working from home

Stéfano Zanata szanata

🏠
Working from home
View GitHub Profile
@szanata
szanata / index.md
Last active December 18, 2023 14:05
Homm3 - Enemy Unit Counts
  • Few: 1-4
  • Several: 5-9
  • Pack: 10-19
  • Lots: 20-49
  • Horde: 50-99
  • Throng: 100-249
  • Swarm: 250-499
  • Zounds: 500-999
  • Legion: 1000+
@szanata
szanata / split_trim.js
Created May 18, 2019 19:07
Spit & Trim
const firstIndexOf = ( c, ...vars ) => Math.min( ...vars.map( v => c.indexOf( v ) ).filter( n => n > -1 ) );
const lastIndexOf = ( c, ...vars ) => Math.max( ...vars.map( v => c.lastIndexOf( v ) ) );
utfString.split( '\0ustar' ).slice( 1 ).map( c =>
c.substring( firstIndexOf( c, '{', '[' ), lastIndexOf( c, '}', ']' ) + 1 )
);
@szanata
szanata / decompressed_tar.txt
Last active May 18, 2019 18:34
decompressed_tar
small01.json�������������������������������������������������������������������������������������
���000644 �000766 �000024 �00000000050 13470047041 015217� 0�������������������������������������
���������������������������������������������������������������ustar�00stefanozanata�������������
������staff���������������������������000000 �000000 ��������������������������������������������
�������������������������������������������������������������������������������������������������
���������������������������{
"_id": "5ce04968bec07cf2a356f789"
}
�������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������
const { unzipSync } = require( 'zlib' );
unzipSync( raw ).toString( 'utf-8' )
@szanata
szanata / decompress.js
Last active April 22, 2021 22:00
Native JS json tarball decompression
const { unzipSync } = require( 'zlib' );
const firstIndexOf = ( c, ...vars ) => Math.min( ...vars.map( v => c.indexOf( v ) ).filter( n => n > -1 ) );
const lastIndexOf = ( c, ...vars ) => Math.max( ...vars.map( v => c.lastIndexOf( v ) ) );
/**
* Decompress JSON
*
* Reads a gzipped tarball (.tar.gz)
* 1. Unzip it
@szanata
szanata / run_docker.bat
Last active April 22, 2019 21:29
Create docker alpine on windows and avoid errors of synchronization on the volumes IO
echo "Starting docker"
:: Some references
:: https://github.com/docker/for-win/issues/969
:: https://forums.docker.com/t/volume-mounts-in-windows-does-not-work/10693/25
set /p PWD="Enter your user password: "
DOMAIN="your compute name"
USERNAME="your username"
@szanata
szanata / payload.js
Created March 16, 2019 14:47
Payload
const personnel = [
{
id: 5,
name: "Luke Skywalker",
pilotingScore: 98,
shootingScore: 56,
isForceUser: true,
},
{
id: 82,
@szanata
szanata / index.js
Last active January 2, 2019 17:58
Format milliseconds to human time
const format = time => [ time, 3600000, 60000, 1000, 1 ]
.reduce( ( parts, d, i, arr ) => {
if ( i === 0 ) { return parts; }
const p = Math.floor( arr[0] / d );
arr[0] = arr[0] - (p * d);
return parts.concat( p );
}, [] ).map( t => String( t ).padStart( 2, '0' ) ).join(':');
@szanata
szanata / split_batches..js
Last active September 19, 2018 17:50
Batch splitter
const sizeLimit = 1000000;
const lengthLimit = 500;
const getSize = obj => Buffer.byteLength( JSON.stringify( obj ) );
const isUnderLimits = batch => batch.length <= lengthLimit && getSize( batch ) <= sizeLimit;
module.exports = records => records.reduce( ( batches, record ) => {
if ( isUnderLimits( [].concat( batches[0], record ) ) ) {
batches[0].push( record );
} else {
@szanata
szanata / deep.js
Created September 17, 2018 11:16
Deep fetch properties on js objects, including array paths
function deepFetch( object, path ) {
return path.split( '.' ).reduce( ( value, part ) => {
if ( Array.isArray( value ) ) {
return value.reduce( (arr, v) => arr.concat( deepFetch( v, part ) ), [] );
} else if ( part === '*' ) {
return Object.keys( value ).map( p => value[p] );
}
return value[part];
}, object );
}