Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

Диагностика виртуальной сети в Linux. BPFTrace и skbtrace в опенсорсе

Время на прочтение9 мин
Количество просмотров5.7K
Привет! Меня зовут Сергей Кляус, и я как разработчик виртуальной сети сопровождаю создателей приложений, размещённых в Yandex.Cloud. При этом диагностические возможности самого облака ограничены: мы не видим метрики пользовательских виртуальных машин, например количество TCP retransmissions, а записывать и анализировать огромные дампы всего сетевого трафика с помощью tcpdump дорого и трудно из-за ограничений безопасности.
К счастью, динамическая трассировка позволяет получить лучшее от двух миров: исполнять произвольный код в момент увеличения метрики, а в самом коде печатать тело пакета. Например, недавно мы диагностировали проблемы с TCP-соединениями у одного из наших managed-сервисов, и оказалось, что теряются на самом деле UDP-пакеты. Гипотеза требовала уточнения, хотя корреляция между ростом метрики и сбоем была поначалу очевидна. В современном Linux динамическая трассировка реализована через eBPF и утилиту BPFTrace, но постепенно мы накопили набор типовых сценариев их использования и сделали обёртку над BPFTrace. Она называется skbtrace и доступна на GitHub. Про неё я и расскажу под катом.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии0

Сам себе мобильный интернет. Запускаем базовую станцию стандарта 4G LTE

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров87K
Приветствую всех!

Я уже не раз рассказывал про то, как в домашних условиях поднять сотовые сети разных стандартов. Но всё же все они были уже весьма древними. Самое время замахнуться на кое-что поинтереснее — LTE.



Итак, в сегодняшней статье поговорим о том, что детально в нашем сообществе не описывал практически никто — о том, как запустить базовую станцию самого нового из поддерживаемых большинством телефонов этой страны стандартов. Поговорим об особенностях её работы и о трудностях, с которыми, возможно, придётся столкнуться при запуске. Традиционно будет много интересного.
Читать дальше →
Всего голосов 313: ↑312 и ↓1+368
Комментарии156

Как работает FPGA?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров30K

Введение


Давайте начнём с самого начала. Что такое FPGA? FPGA расшифровывается как Field Programmable Gate Array (программируемая пользователем вентильная матрица).

FPGA относятся к классу устройств программируемой логики, иногда называемых программируемым оборудованием. По сути, сама по себе FPGA ничего не делает, но может быть сконфигурирована так, чтобы превратиться практически в любую нужную цифровую цепь. Магия заключается в том, что физически при этом ничего не меняется. Достаточно просто загрузить конфигурацию в FPGA, и она начнёт вести себя так, как нужная вам цепь. Не нужны ни пайка, ни перемычки, ни возня с другими соединениями. FPGA можно переконфигурировать так, чтобы она вела себя, как другая цепь, и делать это множество раз. Конфигурация хранится в ОЗУ, то есть, по сути, устройство можно переконфигурировать бесконечно.

На плате Alchitry Cu выделена FPGA Lattice iCE40 HX На плате Alchitry Au выделена FPGA Xilinx Artix 7
Хотя мы говорили об использовании FPGA для создания цифровых цепей, обычно для разработки их архитектуры не рисуют схемы. Если бы нам пришлось чертить схему, то размер и сложность цепей, которые могут содержать FPGA, стали бы очень громоздкими. Вместо этого мы можем описать поведение нужной нам цепи, а инструменты используют это описание для создания цепи, соответствующей этому поведению.

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

Если создание оборудования при помощи текста кажется вам магией, не волнуйтесь. Концепция его работы на самом деле довольно проста, и в этом туториале мы подробно о ней расскажем.
Читать дальше →
Всего голосов 53: ↑48 и ↓5+59
Комментарии13

Вредные заблуждения о нанометрах. Или почему наличие в России доступа только к 90нм – это катастрофа

Время на прочтение10 мин
Количество просмотров82K

Уходящий 2022-ой год, стал, безусловно, межевым для отечественной микроэлектроники. Введенные санкции лишили российские дизайн-центры доступа к заводам по производству разрабатываемой ими продукции, в первую очередь, к мощностям флагмана отрасли в лице тайваньской компании TSMC. Фактически, это означает, что на данный момент в России становится невозможным производить сколь либо современную кремниевую микроэлектронику, особенно в части высокопроизводительных решений. Краткий профессиональный разбор ситуации с обзором наших текущих возможностей ещё в марте этого года сделал уважаемый @CorneliusAgrippa. Если резюмировать – на данный момент Россия имеет возможность промышленно производить чипы по технологии 180 нм на заводе Микрон, с перспективой наладить 90 нм в ближайшее время (правительство поставило задачу сделать это до конца 2022-го года). Создание на имеющейся на Микроне линии промышленной технологии на 65 нм и ниже фактически невозможно. Причина в том, что завод Микрон работает на пластинах диаметра 200 мм, а технология производства на 65 нм сопровождалась параллельным переходом на пластины диаметром 300 мм. Поэтому, для такого перехода требуется, по сути, постройка нового завода, хотя имеющееся на Микроне литографическое оборудование потенциально позволяет создание 65 нм техпроцесса.

Читать далее
Всего голосов 239: ↑226 и ↓13+280
Комментарии758

Безопасность встраиваемых систем Linux

Время на прочтение24 мин
Количество просмотров16K
Embedded Linux security

Весь наш мир построен на противоположностях. Если вы создаете свое устройство и продаете его, то всегда найдется тот, кто захочет его взломать. Цели у злоумышленника буду самыми разными, от попыток сделать клон устройства (привет Китаю) до шантажа конечных потребителей, что весьма ухудшит вашу репутацию с точки зрения изготовления надежных устройств. И чем популярнее система на основе которой построено устройство, тем интереснее она злоумышленнику. В последнее время активно развивается сегмент одноплатных компьютеров, таких как Raspberry Pi, и множества других. Linux системы по распространенности использования во встраиваемых систем, вышли на первые места. Большая функциональность устройств, например наличие разных беспроводных интерфейсов коммуникаций, в совокупности с большими возможностями ОС Linux, привела к серьезной необходимости организации защиты устройства. Некоторые думают, что достаточно отключить учетную запись root и установить надежный пароль, но на самом деле это только малая часть того, что следует сделать. Какие технологии и концепции используются для снижения рисков и реализации более безопасного устройства работающего на Linux узнаете под катом.
Читать дальше →
Всего голосов 30: ↑29 и ↓1+40
Комментарии19

Как не быть программистом, раскурить eBPF за сутки и начать мониторить DNS

Время на прочтение22 мин
Количество просмотров10K

Представим: сервер может отправлять легитимные запросы, но IP, на которые он будет их слать, неизвестны. В журнале сетевого фильтра видно что запросы таки да, идут. Но не ясно - это как раз легитимные или информация уже утекает к злоумышленникам? Было бы проще если бы был известен домен на который сервер посылает данные. Увы, но PTR не в моде, а securitytrails показывает или ничего, или слишком много по этому IP.

Можно запустить tcpdump. Но кто захочет постоянно смотреть в монитор? А если сервер не один? Есть packetbeat. Это чудовище, которое выжрало процессор на всех серверах. Брр… Не хочу о нём вспоминать. Osquery - неплохой инструмент который многое знает о сетевых подключениях и ничего - о DNS-запросах. Соответствующее предложение было просто закрыто. Zeek - о нём я узнал когда начал искать как отслеживать DNS-запросы. Похоже он неплох, но меня смутило два момента: он следит не только за DNS, а значит ресурсы будут тратиться на работу результат которой мне не нужен (хотя, возможно, в настройках можно выбрать протоколы); а ещё он ничего не знает о том какой процесс послал запрос.

Неужели это всё? Я вроде бы что-то слышал про eBPF…

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии8

Алгоритмы балансировки нагрузок

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

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

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →
Всего голосов 88: ↑87 и ↓1+105
Комментарии16

Как я пытался придумать новый подход к изучению алгоритмов через интерактивные визуализации

Время на прочтение4 мин
Количество просмотров27K

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

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

Читать далее
Всего голосов 107: ↑107 и ↓0+107
Комментарии55

Прощай, Data Science

Время на прочтение9 мин
Количество просмотров45K

Это по большей мере личный пост, а не какое-то глубокое исследование. Если вам нужны какие-то выводы, то здесь вы их не найдёте. Откровенно говоря, я даже не знаю, кто его целевая аудитория (возможно «дата-саентисты, которые себя ненавидят»?).

Последние несколько лет я был дата-саентистом, но в 2022 году получил новую должность дата-инженера, и пока я ею вполне доволен.

Я по-прежнему работаю вместе с «дата-саентистами» и немного продолжаю заниматься этой сферой, но вся моя работа по «data science» заключается в руководстве и консультировании по чужой работе. Я в большей степени занимаюсь реализацией data science (MLOps) и дата-инжинирингом.

Основная причина разочарования в data science заключалась в том, что работа казалась несущественной, во многих смыслах этого слова «неважной»:

  • Работа — это непрекращающийся поток разработки, продукта и офисной политики, поэтому часто так бывает, что работа хороша настолько, насколько хорошо самое слабое звено в цепи.
  • Никто не знал, в чём заключается разница между плохой и хорошей работой в data science, да никого это и не волновало. Это значит, что вы можете быть абсолютным неудачником или гением в ней, но в любом случае получите примерно одинаковое признание.
  • Работа часто приносила очень малую пользу бизнесу (часто компенсируя некомпетентность выше по цепочке управления).
  • Когда польза от работы превышала затраты на оплату труда, часто это не давало внутренней отдачи (например, настройка параметра, чтобы бизнес зарабатывал больше денег).
Читать дальше →
Всего голосов 47: ↑45 и ↓2+60
Комментарии45

Обзор топ-5 полезных утилит для Docker

Время на прочтение5 мин
Количество просмотров33K

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

В статье мы рассмотрим топ-5 полезных утилит, которые упростят работу с Docker.

Читать далее
Всего голосов 20: ↑17 и ↓3+17
Комментарии11

Делаем физическую лабораторию из смартфона своими руками

Время на прочтение7 мин
Количество просмотров12K

Всем привет! Продолжаем наш курс Galaxy Upcycling - Новая жизнь старого смартфона, где обсуждаем, как можно повторно использовать устаревший смартфон, иногда - в неожиданном качестве, как физическую лабораторию. Этому, например, посвящен небольшой курс “Лаборатория в кармане” педагога Анатолия Шперха. В самом деле, современный смартфон оснащен большим количеством сенсоров, способных измерять параметры окружающей среды.

Я рассмотрю сегодня три урока из приложения для проведения учебных физических экспериментов PhyPhox. Эти уроки относятся к разделу «механика» и задействуют разные сенсоры смартфона:

1. Скорость лифта (барометр и акселерометр)

2. Центрифуга (гироскоп и акселерометр)

3. Свободное падение (микрофон)

Читать далее
Всего голосов 36: ↑36 и ↓0+36
Комментарии12

Матрица уровней дата инженеров Amazon

Время на прочтение6 мин
Количество просмотров10K

Матрица показывает, как меняются профессиональные навыки специалистов от уровня к уровню. Сюда не включены Принципы Лидерства Amazon (https://www.amazon.jobs/en/principles), поскольку они едины для всех и не зависят от уровня сотрудника.

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

С чем работают дата инженеры?

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии3

Как мы внедрили свою модель хранения данных — highly Normalized hybrid Model. Доклад Яндекса

Время на прочтение27 мин
Количество просмотров30K
Общепринятый и проверенный временем подход к построению Data Warehouse (DWH) — это схема «Звезда» или «Снежинка». Такой подход каноничен, фундаментален, вотрфоллен и совсем не отвечает той гибкости, к которой призывает Agile. Чтобы сделать структуру DWH гибкой, существуют современные подходы к проектированию: Data Vault и Anchor modeling — похожие и разные одновременно. Задавшись вопросом, какую из двух методологий выбрать, мы в Яндекс Go пришли к неожиданному ответу: выбирать надо не между подходами, а лучшее из двух подходов.

Темы доклада, который вместе со мной прочитал Николай Гребенщиков:
— DV и AM: в чем разница и где точки соприкосновения
— Гибридный подход к построению хранилища
— Сильные и слабые стороны этого подхода
— Примеры кода
— Дальнейший вектор развития hNhM

— Меня зовут Евгений Ермаков, я руководитель Data Warehouse в Яндекс Go.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+25
Комментарии11

3 пакета Python для генерации синтетических данных

Время на прочтение6 мин
Количество просмотров11K

Нет данных? Сгенерируй!

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

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Команда SED в Linux/Unix с примерами

Время на прочтение7 мин
Количество просмотров174K

Компиляция из двух смежных статей на тему использования команды sed для редактирования текстовых файлов, включая различные варианты поиска и замены шаблонов, а также всевозможные операции со строками. Идею к публикации этого гайда подал участник nronnie в комментарии к предыдущей статье, посвящённой работе с Bash.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+61
Комментарии9

Как отлаживать bash-script-ы по шагам или, возможно, самая короткая статья о программировании/отладке на Хабре

Время на прочтение1 мин
Количество просмотров42K

Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.

Читать далее
Всего голосов 158: ↑157 и ↓1+188
Комментарии37

Пишем «Hello, world!» для Zepp OS и часов Amazfit GTS 3

Время на прочтение4 мин
Количество просмотров31K


Совсем недавно Amazfit (партнёр Xiaomi) представила новое поколение умных часов, в линейку которого вошли модели GTR 3 Pro, GTR 3 и GTS 3. Эти часы официально продаются и теперь можно без проблем купить. Я бы обошёл новинку стороной, ведь есть модели и подешевле с практически теми же возможностями, например Bip S. И всё же главной изюминкой новых часов можно назвать новую операционную систему Zepp OS.
Для меня самой интересной особенностью новой ОС стала возможность запускать на часах приложения на JavaScript, чем мы сегодня и займёмся и напишем нашу самую первую программу.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии41

Как мы построили корпоративную шину данных на Kafka, которая обрабатывает до 3 млн сообщений в секунду

Время на прочтение10 мин
Количество просмотров28K

Привет! Меня зовут Иван Гаас, я руковожу автоматизацией процессов разработки в Почтатехе — компании, создающей цифровые продукты для Почты России.

Среднее количество сообщений, которые мы обрабатываем в Почте — от 500 тысяч до миллиона в секунду. В пики, когда наша big data прогоняет свои 25 петабайт данных — до 3 миллионов. При этом кластер Kafka состоит всего из 12 серверов в каждом из 3 дата-центров и справляется с этим.

C 2016 года мы в три раза увеличили количество новых цифровых сервисов. Корпоративная шина на Kafka помогла быстро масштабироваться: количество интеграций за последнее время упало с 1000 до 300 и теперь растёт незначительно. Если раньше интеграция сервиса растягивалась на месяцы, то теперь достаточно нескольких дней.

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

Читать дальше
Всего голосов 30: ↑29 и ↓1+35
Комментарии14

Как избежать 10 частых ошибок в настройке NGINX

Время на прочтение17 мин
Количество просмотров56K


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


  1. Недостаточное количество файловых дескрипторов;
  2. Директива error_log off;
  3. Отсутствие keepalive-соединения с вышестоящими серверами;
  4. Упущение механизмов наследования директив;
  5. Директива proxy_buffering;
  6. Неправильное использование директивы if;
  7. Чрезмерные проверки работоспособности;
  8. Незащищенный доступ к метрикам;
  9. Использование ip_hash, когда весь трафик поступает из одного и того же блока /24 CIDR;
  10. Игнорирование преимуществ вышестоящих групп.
Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Комментарии3

Cron — лучшие практики

Время на прочтение9 мин
Количество просмотров64K

Планировщик задач cron(8) существует с 7 версии Unix, а его синтаксис crontab(5) знаком даже тем, кто нечасто сталкивается с системным администрированием Unix. Это стандартизированный, довольно гибкий, простой в настройке и надёжно работающий планировщик, которому пользователи и системные пакеты доверяют управление важными задачами. Материалом о лучших практиках работы с cron делимся к старту курса по Fullstack-разработке на Python.

Читать далее
Всего голосов 38: ↑35 и ↓3+35
Комментарии45
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность