OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 07:10

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Среда, 26 Октябрь, 2011 09:05 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Уважаемые коллеги.

Настало время заменить 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!
Будем обсуждать здесь особенности работы таким образом, выкладывать примеры,
и, конечно, критические замечания.

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


Последний раз редактировалось Kubanych Понедельник, 14 Ноябрь, 2011 08:13, всего редактировалось 5 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Октябрь, 2011 10:18 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Kubanych писал(а):
4.Благодаря Димычу и другим готов консольный BlackBox, работающий в Linux32.
Прежде всех остальных тут нужно отметить Ominc и OpenBUGS.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Октябрь, 2011 00:10 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Не забывайте про O3


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Октябрь, 2011 15:16 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
А ещё есть всякие там обероны под дотнет (в том числе GPCP), а на дотнете веб куры не клюют. Зачем он вам только сдался не понятно ибо Блэкбокс оптимален для создания "толстых" клиентов. "Толстый" клиент лучше "тонкого".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Октябрь, 2011 15:25 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Обсуждение альтернатив, которое к разработке на ББ прямого отношения не имеет, пока выделено в отдельную ветку: viewtopic.php?p=66787#p66787


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Октябрь, 2011 15:35 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
Помнится под А2 был проект удалённой работы с БД через и-нет. Да и сам сайт А2 на А2 крутится :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Октябрь, 2011 15:51 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
не знаю, насколько веб-морда логов конференции может считаться "динамическим сайтом", но, видимо, ничего другого "на рассмотреть" пока нет.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Октябрь, 2011 08:19 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Пётр Кушнир писал(а):
[*]задумка про реализацию асинхронных запросов (то, что все зовут Web 2.0) к O3 серверу так и не была реализована[/*][/list].

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Октябрь, 2011 15:48 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Иван Денисов писал(а):
Еще раз про асинхронные запросы, если вы про AJAX... со стороны сервера они ничем не отличаются от простых запросов ведь - это самые обыкновенные запросы POST и GET.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Октябрь, 2011 21:57 
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Октябрь, 2011 17:39 

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Октябрь, 2011 20:24 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Trurl писал(а):
Иван Денисов писал(а):
Это делается только с помощью JavaScript и только так. Никаких других технологий браузеры специально не поддерживают.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 30 Октябрь, 2011 03:13 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
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/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 30 Октябрь, 2011 08:11 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Рассмотрел документацию по 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 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Для создания динамических веб-сайтов требуется создать удобный каркас. Хотя бы как Ruby On Rails. А лучше учесть плюсы и минусы и создать каркас совершеннее существующих.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 30 Октябрь, 2011 18:01 
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 30 Октябрь, 2011 19:11 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Иван Денисов писал(а):
Флэш тоже взаимодействует с сервером GET и POST запросами... там есть потоковые нюансы, когда TCP соединение не закрывается долго, но эти все механизмы встроены в систему заголовков HTTP.


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 30 Октябрь, 2011 19:56 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
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 (передаче данных браузеру) - два. Все это на ББ. А затем мановением волшебной палочки это соединить...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Октябрь, 2011 02:51 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
В принципе, вот этого немного переделанного примера из 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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Октябрь, 2011 03:28 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Коротко о подключении к 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 есть такое удобство - если многострочный запрос возвращает слишком много строк,
то можно указывать, с какой строки по какую выбирать, память резервируется только для этого диапазона.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB