Обновить
1056.2

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

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

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

Универсальная С++ фабрика объектов: для Qt и не только

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

Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа для совместной работы VK Teams.

Если вы тоже работали с большими проектами, где активно применяются объектно-ориентированные паттерны проектирования, то наверняка сталкивались с паттернами проектирования Factory Method или AbstractFactory. В процессе разработки я неоднократно ловил себя на мысли, что часто пишу однотипный код таких фабрик, и задумался о том, как можно было бы избежать таких самоповторений. 

В этой статье я покажу, как сделать универсальную фабрику объектов, покрывающую большую часть потребностей, следующую принципам DRY (Don’t Repeat Yourself), а также как можно использовать некоторые «фишки» новых стандартов С++. 

Читать далее

Гайд по timeout, watch и at: управление временем выполнения команд в Linux

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

Как часто вы запускали какую-нибудь штуку в терминале — и она зависала навсегда? Или наоборот: вам нужно было увидеть, как что-то меняется каждую секунду, а вы упорно жали стрелку вверх и Enter? А может вы хотели запланировать задачу через 5 минут, но cron — это уже overkill?

Для всех этих сценариев в Linux есть три проверенных утилиты: timeout, watch, at. И, да, можно было бы обойтись скриптами и велосипедами, но... мы же не зря используем Unix-подход, где всё уже давно придумано.

Сегодня мы рассмотрим: как управлять временем выполнения команд в Linux с помощью timeout, watch и at.

Читать далее

Оптимизация Redis для высоких нагрузок: полное руководство

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

Привет, Хабр! На связи Александр Горьев, ведущий разработчик в Selectel. Сегодня в фокусе нашего внимания Redis — высокопроизводительное хранилище «ключ-значение», работающее в оперативной памяти. Скорость, простота и богатый набор структур сделали Redis очень популярным.

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

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

Читать далее

70+ докладов для фронтенд-разработчика на все случаи жизни

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

Привет, Хабр! Меня зовут Данил. Я фронтенд-разработчик, и мне очень нравится смотреть в записи или посещать митапы и конференции, на которых профессионалы делятся своим опытом в формате докладов.

Я постоянно добавлял записи докладов, которые показались мне интересными в закладки, и их собралось достаточное количество, чтобы можно было поделиться этим списком с вами. Суммарная продолжительность докладов составляет более 48 часов, поэтому уверен - вам точно будет, что посмотреть.

Читать далее

Как создать MCP-сервер и научить ИИ работать с любым кодом и инструментами через LangGraph

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

В этой статье разбираемся с MCP-серверами от А до Я: что это такое, зачем нужны и как создать свой. Научимся писать инструменты для ИИ-агентов, подключать готовые MCP-серверы через LangGraph, и создадим полноценный математический сервер с нуля. В конце задеплоим его в облако и подключим к нейросети. Много практики, рабочий код и никакой воды — только то, что действительно работает.

Читать далее

Продвинутое использование препроцессора в C и C++

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

Зачастую, в проектах ограничивается использование препроцессора по следующим причинам:

— Он не похож на весь остальной язык;
— Макросы могут возвращать неполные синтаксические конструкции, или вовсе различные, в зависимости от параметров.

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

Со всеми его недостатками, инструмент есть в языке и достоин изучения.

Читать далее

Расширение jsquery для PostgreSQL — точные и быстрые выборки из JSONB

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

Привет, Хабр! Это Антон Дятлов, инженер по защите информации в Selectel. В современных базах данных JSON — де-факто стандарт для хранения полуструктурированных сведений. PostgreSQL предлагает два специализированных типа для работы с ним: json и jsonb. Первый хранит точную текстовую копию документа со всеми пробелами и порядком ключей. Второй применяет оптимизированный бинарный формат. 

Рассказываем про jsquery — расширение, которое предоставляет полноценный язык для формулирования выборок. Появляется возможность писать декларативные, понятные и очень быстрые инструкции для работы с jsonb-полями.

Читать далее

Решил перейти на Python и не пожалел

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

С полгода назад я начал чаще использовать для программирования Python. Почему? Конечно, из-за ИИ. Лично для меня очевидно, что сегодня эта сфера связана с очень большими деньгами перспективами во всех направлениях. А какой язык является самым распространённым для ИИ? Да-да, как-раз этот проныра.

Я уже писал на Python, но только небольшие скрипты. К примеру, вот этот скрейпит метаданные всех видео с моего канала на YouTube. Собранные метаданные выводятся в виде файла JSON, который я использую для показа красивой статистики роликов на этой статичной странице. Как можно видеть здесь, этот скромный скрипт через GitHub Actions выполняется в соло-режиме каждый понедельник. Просто реализовать всё это на Python куда проще, чем с помощью того же Batch. И не только из-за более дружественного синтаксиса, но и потому, что его интерпретатор нативно интегрирован во все дистрибутивы Unix. Разве не круто?

Читать далее

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

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

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

Это реальная проблема. И, как это обычно бывает, там, где есть боль, быстро появляются те, кто умеет на ней зарабатывать.

Так на рынке появился новый жанр — вкат в IT как услуга. Эти люди называют себя менторами, но по факту они учат не писать код, не работать в команде и даже не решать задачи. Они учат врать уверенно.

Читать далее

Почтовая корова? Как поднять свой почтовый сервер Mailcow

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

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

В этом руководстве мы пройдем весь путь: от развертывания сервера до отправки первого письма с настроенной и автономной почтовой системы. Никаких «черных ящиков» и компромиссов. Только вы, надежное «железо» и стопроцентный контроль.

Читать далее

Вайбовый панк

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

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

Я теперь на таски скор — у меня же есть Курсор.
Я на ём вайб код лабаю всем олдам наперекор.
Любой челендж для меня нынче полная фигня.
А-а-а!!! Вайбовый кодер я!

Читать далее

Git: Больше чем commit и push. 5 команд, которые спасут вашу репутацию (и нервные клетки)

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

git commit -m "WIP" — три слова, после которых начинается настоящий ад.

Доброго времени суток. Такая технология как Git в представлении не нуждается. Все знают add, commit, push — это как азбука. Но что делать, когда что‑то пошло не так? Ошибочный коммит прокатился по ветке? Надо срочно переключиться, но незавершенные правки мешают? Нужно перенести только одно исправление из другой ветки?

Знакомая ситауция? Тогда давайте разберем 5 команд, которые выходят за рамки базового workflow и реально спасают репутацию (и ваши нервные клетки).

Спасти нервные клетки

MWS Data Compass: как мы в МТС свой корпоративный BI построили

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

Привет, Хабр! Я Павел Шестаков, Product Owner BI в MWS. За последние годы цифровой трансформации в нашей компании многие команды прошли путь от хаоса и пересылаемых друг другу «экселек» до удобных выстроенных процессов. И инструменты BI (Business Intelligence) сыграли в этом не последнюю роль.

Сегодня расскажу, как и почему мы внедряли и развивали свой BI и как добились того, что сейчас он обслуживает тысячи пользователей и покоряет внешний рынок. Это будет история про энтузиазм, стартап внутри корпорации, импортозамещение и, конечно же, работу с пользователями. Поехали!

Читать далее

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

Как я написал современный GUI для yt-dlp на Python

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

Надоело каждый раз лезть в терминал, чтобы скачать видео с YouTube? Мне тоже. Поэтому я сделал нормальный GUI для yt-dlp - без лишних кнопок, с современным интерфейсом и чтобы просто работал. Код на GitHub, готовая сборка тоже есть.

Зачем вообще это делать?

Да, yt-dlp крутой - качает с кучи сайтов, быстрый, надёжный. Но блин, каждый раз набирать команды в консоли - это не для всех. Особенно когда нужно быстро скачать что-то и не париться с параметрами.

Посмотрел на существующие GUI - одни выглядят как из 2005 года, другие напичканы настройками, которые 99% пользователей никогда не трогают. Захотелось сделать что-то простое: вставил ссылку, выбрал качество, скачал. Всё.

Что хотел получить:

Простоту - минимум кликов от ссылки до файла

Нормальный вид - тёмная тема, без уродских кнопок из 90-х

Скорость - никаких тормозов и зависаний

Работает везде - Windows точно, остальные ОС в планах

Не требует установки - скачал exe и пользуешься

Читать далее

Погружение в Go: подборка ресурсов для новичков и продолжающих

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

Привет, Хабр! Пару лет назад мы уже выпускали подборку книг, подкастов и других ресурсов для изучения языка программирования Go. За это время коллекция полезных материалов подросла, и пришло время поделиться продолжением.

Новая подборка ждет вас под катом. Сохраняйте себе и отправляйте коллегам — пригодится как новичкам, так и опытным специалистам.

Читать далее

Как научить нейросеть работать руками: создание полноценного ИИ-агента с MCP и LangGraph за час

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

Надоели чат‑боты, которые только болтают? Создаём настоящего ИИ‑помощника: читает файлы, ищет в сети, запоминает всё. LangGraph + MCP — пошаговый гайд для Python‑разработчиков. Меньше теории, больше работающего кода.

— Два готовых агента: классификатор вакансий + файловый помощник
— Поддержка Ollama, OpenAI, DeepSeek — выбирайте любую модель
— Асинхронная архитектура с обработкой ошибок
— Полная интеграция в Python‑проекты без no‑code конструкторов
— Код готов к продакшену: логирование, retry‑механизмы, конфигурация

От настройки окружения до рабочего агента за час.

Читать далее

Будущее JavaScript: что нас ждет

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

Недавно прошла 108-я встреча TC39, на которой было продвинуто 9 предложений на разные стадии стандартизации — от сырых идей (Стадия 0) до полностью утвержденных возможностей (Стадия 4).

Ниже краткий обзор этих предложений и того, что они могут привнести в JavaScript.

Читать далее

Как использовать AI-агент Claude Code: советы опытного разработчика

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

Я больше года использовал Cursor. Подробно изучил все его возможности и лучшие практики работы с инструментами и... отказался от всего этого в пользу Claude Code.

Уже несколько недель я полностью работаю в Claude Code вместо Cursor. И, честно говоря, возвращаться совсем не хочется. В этой статье я расскажу, как использую Claude Code и поделюсь своими советами по его максимальному использованию.

Читать далее

REST API в облаке: пошаговый гайд на Java + Spring

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

Представьте, что у вас есть бэкенд-приложение с REST API и вы хотите обращаться к нему не только с локальной машины, но и из интернета — через браузер, Postman, фронтенд или мобильное приложение. Для этого можно настраивать маршрутизацию, туннелирование, искать белый IP — или просто задеплоить приложение в облако. Под катом — пошаговая инструкция, в которой развернем Java-приложение на облачном сервере и пошагово пройдем весь процесс — от сборки до запуска и обращения к API извне.

Изучить инструкцию

CPython — бессмертные Immortal объекты

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

Начиная с версии 3.12 Python поддерживает такой тип объектов, как бессмертные (Immortal). Бессмертными объектами являются глобальные константы, такие как None, False, True, а также некоторые другие объекты. Если вам интересно, что это за объекты, как ими становятся обычные смертные, где они используются и как повлияли на CPython — добро пожаловать.

Читать далее

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