Задать вопрос
  • Как реализовать разные карточки товаров(деталка), для разных разделов каталога?

    @PetrPo
    Корректен ли такой вариант?

    Нет

    Самый простой вариант - для разделов добавить пользовательское свойство тпа "Список", в котром в качестве XML_ID указать название шаблона и перед выводом детальной страницы получать значения этого свойства и подставлять в вызов компонента
    Ответ написан
    2 комментария
  • PHP устарел? Стоит ли переходить на JS фреймворки?

    @Kostik_1993
    Web Developer
    Многие вопросы на тостере кажутся дурацкими. Но этот самый смешной. Один другому сказал и тот куда-то побежал спрашивать у других.
    Но никто не отменял гугл, могли и нагуглить. Headless CMS это обыкновенная CMS, но в отличии от например Wordpress обязательной частью которого является сайт, Headless CMS не имеет никакой прямой связи с сайтом, а реализует API к которой могут подключаться фронтенды и микросевриси написанные на PHP или на Node.js или же вовсе это будут mobile приложения

    P.S. Wordpress тоже может быть Headless CMS если заюзать плагины. При этом работу на PHP никто не отменял
    Ответ написан
    3 комментария
  • PHP устарел? Стоит ли переходить на JS фреймворки?

    Могу сказать, что огромная часть бэка сделанна именно на стареньком php. Думаю из-за того, что большая часть написана именно на php, то логично, что нужны люди которые должны поддерживать уже существующий код. Поэтому я считаю, что php ещё не устарел.
    Источник с которого брал инфу: *тык*
    Ответ написан
    2 комментария
  • Как правильно совместить DELETE и LEFT JOIN?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Синтаксис Firebird в принципе не предусматривает многотабличного удаления. Никаких JOIN - это не MySQL. Нужно фильтровать записи - добро пожаловать в мир коррелированных подзапросов и [NOT] EXISTS.

    Руководство по языку SQL для Firebird 2.5, страница 246.
    Ответ написан
    Комментировать
  • Как ораганизовать репозиторий для команды?

    sloboda
    @sloboda
    Java QA Automation
    Всё же лучше отдельные репозитории.
    Или несколько отдельных репозиториев, сгруппированных по функционалу приложения, в которых будут подпапки.
    У вас же каждый сотрудник работает в своем форке.
    При внимательной организации code review и мержа только по результатам code review большой свалки в проектах и подпроектах быть не должно.
    Ответ написан
    Комментировать
  • Как удалить дубликаты IP-адресов с разными портами?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    1. Отчекрыжьте всё, что после двоеточия, например, как-нибудь так: cut -f1 -d":"
    2. Натравите на sort -u

    Добро пожаловать в линукс (либо поменяйте тэги).
    Ответ написан
    1 комментарий
  • Какой стек технологий лучше выбрать для разработки чата?

    @rPman
    зачем все так усложнять

    рабочий чат на websocket лежит в примерах наверное любой документации к websocket, первый же нагугленный проект (бакэнд на go но там код на 20 строк все понятно) на столько простой что даже непонятно что непонятно

    а еще есть webrtc, эта технология дает еще один механизм коммуникации между пользователями вообще минуя сервер, добавь сюда шифрование и failover при неработающем webrtc и получишь готовый проект
    Ответ написан
    Комментировать
  • Как при помощи group_concat получить данные из связанной таблицы?

    iMedved2009
    @iMedved2009
    Не люблю людей
    Post::where('status', 1)
        ->join('post_tag', 'posts.id', '=', 'post_tag.post_id')
        ->join('tags', 'tags.id', '=', 'post_tag.tag_id')
        ->select('posts.*', DB::raw('group_concat(tags.name) as tags_name'))
        ->groupBy('posts.id', 'posts.name', 'posts.content')->get();


    как вариант
    Post::where('status', 1)
        ->select('posts.*', DB::raw('select group_concat(tags.name) as tags_name from post_tag join tags on tags.id=post_tag.tag_id where post_tag.post_id = posts.id'))->get();
    Ответ написан
    1 комментарий
  • Как вывести данные mysql для конкретного пользователя PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Читаем документацию:
    The enctype attribute can be used only if method="post".

    2) Файлы не передаются методом get
    3) Делаем выводы из 1 и 2.
    4) if(isset($_REQUEST['submit'])) - плохая проверка, начиная с того что я могу отправить форму не нажимая кнопку субмит, и заканчивая тем что такой проверкой вы не знаете какой запрос придет с клиента и что в нем будет (то есть вообще ничего кроме этой сомнительной переменной не проверяете).
    5) В данной структуре данных вы никак не можете привязать посты к пользователям. Либо нужно добавить поле, определяющее владельца поста, либо делать пивот таблицу, где записывать соответствия пар юзер-пост.
    6) Кроме того - у вас в коде отсутствует какое-либо понятие идентификации пользователей, то есть вы не знаете какой пользователь добавляет или запрашивает данные, что делает бесполезным само понятие принадлежности.
    Ответ написан
    Комментировать
  • Где лучше хранить БД? В докере или нет?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Дополню немного ответ Dr. Bacon, поскольку мне кажется он не так понял ваш вопрос, а вы, возможно, не так поняли суть проблемы.
    Под БД, например постгрес, обычно понимают две разные вещи:
    1) сами данные в файловой системе,
    2) сервер базы данных, который реализует сетевой интерфейс для работы с БД и правильным образом кладёт и читает данные в файловой системе.

    Так вот, сервер можно развернуть ка кна хостовой машине (как вы сказали "локально"), так и в докер-контейнере.
    Файлы БД можно разместить как в файловой системе контейнера, так и в локальной файловой системе, примонтированной внутрь контейнера.
    И тут полно нюансов.
    Давайте начнём с того, как правильно.
    Правиьным будет взять стандартный докер-образ сервера БД, сконфигурировать его через компоуз-файл, а размещение файлов БД примонтировать в виде отдельного volume.

    Что имел в виду Dr. Bacon. Он имел в виду, что если не монтировать файлы БД в volume, то они будут лежать внутри контейнера, а значит при его перезапуске все данные будут стерты, поскольку состояние файловой системы контейнера не принято хранить. Это одно из преимузеств докера - сделал образ унаследовав его от других образов, а потом при запуске контейнера он какждый раз как новенький.
    Ответ написан
    Комментировать
  • Как отсортировать массив?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT name, `text`
    FROM product
    JOIN product_attribute USING (product_id)
    JOIN attribute_description USING (attribute_id)
    -- JOIN attribute USING (attribute_id)   -- таблица в запросе не нужна
    GROUP BY 1, 2
    HAVING COUNT(*) > 1;

    fiddle

    Если нужна именно сортировка как в эталоне - ну добавить ORDER BY MAX(attribute_id)

    Таблица attribute потребуется лишь в случае, если данные из неё нужны (например, в запрос добавится отбор по значению attribute_group_id).

    Если надо сравнивать атрибуты у более чем 2 товаров, то соотв. образом откорректировать условие пост-отбора. Например, для 3 товаров и атрибутов, имеющихся у всех трёх, это будет HAVING COUNT(*) = 3
    Ответ написан
  • Как правильно подставить переменные в запрос mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Правильно подставлять переменные через подготовленные запросы.
    https://www.php.net/manual/en/mysqli.quickstart.pr...
    Ну и за синтаксисом следить. А у вас незакрытая (ненужная) скобка, лишняя запятая.
    Ответ написан
    Комментировать
  • С чего начинается Frontend & Backend разработка?

    Jeer
    @Jeer
    уверенный пользователь
    Такое дело, зависит от команды и выстроенных процессов.

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

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

    Имея контракты, можно придумать и архитектуру данных, как все по таблицам распихать, и архитектуру фронта, где как что будет получаться и храниться
    Ответ написан
    3 комментария
  • Как получить ссылку на оригинал картинки, а не WebP?

    @U235U235
    Вопрос из серии: "Сайт отдает картинки в формате jpeg, как получить их в исходном формате .psd со слоями?" Очевидно что никак. Если только исходниками не поделится дизайнер сайта.
    Ответ написан
    Комментировать
  • Нужна ли математика Python,Java программисту?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Получить работу - возможно. Это зависит от того кто принимает на работу и как у вас подвешен язык.
    А вот быть полноценным программистом не понимая основ - это да, не получится.
    Так или иначе, но незнание математики не позволит эффективно решать задаи.
    Нужно, к примеру, понимать основы анализа, чтобы ориентироваться в темах областей оределения, областей значения функций. Нужно понимать чем отличаются рациональные от иррациональных чисел, понимать что такое интегрированиеи дифференцирование - на этом напрямую завязаны практически все явления реального мира (скорость, ускорение, движение...)
    Нужно понимать пределы, комплексные числа, векторную алгебру. Нужно понимать как умножаются матрицы...

    Постоянно в практике сталкиваюсь с задачами, где понимание таких вещей просто обязательно.
    К примеру простая задача - определить с какой стороны от маршрута на карте дана точка, слева или справа. Без векторной арифметики вы просто потеряете кучу времени! Постоянно нужно что-то нормализовывать. усреднять, считать мелианы и скользящие средние, аггрегировать и интеполировать. ричем, к примеру, в геймдеве аще встречадются одн направления, в финтехе немного дургие, но встречается так или иначе всё.

    Разбирайтесь в математике. Быть программистом - это учиться всю жизнь. Нужно воспитать в себе интерес к осваиванию новых парадигм и принципов.
    Ответ написан
    Комментировать
  • Почему функция sort не сортирует, а выдает bool?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Наверное потому что она так устроена? И это поведение описано в документации?
    Ответ написан
    3 комментария
  • Можно ли в PHP передать управление в другой класс?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    class ResponseObject
    {
        public static function parse(object $data): ResponseObject1|ResponseObject2|ResponseObject3|ResponseObject4
        {
            switch ($data->type) {
                case 'type1':
                    return new ResponseObject1($data);
                case 'type2':
                    return new ResponseObject2($data);
                case 'type3':
                    return new ResponseObject3($data);
                case 'type4':
                    return new ResponseObject4($data); 
            }
        }
    }
    Ответ написан
    3 комментария
  • Как в mysql ускорить запрос с GROUP BY?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT *
      FROM `posts`
      WHERE `id` IN (
        SELECT `id_post`
          FROM `tags_rel`
          WHERE `id_tag` IN (1,2,3)
        ) AND `status` = 1
      LIMIT 0, 50
    Ответ написан
  • Возможно ли скачать не только лендинг а сразу и бекенд сайта?

    vabka
    @vabka Куратор тега Веб-разработка
    Попробую сказать языком аналогий.
    Представь, что ты подписался на какой-то журнал (бумажный).

    Тогда "скачать фронт" - это всё равно что сделать скан журнала, который тебе пришёл по почте.
    А вот "скачать бэк" - это всё равно что получить копию издательства и полиграфии, вместе с людьми которые там работают.

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

    Но в общем случае это невозможно.
    Ответ написан
    Комментировать