Какой аспект разработки, по вашему мнению, больше всего выигрывает от использования ИИ? 🚀
Anonymous Poll
45%
Автодополнение кода
19%
Генерация кода с нуля
16%
Отладка и поиск ошибок
12%
Оптимизация существующего кода
8%
Другое (поделитесь в комментариях)
Не забудьте оставить комментарий с вашими мыслями об ИИ в программировании! Какие преимущества и недостатки вы видите? Какие инструменты рекомендуете попробовать коллегам? 🤔💬
👍1
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Что такое план выполнения запроса и как его узнать?
План выполнения запроса (Query Execution Plan) — это детальный анализ того, как база данных будет выполнять запрос, включая порядок обработки данных, используемые индексы, методы соединения и другие оптимизации запроса. Понимание плана выполнения запроса может помочь оптимизировать производительность запросов, выявляя возможные проблемы и улучшая структуру запроса или индексы.
В разных системах управления базами данных (СУБД) есть различные способы получения плана выполнения запроса. Ниже приведены общие методы для некоторых из них:
MySQL / MariaDB:
Используйте ключевое слово EXPLAIN перед запросом SQL.
PostgreSQL:
Используйте ключевое слово EXPLAIN перед запросом SQL.
Для более подробного анализа используйте ключевое слово EXPLAIN ANALYZE.
SQL Server:
Используйте ключевое слово EXPLAIN перед запросом SQL.
Для более подробного анализа используйте команду SET SHOWPLAN_TEXT ON;, а затем выполните запрос.
SQLite:
Используйте ключевое слово EXPLAIN QUERY PLAN перед запросом SQL.
Oracle:
Используйте инструкцию EXPLAIN PLAN FOR.
Полученный план выполнения запроса может быть сложным для понимания, но он предоставляет ценную информацию о том, как база данных обрабатывает ваш запрос, что может помочь в оптимизации его производительности.
План выполнения запроса (Query Execution Plan) — это детальный анализ того, как база данных будет выполнять запрос, включая порядок обработки данных, используемые индексы, методы соединения и другие оптимизации запроса. Понимание плана выполнения запроса может помочь оптимизировать производительность запросов, выявляя возможные проблемы и улучшая структуру запроса или индексы.
В разных системах управления базами данных (СУБД) есть различные способы получения плана выполнения запроса. Ниже приведены общие методы для некоторых из них:
MySQL / MariaDB:
Используйте ключевое слово EXPLAIN перед запросом SQL.
PostgreSQL:
Используйте ключевое слово EXPLAIN перед запросом SQL.
Для более подробного анализа используйте ключевое слово EXPLAIN ANALYZE.
SQL Server:
Используйте ключевое слово EXPLAIN перед запросом SQL.
Для более подробного анализа используйте команду SET SHOWPLAN_TEXT ON;, а затем выполните запрос.
SQLite:
Используйте ключевое слово EXPLAIN QUERY PLAN перед запросом SQL.
Oracle:
Используйте инструкцию EXPLAIN PLAN FOR.
Полученный план выполнения запроса может быть сложным для понимания, но он предоставляет ценную информацию о том, как база данных обрабатывает ваш запрос, что может помочь в оптимизации его производительности.
❤7
Скрытые преимущества модульного PHP: Как создавать масштабируемые приложения
Здесь рассматриваются преимущества модульного подхода в разработке приложений на PHP. Основная идея заключается в том, что создание кода, разбитого на небольшие, независимые и взаимосвязанные модули, делает приложение более масштабируемым и поддерживаемым. Такой подход позволяет улучшить гибкость и упростить процесс добавления новых функций, а также тестирования и устранения багов.
Ключевыми принципами модульной архитектуры являются разделение кода на логические блоки и четкое определение зависимостей между ними. Используя модули, разработчики могут работать над разными частями приложения одновременно, что сокращает время разработки. Помимо этого, модульная структура позволяет легче адаптировать приложение к изменениям бизнес-требований или технологическим обновлениям.
Здесь рассматриваются преимущества модульного подхода в разработке приложений на PHP. Основная идея заключается в том, что создание кода, разбитого на небольшие, независимые и взаимосвязанные модули, делает приложение более масштабируемым и поддерживаемым. Такой подход позволяет улучшить гибкость и упростить процесс добавления новых функций, а также тестирования и устранения багов.
Ключевыми принципами модульной архитектуры являются разделение кода на логические блоки и четкое определение зависимостей между ними. Используя модули, разработчики могут работать над разными частями приложения одновременно, что сокращает время разработки. Помимо этого, модульная структура позволяет легче адаптировать приложение к изменениям бизнес-требований или технологическим обновлениям.
DEV Community
The Hidden Benefits of Modular PHP: How to Build Scalable Applications Like a Pro.
Introduction In an era where digital transformation accelerates rapidly, software...
🥱5
Как Elasticsearch поломал сборки и «обнулил» звёзды в Github
В один прекрасный день репозиторий
В один прекрасный день репозиторий
elasticsearch-php
на гитхабе выдал 404 ошибку. Что было дальше — в статье.Хабр
Как Elasticsearch поломал сборки и «обнулил» звёзды в Github
Казалось бы, майская история с Docker hub должна была научить всех нас уделять больше времени на обеспечение целостности артефактов проекта, но на то мы и люди, чтобы учиться на своих (и чужих)...
😁5👍3🥰1
🔎Пользуетесь ли вы какими-либо иностранными новостными ресурсами по программированию на регулярной основе? Если да, то какими?🔽
🤔4
This media is not supported in your browser
VIEW IN TELEGRAM
🤓 Git Gud — игра для изучения Git
Это игра с командной строкой. В ней уровни разделены от простого к экспертному.
🔗 Ссылка
Это игра с командной строкой. В ней уровни разделены от простого к экспертному.
🔗 Ссылка
👍12
⚡️Самые полезные каналы по PHP в одной папке
В ней:
➖ канал для подготовки к собеседованиям
➖ интересные задачи
➖ основной канал (этот)
➖ лучшие вакансии из сферы
➖ и наш чат, в котором можно общаться и задавать вопросы
Добавляйте 👉 тык сюда
В ней:
Добавляйте 👉 тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🍐 Подборка лучших статей «Библиотеки программиста» за октябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
💻🔍💼 Кризис IT-рынка: как джуны и кадровый голод меняют правила игры
🐍🍽️ Питон съел GIL на завтрак: что нового в версии 3.13
🪶 Как следовать принципу DRY при настройке Apache APISIX
📨 Как работают очереди и брокеры сообщений
🎮⚙️ Неправильные настройки импорта в Unity убивают вашу игру
🛠️🎯 12 инструментов для разработки крутого фронтенда
🚀💾⚡️ Protocol Buffers: самая эффективная бинарная альтернатива текстовому формату
💻🔍💼 Кризис IT-рынка: как джуны и кадровый голод меняют правила игры
🐍🍽️ Питон съел GIL на завтрак: что нового в версии 3.13
🪶 Как следовать принципу DRY при настройке Apache APISIX
📨 Как работают очереди и брокеры сообщений
🎮⚙️ Неправильные настройки импорта в Unity убивают вашу игру
🛠️🎯 12 инструментов для разработки крутого фронтенда
🚀💾⚡️ Protocol Buffers: самая эффективная бинарная альтернатива текстовому формату
PHP 8.4 Property Hooks: Можно ли теперь избавиться от геттеров/сеттеров?
В будущей версии PHP 8.4 появится новая функция — «хуки для свойств», позволяющая добавлять логику при обращении к свойствам класса для чтения или записи данных. Это значит, что теперь можно отказаться от использования приватных свойств и публичных методов для их обработки (геттеров и сеттеров).
Здесь изучается влияние этой функции на производительность. В частности, интересует, влияет ли использование хуков вместо геттеров/сеттеров на скорость работы приложения и стоит ли отказываться от привычных методов доступа к данным.
Основные результаты и выводы:
✔️Производительность геттеров и сеттеров: Исследование показало, что вызовы геттеров и сеттеров занимают незначительную часть времени выполнения, даже при работе с большим объемом данных, и практически не влияют на общую производительность приложения.
✔️Сравнение производительности: В тестах с хуками и геттерами/сеттерами разница в скорости оказалась минимальной — около 9%. Это подтверждает, что производительность не должна быть решающим фактором при выборе между хуками и геттерами/сеттерами.
✔️Основные причины использования геттеров/сеттеров: Обычно геттеры и сеттеры применяют не для повышения скорости, а для ограничения доступа к данным и контроля за структурой класса. С хуками такие ограничения также можно реализовать, добавляя нужную логику при доступе к свойству.
✔️Итоги тестирования альфа-версии: Во время ранних тестов PHP 8.4 производительность хуков была ниже, чем у геттеров. Это указывало на необходимость оптимизации, и в итоге в RFC были внесены улучшения, благодаря которым сейчас хуки в PHP 8.4 работают быстрее.
В будущей версии PHP 8.4 появится новая функция — «хуки для свойств», позволяющая добавлять логику при обращении к свойствам класса для чтения или записи данных. Это значит, что теперь можно отказаться от использования приватных свойств и публичных методов для их обработки (геттеров и сеттеров).
Здесь изучается влияние этой функции на производительность. В частности, интересует, влияет ли использование хуков вместо геттеров/сеттеров на скорость работы приложения и стоит ли отказываться от привычных методов доступа к данным.
Основные результаты и выводы:
✔️Производительность геттеров и сеттеров: Исследование показало, что вызовы геттеров и сеттеров занимают незначительную часть времени выполнения, даже при работе с большим объемом данных, и практически не влияют на общую производительность приложения.
✔️Сравнение производительности: В тестах с хуками и геттерами/сеттерами разница в скорости оказалась минимальной — около 9%. Это подтверждает, что производительность не должна быть решающим фактором при выборе между хуками и геттерами/сеттерами.
✔️Основные причины использования геттеров/сеттеров: Обычно геттеры и сеттеры применяют не для повышения скорости, а для ограничения доступа к данным и контроля за структурой класса. С хуками такие ограничения также можно реализовать, добавляя нужную логику при доступе к свойству.
✔️Итоги тестирования альфа-версии: Во время ранних тестов PHP 8.4 производительность хуков была ниже, чем у геттеров. Это указывало на необходимость оптимизации, и в итоге в RFC были внесены улучшения, благодаря которым сейчас хуки в PHP 8.4 работают быстрее.
👍13
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Стоит ли возвращать null из методов. Если нет, то почему и как писать код в таких случаях?
Когда речь идет о возвращении значения из методов, лучше избегать возвращения null, так как это может привести к ошибкам и сложностям при обработке результата функции. Вместо этого, важно возвращать объекты или значения-заглушки, которые явно указывают на определенное состояние или ситуацию.
Если метод не может вернуть ожидаемый результат или найти запрошенное значение, то лучше выбросить исключение, чтобы проинформировать о такой ситуации и позволить соответствующей обработке ошибок или выполнению альтернативных действий. Если метод не может найти результат, который можно обозначить специальным значением, можно вернуть значение-заглушку, которое явно указывает на отсутствие результата или ошибку. Это может быть пустой массив, пустой объект, пустая строка или целое число, имеющее конкретное значение, которое в вашем контексте обозначает отсутствие результата.
Когда речь идет о возвращении значения из методов, лучше избегать возвращения null, так как это может привести к ошибкам и сложностям при обработке результата функции. Вместо этого, важно возвращать объекты или значения-заглушки, которые явно указывают на определенное состояние или ситуацию.
Если метод не может вернуть ожидаемый результат или найти запрошенное значение, то лучше выбросить исключение, чтобы проинформировать о такой ситуации и позволить соответствующей обработке ошибок или выполнению альтернативных действий. Если метод не может найти результат, который можно обозначить специальным значением, можно вернуть значение-заглушку, которое явно указывает на отсутствие результата или ошибку. Это может быть пустой массив, пустой объект, пустая строка или целое число, имеющее конкретное значение, которое в вашем контексте обозначает отсутствие результата.
👍8👾4
Composer: бинарные образы Docker
Разработчик предложил создать новую версию Docker-образов для Composer, содержащую только бинарный файл Composer, что позволяет оптимизировать пространство и ресурсы. Идея была в том, чтобы избежать загрузки полного образа Composer (около 190 МБ), если требуется только сам бинарный файл (около 2,5 МБ). Его Pull Request был принят, и теперь пользователи могут использовать компактные, бинарные образы Composer в своих сборках Docker.
Особенности новой реализации:
Чтобы использовать бинарный образ, необходимо указать
Пример использования:
Новый подход подходит для создания кастомных образов на базе PHP с Composer, где можно просто скопировать готовый бинарный файл, избегая программной установки.
Важно отметить, что эти образы содержат только бинарный файл Composer и не подходят для выполнения команд, так как в них нет ни PHP-окружения, ни оболочки.
Технические детали реализации:
Автор добавил новые цели сборки в Dockerfile, что позволило создавать как полноценные, так и бинарные образы. Для этого был применен метод многоэтапной сборки, оптимизирующий конечный образ и исключающий временные файлы. Также в GitHub Actions были настроены новые этапы для сборки и тестирования обоих типов образов.
Разработчик предложил создать новую версию Docker-образов для Composer, содержащую только бинарный файл Composer, что позволяет оптимизировать пространство и ресурсы. Идея была в том, чтобы избежать загрузки полного образа Composer (около 190 МБ), если требуется только сам бинарный файл (около 2,5 МБ). Его Pull Request был принят, и теперь пользователи могут использовать компактные, бинарные образы Composer в своих сборках Docker.
Особенности новой реализации:
Чтобы использовать бинарный образ, необходимо указать
composer/composer
и добавить суффикс -bin
. Также изменено расположение бинарного файла: теперь он находится в корневом каталоге (/composer
) вместо стандартного (/usr/bin/composer
).Пример использования:
FROM php:8-alpine
COPY --from=composer/composer:2-bin /composer /usr/bin/composer
Новый подход подходит для создания кастомных образов на базе PHP с Composer, где можно просто скопировать готовый бинарный файл, избегая программной установки.
Важно отметить, что эти образы содержат только бинарный файл Composer и не подходят для выполнения команд, так как в них нет ни PHP-окружения, ни оболочки.
Технические детали реализации:
Автор добавил новые цели сборки в Dockerfile, что позволило создавать как полноценные, так и бинарные образы. Для этого был применен метод многоэтапной сборки, оптимизирующий конечный образ и исключающий временные файлы. Также в GitHub Actions были настроены новые этапы для сборки и тестирования обоих типов образов.
blog.codito.dev
Composer: binary-only Docker images
Few months ago I came with an idea to build Composer’s Docker images, but containing only binary file. Yesterday my pull request was merged, and now it’s possible to use such images in your own Docker builds as the simplest way to get Composer binary in your…
❤17👍1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🔐 🔑 OAuth 2: как работает современная авторизация
Помнишь кнопку «Войти через Google»? Та самая кнопка, которая избавляет от необходимости запоминать очередной пароль. Сегодня разберем, как работает эта магия изнутри, почему гиганты вроде Spotify и Medium используют такой способ входа, и как внедрить его в свое приложение. Спойлер: это проще, чем кажется, и гораздо безопаснее традиционной формы регистрации.
Читать статью
Помнишь кнопку «Войти через Google»? Та самая кнопка, которая избавляет от необходимости запоминать очередной пароль. Сегодня разберем, как работает эта магия изнутри, почему гиганты вроде Spotify и Medium используют такой способ входа, и как внедрить его в свое приложение. Спойлер: это проще, чем кажется, и гораздо безопаснее традиционной формы регистрации.
Читать статью
🤔4🤩3
Fizz-Buzz за 56 символов?
На сайте code-golf.io вы можете посоревноваться в написании самых коротких решений простых задач по программированию. Например, попробуйте написать самый короткий код FizzBuzz на PHP — на данный момент он составляет всего 56 символов!
Задача состоит в следующем:
🔸Напечатайте числа от 1 до 100 включительно, каждое на своей строке.
🔸Если, однако, число кратно трем, то вместо него выведите Fizz, а если число кратно пяти, то выведите Buzz.
🔸Если верно несколько условий, то должны быть выведены все замены, например 15 — FizzBuzz.
Вот пример на 72 символа:
На сайте code-golf.io вы можете посоревноваться в написании самых коротких решений простых задач по программированию. Например, попробуйте написать самый короткий код FizzBuzz на PHP — на данный момент он составляет всего 56 символов!
Задача состоит в следующем:
🔸Напечатайте числа от 1 до 100 включительно, каждое на своей строке.
🔸Если, однако, число кратно трем, то вместо него выведите Fizz, а если число кратно пяти, то выведите Buzz.
🔸Если верно несколько условий, то должны быть выведены все замены, например 15 — FizzBuzz.
Вот пример на 72 символа:
for(;$i++<100;)echo$i%15?($i%3?($i%5?$i:'Buzz'):'Fizz'):'FizzBuzz',"\n»;
❤4👍2👏1😁1
Новое в Symfony 7.2
🔸Улучшена работа с тайм-аутами в компоненте Messenger для предотвращения повторной обработки сообщений. Это реализовано двумя новыми функциями:
Поддержка
ConsoleAlarmEvent и SIGALRM-сигнал: добавлен метод
🔸Компонент Mime получил два важных нововведения:
Пользовательские MIME-энкодеры: раньше Mime-компонент поддерживал только фиксированные типы энкодеров для элементов
Поддержка Unicode в email-адресах: благодаря поддержке стандарта RFC 6531 теперь можно использовать Unicode-символы в email-адресах (в локальной и доменной частях).
🔸Добавлена возможность настраивать индикатор завершения в компоненте Console, что улучшает удобство работы и взаимодействие с разработчиком (DX). Ранее при использовании индикатора прогресса отображался вращающийся текстовый спиннер, который оставался на последнем состоянии при завершении команды, что могло создавать неконсистентное впечатление.
Теперь по умолчанию отображается значок ✔️ как индикатор завершения, обеспечивая единообразное завершение. Также можно задать собственное значение индикатора завершения с помощью опции
🔸Улучшена работа с тайм-аутами в компоненте Messenger для предотвращения повторной обработки сообщений. Это реализовано двумя новыми функциями:
Поддержка
keepalive
: введен интерфейс KeepaliveReceiverInterface
, который позволяет транспортам оповещать о том, что сообщение все еще обрабатывается, избегая его возврата в очередь. Метод keepalive(Envelope $envelope): void
отправляет уведомление о том, что сообщение активно, предотвращая тайм-аут на стороне транспорта. Несколько встроенных транспортов уже реализуют этот интерфейс, и поддержка будет расширена в будущих версиях Symfony.ConsoleAlarmEvent и SIGALRM-сигнал: добавлен метод
setAlarmInterval
в основной класс приложений Symfony для установки интервала сигнала SIGALRM. Команды messenger:consum
e и messenger:failed:retry
теперь поддерживают опцию --keepalive
, которая позволяет периодически вызывать keepalive с помощью SIGALRM сигнала.🔸Компонент Mime получил два важных нововведения:
Пользовательские MIME-энкодеры: раньше Mime-компонент поддерживал только фиксированные типы энкодеров для элементов
TextPart
(quoted-printable, base64, 8bit). Теперь разработчики могут создавать и использовать собственные энкодеры для специфических нужд, таких как SOAP-вложения.Поддержка Unicode в email-адресах: благодаря поддержке стандарта RFC 6531 теперь можно использовать Unicode-символы в email-адресах (в локальной и доменной частях).
🔸Добавлена возможность настраивать индикатор завершения в компоненте Console, что улучшает удобство работы и взаимодействие с разработчиком (DX). Ранее при использовании индикатора прогресса отображался вращающийся текстовый спиннер, который оставался на последнем состоянии при завершении команды, что могло создавать неконсистентное впечатление.
Теперь по умолчанию отображается значок ✔️ как индикатор завершения, обеспечивая единообразное завершение. Также можно задать собственное значение индикатора завершения с помощью опции
finishedIndicatorValue
.🔥5❤1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.