Пробуем в Web )

Здесь обсуждаются проблемы мироустройства.
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

manager.JPG
А также меню, текстовый редактор, кучка из 20 органов управления, командный процессор. Все чистый код, по аналогии с ДОС-овским, никаких манипуляций с встроенными в браузер компонентами ОС. Поддерживает оба канала ввода-вывода, мышку и клавиатуру. В одной из редакций органов управления можно накладывать произвольные шкурки. То есть превращать TUI в GUI. Пока еще не до конца отесано, но где-то на последней миле... )
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

edit.JPG
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

Еще консольный многозадачный tcp-ip/http-сервер к оному прилагается, накатанный на Euphoria. )
pic.JPG
Last edited by leva on Tue 17 Mar, 2020 16:03, edited 1 time in total.
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

Он же выполняет функции шлюза для всего "балагана". (Upd. для поста ниже: обработку вызовов можно осуществлять непосредственно в модулях кода сервера. Используя http или не используя http.)
Last edited by leva on Tue 17 Mar, 2020 16:10, edited 4 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Пробуем в Web )

Post by citRiks »

leva,
это не ФАР в javascript, это ФАР в Вебе :) ну посмотрим как ты потянешь сделать весь функционал ФАРа в Вебе,
смысл веба в том чтобы секюрно вот это все вынести наружу через ХТТП, другуго смысла нету, кстати.
И я бы сказал, что лучше твою энергию направить на:
1.) способы работы с ФАРом через некоммереческий SSH (вроде сигвиновского)
2.) и/или на замену Луа на javascript/scripthost (кстати какие-то наработки на эту тему вроде были)
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

Не, цели повторять ФАР нет. Просто инструмент для организации документов строчимых в редакторе и отправляемых на сервер в сжатом виде с помощью примитивной формы Ajax. Он к реальной файловой системе никакого отношения не имеет. Есть виртуальная ФС из ссылающихся друг на друга массивов, по аналогии с ссылками в ФС ДОС. Операции с этой виртуальной ФС осуществляются в браузере, включая проверки на корректность операции, типа отсутствия "закольцовки". Дополнительно результат проходит контроль на сервере. То же самое касается и содержимого документов. Редактор имеет функциональность WordPad, а технически (в первом приближении) являет собой одну большую строку, с которой и осуществляются разнообразные хитрые манипуляции в коде. Также виртуальные файлы (документы) могут ссылаться на реально загруженные файлы. В заголовке вирутального файла указывается операция по умолчанию (открыть в редакторе, "проиграть" и скачать). Документы могут иметь ссылки друг на друга (гипертекст над гипертекстом), а все это дело склеивается интерпретатором скриптов типа изначального Бейсика. Настрочены также функции поиска по шаблонам (причем построение индексов осуществляется без использования аппарата регулярных выражений JS - выходит раз в 10 быстрее). А в самом этом навигаторе реализованы выделение, копирование, удаление, перемещение, все виды прокруток под управлением мышью и клавиатурой. Собран навигатор из панелей, каждая из которых может самостоятельно использоваться в качестве listbox. Дополнительно имеются чеки, радио, списки, календарь, однострочный редактор, дерево, пейджер, таблица и так далее. Все это вызывается одной командой, наподобие:

CreateСommander("comm1","Коммандер:",100,100, "links");

:)

дальше с объектом comm1 можно производить разные манипуляции программно, задействуя его свойства и методы. Надо сказать, что накатано сие в стилистике Fortran на чистом JS, с минимальным привлечением средств языка, просто потому, что я этого языка не знаю. У меня перед глазами книга лежит по JS - справочник Вайка от 1999 года... Но я на разных платформах в разных осях протестировал - вроде все нормалек... :D

Есть одна тонкость. Для отображения всей этой лабуды задействованы всего две бейсикоподобные команды WINDOW и PRINT. А для реализации интерфейса компонент специально изобретен "принцип инверсии", когда одно знакоместо "зеркального телетайпа" автоматически заменяется на группу знакомест в сетке таблицы, для чего придумана целая "математика". На самом деле есть два типа контролов - один простейший с затенением, а другой построенный по этому самому принципу. Ну и еще некоторые библиотечки, вроде форматированного вывода текста и так далее. Это полуклон MS-DOS с VBDOS. :D
Last edited by leva on Tue 17 Mar, 2020 16:11, edited 7 times in total.
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

Есть одна идея, заключающаяся в том, что эти виртуальные ФС могут располагаться в разных местах, на разных "станциях" и тогда появляется соблазн объединить оные ФАР-ы в виртуальную локальную сеть. То есть сеть поверх сети, когда есть некая общая база станций (по типу BBS), ФС которых можно нечувствительно подключать к свой собственной в виде папки в навигаторе и организовать в такой "сети" коммуникацию. И не нужны будут никакие фейсбуки, т.к. в отношении такой псевдосети соцсети выглядят такими же динозаврами, как мейнфреймы, по отношению к объединенным в сеть персоналкам. При этом возникают проблемы, но, думается, их вполне можно решить, обеспечив коммандерам бесконечную и счастливую жизнь в перспективе, т.к. ничего лучше для навигации по иерархии никто не придумал и вряд ли изобретет. А также избавить веб-разработчиков от изучения чего-либо сложнее Бейсика или стандартного Паскаля. Ну а уж форум сляпать или какую хоум-пейдж с таким инструментарием совсем несложно. Меня это очень волнует, т.к. я страдаю дебильностью и не могу изучить "нормальный" язык программирования сложнее Fortrana и Бейсика. Зато на них я могу запилить практически любую структуру данных. Из-за оной болезни я не могу устроится никуда на работу и возникло острое желание забить на веб-технологии и прочую лабуду сведя все к написанию программ в стиле школьников, строчащих в конце 80-х свои программки на Агатах и Правцах. :D
Last edited by leva on Tue 17 Mar, 2020 10:47, edited 14 times in total.
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

citRiks wrote: Tue 17 Mar, 2020 08:18 вот это все вынести наружу через ХТТП, другуго смысла нету, кстати.
Если вы контролируете код сервера (или прокси-сервера) то ХТТП вам в принципе побоку. На локальной машине нетрудно организовать трансляцию посылок на сокеты в вызовы серверных процедур, манипулирующих с реальными ресурсами машины и обратную трансляцию реальной ФС в виртуальную после осуществления операций с реальными ресурсами ПК. А так же вызов любых других программ на компьютере, типа архиваторов и программ для просмотра контента + отправку браузеру результатов работы оных программ. Но это неопробовано, а высказывается в плане идеи. Поэтому задействуя сторонние программы должно быть не так уж и трудно реализовать весь функционал ФАР-а, оставив в браузере только "морду". То есть необязательно лепить монолитный код и плагины к нему. Можно тупо, в стиле Линуха собрать систему из чужих "кирпичиков", прилепив к ней любую функциональность. И получится "ФАР в javascript".
Last edited by leva on Tue 17 Mar, 2020 10:30, edited 7 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Пробуем в Web )

Post by citRiks »

leva wrote: Tue 17 Mar, 2020 10:14 На локальной машине
а смысл на локальной? на локальной есть ФАР,
Надо сидеть удаленно где-то и запускать "фар" на другой машине удаленно, работать с теми файлами удаленно.
А тут проблема быть хакнутым/прав доступа.
Ну и мы отдаляемся от темы.
да, можно сделать удаленное что-нибудь через ХТТП уже лет как 30,
но как это состыкуется с самим ФАРом?
То что вы сделали может и представляет академический интерес,
но пока даже не похоже на попытку реализовать ФАР средтвами ХТМЛ\ХТТП.
Хоть бы демо какое-нибудь выложил чтобы понять что это на практике
В ФАре есть много чего в плане функциональности,
и ее отдельные огрызки через Веб если честно, то малоинтересны :)
Last edited by citRiks on Tue 17 Mar, 2020 10:51, edited 1 time in total.
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

Можно и нелокально. Права доступа - это связка GUID со стеганографией и шифрованием. Зачем ХТТП? Нам не нужен ХТТП...у меня реализованы права доступа к документам (то есть не самим файлам, а их представителям в коммандере). Заголовок документа или папки имеет GIUD (не пересылаемый браузеру) а на сервере имеется код, проверяющий можно выдать документ данному юзеру или нет. Стоит его отображать в интерфейсе данного юзера или нет, а также разрешается ли юзеру сохранять изменения в документе на сервер. Юзер также идентифицируется GUID-ом. Вот эта пара GUID-ов и определяет права доступа на конкретный объект. Но оное неопробавано. "Последняя миля" может несколько и подзатянуться, поэтому ничего и не публикую. Но круг задач в принципе очерчен и основной объем работ проделан. Просто пытаюсь поделиться своими идеями. Зачем же публиковать js-исходники до состояния готовности всего комплекта. А идея - это не код, она самостоятельной ценности в моих глазах не имеет. Может быть в ней есть нечто полезное, так кто-нибудь сделает более корректную ее реализацию. Или по ассоциации придумает еще чего-нибудь. Код - это затраты трудоэнергии на решение 1000 мелких проблем, а идеи они существуют в платоновском пространстве. :D
Last edited by leva on Tue 17 Mar, 2020 16:53, edited 15 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Пробуем в Web )

Post by citRiks »

leva, Ладно.. на этом месте у меня окончательно сломался моск, за сим откланяюсь :)
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

Излагается по сути принцип виртуализации веб-интерфейса и построения логической сети над web при помощи такого вот инструментария, включающего аналог файл-менеджера. Но файл-менеджер не отображает только лишь реальные файлы. Например, щелчок по документу может вызывать код на js или Бейсике, который в свою очередь может поработать с виртуальной ФС или открыть кадр с элементами управления, или открыть редактор и что-нибудь в нем напечатать, или осуществлять иные операции, например дать послушать музон с радиостанции или посмотреть кино на ютубе. А может, например, скачаться или открыться pdf. Это может быть произвольное действие для которого предусмотрен метод Action с аргументом-ссылкой на текущую выбранную позицию в коммандере и информация в заголовке документа, часть из которой доступна клиенту, а часть обрабатывается сугубо на сервере. Соответственно не предьявляется никаких условий на способ хранения виртуальной ФС на сервере. Можно хранить в текстовых файлах (пока что у меня так и сделано) а можно в БД. Альтернативно можно, например, взять какой-нибудь иерерхический MUMPS со встроенным веб-сервером и присобачить его к такому же иерархическому коммандеру и контролам, получив корпоративного уровня тему. Подобные интерфейсы к глобалам давно известны (они еще для MSM существовали). А можно просто запилить электронную библиотеку с книжками, которая также имеет иерархическую организацию. Например, вы щелкаете по документу в коммандере, и он открывает аннотацию в редакторе. Там же в редакторе имеются ссылки на скачивание реального файла книжонки, а также ссылки на близкие по тематике документы. Приложений для таких коммандеров уйма. Мы просто привыкли к тому, что коммандер работает обязательно с реальными файлами. Даже сколь угодно сложную игрушку-adventure можно соорудить в данной стилистике. Просто требуется, как поступают китайцы, - расширить сознание в плане возможных применений интерфейса данного типа. Технически это означает связку: коммандер - редактор+ TUI(GUI) + специализированный tcp/ip-сервер + простой язык поверх js. Ну а для расширения круга применений все это должно быть исполнено в максимально браузерно-независимой манере,чтобы все потроха каждой составляющей были наружу.

:D
Last edited by leva on Tue 17 Mar, 2020 16:57, edited 20 times in total.
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

Вот например, каркас для treeview, с обычной для него функциональностью, свойствами и методами:

CreateTree("tree1","links",20,20);

treeview.JPG
Это практически чистый ДОС-TUI и чистый javascript. Без всяких игр с CSS и html-списками. Понятно, что такое решение является сферически- и эстетически-корректным, традиционным и более гибким, чем оные выкрутасы. А шкурки и плюсики-минусики и прочее оформление присобачиваются к нему элементарно. И работает не в пример шустрее. Причем узлы являют собой самостоятельный объект типа кнопка (Button), а не какие-то там строчки встроенного в браузер html-списка.
tree1.JPG
tree1.JPG (12.02 KiB) Viewed 5463 times
Синим компонент отметил факт нажатия мыши (саму мышь на скрине не видно) - дерево узла свернулось. Конечно, приходится предусматривать разнообразные нюансы, наподобие преждевременного выхода указателя мыши за пределы контрола, но в конечном счете эта сложность окупается полным контролем над элементами интерфейса. Таких нюансов миллион в том числе и в коде коммандера. Например, собирая его из контролов-панелей приходится делать обратные вызовы. Зато можно получить довольно стройную, модульную и единообразную архитектуру, а не то что лепится обычно в web-страницах.
Last edited by leva on Tue 17 Mar, 2020 16:18, edited 14 times in total.
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

Так примерно обрабатываются события непосредственно в javascripte:

Code: Select all

  function plus()
   {
     progress1.setPosition(progress1.position+1);
   }


  function minus()
   {
     progress1.setPosition(progress1.position-1);
   }

  CreateProgress("progress1", "Прогрессбар №1", 185,450, 20);
  CreateButton("bminus","-",200,400);
  CreateButton("bplus","+",200,670);
  bminus.onclick=minus;
  bplus.onclick=plus;
Нетрудно видеть, что это практически VBDOS. Но это, конечно, неправильно. Бо настоящий программист не должен использовать подозрительный js - его орудие Фортран. На худой конец Бейсик. Поэтому приходится натягивать его поверх данной браузерной архитектуры. У меня даже виртуальный аналог магнитной ленты есть, для упаковки сразу нескольких документов. Как вариант позиция в коммандере может ссылаться на такую ленту и возвращать сразу несколько документов. Все таки это нечто иное, чем просто архив. :roll: Эту идею я считаю наибольшим своим умственным достижением. :D
Last edited by leva on Tue 17 Mar, 2020 15:03, edited 5 times in total.
leva
Posts: 54
Joined: Tue 17 Mar, 2020 01:21
Been thanked: 7 times

Пробуем в Web )

Post by leva »

На самом деле, коммандер был использован даже там, где его ниразу не видно. Кто помнит такую программу - 1С версии 6.0 для Виндовс 95, тот знает, что все замечательные справочники и субконто в данной программе были организованы по иерархическому принципу с соответствующим интерфейсом, а отчеты могли представлять собой обыкновенный текст (кстати, мой редактор имеет простенькую функцию конвертации своего формата в формат html). С узлом дерева ассоциируются произвольного формата данные, извлеченные из внешнего хранилища. Имея вышеописанный "дубовый" инструментарий и классическую идеологию разработки можно данную систему запилить сравнительно быстро. Правда она будет иметь уязвимость в плане ручного вмешательства в код javascript. Но кого это, в конце-концов, волнует? Бухгалтер туда не полезет. Тем более что формат данных может быть не очевиден, а сами данные зашифрованы. При желании можно влезть с дебаггером и в код 1С подкрутив там копейки. Честно нужно жить просто и все. И не воровать чужие рубли. :D
Last edited by leva on Tue 17 Mar, 2020 15:56, edited 13 times in total.
Post Reply

Return to “О тщете всего сущего”