❗Вакансии «Библиотеки программиста»
Привет! Мы ищем контент-менеджеров, которые будут вести наши телеграм-каналы о разработке.
👾 Требования:
— знать принципы залетающего контента
— разбираться в темах, связанных с разработкой
Большим плюсом будет навык программирования на каких-либо языках.
✨ Условия:
— удаленка
— частичная занятость
— сдельная оплата в зависимости от количества задач
🔥 Оставляйте отклик, и мы свяжемся с вами: https://forms.gle/o4BZnsQ526JoqsCq9
Привет! Мы ищем контент-менеджеров, которые будут вести наши телеграм-каналы о разработке.
👾 Требования:
— знать принципы залетающего контента
— разбираться в темах, связанных с разработкой
Большим плюсом будет навык программирования на каких-либо языках.
✨ Условия:
— удаленка
— частичная занятость
— сдельная оплата в зависимости от количества задач
🔥 Оставляйте отклик, и мы свяжемся с вами: https://forms.gle/o4BZnsQ526JoqsCq9
Что такое контракт в Laravel и как он используется?
Контракт в Laravel — это интерфейс, определяющий набор методов, которые должен реализовывать класс. Контракты позволяют гарантировать, что класс соответствует определенному набору требований, и могут использоваться для определения общей функциональности для разных классов.
Контракт в Laravel — это интерфейс, определяющий набор методов, которые должен реализовывать класс. Контракты позволяют гарантировать, что класс соответствует определенному набору требований, и могут использоваться для определения общей функциональности для разных классов.
Как работает механизм автозагрузки классов в PHP?
В PHP механизм автозагрузки классов позволяет автоматически загружать файлы с определениями классов, интерфейсов, трейтов и перечислений по мере их использования, без необходимости вручную подключать их с помощью
🔧 Как работает автозагрузка в PHP
Регистрация автозагрузчика: Для включения автозагрузки необходимо зарегистрировать функцию, которая будет отвечать за поиск и подключение файлов с классами. Это делается с помощью функции
В этом примере при попытке создать объект класса, PHP вызовет зарегистрированную функцию автозагрузки, передав в неё имя класса. Функция попытается подключить файл с именем, соответствующим имени класса.
Стандарты автозагрузки: Для упрощения организации кода и обеспечения совместимости между различными библиотеками и фреймворками, был разработан стандарт PSR-4. Этот стандарт определяет правила, по которым пространство имён класса должно соответствовать структуре каталогов файловой системы.
Использование с Composer: Composer — это менеджер зависимостей для PHP, который также предоставляет механизм автозагрузки. После настройки автозагрузки в
Эта команда создаст файл
✅ Преимущества автозагрузки
Упрощение кода: Отсутствие необходимости вручную подключать файлы классов делает код чище и легче для понимания.
Управление зависимостями: Composer позволяет легко управлять внешними библиотеками и их зависимостями, обеспечивая их автоматическую загрузку.
Соблюдение стандартов: Использование стандартов, таких как PSR-4, способствует лучшей организации кода и совместимости между различными компонентами.
В PHP механизм автозагрузки классов позволяет автоматически загружать файлы с определениями классов, интерфейсов, трейтов и перечислений по мере их использования, без необходимости вручную подключать их с помощью
require
или include
.🔧 Как работает автозагрузка в PHP
Регистрация автозагрузчика: Для включения автозагрузки необходимо зарегистрировать функцию, которая будет отвечать за поиск и подключение файлов с классами. Это делается с помощью функции
spl_autoload_register()
.spl_autoload_register(function ($class_name) { include $class_name . '.php';});
В этом примере при попытке создать объект класса, PHP вызовет зарегистрированную функцию автозагрузки, передав в неё имя класса. Функция попытается подключить файл с именем, соответствующим имени класса.
Стандарты автозагрузки: Для упрощения организации кода и обеспечения совместимости между различными библиотеками и фреймворками, был разработан стандарт PSR-4. Этот стандарт определяет правила, по которым пространство имён класса должно соответствовать структуре каталогов файловой системы.
Использование с Composer: Composer — это менеджер зависимостей для PHP, который также предоставляет механизм автозагрузки. После настройки автозагрузки в
composer.json
, необходимо выполнить команду:composer dumpautoload
Эта команда создаст файл
vendor/autoload.php
, который автоматически подключит все необходимые файлы классов при подключении его в вашем проекте.✅ Преимущества автозагрузки
Упрощение кода: Отсутствие необходимости вручную подключать файлы классов делает код чище и легче для понимания.
Управление зависимостями: Composer позволяет легко управлять внешними библиотеками и их зависимостями, обеспечивая их автоматическую загрузку.
Соблюдение стандартов: Использование стандартов, таких как PSR-4, способствует лучшей организации кода и совместимости между различными компонентами.
😡 А вас тоже бесят облачные сервисы?
Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить правила игры?
Мы готовим нечто особенное в мире облачных технологий, но сначала хотим услышать правду от тех, кто реально работает с облаками каждый день.
❓Что мы хотим узнать:
— Для чего вы реально используете облако?
— Чего катастрофически не хватает прямо сейчас?
— Что бесит больше всего? (можно материться)
— Как выбираете провайдера — по цене или по любви?
— и тому подобное
По результатам опроса мы подготовим исследование без маркетингового мусора и вы узнаете, как обстоят дела у коллег.
⚡️Время на опрос: меньше, чем на кофе-брейк. Жмите → https://clc.to/nboYDA
Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить правила игры?
Мы готовим нечто особенное в мире облачных технологий, но сначала хотим услышать правду от тех, кто реально работает с облаками каждый день.
❓Что мы хотим узнать:
— Для чего вы реально используете облако?
— Чего катастрофически не хватает прямо сейчас?
— Что бесит больше всего? (можно материться)
— Как выбираете провайдера — по цене или по любви?
— и тому подобное
По результатам опроса мы подготовим исследование без маркетингового мусора и вы узнаете, как обстоят дела у коллег.
⚡️Время на опрос: меньше, чем на кофе-брейк. Жмите → https://clc.to/nboYDA
Следует ли использовать в методах значение по умолчанию null. Если нет, то почему?
Вопрос о том, следует ли использовать значение по умолчанию null в методах, зависит от конкретного случая и удовлетворения требований вашего проекта.
Если ваш метод принимает параметр, которому обязательно должно быть передано значение, вы должны использовать значение по умолчанию, которое является валидным значением для данного параметра. В таком случае использование null может быть нежелательным, так как это может привести к ошибкам в работе метода или неожиданным поведением.
Однако, если параметр необязательный и может быть опущен, то использование значения по умолчанию null допустимо. Это дает гибкость пользователю функции в выборе использования параметра.
В то же время, использование значений по умолчанию может создавать сложности при отладке и поддержке кода, особенно если вы работаете с большим проектом или командой разработчиков. Вы должны тщательно обдумать, как использование значений по умолчанию влияет на читаемость, понятность и надежность вашего кода.
Вопрос о том, следует ли использовать значение по умолчанию null в методах, зависит от конкретного случая и удовлетворения требований вашего проекта.
Если ваш метод принимает параметр, которому обязательно должно быть передано значение, вы должны использовать значение по умолчанию, которое является валидным значением для данного параметра. В таком случае использование null может быть нежелательным, так как это может привести к ошибкам в работе метода или неожиданным поведением.
Однако, если параметр необязательный и может быть опущен, то использование значения по умолчанию null допустимо. Это дает гибкость пользователю функции в выборе использования параметра.
В то же время, использование значений по умолчанию может создавать сложности при отладке и поддержке кода, особенно если вы работаете с большим проектом или командой разработчиков. Вы должны тщательно обдумать, как использование значений по умолчанию влияет на читаемость, понятность и надежность вашего кода.
Какие есть NoSQL СУБД?
Вот самые популярные NoSQL СУБД:
1. MongoDB — документоориентированная СУБД, которая хранит данные в формате BSON (бинарное представление JSON). Она обеспечивает гибкую схему данных и поддерживает горизонтальное масштабирование.
2. Redis — ключ-значение СУБД, которая использует оперативную память для хранения данных. Она предоставляет высокую скорость доступа к данным и поддерживает различные типы данных, включая строки, списки и множества.
3. Cassandra — распределенная СУБД, разработанная для обработки больших объемов данных и обеспечения высокой доступности. Она использует модель колоночного семейства и ориентирована на горизонтальное масштабирование.
4. CouchDB — документоориентированная СУБД, которая хранит данные в формате JSON. Она обеспечивает репликацию и синхронизацию данных между узлами и поддерживает реализацию полнотекстовых запросов.
5. Neo4j — графовая СУБД, которая использует графовую модель для хранения и обработки данных. Она обеспечивает эффективные операции с графовыми структурами и предоставляет возможность выполнения сложных запросов.
Вот самые популярные NoSQL СУБД:
1. MongoDB — документоориентированная СУБД, которая хранит данные в формате BSON (бинарное представление JSON). Она обеспечивает гибкую схему данных и поддерживает горизонтальное масштабирование.
2. Redis — ключ-значение СУБД, которая использует оперативную память для хранения данных. Она предоставляет высокую скорость доступа к данным и поддерживает различные типы данных, включая строки, списки и множества.
3. Cassandra — распределенная СУБД, разработанная для обработки больших объемов данных и обеспечения высокой доступности. Она использует модель колоночного семейства и ориентирована на горизонтальное масштабирование.
4. CouchDB — документоориентированная СУБД, которая хранит данные в формате JSON. Она обеспечивает репликацию и синхронизацию данных между узлами и поддерживает реализацию полнотекстовых запросов.
5. Neo4j — графовая СУБД, которая использует графовую модель для хранения и обработки данных. Она обеспечивает эффективные операции с графовыми структурами и предоставляет возможность выполнения сложных запросов.
Какой подход следует применить во время тестирования кода, который имеет внешние зависимости?
Один из подходов, который может быть применен во время тестирования кода с внешними зависимостями, — это использование моков или заглушек (mocks или stubs).
Использование моков и заглушек позволяет изолировать код от внешних зависимостей и создавать контролируемые ситуации для тестирования. Это значительно упрощает написание тестовых сценариев и позволяет проверить правильность работы кода без необходимости подключения к реальным сервисам или захвата ресурсов. Они также позволяют создавать тестовые сценарии, которые воспроизводят различные сценарии, которые могут быть сложными или невозможными в реальной системе.
Один из подходов, который может быть применен во время тестирования кода с внешними зависимостями, — это использование моков или заглушек (mocks или stubs).
Использование моков и заглушек позволяет изолировать код от внешних зависимостей и создавать контролируемые ситуации для тестирования. Это значительно упрощает написание тестовых сценариев и позволяет проверить правильность работы кода без необходимости подключения к реальным сервисам или захвата ресурсов. Они также позволяют создавать тестовые сценарии, которые воспроизводят различные сценарии, которые могут быть сложными или невозможными в реальной системе.
Как вы используете трансляцию(broadcasting) в Laravel?
Laravel обеспечивает трансляцию событий в реальном времени с помощью каналов и слушателей. Вот как использовать трансляцию в Laravel:
Шаг 1: Создайте событие
Создайте событие, которое должно транслироваться. Вы можете создать событие, выполнив следующую команду в терминале:
php artisan make:event OrderShipped
Эта команда создаст новое событие класса OrderShipped.
Шаг 2: Зарегистрируйте событие в EventServiceProvider
Добавьте событие OrderShipped в свойство $listen в EventServiceProvider. Это позволит транслировать событие на указанный канал(ы).
Шаг 3: Создайте канал
Создайте канал, который будет транслировать событие желаемым слушателям. Вы можете создать канал, выполнив следующую команду:
php artisan make:channel OrderChannel
Эта команда создаст новый канал класса OrderChannel.
Шаг 4: Трансляция события
Транслируйте событие OrderShipped на нужный канал (каналы) с помощью метода broadcast.
Это позволит транслировать событие OrderShipped всем другим подключенным клиентам на указанном канале.
Прослушивание транслируемых событий
Чтобы прослушивать транслируемые события, необходимо создать слушателя, который будет получать транслируемое событие. Вот как создать слушателя:
Шаг 1: Создание слушателя
Создайте слушатель, который будет обрабатывать транслируемое событие. Вы можете создать слушателя, выполнив следующую команду:
php artisan make:listener SendShipmentNotification
Эта команда создаст новый класс слушателя SendShipmentNotification.
Шаг 2: Реализация метода Handle
Реализуйте метод handle, чтобы определить, что должно быть сделано при передаче события.
Шаг 3: Регистрация слушателя
Зарегистрируйте слушатель SendShipmentNotification в свойстве $listen в EventServiceProvider.
Трансляция с помощью Socket.IO
Laravel предоставляет драйвер вещания Socket.IO из коробки. Чтобы использовать этот драйвер, необходимо установить пакеты socket.io-client и laravel-echo.
npm install --save socket.io-client laravel-echo
После установки пакетов необходимо создать новый экземпляр объекта Echo и сконфигурировать его с деталями трансляции в файле resources/js/bootstrap.js.
Теперь вы можете использовать объект Echo для прослушивания транслируемых событий.
Это позволит прослушать событие order.shipped на канале orders и вывести данные в консоль при получении события.
После установки пакетов необходимо создать новый экземпляр объекта Echo и сконфигурировать его с деталями трансляции в файле resources/js/bootstrap.js.
Laravel обеспечивает трансляцию событий в реальном времени с помощью каналов и слушателей. Вот как использовать трансляцию в Laravel:
Шаг 1: Создайте событие
Создайте событие, которое должно транслироваться. Вы можете создать событие, выполнив следующую команду в терминале:
php artisan make:event OrderShipped
Эта команда создаст новое событие класса OrderShipped.
Шаг 2: Зарегистрируйте событие в EventServiceProvider
Добавьте событие OrderShipped в свойство $listen в EventServiceProvider. Это позволит транслировать событие на указанный канал(ы).
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification'
],
];
Шаг 3: Создайте канал
Создайте канал, который будет транслировать событие желаемым слушателям. Вы можете создать канал, выполнив следующую команду:
php artisan make:channel OrderChannel
Эта команда создаст новый канал класса OrderChannel.
Шаг 4: Трансляция события
Транслируйте событие OrderShipped на нужный канал (каналы) с помощью метода broadcast.
use App\Events\OrderShipped;
broadcast(new OrderShipped($order))->toOthers();
Это позволит транслировать событие OrderShipped всем другим подключенным клиентам на указанном канале.
Прослушивание транслируемых событий
Чтобы прослушивать транслируемые события, необходимо создать слушателя, который будет получать транслируемое событие. Вот как создать слушателя:
Шаг 1: Создание слушателя
Создайте слушатель, который будет обрабатывать транслируемое событие. Вы можете создать слушателя, выполнив следующую команду:
php artisan make:listener SendShipmentNotification
Эта команда создаст новый класс слушателя SendShipmentNotification.
Шаг 2: Реализация метода Handle
Реализуйте метод handle, чтобы определить, что должно быть сделано при передаче события.
public function handle(OrderShipped $event)
{
// Отправляем уведомление об отгрузке покупателю
}
Шаг 3: Регистрация слушателя
Зарегистрируйте слушатель SendShipmentNotification в свойстве $listen в EventServiceProvider.
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification'
],
];
Трансляция с помощью Socket.IO
Laravel предоставляет драйвер вещания Socket.IO из коробки. Чтобы использовать этот драйвер, необходимо установить пакеты socket.io-client и laravel-echo.
npm install --save socket.io-client laravel-echo
После установки пакетов необходимо создать новый экземпляр объекта Echo и сконфигурировать его с деталями трансляции в файле resources/js/bootstrap.js.
import Echo from 'laravel-echo'
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
});
Теперь вы можете использовать объект Echo для прослушивания транслируемых событий.
window.Echo.channel('orders')
.listen('.order.shipped', function(data) {
console.log('Заказ отправлен', data);
});
Это позволит прослушать событие order.shipped на канале orders и вывести данные в консоль при получении события.
После установки пакетов необходимо создать новый экземпляр объекта Echo и сконфигурировать его с деталями трансляции в файле resources/js/bootstrap.js.
😱 Завтра цена на курс «AI-агенты для DS» вырастет
Пока вы думаете — другие уже покупают. Что вы теряете, откладывая решение? Как минимум — 10 000 рублей, именно столько вы переплатите завтра. Как максимум — шанс войти в топ-1% дата-сайентистов, которые умеют строить AI-агенты.
🎓 Чему вы научитесь на курсе:
— адаптировать LLM под разные предметные области и данные
— собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
— строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой
Решение за вами.
👉 Купить курс по старой цене
Пока вы думаете — другие уже покупают. Что вы теряете, откладывая решение? Как минимум — 10 000 рублей, именно столько вы переплатите завтра. Как максимум — шанс войти в топ-1% дата-сайентистов, которые умеют строить AI-агенты.
🎓 Чему вы научитесь на курсе:
— адаптировать LLM под разные предметные области и данные
— собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
— строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой
Решение за вами.
👉 Купить курс по старой цене
proglib.academy
Курс|AI-агенты для DS-специалистов
На курсе ты разберёшься, как работают AI-агенты и как их применять в работе — от текстовых помощников до систем, помогающих принимать решения. Разберем архитектуру агентов, связку с внешними API, пайплайны действий и популярные библиотеки. Курс включает реальные…
Что такое нормализация?
Нормализация является процессом организации структуры данных в базе данных для достижения оптимального хранения и обработки информации. Целью нормализации является устранение избыточности и аномалий данных, а также обеспечение целостности и эффективности работы с данными.
В процессе нормализации данные разделяются на отдельные таблицы и связываются при помощи отношений. Нормализация определяет правила, которым должны следовать отношения между таблицами, чтобы минимизировать избыточность и обеспечить логическую структуру данных.
Выделяют различные уровни нормализации (нормальные формы), такие как:
1. Первая нормальная форма (1NF): Требует, чтобы каждая колонка в таблице содержала только атомарные (неделимые) значения, а каждая строка была уникальной.
2. Вторая нормальная форма (2NF): Находит и устраняет избыточные зависимости между колонками в таблице, разделяя данные на связанные таблицы.
3. Третья нормальная форма (3NF): Устраняет транзитивные зависимости между колонками, вынося их в отдельные таблицы.
Существуют также более высокие уровни нормализации, такие как четвертая нормальная форма (4NF), пятая нормальная форма (5NF) и другие. Эти нормальные формы помогают сделать базу данных более гибкой, масштабируемой, эффективной и согласованной.
Нормализация является важным шагом в проектировании базы данных, однако следует помнить, что чрезмерная нормализация может привести к сложности и медленным запросам. Поэтому в некоторых случаях может быть необходимым достигнуть компромисса между нормализацией и денормализацией данных для повышения производительности и удобства использования базы данных.
Нормализация является процессом организации структуры данных в базе данных для достижения оптимального хранения и обработки информации. Целью нормализации является устранение избыточности и аномалий данных, а также обеспечение целостности и эффективности работы с данными.
В процессе нормализации данные разделяются на отдельные таблицы и связываются при помощи отношений. Нормализация определяет правила, которым должны следовать отношения между таблицами, чтобы минимизировать избыточность и обеспечить логическую структуру данных.
Выделяют различные уровни нормализации (нормальные формы), такие как:
1. Первая нормальная форма (1NF): Требует, чтобы каждая колонка в таблице содержала только атомарные (неделимые) значения, а каждая строка была уникальной.
2. Вторая нормальная форма (2NF): Находит и устраняет избыточные зависимости между колонками в таблице, разделяя данные на связанные таблицы.
3. Третья нормальная форма (3NF): Устраняет транзитивные зависимости между колонками, вынося их в отдельные таблицы.
Существуют также более высокие уровни нормализации, такие как четвертая нормальная форма (4NF), пятая нормальная форма (5NF) и другие. Эти нормальные формы помогают сделать базу данных более гибкой, масштабируемой, эффективной и согласованной.
Нормализация является важным шагом в проектировании базы данных, однако следует помнить, что чрезмерная нормализация может привести к сложности и медленным запросам. Поэтому в некоторых случаях может быть необходимым достигнуть компромисса между нормализацией и денормализацией данных для повышения производительности и удобства использования базы данных.
Что такое opcache? Как он работает?
OPcache (Optimized Cache) — это расширение для PHP, которое осуществляет кэширование скомпилированного байт-кода PHP для улучшения производительности выполнения скриптов.
OPcache работает в нескольких этапах:
Кэширование байт-кода: После компиляции скомпилированный байт-код кэшируется в памяти OPcache. Кэширование позволяет избежать необходимости компиляции скрипта при каждом его выполнении, что сокращает время обработки запросов.
Повторное использование кэша: При последующих запросах к этому скрипту, PHP загружает его скомпилированный байт-код из кэша OPcache, обеспечивая быстрое выполнение без необходимости повторной компиляции.
OPcache также предоставляет дополнительные возможности для оптимизации производительности:
- Предзагрузка определяемых классов: OPcache может предзагрузить классы, определенные в скриптах, для ускорения их доступа и использования.
- Контроль за памятью: OPcache имеет механизм управления памятью, который позволяет наблюдать за использованием памяти скриптами и в случае необходимости автоматически очищать кэш.
- Управление версиями кэша: OPcache автоматически отслеживает изменения файлов скриптов и автоматически очищает кэшированные данные, в случае, если файл был изменен или удален, чтобы гарантировать актуальность данных.
OPcache (Optimized Cache) — это расширение для PHP, которое осуществляет кэширование скомпилированного байт-кода PHP для улучшения производительности выполнения скриптов.
OPcache работает в нескольких этапах:
Кэширование байт-кода: После компиляции скомпилированный байт-код кэшируется в памяти OPcache. Кэширование позволяет избежать необходимости компиляции скрипта при каждом его выполнении, что сокращает время обработки запросов.
Повторное использование кэша: При последующих запросах к этому скрипту, PHP загружает его скомпилированный байт-код из кэша OPcache, обеспечивая быстрое выполнение без необходимости повторной компиляции.
OPcache также предоставляет дополнительные возможности для оптимизации производительности:
- Предзагрузка определяемых классов: OPcache может предзагрузить классы, определенные в скриптах, для ускорения их доступа и использования.
- Контроль за памятью: OPcache имеет механизм управления памятью, который позволяет наблюдать за использованием памяти скриптами и в случае необходимости автоматически очищать кэш.
- Управление версиями кэша: OPcache автоматически отслеживает изменения файлов скриптов и автоматически очищает кэшированные данные, в случае, если файл был изменен или удален, чтобы гарантировать актуальность данных.