• Почему C/C++ проекты очень долго компилируются?

    @Miron11
    нет, precompiled headers, не ускоряют build.
    Если Вы ещё раз прочитаете пост о
    а. создании промежуточного буфера трансляции ( в быстрой памяти )
    б. процессе построения древа формальных инструкций выполнимого
    в. собственно трансляции этого древа на ранних этапах в двоичный код, а со временем в инструкции языка ассемблера
    Вы увидите, что создание слоя предварительного анализа заголовков никак не может помочь ускорению трансляции в стадии в, поскольку она полностью сменяет все, что построено в секциях а и б.
    И поскольку в финальной стадии все надо строить заново, то длительность выполнения всей операции только растет, при чем весьма серьёзно.
    Единственный случай, когда это помогает со скоростью, это когда в коде ничего не изменилось. Тогда компилятор может действительно быстро удостовериться, что все осталось как было и ничего не делать намного быстрее.
    Единственный надежный способ ускорять стадию в это минимизировать количество операций связанных с этим шагом.
    Именно для этого используется режим компиляции только нового / обновленного кода, совмещенный с созданием буфера предварительного анализа формальных операций ( так называемый "объектный код" ).
    В этом случае компилятор оценивает в первую очередь, что именно изменилось, и изменяет или добавляет только эти инструкции в конечный выполнимый.
    У этого подхода есть проблема.
    В случае, если Вы требуете включить опции оптимизирующие код ( их ведь включают отдельно ) транслятору придется отказаться от быстрого выполнения стадии в и вернуться к полному выполнению всех стадий трансляции кода. Но это ведь можно делать отдельно. Поскольку доверие к сегодняшним трансляторам очень высокое. И если первый, пусть не самый оптимальный вариант выполнимого, может использоваться для поиска дефектов и добавления различных фишек, то высоко оптимизированный вариант продукта всегда можно создать, когда дефекты и фишки признаны на удовлетворительно уровне.
    Написано
  • Есть ли необходимость связывать сущности в БД, если я их связываю через spring data jpa в коде?

    @Miron11
    Исключение так и будет исключением, в базе или нет. Вопрос где они нужнее. Если задача качество данных, то ключи нужны и там и там.
    Если же задача сгладить впечатление и дать пользователю возможность использовать ПО поверх возможных огрехов, то наверное они не нужны ни там ни там.
    Если же задача сделать ПО по - проворнее, то с ключами зависимости надо не забыть поставить индекс на каждый ключ, а без ключей "прозвонить" запросы и поставить индексы против полей использующихся для join или where.
    Написано
  • Запрет на редактирование строки в Mysql по ID?

    @Miron11
    Одной смены паролей не достаточно. Если один из сервисов под прикрытием "работы" занимается не санкционированным изменением данных.
    Надо ещё и привилегии изменить, и установить аудит за изменениями в таблице.
    Эти вещи не так просты, и могут не заканчиваться на самом сайте. Кто - то может входить в контекст запроса через рекламный блок, и выполнять действия, не санкционированные и не описанные кодом. Ведь так или иначе все на линии и так или иначе может быть достигнуто из открытой сети.
    Поэтому существенно выполнить полный цикл работ сейчас, пока внимание заострено и пользователь понимает, что есть риски, которые его беспокоят.
    Вытягивать эти вещи "пост-фактум" превращается в пытки обеих сторон, кроме того, возникают уже вопросы с доверием ( в худшем случае ) и с качеством работы.
    Всегда хочется как лучше, но действовать надо, как в худшей ситуации.
    Написано
  • Какой компилятор для языка Си посоветуете?

    @Miron11
    Мда
    ---
    https://code.visualstudio.com/docs/cpp/config-wsl
    ---
    Using C++ and WSL in VS Code
    In this tutorial, you will configure Visual Studio Code to use the GCC C++ compiler (g++) and GDB debugger on Ubuntu in the Windows Subsystem for Linux (WSL). GCC stands for GNU Compiler Collection; GDB is the GNU debugger. WSL is a Linux environment within Windows that runs directly on the machine hardware, not in a virtual machine.
    ---
    Ох уж эти молодые. На ходу подметки рвут :)))
    Написано
  • Как правильно составить запрос mySQL с выборкой данных из другой таблицы?

    @Miron11
    Верно)
    Ещё одним недостатком запроса, который предложил выше, в случае, если у админа нет клиентов, он не выдаст ни одной строчки. Наверное надо прояснить, если строка с токеном админа и NULL значениями поможет в таком случае пояснить, что админ есть, но соответствующих записей пока не создано. Так же можно, наверное, подтвердить присутствие клиентов, у которых нет логов.
    одним из возможных изменений будет, как Вы и предложили, поле в родстве logs, соответствующий запрос:
    select logs.id
    , logs.serial
    , logs.action
    , logs.ip
    , logs.date
    from owners owners
    left join clients clients on clients.token = owners.token
    left join logs logs on logs.serial = clients.serial
    and logs.token = owners.token
    where owners.token = 'abcd...'
    -----
    но такое изменение увеличит размер каждой записи logs. Если записи частые, то есть смысл сделать родство "sessions", занести в эту таблицу поле serial, поле token, а в logs ввести поле sessions, тогда запрос будет таким

    select logs.id
    , logs.serial
    , logs.action
    , logs.ip
    , logs.date
    from owners owners
    left join clients clients on clients.token = owners.token
    left join (sessions sessions
    inner join logs logs on logs.session = clients.session)
    on sessions.token = clients.token and sessions.serial = clients.serial
    where owners.token = 'abcd...'

    MySQL не силен в выполнении таких запросов, поэтому его лучше разбить на следующие подзапросы, с использованием временных таблиц

    DROP IF EXISTS TEMPORARY TABLE temp_clients;
    DROP IF EXISTS TEMPORARY TABLE temp_sessions;
    DROP IF EXISTS TEMPORARY TABLE temp_logs1;
    DROP IF EXISTS TEMPORARY TABLE temp_logs2;
    CREATE IF NOT EXISTS TEMPORARY TABLE temp_clients (token, serial);
    CREATE IF NOT EXISTS TEMPORARY TABLE temp_sessions (sessions, token, serial);
    CREATE IF NOT EXISTS TEMPORARY TABLE temp_logs1 ( token, serial, id, session, action, ip, date);
    CREATE IF NOT EXISTS TEMPORARY TABLE temp_logs2 ( token, serial, id, action, ip, date, important_owner_property);

    INSERT INTO temp_clients (token, serial)
    select owners.token
    , clients.serial
    from owners owners
    left join clients clients on clients.token = owners.token
    where owners.token = 'abc...';

    INSERT INTO temp_sessions (session, token, serial)
    select sessions.session
    , clients.token
    , clients.serial
    from temp_clients clients
    left join sessions sessions on sessions.token = clients.token and sessions.serial = clients.serial;

    insert into temp_logs1
    ( token, serial, session, id, action, ip, date)
    select sessions.token
    , sessions.serial
    , sessions.session
    , logs.id
    , logs.action
    , logs.ip
    , logs.date
    from temp_sessions sessions
    inner join logs logs on logs.session = sessions.session

    insert into temp_logs2
    ( token, serial, id, action, ip, date)
    select clients.token
    , clients.serial
    , logs.id
    , logs.action
    , logs.ip
    , logs.date
    from temp_clients clients
    left join temp_logs1 logs on logs.token= clients.token and logs.serial = clients.serial;

    update logs
    set important_owner_property = owners.mportant_owner_property
    from temp_logs2 logs
    inner join owners owners on owners.token = logs.token
    where owners.mportant_owner_property is not NULL;

    SELECT * FROM temp_logs2;
    Написано
  • Как правильно составить запрос mySQL с выборкой данных из другой таблицы?

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

    Записи
    --------
    Админ
    токен - 1
    токен - 2
    токен - 3

    Клиент
    Токен - 1 | Сериал 1
    Токен - 2 | Сериал 1
    Токен - 3 | Сериал 3

    Лог
    № 1 | Сериал - 1 | Запись ...
    № 2 | Сериал - 1 | Запись ...
    № 3 | Сериал - 3 | Запись ...
    № 4 | Сериал - 3 | Запись ...
    -----
    Запрос по токен 1
    Выводятся записи под № 1,2
    -----
    Запрос по токен 2
    Выводятся записи под № 1,2
    -----
    Запрос по токен 3
    Выводятся записи под № 3,4
    ----
    Поясните, что неправильно.
    Написано
  • Как правильно создать представление базы данных MySQL с несколькими подстолбцами?

    @Miron11
    NickOver, а вы запомните список как CSV а потом его можно занести с помощью выражения LOAD, там пример есть.
    Написано
  • Как получить последнюю запись по последней дате?

    @Miron11
    Теоретически это был бы шедевр лексического анализа

    LEFT JOIN [Price] pr
    ON s.ID Brewery = pr.ID Brewery
    AND s.Product code = pr.Product code

    но увы, таких нет в природе :)
    Написано
  • Как правильно составить SQL запрос?

    @Miron11
    Андрей Ежгуров, дистинкт вынужден прочесть таблицу в буфер. Это не подходит для кода, который на линии.
    Написано
  • Как правильно составить SQL запрос?

    @Miron11
    select count(*) from (select game, game_id from bets group by game, game_id) as dt
    Написано
  • Как создается серверная часть программно-аппаратного устройства?

    @Miron11
    Гопаров Руслан,
    Либо обратитесь к производителю аппарата, либо поищите прошивку этого устройства.
    Без прошивки устройства такого уровня я не встречал.
    Когда прояснится с прошивкой можно думать о драйвере. Без прошивки, это, почти наверняка, не рабочее изделие.
    Наверняка это не единственное такое изделие, которое существует. Можно поискать подобные. Как правило аппаратные решения создаются по шаблону. Хотя бывают и уникальные решения, но очень редко.
    Написано
  • Запрет на редактирование строки в Mysql по ID?

    @Miron11
    Зачем, если исходники открыты, то протрассировать как используются различные логины дело 2-4х часов даже для очень больших проэктов.
    По идее там должен быть конфигурационный файл в котором несколько строчек.
    Найти, какие логины отвечают за что, и ограничить их привилегии дело не хитрое.
    Если же там все хитрее, то я советую убрать вопрос, поскольку не доложить о таком деле = соучастие.
    Модераторы и админы - возьмите на заметку. Ваш сайт тоже.
    Написано
  • Какая из баз данных лучше всего подходит для хранения большого словаря?

    @Miron11
    AVKor,
    обобщенные директивы административного характера, это плохая черта плохих профессионалов, которой учат во второсортных ВУЗ-ах.
    Написано
  • Двумерное дискретное преобразование Фурье для изображения (очень объемный вопрос - много текста)?

    @Miron11
    Я не знаю о чем идет речь. Мне казалось, что часть гистограммы должен быть градиент цвета. Во всяком случае из описания автора мне казалось что фильтр необходим на оттенке цвета, да, в данном случае черно - белого спектра, который, следуя вопросу требует 9 битов, а не 32.
    То есть целостный график состоит из двух ортогональных плоскостей, одна из которых частоты штрихов, а другая их цветовой градиент. И тогда фильтр, который вы описали, с поправкой на гистограмму градиента цвета, действительно заработает.
    Написано
  • Двумерное дискретное преобразование Фурье для изображения (очень объемный вопрос - много текста)?

    @Miron11
    А как узнать, какие частоты подходят или нет. Методом проб и ошибок, или Вы думаете можно подсказать, что, допустим, если предположить, что автору нужно отсеять текст, а остальные участки ( пиксели ) выбелить, то можно подменить частоты "среднего" диапазона - серые, на белые? И наверное интересный вопрос, как преобразование видит частоты, в RGB белый это смесь всех - FFFFFFFF, а черный, это ноль. Есть ли шкала ( утилита или что - то вроде паттерны для телевизионной настройки ) где указаны мера - цвет?
    Написано
  • Не подскажете, СУБД с русским языком выборки данных?

    @Miron11 Автор вопроса
    sim3x:

    ИЗВЛЕЧь
    ...
    , ...
    , ...
    ИЗ
    <объект>

    А дальше, как описать отношение и после того как перебрал следующие слова

    СЛИЯНИЕ, ЕДИНЕНИЕ(?), СВОД(?), УЗЕЛ(?), РОДСТВО(?), СВЕДЕНИЕ(? [от "сводить"]), СЛОЖИТЬ(?), ПРИБАВИТЬ(?)

    решил поинтересоваться.
  • Дерево категорий Laravel. Как уменьшить количество запросов в БД?

    @Miron11
    Дальнейшее усиление удобно делать с процедурами. Я не знаю как диалект языка на котором пишется страничка, строит запросы в MySQL. Если думать о запросах в СУБД, то можно усиливать следующими шагами

    - переведение запроса из формата "select * from product_categories where ..." в формат "call get_subcategories 5" ускорит обмен данными. По одному давнему опыту во много раз. Но не уверен что это всегда так здорово.
    - создание процедуры с рекурсивным циклом не сложное дело.