Программная индикация о работе винчестера вместо светодиодов. Индикатор работы винчестера. Подключение и настройка

19 февраля 2016 в 15:55

От черного прямоугольника в Яндекс.Браузере к ускорению всего Chromium

  • Блог компании Яндекс ,
  • Google Chrome ,
  • Visual Studio ,
  • Браузеры ,
  • Разработка веб-сайтов

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

Один не совсем обычный баг

Меня зовут Кирилл, я работаю в группе внутренних компонентов Яндекс.Браузера в Новосибирске. В один не совсем прекрасный день коллеги из тестирования Яндекс.Браузера воспроизвели проблему с проигрыванием видео через Flash Player. И поскольку именно наша группа отвечает за эту часть браузера (медиа, кодеки, вот это все), задача досталась мне. Баг, скажем так, не претендовал на оригинальность. Клик по кнопке Play приводил к черному прямоугольнику вместо корректного воспроизведения видео. Этот симптом я встречал и раньше, поэтому рассчитывал на достаточно быструю локализацию проблемы. Но я ошибался.

Буквально в первые же минуты удалось выяснить, что черный прямоугольник возникает не всегда, а только для flash-элементов с типом transparent, т.е. полупрозрачных. Отлично, уже есть за что зацепиться при отладке. Собираю debug-версию браузера, запускаю, бага нет. А это уже тревожный звонок. Расхождения в работе debug и release версий - это всегда очень весело. Поэтому решаюсь собрать еще и релизную версию. Собрал, запускаю, бага нет.

Задумался. В чем отличия моей релизной сборки от той, что собирает сервер? Сходу вспомнил про компоновку библиотек. Разработчики собирают браузер в режиме shared_library. Это увеличивает количество dll, но зато сильно экономит время компоновки. Распространяется же браузер, собранный в режиме static_library, при котором собирается лишь несколько больших dll. Выставляю флаг static_library, делаю полную сборку. Наблюдаю, как link.exe медленно съедает всю оперативную память, но нет, 16 ГБ RAM хватит всем, компоновка завершается без допинга в виде файла подкачки. Запускаю. Бага нет.

Серьезно задумался. Вспомнил, что сборочный сервер собирает релизный Яндекс.Браузер с флагом official, который немного меняет поведение (подробнее расскажем чуть позже). Собираю с этим флагом. Дрожащей рукой запускаю браузер. Вы уже угадали? Бага нет.

Тут я не на шутку встревожился и начал думать изо всех сил. Через некоторое время обратил внимание на то, что сервер собирает Яндекс.Браузер с помощью Visual Studio 2013. А я же использовал 2015 версию. Собираю в 2013 версии. Запускаю. Баг есть! Кто бы мог подумать, что я так буду радоваться ошибке.

Если вы сейчас подумали, что вся проблема заключалась только в версии VS, то ошибаетесь. Баг действительно не воспроизводился в debug-версии браузера. Опытным путем удалось установить, что для появления ошибки с черным прямоугольником браузер должен быть собран не только с помощью VS 2013, но и в статичной компоновке с флагом official. О причинах такого странного поведения вы узнаете чуть позже.

Следующие два дня были не менее интересными. В ходе отладки мне удалось понять, что сам плагин Flash Player отрабатывает свою задачу корректно: видео воспроизводится. Его интеграция с браузером вопросов также не вызывала. Результат его работы передавался для отрисовки, но по каким-то причинам на экране мы видели совсем другое. А это значит, что баг нужно было искать в той части браузера, которая отвечает за рендеринг. И здесь я передаю слово Вадиму.

Оптимизируй это

Как вы уже поняли, теперь на связи Вадим. Работаю я в группе разработки рендеринг-движка Яндекс.Браузера в Москве. Несколько слов о том, как вообще происходит отрисовка в Яндекс.Браузере или Chromium. Все, что вы видите в окне браузера, есть результат совмещения различных слоев (веб-страница, интерфейс), почти как в Photoshop. За работу с этими слоями отвечает компонент Compositor (или Chrome"s Compositor == CC). А вот для отрисовки уже каждого слоя СС вызывает специальную опенсорсную библиотеку Skia .

Вместе с Кириллом мы поняли, что следы бага уходят в Skia. Оставалось понять, куда именно. К счастью, у меня была ценная подсказка. Почти в самом начале Кирилл её упомянул. Речь о том, что проблема возникает только в случае flash-элементов с прозрачностью. Чтобы отрисовать на экране такой элементы, браузеру необходимо совместить картинку видео с фоном. И для этого в Skia есть специальная функция SrcATop, отвечающая за блендинг. Несколько минут поиска, и вот я уже нашел багрепорт со схожей проблемой в Chrome, который окончательно развеял все сомнения.

Ура. Мы локализовали источник проблемы вплоть до конкретной функции. А теперь, внимание. Этот участок кода не содержал никаких ошибок. Совсем никаких. И работал он идеально для любых сборок кроме самой финальной, которая и отправляется пользователям. Причем только для Visual Studio 2013. И вот в этот момент я понял, почему Кирилл называл этот баг «веселым».

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

В 2011 году проект Chromium стал настолько большим и сложным, что компоновщик Visual Studio 2010 однажды не смог слинковать его со всеми оптимизациями из-за нехватки ресурсов. Чтобы обойти проблему, разработчики решили по умолчанию оптимизировать все подпроекты (а их больше тысячи) не по скорости работы (/O2), а по размеру кода (/O1). И лишь для избранных и наиболее критичных, или для тех, чьи владельцы не проспали эту ситуацию, включили обратно /O2. Например, это сделали для CC и Skia. Вот только в 2013 году при рефакторинге в Skia оптимизацию случайно потеряли. И никто бы ничего не заметил, если бы еще через два года не случился еще один рефакторинг в Chromium, в результате которого часть кода сделали шаблонным и перенесли в header. И вот тут-то все и началось.

А началось вот что. Когда происходит сборка релизного браузера с флагом official, библиотеки, имеющие разные цели для оптимизации (по скорости, по размеру), оказываются в одной dll. Само по себе это не признак чего-то плохого. Например, в Visual Studio 2015 никаких проблем это не вызывает. Студия пыхтит час над оптимизацией и выдает вполне рабочий код. Но стоит нам заменить её 2013-й версией, и все ломается. Почему?

Функция SrcATop, которая отвечает за блендинг в Skia, принимает два параметра через регистры xmm0 и xmm1. И почти всегда она работает корректно. Но как мне удалось выяснить в ходе отладки, стоит добавить сюда VS 2013 и непростую оптимизацию, и функция вырождается до такой степени, что начинает возвращать в ответ содержимое первого регистра. Отсюда и появлялся неизменный черный фон вместо видео. Всему виной была неправильная кодогенерация в VS 2013.

Ускоряем веб-сёрфинг

При большом желании баг можно было «исправить» локально, немного подкрутив SrcATop. Но мне показалось неправильным, что у такого важного для отрисовки компонента, как Skia, отсутствует оптимизация по скорости. Поэтому я собрал новую сборку, в которой выставил для Skia оптимизацию по скорости. Баг, конечно же, пропал. Казалось бы, можно закрывать задачу и идти пить чай, но нет. Мне нужно было сделать еще кое-что.

Команда Яндекс.Браузера участвует в разработке Chromium уже не первый год. И это касается не только исправления ошибок. В свое время коллеги помогли с реализацией server push для HTTP/2 и со сборочной системой проекта для Windows. Поэтому и в этот раз я предложил решение проблемы и отправил на рассмотрение готовый

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

Минутку, ребята! Это у меня получилось сделать, реально! О чем это я? Ну конечно о том, как вернуть старый дизайн Яндекс Браузера, все получилось, я нашел способ как это сделать и поделился этим с вами! Так что вперед, читайте об этом !

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

Новый дизайн Яндекс Браузера, это вот такой:


Не знаю как вам, а мне он что-то не очень, ну слишком непривычный и эти облака, что это за выкрутасы такие..

В общем вверху, в правом верхнем углу есть кнопка, значок таких палочек горизонтальных, вот ее нажимаем и в появившемся меню выбираем пункт Настройки:

Кстати, в настройки также можно попасть, если просто перейти по этому адресу:

browser://settings

Кстати! Вот оказывается что в настройках также тут можно отключить Яндекс Дзен, я не знаю что это вообще, но оно мне точно не нужно! Чтобы отключить, то нужно снять вот эту галочку:


Ну так вот, теперь по поводу дизайна, крутим настройки дальше и там внизу будет кнопка Показать дополнительные настройки, нажимаем ее:


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


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


Я эту кнопку нажал, потом было такое сообщения, я тут нажал Выключить.


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

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

Существует два основных способа возвращения старого дизайна:

  1. Воспользоваться стандартной функцией возвращения дизайна заложенной разработчиками;
  2. Воспользоваться дистрибутивом более старых версий.

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

Как вернуть старый интерфейс Яндекса?

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

  • Откройте браузер Яндекс;

  • Перейдите в настройки обозревателя, нажав по значку трёх горизонтальных полос, расположенном в правом верхнем углу и выбрав соответствующую опцию;
  • Далее вы увидите графу «Настройка внешнего вида»;
  • Здесь вам следует нажать на большую кнопку «Выключить новый интерфейс».

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

Как вернуть старую версию Яндекса?

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

Необходимость в этом действии возникает в основном у пользователей Windows XP, которые могут испытывать сложности при использовании обновлённого браузера.

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

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

Использование точки восстановления

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

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

  • Нажмите по ярлыку Яндекс браузера правой кнопкой и выберите опцию «Свойства»;
  • Далее кликните по кнопке «Расположение файла»;
  • Выйдите из папки перейдя в корневой раздел каталога;
  • Теперь кликните по папке, в которой находятся файлы браузера правой кнопкой и выберите пункт «Восстановить прежнюю версию»;

  • Далее выберите нужную вам точку и следуйте инструкции.

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

Установка старого дистрибутива

Официально Яндекс не предоставляет доступа к устаревшим версиям программы, но существуют способы всё же раздобыть программу.

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

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

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

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

Так же, вероятно, сразу после установки нужной вам версии, она просто обновится до актуальной и вам снова придется начинать установку сначала. В таком случае, вам следует в папке с браузером (иногда в папке с пользовательской информацией) найти файл под названием updater.exe и просто удалить его. Возможно, для удаления вам придется сначала завершить процесс из «Диспетчера задач» он будет иметь такое же название.

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

Если у Вас остались вопросы по теме «Как вернуть старый дизайн браузера Яндекс?», то можете задать их в комментариях


if(function_exists("the_ratings")) { the_ratings(); } ?>

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

Первое, что стремится изменить любая программа - интерфейс. Для браузера это особенно важно, так как от качественно продуманного и реализованного интерфейса зависит многое. И если он окажется неудачным, то пользователи просто перейдут на другой браузер. Именно поэтому Яндекс.Браузер, решив обновить свой интерфейс до современного, решили оставить довольными всех своих пользователей: каждый, кому не нравится современный интерфейс, может отключить его в настройках. Точно так же, каждый, кто еще не перешел со старого интерфейса на новый, может сделать это при помощи настроек Яндекс.Браузера. О том, как это сделать, мы и расскажем в этой статье.

Если вы до сих пор сидите на старом интерфейсе браузера, и хотели бы шагать в ногу со временем, то за несколько кликов вы можете обновить внешний вид браузера. Для этого нажмите на кнопку «Меню » и выберите «Настройки »:

Найдите блок «Настройки внешнего вида » и нажмите на кнопку «Включить новый интерфейс »:

В окне подтверждения нажмите «Включить »:

Дождитесь перезапуска браузера.

Отключение нового интерфейса Яндекс.Браузера

Ну а если вы наоборот решили вернуться к старому интерфейсу, то сделайте это так. Нажмите на кнопку «Меню » и выберите «Настройки »:

В блоке «Настройки внешнего вида » нажмите на кнопку «Выключить новый интерфейс »:

В окне с подтверждением о переходе в классический интерфейс нажмите «Выключить »:

Браузер перезапустится уже с классическим интерфейсом.

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

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

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

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

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

На то, чтобы изменить внешний вид своего Яндекс браузера, вам понадобится только отвлечься на пару минут:

  • Включите веб-обозреватель.
  • Откройте новую вкладку (можно сделать это в настройках рядом с панелью закладок).
  • Перед вами появится «Экспресс-панель». Нужно опуститься до нижней части экрана и нажать на значок «Сменить фон».
  • Затем откроется перечень с самыми разными видами оформления браузера, среди которых вам нужно выбрать понравившийся больше всего. Выбрав подходящий рисунок, нажмите на кнопку «Готово».

Можете не беспокоиться о том, что каждый раз нужно менять фон — этого не потребуется. Теперь каждый раз при попадании в «Экспресс-панель» (даже если вы закрывали и снова открывали яндекс) вы будете наслаждаться приятной картиной. А работать с поднятым настроением намного интереснее и легче!

Можно ли установить на фон что-то «свое»?

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

Такие случаи предусмотрены создателями Яндекс Браузера: вы можете загрузить личные картины, имеющиеся на вашем компьютере. Это дает полную волю фантазии. Каково, например, будет приятно, если каждый раз, попадая в «Экспресс-панель», вы будете видеть яркий фрагмент своей жизни или фото маленького ребенка?

Для того, чтобы установить на фон картинку из своего устройства, вам нужно:

  • включить Яндекс;
  • открыть новое подокно;
  • найдите функцию «Сменить фон» и нажмите на нее;
  • за последним изображением имеется значок «+», на него вам нужно нажать;
  • выберите фото, которое хотите видеть в браузере, и нажмите ввод («Энтер»).

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