Удаленка или офис? Решать вам
Понедельник, 9:00. Один разработчик в пижаме уже запустил IDE, держа в одной руке кота, а в другой — кофе. В это же время его коллега едет в офис, стоя в пробке и слушая подкаст с ускорением 1.5x.
Две реальности современного разработчика. Но какая эффективнее?
Недавние исследования показывают, что продуктивность на удалёнке выше на 13%, НО... отчуждение и профессиональное выгорание тоже часто выше.
А что думаете вы? Где лучше писать код: дома с котом или в офисе с коллегами? Голосуйте и пишите свое мнение в комментариях 👀
❤️ — удалёнка навсегда, работаю в пижаме и счастлив
🤝 — только офис, нужны люди и границы
👾 — гибрид, ни нашим, ни вашим
Библиотека пхпшника #междусобойчик
Понедельник, 9:00. Один разработчик в пижаме уже запустил IDE, держа в одной руке кота, а в другой — кофе. В это же время его коллега едет в офис, стоя в пробке и слушая подкаст с ускорением 1.5x.
Две реальности современного разработчика. Но какая эффективнее?
Недавние исследования показывают, что продуктивность на удалёнке выше на 13%, НО... отчуждение и профессиональное выгорание тоже часто выше.
А что думаете вы? Где лучше писать код: дома с котом или в офисе с коллегами? Голосуйте и пишите свое мнение в комментариях 👀
❤️ — удалёнка навсегда, работаю в пижаме и счастлив
🤝 — только офис, нужны люди и границы
👾 — гибрид, ни нашим, ни вашим
Библиотека пхпшника #междусобойчик
❤67👾62👏1
Мы знаем, что большинство из вас — крутые сеньоры😎 Но также здесь есть новички, которым могут пригодиться горячие клавиши в PhpStorm. Вот подборка наиболее полезных сочетаний для навигации и поиска:
🔹 Двойное нажатие Shift: открывает окно Search Everywhere для быстрого поиска файлов, классов или действий по всему проекту.
🔹 Ctrl + N: переход к классу по имени.
🔹 Ctrl + Shift + N: поиск и открытие файла по названию.
🔹 Ctrl + Alt + Shift + N: быстрый поиск и переход к символу (классу, методу, переменной, константе).
Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10💯2
🤩 База данных SQLite searchcode.com, вероятно, на 6 терабайт больше вашей
Разработчик сервиса для поиска исходного кода searchcode.com прошел длинный путь и разные стеки:
1️⃣ PHP, CodeIgniter, MySQL, Memcached, Apache2 и Sphinx search.
2️⃣ Python, Django, MySQL, Memcached, Sphinx search, Nginx and RabbitMQ.
3️⃣ Никогда неопубликованная в паблик версия на Java, MySQL, Memcached, Nginx и Sphinx search.
4️⃣ Go, MySQL, Redis, Caddy и Manticore search.
5️⃣ Manticore search заменен на custom index и стек включал Go, MySQL, Redis и Caddy.
Но пришел с такому набору технологий: Go, SQLite, Caddy. SQLite оказался быстрее MySQL за счёт отсутствия сетевых задержек и отлично справился с нагрузкой в 6+ ТБ, обеспечил более высокую скорость работы, а файловое сжатие помогло снизить требования к хранилищу.
👉 Читать подробнее
Разработчик сервиса для поиска исходного кода searchcode.com прошел длинный путь и разные стеки:
1️⃣ PHP, CodeIgniter, MySQL, Memcached, Apache2 и Sphinx search.
2️⃣ Python, Django, MySQL, Memcached, Sphinx search, Nginx and RabbitMQ.
3️⃣ Никогда неопубликованная в паблик версия на Java, MySQL, Memcached, Nginx и Sphinx search.
4️⃣ Go, MySQL, Redis, Caddy и Manticore search.
5️⃣ Manticore search заменен на custom index и стек включал Go, MySQL, Redis и Caddy.
Но пришел с такому набору технологий: Go, SQLite, Caddy. SQLite оказался быстрее MySQL за счёт отсутствия сетевых задержек и отлично справился с нагрузкой в 6+ ТБ, обеспечил более высокую скорость работы, а файловое сжатие помогло снизить требования к хранилищу.
👉 Читать подробнее
👍3🌚2🤔1🥱1
✔️ Директива «checked» для Blade
Часто нам нужно условно пометить входные данные как проверенные. Хотя это можно сделать вручную, Laravel предоставляет классную блейд-директиву
Библиотека пхпшника #совет
Часто нам нужно условно пометить входные данные как проверенные. Хотя это можно сделать вручную, Laravel предоставляет классную блейд-директиву
checked
, чтобы сделать именно это 🚀Библиотека пхпшника #совет
👍6🤔2
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
Сегодня отмечаем вклад девушек-разработчиков, аналитиков, тестировщиков, тимлидов и всех, кто влюблён в код. Без вас IT не было бы таким, каким мы его знаем. С праздником, коллеги 💐
Женщины оставили огромный след в истории IT. Если вам кажется, что программирование — это исключительно «мужская территория», взгляните, вот лишь несколько легендарных женщин:
🔹 Ада Лавлейс — автор первой компьютерной программы ещё в 19 веке.
🔹 Грейс Хоппер — создала первый компилятор и популяризировала термин «баг».
🔹 Барбара Лисков — её принцип Liskov Substitution является основой ООП, в том числе в Java.
🔹 Эдит Кларк — первая женщина-инженер, внесшая вклад в вычислительные методы в энергетике.
🔹 Маргарет Гамильтон — разработала софт для посадки «Аполлона-11» на Луну.
А это только малая часть. В статье собраны ещё больше вдохновляющих историй.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤩1🌚1
💻 Подборка новостей по PHP за неделю:
🔎 Релиз Livewire 3.6
Команда Laravel Livewire выпустила версию 3.6, в которой представлены новые HTML-директивы для отображения и скрытия элементов DOM, а также улучшенные JavaScript-действия.
🔎 Релиз Symfony 7.2.4
Вышла версия Symfony 7.2.4, включающая важные изменения и исправления ошибок по сравнению с предыдущей версией 7.2.3.
🔎 Неделя Symfony #948 (24 февраля — 2 марта 2025 года)
На этой неделе были выпущены поддерживающие версии Symfony 6.4.19 и 7.2.4. Кроме того, в предстоящей версии Symfony 7.3 добавлен помощник для отображения структуры каталогов в консоли.
🔎 Релиз CakePHP 5.1.6
В новой версии улучшено поведение метода requireFieldPresence в сущностях, добавлена поддержка IPv6 при разборе DSN источников данных и многое другое.
🔎 Релиз Expose v3
Компания Beyond Code анонсировала Expose v3 — приложение, позволяющее делиться веб-сервисами на локальной машине через любые брандмауэры или VPN
Библиотека пхпшника #свежак
🔎 Релиз Livewire 3.6
Команда Laravel Livewire выпустила версию 3.6, в которой представлены новые HTML-директивы для отображения и скрытия элементов DOM, а также улучшенные JavaScript-действия.
🔎 Релиз Symfony 7.2.4
Вышла версия Symfony 7.2.4, включающая важные изменения и исправления ошибок по сравнению с предыдущей версией 7.2.3.
🔎 Неделя Symfony #948 (24 февраля — 2 марта 2025 года)
На этой неделе были выпущены поддерживающие версии Symfony 6.4.19 и 7.2.4. Кроме того, в предстоящей версии Symfony 7.3 добавлен помощник для отображения структуры каталогов в консоли.
🔎 Релиз CakePHP 5.1.6
В новой версии улучшено поведение метода requireFieldPresence в сущностях, добавлена поддержка IPv6 при разборе DSN источников данных и многое другое.
🔎 Релиз Expose v3
Компания Beyond Code анонсировала Expose v3 — приложение, позволяющее делиться веб-сервисами на локальной машине через любые брандмауэры или VPN
Библиотека пхпшника #свежак
👍3❤1
Что такое DDD?
DDD, или Domain-Driven Design (Проектирование с учетом предметной области) — это методология разработки программного обеспечения, которая сосредотачивается на моделировании бизнес-процессов и бизнес-логики в предметной области приложения. Она была предложена Эриком Эвансом в его книге «Domain-Driven Design: Tackling Complexity in the Heart of Software» и предоставляет набор практик и шаблонов для разработки сложных систем.
Основные концепции DDD включают:
Предметная область (Domain):
Предметная область — это ключевой компонент DDD. Это область, на которую направлена разработка, и она описывает бизнес-процессы, правила и логику приложения.
Эксперты предметной области (Domain Experts):
Эксперты предметной области — это люди, обладающие экспертными знаниями в конкретной области бизнеса. В DDD активно взаимодействуют с разработчиками, помогая им понимать сложности предметной области.
Сущности (Entities) и Значения (Value Objects):
Сущности представляют объекты, имеющие уникальный идентификатор, который определяет их в предметной области. Значения — это объекты, описывающие характеристики, которые не имеют своего идентификатора и сравниваются по значению.
Агрегаты (Aggregates):
Агрегаты — это группы связанных сущностей и значений, образующие логически связанные единицы. Агрегаты имеют корень (главную сущность) и инварианты (правила, которые должны соблюдаться внутри агрегата).
Репозитории (Repositories):
Репозитории предоставляют интерфейс для работы с агрегатами и предоставляют методы для поиска и сохранения данных в предметной области.
Сервисы приложения (Application Services) и Фабрики (Factories):
Сервисы приложения — это слой, предоставляющий операции, доступные извне приложения. Фабрики создают сложные объекты, облегчая их создание и инициализацию.
#вопросы_с_собеседований
DDD, или Domain-Driven Design (Проектирование с учетом предметной области) — это методология разработки программного обеспечения, которая сосредотачивается на моделировании бизнес-процессов и бизнес-логики в предметной области приложения. Она была предложена Эриком Эвансом в его книге «Domain-Driven Design: Tackling Complexity in the Heart of Software» и предоставляет набор практик и шаблонов для разработки сложных систем.
Основные концепции DDD включают:
Предметная область (Domain):
Предметная область — это ключевой компонент DDD. Это область, на которую направлена разработка, и она описывает бизнес-процессы, правила и логику приложения.
Эксперты предметной области (Domain Experts):
Эксперты предметной области — это люди, обладающие экспертными знаниями в конкретной области бизнеса. В DDD активно взаимодействуют с разработчиками, помогая им понимать сложности предметной области.
Сущности (Entities) и Значения (Value Objects):
Сущности представляют объекты, имеющие уникальный идентификатор, который определяет их в предметной области. Значения — это объекты, описывающие характеристики, которые не имеют своего идентификатора и сравниваются по значению.
Агрегаты (Aggregates):
Агрегаты — это группы связанных сущностей и значений, образующие логически связанные единицы. Агрегаты имеют корень (главную сущность) и инварианты (правила, которые должны соблюдаться внутри агрегата).
Репозитории (Repositories):
Репозитории предоставляют интерфейс для работы с агрегатами и предоставляют методы для поиска и сохранения данных в предметной области.
Сервисы приложения (Application Services) и Фабрики (Factories):
Сервисы приложения — это слой, предоставляющий операции, доступные извне приложения. Фабрики создают сложные объекты, облегчая их создание и инициализацию.
#вопросы_с_собеседований
👍3🔥3😁3🥱3❤1
Отобрали для вас полезные и проверенные каналы для программистов — в них вы найдете все самое интересное, от технических новостей до практических гайдов.
IT Job Hub | Работа и вакансии в IT — избранные IT-вакансии
Библиотека программиста — новости из мира IT и технологий
Книги для программистов — самые годные книги по любым языкам и стекам
IT-мемы — мемы про жизу айтишника
Proglib Academy — обучение и курсы, чтобы стать топовым специалистом
Азбука айтишника — азы из мира разработки
Библиотека нейросетей — лайфхаки и промпты для разных задач, баттлы нейронок и новости из мира ИИ
Библиотека фронтендера — все о JS, React, Angular и не только
Библиотека мобильного разработчика — лайфхаки и новости из мира Swift и Kotlin
Библиотека хакера — уязвимости, атаки, бэкдоры и как от них защититься
Библиотека тестировщика — самое интересное о том, как крашить код
🦫 Go
Библиотека Go-разработчика
Библиотека задач по Go
Библиотека Go для собеса
Вакансии по Go
#️⃣ C#
Библиотека шарписта
Библиотека задач по C#
Библиотека собеса по C#
Вакансии по C#
🔧 DevOps
Библиотека devops’а
Библиотека задач по DevOps
Библиотека собеса по DevOps
Вакансии по DevOps & SRE
🐘 PHP
Библиотека пхпшника
Библиотека задач по PHP
Библиотека PHP для собеса
Вакансии по PHP, Symfony, Laravel
🐍 Python
Библиотека питониста
Библиотека Python для собеса
Библиотека задач по Python
Вакансии по питону, Django, Flask
☕️ Java
Библиотека джависта
Библиотека задач по Java
Библиотека Java для собеса
Вакансии по Java
📊 Data Science
Библиотека дата-сайентиста
Библиотека задач по Data Science
Библиотека Data Science для собеса
Вакансии по Data Science
🎮 C++
Библиотека C/C++ разработчика
Библиотека задач по C++
Библиотека C++ для собеса
Вакансии по C++
Подписывайтесь на интересные вам каналы и сохраняйте пост в закладки, чтобы не потерять 🔑
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
⚙️ Laravel 12: Новые возможности и улучшения
Что нового
Laravel 12 представляет ряд значительных обновлений, направленных на улучшение производительности и удобства разработки:
🔸Новые Starter Kits: Внедрены стартовые наборы с поддержкой Vue, React и Livewire, основанные на компонентах библиотеки shadcn/ui. Это упрощает интеграцию популярных фронтенд-фреймворков в проекты на Laravel.
🔸Обновления зависимостей: Удалена поддержка Carbon 2; теперь требуется Carbon 3. Также необходимо обновить Laravel Installer для поддержки Laravel 12 и новых стартовых наборов.
🔸Улучшенный Query Builder: Введен более гибкий синтаксис для построения сложных запросов, улучшена поддержка подзапросов и драйверов баз данных, что повышает производительность и совместимость с новыми версиями СУБД.
🔸Расширенная разработка API: Улучшены инструменты для создания и управления документацией API, поддержка версионирования и гибкие механизмы ограничения скорости, что делает разработку API более надежной и эффективной.
Как начать
1. Обновите зависимости: Убедитесь, что используете Carbon 3 и обновленный Laravel Installer.
2. Выберите Starter Kit: Определите, какой из новых стартовых наборов (Vue, React, Livewire) лучше подходит для вашего проекта.
3. Изучите обновления: Ознакомьтесь с улучшениями в Query Builder и возможностями разработки API для эффективного использования новых функций.
Где применять
🔹 Проекты с современным фронтендом: Интеграция с Vue, React и Livewire упрощает создание динамичных интерфейсов.
🔹 Сложные API: Расширенные возможности разработки и управления API делают Laravel 12 отличным выбором для проектов с обширной серверной логикой.
🔹 Производительные приложения: Улучшения в Query Builder и поддержка современных СУБД способствуют повышению производительности.
👉 Читать статью
💬 Уже установили 12 версию? Как вам?
Библиотека пхпшника #буст
Что нового
Laravel 12 представляет ряд значительных обновлений, направленных на улучшение производительности и удобства разработки:
🔸Новые Starter Kits: Внедрены стартовые наборы с поддержкой Vue, React и Livewire, основанные на компонентах библиотеки shadcn/ui. Это упрощает интеграцию популярных фронтенд-фреймворков в проекты на Laravel.
🔸Обновления зависимостей: Удалена поддержка Carbon 2; теперь требуется Carbon 3. Также необходимо обновить Laravel Installer для поддержки Laravel 12 и новых стартовых наборов.
🔸Улучшенный Query Builder: Введен более гибкий синтаксис для построения сложных запросов, улучшена поддержка подзапросов и драйверов баз данных, что повышает производительность и совместимость с новыми версиями СУБД.
🔸Расширенная разработка API: Улучшены инструменты для создания и управления документацией API, поддержка версионирования и гибкие механизмы ограничения скорости, что делает разработку API более надежной и эффективной.
Как начать
1. Обновите зависимости: Убедитесь, что используете Carbon 3 и обновленный Laravel Installer.
2. Выберите Starter Kit: Определите, какой из новых стартовых наборов (Vue, React, Livewire) лучше подходит для вашего проекта.
3. Изучите обновления: Ознакомьтесь с улучшениями в Query Builder и возможностями разработки API для эффективного использования новых функций.
Где применять
🔹 Проекты с современным фронтендом: Интеграция с Vue, React и Livewire упрощает создание динамичных интерфейсов.
🔹 Сложные API: Расширенные возможности разработки и управления API делают Laravel 12 отличным выбором для проектов с обширной серверной логикой.
🔹 Производительные приложения: Улучшения в Query Builder и поддержка современных СУБД способствуют повышению производительности.
👉 Читать статью
💬 Уже установили 12 версию? Как вам?
Библиотека пхпшника #буст
😁6
Автоматизация анонимизации в Symfony
В статье рассматривается создание пользовательского бандла для автоматизации анонимизации пользовательских данных в нескольких приложениях Symfony, что особенно актуально в контексте соблюдения требований GDPR.
Контекст проекта:
Компания столкнулась с задачей внедрения правил GDPR в нескольких приложениях, где хранятся данные пользователей. Основные требования включали:
🔸 Анонимизацию конкретного пользователя во всех приложениях через единый интерфейс, используя имя, фамилию, email или номер телефона.
🔸 Поиск пользователя и выбор для анонимизации.
🔸 Автоматическую анонимизацию пользователей, не обновлявшихся более трёх лет.
Проблемы:
🔹 Различные версии PHP и фреймворков в приложениях.
🔹 Несогласованность структур баз данных (например, поля "имя" могли называться по-разному).
🔹 Множественные таблицы с данными пользователей.
🔹 Необходимость единого подхода при разнообразных архитектурах приложений.
Решение:
Создан Symfony-бандл, устанавливаемый в каждое приложение, предоставляющий необходимые функции анонимизации. При установке бандла создаётся таблица для хранения запросов на анонимизацию. Добавляются два маршрута:
🔸 Search GET – поиск пользователя в базе данных по заданным параметрам.
🔸 Anonymize POST – создание записи запроса на анонимизацию для указанного пользователя.
Для определения, в каких сущностях и свойствах выполнять поиск и анонимизацию, используются атрибуты:
🔹 Search – определяет, какие поля использовать для фильтрации и форматирования вывода.
🔹 Anonymize – применяется к полям, требующим анонимизации, с указанием типа и значения замены.
Анонимизация коллекций осуществляется рекурсивно для всех элементов.
Запросы на анонимизацию обрабатываются асинхронно с помощью команды cron, которая проверяет и выполняет их.
Единый интерфейс:
🔸 Создано приложение-шлюз, получающее запросы от фронтенда и перенаправляющее их в приложения с установленным бандлом или реализованными API для поиска и анонимизации.
🔸 Для обеспечения безопасности доступ к запросам анонимизации контролируется через отдельное приложение, хранящее информацию о доступе пользователей, и используются уникальные токены для каждого приложения.
Автоматическая анонимизация:
🔹 Введён атрибут AutomaticAnonymization, применяемый к основному классу пользователя в каждом приложении.
🔹 Он указывает поле с датой последнего обновления.
🔹 Ежедневно запускается команда, анализирующая пользователей, не обновлявшихся более трёх лет, и создающая для них запросы на анонимизацию.
Ограничения:
🔸 При работе с приложениями на PHP 7.4, не поддерживающими атрибуты, использовались аннотации.
🔸 Для предотвращения перегрузки базы данных ограничены партии анонимизации до 1000 записей за запуск.
🔸 Реализован механизм резервного копирования: оригинальные данные сохраняются в зашифрованном виде и автоматически удаляются через месяц.
🔗 Medium
Библиотека пхпшника
В статье рассматривается создание пользовательского бандла для автоматизации анонимизации пользовательских данных в нескольких приложениях Symfony, что особенно актуально в контексте соблюдения требований GDPR.
Контекст проекта:
Компания столкнулась с задачей внедрения правил GDPR в нескольких приложениях, где хранятся данные пользователей. Основные требования включали:
🔸 Анонимизацию конкретного пользователя во всех приложениях через единый интерфейс, используя имя, фамилию, email или номер телефона.
🔸 Поиск пользователя и выбор для анонимизации.
🔸 Автоматическую анонимизацию пользователей, не обновлявшихся более трёх лет.
Проблемы:
🔹 Различные версии PHP и фреймворков в приложениях.
🔹 Несогласованность структур баз данных (например, поля "имя" могли называться по-разному).
🔹 Множественные таблицы с данными пользователей.
🔹 Необходимость единого подхода при разнообразных архитектурах приложений.
Решение:
Создан Symfony-бандл, устанавливаемый в каждое приложение, предоставляющий необходимые функции анонимизации. При установке бандла создаётся таблица для хранения запросов на анонимизацию. Добавляются два маршрута:
🔸 Search GET – поиск пользователя в базе данных по заданным параметрам.
🔸 Anonymize POST – создание записи запроса на анонимизацию для указанного пользователя.
Для определения, в каких сущностях и свойствах выполнять поиск и анонимизацию, используются атрибуты:
🔹 Search – определяет, какие поля использовать для фильтрации и форматирования вывода.
🔹 Anonymize – применяется к полям, требующим анонимизации, с указанием типа и значения замены.
Анонимизация коллекций осуществляется рекурсивно для всех элементов.
Запросы на анонимизацию обрабатываются асинхронно с помощью команды cron, которая проверяет и выполняет их.
Единый интерфейс:
🔸 Создано приложение-шлюз, получающее запросы от фронтенда и перенаправляющее их в приложения с установленным бандлом или реализованными API для поиска и анонимизации.
🔸 Для обеспечения безопасности доступ к запросам анонимизации контролируется через отдельное приложение, хранящее информацию о доступе пользователей, и используются уникальные токены для каждого приложения.
Автоматическая анонимизация:
🔹 Введён атрибут AutomaticAnonymization, применяемый к основному классу пользователя в каждом приложении.
🔹 Он указывает поле с датой последнего обновления.
🔹 Ежедневно запускается команда, анализирующая пользователей, не обновлявшихся более трёх лет, и создающая для них запросы на анонимизацию.
Ограничения:
🔸 При работе с приложениями на PHP 7.4, не поддерживающими атрибуты, использовались аннотации.
🔸 Для предотвращения перегрузки базы данных ограничены партии анонимизации до 1000 записей за запуск.
🔸 Реализован механизм резервного копирования: оригинальные данные сохраняются в зашифрованном виде и автоматически удаляются через месяц.
🔗 Medium
Библиотека пхпшника
👍2
🔧 CLI-лайфхак: Быстрое развертывание локального веб-сервера с помощью встроенного сервера PHP
Если вам нужно быстро протестировать или продемонстрировать свой код, нет необходимости устанавливать сложные веб-серверы. PHP предоставляет встроенный сервер, который можно запустить одной командой в терминале! 🖥️
Как это сделать?
1. Откройте терминал на вашем компьютере.
2. Перейдите в директорию вашего проекта с помощью команды
3. Запустите встроенный сервер, выполнив следующую команду:
Здесь
4. Откройте браузер и перейдите по адресу
Почему это удобно?
🔸 Быстрота и простота: не требуется установка и настройка дополнительных серверов, таких как Apache или Nginx.
🔸 Мобильность: работает на любой системе с установленным PHP.
🔸 Идеально для разработки и тестирования: позволяет мгновенно увидеть изменения в коде.
❗ Обратите внимание: встроенный сервер PHP предназначен только для разработки и тестирования.
Библиотека пхпшника #буст
Если вам нужно быстро протестировать или продемонстрировать свой код, нет необходимости устанавливать сложные веб-серверы. PHP предоставляет встроенный сервер, который можно запустить одной командой в терминале! 🖥️
Как это сделать?
1. Откройте терминал на вашем компьютере.
2. Перейдите в директорию вашего проекта с помощью команды
cd /путь/к/вашему/проекту
.3. Запустите встроенный сервер, выполнив следующую команду:
php -S localhost:8000
Здесь
localhost
— адрес сервера, а 8000
— порт, на котором он будет работать. Вы можете изменить порт на любой другой, если 8000 уже занят.4. Откройте браузер и перейдите по адресу
https://localhost:8000
. Теперь ваш проект доступен для просмотра и тестирования! 🌐Почему это удобно?
🔸 Быстрота и простота: не требуется установка и настройка дополнительных серверов, таких как Apache или Nginx.
🔸 Мобильность: работает на любой системе с установленным PHP.
🔸 Идеально для разработки и тестирования: позволяет мгновенно увидеть изменения в коде.
❗ Обратите внимание: встроенный сервер PHP предназначен только для разработки и тестирования.
Библиотека пхпшника #буст
😁10👍3🤔1
Гайд по документированию запросов API с помощью Scramble
Scramble упрощает документирование API, автоматически извлекая данные о запросах из кода. Это исключает необходимость вручную описывать параметры, снижает ошибки и предотвращает устаревание документации.
🔸 Автоматическая генерация
Scramble анализирует код и создает документацию на основе правил валидации, параметров маршрутов и обращений к $request. Например, параметры пути определяются по типу модели: integer или uuid.
🔹 Дополнение документации
К автоматически созданной структуре можно добавить описания, примеры и значения по умолчанию. Если Scramble пропустил параметр или его тип указан неверно, это легко исправить вручную.
🔸 Документирование заголовков, куки и параметров
Scramble не описывает заголовки и куки автоматически, но их можно добавить через специальные аннотации. Также можно документировать параметры запроса, пути и тела, включая вложенные структуры.
🔹 Общие параметры для всех эндпоинтов
Если заголовки или куки используются во всех запросах, их можно задать один раз с помощью глобальных трансформеров, что сократит дублирование кода.
🔸 Аутентификация и безопасность
Документировать механизм авторизации можно с помощью трансформеров, а публичные эндпоинты помечать как не требующие аутентификации. Также Scramble позволяет автоматически убирать требование аутентификации для маршрутов без auth-middleware.
🔹 Группировка и сортировка эндпоинтов
Для удобства документацию можно разделять на группы и управлять их порядком, добавляя соответствующие метки.
👉Читать статью
Библиотека пхпшника
Scramble упрощает документирование API, автоматически извлекая данные о запросах из кода. Это исключает необходимость вручную описывать параметры, снижает ошибки и предотвращает устаревание документации.
🔸 Автоматическая генерация
Scramble анализирует код и создает документацию на основе правил валидации, параметров маршрутов и обращений к $request. Например, параметры пути определяются по типу модели: integer или uuid.
🔹 Дополнение документации
К автоматически созданной структуре можно добавить описания, примеры и значения по умолчанию. Если Scramble пропустил параметр или его тип указан неверно, это легко исправить вручную.
🔸 Документирование заголовков, куки и параметров
Scramble не описывает заголовки и куки автоматически, но их можно добавить через специальные аннотации. Также можно документировать параметры запроса, пути и тела, включая вложенные структуры.
🔹 Общие параметры для всех эндпоинтов
Если заголовки или куки используются во всех запросах, их можно задать один раз с помощью глобальных трансформеров, что сократит дублирование кода.
🔸 Аутентификация и безопасность
Документировать механизм авторизации можно с помощью трансформеров, а публичные эндпоинты помечать как не требующие аутентификации. Также Scramble позволяет автоматически убирать требование аутентификации для маршрутов без auth-middleware.
🔹 Группировка и сортировка эндпоинтов
Для удобства документацию можно разделять на группы и управлять их порядком, добавляя соответствующие метки.
👉Читать статью
Библиотека пхпшника
👍3
❓ Куда расти PHP-разработчику
Опытные разработчики, что посоветуете Алексею? Автор самого полезного и детального ответа получит вечную славу и уважение коллег 🫡
💬 Делитесь в комментариях:
— Какие технические навыки необходимы для роста в PHP
— Насколько важны фреймворки и архитектура для карьерного роста
— Какие soft skills действительно ценят компании
— Ваши истории успеха
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
Библиотека пхпшника #междусобойчик
Наш подписчик задал нам вопрос:
«Я PHP-разработчик с опытом 1,5 года. Но ощущаю, что топчусь на месте. Какие навыки стоит развивать, чтобы через год-два вырасти до сеньора или даже тимлида? Углубляться в фреймворки или лучше прокачивать soft skills?»
Алексей, PHP Developer
Опытные разработчики, что посоветуете Алексею? Автор самого полезного и детального ответа получит вечную славу и уважение коллег 🫡
💬 Делитесь в комментариях:
— Какие технические навыки необходимы для роста в PHP
— Насколько важны фреймворки и архитектура для карьерного роста
— Какие soft skills действительно ценят компании
— Ваши истории успеха
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
Библиотека пхпшника #междусобойчик
😁11
🤩 Полная коллекция доков от команды Honeypot про различные популярные ЯП, технологии, библиотеки, фреймворки и инструменты:
📺 Node.js
📺 Ruby on Rails
📺 React.js
📺 Prometheus
📺 Kubernetes: часть 1 & часть 2
📺 Vue.js
📺 GraphQL
📺 Elixir
📺 Ember.js
📺 Angular
Библиотека пхпшника #буст
📺 Node.js
📺 Ruby on Rails
📺 React.js
📺 Prometheus
📺 Kubernetes: часть 1 & часть 2
📺 Vue.js
📺 GraphQL
📺 Elixir
📺 Ember.js
📺 Angular
Библиотека пхпшника #буст
🤩3👍2
📉🤦 152 000 уволенных в IT за год: кому это помогло?
Корпоративная бензопила снова в деле: каждый месяц 2 миллиона американцев теряют работу из-за сокращений. Но действительно ли это помогает компаниям?
🔗 Читать статью
Корпоративная бензопила снова в деле: каждый месяц 2 миллиона американцев теряют работу из-за сокращений. Но действительно ли это помогает компаниям?
🔗 Читать статью
👍5
Кастомные правила PHPStan для улучшения проектов Symfony
Использование PHPStan помогает улучшить качество PHP-кода, особенно в проектах на Symfony, Doctrine и Laravel. Однако для обеспечения долговечности проекта необходимо внедрять дополнительные правила статического анализа. Это включает в себя высокое покрытие типами, качественное тестирование и автоматическое применение правил через CI.
A. Правила для ясного внедрения зависимостей
NoRequiredOutsideClassRule: Запрещает использование атрибута
NoAbstractControllerConstructorRule: Абстрактные контроллеры не должны иметь конструкторы, чтобы избежать жесткой связности и сложностей при наследовании. Вместо этого следует использовать атрибут
NoConstructorAndRequiredTogetherRule: Запрещает одновременное использование конструктора и атрибута #[Required] в одном классе. Необходимо выбрать один способ внедрения зависимостей.
NoFindTaggedServiceIdsCallRule: Предотвращает использование метода
NoGetInControllerRule: Запрещает использование метода
B. Унификация маршрутизации
NoRoutingPrefixRule: Избегает использования префиксов в маршрутах, чтобы обеспечить прозрачность и единообразие определения путей.
NoClassLevelRouteRule: Предотвращает использование маршрутов на уровне класса, предлагая определять пути непосредственно в атрибутах методов для лучшей читаемости и поддержки.
C. Подписчики событий
NoListenerWithoutContractRule: Поощряет использование интерфейса
NoStringInGetSubscribedEventsRule: Требует использования ссылок на классы событий в методе
👉Читать статью
Использование PHPStan помогает улучшить качество PHP-кода, особенно в проектах на Symfony, Doctrine и Laravel. Однако для обеспечения долговечности проекта необходимо внедрять дополнительные правила статического анализа. Это включает в себя высокое покрытие типами, качественное тестирование и автоматическое применение правил через CI.
A. Правила для ясного внедрения зависимостей
NoRequiredOutsideClassRule: Запрещает использование атрибута
#[Required]
в трейтах, чтобы избежать сильной связности и сложночитаемого кода. Рекомендуется использовать явное внедрение через конструктор.NoAbstractControllerConstructorRule: Абстрактные контроллеры не должны иметь конструкторы, чтобы избежать жесткой связности и сложностей при наследовании. Вместо этого следует использовать атрибут
#[Required]
для внедрения зависимостей.NoConstructorAndRequiredTogetherRule: Запрещает одновременное использование конструктора и атрибута #[Required] в одном классе. Необходимо выбрать один способ внедрения зависимостей.
NoFindTaggedServiceIdsCallRule: Предотвращает использование метода
findTaggedServiceIds()
, предлагая вместо этого использовать автоконфигурацию через атрибуты или теги в конфигурации.NoGetInControllerRule: Запрещает использование метода
$this->get()
в контроллерах, поощряя внедрение зависимостей через конструктор.B. Унификация маршрутизации
NoRoutingPrefixRule: Избегает использования префиксов в маршрутах, чтобы обеспечить прозрачность и единообразие определения путей.
NoClassLevelRouteRule: Предотвращает использование маршрутов на уровне класса, предлагая определять пути непосредственно в атрибутах методов для лучшей читаемости и поддержки.
C. Подписчики событий
NoListenerWithoutContractRule: Поощряет использование интерфейса
EventSubscriberInterface
вместо слушателей, чтобы хранить метаданные внутри класса и уменьшить объем конфигурации.NoStringInGetSubscribedEventsRule: Требует использования ссылок на классы событий в методе
getSubscribedEvents()
, что облегчает обновление и улучшает поддержку IDE.👉Читать статью
🔥6❤2
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
😧 58% IT-специалистов страдают: психология успеха и борьба с синдромом самозванца
Синдром самозванца — не просто модный термин, а реальная проблема, с которой сталкиваются даже опытные разработчики. Почему так происходит и как с этим бороться? Разбираемся в причинах «стандартной болезни айтишников»
➡️ Читайте в статье
Спойлер:дело не в навыках, а в психологии успеха
🐸 Библиотека шарписта
Синдром самозванца — не просто модный термин, а реальная проблема, с которой сталкиваются даже опытные разработчики. Почему так происходит и как с этим бороться? Разбираемся в причинах «стандартной болезни айтишников»
Спойлер:
Please open Telegram to view this post
VIEW IN TELEGRAM
👾2