• Как правильно организовать модерацию записей от пользователей?

    feycot
    @feycot
    В этом случае вам поможет внедрение конечного автомата.
    Вместо использования флага и введения новой таблицы вы можете использовать ту же самую таблицу с колонкой "состояния". К пример draft, on_moderation, published, archived и так далее.
    Этот способ поможет в будущем, когда будет несколько состояний. Плюс конечные автоматы помогают описать некий процесс (например у вас - публикацию и модерацию контента).
    Если будет рабоатть все на флагах, то потом придется учитывать множества состояний. Типа is_moderation, is_deleted, is_achived и так далее.

    А что касается, если пользователь редактирует версию уже опубликованной статьи, то здесь зависит от того, как у вас внутри приложения все устроено. Скорее всего нужно вводить таблицу с "версией" статьи, где будет сохраняться контент. Т.е. когда юзер что-то редактирует, создается новая версия, а в articles содержится id это версии article_version_id например.
    Ответ написан
  • Знания Junior php разработчика?

    feycot
    @feycot
    Чтобы проверить/закрепить знания на практике можно участвовать в реальных проектах, опенсорсе, делать тестовые задания. Например тестовые можно взять отсюда https://github.com/Hexlet/ru-test-assignments

    Что касается знаний - есть так называемая "база", или общие фундаментальные знания
    * Операционные системы и сети. Хотя бы общие вещи. Как работать с линуксом, выполнения команд, чтение логов, несложное администрирование. Понимать, что происходит, Когда вводишь google.ru в адресную строку
    * Тестирование. Это в принципе легко делается, тем более в ларавеле. Как тестировать
    * Теория множеств, базы данных. Умение писать простые запросы
    * Гит, мастхев
    * Управление конфигурацией, типа Ansible, мб даже Terraform (хотя бы иметь представление, что это). Знать, что такое деплоить.
    * Собственно уметь писать код, хотя бы по ТЗ, хотя бы круды. Ну и тестировать его
    * Структуры данных, хотя бы в общих чертах (но это идет в алгоритмах)
    Можете провериться еще по чек-лист вот этому https://guides.hexlet.io/ru/check-list-of-engineer...
    Если что-то не знаете - рекомендую изучать.
    Базово верстку, тк она всегда пригодится.
    Ну и этих знаний достаточно, чтобы быть уверенным джуном.
    Ответ написан
    Комментировать
  • Переход в it из другой сферы?

    feycot
    @feycot
    На самом деле возраст для смены профессии не проблема, особенно в IT. Да, бывают предрассудки, но примеров, когда люди меняют профессию - множество. И конечно нужно понимать, что на каждую успешную историю есть 10-13 человек, у которых не получилось по теим или иным причинам.

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

    feycot
    @feycot
    Сложность входа в профессию зависит от множества факторов - от того, где вы живете, сколько времени готовы выделять, сколько сил прикладывать. Насколько я помню (я проживаю в РФ) в Украине очень развита IT сфера, которая во многом работает на западные компании (аутсорс).
    Люди без образования (имею ввиду без ВУЗов) действительно устраиваются и мигрируют заграницу. Только можно столкнуться с теми трудностями, что в некоторых странах требуют все-таки профильную корочку и какой-никакой профильный опыт.
    Так что про сложность тяжело сказать. Пробуйте, учитесь, набирайтесь опыта.
    По поводу The Odin Project. Там действительно фулстек, языки Ruby (Ruby on Rails) и Javascript. RoR действительно широко используется на Западе, в США. Но если вы изучите один язык программирования, то не будет особых проблем пересесть другой.
    Также нужно понимать, что процесс далеко не мгновенный, он может длиться несколько нет прежде чем вам получится найти более-менее работу и мигрировать. Также знайте, что обучение не ограничивается одним лишь курсом, поэтому потребуется изучение профильной литературы (которой немало).
    Ответ написан
    Комментировать
  • Как использовать Eloquent отдельно от laravel?

    feycot
    @feycot
    Посмотрите на репозиторий https://github.com/hexlet-components/php-eloquent-blog чтобы разобраться, Как работать с моделями отдельно от Laravel. В принципе все это должно работать из коробки.

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

    feycot
    @feycot
    Если у вас сервис только-только развивается, то стоит сфокусироваться на тех вещах, которые помогут разрабатывать уже сейчас. Соответственно спросите себя, а знаете ли вы:

    - Автоматизированное тестирование. Написание тестов, чтобы основной функционал был покрыт, тесты помогали в разработке и помогали в случае регресса.
    На эту тему есть неплохая статья и доклад

    - Автоматное программирование. Конечные автоматы облегчают разработку в разы, когда у нас появляется состояние. Даже в простом блоге - пост удален, в черновике, опубликован. По автоматам есть книга "Автоматное программирование Анатолий Абрамович Шалыто"

    - Конфигурация и инфраструктура. CI/CD. Автоматизация. Деплой приложения - это многоэтапный процесс. Миграции, конфигурация, сборка проекта. Тут стоит почитать Приложение 12 факторов 12factor.net В целом, если используется современный фреймворк (например Ларавел), то будет полегче с этим работать. Следует помнить, что окружения должны быть разделены - продакшен, тестовая среда (стейдж), среда разработки. Приложение должно без проблем раскатываться и запускаться, желательно "в один клик".
    С этой темой связаны технологии Docker, K8s, Ansible. По поводу последнего - с ним можно автоматизировать настройку локального окружения, деплой. Также следует поизучать Github Actions, Gitlab CI/CD.
    Если приложение еще небольшое, то его можно с легкостью деплоить на Heroku.
    В целом можно пройтись по этому чек-листу и посмотреть как у вас сейчас и как должно быть.
    По оптимизации, нагрузкам соответственно optimization.guide

    - Операционные системы. Сети. Большая область про которую забывают разработчики. Понимание ОС позволяет лучше понимать как работают веб-сервера, приложения.
    На эту тему есть книги
    Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик)
    Руководство администратора Linux (Эви Немет, Гарт Снайдер, Трент Р. Хейн)

    - Фреймворки. Изучать от и до их не стоит, необходимо понимать как они устроены, чтобы не было магии. Но если используется что-то самописное - это не очень хорошо, особенно когда не хватает квалификации. Стоит присмотреться к большим фреймворкам типа Laravel/Symfony

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

    feycot
    @feycot
    Проверьте, что имя файла совпадает с именем класса.
    По ошибке имя контроллера написано с маленькой буквы.
    Ответ написан
    Комментировать
  • Практика для php новичка?

    feycot
    @feycot
    Если хочется практиковать язык в плане алгоритмов, подходов и так далее, то можно выполнять ежедневные ката.
    Ката - это пришло из боевых искусств, повторяющиеся простые практики. В данном случае это решение задачек разной степени сложности. Задачи должны быть небольшими, чтобы можно было решить хотя бы 1 задачу. Ну и должны увеличиваться по сложности, чтобы можно было видеть рост навыка.
    Где можно прокачаться
    codebattle.hexlet.io - Кодбаттл. Два игрока на скорость решают общую задачу на разных языках, можно на одном. Можно играть против ботов. Есть разные уровни сложности
    https://www.codingame.com/ - CodinGame похоже на то, что выше, только вы не видите решение друг друга
    https://www.codewars.com/ - CodeWars тут уже решение нужно делать самому, т.е. вы соревнуетесь с другими пользователями из рейтинг
    https://leetcode.com/ - множество задачек разного уровня. Похоже на то, что выше.

    Если уже уверенно пишете код, знаете стандартные функции и хочется сделать какую-то задачу по типу тестового, то можно взять задания здесь https://github.com/Hexlet/ru-test-assignments в репозитории есть тестовые задания от разных компаний.

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

    Все веб-фреймворки плюс-минус одинаковы, поэтому изучив один, можно изучить другие.
    Подробнее про фреймворки можно почитать здесь https://ru.hexlet.io/blog/posts/kakoy-php-freymvor...

    А чтобы понять, готов или нет для работы - надо просто ходить по собеседованиям. У разных компаний разные требования. Где-то берут только опытных, где-то совмем зеленых в плане опыта.
    Ответ написан
    3 комментария
  • Как сделать проверку на спам (Повторяющиеся текст)?

    feycot
    @feycot
    Если у вас уже есть заявки в базе данных, вы можете искать по тексту заявки уже существующие плюс к этому добавить условие, что этих заявок нет за определенный промежуток времени (например неделя). Для этого в базе должна сохраняться дата создания заявки.

    Это самый очевидный вариант.
    Ответ написан
    Комментировать
  • Как дочерние элементы массива смержить к родительским?

    feycot
    @feycot
    Необходимо использовать функцию array_map
    array_map(function ($user) {
            $organization = $user['organization'];
            $region = $organization['region'];
    
            return [
                "name"             => $user['name'],
                "surname"          => $user['surname'],
                "organizationName" => $organization['name'],
                "regionName"       => $region['name'],
                "regionId"         => $region['id'],
            ];
        }, $users)


    Array
    (
        [0] => Array
            (
                [name] => Илья
                [surname] => Блинов
                [organizationName] => фейсбук
                [regionName] => Рязанская область
                [regionId] => 62
            )
    
    )
    Ответ написан
    Комментировать
  • Как не учитывать компилируемый код в системе GIT, но при этом выкатывать его на прод?

    feycot
    @feycot
    Стадию компиляции можно вынести в CI/CD.
    Например если используется Gitlab, то настроить пайплайн, при котором после пуша идет сборка приложения и уже скомпилированные файлы отправляются на продакшен.
    Ответ написан
    Комментировать
  • Как редактировать репозиторий в vscode c gitlab?

    feycot
    @feycot
    Необходимо склонировать репозиторий себе на компьютер выбрав подходящую ссылку
    5faae611b1155474888884.png
    Склонированный проект необходимо открыть в редакторе и работать с ним, переключать ветки, делать коммиты.
    Перед этим нужно разобраться, как работать непосредственно с гитом, например по этому гайду
    https://githowto.com/ru
    Ответ написан
    5 комментариев
  • Маршрутизация Route [login] not defined?

    feycot
    @feycot
    Кажется, что фреймворк ищет именованный маршрут.
    в строке
    Route::post('login', 'Auth\LoginController@login');

    Попробуйте дать имя роуту.
    Route::post('login', 'Auth\LoginController@login')-name('login');
    Ответ написан
  • Как указать папку для изображений из sass в Laravel mix?

    feycot
    @feycot
    mix.js('resources/js/app.js', 'public/js')
        .sass('resources/sass/app.scss', 'public/css')
        .copyDirectory('resources/assets/img', 'public/img');

    Вот таким образом mix работает в https://github.com/fey/hexlet-sicp/blob/master/web... этом проекте
    Т.е. если вам нужно скопировать разные файлы из разных директорий, то можете попробовать этот способ.
    Ответ написан
  • Какой материал для изучения БД выбрать?

    feycot
    @feycot
    На степике есть бесплатные курсы по базам данных
    Ответ написан
    Комментировать
  • Верстка и вывод из БД циклом php?

    feycot
    @feycot
    При выводе данных из БД обычно используется пагинация для постраничного вывода.
    Чтобы данные не ломали верстку, то либо верстку делают такую, чтобы она не ломалась, Либо ограничивают данные. Например если у нас таблица со статьями, то выводят 200 символов в тексте статьи, остальное можно увидеть при детальном просмотре.
    Ответ написан
    Комментировать
  • Как отследить изменение поля через скрипт?

    feycot
    @feycot
    Если верить StackOverFlow, то необходимо вызвать событие вручную
    let element = document.getElementById(id);
    element.dispatchEvent(new Event("change"));
    Ответ написан
    Комментировать
  • TypeError: Cannot read property 'joinedAt' of undefined — в чём ошибка?

    feycot
    @feycot
    Ошибка говорит о том, что где-то выше undefined.
    Тк свойство joinedAt есть только у rUser.member, то стоит посмотреть в эту сторону, почему внутри rUser member = undefined
    Ответ написан
    1 комментарий
  • Бесплатные курсы по PHP?

    feycot
    @feycot
    https://vectree.ru/main - тут скорее сборник статей-ссылок, но как роадмап может зайти. Есть небольшое коммьюнити, которое может помочь.
    https://github.com/codedokode/pasta - здесь несколько полезных статей и заданий, как раз на прокачку.
    Ответ написан
  • Как нужно искать open source проекты для дальнейшего участия в них?

    feycot
    @feycot
    Чтобы найти опенсорс проект ничего кроме поиска и не нужно. Есть списки опенсорс проектов, которым требуются контрибьюторы. Как правило в каждом октябре, во время Хактоберфеста, публикуются списки и ишшусы, по которым нужны люди.
    Требования чаще всего невысокие - главное желание разобраться. Даже если проект переусложнен в настройке и получится упросить его развертывание - это будет круто. Да даже фикс опечаток - тоже полезно.
    В общем можно искать любой понравившийся проект и пробовать внести в него полезный вклад. Тут еще будет зависимость от того, как владельцы проекта относятся к контрибьютерам.
    у того же Хекслета есть несколько проектов на разных языках, можно без проблем поучаствовать в разработке https://guides.hexlet.io/how-to-be-a-helpful-for-t...
    Ответ написан
    Комментировать