PHP, "PHP: Hypertext Preprocessor/Гипертекстовый Препроцессор", широко используемый Открытый Ресурс, язык скриптинга (сценариев) общего назначения, который особенно подходит для Web и может быть внедрён в HTML. Его синтаксис происходит от C, Java и Perl и лёгок для понимания и изучения.
Главной целью создания этого языка является: дать web-разработчикам возможность быстро создавать динамически генерируемые страницы для web, но вы можете сделать с помощью PHP гораздо больше. Этот учебник состоит в основном из справочника по функциям, но содержит также справочник по языку, разъяснения по некоторым основным возможностям языка PHP и другую сопутствующую информацию.
Прежде всего, микроконтроллер это процессор со всеми его "атрибутами", плюс встроенная, энергонезависимая память (программ и данных), что позволяет отказаться от внешней памяти программ и поместить программу в его энергонезависимую память.
Это позволяет создавать очень простые (в схемотехническом отношении) и компактные устройства, выполняющие, тем не менее, достаточно сложные функции. Иногда даже диву даешься: эта маленькая "штучка" заменяет целую "груду старого железа"
Любой микроконтроллер, по своим возможностям, конечно же, уступает процессору компьютера, но тем не менее, существует весьма обширный класс устройств, которые преимущественно реализуются именно на микроконтроллерах. И в самом деле, компьютер в карман не положишь и от батареек его не запитаешь. Поэтому, во многих случаях, микроконтроллерам просто нет альтернативы. "Сердцем" микроконтроллера является арифметико - логическое устройство (АЛУ).
Проще всего его представить в виде банального калькулятора, кнопками которого управляет программа, написанная на языке ассемблер (то есть, программист). Если вдуматься, то ничего особо сложного, в механизме управления такого рода калькулятором, нет. И в самом деле, если нужно, например, сложить числа А и В, то в тексте программы сначала задаются константы А и В, а затем дается команда "сложить". Программисту вовсе не обязательно знать, что происходит с нулями и единицами (разве только только для общего развития), ведь калькулятор он на то и калькулятор, чтобы избавить пользователя от "возни" с машинными кодами и прочими "неудобоваримостями".
Когда Вы работаете с компьютером, Вам и не нужно детально знать, что происходит в дебрях операционной системы.
Если Вы туда "полезете", то "с ума сойдете", а микроконтроллер, по своей сути, есть тот же самый компьютер, но только простой. Программисту только нужно детально знать, каким именно образом "приказать железяке" сделать то, что необходимо для достижения задуманного. Микроконтроллер можно представить себе как некий универсальный "набор" многофункциональных модулей (блоков), "рычаги управления" которыми находятся в руках программиста. Этих "рычагов" достаточно большое количество, и естественно, их нужно освоить и точно знать, что именно произойдет, если "дернуть" (дать команду на языке ассемблер) за тот или иной "рычаг". Вот здесь-то уже нужно знать, как "отче наше", каждую деталь и не жалеть на это "узнавание" времени. Только таким образом пустую "болванку" (незапрограммированый ПИК) можно "заставить"
выполнять какие-то "осмысленные" действия, результат большей части которых можно проверить в симуляторе MPLAB (об этом - позднее), даже не записывая программу в ПИК.
Итак, необходим переход к "модульному" мышлению. Любой микроконтроллер можно уподобить детскому конструктору, в состав которого входит множество всяких предметов, манипулируя с которыми, можно получить тот или иной конечный "продукт". Давайте с ними разберемся и "разложим все по полочкам". В качестве примера я буду использовать один из самых распространенных PIC контроллеров PIC16F84A. Он является как бы "проматерью" более сложных ПИКов, содержит минимальный "набор" модулей и как нельзя лучше подходит для первичного "въезда в м/контроллеры".
Энергонезависимая память.
Начнем с энергонезависимой памяти (память программ и память данных).
Информация, заложенная в энергонезависимую память, сохраняется при выключении питания, и поэтому именно в нее записывается программа.
То "место" энергонезависимой памяти, куда записывается программа, называется памятью программ. Объем памяти программ может быть различен. Для PIC16F84A, он составляет 1024 слова. Это означает, что он предназначен для работы с программами, объем которых не превышает 111024 слов.
Слово памяти программ не равно одному байту (8 бит), а больше его (14 бит). Отдельная команда, которую ПИК будет в дальнейшем выполнять, занимает одно слово в памяти программ. В зависимости от названия этой команды в ассемблере, слово принимает то или иное числовое значение в машинном коде. После записи в ПИК "прошивки" программы, слова памяти программ (машинные коды) как бы "превращаются" в команды, которые располагаются, в памяти программ, в том же порядке, в котором они следуют в исходном тексте программы, написанном на языке ассемблер, и в том же порядке им присваиваются адреса, при обращении к которым, та или иная команда "извлекается" из памяти программ для ее выполнения. Последовательность же их выполнения определяется логикой программы. Это означает то, что выполнение команд может происходить не в порядке последовательного возрастания их адресов, с шагом в одну позицию (так называемый инкремент), а "скачком". Дело в том, что только уж самые простейшие программы, в пределах одного их полного цикла, обходятся без этих "скачков", называемых переходами, и выполняются строго последовательно. В остальных же случаях, так называемая (мной) "рабочая точка программы" "мечется по тексту программы как угорелая" (как раз благодаря этим самым переходам).
Термин "рабочая точка программы" - моя "самодеятельность". В свое время, я был очень сильно удивлен отсутствием чего-то подобного в информации, связанной с объяснением работы программ. Казалось бы, чего проще, по аналогии, например, с рабочей точкой транзистора, сделать более комфортным "въезд в механику" работы программ? Так нет же, как будто специально, придумываются такие "головокружительные заменители", причем, в различных случаях, разные, что запутаться в этом очень просто. Итак, рабочую точку программы можно представить себе в виде некоего "шарика от пинг-понга", который "скачет" по командам текста программы в соответствии с алгоритмом (логикой) исполнения программы. На какую команду "шарик скакнул", та команда и исполняется. После этого он "перескакивает" на другую команду, она исполняется, и т.д. Эти "скачки" происходят непрерывно и в течение всего времени включения питания устройства (исполнения программы).
Любая более-менее сложная программа разбивается на части, которые выполняют отдельные функции (своего рода программки в программе) и которые называются подпрограммами. Атрибут любой подпрограммы - функциональная законченность производимых в ней действий.
По сути своей, эта "выдумка" введена в программирование для удобства реализации принципа "разделяй и властвуй": "врага" ведь гораздо легче "разгромить по частям, чем в общей массе". Да и порядка больше.
Безусловные переходы (переходы без условия) между подпрограммами (если они последовательно не переходят одна в другую), осуществляются при помощи команд безусловных переходов, в которых обязательно указывается адрес команды в памяти программ (косвенно - в виде названия подпрограммы или метки), на которую нужно перейти. Существуют также переходы с условием (условные переходы), то есть, с задействованием так называемого стека. Более подробно о переходах я расскажу позднее. Адреса команд определяются счетчиком команд (он называется PC). То есть, каждому состоянию счетчика команд соответствует одна из команд программы. Если команда простая, то счетчик просто инкрементируется (последовательно выполняется следующая команда), а если команда сложная (например, команда перехода или возврата), то счетчик команд изменяет свое состояние "скачком", активируя соответствующую команду.
Примечание: инкремент - увеличение на единицу величины числа, с которым производится эта операция, а декремент - уменьшение на единицу (так называемые комплиментарные операции). В простейшем случае, то есть в случае отсутствия в программе переходов, счетчик команд PC, начиная с команды "старта" (нулевой адрес), многократно инкрементируется, 12 последовательно активизируя все команды в памяти программ. Это означает, что в большинстве случаев, за каждый так называемый машинный цикл (такт работы программы: для ПИКов он равен четырем периодам тактового генератора) работы ПИКа, происходит исполнение одной команды. Есть и команды исполнение которых происходит за 2 машинных цикла (м.ц.), но их меньше. Команд, которые исполняются за 3 м.ц. и более нет. Таким вот образом, на большинстве участков программы (я их называю "линейными участками"), последовательно и перебираются адреса в памяти программ (команды последовательно исполняются).
В более сложных программах, с большим количеством условных и безусловных переходов, работу счетчика команд PC можно охарактеризовать фразой "Фигаро здесь, Фигаро там". 1 машинный цикл (м.ц.) равен 4-м периодам тактового генератора ПИКа. Следовательно, при использовании кварца на 4 Мгц., 1 м.ц.=1 мкс. Выполнение программы, в рабочем режиме (кроме работы в режиме пониженного энергопотребления SLEEP), никогда не останавливается, то есть, за каждый машинный цикл (или за 2, если команда исполняется за 2 м.ц.) должно выполняться какое-либо действие (команда). Тактовый генератор, формирующий машинные циклы, работает постоянно. Если его работу прервать, то исполнение программы прекратится.
Может сложиться ложное представление о том, что работу программы можно на какое-то время остановить, используя одну или несколько команд – "пустышек", не производящих полезных действий (есть такая команда NOP). Это представление не верно, так как в этом случае, речь идет только о задержке выполнения следующих команд, а не об остановке исполнения программы. Программа исполняется и в этом случае, так как "пустышка" есть та же самая команда программы, только не производящая никаких действий (короткая задержка). Если же нужно задержать выполнение каких-либо последующих команд на относительно длительное время, то применяются специальные, циклические подпрограммы задержек, о которых я расскажу позднее. Даже тогда, когда программа "зависает" ("глюк"), она исполняется, просто только не так, как нужно. Остановить (в буквальном смысле этого слова) исполнение программы можно только прекратив работу тактового генератора. Это происходит при переходе в режим пониженного энергопотребления (SLEEP), который используется в работе достаточно специфических устройств. Например, пультов дистанционного управления (и т.д.).
Отсюда следует вывод: программы, не использующие режим SLEEP (а таких - большинство), для обеспечения непрерывного выполнения команд программы, обязательно должны быть циклическими, то есть, иметь так называемый полный цикл программы, причем, многократно повторяющийся в течение всего времени включения питания. Проще говоря, рабочая точка программы должна непрерывно (не останавливаясь) "мотать кольца" полного цикла программы (непрерывно переходить с одного "кольца" на другое).
Общие выводы:
1. Команды программы "лежат" в памяти программ в порядке расположения команд в тексте программы.
2. Адреса этих команд находятся в счетчике команд PC и каждому адресу соответствует одна из команд программы.
3. Команда активируется (исполняется), если в счетчике команд находится ее адрес.
4. Активация команд происходит либо последовательно (на "линейном" участке программы), либо с переходом ("скачком") на другую команду (при выполнении команд переходов), с которой может начинаться как подпрограмма (переход на исполнение подпрограммы), так и группа команд, выделенная меткой (переход на исполнение группы команд, которой не присвоен "статус" подпрограммы).
5. Выполнение команд программы никогда не останавливается (за исключением режима SLEEP), и поэтому программа должна быть циклической.
Кроме памяти программ, PIC16F84A имеет энергонезависимую память данных (EEPROM память данных). Она предназначена для сохранения данных, имеющих место быть на момент выключения питания устройства, в целях их использования в дальнейшем (после следующего включения питания). Так же, как и память программ, память данных состоит из ячеек, в которых "лежат" слова. Слово памяти данных равно одному байту (8 бит). В PIC16F84A, объем памяти данных составляет 64 байта. Байты, хранящиеся в памяти данных, предназначены для их считывания в стандартные 8-битные регистры, речь о которых пойдет далее. Данные из этих регистров могут быть записаны в EEPROM память данных, то есть, может быть организован обмен данными между памятью данных и регистрами. Например, именно EEPROM память данных я использовал в своем частотомере для сохранения последних, перед выключением питания, настроек. Она же используется и для установки значений промежуточной частоты. Во многих программах, память данных вообще не используется, но это "вещь" исключительно полезная, и далее я расскажу о ней подробнее.
TField-компоненты (или, точнее, потомки компонента TField с соответствующим типом поля) могут создаваться во время проектирования программы с помощью Fields Editor (редактора полей). Fields Editor вызывается двойным щелчком на иконке компонента TTable или TQuery. Но потомки TField могут быть созданы и удалены и в режиме выполнения программы.
Потомки компонента TField (такие как, например, TStringField, TIntegerField и др.) создаются методом Create для того типа потомка TField, который подходит к соответствующему полю набора данных. Другими словами, для поля строкового типа текущего набора данных необходимо вызвать метод Create класса TStringField, являющегося потомком TField. Методу Create необходим один параметр - владелец потомка TField, расположенный на TForm. После создания компонента наследника TField для того, чтобы новый экземпляр объекта мог установить связь с необходимым полем набора данных, необходимо установить несколько ключевых свойств. Вот их список:
Index: позиция компонента-потомка TField в массиве TFields (свойство Fields компонента TTable или TQuery, с которым будет связан TField).
DataSet: компонент TTable или TQuery, с которым будет связан TField.
Приведенный ниже код демонстрирует способ создания TStringField. TForm названа Form1 (здесь ссылка на переменную Self), активный набор данных TQuery имеет имя Query1 и поле, для которого создается компонент TStringField, расположено в таблице dBASE с именем CO_NAME. Новый потомок TField будет вторым TField в свойстве-массиве Fields компонента Query1. Имейте в виду, что набор данных, связанный с новым потомком TField (в нашем случае Query1), перед добавлением TField должен быть закрыт, а после добавления вновь открыт.
Вышеприведенный пример создает новый TStringField с именем Query1CO_NAME.
Для удаления существующего потомка TField достаточно вызова метода Free данного компонента. В примере, приведенном ниже, метод TForm FindComponent используется для получения указателя на компонент TStringField с именем Query1CO_NAME. Возвращаемая функцией FindComponent величина в случае успешного завершения будет иметь тип TComponent или nil в противном случае. Возвращаемое значение может использоваться для того, чтобы определить, действительно ли существует компонент до того, как будет применен метод Free.
Как и при создании TField, набор данных, связанный с потомком TField и активный в настоящий момент, перед вызовом данного метода должен быть закрыт и впоследствии вновь активирован.
Многие мои друзья и знакомые часто спрашивают меня о том, как устроен мой сайт, сколько у меня таблиц в базе данных, как я храню данные и по каким полям веду поиск. Я, конечно, не выдаю все свои государственные тайны, но всегда понимаю причину таких вопросов и пытаюсь помочь людям построить быструю и надежную базу данных - т.е. тщательно продумать структуру БД таким образом, чтобы при увеличении нагрузки или объема таблиц динамический веб-сайт не превратился в тормозное усмертие.
А ведь многие новички (веб-строители) даже не догадываются о том, что крупные динамические сайты тормозят вовсе не из-за нагрузки скриптов на процессор, а в основном из-за неоптимизированного или дохленького MySQL-сервера. При этом во многом все зависит от того, как устроена ваша база данных.
Итак, начнем ликбез. Сразу всем вопрос: что делает MySQL во время записи в таблицы типа INSERT или UPDATE? Правильно - БЛОКИРУЕТ ТАБЛИЦЫ и пишет в них данные. Скорость записи и поиска может быть достаточно низкой, поэтому статус таблиц запрещает другим процессам считывать из них данные до окончания операции записи или обновления и снятия блокировки. При этом может получиться так, что во время записи единственного поля в длинные таблицы, ваш MySQL-сервер надолго заблокирует доступ к таблице остальным скриптам.
Например, вы создали таблицу новостей такого типа:
ID - номер, первичный ключ TEMA - тема новости MESS - сообщение, сама новость VIEWS - количество просмотров
При каждом обращении к новостям, скрипт будет выводить саму новость, а потом увеличивать поле VIEWS запросом UPDATE table 'NEWS' set VIEWS=VIEWS+1 where id=ID. При этом количество апдейтов будет довольно высоким. При высокой посещаемости веб-ресурса или при "нападении" на сайт поискового робота (эти ребята страдают многопоточностью и могут запросто повесить ваш сайт своими запросами) несколько одновременных процессов станут пытаться сделать UPDATE и SELECT. При каждом UPDATE таблица будет блокироваться (на это уходит время) и все остальные процессы будут ждать завершения операции. А если таблица достаточно большая? Например, несколько тысяч записей. Ежу понятно, что построится очередь из нескольких десятков скриптов, ожидающих ответа MySQL-сервера. Каждый будет жрать память и держать остальные процессы. В итоге все у вас зависнет и переглючит. Выход: делать вместо одной таблицы несколько. Советую разделять поля по типу их использования. Одну таблицу - только для вывода и редких обновлений или вставок. Другую - для частых обновлений, но редкого вывода. Например, значения счетчика обращений держать отдельно в таблицу вида:
ID - номер, первичный ключ VIEWS - количество просмотров
Сами новости лучше держать в другой таблице, где нет поля VIEWS. При этом таблица с новостями будет тяжелой (много текста, полей, индексов), а таблица COUNT (счетчик) будет очень легкой и быстрой. Таблица NEWS будет кешироваться и выводиться очень быстро при любых объемах, а таблица COUNT будет быстро обновляться из-за того, что она очень легкая (всего два целочисленных поля). Разделение данных по нескольким таблицам существенно ускоряет работу MySQL-сервера. Гораздо быстрее работают несколько мелких запросов по каждой таблице, чем один длинный запрос по одной или нескольким таблицам. Имейте это в виду, чтобы спать спокойно.
Дальше - круче. Чтобы не блокировать лишний раз свои таблицы используйте при вставках директиву DELAYED. Пример: INSERT DELAYED into STAT (ID,IP,UTIME) values (null,$ip,NOW()). Он позволяет серверу ответвлять поток в режиме ожидания, а саму вставку производить тогда, когда сервер освободится от других запросов или поступит следующий аналогичный INSERT DELAYED. Обычно отложенный метод подходит для любых операций с кумулятивными таблицами (когда в основном идут INSERTы, а данные копятся, а не модифицируются), при которых не особо важно когда именно подействуют изменения - мгновенно или через несколько секунд, минут. Например, если хотите собирать IPадреса своих посетителей, УРЛы, по которым они ходят или страницы, откуда пришли, время. При добавлении с задержкой скрипт отработает почти мгновенно, еще до выполнения операции.
Операция UPDATE идет в три этапа: поиск того, что будете менять, затем запись данных, обновление индексов. При этом, чем больше таблица, тем дольше поиск. Если есть индексы, то операция кешируется и выполняется достаточно быстро. Но сам процесс очень емкий. И только дурак не догонит, что большая таблица со множеством индексов и записей, будет тормозить при UPDATE. INSERT же выполняется одним залпом, очень быстро. Поэтому обычно используют аддитивные записи (вставками INSERT) во временные таблицы, потом блокируют основные талицы, суммируют обновления, и плюют их в основную таблицу. Получается, что в основном, главные таблицы работают только в режиме вывода, а обновления идут гораздо реже и быстрее. Например, можно копить данные о загрузках новостей во временной таблице, а по крону или иным образом обновлять счетчик каждые 10 минут (или реже). Это ускорит работу сервера.
При запросах SELECT * FROM таблица скрипт получит все поля данной таблицы. А нужно ли это? Использование * ведет к лишнему расходу ресурсов. Гораздо эффективнее использовать точные названия полей, которые нужны скрипту. Например: SELECT id,name FROM таблица. При таком запросе передача займет меньше времени и понадобится меньше ресурсов. Старайтесь ограничивать вывод при помощи директивы LIMIT. Это также ускоряет вывод.
Поиск по БД идет быстрее если вместо LIKE '%слово%', ставить 'слово%'. Операции с шаблонами регулярных выражений кешируются только в том случае, если в начале отсутствует символ %. Поэтому при построении поисковых запросов с LIKE избегайте начинающих символов %.
При построении таблиц для наиболее используемых полей (при поиске, сортировке и т.д.) обязательно создавайте индексы. Без индексов таблицы будут сильно тормозить. Индексы служат для кеширования и позволяют существенно ускорить вывод данных из таблиц. При этом таблицы будут занимать больше места на диске и в памяти. Но это в наше время не проблема.
Используйте надлежащий тип полей для своих записей. Тип TINYINT занимает 1 байт - самый быстрый. Таблицы с MEDIUMINT быстрее таблиц с INT. Если ставить полям свойство NOT NULL, то в целом их работа будет быстрее. VARCHAR медленее CHAR, поэтому таблицы переменной длины (где есть тип VARCHAR или TEXT) занимают меньше дискового пространства, но работают медленнее.
По своему опыту скажу, что для большинства сайтов подходят изложенные советы по работе с MySQL. Чтобы еще больше ускорить свой сервер, советую частоиспользуемые операции проводить по крону выделенными процессами и писать данные в различные файлы. Например, раз в 20 минут запускать скрипт, который будет создавать файл с новостями. Или например, генерить файл с новостями при их добавлениях или обновлениях. Таким образом, вы экономите на каждом обращении к БД. Интерактивность при этом не теряется, а производительность увеличивается во много раз. Особенно, повторяю, при высокой посещаемости ресурса. Старайтесь отделить интерактивные операции от фоновых. Например, на ПротоПлексе работает один интерактивный движок, но в фоне по заданиям трудятся с десяток различных роботов, которые генерируют часто вызываемые страницы, рассылают письма и т.д. Крупный сайт - это не только то, что вы видите, но и бек-енд (обратная сторона). В фоновом режиме можно быстро и эффективно готовить контент, освобождая основной движок от лишней работы.
В общем, основы должны быть всем понятны. Дробите все на мелочи, будь то запросы, таблицы или операции. Структура БД должна быть такой, чтобы не выполнялось ничего лишнего. Регулярно проводите OPTIMIZE на таблицах с переменной длиной, особенно, если в них идут удаления записей. Тестируйте свои запросы на скорость, упрощайте их.
Последний представленный компанией Microsoft продукт семейства Windows 2003 - является прямым продолжением Windows 2000. Эта система предназначена, в основном, для серверного, а не для домашнего использования. Но некоторое количество усилий и грамотный тюнинг системы позволят превратить домашний компьютер в стабильный мультимедийный игровой сервер.
Практически ежегодно Microsoft представляет публике новую версию самого популярного своего продукта - операционной системы Windows. По традиции компания обещает, что именно эта, последняя версия наиболее стабильна, надежна и удобна. Все по той же традиции пользователи ждут "улучшений" с изрядной долей пессимизма…
Конечно, идеальной операционной системы не существует, и семейство Windows имеет как плюсы, так минусы. Однако, положа руку на сердце, признаем: прогресс, в первую очередь в стабильности, есть. Кроме того, следует учитывать, что продукцией Microsoft пользуются десятки миллионов пользователей во всем мире - и угадать конфигурацию компьютера, индивидуальные потребности к внешнему оформлению и набору программ просто невозможно. Поэтому, установив Windows на свой ПК, не рассчитывайте, что дальше система будет работать идеально - она будет работать стандартно, в расчете на среднестатистические потребности пользователя.
Семейство Windows 2003 Server (Standard, Enterprise, Web и Datacenter Edition) является прямым продолжением Windows 2000 Server. В отличие от Windows ХР, которая является гибридом Windows Ме и Windows 2000, новая система предназначена, в основном, для серверного, а не для домашнего использования. Соответственно, многие функции, присущие "домашнему" компьютеру… исчезли. Но небольшое количество усилий, грамотный тюнинг системы - и стабильный мультимедийный игровой сервер к вашим услугам!
Установка драйверов
Установка системы практически идентична инсталляции Windows ХР, поэтому не будем на ней останавливаться - основные трудности впереди.
Первое, с чем сталкивается пользователь после установки Windows 2003 Server, это отсутствие драйверов под эту версию Windows. По умолчанию большинство устройств на вашем компьютере будет работать, но… например, видеокарта без 3D-функций в наше время мало кого заинтересует.
Первый делом следует создать нового пользователя. Для этого нажимаем на кнопку Start (Пуск) и выбираем подменю Run (Выполнить). Далее вводим команду lusrmgr.msc - и попадаем в программу User Management (Управление пользователями). Правой клавишей мышки кликаем на папке User (Пользователи) в левой части окна и выбираем меню New User (Новый пользователь). Прописываем имя пользователя и, при желании, пароль. Подтверждаем создание и после этого выбираем - при помощи правой клавиши мыши - Properties (Свойства) нового пользователя. Переходим на вкладку Member of (Участник группы), нажимаем кнопку Add (Добавить), далее Find Now (Найти) и дважды кликаем на Administrators (Администраторы).
Итак, новый пользователь с правами администратора создан, остается перезагрузиться под новым логином.
Кстати, просто так перезагрузить и даже просто выключить компьютер уже не удастся. На экране появится окно, в котором система попросит указать причину перезагрузки/выключения. Зачем это нужно? Отвечать на этот вопрос предоставим компании Microsoft, а сами тем временем зайдем в уже знакомое пусковое меню и в подменю Run… (Выполнить) введем команду mmc. Выбираем меню File (Файл), а в нем Add/Remove Snap-in… (Добавить / Убрать Snap-in…). Далее следуем по пунктам меню: Add, Group Policy Object Editor, Add. После этого нажимаем кнопку Finish (Завершить). Переходим в Local Computer Policy > Computer Configuration > Administrative Templates - и выбираем папку System. Дважды кликаем на Display Shutdown Event Tracker. В появившемся меню выбираем Disabled, нажимаем и выходим из программы. Теперь перезагрузка/выключение компьютера буде проходить аналогично Windows 2000.
После того как система загружена под вновь созданным логином, следует приступить к настройке драйверов. Для этого необходимо зайти в Desktop Properties (Свойства экрана) с помощью Control Panel (Панели управления): Пуск > Панель управления > Display (Экран).
Далее переходим на последнюю вкладку - Advanced (Дополнительно) и нажимаем кнопку Troubleshoot (Неисправности). В появившемся меню передвигаем ползунок Hardware Acceleration (Аппаратное ускорение) максимально вправо. Закрываем окна и устанавливаем драйвера под видеокарту. Теперь система не будет выдавать ошибку о несовпадении версии драйвера и Windows. Кстати, для установки подходят драйверы как Windows ХР, так и Windows 2000.
По умолчанию в Windows 2003 Server установлен DirectX 8.1, но отключена поддержка 3D-функций. Кстати, самой папки DirectX в Programs Files (Программные файлы) нет, поэтому следует ввести команду dxdiag в подменю Run… (Выполнить). Открывается окно DirectX, где на вкладке Display (Экран) необходимо включить (нажать кнопки Enabled) функции аппаратного ускорения.
По мнению специалистов компании Microsoft, для полноценной работы сервера звук не обязателен. Соответственно, звуковые функции вашего компьютера по умолчанию будут отключены. В Панели управления есть вкладка Administrative Tools (Средства администрирования), внутри которой выбираем Services (Службы). В появившемся окне размещен список служб, установленных на ПК. Некоторые из них не включены, в том числе и Windows Audio. Дважды кликаем мышкой - и в появившемся окне, в поле Startup type (Способ загрузки), выбираем Automatic, нажимаем Start (Запустить). При необходимости следует выбрать в Панели управления раздел Sound and Audio Devices (Мультимедийные устройства) и в появившемся окне включить громкость звука (перетащить ползунок в крайнее правое положение).
Изменение внешнего вида
Сразу после установки Windows 2003 Server будет иметь спартанский вид (как Windows 2000). Единственное отличие: стартовое меню, частично схожее с Windows ХР. Это практично, удобно, выгодно с точки зрения экономии ресурсов - в общем, прекрасно подходит для сервера, где вид рабочего стола - далеко не самое главное. Однако на домашнем компьютере хочется видеть нечто более яркое, чем стандартные окна Windows.
Возможность преобразовать внешний вид в стиль Windows ХР есть - хотя и скрыта в недрах системы. В первую очередь необходимо включить службу Themes. Для этого заходим в службы (Control Panel > Administrative Tools > Services) и дважды кликаем на службе Themes. В появившемся окне выбираем тип запуска Automatic (Автоматически) и перезагружаем компьютер. После перезагрузки заходим в свойства экрана, кликнув для этого правой клавишей мыши на рабочем столе и выбрав пункт Properties (Свойства). На вкладке Themes выбираем вместо темы Windows Classic тему Windows XP. Теперь рабочий стол и окна приложений приобретут знакомый стиль Windows ХР.
Кроме того, в свойствах системы (Control Panel > System) на вкладке Advanced в разделе Visual Effects есть возможность дополнительной настройки визуальных эффектов Windows.
Десять шагов к идеальной системе
1. Одно из последних усовершенствований системы - параметр prefetch. Его задача заключается в ускорении загрузки приложений. Включение этого параметра не влияет на скорость слишком ощутимо, однако в бою все средства хороши. Для включения этого параметра кликните правой клавишей мыши на ярлыке нужной программы и выберите в появившемся меню пункт Properties (Свойства). В строке Object (Объект) после указания пути к файлу добавьте /prefetch:1 (пробел перед ключом обязателен).
2. Перейдите к закладке Advanced (Дополнительно) в Performance Options (Параметрах быстродействия) и убедитесь, что распределение ресурсов процессора и памяти выставлено на оптимизацию работы Programs (Программ) - указывать приоритет фоновых служб и кэша необходимо, только если ваш компьютер выполняет роль сервера. В опции Memory usage при объеме физической памяти 256 Мб и выше отметьте параметр System cache. Если же памяти на компьютере меньше 256 Мб, система будет работать быстрее при установленном значении Programs.
3. Проверим правильность настройки жесткого диска. В свойствах системы откройте Device Manager (либо, открыв свойства любого диска в Проводнике, закладка Hardware) и просмотрите свойства вашего жесткого диска. Убедитесь, что в закладке Polices стоит отметка Enable write caching on the disk. Если диск SCSI доступны следующие значения в закладке SCSI Properties: Disable Tagged Queuing и Disable Synchronous Transfers должны быть не отмечены.
4. Убедитесь, что DMA включено для всех IDE-устройств системы. Проверить это можно следующим образом: Device Manager > IDE ATA/ATAPI controllers > Primary/Secondary IDE Channel > Advanced Settings. Параметр Device Type позволяет системе автоматически определять подключенные устройства (если канал свободен, установите значение None - это немного ускорит загрузку системы).
Параметр Transfer mode Windows ставит, как правило, по умолчанию и позволяет Windows использовать максимальный DMA, поддерживаемый устройством либо PIO, убедитесь, что значение установлено DMA if available.
5. Для ускорения навигации по папкам, содержащим графические файлы, можно отметить пункт Do not cash thumbnails (Не кэшировать эскизы). Для этого следует зайти в Control Panel (Панель управления) > Folder Options (Свойства папки) > View (Вид), а заодно убрать "галочку" с пункта Remember each folder`s view setting (Помнить параметры отображения каждой папки).
6. Поиск в Windows 2003 Server по умолчанию производится и в.zip-архивах. Скорость поиска возрастет, если отключить эту службу. Для этого в командной строке необходимо набрать:
Код:
или же:
Код:
Для включения поиска в.zip-архивах:
Код:
или же:
Код:
7. В отличие от более ранних версий Windows, в процессе установки Windows 2003 Server нет возможности выбирать необходимые компоненты. Удалить/установить можно лишь незначительную часть программ (Control Panel > Add or Remove Programs > Add/Remove Windows Components). Список невелик - большая его часть скрыта от глаз неопытного пользователя.
Для решения этой проблемы открываем системную папку Inf (по умолчанию - C:WindowsInf), находим в ней файл sysoc.inf, открываем его и удаляем во всех строках слово HIDE. Главное при этом - оставить неизменным формат файла, то есть следует удалять только HIDE, оставляя запятые до и после этого слова.
Для примера - исходная строка и та, что должна получиться:
Код:
Сохраняем файл sysoc.inf, открываем Add/Remove Windows Components - и видим уже значительно более длинный список.
8. Служба индексирования создает индексы содержимого и свойств документов на локальном жестком диске и на общих сетевых дисках. Имеется возможность контроля за включением сведений в индексы. Служба индексирования работает непрерывно и практически не нуждается в обслуживании. Однако процесс индексирования потребляет большое количество ресурсов процессора. Если вы не пользуетесь активно поиском по контексту файлов, данную службу можно отключить. Для этого заходим в Control Panel (Панель управления) > Add or Remove Programs (Установка и удаление программ) - Add/Remove Windows Components (Установка компонентов Windows). В появившемся списке ищем Службу индексирования и убираем "галочку".
9. Если вам не нравятся "излишества" в новом оформлении XP или конфигурация вашего компьютера не позволяют вам ими наслаждаться, интерфейс можно вернуть к "стандартному" виду. Для этого необходимо зайти в Control Panel (Панель задач) > System (Система) и перейти на вкладку Advanced (Дополнительно). Выбираем раздел настройки визуальных эффектов.
10. Довольно часто у домашнего компьютера только один пользователь, так что необходимости в пароле при запуске системы нет. В отличие от предыдущих версий, в этой Windows 2003 пароль убрать не так-то просто.
В процессе загрузки можно пропустить выбор имени пользователя и набор пароля. Выберите Run… (Выполнить) из меню Start (Пуск) и наберите control userpasswords2, что приведет к открытию окна User Accounts (Учетные записи пользователей). На вкладке Users (Пользователи) удалите флажок у позиции Users must enter a user name and password to use this computer (Требовать ввода имени пользователя и пароля). После подтверждения появится диалоговое окно, в котором система предложит ввести имя пользователя и пароль для нужной учетной записи.
режде, чем применять Flash на сайте, нужно семь раз отмерить. Оказывается, не все знают, что это такое. Одни применяют Flash от необходимости, другие — от незнания. Дело в том, что Flash — это не обычная растровая (gif, jpg, bmp и т.п.) картинка и не html. А мультемидийная технология. Как у любой технологии, у этой есть свои преимущества и недостатки.
Рассматривать Flash-технологию стоит с нескольких позиций:
С точки зрения внешнего оформления и культуры сайта;
C функционально-технической стороны;
C практической стороны.
Оформление и культура сайта.
Сайт — это как книга. Вы покупаете книгу, потому что ее сюжет вам интересен или информация из нее вам полезна. Но не потому, что у нее красивая обложка или известный автор. То время, когда изумленный прогрессом интернетчик приходил на сайт, чтобы посмотреть, как там что-то прыгает-летает-плавает прошло. Теперь людей заботит информация.
Flash препятствует восприятию информации. Сайт, построенный на Flash больше напоминает игру для новомодной приставки или телевизионную рекламу, когда сидишь и ждешь, когда она закончится. В большинстве случаев это связано с изменением привычного для пользователя хода вещей, например, вмешательством в интерфейс, навязыванием анимации и даже звука. Сайт — не самоцель, он существует для посетителя (кроме домашних страничек, которые их авторы для себя же делают).
Функционально-техническая сторона.
Flash использует plug-in модули, мультемидийные функции, на сегодняшний день не интегрированные в браузеры. В силу присущих Flash-технологии свойств она имеет функциональные недостатки:
Наличие этих недостатков совсем не означает, что надо вовсе отказаться от Flash . Просто с одной стороны на весы нужно положить необходимость использования Flash -элемента, с другой стороны — его недостатки
Обесцениваются функции браузера:
Регулировка размера шрифта. Изменять шрифт средствами стандартных функций браузера нельзя. Поэтому шрифт у посетителя будет таким, каким его задал дизайнер (для справки: все дизайнеры обладают прекрасным зрением, делая шрифты мелкими и очень мелкими);
Кнопка «назад». Она перемещает не к началу сценария анимации, как ожидается, а на предыдущую страницу сайта, где Flash-элемент еще/уже отсутствует;
Поиск по странице.
Гиперссылки лишаются важного качества — изменяемости цвета в зависимости от движения по сайту посетителя. Вспоминаешь, был ли ты на этой странице или нет. Таким образом, затрудняется навигация по сайту в целом;
Вес страниц увеличивается в разы;
Навигация во Flash-сайтах часто неудобна;
Сайты, построенные на Flash в большинстве случаев некорректно работают в офлайне (т.е. когда страницы сайта скачаны на компьютер пользователя и просматриваются в автономном режиме).
По отношению к крупным информационным сайтам Flash обладает еще большим недостатком — невозможностью индексирования текстов во flash -элементах. У сайтов, полностью построенных на Flash , всегда низкая степень релевантности.
Практическая сторона.
Кроме технических тонкостей, которые увидит не каждый, Flash обладает рядом весомых практических недостатков:
Flash-элементы имеют большой размер. Мультимедийные возможности Flash широки, поэтому дизайнер просто не удерживается, чтобы не поэксплуатировать их;
Flash-ролики создаются раз и навсегда. Вместо этого можно уделить внимание более частому обновлению содержания сайта;
Скачанные на компьютер Flash-сайты отображаются некорректно. Информация, находящаяся во Flash-формате недоступна (для закачки Flash-элементов требуется программное обеспечение, которое обычно отсутствует у пользователя).
Прежде, чем применять Flash на сайте, надо поставить себя на место пользователя: нужна информация; мало времени; модемная скорость; трафик заканчивается.
Выводы:
Flash противопоказан крупным информационным сайтам (главная цель которых — погоня за посетителями);
Flash применим для малого сайта узкой специализации (например, для сайта, чей адрес узнается с визитки его представителя и только);
Использование Flash хорошо подходит для рекламы и развлечений (баннеры, промо-сайты, игры);
Если можно обойтись без Flash, лучше обойтись без Flash.
Примечание - большая часть написанного здесь текста с примерами взята по памяти (пару лет назад изучал достаточно подробно, поэтому может что-то в алгоритмах не работать - я ведь их не копировал откуда-то, а прямо тут же и писал, так что за синтаксические ошибки не пинайте) - на данный момент я активно OLE не пользуюсь (не из-за каких-то проблем с самим OLE, а из-за отсутствия надобности в его использовании в текущий момент).
Основные преимущества, благодаря которым OLE активно используется:
* Для вызывающей базы "по барабану" - какой тип вызываемой базы (DBF или SQL)
* Объектами вызываемой базы можно управлять всеми известными методами работы с объектами в 1С (т.е. со справочниками работают методы ВыбратьЭлементы(), ИспользоватьДату() и т.п., с документами - ВыбратьДокументы() и т.п.), соответственно, можно напрямую решить - стоит отрабатывать конкретные объекты базы OLE или пропустить их.
Пример 1. Присоединение к базе 1С через OLE.
БазаОле=СоздатьОбъект("V77.Application"); // Получаем доступ к OLE объекту 1С
Локальная версия (на одного пользователя): V77L.Application
Сетевая версия: V77.Application
Версия SQL: V77S.Application
Далее вместо термина "вызываемая база" будет написано просто "база OLE", а вместо термина "вызывающая база" - "местная база"
Теперь, мы должны знать несколько параметров для запуска базы OLE: Каталог базы, имя пользователя и пароль. Ну, наверное, еще и желание запустить 1С в монопольном режиме :)
Комментарий: функции СокрЛП() стоят в примере на случай, если пользователь захочет указанные выше переменные сделать в форме диалога, а проблема при этом состоит в том, что в алгоритм программа передаст полное значение реквизита (т.е. допишет в конце значения то количество пробелов, которое необходимо для получения полной длины строки (указана в свойствах реквизита диалога)).
Пример 2. Доступ к объектам базы OLE.
Запомните на будущее как непреложный факт:
1. Из местной базы в базу OLE (и, соответственно, наоборот) напрямую методом присвоения можно перенести только числовые значения, даты и строки ограниченной длины!!! Т.е. местная база поймет прекрасно без дополнительных алгоритмов преобразования полученного значения только указанные типы значений. Кроме того, под ограничением строк подразумевается проблемы с пониманием в местной базе реквизитов объектов базы OLE типа "Строка неограниченной длины". К этому же еще надо добавить и периодические реквизиты. Естественно, под методом присвоения подразумеваются и попытки сравнить объекты разных баз в одном условии (например, в алгоритмах "Если" или "Пока" и т.п.).
2. Есть проблемы при попытке перенести "пустую" дату - OLE может ее конвертировать, например, в 31.12.1899 года и т.п. Поэтому вам лучше заранее выяснить те значения, которые могут появится в местной базе при переносе "пустых" дат, чтобы предусмотреть условия преобразования их в местной базе.
A) Доступ к константам базы OLE:
Б) Доступ к справочникам и документам базы OLE (через функцию "CreateObject"):
После создания объекта справочника или документа к ним применимы все методы, касающиеся таких объектов в 1С:
Заметьте, что если вместо "Сообщить(Спр.Наименование)" вы укажете "Сообщить(Спр.ТекущийЭлемент())", то вместо строкового/числового представления этого элемента программа выдаст вам в окошке сообщение "OLE". Именно это я и имел в виду, когда говорил, что напрямую мало что можно перенести. Т.е. не будут работать следующие методы (ошибки 1С не будет, но и результат работы будет нулевой). Рассмотрим следующий пример:
Однако, сработает следующий метод:
Отсюда вывод: возможность доступа к объектам базы 1С через OLE требуется, в основном, только для определенной задачи - получить доступ к реквизитам определенного элемента справочника или документа. Однако, не забываем, что объекты базы OLE поддерживают все методы работы с ними, в т.ч. и "Новый()", т.е. приведем пример противоположный предыдущему:
В) Доступ к регистрам базы OLE (Не сложнее справочников и документов):
Г) Доступ к перечислениям базы OLE (аналогичен константе):
ЗначениеПеречисленияOLE = БазаОле.Перечисление.Булево.НеЗнаю; // :)
Заметьте, что пользы для местной базы от переменной "ЗначениеПеречисленияOLE" особо-то и нет, ведь подобно справочнику и документу перечисление также напрямую недоступно для местной базы. Пожалуй, пример работы с ними может быть следующим (в качестве параметра условия):
По аналогии со справочниками и документами работает объект "Периодический", план счетов работает по аналогии с ВидомСубконто, ну и далее в том же духе… Отдельную главу посвятим запросу, а сейчас… стоп. Еще пункт забыл!
Ж) Доступ к функциям и процедурам глобального модуля базы OLE!
Как же я про это забыл-то, а? Поскольку при запуске базы автоматически компилируется глобальный модуль, то нам становятся доступны функции и процедуры глобального модуля (поправлюсь - только те, у которых стоит признак "Экспорт"). Плюс к ним еще и различные системные функции 1С. А доступны они нам через функцию 1С OLE - EvalExpr(). Приведем примеры работы с базой OLE:
На самом деле, в последней строке примера я исхитрился и забежал немного вперед. Дело в том, что как и запрос (см. отдельную главу), так и EvalExpr() выполняются внутри базы OLE, причем команды передавается им обычной строкой, и поэтому надо долго думать, как передать необходимые ссылки на объекты базы OLE в строке текста местной базы. Так что, всегда есть возможность поломать голову над этим…
Алгоритмы преобразования объектов в "удобоваримый вид" между базами.
Ясно, что алгоритмы преобразования нужны не только для переноса объектов между и базами, но и для такой простой задачи, как попытки сравнить их между собой.
И еще раз обращу внимание: ОБЪЕКТЫ ОДНОЙ БАЗЫ ПРЕКРАСНО ПОНИМАЮТ ДРУГ ДРУГА, ПРОБЛЕМЫ ВОЗНИКАЮТ ТОЛЬКО ТОГДА, КОГДА ВЫ НАЧИНАЕТЕ СВЯЗЫВАТЬ МЕЖДУ СОБОЙ ОБЪЕКТЫ РАЗНЫХ БАЗ, т.е. команда
будет прекрасно работать без ошибок. Не забывайте это, чтобы не перемудрить с алгоритмами!
Итак, повторяюсь, что напрямую перенести, да и просто сравнить можно только даты (причем не "пустые"), числа и строки ограниченной длины. Итак, как же нам сравнить объекты разных баз (не числа, не даты, не строки), т.е. как их преобразовать в эту самую строку/число/дату.
А) Преобразование справочников/документов базы OLE (если есть аналогичные справочники/документы в местной базе). В принципе, преобразование их было уже рассмотрено в примерах выше и сводится к поиску их аналогов в местной базе. Могу еще раз привести пример, заодно с использованием регистров:
Б) Преобразование перечислений и видов субконто (подразумевается, что в обоих базах есть аналогичные перечисления и виды субконто). Вся задача сводится к получению строкового или числового представления перечисления или вида субконто.
Не поймите это как прямую команду воспользоваться функцией Строка() или Число() :)) Нет. Для этого у нас есть обращение к уникальному представлению перечисления и вида субконто - метод Идентификатор() или ЗначениеПоНомеру(). Второй вариант не очень подходит, так как зачастую в разных базах даже перечисления бывают расположены в другом порядке, а вот идентификаторы стараются держать одинаковыми в разных базах. Отсюда вывод, пользуйтесь методом Идентификатор(). Кстати, не путайте вид субконто с самим субконто! Привожу пример преобразования:
То же самое относится и к плану счетов - принцип у него тот же, что и у вида субконто…
В) Преобразование счетов:
Во многом объект "Счет" аналогичен объекту "Справочник". Отсюда и пляшем:
Работа с запросами и EvalExpr().
Наконец-то добрались и до запросов. Надо пояснить несколько вещей, касаемых запросов (да и EvalExpr() тоже). Самое главное - компиляция текста OLE-запроса (т.е. разбор всех переменных внутри запроса), как и сами OLE-запросы выполняются внутри базы OLE и поэтому ни одна переменная, ни один реквизит местной базы там недоступны, да и запрос даже не подозревает, что его запускают по OLE из другой базы!!! Поэтому, чтобы правильно составить текст, иногда требуется не только обдумать, как передать параметры запроса в базу OLE, но и обдумать, что нужно добавить в глобальный модуль той самой OLE-базы, чтобы как-то собрать для запросы переменные!
1. Поскольку сам текст запроса и функции EvalExpr() является по сути текстом, а не набором параметров, то напрямую передать ему ссылку на элемент справочника, документ, счет и т.п. нельзя. Исключение может быть составлено для конкретных значений перечислений, видов субконто, констант, планов счетов и т.п.
2. Хоть и многим и так понятно, что я скажу дальше, но я все-таки уточню: при описании переменных в тексте запроса не забывайте, что объекты базы надо указывать напрямую, без всяких префиксов типа "БазаОле".
3. Отрабатывать запрос сложно тем, что ошибки, например, при компиляции напрямую не увидеть. Поэтому начинаем пошагово готовится к отработке запроса в базе OLE.
Вначале допишем в глобальном модуле базы OLE немного строк, которые нам помогут в работе:
Теперь начинаем потихоньку писать сам запрос. Что мы имеем:
В форме диалога местной базы несколько реквизитов диалога (либо местные переменные):
* Даты периода (НачДата и КонДата)
* Элементы справочников для фильтрации (ВыбТовар, ВыбФирма, ВыбКлиент, и т.д.)
* Какие-либо флажки (ТолькоЗамерзающийЗимойТовар , ..)
Мы начинаем писать запрос и сразу попадаем в такую ловушку:
ТекстЗапроса = " Период с НачДата по КонДата; ";
Вроде все в порядке, но такой запрос не выполнится в базе OLE, так как там понятия не имеют, что такое НачДата и КонДата :)) Ведь эти переменные действительны только для местной базы! Переписываем запрос заново:
Казалось бы все очень просто. По аналогии - если уникальность для товаров ведется по наименованию, то простой заменой слова "код" на "наименование" мы решаем вопрос и здесь. Теперь рассмотрим, когда мы выбрали группу, т.е. текст условия должен будет выглядеть так:
И здесь, правда можно проблему решить "двумями путями" :)) Первый пусть - когда мы имеем дело с двухуровне вымсправочником. Тогда проблема группы решается также просто, как и в 1-м варианте:
А если справочник очень даже многоуровневый? Вот для этого мы и используем написанную ранее функцию. Предположим, что список значений запроса с индексом массива " 1 " мы будем использовать для хранения подобных значений (например, хранить в нем группы товаров, клиентов) для хитрых условий. Итак, например, в ВыбТовар у нас указана группа товаров, а в ВыбКлиент - группа клиентов, которым мы товары группы ВыбТовар продавали. Кроме того, мы должны пропустить накладные возвратов поставщикам, и не забыть, что товары надо еще отбирать по флажку ТолькоЗамерзающийЗимойТовар:
Ну, а с реквизитами запроса разбираемся так же, как указано было выше в предыдущих разделах… И не забываем, что кроме хранения конкретных значений, можно использовать другие списки значений запроса. Например, можно заполнить какой-либо список значений запроса списком клиентов и использовать его в запросе:
Еще недавно устройств поддерживающих Wi-Fi было не так уж много это компьютеры да точки доступа. В настоящее время с Wi-Fi могут работать сотовые телефоны, веб-камеры, мультимедиа-центры, проекторы и принтеры!
Многим из этих устройств не нужны точки доступа, они работают от передатчика подключенного к компьютеру. Имея такое оборудование многие забыли что такое спотыкаться о провода опутывающие квартиру.
Мультимедиа в домашней Wi-Fi сети или какие бывают беспроводные устройства.
Еще недавно устройств поддерживающих Wi-Fi было не так уж много это компьютеры да точки доступа. В настоящее время с Wi-Fi могут работать сотовые телефоны, веб-камеры, мультимедиа-центры, проекторы и принтеры!
Многим из этих устройств не нужны точки доступа, они работают от передатчика подключенного к компьютеру. Имея такое оборудование многие забыли что такое спотыкаться о провода опутывающие квартиру.
Веб-камеры: «шеф, а я вас вижу!»
Веб-камер работающих по интерфейсу Wi-Fi выпускается большое количество. Такое устройство можно установить в любом месте квартиры или офиса и наблюдать за происходящим через специальную интернет-страничку с домашней локальной сети.
Самые доступные устройства этой категории делает компания D-Link. Это веб-камеры D-Link DCS-G900 и D-Link — DCS-5300G.
DCS-G900 может автоматически включаться при обнаружении на подведомственной территории чьего-то движения. Очень полезная функция при установке домашней охранной системы.
Преимущество D-Link — DCS-5300G перед DCS-G900 заключается в подвижной головке с управляемым приводом вращения. Благодаря этому устройство можно направлять практически в любую точку пространства.
Единственный минус этих веб-камер малое разрешение обеих моделей — они могут передавать видео в разрешении лишь 320x240 точек, зато с частотой 30 кадров в секунду.
Фотоаппараты: передай мгновение.
Использование Wi-Fi в фотоаппаратах более чем обосновано — можно передавать картинки на компьютер, не подсоединяя ненавистные провода и не вытаскивая флэш-карту. Среди таких устройств можно выделить Nikon Coolpix L4.
Это компактная фотокамера с 4-мегапиксельным сенсором и трехкратным оптическим зумом. Есть у нее возможность макросъемки и записи видео в разрешении до 640x480 с частотой 15 кадр./с. Для хранения снимков применяются карточки памяти SD.
Единственный недостаток фотоаппарата в том, что для передачи кадров необходимо устанавливать дополнительные программы — в гостях воспользоваться беспроводными коммуникациями не удастся.
Еще одно устройство, оснащенное беспроводными коммуникациями, — это Canon Digital IXUS Wireless — 5-мегапиксельная фотокамера с 3-кратным оптическим зумом. Она способна записывать видео в разрешении до 640x480 точек и с частотой до 60 кадров в секунду. В качестве хранилища информации также используются карты SecureDigital.
Принтеры: твердые копии цифрового мира.
Одним из представителей таких устройств является принтер HP DeskJet 6983. В нем используется классическая термическая струйная технология с разрешением до 4800x1200 dpi и четырьмя картриджами, максимальный формат печати — лист A4.
Принтер быстр — в режиме черно-белой печати может выдавать до 36 страниц в минуту, а на цветной до 27 страниц в минуту. Устройство можно подключать как по интерфейсу USB, так и с помощью Wi-Fi. В последнем случае оно, увы, может работать только в режиме Ad-Hoc — при непосредственном контроле с компьютера.
Самым признанным считается офисный лазерный принтер с поддержкой Wi-Fi Epson AcuLaser C1900. Устройство позволяет печатать с разрешением 600x600 dpi. Скоростью оно, правда, не большая — до 4 страниц в минуту в режиме цветной печати, и до 16 — в черно-белой, — зато качество выше всяких похвал.
VoIP: бесплатные слова.
Сейчас в глобальной сети существует множество компаний, дающих возможность бесплатно или очень дешево переводить звонки из интернета на городские и мобильные телефоны. И если в квартире есть Интернет, то грех этим не воспользоваться для почти бесплатных звонков по всему миру.
Конечно, пользоваться этими сервисами можно и с помощью проводной гарнитуры или микрофона и наушников, но беспроводная связь намного удобнее и комфортней.
Например такой смартфон с поддержкой Wi-Fi, I-Mate SP5m. Он снабжен высококачественным цветным экраном с разрешением 320x240 точек, может работать в сетях GSM всех четырех диапазонов и использоваться в качестве MP3-плеера (информация хранится на карточках TransFlash). Смартфон по умолчанию работает в режиме автоматического роуминга — в «безинтернетном» месте он звонит по GSM, в хот-спотах же переключается на VoIP-телефонию.
Естествинно это не единственный смартфон. Для бесплатного разговора можно применять любой КПК или смартфон, в котором есть Wi-Fi, — например, HP iPAQ hx2415, Fujitsu-Siemens Pocket LOOX 710, Dell Axim X50v, Tungsten C.
Мультимедийные центры: кино и радио.
Лучше всего отдохнуть и расслабиться в любимой квартире, с бутылкой пива в руке, конечно за просмотром хорошего фильма. В этом поможет мультимедийный центр D-Link DSM-320. Он обеспечивает доступ к видеоархиву на компьютере из любой комнаты. Достаточно подсоединить к видеовыходу телевизор, а к аудио — звуковую систему, и можно наслаждаться кино или музыкой, хранящимися на жестком диске компьютера. Поддерживаются форматы звука MP3, WMA и WAV, видео — MPEG1/2/4, DIVX, QuickTime и Xvid, а также графические файлы — JPEG, JPEG2000, TIFF, GIF, BMP или PNG. Можно также прослушивать онлайновые радиостанции.
Есть еще боле продвинутая модернизация DSM-300 — это D-Link DSM-320RD. В его состав также входит собственный DVD-проигрыватель и кард-ридер SD — чтобы в случае, если диск оказывается под рукой, не бежать в другую комнату, дабы установить его в ПК. Увы, подобные недорогие устройства есть только у D-link.
Более дорогие устройства это Archos Pocket Media Assistant PMA430. Этот мультимедийный плеер работает на встроенной операционной системе Linux и позволяет проигрывать видео и аудио в самых разнообразных форматах. Его характеристики чем-то схожи с D-Link DSM-320RD — вот только DVD-привод, увы, отсутствует.
Самое полное решение проблемы домашнего кинотеатра — использование проектора. Для этих целей подходит Benq MP620. Это устройство выдает яркость в 2200 лм, контрастность картинки составляет 2000:1. Поддерживается разрешение XGA (1024x768).
И самым экзотическим устройством считается Wi-Fiрадио от Acoustic Energy. Посредством Wi-Fi устройство соединяется с сервером Reciva, который предоставляет список доступных интернет-станций и соединяет с выбранной.
По сравнению с обычным радио, которое имеет жесткий временной график, интернет-вещание позволяет заказать нужную передачу на любое удобное время. Кроме того, радио можно использовать в качестве клиентского модуля для проигрывания музыки с ПК.
Компьютер: свобода мышам.
И еще одно похожее устройство это Wireless VGA Extender (его другое название — LongView VGA Extender) но работающее не по технологии Wi-Fi.
Устройство состоит из двух частей — к одному блоку, внешним видом более всего напоминающему пресловутую точку доступа, можно подключить монитор, мышку и клавиатуру, второй устанавливается в сам компьютер. После этого системный блок можно запихать подальше под стол и забыть о нем.
Правда у этого устройства много недостатков — так, монитор можно подключить только по D-Sub, причем максимальное разрешение составит всего 1024x768, а мышки и клавиатуры поддерживаются только с интерфейсом PS/2.
Сеть всегда объединяет несколько абонентов, каждый из которых имеет право передавать свои пакеты. Но, как уже отмечалось, по одному кабелю одновременно передавать два (или более) пакета нельзя, иначе может возникнуть конфликт (коллизия), который приведет к искажению либо потере обоих пакетов (или всех пакетов, участвующих в конфликте). Значит, надо каким-то образом установить очередность доступа к сети (захвата сети) всеми абонентами, желающими передавать. Это относится, прежде всего, к сетям с топологиями шина и кольцо. Точно так же при топологии звезда необходимо установить очередность передачи пакетов периферийными абонентами, иначе центральный абонент просто не сможет справиться с их обработкой.
В сети обязательно применяется тот или иной метод управления обменом (метод доступа, метод арбитража), разрешающий или предотвращающий конфликты между абонентами. От эффективности работы выбранного метода управления обменом зависит очень многое: скорость обмена информацией между компьютерами, нагрузочная способность сети (способность работать с различными интенсивностями обмена), время реакции сети на внешние события и т.д. Метод управления – это один из важнейших параметров сети.
Тип метода управления обменом во многом определяется особенностями топологии сети. Но в то же время он не привязан жестко к топологии, как нередко принято считать.
Методы управления обменом в локальных сетях делятся на две группы:
* Централизованные методы, в которых все управление обменом сосредоточено в одном месте. Недостатки таких методов: неустойчивость к отказам центра, малая гибкость управления (центр обычно не может оперативно реагировать на все события в сети). Достоинство централизованных методов – отсутствие конфликтов, так как центр всегда предоставляет право на передачу только одному абоненту, и ему не с кем конфликтовать.
* Децентрализованные методы, в которых отсутствует центр управления. Всеми вопросами управления, в том числе предотвращением, обнаружением и разрешением конфликтов, занимаются все абоненты сети. Главные достоинства децентрализованных методов: высокая устойчивость к отказам и большая гибкость. Однако в данном случае возможны конфликты, которые надо разрешать.
Существует и другое деление методов управления обменом, относящееся, главным образом, к децентрализованным методам:
* Детерминированные методы определяют четкие правила, по которым чередуются захватывающие сеть абоненты. Абоненты имеют определенную систему приоритетов, причем приоритеты эти различны для всех абонентов. При этом, как правило, конфликты полностью исключены (или маловероятны), но некоторые абоненты могут дожидаться своей очереди на передачу слишком долго. К детерминированным методам относится, например, маркерный доступ (сети Token-Ring, FDDI), при котором право передачи передается по эстафете от абонента к абоненту.
* Случайные методы подразумевают случайное чередование передающих абонентов. При этом возможность конфликтов подразумевается, но предлагаются способы их разрешения. Случайные методы значительно хуже (по сравнению с детерминированными) работают при больших информационных потоках в сети (при большом трафике сети) и не гарантируют абоненту величину времени доступа. В то же время они обычно более устойчивы к отказам сетевого оборудования и более эффективно используют сеть при малой интенсивности обмена. Пример случайного метода – CSMA/CD (сеть Ethernet).
Для трех основных топологий характерны три наиболее типичных метода управления обменом.
Управление обменом в сети с топологией звезда
Для топологии звезда лучше всего подходит централизованный метод управления. Это связано с тем, что все информационные потоки проходят через центр, и именно этому центру логично доверить управление обменом в сети. Причем не так важно, что находится в центре звезды: компьютер (центральный абонент), как на рис. 1.6, или же специальный концентратор, управляющий обменом, но сам не участвующий в нем. В данном случае речь идет уже не о пассивной звезде (рис. 1.11), а о некой промежуточной ситуации, когда центр не является полноценным абонентом, но управляет обменом. Это, к примеру, реализовано в сети 100VG-AnyLAN.
Самый простейший централизованный метод состоит в следующем.
Периферийные абоненты, желающие передать свой пакет (или, как еще говорят, имеющие заявки на передачу), посылают центру свои запросы (управляющие пакеты или специальные сигналы). Центр же предоставляет им право передачи пакета в порядке очередности, например, по их физическому расположению в звезде по часовой стрелке. После окончания передачи пакета каким-то абонентом право передавать получит следующий по порядку (по часовой стрелке) абонент, имеющий заявку на передачу (рис. 4.8). Например, если передает второй абонент, то после него имеет право на передачу третий. Если же третьему абоненту не надо передавать, то право на передачу переходит к четвертому и т.д.
Централизованный метод управления обменом в сети с топологией звезда
Рис. 4.8. Централизованный метод управления обменом в сети с топологией звезда
В этом случае говорят, что абоненты имеют географические приоритеты (по их физическому расположению). В каждый конкретный момент наивысшим приоритетом обладает следующий по порядку абонент, но в пределах полного цикла опроса ни один из абонентов не имеет никаких преимуществ перед другими. Никому не придется ждать своей очереди слишком долго. Максимальная величина времени доступа для любого абонента в этом случае будет равна суммарному времени передачи пакетов всех абонентов сети кроме данного. Для топологии, показанной на рис. 4.8, она составит четыре длительности пакета. Никаких столкновений пакетов при этом методе в принципе быть не может, так как все решения о доступе принимаются в одном месте.
Рассмотренный метод управления можно назвать методом с пассивным центром, так как центр пассивно прослушивает всех абонентов. Возможен и другой принцип реализации централизованного управления (его можно назвать методом с активным центром).
В этом случае центр посылает запросы о готовности передавать (управляющие пакеты или специальные сигналы) по очереди всем периферийным абонентам. Тот периферийный абонент, который хочет передавать (первый из опрошенных) посылает ответ (или же сразу начинает свою передачу). В дальнейшем центр проводит сеанс обмена именно с ним. После окончания этого сеанса центральный абонент продолжает опрос периферийных абонентов по кругу (как на рис. 4.8). Если желает передавать центральный абонент, он передает вне очереди.
Как в первом, так и во втором случае никаких конфликтов быть не может (решение принимает единый центр, которому не с кем конфликтовать). Если все абоненты активны, и заявки на передачу поступают интенсивно, то все они будут передавать строго по очереди. Но центр должен быть исключительно надежен, иначе будет парализован весь обмен. Механизм управления не слишком гибок, так как центр работает по жестко заданному алгоритму. К тому же скорость управления невысока. Ведь даже в случае, когда передает только один абонент, ему все равно приходится ждать после каждого переданного пакета, пока центр опросит всех остальных абонентов.
Как правило, централизованные методы управления применяются в небольших сетях (с числом абонентов не более чем несколько десятков). В случае больших сетей нагрузка по управлению обменом на центр существенно возрастает.
Управление обменом в сети с топологией шина
При топологии шина также возможно централизованное управление. При этом один из абонентов ("центральный") посылает по шине всем остальным ("периферийным") запросы (управляющие пакеты), выясняя, кто из них хочет передать, затем разрешает передачу одному из абонентов. Абонент, получивший право на передачу, по той же шине передает свой информационный пакет тому абоненту, которому хочет. А после окончания передачи передававший абонент все по той же шине сообщает "центру", что он закончил передачу (управляющим пакетом), и "центр" снова начинает опрос (рис. 4.9).
Централизованное управление в сети с топологией шина
Рис. 4.9. Централизованное управление в сети с топологией шина
Преимущества и недостатки такого управления – те же самые, что и в случае централизованно управляемой звезды. Единственное отличие состоит в том, что центр здесь не пересылает информацию от одного абонента к другому, как в топологии активная звезда, а только управляет обменом.
Гораздо чаще в шине используется децентрализованное случайное управление, так как сетевые адаптеры всех абонентов в данном случае одинаковы, и именно этот метод наиболее органично подходит шине. При выборе децентрализованного управления все абоненты имеют равные права доступа к сети, то есть особенности топологии совпадают с особенностями метода управления. Решение о том, когда можно передавать свой пакет, принимается каждым абонентом на месте, исходя только из анализа состояния сети. В данном случае возникает конкуренция между абонентами за захват сети, и, следовательно, возможны конфликты между ними и искажения передаваемой информации из-за наложения пакетов.
Существует множество алгоритмов доступа или, как еще говорят, сценариев доступа, порой очень сложных. Их выбор зависит от скорости передачи в сети, длины шины, загруженности сети (интенсивности обмена или трафика сети), используемого кода передачи.
Иногда для управления доступом к шине применяется дополнительная линия связи, что позволяет упростить аппаратуру контроллеров и методы доступа, но заметно увеличивает стоимость сети за счет удвоения длины кабеля и количества приемопередатчиков. Поэтому данное решение не получило широкого распространения.
Суть всех случайных методов управления обменом довольно проста.
Если сеть свободна (то есть никто не передает своих пакетов), то абонент, желающий передавать, сразу начинает свою передачу. Время доступа в этом случае равно нулю.
Если же в момент возникновения у абонента заявки на передачу сеть занята, то абонент, желающий передавать, ждет освобождения сети. В противном случае исказятся и пропадут оба пакета. После освобождения сети абонент, желающий передавать, начинает свою передачу.
Возникновение конфликтных ситуаций (столкновений пакетов, коллизий), в результате которых передаваемая информация искажается, возможно в двух случаях.
* При одновременном начале передачи двумя или более абонентами, когда сеть свободна (рис. 4.10). Это ситуация довольно редкая, но все-таки вполне возможная.
* При одновременном начале передачи двумя или более абонентами сразу после освобождения сети (рис. 4.11). Это ситуация наиболее типична, так как за время передачи пакета одним абонентом вполне может возникнуть несколько новых заявок на передачу у других абонентов.
Существующие случайные методы управления обменом (арбитража) различаются тем, как они предотвращают возможные конфликты или же разрешают уже возникшие. Ни один конфликт не должен нарушать обмен, все абоненты должны, в конце концов, передать свои пакеты.
В процессе развития локальных сетей было разработано несколько разновидностей случайных методов управления обменом.
Коллизии в случае начала передачи при свободной сети
Рис. 4.10. Коллизии в случае начала передачи при свободной сети
Коллизии в случае начала передачи после освобождения сети
Рис. 4.11. Коллизии в случае начала передачи после освобождения сети
Например, был предложен метод, при котором не все передающие абоненты распознают коллизию, а только те, которые имеют меньшие приоритеты. Абонент с максимальным приоритетом из всех, начавших передачу, закончит передачу своего пакета без ошибок. Остальные, обнаружив коллизию, прекратят свою передачу и будут ждать освобождения сети для новой попытки. Для контроля коллизии каждый передающий абонент производит побитное сравнение передаваемой им в сеть информации и данных, присутствующих в сети. Побеждает тот абонент, заголовок пакета которого дольше других не искажается от коллизии. Этот метод, называемый децентрализованным кодовым приоритетным методом, отличается низким быстродействием и сложностью реализации.
При другом методе управления обменом каждый абонент начинает свою передачу после освобождения сети не сразу, а, выдержав свою, строго индивидуальную задержку, что предотвращает коллизии после освобождения сети и тем самым сводит к минимуму общее количество коллизий. Максимальным приоритетом в этом случае будет обладать абонент с минимальной задержкой. Столкновения пакетов возможны только тогда, когда два и более абонентов захотели передавать одновременно при свободной сети. Этот метод, называемый децентрализованным временным приоритетным методом, хорошо работает только в небольших сетях, так как каждому абоненту нужно обеспечить свою индивидуальную задержку.
В обоих случаях имеется система приоритетов, все же данные методы относятся к случайным, так как исход конкуренции невозможно предсказать. Случайные приоритетные методы ставят абонентов в неравные условия при большой интенсивности обмена по сети, так как высокоприоритетные абоненты могут надолго заблокировать сеть для низкоприоритетных абонентов.
[pagebreak]
Чаще всего система приоритетов в методе управления обменом в шине отсутствует полностью. Именно так работает наиболее распространенный стандартный метод управления обменом CSMA/CD (Carrier Sense Multiple Access with Collision Detection – множественный доступ с контролем несущей и обнаружением коллизий), используемый в сети Ethernet. Его главное достоинство в том, что все абоненты полностью равноправны, и ни один из них не может надолго заблокировать обмен другому (как в случае наличия приоритетов). В этом методе коллизии не предотвращаются, а разрешаются.
Суть метода состоит в том, что абонент начинает передавать сразу, как только он выяснит, что сеть свободна. Если возникают коллизии, то они обнаруживаются всеми передающими абонентами. После чего все абоненты прекращают свою передачу и возобновляют попытку начать новую передачу пакета через временной интервал, длительность которого выбирается случайным образом. Поэтому повторные коллизии маловероятны.
Еще один распространенный метод случайного доступа – CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance – множественный доступ с контролем несущей и избежанием коллизий) применяющийся, например, в сети Apple LocalTalk. Абонент, желающий передавать и обнаруживший освобождение сети, передает сначала короткий управляющий пакет запроса на передачу. Затем он заданное время ждет ответного короткого управляющего пакета подтверждения запроса от абонента-приемника. Если ответа нет, передача откладывается. Если ответ получен, передается пакет. Коллизии полностью не устраняются, но в основном сталкиваются управляющие пакеты. Столкновения информационных пакетов выявляются на более высоких уровнях протокола.
Подобные методы будут хорошо работать только при не слишком большой интенсивности обмена по сети. Считается, что приемлемое качество связи обеспечивается при нагрузке не выше 30—40% (то есть когда сеть занята передачей информации примерно на 30—40% всего времени). При большей нагрузке повторные столкновения учащаются настолько, что наступает так называемый коллапс или крах сети, представляющий собой резкое падение ее производительности.
Недостаток всех случайных методов состоит еще и в том, что они не гарантируют величину времени доступа к сети, которая зависит не только от выбора задержки между попытками передачи, но и от общей загруженности сети. Поэтому, например, в сетях, выполняющих задачи управления оборудованием (на производстве, в научных лабораториях), где требуется быстрая реакция на внешние события, сети со случайными методами управления используются довольно редко.
При любом случайном методе управления обменом, использующем детектирование коллизии (в частности, при CSMA/CD), возникает вопрос о том, какой должна быть минимальная длительность пакета, чтобы коллизию обнаружили все начавшие передавать абоненты. Ведь сигнал по любой физической среде распространяется не мгновенно, и при больших размерах сети (диаметре сети) задержка распространения может составлять десятки и сотни микросекунд. Кроме того, информацию об одновременно происходящих событиях разные абоненты получают не в одно время. С тем чтобы рассчитать минимальную длительность пакета, следует обратиться к рис. 4.12.
Пусть L – полная длина сети, V – скорость распространения сигнала в используемом кабеле. Допустим, абонент 1 закончил свою передачу, а абоненты 2 и 3 захотели передавать во время передачи абонента 1 и ждали освобождения сети.
После освобождения сети абонент 2 начнет передавать сразу же, так как он расположен рядом с абонентом 1. Абонент 3 после освобождения сети узнает об этом событии и начнет свою передачу через временной интервал прохождения сигнала по всей длине сети, то есть через время L/V. При этом пакет от абонента 3 дойдет до абонента 2 еще через временной интервал L/V после начала передачи абонентом 3 (обратный путь сигнала). К этому моменту передача пакета абонентом 2 не должна закончиться, иначе абонент 2 так и не узнает о столкновении пакетов (о коллизии), в результате чего будет передан неправильный пакет.
Получается, что минимально допустимая длительность пакета в сети должна составлять 2L/V, то есть равняться удвоенному времени распространения сигнала по полной длине сети (или по пути наибольшей длины в сети). Это время называется двойным или круговым временем задержки сигнала в сети или PDV (Path Delay Value). Этот же временной интервал можно рассматривать как универсальную меру одновременности любых событий в сети.
Стандартом на сеть задается как раз величина PDV, определяющая минимальную длину пакета, и из нее уже рассчитывается допустимая длина сети. Дело в том, что скорость распространения сигнала в сети для разных кабелей отличается. Кроме того, надо еще учитывать задержки сигнала в различных сетевых устройствах. Расчетам допустимых конфигураций сети Ethernet посвящена глава 10.
Отдельно следует остановиться на том, как сетевые адаптеры распознают коллизию в кабеле шины, то есть столкновение пакетов. Ведь простое побитное сравнение передаваемой абонентом информации с той, которая реально присутствует в сети, возможно только в случае самого простого кода NRZ, используемого довольно редко. При применении манчестерского кода, который обычно подразумевается в случае метода управления обменом CSMA/CD, требуется принципиально другой подход.
Как уже отмечалось, сигнал в манчестерском коде всегда имеет постоянную составляющую, равную половине размаха сигнала (если один из двух уровней сигнала нулевой). Однако в случае столкновения двух и более пакетов (при коллизии) это правило выполняться не будет. Постоянная составляющая суммарного сигнала в сети будет обязательно больше или меньше половины размаха (рис. 4.13). Ведь пакеты всегда отличаются друг от друга и к тому же сдвинуты друг относительно друга во времени. Именно по выходу уровня постоянной составляющей за установленные пределы и определяет каждый сетевой адаптер наличие коллизии в сети.
Определение факта коллизии в шине при использовании манчестерского кода
Рис. 4.13. Определение факта коллизии в шине при использовании манчестерского кода
Задача обнаружения коллизии существенно упрощается, если используется не истинная шина, а равноценная ей пассивная звезда (рис. 4.14).
Обнаружение коллизии в сети пассивная звезда
Рис. 4.14. Обнаружение коллизии в сети пассивная звезда
При этом каждый абонент соединяется с центральным концентратором, как правило, двумя кабелями, каждый из которых передает информацию в своем направлении. Во время передачи своего пакета абоненту достаточно всего лишь контролировать, не приходит ли ему в данный момент по встречному кабелю (приемному) другой пакет. Если встречный пакет приходит, то детектируется коллизия. Точно так же обнаруживает коллизии и концентратор.
Управление обменом в сети с топологией кольцо
Кольцевая топология имеет свои особенности при выборе метода управления обменом. В этом случае важно то, что любой пакет, посланный по кольцу, последовательно пройдя всех абонентов, через некоторое время возвратится в ту же точку, к тому же абоненту, который его передавал (так как топология замкнутая). Здесь нет одновременного распространения сигнала в две стороны, как в топологии шина. Как уже отмечалось, сети с топологией кольцо бывают однонаправленными и двунаправленными. Наиболее распространены однонаправленные.
В сети с топологией кольцо можно использовать различные централизованные методы управления (как в звезде), а также методы случайного доступа (как в шине), но чаще выбирают все-таки специфические методы управления, в наибольшей степени соответствующие особенностям кольца.
Самые популярные методы управления в кольцевых сетях маркерные (эстафетные), те, которые используют маркер (эстафету) – небольшой управляющий пакет специального вида. Именно эстафетная передача маркера по кольцу позволяет передавать право на захват сети от одного абонента к другому. Маркерные методы относятся к децентрализованным и детерминированным методам управления обменом в сети. В них нет явно выраженного центра, но существует четкая система приоритетов, и потому не бывает конфликтов.
Работа маркерного метода управления в сети с топологией кольцо представлена на рис. 4.15.
Рис. 4.15. Маркерный метод управления обменом (СМ—свободный маркер, ЗМ— занятый маркер, МП— занятый маркер с подтверждением, ПД—пакет данных)
По кольцу непрерывно ходит специальный управляющий пакет минимальной длины, маркер, предоставляющий абонентам право передавать свой пакет. Алгоритм действий абонентов:
1. Абонент 1, желающий передать свой пакет, должен дождаться прихода к нему свободного маркера. Затем он присоединяет к маркеру свой пакет, помечает маркер как занятый и отправляет эту посылку следующему по кольцу абоненту.
2. Все остальные абоненты (2, 3, 4), получив маркер с присоединенным пакетом, проверяют, им ли адресован пакет. Если пакет адресован не им, то они передают полученную посылку (маркер + пакет) дальше по кольцу.
3. Если какой-то абонент (в данном случае это абонент 2) распознает пакет как адресованный ему, то он его принимает, устанавливает в маркере бит подтверждения приема и передает посылку (маркер + пакет) дальше по кольцу.
4. Передававший абонент 1 получает свою посылку, прошедшую по всему кольцу, обратно, помечает маркер как свободный, удаляет из сети свой пакет и посылает свободный маркер дальше по кольцу. Абонент, желающий передавать, ждет этого маркера, и все повторяется снова.
Приоритет при данном методе управления получается географический, то есть право передачи после освобождения сети переходит к следующему по направлению кольца абоненту от последнего передававшего абонента. Но эта система приоритетов работает только при большой интенсивности обмена. При малой интенсивности обмена все абоненты равноправны, и время доступа к сети каждого из них определяется только положением маркера в момент возникновения заявки на передачу.
В чем-то рассматриваемый метод похож на метод опроса (централизованный), хотя явно выделенного центра здесь не существует. Однако некий центр обычно все-таки присутствует. Один из абонентов (или специальное устройство) должен следить, чтобы маркер не потерялся в процессе прохождения по кольцу (например, из-за действия помех или сбоя в работе какого-то абонента, а также из-за подключения и отключения абонентов). В противном случае механизм доступа работать не будет. Следовательно, надежность управления в данном случае снижается (выход центра из строя приводит к полной дезорганизации обмена). Существуют специальные средства для повышения надежности и восстановления центра контроля маркера.
Основное преимущество маркерного метода перед CSMA/CD состоит в гарантированной величине времени доступа. Его максимальная величина, как и при централизованном методе, составит (N-1)• tпк, где N – полное число абонентов в сети, tпк – время прохождения пакета по кольцу. Вообще, маркерный метод управления обменом при большой интенсивности обмена в сети (загруженность более 30—40%) гораздо эффективнее случайных методов. Он позволяет сети работать с большей нагрузкой, которая теоретически может даже приближаться к 100%.
Метод маркерного доступа используется не только в кольце (например, в сети IBM Token Ring или FDDI), но и в шине (в частности, сеть Arcnet-BUS), а также в пассивной звезде (к примеру, сеть Arcnet-STAR). В этих случаях реализуется не физическое, а логическое кольцо, то есть все абоненты последовательно передают друг другу маркер, и эта цепочка передачи маркеров замкнута в кольцо (рис. 4.16). При этом совмещаются достоинства физической топологии шина и маркерного метода управления.
Применение маркерного метода управления в шине
Рис. 4.16. Применение маркерного метода управления в шине
Часто возникает необходимость передать переменные в самой строке URL. Для этого нужно воспользоваться кодированием строки с переменными. А все спецсимволы типа пробела тоже должны учитываться.
Без применения кодирования:
Если испытать в работе первый код, то наш SQL запрос будет с некоторыми отсутствующими символами. А нам это не подходит, ведь теряется весь смысл многословного запроса.
Именно для решения этой проблемы программистамы было придумано кодировать строку перед подачей ее скрипту. Сама функция кодирования называется URLEncode и вся строка запроса кодируется в безопасном режиме (safe mode).
На сегодняшний день музыкальные магазины online, наподобие Musikload[1], становятся все более распространенными и пользуются бешенной популярностью. В этой статье мы расскажем как можно читать мета-информацию mp3-файла средствами PHP, что поможет вам в создании каталога музыки. Это очень просто, поддержка базы данных не нужна.
Откуда знает MP3-Player, например Winamp информацию об исполнителе или названии композиции, которую он проигрывает? Может быть, он сам каким-то чудным образом узнает название песни и альбома? Нет, здесь нет никакого волшебства! Подобная информация содержится в самих файлах. Музыкальные файлы других форматов таких как WMA или Ogg Vorbis также содержат подобную информацию, но здесь речь пойдет о файлах в формате mp3.
Спецификация mp3 определяет способ хранения музыкальных данных, однако не предусматривает никакой возможности для сохранения метаданных композиции, таких как название и исполнитель. Чтобы обойти это ограничение был разработан стандарт ID3. Согласно этой спецификации, метаданные должны быть помещены в так называемые ID3-теги, которые независимо от используемого стандарта ID3, помещаются в конец или начало файла. ID3-теги версии 1 (ID3v1-Tags) представляют собой простейшую конструкцию, которая дописывается в конец файла. Ее объем не должен превышать 128 байт. Структура тега такова: после строкового значения “TAG» следует информация о названии (30 символов), исполнителе (30 символов), альбоме (30 символов), годе записи (четырехзначное число), комментарий (30 символов), жанр (1 байт). Тег с подобной структурой обозначается как ID3v1.0-Tag. В дополнение к этому существует еще стандарт ID3v1.1-Tag, который встречается значительно чаще, поскольку позволяет сохранять информацию о порядковом номере композиции в альбоме. Вследствие этого был урезан до 28 символов размер комментария. Сразу после комментария следует нуль-байт, а последующий байт содержит информации о номере трэка. На иллюстрации один и два видна структура обоих стандартов.
PEAR придет на помощь!
Для считывания информации из ID3v1 тегов, в библиотеку PEAR уже был включен пакет MP3_Id[3], который поможет Вам без проблем извлекать информацию из тега, или наоборот записывать. Если в файл отсутствует ID3-тег, вы можете его создать. Листинг 1 показывает как можно считывать информацию из тегов. Создается объект класса MP3_ID, считывается файл, а затем метод getTag() извлекает данные, которые помещаются для дальнейшей обработки в отдельные поля объект. Листинг 2 показывает результат действия программы листинга 1. Общий обзор доступных полей вы найдете в документации по пакету на домашней странице PEAR.
Листинг 1:
Листинг 2:
Листинг 3 показывает как просто можно изменять содержимое ID3-тегов и создавать их. Сначала, как это было показано в Листинге 1, создаем объект класса MP3_ID, считываем файл, а с помощью метода setTag($fieldname, $value) помещаем в тег нужную информацию. Хотите удалить все теги? Тогда посмотрите на листинг 4, где показано как можно сделать это. Для удаления тегов используется метод remove(), а остальное вы уже знаете. Необходимо дополнить, что MP3_Id обладает другими полезными функциями, которые вам позволят перенести содержимое тега из одного файла в другой или сформировать массив, содержащий все музыкальные направления. Для получения дополнительной информации смотрите документацию.
Listing 3:
Listing 4:
Используем PECL
В конце лета 2004 года появилось расширение PHP ext/id3[7]. Разрабатывается в рамках PECL[6]. В отличие от MP3_ID эта библиотека написана не на PHP, а на C, поэтому она должно работать несколько быстрее. Однако библиотека не входит в стандартный комплект PHP-исходников, к тому же на сегодняшний день отсутствует стабильная версия, хотя функции отвечающие за чтение и запись ID3-тегов считаются стабильными.
Если вы хотите использовать именно это расширение, для установки необходимо воспользоваться либо PEAR-installer, либо откомпилировать php, включив поддержку данного расширения. Если вы используете WINDOWS, существует возможность скачать уже откомпилированную DLL для версии php 5.0 или 5.01 с сайта PHP-Snapshot[9], поместить ее в каталог с расширениями php (например c:phpext), подключить через php.ini. Чтобы воспользоваться расширением, вы должны иметь PHP 4.3 или более позднюю версию, поскольку библиотека использует Streams-API.
Само собой разумеется, библиотека позволяет изменять содержимое ID3-тегов. Для этого вам не нужно ничего, кроме массива, представленного в листинге 6, и функции id3_set_tag(). В качестве первого параметра функция принимает имя изменяемого mp-3 файла, а в качестве второго - массив с необходимыми данными. Третий параметр необязателен и представляет собой константу, указывающую версию ID3-тега. В существующей версии библиотеки функция id3_set_tag() может работать только с тегами версии 1.0 или 1.1. Листинг 7 содержит необходимый php-код. В дополнение к этому, листинг 8 показывает как с помощью функции id3_remove_tag можно удалить существующий ID3-тег.
Ext/id3 содержит еще несколько полезных функций, которые позволяют определить версию ID3-тега (id3_get_version) или манипулируют со списком музыкальных направлений и их id, представленных в виде целого числа типа integer. Надо сказать, что данное число мало подходит для указания музыкального направления.
Listing 5:
Listing 6:
Listing 7:
Следующее поколение
Несмотря на то, что с помощь ID3v1-тегов уже можно сохранять важнейшую информацию о содержимом mp3-файла, уже проявляются ограничения версий 1.0 и 1.1:
из-за фиксированного размера тега ограничен объем сохраняемой информации
ограничено количество сохраняемых атрибутов
Как мы видим, расширить объем пространства, отведенный под ID3v1 теги нельзя, Существую трудности с сохранением информации о названии композиции, исполнителе, альбоме, комментарии, если размер данных превышает 30 символов. Допустим, вам нужно указать название The Hitchhiker's Guide to the Galaxy, используя стандарт ID3v1, вы можете сохранить лишь The Hitchhiker's Guide to. Та же ситуации наблюдается с указанием музыкального направления. Для этого выделяется только один байт, вследствие этого количество музыкальных направлений не может превышать 256. Наверное, сегодня этого достаточно, но кто знает, сколько в будущем появится еще музыкальных направлений.
Чтобы преодолеть указанные ограничения был введены ID3-теги версии 2[2], или короче ID3v2. ID3v2-теги записываются в начало файла, собственно перед самими аудио данными. Информация организована в отдельные единицы, которые обозначаются как фреймы. ID3v2 - это формат-контейнер, то есть, существует возможность при изменении тега вводить новые фреймы. Из этого следует, что ID3v2 может содержать значительно больше информации, чем ID3v1. Это может быть информация об авторских правах, битрейте, (BMP) или, наконец, полный текст песни или изображения. В дополнение к этому можно по желанию добавлять новые фреймы. Вот важнейшие достоинства данного формата:
Никаких ограничений на объем сохраняемой информации
Гибкость и расширяемость
Возможность сжатия содержимого тегов
Поддержка Unicode
Возможность хранить бинарные данные, например изображения и файлы.
Из-за расширенных возможностей ID3v2-теги, несколько труднее поддаются считыванию, чем ID3v1-теги. Хорошая новость состоит в том, что ext/id3 уже позволяет извлекать важнейшую информацию. Если вы исполните код, помещенный в листинг 9, вы получите тот же результат, что и в листинге 10. Проделав это, вы сможете убедиться, что объем выводимых данных значительно шире, чем тот, что показан в листингах 5 и 6.
Каждый фрейм ID3v2-тега обладает уникальным ID. Ext/id3 содержит две функции, которые позволяют узнать содержимое фрейма. Это id3_get_frame_short() и id3_get_frame_long_name(). В качестве параметра они принимают id фрейма и возвращают его описание.
В будущих версиях ext/id3 будет содержать другие полезные функции, которые позволят считывать или записывать фреймы, соответствующие спецификации ID3.
Листинг 8:
Listing 9:
Дополнительная информация
Прежде чем вы организуете бизнес, связанный с продажей музыкальных композиций online, мы вам расскажем еще о нескольких полезных возможностях библиотеки MP3_Id. С помощью нее можно не только считывать информацию ID3- тегов, она позволяет получить некоторую интересную информацию о самом mp3-файле. Речь идет о битрейте, длительности звучания и других полезных свойствах. Подобные сведения можно получить при помощи метода study(), а дальше посредством метода getTag(), можно выбирать необходимые данные. Листинг 12 показывает как это работает. Результат работы программы показан в листинге 13. К сожалению, эти возможности недостаточно документированы, т.е. трудно разобраться какой атрибут можно считать при помощи getTag() или изменить посредство setTag(). В этом случае необходимо изучить код модуля MP3/Id.php.
Listing 10:
Listing 11:
Listing 12:
Listing 13:
Выводы
В этой статье мы рассмотрели существующие возможности извлечения информации из mp-3 файлов средствами PHP. Обе библиотеки (MP3_Id и id3) легки в использовании и содержать необходимые функции. Одна библиотека написана на PHP, другая на C. Выбор того или иного варианта определяется вашими предпочтениями и возможностями хостинга.
Авторы
Карстен Луке изучает информатику в высшей школе Бранденбурга. Совместно со Стефаном Шмидтом разработывает расширение id3. Вы можете связаться с ним по e-mail ( luckec@php.net ) или посетить его сайт ( www.tool-gerade.de ) Стефан Шмидт - разработчик веб-приложений фирмы 1&1 Internet AG, активно учавствует в развити PEAR и PECL. Вы можете связаться с ним по e-mail ( schst@php.net )
Всё что вы когда-либо хотели знать про mysql, php и кодировки, но боялись спросить! Почему кириллица на сайте отображается вопросами? Как правильно настроить сервер mysql для работы с кириллицей? Как поменять кодировку в mysql? Как изменить кодировку в скриптах php? Какую выбрать кодировку? Как сконвертировать базу данных из одной кодировки в другую? Эти и многие подобные вопросы с завидным упорством снова и снова поднимаются на различных форумах уже который год. В этом посте я постарался рассказать что нужно делать чтобы такие проблемы не возникали и дать наиболее эффективные советы на тот случай если они все-таки возникнут.
Mysql, php и кодировки. Источник проблем.
Проблемы с кодировками в Mysql обусловлены историей создания этой программы. Так как разрабатывали mysql - европейцы - для них было естественно выбрать в качестве основной кодировки более удобную для себя latin1. Странно, но и по сей день большинство инсталляций Mysql по умолчанию работают с этой кодировкой что и создает для пользователей кириллицы проблемы с добавлением в базу данных строк на русском и украинском языках - в latin1 эти символы просто отсутствуют.
Поэтому первое что нужно сделать при возникновении проблем с кодировками в mysql - нужно проверить какая кодировка является для данной инсталляции mysql основной. Проверить это можно несколькими способами.
Настройка сервера mysql для нужной кодировки.
* Если вы админ сервера или вы самостоятельно настраиваете собственную mysql на рабочей машине.
Откройте файл конфигурации mysql.ini (/etc/mysql.cnf для os linux) и найдите такие строки.
Вместо “название_кодировки” нужно подставить название той кодировки, которую вы будете использовать. Для текстов на русском и украинском языках можно использовать utf8 или cp1251 (обратите внимание - названия кодировок в mysql пишутся без обычного дефиса!!!). Но я советовал бы использовать только utf8 - так вы себе сэкономите в будущем немало нервов.
Если такие строки в файле конфигурации отсутствуют, то это означает что база данных использует по умолчанию ту кодировку, которая была задана при компиляции. Добавьте в конфиг нужные вам настройки кодировок (примеры ниже) и перезапустите mysql.
Если у вас возникли проблемы с кодировкой на хостинге, где вы не имеете прав администратора, то проверить настройки кодировки для mysql вы сможете другим способом: установите соединение с mysql (при помощи консольной команды mysql или phpmyadmin - как вам удобнее) и выполните такой sql-запрос: show variables like ‘char%’. Этот запрос покажет вам значения переменных mysql, которые имеют отношение к кодировкам. Скорее всего, вы увидите что-то вроде такого
Я специально привел выше пример НЕПРАВИЛЬНО НАСТРОЕННОГО СЕРВЕРА!!! Обратите внимание - в нем используются в разных случаях три(!) разные кодировки. Начинающему веб-программисту в такой ситуации будет сложно добиться корректной работы скрипта. Старайтесь чтобы все переменные были настроены на работу с одной и той же кодировкой. Тогда 99% проблем которые обсуждаются на форумах у вас просто не возникнут. Тут даже не столь важно какую именно кодировку вы выберете - главное чтобы она была везде одинаковой. Но все-таки старайтесь указывать в настройках ту кодировку, которую действительно будете использовать для хранения данных.
Итак, удачный вариант - это если команда show variables like ‘char%’ из абзаца выше покажет вам список одинаковых кодировок для каждой из переменных и еще лучше будет если эта кодировка совпадет с той которую используете вы.
Если же кодировка mysql отличается от вашей - не спешите расстраиваться. Изменить любую из этих переменных вы можете либо глобально, для всех правкой конфигов (если вы администратор сервера), либо только для себя - sql-запросом set character_set_database=utf8 (если вы пользователь). Такой запрос должен будет выполняться из вашего php скрипта сразу после установки соединения с сервером mysql. Ниже пример для установки кодировки utf8 из php скрипта.
Что касается character_set_database - постарайтесь сразу создать базу данных в нужной кодировке (как вариант - отправьте такую просьбу в техподдержку хостинга), тогда вы избежите по крайней мере одного лишнего запроса к mysql во время работы скрипта. Если удастся,то строчку с ‘character_set_database’ из приведенного выше кода можно будет удалить.
Примеры настроек сервера mysql для правильной работы с кодировками.
При правильно настроенном сервере делать запросы из скрипта для установки правильной кодировки уже будет не нужно.
Настройки для utf8
Проверка реальной кодировки в которой хранятся базы данных mysql.
В случае если вы все (и сервер, и php скрипт) настроили правильно, по инструкции выше, но русские буквы все равно не отображаются - проверьте действительно ли ваши строки сохранены в той кодировке, которую вы указали в настройках!!!
Простой способ проверки - сделайте дамп базы данных в sql-формате и откройте его в текстовом редакторе. Sql-формат - это обычный текст. Если ваша база данных mysql в кодировке cp1251 - открывайте в Блокноте. Если utf8 - в любом редакторе с поддержкой Юникода. Пролистайте файл и убедитесь что все надписи с кириллицей нормально читаются и что sql-команды create table и create database, которые встречаются в дампе содержат правильные названия кодировки mysql (той кодировки, которая вами была указана в настройках сервера или в запросах из php-скриптов.
Если кодировка не подходит - сделайте бекап базы на всякий случай, перекодируйте sql-дамп в любом текстовом перекодировщике, замените названия кодировок в файле на правильные и заливайте полученный файл на сервер mysql. Теперь с кодировками все должно быть в порядке.
Те, кто устанавливают в свой компьютер источники бесперебойного питания, надеются повысить стабильность работы своего электронного монстра, а заодно и продлить ему жизнь за счёт оберегания его от скачков напряжения и работы при ненормальном режиме электроснабжения потребителей. Проще говоря, сегодня установка ИБП является синонимом повышения надёжности и никто не сомневается в том, что UPS принесёт пользу любому компьютеру. В этой маленькой статье я расскажу вам, что это не так, и прежде чем покупать источник бесперебойного питания, надо хорошо подумать, потому что он может не только не добавить стабильности вашей системе, но и наоборот - сделать работу за компьютером невозможной.
Скажу честно: я никогда не считал источник бесперебойного питания необходимой частью компьютера, а потому и не стал бы покупать его, даже если бы и имелись лишние деньги. В питании компьютера я всегда был уверен, как уверен в этом и сейчас. В моём доме напряжение практически всегда составляет 230 В, иногда поднимаясь, или опускаясь. Бывает, что напряжение скачет, это видно по миганию лампочек накаливания, или по стрелке подключённого к розетке вольтметра. Всё это никогда не отражалось ни на работе монитора, ни на работе компьютера, подключенных в розетку, без всевозможных фильтров типа "пилот", и даже без заземления. Конечно, иногда если коснуться корпуса компьютера и батареи, можно почувствовать, как через тебя проходит небольшой ток, но это не смертельно и на работу компьютера пока что никак не повлияло.
Однажды в розетке, питающей компьютер с монитором, напряжение упало почти в два раза - вольт до 120. Дело было днём, поэтому свет в комнате не горел, и определить, что упало напряжение, я смог только по замедлившему ход напольному вентилятору. Его обороты сильно упали, а когда я его выключил, а затем попытался включить, пропеллер остался неподвижен. Компьютер всё это время работал нормально. Прошло несколько минут и я его выключил. Затем включил снова, а он не включается. Тут-то я и понял, что проблема в напряжении. На щитке отключил автоматы, включил заново и напряжение в линии снова составило 230 Вольт, в чём я убедился при помощи вольтметра. Дело было в неисправности щитка, но это так, к слову. Теперь я знаю, что скачки и провалы напряжения, которыми нас так пугают производители фильтров и источников бесперебойного питания, китайскому 250 Ваттному блоку питания не страшны, ровно как и монитору LG Flatron, который тоже сделан не в Штатах. Наверное, поэтому ставить что-то защищающее компьютер по питанию домой я не хотел. Но вот недавно, во время написания очередного обзора в домеотключили электричество и тут же, где-то через секунду включили. Компьютер, естественно, этого не вынес и та часть обзора, которую я не успел сохранить, канула в лету. На личном опыте я знаю, что UPS спас бы меня и я твёрдо решился установить его в компьютер.
Какой фирмы я взял UPS, говорить не буду. Потому что никаких претензий к источнику питания я не имею, и всё, сказанное дальше будет справедливо для подавляющего большинства ИБП. В общем, компьютер был подключен к этому устройству, помогающему мне бороться с недостатками нашего электроснабжения. "Первые ласточки" появились через несколько часов после начала работы компьютера. Дело в том, что UPS действительно защищает от скачков напряжения, но делает это не выравниванием напряжения за счёт регулирования трансформатора, а за счёт переключения в Backup Mode, то есть питания компьютера от аккумуляторов. Естественно, такой способ намного дешевле, а стабилизаторы напряжения в недорогих ИБП не применяются. Дело в том, что когда источник бесперебойного питания почувствовал скачок напряжения, то он переключает компьютер в питание от батареек на некоторое время. Обычно, это несколько секунд. По истечение этого срока, если скачков напряжения, или других аномалий не было, компьютер переключается обратно, на питание от сети. В разных моделях UPS чувствительность разная. Некоторые допускают отклонение напряжения в 10 процентов, другие - в 15. Чувствительность может не совпадать с заявленной, хотя для проверки этого придётся воспользоваться измерительными приборами. Ну да разговор не об этом. Через несколько часов работы в сети начались незначительные скачки и провалы напряжения. Свет не моргал, а вот ИБП переключил компьютер в Backup режим.
Первый период запитки от аккумуляторов длился недолго - около тридцати секунд. После этого датчики источника бесперебойного питания определили, что напряжение в розетке полностью соответствует норме, и компьютер был переключён на питание от розетки, а аккумуляторные батареи стали заряжаться, восполняя частичный разряд. Прошёл час и наступило тёмное время суток, ночь. Ночью число потребителей электроэнергии значительно падает, а нагрузка на сеть сокращается за счёт прекращения работы предприятий, электротранспорта, да и обычные потребители, если они не сидят в интернете, или не работают в ночную смену, просто спят. Поэтому ночью напряжение в розетке чуть повышается. А это значит, что оно уже подходит к тому порогу, при котором источник бесперебойного питания переводит компьютер в работу от батарей аккумуляторов. И уже небольшие скачки могут запросто заставить компьютер работать от запасённой ранее энергии. Вот тут-то и началось самое интересное. UPS снова запищал, сигнализируя о том, что компьютер работает от аккумуляторов. Но на этот раз период такой запитки длился дольше - около трёх минут. UPS был слабеньким, а потому мог продержать системный блок всего несколько минут. Честно говоря, стало немного страшно. Здесь я поясню: ночью очень удобно скачивать различные большие файлы из сети, особенно по обычному модему, учитывая, что качество аналоговых линий хорошо возрастает. Тут как раз подвернулся файл размером с десяток-другой мегабайт на сервере, не поддерживающем докачку (есть ещё такие). Понятное дело, что отключение компьютера заставило бы меня заново загружать систему, устанавливать связь с провайдером и качать файл с начала. Последнее меня не пугало, так как скачено было всего процентов 10.
Шло время. Аккумуляторы источника бесперебойного питания заряжались, а я работал в интернете. И снова знакомый щелчок реле и писк источника бесперебойного питания. Но теперь я понимаю, что батареи истощены и ИБП не протянет и трёх минут. Сохраняя все данные на диск, я смотрю на статус закачки файла. Почти 90 процентов. Очень бы не хотелось качать его снова. Конечно, можно было бы заставить компьютер перейти в Sleep Mode, но винчестер бы не отключился, процессор бы стал потреблять не намного меньше. И толку это бы не дало. Всё, что остаётся - это смотреть на экран, не двигать мышь и надеяться, что напряжение восстановится раньше, чем аккумуляторы сядут. Через минуту UPS извещает, что аккумуляторы близки к разряду. Это значит, что в запасе осталась от силы минута. Самое интересное, это то, что начинаешь понимать безысходность ситуации. Напряжение в розетке есть, и оно даже нормальное, чуть выше, возможно, чем нужно, но компьютер бы от него работал как по маслу. А этот "источник" считает по-другому. И сделать ничего нельзя. Принудительной запитки от розетки в нём не предусмотрено. Переткнуть компьютер в розетку нельзя. А вытаскивание вилки UPS из розетки, а потом подключение её обратно ничего не даёт. UPS не реагирует. Примерно через минуту экран монитора гаснет. Компьютер выключился. Конечно, файл придётся качать с самого начала. Нужно ли описывать мои чувства в этот момент?
Как видно, в моей ситуации установка источника бесперебойного питания не только не повысила стабильность системы, но и наоборот - понизила её. Днём иногда ИБП также болезненно реагирует на аномалии напряжения, переключаясь на аккумуляторы. Поэтому оставлять компьютер без присмотра становится страшно. Ведь я знаю, что блоку питания ATX такие скачки не страшны, а вот UPS - вещь чувствительная, и может неправильно понять наше напряжение. Два-три переключения длительностью в две минуты, и на третьем компьютер не протянет и тридцати секунд. Вам оно надо?
Что делать?
Поэтому, прежде чем покупать источник бесперебойного питания, подумайте, так ли часто у вас отключают электричество? Именно отключают, потому что скачков напряжения вы можете и не замечать. Благо, с частотой, которую не видно даже по первому признаку - морганию света, у нас в России пока что порядок. Если свет отключают редко, прежде чем брать источник бесперебойного питания присмотритесь к напряжению. Не мигают ли лампы накаливания? Можете попросить UPS на некоторое время у друзей, живущих в другом районе. В крайнем случае, договоритесь с продавцом о возврате денег сроком на две недели. Конечно, можно найти UPS со стабилизатором напряжения, который будет стоить дороже. Можно подключить и внешний стабилизатор напряжения. Но есть и другой выход.
В источниках бесперебойного питания предусмотрена регулировка чувствительности. С помощью специальных резисторов можно выбрать нижнее и верхнее значения напряжения, при которых UPS будет срабатывать и переводить компьютер на питание от батарей. Подняв верхний предел Вольт на 10-20, и опустив нижний на столько же, можно добиться того, что ИБП не будет впустую реагировать на незначительные скачки. Лишние 10-20 Вольт компьютеру не повредят, а вот сделать вашу жизнь спокойнее смогут. Обычно, такую операцию над источниками бесперебойного питания проводят те, кто их продаёт. Вполне возможно, что покупая новый UPS, вы уже берёте себе настроенный под наши линии блок, характеристики которого отличаются от заявленных, потому что в сервис-центре фирмы-продавца над этим UPS-ом уже поработали. В случае, если вы берёте ИБП для запитки очень чувствительной к перемене напряжения электроники, вам нужно обязательно узнать, соответствует ли источник заявленным данным. Обычно, если сказать, что в случае, если что не так, то продавец будет нести ответственность за всё, они сами признаются, ковырялись в нём, или нет. Ну а напоследок хочется пожелать вам надёжного электроснабжения и качественных UPS-ов.
Добавление сайта в каталоги уже давно и прочно вошло в список наиболее важных инструментов раскрутки и продвижения сайта в сети интернет. Сегодня мы расскажем о том, как с наилучшим результатом добавить свой сайт в каталоги. Есть два пути, при котором регистрация в каталогах влияет на посещаемость Интернет-ресурса:
Во-первых, каталоги предназначены для людей – в них человек может найти сайты по интересующей тематике. Среди таких посетителей каталогов есть и Ваши потенциальные клиенты. Таким образом, это Ваша реклама в каталоге. Примерами таких, приводящих посетителей, каталогов, является Яндекс.Каталог, рейтинг Рамблер.Top100, MAIL.ru и много других. Эти каталоги посещают миллионы пользователей ежедневно.
Во-вторых, любая поисковая система при ранжировании сайтов в выдаче по поисковому запросу учитывает количество и качество ссылок на ресурс, это так называемые индексы цитирования. У каждой поисковой системы он свой. У Яндекса - тИЦ (тематический индекс цитирования, применяется для ранжирования сайтов в Яндекс.Каталоге; можно увидеть на "денежке") и вИЦ (внутренний индекс цитирования, применяется для ранжирования сайтов в поисковой выдаче; не разглашается), у Google - PR (PageRank), у Апорта - ИЦ.
PageRank (PR) – рассчитывается для каждой веб-страницы отдельно, и определяется PageRank’ом (цитируемостью) ссылающихся на нее страниц. Своего рода замкнутый круг. Главная задача заключается в том, чтобы найти критерий, выражающий важность страницы. В случае с PageRank таким критерием была выбрана теоретическая посещаемость страницы.
тИЦ – тематический индекс цитирования – рассчитывается для сайта в целом и показывает авторитетность ресурса относительно других, тематически близких ресурсов (а не всех сайтов Интернета в целом). ТИЦ используется для ранжирования сайтов в каталоге Яндекса.
вИЦ – взвешенный индекс цитирования – аналог PageRank, применяемый поисковой системой Яндекс. Значения ВИЦ нигде не публикуются и известны только Яндексу. Поскольку узнать ВИЦ нельзя, следует просто помнить, что у Яндекса есть собственный алгоритм оценки «важности» страниц.
Добавляя свой сайт в каталог, Вы создаете дополнительную ссылку на него и повышаете таким образом свой индекс цитирования.
Стоит помнить, что просто повышая ИЦ, тИЦ, PR Вы мало чего добьетесь . Думаю, многие наблюдали ситуацию, когда на первой странице выдачи Яндекса вперед выходят сайты, имеющие меньший тИЦ, да и PR, чем у тех, кто занимает более низкие позиции. Для того чтобы использовать регистрацию в каталогах максимально эффективно, необходимо принять во вниманию ссылочное ранжирование. Дело в том, что этот фактор зачастую перевешивает многие другие, влияющие на место в поисковой выдаче.
Каким же образом действует ссылочное ранжирование? Формат гипертекста позволяет «на гиперссылке» ставить произвольный текст. Совпадение текста ссылок со словами поискового запроса (а особо точного вхождения) повышает Ваши позиции в выдаче.
Заметим также, что по низкочастотным запросам поисковики иногда выдают проиндексированные ими страницы каталогов со ссылкой на Ваш ресурс.
Таким образом, перед тем как регистрировать сайт в каталогах, составьте список запросов, по которым Вы хотели бы, чтобы Вас находили в поисковых системах. Для этого можно воспользоваться службами Подбора слов Яндекс.Директа и Статистикой поисковых запросов Рамблера.
Затем составьте несколько названий для Вашего сайта с использованием выбранных Вами ключевых слов. При этом учтите, что оптимальным будет использование словосочетаний, а не только отдельных слов, найденных Вами в статистике. Эти названия будут размещены на ссылке из каталога на Ваш сайт! Использование при регистрации в каталогах несколько названий позволит Вам использовать разные ключевые слова и избежать «превышения лимита» ссылок с одинаковым текстом, которые не учитываются поисковиками.
Названия должны быть осмысленными. Это обусловлено двумя причинами: во-первых, в последнее время поисковые системы очень плохо учитывают ссылки с перечислением ключевых слов через запятые. Во-вторых, большинство каталогов размещают ссылки после предварительной модерации. Те каталоги, которые следят за своим содержанием, с большой вероятностью откажут в размещении такой ссылки либо скорректируют ее на свое усмотрение, а как правило, ссылки именно с этих, серьезно модерируемых каталогов, имеют наибольший вес.
Адрес сайта указывать не обязательно, однако его присутствие в названии повышает Вашу узнаваемость среди многих других конкурентов. Еще раз повторю: не стоит перечислять ключевые слова через запятую, большое количество альтернативных названий позволит Вам использовать все выбранные Вами ключевые слова и даст значительно больше эффекта.
Выбирая рубрики, выбирайте наиболее подходящие. Зачем? Страница из подходящего раздела каталога получается самой подходящей с точки зрения «тематического» цитирования – это раз. Если раздел не подходит, модератор каталога (который тоже человек), может, не вдаваясь в подробности, просто отклонить сайт. Это два.
Для увеличения скорости выбора рубрик используйте Поиск. Обратите внимание на следующее: расставляйте слова в списке, начиная с наиболее подходящих, а затем по убыванию соответствия. В некоторых случаях, когда сложно предугадать, в каком склонении стоит слово в названии рубрики, используйте слова без окончаний. Иногда одно и то же слово может писаться по-разному. Учитывайте и это.
На заметку:
Обязательное условие успешной регистрации в каталогах и поисковиках - правильное описание ресурса и подбор ключевых слов. Иначе эффективность регистрации будет чрезвычайно мала.
Подача заявки на регистрацию еще вовсе не означает, что ресурс будет обязательно зарегистрирован. На это существует масса причин: неподходящая специализация каталога, некорректно составленное описание сайта, выбор неправильной категории, "заморочки" модераторов и проч. В среднем при хорошей предрегистрационной подготовке сайта, ресурс в течение месяца проходит регистрацию в 70-80% каталогов, куда была подана заявка.
В этой статье мы поговорим о рекламе сайта. Статья состоит из двух частей, в первой я расскажу вам отдельно о рекламе домашних страничек, во второй мы поговорим подробнее и серьезнее о рекламе в интернете, как таковой. Надеюсь, вы не пропустите первую часть статьи, потому что, не смотря ни на что, она принципиально важна.
Реклама домашних страниц.
Реклама, как таковая.
1 - Первый этап. Каталоги.
2 - Второй этап. Обмен баннерами и ссылками с тематическими ресурсами.
3 - Третий этап. Добавление в поисковые системы.
4 - Четвертый этап. Баннерные системы.
5 - Пятый этап. Нетрадиционные способы.
6 - Шестой этап. Как не потерять вашего посетителя.
7 - Седьмой этап. Повторение этапов.
Сразу поясню, почему я хочу поговорить с вами о рекламе домашних страниц отдельно.
Давайте рассмотрим эволюцию пользователя в интернете: сначала он гость, посещающий чужие сайты, знакомящийся с новыми людьми, чтобы переписываться с ними по почте, общаться в чате или на форумах. Но наступает момент, когда так хочется обзавестись собственным домиком, чтобы показать свою состоятельность и полноправность в гигантской паутине.
И вот когда домик отстроен, первые гости переступили его порог, похвалили, возникает такое свербящее чувство, которое можно назвать желанием популярности, желанием привлечь в свой домик толпы и толпы гостей в абсолютно разных целях: чтобы увеличить количество виртуальных друзей, а может быть найти любовь, или просто приобрести популярность, или даже извлечь выгоду из своего труда, заработать денюжку.
Все это вполне справедливые желания, т.к. и в реальной жизни нам свойственно самоутверждаться, но Интернет - это не тень реальной жизни, это информационная сеть, а простые домашние странички (обо всем и ни о чем, а точнее о вас любимых), они становятся мусором, когда в поиске важной, нужной и полезной информации человек натыкается на них, а не на то, что ищет в действительности. Поэтому, прежде чем ударяться в рекламные акции всеми правдами и неправдами, стоит задуматься: а нужно ли это? а как сделать, чтобы моя страница не стала мусором, а помогла найти мне друзей? А заработать?
Итак, сразу скажу, что заработок в интернете на пустом месте, из ничего, благодаря странице с баннерами спонсоров – миф, поверьте мне, и лучше забудьте об этом, не тратьте зря ни свое, ни чужое время.
Другое дело желание общения, некой популярности. Реклама вашей страницы в данном случае будет бесполезна, это все равно, что дать объявление в газете: вот мой дом, я там живу. Ну, и что? Кто вы такой, чтобы мы заинтересовались и пришли в гости? Другое дело, когда вы идете в какое-нибудь общественное место, клуб, знакомитесь там с новыми людьми, и говорите им, давая свой адрес:
- Вот мой дом, я там живу.
- О! – скажут они, - мы обязательно придем, нам с тобой было интересно пообщаться, и мы хотим узнать о тебе побольше и пообщаться еще не раз.
Т.е. я веду к тому, что домашняя страница, это как ваша квартира, чем больше у вас друзей, тем чаще они приходят к вам в гости, они заинтересованы в вас, именно поэтому им интересна ваша страница. Итак, для того, чтобы ваша страница была популярной, вы сами должны быть популярными. Благо, в интернете для этого много способов. Есть чаты, сайты знакомств, конференции и сайты, где люди общаются по определенным интересам, игровые сайты. Посещайте их, общайтесь, если вы интересны, то, посмотрев вашу анкету на таком сайте, люди обязательно посетят, и не раз, вашу домашнюю страницу.
И если у вас на душе все равно свербит и хочется добавить свою домашнюю страницу в поисковые системы и каталоги, тогда будьте вежливы, добавляйте ее в категории для Домашних страниц, они везде есть специально для вас. Повторюсь, не надо мусорить, вы поступите очень не красиво, если из-за того, что на вашей странице вы рассказываете о своей игрушечной машине, вы начнете позиционировать вашу страницу, как замечательный сайт об автомобилях. Это не даст популярности вашему сайту, т.к. на самом деле это не сайт об автомобилях, а лишь ваша домашняя страница, это только вызывает раздражение и негативные эмоции у тех, кого вы обманули.
Реклама, как таковая.
Я рассказывал о том, как сделать домашнюю страницу популярной, и читал нотации вам не просто так. Самое главное понять, что вы хотите достичь рекламной кампанией, и нужно ли вам это на самом деле.
Почему надо к рекламе подходить серьезно? Почему слово раскрутка надо отмести, как не состоятельное? Почему вы должны подходить к рекламе цивилизованно, когда вы можете просто начать «крутить» свой сайт и можете получить в день до 1000 посетителей с нуля при помощи специальных программ?
Потому что раскрутка это всего лишь фикция. Это посетитель, которого не было, который не вернется, который не пойдет по вашему сайту дальше первой страницы. Это зря затраченные усилия и потраченное время.
Для нас самое главное найти своего посетителя и заинтересовать его в том, что мы хотим ему предложить.
Но давайте по порядку, прежде всего вам следует понять, что количество и постоянный приток посетителей на вашем сайте зависит не только от рекламы, а также от наличия интересной, определенной группе людей, информации, ради которой они будут посещать ваш ресурс. Так, например, некоторые крупные компании, создают тематические информационные порталы относительно области своей деятельности, чтобы таким образом привлечь не только посетителей на свой сайт, но и потенциальных клиентов. Т.е. первое, что мы должны сделать, это качественный и интересный ресурс, сами понимаете, жиденькие сайты с 2-мя-3-мя десятками страничек, с информацией ни о чем, не могут претендовать на звание качественного ресурса.
Также хочу заметить, если вы создаете сайт для коммерческой организации, то лучше всего этот процесс от начала до конца поручить специалистам: и разработку, и рекламу, потому что и то, и другое взаимосвязано. По сути, сайт – это что-то вроде вашей рекламной брошюры: во время рекламной кампании вы привлекаете к ней внимание, чтобы ее прочли, и если ваш сайт-брошюра не интересен и не заинтриговал человека, пришедшего по рекламному объявлению, то смысл рекламной компании сводится к нулю.
Итак, поскольку я считаю, что коммерческие организации могут потратиться на рекламу, и даже должны, а обычные информационные порталы и некоммерческие организации часто не имеют возможности позволить себе относительно дорогостоящую рекламу, поэтому моя статья скорее для владельцев ресурсов последнего типа, поэтому я буду вести речь о бесплатных, или не очень дорогих способах рекламы сайта.
Когда, мы имеем качественный ресурс, хорошо продуманный, выверенный, стоящий того, чтобы о нем узнали, не надо нестись сломя голову на сайты поисковых систем и каталогов, не торопитесь. Следует продумать, какая аудитория заинтересована в вашем ресурсе: возраст, пол, профессиональная занятость этой аудитории – например, грузчики они или учителя. После того, как вы определились какова ваша аудитория, надо понять, где ваша аудитория в интернете обитает: на какие сайты ходит, какие журналы читает, и т.д. И только после этого мы начинаем охоту, господа :) .
Первый этап. Каталоги.
Первым делом мы добавляем себя в каталоги. Да-да, именно в каталоги, а не в поисковые системы, чуть позже объясню почему. Для добавления в каталоги нам надо придумать рекламное не слишком длинное объявление, такое, которое по возможности выделит ваш сайт среди других, подобных вашему, и может заинтересовать вашего потенциального посетителя. Объявление должно быть написано без грамматических ошибок, проверьте себя, не поленитесь, прежде чем оставлять объявление в каталогах.
Какие каталоги нас интересуют? Желательно каталоги, которые собирают в себе сайты с тематикой, подобной нашей. Т.е. если наш сайт рассказывает о медицинских проблемах, то имеет смысл поместить его в каталог, который освящает медицинские ресурсы. От обычных каталогов мы тоже не отказываемся, если у них есть раздел для сайтов с нашей тематикой, если нет, то не имеет смысла пихать информацию о нашем ресурсе туда для количества, не тратьте время.
Весьма рекомендую вам сайт http://1ps.ru - лучшего ресурса в плане поиска каталогов и добавления себя в них вам не найти. Однако, не добавляйте свой сайт через него в поисковики, это лучше делать вручную, и не сразу.
Второй этап. Обмен баннерами и ссылками с тематическими ресурсами.
Когда мы добавляем наш сайт в каталоги, то стоит обратить там свое внимание на интересные и посещаемые ресурсы со сходной нашему ресурсу тематикой. Зачем? Потому что мы будем обмениваться с ними ссылками и баннерами (желательно маленькими баннерами, кнопками).
Выберите несколько наиболее интересных ресурсов, которые предлагают обмен ссылками и баннерами, и напишите их владельцам письма, в которых поинтересуйтесь, не захотят ли они обменяться с вами ссылками или баннерами. Письмо должно быть вежливым, содержать ссылку на ваш ресурс и информацию, где вы собираетесь разместить баннер/ссылку портала, с которым хотите обмениваться.
Письмо должно именно предлагать - наглые письма: мол, я разместил на вас ссылку, а вы теперь разместите на меня – нельзя писать ни в коем случае. Помните, владелец крупного ресурса, посещаемого и устоявшегося, делает вам одолжение, размещая баннер или ссылку на вас, а не вы ему.
Предложите разместить его ссылку на первой странице вашего сайта, при этом будьте готовы согласиться на то, что в ответ вашу ссылку повесят в разделе с не слишком большой посещаемостью, и уж, в любом случае, не на главной странице.
Зачем нам это нужно: потому что третьим этапом будет размещение в поисковых системах, от того, какие ресурсы по качеству и сколько ресурсов на вас ссылается, зависит ваша позиция в списке результатов, выдаваемых поисковой системой пользователю на какой-либо запрос. Поймите, когда отпадет надобность, и вы добьетесь нужных вам результатов и посещаемости, вы можете отказаться от обмена баннерами/ссылками с другим ресурсом, или же заключить новые условия обмена.
Кстати, на втором этапе ваши друзья и знакомые могут вам помочь, разместив на ваш портал ссылку у себя на сайтах.
Третий этап. Добавление в поисковые системы.
Вы должны понимать, что сразу ничего не делается, прежде чем все ваши действия принесут результаты, пройдет какое-то время. Не надо никуда торопиться, ваш ресурс некоммерческий, от того, что к вам сразу не будет притока посетителей, трагедии не случится. К тому же бесплатная реклама не может быть сопоставима по эффективности с той, в которую вы вложили деньги.
В поисковые системы мы добавляем информацию о нашем ресурсе через неделю-другую, после того, как мы разобрались с каталогами и обменом. Мы это делаем в надежде, что к тому времени, как мы будем добавлять о себе информацию в поисковики, они успеют проиндексировать (заметить), страницы других сайтов, где появилась информация о нас.
Для поисковых систем мы заготавливаем заранее ключевые слова - это слова, которые, как мы предполагаем, будет вводить для поиска человек, когда он ищет ресурсы, содержащие такую информацию, как на нашем сайте. Также для поисковых систем мы заготавливаем интересное описание, нашего ресурса.
На что стоит обратить внимание при составлении списка ключевых слов - ключевые слова, должны встречаться в обычном тексте на страницах нашего сайта. Так, если мы берем слово «медицина», как одно из ключевых, оно должно быть в тексте на первой странице нашего сайта, и не только на ней, т.к. поисковые системы смотрят, соответствуют ли заявленные ключевые слова тем, что содержатся в тексте ваших страниц. От этого тоже зависит ваша позиция в списке результатов, выдаваемых поисковой системой пользователю.
Более того, есть специальные META тэги, которые мы должны прописать в коде всех страниц нашего сайта, они содержат ключевые слова и описание вашего сайта. Содержимое мета-тэгов не видно посетителю вашей страницы, зато учитывается поисковыми системами.
Четвертый этап. Баннерные системы.
Участвовать в баннерных системах имеет смысл, только если они тематические – т.е. допустим, баннерная система, в которой участвуют только сайты с медицинской тематикой. В универсальных баннерных системах, не подчиненных единой тематике участвовать вам не имеет смысла. Это не эффективно, ведь вы сможете показывать в день столько баннеров, сколько было показано на страницах вашего сайта, т.е. мало, а если их при этом не видит ваш потенциальный посетитель, человек, который заинтересован в предлагаемой вами информации, то эффективность баннерной рекламы стремиться к нулю, незаинтересованный человек просто не перейдет по баннеру на ваш сайт.
Баннерные системы нас могут интересовать также в том случае, если вы все-таки решили немного потратиться на рекламу. В этом случае вы можете купить баннерные показы на каких-нибудь крупных сайтах, где обитает ваш потенциальный посетитель.
Пятый этап. Нетрадиционные способы.
Вы можете мне не поверить, но этот этап может быть самым эффективным, для повышения посещаемости вашего сайта.
Ваша задача придумать, как еще можно рекламировать свою страницу. К сожалению, общего рецепта тут быть не может. Но я расскажу, как я действовал в случае с Постройкой.ру, в свое время, чтобы вы поняли, что я имею ввиду.
Я сидел, думал, как же сделать сайт популярнее. И мне пришла в голову замечательная идея: у меня есть замечательный и уникальный учебник по html, если сделать оффлайн версию, положить в архив, тогда можно будет поместить мой учебник на сайты-сборники разных программ, ведь я ничего от этого не теряю. Конечно, прежде чем сделать это, я посмотрел, дают ли эти сайты такую возможность, оказалось, что на них имеются специальные разделы для обучающих программ и мой учебник подходит для размещения там. Решено, сделано. Я разместил учебник по всем крупным файловым архивам. В итоге, через какое-то время посещаемость моего сайта заметно возросла, потому что посетители, прочитав оффлайн версию уникального учебника приходили на сайт в поисках других интересных и полезных материалов, а также советов автора.
Конечно, этот способ подойдет не всем. Но вы можете написать несколько интересных статей, и поместить их на крупные порталы, если статьи будут интересные, то читатель зайдет на ваш сайт, ведь в статье всегда указываются при публикации данные об авторе.
Я полагаю, это далеко не единственные нетрадиционные способы, стоит только приложить чуточку выдумки, и вы найдете хороший способ для рекламы своего сайта. В любом случае, это не должен быть способ навязывания: некоторые несознательные граждане захламляют чужие форумы и гостевые следующим образом - “Здрасте, я Вася Пупкин, мне ваш сайт нравится. Посетите мой сайт.” - это неправильное позиционирование вас и вашего ресурса, так вы только выставляете себя в дурном свете.
Шестой этап. Как не потерять вашего посетителя.
Чтобы посетитель возвращался к вам вновь и вновь, нужно периодически добавлять на сайт новую информацию. Кроме того, нужно постоянно поддерживать с посетителем общение: установите форум или гостевую книгу, где посетители смогут задавать вам вопросы. Старайтесь каждый день просматривать форум, гостевую книгу, почту, и отвечать на вопросы ваших посетителей.
Вы также можете устраивать опросы, чтобы узнать мнение своего посетителя, что ему нужно, это создаст у него впечатление, что он принимает участие в развитии вашего ресурса, ему будет это приятно. Вы можете устраивать конкурсы с небольшими призами. Вы можете сделать новостную рассылку + рассылку с частью новых материалов, которые появляются на сайте. И много чего еще.
Не забывайте, главное, это заинтересованность вашего посетителя в том, что вы ему предлагаете, он нужен вам, а вы должны попытаться стать нужными ему. Когда вы нужны посетителю, когда у него остаются хорошие и теплые впечатления о вашем сайте, он начинает рекомендовать вас друзьям, знакомым. Он начинает сам упоминать о вас на форумах и чатах, где он общается. Он добавляет на вас ссылку на своей странице, чтобы поделиться с другими таким хорошим ресурсом, как ваш. А это и есть лучшая реклама, а это и есть признание того, что ваш ресурс действительно замечательный.
Седьмой этап. Повторение этапов.
Каждый день в интернете появляется много разных и новых ресурсов. В том числе и каталоги, и поисковые системы, и новые сайты, близкие по тематике вашему. Ваша задача следить за новыми ресурсами, добавлять свой сайт в новые каталоги и поисковые системы. Если вы будете заниматься рекламой периодически, то у вас больше шансов сделать свой сайт посещаемым, и привлечь больше новых посетителей.