• Кто-нибудь ипользовался OKAY CMS?

    А можно мнение про движок какое-то более развернутое? Об функционале или еще какие-то детали. Пишите что кучу сайтов на этом движке сделали уже, а дайте ссылки какие-то на сайты, пожалуйста. А то такое ощущение, что просто промокоды предлагаете от продавца и все.
    Ответ написан
    Комментировать
  • В чем практические отличия null от undefined?

    @dmitry-toster
    Автор, вы загоняетесь
    null - присваивает программист
    undefined- присваивается самим JS
    Программист может создать переменную со значением undefined, но по правилам хорошего тона - делать так не надо. Переменная, которую создал человек, должна выглядеть так:
    let a;
    либо так:
    let a = null;

    Вот и все, что вам нужно знать!
    Ответ написан
    Комментировать
  • В чем практические отличия null от undefined?

    kondrackii
    @kondrackii
    1 + 1 = 11
    Если вкратце, то:
    null - ожидаемая пустота
    undefined - неожиданная пустота
    Ответ написан
    Комментировать
  • Как парсить с wildberries?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Начнём с того, что 500 шт. каждые 5 с - это 100 запросов в секунду. Прокси будут баниться очень быстро при подобном трафике.

    Далее, получение данных мегабыстро имеет смысл в автоматизированных системах торгов на фондовой бирже, а если это в телеграм человеку сливать, то он в любом случае будет реагировать намного медленнее этих 5 секунд. И зачем тогда так часто опрашивать? Если опрашивать с интервалом в 3 секунды, то товары будут приходить с опозданием в среднем 13 минут, максимум 25 минут, что для многих задач вполне приемлемо.

    Советую поговорить с заказчиком ещё раз на тему того, что именно ему нужно.
    Ответ написан
    15 комментариев
  • Как разбить строку через разделитель несколько раз?

    Fragster
    @Fragster
    помогло? отметь решением!
    Ответ написан
    Комментировать
  • Как разбить строку через разделитель несколько раз?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $result = preg_replace('~^(.{8})(.{4})(.{4})(.{4})(.*)~', '$1-$2-$3-$4-$5', $str);
    Ответ написан
    Комментировать
  • Почему опасно в php выставлять неограниченное время жизни сессии?

    Интересный вопрос по безопасности и удобству использования сайта, системы, веб приложения.

    Нравится ли пользователю, когда его выкидывает или требует заново вводить логин и пароль? Нет.
    Более того это не нормально. Лично мне не понравится, что я каждый день буду должен вводить пароль, например на том же ютубе. Не надо так - пользователи, скорее всего, уйдут с сайта.

    А если это личный кабинет банка? Я вошел и...забыл выйти. А войти в веб интерфейс я могу и на терминале банка.
    Снял деньги и ушел, забыв выйти. У банкоматов, конечно есть доп мера безопасности - приложить карту для совершения операции, пин...но не суть.
    Вот для этого и есть время жизни сессии - принудительно разлогинить пользователя.

    Лично я не использую встроенный механизм сессий, а использую куки (срок жизни год).
    Чтобы пользователь сам решал, когда он хочет разлогиниться. Чтобы не возмущался, а что опять разлогинило?
    У меня не банковская система, и похитить куки Васи, Пети - никому не нужно и не принесет особого вреда.
    А если даже и похитят - то он сам виноват.
    Виноват ли продавец замка, что у клиента похитили ключи? Нет.
    А похищают что угодно, номера карт, пин...тут уже человеческий фактор.

    Если я делаю систему, где есть финансы, пополнение счета, то тогда уже можно использовать сессии, устанавливать срок их жизни.

    И вообще есть телефон. Вход по смс. Если пользователи доверяют вам и не боятся засветить свой номер.
    Ответ написан
    1 комментарий
  • Что делать, если много условностей? ?? :: :, и как правильно его читать? Можно ли ссылку на статью какую нибудь?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Вложенные тернарники легко читаются, только если они "линейные". То есть когда в выражении C ? A : B выражение А не содержит в себе тернарник.

    Твой пример можно переписать так:
    !isError ? 'noTab' :
        this.isEmpty(formData.error.decision.result) ? 'noTab' :
        !formData.error.decision.result ? 'noTab' :
        'errorTab' ;


    я просто инвертировал все условия. И теперь тернарник читается строго по порядку: если первое условие истинно, вернуть первое значение и не смотреть дельше. Если второе условие истинно, вернуть второе значение и не смотреть дельше. И т.д. Аналог "быстрого выхода", как в https://qna.habr.com/q/1289362
    Сравни это с исходным вариантом, где самое последнее значение относилось к первому условию, хотя отстояло от него на километр.
    Ответ написан
    Комментировать
  • Как сделать расширенное ветвление логики телеграм бота?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Всё это решается машиной состояний. Скорее всего он есть в вашем фреймворке по умолчанию. А если и нет - то написать его ничего не стоит - создавайте состояния и для каждого chat_id храните текущее состояние. В каждом состоянии есть функции-триггеры, которые приводят к переключению состояния на другое, попутно выполняя что-то полезное
    Я о конечных автоматах узнал из этой статьи, в своё время
    Ответ написан
    2 комментария
  • Почему не получается скачать файл по этой ссылке средствами PHP (403 ошибка)? Как исправить код, чтобы он работал?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Прописывайте все-все header-ы, которые в своём запросе отправляет настоящий браузер, в том числе cookie. Ну и раз уж смотрите его запросы - задно смотрите, документ скачивается сразу по запросу, или через какой-нибудь редирект?
    Ответ написан
    5 комментариев
  • Как сделать скролл на карте?

    paradokso
    @paradokso
    Начинающий фронт-эндер
    jQuery
    $('#map_canvas').addClass('scrolloff');  
        $('#canvas').on('click', function () {
            $('#map_canvas').removeClass('scrolloff'); 
        });
        $("#map_canvas").mouseleave(function () {
            $('#map_canvas').addClass('scrolloff');
        });


    css
    .scrolloff{
      pointer-events: none;
    }


    '#map_canvas - сама карта
    '#canvas - родительский контейнер
    Ответ написан
    3 комментария
  • Как убрать браузерную обводку у кнопок (появляющуюся в состоянии :focus) в Chrome и Firefox?

    wprivalov
    @wprivalov
    Разрабатываю сайты на токарном станке)
    для bootstrap 4 (100% рабочий вариант):

    a.active.focus,
    a.active:focus,
    a.focus,
    a:active.focus,
    a:active:focus,
    a:focus,
    button.active.focus,
    button.active:focus,
    button.focus,
    button:active.focus,
    button:active:focus,
    button:focus,
    .btn.active.focus,
    .btn.active:focus,
    .btn.focus,
    .btn:active.focus,
    .btn:active:focus,
    .btn:focus {
    outline: 0!important;
    outline-color: transparent!important;
    outline-width: 0!important;
    outline-style: none!important;
    box-shadow: 0 0 0 0 rgba(0,123,255,0)!important;
    }
    Ответ написан
    4 комментария