• Как в sail исправить SET GLOBAL sql_mode?

    iMedved2009
    @iMedved2009
    Не люблю людей
    Hfnas, я вам предлагаю не трогать SQL_MODE и забыть про его существовании. Вернуться к тому что вы хотите выбрать и написать запрос так что бы у вас работало с нормальным sql_mode.

    Обьясняю подробнее. Представим что у нас есть таблица table
    id, city_name, number, country_id
    1,Берлин, 100, 1;
    2,Дортмундт, 200, 1;
    3,Гамбург 300, 1;
    4,Москва, 100, 2;
    4,Самара, 200, 2;

    Теперь представим что мы выполняем запрос с группировкой.
    select sum(number), country_id from table group by country_id;

    здесь mysql все понимает. ему нужно вернуть сумму чисел и country_id - вуаля
    600,1
    300,2

    Теперь мы отправляем ему непонятный запрос.
    select sum(number), city_name, country_id from table group by country_id;

    И мускул начинает ругаться. Потому что если он группирует по country_id, то он не знает какой city_name вам вывести -- в каждой строке может быть несколько вариантов.

    600, (Берлин или Дортмундт или Гамбург), 1
    300, (Москва или Самара), 2

    какой конкретно вам надо вывести? ему неизвестно - он об этому вам говорит . Своим подходом а щас я sql_mode подправлю - вы банально пытаетесь заткнуть MySQL рот что бы он не задавал вам непонятных вопросов. Ну не вопрос - вы это сделаете. Кому от этого станет лучше? Вам? Вряд ли, если вам плевать что вам в city_name вернется - нахрен вы это поле выбираете. Если вам не плевать - тогда напишите запрос так, что бы вам возвращалось нужное
    Ответ написан
    Комментировать
  • Как запустить миддлвар один раз?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Запускаться он будет каждый раз.
    Но ему не нужно каждый раз выполнять определение страны.

    if (страна_не_определена) {
      Определяем страну
    }
    
    return $next($request);
    Ответ написан
  • Установка XAMPP или LAMP на Ubuntu 22.04?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    lamp

    apt update
    apt upgrade
    apt install apache2
    apt install php
    apt install mysql-server
    Ответ написан
  • Авторские права на машину. Так ли это?

    Есть подозрение что автоконцерны вас и вашу игру заметят только тогда, когда на выручку от продаж вы сможете купить собственный небольшой автозавод. До сей поры не забивайте себе голову.
    Ответ написан
    1 комментарий
  • Дают ли выигрыш ссылки на элементы массива и на поля объектов в PHP?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    С точки зрения памяти не даёт, потому что в РНР и так очень оптимальное управление памятью.
    В частности, при присвоении значений переменным применяется принцип copy-on-write. Объекты же и так всегда копируются по ссылке.

    С точки зрения "вычислять адрес промежуточного объекта" - я никогда не слышал о таких проблемах. Судя по всему, это явно не является узким местом для динамически интерпретируемого языка.
    В любом случае, учитывая copy-on-write, исходно это снова будет опять ссылка.

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

    scottparker
    @scottparker
    ты же понимаешь, что в данном случае пхп лишь генерирует html-разметку беря данные из бд? ты можешь сделать этот же слайдер просто на html? если да, то посмотри какую разметку сделал (без применения js)
    Ответ написан
    Комментировать
  • Правильная архитектура сканнера арбитражных ситуаций?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Теория без практики это отстой

    Изначально отказаться от стандартных СУБД (like MySQL), ибо в базу ежесекундно (а то и чащще!) нужно скидывать текущие значения коэффициентов с тысяч событий. (К примеру - в субботний вечер в час пик на разных конторах транслируется 200 событий на разные виды спорта. Нужно например парсить 30 контор. 200*30 = 6 000 трансляций. А контор, необходимых для сканирования - гораздо больше 20). Конечно же коэффициенты обновляются не каждую секунду. Но на динамичных видах спорта - очень часто. И нужно рассчитывать на то что в такую базу будет прилетать 6000 запросов обновления в секунду.

    Это вообще не нагрузка для сервера.

    Продолжение п.1: вместо стандартной БД использовать "In memory DB", т.е. что то, что висит в оперативке и обновляет данные максимально быстро. Сохранность данных здесь вообще не важна, ибо через 3 секунды актуальность данных уже пропадает.


    Да это разгрузит немного, но опять же нужно вовремя сбрасывать данные и греть кэш

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


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

    Что касается самого парсинга. Раньше каждую контору парсили по своему: какая то контора обновляла данные через сокеты, какие то - обычными http-запросами. И все существующие подобные сканеры посылали свои запросы через сокеты, или формировали свои http запросы. Но сегодня это все уже работает плохо, ибо конторы защищаются от парсинга разными методами. И самый простой и самый универсальный способ парсить данные - это парсинг браузером. Т.е. вы просто открываете в браузере страницу события и парсите ее. Но конечно же - за такую универсальность придется заплатить ресурсами. Каждая такая страница будет занимать мегабайты в оперативке. Предположим одна страница в среднем занимае 20 МБ оперативки. Тогда предполагаемые 6 000 открытых страниц займут 6 000 * 20 МБ = 120 000 МБ = 120 ГБ оперативки. Конечно, это нужно делать на


    Договаривайтесь, вместо что бы насиловать их сервера просто заплатите за api
    Ответ написан
    3 комментария
  • Как заставить базу обрезать данные которые не помещаются?

    iMedved2009
    @iMedved2009
    Не люблю людей
    Ну вообще это стоит делать на уровне приложения. Ибо только вы знаете можно ли забить на данные или нет.
    DB::table('MYTABLE')->insert([
                        'id' => $id,
                        'description' => mb_substr($description, 0, 255)
                    ]);

    Но нет препятствий патриотам - можно поиграться с SQL MODE если у вас MySQL и убрать все эти <сарказм>"ненужные ошибки"<сарказм> к чертям

    For STRICT_TRANS_TABLES, MySQL converts an invalid value to the closest valid value for the column and inserts the adjusted value. If a value is missing, MySQL inserts the implicit default value for the column data type. In either case, MySQL generates a warning rather than an error and continues processing the statement. Implicit defaults are described in Section 11.6, “Data Type Default Values”.


    P.S. Чего-то анекдот вспомнился

    Среди работников милиции провели тест на сообразительность. Суть теста: в металлической пластине вырезаны отверстия различной формы (квадрат, круг, треугольник и т. д. ), в них нужно вставить соответствующие металлические тела. По результатам теста работники милиции разделились на две группы:
    1. Тупые.
    2. Очень сильные.
    Ответ написан
    Комментировать
  • Пет проект, как хранить данные?

    @rPman
    Веб технологии на самом деле очень сложный способ учиться программированию для новичков, так как затрагивает сразу несколько очень сложных и сильно разных областей:
    * базы данных (для хранения данных я рекомендую sql базы данных, и для начала sqlite, не потребуется настраивать и устанавливать сервер, так как хранит все в файле)
    * бакэнд (миллион способов, самый популярный php, можно python, так как зная его будет проще в другие области зайти, не рекомендую java или go для начинающих)
    * фронтэнд (без или javascript)
    * верстка и дизайн (html+css)

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

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    $users – это коллекция, а не один пользователь.

    //Текущий
    
    dump(Auth::user()->roles);
    
    //Любой другой
    
    dump(User::find(1)->roles);
    
    // в вашем случае
    $users = User::with('roles')->get();
    foreach ($users as $user) {
      dump($user->roles);
    }


    UPD
    При правильном именовании таблиц и полей, три параметра лишние
    //return $this->belongsToMany(User::class, 'role_user', 'role_id', 'user_id');
    return $this->belongsToMany(User::class);

    Лучше придерживаться этого соглашения, чтобы вся магия работала.
    Ответ написан
    4 комментария
  • Как спроектировать многоролевое api на laravel 9?

    vfreelancer
    @vfreelancer
    php
    возьмите https://spatie.be/docs/laravel-permission/v5/intro... и изучите))
    Ответ написан
    Комментировать
  • Как спроектировать многоролевое api на laravel 9?

    pLavrenov
    @pLavrenov
    Разработка сайтов
    0) Оставить одну модель Users
    1) Не трогать
    2) Не трогать
    3) Нет

    Используй широко распространенные пакеты и не надо ничего придумывать. Например этот
    Добавляешь роли guest, user, admin а в пермиссион добавляешь разрешение owner если надо глобально или product_owner если например надо отдавать только свои продукты для роли. Далее добавляешь global scope с проверкой если есть owner то к запросу добавляешь чтобы только свои показывало.
    Ответ написан
    Комментировать
  • Как правильно реализовать прогрузку части данных в БД на Laravel?

    neuotq
    @neuotq
    Прокрастинация
    Это обычный постраничный вывод, только здесь сами страницы подгружаются динамически: по мере скролла происходит запрос к серверу.
    Советую внимательно прочитать https://laravel.com/docs/9.x/pagination , там есть вся нужная вам информация
    Ответ написан
    Комментировать
  • Как добавить Linux Ubuntu в Windows Boot Manager?

    @Drno
    Загрузчик не должен быть красивым. Он должен быть 200% надежным. Это все что от него требуется.
    Ответ написан
    3 комментария
  • Laravel как при трех неудачных попытках авторизоваться вывести капчу?

    Fragster
    @Fragster
    помогло? отметь решением!
    Можно приделать свой rate limiter https://laravel.com/docs/8.x/rate-limiting и в методах вывода страницы логина и проверки пароля его проверять. Если attempt возвращает false, то выводить (ну, и проверять) капчу
    Ответ написан
    Комментировать
  • Как задать пути к файлам на сервере?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Подобные проблемы решаются в принципе корректной настойкой сервера.
    Ответ написан
    Комментировать
  • Можно ли хранить данные не в БД, а в JSON файле?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого

    Можно ли хранить товары, посты и всю инфу где нет приватных данных в JSON, а не в БД?

    Можно

    Какие плюсы данного метода?

    Никаких

    Какие минусы данного метода?

    Вам придется реализовать все что уже сделано разработчиками баз данных самостоятельно
    Ответ написан
    Комментировать
  • Можно ли хранить данные не в БД, а в JSON файле?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Можно, но это будет очень глупо, особенно по причине "снизить нагрузку на БД". Не переживайте, пупок у СУБД не развяжется от ваших пяти посетителей в месяц, просматривающих семнадцать товаров. Он не развяжется даже при объёмах на пять порядков больших.
    Плюсов у такого подхода примерно ноль в обычных проектах, а минусы - всё остальное.
    Ответ написан
    5 комментариев
  • Как реализовать локализацию laravel с помощью middleware?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Здесь правда нет ответа: https://yandex.ru/search/?text=laravel+multilangua... ?

    Вот, например, точь-в-точь, что вам нужно https://lokalise.com/blog/laravel-localization-ste...

    Готовый пакет, только подключай https://github.com/mcamara/laravel-localization
    Ответ написан
    1 комментарий
  • Какую структуру проекта laravel выбрать?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    ИМХО велосипед
    для крупных проектов lavarel это чистый backend

    laravel это в первую очередь программирование по соглашениям - научитесь сначала делать правильно а потом уже будите ерундой страдать
    Ответ написан
    3 комментария