Книга английского специалиста, в которой в наглядной и оригинальной форме представлен стандарт языка Паскаль, имеющего реализации практически на всех современных ЭВМ. Изложение рассчитано на изучение языка. Для программистов разной квалификации.
Открыв эту книгу, не сразу понимаешь, что держишь в руках учебник по языку программирования Паскаль. На одной странице - какие-то падающие пирамидки из кубиков, на другой - переплетение стрелочек, на третьей - вроде бы программа, но по ней почему-то ползает множество жучков. Все это - выразительные средства, делающие чтение книги не только полезным, но и по возможности простым и интересным занятием. Упомянутые жучки, в частности, указывают ошибочные места в программе. Этот символ происходит из омонимии английского слова bug, означающего одновременно и жука и ошибку в программе.
Изложение материала в этой книге построено на рассмотрении достаточно простых примеров, с помощью которых можно быстро научиться создавать мощные сценарии и программы. Для того чтобы извлечь максимальную пользу из книги, ее необходимо читать последовательно, начиная с первой главы и заканчивая последней. В каждой из следующих глав рассматривается новый материал и способы решения определенных задач, которые во многом базируются на понимании того, что было пройдено в предыдущих главах. Ну, а после того, как вы почувствуете себя знатоком Perl и завершите чтение данной книги, она может служить в качестве информативного наглядного пособия, всегда занимающего почетное место на вашем рабочем столе.
Прежде всею, книга адресована тем, кто активно ищет средство, с помощью которого можно было бы быстро научиться создавать сценарии на языке Perl.
Книга представляет собой уникальное наглядное пособие по основам программирования на языке сценариев Java Script. В ней рассмотрены базовые средства Java Script и методы их использования для решения конкретных задач, возникающих при разработке Web-страниц.Читатель узнает, как сделать Web-страницы динамическими, из более чем двухсот коротких уроков, каждый из которых основан на одном-двух примерах, наглядно демонстрирующих результаты работы операторов Java Script. В книге содержится около 500 копий экранов с текстами сценариев и Web-страниц.
Простота, ясность и наглядность изложения делают эту книгу незаменимой для тех, кто приступает к изучению Java Script; она будет также полезной для более искушенных пользователей HTML.
В удобной наглядной форме описаны все элементы РНР — популярного языка создания CGI-сценариев. Рассмотрены не только особенности синтаксиса языка, но и редактирование кода в программах EditPlus и UltraEdit, а также установка РНР и сервера Apache. Материал систематизирован таким образом, что читатель может использовать книгу и как учебник, и как справочник. Примеры, взятые из реальной практики Web-программирования, позволяют лучше усвоить теоретический материал. Книга рассчитана на самую широкую аудиторию — не только на новичков, но и на опытных программистов.
В удобной, наглядной форме описаны все элементы PHP - популярного языка CGI-сценариев. Рассмотрены не только особенности синтаксиса языка, но и редактирование кода в программах EditPlus и UltraEdit, а также установка PHP и сервера Apache. Материал систематизирован таким образм, что читатель может использовать книгу и как учебник и как справочник. Примеры, взятые из реальной практики Web-программирования позволяют лучше усвоить теоретический материал. Книга расчитана на самую широкую аудиторию - не только на новичков, но и на опытных программистов.
Данная статья предназначена для начинающих программистов, которые никогда не работали с потоками, и хотели бы узнать основы работы с ними. Желательно, чтоб читатель знал основы ООП и имел какой-нибудь опыт работы в Delphi.
Для начала давайте определимся, что под словом "поток" я подразумеваю именно Thread, который еще имеет название "нить". Нередко встречал на форумах мнения, что потоки не нужны вообще, любую программу можно написать так, что она будет замечательно работать и без них. Конечно, если не делать ничего серьёзней "Hello World" это так и есть, но если постепенно набирать опыт, рано или поздно любой начинающий программист упрётся в возможности "плоского" кода, возникнет необходимость распараллелить задачи. А некоторые задачи вообще нельзя реализовать без использования потоков, например работа с сокетами, COM-портом, длительное ожидание каких-либо событий, и т.д.
Всем известно, что Windows система многозадачная. Попросту говоря, это означает, что несколько программ могут работать одновременно под управлением ОС. Все мы открывали диспетчер задач и видели список процессов. Процесс - это экземпляр выполняемого приложения. На самом деле сам по себе он ничего не выполняет, он создаётся при запуске приложения, содержит в себе служебную информацию, через которую система с ним работает, так же ему выделяется необходимая память под код и данные. Для того, чтобы программа заработала, в нём создаётся поток. Любой процесс содержит в себе хотя бы один поток, и именно он отвечает за выполнение кода и получает на это процессорное время. Этим и достигается мнимая параллельность работы программ, или, как её еще называют, псевдопараллельность. Почему мнимая? Да потому, что реально процессор в каждый момент времени может выполнять только один участок кода. Windows раздаёт процессорное время всем потокам в системе по очереди, тем самым создаётся впечатление, что они работают одновременно. Реально работающие параллельно потоки могут быть только на машинах с двумя и более процессорами.
Для создания дополнительных потоков в Delphi существует базовый класс TThread, от него мы и будем наследоваться при реализации своих потоков. Для того, чтобы создать "скелет" нового класса, можно выбрать в меню File - New - Thread Object, Delphi создаст новый модуль с заготовкой этого класса. Я же для наглядности опишу его в модуле формы. Как видите, в этой заготовке добавлен один метод - Execute. Именно его нам и нужно переопределить, код внутри него и будет работать в отдельном потоке. И так, попробуем написать пример - запустим в потоке бесконечный цикл:
Запустите пример на выполнение и нажмите кнопку. Вроде ничего не происходит - форма не зависла, реагирует на перемещения. На самом деле это не так - откройте диспетчер задач и вы увидите, что процессор загружен по-полной. Сейчас в процессе вашего приложения работает два потока - один был создан изначально, при запуске приложения. Второй, который так грузит процессор - мы создали по нажатию кнопки. Итак, давайте разберём, что же означает код в Button1Click:
тут мы создали экземпляр класса TNewThread. Конструктор Create имеет всего один параметр - CreateSuspended типа boolean, который указывает, запустить новый поток сразу после создания (если false), или дождаться команды (если true).
свойство FreeOnTerminate определяет, что поток после выполнения автоматически завершится, объект будет уничтожен, и нам не придётся его уничтожать вручную. В нашем примере это не имеет значения, так как сам по себе он никогда не завершится, но понадобится в следующих примерах.
Свойство Priority, если вы еще не догадались из названия, устанавливает приоритет потока. Да да, каждый поток в системе имеет свой приоритет. Если процессорного времени не хватает, система начинает распределять его согласно приоритетам потоков. Свойство Priority может принимать следующие значения:
tpTimeCritical - критический
tpHighest - очень высокий
tpHigher - высокий
tpNormal - средний
tpLower - низкий
tpLowest - очень низкий
tpIdle - поток работает во время простоя системы
Ставить высокие приоритеты потокам не стоит, если этого не требует задача, так как это сильно нагружает систему.
Ну и собственно, запуск потока.
Думаю, теперь вам понятно, как создаются потоки. Заметьте, ничего сложного. Но не всё так просто. Казалось бы - пишем любой код внутри метода Execute и всё, а нет, потоки имеют одно неприятное свойство - они ничего не знают друг о друге. И что такого? - спросите вы. А вот что: допустим, вы пытаетесь из другого потока изменить свойство какого-нибудь компонента на форме. Как известно, VCL однопоточна, весь код внутри приложения выполняется последовательно. Допустим, в процессе работы изменились какие-то данные внутри классов VCL, система отбирает время у основного потока, передаёт по кругу остальным потокам и возвращает обратно, при этом выполнение кода продолжается с того места, где приостановилось. Если мы из своего потока что-то меняем, к примеру, на форме, задействуется много механизмов внутри VCL (напомню, выполнение основного потока пока "приостановлено"), соответственно за это время успеют измениться какие-либо данные. И тут вдруг время снова отдаётся основному потоку, он спокойно продолжает своё выполнение, но данные уже изменены! К чему это может привести - предугадать нельзя. Вы можете проверить это тысячу раз, и ничего не произойдёт, а на тысяча первый программа рухнет. И это относится не только к взаимодействию дополнительных потоков с главным, но и к взаимодействию потоков между собой. Писать такие ненадёжные программы конечно нельзя.
Синхронизации потоков
Если вы создали шаблон класса автоматически, то, наверное, заметили комментарий, который дружелюбная Delphi поместила в новый модуль. Он гласит: "Methods and properties of objects in visual components can only be used in a method called using Synchronize". Это значит, что обращение к визуальным компонентам возможно только путём вызова процедуры Synchronize. Давайте рассмотрим пример, но теперь наш поток не будет разогревать процессор впустую, а будет делать что-нибудь полезное, к примеру, прокручивать ProgressBar на форме. В качестве параметра в процедуру Synchronize передаётся метод нашего потока, но сам он передаётся без параметров. Параметры можно передать, добавив поля нужного типа в описание нашего класса. У нас будет одно поле - тот самый прогресс:
Вот теперь ProgressBar двигается, и это вполне безопасно. А безопасно вот почему: процедура Synchronize на время приостанавливает выполнение нашего потока, и передаёт управление главному потоку, т.е. SetProgress выполняется в главном потоке. Это нужно запомнить, потому что некоторые допускают ошибки, выполняя внутри Synchronize длительную работу, при этом, что очевидно, форма зависает на длительное время. Поэтому используйте Synchronize для вывода информации - то самое двигание прогресса, обновления заголовков компонентов и т.д.
Вы наверное заметили, что внутри цикла мы используем процедуру Sleep. В однопоточном приложении Sleep используется редко, а вот в потоках его использовать очень удобно. Пример - бесконечный цикл, пока не выполнится какое-нибудь условие. Если не вставить туда Sleep мы будем просто нагружать систему бесполезной работой.
Надеюсь, вы поняли как работает Synchronize. Но есть еще один довольно удобный способ передать информацию форме - посылка сообщения. Давайте рассмотрим и его. Для этого объявим константу:
В объявление класса формы добавим новый метод, а затем и его реализацию:
Используя функцию SendMessage, мы посылаем окну приложения сообщение, один из параметров которого содержит нужный нам прогресс. Сообщение становится в очередь, и согласно этой очереди будет обработано главным потоком, где и выполнится метод SetProgressPos. Но тут есть один нюанс: SendMessage, как и в случае с Synchronize, приостановит выполнение нашего потока, пока основной поток не обработает сообщение. Если использовать PostMessage этого не произойдёт, наш поток отправит сообщение и продолжит свою работу, а уж когда оно там обработается - неважно. Какую из этих функций использовать - решать вам, всё зависит от задачи.
Вот, в принципе, мы и рассмотрели основные способы работы с компонентами VCL из потоков. А как быть, если в нашей программе не один новый поток, а несколько? И нужно организовать работу с одними и теми же данными? Тут нам на помощь приходят другие способы синхронизации. Один из них мы и рассмотрим. Для его реализации нужно добавить в проект модуль SyncObjs.
Критические секции
Работают они следующим образом: внутри критической секции может работать только один поток, другие ждут его завершения. Чтобы лучше понять, везде приводят сравнение с узкой трубой: представьте, с одной стороны "толпятся" потоки, но в трубу может "пролезть" только один, а когда он "пролезет" - начнёт движение второй, и так по порядку. Еще проще понять это на примере и тем же ProgressBar'ом. Итак, запустите один из примеров, приведённых ранее. Нажмите на кнопку, подождите несколько секунд, а затем нажмите еще раз. Что происходит? ProgressBar начал прыгать. Прыгает потому, что у нас работает не один поток, а два, и каждый из них передаёт разные значения прогресса. Теперь немного переделаем код, в событии onCreate формы создадим критическую секцию:
У TCriticalSection есть два нужных нам метода, Enter и Leave, соответственно вход и выход из неё. Поместим наш код в критическую секцию:
Попробуйте запустить приложение и нажать несколько раз на кнопку, а потом посчитайте, сколько раз пройдёт прогресс. Понятно, в чем суть? Первый раз, нажимая на кнопку, мы создаём поток, он занимает критическую секцию и начинает работу. Нажимаем второй - создаётся второй поток, но критическая секция занята, и он ждёт, пока её не освободит первый. Третий, четвёртый - все пройдут только по-очереди.
Критические секции удобно использовать при обработке одних и тех же данных (списков, массивов) разными потоками. Поняв, как они работают, вы всегда найдёте им применение.
В этой небольшой статье рассмотрены не все способы синхронизации, есть еще события (TEvent), а так же объекты системы, такие как мьютексы (Mutex), семафоры (Semaphore), но они больше подходят для взаимодействия между приложениями. Остальное, что касается использования класса TThread, вы можете узнать самостоятельно, в help'е всё довольно подробно описано. Цель этой статьи - показать начинающим, что не всё так сложно и страшно, главное разобраться, что есть что. И побольше практики - самое главное опыт!
Поиск по шаблону является настолько обычным занятием в разработке программного обеспечения, что для облегчения этой задачи была создана специальная технология — регулярные выражения. Узнайте, как можно использовать ее при написании кода, прочитав эту статью.
Все устройства получают входную информацию, выполняют какие-либо операции и выдают результат. Например, телефон во время разговора преобразует звуковую энергию в электрический сигнал и обратно. Двигатель потребляет топливо (пар, расщепление атомных ядер, бензин, мышечные усилия) и преобразует его в энергию. Блендер поглощает ром, лед, лайм и кюрасао и взбалтывает их в коктейль Mai Tai. (Или, если вам хочется чего-то изысканного, сделайте Bellini из шампанского и грушевого сока. Блендер – замечательное универсальное устройство.)
Так как программное обеспечение преобразует данные, то каждое приложение фактически является устройством (хоть и виртуальным, так как у него нет физических составляющих). Например, компилятор в качестве входной информации получает исходную программу и преобразует ее в двоичный исполняемый код. Программа прогнозирования погоды генерирует предсказания на основе результатов прошлых (исторических) замеров, а графический редактор обрабатывает пикселы, применяя правила к отдельным пикселам или их группам, чтобы, например, сделать изображение более четким или изменить его стиль.
Так же, как и любое другое устройство, программное обеспечение предназначено для работы с определенным исходным материалом, например, набором чисел, данными XML-схемы или протоколом. Если программе задать некорректную входную информацию — неподходящую по форме или типу, то существует большая вероятность того, что результат будет непредсказуемым и, возможно, даже катастрофическим. Как говорится: "Мусор заложишь - мусор получишь".
На самом деле для решения всех нетривиальных задач необходимо отделять правильные данные от некорректных и отклонять некорректные данные во избежание ошибок в результатах. Это, конечно же, актуально и для Web-приложений, написанных на языке PHP. Неважно, получены ли входные данные из формы для ввода с клавиатуры или в результате выполнения программного запроса Asynchronous JavaScript + XML (Ajax), прежде чем начать какие-либо вычисления, программа должна проверить входную информацию. Возможно, что числовые значения должны находиться в пределах определенного диапазона чисел или представлять собой только целые числа. Возможно, значение должно соответствовать определенному формату, например, почтового индекса. Например, почтовый индекс в США представляет собой пять цифр плюс дополнительный префикс "Plus 4", состоящий из дефиса и 4 дополнительных цифр. Возможно, другие строки также должны состоять из определенного количества символов, например, две буквы для указания аббревиатуры штата США. Строковые данные доставляют особенно много проблем: PHP-приложение должно быть начеку по отношению к злонамеренным программам-агентам, вложенным в SQL-запросы, код JavaScript или любой другой код, которые способны изменить поведение приложения или обойти защиту.
Однако каким образом программа может определить, являются ли входные данные числом или соответствуют ли определенным требованиям, например, к почтовому индексу? На самом деле для реализации проверки путем сопоставления с шаблоном необходим небольшой парсер, создающий конечный автомат, считывающий входные данные, обрабатывающий маркеры, отслеживающий состояние и выдающий результаты. Однако создание и обслуживание даже самого простого парсера может оказаться непростым делом.
К счастью, анализ на основе сопоставления с шаблоном настолько широко распространен в компьютерных технологиях, что с течением времени (примерно с момента появления UNIX®) были разработаны специальные технологии и, конечно же, механизмы обработки, чтобы облегчить рутинную работу. Регулярное выражение (regex) описывает шаблоны посредством лаконичных и удобочитаемых обозначений. Получив регулярное выражение и данные, механизм regex сообщает, совпадают ли эти данные с шаблоном, и если совпадение было обнаружено, что именно совпало.
Вот небольшой пример использования регулярного выражения, взятый из UNIX-утилиты, работающей в режиме командной строки, которая ищет заданный шаблон в содержимом одного или нескольких текстовых файлов UNIX. Команда grep -i -E '^Bat' ищет последовательность символов beginning-of-line (начало строки), обозначаемое "крышкой", [^]), за которым следуют буквы b, a, и t верхнего или нижнего регистра (ключ -i указывает на то, что при сопоставлении с шаблоном регистр не учитывается, таким образом, например, B и b - тождественны). Следовательно, для файла heroes.txt:
Листинг 1. heroes.txt
Вышеупомянутая команда grep выдаст два совпадения:
Batman
Batgirl
Регулярные выражения
PHP предлагает два программных интерфейса регулярных выражений: один -- для интерфейса переносимых операционных систем (POSIX), а второй - для регулярных выражений, совместимых с языком Perl (PCRE). В общем и целом второй интерфейс является более предпочтительным, так как PCRE сам по себе мощнее, чем POSIX, и предоставляет все операторы, используемые в языке Perl. Более подробная информация по обращению к regex-функциям POSIX представлена в документации по языку PHP (см. раздел Ресурсы). В данной статье мы сосредоточим свое внимание на свойствах PCRE.
Регулярные выражения PHP PCRE содержат операторы, позволяющие путем сопоставления находить конкретные символы или другие операторы, определенные местоположения, например, начало и конец строки, начало или конец слова. Регулярные выражения также позволяют описывать альтернативы, которые можно задать альтернативы типа "или"-"или"; повторения фиксированной, изменяемой или неопределенной длины; наборы символов (например, "любая буква от a до m"); и классы, или типы символов (печатаемые символы, знаки препинания). Специальные операторы также разрешают использовать группировку — возможность применить оператор к целой группе других операторов.
В таблице 1 показаны некоторые типичные операторы регулярных выражений. Для создания сложных выражений можно последовательно объединять элементарные операторы из таблицы 1 (и другие).
Таблица 1. Типичные операторы регулярных выражений
Оператор Значение
. (точка) Любой одиночный символ
^ (крышка) Пустая последовательность в начале строки или цепочки
$ (знак доллара) Пустая последовательность в конце строки
A Буква A верхнего регистра
a Буква a нижнего регистра
\d Любая цифра
\D Любой нецифровой символ
\w Любая буква или цифра; синоним - [:alnum:]
[A-E] Любая заглавная буква из A, B, C, D или E
[^A-E] Любой символ, за исключением заглавных букв A, B, C, D или E
X? Найти совпадение по отсутствию или наличию одной заглавной буквы X
X* Ни одной или любое количество заглавных букв X
X+ Одна или несколько заглавных букв X
X{n} Ровно n заглавных букв X
X{n,m} Не менее n и не более m заглавных букв X; если опустить m, то выражение будет искать не менее n заглавных букв X
(abc|def)+ По меньшей мере одно вхождение последовательности abc и def
В следующем примере показано типичное использование регулярного выражения. Например, для web-сайта необходимо, чтобы каждый пользователь регистрировался. Имя пользователя должно начинаться с буквы и содержать от 3 до 10 буквенно-цифровых символов. Для проверки имени пользователя на соответствие ограничениям при отправке данных в приложение можно использовать следующее регулярное выражение: ^[A-Za-z][A-Za-z0-9_]{2,9}$.
Знак "крышка" соответствует началу строки. Первый набор [A-Za-z] соответствует любой букве. Второй набор [A-Za-z0-9_]{2,9} соответствует последовательности, содержащей от 2 до 9 букв, цифр или символов подчеркивания. Знак доллара ($) соответствует концу строки.
На первый взгляд, знак доллара может показаться лишним, однако его использование важно. Если его пропустить, то условиям данного регулярного выражения будет отвечать любая строка, которая начинается с буквы, содержит от 2 до 9 буквенно-цифровых символов и любое количество других символов. Иными словами, если бы не было знака доллара как привязки к концу строки, то подошла бы недопустимо длинная строка с подходящим началом, например, "martin1234-cruft" .
Программирование на языке PHP и регулярные выражения
В PHP есть функции для поиска совпадений в тексте, замены каждого совпадения на другой текст (похоже на операцию "найти и заменить") и поиска совпадений среди элементов списка. Вот эти функции:
Чтобы показать, как работают эти функции, давайте создадим небольшое PHP-приложение, которое будет просматривать список слов на соответствие определенному шаблону. Слова и регулярные выражения будут вводиться из обычной web-формы, а результаты отображаться в браузере посредством функции simple print_r(). Эта программка пригодится, если возникнет желание проверить или отладить регулярное выражение.
PHP-код показан в листинге 2. Все входные данные берутся из обычной HTML-формы. (Для краткости эту форму и PHP-код, отслеживающий ошибки, опустим.)
Листинг 2. Сравнение текста с шаблоном
Вначале с помощью функции preg_split() строка из слов, разделенных запятыми, преобразуется в отдельные элементы. Данная функция разбивает строку в тех местах, которые соответствуют условиям регулярного выражения. В данном случае регулярное выражение представляет собой просто "," , (запятая - разделитель списка слов, указанных через запятую). Слэш в начале и в конце просто показывает начало и конец regex.
Третий и четвертый аргументы функции preg_split() необязательны, но полезны. Добавьте в третий аргумент число n целого типа, если необходимо вернуть только первые n совпадений, или -1, если необходимо вернуть все совпадения. Если в качестве четвертого аргумента задать идентификатор PREG_SPLIT_NO_EMPTY, то функция preg_split() не будет возвращать пустые результаты.
Затем каждый элемент списка слов, разделенных запятыми, корректируется (убираются начальные и конечные пробелы) с помощью функции trim() и сравнивается с заданным регулярным выражением. Функция preg_grep() существенно упрощает процесс обработки списка: просто укажите в качестве первого аргумента шаблон, а в качестве второго - массив слов для сравнения. Функция возвращает массив совпадений.
Например, если в качестве шаблона задать регулярное выражение ^[A-Za-z][A-Za-z0-9_]{2,9}$ и список слов разной длины, то можно получить результат, показанный в листинге 3.
Листинг 3. Результат работы простого регулярного выражения
Кстати, с помощью дополнительного маркера PREG_GREP_INVERT можно инвертировать операцию preg_grep() и найти элементы, которые не совпадают с шаблоном (аналогично оператору grep -v в командной строке). Заменяя 22 строку на $matches = preg_grep( "/${_REQUEST[ 'regex' ]}/", $words, PREG_GREP_INVERT ) и используя входные данные из листинга 3, мы получим Array ( [1] => 1happy [2] => hermanmunster ).
Разбор строк
Функции preg_split() и preg_grep() очень удобны. Первая из них может разбирать строку на подстроки, если подстроки разделяются определенным шаблоном. Функция preg_grep() позволяет быстро отфильтровать список.
Но что произойдет, если строку нужно разобрать на составные части, используя одно или несколько сложных правил? Например, в США номера телефонов обычно выглядят следующим образом: "(305) 555-1212," "305-555-1212," или "305.555.1212." Если убрать пунктуацию, то количество символов сократится до 10 цифр, что легко можно определить с помощью регулярного выражения \d{10}. Однако код и префикс (каждый из которых состоит из трех цифр) телефонного номера США не могут начинаться с нуля или единицы (так как нуль и единица используются как префиксы для междугородных звонков). Вместо того чтобы разбивать числовую последовательность на отдельные цифры и создавать сложный код, для верификации можно использовать регулярное выражение.
Фрагмент кода позволяющий решить эту задачу, показан в листинге 4.
Листинг 4. Проверка американского телефонного номера
Давайте пройдем по этому коду:
* Как показано в таблице 1, в регулярных выражениях используется ограниченный набор специальных символов, например, квадратные скобки ([ ]) для наименования последовательности. Если надо найти такой символ в тексте, необходимо "выделить" специальный символ в регулярном выражении, поставив перед ним обратный слэш (\). Когда символ выделен, можно задать его посик, как и любого другого символа. Если нужно найти символ точки, например, в полном составном имени хоста, то напишите \.. При желании строку можно подать в функцию preg_quote() которая выполняет автоматическую изоляцию всех специальных символов регулярных выражений, как показано в строке 1. Если поставить echo() $punctuation после первой строки, то вы должны увидеть \(\)\.-.
* В строке 2 из телефонного номера убираются все знаки пунктуации. Функция preg_replace() заменяет все символы из $punctuation — операторы из набора [ ] - пустой строкой, эффективно устраняя такие символы. Возвращаемая новая строка присваивается переменной $number.
* В строке 4 определен шаблон верифицируемого телефонного номера США.
* Строка 5 реализует сопоставление, сравнивая телефонный номер, который теперь состоит только из цифр, с шаблоном. Функция preg_match() возвращает 1, если есть совпадение. Если совпадения нет, функция preg_match() возвращает нулевое значение. Если во время обработки возникла ошибка, то функция возвращает значение False (ложно). Таким образом, чтобы проверить удачное завершение, необходимо посмотреть, было ли возвращено значение 1. В противном случае проверьте итоговое значение функции preg_last_error() (если используется PHP версии 5.2.0 или выше). Если оно не равно нулю, то, возможно, был превышен лимит вычислений, например, разрешенная глубина рекурсии регулярного выражения. Обсуждение констант и ограничений, применяемых в регулярных выражениях PHP, представлено на странице, посвященной функциям регулярных выражений PCRE (см. раздел Ресурсы).
Извлечение данных
Во многих случаях необходимо только получить ответ на вопрос: "Соответствуют ли данные шаблону?" – например, при проверке данных. Однако чаще регулярные выражения используются для подтверждения соответствия и получения информации о совпадении.
Вернемся к примеру с телефонным номером. Пусть при соответствии шаблону нам необходимо сохранить код, префикс и номер линии в отдельных полях базы данных. Регулярные выражения могут запоминать совпадающие с шаблоном данные с помощью оператора capture. Оператор capture обозначается круглыми скобками и может использоваться в любой части регулярного выражения. Операции capture можно делать вложенными для поиска подсегментов в извлеченных сегментах данных. Например, чтобы из 10-значного номера телефона извлечь код города, префикс и номер линии, можно использовать следующую строку:
/([2-9][0-9]{2})([2-9][0-9]{2})([0-9]{4})/
Если входные данные соответствуют шаблону, первые три цифры захватываются первой парой круглых скобок, следующие три цифры - второй парой, а последние 4 цифры - последним оператором. Модификация вызова функции preg_match() возвращает извлеченные данные.
Листинг 5. Возврат извлеченных данных функцией preg_match()
Если в качестве третьего аргумента функции preg_match() указать переменную, например, в нашем коде, $matches, то в качестве ее значения будет выступать список извлеченных результатов. Нулевой элемент списка (с индексом 0) - это все совпадение целиком; первый элемент - совпадение, относящееся к первой паре круглых скобок, и так далее.
Вложенные операторы capture извлекают сегменты и подсегменты фактически любой глубины. Сложность с вложенными операторами capture состоит в том, чтобы определить, в какой части массива соответствий находится каждое соответствие, например, $matches. Действует следующее правило: подсчитайте порядковый номер открывающей скобки в регулярном выражении — этот номер и будет индексом нужного совпадения в массиве соответствий.
В листинге 6 показан пример (немного надуманный) извлечения частей городского адреса.
Листинг 6. Код для извлечения городского адреса
Опять все совпадение целиком хранится по индексу 0. А где хранится номер улицы? Если считать слева направо, номер улицы проверяется \d+. Это вторая открывающая круглая скобка слева, следовательно, значением $matches[2] будет 123. В $matches[4] оказывается название города, а в $matches[6] - почтовый индекс.
Продвинутые технологии
Обработка текста – широко распространенная задача, и PHP предоставляет ряд функций, упрощающих выполнение большого числа операций. Обратите внимание на следующее:
* Функция preg_replace() может работать как с одной строкой, так и с массивом строк. Если вызвать preg_replace() для массива строк, замена будет выполнена во всех элементах массива. В этом случае код preg_replace() возвращает массив измененных строк.
* Как и во всех остальных реализациях PCRE, здесь для осуществления замены можно прибегать к сравнению с вложенным шаблоном. Для наглядности давайте рассмотрим проблему стандартизации формата телефонного номера. Заменим все знаки пунктуации точками. Наше решение показано в листинге 7.
Листинг 7. Замена знаков пунктуации точками
Сопоставление с шаблоном и, в случае совпадения, перевод в стандартный телефонный номер выполняется за один шаг.
На сегодняшний день цифровое видео развивается в двух направлениях это видео улучшенного качества для просмотра его на больших ЖК-панелях. И видео уменьшенного размера для экранов портативных устройств. Конечно смотреть фильм или видеоклип на большом экране намного удобней чем на маленьком. Зато устройства с малыми экранами, такие как мобильные телефоны, КПК и медиаплееры легко можно носить в кармане и смотреть видео в любых ситуациях.
Конвертирование видео в мобильные форматы.
На сегодняшний день цифровое видео развивается в двух направлениях это видео улучшенного качества для просмотра его на больших ЖК-панелях. И видео уменьшенного размера для экранов портативных устройств. Конечно смотреть фильм или видеоклип на большом экране намного удобней чем на маленьком. Зато устройства с малыми экранами, такие как мобильные телефоны, КПК и медиаплееры легко можно носить в кармане и смотреть видео в любых ситуациях.
Но для того, что бы такое портативное устройство смогло показывать видео его соответствующим образом надо подготовить и записать в память.
Конвертировать видео в форматы, поддерживаемые мобильными устройствами, проще всего при помощи специальных программ. Благодаря этим программам не нужно задумываться над тем, какое разрешение выбрать, и какой формат поддерживается мобильным девайсом.
Agogo Video to iPod / PSP / Cell Phone / Xbox / Pocket PC / PDA / MP4
Хотя название программы выглядит слишком длинным, зато пользователю не нужно вчитываться в описание программы и искать список поддерживаемых форматов, для того чтобы понять, поддерживает ли этот конвертер видео для мобильных телефонов или iPod.
Интерфейс ее так же прост, как незатейливо ее название. Окно состоит из трех основных частей: списка файлов, окошка предварительного просмотра и области, в которой задаются настройки кодирования. Для удобства она имеет несколько вкладок – To iPod, To Xbox, To 3GP и т.д. Таким образом, практически исключена возможность того, что вы выберете такой формат, который не поддерживается вашим портативным устройством. Настройки кодирования можно устанавливать только для видеофайлов, которые вы собираетесь проигрывать на iPod, для остальных устройств программа предлагает только профили настроек, изменить которые нельзя. Профили включают формат, разрешение и параметры звука. Число профилей не очень велико, например, для XBox – четыре, а для видеоплееров – всего два. Что касается iPod, то тут профили не предусмотрены, и пользователю самому предлагается определиться с форматом, количеством кадров в секунду, разрешением, соотношением сторон, частотой дискретизации аудио, битрейтом аудио и видео и громкостью.
Agogo Video to iPod / PSP / Cell Phone / Xbox / Pocket PC / PDA / MP4 может выполнять преобразование видеофайлов в пакетном режиме. Для этого достаточно загрузить в программу несколько видеофайлов. После того, как файл загружен, его можно просмотреть в окне предварительного просмотра и при необходимости отметить фрагмент, который нужно конвертировать. Для этого под окном предпросмотра есть специальные маркеры – в начале и в конце клипа. Кодирование будет выполняться с того места клипа, где установлен первый маркер, и до того, где находится второй.
Загруженные в программу файлы не обязательно кодировать все вместе. Напротив каждого из них есть флажок, и если перед нажатием кнопки Start его снять, то клип будет пропущен. Перед началом конвертирования нужно не забыть указать папку, куда будет сохраняться видео. Также при необходимости можно попросить программу выключить компьютер, когда все задания будут завершены.
WinAVI iPod/PSP/3GP/MP4 Video Converter
Программа так же не сложная – на освоение программы уходит максимум минуты три.
Первое, что нужно сделать – это выбрать устройство (iPod, PSP) или формат (3GP, MP4), нажав на одну из четырех кнопок. После этого нужно будет загрузить файл или файлы, которые необходимо преобразовать. Конвертер позволяет выбирать несколько файлов одновременно, но нужно, чтобы они были помещены в одну папку. Чтобы преобразовать видео с параметрами по умолчанию, нужно просто нажать кнопку OK, после чего программа начнет свою работу.
Кроме форматов, которые вынесены в название программы, WinAVI iPod/PSP/3GP/MP4 Video Converter поддерживает и другие, "немобильные форматы", такие как Mov, Rm, Wmv и другие. Стоит также отметить пакетный режим, в котором можно выполнить преобразование нескольких видеофайлов. В этом режиме можно установить очередь из файлов, которые нужно конвертировать в разные форматы. Его также можно использовать для преобразования одного и того же файла в несколько разных форматов.
Во время конвертирования файлов можно наблюдать за процессом в окне предварительного просмотра. Если компьютер достаточно мощный, то можно включить отображение видео в реальном времени. Очень удобно, что эти настройки можно менять непосредственно по время кодирования, не останавливая при этом процесс. Если предполагается, что кодирование займет много времени, можно включить опцию выключения компьютера после его завершения и лечь спать.
Xilisoft Video Converter
Число поддерживаемых этим конвертером форматов просто огромно – вряд ли вы не найдете в этом длинном списке тот, который нужен именно вам. При помощи программы можно даже преобразовать видео для просмотра на BlackBerry, Apple TV и iPhone, все более распространенные устройства тоже поддерживаются.
Программа может работать в двух режимах: в стандартном, для опытных пользователей, и в режиме мастера, предназначенном для новичков. Немного неудобно, что между этими режимами никак нельзя переключаться – она реализованы как две независимые утилиты, для открытия одной из которых нужно будет обратиться к меню "Пуск".
Настройка параметров кодирования выполнена очень удобно – не нужно открывать дополнительные окна, все параметры вынесены в главное окно программы. Тут можно определить качество видео и аудио, отключить звук, указать соотношение сторон и т.д.
Очень удобно и окошко предварительного просмотра – в нем можно по очереди проигрывать все файлы, загруженные в программу.
PocketDivxEncoder
Эта программа заслуженно пользуется большой популярностью среди владельцев КПК, смартфонов и других портативных устройств. В отличие от большинства видеоконвертеров, она не требует установки, совершенно бесплатна и, к тому же, имеет русскую локализацию.
Благодаря гибким настройкам, программа может использоваться даже для тех устройств, профили для которых она не поддерживает, например, для Sony PSP. Правда, в этом случае подбирать разрешение видео и другие настройки придутся вручную. С другой стороны, PocketDivxEncoder поддерживает сохранение пользовательских профилей, поэтому если вы постоянно кодируете видео для просмотра на одном и том же устройстве, подобрать настройки нужно будет только один раз.
Для наглядности в PocketDivxEncoder везде, где требуется предпросмотр видео, можно увидеть картинку выбранного устройства, а видео будет отображаться на его "экране". Это очень удобно, например, когда вы подбираете разрешение видеофайла – если оно слишком велико, вы сразу же увидите, что видео "вылазит" за пределы экрана.
Одна из функций, на которую нельзя не обратить внимание, - подсчет итогового размера файла. Происходит это в реальном времени – вы изменяете параметры, отвечающие за качество видео и звука, а программа тут же подсчитывает, как это отразится на размере файла. Очень удобно.
Для PDA и смартфонов предусмотрена возможность изменять ориентацию видео, в зависимости от того, как пользователь держит устройство. Конечно же, в современных портативных устройствах есть подобная функция, однако если видео изначально будет сохранено с нужной ориентацией, это освободит ресурсы системы.
Часто при неудачном сжатии происходит расхождение звука с видео. PocketDivxEncoder дает возможность исправить подобные ошибки и восстановить правильную синхронизацию аудио и видео.
SUPER 2007
Конвертер SUPER полностью оправдывает свое название. Программа поддерживает огромное число форматов, абсолютно бесплатна и, к тому же, содержит все необходимые кодеки. Понятно, что последнее отражается на ее размере – дистрибутив занимает около 30 Мб, но зато после установки вы можете быть полностью уверены в том, что сможете выполнить кодирование в любой формат с использованием любого популярного кодека.
Интерфейс программы хоть и не имеет ничего общего с внешним видом других конвертеров, назвать сложным его нельзя. Разработчики использовали несколько приемов, которые помогают сразу разобраться с программой. Во-первых, при подведении курсора к каждой области окна появляется всплывающая подсказка, объясняющая, что пользователю нужно делать (при необходимости подсказки можно отключить). Во-вторых, элементы интерфейса имеют разный цвет: все, что зеленое, относится к настройкам кодирования видео, синий цвет – это цвет параметров аудио, а настройки формата выделены красным.
У SUPER нет окна предварительного просмотра видео, однако есть встроенный проигрыватель. По умолчанию он воспроизводит видео во весь экран, но при желании можно вызвать окно настроек и изменить их.
Профили для портативных устройств заслуживают всяческих похвал. Есть профили для сохранения файла в AVI для проигрывания на КПК, для Nintendo DS, Sony PSP, Sony PS3, Zune, два разных профиля для сохранения в формат 3GP – для телефонов Nokia/Siemens и для Sony Ericsson, а также два профиля для iPod – для более старых моделей и плееров последнего поколения. При выборе того или иного профиля все неподдерживаемые параметры для удобства скрываются.
Среди настроек кодирования стоит отметить возможность отключения аудио или видеопотока, а также наличие функции Stream Copy, которая позволяет произвести кодирование без повторной компрессии звука или видео, а значит, без потери качества. Если при выбранных вами параметрах эта опция недоступна, они просто станет неактивной.
Наконец, SUPER содержит достаточно много дополнительных эффектов, которые могут быть применены к выходному видеофайлу. Например, можно добавить на видео водяной знак, изменить ориентацию видео, инвертировать цвета, добавить затухание, вывести на каждом кадре информацию о клипе. Однако, использовать все эти эффекты в одном видео не рекомендуется.
AVS Video Tools
AVS Video Tools – это пакет утилит для работы с видео. Один из них – AVS Video Converter - общего назначения, а второй, AVS Video to GO, создан специально для преобразования видео в форматы, поддерживаемые портативными устройствами.
Работа AVS Video to GO построена в виде мастера – на первом этапе необходимо выбрать видеофайл, после чего в окне программы отобразятся его параметры. Можно воспользоваться окном предпросмотра, чтобы убедиться, что загружен нужный файл.
AVS Video to GO работает не только с обычными видеофайлами, но и с DVD. Список поддерживаемых девайсов достаточно велик – есть даже профили для мобильных телефонов, работающих в сетях CDMA, для портативных DVD-плееров, плееров Creative Zen, Archos DVR и Apple TV.
AVS Video to GO – очень удобное решение, когда нужно выполнить конвертирование одного файла. Если же есть необходимость в пакетном преобразовании, нужно использовать AVS Video Converter.
Пожалуй, единственный недостаток программы в том, что нет возможности указывать параметры для каждого файла по отдельности – настройки выходного видео будут применены для всех загруженных в программу файлов.
Kingdia iPod/PSP/3GP/MP4/AVI Video Converter
Программа имеет узкую специализацию и ориентирована исключительно на создание видеофайлов для портативных устройств. С его помощью можно конвертировать видео в форматы, поддерживаемые КПК, Palm, iPod, Sony PSP, мобильными телефонами и медиаплеерами.
Преобразование может выполняться в пакетном режиме, правда, настройки при этом выбираются не отдельно для каждого файла, а для всех одновременно.
В списке выбора выходного формата шесть вариантов – Apple iPod, Sony PSP, 3GP, 3GP2, MP4 и xVid. При выборе одного из них загружаются настройки по умолчанию, однако всегда есть возможность изменить их, выбрав другой кодек или уменьшив битрейт. Правда, тонкая настройка параметров кодека, к сожалению, недоступна. Есть также ползунок для изменения громкости файла.
Во время преобразования отображение видео не работает, зато можно наблюдать за ходом выполнения операции, глядя на ползунок, который появляется в списке заданий. Если процесс кодирования занимает много времени, можно установить флажок Shutodown PC when finished, и программа сама выключит компьютер после завершения работы.
Среди коммерческих приложений наиболее функциональной оказалась программа AVS Video Tools. Ее цена не намного больше, чем других конвертеров, но по возможностям она их заметно превосходит, поскольку AVS Video Tools можно использовать и для захвата видео с камеры, и для конвертирования DVD. Что касается бесплатных программ, то и SUPER 2007, и PocketDivxEncoder хорошо справляются со своей задачей и при этом не требуют много времени на то, чтобы разобраться с интерфейсом.
Те, кто хорошо умеет работать с графическим редактором Photoshop, могут сделать анимированный GIF непосредственно в этой программе. Но создания баннера или анимированной кнопки совсем не обязательно каждому изучать Photoshop. Есть множество специализированных программ для создания анимированной графики, которые в свою очередь имеют множество специальных инструментов и шаблонов, благодаря которым создание рекламного объявления или анимированного логотипа для сайта становится делом нескольких минут.
Программы создающие GIF-анимацию.
Те, кто хорошо умеет работать с графическим редактором Photoshop, могут сделать анимированный GIF непосредственно в этой программе. Но создания баннера или анимированной кнопки совсем не обязательно каждому изучать Photoshop. Есть множество специализированных программ для создания анимированной графики, которые в свою очередь имеют множество специальных инструментов и шаблонов, благодаря которым создание рекламного объявления или анимированного логотипа для сайта становится делом нескольких минут.
GIF Construction Set Professional.
На первый взгляд кажется, что эта программа проста но это не так. Возможности ее очень широки, и, в отличие от многих аналогичных программ, она позволяет компилировать анимационные файлы не только в формате GIF. GIF Construction Set Professional может преобразовывать созданную в ней анимацию или уже готовый GIF-файл в формат Macromedia Flash (SWF). Файл Macromedia Flash имеет свои преимущества и недостатки перед GIF. Так, например, степень сжатия изображения в GIF ниже, и файл SWF может включать в себя не только анимацию, но и звук.
При экспорте созданной анимации в файл Macromedia Flash, следует помнить о том, что если в анимированном GIF можно указать время отображения каждого кадра по отдельности, в файле SWF частота смены изображений будет фиксированной. Кроме этого, файлы SWF, в отличие от GIF не поддерживают прозрачности.
Экспортировать в формат Macromedia Flash циклическую анимацию не получится – файл можно проиграть только один раз. Для имитации многократно повторяющейся анимации необходимо вносить дополнительные изменения в HTML-код страницы, на которой будет расположен SWF файл.
Принцип создания анимированного GIF-файла такой же, как и разработка рисованного мультфильма. Создается группа изображений с несколько измененным рисунком, после чего указывается их последовательность, и все они экспортируются в единый файл. Изображения, из которых будет состоять GIF-анимация, в GIF Construction Set Professional отображены в виде столбца кадров. Инструменты для выполнения различных манипуляций с кадрами «спрятаны» в контекстном меню. Они дают возможность вращать, обрезать, выполнять цветокоррекцию, добавлять эффект тени, выполнять объединение и удаление кадров.
Для файлов, которые помещаются на интернет-странице, очень важно, чтобы их размер был как можно меньше. В утилите GIF Construction Set Professional имеется специальная функция «суперсжатия», благодаря которой программа анализирует код GIF файла и делает размер анимации несколько меньше.
Easy GIF Animator Pro
Эта программа сделана, так чтобы любая задача могла быть выполнена в ней буквально за несколько минут. Реализовано это за счет продуманного процесса создания нового анимационного файла. В программе имеется свои мастера настроек - мастер создания нового баннера и мастер создания новой кнопки. Удобство таких предварительных заготовок еще и в том, что в программе уже заложены стандартные основные размеры баннеров, которые не всегда можно запомнить. В программе содержатся небольшой набор шаблонов кнопок с разными текстурами: мраморные, стеклянные, деревянные и пр.
Чтобы несколько разнообразить монотонное «слайд-шоу» сменяющихся кадров на баннере или на другом графическом элементе интернет-страницы, Easy GIF Animator Pro предлагает использовать анимационные эффекты перехода от одного изображения к другому. Вторая картинка может, например, выезжать из угла кадра или медленно проступать поверх предыдущей. Easy GIF Animator Pro имеет скромный набор инструментов для редактирования каждого изображения в анимации. Однако, несмотря на то, что этот «арсенал» напоминает палитру инструментов программы Microsoft Paint, на практике оказывается, что его вполне достаточно даже для того чтобы сделать текстовый баннер «с нуля». Здесь можно создавать геометрические фигуры, выполнять заливку, добавлять текст и делать заливку изображения градиентным цветом или даже выбранной текстурой.
GIF Movie Gear
В этой программе практически полностью отсутствует возможность редактирования изображений. Единственный способ это сделать – изменять рисунок по пикселам, что не далеко не всегда удобно. Из этого можно сделать вывод, что программа GIF Movie Gear позиционируется не как самостоятельный инструмент для работы с форматом GIF, а как вспомогательная утилита, которую будет уместно использовать в паре с каким-нибудь графическим редактором. В программе даже имеется возможность указать путь на диске к утилите, которая будет запускаться всякий раз, когда возникнет необходимость изменить рисунок кадра.
В GIF Movie Gear хорошо реализована оптимизация выходного файла. Во-первых, с ее помощью можно управлять количеством цветов в индексированной палитре GIF-файла, а также вручную подбирать цвета индексированной палитры и сохранять ее в отдельный файл для повторного использования. Во-вторых, в программе есть целая группа настроек для уменьшения размера файла без потери качества изображения. Среди них – максимально возможная обрезка кадров, устранение ненужных кадров (например, повторяющихся), замена дублирующихся точек изображения с прозрачностью. Эффективность выбранных настроек может быть мгновенно просчитана программой и оценена в процентах сжатия от общего размера анимационного файла.
В GIF Movie Gear можно использовать не только для создания GIF анимации. С помощью программы можно также создавать иконки *.ico (вот тут и пригодится возможность точечного рисунка), обычные и анимированные курсоры (*.cur, *.ani). Кроме вышеперечисленных форматов, изображения могут быть сохранены в виде многослойного файла PSD или в виде секвенции изображений в других графических форматах.
Если необходимо особым образом пометить создаваемый файл GIF, в него можно внедрить комментарий. При этом внешне файл останется прежним, лишь слегка увеличится его размер.
Selteco Bannershop GIF Animator
Эта программа нацелена, в основном на создание баннеров. В списке наиболее часто встречаемых разрешений можно найти все популярные сегодня типы баннеров, от стандартного 468x60 до «небоскреба» (skyscraper). Bannershop GIF Animator имеет специальный режим для быстрого создания анимированного изображения. Работая в нем, достаточно составить список графических файлов, задать задержку перед выводом на экран следующего кадра и все, файл можно сохранять в формате GIF. По такому же принципу работает и мастер создания слайд-шоу из отдельных картинок.
В Bannershop GIF Animator можно использовать анимационные эффекты, которые разделены на три группы – Intro Animation, Animation и Outro Animation. В первом случае можно получить эффект появления выделенного кадра, в последнем – его исчезновение. Отчасти, эти эффекты напоминают эффекты перехода, однако их область применения шире. Они также могут использоваться как видеофильтры. Эффекты еще одной группы, Animation, заставляют изображение двигаться особым образом – скользить, дрожать и переливаться светом.
Если составленная цепочка кадров включает в себя изображения разного разрешения, можно воспользоваться функцией Autosizing Frames, которая будет увеличивать рабочее пространство до тех пор, пока его площади не будет достаточно, чтобы отобразить самый большой кадр.
Нередко при создании текстового баннера приходится использовать символьный шрифт. Для того чтобы отыскать нужный значок, приходится тратить довольно много времени или использовать специальные программы-менеджеры установленных в системе шрифтов.
Создавая текст на баннере, отыскать нужный символ в Bannershop GIF Animator очень просто. Команда Inserт Symbol откроет таблицу со всеми элементами выбранного шрифта. Перебирая названия в списке установленных в системе шрифтов и наблюдая за таблицей, можно легко найти то, что нужно.
Готовую анимацию можно сразу сохранять в виде HTML страницы, в коде которой уже указано название графического файла.
Среди прочих особенностей программы стоит отметить возможность экспорта подготовленной анимации в AVI и поддержку векторного формата WMF, изображение которого растрируется при импорте в программу.
Active GIF Creator
Если необходимо сделать большое количество похожих баннеров, анимированных кнопок или логотипов, стоит задуматься о том, как упростить процесс. В Active GIF Creator это можно сделать с помощью специальных скриптов.
Модуль для работы со скриптами Script Editor является главной "изюминкой" программы. Он дает возможность автоматизировать рутинную работу, записав последовательность действий в отдельный скрипт. Анимационные скрипты – это файлы с расширением *.agif, которые сохраняются внутри проекта и могут многократно использоваться во время работы над ним. Таким образом, можно автоматически перемещать объекты, изменять их размер, управлять их отображением.
Active GIF Creator может оптимизировать размер анимационного файла, в зависимости от указанной скорости модема. В программе можно сохранять Gif анимацию сразу с HTML кодом и при этом подбирать в окне предварительного просмотра цвет фона и текста.
Кроме этого, программа умеет создавать GIF-файлы из командной строки в пакетном режиме. Самостоятельно разобраться с этой возможностью достаточно тяжело, но, тем не менее, ответы, на все вопросы, касающиеся работы с командной строкой, можно найти в технической документации Active GIF Creator.
CoffeeCup GIF Animator
CoffeeCup GIF Animator - это отличный выход для тех, у кого нет никакого желания и времени разбираться со сложными настройками Photoshop только ради того, чтобы сделать аватар. Программа несложна в использовании и при этом имеет все необходимые инструменты для решения такой задачи. Так, например, программа поддерживает импорт видео-файлов, может задавать время задержки для всех кадров GIF-анимации сразу или по отдельности, устанавливать для каждого кадра свое время отображения, задавать цвет, который должен быть прозрачным на изображении. Настроек в программе минимум, и все они помещаются в небольшом окне программы, в котором происходит сборка и предварительный просмотр анимации.
Мастер оптимизации также практически не требует от пользователя никакого вмешательства – достаточно следовать его простым инструкциям, и размер файла будет уменьшен настолько, насколько это возможно, без потери качества изображения. Это достигается за счет ограничения индексированной палитры и устранения присутствующих в файле GIF внутренних комментариев. CoffeeCup GIF Animator также сохраняет сделанную анимацию в SWF, и при этом выводит на экран код, который нужно будет вставить, чтобы файл отображался на веб-странице.
Ulead GIF Animator
Компания Ulead известна, прежде всего, своим программным обеспечением для работы с цифровым видео, поэтому неудивительно, что ее утилита GIF Animator унаследовала черты настоящего видеоредактора. Так, например, программа изобилует всевозможными эффектами, большинство которых перекочевали в GIF Animator из стандартного набора эффектов перехода приложений для обработки видео - Video Studio и Media Studio Pro.
Количество встроенных эффектов можно и увеличить. Для этого в настройках Ulead GIF Animator можно указать расположение фильтров Photoshop и дополнительных фильтров, совместимых с графическим редактором от Adobe. Тут, впрочем, следует вспомнить о том, что со времени выхода последней версии GIF Animator, прошло довольно много времени, и новые фильтры программой от Ulead не поддерживаются.
В режиме, предназначенном для оптимизации файла, рабочая область для наглядности разделена на две части – в одной показываются кадры проекта до сжатия в формат GIF, во второй – после. Изменение настроек сжатия мгновенно отображается на конечном результате. Подбирать «золотую середину» в соотношении размер-качество можно используя ограничение цветовой палитры. Кроме этого, досутпно еще два параметра – Dither, определяющий точность передачи градиентного перехода цвета, и Lossy, отвечающий за количество потерь при сжатии изображения. Управлять кадрами анимации можно либо с помощью панели кадров, где они показаны в виде слайдов, либо с панели настроек, где эта же анимация отображена в виде группы слоев, каждый из которых означает отдельный кадр.
Среди различных форматов экспорта присутствует совершенно неожиданная функция – упаковка созданной анимации в исполнительный EXE-файл. В этом случае на выходе вы получаете один файл, при запуске которого происходит примерно следующее – на экран поверх открытых окон программ выплывает созданное в GIF Animator изображение, а затем воспроизводится анимация. Трудно сказать, какое применение можно найти для этой возможности программы, скорее всего, ее можно использовать для необычного оформления презентации, которая будет начинаться таким неожиданным появлением изображения, либо это может быть просто способ пошутить над коллегой по работе.
Программ GIF-анимации обязательно нужно держать под рукой – чтобы в один прекрасный момент проблема создания анимированного баннера не затормозила всю остальную работу. Для тех, кто постоянно создает анимационные баннеры в больших количествах, следует попробовать в работе редактор скриптов Active GIF Creator, для тех, кому нужно быстро сделать свой аватар или оригинальный юзербар лучше подойдет CoffeeCup GIF Animator. Ну, а если нужен просто универсальный и надежный GIF-аниматор, «на все случаи жизни», советуем присмотреться к хорошо зарекомендовавшей себя программе от Ulead.
С появлением компьютеров и специальных программ (графических редакторов), с помощью которых можно обрабатывать и создавать изображения, кажется, что каждый может научиться с легкостью делать качественные рисунки, однако, это не так. Графические редакторы – инструмент сложный, чтобы хорошо его освоить, уйдет много времени, кроме того, они сами по себе не создают за вас изображения. Чтобы сделать рисунок, вам нужны минимальные художественные знания, т.е. вы должны представлять, что такое перспектива, светотень, как создавать иллюзию объема и т.д.
Первые шаги - компьютерная графика и графические редакторы.
С появлением компьютеров и специальных программ (графических редакторов), с помощью которых можно обрабатывать и создавать изображения, кажется, что каждый может научиться с легкостью делать качественные рисунки, однако, это не так. Графические редакторы – инструмент сложный, чтобы хорошо его освоить, уйдет много времени, кроме того, они сами по себе не создают за вас изображения. Чтобы сделать рисунок, вам нужны минимальные художественные знания, т.е. вы должны представлять, что такое перспектива, светотень, как создавать иллюзию объема и т.д.
О том, как научиться работать с графическими редакторами и о художественных средствах мы поговорим в других статьях. А эта будет посвящена обзору графических редакторов, какие они бывают, чем отличаются, а также другим вопросам, связанным с ними и обработкой изображений в компьютере.
Обычно, когда мы создаем оформление нашего сайта, то используем уже готовые изображения: фотографии, картины, рисунки, текстуры. А если воспользоваться графическим редактором то можно из нескольких разных фотографий создать необычный коллаж, который потом сможем использовать при оформлении нашего сайта.
Из данного примера видно как из одной фотографии и фрагмента картины художника-фантаста можно получить третье, совершенно отличное от двух предыдущих, изображение дамы-воительницы. Изображения, которые можно использовать для создания чего-то своего нового, есть в Интернете, на дисках в компьютерных магазинах, а также можно отсканировать свои фотографии, рисунки и использовать их.
Какие бывают графические редакторы, и как представляется графика в компьютере.
Графические редакторы, бывают двух типов: растровые и векторные, по тому, как они представляют объекты (изображения). Растровые редакторы представляют изображение в виде множества точек, это хорошо видно, если мы увеличим фотографию нашей дамы-воительницы, посмотрите, как выглядит ее глаз при многократном увеличении:
Минимальная неделимая точка в растровом изображении называется пиксель. Все изображения, которые вводятся в компьютер при помощи сканирования – растровые.
Самый популярный растровый графический редактор - Adobe Photoshop. Этот редактор многофункционален и по этому используется во всех дизайнерских студиях и конторах. Если кто-то захочет посвятить себя профессиям рекламный или веб-дизайн, то знание Adobe Photoshop просто необходимо. Для начинающих и любителей можно посоветовать для начала следующие растровые графические редакторы: Image Styler или Live Motion. Векторные графические редакторы представляют изображение в виде отрезков прямых, векторов. Вектор – направленный отрезок, то есть отрезок, у которого указаны начало (называемое также точкой приложения вектора) и конец. Для наглядности, посмотрим при большом приближении меч, в руке у дамы, который нарисован в векторном редакторе:
Изображения, сделанные в векторных редакторах, можно открыть и в растровом редакторе, в этом случае, оно будет восприниматься, как растровое. А вот растровое изображение, открытое в векторном редакторе, не станет само по себе векторным, придется его либо обрисовывать самим, чтобы получить нормальное векторное изображение, либо перевести в кривые при помощи специальных программ (например, Stream Line).
Один из популярных векторных графических редакторов Adobe Illustrator. Многофункционален. Используется во многих дизайнерских студиях и конторах. Программа конкурент - CorelDraw.
Пожалуй, и все, на этом наша статья закончена. Теперь можно смело приступать к изучению работы с графическими редакторами, в этом вам помогут статьи на нашем сайте, также вы можете изучить статьи по этой теме на других сайтах. И все-таки лучше всего приобрести в магазине не только диск с программой, но и книгу с упражнениями, выполняя которые, будет легче освоить графические редакторы.
Множество владельцев малого бизнеса просто не имеют достаточно ресурсов для проведения рекламной компании, которая бы позволила раскрутить их интернет-ресурс. Именно для решения этой проблемы в интернете существует множество online сервисов, которые позволяют владельцу сайта самостоятельно (DIY, do-it-yourself) заняться популяризацией своей веб-странички.
На сайтах подобного рода специалисты по поисковой оптимизации могут дать вам множество полезных советов и рекомендаций. Эта статья предоставляет возможность мне поделиться с вами своим опытом в области поисковой оптимизации. Назовем эти рекомендации как "10 минут для поисковой оптимизации".
Эти советы будут полезны для каждого, у кого есть хотя бы несколько страничек, сверстанных на HTML, но все же главной темой данной статьи будет привлечение посетителей на вашу домашнюю страничку.
Первые шаги
Перед тем, как начать, следует рассмотреть несколько моментов, которые необходимо знать перед началом оптимизации. Только вот для этого может потребоваться и более 10-ти минут. Итак, следует учесть следующее:
Определитесь со своей целью:
99% из вас знают, какой именно товар вы собираетесь рекламировать, поэтому вам нужно только определиться с ключевыми словами, по которым посетитель и попадет на ваш сайт. Вот несколько полезных советов. Во-первых, нужно проанализировать статистику посещаемости сайта, чтобы узнать, по каким ключевым словам посетители попали на ваш сайт. Во-вторых, посетите сайт вашего конкурента, который широко известен в просторах интернета.
Посмотрите на заголовки нескольких его страничек и попытайтесь определить, какие именно ключевые слова используются. Также посмотрите исходный текст странички (в Internet Explorer'е его можно посмотреть с помощью пункта меню View (Вид) - > Source (Просмотр html-кода)) и скопируйте информацию, содержащуюся в META-тегах. На своей страничке же вы должны определиться с частотой (разумной) использования наиболее запрашиваемых ключевых слов.
Здесь очень важно заметить, что профессиональные оптимизаторы имеют у себя под рукой гораздо больше инструментов, да и информации для установки нужных ключевых слов (с высокой их частотой в тексте страницы).
Дизайн сайта - привлекателен ли он для покупателя?
Вот тут-то и находится один из подводных камней. Суть его в том, что непривлекательный дизайн сайта - это прямой путь к низкой посещаемости ресурса. Безусловно, на тему разработки юзабилити сайта (т. е его дизайна), написано очень много и книг, и статей. Но пусть в рамках данной статьи все аспекты юзабилити рассмотреть и не получиться, то несколько замечаний тут не помешает:
1. Избегайте использовать в цветовой гамме сайта необычные и странные цвета. В противном случае посетителю будет тяжело прочитать информацию на вашем ресурсе (красный текст на голубом фоне - вот вам и яркий пример ужасного дизайна). Также не рекомендуется использовать текст мелкого шрифта; старайтесь придерживаться размера шрифта в пределах от 10 до 12 (2 или 3 в Macromedia Dreamweaver).
2. Использование на сайте рекламных блоков (как графических, так и текстовых), будут только отвлекать ваших посетителей. К примеру, если вы продаете автомобили BMW, то рекламировать на сайте средство для повышения потенции "Виагра" будет очень некстати.
Каждый графический элемент на вашей страничке может как повышать, так и понижать доверие посетителей к вашему ресурсу. Старайтесь использовать это место на сайте очень мудро и пользователи это оценят.
10 минут на раскрутку
1. Проверка на спам
Перед началом работ по оптимизации одним из ключевых моментов является тот факт, для раскрутки своего сайта вам не следует использовать приемы, которые могут быть восприняты поисковой машиной как спам. Но самое неприятно в этом то, что вы можете об этом и не подозревать! Некоторые веб-мастера (с устаревшими знаниями о принципах работы поисковых машин) используют на веб-страницах скрытый текст. Они ошибочно полагают, что таким методом помогут сайту подняться в глазах поисковика. Но это в корне неверно и данный прием может только добавить проблем для поисковой оптимизации.
Для обнаружения скрытого текста нужно всего лишь с нажатой левой кнопкой мыши провести от начала до конца страницы. Выделив таким образом всю страничку, можно легко найти скрытый текст (как правило, цвет шрифта у скрытого текста совпадает с цветом фона странички) - он просто будет выглядеть как подсвеченный.
Также вам захочется проверить частоту ключевых слов, которые встречаются на страничке. В данном случае является недопустимым повторение 5-6 ключевых слов, которые расположены друг за другом. Таким образом поисковую машину уже не проведешь, так что лучше таких приемов не использовать.
Для получения более детальной информации о нечестных методах раскрутки, которые приводят только к негативным результатам, можно ознакомиться с документом: "Inspecting your Web Site for Spam."
2. Проверка на релевантность (значимость) сайта для поисковой машины
Очень важно для вашего ресурса всегда быть в фокусе у поисковика. Для примера, если ваш ресурс будет ассоциироваться с ключевой фразой "Продажа автомобилей BMW", то ссылка или информация о продаже недвижимости будет совершенно излишней. Имейте в виду, что большинство поисковых машин будут судить о вашем ресурсе именно в зависимости его тематики. А она в первую очередь зависит от текстовой информации, которая содержится на страницах вашего сайта.
3. Подбор правильного содержания сайта
Текстовая информация на вашем сайте является решающей для удержания на сайте человека, который только что на него зашел. К слову, что это так важно, хочу добавить, что у множества компаний есть свой профессиональный копирайтер, который и занимается контентом (информацией на сайте). Поэтому так важно при написании статей придерживаться ключевых слов, которые вы выбрали в качестве цели для поисковой оптимизации своего ресурса. Но, в свою очередь, размещать ключевые слова в тексте без связи с остальной информацией (т. е ключевые слова не соответствуют тематике статьи) - верный путь потерять посетителя вашего сайта.
Важное замечание: очень часто первые 25-30 слов вашего сайта - это то, что каждый поисковик будет использовать для его описанию. Постарайтесь использовать ваши ключевые слова внутри этой области, не забывая при этом, чтобы это самое описание выглядело разборчиво и наглядно.
4. Работа над заголовком сайта (Title)
В заголовок вашей странички очень желательно поместить те ключевые слова или фразы, которые наиболее полно характеризуют предмет рекламы на ней. Для примера: "Продажа автомобилей BMW - MeBMW.com" Для поисковых машин заголовок является очень важным, а ключевые слова (фразы) в нем только помогут выше подняться в рейтингах. Но здесь главное не переусердствовать и использовать ключевые слова в пределах разумного. Заголовок также играет большую роль и в релевантности сайта. Именно его содержание будет сравниваться с текстовой информацией (контентом) остальной части веб-страницы. Чем больше будет совпадений у заголовка страницы с ее контентом, тем более она будет значимой для поисковой машины.
6. Навигация сайта... Сделайте ее интуитивно понятной
Могу предположить, что вы, как и большинство, используете для навигации на своем сайте графические элементы или текстовые ссылки. Здесь вам один мой небольшой совет - создайте меню для навигации на своем сайте предпочтительнее в виде текстовых ссылок его разделы. А разместить его лучше внизу страницы - так удобнее для посетителя. Теперь, при добавлении разделов, вы их можете называть, используя ключевые слова/фразы для лучшей информативности описания вашего раздела. Для примера сравним два варианта меню:
Аксессуары к автомобилям BMW | Продажа автомобилей BMW | Подробнее о MyBMW.com
и как после этого смотрится вот такое:
Аксессуары | Продажа автомобилей | О нас
7. Проверьте работоспособность ссылок и орфографию/грамматику
Совсем уж не помешает еще разок проверить все ссылки на сайте и правописание. После чего, если вы уверены, что это уже окончательный вариант, можете смело загружать сайт в интернет.
Спешить нужно медленно
А что же дальше? Сейчас много поисковых машин предлагают такую платную услугу, как предоставление вашему новому веб-сайту постоянную или срочную индексацию. В противном случае неизвестно, когда же до него доберется поисковый паук и проиндексирует его в своей базе. Если же вы воспользуетесь услугой срочной индексации, что уже через пару дней можно пожинать плоды в виде посетителей. Правда, у каждой поисковой машины здесь свои сроки.
Но все же эта статья посвящена тем, у кого денег для такой услуги попросту нет (да и стоит она недешево, вот может с первой прибыли ею и воспользуемся). Тем не менее, если ваш сайт уже посетил поисковый робот и внес его в свою базу, то вам остается теперь только ждать, когда он опять посетит его вновь на предмет наличия нового материала. Вот поэтому так важно своевременно обновлять контент на сайте - добавлять новые статьи, заводить новые разделы и т.д. (все зависит от вашей фантазии и сообразительности).
Но что же делать, если же вы желаете уменьшить это время или если до вашего сайта робот еще и не добрался? Вот для этого и придется кропотливо регистрировать все ваши новые странички вручную на сайте поисковика. А перед регистрацией (первой или повторной) не помешает также внимательно ознакомиться с правилами, которые очень подробно расписаны у каждого поисковика. Так, на всякий случай.
В качестве вступления заметим, что в самом этом вопросе заключен подвох - заранее неверное предположение.
а) Первая страница результатов поиска - некое определенное место. Это не так: "Яндекс" и "Рамблер" производят в день не менее полутора миллионов первых страниц каждый и3 все они разные! Какие из них и сколько нам нужны?
б) Заранее предполагается, что попасть на первую страницу - абсолютное благо. Кроме того, все остальные виды продвижения сразу исключаются из обсуждения.
И то и другое - миф. Но начнем обсуждение по порядку.
Клиенты - поворот к Сети
Насколько можно судить, в настоящее время наблюдается заметный рост интереса к интернет-продвижению среди мелкого и среднего офлайнового бизнеса. Вот типовой портрет такого клиента:
* небольшая офлайновая компания,
* оборот $50 000 - 200 000 в месяц,
* имеется "информационный" сайт,
* нет интернет-маркетолога,
* нет выделенного интернет-бюджета.
Такие компании уже готовы к интернет-продвижению своих услуг, но не знают, как это сделать и сколько это стоит.
Причины интереса к Сети
Если есть рост интереса к Сети, то почему? Здесь могут быть различные причины. Например, мода, то есть последействие интернет-бума (наконец докатился). И более объективные внутренние: дороговизна печатной рекламы и рост числа потребителей, приходящих через Сеть. Вот какие причины называют сами клиенты:
* печатная реклама перестала работать;
* значительная доля клиентов стала приходить из Сети;
* привлечение клиента через Интернет дешевле.
Предположения
Для упрощения дальнейшего обсуждения сделаем следующие предположения о наших клиентах.
* Требуется продвижение корпоративного сайта "торговой" компании. Таким образом, цель сайта - увеличение объема продаж.
* У руководства есть маркетинговая стратегия. Руководство компании знает, как продавать свои продукты в "обычном" мире, и может оценить расходы на маркетинг и его результаты.
* Есть представление о нужной аудитории. Руководство компании знает, как и кому она продает свои продукты или услуги, и рассчитывает найти часть этой аудитории в Сети.
* Аудитории есть куда придти. Имеется в виду, что у компании есть более или менее приличный сайт, работающий, видный из Сети, с головной страницы которого не уходит 100% аудитории.
Почему поисковые машины?
Почему нужно производить продвижение именно через поисковые машины?
Плюсы
* Подавляющая доля трафика. Поисковики дают от 10% до 75% трафика корпоративных сайтов.
* Мотивированная аудитория. Пользователи сами сообщают о своих потребностях в виде поисковых запросов.
* Наглядность. Руководство компании, владеющей сайтом, сразу может увидеть свой сайт в результатах поиска (и в этом причина многих иллюзий).
Минусы
* Медленная индексация. Любые изменения на сайта попадают в поисковики за в среднем 1-2 месяца, что не позволяет использовать индексацию для разовых рекламных кампаний.
* Неустойчивая работа. Поисковики не дают никаких гарантий и работают неустойчиво: постоянные смены алгоритма, зависания серверов всё время меняют место сайта в поисковых результатах.
* Не борются с накрутчиками. Более умелый и хитрый вебмастер может обогнать в результатах поиска честных, талантливых, но неумелых создателей хорошего контента.
* Борются с накрутчиками. Разработчики поисковиков - независимые коммерческие компании и абсолютно не считаются с интересами вебмастеров. Они могут признать за накрутку самые невинные или сделанные по недомыслию вещи. Кроме того, возможно и осознанное представление сайта как накрутчика за счет накрутки его со стороны конкурентов. А выбрасывание из индекса за накрутку ведет к потере денег и ущербу для имиджа.
* Проблема первой страницы. Только 13% пользователей заглядывают дальше первой страницы результатов поиска. Фактическое падение числа показов на порядок приводит к абсолютной бессмысленности пребывания на вторых страницах, а первые перегружены.
Выбора всё равно нет. Я лично никогда не посоветовал бы такой неудачный рекламный носитель своему клиенту. Но выбирать не из чего - альтернативы поисковикам нет.
Мифы
За недостатком информации вебмастера и их хозяева питаются мифами относительно продвижения в поисковиках и в Сети вообще. Вот некоторые из них.
* Нужна постоянная аудитория. На самом деле у большинства корпоративных сайтов торговых компаний нет и не может быть постоянной аудитории - купив телевизор, я не буду ходить на сайт магазина каждый день. Постоянная аудитория бывает только у порталов, СМИ, узких контентных ресурсов и мест для общения. То есть у типично интернетовских проектов.
* Место на первой странице = успех. На самом деле это некорректное высказывание (см. вступление).
* Бывает быстрая, дешевая и эффективная раскрутка. Это обман: дешевая бывает, эффективная бывает, а быстрой и эффективной не бывает вообще.
* Есть гарантированные методы. См. выше про неустранимую ненадежность поисковиков.
* Все вокруг - накрутчики. Как минимум 99% владельцев сайтов никогда не занимались накруткой и даже не умеют этого делать.
Дешевая и дорогая раскрутка
Есть огромный спрос на дешевую раскрутку. Существует и дорогая раскрутка. Вот сравнительные характеристики.
"Дешевая раскрутка"
Методы
Вот основные методы, применяемые для дешевой и опасной раскрутки.
* Манипуляции с текстом сайта. Обычно это устаревшие попытки обмануть поисковик с помощью светло-серого текста по светло-серому фону, набивание поля ключевых слов терминами "секс, порно, линукс, рефераты, ...", создание ссылочных страниц-паровозов и другие приемы. Поисковики подобные ухищрения считают спамом и в лучшем случае не учитывают.
* Входные страницы (doorways). Размещение различного рода страниц на бесплатных хостингах или своем сервере со списком ключевых слов и автоматическим перебрасыванием на сайт (редиректом). Считается спамом и может повлечь удаление из индекса.
* Переменные страницы (cloaking). Настройка на поисковик - распознавание индексного робота поисковика и подсовывание ему не тех станиц, что видит пользователь. Считается спамом и жестоко карается (если заметят).
* "Секретные методы". Обычно "знатоки" дешевой раскрутки намекают на владение магическими и секретными технологиями. Здесь имеется полная аналогия с разделом "Оккультные услуги" в рекламных газетах.
[pagebreak]
Вред от дешевой раскрутки
* Создает иллюзии. Даже при видимом успехе (попадание на первые страницы) дешевая раскрутка фактически создает иллюзию успеха, так как посещаемость не гарантируется, не закрепляется, да и привлеченная в пиковый момент аудитория довольно случайна.
* Создает опасность для бизнеса. За применение сомнительных методов сайт могут выкинуть из индекса поисковика, а быстрое рассмотрение проблемы и восстановление никем не гарантируется, и даже денег за него не берут. А исключение из индекса - прямая потеря денег, затраченных на сайт.
* Практически пустая трата денег. После такой раскрутки в среднем не происходит роста продаж или хотя бы посещаемости.
Поисковая оптимизация
Как это делается
Вот как мы делаем поисковую оптимизацию, направленную на кумулятивное повышение видимости.
* Построение семантического ядра. Строится на основе содержания сайта и его конкурентов, синонимов, близких слов и анализа их статистики в поисковиках.
* Анализ спроса и доли рынка. Анализируется статистика ядра запросов на основе "Яндекс-Директа" и "Рамблер-Ассоциаций".
* Коррекция текстов и структуры сайта. Семантическое ядра используется для коррекции текстов, титулов и т. п., создания новых страниц и главок.
* Правильные аннотации и регистрация. На основе ядра пишутся и регистрируются новые аннотации для Тор100, "Листа", каталогов.
* Поисковая реклама. Запросы ядра используются для создания текстовых баннеров для "Яндекс-Директа" и "Google AdWords".
* Наращивание объема контента. Ядро запросов используется для создания новых разделов и страниц.
* Входные рекламные страницы. Создаются специальные рекламные страницы, с некоторым содержанием (описанием товара, каталогом и т. п.), с приглашением перейти "внутрь" продвигаемого сайта, на страницу нижнего уровня. Страницы ориентированы на низкочастотные запросы из семантического ядра. Такие страницы не нарушают правил поисковиков и не обманывают посетителей.
Ядро запросов
Составление семантического ядра состоит из следующих шагов:
* Анализ текстов сайта - выбор значимых терминов.
* Анализ частот запросов. Статистика запросов в "Яндекс-Директ", "Google".
* Ассоциативный анализ ("Рамблер") - добавление "близких" тем.
* Анализ слов-попутчиков - выбор не тематических, но частых попутчиков ключевых слов (глаголов, местоимений, прилагательных).
* Статистический анализ - отрезание хвоста.
Оценка доли рынка
Оценка доли рынка может делаться только очень приблизительно, как самая грубая прикидка для размышления, однако это всё же количественный метод. Вот основные шаги.
* Составление ядра.
* Суммарная частотность ядра по "Яндекс-Директ".
* Экстраполяция на весь Рунет с коэффициентом 1,8-2,2.
* Сравнение с количеством приходов с поисковиков ("SpyLOG" и др.)
Использование семантического ядра
Будучи составленным, семантическое ядро должно использоваться везде, где есть тексты компании - владельца сайта.
* Коррекция текстов сайта.
* Аннотации для каталогов и рейтингов.
* Создание новых страниц (глоссарии, каталоги, главки статей).
* Текстовые баннеры для поисковой рекламы.
Наращивание контента
Наиболее устойчивый эффект дает наращивание содержания сайта (контента); естественно, при этом лучше не забывать о правильных формулировках и терминах, получаемых из ядра запросов.
Плюсы
* Масса сайта повышает его ранг в поисковиках. Большинство поисковиков объединяют результаты поиска в сайты (кластеризуют их), при этом "техническая" масса сайта повышает ранг.
* Много страниц во многих местах. Ваши страницы начинают появляться во многих местах - в результатах поиска по разным запросам, по ссылкам и так далее. Количество показов пользователям автоматически увеличивается.
* Вебмастера начинают ссылаться на ваш сайт. Хороший контент всегда привлекает ссылки, ссылки повышают ваш ссылочный ранг, а это важнейший способ подсчета ранга сайта поисковиками.
* Кумулятивный эффект. Всё вышеперечисленное само "разогревает" сайт, как начинает тлеть торф или таять снег от давления. Здесь имеется петля положительной обратной связи.
Минусы
* Трудоемко, дорого. Контент просто долго писать и верстать. Но еще труднее придумывать.
* Нужны специалисты и энтузиасты. К сожалению, для создания контента нужны одержимые идеей люди. Их нужно удерживать, содержать, лелеять.
* Долгое время срабатывания. Кумулятивный эффект срабатывает не сразу - нужны как минимум месяцы. Но зато потом эффект не ослабевает, если сайт хотя бы поддерживается в "живом" состоянии.
Изостатическое правило контента
Чем больше контента на сайте, тем выше он всплывает.
Поисковая реклама
Лучший способ попасть на первую страницу
Очевидно, что поисковая реклама - это самый верный способ попасть на первую страницу. Просто потому, что ваши баннеры, текстовые блоки, баннеры поисковой рекламы типа "Яндекс-Директ" помещают именно на первую страницу результатов поиска.
Плюсы
* Точное попадание. Поисковая реклама нацелена на самую мотивированную аудиторию.
* Высокая эффективность при удаче. Если создать удачный текстовый или графический баннер, можно получить "кликабельность" (CTR) на уровне 25%.
* Низкая входная стоимость. Чтобы попробовать этот вид рекламы, достаточно 10-20 долларов. При удаче и стоимость привлечения одного посетителя будет весьма низкой.
* Скорость и интерактивность. Разместить объявление можно за несколько минут, имея кредитную карту. Точно так же просто изменить объявление, чтобы настроить "кликабельность".
Минусы
* Не закрепляет посещаемость. Как и баннерная реклама, дает кратковременный эффект.
* Низкая видимость на странице. Пока баннеры поисковой рекламы очень похожи на технические сообщения поисковика, глаз с них "соскальзывает".
* Новизна. Малый опыт использования приводит к неумелому обращению, нежеланию рекламодателей выделять бюджет и пр.
Как правильно использовать
Этот эффективный инструмент мы советуем использовать следующим образом:
* для разовых рекламных кампаний;
* использовать семантическое ядро;
* подбирать низкочастотные формулировки;
* заголовки должны совпадать с запросами;
* настраивать интерактивно.
Выводы: как попасть на первые страницы
* Нужно оценить спрос и составить семантическое ядро.
* Нужно выправить тексты, объявления и аннотации.
* Нужно растить контент и заниматься ссылками.
* Нужно запастись терпением.
* Нужен сайт, с которого не уйдут посетители.