🛠️Использование Laravel Tinker в Chrome DevTools
Статья о том, как интегрировать Laravel Tinker с Chrome DevTools для более удобной отладки и тестирования кода прямо в браузере.
Это позволяет быстрее проверять и экспериментировать с кодом Laravel, используя привычные инструменты Chrome.
https://www.amitmerchant.com/laravel-tinker-chrome-devtools/
Статья о том, как интегрировать Laravel Tinker с Chrome DevTools для более удобной отладки и тестирования кода прямо в браузере.
Это позволяет быстрее проверять и экспериментировать с кодом Laravel, используя привычные инструменты Chrome.
https://www.amitmerchant.com/laravel-tinker-chrome-devtools/
❤7
This media is not supported in your browser
VIEW IN TELEGRAM
Совет по Laravel 💡
Один из моих любимых недокументированных советов, который я регулярно использую. Используйте "
Один из моих любимых недокументированных советов, который я регулярно использую. Используйте "
wasRecentlyCreated
", чтобы проверить, была ли модель создана или найдена в базе данных.👍11
Оптимизация SQL-запросов в PHP: избавляемся от тормозов! 🚀
Сегодня я покажу вам, как улучшить производительность SQL-запросов в PHP и избавиться от лишней нагрузки на базу данных.
1. Используйте подготовленные запросы
Не только защита от SQL-инъекций, но и кеширование запросов внутри СУБД!
Пример с PDO:
2. Выбирайте только нужные данные
Зачем вам
3. Индексы – ваши друзья
Проверяйте, есть ли индексы на полях, которые часто используются в
4. Избегайте N+1 запроса
Вместо 100 мелких запросов – один с
❌ Плохо (100 запросов в цикле!):
✅ Хорошо (один запрос):
5. Используйте кеширование
Храните частые запросы в Redis или Memcached, чтобы снизить нагрузку на базу.
Эти советы помогут вам ускорить ваш PHP-код, снизить нагрузку на базу данных и сделать сайт более отзывчивым.
Сегодня я покажу вам, как улучшить производительность SQL-запросов в PHP и избавиться от лишней нагрузки на базу данных.
1. Используйте подготовленные запросы
Не только защита от SQL-инъекций, но и кеширование запросов внутри СУБД!
Пример с PDO:
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
$user = $stmt->fetch();
2. Выбирайте только нужные данные
Зачем вам
SELECT *
, если нужно только id
и name
? Выбирайте только нужные колонки!
$stmt = $pdo->query("SELECT id, name FROM users");
3. Индексы – ваши друзья
Проверяйте, есть ли индексы на полях, которые часто используются в
WHERE
и JOIN
. Без индексов база будет делать полный перебор строк!
CREATE INDEX idx_email ON users(email);
4. Избегайте N+1 запроса
Вместо 100 мелких запросов – один с
JOIN
. ❌ Плохо (100 запросов в цикле!):
foreach ($users as $user) {
$stmt = $pdo->prepare("SELECT * FROM orders WHERE user_id = ?");
$stmt->execute([$user['id']]);
$orders[$user['id']] = $stmt->fetchAll();
}
✅ Хорошо (один запрос):
$query = "SELECT users.id, users.name, orders.id as order_id
FROM users
LEFT JOIN orders ON users.id = orders.user_id";
$stmt = $pdo->query($query);
$result = $stmt->fetchAll();
5. Используйте кеширование
Храните частые запросы в Redis или Memcached, чтобы снизить нагрузку на базу.
$cacheKey = "users_list";
$users = $redis->get($cacheKey);
if (!$users) {
$users = $pdo->query("SELECT id, name FROM users")->fetchAll();
$redis->setex($cacheKey, 3600, json_encode($users));
}
Эти советы помогут вам ускорить ваш PHP-код, снизить нагрузку на базу данных и сделать сайт более отзывчивым.
👍17❤6
Неиспользуемые определения в статическом анализе Behat
Разработчик поделился опытом оптимизации работы с тестами Behat. Он заметил, что некоторые определения, используемые в сценариях тестирования, больше не применяются и могут быть удалены. Это позволяет уменьшить объем кода, который нужно поддерживать и обновлять. Однако стандартные инструменты Behat не позволяют автоматически находить такие неиспользуемые элементы.
Проблема
Определения для тестов в Behat задаются специальными аннотациями или атрибутами. Эти определения используются в сценариях тестирования, записанных в feature-файлах. Со временем, по мере изменения сценариев, некоторые определения могут остаться невостребованными, но разработчики часто не замечают этого из-за высокой нагрузки и сосредоточенности на основной работе.
Решение через статический анализ
Для выявления неиспользуемых определений был предложен инструмент статического анализа. Он выполняет следующие шаги:
🔸Сканирует PHP-файлы на наличие определений (аннотации и атрибуты).
🔸Выделяет точные совпадения, регулярные выражения и именованные маски.
🔸Сопоставляет их с содержимым feature-файлов.
Пример анализа:
🔹Найдено 1036 определений: 747 точных, 106 с регулярными выражениями, 181 с именованными масками.
🔹Обнаружены 2 неиспользуемых определения, которые можно удалить.
Инструмент для работы: Behastan
Для реализации этого подхода был создан инструмент Behastan, интегрированный в утилиту Rector Swiss Knife. Она поддерживает проекты вплоть до PHP 7.2 и проста в использовании:
1. Установите утилиту:
2. Запустите анализ:
Этот инструмент помогает поддерживать чистоту кода и предотвращает накопление ненужных определений. Подключив его к CI/CD, можно автоматизировать процесс и избежать ручных проверок.
Разработчик поделился опытом оптимизации работы с тестами Behat. Он заметил, что некоторые определения, используемые в сценариях тестирования, больше не применяются и могут быть удалены. Это позволяет уменьшить объем кода, который нужно поддерживать и обновлять. Однако стандартные инструменты Behat не позволяют автоматически находить такие неиспользуемые элементы.
Проблема
Определения для тестов в Behat задаются специальными аннотациями или атрибутами. Эти определения используются в сценариях тестирования, записанных в feature-файлах. Со временем, по мере изменения сценариев, некоторые определения могут остаться невостребованными, но разработчики часто не замечают этого из-за высокой нагрузки и сосредоточенности на основной работе.
Решение через статический анализ
Для выявления неиспользуемых определений был предложен инструмент статического анализа. Он выполняет следующие шаги:
🔸Сканирует PHP-файлы на наличие определений (аннотации и атрибуты).
🔸Выделяет точные совпадения, регулярные выражения и именованные маски.
🔸Сопоставляет их с содержимым feature-файлов.
Пример анализа:
🔹Найдено 1036 определений: 747 точных, 106 с регулярными выражениями, 181 с именованными масками.
🔹Обнаружены 2 неиспользуемых определения, которые можно удалить.
Инструмент для работы: Behastan
Для реализации этого подхода был создан инструмент Behastan, интегрированный в утилиту Rector Swiss Knife. Она поддерживает проекты вплоть до PHP 7.2 и проста в использовании:
1. Установите утилиту:
composer require rector/swiss-knife --dev
2. Запустите анализ:
vendor/bin/swiss-knife behastan tests
Этот инструмент помогает поддерживать чистоту кода и предотвращает накопление ненужных определений. Подключив его к CI/CD, можно автоматизировать процесс и избежать ручных проверок.
👍4❤2🥰1
PhpLDAPadmin - это веб инструмент управления данными LDAP для системных администраторов. Он обычно известен и называется "PLA".
При этом, PLA создан с учетом соответствия RFC LDAP, что позволяет использовать его с любым сервером LDAP
📌 Github
При этом, PLA создан с учетом соответствия RFC LDAP, что позволяет использовать его с любым сервером LDAP
📌 Github
❤3👍3🔥3
Как бороться с «загадочными» багами в PHP? 🤔
Сегодня хочу поговорить про одну из самых неприятных проблем в программировании — «загадочные» баги. Это те ошибки, которые возникают только в продакшене, исчезают при попытке дебага и доводят до нервного тика 😬.
🔍 Почему это происходит?
- Разные окружения — локально у вас PHP 8.2, а на сервере 7.4 (и вдруг
- Необработанные ошибки — ошибки скрыты
- Состояние кэша — в OpCache или APCu залипла старая версия кода.
- Гонки потоков — скрипты выполняются параллельно и вмешиваются друг в друга.
🛠 Как с этим бороться?
1️⃣ Выключить OpCache на тестовом сервере
Это позволит быстрее проверять изменения и исключить залипание кода.
2️⃣ Настроить логирование
Включите
3️⃣ Сравнить окружения
Используйте
4️⃣ Включить трассировку ошибок
Xdebug поможет отследить стек вызовов, а Laravel Telescope покажет внутренности запроса.
5️⃣ Повторить проблему на копии продакшена
Запустите код в Docker с конфигом продакшена или создайте staging-сервер.
6️⃣ Подключить мониторинг и алерты
Инструменты типа Sentry, Bugsnag или New Relic помогут ловить ошибки раньше, чем их заметят пользователи.
Сегодня хочу поговорить про одну из самых неприятных проблем в программировании — «загадочные» баги. Это те ошибки, которые возникают только в продакшене, исчезают при попытке дебага и доводят до нервного тика 😬.
🔍 Почему это происходит?
- Разные окружения — локально у вас PHP 8.2, а на сервере 7.4 (и вдруг
match
ломает весь код). - Необработанные ошибки — ошибки скрыты
@
, а логи молчат. - Состояние кэша — в OpCache или APCu залипла старая версия кода.
- Гонки потоков — скрипты выполняются параллельно и вмешиваются друг в друга.
🛠 Как с этим бороться?
1️⃣ Выключить OpCache на тестовом сервере
Это позволит быстрее проверять изменения и исключить залипание кода.
2️⃣ Настроить логирование
Включите
error_reporting(E_ALL)
и убедитесь, что display_errors=Off
, а log_errors=On
с путём к файлу логов. 3️⃣ Сравнить окружения
Используйте
phpinfo()
или php -m
для проверки версий PHP и установленных модулей. 4️⃣ Включить трассировку ошибок
Xdebug поможет отследить стек вызовов, а Laravel Telescope покажет внутренности запроса.
5️⃣ Повторить проблему на копии продакшена
Запустите код в Docker с конфигом продакшена или создайте staging-сервер.
6️⃣ Подключить мониторинг и алерты
Инструменты типа Sentry, Bugsnag или New Relic помогут ловить ошибки раньше, чем их заметят пользователи.
👍7❤3🔥2
Taran — инструмент нагрузочного тестирования
Простой инструмент для нагрузочного тестирования веб-приложений.
Написан на PHP 8.1+ с использованием консольного фреймворка Laravel Zero.
🔗 GitHub
#библиотека
Простой инструмент для нагрузочного тестирования веб-приложений.
Написан на PHP 8.1+ с использованием консольного фреймворка Laravel Zero.
🔗 GitHub
#библиотека
GitHub
GitHub - maximal/taran: Web applications and servers benchmarking tool.
Web applications and servers benchmarking tool. Contribute to maximal/taran development by creating an account on GitHub.
👍4❤2🔥1
⚡️ SQLAdmin — инструмент, превращающий ваши SQLAlchemy или SQLModel-модели в функциональный бэкенд-интерфейс за несколько минут.
Особенно в проекте радует поддержка как синхронных, так и асинхронных движков SQLAlchemy, что делает его универсальным выбором для современных проектов.
Интерфейс построен на Tabler — чистом и современном CSS-фреймворке, который не требует тонн JavaScript.
🤖 GitHub
Особенно в проекте радует поддержка как синхронных, так и асинхронных движков SQLAlchemy, что делает его универсальным выбором для современных проектов.
Интерфейс построен на Tabler — чистом и современном CSS-фреймворке, который не требует тонн JavaScript.
🤖 GitHub
👍4❤1🔥1
Эти термины звучат сложно, но суть у них простая. Разработчики используют их идеи постоянно — просто не всегда знают, как это называется. Ниже — простое объяснение с примерами.
🔍 Что это такое?
Ковариантность — когда метод возвращает более конкретный тип, чем у родителя.
Контравариантность — когда метод принимает менее конкретный тип, чем у родителя.
✅ Ковариантность (return types)
PHP поддерживает ковариантность только для возвращаемых значений. Примеры:
float|int
→ int
BaseClass
→ ChildClass
Exportable
→ Exportable&Cacheable
Можно «сузить» возвращаемый тип в дочернем классе — и это будет валидно.
❌ Контравариантность в return'ах
PHP не позволяет делать возвращаемый тип менее конкретным.
Например,
int → float|int
— вызовет ошибку.✅ Контравариантность (параметры)
А вот с параметрами всё наоборот — здесь PHP позволяет делать типы шире:
array
→ array|Collection
Traversable&Collection
→ Collection
EloquentCollection
→ Collection
Такой подход делает методы более гибкими при переопределении.
❌ Ковариантность в параметрах
Нельзя в параметрах делать тип более конкретным, чем у родителя. Это приведёт к ошибке.
🚫 Конструкторы — отдельная история
Ковариантность и контравариантность на конструкторы не влияют. У них своя логика, и они не наследуются как обычные методы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2
🕊️ RoadRunner — высокопроизводительный application server на Go. Этот проект заменяет связку Nginx+PHP-FPM, позволяя запускать PSR-7-совместимые приложения с поддержкой HTTP/3, WebSockets и даже Temporal workflow.
Конфигурация через
🤖 GitHub
Конфигурация через
.rr.yaml
напоминает docker-compose: можно подключать очереди, кеш и метрики как плагины. Рабочие процессы PHP остаются в памяти, что даёт до 10x прирост скорости против традиционного FPM. Особенно радует встроенная система мониторинга и автоматические рестарты упавших воркеров. 🤖 GitHub
👍17❤1
Сегодня расскажу про одну из самых частых болей в любом проекте на Laravel — отладку запросов с Eloquent и N+1 проблемой.
Ты наверняка сталкивался с ситуацией: всё работает, но чуть-чуть замедляется. Начинаешь копать и видишь кучу повторяющихся SQL-запросов. Это классическая N+1 проблема — когда вместо одного запроса Laravel делает десятки.
👀 Как это проявляется?
У тебя есть, например, список постов и у каждого поста автор:
Laravel выполнит 1 запрос на посты и N запросов на пользователей. А должен был бы — 2 запроса максимум.
🛠 Решение простое — eager loading:
Теперь Laravel сначала загрузит всех постов, а потом сразу всех юзеров одним вторым запросом.
📦 Но как быстро выявить такие ошибки?
Используй Laravel Debugbar или Clockwork. Они наглядно показывают все SQL-запросы и сразу виден N+1.
Ещё один вариант — в проде подключить Laravel Telescope, если это безопасно, или поставить простую логику, которая логирует количество SQL-запросов на каждый HTTP-запрос.
⚠️ Совет: всегда используй
Ты наверняка сталкивался с ситуацией: всё работает, но чуть-чуть замедляется. Начинаешь копать и видишь кучу повторяющихся SQL-запросов. Это классическая N+1 проблема — когда вместо одного запроса Laravel делает десятки.
👀 Как это проявляется?
У тебя есть, например, список постов и у каждого поста автор:
$posts = Post::all();
foreach ($posts as $post) {
echo $post->user->name;
}
Laravel выполнит 1 запрос на посты и N запросов на пользователей. А должен был бы — 2 запроса максимум.
🛠 Решение простое — eager loading:
$posts = Post::with('user')->get();
Теперь Laravel сначала загрузит всех постов, а потом сразу всех юзеров одним вторым запросом.
📦 Но как быстро выявить такие ошибки?
Используй Laravel Debugbar или Clockwork. Они наглядно показывают все SQL-запросы и сразу виден N+1.
Ещё один вариант — в проде подключить Laravel Telescope, если это безопасно, или поставить простую логику, которая логирует количество SQL-запросов на каждый HTTP-запрос.
⚠️ Совет: всегда используй
with()
при выборке данных для списков, особенно если в шаблоне дергаешь связанные модели.❤7👍4🔥4
Программист PHP (Middle+/Senior)
#удаленка #middle+ #senior
Опыт работы: от 3 лет
Компания: P2PLong
ЗП: от 220 000 до 280 000 (Возможна выплата в USDT)
О проекте:
P2P-платформа для автоматического обмена валют. Проект уже функционирует и активно развивается. В связи с этим ищем разработчика в штат, с которым продолжим совместное развитие.
🔷Ожидания от кандидата:
Уверенное знание PHP
Уверенные знания Laravel, html, css
Умение верстки
Понимание паттернов проектирования
Умение оптимизировать SQL-запросы
Аккуратность, самостоятельность и ответственность
🔷Будет плюсом:
Опыт работы с React
🔷Наш основной стек:
Php 8.3
Laravel
MySql
Git
Docker
🔷Обязанности:
Поддержка существующего кода
Интеграция с внешними сервисами
Разработка нового функционала бек и фронт.
🔷Мы предлагаем:
Удаленная работа, гибкий график
Интересный перспективный проект
Отсутствие бюрократии
Возможно работать из любой точки мира и получать зарплату в USDT
Контакты: @mikhpletnev
Просьба сразу присылать CV
#удаленка #middle+ #senior
Опыт работы: от 3 лет
Компания: P2PLong
ЗП: от 220 000 до 280 000 (Возможна выплата в USDT)
О проекте:
P2P-платформа для автоматического обмена валют. Проект уже функционирует и активно развивается. В связи с этим ищем разработчика в штат, с которым продолжим совместное развитие.
🔷Ожидания от кандидата:
Уверенное знание PHP
Уверенные знания Laravel, html, css
Умение верстки
Понимание паттернов проектирования
Умение оптимизировать SQL-запросы
Аккуратность, самостоятельность и ответственность
🔷Будет плюсом:
Опыт работы с React
🔷Наш основной стек:
Php 8.3
Laravel
MySql
Git
Docker
🔷Обязанности:
Поддержка существующего кода
Интеграция с внешними сервисами
Разработка нового функционала бек и фронт.
🔷Мы предлагаем:
Удаленная работа, гибкий график
Интересный перспективный проект
Отсутствие бюрократии
Возможно работать из любой точки мира и получать зарплату в USDT
Контакты: @mikhpletnev
Просьба сразу присылать CV
❤2
🛠️ Команды Artisan, которые ты не используешь (но зря)
Если ты думал, что
Laravel CLI может значительно ускорить разработку, помочь в отладке и автоматизации.
📌 Полезные команды для работы с маршрутами:
Покажет только POST-маршруты — удобно для отладки форм и API.
Фильтрует маршруты по URI — пригодится, если работаешь с разделом админки.
Выводит только маршруты из сторонних пакетов — полезно при интеграции SDK и пакетов.
---
⚡ Генерация кода с помощью `make:` — быстро и эффективно
Создаёт контроллер с привязкой к модели, запросами валидации и тестами сразу.
Модель, миграция, фабрика, сидер, политика и контроллер — в одном пакете.
Сокращённо:
`-m`igration, `-c`ontroller, `-f`actory, `-s`eeder.
🧠 Создавай свои команды и автоматизируй рутину
Пиши код внутри
- удаляй старые записи
- обрабатывай отчёты
- отправляй напоминания
- подключайся к API
Потом запускай вручную или через планировщик (`Task Scheduling`).
🔥 Artisan — это больше, чем кажется. Используй его как полноценный DevTool и перестань писать повторяющийся код руками.
📎 Сохрани себе
@phpshka
Если ты думал, что
artisan
— это только serve
и migrate
, пришло время расширить горизонты. Laravel CLI может значительно ускорить разработку, помочь в отладке и автоматизации.
📌 Полезные команды для работы с маршрутами:
php artisan route:list --method=POST
Покажет только POST-маршруты — удобно для отладки форм и API.
php artisan route:list --path=admin
Фильтрует маршруты по URI — пригодится, если работаешь с разделом админки.
php artisan route:list --only-vendor
Выводит только маршруты из сторонних пакетов — полезно при интеграции SDK и пакетов.
---
⚡ Генерация кода с помощью `make:` — быстро и эффективно
php artisan make:controller PostController --model=Post --requests --test
Создаёт контроллер с привязкой к модели, запросами валидации и тестами сразу.
php artisan make:model Post --all
Модель, миграция, фабрика, сидер, политика и контроллер — в одном пакете.
Сокращённо:
php artisan make:model Product -mcfs
`-m`igration, `-c`ontroller, `-f`actory, `-s`eeder.
🧠 Создавай свои команды и автоматизируй рутину
php artisan make:command CleanOldPosts
Пиши код внутри
handle()
, например:- удаляй старые записи
- обрабатывай отчёты
- отправляй напоминания
- подключайся к API
Потом запускай вручную или через планировщик (`Task Scheduling`).
🔥 Artisan — это больше, чем кажется. Используй его как полноценный DevTool и перестань писать повторяющийся код руками.
📎 Сохрани себе
@phpshka
👍13❤3🔥2🥱2
🔥 Успех в IT = скорость + знания + окружение
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: www.tgoop.com/ai_machinelearning_big_data
Python: www.tgoop.com/pythonl
Linux: www.tgoop.com/linuxacademiya
Собеседования DS: www.tgoop.com/machinelearning_interview
C++ www.tgoop.com/cpluspluc
Docker: www.tgoop.com/DevopsDocker
Хакинг: www.tgoop.com/linuxkalii
Devops: www.tgoop.com/DevOPSitsec
Data Science: www.tgoop.com/data_analysis_ml
Javascript: www.tgoop.com/javascriptv
C#: www.tgoop.com/csharp_ci
Java: www.tgoop.com/java_library
Базы данных: www.tgoop.com/sqlhub
Python собеседования: www.tgoop.com/python_job_interview
Мобильная разработка: www.tgoop.com/mobdevelop
Golang: www.tgoop.com/Golang_google
React: www.tgoop.com/react_tg
Rust: www.tgoop.com/rust_code
ИИ: www.tgoop.com/vistehno
PHP: www.tgoop.com/phpshka
Android: www.tgoop.com/android_its
Frontend: www.tgoop.com/front
Big Data: www.tgoop.com/bigdatai
МАТЕМАТИКА: www.tgoop.com/data_math
Kubernets: www.tgoop.com/kubernetc
Разработка игр: https://www.tgoop.com/gamedev
Haskell: www.tgoop.com/haskell_tg
Физика: www.tgoop.com/fizmat
💼 Папка с вакансиями: www.tgoop.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tgoop.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tgoop.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tgoop.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tgoop.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: www.tgoop.com/memes_prog
🇬🇧Английский: www.tgoop.com/english_forprogrammers
🧠ИИ: www.tgoop.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tgoop.com/addlist/BkskQciUW_FhNjEy
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: www.tgoop.com/ai_machinelearning_big_data
Python: www.tgoop.com/pythonl
Linux: www.tgoop.com/linuxacademiya
Собеседования DS: www.tgoop.com/machinelearning_interview
C++ www.tgoop.com/cpluspluc
Docker: www.tgoop.com/DevopsDocker
Хакинг: www.tgoop.com/linuxkalii
Devops: www.tgoop.com/DevOPSitsec
Data Science: www.tgoop.com/data_analysis_ml
Javascript: www.tgoop.com/javascriptv
C#: www.tgoop.com/csharp_ci
Java: www.tgoop.com/java_library
Базы данных: www.tgoop.com/sqlhub
Python собеседования: www.tgoop.com/python_job_interview
Мобильная разработка: www.tgoop.com/mobdevelop
Golang: www.tgoop.com/Golang_google
React: www.tgoop.com/react_tg
Rust: www.tgoop.com/rust_code
ИИ: www.tgoop.com/vistehno
PHP: www.tgoop.com/phpshka
Android: www.tgoop.com/android_its
Frontend: www.tgoop.com/front
Big Data: www.tgoop.com/bigdatai
МАТЕМАТИКА: www.tgoop.com/data_math
Kubernets: www.tgoop.com/kubernetc
Разработка игр: https://www.tgoop.com/gamedev
Haskell: www.tgoop.com/haskell_tg
Физика: www.tgoop.com/fizmat
💼 Папка с вакансиями: www.tgoop.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tgoop.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tgoop.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tgoop.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tgoop.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: www.tgoop.com/memes_prog
🇬🇧Английский: www.tgoop.com/english_forprogrammers
🧠ИИ: www.tgoop.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tgoop.com/addlist/BkskQciUW_FhNjEy
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
🔥2
Команды Artisan, которые вы не используете (но определенно должны)
Если вы думали, что Artisan — это только для запуска сервера и миграций, пора взглянуть шире. Этот мощный CLI-инструмент может значительно ускорить разработку, упростить отладку и помочь лучше понять Laravel.
📌 Полезные команды для работы с маршрутами:
⚡️ Крутые make: команды для генерации кода:
Сокращённые флаги:
🛠️ Создавайте свои Artisan команды и автоматизируйте рутину:
Напишите логику очистки старых записей и запускайте команду вручную или по расписанию. Идеально для: очистки данных, отправки напоминаний, пакетной обработки и интеграций.
👉 Читать статью
Если вы думали, что Artisan — это только для запуска сервера и миграций, пора взглянуть шире. Этот мощный CLI-инструмент может значительно ускорить разработку, упростить отладку и помочь лучше понять Laravel.
📌 Полезные команды для работы с маршрутами:
php artisan route:list --method=POST
— показывает только POST-маршруты (удобно при отладке форм или API)php artisan route:list --path=admin
— фильтрует маршруты по пути, например, для админкиphp artisan route:list --only-vendor
— список маршрутов от сторонних пакетов⚡️ Крутые make: команды для генерации кода:
php artisan make:controller PostController --model=Post --requests --test
— создаёт контроллер с привязкой к модели, запросами валидации и тестамиphp artisan make:model Post --all
— генерация модели, миграции, фабрики, сидера, политики и контроллера одним махом!Сокращённые флаги:
php artisan make:model Product -mcfs
(migration, controller, factory, seeder)🛠️ Создавайте свои Artisan команды и автоматизируйте рутину:
php artisan make:command CleanOldPosts
Напишите логику очистки старых записей и запускайте команду вручную или по расписанию. Идеально для: очистки данных, отправки напоминаний, пакетной обработки и интеграций.
👉 Читать статью
🔥7❤4👍2
FastExcelWriter — избавление от проклятия PhpSpreadsheet
Наверняка каждый php-разработчик, хоть раз сталкивавшийся с чтением или записью Excel-файлов, знает про библиотеку PhpSpreadsheet (в прошлом - PHPExcel). Это мощная библиотека на чистом php, которая позволяет читать, а, главное, создавать Excel-таблицы. И все с ней хорошо, пока работаешь с небольшим набором данных. Но при работе с большими файлами PhpSpreadsheet начинает чудовищно отжирать память, да и производительность резко падает, и php-скрипт, использующий библиотеку, часто просто отваливается по таймауту. И проблема - в архитектуре библиотеки.
Библиотека PhpSpreadsheet, казалось бы, спроектирована очень правильно: листы таблицы, строки, ячейки, прочие сущности - это все классы, стили, форматы и всевозможные свойства тоже состоят из классов. И когда создается таблица, то в памяти создается огромное количество связанных между собой объектов, им задаются свойства, выполняются всевозможные манипуляции, ячейки заполняются данными, всё-всё это держится в памяти, и пишется в файл только в момент сохранения.
https://habr.com/ru/articles/904710/
Наверняка каждый php-разработчик, хоть раз сталкивавшийся с чтением или записью Excel-файлов, знает про библиотеку PhpSpreadsheet (в прошлом - PHPExcel). Это мощная библиотека на чистом php, которая позволяет читать, а, главное, создавать Excel-таблицы. И все с ней хорошо, пока работаешь с небольшим набором данных. Но при работе с большими файлами PhpSpreadsheet начинает чудовищно отжирать память, да и производительность резко падает, и php-скрипт, использующий библиотеку, часто просто отваливается по таймауту. И проблема - в архитектуре библиотеки.
Библиотека PhpSpreadsheet, казалось бы, спроектирована очень правильно: листы таблицы, строки, ячейки, прочие сущности - это все классы, стили, форматы и всевозможные свойства тоже состоят из классов. И когда создается таблица, то в памяти создается огромное количество связанных между собой объектов, им задаются свойства, выполняются всевозможные манипуляции, ячейки заполняются данными, всё-всё это держится в памяти, и пишется в файл только в момент сохранения.
https://habr.com/ru/articles/904710/
🔥11👍2❤1
🧹 Команда дня: Очистка кеша Composer
Зачем это нужно?
Composer кеширует метаданные пакетов и архивы, чтобы ускорять работу. Это удобно, но в некоторых случаях кеш может стать источником проблем:
🔸 обновления зависимостей «не видятся»;
🔸 Composer использует устаревшие версии;
🔸 баги или непредсказуемое поведение при установке/обновлении пакетов.
В таких случаях первое, что стоит попробовать — очистить кеш.
Когда это особенно полезно:
🔹 После смены версии PHP или Composer.
🔹 После редактирования
🔹 При сбоях в
🔹 Если Composer «видит» зависимости, которых уже нет.
Где живёт кеш?
По умолчанию:
macOS / Linux:
Windows:
✅ Используйте в CI при странных ошибках установки зависимостей.
✅ Если вы используете Docker, убедитесь, что кеш не залипает внутри контейнера.
🧠 Бонус: посмотреть размер кеша
composer clear-cache
Зачем это нужно?
Composer кеширует метаданные пакетов и архивы, чтобы ускорять работу. Это удобно, но в некоторых случаях кеш может стать источником проблем:
🔸 обновления зависимостей «не видятся»;
🔸 Composer использует устаревшие версии;
🔸 баги или непредсказуемое поведение при установке/обновлении пакетов.
В таких случаях первое, что стоит попробовать — очистить кеш.
Когда это особенно полезно:
🔹 После смены версии PHP или Composer.
🔹 После редактирования
composer.json
вручную.🔹 При сбоях в
composer install
или composer update
.🔹 Если Composer «видит» зависимости, которых уже нет.
Где живёт кеш?
По умолчанию:
macOS / Linux:
~/.composer/cache
Windows:
%LOCALAPPDATA%\Composer\Cache
✅
Хорошо сочетать с полной переустановкой зависимостей:
rm -rf vendor/ composer.lock
composer clear-cache
composer install
✅ Используйте в CI при странных ошибках установки зависимостей.
✅ Если вы используете Docker, убедитесь, что кеш не залипает внутри контейнера.
🧠 Бонус: посмотреть размер кеша
du -sh ~/.composer/cache
❤9👍5🔥3
⚡️ Почему лучшие разработчики всегда на шаг впереди?
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: www.tgoop.com/ai_machinelearning_big_data
Python: www.tgoop.com/pythonl
Linux: www.tgoop.com/linuxacademiya
Мл собес www.tgoop.com/machinelearning_interview
C++ www.tgoop.com/cpluspluc
Docker: www.tgoop.com/DevopsDocker
Хакинг: www.tgoop.com/linuxkalii
МЛ: www.tgoop.com/machinelearning_ru
Devops: www.tgoop.com/DevOPSitsec
Data Science: www.tgoop.com/data_analysis_ml
Javascript: www.tgoop.com/javascriptv
C#: www.tgoop.com/csharp_ci
Java: www.tgoop.com/java_library
Базы данных: www.tgoop.com/sqlhub
Python собеседования: www.tgoop.com/python_job_interview
Мобильная разработка: www.tgoop.com/mobdevelop
Golang: www.tgoop.com/Golang_google
React: www.tgoop.com/react_tg
Rust: www.tgoop.com/rust_code
ИИ: www.tgoop.com/vistehno
PHP: www.tgoop.com/phpshka
Android: www.tgoop.com/android_its
Frontend: www.tgoop.com/front
Big Data: www.tgoop.com/bigdatai
МАТЕМАТИКА: www.tgoop.com/data_math
Kubernets: www.tgoop.com/kubernetc
Разработка игр: https://www.tgoop.com/gamedev
Физика: www.tgoop.com/fizmat
Папка Go разработчика: www.tgoop.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tgoop.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tgoop.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tgoop.com/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: www.tgoop.com/memes_prog
🇬🇧Английский: www.tgoop.com/english_forprogrammers
🧠ИИ: www.tgoop.com/vistehno
🖥 Chatgpt для кода в тг: @Chatgpturbobot -
📕Ит-книги: https://www.tgoop.com/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии www.tgoop.com/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: www.tgoop.com/ai_machinelearning_big_data
Python: www.tgoop.com/pythonl
Linux: www.tgoop.com/linuxacademiya
Мл собес www.tgoop.com/machinelearning_interview
C++ www.tgoop.com/cpluspluc
Docker: www.tgoop.com/DevopsDocker
Хакинг: www.tgoop.com/linuxkalii
МЛ: www.tgoop.com/machinelearning_ru
Devops: www.tgoop.com/DevOPSitsec
Data Science: www.tgoop.com/data_analysis_ml
Javascript: www.tgoop.com/javascriptv
C#: www.tgoop.com/csharp_ci
Java: www.tgoop.com/java_library
Базы данных: www.tgoop.com/sqlhub
Python собеседования: www.tgoop.com/python_job_interview
Мобильная разработка: www.tgoop.com/mobdevelop
Golang: www.tgoop.com/Golang_google
React: www.tgoop.com/react_tg
Rust: www.tgoop.com/rust_code
ИИ: www.tgoop.com/vistehno
PHP: www.tgoop.com/phpshka
Android: www.tgoop.com/android_its
Frontend: www.tgoop.com/front
Big Data: www.tgoop.com/bigdatai
МАТЕМАТИКА: www.tgoop.com/data_math
Kubernets: www.tgoop.com/kubernetc
Разработка игр: https://www.tgoop.com/gamedev
Физика: www.tgoop.com/fizmat
Папка Go разработчика: www.tgoop.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tgoop.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tgoop.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tgoop.com/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: www.tgoop.com/memes_prog
🇬🇧Английский: www.tgoop.com/english_forprogrammers
🧠ИИ: www.tgoop.com/vistehno
📕Ит-книги: https://www.tgoop.com/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии www.tgoop.com/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👎1
Стоит ли изучать Symfony, если вы фрилансер или маленькое агентство?
К нам пришёл вопрос от подписчика:
«Symfony — это только для крупных команд и энтерпрайз-проектов, или его можно смело использовать фрилансерам и маленьким агентствам?»
Anton , PHP-разработчик
Symfony — мощный и гибкий фреймворк, который часто ассоциируется с большими корпоративными проектами. Но стоит ли его учить, если вы — фрилансер или маленькая команда?
Symfony — не только для больших проектов
Да, Symfony отлично масштабируется для сложных систем с несколькими командами и сотнями модулей. Но его компоненты можно использовать по отдельности, что даёт гибкость и небольшим проектам. Он не обязательно громоздкий — всё зависит от подхода.
Обучение Symfony — инвестиция в профессионализм
В отличие от более «opinionated» фреймворков (например, Laravel), Symfony даёт больше контроля и понимания, как устроен PHP-стек изнутри. Это даёт прочный фундамент, который пригодится при росте и переходе к более сложным задачам.
Для фрилансера важна универсальность
Symfony подходит, если вы хотите не просто быстро делать задачи, а понимать архитектуру, строить расширяемые решения и работать с разными клиентами. Это может быть полезно и для маленьких проектов, где качество важнее количества.
Однако, время — главный ресурс
Для простых сайтов и MVP иногда проще взять что-то более лёгкое и быстрое. Но если вы готовы инвестировать время в изучение, Symfony откроет двери к более серьёзным проектам и клиентам.
Что делать?
🔸 Если вы начинаете и хотите быстро запускать проекты — можно рассмотреть более «легковесные» фреймворки.
🔸 Если вы планируете расти, работать с разными клиентами и стремитесь к глубине — Symfony стоит учить и использовать даже в маленьких проектах.
🔸 Комбинируйте: учитесь Symfony на уровне компонентов и используйте именно то, что нужно для конкретной задачи.
К нам пришёл вопрос от подписчика:
«Symfony — это только для крупных команд и энтерпрайз-проектов, или его можно смело использовать фрилансерам и маленьким агентствам?»
Anton , PHP-разработчик
Symfony — мощный и гибкий фреймворк, который часто ассоциируется с большими корпоративными проектами. Но стоит ли его учить, если вы — фрилансер или маленькая команда?
Symfony — не только для больших проектов
Да, Symfony отлично масштабируется для сложных систем с несколькими командами и сотнями модулей. Но его компоненты можно использовать по отдельности, что даёт гибкость и небольшим проектам. Он не обязательно громоздкий — всё зависит от подхода.
Обучение Symfony — инвестиция в профессионализм
В отличие от более «opinionated» фреймворков (например, Laravel), Symfony даёт больше контроля и понимания, как устроен PHP-стек изнутри. Это даёт прочный фундамент, который пригодится при росте и переходе к более сложным задачам.
Для фрилансера важна универсальность
Symfony подходит, если вы хотите не просто быстро делать задачи, а понимать архитектуру, строить расширяемые решения и работать с разными клиентами. Это может быть полезно и для маленьких проектов, где качество важнее количества.
Однако, время — главный ресурс
Для простых сайтов и MVP иногда проще взять что-то более лёгкое и быстрое. Но если вы готовы инвестировать время в изучение, Symfony откроет двери к более серьёзным проектам и клиентам.
Что делать?
🔸 Если вы начинаете и хотите быстро запускать проекты — можно рассмотреть более «легковесные» фреймворки.
🔸 Если вы планируете расти, работать с разными клиентами и стремитесь к глубине — Symfony стоит учить и использовать даже в маленьких проектах.
🔸 Комбинируйте: учитесь Symfony на уровне компонентов и используйте именно то, что нужно для конкретной задачи.
❤6👍4💯1
✨ Prism — мост между Laravel и большими языковыми моделями. Этот пакет упрощает интеграцию LLM в Laravel-приложения, предлагая элегантный синтаксис для генерации текста и управления диалогами. С Prism разработчики могут легко добавлять ИИ-функционал — от чат-ботов до сложных многошаговых сценариев.
Инструмент поддерживает различных провайдеров ИИ через единый интерфейс. Пакет особенно полезен для создания AI-ассистентов и умных текстовых процессоров без глубокого погружения в API провайдеров.
🤖 GitHub
Инструмент поддерживает различных провайдеров ИИ через единый интерфейс. Пакет особенно полезен для создания AI-ассистентов и умных текстовых процессоров без глубокого погружения в API провайдеров.
🤖 GitHub
👍11❤4