LINUX.ORG.RU

Дискуссия: нужны ли скрипты на стороне клиента?

 , , ,


0

1

Часто сползаем в этот разговор, поэтому создаю отдельную тему.

Предполагаю проведении дискуссии. Для тех кто не в курсе (спасибо Википедии) Дискуссия – это обсуждение спорного вопроса, проблемы; разновидность спора, направленного на достижение истины и использующего только корректные приёмы ведения спора. Т.е. сообщения не аргументированные – это просто флуд.

В связи с чем этот вопрос назрел? Многих людей (включая меня), так или иначе связанных с веб-разработкой, раздражает тот факт, что WWW используется не по назначению, в частности многие современные «сайты» не могут отобразить вообще ничего без JS/WASM, потому что как таковыми сайтами они не являются. Это ужасно медленные веб-приложения, которые максимально неэффективно используются для того, чтобы отобразить тот же самый HTML / XHTML, либо решать что-либо такое для чего веб не предназначен, решать то, что по хорошему надо бы запускать непосредственно в ОС.

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

Интересно узнать ваше мнение, конструктивную критику, поддержку.

UDP: Дискуссия не удалась, можно сказать. У всех в корне разная точка зрения. Компромисс не найден.

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

★★★

Последнее исправление: zx_gamer (всего исправлений: 2)
Ответ на: комментарий от zx_gamer

… для которых желательно иметь общедоступное, а в идеале, и универсальное клиентское приложение

Tcl, Java, Perl, Python …

Вы не правильно поняли, об чем идет речь. «Универсальный клиент» - это одна конкретная программа на компе или телефоне, с помощью которой можно получать весь спектр облачных услуг. Мог бы, конечно, появиться и какой-то другой универсальный клиент, но жизнь распорядилась вот так… ))

Вполне логично - ну просто это удобно!

Кому удобно? …

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

Вот на эту роль универсальных «толстеньких» клиентов и претендуют современные веб-обозреватели.

Очень зря. Это такая же тупая идея, как использовать LibreOffice Calc как среду программирования на BASIC

Пожалуй, соглашусь только частично. Javascript с его парадигмой однопоточного выполнения - это конечно «дермецо») Это породило всякие извращения в виде async-await и промисов ))
Я думаю, со временем это дело поправится. Ну а пока, так…

vinvlad ★★
()

В таком виде это вопрос из 1998го года примерно - в те времена еще были и сайты и проблема скриптов.

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

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

alex0x08 ★★★
()
Ответ на: комментарий от pihter

Да может даже и медленнее, но уж экономнее точно. Каждому приложению на питоне+биндингах не надо таскать с собой весь функционал браузера: адресную строку, видеоплеер и так далее. И каждому запущенному экземпляру этого приложения - тоже.

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

Аналогичная ситуация: писать на голом XLib или на Qt/Gtk. Одно приложение на XLib экономнее, чем аналог на Qt/Gtk. Но пара десятков одновременно запущенных приложений на Qt/Gtk используют общую библиотеку для совпадающей функциональности, а аналогичные пара десятков программ на XLib уже будут тратить больше ресурсов.

monk ★★★★★
()
Ответ на: комментарий от javascript

Веб-версия телеграмма - это PWA. Оно загружается один единственный раз и далее открывается даже без подключения к интернету

Опять решил повторить эксперимент. Не открывал на смартфоне веб версию телеги с 08.04.2023. Кэш/историю/куки не чистил. Ехал только что в электричке на участке без интернета. И попробовал снова в браузере гугл хром открыть https://web.telegram.org - так вот эта твоя pwa снова висела в загрузке (без отображения интерфейса) минуты две, потом я закрыл вкладку и пробовал повторить еще пару раз - до тех пор, пока интернет не появился интерфейс этой pwa не показался, просто шла загрузка. Вот это я понимаю «прогрессивное». Вот начитаются рекламок и давай сыпать как там все хорошо и прекрасно. Ты ведь когда писал про этот «плюс» походу даже не стал себя утруждать проверкой.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от monk

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

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

rumgot ★★★★★
()
Ответ на: комментарий от rumgot

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

Почти наверняка, потому что в браузере библиотеки точно общие, а у плееров одна из двух десятков доступных.

monk ★★★★★
()
Ответ на: комментарий от monk

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

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 2)
Ответ на: комментарий от monk

Учитывая современные объемы RAM, а также JS-поделки на Electron, которые запускают отдельный браузер размером в почти гиг, а со временем и превышающий, на каждое приложение, к чему эта экономия на спичках?

emorozov
()
Ответ на: комментарий от emorozov

Учитывая современные объемы RAM … к чему эта экономия на спичках?

Так это мой оппонент основным аргументом указывал.

а также JS-поделки на Electron, которые запускают отдельный браузер размером в почти гиг

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

И у браузера есть ещё один плюс: в нём можно запускать любые скрипты не боясь, что они запортят данные на диске или что-то взломают в локальной сети.

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

monk ★★★★★
()
Ответ на: комментарий от monk

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

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

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

Я беру два разных веб-приложения, использующих видео, в браузере. И два разных приложения, использующих видео, вне браузера.

В браузере они в соседних вкладках. Вне браузера в соседних процессах ОС.

monk ★★★★★
()
Ответ на: комментарий от monk

Короче я проверил. Открыл в firefox на одной вкладке youtube.com, а на второй dzen.ru и запустил оба видоса, таскманагер показал сразу 220Mb, через две минуты 288-314Mb.

Далее открыл два разных фильма (mkv и avi, каждый по примерно 1.4Gb), один в Vlc, второй в Totem и тоже оба запустил. Итого таскманагер показывает для Vlc 78Mb, для Totem 121Mb.

Результат вроде однозначный. При том, что сравнение не честное: почему браузер один, а плеера два? Если ты разные сайты открываешт одним браузером, то какого фига ты открываешь разные видео файлы разными плеерами.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 2)
Ответ на: комментарий от rumgot

Результат вроде однозначный.

Сравнивать надо именно плееры без «ОС». То есть

  1. пустой броузер против браузера с плеерами
  2. пустой DM против DM с плеерами.

*) попробуй запустить Kaffeine и Totem. **) память надо смотреть через free до и после. ps/таскманагер очень странным образом понимает память как «используемую».

При том, что сравнение не честное: почему браузер один, а плеера два?

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

monk ★★★★★
()
Ответ на: комментарий от monk

попробуй запустить Kaffeine и Totem. **) память надо смотреть через free до и после. ps/таскманагер очень странным образом понимает память как «используемую».

Ой, да конечно, таскманагер плохой, top/htop плохие, все плохое и все показывает не так. Дальше сам. Я и так получил то, что и так знал. Твое «надо не так, а вот так» выглядит как попытка отсрочить получение результатов, которые ты и так прекрасно знаешь.

То есть, если бы у нас был youtube-клиент и dzen-клиент, они содержали бы разные плееры.

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

rumgot ★★★★★
()
Ответ на: комментарий от rumgot

таскманагер плохой, top/htop плохие

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

А зачем ты притягиваешь веб архитектуру сюда?

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

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

VLC - это не интерфейс к youtube, а только реализация тега video. В нём нет ни поиска, ни комментариев ни прочих функций, которые есть у клиента youtube.

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

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

monk ★★★★★
()

UDP: Дискуссия не удалась, можно сказать. У всех в корне разная точка зрения. Компромисс не найден.

Так а дискуссия между носителями одного и того же мнения разве вообще возможна?)

Dog ★★★
()
Ответ на: комментарий от wandrien

Причём не webview системный, а чаще всего свой CEF полным комплектом.

Только Apple этим мудозвонам руки отбивает, как ни странно, заставляя использовать исключительно системный webview.

timdorohin ★★★★
()
Ответ на: комментарий от vinvlad

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

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

monk ★★★★★
()
Ответ на: комментарий от monk

докер, а не изоляция процессов операционной системы.

Докер — просто удобный интерфейс к изоляции процессов операционной системы под названием cgroups. Это ложная дихотомия.

emorozov
()
Ответ на: комментарий от emorozov

Докер — просто удобный интерфейс к изоляции процессов операционной системы под названием cgroups.

???

Мы точно про одно и то же? Я про монстра https://www.docker.com/ , который на каждый процесс делает по отдельной операционной системе.

monk ★★★★★
()
Ответ на: комментарий от monk

Мы точно про одно и то же? Я про монстра https://www.docker.com/ , который на каждый процесс делает по отдельной операционной системе.

Он не делает по отдельной операционной системе. Он создаёт cgroup, и запускает в ней приложение из образа (который на деле - том btrfs). Ну и какие-то дополнительные плюшки, типа управления томами, сетями, и т.д.

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

Можно использовать distroless образы.

Это не отдельная операционная система, и он не добавляет накладных расходов сверху cgroups.

Для эмпирической проверки: запусти процесс в докере. Ты его будешь видеть в списке процессов по ps ax. Ты сможешь использовать все инструменты cgroups типа nsenter для манипуляции им.

emorozov
()
Ответ на: комментарий от monk

Уже придумали Docker Desktop, в котором и ядро своё. И на том сайте именно он предлагается.

Это для Windows и Mac, в которых нет нативных линуксовых cgroups. На Linux докер не вносит оверхеда сверх оверхеда cgroups. А без cgroups подобную функциональность изоляции приложений невозможно реализовать, и она наверняка всегда будет нести какой-то минимальный оверхед.

emorozov
()
Ответ на: комментарий от monk

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

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

emorozov
()
Ответ на: комментарий от emorozov

вообще не понимаю, зачем это нужно на Linux

https://docs.docker.com/desktop/faqs/linuxfaqs/#why-does-docker-desktop-for-linux-run-a-vm

Причём аргумент безопасности вообще приводит к идее «по виртуальной машине на приложение», которая в мире Windows / Hyper-V давно активно используется.

В общем, чего только не придумают, чтобы нормальную ОС не делать.

monk ★★★★★
()