Обновить

Разработка

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

К какому компоненту отнести тот или иной класс? Мой опыт разделения функциональности между компонентами

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

Привет, меня зовут Антон Огнев, я iOS-разработчик в ПСБ, и в этой статье расскажу о классах, компонентах и зависимостях между ними. Конкретно речь пойдет о том, какие принципы стоит всегда соблюдать при создании и поддержке компонентов, как определить, не рушит ли одна новая зависимость весь проект, как меняются приоритеты по компонентам между стартом новой разработки и зрелым продуктом. 

Большая часть теории основывается на книге «Чистая архитектура» Роберта Мартина. Я эту книгу читал несколько раз и каждый раз открывал для себя что-то новое, набирался опыта и на многие вещи начинал смотреть иначе. Между пояснением принципов буду делиться историями из собственных компонентных приключений в качестве примеров. 

Заглянули к себе в компоненты и обнаружили, что там бардак и обобщенные имена типа Cоmmon, Shared, Core, Base, Utils? Это текст для вас: сам был на вашем месте, помогу навести порядок. 

Читать далее

Лучшие практики автоматизации тестирования: 9 принципов стабильных автотестов

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

Почему автотесты становятся нестабильными и перестают приносить пользу? Разбираем системные причины флаков, бессмысленных ретраев и бесконечных E2E-монстров. Практические принципы: моки, изоляция, атомарность и минимализм — без философии, только инженерия.

Читать далее

Как мы пихнули полноценный цифровой протокол в NTC-пин батареи — и почему это вообще работает

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

Есть старая инженерная мудрость:

Если у вас не хватает проводов — значит, вы недостаточно творчески подходите к вопросу.

У нас была ровно такая ситуация.

Работая на одном проекте системы «умного города» мы, уйдя в стандарт «одна плата с разными конфигами для всего» решили делать на ней свой BMS. Зачем да почему? Нужно было универсальное решение, которое должно работать и с литиевыми, и со свинцовыми батареями, и с ещё парой экзотических химий, встречающихся в природе примерно так же часто, как радужные единороги. Нужно было надёжно определять тип батареи, считывать её состояние, пригодность к использованию, дату производства и всё‑всё‑всё подобное, блокировать несовместимые варианты и вообще предотвращать самое главное — человеческую ошибку. Но как это часто бывает в компаниях где в R&D священный хаос — никто и не задумывался чтобы сесть и обсудить «А как мы вообще это делать будем». В производство ушла тысяча плат.

В любой другой ситуации мы бы пошли по наименьшему пути сопротивления: i2c на коннекторе рядом и EEPROM на аккуме. Но не тут было.

Читать далее

Как мы за 8 месяцев переписали 3 года разработки: переход «Инферит ИТМен» с .NET на C++

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

Привет, я Данила Трусов, директор продукта «Инферит ИТМен».
Хочу рассказать, как мы в буквальном смысле переписали три года разработки за восемь месяцев — и почему этот переход оказался не просто технологическим апгрейдом, а шагом к полной независимости продукта.

Читать далее

Основы безопасности веб-приложений: краткий «курс» по выявлению уязвимостей

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

Как выглядит веб-приложение с точки зрения злоумышленника?

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

Вы можете развернуть учебную среду на своей машине, повторять команды и проверять результаты их выполнения на вашем экземпляре приложения. Для демонстрации техник разведки и инструментов я использую общеизвестные уязвимые ресурсы: demo.testfire и testphp.vulnweb. Их URL я положил в workshop/urls.txt в репозитории проекта.

Дисклеймер: статья носит ознакомительный характер, и любые попытки злоупотребления данной информацией незаконны и могут повлечь за собой уголовное преследование в соответствии со статьями 272 и 273 УК РФ.

Читать далее

Shai-Hulud 2.0: 25 000 npm-репозиториев могут потерять свои данные

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

Несколько поставщиков средств безопасности (Aikido, HelixGuard, Koi Security, Socket, Step Security и Wiz) подали сигнал тревоги о второй волне атак на реестр npm, напоминающих атаку Shai-Hulud. Новая кампания в цепочке поставок получила название Sha1-Hulud и затронула более 25 000 репозиториев через npm с кражей учетных данных на этапе preinstall. Вредоносные (троянизированные) пакеты npm загрузили в реестр между 21 и 23 ноября 2025 года.

Подобно атаке Shai-Hulud, выявленной в сентябре 2025 года, нынешняя версия также публикует украденные секреты в GitHub, но теперь с описанием репозитория «Sha1-Hulud: The Second Coming» — «Sha1-Hulud: Второе пришествие».

Читать далее

152-ФЗ для детсада. Как не упасть в обморок, если вы — заведующий

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

В последние годы вопросы защиты персональных данных в образовании вышли на первый план из-за участившихся инцидентов. Регулятор требует, чтобы детские сады оформляли все документы по новым правилам и не допускали утечек данных воспитанников. К тому же родители стали более осведомлены о своих правах: жалобы в случае разглашения информации о ребенке могут привести к проверке и санкциям. Одной публикации на сайте списка детей или фотографий без согласия достаточно, чтобы создать проблемную ситуацию. Таким образом, владеть базовыми знаниями о 152-ФЗ сегодня необходимо каждому руководителю ДОУ. Поэтому, а еще потому что у большинства детских садов нет собственного специалиста по защите персональных данных, а приглашать внешнего эксперта часто не позволяет бюджет я решил написать эту статью. Надеюсь она поможет разобраться ответственным лицам (заведующим, директорам, юристам дошкольных образовательных учреждений (ДОУ)).

Большинство общих обзоров закона о персональных данных, к сожалению, мало пригодны для решения практических задач в детском саду. Моя цель – изложить требования максимально прикладным языком, с акцентом на реальных ситуациях ДОУ. Предположу, что читателю уже знакомы базовые понятия: кто такой оператор и лицо, действующее по поручению оператора, какие принципы обработки данных установлены законом, что включает в себя политика оператора по ПДн, а также общие меры защиты информации. Не вдаваясь глубоко в теорию, сконцентрируюсь на специфике дошкольных учреждений и дам пошаговые рекомендации. Статья структурирована так, чтобы ее можно было легко прочитать и использовать как справочник – вы сможете цитировать отдельные разделы или пересылать коллегам.

Читать далее

Мифы, суеверия и народные мудрости в разработке игр

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

Существует довольно много распространённых «мудростей» о разработке игр на C++, различных обрядах и видах магии. И как это часто бывает с подобными сакральными знаниями, при внимательном осмотре - у части действительно есть право на жизнь, часть можно отправить в Каирский музей отбирать славу у мумий, а часть вообще оказывается родом из чужой реальности, и работать как предполагалось отказывается. Но это не мешает некоторым компаниям относиться к таким советам как к скрижалям, бережно принесённым с великой горы совещаний. Новым сотрудникам их передают почти с торжественностью обряда посвящения: «Так делали наши предки, так делаем и мы».

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

Понедельнишное

Тим Бернерс-Ли: как физик из ЦЕРН практически в одиночку написал три главных протокола, чтобы создать Интернет

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

Имя британского инженера-программиста Тима Бернерса-Ли не так на слуху, как у современных IT-гигантов, но именно благодаря его труду интернет стал тем, чем он является сегодня. Он практически в одиночку разработал Всемирную паутину (World Wide Web, WWW) — инструмент, который по значимости стоит в одном ряду с изобретением печатного станка. Без новаторской работы Бернерса-Ли, которая произвела революцию в обмене информацией, все существующие веб-сайты просто не смогли бы работать.

Читать далее

Перестаньте думать и начните уже писать код

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

Команда Spring АйО подготовила перевод статьи Джеффа Атвуда о том, почему попытки «спроектировать всё заранее» только мешают реальной разработке. Атвуд утверждает: без живого прототипа любые архитектурные решения превращаются в гадание на диаграммах. Хотите делать осознанный дизайн — поднимайте зад с кресла и пишите код.

Читать далее

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

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

В этом семестре мы проходим в Висконсинском университете курс «Введение в алгоритмы» (577), где нам рассказывают о способах доказательства корректности программ, динамическом программировании, сетевом потоке и обстоятельствах, при которых Дейкстра изобрёл свой алгоритм поиска кратчайшего пути.

Однако этот курс стал для меня довольно уникальным тем, что оказался первым, требующим обязательного присутствия на лекциях. Проверка посещаемости реализована на основе платформы TopHat, которая известна многим студентам.

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

Однако, наверно, разработчики поняли, что у системы есть уязвимость, которую невозможно пропатчить — друзья. Если они учатся на том же курсе, что и ты, то лёжа в кроватке, можно отправлять им сообщения со слёзными просьбами поделиться кодом.

Поэтому для лекторов-параноиков TopHat реализовала фичу «надёжной проверки посещаемости», которая, согласно описанию, определяет местоположение «по геолокации устройства и близости к аудитории и другим студентам».

Читать далее

Как создать систему backend-тестов на Golang

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

Привет, Хабр! Меня зовут Александр Кувакин, я backend-инженер в команде Engineering Excellence в Авито. В этой статье разберём, как backend-разработчикам выстраивать систему тестов на бэкенде и разберём основные проблемы. Речь пойдет прежде всего о тестах, которые проверяют бизнес-логику.

Читать далее

SPQR — наше опенсорс-решение для горизонтального масштабирования Postgres

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

В современных реалиях объёмы данных постоянно растут и появляются всё более жёсткие требования к производительности. Тут традиционный PostgreSQL сталкивается с фундаментальной проблемой: отсутствие нативной поддержки горизонтального масштабирования. 

Сегодня мы, команда платформы данных в Yandex Cloud, хотим рассказать о SPQR — нашем опенсорс‑инструменте, который который создавался как ответ на боль шардирования и эксплуатации крупных OLTP‑систем. Под катом — история о том, что стало отправной точкой для его создания, какие задачи он помогает решать, на чём основано наше решение и что помогает ему быть довольно простым в эксплуатации.

Читать далее

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

Retro68: если вам скучно жить на свете

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

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

Видимо по этой причине, одним мрачным осенним днем мне захотелось создать графическое приложение на современном C++ под.. классический Mac из 90х.

Читать далее

Гречневая нейронка. Попытка закрыть национальный гештальт

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

Детекция мусора в гречке с помощью нейросети YOLO8n + попытки в real-time детекцию (Docker + FastApi, Gradio, TensorFlow Lite) + предложение добавить такую фичу в приложения продуктовых магазинов. За результатами приглашаю в статью.

Читать далее

Боты ищут путь: почему NPC за рулем машин в GTA такие неадекватные

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

Обожаю игры серии GTA (все, кроме четвертой части). Я бы даже сказал, что многое в них прекрасно: разнообразие сюжетных миссий, выбор транспорта, классные диалоги, тонкая ирония, саркастичный юмор, высмеивание проблем общества, свобода действий, возможность устроить локальный апокалипсис. Однако все это портит поведение ботов-водителей, которые словно намеренно бросаются наперерез игроку, чтобы усложнить ему жизнь. Но так ли это? Действительно ли поведение NPC на дорогах GTA заскриптовано так, чтобы мешать геймерам? Прошу под кат — в поисках правды будем подглядывать за ботами и залезать туда, куда Рокстары не хотят нас пускать.

Посмотреть путь бота

Одноразовые вейпы: как из-за общества потребления тысячи полезных компонентов отправляются в мусорку?

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

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

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

Читать далее

Как мы учили кассу самообслуживания в столовой отличать борщ от свекольника

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

Хочу рассказать о том, как мы разрабатывали и внедряли кассы самообслуживания для столовых и фудкортов. Под катом:

Почему распознавать еду сложно (но можно). Где мы ожидали получить проблемы, и где они были на самом деле. Почему не нужно помогать кассиру делать свою работу. Сколько котлет нужно сфоткать для уверенного распознавания. Бунт кассиров, бессмысленный и беспощадный. Какие проблемы создает товароведу касса самообслуживания.

Читать далее

Безопасность маленьких проектов

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

Привет, Хабр! Я заметила, что в стартап-культуре и среди небольших команд бытует миф: «Мы слишком малы, чтобы нас атаковали». Я считаю, что сейчас это одно из опаснейших заблуждений, поэтому и решила написать статью, чтобы поделиться своими мыслями и некоторыми знаниями на эту тему.

Читать далее

Собираем OpenWRT прошивку и ImageBuilder для нестандартного оборудования на основе dts

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

Привет Хабр! Меня зовут Алексей и я занимаюсь беспроводными технологиями. Не так давно я рассказывал, как собрать прошивку OpenWRT без image builder. В этой статье мы повысим планку и попробуем собрать и прошивку, и image builder для модели роутера с частичной поддержкой OpenWRT. Под частичной поддержкой я понимаю то, что для данной конкретной модели роутера поддержки нет, но она есть для платформы. Экспериментировать я буду с реальным устройством - это Wi-Fi 7 роутер, полученный от китайского производителя. Вместе с роутером производитель предоставил нам необходимую документацию и DTS файл. Заранее хочу предупредить, что производитель просил не раскрывать название модели и не тиражировать его DTS файл. Поэтому часть информации на скриншотах я заблюрирую.

Читать далее