Интерфейс (стр. 1 )

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3

ИНТЕРФЕЙС

Из книги Румянцева Дмитрия, Монастырского Леонида «Путь программиста: Опыт созидания личности программиста». – М.: «Издательский Дом ИНФРА-М», 2000.

Интерфейс – лицо программы

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

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

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

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




Немного истории

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

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

Был найден замечательный выход из сложившейся ситуации. Суть решения заключалась в следующем: если пользователь не может запомнить абстрактные команды, то пусть он запомнит конкретные клавиши. В клавиатуре вычислительных машин появилось дополнение в виде десяти клавиш с литерой F и номерами от 1 до 10 (функциональные клавиши). Даже если оператор не знал назначения всех клавиш, то ему достаточно было знать хотя бы одну, самую первую клавишу – F1. Теперь в случае какого-либо затруднения оператор нажимал на клавишу F1 и получал некую помощь (help) в виде списка клавиш с кратким описанием действия.




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

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

В начале 60-х годов Джордж Эванс и Айвен Сазерленд провели исследование в области применения машинной графики. Сазерленд в своей диссертации доказывал, что если вместо текста компьютер будет выводить на экран изображения, это станет шагом вперед в плане удобства пользования. С этого момента на авансцене компьютерной истории появился так называемый графический пользовательский интерфейс.

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

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




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

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

Элементы интерфейса, подвластные человеку

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

После того, как появились программы, позволяющие редактировать произвольные участки текста, то есть программы, изменяющие точку ввода, отмечаемую курсором, на клавиатуре появились так называемые клавиши управления курсором. С помощью этих клавиш (стрелок), которые и по сию пору остаются одними из главных элементов интерфейса, можно произвольно перемещать курсор по экрану. Сразу возникла проблема: раньше курсор всегда находился в нижней строке экрана и был скорее шлюзом, из которого последовательно появлялись символы, выстраиваясь в строку текста; прямоугольный курсор, перемещаясь по всему экрану, терялся среди массы других символов. Чтобы решить эту проблему, был разработан механизм мигания курсора. Мигающий курсор, в отличие от своего предшественника, сразу заметен на экране.

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




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

Клавиши управления курсором. Существует четыре основных и четыре дополнительных клавиши управления курсором, расположенные на клавиатуре. К основным относятся клавиши с изображением стрелок. При работе в текстовых редакторах этих клавиш оказывается недостаточно, если требуется быстро переместиться в самое начало или конец текста, осуществить необходимое перелистывание. Для этих целей существуют клавиши Home, End, PgUp и PgDn. Но они, как и клавиши управления курсором, не имеют каких-то связанных с ними процедур, и на программисте лежит ответственность за те действия, которые будет выполнять программа в случае выбора этих клавиш пользователем. Надо помнить, что пользователь, скорее всего, будет ждать от них стандартных действий. Если при нажатии на клавишу «стрелка вверх» произойдет запись на диск, пользователь, который работал и с другими программами, будет ошеломлен. Если в вашу задачу не входит ввергать его в состояние шока, старайтесь в своих программах стандартным клавишам назначать стандартные действия.

Нет ни одного стандарта, который закреплял бы за теми или иными клавишами те или иные действия, однако, есть такие клавиши, которые во многих программах используются только для одного стандартного действия. Будет ошибкой назначать в вашей программе этим клавишам другие действия. Например, почти любая программа использует клавишу F1 для вывода подсказки, клавишу Esc – для отказа или возврата к предыдущему действию, а Enter – для подтверждения ввода. Эти клавиши – стандартные de facto, и вы должны использовать их только для выполнения этих действий. Лучше совсем не использовать в своей программе стандартные клавиши, чем делать это не так, как в других программах.




Рабочая мышь. С появлением манипулятора «мышь» пользователь получил дополнительную возможность показывать программе, что он хочет сделать, а у программистов появилась дополнительная головная боль. Операционная система MS-DOS, которая царила до Windows, не поддерживала мышь явным образом. Однако после того как графический интерфейс стал стандартом фактически, игнорировать мышь было уже невозможно. Сегодня любая графическая оболочка поддерживает мышь, т. е. принимает от нее команды.

Кое-что из того, что делает мышь в современном интерфейсе, повторять с помощью клавиатуры не с руки. Возможно, название манипулятора – «мышь» – натолкнуло авторов интерфейса на мысль о том, что можно попытаться имитировать действия реальной мыши, хватающей все, что плохо лежит, и утаскивающей к себе в нору (drag and drop).

Новую технологию так и назвали: drag and drop. Ее суть заключается в следующем: пользователь с помощью мыши «захватывает» некий графический объект на экране и перетаскивает его в другое место. Для «захвата» достаточно нажать на левую кнопку мыши, когда ее указатель стоит на нужном изображении, и не отпускать эту кнопку пока идет «перетаскивание».

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




Кстати, о кнопках мыши (mouse buttons). Существуют мыши двухкнопочные и трехкнопочные. Программировать мышь следует таким образом, чтобы при однократном нажатии левой кнопки указанный элемент выделялся; двойной щелчок левой кнопки должен приводить к такому же эффекту, что и нажатие кнопки Enter. Правая кнопка мыши обычно программируется для некоторых дополнительных действий, связанных с манипуляциями над указанным объектом. Средняя кнопка практически не используется. Программисты обычно не задействуют ее потому, что нельзя быть уверенным, что у пользователя окажется трехкнопочная мышь.

Элементы интерфейса со стороны машины

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

Ввод данных. Как только появились программы, обрабатывающие данные в диалоговом режиме, перед программистами встала задача, как объяснить пользователю, что, собственно, от него ожидает программа. Первые программы, обладавшие интерактивным интерфейсом (термин, подразумевающий, что осуществляется человеко-машинный диалог), были по-военному лаконичны. Пользователю в приказном порядке давались директивы: «введите число от 100 до 50000», «нажмите клавишу 2» и т. п. Но даже это на первых порах нравилось. Изумляла способность машины выявлять ошибку или выявлять обман. Так, введя на запрос: «число от 100 до 50000» число 70, пользователь читал на экране: «Ошибка!». Чудо!




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

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

Алгоритм создания меню очень прост: каждый раз пользователю предлагается сделать выбор из конечного списка внутри некоторого цикла. Все нажатия «не относящихся к делу» клавиш игнорируются. При выборе одной из альтернатив передача управления для ее обработки происходит при помощи case-конструкции. Затем, после обработки этого пункта, управление возвращается снова в цикл. При этом всегда должен быть предусмотрен явный способ выхода из цикла обработки меню, например, путем нажатия клавиши Esc.

Поддержка пользователя. В процессе работы пользователь испытывает неуверенность в правильности своих действий. Иногда он может пасть духом и испытывать потребность в поддержке. А что может лучше поддержать пользователя, чем бодрящее сообщение: «Вы выполнили запуск процедуры форматирования системного диска! Все ваши данные будут потеряны!». Вы не задумывались над смыслом фразы: «Был сражен словами наповал»? Это как раз тот самый случай. Если ваша программа выдаст такое сообщение главному бухгалтеру большой организации в конце года, эффект будет потрясающим, не исключен инфаркт.

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




·  информационные;

·  вопросительные;

·  предостерегающие;

·  запрещающие.

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

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

Вопросительное сообщение всегда подразумевает ответ пользователя путем выбора кнопки «Да» или «Нет» (Ok или Cancel), либо нажатием клавиш Enter или Esc, либо еще каким-то образом, но пользователь должен дать системе ясное подтверждение или отказ на выполнение действия.

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

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




Кроме разного рода сообщений теоретически каждая программа должна иметь Help, вызываемый клавишей F1 или через пункт главного меню, который называется «Подсказка» или «Помощь».

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

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

Правильна такая организация интерфейса, когда программа мгновенно реагирует на любое действие. Если по каким-то причинам это невозможно, например, для обработки длительного запроса следует открыть множество файлов, а это требует длительного времени, все равно следует сразу же выдать на экран сообщение с просьбой подождать: «Идет обработка, ждите...». Правда, через некоторое время пользователя перестанет устраивать и это сообщение. Действительно, если в течение нескольких минут программа ничего не делает (по крайней мере, видимых результатов не видно), то пользователь решит, что она «зависла».




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

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

Создать хороший интерфейс – это почти половина дела в создании современного программного продукта. Запомните, если с вашей очень хорошей (с точки зрения алгоритма) программой пользователь будет работать постоянно хватаясь за валерьянку, кляня «дурацкую технику», то, в конце концов, он будет вынужден от вашей программы отказаться. Хороший интерфейс с лихвой окупит некоторые огрехи программирования, о чем свидетельствует шумный успех Microsoft Windows, а плохой – угробит труд коллектива замечательных профессионалов, которые не позаботились о создании качественного пользовательского интерфейса.

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

ОРГАНИЗАЦИЯ ДИАЛОГА С ПРОГРАММОЙ

Для работы с текстовым экраном в Pascal есть стандартный модуль Crt. Для того чтобы пользоваться его ресурсами, модуль нужно подключить к программе. Для этого сразу после заголовка программы необходимо написать предложение uses crt.




Например,

Program primer;

Uses crt;

Сразу после этого в программе становятся доступны все процедуры и функции, константы и переменные, описанные в этом модуле.

Таблица 1. Константы режимов работы

Имя константы

Номер режима

Режим

BW40

0

Черно-белый, 40 символов, 25 строк

CO40

1

Цветной, 40 символов, 25 строк

BW80

2

Черно-белый, 80 символов, 25 строк

CO80

3

Цветной, 80 символов, 25 строк

Mono

7

Монохромный, 80´25, для монохромных дисплеев

Таблица 2. Константы цветов

Имя константы

Номер цвета

Цвет

Black

0

Черный

Blue

1

Темно-синий

Green

2

Темно-зеленый

Cyan

3

Бирюзовый

Red

4

Красный

Magenta

5

Фиолетовый

Brown

6

Коричневый

LightGray

7

Светло-серый

DarkGray

8

Темно-серый

LightBlue

9

Синий

LightGreen

10

Светло-зеленый

LightCyan

11

Светло-бирюзовый

LightRed

12

Розовый

LightMagenta

13

Малиновый

Yellow

14

Желтый

White

15

Белый

Blink

128

Мерцание символа

Таблица 3. Процедуры и функции

Интерфейс

Назначение

Установка режимов и окон

Procedure AssignCrt (file: text);

Связывает окно дисплея с текстовым файлом, что позволяет ускорить вывод на экран

Procedure ClrScr;

Очищает экран или окно (если оно определено) и помещает курсор в левый верхний угол, после очистки экрана или окна происходит заполнение цветом фона.

Procedure TextMode (mode: integer);

Mode – номер текстового режима или соответствующая константа

Установка текстового режима. Каждая новая установка режима отменяет все предыдущие. Код режима запоминается в глобальной переменной LastMode типа word модуля CRT и может использоваться для восстановления начального состояния экрана.

Procedure Window (x1,y1,x2,y2: byte);

(x1,y1) и (x2,y2) – координаты верхнего левого и нижнего правого углов окна

Определяет окно вывода в текстовом режиме. Каждое новое обращение к Window отменяет предыдущее определение окна. После определения окна все координаты курсора указываются относительно границ окна.

Управление цветом текста и фона

Procedure HighVideo;

Устанавливает высокую яркость выводимых символов

Procedure LowVideo;

Устанавливает низкую яркость выводимых символов

Procedure NormVideo;

Устанавливает нормальную яркость символов

Procedure TextColor (color: byte);

Color – код цвета или соответствующая константа

Устанавливает цвет выводимых символов

Procedure TextBackGround (color: byte);

Color – код цвета или соответствующая константа

Устанавливает цвет фона

Управление выводом текста

Procedure ClrEol;

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

Procedure DelLine;

Удаляет линию, в которой находится курсор

Procedure InsLine;

Вставляет новую строку перед строкой, где находится курсор

Работа с клавиатурой

Function KeyPressed: boolean;

Значение true, если нажата любая клавиша

Определяет, была ли нажата клавиша на клавиатуре

Function ReadKey: char;

Значение функции – код клавиши, нажатой на клавиатуре

Считывает символ из буфера клавиатуры

Управление курсором

Procedure GoToXY (x, y: integer);

X, y – координаты курсора

Перемещает курсор в указанные координаты экрана или окна вывода

Function WhereX: integer;

Значение функции – координата x курсора

Определяет текущую горизонтальную координату курсора относительно окна

Function WhereY: integer;

Значение функции - координата Y курсора

Определяет текущую вертикальную координату курсора относительно окна

Управление звуком

Procedure NoSound;

Выключает динамик

Procedure Sound (hz: word);

Hz – частота звука в герцах

Включает звук динамика с заданной тональной частотой

Управление временем

Procedure Delay (ms: word);

Ms – значение задержки в миллисекундах

Задержка исполнения программы на заданное число миллисекунд

ЛАБОРАТОРНАЯ РАБОТА №11

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3



Подпишитесь на рассылку:

Интерфейс

Проекты по теме:

Основные порталы, построенные редакторами

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством

Каталог авторов (частные аккаунты)

Авто

АвтосервисАвтозапчастиТовары для автоАвтотехцентрыАвтоаксессуарыавтозапчасти для иномарокКузовной ремонтАвторемонт и техобслуживаниеРемонт ходовой части автомобиляАвтохимиямаслатехцентрыРемонт бензиновых двигателейремонт автоэлектрикиремонт АКППШиномонтаж

Бизнес

Автоматизация бизнес-процессовИнтернет-магазиныСтроительствоТелефонная связьОптовые компании

Досуг

ДосугРазвлеченияТворчествоОбщественное питаниеРестораныБарыКафеКофейниНочные клубыЛитература

Технологии

Автоматизация производственных процессовИнтернетИнтернет-провайдерыСвязьИнформационные технологииIT-компанииWEB-студииПродвижение web-сайтовПродажа программного обеспеченияКоммутационное оборудованиеIP-телефония

Инфраструктура

ГородВластьАдминистрации районовСудыКоммунальные услугиПодростковые клубыОбщественные организацииГородские информационные сайты

Наука

ПедагогикаОбразованиеШколыОбучениеУчителя

Товары

Торговые компанииТоргово-сервисные компанииМобильные телефоныАксессуары к мобильным телефонамНавигационное оборудование

Услуги

Бытовые услугиТелекоммуникационные компанииДоставка готовых блюдОрганизация и проведение праздниковРемонт мобильных устройствАтелье швейныеХимчистки одеждыСервисные центрыФотоуслугиПраздничные агентства

Блокирование содержания является нарушением Правил пользования сайтом. Администрация сайта оставляет за собой право отклонять в доступе к содержанию в случае выявления блокировок.