• Как сделать плавную анимацию при смене значений через js?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Вероятно вам нужен обычный transition, он будет срабатывать каждый раз, когда значения будут меняться:

    .items {
        .single-chart {
            .circular-chart {
                .circle {
                    /* animation: progress 1s ease-out forwards; */
                    transition: stroke-dasharray 1s ease-out;
                }
            }
        }
    }
    Ответ написан
    1 комментарий
  • Flask как вызвать редирект для юзера из касомного класса?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    В вашем случае, как я понимаю, Вы работаете по SSE.
    С одной стороны - это протокол поверх HTTP (который позволяет делать редирект через заголовки).
    С другой - это протокол с установленным соединением, и заголовки HTTP устанавливаются в начале сессии.
    Другими словами - если сессия SSE установлена, то заголовки поменять уже невозможно :(

    В принципе, вариантов 2:
    1) делать редирект на стороне клиента, посылая какой нибудь event, а на стороне клиента уже делать редирект.
    2) разорвать сессию со стороны сервера c посылкой уникального event id и при следующем заходе клиента с этим же event id - делать перенаправление
    Ответ написан
    1 комментарий
  • Как уменшить потребление памяти Selenium?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Т.к. Вы не показали код своего бота, то вполне вероятно, что сам бот может быть не сильно оптимизирован. Но все равно есть базовые рекомендации:
    - Изначально, не мешало бы измерить потребление памяти в обычном браузере, вполне вероятно, что это стандартное потребление оперативы именно это страницы. Вот например текущая страница в моменте потребляла 177 мб.
    177 мб

    655d9ff7a2446362541329.png

    - Отключить изображения и js браузера, например:
    chrome_options.add_argument("--disable-javascript")
    chrome_options.add_argument("--disable-images")

    - Включить headless (как ранее подметил сергей кузьмин ), помогает сэкономить множество ресурсов:
    options = Options()
    options .add_argument("--headless")

    - Использовать другие браузеры.
    Ответ написан
    2 комментария
  • Как чистят детекты вредоносов?

    Noizefan
    @Noizefan
    Все решения по противодействию системам защиты направлены только на существующий в них функционал. Вывод - изучай существующие системы защиты, т.е. антивирусы.
    Что в них есть в общих чертах?
    - сигнатурное детектирование, исполняемый файл пилится на кусочки и все эти кусочки сравниваются с бд, далее скоринг, при наборе определенного кол-ва баллов - файл - вирус.
    - несигнатурное, - поведенческое, эвристическое, любое другое, - нигде ничего не сранивается, а в код антивируса вшиты в общем виде злоумышленнические паттерны поведения, что тоже в совокупе отправляется на скоринг из первого пункта.

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

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

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

    @PavelMos
    В примере есть отдельно 0.5 и в примере в итоге он не тронут. Если и его не менять, регексп надо дополнять.
    В примере в регекспе negative lookahead т.е. он смотри чтобы ПОСЛЕ не было совпадения. А True перед числом

    from re import findall, sub
    line = """
    print(multiply((((True*1)+(True*1))+0.5), 2))
    """
    numbers = ["1", "2"]
    for item in numbers:
        line = sub(
            r"(?<!True\*)\d".format(item), "test", line
        )
    print(line)
    print(multiply((((True*1)+(True*1))+test.test), test))


    про проверки тут неплохо объясняется
    https://learn.javascript.ru/regexp-lookahead-lookbehind
    Ответ написан
    2 комментария