• Как посчитать кол-во минут между диапазоном времени 10:04-12:30?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Перевести в никсовый формат(секунды), вычесть и разделить на 60
    Ответ написан
    Комментировать
  • Почему resolve промиса пустой?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Метод query в pool async функция или Promise? Что она возвращает? Зачем вообще await/async вы хотели тут использовать?
    const company_data = () => new Promise((resolve,reject) => {
        pool.query(`select * from the_company where creator_id = ?`, {creator_id}, (error,results,fields) => {
          const id = results.map(r => r.id)
          const name = results.map(r => r.name)      //Ответ - { id: '41' } - id
          console.log(`${id} - id`)
          resolve(id)
        })
      })
    Ответ написан
    3 комментария
  • Как использовать Set-acl в цикле?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Get-ChildItem d:\obm -Recurse -Directory | forEach { set-acl -path $_.FullName -aclObj $acl }
    Ответ написан
  • Как правильно дополить регулярку?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    '/src=[\'"]([^\'"]+)[\'"]/'
    Ответ написан
    Комментировать
  • Почему мы катимся в HTML-ад?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Я вот тоже задумался раз - почему все так безрассудно используют подаренные им ресурсы и технологии? А куда всю молодежь девать с учётом наращивания мощности автоматизации (читай роботизации) в прошлом человеческих процессов? кроме блогов, музыки и геймдэва вообще что то есть в современной детской мечте? Не думаю, что кто то хочет что то открывать и совершенствовать как в советском союзе, скорее просто пользоваться тем что есть - легко и не принужденно. Пришел к выводу, что застой это нормальный виток эволюции (если смотреть на историю и то, что снова французская мода танцев и бестолковых революций пришла к нам)
    ИМХО (эт такая старая постсоветская аббревиатура)

    А если честно - почему бы не пользоваться наследием? В любом случае гавно продукт уйдет в небытие, зачем кого-то оскорблять если можно просто не пользоваться им, партия же не заставляет?

    И да, я в чем то согласен с автором вопроса:
    Делал простой(далеко не невросеть) анализ полугодовой статистики(с шагом в секунды) на nodejs - 2 дня ожидания почти. Переписал на rust - 20 минут. И это с собственно написанным и далёким от идеала алгоритмом конечно, но по сути одним и тем же - что в nodejs что в rust. Вот в этом случае я почувствовал разницу и смог менять стратегию несколько раз на дню. Но, если принять тот факт что игрушка/приложение настолько просты, что нельзя позволить себе дорогостоящих программеров старой закалки на плюсах - зачем это нужно кроме как для фана/опенсорц? Да, современная имплементация IRC может жрать чуть ли не гиг оперативы из за того, что на electron, это вот не нормально конечно - попробуйте отрендерить хэллоу ворлд на нем, сколько он жрёт?.. Да просто запихали хром чуть ли не целиком и всё - пиши системку на js, как вот это назвать? Современный вектор эволюции - много сахара и куча жира или просто снизить порог входа для масс?
    Ответ написан
    Комментировать
  • Почему counter не инкрементируется?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Примитивные типы данных в JS(Number, String) копируются при передаче в функцию, а вот например объекты (Object) передаются по ссылке, не смотря на то, что примитивы тоже объекты:
    var productCounter = { a: 0 }
    
    function incrementCounter(counter) {
    counter.a++
    console.log(counter.a)
    }
    
    incrementCounter(productCounter)
    console.log(productCounter.a)

    Вот статейка
    Ответ написан
  • Как определить часовой пояс пользователя?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Установить в куки/запрос/профиль пользователя его часовой пояс через JS или использовать geoip сервис. И то и другое легко обойти
    Ответ написан
    Комментировать
  • Безопасность при использовании сессии?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    ищите по ключам php session injection
    Вот, например
    Ответ написан
    Комментировать
  • Почему первый вывод в консоль выводит измененные значение в объекте, а не начальные?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Если на jsFiddle нажать Run после загрузки то код выполняется корректно5dcfd9c5793e1951386315.png
    Это говорит о том, что внутренний интерфейс браузера, отвечающий за вывод в консоль, срабатывает после того как объект изменяется.
    Если обернуть скрипт в document.onload то он будет работать корректно. Ещё, как вариант, десериализовать объект в строку:console.log( JSON.stringify(object) )
    примитивы в JS копируются в памяти, потому вывод будет правильный.
    Подробнее про то, как хранятся в памяти типы в JS можно почитать тут (Спасибо Ярослав Иванов )
    Ответ написан
    6 комментариев
  • Как добавить сюда ещё один ноль?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    return minutes + ":" + ('0'+seconds).slice(-2);
    Ответ написан
  • Как сделать реактивную форму на чистом JavaScript?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Легко реализовать самому - делайте "класс", привязывайте к нему на этапе создания инпуты, на каждый из которых повесьте функцию валидации по событию и сохранению состояния инпута. Из этой же функции дергайте общую, которая проверяет инпут1 и инпут2 готовы? => расчет, положить результат в инпут3
    Функцию валидации можно сделать общую, если например составить регулярки и положить их в ассоциативный с именами инпутов массив.
    Ответ написан
    Комментировать
  • Выполняет ли браузер запросы параллельно?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Тут нужно изучать логику работы V8
    Насколько я помню и понял(особо не втягиваясь читал как то статью), ложит он их в очередь исполнения на стеке и забывает, далее другой интерфейс (грубо на картинке у Вас выделен Web Apis) браузера получает данные(или когда таймер например сработал) и ложит коллбэк с данными в Event Loop, когда подойдёт его очередь(first in first out) - он запускается. Можно синхронизировать процесс с использованием await, но на async стек не повлияет все равно..
    Есть ещё ограничение на одновременное подключение к домену (если мне память не изменяет то их 6 в хромиуме), активных сокет соединений
    Сам браузер работает в multithread это в любом случае
    Вот с этим хотя бы полезно ознакомиться, чтобы понять почему таймеры могут немного задерживаться.
    Ответ написан
    Комментировать
  • Как переподключаться к базе, в случае разрыва соединения без перезагрузки приложения?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Добавьте в mongoose.connect опции
    reconnectTries: 2, // попытки реконнекта
    reconnectInterval: 1000, //каждую секунду
    connectTimeoutMS: 2000, // после 2 секунд ожидания соединения пытаться снова или сбрасывать

    Дальше ловите события через
    db.on('reconnected', function(){ console.log('reconnected successfully'});
    db.on('reconnectFailed', function (error){
    //Что делать если все попытки реконнекта провалились
    });
    Ответ написан
    Комментировать
  • Как разместить перменную PHP в JS?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    <?php if( isset($_SESSION['logged_user']) ) : ?>
      <div class="head-el-one">
        <p onmouseover="vsplil.show('<?= $notifications ?>', this.offsetLeft, this.offsetTop);"
            onmouseout='vsplil.hide()'>
            <ion-icon name="megaphone"></ion-icon>
          </p>
          <div class="top_notify_count">1</div>
      </div>
    Ответ написан
  • Как сделать чтобы этот скрипт работал ко всем классам?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Ещё можно таким образом
    jQuery(document).ready(function($) {
    	document.addEventListener('click', function(e) {
      	if (!e.target.classList.contains("linkinp")) return;
      	var element = document.querySelector(".doght-03");
      	if(element.classList.contains("show-block")) {
      		element.classList.remove("show-block");
      	} else {
      		element.classList.add("show-block");
      	}
    	});
    });
    Ответ написан
  • Как посчитать количество комбинаций в диапазоне ip?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    На JS: (язык тут не был указан)
    const ip2int = (ip) => 
    	ip.split('.')
    	.map( (value, index) => Number(value) * 256 ** (3-index))
    	.reduce( (sum,value) => sum + value, 0);
    const range = (from, to) => ip2int(to) - ip2int(from);
    console.log(range("192.168.1.0", "192.168.1.255"));
    // 255 - т.е. броадкаст адрес он тоже считает

    Суть - перевести ip в целые числа и вычесть их
    Универсальный и простейший алгоритм перевода ip в число, например 5.24.0.0:
    5 * (256^3) + 24 * (256^2) + 0 * 256 + 0 = 85458944
    Ответ написан
    3 комментария
  • Как удалить число из массива в JSON?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    1. Нужно принять тот факт что это также и массив
    2. Нужно осознать что node это всё же "приставка" к js
    3. Решение
    3.1. Метод delete
    var a = [123, 125, 555];
    delete a[1];
    console.log(a);
    //[123, null, 555]

    Т.е. null останется (даже если сделать JSON.stringify). Это скорее всего не нужно
    3.2. метод splice
    a.splice(1,1); // первое число это индекс, второе - количество удаляемых. Функция вернёт удаленные элементы, поэтому просто её вызываем
    console.log(a);
    // [123, 555]

    Удалился, после сериализации ( JSON.stringify(a) ) он также не будет присутствовать в строке. Но..
    3.3. Метод filter - применим его также к массиву a, чтобы доказать что индекс элемента всё же остался после функции splice
    a = a.filter( (index, value) => index != 1 );
    console.log(a);
    // [123, 555]

    Теперь чисто
    P.S. выбирать можно любой подходящий метод, последовательность соблюдать не нужно - расписал для наглядности результата
    Ответ написан
  • Как исправить данную ошибку?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    См. доку
    __dirname#
    Added in: v0.1.27
    <string>
    The directory name of the current module. This is the same as the path.dirname() of the __filename.
    Ответ написан
  • Как боту выполнить деление двух переменных?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    Попробую тыкнуть пальцем в небо.. Криво, не красиво, без проверок и возможно с ошибками синтаксиса.. Вобщем наваял на одном дыхании и протестить никак
    var _MR=0;
    bot.addScene('sample',
    	({ reply, scene: { next } }) => {
    		next()
    		reply('Введите MR(целое число)');
    	},
      ({ reply, body, scene: { next } }) => {
        _MR=parseInt(body);
        next()
        reply('Введите TR(целое число)')
       },
      ({ reply, body, scene: { leave } }) => {
        leave()
        let kmr = _MR / parseInt(body)
        reply(`KMR = ${kmr}`)
      }
    );
    bot.command('Рассчитать коэффициент маржинального дохода', ({ scene: { join } }) => join("sample") );

    Правда _MR там как то нужно к юзерской сессии хранить - сходу не нашел как, может просто в ctx записать можно?
    Ответ написан