• Весь веб на 60+ FPS: как новый рендерер в Firefox избавился от рывков и подтормаживаний

    • Перевод
    До релиза Firefox Quantum остаётся всё меньше времени. Он принесёт множество улучшений в производительности, в том числе сверхбыстрый движок CSS, который мы позаимствовали у Servo.

    Но есть ещё одна большая часть технологии Servo, которая пока не вошла в состав Firefox Quantum, но скоро войдёт. Это WebRender, часть проекта Quantum Render.



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

    При разработке WebRender мы поставили задачу, чтобы все приложения работали на 60 кадрах в секунду (FPS) или лучше, независимо от размера дисплея или от размера анимации. И это сработало. Страницы, которые пыхтят на 15 FPS в Chrome или нынешнем Firefox, летают на 60 FPS при запуске WebRender.

    Как WebRender делает это? Он фундаментальным образом меняет принцип работы движка рендеринга, делая его более похожим на движок 3D-игры.
    Читать дальше →
  • Планетарный ландшафт

    • Tutorial
    Трудно поспорить, что ландшафт — неотъемлемая часть большинства компьютерных игр на открытых пространствах. Традиционный метод реализации изменения рельефа окружающей игрока поверхности следующий — берем сетку (Mesh), представляющую из себя плоскость и для каждого примитива в этой сетке производим смещение по нормали к этой плоскости на значение, конкретное для данного примитива. Говоря простыми словами, у нас есть одноканальная текстура размером 256 на 256 пикселей и сетка плоскости. Для каждого примитива по его координатам на плоскости берем значение из текстуры. Теперь просто смещаем по нормали к плоскости координаты примитива на полученное значение(рис.1)


    Рис.1 карта высот + плоскость = ландшафт

    Почему это работает? Если представить, что игрок находится на поверхности сферы, и радиус этой сферы чрезвычайно велик по отношению к размеру игрока, то искривлением поверхности можно пренебречь и использовать плоскость. Но что если не пренебрегать тем фактом, что мы находимся на сфере? Своим опытом построения такого рода ландшафтов я хочу поделиться с читателем в данной статье.
    Читать дальше →
  • Как НЕ накрутить рейтинг на Хабре


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


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


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


      Читать дальше →
    • А был ли взлом «Госуслуг»? Гипотеза Яндекса

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



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

        Читать дальше →
      • Как накрутить рейтинг на Хабре и уйти незамеченным


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

          Читать дальше →
        • Ubuntu для мобильных устройств: посмертный анализ

          • Перевод

          Так выглядела Ubuntu Touch, когда проект анонсировали 2 января 2013 года. Изображение: Canonical

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

          Чтобы резюмировать моё участие в проекте: я использовал Ubuntu Touch на Nexus 7 постоянно и периодически с момента его анонса в 2013 году и до декабря 2014 года, начал работать над приложениями Click в декабре 2014-го, начал писать статью из 15-ти частей “Hacking Ubuntu Touch” об устройстве системы в январе 2015-го, был инсайдером по программе Ubuntu Phone Insider, получил Meizu MX4 от Canonical, организовал конкурс для разработчиков приложений UbuContest и был его спонсором, работал над баг-репортами и приложениями примерно до апреля 2016 года, а затем продал или переделал все мои оставшиеся устройства в середине 2016-го. Так что думаю, что могу поделиться какими-то мыслями о проекте, его проблемах и о том, где мы могли сработать лучше.

          Пожалуйста, обратите внимание, что эта статья не затрагивает проект UBPorts, который продолжает работать на операционной системе телефонов, Unity 8 и другие компоненты.
          Читать дальше →
        • Реклама помогает поддерживать и развивать наши сервисы

          Подробнее
          Реклама
        • Побеждаем Android Camera2 API с помощью RxJava2 (часть 1)


            Как известно, RxJava идеально подходит для решения двух задач: обработки потоков событий и работы с асинхронными методами. В одном из предыдущих постов я показал, как можно построить цепочку операторов, обрабатывающую поток событий от сенсора. А сегодня я хочу продемонстрировать, как RxJava применяется для работы с существенно асинхронным API. В качестве такого API я выбрал Camera2 API.


            Ниже будет показан пример использования Camera2 API, который пока довольно слабо задокументирован и изучен сообществом. Для его укрощения будет использована RxJava2. Вторая версия этой популярной библиотеки вышла сравнительно недавно, и примеров на ней тоже немного.


            Для кого этот пост? Я рассчитываю, что читатель – умудрённый опытом, но всё ещё любознательный Android-разработчик. Очень желательны базовые знания о реактивном программировании (хорошее введение – здесь) и понимание Marble Diagrams. Пост будет полезен тем, кто хочет проникнуться реактивным подходом, а также тем, кто хочет использовать Camera2 API в своих проектах. Предупреждаю, будет много кода!


            Исходники проекта можно найти на GitHub.

            Читать дальше →
            • +59
            • 13,3k
            • 8
          • Вызов функций Go из других языков

            • Перевод

            image


            С версии 1.5 компилятор Go поддерживает несколько режимов сборки, определяемых флагом buildmode. Их ещё называют режимами исполнения Go (Go Execution Modes). С их помощью go tool может компилировать пакеты Go в нескольких форматах, включая архивы и библиотеки общего пользования Go (shared libraries), архивы и библиотеки общего пользования Си, а с версии 1.8 — и динамические плагины Go.


            В статье мы рассмотрим компилирование пакетов Go в библиотеки Си. В этом режиме сборки компилятор генерирует стандартный бинарный файл объекта (shared object) (.so), передавая функции Go в качестве API в стиле Си. Мы поговорим о том, как создавать библиотеки Go, которые можно вызывать из C, Python, Ruby, Node и Java.


            Весь код доступен на GitHub.

            Читать дальше →
          • Почему не надо писать ботов для Skype

              Некоторое время назад я обещал «специалистам» службы поддержки Skype/Microsoft опубликовать данную статью. А обещания, как известно, надо исполнять.

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

                Вчера получил из Google письмо, в котором говорится:
                Добрый день!

                Вы получили это сообщение, так как пользуетесь Google Cloud Platform, Firebase или API. Сообщаем Вам об изменении в работе сервисов Google Cloud, которое затронет Ваш аккаунт.

                Начиная с 7 декабря 2016 г. сервисы Google Cloud Platform, Firebase и API можно будет использовать в России только в коммерческих целях. В связи с этим 7 декабря 2016 г. тип Вашего аккаунта будет изменен на юридическое лицо вместо физическое лицо.

                Тип аккаунта «Юридическое лицо» означает, что Вы используете его в коммерческих целях. Владельцем такого аккаунта может являться коммерческая организация, аффилированное лицо, индивидуальный предприниматель или товарищество.

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

                Если Вы используете службы Google Cloud Platform, Firebase и API в некоммерческих целях, Вам следует отказаться от их использования до 7 декабря 2016 г. Для этого нужно отключить оплату для всех проектов. Подробнее об изменениях читайте в Справочном центре.

                Если у Вас есть вопросы, обратитесь в службу поддержки Google Cloud или к менеджеру по работе с клиентами.

                Читать дальше →
              Самое читаемое