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

Просто заходим в магазин по SSH:

ssh terminal.shop

или

ssh 172.65.113.113

… и оформляем заказ, следуя подсказкам в терминале. Правда, они доставляют только по США, а сейчас вообще все запасы кофе уже распроданы (скриншот на КДПВ). Но сама идея великолепная: зачем вообще нужны эти графические интерфейсы, чтобы исполнить простую текстовую команду «купить кофе» или «заказать такси»?

Надеемся, что компания Terminal Products, Inc. порадует и другими концептуальными проектами для терминала. Консольный браузер, почтовые клиенты (на скриншоте внизу aerc), CMS для управления блогом и даже RSS-уведомления уже есть — всё это работает в консоли.



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

▍ Статические сайты


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



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

Пример интерактивной диаграммы:


Время отклика по результатам анализа 7 633 176 запросов

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


Визуализация разработки библиотеки Observable Plot, включая статистику с Github, количество скачиваний с npm c 7- и 28-дневным скользящими средними, а также возраст и количество открытых проблем с течением времени

На Github выложены и другие примеры.

Сгенерированный сайт можно разместить на любом бесплатном хостинге статических сайтов (Github) или на своём сервере. Более того, с помощью инструмента вроде Git-Proxy веб-сайт раздаётся прямо из репозитория Git без его клонирования, то есть без создания локальной копии, а напрямую. Очень удобно поставить Git на каком-нибудь дешёвом VPS и раздавать статический сайт таким образом.

В качестве своеобразного «генератора сайтов» можно использовать также MPA Archive, прямое назначение которого — упаковывать сайты или веб-приложения MPA (Multi-Page Application) в zip-архив, откуда они запускаются. То есть мы архивируем сайт:

mpa http://habr.com

…получаем файл типа habr.com.zip, а затем mpa запускается как веб-сервер, который выдаёт содержимое этого zip на localhost.

Веб-сервер libwebsockets тоже умеет выдавать сайты из zip-архивов.

Всё это чем-то напоминает известный формат .mht, который объединяет в одном файле html-страничку и все её ресурсы, а также Redbean, где сайт и веб-сервер пакуются в один исполняемый .zip. В Firefox можно использовать расширение Single File. Но они сохраняют только одну страницу, а программка mpa сохраняет сразу целый сайт.

Другой способ скачать сразу целый сайт — старый добрый wget:

wget --mirror 
     --convert-links 
     --adjust-extension 
     --page-requisites 
     --no-parent 
     --wait=0.1 
     --random-wait 
     https://www.habr.com/

▍ Новости HTMX


В последнее время набирает популярность HTMX как более простой способ веб-разработки, где современные интерактивные интерфейсы создаются напрямую средствами HTML, что позволяет уменьшить размер сайта втрое по сравнению с React. На днях вышла статья «Почему в htmx нет этапа сборки». Там объясняется, что логика использования HTMX предельно простая. Сама библиотека экстремально маленькая (14 КБ в архиве), это файлик htmx.js 3500 строк на JavaScript, без зависимостей, который вы можете отредактировать перед тем, как отправить клиенту в браузер. Это гораздо проще, чем писать на TypeScript и компилировать перед выполнением, и это обеспечивает долговечность кода JavaScript. Отсутствие сборки — это концептуальное преимущество, которое позволяет легко редактировать старые сайты и не зависеть от компилятора.

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

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

▍ Минимализм


Минимализм нынче в моде. В этом смысле много чему есть поучиться у ветеранов демо-сцены, которые уже несколько десятилетий соревнуются в создании красивых демок (видео) размером в несколько килобайт, оптимизируя в коде каждый байт. Например, вот такая анимация «Овечка и цветок» с музыкой занимает всего 8159 байт, как ни сложно в это поверить (файлы .exe для видео в разном разрешении, исходный код).

Демо написано на C++ для окон и инициализации OpenGL. Весь визуальный контент генерируется на GPU с помощью GLSL. Контент записан в знаковых полях расстояний и визуализируется через марширование лучей:



Музыка требует больших вычислений на CPU и выполняется в отдельном потоке. Более подробную информацию о создании этой 8-килобайтной анимации высокого разрешения см. здесь.

Кстати, к вопросу о минималистичности и о фреймворках. Как раз недавно вышел htmz — минималистичный микрофреймворк (166 байт, без зависимостей и JS) для создания интерактивных и модульных сайтов на чистом HTML (например, перезагрузка фрагментов веб-страниц по нажатию ссылки, см. примеры). Создан под впечатлением от HTMX и техники веб-разработки Comet.

Примеры:







▍ HTML-редакторы


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

Компоновщик — удобный WYSIWYG-редактор. Несмотря на свой возраст, он до сих пор работает довольно хорошо на более-менее простых сайтах HTML 4.01.


Компоновщик из комплекта Seamonkey

Из более современных редакторов можно упомянуть KompoZer и HTML Notepad.



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



Из других новинок:

  • Стриминг HTML не по порядку, без использования JavaScript, исходный код, демо. Смысл в том, что контент с сервера передаётся клиенту по мере генерации, в случайном порядке. Так гораздо эффективнее, чем каждый раз дожидаться очередного фрагмента в очереди.


    Рендеринг частей DOM отдельно от остальных частей производится с помощью Shadow DOM.

  • 67 трюков по дебагу в браузере.

  • Предсказание текста на JS, без использования LLM.


    Здесь используется новая техника ArT DeCo (Anchor Tree with Decaying Context) для хранения двух уровней контекста. Первый уровень — акроним трёх слов перед якорем, второй уровень — акроним трёх слов перед первым уровнем, исходный код. Работает для английского языка со словарём в MessagePack, можно использовать в своих проектах.

Telegram-канал со скидками, розыгрышами призов и новостями IT ?

Комментарии (14)


  1. unreal_undead2
    24.06.2024 09:42
    +9

    но в 90-е было много интернет-магазинов

    Вроде текст не переводной...


  1. Earthsea
    24.06.2024 09:42
    +2

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

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


    1. dimaaannn
      24.06.2024 09:42

      Да и привлечь как можно больше покупателей тоже сложно. 

      Кстати интересный вопрос. Покупателей в чистом виде - да. А вот решить задачу по автоматизации - вполне.

      Условно каждое утро заказывать кофе, а каждый вечер - шл блэкджек посредством скрипта в ssh. Никаких изучений левых api, просто команды.


      1. Areso
        24.06.2024 09:42
        +4

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

        Например, smack-my-bitch-up.sh
        отправлял его жене сообщения «Задержался на работе», случайным образом
        выбирая одну из заготовленных причин. Он автоматически выполнялся после
        девяти вечера, если на рабочей станции в это время были запущены
        интерактивные сессии по протоколу ssh с логином программиста.

        badun.sh
        в определённые даты отправлял начальству сообщения «Плохо себя
        чувствую, поработаю из дома», если автор кода не начинал работу утром в
        8:45. Более того, герой даже автоматизировал работу с «заграничным DBA»
        (администратором базы данных) по имени Кумар, создав скрипт, который в
        ответ на письма с просьбами о помощи «откатывал» последние действия
        Кумара и автоматически писал в ответ: «Не вопрос, будь аккуратнее в
        следующий раз».

        Также он автоматизировал и процесс приготовления кофе. Скрипт coffe-blyat.sh ждёт около 17 секунд, а затем посылает на кофеварку, подключенную в сети, определённые команды.

        (c) баянище


        1. Xobotun
          24.06.2024 09:42
          +5

          Башорг #436725.


      1. domix32
        24.06.2024 09:42

        Как-то так народ думает о телеграм ботах ибо таргетить чисто программистов могут позволить разве что в каком-нибудь SF.


  1. mixsture
    24.06.2024 09:42
    +3

    Мало кто помнит, но в 90-е было много интернет-магазинов, которые работали через текстовый интерфейс telnet (Bookstacks, CDNow) или по SMS, ещё до распространения веба и браузеров.

    А еще были BBS (https://en.wikipedia.org/wiki/Bulletin_board_system) через модемные соединения - с очень похожими принципами. Наверно, им стоит придумать какое-то свое название, вроде "эпоха веб 0.0" (то, что было до веб 1.0)


    1. unreal_undead2
      24.06.2024 09:42

      BBS и Фидо были, а вот электронной коммерции в 90е не помню.


  1. JerryI
    24.06.2024 09:42
    +8

    Как это развидеть!?

    в знаковых полях расстояний и визуализируется через марширование лучей:


    1. Metotron0
      24.06.2024 09:42
      +6

      Сперва показалось, что это стереокартинка.


  1. vibornoff
    24.06.2024 09:42
    +8

    Лучше таК:

    ssh -a terminal.shop

    -a Disables forwarding of the authentication agent connection.

    А то всякое, знаете ли, может случиться...


  1. alekseypro
    24.06.2024 09:42
    +5

    Помню сделал "большую красную кнопку" на ESP8266, долбанёшь по ней и в контору привозят два бутыля артезианской воды :)


  1. Alexufo
    24.06.2024 09:42

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

    Html избыточен для ручного написания. Удобнее шаблонизатор pug или markdown. И ничего страшного, что нужен генератор. Наоборот, вы привязываетесь к данным, а не представлению.


    1. Kahelman
      24.06.2024 09:42

      Особенно классно на Кириллице писать текст и постоянно в английскую раскладку переключаться для расставляется тегов.