LINUX.ORG.RU

Как оформить веб-приложение без веба? Принципиально ново и модно?

 , ,


0

1

Допустим, у меня есть какое-то веб-приложение. Допустим, я осознал тленность бытия, ненужность веб-технологий и решил удалить из него все похожее на HTML/CSS/JS(ON), равно как и web-специфику, вроде как Куков и Спамов. Что останется в итоге?

Мысли:

Если от веб-приложения отодрать HTML, то отображать UI уже нечем. Значит надо изобрести свое, скорее cli-based, чтобы сохранить принцип «один запуск - один запрос». Если делать полноценный GUI (или TUI), то надо изобретать уже сессии, этим можно закрыть вопрос с Cookie. В принципе, можно было бы сделать некий бинарник, который как-то запускать локально.

Так как большинство «контента» в веб-сайтах и веб-приложениях должно быть проиндексировано поисковиками, то веб-приложения оптимизируют «для чтения». Как минимум, это ваше REST API напрямую декларирует возможность чтения тех или иных URI, половина модных фреймверков начинается с описания роутинга для чтения тех или иных разделов. А нельзя ли как-то так сделать, чтобы не писать это? Тогда может быть и не нужен бинарник, который запускать локально? Каждый URI разложить по каталогам на файловой системе, внутри просто положить txt/pdf-файлы с контентом «для чтения». Но как постить новый контент?

А может быть можно порезать наше приложение как-то иначе? К примеру, в Android приложения порезаны на кучу компонетов, которые в свою очередь, порезаны на 4 класса: Активити (что видит пользователь), Сервисы (что работает в фоне), Бродкаст-Ресиверы (что принимает какие-то события и быстро завершается) и Контент-Провайдеры (то, что предоставляет свой контент и не занимается его отрисовкой). Последние - отличные претенденты на то, чтобы заменить вьюшки и при этом не писать код для отрисовки. Сервисы - для постинга нового контента. Активити - если сильно надо нарисовать вьюшку или страницу настроек.

А может быть какие-то интересные подходы из области VR или блокчейна?

В общем, как бы выглядело веб-приложение без веба?

Дисклеймер:

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

веб-приложение без веба

Но при этом оно должно продолжать работать с сетью? Отдавать информацию по запросу, все дела?

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

Но при этом оно должно продолжать работать с сетью? Отдавать информацию по запросу, все дела?

Зачем? Например, локальная википедия или локальный OSM для себя любимого. Сеть вообще не нужна.

ruzisufaka
() автор топика
Ответ на: комментарий от agentgoblin

Но при этом оно должно продолжать работать с сетью? Отдавать информацию по запросу, все дела?

Алсо, зачем самому приложению работать по сети? К примеру, многопользовательность может обеспечивать сама операционная система. Подключился по ssh новый пользователь, запустил ту или иную команду - готово. Вся работа с сетью на ssh.

Еще можно вспомнить древние BBS - оно с сетью само со себе работает?

ruzisufaka
() автор топика
Ответ на: комментарий от dyb4hzvo

Если ты хочешь мозгового онанизма, то переезжай на SNMP.

На нем можно создать гипотетический порносайт? Или многопользовательский чатик?

Если искать готовые протоколы, то попадалось это: https://docs.alfresco.com/content-services/6.0/develop/reference/cmis-ref/ - сам не осилил

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

«Отказ от веба» можно трактовать по разному. В т.ч. как отказ только от формы (формата) представления.

Теперь посыл темы стал понятнее.

agentgoblin
()
  1. Код пишется на wasm. Он жрёт меньше всего ресурсов.

  2. Отрисовка осуществляется через WebGPU как наиболее близкий к железу интерфейс.

  3. Понятно, что будет какой-то клей на JS, иначе браузеры пока не умеют, ну ладно.

  4. Для связи с нужным сервером поднимается websocket, внутри уже идёт взаимодействие по какому-нибудь более-менее оптимальному протоколу.

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

Осталось только написать хорошие библиотеки для всего. Ну это уже мелочи.

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

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

«Отказ от веба» можно трактовать по разному.

Я бы сформулировал так: «гипотетически любой веб-сайт, без HTML/CSS/JS/JSON/HTTP»

ruzisufaka
() автор топика
Ответ на: комментарий от agentgoblin

В целом для меня это пока звучит как «manpages с гипертекстом».

В нем нету интерактивности. Личную википедию как сделать?

ruzisufaka
() автор топика

нового нескучного политического строя

За такое вроде как 7 лет отдыха и освоение новых профессий за счет государства.

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

Что ты понимаешь под интерактивностью, для начала? Добавления гипертекста недостаточно?

Смотря что за сервис:

Если локальная википедия - добавление новых статей

Если локальная фотогалерея - добавление новых фото, тегирование, выделение лиц, создание комментариев

Если локальный OSM - смотреть карты, рисовать новые, выгружать GPX

ruzisufaka
() автор топика
Ответ на: комментарий от etwrq

Почти испытал оргазм, увидев «# Edit This Website», но тыкнул и сильно разочаровался.

ruzisufaka
() автор топика

Как оформить веб-приложение без веба?

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

написать всё на чём то скомпильнуть в васм и отдавать. Только зачем? Напиши клиент серверную пару приложений и всё.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Автор WebPlotDigitizer, помимо веб- варианта, предлагает srandalone приложение, завёрнутые в electron.

grem ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

написать всё на чём то скомпильнуть в васм и отдавать. Только зачем? Напиши клиент серверную пару приложений и всё.

Варианты зачем:

  1. Допустим, я осознал тленность бытия, ненужность веб-технологий

  2. На планете появился веб-вирус, который уничтожает веб-технологии. С первых дней были поражены все веб-браузеры - многие просто выдавали сегфолт, а часть хоть и запускалась, не могла никуда сконнектится, выдавая ошибки SSL или парсинга HTML. Человечество надеялось, что на этом все и остановится, но вирус мутировал и со временем перестали работать и приложения на Электроне. Народ массово сжигал программистов на React Native, но это никак не помогало остановить эпидемию. Мир медленно погружался в чистый десктопный софт. Использовать json/soap/xml для протоколов было страшным зашкваром, все срочно переходили на grpc, из-за чего отвалился и хипстерский софт, а олдскульный продолжал работать. Со временем люди отказались от всего того, что было когда-то вебом.

ruzisufaka
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Ага, показывает картинку, добавляет поверх нее точки, распознает линии по цвету/маске выделения, насчитывает координаты точек в разных системах координат…

А электрон показывает картинку.

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

Ну так я и говорю «Напиши клиент серверную пару приложений и всё» на сишке. Локально будет работать только клиент, а если надо разнести то сервер будет клиенту данные отдавать, допустим умрёт и интернет, но локальные сети по UART например могут работать, ну или по морзянке.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от ruzisufaka

Если очень вывернуться, то можно редактируемые статьи и посредством telnet реализовать. Но стоит ли оно того?

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

Да хоть маркадуном, хоть LORCODE, HTML это же просто язык разметки текстового документа, можете написать хоть свой XML-подобный язык.

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

Можно запустить у себя на ЭВМ сервер с вики и обращаться к нему через localhost. Можно использовать оффлайновые программы для создания баз знаний, вроде TheBrain или Zim или ConnectedText, тысячи их.

Вопрос в топике так и не распарсил, возможно вам нужно копать в сторону альтернативных к WWW протоколов обмена файлами, например такие старички как:

  • гипертекстовый векторный фидонет
  • gopher WAIS
  • ftp
  • nntp BBS
  • telnet

Современной рабочей не WWW альтернативы этому не знаю. Разве что это

mydibyje ★★★★
()
Последнее исправление: mydibyje (всего исправлений: 2)

кстати, ваяй в TeX, рендери в pdf.
с мультимедия будут проблемы, но это же ненужный веб.

etwrq ★★★★★
()

Глобально - вспомнился Gopher.

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

yu-boot ★★★★★
()
Ответ на: комментарий от vbr

была про это тема размышления о правильном браузере и кроссплатформе

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

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

wasm можно рассматривать как замену вебу, т.к. это более низкоуровневая конструкция, хотя и в текущих реализациях по сути поверх старых стандартов, но это не обязательно должно быть так. Вполне можно сделать браузер, в котором будет только wasm и webgl, а JS и HTML будут подключаться отдельными модулями, как сейчас подключается React какой-нибудь.

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

Тем более, что wasm уже находит применение и в совсем других областях. К примеру ещё одно гипотетическое применение wasm это замена докера. Одна из проблем докера, которая в последние годы стала очевидна - для каждой платформы нужен свой образ. То бишь я принципиально не могу разрабатывать на ARM-ноутбуке софт для x86, на моём ноутбуке всегда будет выполняться другой код. Как и наоборот. wasm решает эту проблему, предлагая с одной стороны универсальный байткод, работающий одинаково на любой архитектуре, с другой стороны спроектированный под песочницу дизайн, позволяющий делать изолированные приложения без оверхеда контейнеров ОС. Как люди ушли от потоков ОС к юзерспейс-потокам, так они и от контейнеров ОС могут уйти к юзерспейс-контейнерам. Это дело не ближайших лет и не факт, что так будет, но я такой вектор просматриваю.

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

А по твоему посту. Всю тему читать мне лень, на досуге пролистаю. Хочу только сделать некоторые замечания:

Именно поэтому мы не имеем надёжной изоляции вкладок

Не понятно, что ты имеешь в виду под этим. Изоляция идёт на уровне доменов и этого хватает.

контроля за кэшем и сетевыми запросами

В API контроль есть. Ставь адблок и контролируй. Если ты рассчитываешь, что в интерфейсе пользователя будет крутилка для контроля кеша, такого, конечно, не будет. Пользователям это не надо.

лимитирования ресурсов

В браузерах есть лимитирование ресурсов. К примеру сафари периодически выгружает фоновые вкладки, чтобы не жрали батарею. Чем не лимитирование. Может быть не так хорошо, как могло бы, соглашусь. Я бы хотел тут некоторые крутилки. Но в целом оно работает достаточно неплохо.

изоляции самого браузера от системы

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

А про wasm - согласен. Веб приложения это не заменит, они обязаны открываться по щелчку на ссылку, а значит работать в браузере. Любые альтернативы тут недопустимы. Но тот же электрон заменить было бы очень неплохо. Очень уж он жирен.

vbr ★★★★
()

Допустим, это веб-приложение — гуглекарты.

Значит надо изобрести свое, скорее cli-based, чтобы сохранить принцип «один запуск - один запрос

Конечно.

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

Ага.

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

Веб строится на поиске, а поиск на индексации html содержимого. Без поиска останется убогая реклама, как в телеграме. И как же индексировать приложения, если даже js исполнять дорого, а только один билд wasm запросто может весить 50мб и выжирать 200 из озу?

Выгода для контейнеров сомнительна из-за потери производительности. Это серверная технология, а сервера в основном на x86.

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

Не понятно, что ты имеешь в виду под этим. Изоляция идёт на уровне доменов и этого хватает.

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

В браузерах есть лимитирование ресурсов.

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

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

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

Любые альтернативы тут недопустимы

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

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

Веб строится на поиске, а поиск на индексации html содержимого. Без поиска останется убогая реклама, как в телеграме. И как же индексировать приложения, если даже js исполнять дорого, а только один билд wasm запросто может весить 50мб и выжирать 200 из озу?

Индексировать веб-приложения - идея в любом случае мутная. А для информационных сайтов HTML никуда не денется. Я же не пишу, что его надо выкинуть. Хотя я бы на какой-нибудь markdown заменил, но не суть. Просто поменяется архитектура браузера. И будет возможность одной строчкой в сайте сменить движок.

Выгода для контейнеров сомнительна из-за потери производительности.

У контейнеров нет потери производительности. Контейнер это просто другой сgroup, другие namespace-ы для ресурсов. Процесс в контейнере ничем не отличается в плане производительности от процесса вне контейнера.

Это серверная технология, а сервера в основном на x86.

Уже нет, ARM шагает по планете. Уже здесь и сейчас у амазона ARM-серверы дешевле.

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

И будет возможность одной строчкой в сайте сменить движок

Вряд ли это упростит архитектуру. Нечто похожее было с java апплетами, не взлетело. Потом был флеш, тоже не взлетел. Сейчас третья попытка с js на стероидах и wasm сделать из браузера запускалку программ.

Проблема нынешнего wasm в том, что он приколочен к webgl и js. Чтобы располовинить браузеры, придётся оставить чистый wasm, а это означает смену стека. В итоге получится новая java, зато с мультиязычностью. Как ни крути — выходит отдельный wasm-браузер.

У контейнеров нет потери производительности

Так у контейнеров или у wasm? Wasm медленный, докер тоже. В случае с докером потерями можно пренебречь (помня лишь о пзу и озу), но они всё равно есть.

Уже нет, ARM шагает по планете

Относительно x86 их слишком мало. Когда станет много — придётся подстроится. Но вряд ли это будет новая виртуальная машина с дикими потерями производительности.

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

Код пишется на wasm. Он жрёт меньше всего ресурсов.

Отрисовка осуществляется через WebGPU как наиболее близкий к железу интерфейс.

Я ждал wasm из этих же соображений. Но потом подумал и решил, а нафиг собственно в этой схеме вообще wasm и привязка к web технологиям, если проще сделать нормальную новую платформу и обратную совместимость заткнуть автогенерацией «мостов» для web (т.е., своего рода бесплатным фронтендом, генерирующимся из newgen приложения)?

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

За такое вроде как 7 лет отдыха и освоение новых профессий за счет государства.

Смотря у кого ружжо. Завтра «гос-во» объявит тебе о новом нескучном строе и осваивать профессии поедут уже те, кто недостаточно колышется.

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

Веб строится на поиске, а поиск на индексации html содержимого. Без поиска останется убогая реклама, как в телеграме. И как же индексировать приложения, если даже js исполнять дорого, а только один билд wasm запросто может весить 50мб и выжирать 200 из озу?

Легко решается соглашениями. Приложения будут отдавать текстовое меню / представление поисковикам, ботам и читалкам (для незрячих). И будут весить не более {N}KB по-умолчанию с догрузкой доп. данных по ходу работы (иначе будут блокироваться клиентом, требуя мануального подтверждения загрузки, что будет негативно влиять на конверсию, мотивируя авторов решить проблему).

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

Выгода для контейнеров сомнительна из-за потери производительности. Это серверная технология, а сервера в основном на x86.

Речь, наверное про Fermyon, получивший 6 млн. инвестиций под это дело. Они говорят, что за счёт использования wasm вместо традиционных технологий контейнеризации/виртуализации у них заметно уменьшается простой серверов в ДЦ. Т.е., wasm код разных компаний выполняется на общем кластере, возвращает результат без резервирования фиксированной части ресурсов. Такая реинкарнация php, но не завязанная на конкретный ЯП.

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

У контейнеров нет потери производительности. Контейнер это просто другой сgroup, другие namespace-ы для ресурсов. Процесс в контейнере ничем не отличается в плане производительности от процесса вне контейнера.

А что говорят про использование контейнеров для исполнения недоверенного кода?

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

Wasm медленный

Концептуально или если мерить скорость JS интерпретатора, куда изолентой прикрутили поддержку wasm?

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

А что говорят про использование контейнеров для исполнения недоверенного кода?

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

vbr ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.