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

    Griboks
    @Griboks
    Если вы не собираетесь выходить за рамки crud, то вот вам классический пример.

    Вы, должно быть, преобразуете данные между моделями (БД) и схемами (API). Эти данные не всегда одиночны (1 модель != 1 схема) и не всегда в одной БД, могут иметь сложные зацикленные вложенные структуры. Поэтому вам придётся не просто конвертировать полученную модель в json, но ещё и как-то её преобразовать. Вот как раз для нетривиального преобразования и нужны АСД, иначе это будет один большой цикл с множеством if и копированием кода.
    Вы скажете, что можно просто насоздавать кучу схем/моделей/хранимых процедур для всех возможных случаев. Но это долго, а написать эффективные АСД - быстрее, т.е. более оптимальный подход.

    Но учить всякие паттерны, разумеется, не требуется - только понять саму суть АСД.
    Ответ написан
    Комментировать
  • Как использовать структуры данных на практике?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Мысль совершенно правильная.

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

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

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Программисты, будучи студентами на 1-2 курсе изучают алгоритмы и структуры данных (АСД) чтобы
    писать более эффективные программы. При этом задача использования DBMS им еще не ставиться.
    На этом этапе они учатся оптимизировать и понимать разницу между o(1), o(n^2), o(lon(n)) и т.п.
    алгоритмической сложностью. Сложность определяет, как будет работать выбранный алгоритм
    при очень резком (шквальном) росте исходных данных. И если ты это не учил, то ты сто процентов
    напишешь фигню и твой алгоритм никогда не завершиться, какой-бы мощностьи процессор у тебя
    ни стоял. И вот чтобы дать анализ такой ситуации, как раз и нужны знания АСД. А работа на пределе
    мощностей сегодня везде. Игры. Рендеринг 3д. Майнинг. Обучение языковых моделей.

    Работая с MySQL ты этого не видишь т.к. часть алгоритмов скрыта от тебя под фасадом SQL API.
    Но тебе и недоступны вышеперечисленные задачи. Их стек - шире чем тот что ты используешь.
    И если ты собираешся всю жизнь работать на PHP/MySQL то скорее всего АСД тебе действительно не
    нужны.
    Ответ написан
    9 комментариев
  • Как собирать данные в очередях и отправлять ответ?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    События и броадкастинг.
    Ответ написан
    Комментировать
  • Как трансформировать объект сразу во всех слоях?

    Kiriniy
    @Kiriniy
    Графический и веб-дизайнер
    Если я правильно понял вопрос, либо создать новую группу (иконка папочки в слоях) и поместить все слои в неё, после чего применять трансформацию к этой группе. Либо создать из этих слоёв новый смарт-объект. Так можно делать трансформации группы без деструктивных действий по отношению к отдельным слоям.
    Ответ написан
    4 комментария
  • Как получить одним запросом товар, его категории и фильтры?

    @402d
    начинал с бейсика на УКНЦ в 1988
    group_concat есть такая функция
    GROUP_CONCAT(DISTINCT c.title ORDER BY c.title ASC SEPARATOR ' ') as category_title
    Ответ написан
    Комментировать
  • Как получить одним запросом товар, его категории и фильтры?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    SELECT p.*, category_titles, filter_titles
    FROM products as p
    LEFT JOIN (
      	SELECT product_id, json_arrayagg(c.title) category_titles from  product_category as pc
    	JOIN categories as c ON pc.category_id=c.id
      	GROUP BY product_id
    ) pc ON  p.id=pc.product_id
    JOIN (
      	SELECT product_id, json_arrayagg(f.title) filter_titles 
      	FROM product_filter as pf
    	JOIN filters as f ON pf.filter_id=f.id
      	GROUP BY product_id
    ) pf ON p.id=pf.product_id
    WHERE p.id='2'


    SQL online editor
    Ответ написан
    3 комментария
  • Как выбрать товар из таблицы многие ко многим?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    SELECT 
      p.* 
    FROM 
      products as p 
    WHERE 
      EXISTS (
        SELECT 1 FROM product_filter pf WHERE pf.filter_id = 1 AND pf.product_id = p.id
      ) 
      AND EXISTS (
    	SELECT 1 FROM product_filter pf WHERE pf.filter_id = 2 AND pf.product_id = p.id
      );


    online sql editor
    Ответ написан
    Комментировать
  • Почему долго загружается страница при подключении к базе данных?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Heinemann,
    Хорошо, но почему хрень?
    Не надо закрывать соединение, драйвер сам сбросит коннект при завершении скрипта, а закрытие вручную во первых лишняя операция, во вторых вполне возможно что после закрытия соединения код будет требовать какие-то данные из бд, понятное дело, безуспешно.

    Может, есть какие-нибудь методы или способы, которые помогли бы найти проблему?
    Для начала - попробовать на другой машине, например на самом дешевом хостинге. Вангую, что там будет все ок, и проблема в локальной машине.
    Что можно сделать:
    1) Сменить драйвер на PDO
    2) Переставить пхп и мускуль, вполне возможно что у тебя какой-нибудь кривоватый опенсервер со старыми версиями всего на свете, пробуй нормальную установку компонент из официальных источников.
    3) Тест железа, но это крайний случай, скорее всего проблема чисто софтовая.
    Ответ написан
    4 комментария
  • Как получить несколько записей из связанной таблице?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT *
      FROM users AS u
      LEFT JOIN user_role AS ur ON ur.user_id = u.id
      LEFT JOIN roles AS r ON r.id = ur.roles_id
      WHERE u.login = :login
    Ответ написан
    6 комментариев
  • Почему не подгружается session?

    @Akela_wolf
    Extreme Programmer
    Так вы вызываете session_start только при авторизации.

    Автостартующая же сессия ожидает куку со стандартным именем, поэтому и не работает после переименования оной.

    Вообще, если хочется таких развлечений - мне кажется правильнее изменить параметр session.name в php.ini, чем развлекаться с session_name, setcookie и т.п.
    Ответ написан
    3 комментария