Pull to refresh

Technotext

Не все логи одинаковы полезны: 3 истории из жизни

Level of difficultyEasy
Reading time8 min
Views6.8K

Прочитав статью "Утечки памяти, которые не утечки", я решил поделиться своим опытом поиска проблем, связанных с нагрузкой систем под управлением Windows. 2 проблемы были связаны с возросшей нагрузкой на ЦПУ и одна проблема связанна с утечкой памяти.

В своей статье я расскажу, как выявить проблемы в ПО, не имеющего исходного кода и написанного не вами, а так же как минимальными средствами выяснить, что происходит у вас в системе. Данный текст подойдет администраторам, где по условиям работы всё запрещено, а так же инженерам АСУТП, где систему приходится эксплуатировать в жестких рамках ИБ.

Подробнее далее

Кодер умеет в пыху. Какие словечки бесят айтишников

Level of difficultyEasy
Reading time8 min
Views26K

Мы провели опрос и узнали, какие слова, словечки и высказывания раздражают IT-специалистов. Среди ответов есть неожиданные, но лидер вряд ли кого-то удивит. Как к этому всему относиться? Как к профессиональному жаргону, который есть в каждой специальности. Обычного человека скорее всего покоробят профессионализмы юристов и врачей, но для нас всех короткое и ёмкое слово — формулировка короткой и точной мысли. По крайней мере, очень хочется так думать ;-)

Читать далее

Перехват трафика как вектор атаки на пользователей блокчейн-проектов

Level of difficultyMedium
Reading time21 min
Views3.9K

Привет, Хабр! Меня зовут Игорь Агиевич, я специалист по безопасности распределенных реестров в компании Positive Technologies. C 2021 года занимаюсь безопасностью в области блокчейн-технологий, в сфере ИТ работаю в общей сложности 17 лет.

В статье поговорим о проблемах безопасности блокчейн-проектов, пришедших из мира Web 2.0. В этой области отсутствует сложившаяся практика, поэтому в публичной плоскости крайне мало сведений о механизмах защиты, используемых этими проектами. Статья является более подробным вариантом доклада с прошедшего киберфестиваля Positive Hack Days 12 на эту же тему.

Опыт, накопленный при проведении пентестов, и понимание сетевых технологий помогли мне провести исследование атак на блокчейн-проекты, проведенных с использованием техник DNS hijacking и BGP hijacking.

Вы узнаете, как перехват пользовательского трафика приводит к тому, что пользователи теряют криптовалюту. Кроме того, в этой статье:

? разберем, как злоумышленники проводили атаки на сетевом уровне (благодаря открытым данным восстановим многие шаги атак буквально по минутам);

? декомпилируем смарт-контракты (далее — контракты) атакующих;

? выясним, какие публичные механизмы защиты внедрили пострадавшие проекты и что с ними не так;

? попробуем улучшить механизмы обнаружения рассмотренных атак и защиты от них, а также рассмотрим обозреватели блокчейнов (выясним, как найти в блокчейне контракты злоумышленника, зная только один из них);

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

Читать далее

Как уменьшить размер бандла раз и навсегда: приемы, метрики, мониторинг

Level of difficultyMedium
Reading time18 min
Views11K

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

Читать далее

Почему нет протестов против безответственной политики удаления неактивных аккаунтов?

Level of difficultyEasy
Reading time2 min
Views10K

С 1 декабря 2023 года Google начнет удалять те аккаунты, которые были неактивными в течение двух лет. Эту практику перенимает все больше компаний. Протестов почти нет. Масштаб проблемы явно недооценивается. Люди как будто не верят, что могут стать жертвами этой политики. Ну а что может случиться, не пропаду же я из интернета на год? А если пропадете?

Читать далее

Seastar как платформа для опорной сети 5G и краткое сравнение с Boost.Asio, userver и другими

Level of difficultyHard
Reading time14 min
Views5.2K

Я исследовал некоторые open-source фреймворки — кандидаты на платформу для опорной сети пятого поколения операторского уровня, и хочу поделиться своими выводами. Под катом я сравню Seastar, mTCP, Boost.Asio, userver и ACE, расскажу, почему примитивы синхронизации — это плохо, а затем погружу вас в глубины Seastar.

Читать далее

От астролябии до MIMO: как необходимость определять местоположение привела к развитию систем спутниковой и сотовой связи

Reading time15 min
Views4.4K

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

Все это было бы невозможно без эволюции технологий, систем спутниковой и сотовой связи, а также методов, которые вычисляют местоположение мобильных объектов. О них и поговорим под катом. Я Надежда Никулина, ведущий системный аналитик в телеком-команде YADRO. Давно работаю в сфере телекоммуникаций, участвовала в развитии сетей 2G и 3G в России, обеспечивала разработку узлов связи. В статье расскажу, как развивались методы определения позиционирования объектов и почему будущее за гибридными методами и технологиями 5G. 

Узнать больше

Один на 150 миллионов операций. Расследуем причины выброса времени отклика в операциях ввода-вывода

Reading time12 min
Views4.1K

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

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

Узнать решение →

Бесшовный апгрейд ПО для системы хранения данных: как организовать и улучшить

Reading time14 min
Views4.4K

Любое программное обеспечение необходимо обновлять — ПО для систем хранения данных (СХД) не исключение. Логика апгрейда в СХД не тривиальна. В системе есть несколько контроллеров хранения, обновлять которые нужно последовательно, учитывая все возможные риски — потерю отказоустойчивости, конфликт версий и другие. При этом даунтайм сервиса или миграция данных на другую систему — варианты, которые не устроят ни одну компанию.

Я Владимир Приходько, руководитель отдела разработки подсистем управления в компании YADRO. Вместе с командой мы развиваем пользовательский функционал СХД. В тексте расскажу о специфике бесшовного обновления ПО в системах хранения данных и дам рекомендации, как выстроить этот процесс с учетом лучших практик. Все описанные подходы мы с командой успешно используем в обновлении СХД TATLIN.UNIFIED

Читать далее

Пишем свой драйвер Molecule без костылей и боли

Reading time16 min
Views2.3K

Привет, Хабр! Меня зовут Павел, я инженер по разработке инфраструктуры в компании YADRO. В апреле 2023 года разработчики Molecule представили мажорный релиз инструмента в версии 5.0.0. Помимо множества багфиксов и улучшений, пользователи получили возможность написать свой собственный драйвер, подключить его в уже существующие сценарии тестирования ролей и использовать как molecule.docker или molecule.openstack. Я не нашел или плохо искал статей об этом и решил написать поэтапное руководство по разработке собственного драйвера — от примитивного Hello world до работающего прототипа.

В статье вы найдете пример custom_docker доработки оригинального драйвера molecule.docker, описание базовых классов и методов из API Molecule, а также рассказ о нюансах разработки и эксплуатации.

Перейти к инструкции

Как ограничить количество выполняющихся задач в Jenkins при вызове parallel: сравниваем решения

Reading time6 min
Views3.1K

Недавно передо мной встала задача — есть 250 тестов, каждый из которых занимает от 5 до 30 минут, а иногда и часы. Надо запустить их в параллель на одной машине, но не больше 16 одновременно. Ограничение связано с некоторым лимитированным ресурсом, а также количеством ядер CPU. Реальное число одновременно запущенных задач нужно вычислять динамически, то есть пойти простым путем и зарегистрировать имя или лэйбл ресурса заранее с помощью плагина Lockable Resource не получится.

Читать далее

Пишем Kotlin DSL для графов навигации в домашних условиях

Level of difficultyEasy
Reading time12 min
Views5.1K

Всем привет! Я Тимур, лид одной из android-команд. Больше трех лет работаю в Тинькофф, все это время был в привлечении и занимался флоу получения разных банковских продуктов.

Расскажу, как мы сделали свой DSL для того, чтобы строить логику навигации в наших флоу.

Читать далее

ChatGPT показала 5 тысяч самых опасных файлов, с помощью которых можно легко взламывать сайты

Reading time3 min
Views20K

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

Читайте, что из этого получилось.

Подробнее

Документация как сервис: как мы генерируем документы независимо от стека разработки

Level of difficultyEasy
Reading time7 min
Views9.1K

Привет, Хабр. Меня зовут Наталья Павликова, в YADRO я работаю в команде DocOps. У нас обширная инфраструктура вокруг задач документирования, которая немного напоминает ходячий замок Хаула. Сегодня я расскажу о небольшой ее части — процессе автоматической генерации и публикации документов из исходников кода.

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

Читать далее

Разработка тензорного компилятора под RISC-V CPU с помощью OpenVINO и MLIR

Level of difficultyHard
Reading time11 min
Views5K

Привет, Хабр! Меня зовут Владислав Виноградов, я инженер группы исследований и разработки ПО глубокого обучения в YADRO. Моя команда создает и оптимизирует связанное с искусственным интеллектом программное обеспечение. Сегодня я расскажу, как можно разработать тензорный компилятор для процессора на базе открытой архитектуры RISC-V. 

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

Читать далее

Как оптимизировать код на С для x86-процессоров: подсистема кэша и памяти, инструкции AVX-512

Level of difficultyMedium
Reading time12 min
Views13K

Меня зовут Андрей Бакшаев, я ведущий инженер-программист в YADRO. Моя команда занимается разработкой и оптимизацией математических библиотек под архитектуру x86. До этого я 15 лет работал в Intel. Значительная часть моих задач заключалась в том, чтобы реализовывать некоторые алгоритмы обработки изображений и сигналов в довольно известной математической библиотеке IPP, максимально эффективно используя возможности процессоров. Я также исследовал производительность этих алгоритмов в процессорах на ранней стадии проектирования. 

В статье я поделюсь своим опытом оптимизации низкоуровневого кода на языке C. Рассмотрим подсистему кэша и памяти процессоров и новые инструкции AVX-512. Разберем пример ускорения копирования байтового массива данных и посмотрим, как векторизованный код позволяет сократить время работы широко используемого алгоритма замены байтов по таблице с 619 до 34 мс, то есть примерно в 18 раз. 

Читать далее

Оптимизируя sequences — или как мой код попал в kotlin

Level of difficultyHard
Reading time12 min
Views7.2K

Рассказ о том, как я оптимизировал несколько функций kotlin sequences и как мои оптимизации попали в релиз kotlin 2.0

Читать далее

Как мы за год в 5 раз снизили количество приемочных багов через shift left testing

Level of difficultyEasy
Reading time7 min
Views12K

В январе 2022 мы подводили командные итоги 2021 и обнаружили, что у нас довольно много приемочных багов при тестировании новых фич. Мириться с этим было нельзя, и за дело принялся знающий человек — наш тимлид. Он собрал команду и поставил задачу: снизить количество приемочных багов до минимально возможного значения, желательно разика в три. Это был челлендж, который казался невыполнимым. Но сдюжили! Расскажу, как мы всего добились и почему это хорошо.

Читать далее

Встроенные фикстуры Pytest

Level of difficultyEasy
Reading time8 min
Views11K

Всем привет! Я Никита Вандышев, ведущий QA-инженер в Тинькофф Мессенджере.

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

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

Читать далее

Битва CLIs: почему мы отказались от Angular CLI в пользу Nx

Level of difficultyEasy
Reading time6 min
Views9.2K

Привет! Меня зовут Даниил, я фронтенд-разработчик в Тинькофф Бизнесе. Мы строим удобные интерфейсы, чтобы клиенты могли быстро зарегистрировать бизнес.

Сегодня я хочу рассказать, почему мы используем Nx для всех наших Angular-проектов, какие проблемы решает этот инструмент и чем он лучше Angular CLI.

Читать далее