Обновить

Разработка

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

Протокол TBFP

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

В этом тексте я бы хотел рассказать про простой бинарный протокол, который я сам придумал для всяческих нужд при разработке приборов на микроконтроллерах. Называется он TBFP (Trivial Binary Frame Protocol)

Читать далее

Nano Banana Pro и история развития ЭВТ

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

В настоящее время я занимаюсь подготовкой рукописи для второго издания книги «История моей страны. Записки военного инженера-программиста». Естественно, в ней много старых черно-белых фотографий разного качества. Это не только бытовые фотографии, но и уникальные фотографии вычислительной техники, которая сегодня не только не выпускается, но порой и не сохранилось ни одного экземпляра. В 90-е года эту технику бойко сдавали на драгметаллы. Но сегодня еще живут люди, которые работали в те времена, видели и даже творили на этой техники. Они могут рассказать, как и что выглядело. Я знаю многих людей глубоко пенсионного возраста, которые занимаются восстановлением старых фотографий в цвете. Это тяжелая и кропотливая работа. Но в конце августа сего года вышла модель генерации изображений Nano Banana от компании Google, которая просто совершила революцию в этом деле, но и она, несмотря на свои возможности, имела недостатки:

Читать далее

Baseline: октябрь 2025

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

Обзор на браузерные API, которые стали Widely available в октябре 2025. Раз в месяц я буду вам напоминать, что вы уже можете использовать в проде.

Каждый месяц выходят новые CSS-свойства, HTML-атрибуты, JavaScript-методы и WebAPI, но применять в проде мы их конечно же не будем. 2.5 года назад также каждый месяц выходили новые фичи в браузере, а вот их уже пора начинать применять.

Узнать, что можно взять в прод

Как забытый API-ключ открыл нам мир мошенников

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

Сегодня история на грани техники, психологии и детектива. Расскажу о том, как мы (я и мой коллега) попали во внутренние чаты мошенников и что из этого вышло.

Читать далее

За пределами embeddings: комбинируем векторный и лексический поиск для повышения релевантности

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

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

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

— сформулируем основные моменты, которые нужно знать и описать, прежде чем передать проект команде разработки;

— рассмотрим, как быстро проверить подходы к решению.

Читать далее

Настоящий Heavy Digital: цифровые инструменты, чтобы раскрыть любое дело

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

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

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

Читать далее

Музыкальный движок для Денди: FamiTone

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

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

Речь пойдёт о некогда созданной мной библиотечкe, музыкальном «драйвере» или движке под названием «FamiTone», предназначенном для озвучки любительских (homebrew) игр для 8-битной игровой приставки Famicom, она же NES, она же «Денди». По пути разберёмся, что это, как устроено, кому и зачем вообще могло понадобиться, и пригодилось ли в итоге. Спойлер: да.

Читать далее

Властелин алгоритмов: сезон «ИИ в разработке» на Хабре

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

Он пришёл на пятый день с востока! Сезон «ИИ в разработке» на Хабре.

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

Под катом — условия, призы и детали участия.

Читать далее

Стилизация, часть 2: Границы стилизации. Гротеск

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

Что называют стилем и стилизацией? Какие течения у стилизации существуют и как классифицировать визуальный стиль рендеров? Можно ли уравнять гиперреалистичный шутер Bodycam и бродилку про глиняных человечков The Midnight Walk, пиксельный выживач Rain World и стратегию Heroes of Might and Magic? Отчасти на этот вопрос мы уже ответили в первой части. Кстати, эту самую первую часть с общей историей развития стилизации в играх и биологическими предпосылками восприятия можете почитать здесь.

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

Читать далее

API, который растёт вместе с вами: за кулисами GitVerse

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

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

Привет, на связи Виктор Степанов, лид одной из core-команд ИИ-платформы для работы с кодом GitVerse. Сегодня я хочу поделиться коротким рассказом о том, как мы начали проектировать и разрабатывать публичный API для нашей платформы.

Читать далее

Live Updates на Android: где макеты врут, a SDK ставит границы

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

Весной 2025 года Google представила Live Updates, аналог Live Activity в iOS. Мы быстро запушили продактов — «нам такое надо!» — и потащили фичу в Android-приложение Додо Пиццы.

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

Читать далее

iOS или Android: чей замок крепче?

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

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

Ответ во многом зависит от операционной системы — именно она определяет уровень вашей безопасности. Ваши личные «сокровища» защищают две основные системы: iOS от Apple и Android от Google. Их принципы работы различаются, поэтому отличаются и слабые места, и способы защиты.

В этой статье мы не будем советовать, какой смартфон выбрать. Зато подробно сравним защиту iOS и Android по ключевым параметрам: от безопасности и удобства до экосистемы и функциональности.

Читать далее

Специальные функции-члены в C++

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

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специфичных. Это девятая статья из серии, список предыдущих статей приведен в разделе 6. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Данная статья посвящена специальным функциям-членам.

В C++ жизненный цикл экземпляра класса/структуры/объединения (объект, представляемый в коде переменной) начинается с инициализации, то есть задания его начального состояния. Далее, почти всегда, объект копируется, выполняются присваивания или их перемещающие аналоги. Эти операции необходимы для работы функций, контейнеров, алгоритмов. Финальной точкой жизненного цикла объекта является его уничтожение. Именно для поддержки этих операций в C++ и предназначены специальные функции-члены.

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

Итак, попробуем рассказать о специальных функциях-членах максимально подробно.

Читать далее

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

Делаем простой фитнес-трекер на React Native + Expo

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

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

Чтобы совместить полезное с полезным, заодно соберём небольшое приложение — простой трекер веса и тренировок — и посмотрим, как на практике работает мультиплатформенная разработка на React с Expo. Спойлер: почти то же самое, что и обычная разработка на React — и, похоже, именно она окончательно забивает гвоздь в гроб Dart/Flutter и прочих попыток конкурентов сделать вид, что React — это страшный сон, который можно забыть.

Читать далее

За рекордными отчётами Nvidia скрывается афера на 2 триллиона долларов, и вот что от нас прячут…

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

«Много говорят о пузыре ИИ, - отметил CEO Nvidia Дженсен Хуанг во время недавнего отчёта о прибылях за третий квартал. - Мы видим иную картину».

Легко понять, почему Хуанг так считает. В конце концов, этот отчёт был лакмусовой бумажкой для всей индустрии, и они с блеском прошли проверку. Их выручка взлетела на 62%, превзойдя прогнозы Уолл-стрит. Я уверен, что с вершины своей золотой горы Хуангу всё кажется прекрасным. И впрямь, похоже, мир согласился, что страхи о катастрофическом взрыве пузыря ИИ - не более чем паникёрство. Но я заявляю - это полная чушь, потому что это не гора золота, а карточный домик.

То, что все, кажется, упускают из виду, так это то, что спрос на кирки и лопаты вовсе не означает, что тюльпаномания или золотая лихорадка не готовы вот-вот лопнуть. Точно так же спрос на чипы ИИ, которые продаёт Nvidia, не означает, что нет пузыря, который вот-вот разрушительно схлопнется.

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

Пристегните ремни - погружение будет глубоким!

Читать далее

Форматируем строку по-человечески: C++ и его <format>

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

Когда-то давным-давно (то есть до C++20) мы форматировали вывод либо по-старинке через printf, либо используя громоздкие стримы ввода-вывода из <iostream>. Оба подхода, мягко говоря, не очень. printf работал шустро и лаконично, но требовал строгого соответствия типов, забудешь правильный %d или %s в формате, и получишь неопределённое поведение вплоть до падения программы. Компиляторы иногда предупреждают о несоответствиях, но полностью проблему не решают (особенно если форматируемая строка не литерал). Кроме того, printf не умеет выводить пользовательские классы, только примитивы.

Сейчас ситуация изменилась. В C++20 завезли библиотеку <format>, современный подход к форматированию строк, сочетающий лаконичность printf с безопасностью iostream. Инструмент называется std::format и объявлен в заголовке <format>. По сути, это адаптация популярной библиотеки fmt.

Читать далее

Хакеры начинают фишинг и выигрывают у Google

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

У мошенников нет ничего святого! Хакеры взялись за Google: подделка подписей теперь не обязательна, ведь можно заставить Google подписывать фишинговые письма валидным DKIM самостоятельно. Если раньше опытный ИБ-специалист мог сходу разобраться, где фишинговое письмо, а где — нет, сейчас это сделать в разы сложнее. И дело вовсе не в популярных нейронках, изощренном социальном инжиниринге или слитых базах.

Несем вам горячий кейс о том, как мошенники научились злоупотреблять настройкой OAuth-приложений, используя официальные инструменты Google для отправки поддельных писем от no-reply@accounts.google.com.

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

Читать далее

Этот CSS пора оставить в прошлом

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

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

В беседах с коллегами я всё чаще замечаю, что многие не в курсе последних фишек CSS. Конечно, у каждого свои причины. Кто-то погряз в повседневной рутине. Кому-то просто неинтересно, что там нового происходит в мире CSS. А кто-то годами сидит на десятилетних подходах и чувствует себя прекрасно.

Честно говоря, как давнему фанату CSS, мне становится немного грустно. Сколько классных возможностей проходит мимо них! А ведь их код мог бы быть короче, надёжнее и понятнее. Именно поэтому я собрал несколько примеров, которые были популярны раньше, и переписал их, используя современные возможности CSS.

Давайте посмотрим, что у меня получилось.

Читать далее

Когда Seq Scan не миновать: Data Skipping в новом колоночном движке Tarantool

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

Привет, Хабр! Меня зовут Андрей Саранчин, и я разработчик СУБД Tarantool в VK Tech. Вот уже полтора года мы строим MemCS — новый колоночный движок Tarantool для HTAP. И вот парадокс: даже с индексами иногда не уйти от сплошного прохода таблицы. Поделюсь, почему мы не смогли миновать Sequential Scan и как мы смягчили эту проблему с помощью Data Skipping.

Эта статья написана по мотивам доклада для Saint HighLoad++ и отражает одну из проблем, которую мы затрагивали в этом докладе.

Читать далее

Взламываем Аэродромный Метеоиндикатор

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

Я питаю двоякие чувства к метеостанциям. Терпеть не могу многочисленные Arduino-проекты с мелким экраном, зато люблю что-то эдакое. Например в коридоре уже пять лет как висит метеоиндикатор на базе блинкерного табло для автобуса, что случайно попалось на просторах авито. Так вышло и на этот раз, и в моем распоряжении оказался аэродромный индикатор погоды Комплексной Радиотехнической Аэродромной Метеорологической Станции.

Читать далее