OberonCore
https://forum.oberoncore.ru/

Разработка динамических сайтов в Blackbox
https://forum.oberoncore.ru/viewtopic.php?f=34&t=3631
Страница 1 из 2

Автор:  Kubanych [ Среда, 26 Октябрь, 2011 09:05 ]
Заголовок сообщения:  Разработка динамических сайтов в Blackbox

Уважаемые коллеги.

Настало время заменить LAMP (linux+apache+mysql+php) на свежее мясо LAMB (+BlackBox).

0.Благодаря Н. Вирту и его ученикам есть удобная система для разработки с низким порогом вхождения.

1.Благодаря Info21 и коллегам есть школьная сборка, на которой легко начать учить новых программистов.

2.Благодаря Ивану Денисову нашелся хостинг с 32 разрядным linux - clodo.ru с предоставлением прав root.

3.Благодаря Евгению Темиргалееву и Ивану Кузьмицкому готова подсистема mySQL.

4.Благодаря Oinc, OpenBUGS, И. Ермакову, Е. Темиргалееву, Роману, Димычу и другим готов консольный BlackBox, работающий в Linux32.

5.Здесь пример на FastCGI для си
http://forum.shamangrad.net/viewtopic.php?f=19&t=1098

Не надо ориентироваться на то, какой процент сайтов использует компилированные FastCGI.
Если бы Генри Форд ориентировался на то, какой процент людей использует бензиновые двигатели
для самобеглых колясок...
FastCGI работает быстрее интерпретируемого php. А Ajax можно сделать и через FastCGI
(пойдем дальше - вместо java script будем использовать OberonSript)

6.Благодаря разработчикам Ubuntu есть удобная среда для тестирования и отладки динамических сайтов
http://rutracker.org/forum/viewtopic.php?t=3677491

7. Можно присоединиться в Linux к СУБД Firebird
viewtopic.php?f=34&t=3664

Плюсы php- сборка мусора, удобства работы со строками
близки к плюсам BB. Его минусы - неочевидный синтаксис(минус от си) ; использование переменных
без объявления (минус от бейсика). И здесь есть хорошая ниша для BB.

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

С уважением,
Кубанычбек.

Автор:  Евгений Темиргалеев [ Среда, 26 Октябрь, 2011 10:18 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox. Смерть PHP.

Kubanych писал(а):
4.Благодаря Димычу и другим готов консольный BlackBox, работающий в Linux32.
Прежде всех остальных тут нужно отметить Ominc и OpenBUGS.

Автор:  Valery Solovey [ Четверг, 27 Октябрь, 2011 00:10 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox. Смерть PHP.

Не забывайте про O3

Автор:  Сергей Губанов [ Четверг, 27 Октябрь, 2011 15:16 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox. Смерть PHP.

А ещё есть всякие там обероны под дотнет (в том числе GPCP), а на дотнете веб куры не клюют. Зачем он вам только сдался не понятно ибо Блэкбокс оптимален для создания "толстых" клиентов. "Толстый" клиент лучше "тонкого".

Автор:  Евгений Темиргалеев [ Четверг, 27 Октябрь, 2011 15:25 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Обсуждение альтернатив, которое к разработке на ББ прямого отношения не имеет, пока выделено в отдельную ветку: viewtopic.php?p=66787#p66787

Автор:  Madzi [ Четверг, 27 Октябрь, 2011 15:35 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Помнится под А2 был проект удалённой работы с БД через и-нет. Да и сам сайт А2 на А2 крутится :)

Автор:  Пётр Кушнир [ Четверг, 27 Октябрь, 2011 15:51 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

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

Из недостатков:
  • O3, на котором была написана веб-морда, поддерживал синхронную модель сообщений, то есть, движок присылает моему сервлету сообщение и сразу требует ответа, соответственно, я не мог класть в секцию генерации ответа никаких "тяжёлых" действий.
  • Так как работа наколеночная, то никаких стандартных суперсредств я не вводил, и особо не исследовал то, что предлагает O3
  • задумка про реализацию асинхронных запросов (то, что все зовут Web 2.0) к O3 серверу так и не была реализована

В дальнейшем, свои соображения по поводу использования синхронной шины в ББ в сетевых приложениях (и, соответственно, в O3) я изложил вот тут.

Автор:  Иван Денисов [ Пятница, 28 Октябрь, 2011 08:19 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Пётр Кушнир писал(а):
[*]задумка про реализацию асинхронных запросов (то, что все зовут Web 2.0) к O3 серверу так и не была реализована[/*][/list].

Еще раз про асинхронные запросы, если вы про AJAX... со стороны сервера они ничем не отличаются от простых запросов ведь - это самые обыкновенные запросы POST и GET.

Автор:  Пётр Кушнир [ Пятница, 28 Октябрь, 2011 15:48 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Иван Денисов писал(а):
Еще раз про асинхронные запросы, если вы про AJAX... со стороны сервера они ничем не отличаются от простых запросов ведь - это самые обыкновенные запросы POST и GET.

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

Автор:  Иван Денисов [ Пятница, 28 Октябрь, 2011 21:57 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Пётр Кушнир писал(а):
Иван Денисов писал(а):
Еще раз про асинхронные запросы, если вы про AJAX... со стороны сервера они ничем не отличаются от простых запросов ведь - это самые обыкновенные запросы POST и GET.

я в курсе, спасибо, но очевидно, что нужен минимум кусок скрипта, который я должен был бы отправлять клиенту, а он бы спрашивал что-то у сервера и рисовал страницу на той стороне. это понятно, но нетривиально, на тот момент.
Это делается только с помощью JavaScript и только так. Никаких других технологий браузеры специально не поддерживают. Поэтому "кусок скрипта" - это просто текст скрипта JavaScript. Раз уж забрели в дебри сайтостроительства, то рекомендую ваять AJAX через JQuery он сразу кроссбраузерный, что сбережет много нервов.

Автор:  Trurl [ Суббота, 29 Октябрь, 2011 17:39 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Иван Денисов писал(а):
Это делается только с помощью JavaScript и только так. Никаких других технологий браузеры специально не поддерживают.

А плагины? Тот же флэш.

Автор:  Info21 [ Суббота, 29 Октябрь, 2011 20:24 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Trurl писал(а):
Иван Денисов писал(а):
Это делается только с помощью JavaScript и только так. Никаких других технологий браузеры специально не поддерживают.

А плагины? Тот же флэш.
А из ББ можно сделать плагин?

Автор:  Kubanych [ Воскресенье, 30 Октябрь, 2011 03:13 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Info21 писал(а):
А из ББ можно сделать плагин?


Хорошая идея

http://chupakabr.ru/2009/02/%D0%BA%D0%B ... %B8%D0%BD/
http://forum.mozilla-russia.org/viewtopic.php?id=1829
http://www.delajsam.ru/firefoxplugin/

Автор:  Kubanych [ Воскресенье, 30 Октябрь, 2011 08:11 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Рассмотрел документацию по FastCGI. Можно отметить для себя 4 части

1. Инициализация (сюда вставим подключение к БД).
2. В цикле запуск отдельных обращений, возможно, с последующей обработкой в параллельном режиме; пока не закончилась одна обработка сервер может запустить вторую (сюда будем вставлять обращения к БД с открытием и закрытием транзакции БД)
3. Закрытие (сюда вставим отключение от БД).
4. Переопределение функций консольного вывода stdout.

Велик соблазн модуль по работе с FastCGI оставить на Си и из него вызывать сгенерированную в BlackBox библиотеку libBB.so,
однако в таком случае вопрос усложняется пунктом 4 - LinLibc.putchar надо будет переопределить на вызов функции из библиотеки FastCGI,

поэтому подключение к FastCGI API лучше сделать на BlackBox, чтобы не было "перевернутого программирования" между Си и BlackBox частями.

Получается, что разница между CGI и FastCGI программами - в экономии времени на загрузку/выгрузку и подключение/отключение к базе данных.
Трудозатраты - перенос API FastCGI на BlackBox.

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

Кроме того, получается, что не всегда использование FastCGI может дать выигрыш по загрузке процессора и времени.

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

FastCGI - зашел, ждем, делаем (когда скажут), выгоняют. Если много пользователей одновременно сидят на сайте, под каждого задерживаются ресурсы памяти.
Было бы логичней тогда назвать его не FastCGI, а LongCGI, видимо, название дано из маркетинговых соображений.

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

Так что еще рано списывать на свалку истории старичок CGI.
Перенесем методы работы с ним из freepascal

http://freepascal.ru/article/raznoe/20060127073733
http://sourceforge.net/projects/pascal-webdev/
http://wiki.lazarus.freepascal.org/CGI_Web_Programming

или напрямую
http://www.linuxjournal.com/article/6863?page=0,0

Автор:  Роман М. [ Воскресенье, 30 Октябрь, 2011 13:30 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Для создания динамических веб-сайтов требуется создать удобный каркас. Хотя бы как Ruby On Rails. А лучше учесть плюсы и минусы и создать каркас совершеннее существующих.

Идея №1: создать встраиваемый модуль броузера для быстрого построения программ по подобию Flex, Silverlight (RIA).

Идея №2: производить автоматическую генерацию кода всех страниц, форм с помощью автоматизированных средств на основе бизнес-правил и стилей оформления. Абстрагироваться от HTML+CSS, Javascript, AJAX.

Автор:  Иван Денисов [ Воскресенье, 30 Октябрь, 2011 18:01 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Флэш тоже взаимодействует с сервером GET и POST запросами... там есть потоковые нюансы, когда TCP соединение не закрывается долго, но эти все механизмы встроены в систему заголовков HTTP. Про плагин идея старая и называлась Juicy или как-то так - это все умерло (но ведь есть Java, HTML5, JavaScript, SVG, зачем новые сущности множить, даже Flash многие считают избыточной технологией после перехода на HTML5). Если делать абстракции как предлагает Роман, то получим второй ASP со всеми недостатками. Готовый каркас есть смысл делать когда реально заменим php. Идея очень хорошая и правильная... продолжать однозначно надо. Есть надежды, что в ближайшие годы выйдет ядро чисто линуксовкское от Оберон Микросистем и тогда все наработки встанут на уверенные рельсы...

Может сделать BB сервер который общается с подсерверами BB (которые запускаются отдельно). Задача очень интересна. Это есть распределенные вычисления - по сути... то есть lbmb получается (linux+blackbox+mysql+blackbox) :)

Автор:  Alexey Veselovsky [ Воскресенье, 30 Октябрь, 2011 19:11 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Иван Денисов писал(а):
Флэш тоже взаимодействует с сервером GET и POST запросами... там есть потоковые нюансы, когда TCP соединение не закрывается долго, но эти все механизмы встроены в систему заголовков HTTP.


Это не так.
man rtmp.

Автор:  Иван Денисов [ Воскресенье, 30 Октябрь, 2011 19:56 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Alexey Veselovsky писал(а):
Иван Денисов писал(а):
Флэш тоже взаимодействует с сервером GET и POST запросами... там есть потоковые нюансы, когда TCP соединение не закрывается долго, но эти все механизмы встроены в систему заголовков HTTP.

Это не так.
man rtmp.
Да неправ, для потоковых вещей делают. Кстати, очень поучительное чтиво, которое говорит, что связываться с этим невозможно по лицензионным соображениям http://ru.wikipedia.org/wiki/RTMP. ИМХО с Flash и Adobe лучше не связываться. Adobe усердно выпиливают с рынка за их маркетинговое хамство Apple и W3C сообщество, случай с RTMP яркое подтверждение.

По сути протокол можно инкапсулировать в HTTP и даже SSL поэтому смысла в нем...

Вывод. Концентрироваться на CGI (как временном генераторе контента в STDOUT, с последующим переходом на сокеты) - раз на HTTP (передаче данных браузеру) - два. Все это на ББ. А затем мановением волшебной палочки это соединить...

Автор:  Kubanych [ Понедельник, 31 Октябрь, 2011 02:51 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

В принципе, вот этого немного переделанного примера из Lin/Docu/Console-Quick-Start.odc
viewtopic.php?f=34&t=1159

Код:
MODULE Obx2;

   IMPORT Kernel, Log, LinSimpleLog, Obx1,LinLibc;
   
   PROCEDURE Init*;
   VAR
      str: LinLibc.PtrSTR;
   BEGIN
      LinSimpleLog.Open;
      Log.String("Моя командная строка :"); Log.Ln;
      Log.String(Kernel.cmdLine); Log.Ln;
      
      Log.String("PATH :"); Log.Ln;
      str := LinLibc.getenv("PATH");
      Log.String(str$); Log.Ln;
   END Init;

END Obx2.

   Линковка
DevElfLinker.LinkDll libBB.so := Kernel+ Log Math Strings LinSimpleLog Obx1 Obx2#


достаточно для построения CGI приложений.
Видно, что можно:
-делать многомодульные приложения (удобство для построения больших приложений);
-назначить точку входа (Obx2#);
-читать/писать переменные окружения, через которые взаимодействуют CGI программы с web-сервером.

Компилировать пускач на си командой, приведенной в указанном примере
gcc -Wall -m32 -o BlackBox BlackBox.c -ldl

А по этой книге можно посмотреть, что делать дальше.
http://rutracker.org/forum/viewtopic.php?t=2466283

Доделываю описание подключения к СУБД Firebird
и тогда можно будет достичь скорости и удобства разработки, превышающих аналогичные в php

Автор:  Kubanych [ Понедельник, 31 Октябрь, 2011 03:28 ]
Заголовок сообщения:  Re: Разработка динамических сайтов в Blackbox

Коротко о подключении к FireBird.

Раз для запуска CGI на BlackBox берем хостинги, дающие право root, то вместо mySQL можем использовать более функциональную
и известную в среде программистов на Паскале СУБД Firebird.

В СУБД Firebird есть препроцессор GPRE. Он позволяет изменять программу, набранную на Си вместе со вставками SQL (где могут использоваться переменные из программы на Си),
преобразовывать в программу на Си с заменой вставок SQL на вызовы функций API Firebird. При этом SQL команды транслируются на стадии разработки, в отличие от других методов,
где требуются дополнительные затраты времени на трансляцию SQL команд динамически во время работы пользователя (в runtime).

Полученный файл можно слинковать в виде динамической библиотеки .so.

Код на Си должен быть минимальным (получение параметров - работа с SQL - отправка параметров),
так как основная логика работы должна быть в BlackBox.

Тогда можно будет делать свои функции в своей библиотеке для

1. Подключения/отключения базы данных
2. Запуска/завершения/отката одной или нескольких разных транзакций
3. Команд по созданию/изменению/удалению элементов БД (CREATE/ALTER/DROP)
4. вставке записей (INSERT)
5. обновлению записей (UPDATE)
6. удалению записей (DELETE)
7. однострочной выборке (например, SELECT MIN(cost))
8. Инициализации/удалению курсора для многострочной выборки
9. Извлечению одной записи из многострочной выборки

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

Исходный код GPRE открыт (в составе Firebird), так что со временем кодогенерацию (backend) с не очень большими трудозатратами
можно переделать для BlackBox, чтобы совсем исключить использование Си в дальнейшем
и иметь возможность писать код на BlackBox со вставками SQL команд.

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

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/