- PVSM.RU - https://www.pvsm.ru -

Просто заходим в магазин по SSH:
ssh terminal.shop
или
ssh 172.65.113.113
… и оформляем заказ, следуя подсказкам в терминале. Правда, они доставляют только по США, а сейчас вообще все запасы кофе уже распроданы (скриншот на КДПВ). Но сама идея великолепная: зачем вообще нужны эти графические интерфейсы, чтобы исполнить простую текстовую команду «купить кофе» или «заказать такси»?
Надеемся, что компания Terminal Products, Inc. порадует и другими концептуальными проектами для терминала. Консольный браузер, почтовые клиенты [3] (на скриншоте внизу aerc [4]), CMS для управления блогом [5] и даже RSS-уведомления [6] уже есть — всё это работает в консоли.

Мало кто помнит, но в 90-е было много интернет-магазинов, которые работали через текстовый интерфейс telnet (Bookstacks, CDNow) или по SMS, ещё до распространения веба и браузеров. Для своего времени это были суперпродвинутые технологии. До сих пор можно найти несколько сайтов (ascii.theater [7], mapscii.me [8]) и игр [9], доступных через консоль (у каждой игры свой порт, внимательно читайте инструкцию).
В последнее время появилось несколько новых генераторов статических сайтов, а общее их количество в каталоге Jamstack [10] достигло 355 штук:

Но некоторые выделяются из общей массы. Например, Observable 2.0 [11], генератор статических сайтов с красивыми отчётами и графиками. Точнее, это опенсорсный инструмент по разработке веб-приложений для работы с данными.
Пример интерактивной диаграммы:

Время отклика по результатам анализа 7 633 176 запросов
С помощью Observable Framework [12] можно создавать красивые и функциональные веб-приложения для работы с данными. Фреймворк сочетает в себе возможности JavaScript для создания интерактивной графики и любого языка для подготовки и анализа данных: SQL, Python, R, Rust, Go и т. д. По словам разработчиков, тут есть абсолютно всё необходимое: интерактивные графики и ввод, отзывчивые сетки, темы, тёмный режим, удобная навигация с клавиатуры — и никаких ограничений для кастомизации, потому что это код.

Визуализация разработки библиотеки Observable Plot [13], включая статистику с Github, количество скачиваний с npm c 7- и 28-дневным скользящими средними, а также возраст и количество открытых проблем с течением времени
На Github выложены и другие примеры [14].
Сгенерированный сайт можно разместить на любом бесплатном статических сайтов (Github) или на своём сервере. Более того, с помощью инструмента вроде Git-Proxy [16] веб-сайт раздаётся прямо из репозитория Git без его клонирования, то есть без создания локальной копии, а напрямую. Очень удобно поставить Git на каком-нибудь дешёвом
В качестве своеобразного «генератора сайтов» можно использовать также MPA Archive [17], прямое назначение которого — упаковывать сайты или веб-приложения MPA (Multi-Page Application) в zip-архив, откуда они запускаются. То есть мы архивируем сайт:
mpa http://habr.com
…получаем файл типа habr.com.zip, а затем mpa запускается как веб-сервер, который выдаёт содержимое этого zip на localhost.
Веб-сервер libwebsockets [18] тоже умеет выдавать сайты из zip-архивов.
Всё это чем-то напоминает известный формат .mht, который объединяет в одном файле html-страничку и все её ресурсы, а также Redbean [19], где сайт и веб-сервер пакуются в один исполняемый .zip. В Firefox можно использовать расширение Single File [20]. Но они сохраняют только одну страницу, а программка mpa сохраняет сразу целый сайт.
Другой способ скачать сразу целый сайт — старый добрый wget:
wget --mirror
--convert-links
--adjust-extension
--page-requisites
--no-parent
--wait=0.1
--random-wait
https://www.habr.com/
В последнее время набирает популярность HTMX [21] как более простой способ веб-разработки, где современные интерактивные интерфейсы создаются напрямую средствами HTML, что позволяет уменьшить размер сайта втрое [22] по сравнению с React. На днях вышла статья «Почему в htmx нет этапа сборки» [23]. Там объясняется, что логика использования HTMX предельно простая. Сама библиотека экстремально маленькая (14 КБ [24] в архиве), это файлик htmx.js 3500 строк на JavaScript, без зависимостей, который вы можете отредактировать перед тем, как отправить клиенту в браузер. Это гораздо проще, чем писать на TypeScript и компилировать перед выполнением, и это обеспечивает долговечность кода JavaScript. Отсутствие сборки — это концептуальное преимущество [25], которое позволяет легко редактировать старые сайты и не зависеть от компилятора.
Примеры случайных сайтов на HTMX можно посмотреть в этом веб-кольце [26] (такие кольца были популярны в 90-е [27], когда сайты схожей тематики размещают у себя на страничке ссылки на следующего и предыдущего членов кольца).
Кстати, к вопросу о HTMX. Карсон Гросс [28] недавно опубликовал серьёзное эссе о недостатках HTMX [29], где разбил эту технологию в пух и прах, честно перечислил все минусы и поиздевался над автором, который это придумал, упомянув его несерьёзный личный сайт с мемами [30]. Как такому человеку вообще можно доверять? Всё это можно воспринимать как основательную критику, если не знать, что Карсон Гросс сам и разработал HTMX.
Минимализм нынче в моде. В этом смысле много чему есть поучиться у ветеранов демо-сцены, которые уже несколько десятилетий соревнуются в создании красивых демок (видео) размером в несколько килобайт, оптимизируя в коде каждый байт. Например, вот такая анимация «Овечка и цветок» [31] с музыкой занимает всего 8159 байт, как ни сложно в это поверить (файлы .exe [32] для видео в разном разрешении, исходный код [33]).
Демо написано на C++ для окон и инициализации OpenGL. Весь визуальный контент генерируется на GPU с помощью GLSL. Контент записан в знаковых полях расстояний [34] и визуализируется через марширование лучей [35]:

Музыка требует больших вычислений на CPU и выполняется в отдельном потоке. Более подробную информацию о создании этой 8-килобайтной анимации высокого разрешения см. здесь [36].
Кстати, к вопросу о минималистичности и о фреймворках. Как раз недавно вышел htmz [37] — минималистичный микрофреймворк (166 байт, без зависимостей и JS) для создания интерактивных и модульных сайтов на чистом HTML (например, перезагрузка фрагментов веб-страниц по нажатию ссылки, см. примеры [38]). Создан под впечатлением от HTMX и техники веб-разработки Comet [39].
Примеры:



А в чём редактировать статический HTML-сайт, если не в минималистичном HTML-редакторе? Если выбирать из классических редакторов, то раньше одним из лучших считался Composer (Компоновщик) из пакета Seamonkey [40], это наследник Mozilla и Netscape. Пакет включает браузер, почтовый клиент, RSS-ридер, IRC-чат, клиент групп новостей, HTML-редактор — всё, что нужно для работы в интернете.
Компоновщик — удобный WYSIWYG-редактор. Несмотря на свой возраст, он до сих пор работает довольно хорошо на более-менее простых сайтах HTML 4.01.

Компоновщик из комплекта Seamonkey
Из более современных редакторов можно упомянуть KompoZer [41] и HTML Notepad [42].

После многократного переписывания своих сайтов на разных фреймворках многие люди приходят к выводу, что чистый HTML лучше всего [43]. Если и использовать генератор, то только как тонкую надстройку над HTML, которая добавляет минимум абстракций и лишь минимально изменяет структуру файлов и директорий.
Рендеринг частей DOM отдельно от остальных частей производится с помощью Shadow DOM [47].

Здесь используется новая техника ArT DeCo (Anchor Tree with Decaying Context) для хранения двух уровней контекста. Первый уровень — акроним трёх слов перед якорем, второй уровень — акроним трёх слов перед первым уровнем, исходный код [50]. Работает для английского языка со словарём в MessagePack [51], можно использовать в своих проектах.
Автор: Анатолий Ализар
Источник [52]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ssh/392338
Ссылки в тексте:
[1] интернет-магазин в консоли: https://www.terminal.shop/
[2] Говорят: https://www.terminal.shop/faq
[3] почтовые клиенты: https://en.wikipedia.org/wiki/Text-based_email_client
[4] aerc: https://aerc-mail.org/
[5] CMS для управления блогом: https://pico.sh/prose
[6] RSS-уведомления: https://pico.sh/feeds
[7] ascii.theater: https://ascii.theater/
[8] mapscii.me: https://github.com/rastapasta/mapscii
[9] игр: https://overthewire.org/wargames/
[10] каталоге Jamstack: https://jamstack.org/generators/
[11] Observable 2.0: https://observablehq.com/blog/observable-2-0
[12] Observable Framework: https://observablehq.com/framework/examples/api/
[13] Observable Plot: https://observablehq.com/plot/
[14] примеры: https://github.com/observablehq/framework/tree/main/examples
[15] хостинге: https://www.reg.ru/?rlink=reflink-717
[16] Git-Proxy: https://mediocregopher.com/posts/git-proxy
[17] MPA Archive: https://github.com/potahtml/mpa-archive
[18] libwebsockets: https://libwebsockets.org/
[19] Redbean: https://redbean.dev/
[20] Single File: https://addons.mozilla.org/en-US/firefox/addon/single-file/
[21] HTMX: https://htmx.org/
[22] втрое: https://htmx.org/essays/a-real-world-react-to-htmx-port/
[23] «Почему в htmx нет этапа сборки»: https://htmx.org/essays/no-build-step/
[24] 14 КБ: https://unpkg.com/htmx.org/dist/
[25] концептуальное преимущество: https://jvns.ca/blog/2023/02/16/writing-javascript-without-a-build-system/
[26] веб-кольце: https://htmx.org/webring/
[27] были популярны в 90-е: https://en.wikipedia.org/wiki/Webring
[28] Карсон Гросс: https://habr.com/ru/companies/ruvds/articles/814193/
[29] серьёзное эссе о недостатках HTMX: https://htmx.org/essays/htmx-sucks/
[30] мемами: https://htmx.org/essays/#memes
[31] «Овечка и цветок»: https://www.ctrl-alt-test.fr/the-sheep-and-the-flower/
[32] файлы .exe: https://aduprat.com/pub/The_Sheep_and_the_Flower.zip
[33] исходный код: https://github.com/ctrl-alt-test/mouton
[34] знаковых полях расстояний: https://en.wikipedia.org/wiki/Signed_distance_function
[35] марширование лучей: https://en.wikipedia.org/wiki/Volume_ray_casting
[36] здесь: https://www.ctrl-alt-test.fr/2024/how-we-made-an-animated-movie-in-8kb/
[37] htmz: https://leanrada.com/htmz/
[38] примеры: https://leanrada.com/htmz/#examples
[39] Comet: https://en.wikipedia.org/wiki/Comet_(programming)
[40] Seamonkey: https://www.seamonkey-project.org/
[41] KompoZer: https://kompozer.sourceforge.net/
[42] HTML Notepad: https://html-notepad.com/
[43] чистый HTML лучше всего: https://ankarstrom.se/~john/articles/html/
[44] Стриминг HTML не по порядку: https://lamplightdev.com/blog/2024/01/10/streaming-html-out-of-order-without-javascript/
[45] исходный код: https://github.com/lamplightdev/ooo
[46] демо: https://ooo.lamplightdev.workers.dev/
[47] Shadow DOM: https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_shadow_DOM
[48] 67 трюков по дебагу в браузере: https://alan.norbauer.com/articles/browser-debugging-tricks
[49] Предсказание текста на JS: https://www.adamgrant.info/tiny-predictive-text
[50] исходный код: https://github.com/adamjgrant/Tiny-Predictive-Text
[51] MessagePack: https://msgpack.org/
[52] Источник: https://habr.com/ru/companies/ruvds/articles/821443/?utm_source=habrahabr&utm_medium=rss&utm_campaign=821443
Нажмите здесь для печати.