Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Какова цель использования функций array_count_values() и array_search() в PHP?
array_count_values(): Функция
array_search(): Функция
array_count_values(): Функция
array_count_values()
используется для подсчёта количества вхождений значений в массиве. Она возвращает ассоциативный массив, где ключи — это уникальные значения из входного массива, а значения — количество их появлений.array_search(): Функция
array_search()
ищет определённое значение в массиве и возвращает первый ключ, соответствующий этому значению. Если значение не найдено, функция возвращает false
.Какова цель «Gii» в Yii2?
В Yii2 Gii — это мощный инструмент генерации кода, который помогает разработчикам быстро создавать шаблоны кода для моделей, контроллеров, форм, модулей и других компонентов приложения.
Возможности Gii в Yii2:
🔸Ускоряет разработку:
Автоматически генерирует шаблонный код, сокращая рутинные задачи.
🔸Создает модели из базы данных:
Генерирует Active Record модели, анализируя структуру базы данных.
🔸Генерирует CRUD (Создание, Чтение, Обновление, Удаление):
Создает контроллеры, представления и модели для работы с данными.
🔸Уменьшает вероятность ошибок:
Обеспечивает единообразие и правильный синтаксис в сгенерированном коде.
🔸Поддерживает кастомизацию:
Разработчики могут изменять шаблоны кода под нужды проекта.
🔸Расширяет функциональность:
Позволяет создавать собственные шаблоны кода для повторного использования.
Как использовать Gii в Yii2
1. Включите Gii в config/web.php:
2. Откройте Gii в браузере:
3. Выберите нужный генератор (Модель, CRUD, Контроллер и т. д.), введите данные и создайте код.
Использование в командной строке
Gii можно запускать через консоль Yii2:
В Yii2 Gii — это мощный инструмент генерации кода, который помогает разработчикам быстро создавать шаблоны кода для моделей, контроллеров, форм, модулей и других компонентов приложения.
Возможности Gii в Yii2:
🔸Ускоряет разработку:
Автоматически генерирует шаблонный код, сокращая рутинные задачи.
🔸Создает модели из базы данных:
Генерирует Active Record модели, анализируя структуру базы данных.
🔸Генерирует CRUD (Создание, Чтение, Обновление, Удаление):
Создает контроллеры, представления и модели для работы с данными.
🔸Уменьшает вероятность ошибок:
Обеспечивает единообразие и правильный синтаксис в сгенерированном коде.
🔸Поддерживает кастомизацию:
Разработчики могут изменять шаблоны кода под нужды проекта.
🔸Расширяет функциональность:
Позволяет создавать собственные шаблоны кода для повторного использования.
Как использовать Gii в Yii2
1. Включите Gii в config/web.php:
'modules' => [ 'gii' => [ 'class' => 'yii\gii\Module', ],],
2. Откройте Gii в браузере:
http://your-app-url/index.php?r=gii
3. Выберите нужный генератор (Модель, CRUD, Контроллер и т. д.), введите данные и создайте код.
Использование в командной строке
Gii можно запускать через консоль Yii2:
php yii gii/model --tableName=your_table_namephp yii gii/crud --modelClass=app\models\YourModel --controllerClass=app\controllers\YourController
Что такое аннотации в Symfony?
В Symfony аннотации — это специальные комментарии, которые вы можете добавлять в свой код для конфигурирования различных аспектов вашего приложения, таких как маршрутизация, безопасность, валидация и другие. Аннотации — это удобный способ определения настроек конфигурации непосредственно в вашем коде, а не в отдельных файлах конфигурации.
Например, в Symfony вы можете использовать аннотации для определения маршрутов для ваших контроллеров. Вместо конфигурирования маршрутов в отдельном YAML- или XML-файле вы можете добавить аннотацию @Route непосредственно над методом контроллера, чтобы указать шаблон URL, который должен вызывать этот метод.
Symfony предоставляет несколько встроенных аннотаций для настройки различных аспектов вашего приложения, и вы также можете создавать свои собственные пользовательские аннотации при необходимости.
В Symfony аннотации — это специальные комментарии, которые вы можете добавлять в свой код для конфигурирования различных аспектов вашего приложения, таких как маршрутизация, безопасность, валидация и другие. Аннотации — это удобный способ определения настроек конфигурации непосредственно в вашем коде, а не в отдельных файлах конфигурации.
Например, в Symfony вы можете использовать аннотации для определения маршрутов для ваших контроллеров. Вместо конфигурирования маршрутов в отдельном YAML- или XML-файле вы можете добавить аннотацию @Route непосредственно над методом контроллера, чтобы указать шаблон URL, который должен вызывать этот метод.
Symfony предоставляет несколько встроенных аннотаций для настройки различных аспектов вашего приложения, и вы также можете создавать свои собственные пользовательские аннотации при необходимости.
Какие модификаторы видимости есть в РНР?
Если модификатор доступа не указан явно, то он будет считаться как
public
— свойства или методы, объявленные как public, могут быть доступны в любом месте.protected
— свойства или методы доступны только внутри класса, а также в дочерних классах.private
— доступ к private свойствам и методам имеет только класс, в котором эти свойства или методы объявлены.Если модификатор доступа не указан явно, то он будет считаться как
public
.Какова разница между веб-маршрутами и API-маршрутами в Laravel?
В Laravel и веб-маршруты, и API-маршруты служат точками входа для обработки входящих запросов, но обычно они используются для разных целей.
Веб-маршруты:
✔️Веб-маршруты в Laravel в основном используются для обслуживания HTML-представлений и обработки веб-запросов от браузеров.
✔️Они отвечают за отображение веб-страниц, обработку отправленных форм и управление сеансами.
✔️Веб-маршруты определяются по умолчанию в файле routes/web.php.
✔️Они часто включают взаимодействие с пользовательским интерфейсом, такое как отображение форм, представлений и обработка аутентификации пользователей.
API-маршруты:
✔️API-маршруты, напротив, предназначены для обработки запросов и ответов для точек входа API.
✔️Они обычно используются для создания RESTful API или предоставления данных для мобильных приложений, одностраничных приложений (SPA) или других служб.
✔️API-маршруты определяются по умолчанию в файле routes/api.php.
✔️Они обычно возвращают данные в формате JSON или XML, а не отображают HTML-представления.
✔️API-маршруты часто включают операции CRUD (Create, Read, Update, Delete) с ресурсами, такие как извлечение данных из базы данных, создание новых записей, обновление существующих записей или удаление записей.
Таким образом, веб-маршруты используются для обслуживания веб-страниц и обработки запросов браузера, в то время как API-маршруты используются для предоставления данных и взаимодействия с приложениями или службами программным способом.
В Laravel и веб-маршруты, и API-маршруты служат точками входа для обработки входящих запросов, но обычно они используются для разных целей.
Веб-маршруты:
✔️Веб-маршруты в Laravel в основном используются для обслуживания HTML-представлений и обработки веб-запросов от браузеров.
✔️Они отвечают за отображение веб-страниц, обработку отправленных форм и управление сеансами.
✔️Веб-маршруты определяются по умолчанию в файле routes/web.php.
✔️Они часто включают взаимодействие с пользовательским интерфейсом, такое как отображение форм, представлений и обработка аутентификации пользователей.
API-маршруты:
✔️API-маршруты, напротив, предназначены для обработки запросов и ответов для точек входа API.
✔️Они обычно используются для создания RESTful API или предоставления данных для мобильных приложений, одностраничных приложений (SPA) или других служб.
✔️API-маршруты определяются по умолчанию в файле routes/api.php.
✔️Они обычно возвращают данные в формате JSON или XML, а не отображают HTML-представления.
✔️API-маршруты часто включают операции CRUD (Create, Read, Update, Delete) с ресурсами, такие как извлечение данных из базы данных, создание новых записей, обновление существующих записей или удаление записей.
Таким образом, веб-маршруты используются для обслуживания веб-страниц и обработки запросов браузера, в то время как API-маршруты используются для предоставления данных и взаимодействия с приложениями или службами программным способом.
Что вы понимаете под Active Record в Yii?
Active Record в Yii — это техника объектно-реляционного отображения (ORM), которая представляет каждую таблицу базы данных в виде PHP-класса, где каждый экземпляр этого класса соответствует строке в таблице. Этот паттерн проектирования упрощает взаимодействие с базой данных, позволяя работать с данными как с объектами, а не писать сырой SQL-код.
Ключевые моменты:
🔸Отображение таблиц в классы: Каждая таблица базы данных имеет соответствующий ей класс Active Record. Например, если у вас есть таблица
🔸CRUD-операции: Active Record предоставляет встроенные методы для создания, чтения, обновления и удаления записей, что позволяет выполнять эти операции с помощью простого объектно-ориентированного синтаксиса.
🔸Работа с отношениями: Он позволяет определять связи между таблицами (например, один-ко-многим или многие-ко-многим), что облегчает работу с взаимосвязанными данными.
🔸Инкапсуляция бизнес-логики: Вы можете добавлять правила валидации, метки атрибутов и собственные методы в классы Active Record, инкапсулируя бизнес-логику вместе с моделью данных.
Active Record в Yii — это техника объектно-реляционного отображения (ORM), которая представляет каждую таблицу базы данных в виде PHP-класса, где каждый экземпляр этого класса соответствует строке в таблице. Этот паттерн проектирования упрощает взаимодействие с базой данных, позволяя работать с данными как с объектами, а не писать сырой SQL-код.
Ключевые моменты:
🔸Отображение таблиц в классы: Каждая таблица базы данных имеет соответствующий ей класс Active Record. Например, если у вас есть таблица
user
, вы можете создать класс User
, расширяющий \yii\db\ActiveRecord
.🔸CRUD-операции: Active Record предоставляет встроенные методы для создания, чтения, обновления и удаления записей, что позволяет выполнять эти операции с помощью простого объектно-ориентированного синтаксиса.
🔸Работа с отношениями: Он позволяет определять связи между таблицами (например, один-ко-многим или многие-ко-многим), что облегчает работу с взаимосвязанными данными.
🔸Инкапсуляция бизнес-логики: Вы можете добавлять правила валидации, метки атрибутов и собственные методы в классы Active Record, инкапсулируя бизнес-логику вместе с моделью данных.
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
Что такое абстрактный класс и чем он отличается от интерфейса?
Абстрактный класс в PHP — это класс, на основе которого нельзя создать объект напрямую, а используется только в качестве базового для других классов. Он содержит одну или несколько абстрактных методов, которые должны быть реализованы в классах-наследниках. Абстрактные классы могут также иметь обычные методы с реализацией.
Интерфейс в PHP — это набор абстрактных методов, которые должны быть реализованы всеми классами, которые имплементируют данный интерфейс. Классы могут имплементировать несколько интерфейсов. Интерфейс не содержит переменных или реализации методов, он только определяет сигнатуры методов.
Основные отличия между абстрактным классом и интерфейсом в PHP:
1. Абстрактный класс может иметь переменные и реализацию методов, в то время как интерфейс не может.
2. Класс может наследовать только один абстрактный класс, но имплементировать несколько интерфейсов.
3. Класс, наследующий абстрактный класс, может переопределить его методы или добавить новые методы с реализацией. В случае интерфейса, класс должен реализовать все методы из интерфейса без изменений.
4. Абстрактный класс может содержать поля и методы с любым модификатором доступа, в то время как интерфейс может содержать только публичные методы.
Абстрактный класс в PHP — это класс, на основе которого нельзя создать объект напрямую, а используется только в качестве базового для других классов. Он содержит одну или несколько абстрактных методов, которые должны быть реализованы в классах-наследниках. Абстрактные классы могут также иметь обычные методы с реализацией.
Интерфейс в PHP — это набор абстрактных методов, которые должны быть реализованы всеми классами, которые имплементируют данный интерфейс. Классы могут имплементировать несколько интерфейсов. Интерфейс не содержит переменных или реализации методов, он только определяет сигнатуры методов.
Основные отличия между абстрактным классом и интерфейсом в PHP:
1. Абстрактный класс может иметь переменные и реализацию методов, в то время как интерфейс не может.
2. Класс может наследовать только один абстрактный класс, но имплементировать несколько интерфейсов.
3. Класс, наследующий абстрактный класс, может переопределить его методы или добавить новые методы с реализацией. В случае интерфейса, класс должен реализовать все методы из интерфейса без изменений.
4. Абстрактный класс может содержать поля и методы с любым модификатором доступа, в то время как интерфейс может содержать только публичные методы.
Symfony — это фреймворк, основанный на конфигурации или соглашениях?
Symfony — это фреймворк, основанный на соглашениях. Документ Coding Standards иллюстрирует нормы кодирования для проектов Symfony, а также внутренних и сторонних пакетов. Он определяет стандарты кодирования и соглашения, используемые в ядре фреймворка, чтобы сделать его более единообразным и предсказуемым.
Symfony — это фреймворк, основанный на соглашениях. Документ Coding Standards иллюстрирует нормы кодирования для проектов Symfony, а также внутренних и сторонних пакетов. Он определяет стандарты кодирования и соглашения, используемые в ядре фреймворка, чтобы сделать его более единообразным и предсказуемым.
Что такое PSR?
PSR в контексте PHP означает «PHP Standards Recommendations» или «Рекомендации по стандартам PHP». PSR — это набор руководящих принципов и рекомендаций, разработанных PHP сообществом, для создания единообразия и согласованности в коде и проектах на PHP.
PSRы определяют стандарты для различных аспектов разработки PHP, таких как структура директорий проекта, автозагрузка классов, стандарты кодирования, интерфейсы HTTP, контейнеры зависимостей и т. д. Они предлагают рекомендации и лучшие практики для этих областей, чтобы обеспечить совместимость между различными библиотеками и фреймворками, а также простоту сопровождения и совместной разработки кода.
Одна из самых известных и широко используемых PSR-рекомендаций — это PSR-4, который определяет правила автозагрузки классов. Согласно PSR-4, классы должны быть организованы в файловой системе в соответствии с определенной структурой директорий, а классы должны иметь пространства имен, соответствующие их местоположению в файловой системе.
Использование PSR-рекомендаций позволяет разработчикам использовать согласованный кодовый стиль и основные стандарты, что делает код более понятным, читаемым и поддерживаемым. Это также способствует доступности и переиспользованию кода, поскольку различные проекты и библиотеки будут соблюдать одни и те же стандарты. В целом, следование PSR-рекомендациям помогает создать экосистему совместимых и качественных проектов на PHP.
Подробнее про PSR на русском здесь
PSR в контексте PHP означает «PHP Standards Recommendations» или «Рекомендации по стандартам PHP». PSR — это набор руководящих принципов и рекомендаций, разработанных PHP сообществом, для создания единообразия и согласованности в коде и проектах на PHP.
PSRы определяют стандарты для различных аспектов разработки PHP, таких как структура директорий проекта, автозагрузка классов, стандарты кодирования, интерфейсы HTTP, контейнеры зависимостей и т. д. Они предлагают рекомендации и лучшие практики для этих областей, чтобы обеспечить совместимость между различными библиотеками и фреймворками, а также простоту сопровождения и совместной разработки кода.
Одна из самых известных и широко используемых PSR-рекомендаций — это PSR-4, который определяет правила автозагрузки классов. Согласно PSR-4, классы должны быть организованы в файловой системе в соответствии с определенной структурой директорий, а классы должны иметь пространства имен, соответствующие их местоположению в файловой системе.
Использование PSR-рекомендаций позволяет разработчикам использовать согласованный кодовый стиль и основные стандарты, что делает код более понятным, читаемым и поддерживаемым. Это также способствует доступности и переиспользованию кода, поскольку различные проекты и библиотеки будут соблюдать одни и те же стандарты. В целом, следование PSR-рекомендациям помогает создать экосистему совместимых и качественных проектов на PHP.
Подробнее про PSR на русском здесь
Как использовать события и слушателей в Laravel?
События и слушатели в Laravel позволяют следовать за циклом вашего приложения и реагировать на определенные действия или события использовать:
1. Определение событий: События — это простые PHP классы, которые хранятся в директории
2. Определение слушателей: Слушатели — это классы, которые обрабатывают события. Они хранятся в директории
3. Регистрация событий и слушателей: Вам нужно зарегистрировать ваши события и слушателей в EventServiceProvider. Это делается путем добавления их в массив
4. Вызов событий: Вы можете вызывать события с помощью вспомогательной функции
5. Обработка события: Когда событие вызывается, Laravel автоматически вызывает зарегистрированных слушателей для этого события.
События и слушатели в Laravel позволяют следовать за циклом вашего приложения и реагировать на определенные действия или события использовать:
1. Определение событий: События — это простые PHP классы, которые хранятся в директории
app/Events
. Они сигнализируют о том, что что-то произошло в рамках кода.2. Определение слушателей: Слушатели — это классы, которые обрабатывают события. Они хранятся в директории
app/Listeners
. Каждый слушатель отвечает за выполнение действия в ответ на событие.3. Регистрация событий и слушателей: Вам нужно зарегистрировать ваши события и слушателей в EventServiceProvider. Это делается путем добавления их в массив
$listen
этого провайдера.4. Вызов событий: Вы можете вызывать события с помощью вспомогательной функции
event
или метода dispatch
самого события.5. Обработка события: Когда событие вызывается, Laravel автоматически вызывает зарегистрированных слушателей для этого события.
Совет на 2025-й — будьте осторожнее с выбором работы.
IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.
Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦♂️
Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:
— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер
Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.
Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs
IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.
Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦♂️
Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:
— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер
Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.
Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs
Что такое 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):
Сервисы приложения — это слой, предоставляющий операции, доступные извне приложения. Фабрики создают сложные объекты, облегчая их создание и инициализацию.
Объясните задачи, выполняемые контроллером, и определите правила для создания методов в контроллере в Symfony?
В Symfony контроллер является важной частью архитектуры MVC (Model-View-Controller). Он отвечает за обработку HTTP-запросов и возврат HTTP-ответов. Ниже мы рассмотрим задачи, выполняемые контроллером, и правила создания методов в нем:
Задачи, выполняемые контроллером Symfony:
1. Прием запросов: Контроллеры начинают работу с приема HTTP-запроса.
2. Выполнение логики приложения: Они содержат логику, которая определяет, что происходит при переходе по URL. Это может быть запрос к базе данных, обработка данных формы или вызов других сервисов.
3. Создание ответов: После обработки запроса контроллеры создают и возвращают объект Response. Этим ответом может быть HTML-страница, JSON, XML, загрузка файла, перенаправление, ошибка 404 или что-либо еще, что приложение должно вернуть клиенту.
Правила создания методов в контроллере Symfony:
✔️Соглашение об именовании: Методы внутри класса контроллера часто называют «действиями». По традиции имена методов заканчиваются на 'Action', хотя в последних версиях Symfony это не является обязательным.
✔️Возвращение ответов: Каждое действие должно возвращать объект Response. Если вы не возвращаете Response напрямую, то, скорее всего, вы используете вспомогательный метод, например $this->render(), который в конечном итоге возвращает Response.
✔️Доступ к сервисам: Контроллеры имеют доступ к контейнеру сервисов, что означает, что вы можете использовать инъекцию зависимостей для доступа к сервисам в ваших методах.
✔️Сопоставление маршрутов: Каждый метод контроллера должен быть сопоставлен с маршрутом. Это можно сделать с помощью аннотаций, YAML, XML или PHP-файлов. Аннотации — это распространенный способ определения маршрутов непосредственно над методами контроллера.
✔️Аргументы метода: Вы можете вводить аргументы в методы контроллера для автоматической инъекции сервисов или параметров, например Request $request или UserInterface $user.
✔️Лучшие практики: Следуйте правилу 5-10-20: определяйте не более 5 переменных, содержите не более 10 действий и включайте не более 20 строк кода в каждое действие.
В Symfony контроллер является важной частью архитектуры MVC (Model-View-Controller). Он отвечает за обработку HTTP-запросов и возврат HTTP-ответов. Ниже мы рассмотрим задачи, выполняемые контроллером, и правила создания методов в нем:
Задачи, выполняемые контроллером Symfony:
1. Прием запросов: Контроллеры начинают работу с приема HTTP-запроса.
2. Выполнение логики приложения: Они содержат логику, которая определяет, что происходит при переходе по URL. Это может быть запрос к базе данных, обработка данных формы или вызов других сервисов.
3. Создание ответов: После обработки запроса контроллеры создают и возвращают объект Response. Этим ответом может быть HTML-страница, JSON, XML, загрузка файла, перенаправление, ошибка 404 или что-либо еще, что приложение должно вернуть клиенту.
Правила создания методов в контроллере Symfony:
✔️Соглашение об именовании: Методы внутри класса контроллера часто называют «действиями». По традиции имена методов заканчиваются на 'Action', хотя в последних версиях Symfony это не является обязательным.
✔️Возвращение ответов: Каждое действие должно возвращать объект Response. Если вы не возвращаете Response напрямую, то, скорее всего, вы используете вспомогательный метод, например $this->render(), который в конечном итоге возвращает Response.
✔️Доступ к сервисам: Контроллеры имеют доступ к контейнеру сервисов, что означает, что вы можете использовать инъекцию зависимостей для доступа к сервисам в ваших методах.
✔️Сопоставление маршрутов: Каждый метод контроллера должен быть сопоставлен с маршрутом. Это можно сделать с помощью аннотаций, YAML, XML или PHP-файлов. Аннотации — это распространенный способ определения маршрутов непосредственно над методами контроллера.
✔️Аргументы метода: Вы можете вводить аргументы в методы контроллера для автоматической инъекции сервисов или параметров, например Request $request или UserInterface $user.
✔️Лучшие практики: Следуйте правилу 5-10-20: определяйте не более 5 переменных, содержите не более 10 действий и включайте не более 20 строк кода в каждое действие.
Как использовать кэширование в Laravel?
Кэширование в Laravel — это мощная функция, которая может значительно улучшить производительность вашего веб-приложения за счет хранения часто используемых данных в кэше.
1. Конфигурация: Сначала убедитесь, что ваше приложение Laravel правильно настроено для кэширования. Файл конфигурации находится в config/cache.php, где вы можете указать драйвер кэша по умолчанию и другие параметры. Laravel поддерживает различные драйверы кэша, такие как file, database, redis, memcached и другие.
2. Хранение данных в кэше: Вы можете хранить данные в кэше, используя фасад Cache или вспомогательную функцию cache(). Например, чтобы сохранить значение в кэше на 10 минут, вы можете использовать:
3. Извлечение данных из кэша: Чтобы получить данные из кэша, вы можете использовать метод get:
// или используя вспомогательную функцию
4. Проверка наличия данных: Перед извлечением данных вы можете проверить, существуют ли они в кэше:
5. Удаление данных из кэша: Чтобы удалить данные из кэша, используйте метод forget:
6. Очистка всего кэша: Если вам нужно очистить весь кэш, вы можете использовать метод flush:
Кэширование в Laravel — это мощная функция, которая может значительно улучшить производительность вашего веб-приложения за счет хранения часто используемых данных в кэше.
1. Конфигурация: Сначала убедитесь, что ваше приложение Laravel правильно настроено для кэширования. Файл конфигурации находится в config/cache.php, где вы можете указать драйвер кэша по умолчанию и другие параметры. Laravel поддерживает различные драйверы кэша, такие как file, database, redis, memcached и другие.
2. Хранение данных в кэше: Вы можете хранить данные в кэше, используя фасад Cache или вспомогательную функцию cache(). Например, чтобы сохранить значение в кэше на 10 минут, вы можете использовать:
Cache::put('key', 'value', 600);
3. Извлечение данных из кэша: Чтобы получить данные из кэша, вы можете использовать метод get:
$value = Cache::get('key');
// или используя вспомогательную функцию
$value = cache('key');
4. Проверка наличия данных: Перед извлечением данных вы можете проверить, существуют ли они в кэше:
Cache::has('key');
5. Удаление данных из кэша: Чтобы удалить данные из кэша, используйте метод forget:
Cache::forget('key');
6. Очистка всего кэша: Если вам нужно очистить весь кэш, вы можете использовать метод flush:
Cache::flush();
Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/ed691f3f
🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования и хотят углубиться в архитектурные паттерны.
🎮 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны» и применять ключевые архитектурные паттерны. В процессе изучите:
– Как строить гибкую архитектуру, которая не замедляет разработку
– Как применять IoC-контейнеры и писать модульные тесты
– Как использовать SOLID за пределами ООП
– Как внедрять CI/CD и снижать технический долг
👉 Подробная программа обучения
А по промокоду
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие магические методы вы знаете и как их применяют?
__construct(): Конструктор класса, вызывается при создании нового объекта класса.
__destruct(): Деструктор класса, вызывается при уничтожении объекта.
__call($name, $arguments): Вызывается, когда обращаются к неопределённому методу в контексте объекта.
__callStatic($name, $arguments): Аналогично __call, но для статических методов.
__get($name): Вызывается при чтении данных из недоступных свойств.
__set($name, $value): Вызывается при записи данных в недоступные свойства.
__isset($name): Вызывается при использовании isset() или empty() на недоступных свойствах.
__unset($name): Вызывается при использовании unset() на недоступном свойстве.
__sleep(): Вызывается при сериализации объекта.
__wakeup(): Вызывается при десериализации объекта.
__toString(): Метод для представления объекта в виде строки.
__invoke(): Вызывается при попытке вызвать объект как функцию.
__set_state($array): Вызывается для классов, экспортируемых функцией var_export().
__clone(): Вызывается при клонировании объекта.
__debugInfo(): Используется при выводе объекта функцией var_dump().
__construct(): Конструктор класса, вызывается при создании нового объекта класса.
__destruct(): Деструктор класса, вызывается при уничтожении объекта.
__call($name, $arguments): Вызывается, когда обращаются к неопределённому методу в контексте объекта.
__callStatic($name, $arguments): Аналогично __call, но для статических методов.
__get($name): Вызывается при чтении данных из недоступных свойств.
__set($name, $value): Вызывается при записи данных в недоступные свойства.
__isset($name): Вызывается при использовании isset() или empty() на недоступных свойствах.
__unset($name): Вызывается при использовании unset() на недоступном свойстве.
__sleep(): Вызывается при сериализации объекта.
__wakeup(): Вызывается при десериализации объекта.
__toString(): Метод для представления объекта в виде строки.
__invoke(): Вызывается при попытке вызвать объект как функцию.
__set_state($array): Вызывается для классов, экспортируемых функцией var_export().
__clone(): Вызывается при клонировании объекта.
__debugInfo(): Используется при выводе объекта функцией var_dump().
Что такое Redis?
Redis — это высокопроизводительная система управления базами данных и кэширования, которая используется для хранения данных в формате ключ-значение. Она является ключевым инструментом в мире веб-разработки и приложений больших данных.
Тип данных:
Redis поддерживает различные типы данных, включая строки, хеш-таблицы, списки, наборы и упорядоченные наборы. Это позволяет разработчикам выбирать наиболее подходящий тип данных для конкретной задачи.
Скорость:
Redis славится своей высокой производительностью благодаря тому, что он хранит все данные в памяти, а не на диске. Это обеспечивает быстрый доступ к данным и делает Redis одним из самых быстрых инструментов кэширования.
Атомарные операции:
Redis поддерживает атомарные операции, что означает, что множество операций можно объединить в одну, гарантируя целостность данных. Например, увеличение значения ключа на определенную величину — это атомарная операция.
Поддержка различных структур данных:
Благодаря различным типам данных, Redis идеально подходит для различных сценариев использования, начиная от кэширования данных и заканчивая реализацией очередей сообщений и управлением счетчиками.
Мультипоточность:
Redis однопоточный по своей природе, но благодаря асинхронным запросам и многозадачности операционных систем, он способен обрабатывать тысячи запросов в секунду без потери производительности.
Поддержка транзакций:
Redis поддерживает транзакции, что позволяет группировать несколько операций в одну транзакцию и обеспечивать атомарность выполнения всех операций внутри транзакции.
Сохранение данных на диск:
Redis имеет возможность периодически сохранять данные на диск, обеспечивая устойчивость данных даже в случае перезапуска системы.
В общем, Redis — это мощный и гибкий инструмент, который позволяет разработчикам создавать быстрые и масштабируемые приложения, оптимизировать производительность и обеспечивать устойчивость данных.
Redis — это высокопроизводительная система управления базами данных и кэширования, которая используется для хранения данных в формате ключ-значение. Она является ключевым инструментом в мире веб-разработки и приложений больших данных.
Тип данных:
Redis поддерживает различные типы данных, включая строки, хеш-таблицы, списки, наборы и упорядоченные наборы. Это позволяет разработчикам выбирать наиболее подходящий тип данных для конкретной задачи.
Скорость:
Redis славится своей высокой производительностью благодаря тому, что он хранит все данные в памяти, а не на диске. Это обеспечивает быстрый доступ к данным и делает Redis одним из самых быстрых инструментов кэширования.
Атомарные операции:
Redis поддерживает атомарные операции, что означает, что множество операций можно объединить в одну, гарантируя целостность данных. Например, увеличение значения ключа на определенную величину — это атомарная операция.
Поддержка различных структур данных:
Благодаря различным типам данных, Redis идеально подходит для различных сценариев использования, начиная от кэширования данных и заканчивая реализацией очередей сообщений и управлением счетчиками.
Мультипоточность:
Redis однопоточный по своей природе, но благодаря асинхронным запросам и многозадачности операционных систем, он способен обрабатывать тысячи запросов в секунду без потери производительности.
Поддержка транзакций:
Redis поддерживает транзакции, что позволяет группировать несколько операций в одну транзакцию и обеспечивать атомарность выполнения всех операций внутри транзакции.
Сохранение данных на диск:
Redis имеет возможность периодически сохранять данные на диск, обеспечивая устойчивость данных даже в случае перезапуска системы.
В общем, Redis — это мощный и гибкий инструмент, который позволяет разработчикам создавать быстрые и масштабируемые приложения, оптимизировать производительность и обеспечивать устойчивость данных.
Что такое планировщик задач в Laravel и как он используется?
В Laravel планировщик задач — это функция, которая позволяет управлять запланированными задачами на вашем сервере внутри вашего приложения Laravel. Он предоставляет чистый, плавный API для определения ваших запланированных задач простым и удобным способом.
Вот как вы можете использовать его:
Определение запланированных задач: Вы можете определить все свои запланированные задачи в методе schedule класса App\Console\Kernel.
Запуск планировщика задач: Чтобы запустить планировщик Laravel, вам нужно добавить следующую запись Cron на ваш сервер.
Этот Cron будет вызывать команду планировщика Laravel каждую минуту для выполнения запланированных задач.
Помните, что будут выполняться только задачи, которые должны быть выполнены. Команда schedule:run будет проверять расписание задач и выполнять все задачи, которые должны быть выполнены.
Ограничения задач: Вы также можете добавить дополнительные ограничения к расписанию, такие как
Вывод задач: По умолчанию вывод запланированных задач будет направлен в /dev/null. Вы можете использовать методы
В Laravel планировщик задач — это функция, которая позволяет управлять запланированными задачами на вашем сервере внутри вашего приложения Laravel. Он предоставляет чистый, плавный API для определения ваших запланированных задач простым и удобным способом.
Вот как вы можете использовать его:
Определение запланированных задач: Вы можете определить все свои запланированные задачи в методе schedule класса App\Console\Kernel.
Запуск планировщика задач: Чтобы запустить планировщик Laravel, вам нужно добавить следующую запись Cron на ваш сервер.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Этот Cron будет вызывать команду планировщика Laravel каждую минуту для выполнения запланированных задач.
Помните, что будут выполняться только задачи, которые должны быть выполнены. Команда schedule:run будет проверять расписание задач и выполнять все задачи, которые должны быть выполнены.
Ограничения задач: Вы также можете добавить дополнительные ограничения к расписанию, такие как
->weekdays()
, ->sundays()
, ->at('13:00')
и т.д.Вывод задач: По умолчанию вывод запланированных задач будет направлен в /dev/null. Вы можете использовать методы
sendOutputTo
и appendOutputTo
для записи или добавления вывода в определенный файл.