:: Доска объявлений
Ищу коллег
V_l_a_d
Автор

Сообщений: 42
Дата регистрации: 04.12.2003
Группа для совместной работы в сфере Visual Foxpro.

1. Цель
Создание каркаса для быстрой разработки надежных файл-серверных
приложений на основе существующих библиотек классов, функций, ...
Имеется несколько каркасов (FrameWork) для ФоксПро.
В принципе весь FFC & Wizards можно считать каркасом.
Однако он плохо документирован, ряд вопросов в нем не решен, и прочее.
На сайте Wiki есть материалы по наиболее популярным фреймвокам.
CodeBook CB free
CodeMine CM
ComCodeBook CCB free
Mere Mortals MM 499 $
Visual Extend VFX
Visual FoxExpress VFE 699 $
Visual MaxFrame Professional VMF 499 $
Visual ProMatrix VPM 795 $
По понятной причине я посмотрел только CB & CCB.
В их создании принимали участие одни и те же люди.
MM, надо полагать, тоже с этими ребятами сделан.
CCB предназначен для промежуточного слоя в многослойном приложении.
CB меня разочаровал... Иерархия классов черезвычайно запутанная.
Для словаря данных предполагается использование SDT (349$) и т.д.


2. Стартовый "капитал"
За основу берутся библиотеки Дугласа Хеннига (D.Hennig фирма StoneField).
Они опубликованы в журналах FoxTalk английского и русского изданий.
На сегодня имеется более 40 различных штук.
Изучено и адаптировано на 25.01.04 14 штук.
Хеннигy Майкpософт дал титyл MVP (most valuable professional).
С использованием своих классов Дуг написал
Stonefield Database Toolkit (SDT), которая:
Winner, 2000 Developer's Choice Award for "Best Utility" ,
Winner, 2001 Universal Thread Members Choice Award for "Best Desktop Tool".
Используется, также, и FFC.


3. Инструменты
Visual Foxpro 6.0 , 7.0
Visual Source Safe 6.0 (по желанию)
Multi-Edit 8.0 , 9.0 (по желанию)


4. Состояние проекта на сегодняшний день
Сделана библиотека для первого слоя базовых классов VFP.
BASE_.PRG - 1109 кб, 31 класс, 264 процедуры из 45 наименований.
Она, в общем, является аналогом SfCtrls.VCX , входящей в SDT.
О необходимости подобной библиотеки можно прочитать в книге
М.Базияна на стр. 522, 610 и ниже (других авторов)...
"Первое, что стоит сделать, так это создать библиотеку, куда положить
классы, субклассированные от всех (опять же с понятными исключениями)
встроенных классов VFP. Второе, что следует сделать, это забыть о
существовании встроенных классов и пользоваться только этими "первыми"
субклассами и их производными."
"A lot of people do the following when setting up their class library:
1) Subclass all of the native VFP classes that can
be subclassed into your own "base class layer."
2) Subclass all of your "base class" classes one
more time to make your "working class layer."
Then do most, if not all, of your base modifications starting
at the working class layer. This gives you a "clean" layer
of classes in your "base class layer".
You can usually get away with just the base class layer
of subclasses, but there are times when it is very handy
to have that extra layer of classes between you and the
native VFP classes."

Для BASE_.PRG сделано:
MENU_.PRG - класс меню на правую кнопку мыши.
Это почти аналог _ShortCutMenu.VCX из FFC
MENU_X.PRG - существенно улучшенный MENU_.PRG 18 кб, 1 класс, 10 методов
MESSAGE.PRG - класс MessageMgr для создания окон с сообщениями
22 кб, 3 класса, 10 методов
UTILITY.PRG - класс Utility_ с утилитами для приложения.
класс CommonDialog_
110 кб, 2 класса, 52 метода

Библиотека для обработки ошибок в программе.
ErrorMgr.PRG - 158 кб, 4 класса, 42 метод.
Она лучше _Error.VCX из FFC и серьезно повышает надежность
работы приложений.
Используется в событиях Error библиотеки BASE_ для реализации идеи
Дуга Хеннига "цепь ответственности".
Замечу, что в CodeBook также используется упомянутая идея
(...the most elegent error handling scheme we have seen).

Сделано также
Applic.PRG - Управление формами, создание меню приложения...
46 кб, 1 класс, 10 методов
MainForm.PRG - Data entry form class
61 кб, 1 класс, 26 процедур
Button_.PRG - 59 кб
Environ.PRG - Сохраняет SET`ы при старте программы и
восстанавливает их в конце работы.
Registry.PRG - Handle the Windows 95/NT Registry. Походит на
Registry.VCX из FFC
FoxTools.PRG - Оболочка FoxTools.FLL для демонстрации
"цепи ответственности" и использования ErrorMgr.PRG
29 кб, 1 класс, 29 процедур
FClass.PRG - A wrapper for low-level file functions.
Для демонстрации работы команды ERROR с ErrorMgr.PRG
18 кб, 1 класс, 10 процедур
InGrid.PRG - Поиск с уточнением в гриде (incremental search).
Модернизированный модуль Scott`а Mackay
16 кб.
User.PRG - Регистрация пользователей приложения и обеспечение его
безопасности.
23 кб.
Persist.PRG - Автоматическое сохранение и восстановление данных
интерфейса объектов.
56 кб.
Login.PRG - Библиотека для ввода имени пользователя и пароля.
Используется в User.PRG
11 кб.

с 17.01.2003 по 05.03.2003 :
- Для библиотеки ErrorMgr сделана таблица Messages.DBF (806 кб) с
описанием ошибок на русском языке. Данные взяты из русского хелпа к VFP 3.0
- Написан алгоритм проверки полноты задачи при ее загрузке.
Утилита prg4wk_1.PRG (4 кб), к нему, создает процедуру, содержащую перечень
файлов любых программ, для использования в блоке проверки полноты задачи.
Утилита prg4wk_2.PRG (10 кб) создает функцию для восстановления отсутствующих
свободных таблиц. Сгенерированная функция может быть вызвана при загрузке
программы и из класса обработки ошибок.

с 05.03.2003 по 03.04.2003 :
- Сделан генератор кода prg4wk_3.PRG (43 кб), создающий процедуру для
восстановления сортировок и связей таблиц. Сгенерированная процедура
может вызываться при загрузке программы, из класса обработки ошибок и
из основного меню. Данное решение шире возможности программ
GenDbc.PRG и GenDbcX.PRG
- Написана библиотека User.PRG для регистрации пользователей программы
и обеспечения ее безопасности.
- Написана библиотека Persist.PRG для автоматического сохранения и
восстановления данных интерфейса объектов (например, местоположения
форм, определенного пользователем программы).

с 03.04.2003 по 25.06.2003 :
- Написана библиотека Login.PRG для ввода имени пользователя и пароля.
- На _Base.Vcx из FFC (6.0, 7.0) конвертер PrgToVcx доработан для
классов типа ActiveDoc, FormSet, ProjectHook.
Сделан вариант _Base.Vcx с русскими комментариями.
- Модернизирован код по последним работам Д.Хеннига.

с 25.06.2003 по 06.09.2003 :
- Сделана библиотека iBase.PRG(VCX) промежуточного слоя между первым
слоем классов (Base_) и специализированными классами.
- Сделаны две вставки (AddIn`s) для браузера классов.
Первая добавляет к дереву правой панели встроенные свойства, события, методы.
Все свойства класса, при этом, показываются с их значением.
Вторая изменяет дефолтный шрифт браузера классов на заданный программистом.
(Де)активизация вставок организована через меню-вставки.

с 06.09.2003 по 04.12.2003 :
- На сервер помещена новая версия каркаса FrameWk8.zip (800 kb)
- Сделана вставка для браузера классов VcxToPrg.

с 04.12.2003 по 25.01.2004 :
- Сделаны три библиотеки Collection, TxtMerge, SysMenu


5. Производительность труда
Я довел до рабочего состояния утилиту Тома Реттига (T.Rettig) PrgToVcx.PRG
Она позволяет уменьшить дистанцию между PRG-кодированием и VCX-кодированием.
Еще сделана Class Browser вставка (AddIn) VcxToPrg.PRG, которая создает
.PRG вариант .VCX подготовленный по формату для конвертера PrgToVcx.PRG
Все упомянутые выше библиотеки есть в двух вариантах (PRG и VCX).
Т.е. вполне доступна следyющая технология:
1) Все, что можно пишем как .PRG. Это позволяет взять пользу от пpиличных
програмистских pедактоpов, Visual Source Safe, ...
2) .PRG -> PrgToVcx.PRG -> .VCX
3) Для наглядного констpyиpования использyем .VCX аналоги
4) По концy п.3 вносим изменения в код п.1, хранящийся в VSS.
5) В рабочие приложения включаем .PRG


6. Затраты и выгоды
На изучение имеющегося материала конечно надо потратить время.
Однако этот код позволяет делать надежные и функциональные системы.
Все имеющиеся библиотеки рабочие... и предоставляются членам группы
в виде исходных текстов.
Судя по нижнему, Д.Хенниг не против использования его кода.
"This scheme has been successfully used in several applications, although
we continue to refine it. I hope you find it useful in your applications."


7. Среда для общения
yahoo-group (http://groups.yahoo.com/group/v_f_p)
и, возможно, (fido7.)su.dbms.foxpro
На сайте группы имеется архив писем и файлов.


9. Анкета от желающих работать
Фамилия
Имя
Отчество (по желанию)
Фамилия английскими буквами
Имя английскими буквами
Резервный адрес по емэйлу (если несколько, то через запятую)
Резервный адрес по фидо (если несколько, то через запятую)
Населенный пункт проживания
Опыт работы с ФоксПро (число лет)
Опыт работы с Визьюэл (число лет)


10. Подписка на яху-группу v_f_p()yahoogroups.com
Делается письмом в адрес v_f_p-subscribe()yahoogroups.com
Новый человек попадает в группу только после того, как модератор
подтвердит подписку с данного адреса.
Посему, одновременно с запросом на v_f_p-subscribe, надо прислать мне
данные по п.9 в адрес v_f_p-owner()yahoogroups.com
Заполнение анкеты является обязательным условием.
Можете также подробнее осветить свой профессиональный опыт в ФоксПро и
написать ваши предложения, но это по желанию.
(В адресах вместо двух скобок надо поставить @)
Ratings: 0 negative/0 positive
Re: Ищу коллег
V_l_a_d
Автор

Сообщений: 42
Дата регистрации: 04.12.2003
VT>> Группа для совместной работы в сфере Visual Foxpro.

> Попытка не пытка А используемый там механизм обработки ошибок
> от Дуга Хеннига заслуживает внимания в _любом_ случае.

> IMHO весьма достойный набоp библиотек.
> Есть чему поучиться. Мне понpавилась pабота c гpидом.
> Жаль что сам ничем не могу помочь гpуппе.

> Все смотрю и думаю, как подступиться к вашему коду?
> Нет ли у вас простого примера проекта для толчка?

Три пути.
1. Довериться всему ииеющемуся.
Вставить свое меню и вперед... писать свое приложение,
изучая используемые классы и процедуры.
Так как все было рабочее изначально, от ДХ.
2. Частично довериться.
В свои системы вставлять блоки обработки ошибок, сортировки
данных, контроля комплектности.
3. Подключиться к кодированию.
Самое простое - для утилиты индексирования сделать
индикатор процесса (Set message, wait window).
Cложнее - для блока обработки ощибок сделать
облегченный интерфейс (на случай слабых юзеров).
У Хеннига есть такой вариант.
Еще сложнее - сделать блок ремонта свободных таблиц.
Работающая утилита для 2.х, от Пинтера, у меня есть.
Выручала много раз. И сейчас жена пару раз 1С лечила.
Утилите нужен другой интерфейс и дополнить на новые типы ДБФ



VT>> 2. Стартовый "капитал"
VT>> За основу берутся библиотеки Дугласа Хеннига (D.Hennig фирма
VT>> StoneField). Они опубликованы в журналах FoxTalk английского и
VT>> русского
VT>> изданий. Hа сегодня имеется более 40 различных штук.

> Жаль, не изучал...

Пишет он сильно и мысль в программе ясно выражена.
Кроме того код хорошо документирован.



VT>> 4. Состояние проекта на сегодняшний день
VT>> Сделана библиотека для первого слоя базовых классов VFP.
VT>> BASE_.PRG - 1109 кб, 31 класс, 264 процедуры из 45 наименований.

> Hасчёт количества слоёв тоже есть идеи Если вкратце - есть один или
> более слоёв на общесистемном уровне (BASE_ это только самые простые,
> так сказать нефункциональные, далее идут уже заточенные под что-то
> конкретное - скажем под прямой ввод данных, под ввод с поиском в
> справочнике и т.п.). А ещё один слой, так сказать "покрывающий" (он

Посмотрите, что уже решено. На мой взгляд первый слой хорош.
Есть функциональность и не сдерживает развития.
Т.е. годится на разные типы приложений



VT>> 5. Производительность труда
VT>> Я довел до рабочего состояния утилиту Тома Реттига (T.Rettig)
VT>> PrgToVcx.PRG Она позволяет уменьшить дистанцию между
VT>> PRG-кодированием и VCX-кодированием. Все упомянутые выше

> Интересная идея... Сам я пока пользуюсь исправленной утилитой SCCText
> (она в отличие от оригинальной производства MS упорядочивает методы и
> свойсква по алфавиту - удобно искать отличия). Дело в том, что я

Самый полный анализ "PRG против VCX", виданный мной, на
fox.wikis.com
Там всего 25 пункта.
PRG выигрывает в 13
VCX выигрывает в 6
По 6 пунктам нельзя сделать вывод "кто кого"
Год назад этот вопрос обсуждался в фидо (ноябрь 2001 тема: .VCX vs .PRG).
Добавлением к верхнему, на мой взгляд, будут 2 момента от С.Титова :
--------------------------------------------------------------------
Т.е. это я к тому, что первоисточником всего и вся является стандарт языка,
который наиболее полно и правильно можно использовать ТОЛЬКО рукописным
кодом (и это не только фокса касается). Другое дело, что MS не был бы MSом,
если бы в языке (точнее - в объектной модели) не появились бы
возможности, которые можно документированным способом реализовать
либо только визуальными средствами, либо наоборот - только ручным
кодированием...
ST> "формате" VCX И есть он же в "формате" PRG. Размер ЕХЕшника во втором
ST> случае в 10(десять) раз меньше - 60К vs 630К
Тут есть некоторые моменты:
1. Разница в размерах возникает из-за того, что VCXы и прочие Хы включаются
в ехешник. Если их паковать регулярно и отследить, чтобы ничего лишнего там
не было (например - используется один класс из библиотеки, но библиотека
все-равно будет включаена в ехешник полностью), то в принципе разница будет
поменьше (хотя в разЫ - останется)
---------------------------------------------------------------------------

Т.е. с двумя пунктами Титова имеем 15 против 6.
Две строки из таблицы "Compiler Directives" и "preprocessor sensitivty"
можно считать частными случаями первого пункта Титова - 13 против 6.
От меня пункт 1 - 0
VCX - дополнительное устройство в "цепи обработки". С точки зрения
теории надежности такой продукт менее надежен по сравнению с
продуктом применившим PRG.
Пример: у Хеннига есть ошибка с синтаксисом (null без правой точки).
Она описана в моем Base_.PRG в конце файла.
Небось существует и на сей момент !?

Итого:
PRG выигрывает в 14 пунктах
VCX выигрывает в 6.
По 6 пунктам нельзя сделать вывод "кто кого"
За основу брались оценки авторов таблицы, т.к. я
вижу их квалификацию как высокую. Также у них (авторов)
высокий уровень цитируемости.
Полученное соотношение 14 - 6 можно считать оценкой в первом приближении.
Хотя анализ имеющихся пунктов лучше, конечно, делать
с учетом "удельного веса".
Только вот его подсчет приводит к сильной субъективности.



> Единственная недоработка это то, что prg-описание более полное по
> коментариям, чем VCX. Надо это как то учесть в программе prgtovcx.
> Все же работа с VCX форматом более удобная и продуктивная в родном
> редакторе VFP, чем с PRG.
> Хотя если бы были более совершенны связки prgtovcx / vcxtoprg, то
> наверное и спорить было бы нечего, каждый бы выбрал способ работы
> по своему вкусу.
> Все таки программирование складывается из языка разработки и окружающей
> среды разработки и если основные интерфейсы работы с проектом направляют
> на работу с VCX, то лучше следовать по этой линии...

RAD как-никак, хоть и кривой.

Я за компромиcс, дающий больше, чем PRG или VCX, в отдельности.
А именно:
1. Имеем первоначально соотношение 14 к 6
По 6 пунктам нельзя сделать вывод "кто кого"
2а. Работаем только с vcx.
Тогда для получения максимальной пользы надо 14 (условных утилит)
реализующих преимущества prg для vcx подхода.
SCCtext и Browser это такие утилиты от мелкософта.
Я с этой стороны пробовал зайти, но в сырцах браузера нет комментариев...
2б. Работаем только с prg.
Тогда для получения максимальной пользы надо 6 (условных утилит)
реализующих преимущества vcx для prg подхода.
Мой транслятор заменяет сразу 2 утилиты.
Итого 14 против 4, т.к. возможности "Property sheet" и
"Using the designers" у нас тоже есть (при использовании base_.vcx)
И по 8 пунктам нельзя сделать вывод "кто кого"

Еще есть потенциальная утилита - КлассНавигатор.



> Каждый пишет так как ему удобно в данный момент или как он
> может (как он научился). И чтобы не говорили о преимуществах
> того или иного подхода программист
> будет писать так как ему удобно(умеет) для выполнения поставленной задачи.
> Да надо обсуждать преимущества и недостатки того или иного
> подхода (языка программирования, ОС, и т.п.).
> Но только показать, что в этой области это лучше, а в другой - другое.
> При этом разработчик сам должен выбирать PRG или VCX лучше для
> выполнения поставленной задачи, а может их комбинацию

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

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

===== Cut =====
5. Производительность труда
Я довел до рабочего состояния утилиту Тома Реттига (T.Rettig) PrgToVcx.PRG
Она позволяет уменьшить дистанцию между PRG-кодированием и VCX-кодированием.
Все упомянутые выше библиотеки есть в двух вариантах (PRG и VCX).
Т.е. вполне доступна следyющая технология:
1) Все, что можно пишем как .PRG. Это позволяет взять пользу от пpиличных
програмистских pедактоpов, Visual Source Safe, ...
2) .PRG -> PrgToVcx.PRG -> .VCX
3) Для наглядного констpyиpования использyем .VCX аналоги
4) По концy п.3 вносим изменения в код п.1, хранящийся в VSS.
5) В рабочие приложения включаем .PRG
===== Cut =====



> Не понятна зачем нужна связка StartUp.prg и Main.prg, лично у меня написан
> более совершенный один файл Main.prg, в котором и запускается оApp.
> Вообщем StartUp.prg только лишнее звено, может быть его убрать?

Это идет от ДХ.
This is the main program. It's purpose is to set up some immediate
environmental things, then call the "real" !main program in a loop
so we can RETURN TO MASTER in case of an error but stay !in the
application.
т.е. перезапуск main.prg все восстанавливает
Плюс облегчается сопровождение, т.к. startup неизменяется от
приложения к приложению.



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

Два года работает.
Если зафиксированы ошибки в оригинале Дуга, то опишите их, я посмотрю.
На мой взгляд обработчик хорош.
А если ориентироваться на www.ideaxchg.com , то
он, среди опубликованных в Сети, самый лучший.

> Класс ErrorMgr вообщем нормальный чувствуется глубокая
> проработка всего кода.

Фундамент ДХ.
Жаль, что lineno() теперь относительное значение выдает.
Внешний редактор не запустить уже из класса...



> А как насчёт обмена кодом? IMHO мыло для этого не самый подходящий
> транспорт. Тут надо либо ftp, либо http хранилище использовать...

На сервере яху группе дается 20 мб под файлы.
Ratings: 0 negative/0 positive
Re: Ищу коллег
Syberex

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Нужна цель проекта, без нее не будет ничего кроме кучи-кодов...

Конкретная задача - разработка такой-то проги ...




------------------
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика