• Почему postgresql выбирает неоптимальный план выполнения для простого JOIN?

    Melkij
    @Melkij
    PostgreSQL DBA
    Я выполняю 2 одинаковых запроса

    "WHERE friends_info.user_id = 1" vs "WHERE friends_info.friend_id= 1"

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

    Bitmap Index Scan on ix_friends_user_id (cost=0.00..61.56 rows=5465 width=0) (actual time=0.742..0.743 rows=88 loops=1)

    Суть ошибки выбора плана. Какое распределение данных в таблице? Каков размер самой таблицы? Вероятно несколько пользователей занимают значительную часть таблицы и это сбивает оценку селективности.
    Простое чуть приподнять SET STATISTICS по полю, собрать новый analyze и посмотреть на оценку числа строк.

    PS: индекс ix_friends_user_id должен быть удалён как бесполезный при наличии friends_info_user_id_friend_id_key
    Ответ написан
    3 комментария
  • Async с методами класса не работает?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Сделайте метод static async create(), который выполняет все await'ы и возвращает новый экземпляр класса. Соответственно, вместо bar = new foo() в таком случае будет bar = await foo.create().
    Ответ написан
  • Как в selenium открыть селектор на JS?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Как в selenium открыть селектор на JS?

    Т.е. элемент, который создаётся динамически? Используйте явное ожидание элемента и уже затем взаимодействуйте с ним.
    Ответ написан
    2 комментария
  • При сборке к имени картинок добавляется хеш и картинки не отображаются. Как указывать путь к картинкам?

    Aetae
    @Aetae
    Тлен
    React - это тебе не Vue, он не умеет из коробки угадывать, что картинки надо импортировать.

    Для каждой картинки надо сделать руками:
    import img from './assets/img.jpeg'
    или использовать glob import.

    Ну либо положить картинки в public и брать их как есть по прямым путям относительно корня без всяких хэшей.

    Подробнее.
    Ответ написан
    Комментировать
  • Как сделать, чтобы количество активных чекбоксов не опускалось ниже определённого?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Где чекбоксы находятся, что за чекбоксы, каковы ограничения на количество отмеченных, как посчитать количество отмеченных:

    const container = document.querySelector('селектор общего предка чекбоксов');
    const checkboxSelector = 'селектор чекбоксов';
    const minChecked = 1;
    const maxChecked = Infinity;
    const countChecked = checkboxes =>
      Array.prototype.reduce.call(checkboxes, (acc, n) => acc + n.checked, 0);

    Если количество отмеченных чекбоксов меньше или равно минимально допустимому - блокируйте их, если количество отмеченных чекбоксов больше или равно максимально допустимому - блокируйте те, что не отмечены:

    const checkboxes = container.querySelectorAll(checkboxSelector);
    const onChange = () => {
      const count = countChecked(checkboxes);
      const minReached = count <= minChecked;
      const maxReached = count >= maxChecked;
      checkboxes.forEach(n => n.disabled = minReached && n.checked || maxReached && !n.checked);
    };
    
    checkboxes.forEach(n => n.addEventListener('change', onChange));

    Или, выставляйте снятый чекбокс обратно, если количество отмеченных упало ниже минимума и снимайте выставленный, если количество отмеченных превысило максимум:

    container.addEventListener('change', function({ target: t }) {
      if (t.matches(checkboxSelector)) {
        const count = countChecked(this.querySelectorAll(checkboxSelector));
        t.checked ||= count < minChecked;
        t.checked &&= count <= maxChecked;
      }
    });
    Ответ написан
    3 комментария
  • Как ввести большое число?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    input возвращает str и, если указать int(input()) и ввести 100, то будет результат нормальным, а вы указываете 10000000 1 - это уже строка, ведь в python число может быть только: "100..." или как float "1000.1". Можно использовать следующий код:

    num = input("Enter a number > ")
    # проверка на число
    if not num.isdigit():
       return False
    
    # Дальше можно сделать
    num = int(num) # и ошибок не будет.
    Ответ написан
    Комментировать
  • После обновления прошивки пропали все данные, что делать?

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

    Steel_Balls
    @Steel_Balls
    0L3QsNGH0LjQvdCw0Lsg0YEgQkFTSUMg0L3QsCDQo9Ca0J3Qpi
    Я однажды пытался начать переписку с гуглом, чтобы выяснить причину блокировки приложения. В ответ мне без слов заблокировали аккаунт разработчика с десятком других приложений, а платёжную карту добавили в чёрный список.
    Вот так просто.
    Какие ещё разговоры с гуглом?
    Ответ написан
    Комментировать
  • Нужен функциональный браузер со специфичной защитой от отслеживания, есть ли?

    Stalker_RED
    @Stalker_RED
    Если вам надо замаскироваться, то классический набор - tor, whonix, tails, kodachi, вот это все.

    Если вам "настройки" для сео накруток, чтобы прикидываться разными пользователями, то так сразу и писали бы. Для этого специальные инструменты есть, типа sphere browser.

    Или вот, что-то новенькое, сам в работе не видел https://ls.tenebris.cc/about

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

    anatoly_kulikov
    @anatoly_kulikov
    Помог ответ? Отметь решением!
    На самом деле все просто - это Telegram Web Apps
    Ответ написан
    Комментировать
  • Как сделать несколько скомпилированных стилей ViteJS в Laravel?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Так же как и с миксом.
    Отдельные таски в package json с указанием отдельных конфигов Vite
    "scripts": {
      "build:site": "vite build --config site.vite.config.js",
      "build:admin": "vite build --config admin.vite.config.js",
    }

    https://vitejs.dev/guide/cli.html
    Ответ написан
    Комментировать
  • Как сделать анимацию курсора под текстом?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Можно конечно отключать poiner-events, но если включать его для текста, то это всё равно приведёт к той же проблеме. Что под текстом не будет работать.

    Поковырял немного:


    Основное что изменил - отслеживание событий mousemove не на канвасе, а на всей секции и e.offsetX на e.clientX
    Ответ написан
    1 комментарий
  • Как в игровых движках реализованы отскоки?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Если вместо синусов и косинусов использовать вектора, то формулы будут сильно проще. Все изменения происходят вдоль нормали соприкосновения. А там одномерная формула вообще: проецируете скорости на нормаль, потом считаете коэффициенты изменений одной и другой скорости, чтобы сохранился импульс и энергия. Потом прибавляете вектора изменений к векторам скоростей. Вместо синусов/косинусов считаете векторное/скалярное произведение векторов.

    В движках чаще всего проверяются коллизии - если 2 коллайдера (фигуры, описывающие тело, часто упрощенные) пересекаются, то находится нормаль соприкосновения, и применяются веторные формулы для изменения скорости.
    Ответ написан
    5 комментариев
  • Как в игровых движках реализованы отскоки?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А что вам не понравилось в приведенных формулах? Они совсем не сложные.
    Правда в векторной форме записать закон сохранения импульса можно гораздо компактнее, а некоторые языки вроде питона позволили бы в комплексных числах записать формулу прямо в векторной форме для плоского случая. Но можно записать и так, как здесь приведено у вас.

    У вас тут довольно простой случай столкновения точечных масс, но в физических движках обычно коллизии предусматривают более натуральные взаимодействия с вклчением вращения, как отдельной степени свободы. В этом случае играют важную роль размеры, формы и координаты центов масс сталкивающихся объектов. В этом случае формулы будут посложнее, но дифуры также по-прежнему считать не обязательно. Просто закон сохранения импульса и аккуратный учет всех составляющих.
    Оишите подробнее вашу задачу, потому что сейчас это можно сделать совсем просто, как в пинболле, или сложно с гравитацией и через дифуры.
    Ответ написан
    2 комментария
  • Почему нет(?) популярного REST API для IMAP?

    Потому что IMAP - это сам себе протокол.
    Каждый почтовый сервис может для себя придумать какой-нибудь свой REST API, но все эти варианты не стандартизированы.

    Из стандартизированных есть jmap, но мало кто его использует.
    Ответ написан
    Комментировать
  • Есть ли смысл делать анимацию без JS?

    SagePtr
    @SagePtr
    Еда - это святое
    Да, браузеры смогут оптимизировать анимацию средствами CSS и решать, с какой частотой её воспроизводить, в целях экономии ресурсов и батареи.

    При декларативном подходе (CSS) мы говорим браузеру, что именно сделать, а он уже сам решит, как именно сделать это оптимально для себя и для устройства, на котором он работает. При императивном подходе (JS) мы контролируем каждый шаг и не даём свободы, браузер вынужден делать то, что автор скрипта скажет, даже если ту же самую задачу он может решить лучше и оптимальнее него.
    Ответ написан
    Комментировать
  • Имеются ли ограничения на ЯП при разработке по ГОСТ?

    NeiroNx
    @NeiroNx
    Программист
    Ограничения платформы - учитывать работу в Российских ОС, например в Astra Linux.
    И удобство работы с ЭП и документами в ЯП.

    Ну и ГОСТ не забываем:
    6 Система в целом должна:
    а) быть защищенной от несанкционированного доступа;
    б) быть защищенной от искажения или потери данных;
    в) функционировать в условиях окружающей среды, которая соответствует спецификациям поставщика, или,
    в случае некомпьютеризированных систем, создавать условия, обеспечивающие неизменность выполненных от
    руки записей и расшифровки;
    г) поддерживаться в таком состоянии, которое обеспечивает целостность данных и информации;
    д) включать регистрацию системных сбоев и соответствующих оперативных и корректирующих действий.


    И выбор языков очень сокращается.
    Ответ написан
    7 комментариев
  • Нужна простая админ-панель для сайта. Какую выбрать?

    anatoly_kulikov
    @anatoly_kulikov
    Помог ответ? Отметь решением!
    Wordpress
    Ответ написан
    Комментировать
  • Почему SQL запрос неправильный?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    А разве не так?
    SELECT good, amount * unit_price as sum
        FROM Payments 
            ORDER BY payment_id, sum DESC;
    Ответ написан
    2 комментария
  • Как интегрировать существующий блог на Wordpres в веб приложение на Nuxt.js?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    В настройках nginx location /blog проксировать не на Nuxt, а на Wordpress.
    Ответ написан
    3 комментария