• Ядра процессора или что такое SMP и с чем его едят

      Введение


      Доброго времени суток, сегодня хотелось бы затронуть достаточно простую тему, которая почти никем из обычных программистов неизвестна, но каждый из вас, скорее всего, ей пользовался.
      Речь пойдет о симметричной мультипроцессорности(в народе — SMP) — архитектура, которая встречается во всех многозадачных операционных системах, и конечно же, является неотъемлемой их частью. Каждый знает, что чем больше ядер у процессора — тем мощнее будет процессор, да, это так, но как ОС может использовать несколько ядер одновременно? Некоторые программисты не спускаются до такого уровня абстракции — им это попросту не надо, но думаю, всем будет интересно то, как же SMP работает.
      Читать дальше →
    • Применение Arm Mbed OS. Тонкая настройка

        LNDC1


        После того как с помощью Arm Mbed OS удалось помигать светодиодом, настало время протестировать и настроить другие важные сервисы. Далее рассказывается:


        • Технология конфигурирование Mbed
        • Почему сложно перейти на C++ в обычных RTOS
        • Как экономить память в RTOS
        • Как организуются прерывания в Mbed OS
        • Чем удобно отлаживать Mbed OS
        • Как избавиться от лишнего слоя абстракции SDK
        Читать дальше →
      • Скрывать не скрывая. Еще раз о LSB-стеганографии, хи-квадрате и… сингулярности?

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

        Как говорится, если хочешь в чем-то разобраться, то напиши об этом статью на Хабр! (Осторожно, много текста и картинок)


        Читать дальше →
      • Загадка пробоины в «Союзе»

          Утро 30 августа выдалось не очень добрым для экипажа МКС. Была обнаружена утечка воздуха со станции, поэтому космонавтам и астронавтам пришлось искать место утечки и устранять ее. Отверстие нашлось в бытовом отсеке «Союза МС-09», и, несмотря на то, что его уже успешно заделали, в интернете не утихают споры о его возможной причине. Действительно ли это обычный удар микрометеорита или космического мусора?


          «Союз МС-09» (слева), пристыкованный к МКС, фото NASA
          Читать дальше →
        • ESP8266 + FLProg – Создание web интерфейса настройки

          • Tutorial
          Источник

          Предыдущий пост, посвящённый связке FLProg и ESP8266, был обзорным, а теперь рассмотрим работу в программе с этим контроллером более подробно.
          Осторожно, очень много картинок!
        • Когда NASA откажется от полетов на «Союзах»?



            На днях СМИ переполошила новость, что у NASA в апреле 2019 года завершается контракт на полеты астронавтов российскими кораблями «Союз» на Международную космическую станцию. Новость приняли неоднозначно. Кто-то ликовал, что наконец-то Россия отключила газ оставила Америку без доступа в космос. Кто-то пояснял, что США сами отказались, т.к. у них теперь есть собственные современные иномарки от SpaceX и Boeing, и услуги Роскосмоса уже не требуются.

            Реальность немного прозаичнее.
            Читать дальше →
          • Языки программирования для квантового компьютера


              Прототип ядра ионного квантового компьютера. Ion Quantum Technology Group, Сассекский университет


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


              К счастью, для решения этой проблемы появляются отличные проекты, привлекающие внимание широкой аудитории. Например, несколько лет назад IBM дала возможность любому подключиться к 5-кубитному компьютеру. В проекте зарегистрировались 70 000 человек.


              Однако индустрия квантовых вычислений по-прежнему остается в зачаточном состоянии. Хотя уже создано немало прототипов, они не могут сделать то, с чем не справится обычный ноутбук. Необходимое аппаратное обеспечение еще не существует, но для изучения у нас есть кое-что еще — языки квантового программирования.


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

              Читать дальше →
            • Метод Бенджамина Франклина для чтения книг по программированию

              • Translation
              Посмотрим правде в глаза, книги по программированию — отстой. Эти общие книги по распределённым системам, науке о данных и так далее — их можно читать бесконечно. Но за редким исключением у практических руководств по языку/фреймворку/СУБД/кексопечке есть нечто общее. Зверюшка на обложке, примеры вычурных приложений, они так легко забываются, так банальны, настолько… ничему не учат.

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

              class User < ApplicationRecord
                attr_accessor :remember_token
                before_save { self.email = email.downcase }
                validates :name,  presence: true, length: { maximum: 50 }
                VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
                validates :email, presence: true, length: { maximum: 255 },
                                  format: { with: VALID_EMAIL_REGEX },
                                  uniqueness: { case_sensitive: false }
                has_secure_password
                validates :password, presence: true, length: { minimum: 6 }
              
                # …далее ещё 30 строчек...
              end

              Традиционно есть два способа изучить такую страницу:

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

              В первом случае, как и в лекциях, код переходит со страницы книги на экран читателя, минуя мозг. Второй вариант — это как пытаться собирать автомобили, разбирая ремень безопасности и стереосистему: вы просто играетесь с маленькими кусочками. Оба варианта не подходят для обучения.
              Читать дальше →
            • Как видят мир дальтоники?

                Если уж делать алгоритм распределения внимания по изображению, то делать нужно по уму, а значит, жизненно важно становится определять «силу цвета».

                Цветовосприятие


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


                сone-response

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

                Цветовая мишень: оригинал, пост-процессинг.
                Другая цветовая мишень: оригинал, пост-процессинг.


                Но приведённые изображения показывают результат только для полного цветового зрения. Интересно, а как смотрят на мир дальтоники?

                Дальтонизм


                А дальтоники бывают разные: дальтонизм возникает в основном из-за нехватки колбочек определённого типа. В случае нехватки колбочек двух типов, цвета вообще не различаются, мир выглядит монохроматическим, как на чёрно-белой фотографии. А вот в случае дефицита колбочек одного из типов S, M или L возникает ситуация неразличимости некоторых цветов.

                Попробуем-ка промоделировать, основываясь на данных цветочувствительности колбочек, восприятие дальтоников!

                Честно признаюсь, данные модели не калиброваны. В идеале, дальтоник не должен ощущать существенной разницы между оригиналом и результатом моделирования. Но ради того, чтобы представить, как – любопытно же? :)

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

                Оригиналы:


                Читать дальше →
              • 11 библиотек (наборов компонентов) для React, о которых стоит знать в 2018-м

                • Translation
                11 библиотек (наборов компонентов) для Angular, о которых стоит знать в 2018-м
                11 библиотек (наборов компонентов) для Vue, о которых стоит знать в 2018-м
                11 библиотек (наборов компонентов) для React, о которых стоит знать в 2018-м

                Современные фреймворки для разработки веб-приложений сформировали вокруг себя сообщества, члены которых, помимо прочих дел, занимаются разработкой библиотек для этих фреймворков. Подобные библиотеки находят применение во множестве проектов. Как правило, можно даже говорить о том, что, например, на чистом React, Angular или Vue, без применения дополнительных средств, веб-приложения сегодня не разрабатывают.



                Представляем вашему вниманию перевод первого материала из серии статей, в каждой из которых рассмотрены 11 наиболее интересных библиотек для разных веб-фреймворков, на которые стоит обратить внимание в 2018-м. Сегодня поговорим о библиотеках для React.
                Читать дальше →
              • Технические подробности. Уязвимость Meltdown — CVE-2017-5754

                • Translation

                От автора


                Важно! Уязвимость на самом деле это 3 уязвимости — Meltdown, Spectre 1, Spectre 2
                Здравствуй хабр! Сегодня у нас перевод заметки про уязвимость Meltdown (CVE-2017-5754). Переведена только первая страница и основная часть заметки для понимания данной уязвимости.


                Meltdown


                Общее


                Безопасность современной компьютерной системы (прим. автора. Смартфоны, компьютеры, практически любые носимые устройства с возможностью запуска кода не от производителя) основывается на изоляции адресного пространства, для примера память ядра помечена недоступной и защищена от доступа со стороны пользователя. В этой заметке мы представляем вам Meltdown. Meltdown эксплуатирует побочный эффект исполнения-вне-очереди (out-of-order execution) в современных процессорах, чтобы прочитать данные из ядра, в том числе личную информацию и пароли. Исполнение-вне-очереди сильно влияет на производительность и включено в большинство современных процессоров. Атака не зависима от операционной системы и не эксплуатирует программные уязвимости. Meltdown ломает всю безопасность системы основанную на изоляции адресного пространства в том числе паравиртуализованного.
                Meltdown позволяет читать часть памяти других процессов и виртуальных машин. Мы покажем, что система KAISER имеет важный побочный эффект в виде в блокировке Meltdown (но является костылем). Мы настаиваем на включении KAISER незамедлительно для исключения утечки информации.

                Читать дальше →
              • Как именно работает Meltdown

                  Уже третий день у всех на слуху слова Meltdown и Spectre, свеженькие уязвимости в процессорах. К сожалению, сходу найти что либо про то, как именно работают данные уязвимости (для начала я сосредоточился на Meldown, она попроще), у меня не удалось, пришлось изучать оригинальные публикации и статьи: оригинальная статья, блок Google Project Zero, статья аж из лета 2017. Несмотря на то, что на хабре уже есть перевод введения из оригинальной публикации, хочется поделиться тем, что мне удалось прочитать и понять.

                  Читать дальше →
                • Новогодние подарки, часть первая: Meltdown

                    Да, я знаю, что это уже третий материал на GT/HH по данной проблеме.

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

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

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

                    К счастью, подвержены они ей в разной степени. К несчастью, самый серьёзный удар пришёлся на самые распространённые процессоры — Intel, причём затронул он абсолютно все выпускающиеся и практически все эксплуатируемые (единственным исключением являются старые Atom, выпущенные до 2013 года) процессоры этой компании.
                    Читать дальше →
                  • Akumuli — база данных временных рядов

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


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


                    Time-series in finance


                    “Мне не нужна TSDB, у меня уже есть Х”


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

                    Читать дальше →
                  • История 3 места Russian AI Cup 2017

                    Всем привет! В этой статье я хочу кратко изложить ключевые моменты своей стратегии в ходе прошедшего соревнования по программированию искусственного интеллекта Russian AI Cup.



                    Немного о Russian AI Cup


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

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

                    Правила можно найти здесь.
                    Читать дальше →
                  • Как писать на ассемблере в 2018 году



                      Статья посвящена языку ассемблер с учетом актуальных реалий. Представлены преимущества и отличия от ЯВУ, произведено небольшое сравнение компиляторов, скрупулёзно собрано значительное количество лучшей тематической литературы.
                      Читать дальше →
                    • Сверточная сеть на python. Часть 2. Вывод формул для обучения модели


                        В прошлой статье мы рассмотрели концептуально все слои и функции, из которых будет состоять будущая модель. Сегодня мы выведем формулы, которые будут отвечать за обучение этой модели. Слои будем разбирать в обратном порядке — начиная с функции потерь и заканчивая сверточным слоем. Если возникнут трудности с пониманием формул, рекомендую ознакомиться с подробным объяснением (на картинках) метода обратного распространения ошибки, и также вспомнить о правиле дифференцирования сложной функции.
                        Читать дальше →
                      • Правдивая история роботизации, начинающаяся с одного простого графика

                        • Translation


                        В начале этого года мне на глаза попался график, на котором отражена не только чрезвычайно важная история роботизации, но также история обсуждения самой роботизации. Заодно здесь показан прогноз развития в ближайшие годы как самой роботизации, так и ее обсуждения. Это график количества эксплуатируемых буровых вышек в Соединенных Штатах (зеленая линия) и количество рабочих, занятых в нефтяной промышленности (красная линия). Это важная часть мозаики, которую необходимо собрать воедино, пока не стало слишком поздно.
                        Читать дальше →
                      • Уязвимости в прошивках австралийских животных

                          В Австралии последние 60 тысяч лет живут племена хакеров. Только ломают они не ИТ-системы, а прошивки животных. Начнём с истории бумеранга.


                          На заливных лугах около Дарвина, Северные территории

                          Боевой бумеранг не должен возвращаться — это знает каждый абориген. Бумеранг нужен, чтобы разводить костёр трением, ломать ноги страусу, перепиливать сухожилия, стучать двумя друг об друга для музыки и делать ещё тысячу бытовых вещей. Для того, чтобы охотиться на летающих птиц, боевой бумеранг практически бесполезен – проще закидать их камнями или палками. Или бросить с 50-100 метров с помощью вумеры копьё из стебля травы с каменным наконечником, если птица особо жирная.

                          Проблема с птицами в том, что они имеют очень чёткий алгоритм реакции на угрозы. Вот кусочек псевдокода (естественно, я сейчас невероятно грубо упрощаю):

                          — Сгенерировать случайное число от 1 до 11.
                          — Если это 1-10 – смотреть вниз и искать еду до клевка.
                          — Если это 11 — осмотреться.

                          Таким образом, когда у вас на болоте сидит стая птиц в 50-60 голов, 5-6 птиц играют роль радара, обозревая небо и окрестности, а остальные в это время едят. Причём насыщаются все одновременно, без выделенных часовых – никакого ролевого распределения, просто отличное распараллеливание процессов.
                          Читать дальше →
                        • Баг в поиске писем на Mail.Ru

                          image

                          Всем привет!

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

                          Вообще всё было бы просто замечательно, если бы не одно но
                          Читать дальше →