function roundTS(ts) {
var D = new Date(ts);
var m = 15 + Math.ceil( D.getMinutes() / 15);
D.setMinutes(m);
return D.getTime();
}
function roundMinArr( D, arr) {
var i, m = D.getMinutes();
arr.sort((a,b)=>a-b);
for(i in arr) {
if( arr[i] < m) continue;
D.setMinutes(arr[i]);
return D;
}
D.setMinutes(60 + arr[0]);
return D;
}
var D = roundMinArr( new Date('2017-08-16T12:17+03:00'), [0,15,35,44,59]);
D.toString() // Wed Aug 16 2017 12:35:00 GMT+0300 (MSK)
this.a=[
new Audio('https://wav-library.net/sfx/mix/LightSwitch.mp3'),
new Audio('https://wav-library.net/prmusic/rock/Run.mp3')
];
this.f=()=>{ // это будет новый обработчик клика
var cc=!!this.cc; // для краткости записи
this.a[+!cc].pause(), // если предыдущий длинный играет - стоп его!
this.a[+!cc].currentTime=0, // ..и перемотать на начало.
a[+cc].play(), // играть новый
this.cc=!cc // переназначить счётчик ( true | false )
};
this.onclick=this.f, // переназначить хэндлер клика
this.f() // вызвать для первого клика принудительно
<td onclick="this.a=[ new Audio('https://wav-library.net/sfx/mix/LightSwitch.mp3'), new Audio('https://wav-library.net/prmusic/rock/Run.mp3')];
this.f=()=>{var cc=!!this.cc;this.a[+!cc].pause(),this.a[+!cc].currentTime=0,a[+cc].play(),this.cc=!cc};
this.onclick=this.f,this.f()">click me!</td>
function getById( obj, id) {
var i, found;
if( obj.id === id) return obj;
if( obj.hasOwnProperty('childGroups')) {
for( i in obj.childGroups) {
if( found = getById( obj.childGroups[i], id)) return found;
}
}
return;
}
getById( obj,3) // {"id":3,"parentId":1,"childGroups":[{"id":6,"parentId":3},{"id":7,"parentId":3}]}
image.png|image.jpg|image.gif|audio.mp3
function bad( obj, name) {
return eval('obj.' + name);
}
bad(r, 'foo.bar'); // 'value'
function better( obj, name) {
var parts = name.split('.'), i, cursor = r;
for( i = 0; i < parts.length; i++) {
if( !cursor.hasOwnProperty( parts[i])) throw('No such property: ' + parts[i]);
cursor = cursor[parts[i]];
}
return cursor;
}
better(r, 'foo.bar'); // 'value'
--max_old_space_size
задаёт максимальный размер т.н. Old Space – части Heap, куда попадают неактивные и не нужные данные. Это, на практике, область, занимающая наибольшую память. Именно её есть смысл ограничить, чтобы процесс Node занимал поменьше памяти.node --max_old_space_size=128 index.js
WEB_MEMORY
которой установить доступный процессу node.js объем памяти в Mb: WEB_MEMORY=128 bash startup.sh
, если использовать для запуска node приложения скрипт, предложенный автором статьи (на англ.), откуда я всё это только что сам узнал )