Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр 🔮✨Магия, романтика… и шерсть на одежде! Разгадывай загадки, находи подсказки — и знай: каждое твое решение влияет на ход игры!

Мой Любимый Кот

Новеллы, Головоломки, Коты

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
11
Аноним
Аноним

Ищу работу PHP-разработчиком(Laravel)⁠⁠

11 дней назад

Всем привет! В преддверии НГ не хочется оставаться без банки кабачковой икры. Собственно, ищу работу удалённо уже около 2 месяцев(HH, VK, спец. форумы), откликаюсь активно, но откликов много, а предложений мало. Решил попробовать здесь — вдруг кто-то из HR или тимлидов ищет сотрудника.

Катаюсь на горах просмотров.

Катаюсь на горах просмотров.

О себе вкратце:

  • Опыт: Почти 6 лет в PHP, из них 3+ года на Laravel.

  • Уровень: Миддл.

  • Позиция: Backend или Fullstack(с уклоном в бэк) PHP-разработчик.

**Формат: удалённая работа**

Чем приходилось заниматься на прошлых местах:

  • Архитектура: Превращать legacy-монолит в аккуратное API. Сделал 40+ эндпоинтов, внедрил JWT, Swagger и поднял покрытие тестами с 20% до 80%.

  • Производительность: Заменять прожорливый Elasticsearch на Meilisearch. Точность поиска выросла на 40%, а потребление памяти упало на 60%.

  • Надёжность: Устранять проблему, когда сервер падал(OOM) при выгрузке сотен тысяч товаров. Реализовал чанкование и курсоры — выгрузка ускорилась в 5 раз.

  • Бизнес-логика: Строить систему прав доступа, чтобы админы могли гибко настраивать всё через визуальный интерфейс.

  • Парсинг: Парсить данные с разных крупных маркетплейсов(синих, фиолетовых, авто).

С последнего места ушёл не сам — проект закрыли, инвесторы слились. Оказывается, и такое бывает.

Если в Вашей компании/отделе ищут такого сотрудника — черкните, пожалуйста, контакты для связи. Скину резюме, всё расскажу подробнее.

Docker, CI/CD, PostgreSQL/MySQL и сопутствующий инструментарий.

Всем добра и спасибо, что дочитали!

Показать полностью
[моё] Поиск работы PHP Laravel IT Программист Помощь Разработка Удаленная работа
2
nekromio
nekromio

Как я начал писать своего чат-менеджера⁠⁠

17 дней назад

Привет. Решил рассказать, как взялся писать собственного чат-менеджера.

Чат-менеджер - это система, которая управляет ботом в чатах ВК, Телеграма и других платформ. Обычно такие боты умеют банить, мутить, фильтровать спам, давать фишки вроде установки ника, просмотра погоды и т.д.

Я пользовался разными готовыми чат-менеджерами, но всё чаще видел, что функционала не хватает. Просьбы о доработках игнорировались. Плюс когда-то я занимался разработкой игровых серверов на Source-движке (Valve/Steam) и использовал плагины, которые связывали сервера с чатами ВК/ТГ. Работало это криво: возможностей мало, обновлений почти нет. Поэтому я решил сделать свой вариант - бесплатный.

В тот же день сел и начал писать. Выбрал Laravel на PHP - удобный и живой фреймворк.

Что уже работает:

• мультиплатформенный чат-бот с собственной архитектурой;

• интеграция с ВКонтакте и Telegram;

• интеграция с игровыми серверами Counter-Strike Source v34/v93 (OB) и CS:GO Legacy;

• модерирование: бан, мут, капча;

• развлекательные команды: ники, браки, мини-игры, погода и др.;

• серверные фишки: репорт-система, онлайн, статус сервера, обмен сообщениями.

На стороне игровых серверов работает плагин на SourcePawn под Sourcemod. Архитектура - ядро + модули, взаимодействующие через REST API.

Сейчас доделываю обновление, которое позволит любому пользователю привязать свой Steam ID и смотреть игровую статистику прямо из чата. Для этого сделал конвертер SteamID → Steam2 / Steam3 / Steam64 / AccountID / URL Profile.

Планы: завершить «базовую часть» - статистику чата, глобальные антиспам-детекторы, команду /спам. После этого - расширения под CS 1.6 (AMXX 1.9+) и под CS2 (C#). Опыт есть в обеих средах, а вот времени не очень.

Возможно позже посмотрю в сторону модулей для Discord и Max. Да, знаю - Max сейчас все хейтят, так что не кидайтесь сильно 🙂

Использовать можно бесплатно:

Документация - Ссылка

Тема на HLmod - Ссылка

Чат в Telegram - Ссылка

Чат в VK - Ссылка

Буду рад конструктивной критике - проект делаю в свободное время, между основной работой и подработками.

Показать полностью
[моё] Разработка Программирование Бот Bots Laravel Sp Программа Чат-бот Gamedev CS:GO CSS Текст
2
6
ProgTime
ProgTime
Лига программистов

Автоматизация Laravel: как сделать процесс разработки быстрой и надёжной⁠⁠

2 месяца назад
Автоматизация Laravel

Автоматизация Laravel

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

Материал рассчитан на тех, кто уже знаком с Laravel и хочет внедрить автоматизацию: проверки, стиль, статический анализ, готовый Docker-Compose и др. Ниже — конкретные инструменты, советы и примеры из реального проекта.

Все актуальные скрипты и примеры можно посмотреть в репозитории:
https://github.com/prog-time/git-hooks

Буду рад если вы поддержите репозиторий ⭐️ или напишете свои предложения в раздела Issues

Подготовка окружения через Docker Compose

Я предпочитаю начинать любой Laravel-проект с надёжной конфигурации Docker Compose.

Это даёт:

  • изолированное окружение разработки, тестирования, мониторинга;

  • независимые контейнеры, чтобы компоненты не мешали друг другу;

  • быстрое развёртывание и минимизацию «работы вручную».

Сервисы, которые я поднимаю:

  • php-fpm — чтобы исполнять PHP-код,

  • PostgreSQL — база данных,

  • Redis — кэш и очереди,

  • Grafana + Loki — для логов и мониторинга,

  • pgAdmin — интерфейс к БД,

  • queue - контейнер для очередей запускает php artisan queue:work.

Каждый сервис — в отдельном контейнере. Это даёт гибкость: можно обновлять один сервис без простоя остальных, менять версии без конфликта, и так далее.

Пример docker-compose.yml

Совет: Используйте готовые шаблоны docker-compose.yml, сразу поднимающие весь стек. Это экономит время при старте проекта.

Поддержка единого стиля кода с Laravel Pint

Чтобы соблюдать PSR-12 и единый стиль кода, я пользуюсь laravel/pint.

Пакет Pint для Laravel:

  • автоматически форматирует файлы PHP по заданным правилам,

  • позволяет не думать вручную о расстановке скобок, отступах и т.д.

Пример конфигурации pint.json

Запуск Pint перед коммитом гарантирует, что весь код будет в нужном стиле — не нужно править вручную после ревью.

Статический анализ: PHPStan + Larastan

Чтобы ловить ошибки на раннем этапе, я использую связку phpstan/phpstan + nunomaduro/larastan.

Они помогают:

  • находить ошибки типов,

  • выявлять недостающие проверки,

  • предупреждать баги до запуска приложения.

Пример phpstan.neon

Преимущества:

  • баги выявляются ещё до запуска кода;

  • повышается стабильность и надёжность проекта;

  • интеграция в процесс разработки минимально мешает.

Git Hooks и shell-скрипты для проверок

Для поддержания качества кода я использую Git Hooks, которые автоматически проверяют код перед коммитом и пушем. Все проверки вынесены в отдельные shell-скрипты, что позволяет гибко настраивать их для разных проектов.

Основные подходы:

1. Pre-commit: проверка изменённых файлов

  • Проверяются только новые или изменённые файлы, что ускоряет процесс;

  • Скрипты запускают Pint и PHPStan, автоматически исправляют стиль и выявляют ошибки;

  • Если проблем нет, коммит продолжается без задержек.

2. Постепенное исправление старых ошибок

  • Для старых проектов скрипты проверяют, что количество ошибок в файле уменьшилось хотя бы на 1–2 по сравнению с предыдущим коммитом;

  • Такой подход позволяет внедрять проверки без блокировки разработки.

3. Проверка наличия тестов для классов

4. Проверка работы Docker-сборки

Совет: интегрируйте эти скрипты с самого начала проекта, чтобы автоматизация стала частью привычного рабочего процесса.

Shell скрипт для работы с PHPStan

Пример работы PHPStan

Пример работы PHPStan

Скрипт для работы с PHPStan

Shell скрипт для работы с Pint

Пример работы с Pint

Пример работы с Pint

Скрипт для работы с Pint

Проверка наличия тестов для классов

Для достижения этой цели я использую скрипт, который проверяет наличие тестов для каждого PHP-класса, добавленного или изменённого в коммите.

Скрипт получает список изменённых и добавленных PHP-файлов и ищет соответствующий тестовый файл в директории tests.

Например, если в проекте есть класс app/Services/UserService.php, скрипт потребует создать файл теста tests/Unit/Services/UserServiceTest.php. Таким образом, любой новый или изменённый класс обязательно должен иметь соответствующий тест, что помогает поддерживать качество и надёжность кода.

Это скрипт, который постоянно дополняется, поэтому актуальную версию вы можете посмотреть здесь - https://github.com/prog-time/git-hooks

Пример проверки наличия тестов

Пример проверки наличия тестов

Проверка работы Docker сборки

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

Скрипт может автоматически останавливать текущие контейнеры, заново собирать их и запускать в фоне. После запуска выполняется проверка состояния через docker ps или docker compose ps, чтобы убедиться, что все контейнеры находятся в статусе healthy или up.

#!/bin/bash

echo "=== Остановка всех контейнеров ==="
docker-compose down

echo "=== Сборка контейнеров ==="
docker-compose build

echo "=== Запуск контейнеров в фоне ==="
docker-compose up -d

# Пауза для запуска сервисов
echo "=== Ждем 5 секунд для старта сервисов ==="
sleep 5

echo "=== Проверка состояния контейнеров ==="
# Получаем статус всех контейнеров
STATUS=$(docker-compose ps --services --filter "status=running")

if [ -z "$STATUS" ]; then
echo "Ошибка: ни один контейнер не запущен!"
exit 1
else
echo "Запущенные контейнеры:"
docker-compose ps
fi

# Дополнительно можно проверять HEALTHCHECK каждого контейнера
echo "=== Проверка состояния HEALTH ==="
docker ps --filter "health=unhealthy" --format "table {{.Names}}\t{{.Status}}"

echo "=== Скрипт завершен ==="

exit 0

Таким образом, перед деплоем или важными изменениями можно убедиться, что сборка полностью работоспособна и готова к развёртыванию.

Итоги и ключевые принципы

Автоматизация в Laravel — не «фича», а часть рабочего процесса.

Вот основные практики:

  • настроенное окружение через Docker Compose;

  • автоматические проверки стиля (Pint);

  • статический анализ (PHPStan + Larastan);

  • Git Hooks и скрипты — «сторожи качества» при коммите и пуше;

  • обязательное тестирование новых и изменённых классов.

Если внедрить всё это, можно:

  • сократить время на исправления;

  • поддерживать единообразный стиль кода;

  • повысить предсказуемость и стабильность приложения;

  • и главное — освободить команду для работы над функционалом, а не над «ремонтами кода».

Показать полностью 3
[моё] Программирование Laravel Программист Автоматизация PHP Тестирование Backend Длиннопост
23
11
ProgTime
ProgTime
Лига программистов

Обновления Telegram-бота для технической поддержки: API для внешних источников и новые возможности⁠⁠

4 месяца назад

Всем привет! Вы просили - я сделал! Я выпустил релиз №3 для бота технической поддержки на GitHub.

Прошло уже несколько месяцев с последнего обновления, и бот за это время получил вдвое больше звёзд на GitHub, что очень мотивирует продолжать развитие и поддержку проекта.

За последний месяц ко мне поступило несколько запросов расширить функционал бота за счёт подключения новых источников трафика. Изначально я думал добавить интеграции с популярными мессенджерами, такими как WhatsApp или Viber. Но в итоге решил, что в первую очередь стоит реализовать API, чтобы вы сами могли подключать любые свои источники.

В этой статье расскажу о новом API для подключения внешних источников — живых чатов, CRM и других систем, а также о других важных обновлениях и планах на будущее.

Предисловие

Для тех, кто не знаком с проектом: TG Support Bot — это бот на Laravel, который объединяет клиентов и менеджеров через Telegram и ВКонтакте, скрывая личные аккаунты и маршрутизируя общение через темы в Telegram-группе.

https://github.com/prog-time/tg-support-bot

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

Буду благодарен, если вы поддержите мой проект ⭐ на GitHub!

Руководство по установки

Я записал видео-инструкцию для установки данного решения на VPS с предустановленным Docker Compose.

Youtube - https://youtu.be/yNiNtFWOF2w

Rutube - https://rutube.ru/video/bdd0cc5ab4e13530fd7e0c2413931211/

ВК Видео - https://vkvideo.ru/video-141526561_456239132

Обратная связь

Для улучшения коммуникации с пользователями, я создал группу в Telegram, в которой вы можете задавать свои вопросы и писать предложения по расширению функционала.

https://t.me/pt_tg_support

Также сюда будут публиковаться новости по выпуску обновлений.

API — не альтернатива мессенджерам, а универсальный инструмент

Хочу сразу уточнить: разработка API не заменяет расширение списка поддерживаемых мессенджеров и соцсетей. Я продолжаю работать над интеграциями с ними и буду добавлять новые источники трафика.

Однако API необходим для подключения кастомных источников — живых чатов, CRM-систем, форм на сайте и других нестандартных каналов.

Что входит в первую версию API?

В API реализованы базовые маршруты для работы с сообщениями:

  • GET api/external/messages — получение списка сообщений с возможностью фильтрации

  • GET api/external/messages/{id_message} — получение конкретного сообщения по ID

  • POST api/external/messages — отправка нового сообщения

  • PUT api/external/messages — изменение существующего сообщения

  • DELETE api/external/messages — удаление сообщения

Для работы с API необходимо создать пользователя и сгенерировать для него API-токен. Рекомендую создавать отдельного пользователя под каждый источник.

Создать пользователя и токен можно командой:

php artisan app:generate-token {название_источника}

Также нужно прикрепить к источнику ресурс, куда будут поступать сообщения от обработчика.

Как это работает?

Процесс довольно простой:

  1. На вашей стороне генерируется уникальный ID пользователя — это может быть хэш ключ или любой уникальный идентификатор.

  2. При отправке сообщения в тело запроса передаются: ID пользователя, код источника, текст сообщения и, при необходимости, файлы.

  3. Система идентифицирует пользователя или создаёт новую запись, если это первое сообщение от него.

  4. Сообщение из вашего источника направляется в Telegram-группу поддержки.

Менеджеры в группе, как и раньше, могут отвечать любыми типами сообщений. Текст отправляется как текст, остальные — конвертируются в файлы. В названии темы указывается ID клиента и источник сообщения.

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

Подробная инструкция по работе с API уже есть в разделе wiki на GitHub.

Добавлены новые консольные команды

Я добавил несколько полезных консольных команд.

php artisan telegram:set-webhook

Artisan команда, которая производит подключения хука бота к вашему проекту. Ранее это делалось через отправку запроса в telegram или по специальной ссылке, а теперь это можно сделать запустив команду в консоле.

php artisan app:generate-token

Команда, которая генерирует токен для подключения к API вашего бота. Вы можете подключить неограниченное количество источников графика и для каждого создать уникальный токен.

Swagger для API

Для API был разработан генератор swagger документа.

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

Принцип прост! Вы описываете документацию по частям в resources/swagger. Важно граматно подходить к именованию файлов и компонентов.

После создания структуры, вы запускаете artisan команду и документация собирается в единый документ.

php artisan swagger:generate

На выходе вы получаете 2 версии документации

  1. В формате json, которую можно использовать для нейросетей или программ

  2. В формате Swagger-ui для просмотра в браузере

Мелкие доработки

  • Улучшено логирование ошибок — все логи теперь доступны в Grafana;

  • Исправил баги, о которых вы писали в Issues;

  • Добавил контейнер redisinsight для просмотра Redis данных через WEB интерфейс;

  • Переписал инструкции для подключения и настройки бота;

Спасибо всем за поддержку и обратную связь! Продолжаю работать над улучшениями и буду рад новым предложениям и вопросам.

Если нужно, могу помочь с примерами использования API или подсказать, как правильно настроить интеграцию.

Показать полностью 2
[моё] Программирование Чат-бот Стартап PHP Laravel Docker IT Open Source Telegram Длиннопост
0
15
ProgTime
ProgTime
ИТ-проекты пикабушников

Мой бот для техподдержки подрос: теперь он имеет связь с ВКонтакте и живёт в Docker⁠⁠

6 месяцев назад

Привет, Пикабу!

Месяц назад я выложил на GitHub своего бота для технической поддержки. Он собирает сообщения от пользователей и помогает обрабатывать их в одном месте. Неожиданно для себя, за месяц я получил больше 100 клонирований и 40+ звёзд — как для моего проекта, это прям успех!

Github - https://github.com/prog-time/tg-support-bot

А ещё мне начали писать в Issues с идеями по улучшению, и я решил — пора выкатить большое обновление.

Смотрите предыдущий пост!

📥 Подключил ВКонтакте

Раньше бот работал только с Telegram. Теперь можно подключить ещё и сообщество ВКонтакте — и объединить все сообщения в одну Telegram-группу. Все, кто пишет в ВК, будут "видны" в Telegram.

Работают все основные форматы сообщений: текст, файлы, картинки, голосовушки и даже контакты. Правда, некоторые штуки пришлось адаптировать — например, контакт из Telegram теперь приходит как обычный текст: имя + телефон.

🐳 Добавил docker-compose

Теперь бот можно легко запустить через Docker. Просто собрал нужные контейнеры, запустил — и всё работает.

Что внутри:

  • nginx + php + PostgreSQL

  • веб-интерфейс для работы с базой — PgAdmin

  • и даже Grafana + Loki — чтобы отслеживать логи, ошибки, запросы и всё такое

В будущем хочу ещё добавить метрики, алерты и всякие полезности для мониторинга.

Что дальше?

Все эти фичи — это не просто "что бы было". Их реально просили пользователи. Спасибо каждому, кто не поленился написать Issue ❤️

Как только наберём 80 звёзд на GitHub, начну работу над подключением нового источника сообщений.

Если интересно — вот тут лежит проект на GitHub
Буду рад, если зацените, поставите ⭐ и напишете, что бы вы хотели видеть дальше.

Показать полностью 2
[моё] Программирование Чат-бот Telegram Социальные сети Бот Laravel PHP API
0
12
ProgTime
ProgTime
Лига программистов

Сделал Telegram-бота для техподдержки через темы. Код открытый⁠⁠

7 месяцев назад

Привет, Пикабу! 👋
Хочу показать вам Telegram-бота, которого я написал на Laravel. Он помогает вести персонализированную поддержку пользователей прямо в Telegram.

Ссылка на GitHub:
🌟 https://github.com/prog-time/tg-support-bot

Если зайдёте — буду рад вашей звёздочке!

Зачем вообще нужен такой бот?

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

Хотелось:

  • централизованной переписки,

  • без спама в личке,

  • и чтобы пользователи не видел личный аккаунт.

Так и родилась идея: бот, который принимает сообщения от клиентов, создаёт для каждого отдельную тему в Telegram-группе, и пересылает туда все сообщения. Я отвечаю в теме — бот отправляет ответ клиенту от своего имени.

Никаких личных контактов. Никаких потерянных сообщений. Всё — в одной группе.

Как работает бот?

Очень просто:

  1. Создаём группу в Telegram для фиксирования чатов.

  2. В настройках группы включаем темы и добавляем бота в группу с правами администратора.

  3. Пользователь пишет боту.

  4. Если это новый клиент, бот создаёт отдельную тему в группе.

  5. Вы отвечаете в этой теме — бот пересылает ответ клиенту.

🎯 Бонус:
Бот не хранит переписки, фото и файлы — только ID сообщений и клиентов. Никаких баз данных с чувствительной инфой. Всё по-честному.

Что умеет?

  • Поддерживает все типы сообщений: текст, голос, видео, документы, фото.

  • Подходит для небольших команд, которым нужна простая и быстрая поддержка через Telegram.

  • Настраивается примерно за 30-60 минут.

Название темы формируется из символа "#" и id пользователя.

У темы меняется иконка, в зависимости от последнего сообщения. Если последнее сообщение от клиента, то ставится иконка "облачко", а если оно написано со стороны администратора, то ставится "зелёная галочка".

Также вы можете получить информацию о пользователе с котором ведёте общение.Подобное сообщение отправляется при создание темы или после отправки команды /contact.

Как установить?

Процесс установки очень прост. Если что-то не получится — пишите мне в Telegram:
📬 https://t.me/prog_time_bot

В двух словах:

1) Клонируем репозиторий:

git clone https://github.com/prog-time/tg-support-bot.git

2) Создаём бота через BotFather.

3) Создаём приватную группу и включаем темы.

4) Добавляем бота в группу с правами администратора.

5) Получаем ID группы (например, через getmyid_bot).

6) Настраиваем .env файл проекта:

APP_URL="https://your-domain.ru"

TELEGRAM_TOKEN="ваш_токен"

TELEGRAM_GROUP_ID="id_группы"

TELEGRAM_SECRET_KEY="придумайте_ключ"

7) Заходим по адресу https://ваш-домен/api/telegram/set_webhook, для регистрации хука.

Готово. Теперь можно писать боту, и он будет пересылать сообщения в группу, где удобно отвечать клиентам.

Если было полезно — поставьте звезду на GitHub и расскажите друзьям-разработчикам.
Возможно, кому-то это сэкономит кучу времени и нервов.

Буду рад фидбеку!

Показать полностью 2
[моё] Программирование Telegram Бот Laravel PHP Github Чат-бот Длиннопост
0
3
sumat777
sumat777
Писатель Константин Оборотов
Серия Курсы

Восхождение на Ларавель⁠⁠

8 месяцев назад

Нет, эта история вовсе не про альпинизм. Laravel (Ларавел, Ларавель) - один из самых популярных фреймворков с открытым кодом на базе php. Создал Ларавель Тейлор Отвелл (Taylor Otwell) в 2011 году. Название Laravel образовалось путем замены первой буквы от слова Paravel. Cair Paravel (Кэйр Паравел) - замок из мира Нарнии, придуманного Клайвом Льюисом. Это история о том, как я изучал Ларавель и что из этого вышло.

© 2025 Константин Оборотов

===

Сподвигли меня на изучение Ларавели утверждения одного авторитета в области разработки, что Ларовель перспективнее и интереснее, чем YII2, да и, вообще, чем любой фреймворк на PHP.

Мне стало очень любопытно. Мною овладел азарт, и даже искушение. А лучший способ избавиться от искушения - следовать ему.

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

Также я решил по итогам путешествия сделать вот эти путевые заметки, которые вы сейчас читаете. Если вы разработчик-новичок (как и я в Ларавеле), то возможно они будут для вас интересными и полезными.

Начну я с описания своего "дипломного проекта", который получился в итоге первичного изучения Ларавели.

https://ch.inumo.ru/ - Учебный проект, выполненный с целью изучения фреймворка Ларавель (Laravel). Главная страница этого сайта.

https://wpvi.ru/pages/story/00097/ - дорожная карта, пошаговая шпаргалка.

Теперь я хочу рассказать, как я знакомился с Ларавель, что мне понравилось и что мне категорически не понравилось.

Первичное обучение я прошел учебно-тренировочном лагере Ларавели вот по этому поддомену:

bootcamp(.)laravel(.)com

Это обучение мне очень понравилось. Все четко, все по сути, все пошагово. В результате на выходе получился сайт (см. выше).

Какое же у меня было разочарование, когда я зашел на этот учебный лагерь через какое-то время и обнаружил, что никакого учебного лагеря больше нет!

А ссылка выше теперь редиректит сюда:

laravel(.)com/docs/12.x

Это мне очень сильно не понравилось! Я был в шоке. Разве можно так делать? Если по каким-то причинам вы закрыли свой учебный проект, то разместите какое-то сообщение по данному адресу. А то как-то молчком, без объяснения причин. Разве можно так делать?

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

laracasts(.)com - коллекция курсов, экзаменов по Laravel и PHP, а также сообщество, которому нет равных.

Решил я проверить это общество на "вшивость" и задал простой вопрос, "куда делся этот учебный лагерь?"

Мне сильно понравилось, что мой вопрос был опубликован в отдельной ветке и на него поступили внятные ответы по сути вопроса:

laracasts(.)com/discuss/channels/laravel/subdomain-bootcamplaravelcom-doesnt-work-20250302-why

Этот вопрос и ответы в подробном изложении.

Подробности и актуальную информации по этому вопросу вы можете прочитать по ссылке выше, а коротко суть такая.

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

Лагерь в архиве - Все материалы учебного лагеря сохранились в специальном сайте-архивариусе

web(.)archive(.)org/web/20250206182837/https://bootcamp(.)laravel(.)com

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

Впрочем, не важно. Работает, и ладно.

Кстати, я на всякий случай, еще раз прошелся от начала до конца по учебному курсу в плане создания курсового проекта. Теперь автоматом ставится версия 12 (она сейчас актуальная). Проект работает, но есть незначительные косяки, связанные со стилями. Но это пустяки. В целом все работает. А стили всегда можно подправить.

Давайте, пройдемся по датам. Я пишу эти строки в марте 2025. Сейчас на Ларавеле переход с версии 11 на версию 12. А когда вы читаете этот текст, все может кардинально измениться. Может, актуальная версия будет 13 или 14, может учебный лагерь возобновит работу. Все, что угодно или негодно может случиться.

Так или иначе, мы сделали пока главное. Мы поймали дух Ларавеля. Тут постоянно все меняется, идет какая-та движуха. Тут много народа, который поможет новичку (как я или вы) консультацией бесплатно или за деньги.

Есть ли для вас вообще смысл изучать Ларавель?

Думаю, да. Перспективы Ларавели и ваша будущая зарплата пока выглядят достаточно оптимистично.

И самое главное. Изучение Ларавели очень увлекательный процесс.

Самостоятельная работа

Работа, которая заключается в повторении указаний тренера относительно простая, но не такая интересная.

Хотя для новичка это то, что надо.

После того, как прошлись по шагам учебного центра, самое время сделать что-то свое, без указки тренера.

Ведь намного полезнее придумать задание самому себе и попробовать его выполнить.

Вот такие задания я придумал для себя.

Чередование фоновой окраски сообщений

Смысл этого задания в том, чтобы отделить цветом одно сообщение от другого.

Достигается такое чередование следующим способом.

resources/views/chirps/index.blade.php

@foreach ($chirps as $chirp)

@if ($loop->even)

<div class="p-6 flex space-x-2" style="background-color:#FFFFF0;">

@else

<div class="p-6 flex space-x-2" style="background-color:#F0FFFF;">

@endif

Задача решается на уровне ядра Лезвия (Blade). Имеется встроенный объект $loop (официально называется переменная), а у него есть свойство even, которое мы и используем в данном случае.

Отображение сообщения в форматах TEXT и HTML

Здесь мы рассмотрим две идеи.

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

Теория вопроса в рамках опять же Лезвия (Blade) следующая.

{{ $chirp->message }} - сообщение отображается в текстовом формате

{!! $chirp->message !!} - сообщение отображается в HTML формате

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

resources/views/chirps/index.blade.php

@if ($chirp->user->id==1)

<p class="mt-4 text-lg text-gray-900">{!! $chirp->message !!}</p>

@else

<p class="mt-4 text-lg text-gray-900">{{ $chirp->message }}</p>

@endif

Разумеется в выражении @if можно придумать и более сложную логику отбора.

Вот и все, что я хотел бы рассказать вам о Ларавели.

Желаю вам успеха, высокого заработка и качественного кода!

...

Первоисточник:

https://wpvi.ru/pages/story/00097/

===

Источники, упомянутые в произведении:

Чинумо - Учебный проект, выполненный с целью изучения фреймворка Ларавель (Laravel)

https://ch.inumo.ru/

===

Показать полностью 2
[моё] Программирование Гайд PHP Laravel Framework Веб фреймворки Изучение Тестирование Длиннопост
3
8
ProgTime
ProgTime
Лига программистов

Laravel + тестирование: как сэкономить время на валидации запросов⁠⁠

9 месяцев назад

При разработке API на Laravel часто возникает необходимость тестировать валидацию входящих данных. Один из способов — вручную писать тесты с различными вариантами входных параметров. Однако этот процесс может быть трудоемким и рутинным.

Чтобы упростить задачу, я разработал пакет laravel-request-testdata, который автоматически создает тестовые данные на основе правил валидации Laravel Request.

Ссылка на репозиторий - https://github.com/prog-time/laravel-request-testdata

Кому будет полезен этот пакет?

  • Разработчикам, которые хотят автоматизировать тестирование валидации запросов.

  • Тем, кто пишет много API-тестов и хочет минимизировать рутинные задачи.

  • Всем, кто хочет быстро получать корректные тестовые данные без необходимости вручную прописывать каждый вариант входных данных.

Как работает модуль?

Рассмотрим стандартный Laravel Request с простыми правилами:

Теперь используем laravel-request-testdata для получения тестовых данных:

Выходные данные могут выглядеть так:

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

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

В процессе планирования разработки модуля я долго изучал вариации правил валидации в Laravel и постарался описать все возможные кейсы правил валидации.

Разные форматы правил валидации

Данный модуль может обрабатывать правила валидации в разном формате.

Правила в формате массива

Вы можете описать правила в виде строки, как это было сделано в предыдущих примерах, а можете передать массив со списком параметром:

Использование сложных условий

По мимо типичных правил валидации, модуль также понимает такие правила, как: in, exists, unique и так далее.

Использование класса Rule для описания правил

В некоторых Request классах правила валидации описываются в формате Rule конструкций. Это может быть Rule::unique для проверки на уникальность или Rule::in для проверки на соответствие конкретным значениям.

Генерация тестовых файлов для проверки валидации

Что касается валидации загружаемых файлов, то тут всё немного сложнее. На данный момент мой модуль может сгенерировать файлы таких типов, как: yml, xml, svg, sql, png, log, json, jpg, html, gif и csv.

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

Для данной проблемы есть обходной вариант, который мы рассмотрим ниже.

Указание своих тестовых данных

Бываю моменты когда вам нужно для тестирования передавать свои данные, которые более корректно смогут настроить проверку работы приложения.

Для этого необходимо в Request классе создать метод requestTestData(). Данный метод должен возвращать параметры запроса с заполненными тестовыми данными.

Через метод requestTestData() вы также можете передавать тестовые файлы в форматах, которые на данный момент не поддерживаются моим модулем.

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

Данный модуль не требует дополнительной настройки, его легко можно установить через composer и использовать в своих тестах.

Я надеюсь вам понравилось моё решение. Я буду очень благодарен если вы поддержите данный модуль звёздочкой на GitHub и напишите свой комментарий под данным постом.

Спасибо за то что дочитали данный пост до конца!

Показать полностью 7
[моё] Тестирование Программирование Laravel PHP Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии