• Переписать грамотнее и с помощью Laravel реально ли и каким лучше образом?


    какую лучше версию Laravel использовать?


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

    EpIvIaK,
    Я тут подумал, и если вы тренируетесь, то, можно не лезть сразу во фреймворк, а научиться базе.
    Советы.

    1. Однозначно держать всё в разных файлах. Фронтенд и бэкенд надо чётко разделять. Идеал PHP файла - это <?php в самом начале и больше нигде, даже не закрывать ?> в конце. Кстати, это поможет избежать некоторых багов. Т.е. мы фактически забываем о том, что PHP умеет сам быть шаблонизатором.
    Для фронтенда выделяем папочку public, там держим все файлы CSS, JS, картинки и т.д. В этой же папочке держим файл index.php, который является входом в приложение, и в котором будет буквально несколько строчек, которые будут вызывать основной код. А основной код PHP хранить в папке src. Использовать шаблонизатор twig и все шаблоны хранить в папке templates Кстати, пример организации папок и файлов можно посмотреть в том же Laravel или Symfony. Там не дураки это создавали.

    2. Научитесь в безопасность. Изучите все основные типы атак, которые используются для взлома бэкенда, и научитесь как с ними бороться. А именно, как предотвращать SQL-иньекции, XSS-инъекции, CSRF атаки. Как правильно организовать сессии, как защищать cookie, как использовать CSRF-токены и т.д. и т.п. Это очень важно, потому что это самая настоящая база, и это вам пригодится вообще всегда и в любом языке.

    3. Научитесь создавать правильные API, которые не возвращают всё подряд, и не используют только POST-запросы, а используют GET, POST, PUT, PATCH, DELETE http методы для каждой операции, которые соответсствуют назначению этой операции. Научитесь возвращать правильные HTTP статус-коды ответов и ошибок в зависимости от того, какая ошибка произошла, была ли запись создана либо просто возвращена имеющаяся.

    3. Везде прописывайте типы переменных, аргументов функций и возвращаемых функциями значений. Используйте в начале каждого PHP файла директиву declare(strict_types=1); Это очень поможет писать более безопасные программы, избавит вас от целого класса багов.

    <?php
    declare(strict_types=1);
    function speak(string $name): string 
    {
        return "Hello {$name}!";
    }
    speak(1); // Это выдаст ошибку "Uncaught TypeError". Нельзя передавать int, когда функция ждет string
    speak("World"); // Это правильно сработает "Hello World!"


    4. Изучите принципы SOLID, но не используйте их, как догму, а просто как подсказку. Принцип DRY также можно держать в голове, но не быть его фанатиком. Принцип KISS - должен вообще стать вашим девизом. Посмотрите в сторону "Clean Architecture" и "Domain Driven Design": они помогут вам организовать структуру кода.

    5. ПИШИТЕ ТЕСТЫ!!! Вам не нужно 100% покрытие тестами, но на самые важные функции и классы обязательно нужно писать тесты, и тогда вы не будете бояться вносить изменения в большую кодовую базу, потому что. если вы где-то напишете фигню, тесты упадут и покажут вам, где вы накосячили.

    6. Когда более-менее реализуете первые 5 пунктов, можете уже более глубоко изучить фреймворки. И вам тогда станет понятно, что у них там происходит, зачем они всё это ваще наворотили, и почему это хорошо.
    Написано
  • Переписать грамотнее и с помощью Laravel реально ли и каким лучше образом?

    EpIvIaK, Если я верно понял, то у вас каждая страничка - свой отдельный php-файл, в который включена вся разметка страницы? И веб-сервер прямо загружает эти отдельные файлы при переходе на страницы?
    Или у вас всё же одна точка входа в приложение - файл "index.php". ?
    Написано
  • Подойдет ли базовый MacBook Air M1 8/256 для web разработки?

    lovtin, Однозначно, хватит.
    Проблемы возникают только когда весь стек разработки на ноуте. Например, на Маке Docker - это виртуальная машина, и надо заранее по него кусок памяти выделять. И вот когда весь стек запускаешь, в браузере открываешь много вкладок и т.д, то начинается.... Я, например, часто открываю несколько проектов в том же Phpstorm, а жрёт он память страшно. Да и в браузере люблю много открытых вкладок держать. И очень не желаю играться в закрытие-открытие для сбережения памяти, мне и так головной боли хватает.

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

    Однако... Просто оставлю эту информацию здесь: Мак на процессоре M1 Pro - это вещь. Тут всё лучше, начиная от дисплея, который имеет гораздо больше яркость, имеет локальные зоны затемнения, т.е. превосходный HDR, звук ещё лучше, хотя на Air он тоже неплох, Magsafe, больше портов, HDMI, поддерживается больше внешних мониторов (на M1 Air только один). Больше базовой памяти и диска. Но брать M1 Pro нужно только при очень хорошей цене, потому что по "плохой" цене уже лучше взять что-то посвежее.
    Написано
  • Как сделать такую анимацию формы?

    TreeFall1, Нет ничего проще. Тут анимация описана как принцип, поэтому, просто меняете местами значения min-height для класса .collapsible-content, да и всё
    Написано
  • Подойдет ли базовый MacBook Air M1 8/256 для web разработки?

    VoidVolker, Я пробовал так работать, само собой, но я раб IDE от Jetbrains) и ничего не могу с этим поделать, а их инструмент для удаленной работы ещё в бете, и там некоторые вещи плохо работали, когда я в последний раз пробовал. Но это реальный выход из положения.
    Правда... Если человек хочет купить M1 Air, то финансовый вопрос имеет значение, а тут ещё и второй компьютер нужен. Но если этот второй компьютер уже есть, то это выход
    Написано
  • Подойдет ли базовый MacBook Air M1 8/256 для web разработки?

    VoidVolker, Кстати, да. Не подумал об удалённой разработке. Jetbrains тоже запустила инструмент для этого.
    Написано
  • Какой актуальный стек верстки 2024?

    Вадим, Ну забыл) Советую дописать это в своём ответе
    Написано
  • С чем может быть связана высокая нагрузка на сервер Postgres?

    А вы хорошо проанализировали эти мелкие запросы? Может быть, там везде COUNT(*) какой-то? ORM-ки очень любят такие запросы генерировать. Это очень хорошо укладывается в увеличение нагрузки со временем, когда количество данных растет.
    Написано
  • Как лучше сделать обновление данных строго по времени?

    luxurypluxury, Это не сторонний сервис. Это open-source проект, который устанавливается на свой сервер. Так же как Redis, Elastic, RabbitMQ и т.д.
    Написано
  • Крашнулась база, можно ли восстановить?

    На будущее: если у вас нет хорошего специалиста в штате, то самостоятельно тянуть Postgres очень не советую. Лучше всего взять managed решение от того же Яндекса, например. Там и бэкапы будут всегда, и обслуживанием с конфигурацией они сами занимаются, снимая это с ваших плеч
    Написано
  • Крашнулась база, можно ли восстановить?

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

    Zorgan333, А вы дайте для примера nginx конфиги для разных сервисов
    Написано
  • Почему может быть долгое ожидание ответа при запросе из Docker контейнера?

    1. Traefic так и не сделали поддержку для php-fpm? Жаль.
    2. Я верно предполагаю, что traefic у вас - это вход внутрь вашей сети, и всё остальное должно общаться между собой по внутренней сети? Если да, то для связки с php-fpm можно сделать только один nginx reverse-proxy, и в его конфиге описать подключение ко всем PHP контейнерам.
    3. Попробуйте на всякий случай явно объявить не только внешнюю сеть proxy, но и внутреннюю
    networks:
      proxy:
        external: true
        name: proxy
      internal:
        name: internal

    И все PHP сервисы привязать только к internal сети, traefic - только к внешней proxy, а nginx - и к proxy, и к internal. Либо traefic и к internal, и к proxy, а все остальные только к internal
    Написано
  • Как создать круглый прогресс бар с кругляшком на конце?

    Lara B, Прямо в гугле "circular progress bar with dot on the end". Правильно называется "radial progress bar".
    Кстати, гугл в последнее время испортился, поэтому я рекомендую искать и в других поисковиказ. duckduckgo.com, search.brave.com, и даже bing.com.

    Ещё можно прямо на stackoverflow и на reddit.com искать
    Написано
  • Как реализовать домашний ПК для веб сервера и pet проектов?

    Refguser, 150 американских рублей - вот и все траты. Возможно, придётся памяти побольше поставить, потому что память - это главный ресурс при использовании гипервизора.
    При этом масса плюсов:
    - Proxmox стабилен и сильного ухода не требует. Надо будет тупо по хорошему туториалу его установить.
    - Это же касается и виртуальных машин типа роутера, Home Assistant и т.д. Они отлично и стабильно работают.
    - Для брачных игр с Линуксом и т.д. можно просто завести отдельную виртуальную машину и полностью убивать и переустанавливать её с нуля при необходимости. При этом всё остальное будет работать.
    - Чтобы это было безопасно, весь сервер может находиться за файрволом и не быть видным снаружи, а доступ к отдельным ресурсам, которые всё же надо выставить наружу, организовать через Cloudflare tunnels.
    - А ещё можно установить свой VPN и из какой-то кафешки с ноутбука подключаться по нему к своей локальной сети, и видеть все её ресурсы. Это также обезопасит от кражи информации через публичный WiFi.

    Я вообще не вижу минусов, одни плюсы. Потому как только возня со своим собственным железными сервером может чему-то реально научить быстро и качественно.
    Написано