Задать вопрос
  • Как посчитать количество дней с учетом всех выходных в MySQL?

    @alexalexes
    select count(*) as work_day_count --считаем, что осталось после отсечения выходных и праздников
      from (SELECT distinct t1.*, t1.c1 + INTERVAL iterator.day DAY as dt_day
                 FROM (select STR_TO_DATE("01.10.2018", "%d.%m.%Y") c1,  STR_TO_DATE("22.10.2018", "%d.%m.%Y") c2 union all
                       select STR_TO_DATE("22.10.2018", "%d.%m.%Y") c1,  STR_TO_DATE("10.11.2018", "%d.%m.%Y") c2 ) t1 --таблица с проверяемыми интервалами
     
     join (select @start_day := @start_day + 1 as day
             from news,  -- любая произвольная таблица с числом строк, больше чем ширина максимально возможного интервала дней, который можно рассмотреть этим запросом
                  (select @start_day := -1) init_day --инициализация переменной start_day 
          ) iterator --итератор дней, ведет отсчет с 0 и до куда надо (до максимального интервала, который может быть)
       on (t1.c1 + INTERVAL iterator.day DAY) <= t1.c2 --верхнее ограничение итератора
                    and (t1.c1 + INTERVAL iterator.day DAY) not in -- отсекаем выходные и праздники
    (select STR_TO_DATE("06.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("07.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("13.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("14.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("20.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("21.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("27.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("28.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("03.10.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("04.11.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("10.11.2018", "%d.%m.%Y") c1 union all
     select STR_TO_DATE("11.11.2018", "%d.%m.%Y") c1) -- тут делаем выборку выходных дней и праздников
    order by dt_day ) a
    Ответ написан
    Комментировать
  • В чем причина странного поведения сайта в разных броузерах?

    @alexalexes
    Издателем сертификата, случайно, является "Kaspersky Anti-Virus Personal Root Certificate"?
    Тогда вырубите свой антивирус и обновите страницу.
    Ответ написан
    Комментировать
  • Как принудительно установить Cookie на своем сайте?

    @alexalexes
    Поставили тег Javascript, а сами пример показываете с подключением CSS, хотя он и рядом не стоял.
    В общем, это предмет целой статьи, изучайте.

    PS: Есть подозрение, что вам нужно настроить на стороне сервера какой-то особый отклик на GET-параметр "wmc-currency=EUR", но вы должны понять, нужно ли вам это, потому что есть другие решения для установки кук и они работают в JS.
    Ответ написан
    3 комментария
  • PascalABC - Простая рисовалка на клавишах, вопросы?

    @alexalexes
    1)
    при нажатии на кнопки происходит задержка, т.е. - нажимаю "вправо", "вправо", "вправо","вниз","вниз", а рисунок идёт "вправо", "вправо","вправо","вправо","вниз". Как исправить?

    Все дело в использовании бесконечного цикла while.
    Такой стиль программирования характерен для микроконтроллеров.
    В высокоуровневых языках пользуются обработчиками событий, в вашем случае нужно добавить обработчик нажатия клавиши и уже в нем расписать действие на событие, а не ждать пока это событие наступит.
    2) То полотно, по которому вы рисуете, должно поддерживать многослойность. Рисунок на одном слое, курсор - на другом. Иначе никак.
    PS: С PascalABC не знаком.
    Решение расписано на общих концепциях любого языка программирования.
    Ответ написан
    Комментировать
  • Можно ли класть на QI беспроводную зарядку телефон без беспроводной зарядки?

    @alexalexes
    Телефоны с QI и без него отличаются только наличием или отсутствием в своем корпусе индукционной катушки и контроллера заряда от этой катушки.
    QI зарядка в свою очередь не микроволновая и не индукционная печь, с ее стороны тоже есть катушка с контроллером, который обладает элементами обратной связи, призванных обнаружить присутствие другой катушки и регулировать мощность подачи тока, чтобы не спалить саму себя и окружающую электронику.
    Не будет по близости другой катушки, тогда зарядка перейдет в режим ожидания с минимальным потреблением тока - на этом все.
    Убедиться в наличии обратной связи, то есть, увидеть разницу токов потребления во время заряда и без, можно, подключив к QI зарядке такой гаджет:
    https://ru.aliexpress.com/item/USB/32887677996.html
    Ответ написан
    1 комментарий
  • Нужен ли слепой 10-ти пальцевый набор?

    @alexalexes
    Программисту не нужны скоростные навыки машинистки, у него в приоритете чтение текста с экрана с тщательным обдумыванием, а не быстрая печать.
    Для быстрой печати нужных конструкций в нормальных текстовых редакторах разработчика есть intellisence, его применение направлено на сокращение количества нажатий клавиш.
    Ответ написан
    2 комментария
  • Как правильно оформлять блок в ссылку?

    @alexalexes
    Оборачиваете блок в ссылку.
    <a href="какая-то_ссылка">
    <div class="block__element">
        <img src="<?= SITE_TEMPLATE_PATH; ?>/assets/pictures/image.jpg" alt="" class="block__bg">
        <div class="block__title">
             <span class="block__title-name">Жилищная инициатива</span>
             <p>ул. Попова №150</p>
        </div>
    </div>
    </a>

    или так
    <div class="block__element">
        <a href="какая-то_ссылка">
        <img src="<?= SITE_TEMPLATE_PATH; ?>/assets/pictures/image.jpg" alt="" class="block__bg">
        <div class="block__title">
             <span class="block__title-name">Жилищная инициатива</span>
             <p>ул. Попова №150</p>
        </div>
        </a>
    </div>

    Для тега A обязательным является только атрибут href - его-то роботы и будут анализировать, как точку перехода на другую страницу.
    Еще одно применение тега A - якорь на странице.
    Вы пытались изобразить именно это применение, но делается якорь при помощи атрибута name, а не href.
    <div class="block__element">
        <a name="какой-то_якорь"></a>
        <img src="<?= SITE_TEMPLATE_PATH; ?>/assets/pictures/image.jpg" alt="" class="block__bg">
        <div class="block__title">
             <span class="block__title-name">Жилищная инициатива</span>
             <p>ул. Попова №150</p>
        </div>
    </div>

    Чтобы страница прокрутилась именно до этого якоря при переходе на нее, нужно воспользоваться ссылкой вида "адрес_страницы#какой-то_якорь".
    Ответ написан
  • 4+2 озу или 2+2?

    @alexalexes
    Отсутствие двухканальности не так заметно, как эффект свопа при нехватки памяти.
    Лучше, конечно, добавить памяти по максимуму, чтобы отсрочить то время, когда памяти будет не хватать (если ноутбук доживет до этого времени).
    4 гиг ОЗУ - сейчас может обеспечить только комфортный серфинг сайтов, раскрытых на несколько вкладок.
    PS: Убедитесь что у вас 64-разрядная ОС, или вам не будет в напряг ее поставить, если у вас 32-битная.
    PPS: Попадаются экземпляры материнок (возможно, и в контексте ноутбуков), которые очень странным образом выделяют видеопамять из памяти ОЗУ, так что при определенных конфигурациях планок для ОС остается половина номинального объема ОЗУ, и никакие шаманства с настройками биос не позволяют добиться соотношения Объем установленной памяти = Объем видео памяти + Остальная доступная память.
    Ответ написан
    2 комментария
  • Как правильно сгруппировать массив php?

    @alexalexes
    Если строки в массиве строго форматированы, и путь всегда начинается с "/home/каталог", то, чтобы получить ключ для вновь сформировываемого массива, достаточно функции explode(), если вам нужно более гибко искать название каталога, то придется вычленять его регулярным выражением.
    <?
      $input_arr = [
      "/home/fol1/test.txt",
      "/home/fol1/Browsers/test2.txt",
      "/home/fol2/Browsers/test3.txt",
      "/home/fol2/Browsers/ttre/test2.txt"
      ];
      $out_arr = [];
      foreach($input_arr as $item)
      {
        $folders = explode('/', $item);
        $key = $folders[2];
        if(!isset($out_arr[$key]) || !array_key_exists($item, $out_arr[$key])) // если еще не был такой путь
          $out_arr[$key][] = $item;
      }
      print_r($out_arr);
    ?>
    Ответ написан
    Комментировать
  • Как написать запрос если переменная пустая?

    @alexalexes
    Если метод where может принимать пустую строку, то так.
    where(isset($sub_id) ? "sub_id=$sub_id" : "")
    Пустота может быть разная.
    Если у вас пусто это '', то нужно сравнивать так:
    $sub_id !== ''

    Если null, то так
    !is_null($sub_id)
    Ответ написан
    Комментировать
  • Как отправить mp3 файл на сервер?

    @alexalexes
    1) Можно традиционным образом. В форме использовать тег input с типом file с выставленным ограничением принимать только *.mp3. Форма отправляется по кнопке с типом submit.
    2) Продвинутым способом. В форме также используется тег input с типом file с выставленным ограничением принимать только *.mp3. Отличие в том, что вам нужно поля формы отправить непременно только через ajax-запрос. В этом случае поле с файлом вычитывается с помощью объекта FileReader (старые браузеры его не имеют, например, IE 10-, так что для них не катит способ), формируется особым образом бинарный пакет запроса и этот пакет в виде base64 передается аяксом на сервер.
    PS: какой бы способ отправки вы бы не выбрали, файл в любом случае можно прицепить к форме только по инициативе пользователя, не зависит от того, используете вы простую отправку формы или пытаетесь забрать файл из input-а FileReader-ом.
    Ответ написан
    Комментировать
  • Как правильно соединить две таблицы?

    @alexalexes
    Лучше, если у вас все типы новостей будут в одной таблице, а различаться будут по section_id (соответственно, 0 - без темы, 1 - футбол, 2 - хоккей и тд.)
    Тогда запрос на порционную выборку делается элементарно.
    select a.*
      from (select n.*,
                  rank() over (partition by n.section_id order by n.publication_date desc) rnk -- нумеруем порядок новости в пределах каждой секции по порядку даты публикации
                from news n) a
    where a.rnk < 10 -- сколько новостей выводить на каждую секцию
    order by a.section_id, a.publication_date desc
    Ответ написан
    Комментировать
  • Как пропускать трафик через сайт МТС, чтобы он не тратился?

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

    @alexalexes
    У вас при первом отображении $_SESSION["a"] и $_SESSION["b"] не заполнены, соответственно, при выводе второй формы будет вот так.
    <input type="hidden" id = "nserver" name="nserver" value="">
          <input type="hidden" id = "registrar" name="registrar" value="">

    Придумайте, как обработать состояние, когда поля nserver === '' и registrar === '' или как забить $_SESSION["a"] и $_SESSION["b"] дефолтными значениями, и будет работать.
    Ответ написан
  • Как лучше сделать парсер данных с разных источников?

    @alexalexes
    В вашей схеме еще не хватает подсистемы scheduler - планировщик заданий.
    Его нужно чаще всего запускать по крону (а может он у вас будет вертеться в бесконечном цикле, а может спать в потоковом режиме выполнения).
    Планировщик, на основе результатов проходов паука, парсера, ограничений на проходимых сайтах, нагрузки собственной системы, будет регулировать частоту запуска перезапуска заданий.
    Желательно, чтобы задания паука и парсера были достаточно атомарны.
    Паук в одну страницу постучал, записал статус получения ответа, каков контент в ответе (html или текстовое сообщение, или JSON и тд.), удалось ли ему распознать структуру, метаданные и тд.
    Если, например, вернулась 404 стр, то возможно, с помощью планировщика установить правило, что можно натравить паука на url чуть позже, через час, день, неделю и тд.
    По аналогии, можно фиксировать статусы работы других подсистем checker-а, парсера.
    Если один из модулей застревает на 5 разе на каком-то задании, то сыпать критическую ошибку в лог и тд.

    В общем, каков бы состав модулей не был, но планировщик нужен.
    Ответ написан
    Комментировать
  • Как делается drag and drop на странице?

    @alexalexes
    Может быть реализовано на нативном JavaScript путем навешивания обработчиков событий onmousedown, onmousemove, onmouseup на манипулируемый элемент (событие onmousedown), а также на заполняющий всю площадь страницы контейнер (события onmousemove, onmouseup). Естественно, механику взаимодействия элементов и отслеживания фазы drag and drop вам придется реализовать самостоятельно.
    PS: При реализации drag and drop не забудьте про пользователей с сенсорным экраном. У них другая группа событий: ontouchstart, ontouchmove, ontouchend, и число точек касаний у них может быть больше чем одна.
    Ответ написан
    Комментировать
  • Почему всегда выводит Not Include после refreshData()?

    @alexalexes
    Вместо этого условия, посмотрите, что у вас формируется в переменной pageAvailable при помощи точки останова или выведите непосредственно ее в лог.
    if (pageAvailable == false) {
                                        console.log("Not Include");
                                    } else{
                                        console.log("Include");
                                    }

    Тогда поймете, что у вас возникнет одна из двух ситуаций:
    - либо сравнение нужно до типа данных использовать: вместо == на ===.
    - либо вот это Object.values(response['data']).some(n => n.name === 'ArmPaper Idea'); не вылавливает из объекта response['data'], то что вы хотите выловить.
    Ответ написан
    Комментировать
  • Как правильно отправить письмо?

    @alexalexes
    У вас тег tr без пары закрывающей оказался. xslt разметка такое не прощает.
    Делайте либо так:
    <tr>
     <xsl:for-each select="Product">
    ......
    </xsl:for-each>
    </tr>

    Либо так:
    <xsl:for-each select="Product">
    <tr>
    ......
    </tr>
    </xsl:for-each>

    Если бизнес логика хитрая, и одним for-each не отделаться, вызывайте еще один template внутри содержимого tr.
    Ответ написан
    1 комментарий
  • Монитор теряет сигнал, помогает только перезагрузка. Почему?

    @alexalexes
    Почему так происходит, вам только радиомастер может рассказать, и то, когда вскроет монитор и сделает хотя бы поверхностную диагностику компонентов.
    Можно все что угодно обнаружить. От банального замыкания дорожек/контактов от многолетней пыли, до выхода из строя радио элементов, например, вздувшиеся конденсаторы на блоке питания.
    Ответ написан
    Комментировать
  • Как распарсить данные с json?

    @alexalexes
    Соответствующей функцией:
    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Ответ написан
    Комментировать