Обновить
1098.72

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

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

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

Cursor, Harvi, GigaIDE и Kiro: что я оставил в VS Code, когда закончился хайп

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

У меня в VS Code в последнее время образовался какой-то зоопарк из AI-плагинов. Все обещают «писать код за тебя», но на практике либо тупят, либо просят денег через два дня. Решил навести порядок и сравнить то, что сейчас реально можно использовать в работе.

В тесте: Cursor (как эталон), отечественный GigaIDE, агентный Kiro и новички от Harvi (расширение + веб-студия).

Ниже — чисто субъективный разбор полетов: где удобно, где больно, и на чем можно сэкономить в 2025 году.

Harvi экосистема

Тут сразу поясню, чтобы не путаться, потому что названия похожи, а суть разная.

  • Harvi.pro — это сайт. Заходишь, пишешь: «Спили мне лендинг для барбершопа на React». Он шуршит минуту и выплевывает zip-архив.

    • Впечатления: Это не для кодинга, это чтобы не писать бойлерплейт. Сгенерил базу, скачал, открыл в IDE, дальше сам. Для старта пет-проекта — норм, экономит час-полтора настройки конфигов.

  • Harvi Code — это уже расширение в VS Code.

    • Впечатления: По ощущениям — тот же Copilot или Cursor, но под капотом свежий Claude 4.5 Sonnet. Главный нюанс — пока бета, бывает, просит перелогиниться. Но есть жирный плюс, о нем ниже в разделе про лимиты.

Cursor

Тут всё понятно, сейчас это «золотой стандарт».

  • Впечатления: Composer (режим правки нескольких файлов) — киллер-фича. Он лучше всех понимает контекст всего проекта. Но как только заканчивается триал, карета превращается в тыкву. Пользоваться free-версией на тяжелых задачах — это боль.

Kiro

Заход интересный: «сначала думаем, потом кодим».

  • Впечатления: Он реально сначала генерит спеку и диаграммы. Дисциплинирует. Но пока это ощущается как сырая демка технологии, а не рабочий инструмент на каждый день.

GigaIDE

Сбер. Есть десктоп (IntelliJ) и облако (VS Code).

  • Впечатления: Если вы джавист или работаете в энтерпрайзе с жесткими требованиями к софту — вариантов у вас немного, и это лучший из них. Для моего стека (JS/TS) показался тяжеловатым, но «на вкус и цвет».

Самое интересное: Цена вопроса (Лимиты на ноябрь 2025)

Вот тут расклад меняется кардинально.

  1. Harvi (Code/Pro): Дают 3 000 000 токенов в сутки. И самое приятное — счетчик сбрасывается каждый день. То есть сегодня высадил лимит, завтра снова полный бак. Это позволяет сидеть на Claude 4.5 Sonnet бесплатно и не экономить промпты.

  2. Cursor: 2 недели кайфа (Pro Trial), потом суровая реальность. 2000 «комплитов» и всего 50 нормальных запросов к чату в месяц. Дальше либо тупняки слабых моделей, либо $20.

  3. Kiro: Дают 50 кредитов на старте. Это не в день, это всего. Потыкать хватит, работать — нет.

  4. GigaIDE: Бесплатно для физиков. Если нужен безлимит без привязки к западным сервисам — это сюда.

Итоговый вердикт

Серебряной пули пока нет, поэтому я пришел к комбинированному стеку.

Для сложного архитектурного рефакторинга, где нужно перелопатить 50 файлов разом, я всё ещё держу Cursor (и плачу за подписку, когда прижмёт дедлайн). Но для всей остальной ежедневной текучки — тесты, функции, фиксы багов — полностью пересел на Harvi Code. Ежедневный рефил токенов на Claude 4.5 решает проблему «жабы», которая душит тратить платные запросы на мелочи. Ну а harvi.pro лежит в закладках как генератор быстрого старта, чтобы не настраивать вебпаки вручную.

Теги:
+1
Комментарии2

Представлен сервис LearnXinYMinutes, который поможет освоить базовые команды и понять, как они используются в работе в разных языках программирования, фреймворках и программных средах, включая IDE. Внутри есть 55 ссылок (от баша и C до YAML) для изучения с русским переводом.

Теги:
-1
Комментарии2
Теги:
+2
Комментарии0

Outliers - детектор аномалий временных рядов

Демо: https://outliers.up.railway.app/
Код: https://github.com/andrewbrdk/Outliers

Сервис детектирует аномалии временных метрик и отправляет уведомления о выбросах. Поддерживает:
- PostgreSQL
- Емэил и Слак уведомления.
- Методы детектирования: пороговое значение, отклонение от среднего, межквартильное расстояние.

Попробуйте!

Теги:
+1
Комментарии0

Зовём вместе поучаствовать в Advent of Code 2025

Начинаем уже в следующий понедельник, присоединяйтесь! 🙌

В чём суть, если кто не в курсе

Как в адвент-календаре, каждый день, с 1 по 12 декабря на сайте adventofcode.com будут появляться задачи на программирование, которые нужно решать. Обычно это задачи на рождественскую тематику.

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

Подробности участия собрали тут. Будем рады видеть в нашем комьюнити, если захотите разделить эмоции от Адвента с нами! 😉

Теги:
+2
Комментарии0

IBS и Veai объединяют усилия для оптимизации разработки ПО

Группа компаний IBS объявляет о сотрудничестве с Veai, отечественным разработчиком передовых решений для AI генерации кода, тестов и контроля их качества. 

Благодаря партнерству с Veai компания IBS внедрит в повседневную практику разработчиков современные инструменты на базе искусственного интеллекта, которые помогут сократить сроки реализации проектов и обеспечить еще большую надежность ИТ-продуктов.

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

Директор департамента проектирования и разработки IBS Максим Ковтун:

«Сотрудничество с Veai позволит вывести наши внутренние процессы на качественно новый уровень, повысить эффективность команд и удовлетворенность результатами. Совместными усилиями мы сможем усовершенствовать интегрированную среду разработки, наполнив ее интеллектуальными ассистентами».

Михаил Кудинов, СЕО компании Veai:

«Партнерство IBS и Veai демонстрирует готовность отечественных компаний активно взаимодействовать друг с другом, создавая благоприятные условия для развития технологий. Основная цель взаимодействия — дать рынку программное решение для контролируемого применения AI в разработке. Вместо фрагментарного использования цифровых ассистентов — управляемая, прозрачная, легко внедряемая платформа, подчиняющаяся интересам бизнеса и целям ИТ-команды. Veai выходит на рынок как первая платформа, которая превращает искусственный интеллект из набора “инструментов для программистов” в корпоративное решение, подконтрольное СТО».

Теги:
0
Комментарии0

Больше никаких мучений с Markdown — расширение Markdown Viewer превращает все файлы Markdown в Word-документы без боли и страданий. Захватывает инфографику: любые схемы, диаграммы, графики в чистые картинки. Берёт формулы из LaTeX и переносит их в Word нативно, а не в формате ужасных вставок. Переносит форматирование — подсвечивает код, сохраняет таблицы и списки, как в оригинале. Работает локально. Подходит для работы с GitHub: открывает документы и даёт перенести всё в Word.

Теги:
+2
Комментарии1

Челлендж для HR, тимлидов и скептиков!

Привет! Перед вами нечто среднее между стеком разработчика / резюме. Попробуйте оценить:

  • Junior, Middle или Senior? (или вообще кто это?)

  • Во сколько такие люди оцениваются нынче?

  • Взяли бы в команду? Или сразу в бан?)

⚠️ Некоторые детали с подвохом.

💻 HARD SKILLS

Языки программирования
Python, JavaScript, Java, Kotlin, C++, C#, SQL, AutoIt, Assembly, Go

Технологии, форматы, API
HTML, CSS, JSON, GeoJSON, DOM, Canvas API, WebGL, REST API, WebSocket, Bash/PowerShell

Базы данных
MariaDB, SQLite, Redis, PostgreSQL, Oracle,, MS Access

Фреймворки и библиотеки
Web Backend: Django, Flask, FastAPI, Node.js, Celery
Desktop GUI: PyQt, Tkinter, Lazarus
Mobile: Android SDK, Gradle
Визуализация и 3D: Three.js, OpenCV
Data Science: NumPy, Pandas, Matplotlib
GIS: QGIS
Медиа: FFmpeg

Frontend / Web-разработка
React, адаптивная верстка, интерактивные карты, кастомные UI-компоненты, работа с большими изображениями, клиентская логика, мини-движки визуализации

Backend / Сервисы
REST API, парсинг веб-данных, обработка данных, файловые пайплайны, работа с БД, deployment на localhost

Desktop-разработка
Многооконные приложения, панельные интерфейсы, файловые менеджеры, рендереры, конвертеры, кастомные инструменты, собственный табличный редактор (CSV/JSON/Excel)

Mobile / Android
Нативные проекты на Kotlin/Java, работа с ресурсами, манифестами, базовые UI-компоненты

Data / Computer Vision / ML
Обработка изображений, сравнение фото, фильтры, контуры, цветовые анализаторы, DPI/масштабирование, нейросетевые модели, работа с датасетами

GIS / Картография
Разбиение карт на тайлы, кастомные HTML/JS-карты, координатные системы, управление слоями, визуализация геоданных, интерактивные схемы

3D / Графика
Визуализация объектов, базовый шейдинг, анимации, работа с 3D-сценами, астрономические симуляции

Audio / Video обработка
Конвертация, рендер, аудиоэффекты, VST, визуализация звука

Automation / Инструменты
200+ кастомных утилит: пайплайны, GUI-редакторы, конвертеры, парсеры, визуализаторы, сборщики, веб-автоматизация (Selenium, ChromeDriver)

Build / DevOps
Сборка проектов, Git (локальный контроль версий), Firefox/Chrome DevTools, отладка

🧠 SOFT SKILLS
Системное мышление, архитектурное проектирование, UX/UI дизайн, rapid prototyping, постановка задач, анализ требований, визуализация идей, техническое чутьё, структурирование проектов, документация, логическое мышление

ИНСТРУМЕНТЫ РАЗРАБОТКИ И ДИЗАЙНА
Notepad++ (+ собственный редактор (пока Python syntax)), VS Code, Sublime Text, Android Studio, QGIS, Blender, Unity, Figma, Photoshop, Illustrator, CorelDRAW, Audacity, FL Studio, Adobe Premiere Pro, After Effects, Magix, Postman, curl, Total Commander, VirtualBox

МЕТОДОЛОГИИ И ПОДХОДЫ К РАЗРАБОТКЕ
Итеративная разработка (Rapid Prototyping), контроль версий, архитектурные паттерны (MVC, MVVM), модульное проектирование, рефакторинг кода, оптимизация производительности, отладка (логирование, DevTools), структурирование проектов, документирование кода

Дополнительный вопрос:

За какое время можно пройти путь от «Чёрное окошко — это какая-то магия, F12 — это что-то страшное...» до реального применения всего перечисленного выше в прототипах и рабочих проектах? Минимум по одному разу.

Иначе говоря: в стартовой точке известны были лишь названия языков программирования, а про циклы и алгоритмы что-то смутно помнилось из школьного учебника.
Сколько лет затрачено до текущего стека?

Теги:
-8
Комментарии34

Почему нужно использовать DTO

Data Transfer Object, термин, который для разработчиков на статических языках является чем-то самим разумеющимся, но вот остальные его могут не знать (даже если пользуются). Хотя в эпоху интеграций, фронтенд-бекенд, сервис-сервис, очереди, это крайне важная конструкция.

DTO это очень промежуточный объект между моделью в вашем коде и данными, которые вы отдаете наружу или принимаете от внешней системы.

  • Модель => DTO => json/protobuf/sql...

  • json/protobuf/sql... => DTO => Модель

Нафига? Почему не сразу преобразовывать из, допустим, json в нашу модель или наоборот? Тем более во всех экосистемах есть механизмы, которые позволяют упаковывать любые объекты, задавая правила преобразования через метаданные, аннотации или еще как-то. Пример из Java:

@Entity
public class User {
    @Id
    private Long id;
    @JsonIgnore              // приходится скрывать
    private String passwordHash;
    @JsonProperty("created_at")
    private LocalDateTime createdAt;

    // getters/setters ...
}

var json = new ObjectMapper().writeValueAsString(dto);

Существует масса причин, почему это плохая идея. Для начала, это банальное нарушение MVC архитектуры. Модель начинает знать как о представлении, о том какие поля надо выдавать наружу, какие нет, как их переименовывать и так далее. Если это кажется натянутым, то вот вам реальные последствия.

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

DTO позволяют отделить представление от модели в коде, создавая по сути промежуточный слой. Имея его, вы можете независимо развивать свою модель и API для взаимодействия с ним. И да, это один из аспектов MVC, конкретно Model-View.

Готовые DTO гораздо легче чем модели конвертировать в типы на TS если у вас есть такая потребность. Например мы наши DTO (используем Alba), превращаем в типы TS с помощью готового инструмента (Typelizer). С моделями так легко не получится.

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

Но это только базовая история. Если мы еще подключаем инструменты генерации из sql (как в go) или openapi как везде, то те самые DTO создаются вообще автоматически на основе описаний.

INSERT INTO links (original_url, short_name)
VALUES (sqlc.arg(original_url), sqlc.arg(short_name))
RETURNING *;

DTO:

type CreateLinkParams struct {
	OriginalUrl string `json:"original_url"`
	ShortName   string `json:"short_name"`
}

Причем для update будет создана своя структура:

type UpdateLinkParams struct {
	OriginalUrl string `json:"original_url"`
	ShortName   string `json:"short_name"`
	ID          int64  `json:"id"`
}

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

DTO, кстати, должны быть имутабельны, иначе туда потечет логика

Больше про разработку в моем телеграм-канале Организованное программирование

Теги:
+6
Комментарии1

Как анализировать C и C++ код без привязки к сборочной системе на Windows

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

Иногда бывает так, что появляется целый "зоопарк" самописных скриптов сборки, а его последний "смотритель" уволился ещё в прошлом году (играет Гражданская Оборона — "Зоопарк").

Хотелось бы всё равно как-то анализировать такой код без необходимости разбираться в хрупкой и непонятной системе сборки. Что же делать?

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

В новой статье посмотрим, как воспользоваться этим механизмом для ОС Windows в анализаторе PVS-Studio, и  как сделать его использование в процессе разработки удобным.

Теги:
+4
Комментарии0

Статья "Код блокчейн-проектов Neo и NBitcoin VS анализатор кода. Кто-кого?"

PVS-Studio ворвался в мир блокчейн-разработки, и первыми "под удар" попали open source проекты на C# — Neo и NBitcoin!

В статье мы рассмотрели самые интересные ошибки: как явные, так и потенциальные, которые нашли в этом проекте. Если вам интересно, какие ошибки могут находить такие инструменты, как PVS-Studio, или вы желаете прокачать свой собственный "ментальный анализатор", приглашаю к прочтению :)

Теги:
+6
Комментарии0

Обновили 3 популярных курса Практикума PRO направления, которое объединяет программы для профи.

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

Курс «Визуализация данных и введение в BI-инструменты»

Что нового:

  • Расширили стек инструментов. К DataLens, Datawrapper и Tableau добавили Superset и Power BI — теперь вы освоите пять ключевых платформ вместо трёх.

  • Добавили SQL-шпаргалки для подготовки данных к работе в BI-системах.

  • Переработали материалы на основе фидбэка: обновили уроки, дополнили примеры, перезаписали скринкасты и скриншоты. А ещё добавили дополнительные практические задания.

Что это даст:

  • гибкость при выборе инструментов под конкретные задачи;

  • ускорение и упрощение рабочих процессов;

  • больше практики на реальных кейсах.

Курс «Инженер машинного обучения»

Что нового:

  • Дополнительно проверили и исправили блокирующие места во всех модулях.

  • Обновили модуль 5: «Создание uplift-модели».

  • В модулях 1-4 актуализировали все инструменты и технологии.

  • Обновили бесплатную вводную часть и добавили в неё мини-проект — если ещё не проходили, самое время потестировать!

Что это даст:

  • ещё более качественный студенческий опыт;

  • первый практический результат — даже до покупки курса;

  • востребованные навыки в скилсете.

Курс «Продвинутый Go-разработчик»

Что нового:

Запустили расширенный тариф «Продвинутый Go-разработчик + инфраструктура и продакшн». Внутри:

  • +3 дополнительных спринта.

  • Kubernetes & Docker: управление контейнерами, оркестрация, деплой.

  • Observability: мониторинг и трейсинг через OpenTelemetry, Grafana, Prometheus, Jaeger.

  • Брокеры сообщений: интеграция Apache Kafka и RabbitMQ.

  • Сквозной проект для отработки навыков: разработка и вывод в продакшн сервиса аватаров (GophProfile) с фокусом на инфраструктуру.

Что это даст:

  • закроет вопросы деплоя, мониторинга и интеграции брокеров сообщений;

  • фокус на практических навыках продакшн-разработки;

  • реальный опыт решения комплексной инфраструктурной задачи;

  • сокращение времени на выход в продакшн;

  • повышение надёжности систем: научитесь быстро выявлять и устранять проблемы;

  • все скилы для уверенной работы с микросервисами.

Теги:
+1
Комментарии0

Элэлэмки, Сталин дал приказ.

Кого задолбали посты с тестированием LLM, дальше можете не читать, пардон. Пост про то как у бесплатных ллм, что попались под руку, я спросил - правильный ли код для такой задачи (сорри за кривую постановку вопроса и не менее кривой английский):

in C# for

int d;

I need to calculate number of same consecutive leading bits leadingCount. Does the next code do it correctly?

int d; 
uint uintD = unchecked((uint)d); 
int leadingCount = BitOperations.LeadingZeroCount(uintD) + BitOperations.LeadingZeroCount(~uintD);

Развернутый ответ, который начинается в стиле "Yes — that code does correctly compute the number of consecutive identical leading bits in a 32-bit int. " дали следующие ллм:

chatgpt
gemini-2.5-pro
copilot.microsoft.com
perplexity.ai
kimi.com
ernie.baidu.com

Развернутый ответ, который начинается в стиле "No, the code does not compute the number of same consecutive leading bits in d" дали следующие ллм:

grok.com/c
chat.deepseek.com
qwen.ai/c
chat.z.ai

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

Смысл вопроса - правильный ли код на C# для подсчета количество одинаковых бит в начале целого числа.

Теги:
0
Комментарии3

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

И снова открытые вакансии SSP SOFT: ищем тех, кто готов создавать айти-будущее 🔥

Почему стоит присоединиться к SSP SOFT?
✨ У нас нет «скучных» проектов — только вызовы, от которых сначала удивляешься, потом делаешь, и в итоге растешь.
✨ Поддержка с первого дня: выдадут наставника, и он поможет влиться в работу без стресса.
✨ Настоящий рост: наш Проектный офис — ускоритель профессионального развития.
✨ Работай, как удобно: из дома, из офисов в Москве (ЦАО) или Томске, или в гибридном/удаленном формате.
✨ Жизнь ≠ только работа: мы ценим баланс и даем тебе время на все — и на проекты, и на личные цели.

А еще у нас:
🎁 ДМС (включая стоматологию) для штатных сотрудников
🎁 обучение за счет компании
🎁 бонусы
🎁 общие ивенты — от онлайн-квизов до выездных сборов

📢 Прямо сейчас мы ищем:

1️⃣ С# Разработчика
2️⃣ DevOps-инженера
3️⃣ Automation QA Engineer (Java)
4️⃣ Data Engineer

👉 Чувствуешь, что это про тебя? Тогда не теряй время — присылай резюме в ЛС нашему HR Lead Алине. Не забудь добавить сопроводительное письмо с ключевой фразой «Нашел(ла) вас на Хабре„.“»

Подробности о вакансиях читай на ХХ.ру

Ждем резюме!

Теги:
+3
Комментарии0

Статический анализ OpenIDE

Коллеги из OpenIDE предложили нам проверить их продукт статическим анализатором и написать об этом статью.

Мы отобрали самые интересные ошибки и странные моменты, которые нашёл анализатор в исходном коде используемой ими IntelliJ Platform. Если вам интересно посмотреть на ошибки в Java коде и освежить в памяти некоторые теоретические аспекты этого языка, крайне рекомендуем статью к прочтению.

P.S. Отдельная благодарность OpenIDE. Они рассмотрели приведённые в статье ошибки и поправили их.

Теги:
+1
Комментарии0

Мой опыт в вайб-кодинге: AI-инструменты для создания приложений и первой игры-змейки! 🚀😂

Несколько месяцев назад я был на онлайн-мастерклассе по вайб-кодингу, где мы знакомились с разными AI-инструментами для создания приложений, игр и других задач через описательные промпты и автоматизированный кодинг. Это был крутой опыт, где мы не писали код вручную, а "вибили" идеи, и AI генерировал всё за нас.

В мастерклассе мы работали с такими инструментами:

  • Cursor: Сначала мы использовали его для базового редактирования кода с AI-подсказками. Мы создавали простые веб-страницы, описывая дизайн и функционал в чате, и Cursor генерировал HTML/CSS/JS, а потом помогал отлаживать баги. Этот инструмент больше всего используется в сочетании с моделями вроде Claude Sonnet для генерации и редактирования кода.

  • Harvi-pro и Harvi code: Этот инструмент мы применяли для интеграции GPT-моделей в кастомные приложения. Мы строили AI-ассистентов для обработки запросов, например, простого бота для рекомендаций, задавая промпты на русском, и Harvi-pro автоматизировал backend, а Harvi code помогал с генерацией и интеграцией кода в связке. Эти инструменты больше всего используются в сочетании с ChatGPT, VS Code и Cursor для создания GPT-ассистентов.

  • Lovable: Здесь фокус был на быстрой сборке мобильных приложений. Мы пробовали создавать чат-боты и простые утилиты, просто описывая UI и логику в естественном языке, и Lovable строил полноценный прототип с деплоем. Этот инструмент больше всего используется в сочетании с Cursor для прототипирования приложений и UI-дизайна.

  • Bolt: С Bolt мы экспериментировали с веб-разработкой в браузере. Мы создавали динамичные сайты, как лендинги или формы, просто загружая скриншоты или описывая "виб", и он генерировал код с мгновенным превью. Этот инструмент больше всего используется в сочетании с браузером и другими AI-инструментами вроде Cursor для быстрого создания прототипов веб-приложений.

  • KiloCode: В нём мы работали как в VS Code с AI-агентом. Мы автоматизировали задачи, такие как генерация скриптов для обработки данных, и KiloCode сам проверял код, запускал тесты и исправлял ошибки. Этот инструмент больше всего используется в сочетании с VS Code и JetBrains IDE для автономной разработки и автоматизации задач.

Мне больше всего понравилось создание игр — это был мой первый опыт в такой сфере (я впал в детство и создал всеми известную игру змейку, в которую добавил несколько персонажей с уровнями сложности с боссом Пэкмена и Марио 😂).

Теги:
-4
Комментарии5

А всё таки, когда моки зло, а когда нет?

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

Представьте себе две ситуации. В одной мы подменяяем логер, который работает по http, чтобы он просто складывал данные в файл и не делал http запросов во время тестирования. В другой, в другой, мы проверяем что какой-то метод был вызван с определенными аргументами. И там и там работает подмена, но между этими ситуациями почти ничего общего с точки зрения решаемой задачи.

Последний случай, описывает процесс мокирования. То есть мок, это когда мы проверяем то, как код что-то делает, а не что он делает. Иногда говорят, что мы тестируем методом white-box, потому что мы знаем как конкретно написан тест и завязываемся на это, а не на результат работы этого кода, как в black-box тестировании.

Когда мы проверяем как код работает, мы связываем тест с внутренней реализацией. Любое изменение внутри функции (например, вызов другого метода или смена порядка действий) может поломать тест, даже если внешнее поведение программы остаётся тем же. В итоге тест перестает быть защитой от ошибок и превращается в тормоз для рефакторинга. В подкасте про спринг я услышал классный термин: "бетонирование кода", вот это оно и есть.

Когда же моки все таки нужны? Допустим мы пишем систему с поддержкой хуков, например фреймворк для тестирования. В тестах такого фреймворка вполне допустимо проверить что хуки setup, teardown, beforeSetup, afterSetup и так далее, вызываются в нужном порядке и с нужными аргументами.

Общее правило здесь такое, если код можно тестировать методом black-box, то лучше так и делать. White-box это вынужденная необходимость, когда по другому ни как. Правда будьте осторожны, нередко программисты только думают, что по другому никак, потому что они не знают других подходов или по каким-то причинам решили, что другие подходы не подходят по идеологическим причинам.

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

Например:

  • База данных, которая хранит данные в памяти.

  • Фейковые сервисы какого-нибудь облака, например AWS

  • Поддельный HTTP клиент, который возвращает заранее заготовленные ответы.  

  • Заглушка почтового сервиса, которая записывает письма в список, а не отправляет их.

Все эти решения делают тесты быстрыми, предсказуемыми и независимыми от инфраструктуры, при этом вы все еще проверяете поведение системы снаружи, не нарушая принцип black-box.

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

Итого

Моки используются тогда, когда вы хотите проверить как написан ваш код. Стабы используются тогда, когда вы хотите, чтобы внешние эффекты не мешали вам тестировать результат работы вашего кода.

Больше про разработку в моем телеграм-канале Организованное программирование

Теги:
0
Комментарии0

.NET Digest #9

Рады вам представить девятый выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET!

В этот раз мы расскажем про новые preview и RC версии .NET 10 и новую Visual Studio 2026. А ещё мы собрали для вас несколько интересных статей:

  • про производительность в .NET от Стивена Тауба;

  • спонсорство на NuGet.org;

  • и статистику популярности языков от GitHub.

Команда PVS-Studio рада представить вам подборку самых интересных и полезных материалов! Подробнее читайте в нашей статье.

Теги:
+4
Комментарии0

«Там, где критична скорость, но не требуется оптимизация»: как и зачем МойОфис вышел в OpenSource

На Хабре опубликовано первое большое интервью нашего CTO Тамары Щепалкиной — и оно стоит прочтения, потому что это:

  1. «Не форк с косметикой, а оригинальная инженерия»

    Компилятор tsnative прошёл проверку на безопасность, получил документацию, Docker-образ и демо, чтобы любой разработчик мог сразу попробовать его в работе.

    «...tsnative — это не «форк с косметическими изменениями», а продукт, в основе которого лежит оригинальная инженерная работа. Именно поэтому мы и приняли решение вывести его в open source: у проекта есть собственная ценность и потенциал для развития, который может быть интересен и полезен гораздо шире, чем внутри одной компании…»

    2. Open source как часть стратегии.

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

    3. «Где критична скорость, но не требуется оптимизация».

    tsnative создавался как инструмент, который помогает веб- и C++-разработчикам ускорять работу и выходить за рамки привычных сценариев. В основе компилятора — открытые библиотеки и собственная инженерия, без компромиссов по производительности.

    4. От ядра к экосистеме.

    Сначала — компилятор, но потенциально — UI-фреймворк и целая экосистема open source-проектов.

    5. Сообщество в центре.
    Telegram-чат поддержки уже работает, а впереди — расширение комьюнити и совместное развитие открытых технологий.

    «Ключевое для нас сейчас — подключить опенсорсное сообщество к развитию наших продуктов. Мы видим в этом не просто обмен кодом, а полноценное партнёрство: разработчики получают доступ к инструментам, которые можно использовать и дорабатывать под собственные задачи, а мы — обратную связь и новые идеи, которые помогают делать продукт лучше…»

    В статье Тамара рассказывает, как и зачем МойОфис выходит на уровень open source-разработки, какие цели ставит и какие шаги уже сделаны.

    Если вас интересует развитие стратегия открытого кода и сотрудничество с сообществом — обязательно загляните.

    Читать интервью

Теги:
+12
Комментарии2

До коле? Как так вышло, что на хабре в 2025 году

  • не существует банов за чатгпт статьи и комментарии

  • не существует способа забрать свой лайк или дизлайк с поста/комментария. Учитывая насколько на хабре оценки много «весят», промазать по кнопке и не иметь возможности забрать лайк — это абсурд

Вот такая вот «замечательная» статья: https://habr.com/ru/articles/963748/. Создана чатгпт, комментарии полностью чатгпт, код описанный в статье чатгпт, организация на гитхабе и её название — чатгпт.
ВСЕ факты в статье — галлюцинация чатгпт

Теги:
+46
Комментарии13
1
23 ...

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