• Почему i = undefiend. В Функции условие if, в условии цикл for?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Потому что someLength меньше, чем num.
    Таким образом, цикл начинается с i = num, но не проходит первую проверку на i <= someLength, в итоге в цикле ноль итераций, в результате которых в массив ничего не добавляется.

    При этом i не равно undefined, оно равно именно num, но только в пределах цикла, который закончился сразу после того, как начался. А затем переменная i перестает существовать с точки зрения языка.

    К слову, если сделать someArr.push(undefined), то длина массива изменится. Так что в отсутствии работы цикла легко убедиться, проверив, что someArr.length === 0
    Ответ написан
  • Почему не могу ничего написать в поиске?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Удалены или отключены какие-то расширения системы (проводника). У меня такое было, когда пытался ускорить сортировку списка файлов в папках с over 2к файлов и слишком много всего поотключал через ShellExView, потом пришлось снова включать.
    Ответ написан
  • Какой Iphone выбрать под iOS разработку?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    iPhone можно брать любой от 7 и выше. Если вам не нужно работать со сканом отпечатка или лица, и всякое такое, то основное значение имеет версия iOS. Вы же не чисто под разработку, а и для себя тоже, верно? Потому что если чисто под разработку, можно взять какое-нибудь б/у старье типа iPhone 6 (с 1 Гб оперативки), с разбитым экраном (чтоб подешевле). Но с другой стороны, если вы будете делать приложение, у которого высокие системные требования (крутую игру, например), то ресурсов может не хватить, или же вы намучаетесь с тестированием.

    Вот для Android уже нужен целый парк устройств. И тестирование по этой причине обычно дают на аутсорс. Но это совсем другая история, у вас же разработка чисто под Яблоко.
    Ответ написан
  • Как клонировать систему?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Похоже на историю, когда какого-то сотрудника вообще нельзя уволить, потому что без него все процессы встанут намертво и компания загнется. И вот, этот сотрудник начал опаздывать, а иногда и прогуливать работу. Такого рода ошибки довольно больно исправлять. Но всё же верным будет путь в сторону именно исправления ошибки, а не придумыванием костыля.

    Поэтому мудрым будет разобраться, как устроены эти бухгалтерские программы, чтобы их нормально переустановить на чистую систему. Сейчас, возможно, поможет проверить, что с жестким диском всё нормально, а потом проверка системы и обнаружение в ней какого-то мелкого приложения, которое вызывает тормоза. Инструменты для этого есть, начиная от банального диспетчера задач и кончая полноценным мониторингом системы: устройств, процессов, операций с файлами и т.д. Но бухгалтерша должна понимать, что если завтра случится пожар и компьютер сгорит, то разумно иметь бекап и возможность восстановить работу из него.
    Ответ написан
  • Как найти баланс чисел в массиве?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Алгоритм такой. Все элементы помещаем в одну кучу (массив). Сортируем по убыванию. Дальше начинаем раскидывать по двум новым массивам. Параллельно считаем сумму каждого массива. Таким образом, раскладываем сначала большие числа, потом всё меньше и меньше. Каждый раз кладём новое число в тот массив, где сумма меньше.

    Очевидно, что последними будут идти самые маленькие числа, которые будут старательно минимизировать разницу в суммах. Доказать, что в итоге разница будет минимальна, я не могу (лень), но интуиция подсказывает, что это будет так.


    UPD:
    Такой алгоритм полного перебора
    function balance(arr1, arr2) {
      let all = arr1.concat(arr2);
    	//all.sort((a, b) => a - b); //Для исключения одинаковых.
    	let all_sum = all.reduce((a,b)=>a+b,0);
    	let len = all.length;
    	let cnt = Math.floor(len * 0.5);
    	let arr_result = new Array(cnt); //Массив выбранных индексов
    	let idx_begin = 0; //Начальная глубина перебора (индекс в arr_result)
    	let sum_begin = 0; //Начальная сумма частично перебранных элементов
    	
    	if (cnt === len * 0.5) { //Оптимизация
    		arr_result[0] = 0;
    		idx_begin = 1;
    		sum_begin = all[0];
    	}
    	
    	let min_diff = all_sum; //Присваиваем какое-то заведомо большое число.
    	let arr_answer; //Итоговый ответ
    	
    	//Проверяем следующий уровень глубины
    	//idx - глубина, sum - сумма всех элементов до этого
    	function check(idx, sum) { 
    		if (idx === cnt) { //Конец перебора. Проверяем, подходит ли.
    			let diff = Math.abs((all_sum - sum) - sum);
    			if (diff < min_diff) { //Подходит
    				min_diff = diff; //Запоминаем новый лучший результат.
    				arr_answer = arr_result.slice(); //Копируем
    			}
    			return;
    		}
    		//Иначе идем дальше вглубь на следующий уровень.
    		let start = idx === 0 ? 0 : arr_result[idx-1] + 1;
    		let max = len - cnt + idx;
    		for(let i = start; i <= max; i++){ //Ключевой цикл алгоритма
    			//if (i > start && all[i] === all[i-1]) continue;
    			arr_result[idx] = i;
    			check(idx+1, sum+all[i]); //Рекурсия
    		}
    	}
    	check(idx_begin,sum_begin); //Начать перебор. Поехали!
    	
    	arr1 = [];
    	arr2 = [];
    	
    	//Фасуем полученный ответ по массивам уже в виде значений.
    	let j = 0;
    	all.forEach((e,i)=>{
    		if (i === arr_answer[j]) {
    			arr1.push(e);
    			j++;
    		} else arr2.push(e);
    	});
    	
    	return {
    		arr1: arr1,
    		arr2: arr2,
    		sum1: arr1.reduce((a,b)=>a+b,0),
    		sum2: arr2.reduce((a,b)=>a+b,0),
    	}
    }
    
    var arr1 = [10, 300, 25, 75];
    var arr2 = [50, 125, 500, 10];
    balance(arr1, arr2);
    Ответ написан
  • Какую модель машинного обучения лучше использовать для прогнозирования движения рейсового транспорта?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Мне видится, что у вас мало данных для точного прогнозирования.

    Это всё равно, что предсказывать, опоздает ли человек на работу, основываясь на статистике о том, насколько он вовремя приходил всё время до этого. Максимум, что можно сделать - это выявить какие-то системные свойства, которые более-менее постоянные и меняются редко. Например, шанс опоздать. Это конкретная цифра, которую можно вычислить, и далее на её основе предсказывать. Но точность предсказания будет равна шансу опоздать. То есть этот самый шанс и будет погрешностью.

    Приложения, которые нынче занимаются прогнозированием расписания, когда какой транспорт приедет, имеют в распоряжении гораздо больше информации:
    1. Информацию о пробках.
    2. Информацию о GPS координатах каждого транспорта.

    Конечно, точность всё равно не 100%. И порой случаются накладки. Например, мимо остановки может проехать фантомный автобус, или, наоборот, может приехать автобус, которого не существует по данным приложения. Но всё равно точность прогнозирования гораздо выше, чем если основываться лишь на ретроспективном анализе.
    Ответ написан
  • Есть ли где-то статистика по тому, насколько успешно пытаться схантить ребят из СПБ в Москву?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В этом нет смысла, т.к. либо разработчик вынужден переехать в Москву, где жизнь дороже, и разница в зарплатах нивелируется, либо он становится удалёнщиком. А на удаленке почти без разницы, где жить. Собственно, предлагать зарплату будут, скорее всего, как раз со скидкой на регион проживания, а дальше уже как договоритесь.
    Ответ написан
  • Какой будет самый производительный алгоритм сортировки?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Сложность сортировки в общем случае будет O(N*log(N)).

    Но если есть или вы готовы ввести дополнительные ограничения, то можно улучшить этот показатель.

    Вот пример для вашего случая.
    spoiler
    Что есть "большое число"? Предположим, это число от 90 до 100.

    Предположим, у вас значения распределены в массиве более или менее равномерно (имеется в виду частота встречаемости). На самом деле не важно, какое распределение, главное знать, какое оно. В любом случае это дополнительное условие. То есть если про массив не известно ничего, то можно либо предположить это дополнительное условие, сославшись на отсутствие прочих данных, либо поменять программу так, чтобы оно соблюдалось.

    Таким образом, если распределение равномерно, то большие числа составляют примерно 10% от общего количества элементов. На самом деле важнее всего, что пороговое число - 90.

    Теперь мы можем сортировать массив простым алгоритмом сложности O(N) - просто на две кучи: большие и маленькие числа. Делим массив в соотношении 1 к 10, ну и сортируем за один проход. Конечно, будут накладки, но в целом это должно быть не критично. Отсутствие важности - это тоже дополнительное условие, увы.

    В результате такой стремительной сортировки вы получаете самые большие числа в начале и остальные в конце. Дальше можно скормить это вашей формуле.
    Ответ написан
  • Какие есть бесплатные сервисы для мониторинга репутации?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    День добрый. Мониторинг репутации можно осуществлять с помощью подвида ПО, которое называется "парсеры". Они собирают информацию с сайтов и выдают в готовом удобочитаемом виде или передают в другое ПО для анализа и выводов, иногда с помощью экспертов по оценке репутации.

    spoiler
    Кстати, "добрый день" и "день добрый" это флуд, и он не желателен на этом ресурсе. Будьте добры, соблюдайте правила. Ссылка на правила внизу страницы (о сервисе).
    Ответ написан
    Комментировать
  • Можно ли с помощью js удалить атрибут в элементе img?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно. Почему нет?
    spoiler
    Поиск не помог что ли? Или было лень искать? хм
    Ответ написан
    3 комментария
  • Два роутера, как подружить?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Роутер с возможностью резервирования интернет-канала, то есть с функцией Multi-WAN. Плюс к нему Wi-Fi мост, чтобы подключаться к соседу, если сам роутер этого не позволяет.
    Примерно так:
    5e018db4e9e36680766565.png
    Бюджет примерно 8000 руб.

    Будет забавно, если сосед точно такую же схему применит.
    Ответ написан
  • Способ закрепления привычки?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Универсального способа легко запомнить большое количество однородных элементов я не знаю. Думаю, это невозможно. Есть правило семи, которое как бы намекает, что объем человеческого внимания ограничен.

    Но если нужно сделать что-то одно, и не забыть, то знаю только такие варианты:
    1. Привязать ассоциативной связью действие в будущем к какому-то явлению в будущем. Например, уходя из дома, гаси свет. Здесь триггером является выход из дома, и он должен четко ассоциироваться с одним конкретным действием. Если их много, то это уже другой случай (а именно, чек-лист).
    2. Выделить одну ячейку внимания, если можно так выразиться, и хранить информацию там вплоть до того момента, когда нужно сделать действие, после чего можно освободить ячейку, забыть, не думать. Сложность здесь в том, что нужно развить реальный навык для этого. Ведь обычно, когда что-то сильно отвлекает, внимание полностью очищается, как у детей, и после этого приходится восстанавливать его содержимое, формируя картину происходящего практически с нуля. И здесь легко упустить что-то, что напрямую не относится к текущей ситуации. Самый яркий пример - это чайник (не электрический), который частенько сгорает во время просмотра классного фильма или чего-то эмоционального. Как натренировать навык, точно не скажу, но если задаться такой целью, то это дело времени. Впрочем, за ненадобностью этот навык также легко атрофируется. И еще большая проблема здесь в том, что такой путь запоминания очень энергозатратный.
    3. Развить в себе внутреннее беспокойство, что-то типа тревожности, которое примерно раз в 5 минут заставляет перебирать в памяти всё, что только можно, по принципу "а не забыл ли я чего". Это как бы прерывание. В отличие от предыдущего пункта почти не затратное, но в случае с чайником велик шанс, что он выкипит наполовину.


    В отношении чек-листа (уходя из дома, погаси свет, проверь плиту, газ, воду, возьми ключи, деньги, паспорт и т.д.) можно запомнить цифру. К примеру, выходя из дома мне нужно сделать 7 вещей. Мысленно перебираю их, параллельно проверяя, заодно считая, и если число не сходится, то значит что-то забыто. Дальше можно до посинения вспоминать, что именно забыл, пока не удастся вспомнить. Минус в том, что полный список из цифры восстанавливается трудно и долго, даже если делать это каждый день. Плюсом идет то, что невозможно ничего забыть из списка. Соответственно, если в списке больше примерно 15 элементов, то можно еще и бить на категории, но это уже совсем другая история.
    Ответ написан
    Комментировать
  • Какой язык программирования изучать в свободное время?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Какой-то конкретной цели, объясняющей для чего мне это надо, пока что нет.

    - Скажите пожалуйста, куда мне отсюда идти?
    - А куда ты хочешь попасть? - ответил Кот.
    - Мне все равно... - сказала Алиса.
    - Тогда все равно куда и идти, - заметил Кот.
    - ...только бы попасть куда-нибудь, - пояснила Алиса.
    - Куда-нибудь ты обязательно попадешь, - сказал Кот. - Нужно только достаточно долго идти.

    Льюис Кэрролл
    Ответ написан
    1 комментарий
  • В чём разница между нейро сетью, искусственным иннтелеллектом, машинным обучением, глубоким обучением?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нейро сеть - сеть нейронов, соединенных между собой связями, очевидно.
    Искусственный интеллект - эмуляция разумности, это не обязательно нейро сеть, может быть и конечным автоматом (хотя это больше имитация) .
    Машинное обучение - по сути наполнение искусственной нейро сети информацией.
    Глубокое обучение - подвид машинного обучения.
    Ответ написан
    1 комментарий
  • Что можно сделать из Mi Band 4?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно использовать, как часы. Батарейки надолго хватает, это главное (для часов).

    А что еще нужно-то? Я бы исходил не из того, что можно сделать, а что нужно сделать, то есть чего именно остро не хватает или какая цель. А логика из серии "у соседа музыка в часах, хочу также" довольно странно звучит.

    Вроде в уведомления умеет, чтобы не доставать телефон, но лично я даже этим не пользуюсь. Возможностей действительно мало. Кандидат на выброс. Просто можно же просто так носить до покупки нормального девайса, раз подарили. А какой-то особой цели лично у меня нет. Точнее, у меня есть цель отслеживать сон с высокой точностью, но она не особая и очень очень второстепенная. Потом, когда-нибудь, возможно. А у вас какая цель? Что вам нужно от часов? Читалку? Контроль сахара в крови? Что для вас критично, кроме NFC?
    Ответ написан
  • Как эффективно выбирать каждый n элемент массива?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Эффективно - только через создание второго индексного массива. При этом, очевидно, проигрыш по оперативной памяти, но не архи большой. Объекты передаются по ссылке, и строки примерно до 12 символов - тоже по ссылке.
    var arr = [1,2,3,4,5,6,7,8,9,10,11,12]; //Исходный массив
    //Формируем вспомогательный индексный массив
    var i = 0;
    var every_5 = arr.filter(e => (++i) % 5 === 0); 
    //Проверяем
    every_5[0]; //Пятый элемент
    every_5[1]; //Десятый элемент
    Ответ написан
    8 комментариев
  • Как избавиться от запятых с помощью регулярных выражений?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Примерно так:
    $str = 'раз, два, три и 4,567,';
    echo preg_replace('/, ?/', ' ', $str); //раз два три и 4 567

    Но нужно уточнить вопрос, чтобы ответить более точно.
    Ответ написан
    Комментировать
  • Что означает return function?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Дело в том, что функция в языке JavaScript - это объект, то есть она является значением. Её можно запихнуть в переменную. А потом эту переменную можно вызывать, как функцию.

    Пример:
    var f = function() { alert(123) }; //записали в переменную f целую функцию.
    f(); //вызвали функцию в переменной.

    Можно даже пойти дальше по этой логике. Ведь alert - это тоже функция.
    var f = alert;
    f(123);

    В общем, надеюсь, логика понятна. Что касается вашего кода, то в нем из названия функции makeCounter очевидно, что она создаёт счетчик, то есть создает то, что умеет считать. То есть создает функцию. Вот и получается, что нужно вернуть функцию. Записать это можно по-разному, в том числе и в одну строчку, которая начинается с return function.

    Ниже в строке:
    let counter = makeCounter();
    Мы как раз создаём эту функцию. То есть функция помещается в переменную counter. И чтобы это произошло, функция makeCounter должна вернуть функцию в качестве значения. Это и происходит.
    Ответ написан
    3 комментария
  • Как лучше организовать рабочий процесс в Jira Atlassian, Agile?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Лучше для чего или для кого? Вы спрашиваете, как лучше, но ничего не пишете про специфику своей работы.

    В Jira можно замутить практически любую схему организации. Вопрос лишь в том, что вам надо и чего вы хотите. Скажем, если есть бюджет, но нет сроков - одна схема. Если есть сроки, но нет бюджета, то другая. И так далее. Множество условий может быть, которые ограничивают или предъявляют требования к организации процессов.
    Ответ написан