Задать вопрос
  • У меня вылетает ошибка при наборе команды для отправки случайного медиа файла из папки, что делать?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    exc - обязательный аргумент, который отсутствует

    Не передаете exc в функцию. Либо добавляйте его после команды, !Imgs 123, либо вообще удалить его из функции, если он не используется
    Ответ написан
    2 комментария
  • Как сгенерировать случайные неповторяющиеся значения?

    hint000
    @hint000
    у админа три руки
    сгенерировать от 1 до 40 по порядку, затем: https://www.google.com/search?q=excel+shuffle
    Ответ написан
    Комментировать
  • Зачем нужен GitHub?

    mmmaaak
    @mmmaaak
    зачем люди заливают архивы с открытым исходным кодом на их программу над которой они трудились


    целью некоторых является делать что-то публичное, делиться кодом, не только чтоб что-то отдать, но и также получить фидбек и возможно какую-то помощь сообщества (заведение issues, или публикация pull requests с их решением), не хочешь чтоб код был виден кому-то, можешь сделат ьприватный репозиторий, или ваще хранить его где-то у себя, даже если локально.
    Ответ написан
    Комментировать
  • Надо ли тут использовать WebSocket?

    @Azperin
    Дилетант
    SSE

    Если 1000-4000 человек в день, то это крайне мало, тут подойдет хоть что, важнее смотреть сколько у тебя в пике т.е. одновременно
    Ответ написан
    Комментировать
  • Как заменить java 11 на java 8 в debian?

    @sand3001
    Всего по немногу
    sudo update-alternatives --config java
    Ответ написан
    Комментировать
  • Текущее положение Golang в машинном обучение?

    sgjurano
    @sgjurano
    Разработчик
    Можно запускать либы, написанные на C из Go, но зачем?

    Люди выбирают Go в основном из-за умного планировщика, который позволяет удобно работать с сетью. ML сюда не ложится примерно никак, тем более что большинство DS знают Python и это значит, что подходящих людей найти гораздо легче.

    Пожалуй единственная нормальная причина использовать ML-библиотеки на Go — это когда у вас уже есть сервис на Go, к которому надо прикрутить немножко ML.

    Если же вы пишете новый сервис, где планируется активное использование ML-библиотек, то для невысокой нагрузки прекрасно подойдёт Python, а для высокой лучше всё же сразу взять C++ или какой-нибудь другой язык прозрачно совместимый по памяти с C.

    Поэтому мне кажется, что ML-библиотеки на Go так и будут капитально отставать от Python — они там просто почти никому не нужны, вот их и не развивают.
    Ответ написан
    4 комментария
  • Как сделать localhost безопасным?

    @romicohen
    Системный Архитектор
    https://habr.com/ru/post/309556/

    или сразу посмотрите в сторону https://itelmenko.ru/working-environment/laradock/ все равно потом к этому придете))
    Ответ написан
    Комментировать
  • Есть ли ошибки в реализации fft?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Зачем buffer[i] *= 1;?

    Есть ошибка с тем, что у вас код работает только с длиной равной степеням двойки, но нигде этого не проверяется. Обычно, чтобы не возиться с частыми случаями, расширяют буфер до степени двойки.

    Если же делать с нечетными n, то эти стандартные формулы не работают.

    Еще возможно по коду разбросаны всякие off by one error и перепутанные знаки (почему в w() аргумент у синуса/косинуса берется со знаком минус?)

    Еще недочет - вы 2 раза вызываете w(), когда как можно было бы и запомнить результат первого вызова.

    И еще, обычно рекурсию разворачивают в циклы. В английской вики приведен псевдокод.
    Ответ написан
    Комментировать
  • Чем InterBase 2009 лучше SQLite 3.36?

    1. Interbase сейчас называется firebase
    2. Встраиваемая только sqlite
    3. Без определения задачи нельзя сказать точно, что будет в вашем случае лучше.

    Попробуйте писать код, который может работать с обеими бд, а потом сравните
    Ответ написан
    Комментировать
  • Запускается grub вместо виндовс. Как это исправить?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    1. Настроить grub
    2. Восстановить оригинальный загрузчик Windows.
    Оба варианта гуглятся.
    Ответ написан
    Комментировать
  • Python: can't open file 'bot.py': [Errno 2] No such file or directory, как решить ошибку?

    Kentavr16
    @Kentavr16
    long cold winter
    Неправильно задан путь к папке в которой лежит файл. ру или же название файла написано с ошибкой. Компилятор не может найти файл который вы пытаетесь открыть
    Ответ написан
    Комментировать
  • Как обрезать только новые фото карточек товара?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Отсортировать файлы по дате модификации, например, с помощью параметра -mtime find`а.
    Ответ написан
    Комментировать
  • Книги/документация по языку программирования crystal?

    @sand3001
    Всего по немногу
    Официальный сайт - прекрасный источник для изучения основ языка
    Ответ написан
    3 комментария
  • Почему .env файл не пушится в гит?

    delphinpro
    @delphinpro
    frontend developer
    Это как раз не проблема.
    В гите должен присутствовать только .env.example с примерами настроек.
    Остальные .env файлы, во-первых, содержат критические данные (логины пароли от дб как минимум), во-вторых, зависят от окружения и могут отличаться на проде , деве и у каждого программиста в команде локально.
    Ответ написан
    Комментировать
  • Какое приложение можно использовать для быстрого просмотра файлов в KDE?

    Dolphin
    Это файловый менеджер, вроде как по умолчанию в КДЕ он есть. В нём меню - вид - панели - сведения. Или нажать F11. Будет справа показывать предпросмотр почти всех файлов - и pdf, и офисные, и xml всякие, и картинки, и музыку тоже умеет.
    Ответ написан
    1 комментарий
  • Как организовать структуру хранения атрибутов?

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

    create table products (
    	id serial primary key,
    	name text not null
    );
    
    create table products_attributes (
    	id serial primary key,
    	attribute_id int not null,
    	product_id int not null references products (id),
    	value double precision
    );
    
    
    -- 10 млн продуктов
    insert into products (name)
    select 'p' || n from generate_series(1, 10000000) n;
    
    -- в среднем по 10 аттрибутов на продукт
    -- всего 20 разных аттрибутов
    -- значения - случайные из 1-1000
    insert into products_attributes(attribute_id, product_id, value)
    select a,
           p.id,
           trunc(random() * 1000)
      from products p, generate_series(1, 20) a
     where random() < 0.5;
    
    
    create index ix_attr_attribute_id on products_attributes(attribute_id);
    create index ix_attr_product_id on products_attributes(product_id);
    create unique index uk_attr_attr_product on products_attributes(product_id, attribute_id);
    create index ix_attr_value on products_attributes(value);
    
    -- немного статистики
    select attribute_id, count(*) from products_attributes group by 1 order by 1;
    
     attribute_id |  count
    --------------+---------
                1 | 5001345
                2 | 5001937
                3 | 4998754
                4 | 4998706
                5 | 4999357
                6 | 5004465
                7 | 4999215
    ...
    
    select product_id, count(*) from products_attributes group by 1 order by 2 desc limit 20;
     product_id | count
    ------------+-------
        4769292 |    20
        5366802 |    20
        7241348 |    20
        3019891 |    20
        7789046 |    20
        1688646 |    19
        1585970 |    19
    ...
    
    SELECT count(*) FROM products_attributes WHERE attribute_id = 1 AND value BETWEEN 1 AND 400;
      count
    ---------
     1999212
    (1 row)
    
    SELECT count(*) FROM products_attributes WHERE attribute_id = 2 AND value BETWEEN 1 AND 400;
      count
    ---------
     1999385
    (1 row)
    
    SELECT count(*) FROM products_attributes WHERE attribute_id = 3 AND value BETWEEN 20 AND 30;
     count
    -------
     55318
    (1 row)



    explain analyze
    select * from products
     where id in (
       select product_id from products_attributes
        where attribute_id = 1 AND value BETWEEN 1 AND 400
     )
     and id in (
       select product_id from products_attributes
        where attribute_id = 2 AND value BETWEEN 1 AND 400
     )
     and id in (
       select product_id from products_attributes
        where attribute_id = 3 AND value BETWEEN 20 AND 30
     );

    Без лимита, 2189 записей - 3.8 сек:
    План

    QUERY PLAN                          
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     Gather  (cost=164603.86..347381.12 rows=2047 width=12) (actual time=680.688..3753.927 rows=2189 loops=1)
       Workers Planned: 2
       Workers Launched: 2
       ->  Nested Loop  (cost=163603.86..346176.42 rows=853 width=12) (actual time=652.714..3713.617 rows=730 loops=3)
             ->  Nested Loop  (cost=163603.43..341334.66 rows=762 width=12) (actual time=652.439..3294.369 rows=730 loops=3)
                   ->  Parallel Hash Join  (cost=163602.86..313081.39 rows=4167 width=8) (actual time=649.437..1742.210 rows=3689 loops=3)
                         Hash Cond: (products_attributes_1.product_id = products_attributes_2.product_id)
                         ->  Parallel Index Scan using ix_attr_attribute_id on products_attributes products_attributes_1  (cost=0.57..147444.27 rows=775173 width=4) (actual time=0.577..880.079 rows=666462 loops=3)
                               Index Cond: (attribute_id = 2)
                               Filter: ((value >= '1'::double precision) AND (value <= '400'::double precision))
                               Rows Removed by Filter: 1000851
                         ->  Parallel Hash  (cost=163306.17..163306.17 rows=23690 width=4) (actual time=647.483..647.483 rows=18439 loops=3)
                               Buckets: 65536  Batches: 1  Memory Usage: 2752kB
                               ->  Parallel Index Scan using ix_attr_attribute_id on products_attributes products_attributes_2  (cost=0.57..163306.17 rows=23690 width=4) (actual time=18.296..639.541 rows=18439 loops=3)
                                     Index Cond: (attribute_id = 3)
                                     Filter: ((value >= '20'::double precision) AND (value <= '30'::double precision))
                                     Rows Removed by Filter: 1647812
                   ->  Index Scan using uk_attr_attr_product on products_attributes  (cost=0.57..6.78 rows=1 width=4) (actual time=0.420..0.420 rows=0 loops=11066)
                         Index Cond: ((product_id = products_attributes_1.product_id) AND (attribute_id = 1))
                         Filter: ((value >= '1'::double precision) AND (value <= '400'::double precision))
                         Rows Removed by Filter: 0
             ->  Index Scan using products_pkey on products  (cost=0.43..6.35 rows=1 width=12) (actual time=0.572..0.572 rows=1 loops=2189)
                   Index Cond: (id = products_attributes.product_id)
     Planning Time: 4.481 ms
     JIT:
       Functions: 93
       Options: Inlining false, Optimization false, Expressions true, Deforming true
       Timing: Generation 14.220 ms, Inlining 0.000 ms, Optimization 2.852 ms, Emission 50.889 ms, Total 67.961 ms
     Execution Time: 3762.035 ms
    (29 rows)



    То же, но с лимитом (LIMIT 20):
    Запрос
    explain analyze
    select * from products
     where id in (
       select product_id from products_attributes
        where attribute_id = 1 AND value BETWEEN 1 AND 400
     )
     and id in (
       select product_id from products_attributes
        where attribute_id = 2 AND value BETWEEN 1 AND 400
     )
     and id in (
       select product_id from products_attributes
        where attribute_id = 3 AND value BETWEEN 20 AND 30
     ) limit 20;


    20 записей - 48 мсек:
    spoiler
    QUERY PLAN                                   
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     Limit  (cost=2.14..7292.14 rows=20 width=12) (actual time=3.743..47.724 rows=20 loops=1)
       ->  Nested Loop  (cost=2.14..746133.39 rows=2047 width=12) (actual time=3.741..47.714 rows=20 loops=1)
             ->  Nested Loop  (cost=1.70..734511.89 rows=1829 width=12) (actual time=3.313..44.710 rows=20 loops=1)
                   ->  Nested Loop  (cost=1.14..666709.45 rows=10000 width=8) (actual time=2.377..42.276 rows=95 loops=1)
                         ->  Index Scan using ix_attr_attribute_id on products_attributes products_attributes_2  (cost=0.57..209246.27 rows=56856 width=4) (actual time=1.250..14.969 rows=511 loops=1)
                               Index Cond: (attribute_id = 3)
                               Filter: ((value >= '20'::double precision) AND (value <= '30'::double precision))
                               Rows Removed by Filter: 46859
                         ->  Index Scan using uk_attr_attr_product on products_attributes products_attributes_1  (cost=0.57..8.05 rows=1 width=4) (actual time=0.053..0.053 rows=0 loops=511)
                               Index Cond: ((product_id = products_attributes_2.product_id) AND (attribute_id = 2))
                               Filter: ((value >= '1'::double precision) AND (value <= '400'::double precision))
                               Rows Removed by Filter: 0
                   ->  Index Scan using uk_attr_attr_product on products_attributes  (cost=0.57..6.78 rows=1 width=4) (actual time=0.025..0.025 rows=0 loops=95)
                         Index Cond: ((product_id = products_attributes_1.product_id) AND (attribute_id = 1))
                         Filter: ((value >= '1'::double precision) AND (value <= '400'::double precision))
                         Rows Removed by Filter: 0
             ->  Index Scan using products_pkey on products  (cost=0.43..6.35 rows=1 width=12) (actual time=0.149..0.149 rows=1 loops=20)
                   Index Cond: (id = products_attributes.product_id)
     Planning Time: 9.959 ms
     Execution Time: 47.796 ms
    (20 rows)


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

    Uber Ludwig
    Ответ написан
    Комментировать