Обновить
1024K+

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

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

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

Как не поехать кукухой и всё успеть: выстраиваем рабочую систему из привычек

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

Уже вечер, ты активно пишешь код. Тревожность вместе с тобой. Утром на дейли сказал, что добьёшь таску: да она не сложная, каких‑то 2 стори поинта. Но вот вечер, и ты точно не успеваешь. Завтра на дейли спросят статус задачи, а ты — не сделал. Да, ты общался с архитектором по решению, отвечал на вопросы поддержки и помогал решать проблемы с тестовым окружением. Ещё был синк с другой командой, помог решить проблему с локальным окружением другому разработчику и готовил контракт для фронта для будущей таски. И на обед ты не сходил. Но кого это заботит, если твоя задача все ещё в InDev? Точно придётся посидеть ещё пару часов ночью, чтобы закрыть должок.

Или другой вариант. Ты — менеджер. У тебя за день от 5–6 встреч. Всё нужно решить. Ну и текучка не отпускает: нужно решить конфликт в команде «А», есть запрос на согласование обучения для Иванова, нужно ещё согласовать технические работы и выдать пару доступов. А ещё Сергей из команды «B» недостаточно открыто ответил на вопрос своего коллеги, и тут просят твоего внимания. И, кстати, ещё нужно запланировать изменение процесса и предложить расчёт новой метрики.

Знакомо?

Тогда тебе точно нужен курс по time management ряд привычек, которые каждый может внедрить в свою работу.

Читать далее

Пространства имен: как не устроить войну имен в своем проекте

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.5K

Представьте огромную библиотеку, где все книги — от кулинарных рецептов до квантовой физики — свалены в одну гигантскую кучу на полу. Чтобы найти книгу «Война и мир», вам придется перерыть весь завал, и высока вероятность, что вы достанете «Войну миров» Герберта Уэллса или методичку «Как сдать мир на войне». Примерно так выглядит глобальное пространство имен в C++ без использования namespace.

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

Читать далее

Вайбкодинг – не для гуманитариев? Юрист сделал кривой поиск по PDF и просит помощи…

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

Я столкнулся с простой (как мне изначально показалось – даже очень) задачкой. Мне в последнее время потребовалось часто проводить поиск в 4-х словарях. Государство мне их дало в виде 5 PDF файлов, выложенных онлайн. Это нормативные словари русского языка, слова из которых можно использовать в публичном пространстве.

Например, cash - можно использовать на русском как кэш, а не переводить как тайник или склад, поскольку в Словарь иностранных слов это слово уже включено. И это слово нам еще пригодится далее по тексту)

Читать далее

Сборка мусора в V8: Scavenger, Mark and Sweep и Tri-color Marking

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

В части 1 мы выяснили, что объекты в Heap не освобождаются сами по себе этим занимается Garbage Collector. Но как именно GC решает, что можно удалить? Если подумать, задача не такая очевидная: объект не нужен - понятие логическое, а GC работает с физическим графом ссылок.

Ответ в том, что GC не пытается угадать намерения программы. Он задаёт более простой вопрос: можно ли добраться до этого объекта из работающего кода? Если нельзя объект недостижим, и никакой код уже не сможет его использовать. Значит, память можно вернуть.

Алгоритм, реализующий эту логику, называется Mark and Sweep.

Читать далее

Что нового в OpenIDE 2025.3: Java 25, Spring MCP, Go, Docker и JavaScript/TypeScript

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

Состоялся релиз OpenIDE 2025.3 на базе IntelliJ IDEA Platform 2025.3. В релизе — поддержка Java 25, автодополнение действий IDE через двойную точку (Command Completion), Spring MCP для LLM-агентов, обновления для Go и фронтенд-стека, улучшения HTTP-клиента Connekt и доработки Docker-плагина. 

Читать далее

Documentation-Driven Development: как мы генерируем Go-код из OpenAPI-спецификаций

Время на прочтение26 мин
Охват и читатели9.2K

Привет, Хабр. Я Матвей Лихота, старший Go-разработчик из МТС Web Services. По моему опыту, документация, которую пишут руками отдельно от кода, устаревает уже в момент следующего коммита. Из-за этого мы в команде тратили до 20% времени на поддержание актуальности swagger-документации в десятке микросервисов. И когда ошибки интеграции уже стали привычным фоном, мы все-таки решились и перевернули всё с ног на голову: внедрили Documentation-Driven Development (DDD) — подход в разработке, когда процесс начинается с документации. 

Что за подход и что он дал в итоге, зачем понадобилась утилита oapi-codegen и как мы генерируем Go-код из OpenAPI-спецификаций — подробно рассказал и показал под капотом. 

Читать далее

Veai 5.5: поддержка Skills, режимы агента Plan и Review, авторевью и ограничение зоны редактирования

Время на прочтение4 мин
Охват и читатели5.7K

В свежем релизе Veai 5.5 (плагин к IntelliJ IDEA со своим AI агентом для написания кода, тестирования и отладки) работа с агентом становится более управляемой, безопасной и расширяемой. SKILLs — это полноценная поддержка открытого стандарта навыков: их можно хранить в проекте, переиспользовать между задачами и инструментами, и агент будет подключать их автоматически.

Добавлены новые режимы агента Plan и ReviewAuto Review — для быстрых проверок сгенерированных изменений, Edit Scope — для ограничения области редактирования, а также возможность создавать свои режимы агентов под конкретные роли и сценарии. Для персональных пользователей добавлена поддержка Claude 4.6 Opus.

Читать далее

ИИ бот-модератор 2 — Формирование структуры

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели4.8K

Наверняка после первой части вы думали: «Ну всё, uv настроили, сейчас быстренько накидаем хэндлеров в main.py и запустим».

Не тут-то было! Мы пойдем по «взрослому» пути и начнем сразу с хардкора — с архитектуры проекта. Почему? Потому что хороший дом начинается не с поклейки обоев, а с надежного фундамента и подробного чертежа. Если мы пропустим этот этап сейчас, через месяц разработки наш проект превратится в запутанный клубок кода, который страшно трогать.

Читать далее

От диплома до продакшена: Часть 2: Как я проектировал опыт пользователя

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

Всплески в аудиосигнале
Когда я глазами просматривал результаты разбора звука, я понял, что ещё происходит всплески по голосу.

«Я имею в виду, когда человек читает книгу или в телевизоре происходит какое-то действие, то оно происходит примерно на одной волне, в небольшом диапазоне разброса. А когда человек подаёт команду, то у него меняется выборка голоса. Он становится плотнее и громче. В общем, на цифрах это хорошо заметно, и здесь нейросеть как раз способна извлечь необходимые паттерны для того, чтобы отделить команду от повседневной бытовой речи.»

Читать далее

Технарь пишет статью с AI: пайплайн, слои и чеклист

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

У вас 20 лет опыта, но ни одной статьи на Хабре. Знакомо? «Не умею писать», «нет времени на оформление», «получается сухо». AI обещает решить эту проблему — но между «скормил тезисы в ChatGPT» и «написал сильную статью» лежит огромный путь.

В статье — конкретный пайплайн из семи шагов: от тезисов в рабочем чате до публикации. Разбираем три слоя технической статьи и честно определяем, где AI реально полезен, а где наверняка галлюцинирует. Отдельно — про фактчекинг: почему чат с веб-поиском проверит лишь 5–10 утверждений из 50, и чем AI-агент принципиально отличается от обычного диалога.

Статья не про «AI напишет за вас», а про то, как превратить экспертизу в текст, не потратив на оформление втрое больше времени, чем на саму работу.

Читать далее

Память в JavaScript: Stack и Heap

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

Последние пару лет изменили то, как пишется код. Copilot, Cursor, ChatGPT, Claude - все это генерирует вполне работающий JavaScript быстрее, чем успеваешь сформулировать задачу. Это удобно. Но у этого удобства есть обратная сторона, сгенерированный код работает правильно в смысле делает что просили, но не всегда правильно в смысле не течет по памяти и не роняет прод под нагрузкой.

Модели хорошо знают синтаксис и паттерны. Они значительно хуже разбираются в том, что происходит под капотом конкретного движка. Closure, захватывающий лишние данные. Event listener, который никогда не снимается. Объект, который непреднамеренно продлевает жизнь половине DOM дерева. Все это - настоящие ошибки, которые реально встречаются в проде и ни один линтер их не поймает.

Чтобы замечать такие вещи при ревью, нужно понимать, как именно V8 хранит объекты и когда решает их удалить. Это не академическое знание - это инструмент, который меняет то, на что смотришь в коде.

Эта серия состоит из трех частей. Первая - про то, как V8 вообще организует память, что такое Stack и Heap, чем они отличаются и что такое pointer. Вторая - про сборщик мусора, как он определяет, что живо, а что нет и как делает это, не останавливая программу надолго. Третья - практическое применение, откуда берутся утечки памяти, как их искать и как писать код, который не создает лишней работы для GC.

Смотреть под капот

Отражаем атаку на IOMMU

Уровень сложностиСложный
Время на прочтение16 мин
Охват и читатели7.9K

Что вы знаете об атаках на графические процессоры? Наверняка ничего приятного: они крайне распространены на мобильных устройствах, классические «песочницы» от них не защищают, и компрометация лишь одного драйвера может поставить под угрозу все ядро…

Меня зовут Денис Молодяков, и я — лид команды графики в KasperskyOS. Идея этого текста возникла во время одного моего выступления на конференции по системной разработке. Тогда из зала задали вопрос, который касался безопасности работы драйверов GPU. Слушатель ссылался на кейсы с «подламыванием» механизма управления видеопамятью драйверов на Android для интегрированных ускорителей семейства ARM Mali и спросил, как наша ОС сможет этому противостоять.

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

Читать далее

Оптимизация Java-приложений для Arm64 в облаке

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели6.4K

JVM в первую очередь процесс операционной системы. Но важно понимать, что требования к этому процессу на production отличатся от требований на workstation-е разработчика. 

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

В новом переводе от команды Spring АйО разберем, какие существуют базовые настройки кучи, GC и CPU помогают синхронизировать JVM с лимитами контейнера и не переплачивать за простаивающие ресурсы.

Читать далее

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

Почему мы в Профи.ру выбрали монорепозиторий, а не микрофронтенды

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.9K

История о том, как мы в Профи.ру перешли на монорепозиторий. 

Расскажу, как к этому пришли, почему не стали ударяться в микрофронтенды и как строили-строили архитектуру и наконец построили.

Читать далее

Инженерия данных: паттерны проектирования

Время на прочтение5 мин
Охват и читатели9.6K

Приветствуем вас, Хабр.

В течение минувшего года мы серьёзно прорабатывали тему инженерии данных (Data Engineering), поскольку остались очень довольны читательским интересом к вышедшей у нас книге «Основы инженерии данных: как создавать надёжные системы обработки данных» Джо Риса и Мэтта Хоусли (оригинал — издательство "O'Reilly"). В январе вышла её допечатка.

Кроме того, у нас уже переведена и ушла в редактуру более продвинутая книга, также от O'Reilly, написал которую Бартош Конечны (Bartosz Konieczny); она называется «Data Engineering Design Patterns: Recipes for Solving the Most Common Data Engineering Problems».

Читать далее

Я научил свою собаку играть в Vibe Code Games

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

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

Читать далее

Open Source-джентльмены 2026: Обзор самых ярких GitHub-проектов, определивших начало года

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

2025 год стал переломным для open-source-сообщества. Согласно ежегодной статистике GitHub, количество публичных репозиториев перевалило за 395 миллионов, а аудитория платформы выросла до 180 миллионов разработчиков. Но главная интрига развернулась на пьедестале языков программирования: TypeScript впервые сместил Python и JavaScript, став самым быстрорастущим языком с годовым приростом в 1 миллион новых разработчиков.

Мы вступили в 2026 год, и тренд на «агентность» и «интеграцию с ИИ» перестал быть просто хайпом. Теперь это архитектурный стандарт. В этой статье я собрал проекты, которые буквально «взорвали» GitHub в конце 2025 и начале 2026 года. Это не просто игрушки, а реальные инструменты, меняющие ландшафт разработки.

Читать далее

Подключаем дешёвый USB-сканер отпечатков пальцев Chipsailing CS9711 в Linux

Уровень сложностиСредний
Время на прочтение1 мин
Охват и читатели7.7K

Многие современные ноутбуки оснащаются сканерами отпечатков, но что делать, если ваш рабочий ПК или старый ноутбук такой возможности не имеет? Китайские маркетплейсы предлагают огромное количество USB-сканеров по цене 1000–2000 рублей. Однако при попытке использовать их в Linux пользователя ждёт сюрприз: официальные драйверы отсутствуют, а встроенная поддержка libfprint часто не работает.

В этой статье я расскажу, как заставить работать сканер Chipsailing CS9711 (ID 2541:0236) в Ubuntu и других дистрибутивах. Мы скомпилируем форк libfprint с поддержкой этого устройства, настроим демон fprintd и подключим аутентификацию по отпечатку в KDE (а также дадим подсказки для других окружений).

Читать далее

Как за сутки обойти миллиард веб-страниц

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели8K

TL;DR:

1,005 миллиарда веб-страниц

25,5 часа

$462

По какой-то причине уже долгое время никто не писал о том, что требуется для краулинга большой части веба: последним обнаруженным мной источником был пост Майкла Нильсена за 2012 год[1].

Очевидно, что за это время много изменилось. Всё стало больше, лучше и быстрее: у CPU появилось намного больше ядер, на смену жёстким дискам пришли твердотельные накопители NVMe, скорости ввода-вывода которых сравнимы со скоростями RAM, существенно выросла ширина сетевых каналов, существенно расширился список типов инстансов EC2 и так далее. Но в чём-то ситуация и усложнилась: гораздо бóльшая часть веба стала динамической, а контент теперь более тяжёлый. Как поменялось состояние Интернета? Теперь узкие места стали другими, и для создания своего Google по-прежнему нужно около 41 тысячи долларов? Мне захотелось это узнать, поэтому я собрал и выпустил собственный веб-краулер1 в условиях похожих ограничений.

Читать далее

S3 Архипелаг: как мы в Диасофте построили свое объектное хранилище

Время на прочтение19 мин
Охват и читатели6.2K

Лет десять назад объектное хранилище было экзотикой. Крупные компании обходились NFS‑шарами и надеждой, что RAID не развалится в самый неподходящий момент. Средний бизнес в целом не понимал, зачем это нужно. Но сегодня все изменилось. S3 API стал таким же стандартом, как REST или JSON. Мы в Диасофте построили «Фабрику данных» (Digital Q.DataFactory) в архитектуре Data Lakehouse на основе S3 Архипелаг, которая объединяет гибкость Data Lake с надежностью хранилища данных. В этой статье расскажем, как построили слой хранения.

Читать далее