Кто хочет конкретно поучаствовать в проекте?

WINE@Etersoft, "1С","Ананас" и прочие проекты

Модератор: Модераторы разделов

skmdeveloper
Сообщения: 70

Кто хочет конкретно поучаствовать в проекте?

Сообщение skmdeveloper »

Пишу систему быстой разработки бизнес-приложений. В общих чертах. Целевые платформы - Unix-совместимые системы и Windows.

1. Ядро системы на Qt4. Сервер БД - PostgreSQL. написано процентов на 90. Предоставляет API прочим компонентам. Реализованы справочники, документы, константы, периодические реквизиты.

2. Формы. Базовые классы реализованы. Все на Qt. Хотя можно обойтись, прикрутить и веб-движок.

3. Конфигуратор. В данный момент пишется конструктор метаданных.

4. Подсистема формирования отчетов. Тоже на Qt. Пока не реализовано.

5. Интерпретатор ЯП. Кто то может обойтись без него. Можно будет писать даже на C++. Я планирую использовать Ruby по объективным причинам. В принципе можно прикрутить любой, лишь бы можно было связывать с C++.

В качестве формата файлов принципиально используется XML.

Кто хочет конкретно участвовать? Нужны заинтересованные программисты знающие Qt4,или те, кто может дать полезные советы.

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

Форум здесь- http://skmproject.my1.ru/forum/2. Там пока пусто. Можете задавать вопросы там или здесь.

Завтра на http://skmproject.my1.ru будет выложено развернутое описание архитектуры системы.

Желающим разводить флуд просьба не беспокоиться. Только конкретные предложения участия и включения в процесс разработки.
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение Goodvin »

Мне одному кажется, что это реклама проеприетарщины ?
Причем ключевое слово в этой фразе - не "проприетарщина", а "реклама".
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение trdm »

Goodvin писал(а):
03.12.2009 14:35
Мне одному кажется, что это реклама проеприетарщины ?
Причем ключевое слово в этой фразе - не "проприетарщина", а "реклама",
вот тебе еще веточка форума для размышления о вопросе:
http://www.1cpp.ru/forum/YaBB.pl?num=1259782805
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
antares0
Сообщения: 92

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение antares0 »

Можно раскрыть мысль про минимум классов без непосредственого доступа к виджетам?
И какой-нибудь пример про дерево объектов. Как это выглядет на практике.
P.S. Сайт феерически глючен. На тамошнем форуме залогинится не смог вобще.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение Denjs »

skmdeveloper писал(а):
03.12.2009 10:03
Пишу систему быстой разработки бизнес-приложений. В общих чертах. Целевые платформы - Unix-совместимые системы и Windows.
...
5. Интерпретатор ЯП. Кто то может обойтись без него. Можно будет писать даже на C++. Я планирую использовать Ruby по объективным причинам. В принципе можно прикрутить любой, лишь бы можно было связывать с C++.

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


предлагаю "портировать" все ваши объекты как классы-расширения для моего скриптового фреймворка QDroid :happy:
т.е. использовать мой фреймворк как интеграционную платформу для ваших и сторонних компонент и объектов, а так-же как скриптовую среду для описания бизнес-логики приложения. QtScript - вполне вкусный скриптовый язык, брат родной JavaScript-у - соответсвует ECMA-262, но ещё и с поддержкой сигнал-слотового механизма и родной интеграцией с QT (т.е. он может "щупать" из скрипта те-же методы С++\QT классов что и основная "сишная"-программа без особой подготовки С++-классов (т.е. подготовка ограничивается переносом нужных методов в секцию "slots" при определении класса ))

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

Если будут классы-расширения типа "Справочник", "Документ", "Таблица" - это уже позволит писать простые приложения пригодные для бизнеса.
На текущий момент я развиваюсь в области базовых возможностей фреймворка (препроцессор, подержка кодировок, система загрузки плагинов и др) и системных (встроенных) классов - есть сетевой сервер, работа с дочерними процессами и потоками ввода-вывода, сетевой клиент, работа с ком-портами и некоторые базовые классы типа ByteArray... Туда-же сейчас неcпешно переношу OTPD (управление промышленными принтерами).


Как будет выглядеть работа с системой подразумевающей "наличие дерева метаданных", признаться думал, но в решение пока вижу только в общих чертах ) (что-то типа такого: менеджер конфигурации среды, который загружает необходимые расширения, запускает каждый класс что бы он проверил соответствие структуры БД, объявляет конструкторы для всех "наследованных" классов (т.е. "кастомизированных" справочников и документов) - что бы через "new СправочникКонтрагенты()" можно было создавать сразу "кастомизированные" объекты....(по обращению к new менеджер конфигурации создает объект основного класса, проводит его "кастомизацию" в соответствии с настройками конйигурации и отдает ссылку на объект в скриптовую среду).
При запуске системы, менеджер запускает некий основной скрипт на выполнение...
Все "наследованные" классы обладают возможностью позиционирования на тот или иной объект хранящийся БД (аналог 1С-ного "найтиПоКоду()" например, или сразу при создании "new СправочникКонтрагенты(КодЭлемента)"
).

Такая организация позволит с одной стороны сделать быстрый "конфигуратор", а с другой стороны - оставит полную свободу программирования и доступ к мощи С++ классов; Cкрипт будет выполняться не в "жестко заданные моменты времени" как в 1С , а вообще когда когда это необходимо - т.е. мы не скриптовые обработчики будем вписывать в шаблонизированную структуру объектов, а "погружать объекты в скриптовую среду", что мне кажется позволит более гибко конфигурировать создаваемые системы.).

Лицензия QDroid - GPL, но в принципе классы-расширения - это внешние загружаемые библиотеки. Они могут идти и на условиях собственной лицензии, т.к. "слабо связаны", а QT они могут использовать на условиях LGPL.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение trdm »

Сообщение перенесено Сюда
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение trdm »

Перенесено Сюда
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение Denjs »

2trdm:
Хочу знать, кто из вас болтун, а кто девелопер.

Двух аттестатов на конфигурирование 1С для вас будет достаточно?

... этого г-на (1С) в свое время наелся в течении 7 лет и к счастью успешно отмахался - сейчас работаю системным аналитиком. RUP, UseCases, итеративные процессы разработки и т.п.

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

Вообще - насчет "переложить" я уже предложил вариант - ключевые непереводимые переменные пишите по русски. но таковых у вас в примере нет.
Кроме того, вы клонируете логику 1С, и его громоздкий синтаксис, что не делает ваш пример кода хорошим (или это и есть 1С-овский код?)
давайте попробуем) гипотетический QtScript код. трудно понимать ваш код без контекста, но контекст нарисуем и ипридумаем ))):

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

Код: Выделить всё

myDocument.onWrite.connect(myOnWrite_CatchPrice); // подключили к документу второй обработчик сигнала "при записи". зачем? мы расширяем функционал не изменяя основной код обработчиков класса.

// документВалиден() © XXXX 2009
function isValidDocument(myDoc)
{
    var retValue= true;
    myDoc.badMessageString = "";
    if (myDoc.actionType == actionTypes.priceAction) //как мы видим тут код даже сократился на 4 строки )))
        if (myDoc.priceCategory.isEmpty())
            if (myDoc.priceCategory.useInPriceAction)
                myDoc.badMessageString = "Данная категория цен не помечена к использованию в документе \"Ценовая акция\"";

    if ( not myDoc.badMessageString.isEmpty() ) // или ( myDoc.badMessageString.isEmpty() == false)
      {
        messageBox(myDoc.badMessageString);
        retValue = false;
      };
    return retValue;
}// isValidDocument()

//============================================================
function myOnWrite_CatchPrice(myDoc)
{
    вСтрокаАтрибутов = гСтрокаАтрибутовОЗ; //"ТипАкции,Дата_Начала,Дата_Окончания,КатегорияЦен,Товар";

    if (myDoc.actionType ==actionTypes.priceAction)
        atributeString.append(",Цена");
    else if (myDoc.actionType == actionTypes.giftAction)
        atributeString.append("",Подарок,Количество"");

    myDoc.onWrite(Контекст,КонтекстФормыДокумента);
    if  (myDoc.beginDate>myDoc.endDate)
     {
        messageBox("Период неверен!");
        myDoc.currentAction.break();
        return;
     };
    if ( not myDoc.currentAction.broken() )
      {
         if (myDoc.actionIdentificator ==0)
            fillActionIdentificator(myDoc);
      };

}; // myOnWrite_CatchPrice


Как видите, код стал местами компактнее, понятнее и что немаловажно - прозрачнее - как минимум глаз за лишние "тогда/конецЕсли" не цепляется.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение trdm »

Выглядит симпатично.
Интересно как на Руби будет выглядеть.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение trdm »

Denjs писал(а):
04.12.2009 16:46
Как видите, код стал компактнее. местами понятнее и прозрачнее - как минимум глаз за лишние "тогда/конецЕсли" не цепляется.

И непонятнее: к чему относится закрывающая скобка к циклу или условному оператору.
myDoc.badMessageString = ""; << так не стоило делать, незачем в документе хранить описания ошибки. Эта переменная нужна только в данной ситуации и не нужна в самом документе.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение Denjs »

trdm писал(а):
04.12.2009 17:05
Denjs писал(а):
04.12.2009 16:46
Как видите, код стал компактнее. местами понятнее и прозрачнее - как минимум глаз за лишние "тогда/конецЕсли" не цепляется.

И непонятнее: к чему относится закрывающая скобка к циклу или условному оператору.

вполне понятно) одно под другим. закрывающаяся скобка под открывающейся. кроме того, писанины меньше и слов тоже.
myDoc.badMessageString = ""; << так не стоило делать, незачем в документе хранить описания ошибки. Эта переменная нужна только в данной ситуации и не нужна в самом документе.

Это проблемы интерпретации / восстановления контекста. Я не сильно задумывался это самостоятельная переменная или поле документа. написал как пришло в голову.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение trdm »

Denjs писал(а):
04.12.2009 17:20
trdm писал(а):
04.12.2009 17:05
Denjs писал(а):
04.12.2009 16:46
Как видите, код стал компактнее. местами понятнее и прозрачнее - как минимум глаз за лишние "тогда/конецЕсли" не цепляется.

И непонятнее: к чему относится закрывающая скобка к циклу или условному оператору.

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

У нормальных людей давно нормальный интеллиценз работает.
Вот снял ролик:
http://unnstudioreport.googlecode.com/files/capture-2.avi
О том как работает интеллиценз в 1Cv77 у мну :)
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
skmdeveloper
Сообщения: 70

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение skmdeveloper »

antares0 писал(а):
04.12.2009 12:27
Можно раскрыть мысль про минимум классов без непосредственого доступа к виджетам?
И какой-нибудь пример про дерево объектов. Как это выглядет на практике.
P.S. Сайт феерически глючен. На тамошнем форуме залогинится не смог вобще.


1. Минимум виджетов - поддержка только необходимых и адаптированных для написания бизнес-приложений.

Сами классы API GUI унаследованы не от QWidget а от QObject. Они размещают на форме настоящие виджеты и управляют их свойствами. Также служат интерфейсом к ним.

Вот как к примеру реализовано однострочное текстовое поле.

UiLineEdit.h

Код: Выделить всё

#ifndef UILINEEDIT_H
#define UILINEEDIT_H

#include "UiWidget.h"

class UiLineEdit : public UiWidget
{
    Q_OBJECT
public:
    UiLineEdit(UiWidget* parent);
    QVariant value();
    void setValue(const QVariant& value);
protected slots:
       void changeText(const QString& text);
};

#endif // UILINEEDIT_H


UiLineEdit.cpp

Код: Выделить всё

#include "UiLineEdit.h"
#include <QLineEdit>

UiLineEdit::UiLineEdit(UiWidget* parent): UiWidget(parent)
{
    QLineEdit *w = new QLineEdit(parent->qtWidget());
    setQtWidget(w);
    connect(w,SIGNAL(textEdited(QString)),this,SLOT(changeText(QString)));
}

void UiLineEdit::setValue(const QVariant& value) {
    static_cast<QLineEdit*>(qtWidget())->setText(value.toString());
}

QVariant UiLineEdit::value() {
    return static_cast<QLineEdit*>(qtWidget())->text();
}

void UiLineEdit::changeText(const QString& text) {
    dataChanged(text,this);
}


Преимуществ у такого подхода масса. Упрощается и унифицируется процесс создания форм и размещения на нем виджетов как программно, так и из файла конфигурации который естественно в XML. Объекты сами умеет считывать из файла, точнее текущего узла, свои свойства. Для этого (здесь пока не релизовано), у них есть метод xmlRead().
Спасибо сказали:
skmdeveloper
Сообщения: 70

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение skmdeveloper »

Насчет английиского/русского синтаксиса. Я лично сторонник английского. Доступ к полям справочника предполагается осуществлять через переопределение оператора []:

Как это на Ruby:

Код: Выделить всё

sotr = Reference.new("Сотрудники");
s = sotr.create

s["Фамилия"] = "Иванов"
s["Имя"] = "Иван"
s["Отчество"] = "Иванович"
s["ГодРождения"] = 1977

s.write
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение Denjs »

Кстати, насчет веб-движка.
Где-то на блогах троллей была заметка про то что они делают специальный веб-сервер который позволит "отдавать клиенту" программы на QT писанные как обычное веб-приложение "через бразуер" . Потому думаю что QT вполне перспективен в этом плане.
Ссылки не найду пока...
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
skmdeveloper
Сообщения: 70

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение skmdeveloper »

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

В этом случае довольно просто будет прикрутить это к уже существующий классам, а отображение в нативном виде или браузере реализовать в виде драйверов.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение Denjs »

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

QtWebKit Module ?
qtwui?
вот с блогов троллей нашел немного: http://labs.trolltech.com/blogs/2009/09/18...ith-qwebclient/
--------------------------------
так что насчет портирования/адаптации объектов на QDroid ? хотя бы некоторых?
я согласен поучаствовать в разработке/утряскеИнтерфейсов классов типа Справочник, Документ, ТабличнаяФорма если эти классы будут без проблем использоваться в QtScript и для QDroid можно будет сделать плагины с этими классами. Вероятно мне при этом придется писать плагин-доступ к БД, и т.п...
пусть без "усердного энтузазизма", но внести свою лепту я могу.
Это технически сейчас возможно? я имею в виду структуру вашего проекта и классов? отделить описанные классы от остального приложения?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
skmdeveloper
Сообщения: 70

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение skmdeveloper »

классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним. Я пробовал привязку к Ruby. Проблем быть не должно с любым ЯП, для которого можно писать расширения на C++.

Правильно ли я думаю, что для QtScript классы должны быть унаследованы от QObject?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение Denjs »

Правда ли я думаю, что для QtScript классы должны быть унаследованы от QObject?

да, истинно так, и только так.

skmdeveloper писал(а):
04.12.2009 19:23
классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним. Я пробовал привязку к Ruby. Проблем быть не должно с любым ЯП, для которого можно писать расширения на C++.

с QtScript красота в том что никакой привязки не надо ). В самом простом случае вы просто создаете новый объект в движке QtScriptEngine из любого QObject - наследованного объекта. Дальше можно сразу подавать движку скрипт который может обращаться ко всем методам объявленным в секции slots и свойствам класса (см макрос Q_PROPERTY ( ... )).
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение trdm »

skmdeveloper писал(а):
04.12.2009 19:23
классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним.

А сколько у тебя табличных частей в документах?
Мне тут Denjs проДемонстрировал код на js. Ничего так себе вполне.
Можно и пописать на нем. Тем более отладчик есть.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
skmdeveloper
Сообщения: 70

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение skmdeveloper »

trdm писал(а):
04.12.2009 19:41
skmdeveloper писал(а):
04.12.2009 19:23
классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним.

А сколько у тебя табличных частей в документах?
Мне тут Denjs проДемонстрировал код на js. Ничего так себе вполне.
Можно и пописать на нем. Тем более отладчик есть.


Сколько угодно. Потому что тип данных. В документе хранится только ссылка на него. При сохранении документа таблица сохраняется в своей таблице БД. Ее структура задается в конфигурации отдельно, а не в составе документа, как в 1С. Так оказалось сделать гораздо проще.
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение trdm »

skmdeveloper писал(а):
04.12.2009 20:13
trdm писал(а):
04.12.2009 19:41
skmdeveloper писал(а):
04.12.2009 19:23
классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним.

А сколько у тебя табличных частей в документах?
Мне тут Denjs проДемонстрировал код на js. Ничего так себе вполне.
Можно и пописать на нем. Тем более отладчик есть.
Сколько угодно.

Клево. Разбудите когда будет результат: сорцы или сборка.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
skmdeveloper
Сообщения: 70

Re: Кто хочет конкретно поучаствовать в проекте?

Сообщение skmdeveloper »

Denjs писал(а):
04.12.2009 19:33
Правда ли я думаю, что для QtScript классы должны быть унаследованы от QObject?

да, истинно так, и только так.


Тогда проблем не будет. Унаследуете от каждого объекта и QObject класс-обертку, опишете Q_PROPERTY и все будет ОК.
Спасибо сказали: