Pull to refresh

Technotext

Как устроена память внутри микропроцессора и при чем тут компиляторы

Level of difficultyMedium
Reading time12 min
Reach and readers47K

Помните, как в школе, решая примеры «в столбик», мы бормотали себе под нос: «один пишем, два в уме»? У процессора при вычислениях возникает похожая ситуация — где-то нужно хранить промежуточные результаты. В современных микропроцессорах работает множество различных блоков, обрабатывающих числа, — их называют исполнительными устройствами. Чтобы все они могли временно «складывать» свои «два в уме», требуется достаточно большой объем быстрой вспомогательной памяти.

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

Читать далее

Генетическое программирование: от теории к практике

Level of difficultyMedium
Reading time13 min
Reach and readers12K

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

Что будет, если поручить эволюционному алгоритму самому «придумать» формулу? Разбираем генетическое программирование на наглядных примерах: от восстановления тригонометрических функций и символьной регрессии на реальном датасете до оптимизации структуры нейросетей — все эксперименты воспроизводимы в Google Colab.

Читать далее

Ломать не строить: как устроено хардверное тестирование

Level of difficultyEasy
Reading time15 min
Reach and readers21K

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

Меня зовут Игорь Попов, я директор департамента верификации и контроля качества в YADRO. Далее я простыми словами расскажу, что такое hardware QA: где мы режем, замораживаем, зачем смотрим, загорается ли лампочка по команде BIOS — и что делаем, если нет. Если ты джун или только начинаешь разбираться в «железе», статья поможет понять, подходит ли тебе такая работа и в чем она на самом деле заключается.

Читать далее

Онбординг в графиках: как превратить адаптацию в измеримый и предсказуемый процесс

Level of difficultyEasy
Reading time16 min
Reach and readers16K

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

Я Руслан Назаров, директор по разработке в TATLIN.FLEX. Первые задачи по онбордингу стали для меня школой, из которой вырос системный подход к адаптации новичков. В статье расскажу о метриках и чек-листе, которые помогут руководителю эффективно выстраивать процесс.

Читать далее

Как мы тестируем железо в радиочастотном центре — от платы до полноценного RU

Reading time9 min
Reach and readers21K

Всем привет! Меня зовут Алексей Караванов, я руководитель отдела тестирования программного обеспечения в YADRO. В нашем радиочастотном центре (РЧЦ) мы с коллегами разрабатываем и тестируем ПО радиомодулей для базовых станций. И сегодня хочу показать, какой путь проходит оборудование до момента, когда базовая станция будет запущена и начнет создавать покрытие для нашей с вами надежной связи. 

Разбирать будем на примере радиомодуля RU B3 (B3 — это один из основных частотных диапазонов в России и мире, работающий на частотах 1800 МГц). Покажу, как выглядит процесс производства от платы до полноценного устройства и как мы тестируем аппаратные комплексы. Посмотрим архитектуру наших тестовых стендов и самих тестов — будет много фото и скринов.

Подходы, которые я описал, могут вдохновить вас на новые интересные решения в вашей области тестирования.

Читать далее

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

Reading time10 min
Reach and readers17K

Привет, Хабр! Меня зовут Антон, я руковожу направлением автоматизации тестирования BIOS/BMC в YADRO. Как-то раз я моргнул — и наша команда из 10 инженеров выросла до 35. Вместе с этим у нас появились направления и лиды, а значит, я больше не могу прийти в любую задачу и сам ее быстро закрыть.

Общий дейлик тоже изменился: большая часть информации стала полезна конкретным группам людей внутри команды, а остальные просто теряли фокус. Конечно, ломалось не только это. В статье расскажу, что стало для меня неожиданным, где я ошибался и как мне удалось во всем этом выжить. А в конце поделюсь выводами, как при масштабировании команды избежать мучительной боли. Погнали!

Читать далее

DAC, AEC или оптика — какие ваши доказательства, господин трансивер?

Level of difficultyMedium
Reading time24 min
Reach and readers11K

Привет, Хабр! Меня зовут Андрей, я старший инженер по разработке ПО в YADRO. В прошлом квартале для коммутаторов KORNFELD мы разрабатывали функциональность Auto-Negotiation (автосогласование скорости, режима и других параметров передачи данных) и FEC (коррекцию битовых ошибок) из стандарта IEEE 802.3. Нам нужно было в реальном времени при горячей замене трансиверов определить их тип и тип среды передачи данных. Задача как будто простая: почему бы не заглянуть в EEPROM? Но есть нюансы.

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

Через нас прошло множество вариантов трансиверов, и мы научились быстро добывать из них нужную нам информацию (те еще сыщики!). В статье покажу способ, как определить тип трансивера и тип среды передачи данных при помощи одной теории и как получить воспроизводимый результат на Python. Материал будет полезен инженерам и программистам, которым нужно принимать решения на основе неполных и противоречивых входных данных. Приступим!

Читать далее

Куда расти верификатору: два основных трека и матрица компетенций

Reading time14 min
Reach and readers17K

Привет, Хабр! Меня зовут Алексей Ковалов, я руководитель отдела модульной верификации в YADRO в департаменте разработки процессорных архитектур. Сейчас в моей команде 30+ талантливых ребят. Некоторые из них пришли к нам стажерами и росли на моих глазах, другие вливались в команду уже уверенными мидлами и «перепрыгивали» в сеньоров и выше. Но где та тонкая грань, когда заканчивается один грейд (числовая интерпретация Junior — Middle — Senior) и начинается другой? Как вообще расти верификатору и какими навыками должен обладать условный джун, мидл или сеньор?

Сегодняшняя статья как раз об этом: покажу нашу матрицу компетенций и возможные пути развития специалиста. Но сначала дисклеймер: опираться буду на опыт в нашем направлении и команде. Конкретно у вас может работать по-другому — и это нормально.

Читать далее

Регулярная катастрофа и как её избежать. Подход к регулярным выражениям

Reading time8 min
Reach and readers11K

Салют, Хабр!

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

Читать далее

Ювелирная работа, или Как мы разрабатывали Умное кольцо Sber (часть 2)

Reading time12 min
Reach and readers29K

Салют, Хабр! 

Умное кольцо Sber уже в продаже, а мы продолжаем рассказывать, как создавали устройство. 

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

В предыдущей статье рассказали о софте Умного кольца Sber. Эта — о промышленном дизайне устройства, разработке «железа» и производстве. Из какого материала сделано кольцо? Как работает датчик фотоплетизмографии, он же PPG-сенсор? И почему мы пролили немало пота (искусственного) при его создании?

Читать далее

Burnout изнутри: тело сдаётся первым

Level of difficultyMedium
Reading time19 min
Reach and readers15K

Burnout с точки зрения физиологии: HPA-ось, структурные изменения мозга, когнитивные дефициты. Почему отпуск не работает, чем выгорание отличается от усталости, и что говорят 35 исследований. Личный кейс + IT-специфика.

Читать далее

Учимся разрабатывать для GPU на примере операции GEMM

Level of difficultyMedium
Reading time18 min
Reach and readers29K

Привет, Хабр! Сегодня я расскажу про реализацию матричного умножения и особенности разработки для GPU. Познакомлю вас с устройством GPU, объясню, чем отличается программирование от привычного для CPU, какие нюансы нужно учитывать для эффективной реализации операций GEMM. А затем сравним производительность разных подходов к реализации.

Читать далее

Livepatching: готовим «точечное» обновление ядра Linux на примере реального бага

Level of difficultyMedium
Reading time19 min
Reach and readers5.1K

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

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

Меня зовут Евгений, я работаю в компании YADRO. Задачами, связанными с разработкой и анализом компонентов ядра Linux, я занимаюсь уже около 15 лет.

Я расскажу, что такое livepatching, как такая технология появилась и как она применяется. А также покажу на примере, как можно самому сделать лайвпатч, чтобы исправить реальный баг в ядре Ubuntu 22.04 Server.

У статьи будет продолжение. Там подробно разберем, как именно лайвпатчи заменяют одни функции ядра Linux на другие, а также узнаем, на что нужно обращать внимание, если потребуется использовать все это в продакшене.

В основном речь пойдет о системах с архитектурой x86 и RISC-V (хотя технология работает и для ARM64, PowerPC, s390x).

Читать далее

Отсекая лишнее: как сократить бинарный код программы на C++ и не потерять нужную функциональность

Level of difficultyMedium
Reading time12 min
Reach and readers14K

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

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

Меня зовут Максим Гончаров, и я расскажу, как мы оптимизировали кодовую базу на C++ по размеру конечного образа, чтобы новые фичи были доступны на всех уже работающих у заказчиков серверах.

Читать далее

Ручное управление не делает нас сильнее: как я написал клиент для автоматизации тестирования

Level of difficultyMedium
Reading time13 min
Reach and readers12K

Всем привет! Меня зовут Стас, я ведущий инженер отдела сертификационного тестирования компании YADRO. Однажды мне стало лень вручную проставлять статусы тестов PASSED/FAILED в TestY TMS, и я написал свое клиент-серверное приложение ATS Studio. С его помощью я залечил боль ручного управления для нескольких команд YADRO.

Как мне это удалось, если я не пишу код на Python, и чему я научился в процессе, узнаете под катом.

Читать далее

RAG: как Филин Палыч-реранкер навел порядок в цифровом королевстве

Level of difficultyMedium
Reading time15 min
Reach and readers8.7K

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

В мире IT это называют «галлюцинациями», а лечат их с помощью RAG (Retrieval-Augmented Generation). Если просто: это способ дать модели «шпаргалку» из ваших документов, чтобы она не гадала, а опиралась на факты.

Но как эта сложная механика выглядит изнутри? Давайте разберем устройство RAG на примере одной поучительной истории из Цифрового Королевства, где один рыжий Кот чуть не довел Бизнес до нервного срыва своим враньем.

Читать далее

Компилируем TypeScript в натив: хардкор и мясо

Reading time17 min
Reach and readers19K

Зачем вообще компилировать TypeScript?

Есть большой проект, с кодовой базой в два миллиона строк на C++. Ядро на плюсах, поверх него работают несколько UI: десктопный интерфейс, веб и мобильное приложение. В какой-то момент проект упирается сразу в две проблемы. Первая — лицензионные ограничения: новые версии Qt, на которых мог бы жить десктопный интерфейс, становятся недоступны по санкционным причинам. Вторая — скорость разработки: UI давно хотелось писать быстрее.

Возникает логичный вопрос: что, если взять лучшие, максимально автоматизированные инструменты из веба и перенести их в мир нативных приложений без браузера и лишних прослоек? Ключевая цель — обеспечить возможность вызова C++-код из TypeScript с возвратом результата без промежуточных интерпретаторов.

Меня зовут Владимир Цышнатий @Tsyshnatiy. Я занимаюсь разработкой более 15 лет, мой основной профиль — C++. Помимо этого меня увлекают технологии на стыке разных миров. В том числе идея, лежащая в основе этой статьи: дать возможность писать на TS как на нативном языке.

Интересно узнать, как мы это делали и что получилось? Детали под катом! 

Читать далее

Разбираем древо ArangoDB «по веточкам». Подробный гайд по графовой БД

Level of difficultyMedium
Reading time11 min
Reach and readers5.4K

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

Меня зовут Владимир Ревякин, я старший инженер-программист компании «МойОфис», и вместе с QA-инженером Анной Рукавицыной мы подготовили этот материал, чтобы поделиться опытом реализации функции шаринга данных через графовую базу ArangoDB в рамках разработки платформы «Документы Онлайн». Если коротко — это продукт для совместной работы и хранения документов в рамках единой мультипродуктовой экосистемы.

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

Поехали!

Маршрут перестроен: исповедь лида о том, куда расти дальше (и всегда ли расти)

Level of difficultyEasy
Reading time8 min
Reach and readers22K

Я лид команды – и хочу идти дальше вверх! Точнее, не уверен, что хочу, но в айтишке надо ведь расти и развиваться, значит, следующая позиция для меня — менеджмент на уровень выше. Или нет?

Как пробиться на новый уровень, если компания нанимает на руководящие позиции извне? На чём фокусироваться? Как перестать скучать по разработке? А может, к ней надо вернуться?

Знакомы такие рассуждения? Тогда эта статья для вас:)

Меня зовут Максим Шульга, я руководитель департамента разработки Документы Онлайн в МойОфис. Наша команда работает с современными стеками: высоконагруженные бэкенды на Java и Python, фронтенд на React и TypeScript и другие.

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

Читать далее

Три совета, как не выучить C++ за 21 день (субъективный гайд с дополнениями)

Reading time6 min
Reach and readers46K

Типичная проблема новичков при изучении языка программирования — они тонут в море учебных материалов. Интернет предлагает тонны статей, курсов и книг по C++, но как выбрать действительно стоящие?

Меня зовут Владислав Столяров, я руководитель команды анализа безопасности продуктов в мультипродуктовой экосистеме МойОфис. Наши решения — Документы Настольные и Документы Онлайн — во многом работают благодаря C++, так что мне есть чем поделиться. В этой статье расскажу, что делать, если вы вдруг решили залететь в плюсы, но уже чувствуете, как накрывает экзистенциальный кризис от обилия информации.

Читать далее