• Как доказать это или где можно почитать доказательство этого факта?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Как и всегда со счетными множествами, надо все элементы (подмножества) перенумеровать. Например, тут подойдет двоичная система счисления. Занумеруйте все элементы множества. Потом для каждого подмножества выписываете 1 в разрядах, соответствующих элеменам в подмножестве и 0 для элементов не в нем. Получаете двоичное число. Переводите в десятичную систему и получаете номер подмножества.

    Так можно по номеру получить уникальное подмножество и любое подмножество имеет какой-то номер. Все. Вот мы и занумеровали множество всех подмножеств натуральными числами. Оно счетно.
    Ответ написан
    3 комментария
  • Для чего в ноуте Acer Aspire a315-53-564x стоит SSD M2 на 16Гб?

    @kalapanga
    Гуглите "Intel Optane". Это оно.
    Ответ написан
    Комментировать
  • Как организовать быстрый поиск по 78 млн строк?

    2ord
    @2ord
    продвинутый чайник
    Чтобы не городить огород, достаточно импортировать в SQLite. Ну и, добавить индекс на нужную колонку. Если нужно, там есть и полно-текстовый поиск.
    Ответ написан
    5 комментариев
  • Зачем в таблице нужен столбец last_update?

    delphinpro
    @delphinpro
    frontend developer
    Название ни о чем не говорит?
    Время последнего обновления данных.
    Зачем это нужно – нужно смотреть в приложении (собственно, как и любые другие поля).
    Ответ написан
    24 комментария
  • Возможно ли задать приоритет обработки конкретным таблицам?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Эти операции может, и приоритетны, но за пределами MySQL. Вот там и решайте эту проблему.

    В MySQL Community Server нет ничего подобного в принципе. А вот в Enterprise имеется MySQL Enterprise Thread Pool, умеющий приоритезировать соединения (не запросы).

    В принципе можно ещё покопаться в MySQL proxy и аналогичных. Может, и там что сыщется.
    Ответ написан
    1 комментарий
  • Какие алгоритмы и структуры данных чаще всего спрашивают на собеседовании джуна?

    @karminski
    Senior PHP /React.js developer
    Как-то я в ответ на похожие вопросы спросил собеседователя - а вам оно на кой сдалось? Кроме чего-то невнятного, что типа это проверка знаний, он ответить не смог. Большинство задающих похожие вопросы не понимают сути собеседования. И как правило вам не стоит обращать внимание на такого работодателя. Хотя - вы джун, можете попытаться набраться опыта.
    Ответ написан
    Комментировать
  • Как в одном запросе получить сумму с group by и без него?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Использовать инструкцию group by name with rollup;
    select 
            coalesce(name, 'total') name, 
            sum(`value`) as value_sum 
    from reserv
    group by name
    with rollup;


    SQL fiddle online

    PHP code:
    <?php
    
    $res = DB::table('reserv as r')
                ->selectRaw('
                        coalesce(name, "total") name, 
                        sum(`value`) as value_sum 
                ')
                ->groupBy(DB::raw('name with rollup'))
                ->get();
    
    print_r($res);


    PHP Laravel online
    Ответ написан
    Комментировать
  • На что смотреть при выборе материнской платы?

    Adler_lug
    @Adler_lug
    Для офисного компа в первую очередь обычно смотрят на цену.
    Ответ написан
    Комментировать
  • Как сделать регистронезависимый поиск по longblob?

    BojackHorseman
    @BojackHorseman Куратор тега MySQL
    ...в творческом отпуске...
    причем тут тип данных к регистрозависимости? это ваш поисковый функционал ищет так, как вы того захотели.
    Ответ написан
    2 комментария
  • Возможно ли сделать нулевой count при использовании GROUP BY?

    1. нужна таблица - календарь, либо сгенерированный набор дат
    2. либо к календарю надо сделать left join вашей таблицы, либо к вашей таблице надо сделать right join календаря.

    SQL join в примерах с описанием

    в результате получится:

    select cal.cal_date, count(person)
      from some_table st
      right join (
      -- генерируем календарь - набор дат
        select *
          from (
            select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) cal_date
              from
                (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
                (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
                (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
                (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
                (select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4
          ) v
          where cal_date between '2021-11-01' and '2021-11-30'
      ) cal on cal.cal_date = st.date_field
      group by cal.cal_date


    в MariaDB есть Sequence Storage Engine, но до MariaDB 10.0 , он поставлялся в виде динамической плагина, начиная с MariaDB 10.1 , движок Sequence устанавливается по умолчанию. Используя его можно генерировать список дат (календарь) следующим образом:

    SELECT '2021-11-01' + INTERVAL seq DAY FROM seq_0_to_29;


    а запрос будет соответственно:

    select cal.cal_date, count(person)
      from some_table st
      right join (
      -- генерируем календарь - набор дат
        SELECT '2021-11-01' + INTERVAL seq DAY as cal_date FROM seq_0_to_29
      ) cal on cal.cal_date = st.date_field
      group by cal.cal_date
    ;


    см. пример работы на dbfiddle.uk

    и если person добавить в группировку - пример
    Ответ написан
    Комментировать
  • Resource: что из себя представляю потоки в php?

    Fockker
    @Fockker Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я значительно переработал этот ответ, поскольку мне самому не нравились некоторые моменты плюс я обратил внимание на конкретные примеры из вопроса.

    В первую очередь, не надо путать потоки как принцип, абстракцию, и потоки как конкретную реализацию этого принципа в виде механизма потоков в РНР. При этом даже в этой конкретной реализации есть много нюансов, которые не всегда очевидны. Скажем, врапперы в РНР можно разделить на встроенные и пользовательские. Причем даже встроенные могут значительно отличаться по своей реализации.

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

    Вот даже здесь, поскольку fopen работает поверх абстракции, нельзя говорить о едином подходе.
    Если у нас самый простой случай - локальный файл - то РНР оборачивает функции для работы с файлами языка С в свою собственную абстракцию. Но ниже - на уровне этих самых функций языка С - никаких потоков нет. Есть обращение к функциям операционной системы, которые просто позволяют прочитать выбранный кусок файла.
    Тут никаких вопросов нет, всё честно - если мы прочитали из файла 5 килобайт - значит потратили ровно 5 килобайт памяти.
    Но работаем мы с файлом не считывая его весь в память не потому что поток, а потому что так устроена файловая система. А поток этой возможностью только пользуется.

    Если же мы открываем не файл, а URL, то РНР начинает извращаться, пытаясь предоставить те же самые инструменты, какие мы используем для работы с файлами, для доступа к ресурсам совершенно другого типа.
    И здесь возможны нюансы. Я не знаю, как реализован HTTP wrapper, но в теории HTTP позволяет чтение произвольного объема данных через заголовок Range:. То есть РНР вполне может читать и из НТТР кусками, а не целиком.

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

    А упомянутый в вопросе PSR-7 вообще никакого отношения к потокам в РНР не имеет. Это совершенно отдельная реализация принципа потоков, которая не имеет отношения к потокам в РНР.
    Ответ написан
    Комментировать
  • Почему большой/объемный pull request это плохо (или хорошо)?

    было много ПР в промежуточную ветку, их ревьюила команда, к которой принадлежит разраб который сделал ПР;
    далее эти все коммиты/изменения были объединены в один ПР и он стал похож на страницу с содержанием книги с десятками коммитов, в то же время к ревью подключились разрабы из других комманд и ревью затягивается еще на несколько дней;

    Вам нужно решить, где чья ответственность. В большой команде не может каждый разработчик читать код каждого другого разработчика. Поэтому нужно просто делать адекватные коммиты/мелкие ПР и ревьюить их, а если они уже поревьюены - то не обращать на них внимания, т.к. это теперь не ваша ответственность.

    Почему вы повторно ревьюите этот же код, ещё и теперь объединённый в один большой ПР? Какой смысл? У вас что-то не так с организацией ответственности.
    Ответ написан
    4 комментария
  • Почему некорректно считается req_limit?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Давайте разберём самое начало процесса, когда запускается ab и в нгинкс примерно одновременно начинают лететь 80 запросов. Счётчики в этот момент по нулям, но выставлен лимит в 1000 rps, то есть запросы могут обрабатываться не чаще, чем раз в 1 мсек.

    По факту, внутрь провалятся ровно 1+10=11 запросов, а остальные 80-11=69 отобьются с 503 кодом - это даже больше 62%.

    В дальнейшем, поскольку запросы постепенно размажутся во времени, перестав приходить синхронно, процент отлупов снизится, но отнюдь не до ожидаемых вами (1026-1000)/1000*100%, потому что время от времени (и скорее часто, чем редко) запросы всё-таки будут приходить чаще, чем раз в 1 мсек (бурст в 10 rps можно не учитывать, он по сравнению с лимитом микроскопический) - на это намекает среднее время исполнения 0.974 мсек, делёное на 80 потоков.

    Попробуйте увеличить бурст, скажем, до 500-1000 и посмотреть, как это отразится на результатах.
    Ответ написан
    9 комментариев
  • Какой объём трафика у websocket если ничего не передавать и просто держать соединение?

    @deliro
    Агрессивное программирование
    PING/PONG кидается раз в 20 секунд https://websockets.readthedocs.io/en/latest/topics...
    PING/PONG фреймы — по одному байту. Плюс, если считаем, объём TCP и IP фреймов.

    Итого за час 180 пингов и 180 понгов или 360 байт не считая оверхэда на нижележащие фреймы.
    Если считать оверхэд, то примерно 65 байт x (180 пингов + 180 понгов) ~ 23кб/час

    Плюс, какой-то оверхэд даст TLS и его хэндшейки, плюс, незначительный оверхэд дадут хэндшейки TCP. Но это явно не близко к 70мб
    Ответ написан
    3 комментария
  • Можно ли сделать составной уникальный ключ "в обе стороны" (напр. 3 и 15 == 15 и 3)?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Задача решается созданием вычисляемого поля. Один из вариантов:
    CREATE TABLE test (
        id_1 INT,
        id_2 INT,
        ids VARCHAR(255) AS (CONCAT(LEAST(id_1, id_2), ' ', GREATEST(id_1, id_2))) STORED,
        PRIMARY KEY(ids),
        CHECK (id_1 <> id_2)
    );

    DEMO

    В принципе, можно и триггером... но менее надёжно.
    Ответ написан
    8 комментариев