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

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

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

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

Throw — это новый goto

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

Помните ли вы о существовании goto?

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

Но почему-то я не встречал никакого негатива насчёт throw. А ведь это точно такая же фигня, если даже не хуже.

Читать далее

Взаимодействие микросервисов: проблемы, решения, практические рекомендации

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

Все говорили о микросервисах. Гибкость. Масштабируемость. Независимые команды. Звучало как мечта. Многие компании бросились распиливать свои монолиты. Разработка действительно ускорилась. Отдельные компоненты стало проще обновлять и разворачивать.

А потом сервисам понадобилось общаться. И мечта превратилась в сложную, многомерную головоломку.

Читать далее

Пиво. Деньги. Два программиста

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

В 11-м классе я начал учить Visual Basic, чтобы зарабатывать деньги создавая приложения на заказ. Это язык был выбран как наиболее простой и дружелюбный для человека не знакомого с программированием. Через несколько месяцев изучения я понял, что готов, и рассказал идею своему другу, который неплохо знал C++. Выпив по кружке пива мы решили создать профиль на фриланс‑бирже и написать, что наша молодая динамичная корпорация готова выполнить проект любой сложности и на любом языке. Мы были молоды, заряжены, и просто рвались в алгоритмический бой! Название компании выбрали первое, что пришло в голову — «SuperSoft».

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

Через некоторое время мы заметили запрос на разработку CRM системы. Судя по скриншотам и описанию — вроде ничего сложного, за несколько месяцев можно справиться. У проекта уже были ставки от разных компаний с предложением цены, времени разработки и условий. В среднем предложения были по 10 000$ плюс‑минус пару тысяч.

У нас не было прокаченного аккаунта и отзывов клиентов, поэтому единственное что мы могли делать — демпинговать ценой. Мы написали, что наш высокопрофессиональный коллектив сделает этот проект в два раза быстрее конкурентов, а вместо 10 000$ разработает его за 5000$.

Мы разместили заказ и стали ждать. Через какое‑то время часть конкурентов увидела наше предложение и тоже снизила цены. Мы увидели несколько приложений с Индии по 5000$ и сроки разработки такие же как у нас. Мы приняли стратегические решения ещё снизить цены до 3000$ и добавить к своему предложению, что мы также протестируем приложение и сделаем дизайн.

Читать далее

Карьера вайб-кодера — это тупик

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

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

Я начал замечать перемены, когда темы бесед разработчиков полностью поменялись. Теперь они обсуждают лишь то, как заставить Claude написать код за них. Или конечную цель: как заставить ИИ делать всё без вмешательства человека.

До недавнего времени я по большей мере игнорировал этот ажиотаж. Я читал заголовки, время от времени просил Claude или ChatGPT помочь мне в отладке, но ничего больше. Пришла пора учиться вайб-кодингу!

Читать далее

От джуна до тимлида и обратно: почему я выбрал код

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

За 20+ лет в разработке я прошёл путь от студента с книгой по C++ до техлида, но понял: управление людьми приносит меньше удовольствия, чем написание кода. Карьерный рост — это не всегда движение вверх по иерархии, иногда стоит выбрать то, что действительно нравится, а в IT можно хорошо зарабатывать просто программируя.

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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