
Отныне я не буду больше создавать нативные приложения. Все мои приложения в дальнейшем будут прогрессивными веб-приложениями (PWA, Progressive Web Apps). Это такие приложения, которые предназначены для еще более органичной работы на мобильных устройствах, чем нативные приложения.
Что я имею ввиду под «более органичной работой»? Большая часть веб-траффика исходит от мобильных устройств и пользователи устанавливают в среднем от 0 до 3 новых приложений в месяц. Это означает, что люди не тратят много времени на поиск новых приложений в App store, но они проводят много времени в сети, где могут найти и использовать ваше приложение.
Прогрессивные веб-приложения начинают свою работу как любое другое веб-приложение, но когда пользователь возвращается в приложение и показывает (фактом использования), что он заинтересован в более регулярном обращении к приложению, браузеры предложат пользователю установить приложение на свой домашний экран. PWA также могут использовать push-уведомления как и нативные приложения.
И тут-то начинается интересная часть. Как и любое нативное приложение, прогрессивное веб-приложение будет обладать собственной иконкой для домашнего экрана и когда вы нажимаете на нее приложение запускается без оболочки браузера Chrome. Это означает отсутствие адресной строки и кнопок навигации. Только обычная строка состояния телефона и ваше приложение во всем своем почти полноэкранном великолепии.
К этому уже давно шло. Ни одна из технологий не является особо новой, за примечательным исключением развивающегося кросс-платформенного стандарта.
Немного истории
На заре iPhone не существовало app store. Стив Джобс хотел, чтобы разработчики создавали приложения для iPhone, используя стандартные веб-технологии.
Иногда мечтатели правы, но они на 10 лет опережают свое время. Оглядываясь назад на 2 года, рекомендация Стива Джобса о создании веб-приложений для iPhone была названа журналом Forbes его “крупнейшей ошибкой”, поскольку нативные приложения приобрели сокрушительный успех.
Сегодня, оглядываясь назад, кажется очевидным, что он действительно что-то нащупал, но только далеко впереди возможностей существующий веб-стандартов того времени.
Сейчас десятилетие спустя, мобильные веб-стандарты поддерживают многие функции, которые были нужны разработчикам нативных приложений и первоначальное видение мобильных веб-приложений Стива Джобса теперь воспринимается серьезно всем миром. Практически с самого начала Apple поддерживал “apple-mobile-web-capable” веб-приложения, которые вы можете добавить себе на домашний экран, используя мета тэги, которые помогают устройствам iOS находить такие вещи как подходящие иконки.
Другие производители последовали примеру, каждый создавал свою собственную коллекцию мета тэгов для объявления возможностей мобильных веб-приложений. Но недавно была введена кросс-платформеная спецификация и теперь кросс-платформенные мобильные веб-приложения наконец-то становятся реальностью.
Приложения, выполняющие стандарт называются прогрессивными веб-приложениями, не путать с такими сбивающими с толку, похожими терминами как прогрессивное усовершенствование или отзывчивые приложения.
Что такое прогрессивные веб-приложения
Прогрессивные веб-приложения являются веб-приложениями, разработанными и адаптированными под мобильные устройства. Если браузер отмечает, что пользователь хочет продолжить использование приложения, то он может предложить ему установить приложение на свой домашний экран. Но для того чтобы он это сделал, приложения должны удовлетворять специфическим критериям:
- Должны быть HTTPS (смотри let's encrypt)
- Валидный манифест с обязательными свойствами ( Web Manifest Validator)
- Должны иметь service worker
- start_url прописанный в манифесте, должен всегда загружаться даже в offline (используя service worker)
- Должны предоставлятьсвою собственную навигацию
- Должны быть отзывчивыми к разным размерам экрана и ориентациям
Конечно, использование HTTPS и service worker для оффлайн пользователей является сегодня рекомендуемой нормой для любого современного приложения.
Что забывают многие создатели приложений так это то, что если вы делаете прогрессивное веб-приложение, то вы должны иметь возможность управлять приложением без браузерной оболочки и навигационных жестов. Мобильные устройства полагают, что вы встроили собственную навигацию в приложение.
Например, если у вас есть страница, то эта страница должна иметь обратную ссылку на пользовательский интерфейс приложения, или пользователям придется закрывать и повторно открывать приложение, чтобы вернуться обратно к главному экрану.
Прогрессивные приложения — инструкция
В сети существует множество информации о создании прогрессивных веб-приложений, но по большей части она устаревшая, а многие источники содержат только фрагменты того, что вам нужно чтобы создать приложение. Давайте исправим это.
Включить HTTPS
Чтобы включить HTTPS вам понадобится:
- Веб-сервер (я рекомендую DigitalOcean)
- SSL сертификат
- Сильная группа Diffie-Hellman (
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
) - TLS/SSL конфигурация для вашего веб-сервера (инструкции для Nginx на Ubuntu)
Манифест
Файл манифеста называется
manifest.json
и он достаточно простой. Он состоит из имени (short_name
для иконки домашнего экрана и опционального name
для более полного названия), начального url, большого списка иконок чтобы вы могли поддерживать широкий спектр если для разных платформ нужны разные размеры иконки. Для Android и iOS вам понадобится:- 36*36
- 48*48
- 60*60 (значок Apple touch на iPhone)
- 72*72
- 76*76 (значок Apple touch на iPad)
- 96*96
- 120*120 (значок Apple touch на iPhone retina)
- 152*152 (значок Apple touch на iPad retina)
- 180*180 (значок Apple touch для iOS 8+ )
- 192*192
- 512*512
Я выделил значки Apple touch потому что у них известные имена:
apple-touch-icon-180x180.png
Где 180*180 может быть заменено на любое нужное разрешение. Использование известных имен не обязательно, но если вы забудете включить тэги, iOS все-равно сможет найти иконки, ища их в корневой директории вашего веб-приложения, если вы будете использовать известные имена.
Иконки iOS не поддерживают прозрачность.
Простой manifest.json:
{
"name": "My Progressive Web Application",
"short_name": "Progressive",
"start_url": "/?home=true",
"icons": [
{
"src": "/icons/icon36.png",
"sizes": "36x36",
"type": "image/png"
},
{
"src": "/icons/icon48.png",
"sizes": "48x48",
"type": "image/png"
},
{
"src": "/icons/icon60.png",
"sizes": "60x60",
"type": "image/png"
},
{
"src": "/icons/icon72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "/icons/icon76.png",
"sizes": "76x76",
"type": "image/png"
},
{
"src": "/icons/icon96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "/icons/icon120.png",
"sizes": "120x120",
"type": "image/png"
},
{
"src": "/icons/icon152.png",
"sizes": "152x152",
"type": "image/png"
},
{
"src": "/icons/icon180.png",
"sizes": "180x180",
"type": "image/png"
},
{
"src": "/icons/icon192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icons/icon512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#000000",
"background_color": "#FFFFFF",
"display": "fullscreen",
"orientation": "portrait"
}
Существуют некоторые функции, о которых вам следует знать.
theme_color
устанавливает цвет статусной строки, а заголовок окна используется при переключении между приложениями на Android.background_color
устанавливает цвет заставки. На Android заставка будет состоять из свойства name
(длинное имя) и большой иконки поверх background_color
.Манифест есть не везде
Когда с создал первое прогрессивное веб-приложение, я был потрясен тем, что оно работало как и предполагалось в Chrome на Android, но не в Safari /iOS. Причина в том, что мобильный Safari, несмотря на десятилетнюю поддержку этих функций, используя свои специфичные тэги не поддерживает до сих пор спецификацию веб-манифеста.
Поэтому в дополнение к файлу манифеста для поддерживаемых браузеров вам также понадобятся специальные мета тэги для iOS, начиная с этого, который будет запускать приложение без оболочки браузера:

Существует множество тэгов, о которых надо помнить, хотя есть и другой способ. Есть web manifest polyfill, который прочтет ваш manifest.json файл и добавит тэги производителей для более старых мобильных браузеров, iOS и даже для Windows phone и Firefox OS.
Перевод: Ольга Чернопицкая
Продолжение следует
Поддержка публикации — компания Edison, которая разрабатывает автоматическую систему сборки прошивки для сетевой техники, а так же делает перевод ПО на русский для транснациональной промышленной корпорации.
Комментарии (170)
QDeathNick
24.11.2016 01:59+6Русское «обречены» оптимистично, оно ещё не произошло, просто предсказание.
А вот «native apps are doomed» из источника для меня звучит, как будто уже произошедшее и скоро похороны.
Родные приложения никогда не умрут, скорее сотрется грань между нативными и ПВА.
TheShock
24.11.2016 02:33+35Нативные приложения обречены. Отныне я не буду больше создавать нативные приложения
Ну да, теперь точно обречены. Куди им без автора?
Ivan_83
24.11.2016 04:01+29Не надо путать тёплое с мягким.
Вебхренью можно заменить нечто бесполезное и привязанное к инету, но нельзя заменить серьёзные вещи, взять те же программы для навигации или игры по хардкорнее и с графикой по забористее.
Вот всякие социалочки, котики, твиторы, и прочий ненужный сетевой мусор — оно конечно в браузере видимо лучше.
Я даже почтовый клиент предпочитаю традиционный, потому что тонны писем намного проще хранить и обрабатывать у себя, ровно как частенько бывает полезно видеть все заголовки целиком чего во всяких вебмордах если и есть то совсем не удобно. И такие вещи как PGP имеют смысл только локально а не на каком то там сервере.stDistarik
24.11.2016 08:05-26У Вас адъ в голове творится.
Ivan_83
25.11.2016 11:29+2И чо?
2 youROCK
Да и у яндекса с этим всё хорошо, однако оно не работает без инета а для навигации без инета это нормальное состояние.
2 raacer
Всегда пожалуйста :)
2 domix32
Да задрали вы уже тащить в браузер всё это говно.
Для тех кто слишком молод и не помнит: браузер это такая прога для гипертекстового интернета.
Я понимаю что аудитория хомячков огромна и они не в состоянии нихера нормального поставить и даже открыть браузер для них подвиг но то во что превратили браузеры это просто ужас.
В итоге браузер стал хуже отрабатывать основной функционал и при этом поиграть там толком во что то сравнимое по графике с игрушками 10-15 летней давности всё равно не получится.
А учитывая насколько хреново идут дела с прогрессом в кремнии у процессоро делов можно и не надеятся что игры уровня нид форс спид 3 — 1998 года можно будет увидеть в браузере.
Но если хочется деталей — стоит почитать хотя бы тут, на хубре, стать от игроделов где подробно расжовываются все трудности как с графикой так и с геймплеем по сети.
Стоит напомнить что браузеры толком видео проигрывать и то полностью не осилили, какие уж там игры.
Короче, тема: Рич клиент против Веб морды уже довольно старая.
Вполне очевидно что специализированные рич клиенты имеют свою нишу и вытеснить их из неё просто не реально и прекрасный тому пример почтовые клиенты: хомячьё хавает что дают — веб интерфейсы с рекламами, а те кому работать/привыкли к комфорту работают из любимого клиента. А некоторые вообще из консоли, без клиентов, благо POP3/SMTP весьма простые :)
youROCK
24.11.2016 13:59+3Кстати говоря, Google Maps в браузере сейчас вполне сносно работает, можете сами проверить :). Это конечно не навигатор, но вполне серьезное приложение.
Jogger
24.11.2016 18:02Ну ок, научите меня пользоваться Google Maps в браузере при отсутствующем интернете (например, я в другой стране, интернет в роуминге не по карману, местность незнакомая — то есть как раз ситуация, когда очень хочется воспользоваться картой). У всех веб-приложений главный недостаток — невозможность работать без интернета. К сожалению возможность иметь 100% времени быстрый интернет пока не достингнута. Когда/если доживём до этого — тогда да, будет всё равно откуда грузить приложение — из локального хранилища или из интернета.
youROCK
24.11.2016 18:04+1На самом деле, HTML5 manifest как раз позволяет приложениям работать и без интернета. Но я согласен, что если вы хотите оффлайн-навигацию, то нативное приложение будет явно лучше :). Пока что веб-приложениям не особо разрешают хранить много данных локально на устройстве. На iOS, по-моему, ограничение раньше было 10 Мб, а потом подняли до 50 Мб.
trilodi
25.11.2016 03:13+1Сносно и нормально/отлично это совсем разные вещи. Меня например не устраивает слово сносно в наше время
domix32
24.11.2016 14:34Научатся на WebGL держать нормальный FPS для 3D игр и экспортировать из каких-нибудь Unity/UE в веб в один клик, то могут приблизить. А уж если всякие WebAssebly-фишки допилят…
playermet
24.11.2016 17:04+1Осталось только сделать соединение, чтобы 30-гиговые современные монстры игростроя успевали подгружать ресурсы с приемлемой скоростью. Unity и так умеет в веб в один клик.
mkarev
24.11.2016 21:48+1А уж если всякие WebAssebly-фишки допилят…
Браузерное гавно превращается…
Превращается браузерное гавно…
В нативное приложение на c/с++!!!
u010602
24.11.2016 06:33+19Про полную победу кросс платформенных приложений начали говорить и писать, как только они появились. Я лично помню это еще с момента приобретения популярности Явой. Помню как мне с восхищением и предвкушением рассказывали как приложения смогут работать везде, от разных ОС до бытовой техники и телефонов. С тех пор каждый новый виток кроссплатформености приводил к подобным предсказаниям и подготовкам похорон нативных приложений. Правда еще ни одна платформа не лишилась своих нативных приложений. А все потому, что универсальность требует общий знаменатель, а значит часть возможностей железа остается незадействованными, и это серьезный минус. Конкретно у ПВА есть еще один минус — привязка к онлайну. Не знаю как кого, а меня с течением времени все больше раздражают приложения которые не могут работать офлайн или на плохом канале. Т.к. именно в такие моменты мне обычно скучно и я думаю как его убить, а оказывается что телефон практически кирпич без интернета. В итоге я удаляю после первого запуска все, что требует интернет, но не является средством потребления интернета(браузер, месенджер, новости...).
Возможно это ДМА обречены?Pakos
24.11.2016 14:50+2Они сделают PWA, которые могут работать оффлайн (с помощью сервиса, предоставляющего данные), лишь бы не называться нативными. Т.е. пойти сложным путём, усыпанным граблями.
MacIn
24.11.2016 20:19Чем это будет отличаться от native тогда? Ведь то же самое, просто через «виртуальную машину»-браузер и «виртуальный диск» — сервис, представляющий данные. Это уже не native против web, это native против виртуальной машины, а-ля Java vs native.
Pakos
25.11.2016 10:11+2Чем это будет отличаться от native тогда
Лишними слоями, большими тормозами, худшей интеграцией, нестандартизованным интерфейсом. Т.е. все плюшки native пропадут (да, мы говорим не о том native, который на уровне системы. а о том, который внутри JVM и уже имеет под собой слои абстракции, т.е. уже получил часть тормозов, но не стоит усугублять).MacIn
25.11.2016 16:57Ну я именно об этом — по функционалу в лучшую сторону ничем, а по косякам, вызванным слоями абстракции — сильно.
Sayonji
24.11.2016 15:29+2Почему привязка к онлайну? Есть же cache manifest чтобы сохранить весь код и localStorage, чтобы сохранить данные. Насколько я понимаю, и то и то весьма крепкие вещи. По крайней мере первое позволяет мне пользоваться моим простеньким js приложением из хрома уже больше года после того как я нечайно удалил папку с ним на сайте.
Serator
24.11.2016 16:10Application Cache является устаревшей технологией и, скорее всего, будет со временем удалена поддержка сего в браузерах. Service Worker является ее заменой. localStorage для чего-то более-менее простого, для более сложных вещей — IndexedDB.
svboobnov
25.11.2016 00:28Выше уже приводили пример: инета нет(в чужой стране, роуминг), нужна карта незнакомого места.
В LocalStorage или в IndexedDB хорошая карта не поместится (у многих броузеров есть ограничения на объём). Тут вебхрень ваша не работает. Другой пример: хранилка паролей к различным сервисам. Хранить пароли на мобильнике — вообще неразумно, а вот хранить те же пароли где-то в интернетах, в кэше какой-то веб-странички… Ну, кхм, кхе...!?"№!??
JerryGreen
24.11.2016 15:41Если я правильно понял, это уже как разработчик сделает. Такое приложение вполне может работать оффлайн, с локальным хранилищем. А при интернет соединении синхронизироваться с сервером (и оно почти наверняка тебе пригодится, в конце концов ведь фишка таких приложений в кроссплатформенности — попользовался на тефелоне/планшете, сел за комп — продолжаешь пользоваться за компом, не потеряв данные, которые наработаны на телефоне/планшете).
nartamonov
24.11.2016 15:41Конкретно у ПВА есть еще один минус — привязка к онлайну.
Вы ошибаетесь. Одна из ключевых идей PWA, в отличие от классических веб-приложений, — обязательная поддержка работоспособности в оффлайне, это явно указано во всех руководствах по созданию PWA. Как минимум, при отсутствии сети, приложение должно нормально стартовать и отстроить пользовательский интерфейс. Как максимум — позволить пользователю нормально работать с ранее закэшированными данными и синхронизировать все изменения позже, когда появится сеть. Для поддержки offline-режима предусмотрен ряд новых технологий вроде service worker'ов и проч.
Vplusplus
24.11.2016 15:41Полностью согласен. А как теперь ужасно тупят, даже на мощном железе, всякие гугл документы, почта и прочая хрень.
u010602
25.11.2016 07:26Спасибо всем кто написал про офлайн режимы в PWA, не знал.
Посмотрим как оно пойдет, может мне не попадались такие PWA, а может я не замечал что это именно они.
Буду благодарен если посоветуете какие приложения PWA с хорошим офлайн режимом посмотреть. Можно в личку, если тут нельзя постить прямые ссылки.
torrie
24.11.2016 07:57+5Не нативное приложение это огромное ограничение по функционалу и производительности. Если вы нищеброд, делайте ПВА, нормальная организация не позволит себе, чтобы опыт их пользователей был ужасным(а он будет, особенно медленным)
hVostt
24.11.2016 08:18+17PWA это какой-то искусственный и за уши натянутый термин на обычные веб-приложения. Ну да, манифест и иконки всё категорическим образом меняют. С галстуком ты серьёзный человек, с которым можно дела вести, а без галстука ты хрен собачий. Как-то так это выглядит.
azsx
24.11.2016 08:23Сейчас об этом спорить бессмысленно, так как идея подсаживать юзера на абонентскую плату настолько привлекательна, что работодатели ничего нигде никак обсуждать не будут, всё будут перекидывать в веб.
С рекламой юзеры уже проголосовали, многие устанавливают блокировщики рекламы.
Ждём массовых реакций от юзеров на удаления аккаунтов и возмущения от постоянно требуемых абоненток.0x131315
24.11.2016 20:21Интересно, а есть ли смысл пилить рекламу, которую нельзя заблокировать?
Или выхлоп будет минимальный, и лучше положиться на репутацию и донат/пожертвования?
А если реклама не агрессивная, и мелькает где-нибудь в фоне, но юзер ее гарантированно видит?
vintage
24.11.2016 09:09+113636
4848
6060 (значок Apple touch на iPhone)
7272
7676 (значок Apple touch на iPad)
9696
120120 (значок Apple touch на iPhone retina)
152152 (значок Apple touch на iPad retina)
180180 (значок Apple touch для iOS 8+ )
192192
512*512Всем стандартам стандарт, да. Кто сказал SVG? Нет, ты должен подготовить по картинке под каждый тип устройства.
Serator
24.11.2016 16:12+1SVG иконки поддерживаются лишь частично и с ограничениями на различных платформах. Работа ведется. :)
Coffin
24.11.2016 09:36+3Нативные не умрут т.к. для них есть фичи, которые только там и есть, а уж pwa они и не снились.
Есть для каждой из ос стайл-гайды к которым пользователи привыкли.
Нативные будут явно быстрее, меньше проблем с тем, что для pwa надо будет на 25 браузерах все отлаживать или же прийдется писать «ой, сарян бро, но мы только под хром сделали»
Или же, «ну мы типа не следовали стайлгайдам дройда, эпла, майкрософта», поэтому запилил вам свой собственный, хоть он и гавно по вашему мнению, но по нашему он огонь и нам не надо делать Х разных скинов, под разные платформы, а если делать, это ж сколько надо писать дополнительного кода.
«А че оно так лагает?» — ну понимает, это кросс-платформенное, поэтому мы его сделали 1 раз и везде показывается, но за это приходиться поплатиться скоростью.
«А че оно вылетает?» — ну мы где-то накосячили и браузер крашится, но мы поправим.
«Да, но на дройдет не вылетает!» — ну там типа хром лучше отработал.
Ну и так далее.S_A
24.11.2016 10:59В наше время в браузерех куда как проще писать «кроссплатформенный» код (кроссбраузерный по сути).
Однако есть очень популярные ниши, где PWA вряд ли в ближайшее время будут:
1. 3D и прочие очень анимированные игры,
2. Напоминалки и другие приложения, которые гоняют бэкграунд-сервисы на девайсах. Пуши же ведь только при подключении к интернету работают :)
3. САМОЕ имхо ВАЖНОЕ — приложения, которым не нужны сайты! Да-да. Таких полмаркета.Coffin
24.11.2016 11:03+4Сколько живу, столько слышу о том, что «мы изобрели то, на чем можно 1 раз написать и везде будет работать», а когда все это сталкивается с реальными нуждами приложений, то все уходят в нативку :)
vics001
25.11.2016 03:35Приложения для бекапов, антивирусы, фонарик, фотоаппарат, системные… Приложения, которые офлайн режим сайтов… Да практически все топ 100 из любой категории.
Zibx
24.11.2016 12:55+1Всё верно, но не стоит забывать что в андроиде нативными считаются приложения которые уже исполняются в виртуальной ява машине.
Simplevolk
24.11.2016 13:31Это не проблема, вы можете написать приложения на любом JVM языке. Да и термин «нативный» тут применительно к тому, что это «родной» язык+платформа.
svboobnov
25.11.2016 00:33Нуу, я точно не помню с какой именно версии, но в Андроидах появилась компиляция байткода в родной машинный код текущего процессора. Так что, «Шэф! Тут усё окэй».
Aingis
24.11.2016 11:16Кажется, эта идея с манифестом так же мёртворожённа как и объявление
@viewport
в стилях. Потому что когда стоят мета-теги в документе, браузер знает о всех свойствах сразу как загрузилась страница. А так ему надо загрузить ещё внешний файл, распарсить его и только после этого предпринять какие-то существенные действия, возможно, выбрасывая часть ранее сделанной работы. Это увеличивает зависимость от внешних файлов и замедляет рендеринг, особенно в зоне неуверенного приёма сети.
Ну, и Эппл справедливо критикует Service Workers как переусложнённую спецификацию, где для самых простых кейсов нужно много лишних действий. Не секрет, что Гугл разрабатывает её в одиночку под себя. Никаким «стандартом», о котором договорились все разработчики браузеров здесь и не пахнет. Это такой же костыль, как и другие проприетарные вещи (вспомните ActiveX).Chikey
25.11.2016 02:15Это не просто костыль, а кладезь для уязвимостей например построения ботнета https://bugs.chromium.org/p/chromium/issues/detail?id=662443
tangro
24.11.2016 12:30+7Ой, я не могу. Ну ладно бы такую чушь писали мечтатели в каком-нибудь там году 2006-ом, на заре рынка мобильных приложений. Но сегодня, когда уже каждый первый попробовал кросплатформенные обёртки над вебовскими аппликухами и убедился, что годится это только для случая «у нас бюджет 3 копейки, но уже есть готовый сайт, нужны мобильные приложения под все платформы, максимум завтра». Во всех основных случаях либо нужно сразу писать нативное приложение, либо писать его потом, после понимания, что вебовское работать нормально не будет.
dmitry_hidden
24.11.2016 12:44+8Ай-яй-яй, нехорошо вставлять свои рефссылки на Digital Ocean и наживаться на хабравчанах
GremL1N
24.11.2016 13:50+4зато теперь я понял для чего действительно нужны сокращалки ссылок — для маскировки :)
raacer
24.11.2016 14:15+4Плюсанул, а потом задумался…
А что плохого в том, что человек вставил реферальную ссылку? Там написано «я рекомендую». Это — личная рекомендация. Если Вам интересно, Вы кликните, и Вам понравится — почему автор не должен получить за это вознаграждение? Тем более, что при этом и Вы получаете скидку, на сколько я помню. А если считаете рекомендацию плохой — Вы вправе поставить минус этой статье.Newbilius
24.11.2016 15:26+4Если используешь реферальную ссылку, то правило хорошего тона об этом предупредить, тем более что она обычно даёт бонус обеим сторонам. Тут же мало того, что нет упоминания про реф.ссылку, так ещё и ссылка сокращена. Выглядит так, что намеренно умалчивается факт наличие реф.ссылки.
raacer
24.11.2016 15:39+5Я вот не знал о таком правиле хорошего тона. От куда оно? Кто его придумал? Где оно зафиксировано в каком-либо виде? Почему это важно для того, кто переходит по ссылке?
vintage
24.11.2016 21:26+2Потому, что человек рекомендует не потому, что доволен сервисом, а потому, что получает бонус за обман других людей.
raacer
24.11.2016 22:18Хорошо. Я согласен, что это наводит на такого рода подозрения. Но у меня все же остается несколько вопросов:
1. Означает ли участие в реферальной программе, что человек недоволен сервисом, и обманывает людей, рекомендуя его? Я лично очень доволен DO под определенные задачи, и тоже размещал ссылку на него и рекомендовал лично, но только потому, что порекомендовал его и бесплатно.
2. Стоит ли предупреждать читателей о злонамерении, которого нет? Типа «внимание, будьте осторожны, есть вероятность, что я Вас обманываю».vintage
24.11.2016 22:32Участие в реферальной программе означает, что словам рекомендателя нельзя доверять.
raacer
24.11.2016 23:05+3Ничего, кроме усиленного подозрения, это не означает.
Слова могут быть честные, даже если к ним подключена реферальная программа.
Слова могут быть ложью, даже если реферальная программа не подключена.
Вот если Вы уличите человека во лжи, это будет повод для слива его кармы и эффективной борьбы с ложью. А так — это все домыслы, пока никак не подтвержденные.
В качестве возможного оправдания автора, скажу Вам, что деньги, заработанные по рефералке DO, можно потратить только на DO. А если автор сам пользуется DO, то это только подтверждает его честность.vintage
25.11.2016 09:09То, что он им пользуется не значит, что он им доволен.
Говорит он правду или ложь — останется на его совести. Но словам его нельзя доверять, так как его положительная рекомендация мотивирована материальной выгодой.
А если про ангажированность нам ничего не известно, то в дело вступает презумпция невиновности.
andybelo
24.11.2016 13:26+1Мобильных нативных приложений надо писать всего два — для iOS и для Andriod. Причём только UI.
evocatus
24.11.2016 16:14+1У меня была Nokia Lumia и я её любил — платформа отличная. Но из-за таких как вы я теперь на андроиде.
Labunsky
24.11.2016 18:37+3Вот уж эти злые программисты, не хотят просто так писать код и развивать чужие платформы
Archon
25.11.2016 15:04+3Разработчики ушли не просто так, а из-за того, что им последовательно плевали в рожу с момента выхода платформы, меняя средства разработки и стек технологий каждую мажорную версию, каждый раз при этом напрочь ломая обратную совместимость.
В качестве вишенки на торте к этому прилагались жутко дотошные ревьюеры (в отличие от Эпла, русскоязычные приложения проверялись русскоязычными ревьюерами, и они реально докапывались до каждой буквы на кнопках), странные решения в некоторых местах (попробуйте, например, локализовать название приложения) и дикие ограничения платформы.
Не могу винить разработчиков за то, что они отказались участвовать в этом филиале ада ради прироста аудитории на 1-3%.
WebMonet
24.11.2016 13:54Я с удовольствием посмотрю, как из PWA включить или выключить BlueTooth на устройстве или считать показания акселерометра.
ZoomLS
24.11.2016 14:10-1Посмотрите — Firefox OS.
azsx
24.11.2016 14:30+1Более верная ссылка. https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API
Я с удовольствием посмотрю на пользователей, которые при посещении какого-то сайта будут обнаруживать, что у них включается BlueTooth.WebMonet
24.11.2016 14:53+1Круто!
Non-standard
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.
raacer
24.11.2016 14:57+1Посмотрите на пользователей, которые при запуске нативного приложения обнаруживают, что у них включился BlueTooth. Почему с веб-приложениями должно быть как-то иначе?
azsx
24.11.2016 15:40Потому что я при установке приложения выбираю разрешения для него. Затем могу не ставить обновления и иметь то же самое приложение, которое в теории кто-то проверял в маркете или сторе.
А в Вашем случае, даже если я ткну «разрешить» я разрешу включать блютуз не приложению, а сайту. Сегодня, хозяин сайта, ради эфемерной возможности подсадить меня на подписку не даёт мне оффлайн версии, только с онлайна. Завтра этот предприниматель может решить, что его сервис мало окупаем, лучше соорудить ботнет. И никто его сайт проверять не будет.
По этой причине я могу дать доступ софту к оборудованию, а сайту не хочу. Но это теория, нет такого доступа у сайтов, совсем нет.raacer
24.11.2016 15:42А что, если законы будут обязывать владельца сайта повторно запрашивать разрешение при изменении функционала сайта, связанного с этим разрешением?
azsx
24.11.2016 16:11Тогда данный минус снимается. Как реализовать такой закон?
raacer
24.11.2016 16:55Это уже другой вопрос. Я не настолько хорошо разбираюсь в юриспруденции, чтобы ответить на него.
azsx
24.11.2016 17:13+1Сойдёмся на том, что это невозможно?
raacer
24.11.2016 17:22+1Нет, не сойдемся :) Если я не умею, это не значит, что это невозможно :) Более того, думаю, что это очень даже возможно. Не сложнее, чем GPL. Просто это вопрос не ко мне, а к юристам.
Jogger
29.11.2016 17:14-1Глупый какой-то довод. Воровать тоже вон по закону запрещено, но люди почему-то предпочитают ставить на дверь замок. Только вот если в случае с нативными приложениями «замок» для разрешений возможен, то для онлайн-приложений — нет. Полагаться на честность владельца сайта — я, простите, не хочу.
raacer
29.11.2016 18:56А что вас защищает от установленных приложений? Есть какой-то способ удостовериться, что в них нет бекэнда или зловредного кода?
Какие-то глупые предположения о глупости доводов. Почему, если не понятно — то сразу глупый? Глупое какое-то рассуждение. )))Jogger
29.11.2016 20:59-1Способ удостоверится очень простой — пользоваться и наблюдать за поведением. В случае с нативным приложением, я первое время вынужден подозревать его, и следить за тем, что оно делает. После некоторого периода наблюдений — я уже могу доверять этому приложению. Помимо моего опыта — есть ещё опыт людей, писавших отзывы на маркете. Далее я могу, в случае нативных приложений, контролировать, обновлялось ли это приложение. И пока я его не позволил ему обновиться — я могу быть уверен, что его поведение не изменится, т.е. оно остаётся доверенным. В случае, если приложение обновлялось — я буду об этом знать, и буду готов к тому, что поведение могло поменяться.
В случае онлайн приложения — я не могу никак контролировать, что приложение не обновилось. Более того, я вообще не могу быть уверен, что при втором запуске это будет то же самое приложение, а не что-то другое. Я не только не могу помешать ему обновиться, я даже не узнаю об этом. Отзывы пользователей тоже не помогут — они-то будут для старой версии приложения.
Собственно то, что вы не понимаете этой разницы и делает ваши доводы глупыми.raacer
29.11.2016 21:04Вы не учли, что приложение может долго не проявлять злонамеренных свойств, пока не насобирается большое количество пользователей и положительных отзывов. Оно так же лего может изменить свое поведение, как и сайт, если разработчик заложил такую возможность.
Собственно то, что Вы не понимаете этой возможности, и делает ваше мнение глупым. )Jogger
29.11.2016 21:16-1Я эту возможность прекрасно понимаю. Только вот случаев таких не припомню. Хотя бы потому, что злоумышленники редко строят такие далекоидущие планы. Более того, меня беспокоит не то, что создатель приложения злоумышленник. Меня беспокоит то, что злоумышленник может захватить аккаунт разработчика. В случае нативных приложений — это затронет только новых пользователей. В случае онлайн приложений — это затронет абсолютно всех пользователей.
raacer
29.11.2016 21:21Хорошо. Тогда предлагаю полагаться не только на юристов, но и на технику. Например, можно сделать расширение для браузера, которое будет следить за изменениями в скриптах, и сбрасывать разрешения в случае их изменения. Как-то так…
trilodi
29.11.2016 21:26+1Вы не учли момент что большинство приложений сейчас используют контроль версий, после нескольких обновлений в маркете приложение на телефоне перестает работать, если это приложение использует какое либо апи. Заставить пользователя обновить приложение это не проблема
Хотя бы потому, что злоумышленники редко строят такие далекоидущие планы.
Тут вы тоже заблуждаетесь, нормальные группировки строят именно далеко идущие планы, используют социальную инженерию для совершения точечных ударов.
raacer
29.11.2016 21:12Ваше мнение было бы немного умнее, если бы Вы хотя бы заикнулись об эвристическом анализе. Но основывать свои выводы на наблюдении за приложением и чтении отзывов — это несерьезно.
Jogger
29.11.2016 21:32-1Если бы эвристический анализ был хоть немного эффективен — вирусов бы давно не было. Если вы считаете что компьютер умнее вас, у меня для вас плохие новости — похоже он действительно умнее.
raacer
29.11.2016 21:39А Вы, конечно же, умнее компьютера, и, стало быть, умнее меня :) А на Хабр пришли, чтобы сеять разумное, доброе, вечное… О чем как бы намекает Ваша карма.
Jogger
29.11.2016 21:49-1Да, я умнее компьютера. Как минимум я легко справляюсь со множеством задач, перед которыми компьютер пасует. Дальнейшие выводы ваши просто указывают на то, что курс логики в вузе вы прогуляли (вуз-то надеюсь хоть закончили?). Например, то что я умнее компьютера (и тем более то, что я умнее вас), не делает меня умнее всех. Это ошибка в логике номер раз. Ошибка в логике номер два — даже будь я умнее всех — это вовсе не значит, что я обязательно хочу этим делится. Ошибка номер два. Ну и наконец, карма никак не характеризует ни интеллект, ни желание делиться знаниями — она лишь характеризует отношение сообщества к индивидууму. Более того, поскольку мой аккаунт в режиме read&comment — карма не характеризует даже этого! Она показывает, скольким людям я НЕ нравлюсь, но абсолютно игнорирует то, скольким я нравлюсь (если такие есть). А поскольку трудно найти человека, который нравится абсолютно всем — то карма не показывает ровным счётом ничего. Не многовато ли ошибок в логике для такого короткого абзаца?
raacer
29.11.2016 23:17Вы считаете дискуссию с переходами на личности образцовым поведением образованного человека? Этому Вас в ВУЗе научили?
trilodi
29.11.2016 21:51Эврестический анализ не идеален, но утверждать что он не эффективен как минимум неразумно. Вирусы были, есть и будут всегда, и никакой анализ не спасет, существуют всякого рода пакеры которые помогаю если не полностью то частично обойти эвристику, так же как и человеческий фактор (человеческие проверки). Поверьте мне, если вы станете интересны по каким либо параметрам, то вам все равно просунут зловредный код
Jogger
29.11.2016 22:08Если я стану интересен по каким-либо параметрам — я буду пользоваться только простыми звонилками, причём каждый раз буду звонить с нового телефона. Речь идёт о среднем пользователе, а не о персонализированной атаке.
А эвристический анализ — это попытка компьютерной имитации человеческого анализа. И, как любая имитация — она хуже оригинала.trilodi
29.11.2016 22:18И, как любая имитация — она хуже оригинала
Но она быстрее, и направлена на то, что бы выяфить факта попытки по определенным критериям. В эврестический анализ входит анализ кода и разрешений. С анализом кода эвристика справится гараздо лучше и быстрее в некоторых случаях, так как при большом объеме кода человеку трудно будет найти нужный участок.
Если я стану интересен по каким-либо параметрам — я буду пользоваться только простыми звонилками, причём каждый раз буду звонить с нового телефона.
Я не подразумевал того, что вы станете супер мега крутым и за вами начнут охотится, интересным вы можете стать будучи работая в банке даже простым секретарем, или еще какую либо должность занимать будете в финансовом или стратегическом учреждении. А то что вы написали это из разряда шпионских игр.
Речь идёт о среднем пользователе, а не о персонализированной атаке.
Как раз средние пользователи и попадают под направленную атаку, как минимум что бы угнать денег по больше, как максимум что бы подобраться к тому у кого их можно угнать. Связать человека с кругом лиц с которым он плотно общается не составляет никакого труда, для этого даже не нужно быть гуглом, достаточно установить ему простенькое приложение, которое просто проанализирует ваше поведение, данные, и тд, и сводную информацию отдаст хозяину, более того, можно сделать так что вы сами предоставите этой программе эти привелегии. Социальная инженерия творит чудеса.
От тюрьмы и от сумы не зарекайся…
Сегодня я считаю самой безопасной системой iOS, но и при этом понимаю что она не безупречнаJogger
29.11.2016 22:24Вы серьёзно недооцениваете силу неуловимого Джо!
trilodi
29.11.2016 22:28В наше время нет неуловимых, все упирается в время и актуальность. Разве что вы не старовер))) Анонимность это иллюзия невыгодная никому
Jogger
29.11.2016 22:57Вы правда не знаете анекдота про неуловимого Джо, или нарочно игнорируете отсылку? Речь о том, что актуальность заражения отдельного человека — может стремиться к нулю. И единственный его шанс получить зловреда — нецелевое заражение. Поскольку, как вы правильно говорите, если понадобится — до вас всё равно доберутся, защищаться в первую очередь стоит именно от нецелевых заражений — потому что от целевых всё равно не выйдет. А лучшая защита от нецелевых заражений — здравый смысл и инстинкт самосохранения. Если с этим плохо — тогда уже идут суррогаты типа антивирусов, эвристики, и т.п.
trilodi
29.11.2016 21:22+1Я сам не фанат PWA, но интересуют некоторые моменты по вашему комментарию:
Способ удостоверится очень простой — пользоваться и наблюдать за поведением.
Очень интересует момент каким образом вы наблюдаете за поведением приложения? В предвкушении ответа думаю вы наблюдаете какие сервисы приложения работают в фоне, сколько ест батареи и интернета, скажу сразу это обходится на раз два, даже без напряга. Что бы выявить злонамеренное действие необходимо декомпилировать приложение и выявить зловредный код. Даже отключение интернета не поможет!
Помимо моего опыта — есть ещё опыт людей, писавших отзывы на маркете.
Я бы не рекомендовал вам смотреть на отзывы как на что то авторитетное, их накрутка не дорогая, особенно для злоумышлеников, какие то 100-2000 это совсем копейки.
В случае, если приложение обновлялось — я буду об этом знать
Тут вы тоже заблуждаетесь. Есть такая штука как динамическая подгрузка библиотеки, особенно это в андроид хорошо реализовано, более того это идеология андроида, посмотрите как грузят ресурсы игры после установки и запуска, если приложение больше 100мб. Так же можно подгрузить библиотеку и выполнить код размещенный в библиотеки, и тут вы тоже ничего не поймете.
Все вышесказанное относительно онлайн приложений касается и нативных приложений. Даже логику нативного приложения можно изменить в любой момент без обновления приложения, достаточно заранее заложить функционалJogger
29.11.2016 22:02> Есть такая штука как динамическая подгрузка библиотеки
Ну вот, теперь вы разбудили моего внутреннего параноика. Выходит ситуация в андроиде ещё хуже, чем я думал. В любом случае, спасибо за информацию.trilodi
29.11.2016 22:03В андроид ситуация аналогична windows, возможности злоумышлиника практически безграничны, а если у вас установлен рут, то вы вообще золотая жила, какие бы вы там права не разрешили приложению
qrKot
30.11.2016 11:32Насчет «невозможно» переформулируем как «концептуально невозможно» и сойдемся во мнении, ок?)
raacer
30.11.2016 13:07Что концептуально невозможно? Реализовать закон, запрещающий без согласия пользователя подсовывать ему обновленное веб-приложение? Я Вас не понимаю! :)
Jogger
30.11.2016 19:40-1Действительно, что сложного. Ведь есть же законы, запрещающие создание вирусов и взлом компьютерных сетей. Поэтому вирусов не существует, а компьютерные сети не взламывают. Всё так просто.
raacer
30.11.2016 21:59А теперь еще раз прочите вопрос.
Jogger
30.11.2016 22:06-2А теперь ещё раз прочтите ответ и первый раз в своей жизни подумайте головой.
raacer
30.11.2016 22:50Прочитал.
Напомню мой вопрос: «что концептуально невозможно?»
Где Вы видите ответ на этот вопрос?
Я вижу только то, что Вы ведете беседу с самим собой. Возможно, занимательную, но не имеющую отношения к диалогу.TheShock
01.12.2016 04:27Ребята хотят сказать, что даже разработка и введение закона де-факто ничего не изменит.
raacer
01.12.2016 12:50А Вы как считаете? Ничего ли не изменит, и почему?..
TheShock
01.12.2016 15:42законы будут обязывать владельца сайта повторно запрашивать разрешение при изменении функционала сайта, связанного с этим разрешением?
Потому что:
1. такой закон должен быть во всех странах (а это уже сложно)
2. трудно проследить выполнение и доказать нарушение (да, у меня изначально этот функционал был, просто не включался/включался реже/включался, но вы не обращали внимание)
3. никому это не нужно
4. это создает сложности хорошим разработчикам и никак не мешает мошенникам (приблизительно как с оружием. Оно запрещено в общем виде, но все серьёзные преступники имеют по боевому пистолету, а хорошие люди получить его не могут).raacer
01.12.2016 19:52Вы, ответили сразу на два вопрос: «легко ли ввести такой закон» и «изменит ли он что-то, будучи принятым». Это похоже на всю данную ветку. Кто о чем… невозможно вести дискуссию, не договорившись о предмете :)
Поскольку диалог затянулся и ушел в русло выяснения отношений, всем, кому не нравятся законы по тем или иным причинам, предлагаю сосредоточиться на техническом варианте. Самое начало разговора было о том, что нет контроля изменения сайтов без ведома пользователя, и техническое решение больше похоже на то, к чему все привыкли, имея дело с нативными приложениями.trilodi
01.12.2016 20:09Дело в том, что концепция сайтов такова, что не требуется никакого разрешения от пользователя на изменение контента. Владелец сайта является владельцем интелектуальной собственности, и он в праве решать что делать со своим творением в пределах действующего законодательства. PWA это те же самые сайты, только имеют полноэкранный режим и иконку на рабочем столе.
Кстати сказать все тоже самое касается и приложений, создатель приложения мржет изменить самое приложение (как я писал выше), и для этого даже не нужно обновлять приложение в маркете, и в этом нет ничего противозаконного.
Другое дело если приложение требует каких либо разрешений для доступа к апаратным средствам телефона/планшета. Это можно реализовать в самой оболочке браузера, как это сейчас реализовано на уровне платформы Android. Этакая песочница, которая не даст что либо делать пока пользователь не разрешит. Например зачем PWA доступ к смс? — это уже потенциальная угроза, подобный функционал можно сразу же исключить.
Самое разумное это сделать разделение между идеологией PWA и нативных приложений. Если владелец ресурса не посчитал нужным (или не хватило средств) что бы сделать нативное приложение, то надеятся на то, что он проследит за безопасностью своей системы не стоит. Веб плох тем, что взломать сервер, и засунуть в него зловредный сплоит не особая проблема сегодня, большинство сайтов взламываются. А вот взломать аккаунт сторов сложнее, там часто срабатывает детект и аккаунт холдится.
Так что законодательство тут не нужно, нужна правильная песочница для исполнения PWA, с разумным списком разрешений, и правильно построенном уровне доступа к этим разрешениям, к таким разрешениям кстати можно отнести и коцептуальное изменение приложения, и многие проблемы решаться сами собой
svboobnov
25.11.2016 00:39Пишем: Всем владельцам веб-приложений при начале работы пользователя реализовать запрос разрешений. Иначе — Роскомнадзор, бан-лист и прочий ай-ай-ай.
Serj_By
29.11.2016 16:48Законом такое регулировать довольно наивно. Человек захотевший, как в комментарии выше, соорудить ботнет — уже пошел против закона. Еще одно нарушение, боюсь, что его вряд ли остановит.
А вот решить ту же проблему на уровне браузеров и стандартов — вполне. Чтобы при доступе к «железячным» API запрашивалось разрешение, как сейчас происходит при запросе к гео-апи и к апи уведомлений. По-моему, довольно логичное и здравое решение.
shevmax
24.11.2016 14:21+6А потом люди удивляются, почему играя в Крестики-Нолики аккумулятор разряжается за час. Главное не забывать — каждая дополнительная прослойка увеличивает кол-во памяти и требования к CPU.
Вот так вот и живем, раньше на PC 1 ггц CPU и 256 мб ОЗУ можно было рубиться в кучу игр, запускать множество программ. А сейчас этого едва хватит чтобы открыть калькулятор на смартфоне.
Сейчас такая тенденция в развитии ПО, что потребность в ресурсах прогрессирует быстрее, чем сами ресурсы.lightman
24.11.2016 15:14+1Иногда мне даже хочется чтобы производители железа лет этак на 10 столкнулись с серьёзными проблемами дальнейшего роста производительности и индустрии волей-неволей пришлось бы вспоминать такое слово из лексикона их отцов и дедов как «оптимизация».
crea7or
24.11.2016 18:06Роста уже нет давно. Новые процессоры дают жалкие проценты прироста и обычно на особых задачах.
azsx
24.11.2016 18:21Надо отметить, что arm процессоры намного слабее intel'ов при тех же герцах в спецификациях. Это одна из причин, почему приложения переводят на сайты, нет места, слабые процессоры, нет доступа к фишкам на уровне железа, чтобы оптимизировать софт под платформу. Скачайте архиватор rar и сожмите на спор на андроид смартфоне с ssd карточкой и на компе 1 гб текстовых файлов. Компьютер производительнее в разы.
crea7or
24.11.2016 18:31А я про десктопы как раз.
azsx
24.11.2016 18:59Тогда я не согласен. За последние 10 лет на десктопах рост очень хороший для процессоров. Многоядерность, новые инструкции, меньше серых пятен на кристале. Но очень маленький L кеш, слабый прирост по скорости оперативной памяти, отобрали многие оптимизации (типа компилятор лучше знает).
Зато расчёты на видеокартах впечатляют. Памяти стало больше.crea7or
24.11.2016 19:02Ну 10 это много. Пара последних поколений процессоров ничего почти не даёт, рост на проценты.
0x131315
24.11.2016 21:18WinRAR
Armv7 Neon (2012) 2c/2t 1GHz 300kb/s
Intel HT (2005) 1c/2t 3GHz 300kb/s
Amd APU (2012) 2c/4t 4GHz 3000kb/sPakos
25.11.2016 10:20А размер получившегося архива? Чтобы убедиться что в одном режиме сжимали.
0x131315
27.11.2016 04:16Это внутренний тест архиватора. Там нет выходных данных.
Режимы разные естественно — максимальное сжатие и максимальное количество потоков.
Арм и интел в два потоках, амд в 4 потока. В 2012 не было rar5. Только амд использовал 64-х битный набор инструкций, который явно полнее и быстрее 32-х битного.
Но процессоры шагнули далеко вперед: самый дешевый медленный мобильный амд в 10 раз обходит топовый десктопный интел, который старше на 7 лет. Это показатель.
Интелы 2012 в 8 потоков достигали 8000кб/с. А сейчас пошли 12 и 16 поточные интелы.
Т.е. отрыв не только по частоте и потокам, но и по эффективности: больше инструкций на такт, и инструкции более эффективные, обрабатывают больше данных за раз.
Любопытно другое: 2Вт смартовский арм эффективнее 150Вт десктопного интела, раза в три. Не смотря на явный проигрыш в железе: арм — простейшая железка без каких-либо «взрослых» систем, которые и сьедают миллиарды транзисторов.
Прогресс определенно есть, и огромный.
И это был срез 2005-2012, а сейчас на дворе почти 2017. Современное железо должно быть просто космической мощности.azsx
27.11.2016 08:12Раз тест меряет чего-то там в своих попугаях, то моё предложение остаётся в силе. Если у вас есть новые процессоры — скачайте и сожмите. Так как когда я на процессоре arm пытался работать как на печатной машинке, то проблемы бывали. Но как только дело касалось распознавание текстов, пакетной обработки графики, сжатия данных — то плашет целиком проигрывал даже atom'у по сути объясняя почему arm потребляет так мало ватт (потребляет мало, так как мало работает). ps Вдруг вам искать лень https://play.google.com/store/apps/details?id=com.rarlab.rar&hl=ru и на компьютере также нужен ssd.
Сейчас я это бросил.
andybelo
29.11.2016 21:49Оптимизация уже не возможна. Нужна архитектура совсем другая. Вот уже стихли «квантовые новости», и прочая нечисть про суперматериалы, где атомы имеют меньший размер, и квантовая логика, где преодолён предел и можно сжать любой файл до одного бита. Но бит может иметь коньтинуум значений, а не два: 0 и 1.
Roumed1
24.11.2016 15:43+1А все-таки интересно услышать сторонников PWA.
Мнения против, действительно, ценны, но тут либо дискуссию начинать, либо во второй статье смысла не будет.
Свежих аргументов в ней наверняка не прибавиться.knotri
24.11.2016 19:40Я сторонник. (Я frontend). Собственно есть куча "бизнес" приложений. У каждого ресторана по приложению, у магазина типа АШАН по приложению, и так далее. Тысячи их.
Приведу пример возможных PWA:
словарь слов на англ для изучения.(типа lingoleo)
приложение кинотеатра(новые фильмы, цены, забронить билет)
приложение ресторана(новые блюда, цены, забронить столик)
приложение соц.сетей
записная книжка
интернет магазины(новые товары, цены, купить)
почта
хабр, гиктайм, сайты типа thequestion.ru
расписание общетсвенного транспорта, карты метро, приложение аеропорта
slack, skype
счетчик калорий.
погода
подбор одежды по настроению
читалка книг.
музыка, Ютуб
стековерфловplayermet
25.11.2016 01:10Вопрос был не про список примеров, а про аргументы в пользу PWA.
Какие например преимущества PWA даст для записной книжки и читалки книг? Первое должно открываться как можно быстрее, а второе как можно меньше садить батарею. PWA ничему из этого не способствует.trilodi
25.11.2016 03:31Первое должно открываться как можно быстрее
Нативное откроется и загрузит данные на много быстрее, конечно зависит еще от типа данных, но все равно быстрее
а второе как можно меньше садить батарею
Сегодняшняя реальность такова, что в большинстве случаев PWA быстрее посадит батарею, так как рендеринг WebView очень прожорлив
knotri
25.11.2016 11:09Так это, у меня нет желания устанавливать весь тот "мусор" что я выше перечислил. Особенно когда у каждого интернет магазина по приложению, у каждого ресторана по приложению. А если это будет PWA на которое я набрел в инете, сразу увидел, и уже потом решил добавить ярлык на рабочий стол то будет гораздо круче. Я сначала нашел крутой ресторан, и только его добавил на рабочий стол.
Собственно основная фишка PWA что оно берет свои плюсы от двух вещей — нативный и веб приложений, а именно:
от веба: друг скинул в соц.сети ссылку — мы сразу перешли, видим результат, ничего не нужно скачивать, ждать. Кроссплатформенность(в будущем если взлетит).
от приложений: возможность работать в офлайне, ярлык на рабочем столе. Производительность телефоном растет, а огромная куча приложений (как тот мусор что я перечислил выше) сложнее не становятся. Счетчик калорий и интернет магазин уж точно лагать не должен, даже на относительно старых устройствах.trilodi
25.11.2016 11:22Счетчик калорий и интернет магазин уж точно лагать не должен
Ну что уж лукавить, давайте вообще забьем на производительность!? Как разработчик натива могу сказать что стараюсь выжать из кода максимум что бы и отзывчивость была лучше, и потребление ресурсов меньше. Отзывчивость в PWA будет еще ой как не скоро, какие бы показатели небыли у смартфонов. Многие смартфоны так напичканы, что на них можно шатл запустить при желании, но веб все равно не отзывчив. Да что уж говорить о мобильных ресурсах, на десктопах веб еще не на столько отзывчив что бы можно было хоть как то задуматься о том что бы им заменить все и вся!
У всего должна быть своя нисша, к примеру мне вообще не нужно приложение ресторана, ну вот вообще извините меня, когда надо открыл сайт и нашел что нужно, я даже иконку не буду на рабочий стол ставить что бы не захламлять его, а вот на доставку еды любимую я лучше поставлю приложение, так как оно отработает быстрее нежели PWA и не будет бесить своей неотзывчивостью, я не для этого тратил десятки тысяч на аппарат что бы наблюдать как что-то тормозит жудко, тоже самое касается и интернет магазинов, и музыки, да и практически всего что необходимо для регулярного использования
Как писал в одном из комментариев тут, буквально сегодня в нативе нужно было сделать окно с WebView в котором открывалась страничка, страничка подгружается моментально, но вот в сравнение в 1 приложении, отзывчивость самого приложения во много раз лучше нежеле страничка в webview в том же приложенииtrilodi
25.11.2016 11:29Кстати ко всему выше сказаному, я не в коем случае не убеждаю отказаться от данной технологии, у каждой технологии есть своя нисша и есть свой рынок потребителей. Вам например удобна эта технология и вы ее используете, но говорить что она готова заменить натив это совсем не правильно
knotri
25.11.2016 15:37Погодите, ресурсы как батарея мы конечно потеряем. Но вот 60 FPS и отзывчивость на счетчике калорий получить с PWA не так уж и сложно.
А в интернет маганизе, вы уверены что она нужна? Ну если я нажму на карточку товара, а пока она развернутся в детальную пройдет секунда — то черт с ним. Это не настолько большой минус для меня как скачивания приложения(ожидания порядка 15-45 секунд), и последующее захламление памяти устройства.
trilodi
25.11.2016 17:01Но вот 60 FPS и отзывчивость на счетчике калорий получить с PWA не так уж и сложно
FPS может и не сложно получить, а вот с отзывчивостью будет все равно беда, ну или опровергните это, сделайте пример. Я не видел не 1 веб приложение которое хоть сколько бы близко было по отзывчивости схоже с нативом. Я как раз перешел от веб разработки на мобильные платформы, и решил делать все нативно а не накостыляхknotri
25.11.2016 22:36Я пилю на работе обычный сайт, cf.ua (версия не актуальна, я пилю на виртуалке), у него также есть приложения.
Тестирую сайт я с айфона — отзывчивость вида "показать полный текст статьи", "открыть попап", "открыть меню гамбургер". Отрабатываются на глаз мгновенно. Переход по ссылкам — порядка секунды(тут дело от инета зависит больше). Открытие всяких дропдаунов — мгновенно.
andybelo
30.11.2016 10:08PWA.нужны когда локально нет ресурсов, для дисков, для памяти, для параллелизма, для онлайн камер и т.д.
trilodi
25.11.2016 03:27музыка, погода, slack, skype, расписание общетсвенного транспорта, карты метро, приложение аеропорта, почта, записная книжка, и тд Вы сможете это все сделать на столько же отзывчивым как и нативное приложение? Особенно касается это мессенджеров, музыки да и всего выше перечисленного. Буквально сегодня делал нативное приложение, и в нем нужно было реализовать пару экранов с WebView, в который загружались заготовки HTML форм, и вы знаете, работают эти страницы в разы медленнее их нативных аналогов, и да я сравнил с нативными аналогами, так как изначально это было нативно сделано, но заказчик пожелал с сервера данными окнами управлять.
Просто мы немного забываем, что по мимо мегаполисов есть еще и переферия, где интернет оставляет желать лучшего, да и аппараты далеко не у всех топовыеknotri
25.11.2016 15:43Тут еще может быть такое дело что вы хороший java разработчик, но плохой javascript.
Может вы сравниваете качественное, оптимизированное приложение на java, против говнокода на javascript написаного на коленке за 2 часа?
И да, я считаю что оно может работать 60 fps, по поводу отзывчивости, что имеется в виду? Как быстро открывается попап после нажатия на кнопку? Тут трудно сказать.
Я сейчас делаю обычный вебсайт который тестирую на iphone 6 и nexus(хз какой) — все очень плавно (скролл в контейнерах, анимация нажатия, открывашка popup-ов). Это при том что я особо не оптимизировал ничего для телефона.
Ах да, еще я пользуюсь мобильной версией вк с ipod 2gen (очень старое устройства, 400 MHz), скролл плавный, похоже что 60 фпс. Отзывчивость (переход в пункт меню после клика на этот пункт меню) конечно хуже, порядка 1-2 секунд. Но это же старое устройство!
trilodi
25.11.2016 17:09Как быстро открывается попап после нажатия на кнопку? Тут трудно сказать.
Именно, под отзывчивостью я имею введу реакцию отклика приложения на действия пользователя.
Тут еще может быть такое дело что вы хороший java разработчик, но плохой javascript.
Может вы сравниваете качественное, оптимизированное приложение на java, против говнокода на javascript написаного на коленке за 2 часа?
Я на swift и на java стараюсь писать код максимально отлаженый и вылизаный, да и когда веб разработкой занимался и javascript старался так же отлаживать, на десктопе отзывчивость была более менее приемлемой для меня, но это был максимум что можно было выжать, в то время как этот же код в мобильных устройствах работал крайне тормознуто. Сделать отрисовку 60fps в наше время это не особо сложное дело, а вот сделать реакцию на действие пользователя такой же как и в нативе не получится.
Вы видимо не берете в расчет тот факт что 60fps на более менее нормальном устройстве превратяться в 30-40 на устройстве 2х летней давности
Ну а что бы опровергуть мои слова кто нибудь бы привел хоть 1 пример такого приложения которое бы работало так же быстро как и натив
Я не в коем случае не против этой технологии, я против того утверждения что веб готов заменить натив в полной мере, мало того не готов, так это еще и не скоро произойдет, не в ближайшие 5-10 лет как минимумknotri
25.11.2016 22:45Так я же на 6 айфоне тестирую, а уже 7 вышел. Как раз два года получается)
Дома нет айфона — открыл с айпада — время открытия попапов на глаз немного заметно, порядка пол секунды, может чуть меньше. Возможно это из-за того что браузер 300мс ждем чтоб определить что это клик, а не дабл клик.
gribnoysup
25.11.2016 03:51Зачем? Вот же вам авторитетно люди не из этой сферы всё расписали выше, еще сторонников каких-то слушать, тьфу
richtrr
26.11.2016 00:24+1Веб-платформа никому не принадлежит. Это дает больше свободы в том как можно её использовать. Соответственно для PWA существенный плюс в том, что они не привязаны к магазинам приложений! Ну а в остальном — просто это как-то работает ;)
Roumed1
26.11.2016 12:26А что вы имеете ввиду под "дает больше свободы"?
richtrr
26.11.2016 23:54+1В PWA можно публиковать всё то же, что в любом веб приложении, на любом сайте, а через дистрибьютора только то, что он Вам разрешит в своем «соглашении». Во всех двух каталогах мобильных приложений действует премодерация, непрозрачное ранжирование и непрозрачный поиск.
AcckiyGerman
24.11.2016 15:43У каждой технологии свой ареал обитания.
PWA отлично впишется для всяких твиттеров и прочих социалочек. Я бы с удовольствием заменил, например, монструозный facebook messenger каким нибудь легковесным PWA.
Shamov
24.11.2016 17:13+1Забавно, что речь всё время идёт о форме приложений, а не об их содержании. Типа, приложение может делать что угодно. Если оно нативное, то оно обречено, а вот если веб-прогрессивное, то его неминуемо ждёт успех. К сожалению, я совсем не интересуюсь мобильными приложениями и пользуюсь в основном десктопными. А то я бы покритиковал эту позицию более предметно.
skssxf
24.11.2016 19:40PWA — это движение от веб-приложений к нативным приложениям. Но можно сделать и наоборот. У нативных приложений сейчас есть пара ключевых недостатков: их нужно грузить, устанавливать, и они находятся в сторонке от веба (в магазинах приложений). В принципе, можно научиться грузить нативные приложения по частям, скачивая в первую очередь только то, что нужно для отображения текущего экрана, и дальше уже в фоне, пока пользователь разбирается со стартовой страницей, например. При этом не делать церемониального процесса установки, чтобы не пугать пользователя. Пусть он кликает по ссылкам, и приложения начинают работать немедленно. Если не зацепило — ушёл и забыл, а в противном случае просто закрепил приложение, и вот оно в твоём распоряжении — быстрое, полнофункциональное, неявно установленное.
Pakos
25.11.2016 10:30Тогда как быть с разрешениями? Или давать всё (включая рута? не пойми какому приложению), или не давать ничего, но не факт что можно запросить дополнительное разрешение в процессе (зоопарк систем разный, где получится — где нет).
bitver
24.11.2016 19:40+1После таких статей так и хочется выйти из песочницы. Особенно многократное упоминание Apple и его продукции, которые не поддерживают PWA во всей их красе.
iperov
24.11.2016 21:07мда
телефоны развиваются, процессоры в них ускоряются,
нативные приложения* тем самым работают еще быстрее и меньше требуют батарейки
и тут бац, Progressive Web Apps, и всё по-новой.
Каждый раз когда выходит новый уровень абстракции, приложения из 3х кнопочек снова тормозят.
*прошлый уровень абстракции
trilodi
25.11.2016 03:18Ну а как быть с отзывчивостью? Я не видел не одно WebView приложение которое было на столько же отзывчевое как и нативное. Это только доля дегтя. Вторая часть это монетизация приложений. Бесплатные приложения часто монетизируются посредством рекламы. На сегодняшний день мобильная реклама в разы дороже нежели веб реклама! Так что я сомниваюсь что данная технология получит давольно широкий охват в ближайшее время. Но самая большая проблема это конечно отзывчивость
lxsmkv
25.11.2016 03:51Была у меня тоже когда-то мысль, что при посещении вебстраницы телефон может загружает что-то вроде апплета — т.е. практически нативное приложение которым можно пользоваться без установки. Вот бы было чудесное перерождение умершей технологии ява-апплетов, думал я.
AKhatmullin
25.11.2016 08:33+1Вот буквально как только начал заниматься iOS разработкой примерно 3,5 года назад, то с того времени периодически слышу заявления, что вот-вот-вот уже отомрет нативная разработка и все-все-все перейдут к кроссплатформенной разработке. Но увы! Каждый раз после взаимодействия с такими приложениями пропадает желание повторно их запускать в виду ужасающей прожорливости, низкой производительности и отвратительной отзывчивости.
Время покажет, но мое мнение таково, что конечно технологии будут развиваться, но при этом будут развиваться не только веб технологии, а это значит что и возможности PWA станут шире, но при этом и нативные приложения будут шагать вперед и по прежнему опережать самые разные универсальные решения.
Bimawa
25.11.2016 10:04+2Ураа первый раз на хабре зоголовок соответствует статье, и статья полнейшая чушь и зоголовок каждой букой об э том говорит. Я уж думал: "О опять желтый заголовок, поди о наболевшем..", а не нет. :)
D1k1y
26.11.2016 12:29+2И тут походу все забыли, что каждый разработчик хочет зарабатывать по несколько килобаксов в месяц, а еще к этому разрабу надо нанять аналитика, UX/UI спеца, дизайнера, тестировщика и тп. Все это сразу будет стоить овердохрена денег, а потом это еще и умножить на 3 мобильные платформы и присыпать веб-версией для десктопов. И тут заказчик начинает плакать потому, что стока денег нет и не предвидится. Особенно это актуально для некоммерческих проектов с ограниченным бюджетом. И хоть я не согласен с автором, что нативные приложения обречены и что не все, конечно, можно заменить вебом, но PWA при должной поддержке имеют хорошее будущее.
Shifty_Fox
(Про заголовок и первый абзац первоисточника)
Только ситхи все возводят в абсолют.
greabock
Моя жена ситха… ситоха… ситиха… тьфу… ситх!