Все потоки
Поиск
Написать публикацию
Обновить
1015.82

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Опрос: тестовое покрытие — must-have или bullshit

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров850

Всем привет! Судя по ответам, которые мы получили от посетителей конференций Joker, Heisenbug и JPoint, примерно в половине компаний есть требования по набиванию тестового покрытия (обычно 60-70% кода должно быть покрыто тестами).

Однако, при личном общении с разработчиками и тестировщиками мы постоянно слышим, что никаких требований нет и покрытие никак не контролируется.

Кто отвечает за тестовое покрытие? Должны его набивать разработчики или эта задача ложится на плечи тестеров? Будем благодарны, если ответите на 1 (один) вопрос. Если хочется поговорить о наболевшем и рассказать, как у вас в проекте обстоят дела с тестовым покрытием, пишите в комментарии.

Всем хорошей пятницы и классных выходных!

Скачать последнюю версию Explyt Test плагина можно на сайте или напрямую с GitHub.

Для обратной связи и сообщений об ошибках: GitHub Issues

Для общения: t.me/explyttest

Опрос в один вопрос

Код, железо, стратегия: в чем секрет победителей ML-соревнований?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.7K

Кто из вас участвовал в соревнованиях по машинному обучению? А кто выигрывал? В мире ML олимпиады, хакатоны и прочие состязания — это не просто способ проверить свои навыки. Это полигон, где рождаются и проверяются новые подходы к решению сложных задач.

В 2024 году прошло более 400 таких соревнований с общим призовым фондом свыше $22 миллионов. Но кто же эти люди, которые выиграли этот куш? И что такого они сделали, чтобы обойти других?

Мы проанализировали отчет The State of Machine Learning Competitions 2024 и выделили из него самые ценные моменты для практикующих разработчиков. Если хотите узнать, что на самом деле отличает победителей от остальных участников, то этот материал для вас.

Читать далее

Сегодня — Java 30 лет: ретроспектива выдающейся экосистемы разработки

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров8.4K

Сегодня Java исполняется 30. Три десятилетия — это эпоха. За это время технологии успели смениться кардинально, а некоторые модные языки — появиться, поиграть мускулами и тихо исчезнуть. А Java по-прежнему тут. Она не просто "ещё жива" — она стабильно занимает лидирующие места в рейтингах, используется в крупнейших корпорациях и продолжает эволюционировать. Как так получилось?

В этой статье я расскажу, почему Java прожила 30 лет и всё ещё чувствует себя уверенно: как она развивалась, как решаются проблемы производительности JVM, и почему на неё до сих пор делают ставку разработчики, архитекторы и CTO.

Предаться воспоминаниям

Стратегическое партнёрство Kotlin и Spring

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.2K

Команда Spring АйО перевела новость о стратегическом партнёрстве Kotlin и Spring. Полная null-безопасность, официальные обучающие материалы, мощная рефлексия и выразительный DSL — звучит многообещающе.

Читать далее

Реализация self-hosted карт в закрытом контуре

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров2.1K

На связи разработчики продукта Аврора Центр компании Открытая мобильная платформа. Сегодня мы расскажем как реализовать сервис self-hosted карт в закрытом контуре.

Наша компания активно развивается и добавляет новый функционал в продукт по удалённому управлению устройствами — Аврора Центр (UEM-решение, которое позволяет управлять устройствами и жизненным циклом приложений на ОС Аврора, Android и Linux). Так по запросам заказчиков было решено добавить отображение геопозиции мобильного устройства на карте территории России. И вот перед нами встаёт задача по работе с картами в АЦ.

Читать далее

eb#0: Квалификаторы и машины состояний, или Высокотипизированная магия в .NET

Уровень сложностиСложный
Время на прочтение51 мин
Количество просмотров2.8K

Двое мужчин на КДПВ искренне удивляются чувству вайб-кодинга без применения искуственного интелекта.

Что такое квалификаторы и для чего они нужны? Как это связано с машинами состояний? Откуда берётся магия в .NET?

Всё это органично сочетается во фреймворке EmptyBox.

Внутри рассматриваются квалифицированные машины состояний, расширения для них, и как это вообще программируется.

Заглянуть внутрь коробки

Запускаем Aider в Docker и вайб-кодим

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров5.4K

Aider — это open source программа для вайб-кодинга в терминале с подключением любых LLM-моделей.

Для локального вайб-кодинга понадобятся: Ubuntu, Docker, make и видеокарта (либо арендованный сервер). Далее набираем шесть несложных команд и ловим вайб.

Читать далее

Почему я исправляю баги бесплатно и как это изменило мою карьеру

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров15K

8 лет назад я исправил опечатку в чужом репозитории, а сейчас регулярно делаю коммиты в проекты, которые использую, и даже вошел в core team библиотеки с 27000 звёзд на GitHub

В этой статье покажу, что участие в Open Source проще, чем кажется. Расскажу, как регулярная работа с чужим кодом помогает быстрее разбираться в незнакомых кодовых базах, писать тесты и лучше документировать решения. А также объясню, почему публичная активность на GitHub выгодно отличает вас от других разработчиков, особенно в эпоху повсеместного использования ИИ.

Читать далее

Открываем Konfeature, нашу open-source библиотеку для удобной работы с Feature Flags

Время на прочтение8 мин
Количество просмотров2.4K

Привет! Это Саша Таболин — старший android-разработчик в red_mad_robot. Мы создали открытую библиотеку Konfeature для оптимизации работы с Feature Flags и хотим поделиться нашей разработкой.

Читать далее

Почему ИИ вас заменит. И как к этому подготовиться

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.9K

Время размышлений о том, заменит ли ИИ человеческий труд, прошло. Вопрос теперь не "если", а "когда" и "как быстро". По данным ОЭСР, 27% занятых на рынке труда развитых стран потеряют работу из-за искусственного интеллекта. К 2030 году около 38% рабочих мест в США и 30% в Великобритании могут оказаться под угрозой автоматизации.


Но есть и хорошая новость: те, кто понимает происходящее и готовится заранее, имеют все шансы не просто выжить, но и процветать. Ключ к успеху — не в конкуренции с ИИ, а в создании эффективного симбиоза, где ИИ усиливает человеческие способности, а не заменяет их.

Читать дальше →

AI-пузырь: когда стартапы получают миллионы за обёртку над чужим ИИ

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.4K

Пока инвесторы заливают миллионы в AI-стартапы, за красивыми интерфейсами часто скрывается лишь интеграция чужих моделей. Почему проекты вроде Cursor AI — это не прорыв, а симптом надвигающегося пузыря?

Читать далее

Временные и постоянные ошибки

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.3K

При работе с внешними интеграциями мы часто реализуем базовую реакцию на ошибки. В большинстве случаев достаточно ограничиться response.raise_for_status(), а детальную обработку оставить на потом.

Нередко мы не управляем ошибками. Не знаем в действительности ни как поведет себя внешняя система, ни какие типы этих ошибок следует от нее ожидать. В самом деле, бывает непросто учесть все возможные крайние случаи и обеспечить соответствующее ответное действие.

Что делать, когда сервер возвращает ошибку 503? А если превышен лимит запросов? А, допустим, истекло время ожидания и тому подобное? Мы неизбежно получаем длинный список исключений и обработчиков, которые необходимо реализовать, задокументировать и протестировать. Однако ситуацию можно улучшить…
Читать дальше →

Поднимайте If вверх, опускайте For вниз

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров32K

Эта статья — краткая заметка о двух связанных друг с другом эмпирических правилах.

Поднимайте If вверх

Если внутри функции есть условие if, то подумайте, нельзя ли его переместить в вызывающую сторону:

// ХОРОШО

fn frobnicate(walrus: Walrus) {

... }

// ПЛОХО

fn frobnicate(walrus: Option<Walrus>) {

let walrus = match walrus {

Some(it) => it,

None => return,

};

...

}

В подобных примерах часто существуют предварительные условия: функция может проверять предусловие внутри и «ничего не делать», если оно не выполняется, или же может передать задачу проверки предварительного условия вызывающей её стороне, а при помощи типов (или assert) принудительно удовлетворить этому условию. Подъём проверок вверх, особенно в случае предварительных условий, может иметь лавинообразный эффект и привести к уменьшению общего количества проверок. Именно поэтому и возникло это правило.

Читать далее

Ближайшие события

ИИ в работе разработчика: эксперимент в Back-End и Front-End командах

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров3.2K

Привет, Хабр!

В последние месяцы мы активно исследуем применение искусственного интеллекта в повседневной работе IT-команд. После пилота с системными аналитиками (об этом мы писали здесь: https://habr.com/ru/companies/inpglobal/articles/896114/ ) мы провели аналогичный эксперимент с Back-End и Front-End разработчиками. Цель — понять, насколько ИИ может реально помочь сократить lead time и разгрузить разработчиков от рутинны. Для объективной оценки мы подготовили план задач, измерили время выполнения с ИИ и без него — результаты оказались интереснее, чем мы ожидали.

Читать далее

Дрался за бутылку пива с бомжами, а теперь работаю разработчиком

Время на прочтение2 мин
Количество просмотров29K

На написание этой статьи меня вдохновила история Из бариста в программиста. Как я освоила SQL за неделю и стала тимлидом в IT-компании меньше, чем за год

Ещё пару лет назад моим основным стеком были: бутылка "Балтики девятки", пакет из «Пятёрочки» и лежание на скамейке под обновления погоды.

Читать далее

Как я создал мини-реддит на базе Telegram

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.4K

Недавно мне пришла идея воссоздать механику Reddit внутри Telegram.

Телега — отличная и популярная платформа для общения и ведения блогов, но, на мой взгляд, это ужасное место для создания настоящих сообществ.

До этого я никогда не писал ботов или мини-аппов. У меня был только некоторый опыт в веб-разработке. Давно хотел разобраться, как всё это работает... И вот появилось немного свободного времени, звёзды сошлись и я запилил свой мини-Реддит в Телеге :)

Читать далее

Kafka: ребалансировка изнутри

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров8.6K

Привет! Меня зовут Геннадий, я руковожу командой разработки системы учета товаров в Ozon. Мы активно используем Kafka как основной инструмент для асинхронного взаимодействия между нашими сервисами. Для нас Kafka — это не просто очередь сообщений, а один из ключевых компонентов всей архитектуры. Поэтому мы постоянно погружаемся в его тонкости и нюансы, чтобы грамотно настраивать и использовать его возможности. Думаю, многие из вас сталкиваются с тем же — когда Kafka становится критически важной частью вашего решения.

Хотя информации о ребалансировке Kafka достаточно, она часто либо слишком разрозненная и техническая, либо наоборот — поверхностная и без акцента на важные детали. Я собрал для вас самое важное и объясню это простым и понятным языком.

Читать далее

Управление транзакциями в Spring: подробно о @Transactional

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров15K

Команда Spring АйО перевела статью об использовании аннотации @Transactional для управления транзакциями в Spring и в различных фреймворках экосистемы Spring, а также о ее интеграции с Hibernate. После прочтения данной статьи вы будете гораздо лучше понимать основы работы с этой аннотацией, а также механизмы, которые работают под капотом при ее использовании.

Читать далее

PyCharm. Настройка и взаимодействие

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров9.9K

Привет хабр! В этой статье хочу рассказать, как сделать PyCharm удобнее и покажу пример настройки некоторых вспомогательных инструментов, встроенных в IDE.

Я уже давно работаю в этой IDE и меня все в ней устраивает, обилие горячих клавиш, UI, множество плагинов, гибкость, встроенные интеграции, но почти на каждом созвоне с коллегами, если они показывают демонстрацию экрана, оказывается, что они не знают о той или иной настройке, горячей клавише или плагине, которые значительно улучшили бы их пользовательский опыт. Именно поэтому, хочу поделиться и с вами некоторыми фишками.

Дисклеймер: В этой статье будет ряд изображений.

Читать далее

Умный дом без боли: интеграция нейросетей в Node-RED шаг за шагом

Время на прочтение6 мин
Количество просмотров5.1K

Нейронные сети с каждым днем становятся умнее и дешевле. Сейчас уже никого не удивить приложениями, позволяющими проводить инференс на современных домашних ПК. Но сами по себе они всего лишь инструмент, потенциал которого начинает раскрываться в более сложных сценариях автоматизации. Сегодня покажу, как старый добрый Node-Red может общаться с некоторыми нейросетями и в каких сценариях это будет более эффективно. Поехали!

Читать далее

Вклад авторов