LINUX.ORG.RU

Урл - для человека или машины?

 ,


0

1

Философский вопрос. Если вместо человекочитаемых урлов типа vasya.com/35/porno/18373 будет vasya.com/{{base64}}, где base64 это жсон пожатый и зашифрованный - это хорошо или одни проблемы при доведении проекта до хоть какой нибудь зрелой стадии?

Ответ на: комментарий от skidphysic

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

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

точно – набирать именно тот адрес, который нужно. его нужно знать, ога.

Почему современные браузеры такая тормозня

by design – весь современный веб он такой, и это тянется ещё с самого HTML 2.0 который был ещё не совсем, но HTML3.2 уже таки говно.

HTTP– говно а не протокол, HTML – говно, а не формат данных, CSS и JS тоже не какое-то там откровение свыше, а таки оно самое.

добавь ещё Dynamic HTML из MSIE AJAX и «фредди против JSONа», DOM этот дурацкий и дурацкая разновидность ООП в этом вашем прототипном жопаскрипте, каждый второй поверх коротого лепит MVC и реактивность.

и как же этому и не тормозить – когда by design, с самих 90х не HTML 2.0 с логической вёрсткой и HTML 4.0 от W3C, а кривые диалекты HTML 3.2, кривого JS и кривого HTML5.0 развивались чтобы тебе баннеры, флеши, спамы, куки, трояны и прочие уебассембли для запускалки всего этого?

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

например, глобальную блокировку интерпретатора (GIL). почитай про DOM и модульность которой нет. про многозадачность которой нет, и примочки кооперативно через GIL её симулировать.

про теги EMBED, OBJECT и браузерные костыли для запускалки объектных моделей, типа того же флеша либо апплетов жабы либо чего-то более приличного типа JScript и VBasic Cscript ActivePerl, ActiveTcl и т.п., вплоть до самой инферно плагином к MSIE.

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

Задолбало, что есть в альтернативах?

возьми например HotJava браузер под JVM либо ~TkHTML~ hv3 или netsurf, страхолюдную Montra под Plan9 либо Charon под инферно.

да даже Voyager браузер с той дискеты QNX4 с веб-сервером, звонилкой, жаваскриптом и ханойскими башнями.

вот же диды – могли ещё, умели. а современные смузихлёбы вы всё просрали, подчистую.

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

это не хатеэмель тормозит, это жопаскрыт и ДОМ-2 и его глобальный GIL тормозят.

ну или CSS3.14153265 с круглыми прямоугольниками и его rule engine.

оно понятно, что тебе это звучит – что в лоб, что полбу.

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

правильный. легко показываемый, но сложно публикуемый (а не наоборот, как недоweb Тима Бернерса-Ли этого вашего).

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

собственно, какие тогда были альтернативы.

ну, кроме векторного гипертекстового.

юзнет, гофер. лямбдаму ещё и муды, колдС и пайк (который LPC из LPCmud).

Ксанаду ещё изобретателя этих ваших гипертекстов, Теодора Холма Нельсона. который не взлетел, ибо не только лишь все читали ComputerLib/Dream Machines, Literary Machines и прониклись идеей.

но был ещё например cURL – который язык и диалект лиспа, а не утилита для скачки файлов. с одной правильной идеей: **first class document`

ещё например был WEB изначальный, Дональда нашего Кнута. и WEAVE/TANGLE сопутствующие (к TeX: The Program and the book)

и да, он тоже имел в виду гипертекст, но другой.

HTML и WWW было то чего мы всеми силами хотели избежать напишет потом Тед Нельсон.

любой дурак может придумать диалект SGML, например тот же XML. это не сложно.

дьявол однако в деталях. во всех этих quirks и прочих GIL, DOM, мешающих распараллеливанию и навязывающих необходимость интерпретации.

хотя, вот взяли бы какой-нибудь РЕФАЛ-5 В.Ф. Турчина и прочитали ту статью в «Компьютерре» (либо на сайте развёрнуто) про использование лиспа и S-выражений рефала и Р-выражений вместо диалекта SGML и embedded markup considered harmful, глядишь бы дошло. как делать правильный rule engine (на базе рефала например).

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

либо не какой-то более продвинутый гипермедиа интерпретатор типа того же HyperTalk со слайдами.

либо вообще не компилируемый в какой-то бинарный формат типа PDF.

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

типа того же cURL и Occasionally Connected Computing

cURL paper: Curl: A Gentle Slope Language for the Web wwwpaper

и документа в {курвах-скобках} как first class object

либо в обычных, круглых лиспоскобках – и почему лисп, почему BeautifulRacket, почему Pollen про ракет и типографику.

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

переносимся мысленно в 1984 год. выходит TeX:the Program (and the Book) Дональда нашего Кнута, литературно-грамотный.

и WEB изначальный: с TANGLE, WEAVE, индексированным PDF DVI содержанием.

кратко, ёмко наглядно. в виде «блоков кода» комментариями исполняемыми к литературно-грамотному на человекопонятном языке.

чёрным-по белому. с индексами и оглавлениями.

«не, не видел» – отвечает ему народ, – «ниасилим» .

потому что не только лишь все могут писать связные тексты.

или книжки+код как тот же Кнут. который прежде всего писатель – то есть умеет структурировать мысли, прежде всего.

а не только лишь код.

мысль опережает действие. поэтому действие (код) нужно подстаивать под мысль – а не наоборот.

литературное грамотное программирование – это по сути структурное программирование + структурное объяснение.

в духе «stepwise refinement» , метода последовательного уточнения и humble programmer, дисциплины программирования.

понятное дело что если ты метапрог и текст излагаешь с трудом – то писать код это мало поможет.

если ты и структурное программирование ниасилил, например.

не говоря уж об объяснении.

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

переносимся где-то в 1987-1988 год, не в 1984.

после Лео Броуди с образ мышления -- форт (про словарь предметно-ориентированный форта и как раз про структурное программирование) – и академика Ершова с лексиконом программирования теоретически, после грамотного программирования иллюстрированного TeX: the Program чисто практически.

выходит обзорная статья про разновидности этих ваших гипертекстов и гипермедий.

ксанаду ещё не выходит – Xanadu green/gold Udanax пилят примерно в то же время, выходит UFBE protocol и всякие гиперструктуры данных типа ents с enfilades.

да девелоперсы разосрались – скрестив С++ со смоллтоком стали изобретать, внезапно не Objective C и даже не LambdaMOO – а переписывать Udanax green/gold заново, на этом вашем новомодном С++.

в той статье про ксанаду ничё не было – ибо не вышел конечный продукт (если не считать несколько прототипов).

а про что было?

HyperTalk, Hyberbole из XEmacs, несколько гипертекстовых средств авторинга на смоллтоке и лиспе.

ещё флешоподобное авторинговое что-то.

ну ты понял.

однако же — реально существовавших тогда разновидностей прототипов, реально работающих продуктов в той статье обозрено примерно 15.

и да, HTML и HTTP тогда ещё не было.

вот SGML, SCRIPT, troff, Runoff (и WGML из Watcom C) – были.

а HTTP и HTML не было. такие дела.

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

переносимся в 90е.

в ~векторный гипертекстовый фидонет~ – эпоху BBS и Usenet-а, гофера, арчи и вероники.

вот как развивались графические BBS: bbs-graphics-history-ripscrip-naplps и какие-нибудь Ripscrip (без t на конце)

дора-дурадвери, сознания прям.

МУДы и MOO.

давай пофантазируем и напишем веб-сервер (ну или что там вместо него) на LambdaMOO.

LambdaMOO: ООСУБД со встроенным недоязычком типа Lua, в которой есть важная сущность: персистентные объекты (то есть, сохраняемые в ООБД).

ООБД бинарные, отображаются через map-файлы. и работают довольно быстро.

потом, объекты это классы которые можно наследовать.

понятное дело, что это не совсем прототипное ООП из Self смоллтокового и «разработка в образе» – до довольно близко.

акторы, посылка сообщений и описание поведения, а не состояния.

пускай и не такие продвинутые типы ссылок как в языке Pony с его акторной моделью которая эффективно распараллеливается.

вот, например, уеб-сервер безплатно без CМС , без библиотек и фреймфорков, акторами на сокетовом API (use "net", TCPListener)

а потому вместо классического LamdbaMOO 1.8.3/codepoint с Unicode/ GammaMoo/stunt.io/toadstunt лучше взять например растовый rmoo который пытается быть формато и языко совместимым, но только на расте и без блокировок, без этих ваших GIL всю дорогу.

ну или например ColdC из ColdMUD который вообще отдельно от мудсервера.

либо отдельно тот же Pike (LPC из LPCmud), например.

можно типа и Lua, но неспортивно.

лучше взять какое-нибудь Inferno, Limbo, Dis VM например (либо тот же Go).

где CSP Хоара, и «всего лишь три сущности – файлы, горутины и каналы» (c) powerman, caerwyn

и переписать этот LambdaMOO на Limbo под инферно, например.

а чтобы переписывать было легче – сначала реализовать WEAVE/TANGLE средствами LambdaMOO изначального, например.

и делать TANGLE в объекты, а не только лишь в файлы.

хотя файлы в Inferno (как и в Plan9) через styxfs – тоже понятие растяжимое.

но проще написать движок мудсервера (без интерпретатора, примерно как в ColdC) – отдельно, на dial/net/notify API из Plan9/Inferno — чем BSD сокеты и синхронные/асинхронные/неблокирующиеся и селект с сигналами, весь этот зоопарк из позикса классического.

проще на dial/styx/notify и Limbo чем на позиксе. для наглядности.

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

берём, например rmoo на растишке. либо stunt.io какой-нибудь уникодоподобный.

берём minimal.db либо LambdaCORE или ещё какую-нибудь относительно простую типовую ООБД типа JHCore.

minimal.db:

Object #0: system
Object #1:  root
Object #2:  Wizard
Object #3:  Room

парсер ввода, в виде глаголов и существительных можно реализовать в объекте #2 или #1, для простоты опять же.

он должен понимать команды типа tangle WEB метапрог и транслировать их в вызовы методы объектов (посылку сообщений акторам) типа WEB:tangle a b метапрог c d, cм. API.

то есть: мы можем сказать хранимому в ООБД объекту как парсить команду на уровне командо-строчного ввода МУДа в объекты и методы.

в ColdC синтаксис более наглядный, и типов данных больше. наследование опять же проще и нагляднее, исключения есть как факт.

но не суть.

в Pike вообще к интерпретируемому си проще, опять же для наглядности.

Limbo по сути тот же Си только модульный и с ADT вместо ООП, каналами и горутинами корутинами.

но не суть.

суть в том, что сервер какого-нибудь условного гофера на этом запилить весьма просто.

простой текстовый протокол с минимумом оверхеда на парсинг и прочие согласования, типа chunked/http. или докачки в HTTP/1.1. или асинхронностей в аяксах с вебсокетами.

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

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

LambdaMOO с MCCP, MCP, MXP расширениями текстовых гиперссылок, со сжатием и возможно, SSL/TLS шифрованием – тоже не сильно сложнее.

при этом будут обладать одним полезным качеством:

  1. в отличие от HTTP хранение состояния непосредственно на сервере, а не в куках.

  2. минимизация трафика

  3. наличие ключей авторизации, понятного ЖЦ подключения и самого пользователя, начиная от логина в МУДе, то есть, простите, вебсервере – до выхода с отключением.

  4. сервер знает состояние клиента и его подключение/отключение и может его состояние синхронизировать.

далее нужно развивать совместно МУД клиент, а не только МУД сервер.

например, типа мудлет на луа. или того на пайке под GTK3.

либо написать свой, на том же Limbo и tk (но без tcl).

клиент при этом будет реализовывать какую-то разновидность CAM и например, по ключу – хешу от содержимого докачивать только те блобы, которые уже не закачаны локально в его кеш.

то есть, синхронизировать состояние из ООБД в локальный файл в песочнице и использовать CAM оттудова.

то есть, кеширование по содержимому сделать наконец так, чтобы работало.

например, в МУД клиенте сделать карту картинкою. типа img map тегов которые наконец-то работают.

да вообще-то вообще, кешировать что угодно. хоть объект с подобъектами с дедупликацией.

хоть аналоги HTML, CSS, JS.

например, можно как в cURL – хранить в курва-скобках эти самые first class objects — документ с dynamic type виджетами/гаджетами, компилируемый через CPS преобразование из лиспа, то есть, cURL объектов (с макросами, коллбеками, динамическими переменными, замыканиями и прочими прелестями) – компилируемый из эдакого вот модульного лиспа через си непосредственно в бинарный объект.

без всяких там глобальных блокировок и прочего мусора.

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

и динамически программируемым при всём при этом.

без DOM с виртуальными DOM и всем недостатками объектной модели С++, с грехом пополам натянутой на COM и прототипное ООП типа Io либо жопаскрыпта.

с нормальной объектной моделью – на базе компилируемых лисповых first class objects, тащем-та.

и нормальным MVC поверх этого. в стандартных библиотеках, модулями, либо макросами. не суть.

главное, что этот RIA наконец-то станет эффективно компилируемым через лисп бинарным объектом.

который, внезапно, можно уже хранить в бинарной ООСУБД.

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

в сторону lock-free алгоритмов и версионированных СУБД, даже ООСУБД.

в общем-то такой недоделанный неполноценный лисп как WASM тут не нужен.

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

это если не упарываться по лимбе с инфернами. и JIT/AOT компилятором на базе Dis VM, например.

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

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

архитектурно модульно, эффективно распараллеливаемого by design

а не этого вашего HTML5 с CSS и жопаскриптом.

электрона с нодой с виртуальными ДОМ-2 с реактами, туды яво в качель.

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

точнее говоря, не CAM, а CAS: CAS and FCS

но по смыслу это ООБД блобов типа .git каталога где blob.ref=cas[hash(blob.content)] то есть ключ-значение

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

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

или venti из Plan 9. поверх Fossil для снапшотов ФС.

Venti is included as part of Inferno with accompanying modules for access. There is a Go set of programs to build your own Venti servers. Included are examples using different kinds of backend storage.

так что есть готовые реализации.

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

а если найду?

человекопонятные УРЛы – это не гопники какие-то в парадном же. или в вагонах метро.

это вполне конкретная статья, в которой спектатор целых 21 лет назад и около того написал статей, постов, текстов (и гипертекстов):

21 год тому назад: уже ЧПУ и PHP (revisited)

ЧПУ — это термин, придуманный командой НовоКиберска, обозначает он «Человекопонятный УРЛ». Термин нигде широко не употреблялся, пока я не написал 5 сентября 2000 года заметку «ЧПУ и PHP». За эти три года термин довольно неплохо раскрутился.

19 лет назад: Фетиш ЧПУ

Проблема с ЧПУ по большому счету одна: URL не может содержать русские буквы. И она никак не лечится. Есть два способа как это обойти:

IDN и сайты.рф тогда ещё никак не изобрели, слава богу.

и в %quoted%-%printable% выглядит не очень, не то что xnфигня какой-нибудь

13 лет назад: ЧПУ sucks balls

Я буду отказываться от них везде, где можно.

криэйтор спектатор прозрел, в опасносте!

в общем – зачем тебе этот фетишЪ?

здаётся мне, ты не УРЛов – а ПУРЛов ищешь.

или каких-нибудь нежно розовых чисел (например, E.E. Kim’s “An Introduction to Purple” <2> с [тумблерочками] (https://en.wikipedia.org/wiki/Project_Xanadu#Tumbler) из [литературных машин] (https://en.wikipedia.org/wiki/Literary_Machines) и всяческого Xanadu

или этого самого NLS/Augment Дугласа Энгельбарта

гиперскопЪ

##OVERVIEW

The HyperScope is a high-performance thought processor that enables you to navigate, view, and link to documents in sophisticated ways. It’s the brainchild of Doug Engelbart, the inventor of hypertext and the mouse, and is the first step towards his larger vision for an Open Hyperdocument System.

##DEMO

As mentioned in the CURRENT COMPATIBILITY section above, you must be using Firefox 2.0 to use the demos.

вот же олдовые диды да шмогли!!

не то что смузихлёбы новомодныя

HyperScope is a faithful reproduction of Douglas Engelbart’s NLS/Augment and VAT systems; our goal was to reproduce pieces of these systems into contemporary web browsers, changing as little as possible for this phase. The software therefore requires some training to use. Start with our tutorial.

You can read a HyperScope-version of Doug Engelbart’s classic 1962 paper, «Augmenting Human Intellect: A Conceptual Framework.» More demo documents are available here.

вебархивное:

гиперскопЪ-сайт

что ты смогёшь делать в гиперскопе: фичи

пять больших идей: bigidea

пять больших идей – это не исходных 17 правил Ксанаду изначального.

но хоть уже что-то.

NLS/Augment при этом всё-таки работал, в отличие от.

артефакты

Xanadu Udanax green FeBe protocol

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

ещё оттудова занятное: Knowledge base

нетлёнка криэйтора:

Третий — устаревшие/архивные материалы, в том числе и предыдущие версии темообразующих документов.

Пользователю же при первом знакомстве всегда подсовывается темообразующий блок. Например, если я пишу в блоге заметку — ну, скажем, «еще один способ сделать ЧПУ», — то человек, который не знает, что это такое, вынужден идти по ключевым словам и узнавать.

Если же делать knowledge base, то пользователь видит, что обновилась/завелась тема ЧПУ и когда он в нее заходит, то ему не вываливается «а вот все, что у меня есть про ЧПУ, разбирайся и сортируй сам».

Кстати, когда я писал диплом, у меня была бредовая идея сделать его в виде гипертекста, основной корпус диплома сделать в виде, скажем, пятистраничного текста, который кратко, но по существу передает все содержание диплома, и в котором в ключевых местах понатыканы ссылки [show me more]. Грубо говоря, человек, который читал бы диплом, смог бы углубиться в него в любом месте и на любой уровень.

Представьте, если бы каждый абзац можно было бы расширить на страницу, а в свою очередь каждый абзац там — еще на страницу.

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

«Авторские проекты как пример адекватной реализации свойств интернета (на материале истории российской интернет-журналистики 1995-2002 годов)» блогозапись Diploma I: написание диплома

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

в 1996-1998 из блогов были в основном cooler.irk.ru, dz.online, спектатор тот же, эклер какой-нибудь

это если мая мухина не вспоминать, паравозов ньюса и кадеткину тёмы лебедева

хотя не, спектатор это 1999 год уже, вот

блоги уже в 1995-1999 активно были в рунете, а может и раньше фидогейт какой-нибудь был

мицголовы блогозаписи это уже 2003-2005 примерно, ЕМНИП

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

про NLS/Augment Дугласа Энгельбарта
===================================
про интеллект аугментированный:

  • статья на хабре Дуглас Энгельбарт: «Augmenting Human Intellect: A Conceptual Framework»

  • сайт самого автора и статья

Augmenting Human Intellect:
A Conceptual Framework
SRI Summary Report AFOSR-3223
By Douglas C. Engelbart
October 1962

по ссылке про AugTerm что такое AugTerm? FAQ находятся ссылки на документацию

оттуда из гиперскопа про hyperscope/wiki.pl AugmentNLSRestorationProject

а также NLS-Augment Restoration Project Home Page ссылка

computerhistory.org…nlsproject

ну и сам гиперскопЪ конечно же – в OPML виде эта статья там в демо примерах тоже есть.

половина ссылок из вебархива, раскапывать пришлось

отложения в новейшей истории, ога.

что ещё раз показывает кривизну дизайна битых ссылок веба негодного – и прямоту интеллекта усиленного, гипертекста аугментированного

чего как раз пытались не допустить – как это битых purple numbers для ЧПУ структурной адресации.

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

всё равно какое-то отображение этих ПУРЛов на ЧПУ делать пришлось бы.

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

два чая тому господину кто запустит этот гиперскопЪ в современных веб-браузерах – а не Firefox 2.0.

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

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

первая картинка в статье – про метапрог.

жгутики с проводочкаме

вторая картинка – закон Конвея первоисточник

Организации, проектирующие системы ограничены дизайном, который копирует структуру коммуникации в этой организации

особенно метапрог. ограничен жгутиками.

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

с телефона, а там урл даже не отображается, пока не начнёшь его редактировать

В Safari на iOS можно долго удерживать ссылку и оно урл покажет. С включенными превьюшками оно страницу по ссылке, разумеется, прогрузит.

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

Гуид - это ссылка, base64 - сама информация, типа нигде хранить не надо

вот в инферно есть простая понятная документация в *.pdf и troff исходники этих PDF.

например, есть описание формата sexp /usr/inferno/lib/sexp в котором:

Informally, an S-expression is either:
        -- an octet-string, or
        -- a finite list of simpler S-expressions.
1. Introduction

S-expressions are data structures for representing complex data.  They
are either byte-strings ("octet-strings") or lists of simpler
S-expressions.  Here is a sample S-expression:

        (snicker "abc" (#03# |YWJj|))

It is a list of length three:

        -- the octet-string "snicker"

        -- the octet-string "abc"

        -- a sub-list containing two elements:
                - the hexadecimal constant #03#
                - the base-64 constant |YWJj| (which is the same as "abc")

This note gives a specific proposal for constructing and utilizing
S-expressions.  The proposal is independent of any particular application.

Here are the design goals for S-expressions:

  -- generality: S-expressions should be good at representing arbitrary
     data.

  -- readability: it should be easy for someone to examine and
     understand the structure of an S-expression.

  -- economy: S-expressions should represent data compactly.

  -- tranportability: S-expressions should be easy to transport
     over communication media (such as email) that are known to be
     less than perfect.

  -- flexibility: S-expressions should make it relatively simple to
     modify and extend data structures.

  -- canonicalization: it should be easy to produce a unique
     "canonical" form of an S-expression, for digital signature purposes.

  -- efficiency: S-expressions should admit in-memory representations
     that allow efficient processing.

...

то есть, есть base64 строки как тип данных.

cтроки бывают octet-string (presentation:verbatim,token,hex,base-64, display-hint). из них составляются списки (списков или строк), в этом смысле как S-exprs лиспа.

есть три представления: каноническое, простое и продвинутые транспортное.

описана грамматика в BNF.

используются для сертификатов.

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

например:

$inferno/services/{httpd,webget} -- размеры бинарей: 4222, 7871 байта, исходников -- $inferno/appl/svc/{httpd,webget} 73237,105600 байт

исходники

$inferno/appl/charon -- веб-браузер размером 717520 байт
$inferno/appl/ebook  -- смотрелка eBook формата OEB на базе XHTML 
размером 209715 байт (описание OpenEbook формата см. в $inferno/lib/ebooks/oebtest и ещё пару книжек)

$inferno/spree -- 355853 байта, игрушки сетевые распределённые по сети + чат
$inferno/appl/demo/spree -- 1154 байта, пример клиента

$inferno/grid -- 215274 байта, GRID для обработки картинок
$inferno/appl/demo/chat -- 10989 байта,  чат клиент+сервер

$inferno/appl/collab -- 72611 байт, клиентсерверный код для $inferno/appl/collab/clients/{chat,poll,whiteboard}.b чятика, опросника, рисовалки

$inferno/appl/demo/whiteboard -- 20363 байта, рисовалка совместная по сети

--- то есть, метапрог, лолЪ :)

в общем, занятная такая штука эта ваша инферна.

опять же, Utf8 исходники и компактный уникодный troff/ps2pdf, convcs, libutf с runes

где в целом всё ОК с русским языком (на уровне utf8)

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

хочешь компактные не жрущие веб-технологии – посмотри на ту же Inferno или на Plan 9.

сharon – компактный веб-браузер (устаревших стандартов, ога)

ebook – смотрелка OEB XHTML

кто бы взялся допилить Charon или Mothra из Plan 9 (примерно то же) до поддержки современных HTML5,CSS3,JS v8, DOM

ну или конпелировать JS в Limbo/Dis с уже работающим JIT/AOT научился бы….

настоящих буйных мало – вот и нету метапрог вожаков

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

так что теоретически можно использовать rc-шелл- или tk-гуи-подобный скрипт для обмена чистыми sexp, например: ; cat $inferno/appl/spree/other/tstlines.sh

#!/dis/sh
load tk std
pctl newpgrp
wid=${tk window 'Test lines'}
fn x {tk $wid $*}
x canvas .c
x pack .c
x 'bind .c <ButtonRelease-1> {send b1 %x %y}'
x 'bind .c <ButtonRelease-2> {send b2 %x %y}'
x update
chan b1 b2
tk namechan $wid b1
tk namechan $wid b2
while {} {tk winctl $wid ${recv $wid}} &
chan show
ifs='
'
v1 := 0 0 1 1
v2 := 1 1 2 2
while {} {
        args:=${split ${recv show}}
        (t args) = $args
        $t = $args

        tk 0 .c delete lines
        echo $v1 $v2
        r := `{tstboing $v1 $v2}
        (ap1x ap1y ap2x ap2y bp1x bp1y bp2x bp2y) := $v1 $v2
        tk 0 .c create line $ap1x $ap1y $ap2x $ap2y -tags lines -fill black -width 3 -arrow last
        tk 0 .c create line $bp1x $bp1y $bp2x $bp2y -tags lines -fill red
        and {~ $#r 6} {
                (rp1x rp1y rp2x rp2y sp2x sp2y) := $r
                tk 0 .c create line $ap2x $ap2y $rp1x $rp1y -tags lines -fill black
                tk 0 .c create line $rp1x $rp1y $rp2x $rp2y -tags lines -fill green -arrow last
                tk 0 .c create line $rp1x $rp1y $sp2x $sp2y -tags lines -fill blue -arrow last
        }
        tk 0 update
} &
<...tl;dr...-"->

; cat $inferno/appl/demo/spree/spreeclient.sh

<...tl;dr...BEGIN>
user="{cat /dev/user}

fn notice {
        or {~ $#* 1} {
                echo usage: notice arg >[1=2]
                raise usage
        }
        t := $*
        run /lib/sh/win
        tkwin Notice {
                x text .t -yscrollcommand {.s set}
                x scrollbar .s -orient vertical -command {.t yview}
                x pack .s -side left -fill y
                x pack .t -side top -fill both -expand 1
                x .t insert 1.0 ${tkquote $t}
                tk onscreen $wid
                chan c; {} ${recv c}
        }
}
<...tl;dl...END>

так что в Inferno shell rc-подобном из Plan 9 вполне можно писать сразу GUI на tk

на чистом Limbo кстати, тоже не сильно сложнее.

по таким вот клиент/серверным чятикам метапроговым вполне может ходить например те же sexp

cм. например те же spree,chat,whiteboard

хотя я бы лучше использовал sexp только для авторизации, далее команды передавал бы в духе MCCP/MXP/MCP из мудов или Moo

там где гиперссылки на запуск команд на сервере передавать можно

то есть например в Mudlet клиенте нажимаем гиперссылку "Go room #456" и в клиент уходит команда @go #456 или как-то так

сами base64 как-то обмениваться странно.

например тот же редактор в λμ сделан в духе telnet SMTP на нужный порт, даже «.» в конце редактирования

а вообще даже целые IDE для LambdaMOO придумали, из самого мудклиента

ещё там какой-то отладчик есть гипертекстовый отдельным серверным скриптом – но даже до acid из inferno/plan9 ему далеко

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

так что в векторном гипертекстовом мудклиенте под Inferno, написанном на Limbo (или если упороться, сразу на inferno shell) и tk логично было бы посылать строки, раз по каналам где tk события тоже посылаются строки.

например, придумать FGHI гиперссылки к командам и фидомессагам.

то есть: MCCP/MCP/MXP команды из MUD/λμ должны гиперссылками передавать S-выражения в формате sexp и запускать команды на сервере.

которые если на лимбо написать лисп даже и сильно переделывать не придётся.

то есть: через λμ запускать лисповые S-выражения в base-64.

вдругорядь прозреваю: вот он концепт векторного гипертекстового фидонета метапрога, графически многопользовательского и вообще!!!

мицголушка одобряэ :)

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

ещё можно литературно-грамотное средство публикации еКнижек написать (наподобие inweb перлового из Infrom 7)

смотрелка уже есть.

на выходе в weave представлении еКнижек должно получаться troff ms и далее ps, pdf либо XHTML OEB с нужными метаданными

дабы в жгутиках и проводочках спонтанно накаляканных в whiteboard можно было бы потом хоть как-нибудь разобраться….

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

так что расово идеологически верный мудсервер вроде этого вашего λμ на лимбе под инферну должен скорее всего, выглядеть не совсем как λμ или ColdC либо Pike или Lua язык.

а скорее, как advsys лиспоподобный.

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

В «реактивности» нету mvc. Оно вообще никому давно не всралось, ну акромя ангуляра. Его для сишарпомакак сделали. Остальные реактивные фреймворки mvvm в основном, а react - вообще функции с хтмл-дрисней в теле

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

размеры бинарей в байткоде .dis:

==веб-браузер
$inferno/dis/charon.dis --- 27980 БАЙТ
прочие ресурсы:
$inferno/fonts/charon -- 25966 БАЙТ
$inferno/icons/charon -- 9403 БАЙТА

исходники
$inferno/appl/charon -- 717520 БАЙТ
$inferno/appl/charon/jscript.b -- 81879 БАЙТ

$inferno/appl/charon/lex.m -- 3461 байт, декларация модуля 
$inferno/appl/charon/lex.b -- 25266 байт, реализация модуля 
парсера HTML 4.0 (? XHTML?) на lex, yacc под limbo

==смотрелка еКнижек
$inferno/dis/ebook/ebook.dis --- 29855 БАЙТ

прочие ресурсы
$inferno/dis/ebook/* -- 69639 БАЙТ
исходники

 реализован парсер XHTML OEBs, похоже в reader{.b,.m}:
$inferno/dis/ebook/reader.m -- 4119 байт, декларация
$inferno/dis/ebook/reader.b -- 42215 байт, реализация

так что парсеры HTML 4.0, XHTML OEBS на базе примерно него же – в Inferno на Limbo оченно компактные.

подозреваю ещё, что и на языке Red (или частично Red/System) тоже компактно получилось бы.

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

ну вот например в языке curl MVC есть среди компонент в исходниках, и сделан он как-то более адекватно чем теневой виртуальный ДОМ-2 и весь этот балаган в придачу, как обычно жс-макаки обмазываться любят

так что почти любую реактивность в curl,red,и т.п. акторах с понями(ponylang под llmv) можно сделать адекватнее чем это обычно в жс

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

Кстати, когда я писал диплом, у меня была бредовая идея сделать его в виде гипертекста, основной корпус диплома сделать в виде, скажем, пятистраничного текста, который кратко, но по существу передает все содержание диплома, и в котором в ключевых местах понатыканы ссылки [show me more]. Грубо говоря, человек, который читал бы диплом, смог бы углубиться в него в любом месте и на любой уровень.

я просто прочитал вот это:

[метапрог
localFileUrl:$inferno/lib/ebooks/understandingoeb/chapter2.html#chapter2
про: 2. Understanding an OEB Publication
>>пурплЛинк:<< An OEB Package >>пурплЛинк:<< The Package Metadata
>>пурплЛинк:<< The Package Manifest
>>пурплЛинк:<< The Package Spine
tlDR: «<…>» ]

и узрелЪ уже потом гиперссылки смоллтоковые.

а сначала увидел вот те самые метаданные с главами

про которые спектатор рассказывает

Представьте, если бы каждый абзац можно было бы расширить на страницу, а в свою очередь каждый абзац там — еще на страницу.

а тут Н. Безруков с софтпанорамы рассказывает про FTE и прочие Folding Editors, в контексте литературно-грамотного.

вот здорово было бы если бы


бла-бла-бла-бла

<<блок кода>>+= %{{{пошёл фолдинговый комментарий
 <<...tl;DR... BEGIN>>
 ...креатифф...
 <<...tl;DR... END>>
@               %}}}ушёл фолдинговый комментарий

сворачивался бы в

Бла-БлУ-БЛЫ (1 строка документации свёрнута)
блок кода (стопиццот строк кода свёрнуто)

например.

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

ещё одна теория заговора история, популярными словами про тоже самое: лорЪ

собственно, в $∞/lib/еbooks про XHTML OEB еКнижки тоже самое более развёрнуто.

пока (X)HTML остаётся простым и логическим, а не физическим – и парсер получается простой, да даже на lex/yacc, и технологии не тормозят.

опять же например PDF. по сути это ‘display model’ из PostScript + компилированная бинарная ООБД база данных, с base-64 и прочими кодировками текста.

возможно даже с JS, но он там если и нужен – то только для валидации форм. а так вообще нет.

это тоже пример компактно, экономно реализованных веб-технологий.

а вот JS v8, DOM в C++ духе, GIL, CSSы с красивостями, WASM и прочее – это путь куда-то не туда.

зачем все эти навороты ненужные когда есть божественный Харон в несчастные 30 килобайт?

хотя наверное тот плагин в MSIE исходники которого лежат в $∞/emu/Nt/{ieplugin.h,ie-win.c,ie-os.c имело бы смысл под тот же WASM портировать.

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

Современный браузер это гибрид виртуальной машины и крайне развитой системы компьютерной верстки. Причем, эта система работает не так как классические, например LaTeX, когда ОДИН РАЗ генерируется выходной файл PDF и потом отображается он. А она работает так, что выходное отображение генерируется непрерывно, на каждой машине каждого пользователя, который это смотрит. Генерируется по огромному, крайне запутанному, противоречащему друг другу набору правил верстки, прописанному верстальщиком, фреймворком или еще каким шайтаном, с учетом ТЕКУЩЕГО состояния дерева DOM, которое меняется работающими в фоне скриптами в любую секунду.

причём если рассматривать отдельных верстальщиков: troff, SCRIPT/WGML, GML, TeX (LaTeX, ConTeX на LuaTeX), SILE, skribilo на Guile, skribe, Pollen на Racket, CURL, Lout, pandoc и далее хаскельнутое или ML-нутое, например, тот же nonpareil aka Lout 3.0 ; speedata поверх XML и LuaTeX; DITA и какой-то DocBook или TEI или те же OEBS

– то

  1. повышается степень декларативности, а не императивности

  2. уже даже в TeX изначальном для индексов нужно несколько раз перезапускать, и да, по правилам «боксов и клея» перезапускается несколько раз, пытаясь подобрать badness (хорошочитаемость), см. TeX: the Program в книжке.

в HTML 5.0 браузерах пытаются и верстать быстро, и чтобы хорошочитаемость была нормальная, но спотыкаются об этот DOM и связанный с его блокировками GIL.

в прочих верстальщиках нет DOM – нет проблем.

нет «физического» DOM и физической вёрстки – и GIL связанных с этим тоже нет.

идея оставить браузер универсальной запускалкою EMBED OBJECT объектов постепенно сходит на нет.

а так, полно примеров более компактных и модульно организованных операционных сред и машин – та же инферна, или А2 и ЯОС, или ChrysaLisp например.

на базе которых можно было бы и браузеры выстроить более адекватно: компонентно и модульно.

вот например, зачем нужен iconv на 52 Мб если есть божественная комедия lib9,libkern,libbio и прочий libutf с Rune?

да и $∞/appl/lib/convcs исходники всего 739 *ккило**байт, а не 52 мегаБайт

а делает всё тоже самое.

интересное чтиво в $∞/lib/ebooks/oebtest/index.html, однако же.

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

про интеллект аугментированный, Брет Виктор: Несколько слов о Дугласе Энгельбарте статья на хабре

отличная статья:

Забудьте про сегодня, просто подумайте о том, что он делал, с точки зрения его целей.

Многие эксперты, к сожалению, часто упускают суть его работы, потому что они рассматривают всё как техническую задачу. Энгельбарт посвятил свою жизнь проблемам человечества, технологии были лишь частью их решения. Когда я читаю интервью экспертов с Энгельбартом, я представляю, как они брали бы интервью у Джорджа Оруэлла, задавая глубокие вопросы про его пишущую машинку.

Это, как если бы вы взяли человека, который изобрёл письменность, и назвали бы его создателем первого карандаша. (Эта аналогия наиболее точно показывает суть проблемы.)

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

Проблема с утверждением, что Энгельбарт «изобрёл гипертекст» или «изобрёл видеоконференции», состоит в том, что вы пытаетесь осмыслить прошлое, опираясь на настоящее. «Гипертекст» — это понятие, которое имеет конкретное значение для нас сегодня. Говоря, что Энгельбарт изобрёл гипертекст, вы приравниваете это же значение работам Энгельбарта.

Практически каждый раз, когда вы интерпретируете прошлое как «то же, что и настоящее, но примитивнее и грубее», вы теряете смысл явления.

Но в случае с Энгельбартом вы теряете суть особенно сильно.

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

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

из новостей дня к этой статье, выскочило – куда развиваются браузеры:

  • Microsoft пытается побудить пользователей Windows перейти на новые ПК и ноутбуки. Основной инструмент — штатный браузер статья

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

мне кажется, это имманентно современному упрощённому и концептуально неполному пониманию гипертекста и веб-технологий, и тут уже не исправить ничего, господь, жги :))

или нет? исправить всё-таки можно:

  • Wasm на весь стек — движемся от клиента к серверу с использованием Leptos, Rust и Spin статья

При рендеринге на стороне сервера Leptos всё равно выполняет в браузере Wasm-приложение, через которое управляет пользовательским интерфейсом и интерактивностью. Но также можно запускать серверные функции, к которым браузер может обратиться. Серверные функции изоморфны, то есть они имеют одинаковую «форму» как на стороне клиента, так и на стороне сервера. Например, предположим, что нужно сохранить результат взаимодействия в базе данных. Конечно, можно вручную создать API и написать код для его вызова. Но Leptos позволяет написать функцию Rust для сохранения данных и при этом вызывать эту функцию клиентской стороне. Благодаря некоторому вмешательству на уровне макросов одна и та же функция, собранная для сервера, превращается в API для записи в базу данных, а при сборке для клиента – в вызов этого серверного API.

то есть, браузер всё сильнее превращается в запускалку приложений, только всё ещё недоразвитую

в 90е таким killer app для глобальной блокировки интерпретатора, вендор лок-ина – был офис, сейчас браузер

концептуально – это фича или баг? кажется, с таким как бы развитием featurism-а мы теряем суть особенно сильно, особенно быстро.

может даже, понимание блокировок интерпретатора – это следствие извращённого понимания блокировок очередей, в которые сваливается «совместная работа» (см. комментарии к статье Бретта Виктора)

вместо нормально распараллеливающихся отдельных акторов, как это было в изначальной концепции (или каналов и сопрограмм, или активных объектов или акторов, или «изоморфных серверных функций ООСУБД» или whatever)

multiple cursors наконец-то появились в текстовых редакторах, но используются опять же не для того.

anonymous
()

Суперточный ответ на этот тред.

  1. Изначально URL - для машины. Для человека делали GUI, мышь, красивые ссылки в браузере, вёрстку. Навёл, нажал, перешло. Как это реализовано человека е**ть не должно. 99% людям и не интересно, даже сотрудникам ЦЕРН.

  2. НО если ссылки удаётся сделать человекочитаемыми, то это плюс в карму разрабам. Это как случайно обнаружить, что полки в шкафу прикручены не просто винтами, а винтами-«барашками» и их можно открутить руками.

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

Microsoft пытается побудить пользователей Windows перейти на новые ПК и ноутбуки. Основной инструмент — штатный браузер

внезапно, Алан Кей был прав:

I really would like you to contrast that with what you have to do with HTML on the Internet. Think about it. HTML on the Internet has gone back to the dark ages because it presupposes that there should be a browser that should understand its formats. This has to be one of the worst ideas since MS-DOS. [Laughter] This is really a shame. It’s maybe what happens when physicists decide to play with computers, I’m not sure. [Laughter] In fact, we can see what’s happened to the Internet now, is that it is gradually getting—There are two wars going on. There’s a set of browser wars which are 100 percent irrelevant. They’re basically an attempt, either at demonstrating a non-understanding of how to build complex systems, or an even cruder attempt simply to gather territory. I suspect Microsoft is in the latter camp here.

You don’t need a browser, if you followed what this Staff Sergeant in the Air Force knew how to do in 1961. You just read it in. It should travel with all the things that it needs, and you don’t need anything more complex than something like X Windows. Hopefully better. But basically, you want to be able to distribute all of the knowledge of all the things that are there, and in fact, the Internet is starting to move in that direction as people discover ever more complex HTML formats, ever more intractable. This is one of these mistakes that has been recapitulated every generation. It’s just simply not the way to do it

а между тем в Dillo 3.1 появились плагины: gopher gemini spartan man ipfs

которые внезапно работают просто как скрипт на stdin/stdout

вот могут же – если захотят?

да, и netsurf под plan9 вроде собирается весь_список

и кто из них ближе к нормальной полноценной вёрстке, Dillo или netsurf ?

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

Тем более чпу сейчас можно и кириллицей указать. Если не путаю даже в ларе можно урлы привести к чпу кириллицей и все остальное разрулить роутами.

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

Сейчас на зиме/октябре борюсь с проблемой выбора локализации сайта, если выбран ru, то редирект на *.рф и соответственно кириллические чпу, если en редирект на ru и чпу латиницей

julixs ★★★
()

url - он для «киборга-ойтишнега». А у «белых» людей есть свой браузер с поисковиком с персональным шпионом в комплекте. =)

Atlant ★★★★★
()