• Modx. Почему появляется ошибка при загрузке изображений в админке?

    @alexalexes
    Система -> Настройки системы.
    Будет длиннющий список параметров. Какая-то из групп параметров отвечает за открытие галереи. Опознать этот параметр можно по значению пути, который написан в ошибке.
    Его нужно переправить в соответствии с новым расположением сайта или упростить путь так, чтобы не зависел от домена.
    Возможно, встретишь еще параметры, завязанные на старом домене, так что нужно просмотреть все параметры.
    Ответ написан
  • Как запустить несколько аудио файлов подряд, чтобы они не запускались одновременно?

    @alexalexes
    Повесьте на тег аудио обработчик события onended, который будет подставлять src следующего трека.
    var audio = new Audio();
    audio.onended = function(e)
    {
      var target = e.target;
      var cur_src = target.getAttribute('src');
      switch(cur_src)
      {
         case '1.mp3': target.setAttribute('src', '2.mp3'); break;
         case '2.mp3': target.setAttribute('src', '3.mp3'); break;
         case '3.mp3': target.setAttribute('src', '1.mp3'); break;
      }
      target.play();
    };
    audio.setAttribute('src', '1.mp3');
    audio.autoplay = true;

    PS: обязательно предусмотрите возможность останавливать фоновую музыку, и запоминать это действие в куках, иначе пользователи проклянут вас и ваш сайт, так как фон надоедает примерно через минуту, а то и раньше.)))
    Ответ написан
    3 комментария
  • Как вставить формулу в таблицу?

    @alexalexes
    Вот, собственно, решение:
    <input type="button" onclick="calc_table_add_row()" value="Добавить"/>
    <div id="calc_table" class="table"></div>
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <script>
          // функция для добавления вычисляемой строки
          function calc_table_add_row()
          {
            //Элементы input подписаны на события onkeypress и onblur, что позволяет делать пересчет как при непосредственном изменении значения, так и во время потери фокуса
            $('#calc_table').append(
            '<div class="tr">\
               <div class="td">' + ($('#calc_table>div.tr').length + 1 /* это нумератор строки, добавляется номер от существующего кол-ва строк */) + '</div>\
               <div class="td">\
                 <input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
               <div class="td"><input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
               <div class="td"><input type="text" onkeypress="calc_table_recalc_row(event)" onblur="calc_table_recalc_row(event)"/></div>\
               <div class="td"></div>\
               <div class="td"></div>\
             </div>'
            ); 
          }
          // функция-обработчик пересчета значений в строке
          function calc_table_recalc_row(e)
          {
            var cur_input = e.target; // на этом элементе произошло событие (input)
            var cur_td = cur_input.parentNode; // получаем родительский элемент (div.td, в котором нажодится затронутый input)
            var cur_tr = cur_td.parentNode; // получаем родительский элемент (div.tr, в котором нажодится div.td с затронутым input)
            var td_divs = $(cur_tr).find('div.td'); // находим все элементы div.td на данной строке
            try // если возникнет какая-то ошибка, то тихо прекратим вычисления
            {
              var input1 = parseFloat($(td_divs[1]).find('input')[0].value); // получаем значение ячейки 2
              var input2 = parseFloat($(td_divs[2]).find('input')[0].value); // получаем значение ячейки 3
              var input3 = parseFloat($(td_divs[3]).find('input')[0].value); // получаем значение ячейки 4
              if(!isNaN(input1) && !isNaN(input2) && !isNaN(input3)) // все ли значения получились числами вещественными ?
              {
                var result4 = input3 / input2; // считаем результат для ячейки 5
                $(td_divs[4]).html( (result4).toFixed(2) ); // записываем результат в ячейку 5 с округлением до 2 знаков
                $(td_divs[5]).html( (result4 * (input1.toFixed(2) == 10.00 ? 0.1 : 5)).toFixed(2) ); // считаем и записываем результат в ячейку 6 с округлением до 2 знаков
              }
            }
            catch(ex)
            {
            }
          }
    </script>
    Ответ написан
    Комментировать
  • Как сохранять timestamp из php в MySQL?

    @alexalexes
    Используйте функцию FROM_UNIXTIME для преобразования входных параметров в тип данных timestamp:
    INSERT INTO you_table (expiration_date) VALUES (FROM_UNIXTIME('1526763600'))

    Проверяем результат:
    SELECT UNIX_TIMESTAMP(expiration_date) FROM you_table
    Ответ написан
    2 комментария
  • Скрипт выполняется не на всех устройствах?

    @alexalexes
    а) Вероятно, один из компонентов страницы не прогрузился до конца.
    https://learn.javascript.ru/onload-ondomcontentloaded
    Есть несколько разных обработчиков, и они срабатывают на разную полноту контента страницы.
    На плоскости JQuery такое же разнообразие.
    front-end.su/2016/02/12/load-events
    б)
    if(!preloader.classList.contains('done'))

    Хотите большую поддержку браузерами и с легкой руки используете свежие методы: classList.
    Разработчик обязан страдать, применяя решения и используя более устаканенные методы, если хочет широкий охват поддержки браузерами:
    if(preloader.getAttribute('class').indexOf('done') == -1)

    PS: Или не обязан, если подключить JQuery.)
    Ответ написан
    Комментировать
  • Стоит ли ставить к 1333 озу с 1866?

    @alexalexes
    Будет, но на скорости 1333, хотя вы должны понимать что спариваете велосипед с гоночным болидом, естественно, связка поедет со скоростью велосипеда.
    Больше должно тревожить наличие или отсутствие буквы L (или даже U) в именовании типа каждой планки: DDR3 или DDR3L (DDR3U).
    PS: Идеальное решение - ставить одинаковые по характеристикам планки, еще стоит при этом посмотреть спецификацию материнки, может ли она задействовать пиковые скорости планок.
    Ответ написан
    Комментировать
  • Как в гугл таблицах открыть доступ к определенному диапазону ячеек?

    @alexalexes
    Никак. Минимальной единицей, для которой назначаются права доступа в Google Docs, является цельный документ.
    Распределяйте фронт работ по отдельным файлам.
    Ответ написан
    Комментировать
  • При работе на ноуте моментально гаснет экран. В чем проблема?

    @alexalexes
    Вариант, один.
    Возможно, срабатывает комбинация функциональных клавиш, переключающая VGA/HDMI <-> Основной монитор.
    Какая модель бука?

    Вариант два.
    Если то, что описываете проделываете не мышкой, а тачпадом, возможно, при нажатии на корпус ноутбука просто отходит шлейф видеокабеля.
    Ответ написан
    2 комментария
  • Странный объем SSD MacBook Air 2015?

    @alexalexes
    Вполне возможно, что на диске есть неразмеченное пространство.
    Напрашивается загрузиться в Acronis, чтобы точно увидеть всю доступную разметку томов, но для Маков не уверен, что он подойдет.
    Ответ написан
    1 комментарий
  • Почему iphone пропускает проверку на возраст?

    @alexalexes
    а) Чтобы не было непоняток с форматом даты входной строки, подставляйте параметры явно:
    new Date(yearVal, monthVal, dayVal)
    б) Еще полезно привести время к одной величине для сравнения:
    (new Date()).getTime() - (new Date(yearVal, monthVal, dayVal)).getTime()

    PS: А вообще, возраст нужно считать по каждому компоненту даты, чтобы не нарываться на високосные года:
    var now = new Date();
    var age = (now.getFullYear() - yearVal - ((now.getMonth() - (monthVal - 1) || now.getDate() - dayVal) < 0 ? 1 : 0));
    Ответ написан
    2 комментария
  • Как остановить выполнение setTimeout на 2 шаге?

    @alexalexes
    Можно.
    function highlightcurrent(items, index) 
    {
      if(index != 2) // выходим из функции, если достигли определенного индекса
      {
        items.removeClass("highlightcurrent");
        items.eq(index).addClass('highlight');  
        items.eq(index).addClass('highlightcurrent');   
        setTimeout(function()
        {
          highlightcurrent(items, index + 1)
        }, 1000);
      }
    }
    
    highlightcurrent($('.progress-page-tabs-col'), 0);
    Ответ написан
    3 комментария
  • Как получить id компонента(html) c помощью php?

    @alexalexes
    чтобы записать в базу данных данные мне нужен id

    Насчет записать в БД, нужно понимать две различные ситуации:
    а) вставка записи;
    б) обновление записи.
    Для вставки id передавать и знать не нужно, ключик сам должен генерироваться автоинкрементом или соответствующим триггером на insert.
    Для обновления записи, естественно, нужно передавать какой-нибудь идентификатор или уникальную метку, чтобы однозначно можно было провести update с параметром. В примитивнейшем случае в качестве такой метки будет выступать идентификатор. Его можно передавать скрытым полем и этого будет достаточно.
    <form action="" method="POST">
    <input type="hidden" name="id" value="5"/>
    <input type="sabmit" value="Отправить"/>
    </form>

    На стороне сервера имя и значение поля также отыскивается во входящих массивах, как и другие вводимые поля:
    $id = $_POST['id']; // каким методом отправили форму, таким и принимаем на сервере - все просто.
    Ответ написан
    Комментировать
  • Как вылечить сайт от Трояна (Нортон определил его как Kryptik.BC)? Joomla 2.5?

    @alexalexes
    Файлы jbzoo.php, jbupdate.php, application.php претерпели обфускацию.
    Их нужно сохранить себе локально и заменить оригинальными из репозитория разработчика компонента jbuniversal. Либо заменить из своего репозитория, в рамках которого разрабатывался сайт topas34.ru, до момента заражения.
    Если по каким-то причинам вам не удалось найти оригинальные файлы, или не ведете репозиторий разработок, то остается провернуть увлекательную задачку: деобфусцировать файлы. Простыню кода вы может и восстановите, но наименования функций уже утрачены, придется гадать, что за что отвечает.
    Ответ написан
    1 комментарий
  • Должно ли количество итераций соответствовать асимптотической сложности алгоритма?

    @alexalexes
    Да, верно. Реально количество шагов циклов (n^2 + n) / 2. Для оценки О достаточно указывать ту функцию, аргументом которой считается n и которая имеет самый большой порядок роста, в данном случае - квадратичная. Все множители, которые масштабируют саму функцию в счет не идут.
    Если было бы (2n)^2 - то это другое дело.
    При вычислении O можно не учитывать постоянные множители в выражениях.

    https://habr.com/post/104219/
    PS: Если строго высчитывать O, то вам нужно проанализировать выражение lim {n -> бесконечность} (((n^2 + n) / 2) / (n ^ 2)).
    Ответ написан
  • Как передать html таблицу на почту?

    @alexalexes
    Принять данные от отправленной формы и отправить по почте письмо, заполненное по шаблону, аналогично полям формы.
    Для реализации отправки можно воспользоваться встроенной функцией mail(). Можно написать свой велосипед для полноценной работы с smtp, а можно воспользоваться библиотекой, например, PHPmailer.
    Для надежности перед отправкой лучше дополнительно записывать принятые заявки в БД.
    Мало ли по каким причинам письма не будут слаться (на стороне вашего сервера и на стороне почтового сервиса есть очень много моментов, которые могут выстрельнуть).
    Ответ написан
  • Как получить последний и предпоследний значение строки через php mysql?

    @alexalexes
    Добавьте переменную-счетчик внутрить запроса и по ней высечите нужную строчку.
    SELECT a.* 
      FROM (SELECT u.* ,
                    @n := @n + 1 AS num -- переопределяем n для каждой новой строки выборки
              FROM users u,
                           (SELECT @n :=0) counter -- задаем начальное значение переменной n в подзапросе
               ORDER BY u.id DESC
          ) a
    WHERE a.num = 13
    Ответ написан
  • Ноутбук на core i7 8x для работы?

    @alexalexes
    Разработкой под Android можно и на настольном компьютере заниматься, как бы.
    Только на заключительном этапе отладки вам может понадобиться какой-нибудь андроид-гаджет, опять же он будет подключен к обычному компу.
    В вашем случае, вообще, не коррелирующие вещи "мобильная разработка" и "мобильный процессор".
    Ответ написан
  • Что такое бинарные числа?

    @alexalexes
    Числа в двоичной системе счисления.
    Нужны любому вычислительному устройству, например, компьютер.
    Потому что исторически ВУ с другими видами чисел не работает напрямую.
    Ответ написан
    Комментировать
  • ОЗУ из Ноутбука в ПК, возможно ли?

    @alexalexes
    ОЗУ - возможно.
    Недавно заказал себе такой адаптер, так как 2 * 4 Гб планки валяются без дела.
    Продать - только за бесценок можно, а в хозяйстве пригодятся.
    Ответ написан
    8 комментариев
  • Какая запись вернее: $page = @$_GET['page'] или $page = isset($_GET["page"])? $_GET["page"]: null?

    @alexalexes
    В случае с GET и POST массивами, правильнее всего прощупать наличие ключа.
    Если есть ключ, значит параметр был отправлен клиентом и его можно обработать.
    Если ключа нет в массиве, то не стоит что-то извлекать $_GET["page"], проверять isset(), empty() и т.д.
    $page = array_key_exists('page', $_GET) ? $_GET["page"] : null;
    Ответ написан