Pull to refresh
4
0
Егор@Faositb

User

Send message

Как патчить ядро Linux: подробное руководство

Level of difficultyMedium
Reading time23 min
Reach and readers13K

Всем привет, это Тимур. Сейчас в YADRO я разрабатываю сетевую операционную систему для коммутаторов KORNFELD. В ходе этого проекта летом я получил сложную задачу: реализовать установку опции PROTO_DOWN для Ethernet-интерфейсов в ядре Linux. «Из коробки» ядро поддерживает эту опцию только для vxlan и macvlan-интерфейсов, а для Ethernet поддержка определяется драйвером сетевого устройства.

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

Читать далее

Теорема Пифагора: великий обман школьной программы. Как абстракция убила смысл

Level of difficultyEasy
Reading time12 min
Reach and readers63K

Все мы знаем эту формулу. a^2 + b^2 = c^2.

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

Но задавали ли вы себе когда-нибудь вопрос: почему именно квадраты?
Почему не кубы? Почему не просто сумма модулей |a| + |b|?

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

Сегодня мы разберем этот «черный ящик» и увидим, что теорема Пифагора — это вовсе не про треугольники. И доказывать её нужно совсем не так, как нас учили.

Школьная программа не дает ответа. Более того, история преподавания теоремы Пифагора — это история того, как живую, наглядную геометрию превращали в сухую, мертвую алгебру. Нас уводили всё дальше от понимания сути в сторону абстракции.

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

Приготовьтесь к полному разрыву всех шаблонов!

Читать далее

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

Level of difficultyMedium
Reading time12 min
Reach and readers13K

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

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

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

Читать далее

Как дозированные боль и страдание делают нас счастливее и успешнее?

Reading time12 min
Reach and readers17K

В очередной раз столкнувшись с перегрузом и необходимостью основательно подзарядиться, решила написать статью о том, как я это делаю. Тут будет много про гормоны, дофаминовое голодание и яму, спуск кортизола, железную задницу и борьбу с собой. Описывать всё буду очень простыми словами. Не потому, что сомневаюсь в вашем интеллекте! Просто я не врач, а ИТ-шник, так что компетенции у меня чисто практические. Читаю очень много научпопа, тестирую на себе советы. Вот и с вами поделюсь выжимкой из прочитанного и подкреплю своим опытом, без претензии на экспертность.

Читать далее

Функциональная верификация цифрового дизайна: как это делают в YADRO

Level of difficultyMedium
Reading time13 min
Reach and readers10K

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

Читать далее

Мой первый вклад в ядро Linux

Level of difficultyMedium
Reading time22 min
Reach and readers26K

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

Читать далее

Как не сойти с ума? IT рынок переполнен

Level of difficultyEasy
Reading time3 min
Reach and readers56K

Сегодня я хотел бы поделиться опытом поиска работы Java-разработчиком в РФ.

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

Итак, я обычный парень без каких-либо связей. После 9-го класса пошёл в техникум, закончил его на «отлично», затем отдал год службы в армии. После армии, как и у многих, у меня не было возможности учиться очно, поэтому я поступил на заочное отделение в институт. Пошёл работать: перепробовал множество профессий — фильтровал пиво, работал на складах Wildberries, в горячем цеху сети «Сицилия». Всё это время, на протяжении 2–3 лет после армии, я стремился стать разработчиком.

Как и многие ребята, которые не знают, с чего начать, я изучал всё подряд, неструктурированно: то Python, то JS. Потом взял перерыв, потому что потерял веру.

В конце 2023 года я вернулся в IT в попытках найти возможность стать разработчиком. Тогда я прошёл курсы на SQL Academy (понял, что без SQL в бэкенде никуда), кое-как одолел их за 1–2 недели. Потом мне выпал шанс пройти стажировку в ЦФТ. Я успешно прошёл все этапы, и меня взяли на позицию инженера по сопровождению. Там я плотнее познакомился с SQL, начал делать запросы разной сложности в PL/SQL Developer. Затем я понял, что эта позиция мне не симпатизирует и это не тот опыт, который я хотел получить.

В начале мая 2024 года я решил, что надо плотно начать изучать какой-нибудь язык программирования, и остановился на Java. Купил себе книги.

Читать далее

Как мы обслуживаем 5 млрд карточек в сутки с задержкой меньше 1 мс

Level of difficultyMedium
Reading time8 min
Reach and readers31K

Меня зовут Ескендиров Мурат, я — архитектор сайта в Ви.Tech, IT-дочке ВсеИнструменты.ру. В этой статье расскажу, как мы строили сервис для выдачи карточек товаров, обрабатывающий до 5 миллиардов запросов в сутки, какие архитектурные решения приняли и с какими проблемами столкнулись в процессе. Расскажу, какие решения сработали, а какие до сих пор остаются нашей головной болью.

Сайт «ВсеИнструменты» имеет почти 20-летнюю историю, и, как это часто бывает, за это время он превратился из маленького сайта с парой сотен товаров на PHP, созданного «на коленке», в гигантский монолит с несколькими миллионами уникальных номенклатур.

Несколько лет назад перед сайтом встали в полный рост проблемы, характерные для многих компаний, выросших из «подпартного» стартапа (первый свой заказ компания «ВсеИнструменты.ру» получила во время лекции в МФТИ, тогда один из основателей для его оформления залез под парту) в многомиллиардную корпорацию:

Читать далее

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

Level of difficultyEasy
Reading time6 min
Reach and readers6.1K

Привет, Хабр! Меня зовут Иван Самсонов, я CPO of AI в MWS, где делаю так, чтобы все эти модные технологии не просто красиво звучали на митапах, а реально работали в операционке. Сейчас уже никого не нужно убеждать, что AI «пришел» и его пора интегрировать в любой подходящий утюг. Фокус сместился: я все меньше убеждаю топов в необходимости ML, и больше — мидл-менеджмент и инженеров. И доказываю им, что нужно изучать работу нейронных сетей и пристально следить за их развитием. Для этого у меня есть очень весомый довод — на горизонте 5–7 лет огромный пласт технических задач уйдет людям, умеющим грамотно формулировать запрос. В этом материале я расскажу, как это может произойти и кому уже надо задуматься о будущем с ИИ.

Читать далее

Я отклоняю комиты с использованием кучи и прошу коллег переписать такую логику

Reading time11 min
Reach and readers48K

Хочу поделиться своим опытом разработки крупных игровых проектов на C++, где производительность и стабильность — это не просто приятные бонусы, а абсолютно естественные требования к разработке. За годы работы над движками и играми я понял, что подход к управлению памятью очень сильно влияет на весь проект. В отличие от многих приложений - игры, особенно большие, часто работают часами без прерываний и должны поддерживать стабильный фреймрейт и отзывчивость. Когда проседание fps или фриз происходит на глазах у сотен тысяч игроков, вам уже никто не поможет — ущерб уже нанесен, а в steam полетели отзывы о кривизне рук разработчиков.

Однажды моя команда закончила работу над довольно интересным проектом, который портировали больше двух лет на плойку. Движок старый, большой и мощный, но работа с памятью была ориентирована на ПК времен конца 2000-х, и что меня поразило, так это насколько сильно большая часть кодовой базы зависела от динамической памяти во время выполнения. На ограниченном железе (далеко не у всех есть PS5 pro) и в условиях жёстких требований к сертификации на консолях такие решения быстро превращаются в проблему.

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

Читать далее

7 SQL-запросов, которые решают 90% всех задач на работе

Level of difficultyEasy
Reading time4 min
Reach and readers39K

Каждый день одно и то же. Открываешь клиент базы данных, чтобы что-то проверить, посчитать или найти. И снова пишешь почти тот же SELECT, что и вчера, с тем же WHERE и JOIN. Знакомо?

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

В этой статье я собрал 7 таких запросов-«рабочих лошадок». Это не какой-то там справочник, а готовая шпаргалка для реальных задач.

Читать далее

Особенности Python, о которых вас точно спросят на техническом собеседовании

Level of difficultyEasy
Reading time11 min
Reach and readers15K

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

Как автор курса «Python-разработчик» в Яндекс Практикуме, я часто разбираю подобные ситуации на своём YouTube-канале, где провожу открытые тестовые интервью с джунами. Всё, о чём я говорю, — это не абстрактные примеры, а реальные наблюдения и выводы, сделанные прямо в ходе этих собеседований. 

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

Читать далее

Аппаратное ускорение глубоких нейросетей: GPU, FPGA, ASIC, TPU, VPU, IPU, DPU, NPU, RPU, NNP и другие буквы

Reading time28 min
Reach and readers104K


14 мая, когда Трамп готовился спустить всех собак на Huawei, я мирно сидел в Шеньжене на Huawei STW 2019 — большой конференции на 1000 участников — в программе которой были доклады Филипа Вонга, вице-президента по исследованиям TSMC по перспективам не-фон-неймановских вычислительных архитектур, и Хенга Ляо, Huawei Fellow, Chief Scientist Huawei 2012 Lab, на тему разработки новой архитектуры тензорных процессоров и нейропроцессоров. TSMC, если знаете, делает нейроускорители для Apple и Huawei по технологии 7 nm (которой мало кто владеет), а Huawei по нейропроцессорам готова составить серьезную конкуренцию Google и NVIDIA.

Google в Китае забанен, поставить VPN на планшет я не удосужился, поэтому патриотично пользовался Яндексом для того, чтобы смотреть, какая ситуация у других производителей аналогичного железа, и что вообще происходит. В общем-то за ситуацией я следил, но только после этих докладов осознал, насколько масштабна готовящаяся в недрах компаний и тиши научных кабинетов революция.

Только в прошлом году в тему было вложено больше 3 миллиардов долларов. Google уже давно объявил нейросети стратегическим направлением, активно строит их аппаратную и программную поддержку. NVIDIA, почувствовав, что трон зашатался, вкладывает фантастические усилия в библиотеки ускорения нейросетей и новое железо. Intel в 2016 году потратил 0,8 миллиарда на покупку двух компаний, занимающихся аппаратным ускорением нейросетей. И это при том, что основные покупки еще не начались, а количество игроков перевалило за полсотни и быстро растет.


TPU, VPU, IPU, DPU, NPU, RPU, NNP — что все это означает и кто победит? Попробуем разобраться. Кому интересно — велкам под кат!
Читать дальше →

Нейронные сети (инференс MNIST) на «3-центовом» микроконтроллере

Reading time5 min
Reach and readers7.1K

Вдохновившись на удивление высокой производительностью нейронных сетей и обучением с учётом квантования на микроконтроллере CH32V003, я захотел выяснить, как далеко эту идею можно развить. Насколько можно сжать нейронную сеть с сохранением высокой точности тестов на датасете MNIST? Когда речь идёт о крайне дешёвых микроконтроллерах, сложно предположить что-то более подходящее, чем 8-битные Padauk.

Эти устройства оптимизированы под простейшие и самые дешёвые приложения из доступных. Самая мелкая модель серии, PMS150C, оснащена однократно программируемой памятью в 1024 13-битных слова и 64 байтами RAM — на порядок меньше, чем в CH32V003. Кроме того, эта модель в противоположность намного более мощному набору инструкций RISC-V содержит коммерческий регистр-аккумулятор на основе 8-битной архитектуры.

Возможно ли реализовать механизм инференса MNIST, способный классифицировать рукописные числа, также и на PMS150C?
Читать дальше →

Git: Больше чем commit и push. 5 команд, которые спасут вашу репутацию (и нервные клетки)

Level of difficultyEasy
Reading time6 min
Reach and readers37K

git commit -m "WIP" — три слова, после которых начинается настоящий ад.

Доброго времени суток. Такая технология как Git в представлении не нуждается. Все знают add, commit, push — это как азбука. Но что делать, когда что‑то пошло не так? Ошибочный коммит прокатился по ветке? Надо срочно переключиться, но незавершенные правки мешают? Нужно перенести только одно исправление из другой ветки?

Знакомая ситауция? Тогда давайте разберем 5 команд, которые выходят за рамки базового workflow и реально спасают репутацию (и ваши нервные клетки).

Спасти нервные клетки

Как превратить ноутбук в полноценное рабочее место не хуже стационарного ПК

Level of difficultyEasy
Reading time11 min
Reach and readers36K

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

Читать далее

Планировщик Go — самый подробный гайд простым языком

Level of difficultyMedium
Reading time27 min
Reach and readers40K

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

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

Приступить к проектированию

Как мы улучшили режим ночной съемки в планшетах KVADRA_T

Level of difficultyMedium
Reading time7 min
Reach and readers1.5K

Привет, Хабр! На связи Полина Лукичева, инженер команды AI ML Kit в компании YADRO. В первой статье я рассказала о проблемах режима ночной съемки и методах их решения. Сегодня перехожу к практике — проведу предметное сравнение алгоритмов, выберу наиболее подходящие и покажу, как они работают в реальных условиях на планшетах KVADRA_T.

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

Читать далее

Тамагочи на RISC-V и не только: смотрим студенческие проекты по программированию микроконтроллеров

Level of difficultyMedium
Reading time6 min
Reach and readers4.7K

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

Читать далее

Как собеседовать не идеальных

Level of difficultyMedium
Reading time7 min
Reach and readers17K

Собеседования — как очередь в муниципальной больнице: все там были, но мало кто потом вспоминает с теплом.

Кто-то берет «100 каверзных вопросов для собеседования» из интернета, кто-то топит за знание фреймворков, кто-то спрашивает разницу между интерфейсом и абстрактным классом. А потом начинается:

А что начинается?
1
23 ...

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity