Задать вопрос
  • В чём отличие runtimeStyle от currentStyle?

    @alexalexes
    currentStyle - это то, что описано в CSS-селекторе или в атрибуте style, или программно дополненный elem.style (как хочет разработчик описать стили).
    runtimeStyle - это то, как смог нарисовать браузер заданный стиль.
    В современном JS, условно currentStyle можно считать, то что мы достанем или записываем из/в elem.style.свойствоЕлемента, а runtimeStyle - это всякие offset-ы и client-ы - elem.offsetWidth, elem.offsetHeight и тд.
    PS: попробуйте поиграться с currentStyle и runtimeStyle над таблицей с заполненными данными с разной степенью распиранием ячеек. Попытаться изменить ширину ячеек - вы поймете разницу, где браузер откликнется на заданную ширину, а где - нет.
    Ответ написан
    Комментировать
  • Как обойти ошибку при добавлении столбца в БД?

    @alexalexes
    При создании нового столбца, вероятно, вы указываете значение по умолчанию, и вероятно, пытаетесь использовать значение 0 для даты. Хотя, если используется значение по умолчанию, его нужно задавать корректно с точки зрения эпохи Unix (от 01.01.1970 и моложе).
    Ответ написан
  • Зашифрованный адрес картинки в браузере?

    @alexalexes
    data:image/png;base64

    Это не адрес, это ресурс самой картинки в формате base64.
    Если вы пытаетесь найти гипотетические файлы каптчи, то будьте уверены, что их нет на ftp, картинки генерируются налету.

    Где этот адрес найти в ручную?

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

    @alexalexes
    PostgreSQL не может в одном запросе сочетать процедурный (использование пользовательских переменных) и декларативный стиль программирования. Для получения специфичной выборки вам нужно написать отдельную хранимую функцию:
    CREATE OR REPLACE FUNCTION public.get_id1_id2() RETURNS SETOF test_table AS
    $BODY$
    DECLARE
     last integer := 0; -- аналог "SELECT @last:=0"
     r test_table%rowtype; -- курсор для выборки и анализа строки
    BEGIN
      FOR r IN SELECT * FROM test_table -- проход по всей исходной выборки
      LOOP
        IF r."ID_1" > last THEN -- аналог "WHERE `ID_1` > @last;"
          last = r."ID_2"; -- аналог "@last := `ID_2`"
          RETURN NEXT r; -- включение текущей строки в выходную выборку
        END IF;
      END LOOP;
      RETURN;
    END;$BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;

    Либо реализовать постобработку полной выборки уже в приложении, например, реализация на PHP:
    function get_id1_id2($rows)
    {
      $out = []; // выходная выборка
      $last = 0; // аналог "SELECT @last:=0"
      foreach($rows as $row) // проход по всей исходной выборки
        if($row["ID_1"] > $last) // аналог "WHERE `ID_1` > @last;"
        {
          $last = $row["ID_2"]; // аналог "@last := `ID_2`"
          $out[] = $row; // включение текущей строки в выходную выборку
        }
      return $out;
    }
    Ответ написан
    2 комментария
  • Как заставить крайние правые пункты меню трансформироваться в выпадающий блок при ресайзе окна?

    @alexalexes
    Если чисто в теории, то как обычно - JS. Подписываем на событие resize документа функцию, которая будет отслеживать размер контейнера меню и пересчитывать суммарную длину блоков пунктов меню вместе с отступами и прятать/выносить их в/из особого контейнера в конце списка, либо прятать этот контейнер, если все пункты вмещаются в меню.
    Ответ написан
  • Как в protractor загрузить файл?

    @alexalexes
    Нашел на одном из сайтов по вопросам самотестирования.
    automated-testing.info/t/upload-file-in-test-using...
    Ответ написан
    Комментировать
  • Как размещать сайты в интернете?

    @alexalexes
    Вам нужно копать в сторону услуги покупки доменного имени. Как правило, тот же сервис, где вы размещаете свой сайт, дает такую услугу, повезет, если будет дешевле, чем у аккредитованных регистраторов доменов.
    При выборе хостинга, как правило, более прошаренный сайтовод интересуется сразу всеми аспектами вопроса "домен + хостинг", а потом уже принимает решение выкладывать туды сайт, или нет.
    Ответ написан
    Комментировать
  • PhpMyAdmin. Появляется ошибка из-за php_max_input_vars. Как исправить?

    @alexalexes
    max_input_vars = 10000000000000000000000000000000000000

    Серьезно. )))) И в какой тип данных среда должна положить это значение, чтобы потом проверять лимит?
    Вы хоть в пределах одного порядка поэспериментируйте, 3000... 5000.
    Ответ написан
  • Удаленная работа для системного администратора, такое есть в природе?

    @alexalexes
    Сисадмины как раз стараются конфигурировать оборудование так, чтобы можно меньше физически присутствовать рядом с железом или исключить присутствие вообще. Это как раз дает возможность работать удаленно, однако, нужен опыт, чтобы вывести качество настройки на этот уровень.

    На возможный вопрос "а что, собственно, собрался делать то ? через инет материнку не поменяешь ведь",

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

    @alexalexes
    Ну например где посмотреть хороший пример автоподгрузки контента при скролинге вниз. А пока запрос к базе данных происходит, вращается спиннер.

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

    @alexalexes
    Можно пробовать отрегулировать z-index заголовка, подвала и блока основного контента сайта так, чтобы z-index блока .overlay был выше блока основного контента сайта, но меньше чем z-index заголовка и подвала. Однако, есть риск, что само окно будет заползать за элементы страницы (так же поиграться с этим свойством у окна).
    Собственно, нужно будет отработать возврат свойства z-index к прежним значениям после закрытия окна.
    Ответ написан
    Комментировать
  • Как запихать 39 камер в 28 портовый коммутатор?

    @alexalexes
    При расширении парка оборудования прикидывайте теоретическую возможность роста количества узлов.
    Например, сейчас хотят еще +11 камер подключить, потому что появился бюджет на них.
    Но, допустим, посмотрев на планировку, понимаем, что могут запросить еще +10 при следующем поднятии этого вопроса. Сразу считайте порты на это расширение. Если не знаете, какое будет следующее расширение, то лучше добавить +10% портов к реально подключенным узлам прозапас.
    Ответ написан
    Комментировать
  • Отправка данных в функцию?

    @alexalexes
    В обработчике addItem(id) пробежаться по DOM через дескриптор события event до img и h2, содержащийся в article.
    var article = e.target.parentNode.parentNode;
    var src = article.getElementsByTagName('img')[0].getAttribute('src');
    var title = article.getElementsByTagName('h2')[0].innerHTML;

    Только если собрались тащить эти параметры в список корзины, то оно нафиг не сдалось. Получайте заново параметры выбранного товара по его id. Выцарапывать свойства из уже отображенной формы представления - это костылизация.
    Ответ написан
    1 комментарий
  • 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, является цельный документ.
    Распределяйте фронт работ по отдельным файлам.
    Ответ написан
    Комментировать