Search
Write a publication
Pull to refresh
0
@DFoozread⁠-⁠only

User

Send message

Архитектура сетевого балансировщика нагрузки в Яндекс.Облаке

Reading time10 min
Views26K

Привет, я Сергей Еланцев, разрабатываю сетевой балансировщик нагрузки в Яндекс.Облаке. Раньше я руководил разработкой L7-балансировщика портала Яндекса — коллеги шутят, что чем бы я ни занимался, получается балансировщик. Я расскажу читателям Хабра, как нужно управлять нагрузкой в облачной платформе, каким мы видим идеальный инструмент достижения этой цели и как движемся к построению этого инструмента.
Читать дальше →

Разрабатываем педальную прошивку для обучения игре на балалайке

Reading time10 min
Views7K
Я очень люблю видеоуроки. Почему-то информацию с текста лично я воспринимаю весьма и весьма плохо. А есть вещи, в которых информации на бумаге не так много. Возьмём, к примеру, уроки игры на балалайке: на YouTube есть замечательные разборы, как играть ту или иную мелодию (кому интересно, ищем по имени «Сергей Воронцов»), но повторить и заучить последовательность с потокового видео сложно. Надо или записывать на бумагу (судя по комментариям под уроками, некоторые так и делают), или докупать дополнительные материалы (но я не жадный, а домовитый).



В общем, в моём балалаечном случае, да и при многих других, надо идти так: посмотрел фрагмент, поставил на паузу, повторил несколько раз за автором, продолжил просмотр. Если что-то непонятно — отмотал назад, посмотрел повнимательнее. Но как это всё мотать, если руки заняты? Тем более, в моём случае они заняты пусть не огромным баяном, но всё-таки какой-никакой, а балалайкой. Значит, работать надо при помощи ног.
Читать дальше →

Стажёр Вася и его истории об идемпотентности API

Reading time11 min
Views262K

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


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →

Пишем модуль безопасности Linux

Reading time5 min
Views17K
Linux Security Modules (LSM) — фреймворк, добавляющий в Linux поддержку различных моделей безопасности. LSM является частью ядра начиная с Linux версии 2.6. На данный момент в официальном ядре «обитают» модули безопасности SELinux, AppArmor, Tomoyo и Smack.

Работают модули параллельно с «родной» моделью безопасности Linux — избирательным управлением доступом (Discretionary Access Control, DAC). Проверки LSM вызываются на действия, разрешенные DAC.

Применять механизм LSM можно по-разному. В большинстве случаев это добавление мандатного управления доступом (как, например, в случае с SELinux). Кроме того, можно придумать собственную модель безопасности, реализовать ее в виде модуля и легко внедрить, используя фреймворк. Рассмотрим для примера реализацию модуля, который будет давать права на действия в системе при наличии особого USB-устройства.

Поглядим на схему и попытаемся разобраться, как работает хук LSM (на примере системного вызова open).


Читать дальше →

В чём уникальность BeOS и HaikuOS

Reading time9 min
Views23K
Первое, на что следует обратить внимание в бета-версии Haiku — это работа с пакетами.

Когда мы говорим просто «пакеты», то подразумеваем только запуск пакетного менеджера на GNU/Linux, и т.д., но Haiku умеет гораздо больше.

Как я уже упоминал в обзоре Haiku Beta, это первый официальный релиз функции управления пакетами. Если сформулировать вкратце, то представьте PackageFS как нечто похожее (но не такое же) на старую систему модулей Slax 6, но со всеми обычными инструментами для «пакетов».

Систему управления пакетами можно описать в пяти кратких пунктах:

  • универсальные инструменты командной строки (как и следовало ожидать);
  • HaikuDepot;
  • средство обновления программ;
  • мониторинг состояния пакетов и/или системы;
  • PackageFS (где все пакеты плавно монтируются и подключаются при загрузке), с побочным эффектом — аккуратным слоем безопасности.
Читать дальше →

Вышел Rust 2018… но что это такое?

Reading time11 min
Views21K
Статья написана Лин Кларк в сотрудничестве с командой разработчиков Rust («мы» в тексте). Можете прочитать также сообщение в официальном блоге Rust.

6 декабря 2018 года вышла первая версия Rust 2018. В этом релизе мы сосредоточились на производительности, чтобы разработчики Rust стали работать максимально эффективно.


Временнáя шкала показывает переход функций из бета-версии в Rust 2018 и Rust 2015. Она окружена значками для инструментов и четырёх областей: WebAssembly, embedded, networking и CLI. Красный круг — эффективность разработчика — окружает всё, кроме Rust 2015

Но вообще непросто объяснить, что такое Rust 2018.

Некоторые представляют его новой версией языка… примерно так и есть, но не совсем. Я говорю «не совсем», потому что здесь «новая версия» означает не то, что новые версии других языков.
Читать дальше →

Chisel — (не совсем) новый подход к разработке цифровой логики

Reading time14 min
Views9.7K


С развитием микроэлектроники, rtl дизайны становились все больше и больше. Реюзабилити кода на verilog доставляет массу неудобств, даже с использованием generate, макросов и фишек system verilog. Chisel же, дает возможность применить всю мощь объектного и функционального программирования к разработке rtl, что является достаточно долгожданным шагом, который может наполнить свежим воздухом легкие разработчиков ASIC и FPGA.


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

Читать дальше →

Механизмы контейнеризации: cgroups

Reading time11 min
Views127K
механизмы контейнеризации

Продолжаем цикл статей о механизмах контейнеризации. В прошлый раз мы говорили об изоляции процессов с помощью механизма «пространств имён» (namespaces). Но для контейнеризации одной лишь изоляции ресурсов недостаточно. Если мы запускаем какое-либо приложение в изолированном окружении, мы должны быть уверены в том, что этому приложению выделено достаточно ресурсов и что оно не будет потреблять лишние ресурсы, нарушая тем самым работу остальной системы. Для решения этой задачи в ядре Linux имеется специальный механизм — cgroups (сокращение от control groups, контрольные группы). О нём мы расскажем в сегодняшней статье.
Читать дальше →

Бэкдоры в микрокоде ассемблерных инструкций процессоров x86

Reading time6 min
Views69K

Софту мы не доверяем уже давно, и поэтому осуществляем его аудит, проводим обратную инженерию, прогоняем в пошаговом режиме, запускаем в песочнице. Что же насчёт процессора, на котором выполняется наш софт? – Мы слепо и беззаветно доверяем этому маленькому кусочку кремния. Однако современное железо имеет те же самые проблемы, что и софт: секретную недокументированную функциональность, ошибки, уязвимости, малварь, трояны, руткиты, бэкдоры.



ISA (Instruction Set Architecture) x86 – одна из самых долгих непрерывно изменяющихся «архитектур набора команд» в истории. Начиная с дизайна 8086, разработанного в 1976 году, ISA претерпевает постоянные изменения и обновления; сохраняя при этом обратную совместимость и поддержку исходной спецификации. За 40 лет своего взросления, архитектура ISA обросла и продолжает обрастать множеством новых режимов и наборов инструкций, каждый из которых добавляет к предшествующему дизайну, и без того перегруженному, новый слой. Из-за политики полной обратной совместимости, в современных процессорах x86 присутствуют даже те инструкции и режимы, которые на сегодняшний день уже преданы полному забвению. В результате мы имеем архитектуру процессора, которая представляет собой сложно переплетающийся лабиринт новых и антикварных технологий. Такая чрезвычайно сложная среда – порождает множество проблем с кибербезопасностью процессора. Поэтому процессоры x86 не могут претендовать на роль доверенного корня критической киберинфраструктуры.

Читать дальше →

Supervisord и forever больше не нужны. Systemd

Reading time2 min
Views52K
В статье речь будет идти о systemd, который вошел в Debian 8 jessie. Я пишу о Debian, потому что пользуюсь именно им. Пишу о systemd не потому что его фанат, но некоторые вещи меня действительно радуют.

Так почему же больше не нужны supervisord и forever?
Читать дальше →

Зачем Apple придумали и ввели в iOS новый шрифт San Francisco?

Reading time3 min
Views164K


Apple использовала набор шрифтов Helvetica в качестве системного шрифта для iOS с момента выпуска первого iPhone. Они также заменили им Lucida Grande в Mac OS X, начиная с версии 10.10 Yosemite. Так почему же теперь Apple решила избавиться от самого любимого в мире шрифта?
Читать дальше →

Sans Forgetica: шрифт, который позволяет немного лучше запоминать прочитанное

Reading time3 min
Views63K

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

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

Курс MIT «Безопасность компьютерных систем». Лекция 10: «Символьное выполнение», часть 1

Reading time11 min
Views11K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3

Готовимся к С++20. Coroutines TS на реальном примере

Reading time9 min
Views34K
В C++20 вот-вот появится возможность работать с корутинами из коробки. Нам в Яндекс.Такси эта тема близка и интересна (под собственные нужды мы разрабатываем асинхронный фреймворк). Поэтому сегодня мы на реальном примере покажем читателям Хабра, как можно работать с C++ stackless корутинами.

В качестве примера возьмём что-то простое: без работы с асинхронными сетевыми интерфейсами, асинхронными таймерами, состоящее из одной функции. Например, попробуем осознать и переписать вот такую «лапшу» из колбеков:


void FuncToDealWith() {
    InCurrentThread();

    writerQueue.PushTask([=]() {
        InWriterThread1();

        const auto finally = [=]() {
            InWriterThread2();
            ShutdownAll();
        };

        if (NeedNetwork()) {
            networkQueue.PushTask([=](){
                auto v = InNetworkThread();
                if (v) {
                    UIQueue.PushTask([=](){
                        InUIThread();
                        writerQueue.PushTask(finally);
                    });
                } else {
                    writerQueue.PushTask(finally);
                }
            });
        } else {
            finally();
        }
    });
}

Читать дальше →

Обнаружение аномалий в данных сетевого мониторинга методами статистики

Reading time9 min
Views32K
Когда наблюдаемых метрик становится слишком много, отслеживание всех графиков самостоятельно становится невозможным. Обычно в этом случае для менее значимых метрик используют проверки на достижение критичных значений. Но даже если значения подобраны хорошо, часть проблем остается незамеченной. Какие это проблемы и как их обнаруживать — под катом.


Читать дальше →

Разрабатываем процессорный модуль NIOS II для IDA Pro

Reading time12 min
Views8.4K
image

Скриншот интерфейса дизассемблера IDA Pro

IDA Pro — знаменитый дизассемблер, который уже много лет используют исследователи информационной безопасности во всем мире. Мы в Positive Technologies также применяем этот инструмент. Более того, нам удалось разработать собственный процессорный модуль дизассемблера для микропроцессорной архитектуры NIOS II, который повышает скорость и удобство анализа кода.

Сегодня я расскажу об истории этого проекта и покажу, что получилось в итоге.
Читать дальше →

«Читальный зал»: статьи о радио, стриминге и подкастах

Reading time4 min
Views6K
Вчера мы сделали для вас подборку из 12 каналов на YouTube про устройство акустики. Сегодня вас ждут пятнадцать материалов из нашего «Мира Hi-Fi», в которых мы говорим, о радиоспектаклях советской эпохи, настоящем и будущем стриминговых сервисов и трендах рынка подкастов.

Читать дальше →

Конференция DEFCON 22. Эдриан Креншоу. На чём могут «спалиться» пользователи TOR

Reading time13 min
Views32K
Здравствуйте, меня зовут Эдриан Крэншоу. Я сооснователь компании Derbycon, основатель Irongeek.com, интересуюсь информационной безопасностью и работаю старшим консультантом по безопасности в компании Trusted Sec. Я расскажу вам, как люди размещают свои подлинные документы в Darknet и как из-за этого их становится легко поймать.

Это всем известные истории о людях, которые использовали TOR или другие анонимайзеры и попались в основном из-за пренебрежения правилами OPSEC.

История, которой я присвоил номер 0 – это бомбы, будто бы заложенные в Гарвардском университете в прошлом году. Один парень отправил электронное письмо в разные отделы руководства университета, в том числе службе безопасности и студенческой газете, с указанием мест, в которых находились бомбы: научный центр, Sever холл, Emerson холл, Thayler холл. Он писал, чтобы они действовали быстро, потому что бомбы скоро взорвутся. Сообщение об этом было опубликовано в СМИ 16 декабря 2013 года.

Итак, кем был этот парень? Он использовал «партизанский» почтовый сервис для разовой отправки электронных писем Guerilla Mail и отправил своё письмо через TOR.



Но он не учёл то, что Guerilla Mail помещает оригинальный IP-адрес отправителя в заголовок письма. Например, если вы отправляете письмо из дома, то на нём будет указан IP-адрес вашего домашнего компьютера. На слайде показан пример, где я использовал свой почтовый ящик на irongeek.com, чтобы показать, как это работает. Этот парень подумал об анонимности и использовал TOR, поэтому в его письме был указан IP-адрес сервера TOR. Однако он не учёл, что все узлы TOR, за исключением «мостов», известны и находятся в открытом доступе – они приведены, например, на этом сайте torstatus.blutmagie.de, и легко можно определить, относится ли конкретный компьютер к сети TOR или нет. Если вы не используете «мост», очень легко отследить, кто и откуда присоединился к локальной сети Гарварда и использовал TOR в то время, когда было отправлено письмо с угрозами.

Губозакаточная машинка для этикеток — разворачиваем цилиндрическое искажение программно

Reading time3 min
Views20K
В данной статье описывается шеститочечный метод разворачивания этикеток. Этот метод — обратная задача рендерингу, т.е. по ключевым точкам определяется геометрия бутылки, и высчитывает исходная плоскость изображения. Все манипуляции делаются при помощи библиотеки OpenCV. Добро пожаловать под кат!


Читать дальше →

Pitch-tracking, или определение частоты основного тона в речи, на примерах алгоритмов Praat, YAAPT и YIN

Reading time10 min
Views25K
image

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

Частота основного тона имеет непосредственное отношение к тому, что мы называем интонацией. А интонация, например, связана с эмоционально-экспрессивными характеристиками голоса.

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

Information

Rating
Does not participate
Registered
Activity