• Как отложить запрос к апи во время кликов на кнопку?

    Stalker_RED
    @Stalker_RED
    throttle / debounce

    Что это вообще такое?
    Троттлинг функции означает, что функция вызывается не более одного раза в указанный период времени (например, раз в 10 секунд). Другими словами ― троттлинг предотвращает запуск функции, если она уже запускалась недавно. Троттлинг также обеспечивает регулярность выполнение функции с заданной периодичностью.

    Debouncing функции означает, что все вызовы будут игнорироваться до тех пор, пока они не прекратятся на определённый период времени. Только после этого функция будет вызвана. Например, если мы установим таймер на 2 секунды, а функция вызывается 10 раз с интервалом в одну секунду, то фактический вызов произойдёт только спустя 2 секунды после крайнего (десятого) обращения к функции.

    https://www.google.com/search?q=js+throttle+debounce
    https://medium.com/nuances-of-programming/%D1%87%D...
    Ответ написан
    3 комментария
  • Как спроектировать приложение? Или как лучше хранить данные?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Картинки, документы, архивы и прочие файлы хранятся как обычные файлы в файловой системе. В базе данных хранится путь к ним.
    Если файлов много и возможно совпадение названий, то файлы переименовывают по какой-либо единой схеме (например, GUID).
    Ответ написан
    Комментировать
  • Как преобразовать фото в таблицу?

    hint000
    @hint000
    у админа три руки
    Ответ написан
    Комментировать
  • Как перейти с Python Django на Go?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Читать учебники и документацию, практиковаться, гуглить. Всë, как с любым другим языком, Go не особенный.
    Ответ написан
    1 комментарий
  • Как правильно организовать поиск по большому кол-во бд?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как сделать поиск максимально производительным? Что использовать? Асинхронность? Многопоточность?

    Оптимизация запроса к БД начинается с того что вы выделяете сет активных запросов которые важны для вас.
    Для каждого из них строите план исполнения запросов
    EXPLAIN [ ANALYZE ] [ VERBOSE ] ......
    Потом с этим планом приходите к специалисту (или сюда) и спрашиваете что надо улучшить в
    тексте запроса или в таблице или в индексе чтоб было быстрее.

    Добавление большего числа исполнительных потоков (сессий БД) обычно не улучшает ситуацию
    а только ухудшает. Практика это показывает. Мы быстро выходим на пологую кривую пропускной
    способности диска - и дальше хоть добавляй потоки - все будет только хуже.

    Насчет асинхронных операций - не знаю. Если мы работаем через пул коннектов - то надо обсудить
    построение абстракции асинхронности над абстракцией пула. Это тема отдельного топика.
    Ответ написан
    Комментировать
  • Как удалить программу через Ubuntu Software?

    @Nikita1244
    Anonymous
    Установите пакетный менеджер Synaptic и забудьте навсегда о существовании убогой, глючной программе Ubuntu Software. Была такая же проблема, решил Synaptic'ом.
    Ответ написан
    Комментировать
  • Где хранятся логин и пароль от MongoDB?

    Grapeoff
    @Grapeoff
    В чём концепция...?
    Т.К. я вижу в тегах Vue.js, то отвечу на вопрос так: на фронтенде не подключаются к БД
    Ответ написан
    Комментировать
  • Как классифицировать числовой ряд?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Это называется кластеризация. Вам надо разбить данные на 3 кластера. Метод ближайших соседей, упомянутый выше, подходит.

    Все-таки все эти методы кластеризации разработаны для более общего случая. А у вас тут данные одномерные и численные уже - так что все совсем просто.

    Во-первых, данные надо отсортировать, если уже не. А дальше у вас тут 2 переменные - (i,j) - первый и последний элемент в средней группе.i>0,j<n-1.

    Можно эти индексы тупо перебрать двумя вложенными циклами. А дальше надо считать какую-то целевую функцию - насколько хорошо кластеры выбраны и брать лучшее значение. Надо, чтобы внутри различие было поменьше, а между кластерами - побольше. Можно брать максимум разности в каждом кластере и делить на разницу между двума кластерами. Вот минимизируйте эту функцию.

    Но вообще можно, наверно, просто взять 2 максимальных промежутка между соседними числами и по ним разделить. В примере выше этот метод отлично разбивает на 3 группы: 1-103, 999-1001, 9000-9500

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

    Fragster
    @Fragster
    помогло? отметь решением!
    let [dataRu,dataEn] = await Promise.all([getProductsDataRu(urls),getProductsDataEn(urls)])
    Ответ написан
    4 комментария
  • Как в виртуальных процессорах устроена виртуальная память?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    зачем там реализуют разные модули, типа кеша, вроде в каком-то даже увидел конвеер исполнения команд, предсказатели переходов. И прочие. К примеру кеш, тлб, зачем он там нужен. если все как бы просиходит внутри машины?

    Фронт-енды QEMU реализуют большую часть наблюдаемого поведения моделируемого ими процессора. Одно большое исключение -- это процессорный кеш: QEMU не моделирует поведение процессорного кеша. TLB во многих архитектурах доступен для прямого чтения/записи через команды процессора, нельзя сказать что он "внутри машины".

    Зачем адрес куда-то в кеш записывать, если этот кеш 3 уровня, или регистр лежит с точки зрения внешней среды, там же где и ram и доступ должен быть одинаковым.

    Покажи пример, обсудим конкретику?

    Ассоциативная память. Если там внутри делается таблица адресов, виртуальных адресов. То к примеру для адресного пространства 4гб, будет 2^32 это будет в 32 раза дольше.

    Это какие-то очень странные допущения и прикидки, а то, что они не учитывают такие параметры как размер TLB и его ассоциативность, показывает их безосновательность.

    Короче, в итоге для поиска адреса в супер жесткой виртуальной машине, будет до 32 операции сравнений по словарю, потом суммарно где же в кешах каждого уровня, куча прочих проверок .... .

    Нифига. В QEMU есть два уровня TLB -- один, моделируемый процессорным фронт-ендом, второй -- собственный TLB QEMU softmmu независимый от эмулируемого процессора, поиск по которому встроен в генерируемый JIT (который в QEMU называется TCG) код. Собственный TLB QEMU прямого отображения, т.е. поиск в этом TLB -- это всегда проверка одного элемента массива и загрузка одного отображения в случае успеха. Например вот так генерируется код для этого на хосте x86. В случае неудачи происходит вызов функции поиска в архитектурно-зависимом TLB. Вот так этот вызов генерируется, а вот пример его реализации во фронт-енде. Поскольку этот TLB моделирует конкретную архитектуру его ассоциативность может варьироваться в широких пределах, или он может вообще отсутствовать. В случае промаха или отсутствия TLB поиск может либо продолжаться дальше в таблицах страниц, например так, либо фронт-енд генерирует исключение доступа к памяти, например так.

    В итоге операций при поиске трансляции для виртуального адреса может быть гораздо больше чем 32, которые ты предположил, в случае промахов, но цена промахов амортизируется тем, что чем более они дороги, тем более они редки. Но, конечно, задача намеренно обращающаяся к никогда не повторяющимся страницам памяти будет иметь очень низкую производительность при выполнении в QEMU softmmu.
    Ответ написан
    2 комментария
  • Как сверстать такой заголовок?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Как-то так
    Ответ написан
    1 комментарий
  • Так КАКАЯ математика нужна для работы с базами данных???

    @rPman
    хватит школьных знаний

    Да, когда говорят про реляционную алгебру, мыслят категориями математического анализа, но знаний особых тут не нужно, достаточно просто запомнить (если честно, серьезно углубляться в такую математику нужно разработчикам серверов баз данных, когда начинаешь это дело оптимизировать, не забывая про доказуемую корректность, обывателю же это не надо)
    Ответ написан
    Комментировать
  • Есть ли смысл использовать rest api с http вместе с tcp или websockets?

    GavriKos
    @GavriKos
    Что быстрее - поднять готовый HTTP-сервер, или самому разруливать нагрузку, нестандартное железо/оси, дыры в безопасности и еще пачку проблем, которые уже решены? Если вы готовы конкурировать с предложеными решениями - окей, пожалуйста, делайте без них

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

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

    Нет, я не говорю что нельзя использовать свои решения, писать напрямую в ТСП и вот это все. Но только в том случае, если плюсы перевесят минусы. Плюсы вы перечислили - научитесь и видеть минусы ;-)
    Ответ написан
    4 комментария
  • Как работает asyncio.sleep?

    Vindicar
    @Vindicar
    RTFM!
    Идея простая.
    Асинхронные приложения - это набор пар "операция - обработчик", где операция - это некоторый длительный процесс (скажем, вводы/вывод), который не требует постоянного внимания со стороны кода. Когда операция завершается, выполняется её обработчик. Этот обработчик может планировать другие операции, и так далее.

    Корутины - это такие функции, которые умеют сохранять своё состояние, и восстанавливать его. Т.е. когда корутина делает await-вызов, она начинает длительную операцию, а обработчик этой операции просто восстанавливает контекст корутины и продолжает её выполнение.

    Соответственно, await-вызов сохраняет текущий контекст корутины, и планирует новую длительную операцию. Какую - зависит от того, что идёт после await. Эта операция представлена тем или иными awiatable значением (Future, Task и т.п.).

    Рабочий цикл (loop, его также называют реактор) просто проверяет текущие операции. Как только одна из них завершилась, он выполняет её обработчик. А потом продолжает проверять остальные активные операции.

    Ключевой момент - выполняет обработчик, а только потом проверяет остальные операции. Т.е. если обработчик планирует операцию через await - это не проблема, она будет выполняться наравне с остальными. А вот если обработчик просто делает что-то длительное, он не возвращает управление циклу, и не даёт выполняться остальным операциям.

    asyncio.sleep() планирует ничего не делающую операцию, которая завершится успехом через заданное время. Поэтому её выполнение не мешает циклу-реактору. Просто ещё один await вызов, который приостанавливает текущую корутину и возвращает управление реактору.

    time.sleep() ничего не знает о реакторе и асинхронных операциях. Она приостанавливает выполнение обработчика, не прерывая его и не отдавая контроль реактору. Поэтому на время time.sleep() (или любой длительной синхронной операции) спит вся программа.
    Ответ написан
    5 комментариев
  • Почему при входе в Docker возникает ошибка?

    @d-stream
    Готовые решения - не подаю, но...
    bios обновлён до самого актуального?
    Ответ написан
    3 комментария
  • Отказоустойчивое взаимодействие с медленным внешним сервисом?

    Fragster
    @Fragster
    помогло? отметь решением!
    Нужно класть задание в БД, получать в фоне, класть в БД ответ, затем на клиент прокидывать через пушер/аналог или если лень его настраивать - то с клиента раз в 5 секунд дергать "уже готово? а сейчас?"
    Ответ написан
    1 комментарий
  • Что за фильтр используется?

    pozZzitiv
    @pozZzitiv Куратор тега Дизайн
    Дизайнер и перфекционист
    Это не фильтр и даже не фотография. Это векторное изображение, где каждый объект автор окрасил в желаемый цвет.
    https://www.shutterstock.com/ru/image-vector/horiz...

    Ну и дополню:
    • сделать/перекрасить такое же векторное изображение можно в любом векторном редакторе — Adobe Illustrator, Corel DRAW, Inkscape и др.;
    • обрабатывать растровые изображения (фото) можно в Adobe Photoshop, Lightroom, Corel Painter и др.

    Если вообще не знаете ничего, то поищите уроки по созданию желаемого эффекта и пробуйте повторить в той программе, которую использует автор.
    Ответ написан
    Комментировать
  • Как запустить контейнер docker?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поудаляй все базы графаны и прометеуса. Это вернет компоуз в некое нулевое состояние с которого ты начинал.
    Ответ написан
    5 комментариев
  • Функция json_decode не работает пока не вызвать её 2 раза подряд, почему так происходит?

    Newto
    @Newto
    Для решения любой проблемы нужно смотреть в суть этой проблемы. Напишите
    $response = json_decode($response, true);
    var_dump($response);
    $arResult = json_decode($response, true);
    var_dump($arResult);

    Смотрите на результат и делайте выводы.
    Ответ написан
    6 комментариев
  • Как корректно изменять библиотеки, устанавливаемые из PyPI?

    fenrir1121
    @fenrir1121
    Начни с документации
    - Открыть исходники (обычно кнопка Homepage)
    - Сделать форк
    - Внести изменения в форке
    - Сбилдить и использовать свой форк вместо оригинала
    Ответ написан
    1 комментарий