Как лучше делать описание к программе? Описание программы

Общие сведения.

Программа называется jane и сохранена в файле jane.dpr. Программа использует вспомогательные модули main, new, dmData, about, сохранённые соответственно в файлах main.pas, new.pas, about.pas, dmData.pas. Программа написана на языке программирования Delphi. Программа использует данные из таблиц базы данных otdel.db, sotrudnik.db, family.db, obrazovanie.db

Функциональное назначение.

Реализация графа диалога.

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

Практически программа, написанная с помощью Delphi доступна через графический пользовательский интерфейс. Графический интерфейс, осуществляемый прикладной программой это своеобразный диалог, который происходит между компьютером и его пользователем. Другими словами интерфейс это та часть программы, которая для выполнения некоторых функций переводит действия пользователя в один или более запросов и обеспечивает обратную связь с пользователем в соответствии с последовательностью его действий.

Пользователь имеет возможность выбора функций системы, применяя кнопочное и пиктографическое меню. Пользователь видит перед собой содержимое базы данных в виде экранного документа. Взаимодействие с пользователем осуществляется посредством экранных форм. Реализация графа диалога показана на рисунке 17.

Рисунок 17. Дерево экранных форм

Описание логической структуры.

Программа управляется событийно. При нажатии на какую-либо кнопку в программу поступает сообщение, при этом вызывается соответствующая процедура-обработчик, которая обрабатывает данное событие. Результаты обработки можно видеть на экране монитора. Например: при нажатии на кнопку “Работа” в форме “Дипломный проект” вызывается процедура, содержащаяся в модуле New, которая скрывает форму “Дипломный проект”, выводит на экран монитора форму “Кадровый учет”, при этом управление передается модулю Main.

Для выполнения программы необходимо загрузить на персональном компьютере программную оболочку Delphi, откомпилировать исходный текст программы, содержащийся в файле jane.dpr. Вызвать exe файл и далее работать с ним. Перед началом работы необходимо пройти процедуру авторизации (рисунок 18).

Рисунок 18. Форма Ввод пароля

Входные и выходные данные.

Входные данные:

название отдела,

ФИО начальника,

ФИО сотрудников, должность,

дата приема на работу,

место последней работы,

стаж на дату приема,

признак наличия образования,

признак наличия семьи,

количество детей,

семейное положение,

даты рождения,

тип образования,

форма обучения,

учебное заведение,

дата окончания,

специальность.

Выходные данные: все результаты действий пользователя в работе с базами данных отображаются на экране монитора; эти результаты, выведенные в виде базы данных на экран, являются выходными данными для программы. Также результатом работы с базой данный «Кадровый учет» может быть формирование приказов и вывод их на печать, что значительно облегчает работу пользователя и избавляет от необходимости составлять в ручную в каком-либо текстовом редакторе такие документы как приказ об увольнении или принятии на работу сотрудников и их личных карточек.

Инструкция

Чтобы описать программу , начните с общего вступления. Опишите основную проблему, с которой сталкивается пользователь. Естественно, это должна быть та самая проблема, которую и решает описываемая программа. Кстати это способ сразу же очертить целевую аудиторию пользователей. Те, кому она будет полезна и необходима, ее скачают или купят. Другие же пользователи сэкономят время и не станут далее . Также во вступлении опишите основные возможности программы. Для этого достаточно 1-2 предложений.

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

Невозможно описать программу , не рассказав подробно о ее основных функциях. Это можно сделать в виде списка или перечня. Однако важно в данном пункте соблюдать конкретику. К примеру, фраза «эффективная работа с проектами» не несет в себе никакой смысловой нагрузки. Точнее, смысловая нагрузка, конечно, есть, но она относительна и не сообщает читателю никаких фактов.

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

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

Без сомнения можно сказать, что целевая аудитория - это ключевая фигура любого бизнеса, те, ради кого все дело, собственно и организованно. Говоря проще - это покупатели ваших товаров или услуг.

Инструкция

Залогом успешного бизнеса теперь являются полные и достоверные знания о вашей целевой аудитории. Узнайте о своих клиентах как можно больше, по крайней мере, ответьте на определенный минимум вопросов. Во-первых, выясните пол вашей целевой аудитории.

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

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

Консервативность старшего поколения подтолкнет их купить товар, которым они будут пользоваться длительное (до 5-6 лет) время. Молодежь же уже привыкла к стремительному техническому прогрессу и любит пробовать все новое. Как правило, время использование нового товара достаточно ограничено и составляет от полугода до двух лет, в зависимости от сложности и технологичности товара.

Проведите опросы и обратите внимание на такие параметры, как доход (низкий, средний, высокий и другие вариации), уровень образования, состав семьи, предпочитаемые средства массовой информации (пресса, радио, телевидение, интернет), хобби и увлечения, время, проводимое на работе и в пути.

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

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

Инструкция

Полезный совет

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

Требования к написанию образовательных программ в школах разработаны и утверждены 8 лет назад. С тех пор каждый педагог в курсе, как необходимо писать план деятельности на год. Но, несмотря на это, у учителей постоянно появляются вопросы, что именно должно быть отражено в данной образовательной программе.

Инструкция

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

В содержании образовательной программы не забывайте описать, какие условия созданы для развития личности ребенка, как учащемуся можно повысить мотивацию к познанию и творчеству. Также педагоги в своем должны учитывать и описывать, как они будут обеспечивать эмоциональное благополучие ребенка, а также как именно они планируют объяснить и научить ребенка общечеловеческим ценностям. По требованию Министерства России учителя обязаны прописать в программе, как они предполагают создавать условия для того, чтобы ребенок мог самоопределиться и как личность, и как профессионал уже в .

Также не забудьте упомянуть и о физическом развитии учеников, а именно: какие занятия по физической подготовке вы будете с ними проводить, в каком порядке и на каких можно проводить встречи с родителями, чтобы обсудить с ними совместную тактику воспитания ребенка.

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

Exe-файл в операционной системе Windows - это исполняемый файл программ. Он представляет собой специальным образом обработанный код, написанный программистом, скомпилированный и преобразованный в исполняемый тип. Поэтому взять блокнот и написать файл exe, как это можно сделать с bat- или inf-файлами, нельзя.

Вам понадобится

  • - знание программирования.

Инструкция

Определитесь с задачами, которые должна выполнять ваша программа. Если это несложные задачи (к примеру, ), то сразу приступайте к написанию bat-файла. Боле сложные действия необходимо описывать с помощью языка программирования. Какой язык выбрать - зависит от спецификации поставленных задач. Вы должны обладать стандартными знаниями о языке программирования, чтобы самостоятельно написать небольшую программу для выполнения каких-либо определенных задач.

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

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

Данный документ относится к типу программно-эксплуатационной. Применяется к программе, комплексу, ПАК, программному компоненту или системе.
Целевая аудитория: лица, которые принимают решение о покупке и вводе в эксплуатацию программы. Документ содержит информацию о функциональных возможностях программы и сфере её применения.

ГОСТы и стандарты

Структуру и оформление документа определяется в .
Информационная часть (аннотации и содержания) в соответствии с .

В каких случаях необходим

Документ необходим для информирования потенциальных пользователей и покупателей о назначении программы и способах применения. Больше подходит для менеджеров (специалистов, системных администраторов), которые самостоятельно принимают решение о приобретении программы и вводе её в эксплуатацию.

Всю необходимую информацию они смогут получить из этого документа: описание программы и ее применение.

В описании программы и описании применения указываются:

Задачи, которые решает программа;
Затрачиваемые ресурсы для работы;
Вводная информация;
Выходные данные.

Акцент делается на описательной части программы, её функциях и назначении. В меньшей степени на описании применения. Делается описание именно о возможностях программы и задач, которая она решает, а не её внутреннего устройства. При определённых особенностях программы допускается объединять разделы или вводить новые (дополнительные).

Структура описания программы (ГОСТ 19.402-78):

1. Общие сведения.
2. Функциональное назначение программы.
3. Описание логической структуры.
4. Технические средства, которые используются.
5. Вызов и загрузка.
6. Входные данные.
7. Выходные данные.

Структура описания применения (ГОСТ 19.502-78):

1. Назначение программы.
2. Условия применения.
3. Описательная часть задачи.
4. Входные и выходные данные.
5. приложения (таблицы, иллюстрации и т.д.).

Вы можете заказать разработку документа или полного комплекта документации на программное обеспечение.

3. ОПИСАНИЕ СТРУКТУРЫ ПРОГРАММЫ

Описание переменных

В разделе описаний переменных описаны переменные, назначение которых приведено в таблице 3.1.


Таблица 3.1– Описание переменных программы

Наименование Тип Назначение
FO,FS TextFile Переменная текстового файла исходного и результирующего
tmpstr,str,strslovo String Строковые переменные для чтения из файла
i,j integer Переменные счетчики для циклов
count integer Переменная хранит количество исправленных символов
answ Word Используется для определения ответа пользователя на вопрос об исправлении символа
UpCh set of char Множество заглавных символов
ZnCh set of char Множество символов разделителей слов
OFName String Строка, в которой хранится путь к исходному файлу
SFName String Строка, в которой хранится путь к результирующему файлу
Описание вспомогательной процедуры

В программе приведено описание одной вспомогательной процедуры.

Процедура FormCreate вывода исходных значений в компоненты формы для корректного отображения формы в начале работы программы.

Процедура Button1Click для отрытия исходного файла и сохранения пути к нему.

Процедура Button2Click для отрытия результирующего файла и сохранения пути к нему.

Алгоритм основной программы

Алгоритм выполнения основного тела программы приведен на рисунке А.1 в приложении А. Так в процедуре в первую очередь осуществляется привязка файла к файловой переменной и открытие текстового файла для чтения текстовой информации.

Затем производится чтение информации из файла построчно.

Затем в каждой строке выделяются слова.

Затем осуществляется поиск в выделенных словах заглавных символов.

Затем происходит запись в результирующий текстовый файл изменений.

В ходе выполнения работы использовались следующие операции работы с текстовыми файлами:

AssignFile (<Имя файловой переменной>,<Имя файла>);

Имя файла задается либо строковой константой, либо через переменную типа Sting. Имя файла должно соответствовать правилам работающей в данный момент операционной системы. Если строка имени пустая, то связь файловой переменной осуществляется со стандартным устройством ввода-вывода.

Reset (<Имя файловой переменной>);

Открывается файл для чтения из него информации, ему присваивается имя, заданное процедурой Assign.

После работы с файлом он, как правило, должен быть закрыт процедурой CloseFile (<Имя файловой переменной>). Вывод информации производит оператор WRITELN(f: TextFile;S: String). После его выполнения строка S заносится в конец файла, связанного с переменной f.

4. ОПИСАНИЕ ВХОДНЫХ ДАННЫХ

Исходными данными для выполнения является файл, который содержит заглавные символы.

5. ОПИСАНИЕ ВЫХОДНЫХ ДАННЫХ

Выходными данными являются:

Сообщение о завершении проверки файла на наличие в нем заглавных символов;

Сообщение о количестве исправленных символов;

Заполненный результирующий текстовый файл.

6. ИНСТРУКЦИЯ ОПЕРАТОРУ

Разработанная программа представляет собой исполняемый файл Luchshev.exe размером 405 Кбайт. В программе реализован алгоритм проверки текстового файла на наличие в нем заглавных символов.

После запуска программы появляется окно, изображенное на рисунке 4.1.

Рисунок 4.1 – Главное окно программы

После этого пользователь должен задать путь к файлу. На рисунке 4.2 показан пример диалогового окна для открытия файла.


Рисунок 4.2 – Пример отскрытия исходного файла

Пример сообщения о нахождении заглавного символа приведен на рисунке 4.3.

Рисунок 4.3– Сообщение о нахождении заглавного символа

Пример окна с результатом проверки текстового файла приведен на рисунке 4.4.


Рисунок 4.4- Результирующее окно.

Результат проверки записывается в выбранный результирующий файл находящийся в выбранной директории.

Функционирование программы полностью соответствует заданию.


Данная курсовая работа была выполнена в полном соответствии поставленному заданию и отлажена в среде Delphi 7.0. В ходе выполнения курсовой работы была разработана программа для проверки текстового файла.

В ходе выполнения курсового проекта были проведен - анализ технического задания и постановка задачи проектирования.

Были выделены функции, которыми должна обладать разрабатываемая программа.

Был разработан алгоритм программы, предназначенной для выполнения сформированных функций.

Согласно разработанному алгоритму была составлена и отлажена программа алгоритмическом языке программирования Delphi. В ходе разработки программы проводилось ее тестирование и отладка на тестовых наборах. Для написанной программы разработана инструкция оператора с указанием порядка выполняемых действий.

Результаты работы оформлены в виде пояснительной записки.

В ходе разработки программы были закреплены навыки работы:

Командами ввода-вывода как на экран, так и в текстовые файлы,

Использования процедур,

Команды обработки массивов,

Команды для реализации циклов с заданным числом повторений;

Команды проверки условий и реализации ветвлений.

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


Перечень ссылок

1. Зуев Е.А. Программирование на языке Delphi 6.0,7.0. – М.: Радио и связь, Веста, 1993.

2. Фаронов В.В. Delphi 7.0. Начальный курс. - М.: Нолидж, 2000.


ПРИЛОЖЕНИЕ А

Алгоритм программы

Рисунок А.1 – Алгоритм программы


Рисунок А.2 – Алгоритм основной процедуры программы


ПРИЛОЖЕНИЕ Б

Листинг программы

4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

5. Dialogs, StdCtrls;

7. TForm1 = class(TForm)

8. Button1: TButton;

9. Button2: TButton;

10. OpenDialog1: TOpenDialog;

11. SaveDialog1: TSaveDialog;

12. Button3: TButton;

13. Label1: TLabel;

14. Label2: TLabel;

15. Label3: TLabel;

16. Label4: TLabel;

17. Button4: TButton;

18. procedure Button1Click(Sender: TObject);

19. procedure Button2Click(Sender: TObject);

20. procedure FormCreate(Sender: TObject);

21. procedure Button3Click(Sender: TObject);

22. procedure Button4Click(Sender: TObject);

24. { Private declarations }

26. { Public declarations }

29. Form1: TForm1;

30. OFName,SFName:String;

31. implementation

33. procedure TForm1.Button1Click(Sender: TObject);

35. if OpenDialog1.Execute then

36. OFName:=OpenDialog1.FileName;

37. if OFName<>"" then begin

38. Button1.Enabled:=False;

39. Button2.Visible:=True;

40. Label1.Caption:="Путь к файлу для проверки: "+OFName;

41. Label2.Visible:=True;

45. procedure TForm1.Button2Click(Sender: TObject);

50. if SaveDialog1.Execute then

51. SFName:=SaveDialog1.FileName;

52. if Pos(".txt",SFName)=0 then SFName:=SFName+".txt";

53. if SFName=OFName then

54. ShowMessage("Выберите другой файл для сохранения результата")

57. if (SFName<>"") and (b) then begin

58. Button2.Enabled:=False;

59. Label2.Caption:="Путь к результирующему файлу: "+SFName;

60. Button3.Visible:=True;

61. Label3.Visible:=True;

62. Label3.Caption:="Для начала проверки нажмите на кнопку "Проверить"";

65. procedure TForm1.FormCreate(Sender: TObject);

67. Button2.Visible:=False;

68. Label2.Visible:=False;

69. Button3.Visible:=False;

70. Label3.Visible:=False;

71. Button4.Visible:=False;

72. Label4.Visible:=False;

73. Label1.Caption:="Нажмите на кнопку "Открыть" и выберите файл для проверки";

75. procedure TForm1.Button3Click(Sender: TObject);

77. FO,FS:TextFile;

78. i,j,count:integer;

79. str,strslovo,tmpstr:String;

80. ZnCh,UpCh:set of Char;

84. ZnCh:=[".",",","!","?"];

85. UpCh:=["A".."Z","А".."Я"];

86. AssignFile(FO,OFName);

87. AssignFile(FS,SFName);

91. if IOResult<>0 then begin

92. ShowMessage("Произошли проблемы с открытием файла. Программа будет завершена");

96. Rewrite(FS);

97. while not Eof(FO) do begin

98. Readln(FO,str);

99. strslovo:="";

100. for i:=1 to Length(str) do begin

101. if (str[i] in ZnCh) or (str[i]=" ") then begin

102. for j:=1 to Length(strslovo) do begin

a. if strslovo[j] in UpCh then begin

b. answ:=MessageDlg("В слове ""+strslovo+"" найдена заглавная буква ""+strslovo[j]+"". Заменить ее на малую?",mtInformation,,0);

c. if answ=mrYes then begin

i. tmpstr:=strslovo[j];

ii. tmpstr:=AnsiLowerCase(tmpstr);

iii. Delete(strslovo,j,1);

iv. Insert(tmpstr,strslovo,j);

104. Write(FS,strslovo+str[i]);

105. strslovo:="";

108. strslovo:=strslovo+str[i];

110. Writeln(FS,"");

112. CloseFile(FO);

113. CloseFile(FS);

114. Label3.Caption:="Проверка файла завершена. Исправлено "+IntToStr(count)+" заглавных букв.";

115. Button3.Enabled:=False;

116. Button4.Visible:=True;

117. Label4.Visible:=True;

120. procedure TForm1.Button4Click(Sender: TObject);

122. OFName:="";

123. SFName:="";

124. Button1.Enabled:=True;

125. Button2.Visible:=False;

126. Button2.Enabled:=True;

127. Button3.Visible:=False;

128. Button3.Enabled:=True;

129. Button4.Visible:=False;

130. Label2.Visible:=False;

131. Label3.Visible:=False;

132. Label4.Visible:=False;

133. Label1.Caption:="Нажмите на кнопку "Открыть" и выберите файл для проверки";


ПРИЛОЖЕНИЕ В

Результаты решения программы

Большинство сайтов, особенно на бесплатном хостинге , не хранит «крупную» информацию вроде фильмов, музыки и игр на своем дисковом пространстве. На сайте находятся только ссылки с описаниями ресурсов, за скачивание которых владелец сайта часто получает награду в виде оплаты.

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

К примеру, очень важны правильные описания фильмов, которые вот-вот должны выйти. Некоторым веб-мастерам кажется, что у них налажен подход к такой проблеме: имеется видеопроигрыватель на сайте , ссылка на известный тизер, описание фильма и его технические данные.

Но, если разобраться, то окажется, что тизер не содержит русского перевода, описание переведено Google-переводчиком из базы IMDB, а технические данные вообще скопированы с чужих сайтов. Да и много ли интереса проявит зритель, глядя на описание в 1-2 строчки? Тут требуется более основательная работа.

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

Сказать, что программа имеет версию «1.5.6» - не сказать ничего, потому что пользователь, заинтересовавшись, обязательно пройдет в Википедию или официальный сайт, чтобы найти дату выпуска этой самой версии. Если она окажется свежее, то он скачает ее именно с официального ресурса или торрента.

Вот готово и правило: описывая программу, всегда пишите дату обновления. Вообще, описание нужно составлять таким образом, чтобы клиенту не была нужна дополнительная информация , а его обычно интересует следующее:

  • Как точно называется программа .
  • Кто ее автор.
  • Была ли эта программа раньше известна под другим названием.
  • Платная она или бесплатная.
  • Точные ограничения бесплатной версии.
  • Отличие данной версии от предыдущей.
  • Реальные отзывы и проблемы, связанные с программой.
  • Скриншоты программы.
  • Системные требования (минимальные, обычные и рекомендуемые).
  • Особенности установки.
  • Объем дистрибутива, размер установленного приложения.
  • Наличие русификации (встроенная, внешняя). Русифицирована ли справочная система, имеется ли русскоязычный форум поддержки, можно ли писать в службу поддержки на русском языке. К примеру, тот же Avast уже воспринимается как российская программа, но общение с разработчиками строится только на базе английского языка.
  • Какие дополнительные аддоны и дополнения могут потребоваться пользователю при работе с программой.
  • Существуют ли конфликты с операционной системой или иным установленным программным обеспечением (брэндмауэры, утилиты оптимизации и безопасности, антивирусы и т.д.).
  • Нуждается ли программа при установке и работе в доступе к Интернету. Тоже важный пункт, так как многие программы работают через систему малопонятных загрузчиков, навязывают менеджеры загрузки и т.д.

Чем больше вариантов описания вы предусмотрите, тем больше внимания привлечете к своему ресурсу, а это как раз то, что требовалось.

Предыдущие публикации:

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то