воскресенье, 31 октября 2010 г.

Использование внешних объединений, Джеффри П. Мак-Манус

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

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

SELECT FirstName, LastName, OrderDate

FROM tblCustomer LEFT OUTER JOIN

tblOrder ON tblCustomer.ID = tblOrder.CustomerID

Обратите внимание, что в предложении LEFT JOIN используется синтаксис имя_таблицы.имя_поля. Более длинное имя позволяет избежать неоднозначности при использовании полей с одинаковыми именами, поскольку поле ID существует как в так и в tblOrder. Фактически предложение LEFT OUTER JOIN означает, что будут отображены все данные таблицы tblCustomer, которая находится в левой стороне выражения tblCustomer.ID = tblOrder.CustomerID.

РИС. 2.6. Выполнение запроса на основе объединения двух таблиц в окне конструктора представлений

Этот запрос возвращает приведенный ниже набор записей.

FirstName LastName OrderDate
John Smith 1/4/2001
John Smith 1/9/2001
Jill Azalia 1/14/2001
Brad Jones <NULL>
Daisy Klein 2/18/2001
Daisy Klein 3/21/2001
Daisy Klein 4/4/2001
Dave Martin 6/5/2001
Betty Klein <NULL>
Thurston Ryan 7/2/2001
Jane Winters 8/16/2001
Jane Winters 9/10/2001

В этот результирующий набор включены все клиенты базы данных, независимо от того, имеют ли они заказы или нет. Для клиентов, не имеющих заказов, в поле OrderDate появится <NULL>, что означает отсутствие данных.

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


ПИСЬМОНОСЕЦ: Очередной продукт компьютерной эпохи, Журнал «Компьютерра»

Автор: Леонид Левкович-Маслюк

<…> Не подумайте, «I don’t mean to criticize», как говаривал старина Нильс Бор. Я совершенно не собираюсь критиковать или ругать новое реалити-шоу. Наоборот, призываю сделать все возможное для поддержания нынешнего баланса между компьютерной и жизненно-философской частями журнала. Не стоит уподобляться узким специалистам. В конце концов, околокомпьютерные рассуждения играют роль локомотива, тянущего остальной материал. Того, ради чего покупают журнал. Что прочитывают в первую очередь. Все знают, какие рейтинги у жвачных телешоу? Прочитают философию, а там, глядишь, и до железячно-программячных текстов доберутся.

Итак, какие будут выводы? Писательское ремесло вступает в стадию, уже пройденную коллегами-телевизионщиками. После художественных фильмов наступила эра «застекольщиков». Зачем трудиться, сочинять истории, если жизнь — лучший сценарист? Статьи Голубицкого-Козловского — первые весточки переселения Живых Журналов в большую печать. Это очередной продукт компьютерной эпохи. Обилие гаджетов и программулек позволяет постоянно петь одну песню: «как я ковырялся с очередной хреновиной и что в итоге получилось». И, главное, никогда не повторяться.

С уважением, Юрий Солоделов jsolo13@rambler.ru


Здравствуйте! Недавно прочел книгу Берда Киви «Гигабайты власти». Хотелось бы, чтоб увидела свет подобная книга о нашей стране. Хотя в нашем государстве гласности и гражданских свобод это чревато. Может и псевдоним не помочь. На мой взгляд, единственный способ приостановить вторжение государства в частную жизнь его граждан — ликвидировать безграмотность этих самых граждан в отношении приватности. «Компьютерра» много раз обращалась к этой теме. Но, насколько я помню, это были разрозненные материалы. Было бы замечательно, если бы вы осветили этот вопрос системно. Хотелось бы увидеть что-то вроде инструкции: как сделать серфинг в Сети анонимным, как организовать шифрование переписки, как защитить данные с помощью стеганографии и т. п. От простых инструкций, объединенных одной темой номера, будет гораздо больше пользы, чем от разрозненных статей, появляющихся в журнале от случая к случаю. А если при выполнении инструкций удастся обойтись свободным ПО, будет вообще хорошо.

С наилучшими пожеланиями, А.

ОТ РЕДАКЦИИ: Мы уже писали (в разрозненных статьях), что правительство Германии, например, несколько лет назад активно стимулировало граждан и учреждения использовать свободную по всем существующим критериям систему GPG (GNU Privacy Guard) для шифрования переписки. Мотивом была защита от промышленного шпионажа. После событий 9/11 такие инициативы не то чтобы заглохли, а как-то вышли из моды — как и разговоры про Echelon и борьбу с ним (об этом писал как раз Киви). У нас же они и вовсе не успели войти в моду. Но эту тему мы продолжаем держать в поле зрения. В ближайшее время опубликуем новые разработки Максима Отставнова на тему «доступа к данным». Справочник же по индивидуальному исчезновению из поля зрения государства публиковать не планируем.


Вот ведь какие параллели прослеживаются: Вселенная (макрокосм) возникла из одной точки. И человек (микрокосм) возникает из одной точки (яйцеклетка, оплодотворенная сперматозоидом). Стало быть, можно (так как я не ученый-физик с мировым именем, то мне можно делать любые предположения — карьеру не испорчу) спроецировать процесс эволюции человека (процесс, изученный больше, чем эволюция Вселенной) на процесс развития Вселенной! Ура! Тайна бытия почти разгадана! Осталось только найти необходимые коэффициенты… Ну, я основное сделал — подсказал миру, где искать. Только не надо оваций, я скромный…

С уважением, Alex Purs

ОТ РЕДАКЦИИ: Стало быть, однажды наша вселенная слезла с дерева, потом взяла в руки каменный топор — и все это должно было проявляться в виде каких-нибудь космических событий — если, конечно, эти стадии эволюции уже позади. А если нет?… Знаете, придумайте лучше более оптимистичную теорию.


Я читаю «Терру» с 97-го года, и мне кажется, что ваш журнал стал входить в некий перечень для обязательного чтения для определенного круга людей. Хорошо это или плохо, но журнал становится все более всеядным, взять хотя бы последний номер (629). Господи, чего только тут не прочитаешь! Тут и Левин со статьей о творцах теории Большого взрыва, и преподобный Ваннах глаголет нам с высот теологии о земных вещах, две статьи о генной инженерии и т. д. и т. п. Так и хочется крикнуть: господа, давайте вернемся к нашим баранам, то бишь к компьютерам, ассемблеру и творениям великого Кнута! <…> Но, к сожалению, молодежь совсем не знакома с классическими трудами, которые в свое время являлись как бы введением в большую науку. Ведь такие книги, как «Физика пространства и времени» Э. Тейлора и Дж. Уилера сейчас недоступны, а широкополосный доступ к Сети есть не у всех. В связи с этим у меня предложение — напечатать список популярных классических трудов по основным направлениям науки, ведь он очень короткий. В математике я бы первым поставил в списке «Что такое математика» Р. Куранта и Г. Роббинса. Я думаю, у Алексея Левина нехилая библиотека научно-популярных бестселлеров, и ему это будет совсем нетрудно.

С уважением, Геннадий Хайбуллин

ОТ РЕДАКЦИИ: Список, скорее всего, будет не таким уж коротким. Но если Алексей Левин прочитает эту переписку и пришлет нам журнальный вариант списка — напечатаем!


Тюнером LifeView TV Prime 34 награждается Юрий Солоделов — за то, что он все понял. Приз предоставлен компаниейallmart.



четверг, 28 октября 2010 г.

Концентратор. Александр Ватаманюк

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

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

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

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

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

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

Существует два основных типа концентраторов.

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

Рис. 6.5. Внешний вид концентратора с фиксированным количеством портов


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

Рис. 6.6. Внешний вид модульного концентратора


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

Поскольку для создания сети в основном используют коаксиальный кабель и кабель на основе витой пары, соответственно существуют концентраторы с BNC– и RJ-45-портами.

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

Рис. 6.7. Внешний вид концентратора с консольным портом (в левой части)


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

Часто на концентраторе присутствует дополнительный порт, через который можно подключать другие сегменты сети. Например, к сети стандарта 100Base-TX можно подключить сеть или сегмент со стандартом 10Base-2.


Значения маски АСЕ. А. Г. Гузикевич

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

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

• Прочитайте документацию с описанием функции открытия интересующего вас объекта. Флаги доступа имеют те же значения, что и флаги, используемые в маске АСЕ. Так, функция OpenMutex использует флаги MUTEX_ALL_ACCESS и SYNCHRONIZE (второй из указанных флагов требуется для любого объекта, который может использоваться с функциями WaitForSingleObject или WaitForMultipleObjects). Другие объекты, например процессы, имеют множество других дополнительных флагов доступа.

• Полезная в этом отношении информация может содержаться также в документации по функциям "создания" объектов.

• Проверьте, не содержатся ли флаги, применимые к интересующему вас объекту, в заголовочных файлах WINNT.H и WINBASE.Н.


Журнал «Компьютерра». 13-Я КОМНАТА: Купить Китай

Автор: Владимир Гуриев

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

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

Тем не менее произошло именно так. И благо хоть бы один из основателей имел хоть какое.то отношение к свободному ПО. Но ничто в биографиях соответственно Виктора Алксниса (он же бывший летчик, он же бывший депутат Государственной Думы) и Александра Поносова (бывший директор сельской школы, осужденный за установку на школьные компьютеры нелицензионного ПО от Microsoft) на это не указывает. Собственно, крайне неприятная история, случившаяся с Александром Поносовым, говорит как раз об обратном: еще недавно он почему.то использовал ненавистный американский Windows, и наверняка использовал бы его до сих пор, если б не выборочная справедливость наших правоохранительных органов.

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

Разумеется, каждый может поддерживать, что ему захочется. Но хроменькая индустрия свободного ПО в России, наверное, могла бы обойтись без поддержки, в рамках которой предполагается за два.три года при бюджетном финансировании в 2–3 млрд. рублей (кстати, оцените вилку) создать "конкурентоспособный дистрибутив на базе Linux". Потому что русские дистрибутивы, если уж так хочется переходить на Linux, уже есть и тратить на создание очередной локализации 100 млн. долларов - это безумие. Даже если госбюджет или Дерипаска, к которому борцы за свободное ПО собирались обратиться, эти сто миллионов дадут (хочется верить, что нет, но в грядущую эпоху нацпроектов всего можно ожидать).

Впрочем, одной операционной системой здесь не обойдешься. "У меня есть мечта, - сказал Алкснис в прошлогоднем интервью Cnews, - когда.нибудь увидеть ПК, не уступающий по своим параметрам брэндовым компьютерам западных фирм, но собранный из российских комплектующих и с российской операционной системой. И когда это произойдет, можно будет сказать, что Россия поднялась…"

И плохо даже не то, что один из основателей новоиспеченного РОО ЦеСТ слабо понимает, из каких комплектующих и где собраны "брэндовые компьютеры западных фирм". Плохо, что к его заявлениям кто.то до сих пор относится всерьез, хотя к компьютерной индустрии все происходящее не имеет никакого отношения. И к реальности, увы, тоже, так как для исполнения мечты Виктора Алксниса нашему правительству необходимо купить Китай - иного экономически оправданного способа организовать производство российских комплектующих в настоящее время не существует.

P.S. Если серьезно, то по нашим данным одна крупная российская компания пытается скупить нескольких российских Linux.разработчиков. И такая общественная поддержка ей, по.простому говоря, "в жилу".


понедельник, 25 октября 2010 г.

13-Я КОМНАТА: Утопия нашего времени / Журнал «Компьютерра»

Автор: Илья Щуров Voyager

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

Однажды в детстве я придумал – ни много ни мало – модель идеального социума. Развитие техники, верил я, приведет к тому, что каждому человеку будет выдано по собственному миру во владение и пользование. Не по планете, а по целой вселенной. Исчезнет битва за ресурсы. Земли, солнца, воздуха, звезд и даже еды хватит на всех. Нет конкуренции – нет войн, голода, нищеты, болезней…

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

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

Фантазия реализовалась – не совсем в реальности, но очень близко к ней. Думаю, читатели уже увидели в этом наивном описании модель сегодняшней блогосферы. Индивидуальные миры-блоги, в которых владелец – царь и бог. Списки друзей и забаненных "персон нон-грата". Отсутствие конкуренции за физические ресурсы – мы по-прежнему вынуждены зарабатывать хлеб в поте лица своего, но киберпространства не касаются подобные мелочи физической реальности. Идеальная среда для жизни? Как бы не так.

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

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

И кстати – о чем мечтают ваши дети? Нам ведь интересно, о чем мы будем писать через десять лет…


P.S. Напоминаем, что редакция «Компьютерры» решила внести свой вклад в мировую блогосферу, и приглашаем в наш редакционный блог: inside computerra ru. Надеемся, что описанные в этой статье отрицательные стороны жизни его не коснутся.


Blend (Смешиваемый) | Владимир Верстак

Материал Blend (Смешиваемый) позволяет смешивать два отдельных материала в определенном процентном соотношении. Он также включает возможность применения маски, управляющей тем, где происходит смешивание, и, следовательно, появление смесевого цвета.

Для доступа к материалу Blend (Смешиваемый) выполните следующие действия.

1. Щелкните на кнопке Type (Тип) в окне Material Editor (Редактор материалов) для вызова окна диалога Material/Map Browser (Окно выбора материалов и карт).

2. Выберите из списка материал Blend (Смешиваемый). В результате откроется окно диалога, в котором необходимо указать: Discard old material? (Удалить старый материал?) или Keep old material as sub-material? (Оставить старый материал в качестве компонента?).

3. Щелкните на кнопке OK. В результате в области свитков окна Material Editor (Редактор материалов) появится свиток Blend Basic Parameters (Основные параметры смешивания) (рис. 3.15).

Рис. 3.15. Свиток Blend Basic Parameters (Основные параметры смешивания)


4. Настройте параметры смешивания материала.

1) Щелкнув на одной из кнопок Material 1 (Материал 1) или Material 2 (Материал 2), выберите новый материал либо перейдите в режим редактирования существующего. В качестве материалов могут выступать как стандартные материалы, так и сложные составные.

2) Установите или снимите флажки, расположенные справа от кнопок материалов, для активизации или деактивизации материалов.

3) Установите переключатель Interactive (Интерактивный) напротив того материала, который должен быть показан в окне проекции.

4) Нажав кнопку Mask (Маска), укажите в открывшемся окне Material/Map Browser (Окно выбора материалов и карт) материал или файл растрового изображения, который будет использоваться для смешивания двух компонентов материала.

5) В счетчике Mix Amount (Доля в смеси) определите значение смешивания материалов-компонентов в диапазоне от 0 до 100. При значении, равном 0, будет виден только Material 1 (Материал 1), а при 100 – только Material 2 (Материал 2).

6) Задайте плавность перехода одного материала в другой с помощью элементов области Mixing curve (Кривая смешивания).


суббота, 23 октября 2010 г.

5.2.3 Ссылки на Себя, Мюррей Хилл

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

class x (* int m; public: int readm() (* return m; *) *);

x aa; x bb;

void f() (* int a = aa.readm(); int b = bb.readm(); // ... *)

В первом вызове члена member() m относится к aa.m, а во втором – к bb.m.

Указатель на объект, для которого вызвана функция член, является скрытым параметром функции. На этот неявный параметр можно ссылаться явно как на this. В каждой функции класса x указатель this неявно описан как

x* this;

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

class x (* int m; public: int readm() (* return this-»m; *) *);

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

class dlink (* dlink* pre; // предшествующий dlink* suc; // следующий public: void append(dlink*); // ... *);

void dlink::append(dlink* p) (* p-»suc = suc; // то есть, p-»suc = this-»suc p-»pre = this; // явное использование this suc-»pre = p; // то есть, this-»suc-»pre = p suc = p; // то есть, this-»suc = p *)


dlink* list_head;

void f(dlink*a, dlink *b) (* // ... list_head-»append(a); list_head-»append(b); *)

Цепочки такой общей природы являются основой для списквых классов, которые описываются в Главе 7. Чтобы присоеднить звено к списку необходимо обновить объекты, на которые указывают указатели this, pre и suc (текущий, предыдущий и последующий). Все они типа dlink, поэтому функция член dlink::append() имеет к ним доступ. Единицей защиты в С++ яляется class, а не отдельный объект класса.


Макс Каневский, ПРЕДИСЛОВИЕ

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

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

Проникновение ИКТ-систем в административные процессы государственного управления требует жесткого внутреннего и внешнего информационного контроля, а также обязательного независимого аудита, использования ИКТ в государственных органах, в нашем случае – системы ГАС «Выборы». Информационный Общественный аудит, дополняющий внутренний контроль государственных органов и внешний контроль со стороны органов представительной власти, должны осуществлять независимые аудиторы. Система информационного Общественного аудита должна в первую очередь опираться на ресурсы и возможности частного сектора, способного обеспечить в конкурентных условиях максимально эффективное оказание соответствующих услуг. В частности, негосударственный аудит позволит избежать рьяной защиты «чести мундира», зачастую являющейся недостатком государственных проверяющих.

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


Церен Церенов, олин из инициаторов и авторов фелеральной целевой программы «Электронная Россия (2002—2010 гг.)», заместитель ли ректора Лепартамента корпоративного управления и новой экономики Министерства экономического развития и торговли РФ


среда, 13 октября 2010 г.

Обработка сообщений | Александр Вячеславович Фролов

Как вы знаете из предыдущих томов серии “Библиотека системного программиста”, работа приложений операционной системы Windows основана на обработке сообщений. Когда пользователь работает с устройствами ввода/вывода компьютера, например клавиатурой или мышью, драйверы этих устройств создают сообщения, описывающие его действия. Каждое нажатие на клавиши клавиатуры вызывает генерацию ряда сообщений, определяющих, какая клавиша нажата. Перемещение мыши вызывает сообщения, описывающие траекторию перемещения указателя мыши и т. д. Другие сообщения могут вырабатываться операционной системой или самими приложениями.

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

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

MSG message;

while(GetMessage(&message, 0, 0, 0)) {

 DispatchMessage(&message);

}

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

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

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

long FAR PASCAL _export WndProc(HWND hWnd, UINT message, UINT wParam, LONG lParam) {

 HDC hdc;

 PAINTSTRUCT ps;

 RECT rect;


 switch(message) {

 case WM_PAINT:

  hdc = BeginPaint(hWnd, &ps);


  GetClientRect(hWnd, &rect);


  DrawText(hdc, "Hello, Windows!", –1, &rect, DT_SINGLELINE | DT_CENTER);


  EndPaint(hWnd, &ps);

  return 0;


 case WM_DESTROY:

  PostQuitMessage(0);

  return 0;

 }


 return DefWindowProc(hwnd, message, wParam, lParam);

}

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

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

Если вы используете библиотеку классов MFC, то за обработку сообщений отвечают классы. Любой класс, наследованный от базового класса CCmdTarget, может обрабатывать сообщения. Чтобы класс смог обрабатывать сообщения, необходимо, чтобы он имел таблицу сообщений класса. В этой таблице для каждого сообщения указан метод класса, предназначенный для его обработки.

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

• оконные сообщения;

• сообщения от органов управления;

• команды.


Денис Николаевич Колисниченко | 5.4. Создание расписаний

Механизм расписаний Linux (UNIX) предоставляет удобные и мощные средства для обслуживания системы. Например, можно создать расписание резервирования данных в нерабочее время или обновления системы через Интернет.

Для запуска команд по расписанию используется демон cron. Он запускается автоматически из файла /etc/init.d при многопользовательском уровне запуска. Об уровнях запуска поговорим немного позже. Каждую минуту cron пробуждается и проверяет содержимое файлов crontab. Для какой-то определенности назовем эти файлы файлами расписаний.

Демон cron имеет свою буферную область (каталог /var/spool/cron/), в которой находятся файлы crontab — файлы расписаний. Имена файлов расписаний соответствуют именам пользователей из файла /etc/passwd. Если cron найдет файлы расписаний, он загрузит их в память. К этим файлам не должно быть прямого доступа, редактировать их можно с помощью программы crontab.

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

Программа crontab

Программа crontab используется для редактирования файлов расписаний отдельных пользователей. Программа позволяет устанавливать, удалять, редактировать и просматривать файлы расписаний. Например, для установки файла расписаний используется команда:

crontab –u user file.cron

Если не использовать опцию –u, то будет установлен файл расписания для пользователя, запустившего программу.

Каждый пользователь может иметь файл расписания. Для того, чтобы использовать эту возможность, пользователь должен быть прописан в файле /var/spool/cron.allow, если такой существует. Программу crontab можно запускать с опциями, приведенными в табл. 5.3.

Примечание. Последние версии демона crond используют файл /etc/cron.allow вместо файла /var/spool/cron.allow и файл/etc/cron.deny вместо файла /var/spool/cron.deny. В файле /etc/cron.allow содержится списокразрешенных пользователей, в файле /etc/cron.deny — запрещенных.

Опции программы crontab Таблица 5.3

Опция Описание
-l Выводит текущий файл расписания
-r Удаляет файл расписания
Вызывает редактор, указанный в переменной окружения $EDITOR для редактирования файла расписания

Каждая строка файла расписания имеет такой формат:

время_выполнения действие

Время выполнения состоит из пяти полей. В первом поле задаются минуты (0…59), во втором — часы (0…23), в третьем — день месяца (1…31), в четвертом — номер месяца (1…12), а в пятом день недели (0…6, 0 соответствует воскресенью). В любом из этих полей можно поставить звездочку, которая обозначает все возможные значения. Например, следующая запись означает, что архивирование каталога /etc будет производиться каждый день, кроме воскресенья, в семь часов утра:

0 7 * * 1-6 tar cfz /backup /etc

В системе используется системный файл расписания — это /etc/crontab (см. листинг 5.1).

Листинг 5.1. Файл /etc/crontab

# Интерпретатор команд

SHELL=/bin/bash

# Путь для поиска команд

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# Отчет о выполнении расписания будет отправлен

# пользователю root

MAILTO=root

# Домашний каталог

НОМЕ=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

Директива run-part означает, что будут выполнены все выполняемые файлы из указанного каталога.

Демон atd

Еще одним способом планирования задач является использование демона atd. Этот демон используется для отложенного выполнения заданий. Для постановки заданий в очередь используются команды at и batch. Чтобы добавить задание в очередь используйте команду:

at время дата

После этого введите все команды, которые хотите выполнить. Для окончания ввода нажмите Ctrl+D. Более подробно о формате задания времени и даты вы можете прочитать в справочной системе. Например, для выполнения команд в 13:00 введите команду:

at 1pm

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


воскресенье, 10 октября 2010 г.

Журнал «Компьютерра» - СОФТЕРРА: Софтерринки

Автор: Илья Шпаньков

Разбор завалов

ОС Windows

Адрес www.kessels.com/JkDefrag

Версия 3.32

Размер 454 Кбайт

Интерфейс многоязычный (русский не поддерживается)

Цена бесплатно

Лицензия GPL/LGPL


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

Настольное слайд-шоу

ОС Windows

Адрес www.dxcoder.org/wpc/ru

Версия alpha 0018

Размер 91 Кбайт

Интерфейс многоязычный (русский поддерживается)

Цена бесплатно

Лицензия GPLv3


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

Невидимка-универсал

ОС все

Адрес www.privoxy.org

Версия 3.0.7 beta

Размер 475 Кбайт

Интерфейс английский

Цена бесплатно

Лицензия GPLv2


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

Мастер художественных жанров

ОС Windows, Linux, Mac OS X

Адрес www.gimp.org

Версия 2.4.2

Размер 14,5 Мбайт

Интерфейс многоязычный (русский поддерживается)

Цена бесплатно

Лицензия GPL


Пакет The Gimp давно снискал славу самого продвинутого графического редактора в мире open source. Его функциональные возможности, ограниченные только фантазией разработчиков плагинов, удовлетворят запросы и домашних пользователей, и работающих с графикой профессионалов. В очередной версии The Gimp, в частности, модернизирована система выделения, добавлена полноценная поддержка цветовых профилей, а инструментарий пополнился масштабируемыми кистями. Значительным изменениям подвергся и интерфейс программы, получивший абсолютно новый набор иконок и измененное меню. Кроме того, расширены опции настройки печати и добавлено несколько новых функций, в том числе полноэкранный режим редактирования и устранение "красных глаз".


Досрочное завершение клиента | Д. Солнышков

Если клиент, использующий TCP, завершает работу в процессе выполнения процедуры RPC, серверу отправляется пакет FIN. Мы хотим узнать, как библиотека сервера реагирует на этот пакет и уведомляет об этом процедуру сервера. (В разделе 15.11 мы говорили, что поток сервера дверей отменяется при досрочном завершении клиента.)

Чтобы сымитировать такую ситуацию, клиент вызывает alarm(3) непосредственно перед вызовом процедуры сервера, а процедура сервера вызывает slеер (6). Так же мы поступили и в нашем примере с дверьми в листингах 15.25 и 15.26. Поскольку клиент не перехватывает сигнал SIGALRM, процесс завершается ядром примерно за 3 секунды до отправки ответа серверу. Запустим клиент в BSD/OS, а сервер в Solaris:

bsdi % client solaris 44 tcp

Alarm call

Случилось то, что мы и ожидали. А вот на сервере не происходит ничего необычного. Процедура сервера благополучно заканчивает 6-секундную паузу и возвращается. Если мы взглянем на передаваемую по сети информацию с помощью tcpdump, мы увидим следующее:

¦ при завершении работы клиента (через 3 секунды после запуска) серверу отправляется пакет FIN, и сервер высылает уведомление о его приеме. В TCP для этого используется термин half-close (наполовину закрытое соединение, раздел 18.5 [22]);

¦ через 6 секунд после запуска клиента сервер отсылает ответ, который переправляется клиенту протоколом TCP. По соединению TCP можно отправлять данные после получения FIN, поскольку соединения TCP являются двусторонними, о чем говорится в книге [24, с. 130-132]. Клиент отвечает пакетом RST, поскольку он уже завершил работу. Он будет получен сервером при следующем открытии этого соединения, но это ни к чему не приведет.

Подведем итоги.

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

¦ Клиент RPC, использующий TCP, может узнать о возникших на сервере проблемах, поскольку при досрочном завершении сервера его конец соединения автоматически закрывается. Это, однако, не помогает, если сервер является многопоточным, поскольку такой сервер не закрывает соединение в случае отмены потока с процедурой сервера. Мы также не получаем информации в случае сбоя узла, поскольку при этом соединение TCP не закрывается. Во всех этих случаях следует использовать выход по тайм-ауту.


вторник, 5 октября 2010 г.

54. Проектирование систем контроля и автоматического регулирования - М. А. Бабаев

Системы контроля и автоматического регулирования, конечным результатом которых являются сегодня орбитальные космические станции, межпланетные орбитальные станции, годами находящиеся на расстоянии сотни тысяч километров, являются высшим полетом современной инженерной мысли. Все это всего лишь каких-то 40–50 лет назад было мечтой всего человечества. Чтобы реализовать эти достижения, пришлось разработать, спроектировать более сложные средства, используя уже имеющиеся. В нашей последней заключительной лекции попробуем разобраться с вопросами проектирования средств автоматического регулирования и контроля. Из выше изложенного уже ясно, что основной задачей проектирования является:

1) разработка схемы;

2) обеспечение выбора аппаратуры для технологического контроля при производстве;

3) оформление принятых решений в виде технической документации, соответствующей ГОСТ.

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

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

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


A. В. Крюков / 11.3 ВЗАИМОДЕЙСТВИЕ В СЕТИ

Программы, поддерживающие межмашинную связь, такие, как электронная почта, программы дистанционной пересылки файлов и удаленной регистрации, издавна используются в качестве специальных средств организации подключений и информационного обмена. Так, например, стандартные программы, работающие в составе электронной почты, сохраняют текст почтовых сообщений пользователя в отдельном файле (для пользователя "mjb" этот файл имеет имя "/usr/mail/mjb"). Когда один пользователь посылает другому почтовое сообщение на ту же машину, программа mail (почта) добавляет сообщение в конец файла адресата, используя в целях сохранения целостности различные блокирующие и временные файлы. Когда адресат получает почту, программа mail открывает принадлежащий ему почтовый файл и читает сообщения. Для того, чтобы послать сообщение на другую машину, программа mail должна в конечном итоге отыскать на ней соответствующий почтовый файл. Поскольку программа не может работать с удаленными файлами непосредственно, процесс, протекающий на другой машине, должен действовать в качестве агента локального почтового процесса; следовательно, локальному процессу необходим способ связи со своим удаленным агентом через межмашинные границы. Локальный процесс является клиентом удаленного обслуживающего (серверного) процесса.

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

В качестве примера рассмотрим программу uucp, которая обслуживает пересылку файлов в сети и исполнение команд на удалении (см. [Nowitz 80]). Процесс-клиент запрашивает в базе данных адрес и другую маршрутную информацию (например, номер телефона), открывает автокоммутатор, записывает или проверяет информацию в дескрипторе открываемого файла и вызывает удаленную машину. Удаленная машина может иметь специальные линии, выделенные для использования программой uucp; выполняющийся на этой машине процесс init порождает getty-процессы — серверы, которые управляют линиями и получают извещения о подключениях. После выполнения аппаратного подключения процесс-клиент регистрируется в системе в соответствии с обычным протоколом регистрации: getty-процесс запускает специальный интерпретатор команд, uucico, указанный в файле "/etc/passwd", а процесс-клиент передает на удаленную машину последовательность команд, тем самым заставляя ее исполнять процессы от имени локальной машины.

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

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


суббота, 2 октября 2010 г.

Задачи рекламы / Александр Назайкин

Обычная предлагающая реклама строится по традиционной схеме, она отвечает на основные интересующие потребителя вопросы: «Что, кто, когда, где и почему?»

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

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

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


4. Характеристика объекта бизнеса организации / Ольга Бекетова

В разделе бизнес-плана «Характеристика объекта бизнеса организации» («Характеристика услуг и продукции») представляется описание продукции предприятия с позиции потребителя. С этой целью приводятся следующие сведения:

1) потребности, удовлетворяемые товаром;

2) показатели качества;

3) экономические показатели;

4) внешнее оформление;

5) сравнение с другими аналогичными товарами;

6) патентная защищенность;

7) показатели экспорта и его возможности;

8) основные направления совершенствования продукции;

9) возможные ключевые факторы успеха.

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

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

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

Для нового товара в бизнес-плане указывается, соответствует ли этот товар требования новизны. Таким термином обозначают следующие товары:

1) товар, не имеющий аналогов на рынке;

2) товар, который имеет весомое качественное усовершенствование по сравнению и товарами-аналогами;

3) товар, который уже был на рынке, после чего был усовершенствован так, что его свойства принципиально изменились;

4) товар рыночной новизны, т. е. новый только для данного рынка;

5) старый товар, нашедший себе новую сферу применения.

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