Что такое функции soundex() и metaphone() в PHP?
Функция soundex():
Функция soundex() вычисляет звуковой индекс строки.
Soundex — это фонетический алгоритм, который назначает код слову на основе его произношения.
Он применяется преимущественно для поиска слов, которые звучат похоже, но могут быть написаны по-разному.
Функция сокращает слова до четырехсимвольного кода, который представляет его звучание.
Это полезно для задач, таких как поиск имен, которые звучат похоже, но имеют разные написания.
Функция metaphone():
Функция metaphone() вычисляет метафонический ключ строки.
Metaphone — это еще один фонетический алгоритм, но он более продвинут, чем Soundex.
Он преобразует слово в фонетический ключ, состоящий из одной или нескольких букв.
В отличие от Soundex, Metaphone учитывает вариации произношения и более эффективен для английских слов.
#вопросы_с_собеседований
Функция soundex():
Функция soundex() вычисляет звуковой индекс строки.
Soundex — это фонетический алгоритм, который назначает код слову на основе его произношения.
Он применяется преимущественно для поиска слов, которые звучат похоже, но могут быть написаны по-разному.
Функция сокращает слова до четырехсимвольного кода, который представляет его звучание.
Это полезно для задач, таких как поиск имен, которые звучат похоже, но имеют разные написания.
Функция metaphone():
Функция metaphone() вычисляет метафонический ключ строки.
Metaphone — это еще один фонетический алгоритм, но он более продвинут, чем Soundex.
Он преобразует слово в фонетический ключ, состоящий из одной или нескольких букв.
В отличие от Soundex, Metaphone учитывает вариации произношения и более эффективен для английских слов.
#вопросы_с_собеседований
👍22🤔11❤1
DTO vs VO в PHP
DTO (Data Transfer Object) и VO (Value Object) — это два шаблона проектирования, которые полезны для улучшения качества кода и его читаемости в PHP.
DTO представляют собой объекты, содержащие данные и определяющие структуру этих данных. Они полезны для передачи данных между различными частями приложения, например, при обработке HTTP-запросов.
VO представляют собой объекты, которые обеспечивают гарантию корректности данных, содержащихся в них. Они полезны для представления значений, специфичных для домена приложения, и применения бизнес-правил.
DTO используются там, где данные входят или выходят из приложения, например, при обработке HTTP-запросов или ответов на них.
VO используются для проверки корректности значений и применения к ним бизнес-правил, например, для представления цен или email-адресов.
Оба шаблона помогают сделать код более чистым, понятным и уменьшить вероятность ошибок.
DTO (Data Transfer Object) и VO (Value Object) — это два шаблона проектирования, которые полезны для улучшения качества кода и его читаемости в PHP.
DTO представляют собой объекты, содержащие данные и определяющие структуру этих данных. Они полезны для передачи данных между различными частями приложения, например, при обработке HTTP-запросов.
VO представляют собой объекты, которые обеспечивают гарантию корректности данных, содержащихся в них. Они полезны для представления значений, специфичных для домена приложения, и применения бизнес-правил.
DTO используются там, где данные входят или выходят из приложения, например, при обработке HTTP-запросов или ответов на них.
VO используются для проверки корректности значений и применения к ним бизнес-правил, например, для представления цен или email-адресов.
Оба шаблона помогают сделать код более чистым, понятным и уменьшить вероятность ошибок.
DEV Community
DTO vs VO in PHP
Data Transfer Objects (DTOs) and Value Objects (VOs) are particularly useful when working with...
👍15❤1
Как ошибки проектирования при разработке на Symfony могут привести к перерасходу ресурсов и замедлению работы системы
Здесь обсуждаются ошибки, допущенные на начальных этапах создания проекта электронной коммерции, и способы их исправления, что привело к значительному снижению потребления памяти и нагрузки на дисковую систему.
1️⃣Первая ошибка заключалась в том, что при хранении данных сессий пользователей в Redis, объекты сессий содержали в себе много лишней информации, включая все выданные токены доступа. Это привело к избыточному потреблению памяти и увеличению нагрузки на дисковую систему.
2️⃣Вторая ошибка заключалась в том, что не была реализована функция удаления старых токенов доступа, что привело к накоплению большого количества устаревших данных в базе данных.
3️⃣Третья ошибка состояла в том, что не был активирован режим без сохранения состояния для одного из API, что привело к ненужному созданию новых сессий при каждом запросе и увеличению нагрузки на систему.
Для решения проблем были предприняты следующие шаги:
🟢Переписана система выдачи токенов доступа, чтобы в базе данных хранились только актуальные токены.
🟢Убрана связь между токенами доступа и объектами пользователей.
🟢Активирован режим без сохранения состояния для соответствующего API.
Кроме того, из этого опыта можно выделить несколько уроков, включая необходимость наличия системы мониторинга, аккуратность при разработке под давлением сжатых сроков, и важность командной работы для предотвращения ошибок.
Здесь обсуждаются ошибки, допущенные на начальных этапах создания проекта электронной коммерции, и способы их исправления, что привело к значительному снижению потребления памяти и нагрузки на дисковую систему.
1️⃣Первая ошибка заключалась в том, что при хранении данных сессий пользователей в Redis, объекты сессий содержали в себе много лишней информации, включая все выданные токены доступа. Это привело к избыточному потреблению памяти и увеличению нагрузки на дисковую систему.
2️⃣Вторая ошибка заключалась в том, что не была реализована функция удаления старых токенов доступа, что привело к накоплению большого количества устаревших данных в базе данных.
3️⃣Третья ошибка состояла в том, что не был активирован режим без сохранения состояния для одного из API, что привело к ненужному созданию новых сессий при каждом запросе и увеличению нагрузки на систему.
Для решения проблем были предприняты следующие шаги:
🟢Переписана система выдачи токенов доступа, чтобы в базе данных хранились только актуальные токены.
🟢Убрана связь между токенами доступа и объектами пользователей.
🟢Активирован режим без сохранения состояния для соответствующего API.
Кроме того, из этого опыта можно выделить несколько уроков, включая необходимость наличия системы мониторинга, аккуратность при разработке под давлением сжатых сроков, и важность командной работы для предотвращения ошибок.
Хабр
Как ошибки проектирования при разработке на Symfony могут привести к перерасходу ресурсов и замедлению работы системы
Сегодня хочу рассказать о том, какие ошибки можно допустить на начальном этапе создания e-commerce проекта в проектировании модели данных и в разработке веб-приложения. И, самое главное, как эти...
😁4🌚4👍3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🎉1
Использование интерфейсов в сторонних пакетах
Здесь читателям предлагается использовать интерфейсы вместо конкретных классов или перечислений для создания более гибких и расширяемых API в PHP. Начиная с введения перечислений в PHP 8.1, они могут быть удобны для представления ограниченного набора опций. Однако, если требуется более гибкий и расширяемый подход, рекомендуется использовать интерфейсы.
Преимущества такого подхода заключается в loose coupling между компонентами и возможности расширения функционала как для разработчиков пакета, так и для пользователей.
Здесь читателям предлагается использовать интерфейсы вместо конкретных классов или перечислений для создания более гибких и расширяемых API в PHP. Начиная с введения перечислений в PHP 8.1, они могут быть удобны для представления ограниченного набора опций. Однако, если требуется более гибкий и расширяемый подход, рекомендуется использовать интерфейсы.
Преимущества такого подхода заключается в loose coupling между компонентами и возможности расширения функционала как для разработчиков пакета, так и для пользователей.
Svenluijten
Using interfaces in third-party packages
How to effectively use interfaces to make your PHP package easier to work with and more customizable than ever before.
👍3
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии PHP разработчиков уровня Junior
▪️Веб-разработчик
Тула. ИнтерЛабс — интернет-маркетинговое агентство полного цикла
Подробнее
▪️Стажер-разработчик PHP
Ульяновск. FrameWork Team — аутсорс-разработка
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP разработчик
Москва. GeekChain — разработка ПО
Подробнее
▪️PHP разработчик
Москва. Мой Самокат — сервис, специализирующийся на аренде девайсов по системе подписки
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Senior PHP developer
Москва. СЕЙЧАС — информационные технологии, системная интеграция
Подробнее
▪️Старший PHP-программист
Москва. Автоспот — сервис продажи авто
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️Веб-разработчик
Тула. ИнтерЛабс — интернет-маркетинговое агентство полного цикла
Подробнее
▪️Стажер-разработчик PHP
Ульяновск. FrameWork Team — аутсорс-разработка
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP разработчик
Москва. GeekChain — разработка ПО
Подробнее
▪️PHP разработчик
Москва. Мой Самокат — сервис, специализирующийся на аренде девайсов по системе подписки
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Senior PHP developer
Москва. СЕЙЧАС — информационные технологии, системная интеграция
Подробнее
▪️Старший PHP-программист
Москва. Автоспот — сервис продажи авто
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
tula.hh.ru
Вакансия Веб-разработчик (junior) в Туле, работа в компании ИнтерЛабс (вакансия в архиве c 7 марта 2024)
Зарплата: от 50000 ₽. Тула. Требуемый опыт: не требуется. Полная занятость. Дата публикации: 04.03.2024.
😁10❤2🤔1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
В чем разница между функциями «htmlentities» и «htmlspecialchars» в PHP?
В PHP функции «htmlentities()» и «htmlspecialchars()» используются для кодирования HTML-сущностей, но они имеют разные цели:
«htmlspecialchars()»: Эта функция в основном используется для экранирования символов HTML, которые имеют специальное значение в HTML, таких как <, >, &, и «. Она преобразует эти символы в соответствующие HTML-сущности (<, >, &, «). Это часто используется для предотвращения атак XSS (межсайтового скриптинга), гарантируя, что пользовательский ввод отображается «как есть», без интерпретации как HTML.
«htmlentities()»: Эта функция преобразует все применимые символы в соответствующие HTML-сущности. В дополнение к символам, экранируемым «htmlspecialchars()», она также преобразует символы, такие как не-ASCII символы и различные символы. Эта функция часто используется, когда необходимо гарантировать безопасное кодирование всех символов для вывода HTML, особенно при работе с многоязычным контентом.
#вопросы_с_собеседований
В PHP функции «htmlentities()» и «htmlspecialchars()» используются для кодирования HTML-сущностей, но они имеют разные цели:
«htmlspecialchars()»: Эта функция в основном используется для экранирования символов HTML, которые имеют специальное значение в HTML, таких как <, >, &, и «. Она преобразует эти символы в соответствующие HTML-сущности (<, >, &, «). Это часто используется для предотвращения атак XSS (межсайтового скриптинга), гарантируя, что пользовательский ввод отображается «как есть», без интерпретации как HTML.
«htmlentities()»: Эта функция преобразует все применимые символы в соответствующие HTML-сущности. В дополнение к символам, экранируемым «htmlspecialchars()», она также преобразует символы, такие как не-ASCII символы и различные символы. Эта функция часто используется, когда необходимо гарантировать безопасное кодирование всех символов для вывода HTML, особенно при работе с многоязычным контентом.
#вопросы_с_собеседований
❤9😁2
Освоение маршрутов Laravel: комплексное руководство для всех уровней
Это обзор маршрутизации в Laravel для пользователей всех уровней: от новичков до опытных разработчиков. Он начинается с простых концепций, таких как базовая маршрутизация и передача параметров, затем переходит к более сложным концепциям, таким как именованные маршруты, группы маршрутов и промежуточное программное обеспечение.
Далее представляются более продвинутые техники, такие как привязка модели к маршруту, контроллеры ресурсов и API-маршруты.
В целом, автор подчеркивает важность понимания маршрутизации в Laravel для создания эффективных и динамичных веб-приложений, а также призывает читателей экспериментировать с изученными концепциями для улучшения навыков в разработке на Laravel.
Это обзор маршрутизации в Laravel для пользователей всех уровней: от новичков до опытных разработчиков. Он начинается с простых концепций, таких как базовая маршрутизация и передача параметров, затем переходит к более сложным концепциям, таким как именованные маршруты, группы маршрутов и промежуточное программное обеспечение.
Далее представляются более продвинутые техники, такие как привязка модели к маршруту, контроллеры ресурсов и API-маршруты.
В целом, автор подчеркивает важность понимания маршрутизации в Laravel для создания эффективных и динамичных веб-приложений, а также призывает читателей экспериментировать с изученными концепциями для улучшения навыков в разработке на Laravel.
😁7
Laravel 11. Что нового?
Команда Тейлора скоро выпустит новую мажорную версию фреймворка. Laravel 11 продолжает улучшения, начатые в Laravel 10.x, представляя упрощенную структуру приложения, ограничение скорости в секунду, маршруты проверки состояния приложения, элегантную ротацию ключа шифрования, улучшения в тестировании очередей, транспорт отправки почты, интеграцию с Prompt валидатором, новые команды Artisan и другие нововведения. Кроме того, был представлен Laravel Reverb — масштабируемый сервер WebSocket, обеспечивающий надежную работу в реальном времени.
Основные изменения в Laravel 11:
🔴Требуется PHP 8.2.
🟠Упрощенная структура приложения с новым файлом bootstrap/app.php для настройки маршрутизации, промежуточного ПО, обработки исключений и т.д.
🟡Вместо пяти сервис-провайдеров в Laravel 11 по умолчанию только один — AppServiceProvider, объединяющий функционал предыдущих.
🟢Расширены возможности использования переменных окружения для конфигурации фреймворка.
⚪Удалены файлы маршрутов api.php и channels.php, но их можно создать при необходимости.
🟣Мидлвары теперь настраиваются в bootstrap/app.php, что уменьшает объем приложения.
🔵Планировщик задач теперь настраивается непосредственно в файле routes/console.php.
🔴Обработка исключений также настраивается в bootstrap/app.php.
🟠По умолчанию новые приложения Laravel используют SQLite для хранения данных, что упрощает начало работы.
🟡Laravel Reverb предоставляет быструю и масштабируемую работу с WebSocket, а также поддерживает горизонтальное масштабирование с использованием Redis.
🟢Добавлена поддержка ограничения скорости в секунду.
⚪Введены маршруты проверки состояния приложения.
🟣Добавлена элегантная ротация ключей шифрования.
🔵Добавлены новые команды Artisan для быстрого создания классов, интерфейсов и трейтов.
Команда Тейлора скоро выпустит новую мажорную версию фреймворка. Laravel 11 продолжает улучшения, начатые в Laravel 10.x, представляя упрощенную структуру приложения, ограничение скорости в секунду, маршруты проверки состояния приложения, элегантную ротацию ключа шифрования, улучшения в тестировании очередей, транспорт отправки почты, интеграцию с Prompt валидатором, новые команды Artisan и другие нововведения. Кроме того, был представлен Laravel Reverb — масштабируемый сервер WebSocket, обеспечивающий надежную работу в реальном времени.
Основные изменения в Laravel 11:
🔴Требуется PHP 8.2.
🟠Упрощенная структура приложения с новым файлом bootstrap/app.php для настройки маршрутизации, промежуточного ПО, обработки исключений и т.д.
🟡Вместо пяти сервис-провайдеров в Laravel 11 по умолчанию только один — AppServiceProvider, объединяющий функционал предыдущих.
🟢Расширены возможности использования переменных окружения для конфигурации фреймворка.
⚪Удалены файлы маршрутов api.php и channels.php, но их можно создать при необходимости.
🟣Мидлвары теперь настраиваются в bootstrap/app.php, что уменьшает объем приложения.
🔵Планировщик задач теперь настраивается непосредственно в файле routes/console.php.
🔴Обработка исключений также настраивается в bootstrap/app.php.
🟠По умолчанию новые приложения Laravel используют SQLite для хранения данных, что упрощает начало работы.
🟡Laravel Reverb предоставляет быструю и масштабируемую работу с WebSocket, а также поддерживает горизонтальное масштабирование с использованием Redis.
🟢Добавлена поддержка ограничения скорости в секунду.
⚪Введены маршруты проверки состояния приложения.
🟣Добавлена элегантная ротация ключей шифрования.
🔵Добавлены новые команды Artisan для быстрого создания классов, интерфейсов и трейтов.
👍20🔥10😁5🥱4❤2
💬 Как вы относитесь к парному программированию? Это то самое, при котором два разраба работают вместе над одной задачей, сидя за одним рабочим местом.
👍18🥱7🌚5😁1
Еще один #дайджест новостей по PHP за неделю:
🔎Выпущена версия cakephp phpstan 3.1.0! — много изменений в работе с таблицами и многое другое!
🔎Выпущена Symfony 7.0.4 — Вот список наиболее важных изменений с версии 7.0.3.
🔎Неделя Symfony № 895 (19–25 февраля 2024 г.)
🔎Выпущена версия cakephp phpstan 3.1.0! — много изменений в работе с таблицами и многое другое!
🔎Выпущена Symfony 7.0.4 — Вот список наиболее важных изменений с версии 7.0.3.
🔎Неделя Symfony № 895 (19–25 февраля 2024 г.)
👍5
Мечты о строго и статически типизированном PHP
Сегодня мы рассмотрим важный вопрос. Это возможность превращения PHP из динамически типизированного языка в статически типизированный с помощью введения различных типовых объявлений. С момента выпуска PHP 7.0 в декабре 2015 года в языке появились новые функции для работы с типами данных, такие как типизация параметров функций, возвращаемые типы и свойства классов.
Здесь изложены идеи по дальнейшему усовершенствованию типовой системы PHP. Предлагается внедрение типизации переменных, поддержку типизированных массивов и введение псевдонимов типов для улучшения читаемости и поддержки кода.
Кроме того, обсуждается вопрос о том, каким образом внедрить эти функции, предлагаются различные варианты синтаксиса для реализации типизации переменных и массивов, а также предлагается использование псевдонимов типов для упрощения работы с повторяющимися типами данных в коде.
Сегодня мы рассмотрим важный вопрос. Это возможность превращения PHP из динамически типизированного языка в статически типизированный с помощью введения различных типовых объявлений. С момента выпуска PHP 7.0 в декабре 2015 года в языке появились новые функции для работы с типами данных, такие как типизация параметров функций, возвращаемые типы и свойства классов.
Здесь изложены идеи по дальнейшему усовершенствованию типовой системы PHP. Предлагается внедрение типизации переменных, поддержку типизированных массивов и введение псевдонимов типов для улучшения читаемости и поддержки кода.
Кроме того, обсуждается вопрос о том, каким образом внедрить эти функции, предлагаются различные варианты синтаксиса для реализации типизации переменных и массивов, а также предлагается использование псевдонимов типов для упрощения работы с повторяющимися типами данных в коде.
👍5
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
🧿 Знания — сила! Что должен изучить каждый программист?
❗Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
‼️ Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Опросик
❗Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
‼️ Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Опросик
😁7🤔1
Практический пример декомпозиции монолитного PHP приложения
Декомпозиция монолита — не редкая проблема. Это связано с тем, что на ранних стадиях развития любого стартапа накапливается так называемый decision debt — выбранная архитектура является оптимальной для быстрой разработки и экспериментирования, но не для зрелого продукта.
❗«Decision debt» относится к ситуации, когда команда разработчиков откладывает принятие решения по определенным важным аспектам проекта или архитектурным решениям. Этот долг накапливается, когда разработчики временно откладывают принятие решения, чтобы сосредоточиться на разработке продукта в срок или избежать затрат времени на принятие сложных решений.
Учитывая популярность проблемы, существует множество книг и статей о подходах к её решению, но автор считает, что есть недостаток практических примеров. Поэтому, в этой статье он решил сосредоточиться на технических деталях, используя в качестве примера приложение, написанное на PHP и фреймворке Symfony.
Декомпозиция монолита — не редкая проблема. Это связано с тем, что на ранних стадиях развития любого стартапа накапливается так называемый decision debt — выбранная архитектура является оптимальной для быстрой разработки и экспериментирования, но не для зрелого продукта.
❗«Decision debt» относится к ситуации, когда команда разработчиков откладывает принятие решения по определенным важным аспектам проекта или архитектурным решениям. Этот долг накапливается, когда разработчики временно откладывают принятие решения, чтобы сосредоточиться на разработке продукта в срок или избежать затрат времени на принятие сложных решений.
Учитывая популярность проблемы, существует множество книг и статей о подходах к её решению, но автор считает, что есть недостаток практических примеров. Поэтому, в этой статье он решил сосредоточиться на технических деталях, используя в качестве примера приложение, написанное на PHP и фреймворке Symfony.
Хабр
Практический пример декомпозиции монолитного PHP приложения
Введение Стоит отметить, что сам по себе монолит не является антипаттерном и может отлично работать (и часто работает) при определенных условиях, обычно - когда он выбран осознанно. Но чаще всего...
👍7❤1
ИИ для PHP: как настроить подсказки ИИ для улучшения тестов
В нашем прошлом посте мы рассмотрели, как JetBrains AI Assistant может автоматически создавать модульные тесты. Генерируя скучный шаблонный код, мы можем сразу перейти к более интересной части создания тестов.
Здесь рассказывается про то, как можно улучшить ваши промты для написания более надежных тестов
AI Assistant может быть точнее в предсказании желаемого кода и дает пользователю возможность дополнительно специфицировать запросы с помощью кнопки «Specify».
Также здесь подчеркивается, что целью не является генерация идеального кода, а скорее упрощение скучных и рутинных задач, чтобы программисты могли сосредоточиться на более интересных частях разработки.
В нашем прошлом посте мы рассмотрели, как JetBrains AI Assistant может автоматически создавать модульные тесты. Генерируя скучный шаблонный код, мы можем сразу перейти к более интересной части создания тестов.
Здесь рассказывается про то, как можно улучшить ваши промты для написания более надежных тестов
AI Assistant может быть точнее в предсказании желаемого кода и дает пользователю возможность дополнительно специфицировать запросы с помощью кнопки «Specify».
Также здесь подчеркивается, что целью не является генерация идеального кода, а скорее упрощение скучных и рутинных задач, чтобы программисты могли сосредоточиться на более интересных частях разработки.
Telegram
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
ИИ для PHP: как автоматизировать модульное тестирование с помощью AI Assistant?
JetBrains предлагает использовать искусственный интеллект для автоматизации процесса тестирования, представляя новый инструмент JetBrains AI Assistant. С помощью этого инструмента…
JetBrains предлагает использовать искусственный интеллект для автоматизации процесса тестирования, представляя новый инструмент JetBrains AI Assistant. С помощью этого инструмента…
🥱4👍2❤1