• Как обновить кэш у пользователя сайта?

    wapster92
    @wapster92 Куратор тега CSS
    Для css и js в пути файла можно подставлять версию после знака "?" <script src="/js/main.js?123456789"></script>

    Картинки и так обновляются, если название отличное.
    Ответ написан
    Комментировать
  • Кодирование и декодирование json обратно?

    colonel
    @colonel
    Разработчик PHP, Laravel
    json_decode('[{"command":"knopki","knopki":"gor_1"},"test","white"]', true);
    Ответ написан
    6 комментариев
  • Как формируется цифровая подпись?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. массив объединяется в строку без разделителя
    2. результат шифруется методом sha1 без всяких "ключей", с бинарным выводом
    3. результат кодируется base64
    4. к результату добавляется секретный ключ спереди и сзади
    5. результат шифруется методом md5 с бинарным выводом
    6. результат кодируется base64

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

    neuotq
    @neuotq
    Прокрастинация
    https://jsfiddle.net/bvuco1hj/
    Дичь со
    .stars div {
    float: left;
    }

    Убираем.
    Далее, stars_inner делаем realtive, а красный фон абсолютом
    .stars__inner {
      position: relative;
    }
    .stars__progress {
      background: red;
      position: absolute;
      left: 0;
      top: 0;
      z-index: -1;
    }
    Ответ написан
    1 комментарий
  • Как добавить event listener?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сам gtag не предусматривает, чтобы слушали события на нём. Поэтому надо прошерстить весь свой код и найти все вызовы gtag() с искомым событием. И там же дописать ваш alert()
    Или сделать свою прослойку для аналитики. На странице вызывать вместо gtag() свою функцию, например, mytag() которая, в свою очередь, станет вызывать gtag() и может, другие скрипты аналитики.

    Upd. в комментариях выяснилось, что ТС не может поменять вызовы к gtag() В таком случае остаётся заменить функцию gtag() на свою:
    function gtag(){
      dataLayer.push(arguments); // это весь исходный её функционал
    
      if (arguments.length > 1
        && typeof arguments[0] === 'string'
        && arguments[0].toLowerString() === 'event'
        && typeof arguments[1] === 'string'
        && arguments[1] === 'name1'
      )
      {
        alert("Name 1!");
      }
    }
    Ответ написан
    4 комментария
  • Что будет в геймдеве с Flash после его закрытия?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Использовать Flash для разработки игр как-то странно в 2020 году. Это устаревшая технология, и закрытие лишний раз это подтверждает. Не будем вдаваться в подробности, что к этому привело, будем довольствоваться итоговыми фактами.

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

    Браузерные игры в 2020 можно разрабатывать на WebGL. Для этого вполне подходит Unity. Собственно, Unity как раз делает упор на кроссплатформенность, так что один и тот же проект вы сможете собрать под разные платформы без особых проблем. Ограничителем будет только отличие в целевых устройствах и способах взаимодействия с ними (разные размеры экрана, соотношения сторон, наличие мыши, клавиатуры, сенсорного экрана, датчиков и пр).
    Ответ написан
    7 комментариев
  • Почему выдает ошибку?

    npanuhin
    @npanuhin
    lastChild включает в себя текстовые элементы, поэтому вместо ожидаемого div он берёт текстовый элемент.
    Вам нужно использовать lastElementChild, то есть:
    var panes = document.querySelectorAll('.pane');
    
    for (let pane of panes) {
      pane.lastElementChild.onclick = () => pane.remove();
    }

    https://jsfiddle.net/bry1secd/
    Ответ написан
    Комментировать