• Окна на чистом WinAPI. Или просто о сложном

      Disclaimer

      Казалось бы, что WinAPI уходит в прошлое. Давно уже существует огромное количество кросс-платформенных фреймфорков, Windows не только на десктопах, да и сами Microsoft в свой магазин не жалуют приложения, которые используют этого монстра. Помимо этого статей о том, как создать окошки на WinAPI, не только здесь, но и по всему интернету, исчисляется тысячами по уровню от дошколят и выше. Весь этот процесс разобран уже даже не по атомам, а по субатомным частицам. Что может быть проще и понятнее? А тут я еще…

      Но не все так просто, как кажется.
      Читать дальше →
    • Трёхмерная графика с нуля. Часть 2: растеризация

      • Перевод
      image


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

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

      Тогда как это удаётся играм?

      Ответ заключается в использовании совершенно иного семейства алгоритмов, которое мы исследуем во второй части статьи. В отличие от трассировки лучей, которая получалась из простых геометрических моделей формирования изображений в человеческом глазе или в камере, сейчас мы будем начинать с другого конца — зададимся вопросом, что мы можем отрисовать на экране, и как отрисовать это как можно быстрее. В результате мы получим совершенно другие алгоритмы, которые создают примерно похожие результаты.
      Читать дальше →
      • +36
      • 15,3k
      • 2
    • Французский аэропорт встал из-за сбоя Windows 3.1, операционной системы 1992 года

        Аэропорт «Париж-Орли», который находится в четырнадцати километрах от Парижа, остановил свою работу из-за ошибки в Windows 3.1, на которой работает система оповещения о погодных условиях DECOR. Эта версия Windows была выпущена компанией Microsoft в 1992 году и среди нововведений имела игру «Сапёр» для тренировки точности попадания курсором по экрану.

        «В Париже есть только три специалиста, которые могут разобраться с проблемами в DECOR. В следующем году один из них уходит на пенсию, и мы не представляем, кто мог бы его заменить», — рассказывает Александр Фиакр, генеральный секретарь объединения авиапрофсоюзов UNSA-IESSA.

        image
        Читать дальше →
      • Пишем для UEFI BIOS в Visual Studio. Часть 2 – создаем свой первый драйвер и ускоряем отладку

        • Tutorial

        Введение


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

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


        Те, кто заинтересовался — добро пожаловать под кат.
        Читать дальше →
        • +12
        • 7,1k
        • 7
      • Пишем для UEFI BIOS в Visual Studio. Часть 1 — разворачивание среды разработки, компиляция и запуск на отладку

        Введение


        В этой статье будет описано, как быстро начать программировать для UEFI во фреймворке edk2 в среде Visual Studio, не тратя массу времени на настройку среды обычным способом, по оригинальным мануалам. Достаточно дать команду git clone ... в корневом каталоге диска, и это на самом деле все, среда будет полностью установлена и готова к работе. Требуются 64-разрядная Windows 7 и выше c Visual Studio 2008-2015. Эти два условия не обязательны, но тогда придется немного потрудиться над собиранием системы edk2-Visual Studio в единое целое, краткая памятка будет приведена.

        Цель статьи — провести начинающего за руку по первому UEFI проекту, оставаясь в привычной ему среде. Для более опытных людей, надеюсь, будет интересным поработать в VS вместо привычной командной строки, или разобрать подход и перенести его в любимый Eclipse.

        Начнем с простых вещей, вывода строки на консоль и русификации (довольно востребованная вещь, причем простая в реализации), потом будет работа с формами в HII (то, что называлось в обиходе страницами BIOS Setup), потом графика, потом Boot Manager, а потом видно будет (с).


        Желающие — прошу пожаловать под кат.
        Читать дальше →
      • «Магическая константа» 0x5f3759df

        • Перевод
        В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

        Вот полная реализация этого алгоритма:

        float FastInvSqrt(float x) {
          float xhalf = 0.5f * x;
          int i = *(int*)&x;  // представим биты float в виде целого числа
          i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
          x = *(float*)&i;
          x = x*(1.5f-(xhalf*x*x));
          return x;
        }

        Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

        image

        Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
        В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

        Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
        Читать дальше →
      • Памятка пользователям ssh

          abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

          Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

          Оглавление:
          • управление ключами
          • копирование файлов через ssh
          • Проброс потоков ввода/вывода
          • Монтирование удалённой FS через ssh
          • Удалённое исполнение кода
          • Алиасы и опции для подключений в .ssh/config
          • Опции по-умолчанию
          • Проброс X-сервера
          • ssh в качестве socks-proxy
          • Проброс портов — прямой и обратный
          • Реверс-сокс-прокси
          • туннелирование L2/L3 трафика
          • Проброс агента авторизации
          • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
          Читать дальше →
        • Что за болезнь: рак

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

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

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


            Автор иллюстраций Майкл Ковальски
            Читать дальше →
          • Пора завязывать использовать пробелы вместо табуляции в коде


              Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
              Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

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

              Читать дальше →
            • Алгоритм визуализации сложных данных

              • Tutorial
              За три года существования Лаборатория данных выпустила около тридцати интерактивных визуализаций, в формате заказных, собственных проектов и бесплатных советов. Мы в лаборатории визуализируем финансовые и научные данные, данные городской транспортной сети, результаты забегов, эффективность маркетинговых кампаний и многое другое. Весной мы получили бронзовую медаль на престижной премии Malofiej 24 за визуализацию результатов Московского марафона.

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

              Я хочу поделиться с читателями Хабра результатами своих исследований.


              Читать дальше →
              • +70
              • 18,4k
              • 3