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

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

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

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

Что делать, если ваш слон думает, что он баг?

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

Мы окунулись в веб-разработку и нашли там необычное животное. Это был слон с повадками бага. Мы изучили код проекта PHP и поняли, в чём дело. Давайте вместе посмотрим на необычные случаи, которые могут привести к неожиданным результатам.

Читать далее

Allure + Jenkins/Gitlab CI. Настройка автоматической отправки отчетов по почте

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

Автоматизированное тестирование – важная часть разработки, но недостаточно просто запускать тесты. Важно предоставлять отчёты в удобном и наглядном формате, чтобы повышать прозрачность процессов и улучшать командную коммуникацию.

Но отчёты сами по себе малоэффективны, если команда не узнает о результатах вовремя. Чтобы тестирование было действительно полезным, важно оперативно уведомлять участников проекта о его статусе. Один из самых простых и эффективных способов – автоматическая отправка отчетов Allure по электронной почте.

Привет! Я SDET-специалист SimbirSoft Руслан, и в этой статье мы разберем как настроить SMTP-сервер для отправки почты в Jenkins, как настроить GitLab Runner и как автоматизировать отправку отчетов после выполнения тестов.

Читать далее

60 бесплатных уроков сентября: от Golang и FastAPI до ML и Kubernetes

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

Хотите прокачать навыки в Golang, понять, как работает FastAPI, освоить практики MLOps или разобраться с Terraform? В сентябре вас ждут 60 бесплатных уроков по разным ИТ-направлениям: программирование, архитектура, инфраструктура, безопасность, тестирование, ML, аналитика и управление.

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

Читать далее

Состояние Python в 2025 году

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

Команда Python for Devs подготовила перевод статьи, основанной на 30 000 ответов разработчиков. TL;DR: 50% разработчиков пишут на Python меньше двух лет, Rust тихо становится «вторым пилотом», FastAPI вырывается вперёд, а агентный AI уже меняет то, как мы пишем код.

Читать далее

Определение положения объектов на изображении: как найти пространственные координаты объекта, используя OpenCV

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

Как найти 3D координаты объектов на изображении?

Статья о задаче пространственной локализации объектов на изображении с одной камеры и о её решении с помощью OpenCV

Читать далее

Примеры применения EPLAN API для создания собственного модуля Add In

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

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

Если вы когда-нибудь чувствовали, что стандартных инструментов EPLAN не хватает, значит пора взглянуть на его API. В статье я покажу, как написать свой первый Add-In на C#, добавить кнопку на Ribbon и заставить её выполнять полезные действия. Всё на примерах — от простого «Hello World» до работы с объектами и настройками EPLAN.

Читать далее

RegExp с флагом /v: наборы, пересечения и юникод-свойства

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

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

Сегодня рассмотрим флаг регулярных выражений v в JavaScript. Флаг поддержан в современных движках и Node 20+, а для старых окружений есть транспиляция через Babel. Начнём с краткой ориентации где это уже работает и почему синтаксис отличается, а потом пойдём в практику.

Читать далее

Поддержка Spring 7, Reactive Debugger, работа с БД и HTTP прямо в IDE: это и много другое в Amplicode 2025.2

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

Amplicode 2025.2 — это релиз, в котором мы закрыли десятки мелких раздражающих моментов, и усилили поддержку ключевых технологий — от Spring и Spring Data JDBC до Docker, Kubernetes и Terraform. А также сделали интеграцию с базами и HTTP-сервисами ещё более бесшовной.

Читать далее

Единый дистрибутив, JSpecify, Java 25 и новый Spring Debugger: это и многое другое в IntelliJ IDEA 2025.2

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

IntelliJ IDEA 2025.2 — это релиз, который уже вызывает горячие обсуждения в комьюнити. JetBrains сделали первые шаги в сторону единого дистрибутива, добавили поддержку свежих технологий вроде JSpecify и Java 25, а ещё представили инструмент, который может изменить подход к отладке Spring-приложений.

Читать далее

Жмых-жмых и в продакшен: как быстро написать админку

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

Всем привет, меня зовут Дмитрий Кремнев и я Java-разработчик в команде Jmix. Недавно на конференции смотрел доклад, в котором спикер рассказывал, как его команда справлялась с проблемой быстрого написания админок для внутренних сервисов. Сначала они реализовали дорогое самописное решение для своей команды, затем появилась идея масштабировать его и для остальных команд. Искали готовые альтернативы на рынке, которые удовлетворят все их бизнес-требования, но в итоге остановились на гибридном кастомном решении, основанном на low-code платформе. Проблемы, которые они решали мне показались очень знакомыми, ведь мы в команде тоже с ними сталкивались. В этой статье я хочу показать, как с помощью Jmix решаются типовые задачи при создании админок. Постараюсь быть конкретным, показать плюсы и ограничения.

Сделать красиво

Go по-прежнему полон проблем

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

Я уже больше десяти лет критикую Go, о чём высказывался в своих предыдущих статьях «Why Go is not my favourite language» и «Go programs are not portable».

Описанные в них проблемы языка бесят меня всё больше, и в основном потому, что их явно можно было избежать. Мир знавал решения и получше, но Go почему-то состряпали именно таким.

Те, кто читал мои прежние статьи, встретят здесь частичные повторы, так что заранее прошу меня за них простить.

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 10. C# не нужен

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

F# и C# в плане выразительности ООП различаются не так радикально, как некоторым кажется. Но у них разные дефолты, и мы вольны как бороться с ними, так и эксплуатировать их на полную катушку. Для этого необходимо понять, что F#-ный подход ориентирован на симуляцию процессов, а C#-ный — на симуляцию данных. Формально от нас требуется и то, и то, но по моему мнению, моделирование процессов — это 80% моей работы. Оставшиеся 20% — это данные, которые затачиваются под те же самые процессы.

C#-еры то ли обитают в другом мире, то ли как-то пропустили этот момент, поэтому систематически пишут код в обратном направлении — от данных к процессам. Первое время я думал о Godot в том же ключе, но чем больше ковырял <Prefix>Server-ы (там их много, VisualServer — это лишь один из подобных), тем больше у меня складывалось ощущение, что где-то в недрах его команды сидит вменяемый ФП-программист. Уж слишком сильно некоторые решения напоминали наши. К сожалению, я ещё многое не расковырял из того, что нужно расковырять для потенциального разрыва с дефолтным API. Поэтому в рамках текущего цикла мы не будем избавляться от ООП-нагромождений. Вместо этого мы нагородим новых, но так, чтобы нам было удобно работать в ФП-парадигме.

Читать далее

LLM на службе разработки: как мы научили нейросети проводить код-ревью

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

Привет, Хабр! Меня зовут Владимир Добрынин, я ведущий разработчик в МТС Web Services. Наша команда занимается плагинами DevTools, которые упрощают и ускоряют создание софта, в том числе за счет сокращения рутинных операций.

У нас уже есть целое семейство внутренних инструментов. Один из них — DevTools Copilot, который непосредственно из среды разработки позволяет взаимодействовать с LLM в режиме чата. А теперь мы реализовали DevTools Code Review, который помогает проводить самостоятельное код-ревью. В этой статье расскажу, как работает плагин и чего мы с его помощью добились.

Читать далее

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

Peck — утилита для ваших PHP проектов

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

Peck - это мощный инструмент CLI, предназначенный для выявления ошибок формулировки или написания в вашей кодовой базе: имена файлов, имена классов, имена методов, имена свойств, документы и многое другое

Читать далее

Программирование автомобилей в играх

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

Автомобили встречаются в играх повсеместно, это стандартный элемент многих жанров. Если в игровом мире есть перемещение на дальние расстояния, то есть вероятность, что для него используется автотранспорт (если только вы не в фэнтези-мире, где перемещаются на лошадях. Прощу прощения, но в моём посте не будет информации о программировании лошадей).

С самого детства я играл во множество гоночных и транспортных игр. Я всегда старался находить новые гонки. Но со временем я понял, что меня не просто впечатляют новые машины или трассы; меня привлекала уникальность каждого игрового процесса и поведения машин, несмотря на то, что по сути своей все они были легковыми автомобилями.

Здесь важно сказать следующее: игры — это не физические движки, а впечатления. И гоночные игры больше других намеренно манипулируют реальностью, чтобы дать нам эти впечатления. Например, мы ожидаем от шутеров определённого поведения; пуль, летающих по прямой, отдачу при выстрелах, перезарядку. Если эти ожидания не оправдываются, игра начинает казаться «не такой». Но в случае транспорта степень допущений может быть огромной.

Возьмём для примера Mario Kart. Это гонки, максимально далёкие от реалистичности; машинки дрифтят по песку, вы бросаете в друзей черепашьи панцири и гоняете в картах с мультяшными пропорциями и физикой. Тем не менее, эту игру обожают, ведь она «продаёт» реализацию фантазии о гонках.

На противоположном краю спектра находятся такие реалистичные симуляторы, как iRacing и Assetto Corsa. В них игровой процесс тщательно отточен, чтобы передавать все нюансы и трудности реального автоспорта. Люди тратят тысячи долларов на оборудование, позволяющее воссоздать ощущение нахождения за рулём. Тем не менее, в основе всех этих игр лежит программирование автомобилей. Они лишь по-разному расставляют приоритеты аспектов игрового опыта.

Читать далее

<details name>: эксклюзивные аккордеоны на чистом HTML (+ стили через :has())

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

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

За последний год HTML получил деталь, которая меняет привычные «аккордеоны». У <details> появился атрибут name, и этим всё сказано: теперь эксклюзивные аккордеоны можно сделать без строчек JavaScript, а стили и поведение дочистить через :has(). Поддержка стала широкой, а старые практики на дивчиках и ролях можно оставить для случаев, когда действительно нужна сложная логика.

В HTML у нас давно есть пара <details>/<summary>. Браузер сам рисует disclosure-виджет, умеет разворачивать содержимое, бережно обращается с фокусом и клавиатурой. Сейчас поверх этого добавился name, который превращает набор из нескольких <details> в группу, открываешь одно и закрываются остальные из той же группы. Если в группе вы отметили несколько элементов open в исходнике, браузер оставит открытым первый по порядку.

Читать далее

Полезные конструкции Python, которые упростят работу с данными

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

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

В этой статье мы собрали конструкции, которые пригодятся как начинающим, так и более опытным разработчикам.

Читать далее

Promise.try: единый вход для sync/async и единая обработка ошибок

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

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

Не раз ловил себя на том, как в код-ревью всплывает одна и та же проблема: часть наших функций синхронные, часть асинхронные, а часть ведут себя как шрёдингеровские коты и делают вид, что синхронны, пока не дотронешься. В итоге в одном месте у нас try/catch, в другом .catch, где-то внезапно падает исключение, а в соседнем модуле молча утекает Promise. С появлением нативного Promise.try стало проще навести порядок и избавиться от разнобоя. Фича прошла процесс стандартизации в TC39 и включена в спецификацию ECMAScript 2026, при этом уже с января доступна в актуальных движках. Можно перестать спорить про обёртку из Promise.resolve().then и получить единый вход для sync/async с нормальной обработкой ошибок.

Читать далее

Spring Boot 4 и Spring Framework 7: Ключевые фичи и изменения

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

Уже в ноябре 2025 выходит Spring Boot 4 — масштабный релиз, построенный на фундаменте Spring Framework 7.0.0 и Jakarta EE 11. Это не просто очередное обновление, а важный этап в развитии всей Java-платформы: новые возможности для REST и безопасности, улучшенная работа с Kotlin и GraalVM, мощная поддержка облаков и нативных образов, а также инструменты для создания отказоустойчивых приложений.

🧠 Эта статья — больше, чем просто перевод: в ней собрано большое кол-во комментариев от экспертов Spring АйО.

Читать далее

Не просто ещё один органайзер: Как я создал универсальную платформу для управления знаниями и данными

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

Всем привет!

Хочу поделиться историей создания проекта, над которым я работал последние несколько лет — foxBase (https://fox-base.ru).

Как часто вам приходилось переключаться между десятком приложений для управления разными аспектами вашей работы и жизни? Блокнот для заметок, Excel для финансов, Trello для задач, отдельные инструменты для хранения кода и документации... Знакомая ситуация?

Меня зовут Игорь, я разработчик, и я столкнулся с этой проблемой в полный рост. Мне нужен был один инструмент, который объединил бы всё: от личных заметок до сложных бизнес-форм, от хранения кода до ведения домашнего бюджета. Так родилась идея foxBase.

Что это такое?

foxBase — это веб-приложение для создания универсальных баз знаний и данных. Его ключевая особенность — невероятная гибкость. Это не жёсткий конструктор, а скорее «цифровой конструктор ЛЕГО», где вы сами решаете, как структурировать информацию.

Для кого это?

Читать далее

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