Как открыть фоновую вкладку. Как включить скрытые настройки Opera. Что делать, если пропадают вкладки

Как открыть фоновую вкладку. Как включить скрытые настройки Opera. Что делать, если пропадают вкладки

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

Необходимые материалы

Для того, чтобы сделать робота, не понадобится знание ядерной физики. Можно и в домашних условиях сделать робота из обычных материалов, которые постоянно есть под руками. Итак, что нам понадобится:
  • 2 куска провода
  • 1 моторчик
  • 1 батарейка AA
  • 3 канцелярские кнопки
  • 2 кусочка пенокартона или похожего по свойствам материала
  • 2-3 головки старых зубных щеток или несколько скрепок

1. Прикрепляем батарейку к мотору

С помощью клеящего пистолета прикрепляем кусочек пенокартона к корпусу мотора. Затем к приклеиваем к нему батарейку.

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

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

3. Ноги

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

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

5. Подключение батарейки

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

6. Глаза

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

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

Введение

Итак. Что же такое робот? В большинстве случаев это автоматическое устройство, которое реагирует на какие-либо действия окружающей среды. Роботы могут управляться человеком или выполнять заранее запрограммированные действия. Обычно на роботе располагают разнообразные датчики (расстояния, угла поворота, ускорения), видеокамеры, манипуляторы. Электронная часть робота состоит из микроконтроллера (МК) – микросхема, в которую заключён процессор, тактовый генератор, различная периферия, оперативная и постоянная память. В мире существует огромное количество разнообразных микроконтроллеров для разных областей применения и на их основе можно собирать мощных роботов. Для любительских построек широкое применение нашли микроконтроллеры AVR. Они, на сегодняшний день, самые доступные и в интернете можно найти много примеров на основе этих МК. Чтобы работать с микроконтроллерами тебе нужно уметь программировать на ассемблере или на Cи и иметь начальные знания в цифровой и аналоговой электронике. В нашем проекте мы будем использовать Cи. Программирование для МК мало чем отличается от программирования на компьютере, синтаксис языка такой же, большинство функций практически ничем не отличаются, а новые довольно легко освоить и ими удобно пользоваться.

Что нам нужно

Для начала наш робот будет уметь просто объезжать препятствия, то есть повторять нормальное поведение большинства животных в природе. Всё что нам потребуется для постройки такого робота можно будет найти в радиотехнических магазинах. Решим, как наш робот будет передвигаться. Самым удачным я считаю гусеницы, которые применяются в танках, это наиболее удобное решение, потому что гусеницы имеют большую проходимость, чем колёса машины и ими удобнее управлять (для поворота достаточно вращать гусеницы в разные стороны). Поэтому тебе понадобится любой игрушечный танк, у которого гусеницы вращаются независимо друг от друга, такой можно купить в любом магазине игрушек по разумной цене. От этого танка тебе понадобится только платформа с гусеницами и моторы с редукторами, остальное ты можешь смело открутить и выкинуть. Так же нам потребуется микроконтроллер, мой выбор пал на ATmega16 – у него достаточно портов для подключения датчиков и периферии и вообще он довольно удобный. Ещё тебе потребуется закупить немного радиодеталей, паяльник, мультиметр.

Делаем плату с МК



Схема робота

В нашем случае микроконтроллер будет выполнять функции мозга, но начнём мы не с него, а с питания мозга робота. Правильное питание – залог здоровья, поэтому мы начнём с того, как правильно кормить нашего робота, потому что на этом обычно ошибаются начинающие роботостроители. А для того, чтобы наш робот работал нормально нужно использовать стабилизатор напряжения. Я предпочитаю микросхему L7805 – она предназначена, чтобы на выходе выдавать стабильное напряжение 5В, которое и нужно нашему микроконтроллеру. Но из-за того, что падение напряжения на этой микросхеме составляет порядка 2,5В к нему нужно подавать минимум 7,5В. Вместе с этим стабилизатором используются электролитические конденсаторы, чтобы сгладить пульсации напряжения и в цепь обязательно включают диод, для защиты от переполюсовки.
Теперь мы можем заняться нашим микроконтроллером. Корпус у МК - DIP (так удобнее паять) и имеет сорок выводов. На борту имеется АЦП, ШИМ, USART и много другого, что мы пока использовать не будем. Рассмотрим несколько важных узлов. Вывод RESET (9-ая нога МК) подтянут резистором R1 к «плюсу» источника питания – это нужно делать обязательно! Иначе твой МК может непреднамеренно сбрасываться или, проще говоря – глючить. Так же желательной мерой, но не обязательной является подключение RESET’а через керамический конденсатор C1 к «земле». На схеме ты так же можешь увидеть электролит на 1000 мкФ, он спасает от провалов напряжения при работе двигателей, что тоже благоприятно скажется на работе микроконтроллера. Кварцевый резонатор X1 и конденсаторы C2, C3 нужно располагать как можно ближе к выводам XTAL1 и XTAL2.
О том, как прошивать МК, я рассказывать не буду, так как об этом можно прочитать в интернете. Писать программу мы будем на Cи, в качестве среды программирования я выбрал CodeVisionAVR. Это довольно удобная среда и полезна новичкам, потому что имеет встроенный мастер создания кода.


Плата моего робота

Управление двигателями

Не менее важным компонентом в нашем роботе является драйвер двигателей, который облегчает нам задачу в управлении им. Никогда и ни в коем случае нельзя подключать двигатели напрямую к МК! Вообще мощными нагрузками нельзя управлять с микроконтроллера напрямую, иначе он сгорит. Пользуйтесь ключевыми транзисторами. Для нашего случая есть специальная микросхема – L293D. В подобных несложных проектах всегда старайтесь использовать именно эту микросхему с индексом «D», так как она имеет встроенные диоды для защиты от перегрузок. Этой микросхемой очень легко управлять и её просто достать в радиотехнических магазинах. Она выпускается в двух корпусах DIP и SOIC. Мы будем использовать в корпусе DIP из-за удобства монтажа на плате. L293D имеет раздельное питание двигателей и логики. Поэтому саму микросхему мы будем питать от стабилизатора (вход VSS), а двигатели напрямую от аккумуляторов (вход VS). L293D выдерживает нагрузку 600 мА на каждый канал, а этих каналов у неё два, то есть к одной микросхеме можно подключить два двигателя. Но, чтобы перестраховаться, мы объединим каналы, и тогда потребуется по одной микре на каждый двигатель. Отсюда следует, что L293D сможет выдержать 1.2 А. Чтобы этого добиться нужно объединить ноги микры, как показано на схеме. Микросхема работает следующим образом: когда на IN1 и IN2 подаётся логический «0», а на IN3 и IN4 логическая единица, то двигатель вращается в одну сторону, а если инвертировать сигналы – подать логический ноль, тогда двигатель начнёт вращаться в другую сторону. Выводы EN1 и EN2 отвечают за включение каждого канала. Их мы соединяем и подключаем к «плюсу» питания от стабилизатора. Так как микросхема греется во время работы, а установка радиаторов проблематична на этот тип корпуса, то отвод тепла обеспечивается ногами GND - их лучше распаивать на широкой контактной площадке. Вот и всё, что на первое время тебе нужно знать о драйверах двигателей.

Датчики препятствий

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


Первый вариант датчиков моего робота

Прошивка робота

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

#include
#include

Следующие строки условные, потому что значения PORTC зависят от того, как ты подключил драйвер двигателей к своему микроконтроллеру:

PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;

Значение 0xFF означает, что на выходе будет лог. «1», а 0x00 – лог. «0».

Следующей конструкцией мы проверяем, есть ли перед роботом препятствие и с какой оно стороны:

If (!(PINB & (1< {
...
}

Если на фототранзистор попадает свет от ик-диода, то на ноге микроконтроллера устанавливается лог. «0» и робот начинает движение назад, чтобы отъехать от препятствия, потом разворачивается, чтобы снова не столкнуться с преградой и затем опять едет вперёд. Так как у нас два датчика, то мы проверяем наличие преграды два раза – справа и слева и потому можем узнать с какой стороны препятствие. Команда «delay_ms(1000)» указывает на то, что пройдёт одна секунда, прежде чем начнёт выполняться следующая команда.

Заключение

Я рассмотрел большинство аспектов, которые помогут тебе собрать твоего первого робота. Но на этом робототехника не заканчивается. Если ты соберёшь этого робота, то у тебя появится куча возможностей для его расширения. Можно усовершенствовать алгоритм робота, как например, что делать, если препятствие не с какой-то стороны, а прямо перед роботом. Так же не помешает установить энкодер – простое устройство, которое поможет точно располагать и знать расположение твоего робота в пространстве. Для наглядности возможна установка цветного или монохромного дисплея, который может показывать полезную информацию – уровень заряда аккумулятора, расстояние до препятствия, различную отладочную информацию. Не помешает и усовершенствование датчиков – установка TSOP (это ик-приёмники, которые воспринимают сигнал только определённой частоты) вместо обычных фототранзисторов. Помимо инфракрасных датчиков существуют ультразвуковые, стоят подороже, и тоже не лишены недостатков, но в последнее время набирают популярность у роботостроителей. Для того, чтобы робот мог реагировать на звук, было бы неплохо установить микрофоны с усилителем. Но по-настоящему интересным, я считаю, установка камеры и программирование на её основе машинного зрения. Есть набор специальных библиотек OpenCV, с помощью которых можно запрограммировать распознавание лиц, движения по цветным маякам и много всего интересного. Всё зависит только от твоей фантазии и умений.
Список компонентов:
  • ATmega16 в корпусе DIP-40>
  • L7805 в корпусе TO-220
  • L293D в корпусе DIP-16 х2 шт.
  • резисторы мощностью 0,25 Вт номиналами: 10 кОм х1 шт., 220 Ом х4 шт.
  • конденсаторы керамические: 0.1 мкФ, 1 мкФ, 22 пФ
  • конденсаторы электролитические: 1000 мкФ х 16 В, 220 мкФ х 16В х2 шт.
  • диод 1N4001 или 1N4004
  • кварцевый резонатор на 16 МГц
  • ИК-диоды: подойдут любые в количестве двух штук.
  • фототранзисторы, тоже любые, но реагирующие только на длину волны ик-лучей
Код прошивки:
/*****************************************************
Прошивка для робота

Тип МК: ATmega16
Тактовая частота: 16,000000 MHz
Если у тебя частота кварца другая, то это нужно указать в настройках среды:
Project -> Configure -> Закладка "C Compiler"
*****************************************************/

#include
#include

Void main(void)
{
//Настраиваем порты на вход
//Через эти порты мы получаем сигналы от датчиков
DDRB=0x00;
//Включаем подтягивающие резисторы
PORTB=0xFF;

//Настраиваем порты на выход
//Через эти порты мы управляем двигателями
DDRC=0xFF;

//Главный цикл программы. Здесь мы считываем значения с датчиков
//и управляем двигателями
while (1)
{
//Едем вперёд
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
if (!(PINB & (1< {
//Едем назад 1 секунду
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
//Заворачиваем
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
}
if (!(PINB & (1< {
//Едем назад 1 секунду
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
//Заворачиваем
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 1;
PORTC.3 = 0;
delay_ms(1000);
}
};
}

О моём роботе

В данный момент мой робот практически завершён.


На нём установлена беспроводная камера, датчик расстояния (и камера и этот датчик установлены на поворотной башне), датчик препятствия, энкодер, приёмник сигналов с пульта и интерфейс RS-232 для соединения с компьютером. Работает в двух режимах: автономном и ручном (принимает сигналы управления с пульта ДУ), камера также может включаться/выключаться дистанционно или самим роботом для экономии заряда батарей. Пишу прошивку для охраны квартиры (передача изображения на компьютер, обнаружение движений, объезд помещения).

По пожеланиям выкладываю видео:

UPD. Перезалил фотографии и сделал небольшие поправки в тексте.

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

Необходимые материалы
Для того, чтобы сделать робота своими руками, не понадобится знание ядерной физики. Это можно сделать и в домашних условиях из обычных материалов, которые постоянно есть под руками. Итак, что нам понадобится:

  • 2 куска провода
  • 1 моторчик
  • 1 батарейка AA
  • 3 канцелярские кнопки
  • 2 кусочка пенокартона или похожего по свойствам материала
  • 2-3 головки старых зубных щеток или несколько скрепок

1. Прикрепляем батарейку к мотору
С помощью клеящего пистолета прикрепляем кусочек пенокартона к корпусу мотора. Затем к приклеиваем к нему батарейку.



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

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

3. Ноги
Теперь необходимо снабдить робота нижними конечностями. Если вы будете использовать для этого головки зубных щеток, то приклейте их к нижней части мотора. В качестве прослойки можно использовать всё тот же пенокартон.







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

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



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

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

Робот готов!

А вот как может выглядеть наш самодельный робот, если проявить больше фантазии:


И напоследок видеоролик:

По материалам techcult

Разработка программного обеспечения долгий трудоёмкий процесс. Мало придумать новые функции, их надо опробовать, протестировать. Но в отличие от фармацевтических компаний, которые десятки лет проводят испытания нового продукта, прежде чем выпустить на рынок потребителей, программисты выпускают в свет «сырой» софт. Ведущие специалисты из компании OperaSoftware с партнёрами и энтузиастами не исключение. Поиск недостатков, ошибок и “багов” происходит за счёт обычных пользователей интернет обозревателя Опера . Недаром, перед использованием любой серьёзной утилиты, пользователь подписывается под соглашением на использования того или иного программного продукта. Случается проблема, браузер оповещает о ней прародителей. Те в свою очередь собирают статистику, и после анализа, фиксируют и устраняют недостатки. Иногда из “багов” получаются, очень даже неплохи “фичи”. Как правило, все исправления приходят на пользовательскую поисковую систему с очередным автоматическим обновлением.

В новейшей версии браузера Опера, помимо основных настроек, есть ещё три категории вспомогательного технического функционала:

  1. «Дополнительные настройки»
  2. «Opera flags настройка» — экспериментальные функции
  3. «Скрытые настройки»

Дополнительные настройки

«Меню » => «Настройки» или «Ctrl+P »/ В основных настройках меню, в самом низу поставить галочку в пункте «Показывать дополнительные настройки ».

После активации функционала дополнительных настроек, появляются новые возможности оптимизации пользовательского браузера. Они отмечены значком «серая точка».

«Пользовательские списки блокировки…» — возможность блокирования определённых вэб-ресурсов.

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

Дополнительные настройки пользовательского интерфейса.

Активация защиты от вредоносных сайтов в подменю «Безопасность».

Настройки коммуникации в реальном времени.

Экспериментальные функции

В поисковой строке набрать opera://flags .

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

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

Скрытые настройки

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

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

После выполнения магического обряда, выскакивает грозно предупреждение с поздравлениями. Сглотнув слюну, нажать на кнопку «Я принимаю. Продолжить…»

Под пунктом «Показывать дополнительные настройки» появился новый раздел настроек для матёрых пользователей.

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

Не стоит забывать про последствия изменений скрытых настроек. Лучше, на всякий случай, сделать back up важных персональных данных.



Ближайшие изменения в браузере Chrome вряд ли порадуют разработчиков Slack, Discord и других программ, которые работают во вкладках браузера. В бета-версии Chrome 56 реализован новый механизм оптимизации таймеров для фоновых вкладок .

На первый взгляд, инициатива разработчиков выглядит хорошим делом. В сентябрьском плане внедрения (Intent to Implement) объясняются причины, которые сподвигли разработчиков на такое решение.

Главная причина - некоторые плохо спроектированные приложения (например, скрипты аналитики и javascript-реклама) потребляют много ресурсов CPU, хотя находятся в фоновом режиме. Это негативно отражается на производительности браузера и потребляет энергию аккумулятора на мобильных устройствах. Такая обработка активности в фоновых вкладках совершенно ни к чему. Идея состоит в том, чтобы установить максимальный лимит вычислительных ресурсов, которые можно дать фоновому приложению.

Реализация плана выглядит следующим образом:

  • У каждого компонента WebView будет бюджет (в секундах) для работы таймеров в фоновом режиме.
  • Таймер не может запуститься, если бюджет отрицательный.
  • После выполнения таймера его время работы вычитается из бюджета.
  • Бюджет автоматически пополняется со временем (на 0,01 с бюджета с каждой секундой реального времени).
Разработчики решили, что торможение фоновых вкладок никак не помешает пользователю. Вкладки с активным звуком в Chrome не считаются фоновыми, так что на них нововведение никак не скажется.

Наибольшее опасение вызывали фоновые страницы трёх типов:

  • которые используют таймер для изменения фавикона, как это делает Gmail;
  • которые используют таймеры для воспроизведения звука, например, для звука входящего сообщения в мессенджере (касается практически всех мессенджеров и групповых чатов);
  • только что открытая страница, которая начала загружаться, а пользователь в это время открывает новую вкладку с расчётом, что эта страница загрузится до конца в фоновом режиме.
Предварительные тесты показали, что реализация торможения фоновых вкладок не поломала функциональность Gmail, хотя затормозила некоторые нотификации в тех мессенджерах и программах, которые активно используют ресурсы CPU. В целом, реализация работала хорошо и действительно снизила энергопотребление и увеличила быстродействие браузера в активных вкладках.

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

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

Но в реальности оказалось, что нотификации в фоновых приложениях могут приходить с опозданием на несколько минут . Это уже конкретно ломает функциональность таких приложений. Создателям придётся искать способы, как обойти этот встроенный «режим энергосбережения» Chrome. Очевидным кажется приём с постоянным проигрыванием звуком на нулевой громкости. Возможно, они придумают что-нибудь ещё.

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

Slack и Discord - не единственные такие программ, есть очень много других веб-приложений, которые активно работают в фоновом режиме. Например, биржи для биткоин-трейдинга в реальном времени. Чтобы проверить новый режим Chrome разработчик одного из таких ресурсоёмких приложений запустил в фоновой вкладке Chrome 56 процесс setInterval с выполнением каждую секунду и фиксацией реального времени выполнения. Вот какое реальное время он зафиксировал в логе:

1002
1003
1000
1012
1001
1965
1962
1089
2078
1832
1071
6917
34402
136717
76192
38682
6030

Как видим, через пять секунд фоновая вкладка начала выбиваться из бюджета, который ей выделил браузер. А через 22 реальных секунды бюджет полностью закончился (задержка ивента на 136 секунд).

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

Разработчики Chrome рекомендуют перенести соответствующие процессы в Service Workers. придётся потрудиться, конечно, переписывая код и решая проблемы совместимости. Но там всё должно работать нормально. Разумеется, до того момента, пока разработчики Chrome не примут решение затормозить и фоновые Service Workers тоже.

Разработчикам таких приложений, которые работают в фоновом режиме, рекомендуется использовать Page Visibility API, чтобы приложение не делало в фоновом режиме работу, которая всё равно будет невидима пользователем.

Var doVisualUpdates = true; document.addEventListener("visibilitychange", function(){ doVisualUpdates = !document.hidden; });
Такой приём позволяет



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows