Кто хочет конкретно поучаствовать в проекте?
Модератор: Модераторы разделов
-
- Сообщения: 70
Кто хочет конкретно поучаствовать в проекте?
Пишу систему быстой разработки бизнес-приложений. В общих чертах. Целевые платформы - 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 будет выложено развернутое описание архитектуры системы.
Желающим разводить флуд просьба не беспокоиться. Только конкретные предложения участия и включения в процесс разработки.
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 будет выложено развернутое описание архитектуры системы.
Желающим разводить флуд просьба не беспокоиться. Только конкретные предложения участия и включения в процесс разработки.
-
- Ведущий рубрики
- Сообщения: 4333
- Статус: ⚝⚠⚒⚑⚖☭☞☣☤&
Re: Кто хочет конкретно поучаствовать в проекте?
Мне одному кажется, что это реклама проеприетарщины ?
Причем ключевое слово в этой фразе - не "проприетарщина", а "реклама".
Причем ключевое слово в этой фразе - не "проприетарщина", а "реклама".
-
- Сообщения: 266
- ОС: Window XP
Re: Кто хочет конкретно поучаствовать в проекте?
вот тебе еще веточка форума для размышления о вопросе:
http://www.1cpp.ru/forum/YaBB.pl?num=1259782805
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
-
- Сообщения: 92
Re: Кто хочет конкретно поучаствовать в проекте?
Можно раскрыть мысль про минимум классов без непосредственого доступа к виджетам?
И какой-нибудь пример про дерево объектов. Как это выглядет на практике.
P.S. Сайт феерически глючен. На тамошнем форуме залогинится не смог вобще.
И какой-нибудь пример про дерево объектов. Как это выглядет на практике.
P.S. Сайт феерически глючен. На тамошнем форуме залогинится не смог вобще.
-
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Кто хочет конкретно поучаствовать в проекте?
skmdeveloper писал(а): ↑03.12.2009 10:03Пишу систему быстой разработки бизнес-приложений. В общих чертах. Целевые платформы - Unix-совместимые системы и Windows.
...
5. Интерпретатор ЯП. Кто то может обойтись без него. Можно будет писать даже на C++. Я планирую использовать Ruby по объективным причинам. В принципе можно прикрутить любой, лишь бы можно было связывать с C++.
.... Только конкретные предложения участия и включения в процесс разработки.
предлагаю "портировать" все ваши объекты как классы-расширения для моего скриптового фреймворка QDroid

т.е. использовать мой фреймворк как интеграционную платформу для ваших и сторонних компонент и объектов, а так-же как скриптовую среду для описания бизнес-логики приложения. QtScript - вполне вкусный скриптовый язык, брат родной JavaScript-у - соответсвует ECMA-262, но ещё и с поддержкой сигнал-слотового механизма и родной интеграцией с QT (т.е. он может "щупать" из скрипта те-же методы С++\QT классов что и основная "сишная"-программа без особой подготовки С++-классов (т.е. подготовка ограничивается переносом нужных методов в секцию "slots" при определении класса ))
Выглядит это сейчас так - QDroid загружает скрипт, предоставляет ему минимальный набор "системных" класов, а далее скрипт "в рантайме" загружает необходимые ему расширения и классы, собирает из объектов этих классов систему и организует работу с ними как ему надо.
Если будут классы-расширения типа "Справочник", "Документ", "Таблица" - это уже позволит писать простые приложения пригодные для бизнеса.
На текущий момент я развиваюсь в области базовых возможностей фреймворка (препроцессор, подержка кодировок, система загрузки плагинов и др) и системных (встроенных) классов - есть сетевой сервер, работа с дочерними процессами и потоками ввода-вывода, сетевой клиент, работа с ком-портами и некоторые базовые классы типа ByteArray... Туда-же сейчас неcпешно переношу OTPD (управление промышленными принтерами).
Как будет выглядеть работа с системой подразумевающей "наличие дерева метаданных", признаться думал, но в решение пока вижу только в общих чертах ) (что-то типа такого: менеджер конфигурации среды, который загружает необходимые расширения, запускает каждый класс что бы он проверил соответствие структуры БД, объявляет конструкторы для всех "наследованных" классов (т.е. "кастомизированных" справочников и документов) - что бы через "new СправочникКонтрагенты()" можно было создавать сразу "кастомизированные" объекты....(по обращению к new менеджер конфигурации создает объект основного класса, проводит его "кастомизацию" в соответствии с настройками конйигурации и отдает ссылку на объект в скриптовую среду).
При запуске системы, менеджер запускает некий основной скрипт на выполнение...
Все "наследованные" классы обладают возможностью позиционирования на тот или иной объект хранящийся БД (аналог 1С-ного "найтиПоКоду()" например, или сразу при создании "new СправочникКонтрагенты(КодЭлемента)").
Такая организация позволит с одной стороны сделать быстрый "конфигуратор", а с другой стороны - оставит полную свободу программирования и доступ к мощи С++ классов; Cкрипт будет выполняться не в "жестко заданные моменты времени" как в 1С , а вообще когда когда это необходимо - т.е. мы не скриптовые обработчики будем вписывать в шаблонизированную структуру объектов, а "погружать объекты в скриптовую среду", что мне кажется позволит более гибко конфигурировать создаваемые системы.).
Лицензия QDroid - GPL, но в принципе классы-расширения - это внешние загружаемые библиотеки. Они могут идти и на условиях собственной лицензии, т.к. "слабо связаны", а QT они могут использовать на условиях LGPL.
-
- Сообщения: 266
- ОС: Window XP
Re: Кто хочет конкретно поучаствовать в проекте?
Сообщение перенесено Сюда
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
-
- Сообщения: 266
- ОС: Window XP
Re: Кто хочет конкретно поучаствовать в проекте?
Перенесено Сюда
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
-
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Кто хочет конкретно поучаствовать в проекте?
2trdm:
Двух аттестатов на конфигурирование 1С для вас будет достаточно?
... этого г-на (1С) в свое время наелся в течении 7 лет и к счастью успешно отмахался - сейчас работаю системным аналитиком. RUP, UseCases, итеративные процессы разработки и т.п.
не говоря о том, что никто тут про русский/английский синтаксис не заикался, а вас видимо тема очень волнует... все-же давайте придумаем пример кода.
Вообще - насчет "переложить" я уже предложил вариант - ключевые непереводимые переменные пишите по русски. но таковых у вас в примере нет.
Кроме того, вы клонируете логику 1С, и его громоздкий синтаксис, что не делает ваш пример кода хорошим (или это и есть 1С-овский код?)
давайте попробуем) гипотетический QtScript код. трудно понимать ваш код без контекста, но контекст нарисуем и ипридумаем ))):
(код тупо в лоб, без применеения блоков "для всех" что бы не писать каждый раз "myDoc." ))
естественно, в придуманной только-что объектной среде, без наследования класса и т.п.)
Как видите, код стал местами компактнее, понятнее и что немаловажно - прозрачнее - как минимум глаз за лишние "тогда/конецЕсли" не цепляется.
Хочу знать, кто из вас болтун, а кто девелопер.
Двух аттестатов на конфигурирование 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
Как видите, код стал местами компактнее, понятнее и что немаловажно - прозрачнее - как минимум глаз за лишние "тогда/конецЕсли" не цепляется.
-
- Сообщения: 266
- ОС: Window XP
Re: Кто хочет конкретно поучаствовать в проекте?
Выглядит симпатично.
Интересно как на Руби будет выглядеть.
Интересно как на Руби будет выглядеть.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
-
- Сообщения: 266
- ОС: Window XP
Re: Кто хочет конкретно поучаствовать в проекте?
И непонятнее: к чему относится закрывающая скобка к циклу или условному оператору.
myDoc.badMessageString = ""; << так не стоило делать, незачем в документе хранить описания ошибки. Эта переменная нужна только в данной ситуации и не нужна в самом документе.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
-
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Кто хочет конкретно поучаствовать в проекте?
вполне понятно) одно под другим. закрывающаяся скобка под открывающейся. кроме того, писанины меньше и слов тоже.
myDoc.badMessageString = ""; << так не стоило делать, незачем в документе хранить описания ошибки. Эта переменная нужна только в данной ситуации и не нужна в самом документе.
Это проблемы интерпретации / восстановления контекста. Я не сильно задумывался это самостоятельная переменная или поле документа. написал как пришло в голову.
-
- Сообщения: 266
- ОС: Window XP
Re: Кто хочет конкретно поучаствовать в проекте?
У нормальных людей давно нормальный интеллиценз работает.
Вот снял ролик:
http://unnstudioreport.googlecode.com/files/capture-2.avi
О том как работает интеллиценз в 1Cv77 у мну

qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
-
- Сообщения: 70
Re: Кто хочет конкретно поучаствовать в проекте?
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().
-
- Сообщения: 70
Re: Кто хочет конкретно поучаствовать в проекте?
Насчет английиского/русского синтаксиса. Я лично сторонник английского. Доступ к полям справочника предполагается осуществлять через переопределение оператора []:
Как это на Ruby:
Как это на Ruby:
Код: Выделить всё
sotr = Reference.new("Сотрудники");
s = sotr.create
s["Фамилия"] = "Иванов"
s["Имя"] = "Иван"
s["Отчество"] = "Иванович"
s["ГодРождения"] = 1977
s.write
-
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Кто хочет конкретно поучаствовать в проекте?
Кстати, насчет веб-движка.
Где-то на блогах троллей была заметка про то что они делают специальный веб-сервер который позволит "отдавать клиенту" программы на QT писанные как обычное веб-приложение "через бразуер" . Потому думаю что QT вполне перспективен в этом плане.
Ссылки не найду пока...
Где-то на блогах троллей была заметка про то что они делают специальный веб-сервер который позволит "отдавать клиенту" программы на QT писанные как обычное веб-приложение "через бразуер" . Потому думаю что QT вполне перспективен в этом плане.
Ссылки не найду пока...
-
- Сообщения: 70
Re: Кто хочет конкретно поучаствовать в проекте?
Кто скажет есть ли готовая к использованию библиотека, чтобы создавать виджеты, отображаемые в браузере?
В этом случае довольно просто будет прикрутить это к уже существующий классам, а отображение в нативном виде или браузере реализовать в виде драйверов.
В этом случае довольно просто будет прикрутить это к уже существующий классам, а отображение в нативном виде или браузере реализовать в виде драйверов.
-
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Кто хочет конкретно поучаствовать в проекте?
Кто скажет есть ли готовая к использованию библиотека, чтобы создавать виджеты, отображаемые в браузере?
QtWebKit Module ?
qtwui?
вот с блогов троллей нашел немного: http://labs.trolltech.com/blogs/2009/09/18...ith-qwebclient/
--------------------------------
так что насчет портирования/адаптации объектов на QDroid ? хотя бы некоторых?
я согласен поучаствовать в разработке/утряскеИнтерфейсов классов типа Справочник, Документ, ТабличнаяФорма если эти классы будут без проблем использоваться в QtScript и для QDroid можно будет сделать плагины с этими классами. Вероятно мне при этом придется писать плагин-доступ к БД, и т.п...
пусть без "усердного энтузазизма", но внести свою лепту я могу.
Это технически сейчас возможно? я имею в виду структуру вашего проекта и классов? отделить описанные классы от остального приложения?
-
- Сообщения: 70
Re: Кто хочет конкретно поучаствовать в проекте?
классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним. Я пробовал привязку к Ruby. Проблем быть не должно с любым ЯП, для которого можно писать расширения на C++.
Правильно ли я думаю, что для QtScript классы должны быть унаследованы от QObject?
Правильно ли я думаю, что для QtScript классы должны быть унаследованы от QObject?
-
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Кто хочет конкретно поучаствовать в проекте?
Правда ли я думаю, что для QtScript классы должны быть унаследованы от QObject?
да, истинно так, и только так.
skmdeveloper писал(а): ↑04.12.2009 19:23классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним. Я пробовал привязку к Ruby. Проблем быть не должно с любым ЯП, для которого можно писать расширения на C++.
с QtScript красота в том что никакой привязки не надо ). В самом простом случае вы просто создаете новый объект в движке QtScriptEngine из любого QObject - наследованного объекта. Дальше можно сразу подавать движку скрипт который может обращаться ко всем методам объявленным в секции slots и свойствам класса (см макрос Q_PROPERTY ( ... )).
-
- Сообщения: 266
- ОС: Window XP
Re: Кто хочет конкретно поучаствовать в проекте?
skmdeveloper писал(а): ↑04.12.2009 19:23классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним.
А сколько у тебя табличных частей в документах?
Мне тут Denjs проДемонстрировал код на js. Ничего так себе вполне.
Можно и пописать на нем. Тем более отладчик есть.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
-
- Сообщения: 70
Re: Кто хочет конкретно поучаствовать в проекте?
trdm писал(а): ↑04.12.2009 19:41skmdeveloper писал(а): ↑04.12.2009 19:23классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним.
А сколько у тебя табличных частей в документах?
Мне тут Denjs проДемонстрировал код на js. Ничего так себе вполне.
Можно и пописать на нем. Тем более отладчик есть.
Сколько угодно. Потому что тип данных. В документе хранится только ссылка на него. При сохранении документа таблица сохраняется в своей таблице БД. Ее структура задается в конфигурации отдельно, а не в составе документа, как в 1С. Так оказалось сделать гораздо проще.
-
- Сообщения: 266
- ОС: Window XP
Re: Кто хочет конкретно поучаствовать в проекте?
skmdeveloper писал(а): ↑04.12.2009 20:13Сколько угодно.trdm писал(а): ↑04.12.2009 19:41skmdeveloper писал(а): ↑04.12.2009 19:23классы Справочник, Документ, Таблица, уже реализованы. С БД уже работают. Есть API в виде классов доступа к ним.
А сколько у тебя табличных частей в документах?
Мне тут Denjs проДемонстрировал код на js. Ничего так себе вполне.
Можно и пописать на нем. Тем более отладчик есть.
Клево. Разбудите когда будет результат: сорцы или сборка.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
-
- Сообщения: 70