Мыслить глобально ! (Среда разработки веб приложений )

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Мыслить глобально ! (Среда разработки веб приложений )

Сообщение Alex2013 » 19.02.2016 02:37:49

Сейчас занят написанием своей среды поддержки и разработки Веб-приложений ...

ИзображениеИзображение

Пока есть :
1 Более менее отлаженный веб-сервер (на Лазарусе) под Виндовс
и слабо отлаженный вариант под Линукс ...
2 Отличительная черта генерация веб-страниц помощью скриптов на паскале .
3 Продержка управляемой из скриптов коллекции глобальных переменных
4 Функции доступа к графике (Рисует на картинке которую потом показывает сервер )
5 Доступ к БД ( Пока SQLite3 )
6 Редактор скриптов с поддержкой библиотеки скриптов , библиотеки функций, списка входящих и исходящих переменных ...
+ есть возможность тестового запуска скриптов ...
7 Несколько утилит (доступ к веб-камере, продержка списков запросов и скритов, доступных внешних утилит, файлов, бд и т п ... )
8 Тестовое веб-приложение на скриптах (Пока сугубая технодемка )
9 Все собрано в единый пакет через мой "Универсальный интегратор " ( Настраиваемое через .ini файл умеренно навороченное многоуровневое меню запуска приложений )

Все что успешно работает действует как локально так и через глобальную сеть ...

Думаю добавить простой редактор форм ввода данных и страниц и общий "архитектор" сайтов-приложений .

Самое главное что поле применения пакета практически БЕЗБРЕЖНО ...
(Да всего можно добиться и стандартным или готовым софтом но он или чрезмерно сложен или не достаточно гибкий )

Для работы приложения нужны только оно само + программа сервер + опционально пара тройка внешних утилит .

Задумки есть ОЧЕНЬ ДАЛЕКО ИДУЩИЕ ...
Это и среда распределенного обмена данными и общения (Что-то вроде реинкарнации сети ФИДО причем к нодам можно будет обратится как со спец-софта расширяющего возможности и сохранность локальных архивов так и с помощь обычного браузера ... )
...и проекты для дистанционного обучения ...
...и разумеется весь спектр приложений которые неплохо бы Вебо-фицировать ...
+ само собой разные онлайн игры и просто простые сайты-визитки не нуждающиеся в размещении на платном хосте ...

Если с разработкой самого пакета "WEB2" особых проблем пока нет
то с Веб-приложениями все сложнее ...

Вопросов море ! Например ...
1 Поддержка многопользовательского режима в ЗАЩИЩЕННОЙ ЗОНЕ веб приложения ... Как сделать просто и надежно ?
2 Обратная связь Сервера и Веб-страницы как можно по команде с сервера обновить веб-страницу в браузере ?
(Таймер ненадежен и обычно порождает огромный ненужный трафик )
Последний раз редактировалось Alex2013 05.09.2022 14:31:33, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение vitaly_l » 19.02.2016 20:55:12

Alex2013 писал(а):Обратная связь Сервера и Веб-страницы как можно по команде с сервера обновить веб-страницу в браузере ?

C помощью JS. В смысле клиенту нужно отправить скрипт JS который даст команду обновить веб-страницу.
Alex2013 писал(а):Отличительная черта генерация веб-страниц помощью скриптов на паскале .

Это как? Можно чуть развернуть идею? (если она конечно не секрет)
Alex2013 писал(а):Для работы приложения нужны только оно само + программа сервер + опционально пара тройка внешних утилит .

Ничего не понимаю, эта программа не сервер? Ей нужен ещё например апачи сервер, да? А зачем?
Alex2013 писал(а):Несколько утилит (доступ к веб-камере, продержка списков запросов и скритов, доступных внешних утилит, файлов, бд и т п ... )
Программа - это браузер? Она на стороне клиента или сервера? Или клиента и сервера?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение Лекс Айрин » 20.02.2016 09:56:28

vitaly_l писал(а):Программа - это браузер?


Тебе сказали же. Это программа разработки веб-приложений. Браузер это программа показа.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение azsx » 20.02.2016 17:00:16

Ничего не понимаю

+1, но очень интересно.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение debi12345 » 20.02.2016 21:25:22

ИМХО, перспективнее было бы запилить нечто вроде MSE I(nternet)F(form)I(ntrrpreter) или OracleForms. Хотя есть важный нюанс почему без Apache (и вообще HTTP-технологий) трудно обойтись - нормальный вэб-хостер врядли даст установить у себя на серверах пользовательсквие бинарники, не зажатые в "песочнице".
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение azsx » 20.02.2016 22:34:51

MSE I(nternet)F(form)I(ntrrpreter)

а что это такое?
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение pupsik » 21.02.2016 01:05:42

azsx IFI - набор компонентов для MSEIDE. Грубо говоря.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение azsx » 21.02.2016 05:18:06

спасибо, не знал о нем.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение Alex2013 » 03.03.2016 16:07:25

Так в том то и фокус, что САМ СЕБЕ ХОСТЕР !
Причем все делается на очень простом пользовательском уровне (уже сейчас не сложнее чем настройка прокси в браузере, а дальше возможно все будет еще проще ) :idea: 8)


А текущий адрес можно отправлять через редирект ...
(Например на бесплатный хостинг заливать через фтп при старте сервера ...)

Проверено работает при любом реальном IP ...
А если закрыт 80 порт ничего не мешает юзать любой другой ...
(В браузере http://адрес:порт и все )
Да есть проблема с постоянным включенным в сеть компом... но дело в том, что далеко не для всех задач нужен круглосуточный доступ да и обеспечить его не такая уж проблема ..

В временна ФИДО все было куда суровее (междугородний трафик ... через модем Карл ! ) и ничего все работало ....
Зы
Кто не понял в пакет встроен СВОЙ Веб-СЕРВЕР на котором выполняются скрипты
динамически генерирующие веб-страницы по запросам + разумеется поддерживаются и обычные "статические" веб -страницы ...

Зы Зы
Подробности по скриптам: я уже тут
:arrow: Редактор скриптов (Еще одна "живая рыба"! )
выкладывал раннюю версию редактора скриптов из пакета ... Так что можете посмотреть если интересно ... (В принципе ничего концептуального в нем с тех пор не менял :roll: )
Первые версии сервера еще "не обжитые" мной вкладывал
тут :arrow: "Веб интерфейс и ошибка переноса" (из Винды в Линукс)
и тут :arrow: Веб-сервер невидимка ... (Как его увидеть из интернета ? )

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

(с сорцами )... но пока все слишком недоделано , почти нет примеров и неудобно ...
Последний раз редактировалось Alex2013 14.07.2016 19:41:12, всего редактировалось 3 раз(а).
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение azsx » 04.03.2016 11:19:09

всё таки абсолютно не понятно, что же там у вас. Очень интересно, но совершенно не понятно.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение Alex2013 » 04.03.2016 17:24:58

Интересно ЧТО именно не понятно ? :idea:

Вы вообще знакомы с концепций веб-приложений ?

Если совсем просто то это приложения в которых вод-вывод осуществляются с помощью Веб-страниц ..
То есть вместо того чтобы писать
Begin
Writeln('Привет мир!' );
end.
Пишут что-то вроде
Begin
...
WebWrite('<body>");
WebWrite('<div id="message_94238" style="display: none;"> Привет мир! <br /></div> ' );
WebWrite('</body>");
..
end.

То есть генерируется станица показываемая потом сервером .

Приложение может включать как часть себя сервер а может использовать внешний (Например всем известный Апачь ...)

Кроме того для того чтобы не лезть в код сервера при написании прикладной программы в сервер часто включают поддержку скриптовых языков ...
(Например Явы , PHP или Perl c Piton-ном ) У мнея это паскаль-скрипт входящий в комплект компонентов Лазаруса ...

Для меня хороша возможность иметь доступ как к коду сервера (Для добавления новых функций )
... так и к коду приложения ( Причем оба пишутся почти на одном и том-же паскале )

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

Картинка- кадр генерируемый техно-демкой :arrow:
Изображение
Сам (пока немереной тупости )скрипт ''Тест графики ''
Код: Выделить всё
(*SEdit*********************************
Генерация 2
Скрипт  ''Тест графики ''
VN:"Ap_FIL" REM:"Запрос" NZ:"index.htm"
VN:"Ap_ZAP" REM:"Расширенный запрос " NZ:""
VN:"ADV_URL" REM:"Расширение адреса" NZ:""
VN:"BPage" REM:"Фон" NZ:"F.htm"
VN:"POpt" REM:"Опции" NZ:"Var_A=' FFF';"

//****************************************)
// Скрипт  ''Тест графики ''
Var
REZ,FP:String;
Ap_FIL:String;
Ap_ZAP:String;
ADV_URL:String;
BPage:String;
SavZP:String;
Procedure WL(S:String);
begin
REZ:= REZ+S+#13+#10;
end;
Procedure HR(Tx,url:String);
begin
WL('<a href="'+URL+'">'+TX+'</a>');
end;

Procedure BT(Tx,url:String);
begin
WL('<input type="submit" value="'
+TX+'"onclick=' +#39+ 'document.location = "'
+ADV_URL+URL+'"'+#39+' >');
end;

Procedure BT2(Tx:String);
begin
WL('<input type="submit" value="'+TX+'" >');
end;

Procedure INP(ID,VL:String);
begin
WL( ID+' <input type="text" name="memo" value="'+VL+'" >');
end;

Procedure INP_PSW(ID,VL:String);
begin
WL(ID+' <input type="password"  name="psw" value="'+VL+'" >');
end;

Procedure BR;
begin
WL( '<br>');
end;

Type
Real=  Double;
//Const pI:Double=3.14;

Var
  v11,v12,v13,v21,v22,v23,v32,v33,v43,
  screen_dist:real;
C1:real;c2:Real;
///var p, i,j,k,iu,ju,ku, x,y,s,shag:Real;
procedure Persp(x,y,z:Real;var XX,YY:Real);
var
xe,ye,ze:real;
begin

xe:=v11*x+v21*y;
ye:=v12*x+v22*y+v32*z;
ze:=v13*x+v23*y+v33*z+v43;

XX:=Screen_dist*xe/Ze+c1;
YY:=Screen_dist*ye/Ze+c2;
end;
Var vx,vy,Color:Integer;
Procedure dw(x,y,z:real);
var xx,yy: Real;
  x1,y1:Integer;
begin
persp(x,y,z,xx,yy);
{x1:=Round(XX*50);Y1:=Round(yy)*50;}
x1:=10+trunc(XX*50);Y1:=10+trunc(yy*50);
DrawOnIMG('W12','LINE',IntToStr(x1 div 2)+','+IntToStr(y1 div 2)+','+IntToStr(vx div 2)+','+IntToStr(vy div 2));
//msg(IntToStr(x1)+','+IntToStr(y1)+IntToStr(vx)+','+IntToStr(vy));
//line(X1,y1,vx,vy,Color);
vx:=x1;vy:=y1;
end;
Procedure Mw(x,y,z:real);
var xx,yy: Real;
  x1,y1:Integer;
begin
persp(x,y,z,xx,yy);
vx:=10+trunc(XX*50);vY:=10+trunc(yy*50);
end;
procedure cof(Rho,theta,phi:real);
var
ph,  th,costh,sinth,cosph,sinph,Factor:real;
begin
Factor:=pi/180;
th:=theta*factor; ph:=phi*factor;
Costh:=cos(th); sinth:=Sin(th);
Cosph:=cos(ph); sinph:=Sin(ph);
v11:= -sinth;v12:=-cosph*costh;v13:=-sinph*Costh;
v21:=costh; v22:=-cosph*Sinth; v23:=-sinph*sinth;
            v32:=sinph;        v33:=-Cosph;
                               v43:=rho;
end;
procedure drawKub( Rho,theta,phi:real);
//const h=20;
var
H:Integer;
begin
h:=50;
mw(h,-h,-h);dw(h,h,-h);
dw(-h,h,-h);
dw(-h,h,h);
dw(-h,-h,h);
dw(h,-h,h);
dw(h,-h,-h);
mw(h,h,-h);dw(h,h,h);
dw(-h,h,h);
mw(h,h,h);dw(h,-h,h);
mw(h,-h,-h);dw(-h,-h,-h);
dw(-h,h,-h);
mw(-h,-h,-h);dw(-h,-h,h);
end;

procedure draw3(XZ:integer);
var p, i,j,k,iu,ju,ku, x,y,s,shag:Real;
begin
screen_dist:=4;
J:=30;k:=70;
Ju:=30;ku:=70;
i:=100; iu:=200;
Shag:=4;
cof(i+xZ,j-xz,k+xz);
//cof(i+8,j,k);
mw(0,0,50);dw(0,0,0);
mw(50,50,50);dw(-50,-50,50);
mw(-50,50,50);dw(50,-50,50);

p:=0; S:=pi/(2+Rnd(6));
while P<2*pi do begin
  mw(0,0,0);dw(20*Cos(p),20*Sin(p),-25+rnd(15));
p:=P+s;
end;
p:=0;x:=0; S:=pi/(2+Rnd(6));
mw((x+20)*Cos(p),(x+20)*Sin(p),-25+x/2);
while P<4*pi do
begin
Color:=Rnd(15);

X:=x+3;
dw((X+20)*Cos(p),(x+20)*Sin(p),-25+x/2);
p:=P+s;
end;
drawKub(i,j,k);
//drawKub(100,1,1);
end;
var
S:String;
X,y:Integer;
begin
C1:=4.5;c2:=3.5;
rez:='';
Ap_FIL:= GetParam('Ap_FIL');
Ap_ZAP:= GetParam('Ap_ZAP');
ADV_URL:= GetParam('ADV_URL');
SavZP:= GetParam('SavZP');
SetParam('SavZP',REZ);

//rez:=R_LoadText('f1.htm')+ REZ+ R_LoadText('f2.htm');
br;br;br;
//----------------------------
//Тут размещается основной код
WL('<html>');
WL('<script language="javascript">');
WL('  function timer11(_data_){');
WL(' document.location = "pageGraph001" ');
WL(' }</script>');

WL('<body onload='+#39+'setInterval("timer11()",1500);'+#39+'>');
//'+#39+'document.location = "'+ADV_URL+'pageLLL"'+#39+'
WL( ' Уже работает ... ');
If ExecUtil('Load_WC.ex') then
WL('<img src='+#39+'K.jpg'+#39+' alt='+#39+'Logo'+#39+' id='+#39+'logo'+#39+'  style="width: 30%; height: 30%;"<br><br>')
else
WL('<img src='+#39+'http://91.237.244.6/files/image.jpg?dummy=1445094378184'+#39+' alt='+#39+'Logo'+#39+' id='+#39+'logo'+#39+'  style="width: 30%; height: 30%;"<br><br>');
br;br;
WL('<center>');
WL('<B>Окно в мир гафики ..</B>');br;
br;
WL('<img src='+#39+'K1.jpg'+#39+' alt='+#39+'Logo'+#39+' id='+#39+'logo'+#39+'  style="width: 60%; height: 40%;"<br><br>')
WL('</center>');
WL('  </body>');
WL('</html>');

NewIMG('W12',320,200)
LoadIMG('W12','K0.JPG');
//DrawOnIMG('W12','CLEAR','');

//DrawOnIMG('W12','RectANGLE','1,1,50,50');
DrawOnIMG('W12','SetCOLoR','$F1010');
DrawOnIMG('W12','FRAME','1,1,50,50');
DrawOnIMG('W12','ELLIPSE','1,1,50,50');
DrawOnIMG('W12','SetBrCOLoR','$FF');
DrawOnIMG('W12','FillRect','1,1,20,20');
DrawOnIMG('W12','SetBrCOLoR','$ffffFF');
X:=25-RnD(50); Y:=25-RnD(50);

DrawOnIMG('W12','LINE','25,25,'+IntToStr(25+x)+','+IntToStr(25+x));
X:=StrToInt(GetParam('X')); If X>25 then X:=0;

DrawOnIMG('W12','LINE','25,25,'+IntToStr(25+x)+',0');
SetParam('X',IntToStr(X+3));
DrawOnIMG('W12','outText','25,25,'+IntToStr(25+x));
draw3(X);
SaveIMG('W12','K1.jpg',true,true);

DeleteIMG('W12');//!!!!

//-------------------------------
BPage:= R_LoadText(GetParam('BPage'));
BPage:=StrReplace(BPage,'PAGE_NAME','Тест 999');
rez:=StrReplace(BPage,'<ZZZ>',REZ);

SetParam('OUT',REZ);
//WForm(Rez);
end.

Последний раз редактировалось Alex2013 05.09.2022 14:36:05, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение debi12345 » 04.03.2016 22:09:32

ну не знаю... основная фишка например PHP - совместимость по типам-присвоениям между PHP (сервером) и JS(браузерами), без этого гонять сложные данные (в 1-ю очередь массивы из смешанных типов данных с вложенностью) через HTTP-канал - еще тот геморр, поэтому я бы на Вашем месте в 1-ю очередь позаботился бы именно о совместимости Ваших скриптов с AJAX-ом
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение Alex2013 » 05.03.2016 03:08:59

1 Для моих целей и задач пока достаточно ПаскальСкриптов ...

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

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

4 PHP при необходимость всегда можно использовать как внешний препроцессор входящего кода ...
Интеграция в сервер ? А что она даст ?

5 Это проект изначально "начального и среднего уровня"
средние или небольшое количество данных
(Подключил SQLite в расчете на базы не более сотен мегабайт )
Среднее или небольшое количество зарегистрированных пользователей имеющих одновременный доступ серверу
( порядка сотни с жестким ограничением... )
Узкий или средний исходящий канал данных (на пару тройку гигабит ...)
+ работа на не очень мощных компьютерах ...

6 В качестве конкретной задачи я думаю пока просто переписать несколько своих относительно успешных
проектов на реальный веб- интерфейс, а там или просто расчеты + доступ к бд или обучающие пакеты
и системы проверки знаний ...

+ Возможно аналог почти обычного разве что чуть облегченного форума
+ несколько простых онлайн наборов утилит ...
+ что-то вроде движка для онлайн 3д-бродилки (не только и не столько для игр а скорее просто как часть интерфейса )...

Вот и весь "план операции" на ближайшее время ...
А дальше буду решать проблемы по мере их возникновения !
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение azsx » 07.03.2016 04:01:34

ясно, спасибо.
Вещь может быть и интересная, но надо ждать релиза. Буду ждать :)
зы
сейчас у меня паскаль на сайтах используется иначе, скорее как внешняя автоматическая обработка неструктурированных данных.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Мыслить глобально ! (Среда разрабтки веб приложений )

Сообщение debi12345 » 07.03.2016 18:09:47

На выходе при генерации веб-страницы(хоть таблиц хоть древовидных структур)
все равно нужны только конкретные поля Ввод запросов тоже довольно прост )
Сейчас так ВЭБ-аппликухи не пишут - а грузят компактный массив, далее с помощью JS заполняют этим массивом таблицы или списки на стороне клиента:

Выборка данных на стороне сервера :
Код: Выделить всё
function getCatalogsArr($oper_day,$dg){
    global $log;
   if (($dg == null) || ($dg == '')) $dg = array('',false);
    $rs = pg_query($GLOBALS['conn'],sprintf("SELECT * FROM fv_ss_catalog(%s) WHERE code=1 ",sqlDT($oper_day)));
    $data = array();
    while ($row = pg_fetch_array($rs)) {
        $data[$row['code']] = array($row['name'], $row["short_name"]);
    }
    $new_dg = sha256($data);
    return array('dg' => array($new_dg, $dg[0] != $new_dg), 'val' => (($dg[0] == $new_dg) ? array() : $data));
}


На стороне браузера:

Определение и код загрузки массивов (новые данные буду передаваться только если произошло их изменение - отслеживается по SHA256-дайджетсу):
Код: Выделить всё
...
var CATALOGS_ARR = [];
var dgCatalogsArr = ['',false];
...
function getOperDay4Deps(oper_day4) {
...
        return promise.joinReturning([
...
            getCatalogsArr(OPERDAY4_ARR['date'], dgCatalogsArr, {}),
...
        ]).then(function (res) {
...
            dgCatalogsArr = res[4][1]['dg'];
            if (dgCatalogsArr[1])   CATALOGS_ARR = res[4][1]['val'];
...
}
...
}

Заполнение списка из ранее загруженного массива :
Код: Выделить всё
     loadCBox("askCatalog4",CATALOGS_ARR, {default:{text:"каталог"}});
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

След.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38

Рейтинг@Mail.ru