• Как разобраться в подключении реле для умного дома?

    Stalker_RED
    @Stalker_RED
    реле которые будут работать на разрыв ввода

    Это реле и так работает в разрыв.
    Подключите к L-In и N-In фазу и ноль из розетки, l-Out на один из проводов ведущих к лампочке (придется прозвонить или угадать). Недейтесь при этом, что фаза в розетке та-же самая, что и в лампочке.

    предупреждение о безопасности

    Выражаю надежду, что все эти манипуляции вы производите отключая питание в щитке. И что у вас есть хотя-бы самый простой тестер и индикаторная отвертка


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

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

    Возможно вам повезло, и провод приходит в какую-то расперделительную коробку, или точку крепления люстры, где его можно будет перекоммутировать так, чтобы по двум жилам в подрозетник приходили нормальные фаза и ноль, а по третьей уходила фаза на лампочку. Естественно, лампочку тоже надо будет перекоммутировать так, чтобы в нее приходил нормальный ноль и фаза, которая вышла из реле.
    Ответ написан
    1 комментарий
  • Как поставить винду на SSD?

    Stalker_RED
    @Stalker_RED
    1. Втыкаешь SSD в компуктер.
    2. Втыкаешь в него флешку или диск с инсталляхой винды (или запускаешь из-под уже установленной винды, не важно).
    3. Во время установки при выборе раздела для винды выбираешь свою SSD-шку, и жмешь продолжить. Еще язык, регион и раскладку клавиатуры выбираешь, да.

    На каком этапе проблема?
    Ответ написан
    1 комментарий
  • Что делать с ошибкой в PHP?

    Stalker_RED
    @Stalker_RED
    Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?
    вероятно тот пхп, что в шторме, и тот что "через сайт" настроены по разному.
    Сравните по выводу phpinfo, какой php.ini подключён.
    Ответ написан
  • Проблема функций с помощью массива с var?

    Stalker_RED
    @Stalker_RED
    Это фокус с машиной времени. Дело в том, что код не всегда исполняется сверху вниз, как вы его читаете. В момент создания функций переменная меняется на 0,1,2. В момент вызова этих функций она уже равна 3.
    Значение i не передается в переменные в момент создания функций, оно читается уже в момент их вызова.

    Но вообще и в переменной var, и в let и в const может быть любое значение - примитив, ссылка на объект, на функцию. Разница в основном в областях видимости, и частичной неизменности const. Если вы измение var i на let i, то в консоль выведется 0,1,2. Если вы вынесете объявление i на строчку выше, то будет так-же как с var.
    Все дело в фигурных скобочках :)
    var funcs = [];
    // let's create 3 functions
    let i = 0
    for (; i < 3; i++) {
      // and store them in funcs
      funcs[i] = function() {
        // each should log its value.
        console.log("My value:", i);
      };
    }
    for (var j = 0; j < 3; j++) {
      // and now let's run each one to see
      funcs[j]();
    }


    Пустые блоки имеют смысл только если вам нужно ограничить область видимости для какой-то операции. А конкретно вашем примере смысла от скобок нет.
    Ответ написан
  • Как использовать addEventListener на пользовательское событие?

    Stalker_RED
    @Stalker_RED
    https://developer.mozilla.org/ru/docs/Web/API/Even...
    Пример, где событие myEvent отправляется после нажатия на кнопку #pew:
    const event = new Event('myEvent'); // создаем кастомное событие myEvent
    
    pew.addEventListener('click', function() { // слушаем клик по кнопке
      circle.dispatchEvent(event); // отправляем событие myEvent
    });
    
    circle.addEventListener('myEvent', function(evt) { // слушаем событие myEvent
      // какая-то полезная нагрузка
      console.log(evt.target);
    });

    https://jsfiddle.net/Stalk/ujd2t5og/
    Ответ написан
    Комментировать
  • PHP: как снизить нагрузку на сервер при выполнение тяжёлого скрипта?

    Stalker_RED
    @Stalker_RED
    Да, sleep немножко облегчит, но вообще маловато информации.

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

    Stalker_RED
    @Stalker_RED
    Если писать проверку кодом, то все просто
    function check(data) {
    	return Object.hasOwn(data, 'd') && data.m === 1;
    }

    https://jsfiddle.net/wzt492vL/

    Если нужен именно объект с правилами, то записать в него регулярки, например?
    const rule = {
     d: /.+/,
     m: /1/,
    }
    
    function check(data) {
    	let result = true;
      for (const key in rule) {
        if (!Object.hasOwn(data, key)) return false;
        if(!rule[key].test(data[key])) return false;
      }
      return result;
    }
    https://jsfiddle.net/8u46rw3d/
    Ответ написан
    2 комментария
  • Почему forEach выдает разные результаты?

    Stalker_RED
    @Stalker_RED
    a.a+=1 сработает.
    Вы в первом случае меняете значение a.a (больше однобуквенных названий, давайте добавим в мире путаницы!)
    во втором просто складываете его значение с единицой и никуда это значение не применяете.
    let x = 3 // x=3
    x++ // x=4 инкремент
    let y = x + 1 // y=5, x=4 все еще 
    x += 2 // x=6
    Ответ написан
    Комментировать
  • Что делать с ошибкой в PHP?

    Stalker_RED
    @Stalker_RED
    Если у вас нет php.ini, значит у кого-то их два!

    А у вас все настройки по умолчанию. Если хотите их менять, то этим файлом стоит обзавестись. Это не сложно - рядом с php.exe лежит php.ini-development и php.ini-production
    Скопируйте тот что development, переименуйте в php.ini, и все, теперь можно рулить настройками аки настоящий одмин. (И можете накопировать еще несколько штук, чтобы хвастать, что у вас их целая пачка).
    Ответ написан
  • Как записать многомерный массив в csv?

    Stalker_RED
    @Stalker_RED
    CSV - для двумерных таблиц же.
    Или сделать массив более плоским, или писать не в CSV.
    Ответ написан
    2 комментария
  • Как нормально дебажить wordpress?

    Stalker_RED
    @Stalker_RED
    Написать свою функцию, которая форматирует как вам нравится, и пишет куда вам нравится.

    В минимальном варианте у вас там всего пара строчек будет
    $logStr = is_string($data) ? $data : var_export($data, true);
    error_log($logStr, 3, $this->logFileName);

    Я обычно сразу добавляю немножко обвязки к ним - выводить ли таймстампы, дублировать ли вывод в консоль или браузер, дампить ли все параметры из GET или POST запроса.
    В принципе это все не особо нужно, когда есть xdebug, но если вы отлаживаете что-то, что дергают другие пользователи или внешние сервисы, то без логгера сложно.
    Ответ написан
    Комментировать
  • Как применить отдельный фон к тегам input?

    Stalker_RED
    @Stalker_RED
    Так они уже стали прозрачными же.
    https://jsfiddle.net/htsbnu2p/
    Ответ написан
    1 комментарий
  • Как пробросить порты с wsl в windows 10?

    Stalker_RED
    @Stalker_RED
    Но сам nginx в windows реализован плохо. тяжело с ним взаимодействовать (писать команды только из папки где он установлен)
    добавить эту папку в PATH, не?
    Ответ написан
    Комментировать
  • Как написать цикличный таймер?

    Stalker_RED
    @Stalker_RED
    Напишите список ваших задач, или периодов, или как их там. В них храните либо длительность, либо время начала и окончания, как вам удобнее.

    Напишите ОДИН setInterval, который сравнивает текущее время со временем старта или конца ваших периодов.

    Конструкции типа time-- идут лесом.
    Потому что и setInterval и setTimeout не гарантируют время срабатывания. Они работают "не раньше чем", а позже - запросто. Только хардкор: const now = new Date() на каждом тике таймера.

    Всякие циферки для отображения вычисляются из разницы между now и start или end, математика простейшая.
    Ответ написан
    Комментировать
  • "Приложение с историями", вопрос с масивами?

    Stalker_RED
    @Stalker_RED
    document.addEventListener('keydown', function(evt) { // слушаем нажатия кнопок
      if (evt.code === 'Enter')
        showNextMsg();
    });
    
    const msg = function* () {
    	yield* [ // генерируем сообщения
        { name: 'Вася', txt: 'Привет!' },
        { name: 'Петя', txt: 'И тебе привет!' },
        { name: 'Вася', txt: 'Как дела?' },
        { name: 'Петя', txt: 'Хреново, мой хомяк заболел' },
        { name: 'Вася', txt: 'Аха-ха-ха' },
        { name: 'Петя', txt: 'Василий, вы - бесчувственная скотина!' },
      ];
    }();
    
    function showNextMsg() {
      let m = msg.next(); // получаем следующее сообщение
      if (!m.done) { // выводим его
        userName.textContent = m.value.name;
        userMessage.textContent = m.value.txt;
      }
    }

    https://jsfiddle.net/Stalk/8gm3y9w7/
    Ответ написан
    Комментировать
  • Как написать условие - диапазон вне диапазона?

    Stalker_RED
    @Stalker_RED
    (x<a && y<a) || (x>b && y>b)
    То есть обе границы первого диапазона меньше, или больше, чем границы второго.
    Если известно, что x всегда меньше, чем y, то можно короче
    y<a||x>b
    Ответ написан
    3 комментария
  • Как в цикле одного массива выбирать в каждой итерации разные значения по очереди?

    Stalker_RED
    @Stalker_RED
    Индекс второго массива = остаток от деления индекса первого, на длину второго.
    Ответ написан
    2 комментария
  • Замыкания не существует?

    Stalker_RED
    @Stalker_RED
    Я немного добавил наглядности
    function one() {
      const oneVar = 'Hello!'
      let counter = 0;
      console.log('функция one работает прямо сейчас, в счетчике', counter)
    
      function two() {
        console.log(oneVar, ++counter)
      }
      
      console.log('функция one почти завершилась, в счетчике все еще ', counter);
      return two
    }
    
    const three = one();
    console.log('функция one точно завершилась, даже return сработал');
    console.log('в переменной three сейчас функция two()');
    console.log(three);
    
    
    three();
    three();
    three();
    console.log('обожемой, мы видим как менялась переменная в уже завершенной функции. чераная магия? нет - это называется замыкание!');

    выхлоп:
    "функция one работает прямо сейчас, в счетчике", 0
    "функция one почти завершилась, в счетчике все еще ", 0
    "функция one точно завершилась, даже return сработал"
    "в переменной three сейчас функция two()"
    function two() {
      console.log(oneVar, ++counter)
    }
    "Hello!", 1
    "Hello!", 2
    "Hello!", 3
    "обожемой, мы видим как менялась переменная в уже завершенной функции. чераная магия? нет - это называется замыкание!"
    Ответ написан
    Комментировать
  • Как вытащить артикул из строки?

    Stalker_RED
    @Stalker_RED
    Основываясь на утверждении, что артикул всегда содержит в себе цифры, и предположении, что пробелов он не содержит:
    \S*\d+\S*
    https://regex101.com/r/BQBjHR/1
    Ответ написан
    1 комментарий