OberonCore
https://forum.oberoncore.ru/

ert0dev - вспомогательные компоненты для процесса разработки
https://forum.oberoncore.ru/viewtopic.php?f=90&t=3476
Страница 1 из 2

Автор:  Евгений Темиргалеев [ Пятница, 10 Июнь, 2011 00:01 ]
Заголовок сообщения:  ert0dev - вспомогательные компоненты для процесса разработки

http://oberoncore.ru/bbcc/subs/ert0dev/

Автор:  Пётр Кушнир [ Пятница, 10 Июнь, 2011 10:27 ]
Заголовок сообщения:  Re: ert0dev

Код:
(!) SednaBrowser.ExecuteThis LOAD "books.xml" "books"


Остаётся только верить, что всё работает! :D

Автор:  Евгений Темиргалеев [ Суббота, 16 Июль, 2011 00:20 ]
Заголовок сообщения:  Re: ert0dev

добавлены компоненты ert0devCompiler ert0devDebug ert0devVarWriter ert0devVarLogger

Автор:  Евгений Темиргалеев [ Вторник, 19 Июль, 2011 11:42 ]
Заголовок сообщения:  Re: ert0dev

Кажется, ert0devCompiler.CompileSub, ert0devCompiler.DeleteSubObjs, ert0devDebug.UnloadSub как команды избыточны, т.к. перекрываются ert0devCompiler.CompileThis, ert0devCompiler.DeleteThisObjs, ert0devDebug.UnloadThis.?

(обновл. 24.07.2011) вопрос закрыт: команды *Sub* убраны из User-Man

Автор:  Евгений Темиргалеев [ Вторник, 16 Август, 2011 17:26 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Поправил описание ert0dev(Compiler | Debug | VarWriter) в User-Man/Dev-Man с целью сделать его более понятным.

Автор:  Евгений Темиргалеев [ Вторник, 16 Август, 2011 17:39 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Попробовал сделать список компиляции для всего ББ. Просто для пробы. Побочной функции.
Код:
^Q "ert0devCompiler.ListCompiled; ert0devCompiler.DeleteThisObjs; ert0devCompiler.CompileThis" Com$ Comm$ Ctl$ Dev$ Form$ Host$ Obx$ Ole$ Sql$ Std$ System$ Text$ Win$ Xhtml$ ~
Колбасило минуты две супротив 45 секунд
(уточнение, 26.05.2012) Две минуты шла компиляция указанной выше командой, побочным результатом которой стал приведённый ниже список. Компиляция по этому списку (с разрешёнными зависимостями) идёт 45 с.
Код:
^Q DevCompiler.CompileThis
ObxSample ObxRandom ObxPhoneDB ObxAddress0 SqlObxNets SMath Math Fonts WinSql WinGL WinCmc WinApi XhtmlWriters XhtmlEntitySets

   ComEnumRect CommV24 Strings Ports WinOle WinNet WinMM WinGLUtil WinGLAux WinDlg WinCtl

   ComTools ComPhoneBook ComObject ComKoalaExe ComKoalaDll ComKoala ComEnum Printers Kernel Files Dialog Dates WinRpc WinOleDlg WinOleAut XhtmlStdFileWriters

   ComPhoneBookActiveX CtlT CtlC CtlADODB HostFiles ObxUnitConv ObxPhoneUI1 ObxPhoneUI ObxDialog StdLoader Stores Services Sequencers Models Meta Log Integers Converters WinOleCtl

   CommStreams CtlStdType CtlOfficeBinder CtlOffice CtlMSForms CtlGraph9 CtlGraph8 CtlExcel5 CtlDAO36 CtlDAO35 CtlAccess8 HostRegistry HostPackedFiles HostFonts ObxStores SqlDrivers SqlDB Views Printing Mechanisms Controllers

   CommTCP CtlVBIDE CtlPowerPoint9 CtlPowerPoint8 CtlOutlook9 CtlOutlook8 CtlExcel9 CtlExcel8 CtlAccess9 HostPorts ObxViews0 ObxTrap ObxFileTree ObxBitmap OleStorage SqlObxInit SqlObxExt SqlObxDB StdInterpreter StdCFrames Properties Containers TextModels TextMappers XhtmlTextTableMarkers

   CtlWord9 CtlWord8 DevTypeLibs FormModels ObxViews6 ObxViews5 ObxViews4 ObxViews3 ObxViews2 ObxViews14 ObxViews13 ObxViews12 ObxViews11 ObxViews10 ObxViews1 ObxTickers ObxScroll ObxPatterns ObxOmosi ObxLines ObxControls ObxCalc ObxBlackBox OleData SqlObxUI StdViewSizer StdScrollers StdLogos StdClocks Documents Config TextRulers

   FormViews FormControllers ObxControlShifter StdTabViews Windows Controls TextSetters

   DevInspector HostTabFrames HostMechanisms ObxFldCtrls ObxCtrls ObxContIter ObxButtons StdDialog StdApi TextViews TextControllers TextCmds

   DevSelectors DevReferences DevMarkers DevComInterfaceGen HostWindows HostPrinters HostMail HostClipboard HostCFrames HostBitmaps ObxTwins ObxTabs ObxRatCalc ObxPDBRep2 ObxPDBRep1 ObxPDBRep0 ObxOpen1 ObxOpen0 ObxMMerge ObxLookup1 ObxLookup0 ObxHello1 ObxGraphs ObxFact ObxDb ObxConv ObxCaps ObxAscii ObxAddress2 ObxAddress1 ObxActions SqlOdbc3 SqlOdbc SqlObxViews SqlObxTab SqlObxGen SqlControls SqlBrowser StdTables StdHeaders StdFolds StdDebug StdCmds XYplane In

   DevAlienTool FormGen FormCmds HostTextConv HostPictures HostDialog HostCmds ObxPDBRep3 ObxCubes StdStamps StdLog StdLinks StdETHConv StdCoder Out XhtmlExporter

   ComPhoneBookClient ComKoalaTst ComConnect ComAggregate CommObxStreamsServer CommObxStreamsClient DevSearch DevRBrowser DevProfiler DevLinkChk DevCPM DevCommanders HostMenus ObxWrappers ObxWordEdit ObxTabViews ObxPi ObxPDBRep4 ObxParCmd ObxOrders ObxLinks ObxLabelLister ObxHello0 ObxFern ObxCount1 ObxCount0 OleServer OleClient StdMenuTool Init

   DevSubTool DevPacker DevLinker DevDependencies DevDebug DevCPT DevCPS DevCPH DevCPE DevCPB DevCmds DevBrowser DevAnalyzer OleViews

   DevMsgSpy DevHeapSpy DevCPP DevCPL486 DevCPC486 DevComDebug ObxExcel

   DevCPV486 DevCompiler

Автор:  Info21 [ Вторник, 16 Август, 2011 18:52 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

А в чем смысл, простыми словами?

Автор:  Евгений Темиргалеев [ Среда, 17 Август, 2011 07:35 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

DevCompiler.CompileThis, DevDebug.UnloadThis: список модулей для команд компиляции/выгрузки подсистемы в процессе разработки нужно сопровождать вручную, чтобы он соответствовал текущему набору модулей и зависимостям между ними.

ert0devCompiler.CompileThis, ert0devDebug.UnloadThis избавляют от этого. В качестве побочного результата приделано построение списка модулей для DevCompiler.CompileThis.

Выше (viewtopic.php?p=64690#p64690) --- результат пробы построить список компиляции для ББ.

Автор:  Info21 [ Среда, 17 Август, 2011 09:58 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Евгений Темиргалеев писал(а):
DevCompiler.CompileThis, DevDebug.UnloadThis: список модулей для команд компиляции/выгрузки подсистемы в процессе разработки нужно сопровождать вручную, чтобы он соответствовал текущему набору модулей и зависимостям между ними.
А, понял. Переупорядочить список модулей в правильном порядке.

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

Автор:  Евгений Темиргалеев [ Среда, 17 Август, 2011 10:45 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Info21 писал(а):
Так и надо было прежде всего сделать тулзу, которая берет список модулей (из текста) -- и правильно его переупорядочивает (печатая в текст).
Было бы прозрачно и понятно.
Скомбинировать с компиляцией проще вручную -- не каждую секунду это делается.
Есть одно но: для тулзы, которая компилирует (выгружает) в правильном порядке есть простое тупое надёжное решение. Надо отдельно поблагодарить тов. Ермакова за эту идею: раз компилируется быстро, значит можно не заморачиваться и использовать полный перебор.

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

Автор:  Info21 [ Среда, 17 Август, 2011 11:06 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Евгений Темиргалеев писал(а):
Сделать же некомпилирующую (невыгружающую) тулзу, которая строит список --- значительно сложнее (мульон нюансов).
Да ну уж, мульон.
Но готов поверить, что там можно применить какой-то то трюк.

Кстати, не из-за него скорость падала с 45 сек. до 2 минут?

Автор:  Илья Ермаков [ Среда, 17 Август, 2011 11:15 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Из-за него, конечно.

Там же тупо и нагло делается. Компилируется в порядке, в котором отдаёт Files. Запоминается количество неоткомпилировавшихся. Они ещё раз компилируются. Выполняется до тех пор, пока либо неоткомпилировавшихся не останется, либо их число не уменьшилось после последнего прохода (т.е. они не компилируется не из-за зависимостей).

Автор:  Евгений Темиргалеев [ Среда, 17 Август, 2011 11:17 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Info21 писал(а):
Но готов поверить, что там можно применить какой-то то трюк.
Кстати, не из-за него скорость падала с 45 сек. до 2 минут?
Да. Блэкбокс компилируется за 15 итераций:
ert0devCompiler docu писал(а):
Для компиляции списка модулей, перечисленных в произвольном порядке, применяется многократная повторная компиляция списка — пока все модули не скомпилируются, либо пока количество ошибочных не перестанет уменьшаться.
ert0dev User-Man писал(а):
Увеличение времени компиляции для отдельных подсистем практически не заметно, учитывая высокую скорость компиляции модулей и их относительно небольшое число, что вполне вписывается в реалии покомпонентной разработки.

Автор:  Info21 [ Среда, 17 Август, 2011 11:23 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Понял, спасибо.

Автор:  igor [ Среда, 17 Август, 2011 13:57 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Илья Ермаков писал(а):
Там же тупо и нагло делается. Компилируется в порядке, в котором отдаёт Files. Запоминается количество неоткомпилировавшихся. Они ещё раз компилируются. Выполняется до тех пор, пока либо неоткомпилировавшихся не останется, либо их число не уменьшилось после последнего прохода (т.е. они не компилируется не из-за зависимостей).

Евгений Темиргалеев писал(а):
Да. Блэкбокс компилируется за 15 итераций:

А если какого-то модуля вообще не окажется? Для проверки этого факта по-любому придётся список модулей делать при первом проходе. А раз этот список всё-равно уже будет, то лучше один раз выполнить его топологическую сортировку, и не делать 15 проходов.

Автор:  Евгений Темиргалеев [ Среда, 17 Август, 2011 15:11 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

igor писал(а):
А раз этот список всё-равно уже будет, то лучше один раз выполнить его топологическую сортировку...
Она и получается за эти проходы. Вопрос в способе. Нам было лучше:
Евгений Темиргалеев писал(а):
Надо отдельно поблагодарить тов. Ермакова за эту идею: раз компилируется быстро, значит можно не заморачиваться и использовать полный перебор.

Автор:  Илья Ермаков [ Среда, 17 Август, 2011 15:21 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

igor писал(а):
А раз этот список всё-равно уже будет, то лучше один раз выполнить его топологическую сортировку, и не делать 15 проходов.


Геморрой(чик) не в сортировке, а в том, что связи импорта придётся выковыривать из исходников.

Автор:  Евгений Темиргалеев [ Среда, 17 Август, 2011 15:29 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Илья Ермаков писал(а):
...связи импорта придётся выковыривать из исходников.
Это тов. Горячев уже сделал: http://www.zinnamturm.eu/downloadsAC.htm#Bbt
И тов. Ильин: http://oberoncore.ru/wiki/blackbox/sysgraph

Ещё оминковская тулза есть: DevDependencies.CreateTool. Она анализирует символьные файлы. :)

Автор:  igor [ Среда, 17 Август, 2011 18:06 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Евгений Темиргалеев писал(а):
igor писал(а):
... лучше один раз выполнить его топологическую сортировку...
Она и получается за эти проходы. Вопрос в способе.
Хозяин - барин, как говорится. :)

Автор:  igor [ Среда, 17 Август, 2011 18:21 ]
Заголовок сообщения:  Re: ert0dev - вспомогательные компоненты для процесса разраб

Илья Ермаков писал(а):
igor писал(а):
... лучше один раз выполнить его топологическую сортировку, и не делать 15 проходов.

Геморрой(чик) не в сортировке, а в том, что связи импорта придётся выковыривать из исходников.
Да, придётся (ну, и что? :) ). Я для себя давным-давно решил, что сначала следует парсить заголовки и секции импорта всех модулей проекта (с составлением отсортированного списка модулей и точек входа при втором заходе), а затем повторно последовательно загружать в нужном порядке и компилить остальные части исходников. Не случайно секция импорта находится в самом начале модуля :wink: .

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