~vbursian/research-assistant/intervers

« back to all changes in this revision

Viewing changes to docs/RA.documentation.src.h

  • Committer: Viktor Bursian
  • Date: 2013-06-06 15:10:08 UTC
  • Revision ID: vbursian@gmail.com-20130606151008-6641eh62f0lgx8jt
Tags: version_0.3.0
version 0.3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*! @file RA.documentation.src.h   В этом файле находится исходный текст
2
 
                                   для генерации документации к исходным
3
 
                                   текстам программы Research Assistant.
4
 
*/
5
 
 
6
 
//******************************************************************************
7
 
//******************************************************************************
8
 
/*! @mainpage Research Assistant Program
9
 
 
10
 
*/
11
 
 
12
 
//******************************************************************************
13
 
//******************************************************************************
14
 
/*! @page program_structure Program structure
15
 
 
16
 
 
17
 
 
18
 
 
19
 
*/
20
 
 
21
 
//******************************************************************************
22
 
//******************************************************************************
23
 
/*! @page versions Versions
24
 
 
25
 
 
26
 
 
27
 
 
28
 
*/
29
 
 
30
 
//******************************************************************************
31
 
//******************************************************************************
32
 
/*! @page subversions   Subversions and development discipline
33
 
 
34
 
 
35
 
 
36
 
 
37
 
Нам пора сливаться.  И наводить более строгую дисциплину контроля версий.  Предложения принимаются, индивидуальные вкусы могут быть учтены.  Можно допустить и индивидуальные дисциплины, если они эффективны и понятны другим.  Пока я навязываю свои правила и хочу три вещи:
38
 
 
39
 
1.  Получить свежие версии ваших собственных текстов и ваши версии текстов, которые вы изменили (Install.cpp, файлы проектов,...).
40
 
 
41
 
Хотелось бы, чтобы они компилировались, по крайней мере, у вас.
42
 
 
43
 
Хотелось бы, получить их в виде zip с именем вида
44
 
    "RA 101129 DN2VB.zip",
45
 
т.е. содержащим дату и от кого кому.
46
 
 
47
 
ВНИМАНИЕ: наличие суффикса "2VB" означает, что архив неполный, и остальные файлы адресат может найти у себя или скомпилировать самостоятельно.
48
 
 
49
 
2.  Заведите у себя манеру периодически архивировать все исходники ЦЕЛИКОМ (мои и ваши).  И все эти архивы хранить на флешке.  Все!  За всю историю!  Когда флешка переполнится, сбрасывать на CD.
50
 
 
51
 
Как правило не стоит включать в архив то, что можно скомпилировать или сгенерить (exe, dll, генерируемые файлы документации,...).  Без них архив RA около 1Mb, а со всем "мусором" больше 20Mb!  Т.е. чистить! Либо до архивации (я использую скрипт или bat-файл), либо уже из архива удалять ненужное.
52
 
 
53
 
В имя архива обязательно включать дату.  Если в тот же день делается несколько архивов, то можно добавить буквочки "a", "b",...  Полезно ещё добавить имя компа: "RA 101129а blin.zip" (blin -- это не ругательство, а кличка моего ноутбука).  Можно ещё какие-то ремарки приписать сзади.  Я, например, добавляю "-", если версия не компилируется, "!" - для финальных отлаженных версий после значительного развития/переделки, а иногда и слово или фразу, которые напомнят мне, что в этой версии нового.
54
 
 
55
 
Обычно полные архивы не пересылаются со-программерам, но иногда может потребоваться.  Если архив предназначен для пересылки, то обязательно включить в его имя свои инициалы, чтобы он случайно не потёр архив с той же датой у адресата.
56
 
 
57
 
Надо бы ещё вести history.log, но лично я пока ленюсь.  После начала официальных релизов это вероятно придётся делать.  Можете показать мне пример прямо сейчас ;-)
58
 
 
59
 
Примечание: Использование номеров версий имеет смысл только для официальных релизов.  Т.е. после
60
 
a) слияния (обязательно!),
61
 
b) тестирования (желательно),
62
 
c) формирования дистрибутива (желательно, на Read-only CD),
63
 
d) и (!!!) смены номера версии для дальнейшей разработки,
64
 
   причём согласованно у всех разработчиков.
65
 
 
66
 
3.  Нужна некая унификация относительной структуры папок, прямо или косвенно касающихся разработки RA.  У меня имеется папка .
67
 
 
68
 
*/
69
 
 
70
 
//******************************************************************************
71
 
//******************************************************************************
72
 
/*! @page history History Log
73
 
 
74
 
@section history_0_1_beta  Версия 0.1.beta (в разработке)
75
 
 
76
 
@subsection history_101206  Промежуточная версия 101206
77
 
 
78
 
Для пущей ясности (относительно разбивки на dll и плагины) косметически
79
 
поправил чуть не каждый файл.
80
 
 
81
 
В классы устройств внесена правка, необходимая для согласования с остальными
82
 
изменениями ядра и структуры, и кое-какая косметика. Поправки простенькие и
83
 
локализованные, но полезно сравнить с исходными версиями и посмотреть, что и
84
 
как. А если окажется, что я правил уже устаревшую версию, то слить
85
 
аккуратненько.
86
 
 
87
 
 
88
 
Диме: Если бы у меня были свежие и хотя бы компилирующиеся версии Ваших текстов, я бы и их поправил.  Обратите внимание на изменения в sUniScanner и sPetrovich (для чего полезно уметь сравнивать текстовые файлы) и внесите изменения в свои производные и/или клоны от этих классов.
89
 
 
90
 
Обоим: Плагин Feofilov у вас в совместной разработке.  Договоритесь о дисциплине и держите меня в курсе - хотелось бы иметь представление о том, what is whose.
91
 
 
92
 
 
93
 
@subsection history_101202a  Промежуточная версия 101202a
94
 
 
95
 
Внедрены плагины, что потребовало реструктуризации программы: изменена
96
 
структура каталогов и проектов, программа развалена на части (exe, dll-ки ядра
97
 
и dll-ки плагинов).
98
 
 
99
 
Внедрены физ.величины (sPhysValue): расширенные вещественные числа (с
100
 
плюс-минус бесконечностью и неопределённостью), имеющие погрешность и единицы
101
 
измерения. Пока только основы, для конечного юзера незаметные, а для
102
 
программера необременительные (небольшие изменения при записи/чтении в/из БД).
103
 
Далее предстоит постепенно перейти к их использованию везде, где можно и нужно.
104
 
 
105
 
Кое какие переименования и переразбивка на файлы (для пущей читаемости текстов).
106
 
 
107
 
Добавлены базовые типы узлов RANet: sPhysValueNode sPhysRangeNode sBooleanNode
108
 
а вот просто вещественные числа в БД теперь не записываются. Тип real в
109
 
программе, конечно, останется, но будет использоваться там, где важна
110
 
эффективность.
111
 
 
112
 
Наряду с sArrayFunction теперь имеется sPairSetFunction - таблично заданная
113
 
зависимость с произвольным шагом по абциссе, динамически изменяющимся числом
114
 
точек и произвольным порядком их добавления (при этом они упорядочиваются по
115
 
абциссе).
116
 
 
117
 
@subsection history_lost  Предыстория
118
 
 
119
 
Утеряна
120
 
 
121
 
 
122
 
*/
123
 
 
124
 
//******************************************************************************
125
 
//******************************************************************************
126
 
/*! @page distrib Distribution
127
 
 
128
 
Порядок выпуска официальной версии:
129
 
- Вдумчивое слияние
130
 
- Полная пересборка под Windows и Linux в конфигурации Release
131
 
- Компиляция help'а
132
 
- Правка и компиляция перевода (linguist)
133
 
- Компиляция документации разработчика (doxygen)
134
 
- @ref distrib_form
135
 
- Инсталяция и тестирование дистрибутива на разных машинах и системах
136
 
- Увеличение номера версии для дальнейшей разработки
137
 
 
138
 
 
139
 
@section distrib_form Формирование дистрибутива
140
 
 
141
 
На данный момент для win32 минимальная процедура такая:
142
 
 
143
 
Пусть исходники лежат в некой папке <i>RAPROG</i>
144
 
(у меня это "d:\Vik\Prog\QtRA"),
145
 
а Qt установлен в <i>QTDIR</i>
146
 
(у меня это "с:\Qt\2009.05").
147
 
 
148
 
Всё ставится в некую папку <i>RADIST</i>, в имя которой полезно включить
149
 
номер версии (например,  "d:\RA_0_2") - тогда можно поставить рядом
150
 
вторую версию, попробовать, а потом уже перейти к работе на ней,
151
 
скопировав туда рабочую базу данных.
152
 
 
153
 
   Из папки <i>QTDIR</i>\\qt\\bin (НЕ ПУТАТЬ С <i>QTDIR</i>\\bin !!!)
154
 
   в папку <i>RADIST</i>\\bin
155
 
- assistant.exe
156
 
- libgcc_s_dw2-1.dll
157
 
- mingwm10.dll
158
 
- phonon4.dll
159
 
- QtCLucene4.dll
160
 
- QtCore4.dll
161
 
- QtGui4.dll
162
 
- QtHelp4.dll
163
 
- QtNetwork4.dll
164
 
- QtSql4.dll
165
 
- QtWebKit4.dll
166
 
- QtXml4.dll
167
 
- QtXmlPatterns4.dll
168
 
 
169
 
   Из папки <i>QTDIR</i>\\qt\\plugins\\sqldrivers
170
 
                 (НЕ ИЗ <i>QTDIR</i>\\bin\\sqldrivers !!!)
171
 
   в папку <i>RADIST</i>\\bin\\plugins\\sqldrivers
172
 
- qsqlite4.dll
173
 
 
174
 
   Из папки <i>RAPROG</i>\\bin
175
 
   в папку <i>RADIST</i>\\bin
176
 
- ra.exe
177
 
 
178
 
 
179
 
   Из папки <i>RAPROG</i>
180
 
   в папку <i>RADIST</i>
181
 
- License.html
182
 
- Manual.html
183
 
- и папку help целиком со всеми файлами и вложенными папками
184
 
 
185
 
 
186
 
   Из папки <i>RAPROG</i>\\locales
187
 
   в папку <i>RADIST</i>\\locales
188
 
- RA_ru.qm
189
 
 
190
 
 
191
 
*/
192
 
 
193
 
//******************************************************************************
194
 
//******************************************************************************
195
 
/*! @page datanet RANet Knowledgebase
196
 
 
197
 
 
198
 
 
199
 
*/
200
 
 
201
 
//******************************************************************************
202
 
//******************************************************************************
203
 
/* МУСОР
204
 
 
205
 
 
206
 
@section intro_sec Introduction
207
 
 
208
 
This is the introduction.
209
 
 
210
 
@section sec_projects Versions, Customizations, Build Projects
211
 
 
212
 
@subsection sec_project_vers  Versions
213
 
 
214
 
Версия программы состоит из версии общего ядра, кастомизации и даты
215
 
сборки.
216
 
 
217
 
Версия ядра в виде major.minor будет расти общепринятым образом, отражая
218
 
изменения в формате данных (обязательно) и более или менее заметные
219
 
подвижки в общей функциональности.
220
 
 
221
 
Кастомизация идентифицирует состав сборки (какие исходные тексты в неё
222
 
закомпилячены) и обозначается коротким @b уникальным идентификатором,
223
 
образованным из имени "хозяина" экспериментальной установки и/или кликухи
224
 
самой установки.  Только не надо использовать неинформативные типа "MySetup",
225
 
серийные имена "RadioPAN" или (тем более!) "ДФС-24" -- гораздо лучше
226
 
"BursiaPan", например.
227
 
 
228
 
Дата автоматически заносится при @b полной сборке.
229
 
 
230
 
@subsection sec_project_cust  Customizations
231
 
 
232
 
В идеале все весьма различно выглядящие и функционирующие инсталяции
233
 
программы Research Assistant будут иметь один и тот же исполняемый файл,
234
 
а его конкретное поведение определяться конфигурационной составляющей
235
 
данных.  Такую кастомизацию будем называть "global".
236
 
 
237
 
В процессе разработки будут появляться кастомизированные версии, которые,
238
 
однако, должны стремиться слиться в экстазе со следующей версией "global".
239
 
 
240
 
@subsection project_RA  RA Project
241
 
 
242
 
Это то, что я сейчас пишу.  Сегодня она претендует на звание global.  Полное
243
 
название версии 0.1.global.
244
 
 
245
 
 
246
 
@subsection project_RA4BursiaPan  RA4BursiaPan Project
247
 
 
248
 
Если мне захочется поэкспериментировать, не ломая основную (глобальную и уже
249
 
вышедшую в тираж) версию, то я, возможно, создам такой проект.  Но буду писать
250
 
его так, чтобы в конечном итоге он влился в @ref project_RA.
251
 
 
252
 
Новые исходные тексты я помещу вместе с файлом RA4BursiaPan.pro в
253
 
папку RA4BursiaPan.  Там же весь мусор и результат компиляции.  Там же тестовая
254
 
база данных.
255
 
 
256
 
Если затею переделку парочки файлов из библиотеки @ref RANet, то, возможно,
257
 
скопирую их туда же (и подменю в проекте).  Но скорее всего, скопирую всю
258
 
библиотеку в RANet_BursiaPan.
259
 
 
260
 
@subsection project_Test_Com  Test_Com Project
261
 
 
262
 
Это то, что сейчас пишет Митя
263
 
 
264
 
@subsection project_RA4RIZ  RA4RIZ Project
265
 
 
266
 
Это то, что будет писать Митя для Русланы.  Когда он закончит, мы сольёмся (в
267
 
экстазе, само-собой) и отнесём клиенту версию 1.0.global.  После чего он может
268
 
развивать версию 1.1.RIZ и/или начать версию 1.1.DN.
269
 
 
270
 
@subsection sec_cust_numbering  Динамика версий
271
 
 
272
 
Minor-компонента версии изменяется при  каждой выдаче версии в эксплуатацию
273
 
на "боевых" данных (на реальных, имеющих ценность спектрах), даже если её
274
 
получают не все пользователи, а только самые смелые.
275
 
 
276
 
Major-компонента версии увеличивается, как это принято, при значительных
277
 
изменениях или просто, когда захочется создать повод для выпивки (именно
278
 
поэтому версия 0.1 превращается сразу в 1.0 при первой сдаче в эксплуатацию).
279
 
 
280
 
Ниже приведён возможный сценарий развития с разбором нюансов:
281
 
- @b 0.1.global + @b project_Test_Com ---> @b 0.1.global
282
 
  (промежуточное слияние, в эксплуатацию не идёт)
283
 
- @b 0.1.global + @b 0.1.BursiaPan + @b 0.1.RIZ ---> @b 0.1.global
284
 
  (промежуточное слияние; формат данных, возможно, изменился по инициативе одного
285
 
  из разработчиков, врезультате чего БД другого разработчика, порождённая
286
 
  предыдущей подверсией
287
 
  версии 0.1, уже не читается новой подверсией версии 0.1.global, но это была
288
 
  тестовая БД, её не жалко; обеспечивается читаемость только предыдущих версий,
289
 
  сданных в эксплуатацию)
290
 
- @b 0.1.global + @b 0.1.BursiaPan + @b 0.1.RIZ ---> @b 1.0.global
291
 
  (@b в @b эксплуатацию; порождаемые данные получают тэг "v.1.0.global")
292
 
- @b 1.0.global + @b 1.1.BursiaPan + @b 1.1.RIZ ---> @b 1.1.global
293
 
  (промежуточное слияние)
294
 
- @b 1.1.global + @b 1.1.BursiaPan + @b 1.1.RIZ ---> @b 1.1.global
295
 
  (промежуточное слияние)
296
 
- . . .
297
 
- @b 1.1.global + @b 1.1.BursiaPan + @b 1.1.RIZ --->
298
 
  @b 1.1.global + @b 1.2.BursiaPan + @b 1.1.RIZ
299
 
  (я рискнул инсталлировать версию 1.1.BursiaPan у себя на "боевой" БД;
300
 
  теперь мои данные получают тэг "v.1.1.BursiaPan", а версия в разработке
301
 
  переименована в 1.2.BursiaPan)
302
 
- @b 1.1.global + @b 1.2.BursiaPan + @b 1.1.RIZ ---> @b 1.2.global
303
 
  (промежуточное слияние)
304
 
- @b 1.2.global + @b 1.2.BursiaPan + @b 1.2.RIZ ---> @b 1.2.global
305
 
  (промежуточное слияние)
306
 
- @b 1.2.global + @b 1.2.BursiaPan + @b 1.2.RIZ --->
307
 
  @b 1.2.global + @b 1.3.BursiaPan + @b 1.2.RIZ
308
 
  (тестируя свою версию, я случайно записал ценный спектр; он имеет тэг
309
 
  "v.1.2.BursiaPan", но лежит в тестовой БД; я заархивировал тестовую БД,
310
 
  экзэшник, и все исходники, после чего переименовал версию в разработке;
311
 
  как я потом засуну этот спектр в боевую БД - это вопрос отдельный,
312
 
  но теоретическая возможность обеспечена, и уж, как минимум, я всегда смогу
313
 
  посмотреть его на экране и экспортировать в двухколоночный текст)
314
 
- @b 1.2.global + @b 1.3.BursiaPan + @b 1.2.RIZ ---> @b 1.3.global
315
 
  (промежуточное слияние)
316
 
- . . .
317
 
- @b 1.3.global + @b 1.3.BursiaPan + @b 1.3.RIZ ---> @b 1.4.global
318
 
  (@b в @b эксплуатацию)
319
 
- @b 1.4.global + @b 1.5.BursiaPan + @b 1.5.RIZ ---> @b 1.5.global
320
 
  (промежуточное слияние)
321
 
- . . .
322
 
 
323
 
 
324
 
@subsection project_RAdmin  RAdmin Project
325
 
 
326
 
Это внутреннего пользования упрощённый проект --
327
 
утилита для просмотра и редактирования сети.
328
 
 
329
 
 
330
 
@section sec_naming Naming conventions
331
 
 
332
 
@subsection sec_naming_classes Classes
333
 
 
334
 
sMyClass
335
 
 
336
 
xMyExceptionClass
337
 
 
338
 
nNetValueClass
339
 
 
340
 
@subsection sec_naming_types Other types
341
 
 
342
 
tName2CodeMap
343
 
 
344
 
Exception is made for few simple and very common typedefs in General.h:
345
 
- literal = константный указатель на константный массив символов
346
 
- real = long double
347
 
- ...
348
 
 
349
 
 
350
 
@subsection sec_naming_class_members Class members
351
 
 
352
 
Приставка @a The используется, когда
353
 
имеется приватный член @a TheMember, доступ к
354
 
которому прикрыт публичной функцией
355
 
@a Member() и, возможно, функцией @a SetMember(...).
356
 
 
357
 
 
358
 
@section datanet Datanet
359
 
 
360
 
 
361
 
 
362
 
*/