Skip to content

Instantly share code, notes, and snippets.

@geomago
geomago / getupdates.php
Last active April 25, 2020 14:06
getupdates function - js and html files
// Changes to javascript functions are contained in .js files in the "$sync_path" folder
$updjs = []; // each element contains a set of synctactically correct javascript statements
$maxtime = $lastupd; // save the most recent update sent
// List all .js files updated later than $lastupd");
foreach (scandir($sync_path) as $file) {
if (is_dir($file) || pathinfo($file,PATHINFO_EXTENSION)!='js') continue;
$filetime = date('Y-m-d H:i:s',filemtime("$sync_path/$file"));
if ($filetime>$lastupd) {
$updjs[] = file_get_contents("$sync_path/$file");
function findCheapest(orders) {
var cheapest = 999999999;
for (i=0; i<orders.length; i++) {
cheapest = Math.min(cheapest, findCheapestItem(orders[i].items) );
}
return cheapest;
}
function findCheapestItem(items) {
var cheapest = 999999999;
@geomago
geomago / undeclared_js_vars_step_1.js
Created June 13, 2020 15:11
undeclared_js_vars_step_1
glob = {}; // global object to keep the initial list of properties
glob.before = Object.keys(window); // save all window properties before any script is loaded
// showDiff shows (on console.log) the list of "new" properties
glob.showDiff = function(before,after) {
for (let p in after) {
if (before[p] === undefined) {
console.log(p,': ', after[p], ' = ', window[p]);
}
@geomago
geomago / undeclared_js_vars_step_1.js
Last active June 13, 2020 15:46
undeclared_js_vars_step_1
glob = {}; // global object to keep the initial list of properties
glob.initial = Object.keys(window); // save all window properties before any script is loaded
// showDiff shows (on console.log) the list of "new" properties
glob.showDiff = function(before,after) {
after.forEach( function(prop) {
if (before.indexOf(prop)<0) {
console.log(prop,': ', window[prop]);
}
@geomago
geomago / undeclared_js_vars_step_2.js
Last active June 13, 2020 16:15
undeclared_js_vars_step_2
glob.afterLoad = Object.keys(window);
glob.showDiff(glob.initial,glob.afterLoad);
@geomago
geomago / undeclared_js_vars_step_3.js
Created June 13, 2020 15:52
undeclared_js_vars_step_3
glob.showDiff(glob.afterLoad, Object.keys(window));
@geomago
geomago / car_object.js
Last active June 17, 2020 20:45
car_object
let car = {
make: 'Ferrari',
model: '812GTS',
price: 336000,
colour: 'rosso corsa',
options: {wheels: 'standard rims', seats: 'Daytona seats', interior: 'charcoals'}
};
@geomago
geomago / cars_array.js
Last active June 19, 2020 05:29
cars_array
let cars = [
{id: 1, make: 'Ferrari', model: '812GTS', price: 336000, colour: 'rosso corsa'},
{id: 2, make: 'Ferrari', model: 'F8 Spider', price: 262000, colour: 'giallo modena'},
{id: 3, make: 'Lamborghini', model: 'Aventador S', price: 329400, colour: 'blu le mans'},
{id: 4, make: 'Bugatti', model: 'Chiron Pur Sport', price: 3000000, colour: 'blue'},
{id: 5, make: 'McLaren', model: 'New GT', price: 203000, colour: 'helios orange'},
{id: 6, make: 'Ferrari', model: 'F8 Spider', price: 262000, colour: 'giallo modena'},
{id: 7, make: 'Ferrari', model: 'F8 Spider', price: 262000, colour: 'red'},
{id: 8, make: 'Bugatti', model: 'Chiron Pur Sport', price: 3000000, colour: 'red'},
{id: 1, make: 'Ferrari', model: '812GTS', price: 336000, colour: 'rosso corsa'} /* duplicate */
@geomago
geomago / find_car.js
Last active June 19, 2020 05:35
find_car
let car = cars.reduce(function(prev, current) {
return prev.price < current.price ? current:prev;
}, {price:0});
// RESULT IS:
{
id: 4,
make: "Bugatti",
model: "Chiron Pur Sport",
price: 3000000,
@geomago
geomago / find_car_es6.js
Last active June 18, 2020 05:03
find_car_es6
let car = cars.reduce( (prev, current) => prev.price<current.price ? current:prev, {price:0});