Статья опубликована в рамках: LIII Международной научно-практической конференции «Технические науки - от теории к практике» (Россия, г. Новосибирск, 23 декабря 2015 г.)
Наука: Технические науки
Секция: Информатика, вычислительная техника и управление
Скачать книгу(-и): Сборник статей конференции
- Условия публикаций
- Все статьи конференции
дипломов
Статья опубликована в рамках:
Выходные данные сборника:
РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ОТОБРАЖЕНИЯ ОПЕРАТИВНОЙ ИНФОРМАЦИИ О ВЫПОЛНЕНИИ ПРОЦЕССОВ В КОНСОЛЬНОМ ПРИЛОЖЕНИИ
Барило Илья Иванович
канд. техн. наук., доцент
Костромского государственного технологического университета,
РФ, г. Кострома
E -mail: mail@barilo.ru
INCREASING ABILITIES TO VIEW OPERATIONAL INFORMATION ABOUT EXECUTION OF THE PROCESS IN THE CONSOLE APPLICATION
Ilya Barilo
Ph.D, assistant professor
of Kostroma State Technological University,
Russia , Kostroma
АННОТАЦИЯ
В статье рассмотрены проблемы вывода в лог оперативной информации, состоящей из изменяемых на экране консольного приложения значений; выделены отличия вывода информации при работе консольного приложения в составе пакетного файла и в качестве отдельного приложения, которые позволили предложить вывод промежуточных изменяемых значений в заголовок окна консольного приложения; предложена реализация вывода общего прогресса выполнения приложения; проведено тестирование предложенного решения вывода оперативной информации.
ABSTRACT
The article discusses the problem outputting in a log information consisting of a values variables using for outputting on the screen console application; marked differences output information when working in a console application as part of a batch file, and as a separate application that allows to offer the output of intermediate variable values to window caption of the console application; proposed implementation of the output overall progress runtime; was tested the proposed solutions of output operational information.
Ключевые слова: консоль; консольное приложение; вывод информации; прогресс; лог; файл.
Keywords: console; console application; output information; progress; log; file.
В процессе работы консольного приложения [1] часто требуется выводить промежуточные данные, информирующие пользователя о процессе выполнения приложения.
Вывод динамически меняющихся чисел процентов и другой информации требует стирания управляющими символами BACKSPACE [3, с. 3], ранее выведенных чисел процентов для замены их на новые.
Если производится вывод только на экран, то этот способ вполне подходит для реализации отображения меняющихся значений.
Консольные приложения выводят информацию в потоки, которые могут выводится в консоль или в файлы.
Стандартными потоками вывода информации из консольных приложений, согласно справочной информации в MSDN [4], являются:
1. stdout – вывод;
2. stderr – вывод ошибок.
При запуске консольных приложений информацию из потоков можно направить в файлы [6].
Если вывести информацию в файл, то в него будут сохранены все выведенные на экран символы, включая управляющие символы BACKSPACE.
На рис. 1 представлены фрагменты файла, в который был выведен процесс обновления процентов и вариант обновления представления промежуточной информации этапа верификации.
Рисунок 1. Фрагменты логов вывода изменяемой в окне приложения информации
На рис. 1 видно, что сначала на экране выделяется место для вывод меняющихся данных, а затем, перед выводом очередного значения, стирается место занятое ранее выведенным значением.
В первом случае выводились проценты и символы, удаляющие их, во втором случае выводилось больше информации и символов удаления потребовалось больше.
На рисунке представлены фрагменты лога приложения, отображаемые в браузере Mozilla Firefox 42.0. Если использовать другие программы для просмотра лога, то управляющие символы могут быть обозначены иначе или даже скрыты.
Приведенный пример показывает, что использование меняющейся информации при выводе в лог значительно снижает его информативность за счет появления в нем множества лишних значений и управляющих символов.
Вывод меняющихся промежуточных данных необходим только при контроле процесса пользователем, поэтому при выводе в лог результатов приложения или работы его на сервере отображение процесса выполнения не так важно, и будет достаточно вывода промежуточных значений, указывающих на завершение этапов программы.
При работе консольного приложения в составе пакетного файла [5], и как отдельного приложения, есть отличие в возможностях вывода информации, что хорошо видно на рис. 2.
Рисунок 2. Схема вывода информации консольного приложения в зависимости от работы ее в составе пакетного файла и работы как отдельного приложения
В ряде консольных приложений используется реализация отдельного вывода информации на экран и в лог, за счет возможности вывода информации в несколько потоков.
Этот подход не удобен тем, что не во всех случаях возможен вывод в лог ошибок stderr, особенно когда приложение используется вместе с другими приложениями, и необходимо отслеживать общий лог их выполнения.
При запуске приложения с параметрами, как отдельного приложения, вне пакетного файла появляется возможность вывода названия приложения и другой информации в заголовок программы.
Решение использования заголовка программы для выводов промежуточной информации позволит выводить общий прогресс исполнения приложения параллельно с отображением процессов этапов в консоли. Пример такого решения представлен на рис. 3.
Рисунок 3. Информация в заголовке программы
Вывод информации на экран может занимать значительное время, поэтому необходимо провести тестирование предлагаемого решения.
Разработана тестовая программа, реализующая вывод промежуточных значений в заголовок программы. Фрагмент кода тестовой программы, написанной на языке программирования Microsoft VisualBasic.NET, выводящий промежуточные значения в заголовок программы, представлен ниже:
For iter = 1 To 100000
Next
Для тестирования программы использовался компьютер со следующими важными для тестирования характеристиками:
1. Процессор: Intel i7 860.
2. Видеокарта: Sapphire Radeon HD 5770.
3. Операционная система: Windows 7 Home Premium.
4. Настройки оформления рабочего стола: Aero [2].
Время работы представленного фрагмента программы, выводящего информацию в заголовок окна 100000 раз (от 0,000 % до 100,000 %), составило 2,4 с.
Как видно из времени работы фрагмента тестовой программы, вывод информации в заголовок программы при высоком качестве оформления рабочего стола производится на высокой скорости и практически не замедляет программу даже при большом количестве промежуточных значений.
Таким образом, предлагаемое решение вывода оперативной информации в заголовок программы позволяет оперативно информировать пользователя о процессе выполнения консольной программы без снижения информативности лога и об общем прогрессе выполнения программы.
Список литературы:
1. Консольные приложения Win32 в Visual C++ // // Обучение разработкам с Microsoft Developer Network — MSDN [Электронный ресурс] – Режим доступа. – URL: https://msdn.microsoft.com/ru-ru/library/hh875011.aspx (дата обращения: 06.12.2015).
2. Что такое оформление рабочего стола Aero? // Windows и Windows 10 — Microsoft [Электронный ресурс] – Режим доступа. – URL: http://windows.microsoft.com/ru-ru/windows7/what-is-the-aero-desktop-experience (дата обращения: 12.12.2015).
3. C0 Controls and Basic Latin // Unicode Consortium [Электронный ресурс] – Режим доступа. – URL: http://unicode.org/charts/PDF/U0000.pdf (дата обращения: 12.12.2015).
4. stdin, stdout, stderr // Обучение разработкам с Microsoft Developer Network — MSDN [Электронный ресурс] – Режим доступа. – URL: https://msdn.microsoft.com/ru-ru/library/3x292kth.aspx (дата обращения: 12.12.2015).
5. Using batch files // Microsoft – официальная страница [Электронный ресурс] – Режим доступа. – URL: https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true (дата обращения: 12.12.2015)
6. Using command redirection operators // Microsoft – официальная страница [Электронный ресурс] – Режим доступа. – URL: https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true (дата обращения: 12.12.2015).
дипломов
Оставить комментарий