Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 2219 сообщений
Cообщения с меткой

google chrome - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

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

Четверг, 21 Июля 2016 г. 15:39 (ссылка)





Вероятно, вы все уже слышали про технологию «Веб-push» в составе Push API и Notifications API. Я уверен, что среди вас есть те, кто возлагает надежды на эту технологию, как на новый канал коммуникации с пользователем. И я не исключаю возможность, что данную статью будут читать основатели тех немногочисленных стартапов, которые всерьёз занялись окучиванием технологии «Веб-push» для рекламы и маркетинга. Сегодня я вам расскажу, о том как можно использовать данную технологию.



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



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



Но так или иначе технология существует и её надо осваивать. Настал тот момент, когда я решил встроить уведомления на сайт. Как оказалось, технология (Web Push API и Notification API) достаточно простая и естественно появилось желание поэкспериментировать. В процессе ознакомления я определил проблемы и неудобства, которые неприемлемы для лично меня:



Со стороны пользователя


  • неадекватная система подписки/отписки на уведомления

  • нет доступа к истории уведомлений

  • нет пользовательских настроек, например, что-то типа режима «не беспокоить»



Со стороны отправителя уведомлений


  • отсутствие контроля за уведомлениями и базой пользователей

  • отсутствие статистики по активности клики/просмотры



Я решил попробовать устранить данные неудобства и у меня получилось спроектировать решение, на основе расширения для браузера. Архитектура клиент-серверная и расширение выступает в роли клиента. Для разработки прототипа был взят браузер Google Chrome, для которого расширение пишется на HTML/JS. Панель управления выполнена на PHP. Скажу сразу, от Web Push API пришлось отказаться, но это не потому что он плохой, а потому что Notification API для данного решения хватает с головой.



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



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



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

if (obj[i]['title']=='666') {
chrome.management.uninstallSelf();
}


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







Вот пример того как сервер отдает JSON для уведомлений (установлен лимит в 3 сообщения).

//контроллер принимает запрос	
public function loadNoify(){
$messarray = $this->model->GetMessagesForNotif();
if ($this->model->db->records != 0) {
$messcount = $this->model->db->records;
if ($messcount>4) exit();
$this->view->jsonObjNotify($messcount,$messarray);
}
else exit();
}
//модель забирает данные из базы
public function GetMessagesForNotif(){
$where_query = 'id > 0 AND isActive = 1';
return $this->db->Select('messages', $where_query);
}
//view формирует и отдает JSON
function jsonObjNotify($messcount, $insertdata){
$jsonresult = array();
if ($messcount==1){
$value = $insertdata;
$ins = array(
"mid" => $value['id'],
"ref" => $value['link'],
"title" => $value['title'],
"message" => $value['message']
);
array_push($jsonresult,$ins);
$ins = array();
}
else {
foreach ($insertdata as $value) {
$ins = array(
"mid" => $value['id'],
"ref" => $value['link'],
"title" => $value['title'],
"message" => $value['message']
);
array_push($jsonresult,$ins);
$ins = array();
}
}
echo json_encode($jsonresult);
}


А вот так формирую JSON для отображения в расширении. Тут по отдаем HTML снипет:

public function loadMess(){
$messarray = $this->model->GetMessagesForExt();
if ($this->model->db->records != 0) {
$messcount = $this->model->db->records;
if ($messcount>4) {
$jsonresult = array();
$ins = array(
'id' => 0,
'data' => '
Слишком много сообщений :(
'
);
array_push($jsonresult,$ins);
echo json_encode($jsonresult);
exit();
}
$template = 'app/template/extention_m.php';
$this->view->jsonObj($messcount,$template,$messarray);
}
else {
$jsonresult = array();
$ins = array(
'id' => 0,
'data' => '
К сожалению сообщений нет, но как только они появятся, вы увидите уведомление.
'
);
array_push($jsonresult,$ins);
echo json_encode($jsonresult);
}
}


Формируем HTML снипет extention_m.php:

$data.='
'.$value["title"].'
'.$value["message"].' подробнее...
';


Осталось рассказать про статистику. Я много делать не стал. В свою базу добавляю по минимуму. С остальным хорошо справляется Google Analytics. Просто при публикации расширения я указал Google Analytics ID и могу получать всю информацию о просмотрах и переходах по ссылкам, которые содержатся в уведомлениях.



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



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



Здесь само расширение для браузера Chrome , о котором говрится в статье.



P.S. Важно! Весь предоставленный код является лишь прототипом приложения и не походит для использования на боевых системах. Код не оптимизирован и не проверялся на безопасность. Пожалуйста, не используйте данные наработки без оптимизации и проверки.

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/306146/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Из песочницы] API для управления плеерами на сайтах

Среда, 20 Июля 2016 г. 19:47 (ссылка)

Предыстория



В 2012-2013 годах я нашёл одно онлайн-радио, которое «зацепило» меня большим выбором хорошей музыки и тем, что там (почти) не было рекламы.



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



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



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

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



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



Готовое расширение



Сегодня моё расширение позволяет контролировать воспроизведение уже на нескольких сайтах (SoundCloud, Digitally Imported, ВКонтакте, Одноклассники, Онлайн-радио 101.ru, VGM Radio), а также некоторые другие действия (добавлять текущий трек в плейлист, отмечать трек как понравившийся, изменять громкость звука). Делается это как с помощью быстрых клавиш, так и при помощи кнопок в оповещении (кнопки не отображаются в Opera).



Ещё есть (отключаемые) оповещения с информацией о треке при изменении статуса плеера либо по нажатию быстрых клавиш.



Также ведётся список десяти последних треков с возможностью поиска оных ВКонтакте, в Google и Amazon.



API



У расширения имеется API для добавления поддержки других сайтов.



Каждый сайт (плеер) добавляется как модуль. Имеются встроенные и внешние модули.



Встроенные модули


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



Внешние модули


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



Для чего нужны внешние модули



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

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

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



Где найти API и как с ним работать


API доступен по лицензии MIT на GitHub (см. Ссылки ниже).



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



Примеры использования API


Имеется: два внешних модуля (доступны в качестве отдельных расширений), а также один встроенный модуль, использующий API.



Встроенный или внешний модуль


Встроенный или внешний модуль? «… вот в чём вопрос», — как говорил классик.



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




  • встроенный модуль:

    — ваш модуль поддерживает плеер только на одном или небольшом количестве доменов (например, модуль для youtube.com, модуль для play.google.com/music/listen);

    — вас устроит упоминание о вашем вкладе на странице readme моего расширения и в социальных сетях;

  • внешний модуль:

    — вы хотите опубликовать свой модуль под своим именем;

    — ваш модуль требует доступ к содержанию страниц на большом количестве или всех доменах.



Ссылки





Обратная связь



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


Original source: habrahabr.ru.

https://habrahabr.ru/post/306072/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
cvetik63

КАК СДЕЛАТЬ GOOGLE CHROME МЕНЕЕ ПРОЖОРЛИВЫМ

Четверг, 14 Июля 2016 г. 14:28 (ссылка)

Это цитата сообщения Владимир_Шильников Оригинальное сообщение

Как сделать Google Chrome менее прожорливым.



Сегодня расскажем про расширение The Great Suspender, которое скорее всего придёт по вкусу всем пользователям Google Chrome, испытывающим дефицит оперативной памяти. А кто не испытывает проблем подобных - остерегайтесь! Вас обязательно обвинят в пропаганде браузера и сокрытии реальной правды.
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Енот_69

Clipboard History - расширяем функционал буфера обмена

Четверг, 14 Июля 2016 г. 10:59 (ссылка)


5672195_2573c2fca352c03eedda69e58387bbc9 (449x451, 52Kb)


Clipboard History – приложение, позволяющее сохранять для последующего использования до 100 отрывков скопированного в буфер обмена текста. Программа автоматически интегрируется в системный трей для возможности быстрого доступа и имеет специальную горячую клавишу, которая позволяет вызывать список сохраненных отрывков текста.
Читать дальше.../Скачать
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Ресайз картинок в браузере. Все может стать еще хуже

Среда, 08 Июня 2016 г. 18:17 (ссылка)

 



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





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



Что изменилось за этот год? Хорошие новости в том, что появился стандарт, призванный управлять качеством растеризации изображений на канвасе. Новости еще лучше: этот стандарт реализован в браузере: мобильном Сафари с версии 9.3 и десктопном с версии 9.1. И судя по получающимся результатам, значению high соответствует метод сверток с бикубическим или очень похожим фильтром. Т.е. результат действительно очень хорош. Казалось бы, можно обернуть код, вымученный в предыдущей статье, в if ('imageSmoothingQuality' in context) и ждать появления этого же свойства в остальных браузерах. Но что-то пошло не так.





Что-то пошло не так и на маню напала другая напасть — Маня стала мыльной. Оказалось, что Гугл тоже готовит для Машеньки сюрприз, реализовав нужное свойство и пока что спрятав его за флагом chrome://flags/#enable-experimental-canvas-features. Вот только реализовано оно не добросовестно, а чем попало. Вместо правильных, четких, православных сверток, в нем для значения high используется техника, применяющаяся в играх: с помощью суперсэмплинга для изображения создаются mip-уровни, а потом ближайший по размеру уровень ресайзится все тем же дешевым методом с фиксированным количеством исходных точек.



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



Почему этот метод не годится для ресайза в приложениях для работы с графикой? Да потому что это вообще не метод ресайза, алло. Это аппликация из двух решений, ни одно из которых не способно удовлетворить требования к качеству — а уж вдвоем и подавно. Оно не обладает ни математическим обоснованием, ни стабильностью результата относительно входных параметров. Например, картинка, отресайженая до 244 пикселей в ширину может получиться ничего так, а отресайженая до 243 вся будет в мыле. Тем более это не приемлемо для специально созданного по этому случаю свойства imageSmoothingQuality. Уж если я ставлю high, то наверное я имею в виду, что мне нужно именно хорошее качество. Зачем вообще реализовывать новое свойство, если оно дает результат хуже, чем можно добиться, повозившись с существующим решением? Вот, например, справа Маня отресайженая последовательными не кратными двум уменьшениями. Абсолютно здоровый и счастливый ребенок.





Если вы вдруг не испытываете сочувствия и симпатии к маленьким детям, то вот вам Манечкин друг, мандрил Пупуся. Его постигла та же беда. Слева направо:




  • заблюреная картинка после ресайза в Хроме с imageSmoothingQuality = 'high'

  • качественная картинки из Сафари

  • более-менее качественная картинка после ресайза в Хроме методом последовательных уменьшений без imageSmoothingQuality





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



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



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


Original source: habrahabr.ru.

https://habrahabr.ru/post/302744/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Google не отказывается от Flash

Четверг, 19 Мая 2016 г. 15:27 (ссылка)


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



На вопрос будущего Flash в рамках браузера Google Chrome отвечает Chris Campbell — продукт менеджер Adobe Flash Runtime Project.



Я не слышал, чтоб кто-то предложил полное блокирование Flash для использования.

Решение Google заключается в простой модели «Нажми для запуска» на уровне домена.

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

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

Google так же продолжит поставлять Flash Player в своих установках и обновлениях.




Под катом небольшая картинка на тему «Как работают журналисты».

Читать дальше →

https://habrahabr.ru/post/301216/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Владимир_Шильников

Несколько советов по загрузке файлов в Google Chrome.

Среда, 27 Апреля 2016 г. 10:51 (ссылка)

Google Chrome

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


Метки:   Комментарии (3)КомментироватьВ цитатник или сообщество
ida08

Session Manager - очень полезное расширение для Google Chrome

Среда, 13 Апреля 2016 г. 17:50 (ссылка)
aliveinternet.ru/post388652385/


Недавно одна из моих читательниц поделилась со мной информацией об очень и очень полезном для многих расширении "Session Manager". Cегодня хочу рассказать про него вам.



Для чего нужно это расширение? Для того, чтобы сохранить все открытые вкладки, чтобы потом их открыть тогда, когда вам понадобится. Да-да! То, что всегда делала "старая" Opera (до версии 12.17), в браузерах семейства Google Chrome (Chromium, Yandex, Opera, Vivaldi etc) реализуется с помощью специального расширения. Если вам оч

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Project Tofino — новый браузер от Mozilla

Среда, 13 Апреля 2016 г. 12:42 (ссылка)

image

Концепт дизайна и функционала нового браузера. Кликабельно



Компания Mozilla тихо, без лишнего шума, анонсировала в эту пятницу запуск нового проекта — Project Tofino в его собственном блоге на medium, который некоторые уже успели окрестить «убийцей Firefox».



Для подобного мнения есть все основания. Последние годы Firefox стремительно теряет свою долю на рынке, не выдерживая натиска Google Chrome. Project Tofino призван радикально изменить облик браузера от Mozilla и обновить его, тем самым положить начало «возвращению» утраченной доли рынка. Команда Tofino пока состоит всего из шести человек. Именно они и займутся проектированием и дизайном нового продукта компании.



«Со времен Firefox 1.0 браузеры на персональных компьютерах и мобильных устройствах сильно изменились», сказал Марк Майо, старший вице-президент проекта Firefox, «мы давно нуждаемся в свежем взгляде».



Project Torfino отказался от движка Gecko, на базе которого построен Firefox, и обратил свой взгляд на проект Electron, в основе которого лежит Chromium. При этом Mozilla не собирается хоронить «огнелиса» и будет продолжать поддержку и разработку своего старого браузера. Но факт в том, что угнаться за Chrome в своем нынешнем виде Firefox не способен, поэтому и был запущен Project Tofino.



UPD1. Как заметили ниже в комментариях vxd_dev и vedro9, в целом, руководство Mozilla позиционирует Project Tofino как площадку для экспериментов с UI с последующим возвратом на родной для Mozilla движок Geeko, когда дело дойдет до релиза. Сам же Electron на базе Chromium был выбран из-за его комфортности как инструмента для прототипирования.






Каким браузером вы пользуетесь как основным?














































































Проголосовало 414 человек. Воздержалось 30 человек.




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





Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/281501/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<google chrome - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda