Новые книги

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

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

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

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

Примеры я буду приводить на языке Object Pascal. В основном я работаю на нём, пишу на Delphi. Предвидя нападки со стороны поклонников C-подобных языков, скажу два тезиса:

Управление действующими запросами на распечатку



7.7. Управление действующими запросами на распечатку

7.7.1. Задержка запроса .
7.7.2. Освобождение задержанных запросов на распечатку
7.7.3. Перемещение запросов в новый пункт назначения

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

	3      Manage Active Print Requests
	--------------------------------------------------
	cancel   - Cancel Print Requests
	hold     - Place Pending Print Requests on Hold
	move     - Move Print Requests to a New Destination
	release  - Release Hold Print Requests

Отмена запросов на распечатку

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

Вы можете также отменить запросы, введя команду:

	lpstat -o

для идентификации запросов, и команду:

	cancel request-id

для отмены запроса с идентификатором request-id.

7.7.1. Задержка запроса

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

Для задержки запроса используется следующая команда:

	lp -i request-id -H hold

7.7.2. Освобождение задержанных запросов на распечатку

Освободить задержанные запросы можно с помощью меню или введя команду:

	lp -i request-id -H resume

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

	lp -i request-id -H resume -P starting-page-

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

Вы также можете запросить команду:

	lp -i request-id -H immediate

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

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

7.7.3. Перемещение запросов в новый пункт назначения

Если вам нужно переместить запросы с одного принтера или класса принтеров на другой, или выбирайте move из меню Print Requests, или вводите следующие команды:

	/usr/sbin/lpmove request-id printer-name
	/usr/sbin/lpmove printer-name1 printer-name2

В первой команде можно дать несколько идентификаторов запросов перед именем принтера.

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

7.7.3.1. Изменение приоритета запроса

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

Когда вы выбираете requests из меню, это дает вам подменю Request Priorities. Это меню позволяет изменять приоритет любого ожидающего запроса.

При использовании команды вы можете ввести следующую, изменяющую приоритет запроса:

	lp -i requestid -q new-priority-level

Вы можете изменить только один запрос одновременно, используя эту команду.

Если запрос уже распечатывается, вы не можете менять его приоритет. Эта возможность не доступна через структуру меню.

7.7.3.2. Перемещение запроса в голову очереди

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

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

	lp -i request-id -H immediate

Только вы можете перемещать запрос таким образом; постоянные пользователи не могут использовать параметр -H immediate.

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

  1. Задержите все запросы, кроме того, который хотите переместить. Это автоматически переместит его в голову очереди.
  2. Удалите задержку всех других запросов.

Назад | Содержание | Вперед