Обновить
1097.46

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

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

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

Прогресс видеокодеков и большое сравнение российских видеосервисов

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

Год назад на конференции VideoTech ваш покорный слуга сделал большой доклад, в том числе про прогресс современных метрик качества видео (которыми мы довольно плотно занимаемся: тык, тык, тык, тык, тык, тык, тык, тык). А на открытой дискуссии тем же вечером представитель крупного российского видеосервиса поднялся и высказал всем мнение (своего менеджера):

«Измерение качества видео — это лишняя операция. Бизнес — это вообще-то про деньги. Поэтому в бизнесе главное — это бизнес-метрики: user retention, DAU, MAU и вообще ARPU. А все эти ваши PSNR, SSIM, VMAF — от лукавого. Если пользователи платят деньги и не отписываются, значит всех всё устраивает и это главная метрика качества».

«И вообще в свое время в Toyota был внедрен подход Lean Manufacturing, где одна из «семи потерь» — это потери из-за лишних этапов обработки (waste on over-processing), к которому, очевидно, относится измерение качества. Эти материи проходят на курсах MBA, которые довольно дороги. Поэтому далеко не все российские технари в теме этих важнейших понятий и не в состоянии осознать их критическую важность для бизнеса компаний».

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

«Слушай, а почему у меня на даче YouTube через Роскомнадзор работает лучше Rutube без Роскомнадзор

(видеоверсия — доклад на VideoTech доступен тут)

Ну-с, господа, «которых всё устраивает!» Поехали! 

Читать далее

Чёрная пятница в издательстве «Питер»

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

Привет, Хаброжители!

Чёрная пятница началась — Сколько вы сэкономите?

Читать далее

Как мы первый раз провели митап питонистов в Новосибирске и решили повторить

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

Всем привет! Меня зовут Бронислав Алексеев, я разработчик и один из организаторов сообщества Python-разработчиков в Новосибирске — PythoNSK.

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

И да, нам удалось привлечь Никиту Соболева, core-разработчика CPython. Рассказываю, как это было с нуля: бронирование помещения, поиск участников, составление расписания.

Кстати, эта статья написана в преддверии второго митапа PythoNSK - он будет в субботу 22 ноября, а в этой статье мы разберем плюсы и минусы нашего первого митапа, проведенного 13 сентября 2025 года!

Но обо всём по порядку. Всех интересующихся - просим под кат.

Читать далее

Невидимая часть карьеры программиста: инженерная интуиция и принятие решений под давлением

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

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

Читать далее

Безопасность памяти для скептиков

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

Если вам надоело слушать проповеди про «безопасность памяти» — эта большое эссе именно для вас, усталых скептиков. Эндрю Лилли Бринкер — ведущий инженер компании MITRE в области безопасности программного обеспечения — спокойно разбирает факты и доказывает: безопасность памяти — не прихоть и не религия Rust‑евангелистов, а экономически оправданный шаг в сторону надёжного, дешёвого и безопасного софта.

Rust, Java, Go и им подобные языки не делают программистов «лучше» — они просто предоставили ремни безопасности в сам процесс разработки. И, как в случае с автомобилями, это спасает тысячи «жизней» приложений.

Читать далее

OpenTelemetry — не то, чем кажется…

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

Привет! Меня зовут — Евгений, работаю в финтехе и проектирую системы, которые обрабатывают миллионы запросов, интегрируются с десятками внешних сервисов и живут в Kubernetes. А еще я преподаю Java/Spring Boot и рассказываю студентам, как не наступать на чужие грабли, а создавать свои и прыгать на них.

Больше 10 лет в разработке — и за эти годы в череде проектов я видел одну и ту же боль: отсутствие системного подхода к наблюдаемости. Логи, метрики и трейсы появляются «по остаточному принципу»: что‑то добавили при отладке, что‑то прилетело из чужой либы, что‑то настроили на проде. Итог — инженеры часами разбирают простые инциденты, а продуктовые команды теряют скорость.

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

Ну давай посмотрим что у тебя там...

Как полюбить писать тесты: опыт TATLIN.UNIFIED

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

Всем привет! Меня зовут Макс Теричев. Я старший инженер по разработке ПО в YADRO. В первый день работы в компании меня отправили пройти Go Tour. После этого я приступил к работе по автоматизации тестирования Control Path сервисов в СХД. Чтобы увеличить их тестовое покрытие, был создан специальный фреймворк, который интегрировал написание тестов в процесс разработки. Что входит в этот подход, насколько дорого обходятся ошибки в разработке систем хранения данных и какие два вида мотивации здесь работают — читайте под катом.

Читать далее

Актуальные практики работы в фоне Android-приложений

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

Привет! С вами снова Алексей, Android-разработчик из Облака Mail. В прошлой статье я подробно разобрал, как менялись правила фоновой работы в Android на протяжении всех версий ОС. А сегодня я расскажу, какие инструменты реально работают на последних версиях системы и как их правильно использовать. Везде также будут примеры кода и ссылки на документацию.

Читать далее

Пора двигаться быстро. Даже если ты на Битриксе (часть 3)

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

Привет, хабровчане! На связи Алиса — тимлид в e-commerce агентстве KISLOROD.

Кто о чем, а я продолжаю рассказывать, как сшипперить Bitrix и Laravel. В первой части я рассказывала, как подружить Laravel с Битриксом так, чтобы никто не пострадал. Во второй — как устроить единый вход без шаринга сессий, ускорить каталог с OpenSearch, внедрить outbox-публикации и навести порядок в наблюдаемости. Теперь третий шаг — разгружаем чтение.

Читать далее

Documentation-Driven Development

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

Если вы пишете, потом переписываете, рефакторите, а снова переписываете – вы что-то делаете не так. Другая крайность – пытаться всё сделать идеально с первого раза, а так как это невозможно для сколь-нибудь нетривиальной задачи, то можно войти в ступор. Описанные ниже идеи могут помочь в этих случаях, дав некоторый критерий того, что уже можно писать код, так как понимания достаточно. Или того, что уже нужно писать код, так как понимания достаточно и дальнейшее промедление — это прокрастинация в чистом виде или саботаж.

Читать далее

Франкфуртский баланс. «Бумага», «цифра» и реалии технической литературы – репортаж с Франкфуртской книжной ярмарки

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

Привет, Хабр! На связи руководитель проектов редакции компьютерной литературы издательства «БХВ» @Holmogorov. C 15 по 19 октября во Франкфурте проходило, пожалуй, самое известное мероприятие, которое каждый год собирает сотни тысяч читателей и тысячи книгоиздателей со всего мира. Речь идет о международной книжной ярмарке, известной под  названием [Frankfurt Book Fair](https://en.wikipedia.org/wiki/Frankfurt\_Book\_Fair), или, на языке организаторов, Frankfurter Buchmesse. Несмотря на сложную международную обстановку и объективные трудности, превращающие получение европейских виз в увлекательный квест, мы побывали на этой выставке, чтобы оставаться в курсе последних тенденций на рынке компьютерной и технической литературы. О том, что мы там увидели и услышали, мы хотим вам сегодня рассказать.

А что же мы увидели и услышали?

Встречаем Spring AI Agents и Spring AI Bench

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

Java-разработчикам теперь доступен мощный инструментарий для работы с агентными ИИ-системами: Spring AI представила проекты Agents и Bench. В новом переводе от команды Spring АйО рассмотрим, как первый обеспечивает удобную абстракцию для работы с CLI ИИ-агентами, а второй — предлагает реалистичные бенчмарки для оценки их эффективности в задачах enterprise-разработки.

Читать далее

GitHub плюнул на разработчиков: почему баг не чинят месяцами

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

Разработчики на GitHub осталось без аналитики трафика своих репозиториев. Уже месяцы функция недоступна, а сайт статуса сервисов Github показывает, что всё хорошо. Разбираемся почему одна из крупнейших IT-компаний мира не может починить простейшую функцию. 

Читать далее

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

За кулисами асинхронности: корутины, горутины и правда между ними

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

Асинхронность — слово, от которого у разработчиков дергается глаз и теплеет сердце. Корутины, горутины, event loop, трэдпулы — за этими терминами скрывается целая философия, меняющая взгляд на то, как писать высоконагруженные системы.

Привет, Хабр! Меня зовут Дмитрий Буров, я Golang-разработчик, автор Telegram-канала Go Advocate, а также лидер Go-сообщества в Lamoda Tech. В IT свитчнулся из военного дирижера. В коммерческой  разработке — более 10 лет, начинал как фуллстек-разработчик на стеке JS, PHP, CSS, а последние шесть пишу только на Go. В этой статье по мотивам моего доклада для GolangConf расскажу про асинхронность и её роль в современных высоконагруженных системах. Разберём исторический аспект, концепцию и реализацию корутин в разных языках, эволюцию асинхронных подходов, сравним корутины и горутины, выясним, зачем Go добавил в рантайм пакет coro и чем это может обернуться.

Читать далее

k6: как мы тестируем сервисы под нагрузкой

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

Привет! Меня зовут Анна и я QA-инженер в Банки.ру. В этой статье я расскажу о том, как мы сделали инструмент нагрузочного тестирования доступным для каждого инженера в компании.

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

Знакомо? У нас было подобное. В статье расскажу подробно про наш опыт!

Читать далее

Документируем API как профессионалы OpenAPI и Spring в действии

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

В мире микросервисной архитектуры качественная документация API — это не роскошь, а необходимость. Она ускоряет интеграцию, снижает количество ошибок и упрощает жизнь как разработчикам, так и потребителям вашего сервиса. Исторически документация часто отставала от кода, но с появлением стандарта OpenAPI (ex‑Swagger) и его глубокой интеграции с экосистемой Spring этот процесс можно полностью автоматизировать.

В этой статье мы подробно рассмотрим, как профессионально подойти к документированию API, используя связку OpenAPI и Spring Boot. Чтобы материал был максимально практическим, мы создадим простой PersonService и на его примере покажем, как из кода генерируется всегда актуальная и интерактивная документация.

Подробнее о подходе

5 способов убить производительность в асинхронном Rust

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

Привет, Хабр! В предыдущих статьях — «Rust без прикрас: где мы ошибаемся» и «Rust без прикрас: где мы продолжаем ошибаться» мы обсудили всякие неприятные грабли: бездумное использование unwrap(), игнорирование ошибок через let _ =, чрезмерное клонирование, проблемы с хвостовой рекурсией и прочие оплошности. Теперь пришло время взглянуть на другой пласт проблем.

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

Читать далее

Проекции в Spring Data: производительность vs ограничения

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

Всем привет! Я работаю разработчиком Java в компании bpm (ранее “ЛАНИТ - Би Пи Эм”). Приглашаю вас погрузиться в увлекательную тему оптимизации запросов в Spring Data — использование проекций. Если вы часто сталкиваетесь с необходимостью выборки лишь нескольких конкретных полей из большой сущности, понимая, насколько ресурсозатратно извлечение всей структуры целиком, этот материал специально для вас.

Читать далее

Гарантии языка программирования как основа безопасной разработки программного обеспечения

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

Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше.

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

Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.

Читать далее

Laravel и Битрикс: как разъехаться в проде и остаться друзьями (часть 2)

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

Привет, хабровчане! На связи Алиса — тимлид в e-commerce агентстве KISLOROD. Мы ежедневно имеем дело с большими каталогами, сложной коммерцией и 1С, которая дышит в затылок. И однажды мы решили сделать невозможное: подружить Битрикс с Laravel... 

В первой части мы доказали, что Laravel и Битрикс могут жить вместе, как кот и пылесос — с уважением к личному пространству. Во второй — выносим бизнес-логику, не ломая 1С. Рассказываю, как устроить единый вход без шаринга сессий, ускорить каталог с OpenSearch, внедрить outbox-публикации и навести порядок в наблюдаемости. 

Читать далее

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