Компоненты Delphi для работы с базами данных были созданы в расчете на работу с SQL и архитектурой клиент/сервер. При работе с ними вы можете воспользоваться характеристиками расширенной поддержки удаленных серверов. Delphi осуществляет эту поддержку двумя способами.
1. Введение
Во-первых, непосредственные команды из Delphi позволяют разработчику управлять таблицами, устанавливать пределы, удалять, вставлять и редактировать существующие записи.
Второй способ заключается в использовании запросов на языке SQL, где строка запроса передается на сервер для ее разбора, оптимизации, выполнения и передачи обратно результатов.
Данный документ делает акцент на втором методе доступа к базам данных, на основе запросов SQL (pass-through). Авторы не стремились создать курсы по изучению синтаксиса языка SQL и его применения, они ставили перед собой цель дать несколько примеров использования компонентов TQuery и TStoredProc. Но чтобы сделать это, необходимо понимать концепцию SQL и знать как работают selects, inserts, updates, views, joins и хранимые процедуры (stored procedures). Документ также вскользь касается вопросов управления транзакциями и соединения с базой данных, но не акцентирует на этом внимание. Итак, приступая к теме, создайте простой запрос типа SELECT и отобразите результаты.
2. Компонент TQuery
Если в ваших приложениях вы собираетесь использовать SQL, то вам непременно придется познакомиться с компонентом TQuery. Компоненты TQuery и TTable наследуются от TDataset. TDataset обеспечивает необходимую функциональность для получения доступа к базам данных. Как таковые, компоненты TQuery и TTable имеют много общих признаков. Для подготовки данных для показа в визуальных компонентах используется все тот же TDatasource. Также, для определения к какому серверу и базе данных необходимо получить доступ, необходимо задать имя псевдонима. Это должно выполняться установкой свойства aliasName объекта TQuery.
Свойство SQL
Все же TQuery имеет некоторую уникальную функциональность. Например, у TQuery имеется свойство с именем SQL. Свойство SQL используется для хранения SQL-запроса. Ниже приведены основные шаги для составления запроса, где все служащие имеют зарплату свыше $50,000.
Создайте объект TQuery
Задайте псевдоним свойству DatabaseName. (Данный пример использует псевдоним IBLOCAL, связанный с демонстрационной базой данных employee.gdb).
Выберите свойство SQL и щелкните на кнопке с текстом - '...' (три точки, Инспектор Объектов - В.О.). Должен появиться диалог редактора списка строк (String List Editor).
Введите:
. Нажмите OK.
Выберите в Инспекторе Объектов свойство Active и установите его в TRUE.
Разместите на форме объект TDatasource.
Установите свойство Dataset у TDatasource в Query1.
Разместите на форме TDBGrid.
Установите его свойство Datasource в Datasource1.
Свойство SQL имеет тип TStrings. Объект TStrings представляет собой список строк, и чем-то похож на массив. Тип данных TStrings имеет в своем арсенале команды добавления строк, их загрузки из текстового файла и обмена данными с другим объектом TStrings. Другой компонент, использующий TStrings - TMemo. В демонстрационном проекте ENTRSQL.DPR (по идее, он должен находится на отдельной дискетте, но к "Советам по Delphi" она не прилагается - В.О.), пользователь должен ввести SQL-запрос и нажать кнопку "Do It" ("сделать это"). Результаты запроса отображаются в табличной сетке. В Листинге 1 полностью приведен код обработчика кнопки "Do It".
Листинг 1
Свойство Params
Этого должно быть достаточно для пользователя, знающего SQL. Тем не менее, большинство пользователей не знает этого языка. Итак, ваша работа как разработчика заключается в предоставлении интерфейса и создании SQL-запроса. В Delphi, для создания SQL-запроса на лету можно использовать динамические запросы. Динамические запросы допускают использование параметров. Для определения параметра в запросе используется двоеточие (:), за которым следует имя параметра. Ниже приведе пример SQL-запроса с использованием динамического параметра:
Если вам нужно протестировать, или установить для параметра значение по умолчанию, выберите свойство Params объекта Query1. Щелкните на кнопке '...'. Должен появиться диалог настройки параметров. Выберите параметр Dept_no. Затем в выпадающем списке типов данных выберите Integer. Для того, чтобы задать значение по умолчанию, введите нужное значение в поле редактирования "Value".
Для изменения SQL-запроса во время выполнения приложения, параметры необходимо связать (bind). Параметры могут изменяться, запрос выполняться повторно, а данные обновляться. Для непосредственного редактирования значения параметра используется свойство Params или метод ParamByName. Свойство Params представляет из себя массив TParams. Поэтому для получения доступа к параметру, необходимо указать его индекс. Для примера,
Query1.params[0].asInteger := 900;
Свойство asInteger читает данные как тип Integer (название говорит само за себя). Это не обязательно должно указывать но то, что поле имеет тип Integer. Например, если тип поля VARCHAR(10), Delphi осуществит преобразование данных. Так, приведенный выше пример мог бы быть записан таким образом:
Query1.params[0].asString := '900';
или так:
Query1.params[0].asString := edit1.text;
Если вместо номера индекса вы хотели бы использовать имя параметра, то воспользуйтесь методом ParamByName. Данный метод возвращает объект TParam с заданным именем. Например:
Query1.ParamByName('DEPT_NO').asInteger := 900;
В листинге 2 приведен полный код примера.
Листинг 2
Обратите внимание на процедуру, первым делом подготовливающую запрос. При вызове метода prepare, Delphi посылает SQL запрос на удаленный сервер. Сервер выполняет грамматический разбор и оптимизацию запроса. Преимущество такой подготовки запроса состоит в его предварительном разборе и оптимизации. Альтернативой здесь может служить подготовка сервером запроса при каждом его выполнении. Как только запрос подготовлен, подставляются необходимые новые параметры, и запрос выполняется.
[pagebreak]
Источник данных
В предыдущем примере пользователь мог ввести номер отдела, и после выполнения запроса отображался список сотрудников этого отдела. А как насчет использования таблицы DEPARTMENT, позволяющей пользователю легко перемещаться между пользователями и отделами?
Примечание: Следующий пример использует TTable с именем Table1. Для Table1 имя базы данных IBLOCAL, имя таблицы - DEPARTMENT. DataSource2 TDatasource связан с Table1. Таблица также активна и отображает записи в TDBGrid.
Способ подключения TQuery к TTable - через TDatasource. Есть два основных способа сделать это. Во-первых, разместить код в обработчике события TDatasource OnDataChange. Например, листинг 3 демонстрирует эту технику.
Листинг 3 - Использования события OnDataChange для просмотра дочерних записей
Техника с использованием OnDataChange очень гибка, но есть еще легче способ подключения Query к таблице. Компонент TQuery имеет свойство Datasource. Определяя TDatasource для свойства Datasource, объект TQuery сравнивает имена параметров в SQL-запросе с именами полей в TDatasource. В случае общих имен, такие параметры заполняются автоматически. Это позволяет разработчику избежать написание кода, приведенного в листинге 3 (*** приведен выше ***).
Фактически, техника использования Datasource не требует никакого дополнительного кодирования. Для поключения запроса к таблице DEPT_NO выполните действия, приведенные в листинге 4.
Листинг 4 - Связывание TQuery c TTable через свойство Datasource
Выберите у Query1 свойство SQL и введите:
Выберите свойство Datasource и назначьте источник данных, связанный с Table1 (Datasource2 в нашем примере)
Выберите свойство Active и установите его в True
Это все, если вы хотите создать такой тип отношений. Тем не менее, существуют некоторые ограничения на параметризованные запросы. Параметры ограничены значениями. К примеру, вы не можете использовать параметр с именем Column или Table. Для создания запроса, динамически изменяемого имя таблицы, вы могли бы использовать технику конкатенации строки. Другая техника заключается в использовании команды Format.
Команда Format
Команда Format заменяет параметры форматирования (%s, %d, %n и пр.) передаваемыми значениями. Например,
Format('Select * from %s', ['EMPLOYEE'])
Результатом вышеприведенной команды будет 'Select * from EMPLOYEE'. Функция буквально делает замену параметров форматирования значениями массива. При использовании нескольких параметров форматирования, замена происходит слева направо. Например,
Результатом команды форматирования будет 'Select * from EMPLOYEE where EMP_ID=3'. Такая функциональность обеспечивает чрезвычайную гибкость при динамическом выполнении запроса. Пример, приведенный ниже в листинге 5, позволяет вывести в результатах поле salary. Для поля salary пользователь может задавать критерии.
Листинг 5 - Использование команды Format для создания SQL-запроса
В этом примере мы используем методы Clear и Add свойства SQL. Поскольку "подготовленный" запрос использует ресурсы сервера, и нет никакой гарантии что новый запрос будет использовать те же таблицы и столбцы, Delphi, при каждом изменении свойства SQL, осуществляет операцию, обратную "подготовке" (unprepare). Если TQuery не был подготовлен (т.е. свойство Prepared установлено в False), Delphi автоматически подготавливает его при каждом выполнении. Поэтому в нашем случае, даже если бы был вызван метод Prepare, приложению от этого не будет никакой пользы.
Open против ExecSQL
В предыдущих примерах TQuerie выполняли Select-запросы. Delphi рассматривает результаты Select-запроса как набор данных, типа таблицы. Это просто один класс допустимых SQL-запросов. К примеру, команда Update обновляет содержимое записи, но не возвращает записи или какого-либо значения. Если вы хотите использовать запрос, не возвращающий набор данных, используйте ExecSQL вместо Open. ExecSQL передает запрос для выполнения на сервер. В общем случае, если вы ожидаете, что получите от запроса данные, то используйте Open. В противном случае допускается использование ExecSQL, хотя его использование с Select не будет конструктивным. Листинг 6 содержит код, поясняющий сказанное на примере.
Листинг 6
Все приведенные выше примеры предполагают использования в ваших приложениях запросов. Они могут дать солидное основание для того, чтобы начать использовать в ваших приложениях TQuery. Но все же нельзя прогнозировать конец использования SQL в ваших приложених. Типичные серверы могут предложить вам другие характеристики, типа хранимых процедур и транзакций. В следующих двух секциях приведен краткий обзор этих средств.
[pagebreak]
3. Компонент TStoredProc
Хранимая процедура представляет собой список команд (SQL или определенного сервера), хранимых и выполняемых на стороне сервера. Хранимые процедуры не имеют концептуальных различий с другими типами процедур. TStoredProc наследуется от TDataset, поэтому он имеет много общих характеристик с TTable и TQuery. Особенно заметно сходство с TQuery. Поскольку хранимые процедуры не требуют возврата значений, те же правила действуют и для методов ExecProc и Open. Каждый сервер реализует работу хранимых процедур с небольшими различиями. Например, если в качестве сервера вы используете Interbase, хранимые процедуры выполняются в виде Select-запросов. Например, чтобы посмотреть на результаты хранимой процедуры, ORG_CHART, в демонстрационной базе данных EMPLOYEE, используйте следующих SQL-запрос:
При работе с другими серверами, например, Sybase, вы можете использовать компонент TStoredProc. Данный компонент имеет свойства для имен базы данных и хранимой процедуры. Если процедура требует на входе каких-то параметров, используйте для их ввода свойство Params.
4. TDatabase
Компонент TDatabase обеспечивает функциональность, которой не хватает TQuery и TStoredProc. В частности, TDatabase позволяет создавать локальные псевдонимы BDE, так что приложению не потребуются псевдонимы, содержащиеся в конфигурационном файле BDE. Этим локальным псевдонимом в приложении могут воспользоваться все имеющиеся TTable, TQuery и TStoredProc. TDatabase также позволяет разработчику настраивать процесс подключения, подавляя диалог ввода имени и пароля пользователя, или заполняя необходимые параметры. И, наконец, самое главное, TDatabase может обеспечивать единственную связь с базой данных, суммируя все операции с базой данных через один компонент. Это позволяет элементам управления для работы с БД иметь возможность управления транзакциями.
Транзакцией можно считать передачу пакета информации. Классическим примером транзакции является передача денег на счет банка. Транзакция должна состоять из операции внесения суммы на новый счет и удаления той же суммы с текущего счета. Если один из этих шагов по какой-то причине был невыполнен, транзакция также считается невыполненной. В случае такой ошибки, SQL сервер позволяет выполнить команду отката (rollback), без внесения изменений в базу данных. Управление транзакциями зависит от компонента TDatabase. Поскольку транзакция обычно состоит из нескольких запросов, вы должны отметить начало транзакции и ее конец. Для выделения начала транзакции используйте TDatabase.BeginTransaction. Как только транзакция начнет выполняться, все выполняемые команды до вызова TDatabase.Commit или TDatabase.Rollback переводятся во временный режим. При вызове Commit все измененные данные передаются на сервер. При вызове Rollback все изменения теряют силу. Ниже в листинге 7 приведен пример, где используется таблица с именем ACCOUNTS. Показанная процедура пытается передать сумму с одного счета на другой.
Листинг 7
И последнее, что нужно учесть при соединении с базой данных. В приведенном выше примере, TDatabase использовался в качестве единственного канала для связи с базой данных, поэтому было возможным выполнение только одной транзакции. Чтобы выполнить это, было определено имя псевдонима (Aliasname). Псевдоним хранит в себе информацию, касающуюся соединения, такую, как Driver Type (тип драйвера), Server Name (имя сервера), User Name (имя пользователя) и другую. Данная информация используется для создания строки соединения (connect string). Для создания псевдонима вы можете использовать утилиту конфигурирования BDE, или, как показано в примере ниже, заполнять параметры во время выполнения приложения.
TDatabase имеет свойство Params, в котором хранится информация соединения. Каждая строка Params является отдельным параметром. В приведенном ниже примере пользователь устанавливает параметр User Name в поле редактирования Edit1, а параметр Password в поле Edit2. В коде листинга 8 показан процесс подключения к базе данных:
Листинг 8
Этот пример показывает как можно осуществить подключение к серверу без создания псевдонима. Ключевыми моментами здесь являются определение DriverName и заполнение Params информацией, необходимой для подключения. Вам не нужно определять все параметры, вам необходимо задать только те, которые не устанавливаются в конфигурации BDE определенным вами драйвером базы данных. Введенные в свойстве Params данные перекрывают все установки конфигурации BDE. Записывая параметры, Delphi заполняет оставшиеся параметры значениями из BDE Config для данного драйвера. Приведенный выше пример также вводит такие понятия, как сессия и метод GetTableNames. Это выходит за рамки обсуждаемой темы, достаточно упомянуть лишь тот факт, что переменная session является дескриптором database engine. В примере она добавлена только для "показухи".
Другой темой является использование SQLPASSTHRU MODE. Этот параметр базы данных отвечает за то, как натив-команды базы данных, такие, как TTable.Append или TTable.Insert будут взаимодействовать с TQuery, подключенной к той же базе данных. Существуют три возможных значения: NOT SHARED, SHARED NOAUTOCOMMIT и SHARED AUTOCOMMIT. NOT SHARED означает, что натив-команды используют одно соединение с сервером, тогда как запросы - другое. Со стороны сервера это видится как работа двух разных пользователей. В любой момент времени, пока транзакция активна, натив-команды не будут исполняться (committed) до тех пор, пока транзакция не будет завершена. Если был выполнен TQuery, то любые изменения, переданные в базу данных, проходят отдельно от транзакции.
Два других режима, SHARED NOAUTOCOMMIT и SHARED AUTOCOMMIT, делают для натив-команд и запросов общим одно соединение с сервером. Различие между двумя режимами заключаются в передаче выполненной натив-команды на сервер. При выбранном режиме SHARED AUTOCOMMIT бессмысленно создавать транзакцию, использующую натив-команды для удаления записи и последующей попыткой осуществить откат (Rollback). Запись должна быть удалена, а изменения должны быть сделаны (committed) до вызова команды Rollback. Если вам нужно передать натив-команды в пределах транзакции, или включить эти команды в саму транзакцию, убедитесь в том, что SQLPASSTHRU MODE установлен в SHARED NOAUTOCOMMIT или в NOT SHARED.
5. Выводы
Delphi поддерживает множество характеристик при использовании языка SQL с вашими серверами баз данных. На этой ноте разрешите попрощаться и пожелать почаще использовать SQL в ваших приложениях.
Сам термин «фоторобот» и метод был придуман еще в 1952 году во Франции криминалистом Пьером Шабо. Первый фторобот предполагаемого преступника был сделан из фрагментов разных фотографий и переснятый в отдельный снимок. Постепенно фотографии заменили на рисунки.
Программы и инструменты, которые помогают создавать фотороботы.
Сам термин «фоторобот» и метод был придуман еще в 1952 году во Франции криминалистом Пьером Шабо. Первый фоторобот предполагаемого преступника был сделан из фрагментов разных фотографий и переснятый в отдельный снимок. Постепенно фотографии заменили на рисунки.
Казалось бы зачем нам нужен фоторобот, ведь его основное применение это розыск преступников? Ответов может быть несколько. Возможно кому то захочется вернутся в детство к играм в сыщиков а кому то захочется нарисовать шарж или смешного человека.
Есть и еще одно применение с помощью физиогномического анализа можно создавать не только визуальный портрет но и психологический.
Ultimate Flash Face 0.42 beta.
Ultimate Flash Face (http://flashface.ctapt.de) — это онлайн-фоторобот, лучший из бесплатных сервисов подобной тематики. Лицо человека разделяется на десять составляющих (если смотреть сверху вниз): прическа, форма головы, брови, глаза, очки, нос, усы, рот, подбородок, борода. Каждую «деталь» надо подобрать в соответствующей картотеке.
Чтобы добиться наилучшего результата, фрагменты портрета можно не только перемещать в пространстве, но и растягивать/сжимать по вертикали и горизонтали. Еще одна полезная возможность — выравнивание всего лица относительно выбранного элемента по вертикали. Она пригодится, если вы захотите переместить портрет внутри рамки или не уверены, что удачно расположили тот или иной фрагмент.
Полученный портрет можно распечатать или сохранить на сервере — он будет доступен для просмотра всем желающим. Соответственно, можно изучить и чужие работы. Единственным серьезным недостатком сервиса является невозможность сохранить рисунок на свой компьютер.
«Фоторобот 1.00»
Эта утилита предназначена для создания шаржей и рожиц, так что пытаться добиться с ее помощью портретного сходства бесполезно. Портрет предельно упрощен: глаза, уши, нос и рот — вот и все, с чем можно работать. Перемещаются эти «детали» по лицу с помощью четырех кнопок-стрелок, внутри которых спрятаны кнопки переключения на следующий вариант «детали». К изображению можно добавить подпись.
Веб-сайт: http://superperls.narod.ru/photorobot
Виртуальные стилисты.
Многие женщины часто задают себе и окружающим такие вопросы. Какую прическу мне выбрать? В какой цвет покрасится? Пойдут ли мне очки? Чтобы помочь им с выбором используют метод копирующий фоторобот. Только здесь берется фотография реального человека и «гримируется» с помощью накладных париков, макияжа, головных уборов и т. д.
Именно так устроены специализированные онлайн-сервисы предложенные порталом iVillage Makeover-o-Matic (http://beauty.ivillage.com/stc/hair-styllst/halrstyllst.htlm) или русскоязычный «Виртуальный салон красоты» (http://virtualmakeover.ru).
Загружаем свое фото или выбираем подходящий портрет другого человека, если понравился создаем образ - сохраняем изображение. В «Виртуальном салоне» мужчинам уделено не мало внимания.
Digital Physiognomy 1.60
В этом редакторе представлено необычное использование фоторобота — изучение лица с точки зрения физиогномики. Относиться к этой области знания можно по-разному, сами же разработчики честно предупреждают: «Полученная диагностика свидетельствует не столько о действительно вашем характере и возможном поведении, а о том, как вас в большинстве случаев воспринимает незнакомый, непредубежденный человек, увидевший вас впервые».
Составить фоторобот в Digital Physiognomy можно двумя способами: подбирая подходящие кусочки по картинкам или на основании «словесного портрета» — предложенного программой текстового описания той или иной черты лица (лоб узкий, низкий, глаза маленькие, глубоко посаженные). Когда портрет готов, утилита предлагает три варианта его расшифровки: текст, диаграмма с психологическими характеристиками и типы с точки зрения соци-оники.
Есть в Digital Physiognomy интересная функция — подбор портрета по заданным психологическим характеристикам. Можно узнать, как выглядит самый невезучий человек или самый хитрый. Кроме того, разработчики подготовили около 500 портретов исторических деятелей, политиков, известных актеров, во внешности которых можно детально разобраться.
Мультроботы.
Фотороботы бывают и мультяшными. Это те же составные картинки. Благодаря им можно представить себя художником-мультипликатором.
Наиболее мощным мультяшным фотороботом является South Park Studio (http://sp-studio.de). Этот сервис на основе известного сериала позволяет создавать персонажей в духе мультфильма. К услугам пользователей огромные запасы шаблонов рук, ног, туловищ, глаз, ртов... Всего, чего душе угодно.
Мультробот Dream Avatar (www.tek-tek.org/ dream/dream.php) посвящен ани-ме — фрагменты человечка прорисованы в соответствующей манере. Еще один ресурс такого типа инструментов — Avatares (www.buscarmessenger.com/ avatars. html). Правда, не известно, к какому стилю или направлению его отнести. Но то, что всеми чертами фоторобота он обладает — это точно.
Все-таки хорошая идея пришла в голову Пьеру Шабо. Вроде пустяк, а какова область применений!
Прародителем сети интернет была сеть ARPANET. Первоначально её разработка финансировалась Управлением перспективного планирования (Advanced Research Projects Agency, или ARPA). Проект стартовал осенью 1968 года и уже в сентябре 1969 года в опытную эксплуатацию был запущен первый участок сети ARPANET.
Сеть ARPANET долгое время являлась тестовым полигоном для исследования сетей с коммутацией пакетов. Однако кроме исследовательских, ARPANET служила и чисто практическим целям. Ученые нескольких университетов, а также сотрудники некоторых военных и государственных исследовательских институтов регулярно её использовали для обмена файлами и сообщениями электронной почты, а так же для работы на удалённых компьютерах. В 1975 году управление сетью было выведено из под контроля ARPA и поручено управлению связи Министерства обороны США. Для военных данная сеть представляла большой интерес, так как позволяла сохранять её работоспособность даже при уничтожении её части, например, при ядерном ударе.
В 1983 году Министерство обороны разделило ARPANET на две связанные сети. При этом за сетью ARPANET были сохранены её исследовательские функции, а для военных целей была сформирована новая сеть, которую назвали MILNET. Физически сеть ARPANET состояла приблизительно из 50 миникомпьютеров типа С30 и С300, выпущенных фирмой BBN Corporation. Они назывались узлами коммутации пакетов и были разбросаны по территории материковой части США и Западной Европы. Сеть MILNET состояла приблизительно из 160 узлов, причём 34 из них были расположены в Европе, а 18 в Тихом Океане и в Азиатско-Тихоокеанском регионе. Сами узлы коммутации пакетов нельзя было использовать для решения вычислительных задач общего плана.
Понимая, что в ближайшем будущем очень важным моментом в научных исследованиях будет процесс обмена данными, Национальный научный фонд (NFS) в 1987 году основал отделение сетевых и коммуникацинных исследований и инфраструктуры. В его задачи входило обеспеченье современными сетевыми коммуникационными средствами учёных и инженеров США. И хотя отделение фонда NFS финансировало основные исследовательские программы в области сетевых коммуникаций, сферой его основных интересов было расширение Internet.
Сеть NSFNET строилась в несколько этапов и быстро преобретала популярность не только в научно-исследовательских кругах, но и в коммерческой среде. К 1991 году фонд NFS и другие государственные учреждения США поняли, что масштабы Internet вышли далеко за отведённые её на этапе разработки рамки университетской и научной сети. К Internet стало подключаться множество организаций, разбросанных по всему Земному шару. Трафик в магистральном канале NSFNET вырос почти до миллиарда пакетов в день, и его пропускной способности 1.5 Мбит/с на отдельных участках стало уже не хватать. Поэтому правительство США начало проводить политику приватизации и коммерческого использования Internet. Фонд NFS принял решение предать магистральную сеть на попечение закрытой акционерной компании и оплачивать доступ к ней для государственных научных и исследовательских организаций.
Семейство TCP/IP
Познакомившись с историей, давайте подробнее рассмотрим, что собой представляют протоколы TCP/IP. TCP/IP - это семейство сетевых протоколов, ориентированных на совместную работу. В состав семейства входит несколько компонентов:
IP (Internet Protocol - межсетевой протокол) - обеспечивает транспортировку пакетов данных с одного компьютера на другой;
ICMP (Internet Control Message Protocol - протокол управляющих сообщений в сети Internet) - отвечает за различные виды низкоуровневой поддержки протокола IP, включая сообщения об ошибках, вспомогательные маршрутизирующие запросы и подтверждения о получении сообщений;
ARP (Address Resolution Protocol - протокол преобразования адресов) - выполняет трансляцию IP-адресов в аппаратные MAC-адреса;
UDP (User Datagram Protocol - протокол передачи дейтаграмм пользователя) и TCP (Transmission Control Protocol - протокол управления передачей) - обеспечивают доставку данных конкретным приложениям на указанном компьютере. Протокол UDP реализует передачу отдельных сообщений без подтверждения доставки, тогда как TCP гарантирует надёжный полнодуплексный канал связи между процессами на двух разных компьютерах с возможностью управления потоком и контроля ошибок.
Протокол представляет собой набор правил, использующихся для при обмене данными между двумя компьютерами. В нём оговариваются формат блоков сообщений, описывается реакция компьютера на получение определённого типа сообщения и указываются способы обработки ошибок и других необычных ситуаций. И что самое важное, благодаря протоколам, мы можем описать процесс обмена данными между компьютерами, не привязываясь к какой-то определённой комьютерной платформе или сетевому оборудованию конкретного производителя.
Сокрытие низкоуровневых особенностей процесса передачи данных способствует повышению производительности труда разработчиков. Во-первых, поскольку программистам приходится иметь дело с протоколами, относящимися к достаточно высокому уровню абстракции, им не нужно держать в голове (и даже изучать!) технические подробности испольуемого аппаратного обеспечения. Во-вторых, поскольку программы разрабатываются на основе модели, относящейся к высокому уровню абстракции, который не зависит от конкретной архитектуры компьютера или типа сетевого оборудования, в них не нужно вносить никаких изменений при переходе на другой тип оборудования или изменений конфигурации сети.
Замечание Говорить о том, что ARP входит в состав семейства протоколов TCP/IP не совсем корректно. Однако это неотъемлемая часть стека протоколов в сетях Ethernet. Для того чтобы отправить данные по сети, IP-адрес хоста должен быть преобразован в физический адрес машины получателя (уникальный адрес сетевой платы). Протокол ARP как раз и предназначен для такой цели.
Самым фундаментальным протоколом Интернета является протокол IP (от англ. Internet Protocol), обеспечивающий передачу данных между двумя удаленными компьютерами. Протокол IP является достаточно простым, и обеспечивает адресацию в сети. В ранних сетях адреса в сети были уникальные целые цифры, сейчас сеть построена по иерархическому принципу.
Стек протоколов TCP/IP имеет четыре основных уровня, поэтому часто говорят, что TCP/IP — это четырехуровневый стек протоколов. Внизу стека расположен интерфейсный уровень, посредством которого происходит связь с аппаратурой. За ним следует уровень IP, поверх которого построены транспортные протоколы TCP и UDP. На вершине стека находится уровень приложений, таких как ftp, telnet и т. д. Как мы уже говорили, IP — это простой протокол, не требующий установления соединения. При отсылке пакета данных, IP, как и все протоколы без соединения, послав пакет, тут же "забывает" о нем. При приеме пакетов с верхних уровней стека, этот протокол обертывает их в IP-пакет и передает необходимому аппаратному обеспечению для отправки в сеть. Однако именно в такой простоте и заключается основное достоинство протокола IP. Дело в том, что поскольку IP является простым протоколом, он никак не связан со структурой физической среды, по которым передаются данные. Для протокола IP главное, что эта физическая среда в принципе способна к передаче пакетов. Поэтому IP работает как в локальных, так и в глобальных сетях, как в синхронном, так и в асинхронном режиме передачи данных, как в обычных линиях связи, так и беспроводных и т. д. А поскольку протокол IP является фундаментом четырехуровнего сте-ка протоколов, то все семейство протоколов TCP/IP также может функционировать в любой сети с любым режимом передачи пакетов.
На сетевом уровне в семействе протоколов TCP/IP предусмотрено два обширных класса служб, которые используются во всех приложениях.
Служба доставки пакетов, не требующая установки соединения.
Надёжная потоковая транспортная служба.
Различие между службами, требующими установления надёжного соединения и службами, не требующими этого, является одним из самых основных вопросов сетевого программирования. Первое, на что следует обратить внимание, это то, что когда мы говорим об установлении соединения, то имеется в виду не соединение между компьютерами посредством физического носителя, а о способе передачи данных по этому носителю. Основное различие состоит в том, что службы, в которых устанавливается надёжное соединение, сохраняют информацию о состоянии и таким образом отслеживают информацию о передаваемых пакетах. В службах же, не требующих надёжного соединения, пакеты передаются независимо друг от друга.
Данные передаются по сети в форме пакетов, имеющих максимальный размер, определяемый ограничениями канального уровня. Каждый пакет состоит из заголовка и полезного содержимого (сообщения). Заголовок включает сведения о том, откуда прибыл пакет и куда он направляется. Заголовок, кроме того, может содержать контрольную сумму, информацию, характерную для конкретного протокола, и другие инструкции, касающиеся обработки пакета. Полезное содержимое – это данные, подлежащие пересылке.
Имя базового блока передачи данных зависит от уровня протокола. На канальном уровне это кадр или фрейм, в протоколе IP – пакет, а в протоколе TCP – сегмент. Когда пакет передаётся вниз по стеку протоколов, готовясь к отправке, каждый протокол добавляет в него свой собственный заголовок. Законченный пакет одного протокола становится полезным содержимым пакета, генерируемого следующим протоколом.
Определение
Пакеты, которые посылаются протоколом, не требующим соединения, называются дейтаграммами.
Каждая дейтаграмма является уникальной в том смысле, что никак не зависит от других. Как правило, при работе с протоколами без установления соединения, диалог между клиентом и сервером предельно прост: клиент посылает одиночный запрос, а сервер на него отвечает. При этом каждый новый запрос — это новая транзакция, т. е. инициируемые клиентом запросы никак не связаны друг с другом с точки зрения протокола. Протоколы без установления соединения ненадежны в том смысле, что нет никаких гарантий, что отправленный пакет будет доставлен по месту назначения.
Протоколами, требующие установления логического соединения, сохраняют информацию о состоянии, что позволяет обеспечивать надежную доставку пересылаемых данных. Когда говорится о сохранении состояния, имеется ввиду то, что между отправителем и получателем происходит обмен информацией о ходе выполнения передачи данных. К примеру, отправитель, посылая данные, сохраняет информацию о том, какие данные он послал. После этого в течении определенного времени он ожидает информацию от получателя о доставке этих данных, и, если такая информация не поступает, данные пересылаются повторно.
Работа протокола с установлением соединения включает в себя три основные фазы:
установление соединения;
обмен данными;
разрыв соединения.
Передача всех данных при работе с таким протоколом, в отличие от протокола без установления соединения, происходит за одну транзакцию, т. е. в фазе обмена данными не происходит обмена адресами между отправителем и получателем, поскольку эта информация передается на этапе установки соединения. Возвращаясь к телефонной аналогии, можно сказать, что нам в этом случае нет необходимости для того, чтобы сказать собеседнику очередное слово, вновь набирать его номер и устанавливать соединение. Заметим, что приводимая аналогия имеет одну неточность. Дело в том, что при телефонном разговоре все же устанавливается физическое соединение. Когда же мы говорим о соединении с точки зрения протоколов, то это соединение, скорее, умозрительное. К примеру, если вдруг при телефонном разговоре, неожиданно сломается телефонный аппарат вашего собеседника, вы тут же узнаете об этом, поскольку разговор незамедлительно прервется. А вот если происходит обмен данными между двумя хостами и один из них вдруг аварийно остановится, то для его "хоста-собеседника" соединение по прежнему будет существовать, поскольку для него не произошло ничего такого, что сделало бы недействительной хранящуюся у него информацию о состоянии.
В этом смысле работу с протоколом, требующим установления логического соединения можно сравнить с телефонным разговором. Когда мы звоним по телефону, мы сначала набираем номер (установление соединения), затем разговариваем (обмен данными) и по окончании разговора вешаем трубки (разрыв соединения).
Протокол без установления соединения обычно сравниваю с почтовой открыткой. Каждая открытка представляет собой самостоятельную единицу (пакет информации или дейтаграмму), которая обрабатывается в почтовом отделении независимо от других открыток. При этом на почте не отслеживается состояние переписки между двумя респондентами и, как правило, нет никакой гарантии, что ваша открытка попадет к адресату. Если на открытке указан неправильный адрес, она никогда не дойдет до получателя, и не возвратиться обратно к отправителю. А если вы захотите отправить вашему собеседнику новую порцию информации, то это уже будет другая транзакция, поскольку нужно будет писать новую открытку, указывать на ней адрес и т. д.
Как видим, у протоколов без установления соединения существует много недостатков и может возникнуть вопрос о надобности таких протоколов. Однако, использование проколов без установления логического соединения все-таки оправдано. Как правило, при помощи таких протоколов организуется связь одного хоста со многими другими, в то время как при использовании протоколов с установлением соединения связь организуется между парой хостов (по одному соединению на каждую пару). Важный момент заключается в том, что протоколы без установления логического соединения являются фундаментом, на котором строятся более сложные протоколы. К примеру, протокол TCP построен на базе протокола IP.
Протоколы транспортного уровня
Протоколами транспортного уровня в четырехуровневом стеке протоколов являются протоколы TCP и UDP.
Давайте рассмотрим, каким образом функционирует протокол TCP. Дело в том, что поскольку TCP-пакеты, иначе называемые сегментами, посылаются при помощи протокола IP, у TCP нет никакой информации о состоянии этих пакетов. Поэтому для того, чтобы хранить информацию о состоянии, TCP к базовому протоколу IP добавляет три параметра.
Во-первых, добавляется сегмент контрольной суммы содержащихся в пакете данных, что позволяет убедиться в том, что в принципе все данные дошли до получателя и не повредились во время транспортировки.
Во-вторых, к каждому передаваемому байту приписывается порядковый номер, что необходимо для определения того, совпадает ли порядок прибытия данных с порядком их отправки. И даже в том случае, если данные пришли не в том порядке, в котором были отправлены, наличие порядковых номеров позволит получателю правильно составить из этих данных исходное сообщение.
В-третьих, базовый протокол IP дополняется также механизмами подтверждения получения данных и повторной отправки, на тот случай, если данные не были доставлены.
Если с первыми двумя параметрами все более-менее понятно, то механизм подтверждения/повторной отправки достаточно сложен и его мы рассмотрим подробнее в другой раз.
Зачастую на Web – сайтах можно встретить страницы с размещенными на них HTML - формами. Веб-формы – удобный способ получения информации от посетителей вашего сайта. Пример тому – гостевая книга, – которая обеспечивает обратную связь с посетителями и разработчиками сайта. Формы так же удобны и для разработчиков сайта при разработке CMS, которая позволяет поддерживать главное свойство сайта - актуальность. Данная статья посвящена основам создания HTML-форм, их обработке и способам передачи данных из экранных форм в PHP-сценарии.
1) Создание простой формы
Теги <form> и </form> задают начало и конец формы. Начинающий форму тег <form> содержит два атрибута: action и method. Атрибут action содержит адрес URL сценария, который должен быть вызван для обработки сценария. Атрибут method указывает браузеру, какой вид HTTP запроса необходимо использовать для отправки формы; возможны значения POST и GET.
Замечание Главное отличие методов POST и GET заключается в способе передачи информации. В методе GET параметры передаются через адресную строку, т.е. по сути в HTTP-заголовке запроса, в то время как в методе POST параметры передаются через тело HTTP-запроса и никак не отражаются на виде адресной строки.
2) Флажок (checkbox)
Флажки checkbox предлагаю пользователю ряд вариантов, и разрешает выбор нескольких из них.
Группа флажков состоит из элементов <input>, имеющих одинаковые атрибуты name и type(checkbox). Если вы хотите, чтобы элемент был отмечен по умолчанию необходимо пометить его как checked. Если элемент выбран, то сценарию поступит строка имя=значение, в противном случае в обработчик формы не придет ничего, т.е. не выбранные флажки вообще никак не проявляют себя в переданном наборе данных.
Пример:
3) Переключатель(radio)
Переключатели radio предлагают пользователю ряд вариантов, но разрешает выбрать только один из них.
Переключатель (radio) имеет атрибуты name, type и value. Атрибут name задает имя переключателя, type задает тип radio, а атрибут value задает значение. Если пользователь выберет переключатель, то сценарию будет передана строка имя=значение. При необходимости можно указать параметр checked, который указывает на то, что перключатель будет иметь фокус (т.е. будет отмечен по умолчанию) при загрузке страницы. Переключатели также можно объединять в группы, для этого они должны иметь одно и тоже имя.
Пример:
4) Кнопка сброса формы(Reset)
При нажатии на кнопку сброса(reset), все элементы формы будут установлены в то состояние, которое было задано в атрибутах по умолчанию, причем отправка формы не производиться.
Пример:
5) Выпадающий список (select)
Тэг <select> представляет собой выпадающий или раскрытый список, при этом одновременно могут быть выбраны одна или несколько строк.
Список начинается с парных тегов <select></select>. Теги <option></option> позволяют определить содержимое списка, а параметр value определяет значение строки. Если в теге <option> указан параметр selected, то строка будет изначально выбранной. Параметр size задает, сколько строк будет занимать список. Если size равен 1, то список будет выпадающим. Если указан атрибут multiple, то разрешено выбирать несколько элементов из списка(при size = 1 не имеет смысла).
При передаче данных выпадающего списка сценарию передается строка имя=значение, а при раскрытом списке передается строка имя=значение1&имя=значение2&имя=значениеN.
6) Текстовое поле (text)
Позволяет пользователям вводить различную информацию.
При создании обычного текстового поля размером size и максимальной допустимой длины maxlength символов, атрибут type принимает значение text. Если указан параметр value, то поле будет содержать отображать value-текст. При создании поля не забывайте указывать имя поля, т.к. этот атрибут является обязательным.
Пример:
7) Поле для ввода пароля (password)
Полностью аналогичен текстовому полю, за исключением того что символы, набираемые пользователем, не будут отображаться на экране.
Пример:
8) Многострочное поле ввода текста (textarea)
Многострочное поле ввода текста позволяет отправлять не одну строку, а сразу несколько. По умолчанию тег создает пустое поле шириной в 20 символов и состоящее из двух строк.
Многострочное поле ввода текста начинается с парных тегов <textarea></textarea>. Тэг name задает имя многострочного поля. Также можно указать ширину поля(cols) и число строк(rows). При необходимости можно указать атрибут readonly, который запрещает редактировать, удалять и изменять текст, т.е. текст будет предназначен только для чтения. Если необходимо чтобы текст был изначально отображен в многострочном поле ввода, то его необходимо поместить между тэгами <textarea></textarea>.
Пример:
9) Скрытое текстовое поле
Позволяет передавать сценарию какую то служебную информацию, не отображая её на странице.
Скрытое поле начинается с тега <input>, атрибуты которого являются name, type и value. Атрибут name задает имя поля, type определяет тип поля, а атрибут value задает значение поля.
Пример:
10) Кнопка отправки формы (submit)
Служит для отправки формы сценарию.
При создании кнопки для отправки формы необходимо указать 2 атрибута: type=“submit” и value=”Текст кнопки”. Атрибут name необходим если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки.
11) Кнопка для загрузки файлов (browse)
Служит для реализации загрузки файлов на сервер. Объект browse начитается с парных тегов <form></form>. Начинающий тэг <form> содержит необходимый атрибут encrypt. Атрибут encrypt принимает значение multipart/form-data, который извещает сервер о том, что вместе с обычной информацией посылается и файл. При создании текстового поля также необходимо указать тип файла – “file”.
12) Рамка (fieldset)
Объект fieldset позволяет вам нарисовать рамку вокруг объектов. Имеет закрывающий тэг </fieldset>. Заголовок указывается в тэгах <legend></legend>. Основное назначение объекта – задавание различных стилей оформления.
Пример:
Обработка форм
Все данные, которые вы хотите получить из HTML-формы в PHP сценарий обрабатываются с помощью суперглобальных массивов $_POST или $_GET, в зависимости от указанного в атрибуте method метода передачи данных.
Задача: Вам необходимо получить данные из текстового поля и многострочного поля ввода и передать их сценарию.
Решение: Необходимо создать HTML форму и PHP – сценарий для обработки формы.
Обсуждение:
Создадим два файла: form.html и action.php. В файле form.html будет содержаться html-форма с текстовым полем mytext и текстовой областью msg:
В этой html-форме нас интересует 3 атрибута: action который указывает путь к обработчику формы, имя текстового поля (mytext) и имя многострочного поля вода (msg). Также в форме присутствует кнопка, при нажатии на которую происходит передача данных.
После того как html-форма готова нам необходимо создать обработчик формы action.php:
После того как мы введем любые значение в текстовые поля и нажмем на кнопку "Отправить данные" html-форма отправить значения сценарию action.php.
После этого в переменных $text и $msg будут содержаться значения текстового поля и многострочного поля ввода соответственно, значения которых взяты из суперглобальных переменных $_POST.
Если вы хотите, чтобы в многострочном текстовом поле соблюдалось html-форматирование, то используйте функцию nl2br():
Задача: Пусть необходимо создать выпадающий список с годами с 2000 по 2050.
Решение: Необходимо создать HTML форму c элементом SELECT и PHP – сценарий для обработки формы.
Обсуждение:
Для начала создадим два файла: form.html и action.php. В файле form.html будет содержаться html-форма с выпадающим списком. Причем значения в списке можно указать двумя способами:
I. Ввод данных вручную:
II. Ввод данных через цикл:
Как видно, второй пример с циклом, более компактный. Думаю, не стоит приводить скрипт обработчика данной формы, потому что он обрабатывается точно так же как текстовое поле, т.е. значения списка можно извлечь из суперглобального массива $_POST.
Задача: Загрузка файла на сервер
Решение: Необходимо создать HTML форму и PHP – сценарий для обработки файла.
Описание:
Создадим HTML-форму для отправки файла на сервер.
В данной html-форме присутствует элемент browse, который открывает диалоговое окно для выбора файла для загрузки на сервер. При нажатии на кнопку "Передать файл", файл передается сценарию-обработчику.
Затем необходимо написать сценарий обработчик action.php. Перед написание обработчика необходимо определиться в какой каталог мы будет копировать файл:
Замечание Если вы доверяете пользователям закачивать на ваш сервер любые файлы, нужно быть предельно осторожным. Злоумышленники могут внедрить «нехороший» код в картинку или файл и отправить на сервер. В таких случаях нужно жестоко контролировать загрузку файлов.
Данный пример демонстрирует создание каталога и копирование файла в этот каталог на сервер.
Также хотел бы продемонстрировать пример с элементом checkbox. Этот элемент немного отличается от других элементов тем, что если не один из элементов checkbox’a не выбран, то суперглобальная переменная $_POST вернет пустое значение:
Конечно же вы попадали в такую ситуацию, когда приложение, разработанное вами ранее, могло быть снова использовано в рамках другого проекта. Вначале вы конечно же подумали, что это не создаст никаких проблем. Всего-то необходимо скопировать код из одного каталога в другой! Со временем вы осознали, что проекты могут различаться между собой различными параметрами, пусть даже самыми незначительными. Например, это может быть e-mail адрес на который отсылаются сообщения. В таком случае вам ничего не остается, как открыть множество файлов в редакторе и изменить их содержимое, вставляя нужный e-mail при помощи функции найти/заменить. Эта статья расскажет вам о том, как можно избавить себя от подобной работы, а так же порекомендует ряд дополнительных средств для создания и чтения конфигурационных файлов.
Повторное использование кода
Компьютер был изобретен для того, чтобы избавить человека от лишней работы. Развитие компьютерных технологий привело к тому, что человек стал стремиться все меньше времени проводить за компьютером. Допустим, вы программист. Не будь компьютера, вы бы остались без работы. Но в то же время вы стараетесь с помощью компьютера упростить свою ежедневную работы, с этой целью вы используете, например, функцию автозавершения кода в редакторе. Мы хотим подвести вас к той мысли, что код созданный вами, должен быть организован так, чтобы работы по его модификации были сведены к минимуму. Чаще всего это удается, когда вы создаете код, автоматизирующий рутинные операции, такие как создание и прорисовка формы, а так же отправка e-mail. Однако не стоит забывать, что функции для выполнения рутинных операций никогда не бывают на 100% идентичными в различных приложениях. Один формуляр не похож на другой, а сообщения электронной почты предназначены разным адресатам. Однако логика на уровне приложения остается прежней, функции различаются между собой только некоторыми параметрами. Таким образом, вы должны ясно представлять свою цель – разработать код, параметры которого можно было бы определять извне.
Модульная организация
Для решения этой задачи, планируя структуру приложения, вы должны позаботиться о модульности. То есть вам необходимо поместить часто используемые функции или классы в отдельный файл, который будет подключаться через require_once. В этом случае файлы приложения не будут наполнены избыточным кодом. Допустим, вы часто осуществляете запись в лог-файл. В таком случае было бы неплохо код, выполняющий эту операцию, заключить в рамки класса или функции. Будет еще лучше, если вы воспользуетесь уже готовым классом, взятым из какой-нибудь библиотеки исходных кодов, например PEAR.
Параметры процедурального кода
После того, как вы проанализировали код, выделили повторяющиеся фрагменты, распределили их по классам и функциям, необходимо подумать о выделении необходимых параметров, значения которых будут устанавливаться извне. Если речь идет о процедуральном коде, самым простым решением является использование глобальных переменных, которые необходимо определить в отдельном файле. Это позволит в дальнейшем без проблем изменять их значения.
Листинг 1 демонстрирует функцию, которая занимается отправкой e-mail. В ее теле содержится только одна php-функция - mail(). Таким образом, мы избавляемся от необходимости каждый раз указывать получателя при отправке сообщения. Следующая переменная, которую мы определяем, обозначает префикс, предшествующий теме сообщения. Конфигурационный файл, подключаемый через require_once, мог бы выглядеть следующим образом.
Listing 1
Есть способ лучше
Даже если рассмотренный выше способ и является действенным, однако это не самое лучшее решение. По мере того как код вашего приложения будет усложняться, вырастет и число опций, тогда могут возникнуть следующие проблемы:
Глобальные переменные, которые мы используем, могут породить конфликты в пространстве имен.
В том случае, если конфигурационные файлы редактируются не программистом, а дилетантом, в системе могут возникнуть синтаксические ошибки, например из-за незакрытых кавычек.
Для того, чтобы получить доступ к различным переменным, необходимо обращаться к массиву $_GLOBALS.
Вместо php-модулей существуют другие форматы, которые могут быть легко поняты и изменены дилетантами, а так же php-скриптами. Мы имеем в виду два формата: этого широко используемые операционной системой Windows ini-файлы, а так же формат XML.
PHP уже содержит функцию parse_ini_file(), которая без проблем читает ini-файлы. Такой файл имеет очень простую структуру. Каждой опции может быть присвоено только одно значение, а в качестве оператора присваивания используется знак равенства. Конфигурационный файл из предыдущего примера выглядел бы следующим образом в ini-формате.
После считывания ini-файла, имя которого передается в качестве параметра функции parse_ini_file(), мы получаем ассоциативный массив, имеющий вид:
В листинге 2 находится функция отправки почты, основанная на ini-файлах:
Listing 2
Если вы уже прочитали документацию по функции parse_ini_file(), вы кончено же заметили, что она может принимать и второй параметр. Он необходим, если вы хотите разделить ini-файл на несколько разделов или секций. Предположим, вам необходимо сохранить несколько настроек электронной почты. Тогда ini-файл будет выглядеть следующим образом:
"
Если вы при вызове parse_ini_file() передаете true в качестве второго параметра, в этом случае php будет искать в файле секции, а затем вернет многомерный массив, в котором каждой секции (errors и contact) будет соответствовать определенный набор значений:
Особые значения в ini-файлах
При использовании ini-файлов вы должны иметь в виду, что некоторые особые значения могут быть представлены строками. Допустим, вы определяете значение опции как true или yes (без кавычек), в таком случае они автоматически конвертируются в число 1, а false или no – в пустую строку. К сожалению, при этом не генерируется никакой ошибки. Поэтому не пытайтесь использовать no для сокращенного обозначения Норвегии.
Listing 3
Безопасность
Вы должны понимать то, что если конфигурационный файл используется для хранения важных данных, например паролей, необходимо позаботиться о том, чтобы содержимое такого файла не попало в web-браузер. Простейший выход из положения заключается в том, чтобы хранить конфигурационные файлы вне корневой директории сайта, например здесь: /etc/myApp/config
Если этого сделать нельзя, в таком случае можно изменить расширение файла. Для конфигурационного файла в формате модуля php необходимо всегда выбирать расширение .php. В этом случае сервер проанализирует php-файл, а пользователь увидит пустую страницу. С ini-файлами такое не пройдет, однако сервер Apache предоставляет возможность защитить данные. Просто поместите в каталог, где хранятся ini файл с именем .htaccess В него нужно поместить следующие строки:
Теперь сервер перестанет выдавать файлы с расширением ini, а опции приложения будут скрыты от пользователей.
Другие средства
Кончено же вы не являетесь единственным разработчиком, который сталкивается с проблемой обеспечения гибкости настроек веб-приложения. Поэтому некоторые программисты уже разработали библиотеки классов, которые переводят работу с конфигурационными файлами на абстрактный уровень, а так же упрощают запись и чтение различных форматов конфигурационных файлов.
PEAR::Config
Одним из классов, который может пригодится при чтении и записи конфигурационных файлов является PEAR::Config [3]. Как и все классы PEAR, PEAR::Config инсталлируется при помощи PEAR-Installer по команде
Этот класс является многоформатным, поскольку работает с конфигурационными файлами в форматах XMIL, ini, Apach-Style (гибрид XML и ini), а также php-массивами. Достоинством данного класса является то, что API для взаимодействия со всеми форматами одинаков. Т.е. логика работы с конфигурационными файлами в формате XML ничем не отличается от логики работы с ini-файлами. Вследствие этого необходимо, чтобы все форматы имели одинаковую структуру. Конфигурационные файлы, с которыми работает PEAR::Config, состоят, как и ini-файлы из секций.
Изменим снова наш пример. Сначала мы создаем объект Config, а затем вызываем его метод parseConfig(). Поскольку метод позволяет считывать различные форматы файлов, при вызове его необходимо передавать параметр, уточняющий формат. Для конфигурационных файлов в формате ini в качестве такого параметра используется строка iniFile. После считывания файла, мы не получаем опции в виде массива, вместо этого создается объект-контейнер, который дает доступ ко всем настройкам. Хотя во многих случаях бывает желательно получить опции в форме массива. Для этого используется метод toArray(). Листинг 4 демонстрирует считывание ini-файла:
Listing 4
С первого взгляда это может показаться несколько запутанным. Однако преимущество данного подхода заключается в том, что один и тот же метод используется для чтения всех форматов файлов, поддерживаемых PEAR::Config. Измененные опции могут быть также сохранены в любом формате:
Листинг 5 содержит код, где серия опций помещается в массив, который затем сохраняется в формате XML. Если вы хотите побольше узнать о PEAR::Config необходимую информацию вы сможете найти в документации по PEAR[5] или в DevShed-Tutorial [6].
Listing 5
patConfiguration
Альтернативным классом для работы с конфигурационными файлами является patConfiguration[7], однако он предназначен исключительно для работы с файлами в формате XML. После скачивания архива, его необходимо распаковать. Сам класс находится в директории include. patConfiguration предварительно определяет Tag-Set, который затем наполняется данными. К тому же этот класс предоставляет возможность указать тип опции: целое число, число с плавающей точкой, булевское значение. Типичный конфигурационный файл, созданный patConfiguration, имеет следующую структуру:
После создания объекта класса, может быть вызван метод parseConfigFile(). Доступ к опциям осуществляется через getConfigValue(). В качестве параметра этот метод может принимать путь к нужной опции. Вернемся к нашему примеру. Допустим, мы хотим получить e-mail адрес, на который высылается сообщение об ошибке. В этом случае используется путь errors.email. Если путь не указан, тогда все параметры передаются в массив. Листинг 6 демонстрирует код, который можно использовать для считывания файлов.
patConfiguration 2.0.0
В данный момент многоформатная версия patConfiguration находится в стадии разработки. Возможно, при публикации статьи эта версия уже станет доступной. Впрочем, самую новую версию для разработчиков вы можете скачать с сайта snaps.php-tools.net/downloaden.
В этом примере вы уже заметили, что внутри тега указывается тип значения. Названия типов идентичны тем, что используются в php-функции settype(). Если тип не указан, тогда значение интерпретируется как строка. Для часто используемых опций можно определить отдельный тег.
Наряду с функцией getConfigValue, существует функция setConfigValue(), с помощью которой можно изменить значение опции. Затем конфигурационный файл может быть заново записан с помощью writeConfigFile() (см листинг 7).
patConfiguration предлагает также серию дополнительных возможностей. Например, наряду с тегами, существует возможность определять атрибуты и пространства имен (Namespace), а к тегу можно привязать внешний файл, таким образом, опции будут распределены по нескольким файлам. Кроме этого patConfiguration включает систему кэширования, благодаря которой пропадает необходимость в многократном считывании конфигурационного файла.
Дополнительную информацию вы сможете найти на PHP Application Tools-Homepage и в patConfiguration-Tutorial на DevShed [8].
Listing 7
Заключение
Забота о гибкости настроек приложения может сберечь много времени, особенно если его компоненты предполагается использовать в других проектах. Вы потратите еще меньше времени, если доверите работу с конфигурационными файлами одному из готовых классов. Выбор между PEAR::Config и patConfiguration зависит от задачи. Преимуществом PEAR::Config является поддержка различных форматов конфигурационных файлов, в то время как patConfiguration прекрасно работает с XML, так же предоставляет ряд дополнительных возможностей. Однако с появлением версии 2.0.0 этот пакет будет иметь одинаковый API для считывания ini и wddx файлов. PHP-массив поддерживаются уже в текущей версии.
История из жизни. Я сидел за одним из своих компьютеров, слегка нервничал, потому что пытался решить проблему несоответствия браузеров стандартам CSS, и получил в это время письмо следующего содержания:
«Я с удовольствием куплю несколько текстовых ссылок на вашем сайте. Если вы заинтересованы, сообщите мне, и мы продолжим переговоры. Я действительно могу предложить вам достойное, конкурентоспособное соглашение».
Достойное, конкурентоспособное соглашение? Этот парень, должно быть, шутит? Все, кто меня знают, могут с уверенностью сказать, что на большинство предложений поисковой оптимизации или покупки ссылок я отвечаю двумя способами: нажимаю кнопку «удалить» или сообщаю в поисковые системы о спаме. Конечно, кнопка «удалить» более эффективна. Но в тот раз я был настроен по-другому. Потому что несоответствие браузеров стандартам CSS меня действительно раздражает.
«Спасибо, что ответили мне. Я заинтересован в размещении текста где-нибудь в средней или нижней части внутренних страниц вашего сайта. За это я готов заплатить вам: … за каждую внутреннюю страницу, где можно будет легко добавить маленький параграф со ссылками внизу текста. Список рекомендованных страниц: … »
Я был крайне озадачен страницами, которые он выбрал. Любой сообразительный владелец сайта посчитал бы, что эти страницы не способны привлечь посетителей.
Затем меня озарило - этот человек был совершенно серьезен в своем намерении. Он не причислял себя к «черным» или «белым» оптимизаторам, также как и не причислял к «красным» и «голубым»… Он не считал этот способ Интернет-маркетинга поисковым спамом. Я думаю, он просто пытался совершить совершенно законную сделку, чтобы получить высококачественные ссылки на свой сайт.
Этика в голове оптимизатора
Множество профессионалов поисковой оптимизации считают себя интернет-маркетологами, действующими этичными методами. Обозначение компании как «фирма с этичным поисковым маркетингом» приводит к росту продаж и подразумевает надежность. Это обозначение - синоним знаний и компетенции, символ того, что фирма понимает поисковую оптимизацию. Это говорит о том, что фирме можно доверять.
Кроме этого, этичность действий по поисковой оптимизации часто зависит от внешних обстоятельств. У каждого из профессионалов в этой отрасли обстоятельства складываются по-разному…
К примеру, я знаю некоторых внутренних специалистов по поисковому маркетингу, которые работают над оптимизацией сайтов с плохой юзабилити, к тому же написанных на Flash. Я знаю специалистов, которым начальство приказывает вывести сайт на первое место, но при этом они не разрешает производить изменения ключевых слов или текстов на сайте. Их работа - оптимизировать сайты в таких условиях. Начальство или администрация не желает слушать их извинения и ссылки на инструкции, которые составляю представители поисковыхе систем для оптимизаторов. Они просто хотят, чтобы эти специалисты делали свою работу.
У меня другая ситуация. Я владелец компании. Я могу решать, применять или нет определенные стратегии оптимизации. Когда я слышу от клиентов их ожидания на будущее, я стараюсь дать им понять, что они необоснованны. Оптимизация часто связана с проведением изменений на веб-сайте. Модификации информационной архитектуры сайта могут стать долгосрочным проектом, который некоторые люди хотят ускорить искусственно.
Я понимаю, что люди не хотят изменять свои сайты. Тогда я упоминаю о возможности рекламы в поисковых системах. Если клиент или подписчик не заинтересован в подобной рекламе, я могу сказать следующее: «Итак, вы хотите, чтобы я посыпал ваш сайт блестящим волшебным порошком, и он чудесным образом взлетел на первое место по всем ключевым словам одновременно? Хорошо… подождите… я просто сделаю пометку в блокноте: «не забыть заказать визитные карточки с должностью SEO-фея».
Интересно, насколько этичны феи.. но я отвлекся. Я понимаю, что в моих обстоятельствах и с моими знаниями, наверно, легче следовать всем инструкциям по поисковой оптимизации. Другие профессионалы SEO и SEM не становятся более или менее этичными из-за того, что у них другие обстоятельства. Человек, который пытался покупать у меня ссылки, не рассматривал себя как поискового спамера.
Таким образом, я полагаю, что «этика маркетолога поисковых систем» - в голове самого маркетолога.
«Белый» оптимизатор - начинающий оптимизатор
Многим специалистам SEO, использующим методы «черной» оптимизации, несправедливо приписывают многие черты. Вспыхивающие там и здесь обсуждения двух тактик SEO могут быть очень бурными. Я спросил Эрика Даффорна (Erik Dafforn), исполнительного вице-президента Интрапромоут, что он об этом думает:
«Мы стараемся всеми силами не вмешиваться в этот спор. Обычно мы на стороне «белых» оптимизаторов, но это становится так тяжело морально, что мы просто отстраняемся от обсуждения. Нас расстраивает, когда склиенты читают, что мы «не в теме» или менее технически грамотны, чем другие компании. Откровенно говоря, на самом деле это не так, и люди могут верить в это или опровергать в свое удовольствие.
Нахождение существующих лазеек - не та возможность, которой мы стремимся привлечь клиентов. Я не могу представить, как говорю солидному клиенту: «помните перестройку архитектуры сайта, которую мы рекомендовали вам восемь месяцев назад и которая стоила 40 000 долларов? Ну, теперь все надо начинать заново, потому что лазейка закрылась».
Как заметил Эрик, «белых» оптимизаторов обычно не считают экспертами в своей области, поскольку считают, что им недостает изощренных технических навыков. На самом же деле построение эффективной архитектуры сайта часто требует применения значительных технических навыков. Вот что об этом сказал мне Адам Одетт (Adam Audette), президент Одеттмедиа:
«Существует неверное понимание того, что может принести «белая» поисковая оптимизация… часто говорят, что «черная» оптимизация дает большие преимущества, а «белая» - нет. Или что «черные» оптимизаторы более опытны, чем «белые».
«Белые» оптимизаторы вовсе не обязательно «начинающие» оптимизаторы. Они продвинутые, очень опытные маркетологи, которые делают «белую» работу. Для меня главное отличие в том, что «белые» оптимизаторы в своей работе ориентируются на пользователя. Они не всегда соглашаются с тем, что диктуют им поисковые системы. Но им приходится придерживаться правил и, в то же время, учитывать потребности пользователя. На мой взгляд, это наиболее долгосрочный путь проведения кампаний поискового маркетинга, гораздо более выгодный, чем любые попытки перехитрить поисковые системы».
«Белые» оптимизаторы - лохи поисковых систем
«Белых» специалистов SEO называют по-разному. Они и ханжи, и фарисеи, и пай-мальчики, и мальчики для битья. Я думаю, многих смущает идея послушно следовать руководству поисковых систем. Многие специалисты SEO, практикующие «белую» оптимизацию, делают все, чтобы уложиться в рамки, заданные поисковыми системами, но не обязательно полностью согласны со всеми их инструкциями. Спросите любого «белого» специалиста SEO, что ему не нравится в Google, и вы услышите массу интересного.
Например, я не большой фанат AdSense, хотя я осознаю его прибыльный потенциал. Мне также не нравятся вебсайты AdSense magnet, которые распространены гораздо шире, чем мне бы хотелось. Факт в том, что во время тестов на юзабилити я часто наблюдал первое негативное впечатление от сайта, когда участник теста видел на сайте рекламу от Google. Часто с недоверием задается вопрос: «Google одобрил этот сайт?» Как я должен отвечать на него, будучи сторонником Google?
Я, конечно же, делаю все, чтобы следовать всем требованиям и условиям поисковых систем и буду делать в дальнейшем. Но я не всегда с ними согласен. Честно говоря, я уверен, что многие как «черные», так и «белые» оптимизаторы имеют общие взгляды на ряд условий и руководств поисковых систем. Мне очень интересно, что другие скажут на эту тему. В чем совпадают взгляды «черных» и «белых» специалистов? Лично мне бы понравилось, если бы какой-то творческий специалист по поисковому маркетингу написал пьесу с набором характерных персонажей. Я буду фея SEO. Какого героя сыграли бы вы?
В кабельной инфраструктуре традиционным решением по организации кабельных трасс является прокладка кабелей и проводов в системах кабельных каналов, при этом все большее внимание производители уделяют технологичности монтажа.
Ни одно современное здание нельзя представить без кабельной канализации, куда укладываются кабели для различных типов сетей (электрических, телефонных, компьютерных, телевизионных, систем оповещения, сигнализации и др.). Она должна обеспечивать простоту прокладки и обслуживания, надежную и удобную коммутацию, простое наращивание кабельных систем, их последующую модернизацию и реконфигурацию, а также обладать достаточной емкостью для размещения резервных кабельных линий. Кроме того, необходимо соответствие нормам пожарной безопасности, госстандарта, эпидемиологической службы.
Для решения этих задач разработчики совершенствуют системы укладки кабелей с использованием гофрированных и жестких труб, кабель-каналов и коробов, а первостепенными требованиями становятся удобство и быстрота монтажа СКС, электропроводки и кабеленесущих систем. Поставщики кабеленесущих систем адаптируют свои продукты к изменениям в технологиях СКС и нуждам заказчиков, пытаясь найти оптимальное соотношение между себестоимостью и качеством продукции.
Современные кабеленесущие системы позволяют быстро добавлять электроустановочные изделия и кабель, а специальные решения помогают в несколько раз ускорить монтаж силовых розеток. По данным «Остек-Ком», время монтажа кабеленесущих систем от разных поставщиков может различаться в полтора раза.
Между тем российские потребители становятся все более требовательными к качеству изделий, пожаростойкости, долговечности, а отечественные нормы пересматриваются с целью их унификации в соответствии с международными стандартами. В числе первоочередных требований к кабеленесущим системам на российском рынке в «Остек-Ком» называют невысокую стоимость (особенно для регионов) и наличие большого складского запаса, а также полноту системы — ассортимент необходимых аксессуаров для построения и монтажа кабельной трассы. Среди качественных параметров системы наиболее существенными являются удобство, надежность и быстрота организации кабельной проводки, поскольку это непосредственно отражается на экономичности решения. Как отмечают в компании ДКС, сегодня эталон кабеленесущей системы — удобный в монтаже и эксплуатации продукт, эстетичный, долговечный, соответствующий нормам пожарной и экологической безопасности. По мнению специалистов DNA Trading, легкость и быстрота монтажа кабеленесущих систем, прочность и долговечность материала, разнообразие и совместимость решений — все, что позволяет снизить стоимость и повысить надежность системы, — остаются насущными требованиями.
Многие работающие на рынке инженерных коммуникаций российские компании и системные интеграторы, занимающиеся монтажом СКС и локальных сетей, дополняют спектр предлагаемых решений в области СКС кабеленесущими и электроустановочными изделиями известных зарубежных и российских поставщиков, а также собственных производственных подразделений.
ОТ СИСТЕМЫ К СИСТЕМЕ
Скрытая проводка электрических силовых, а иногда и слаботочных систем осуществляется при помощи гофрированных труб. Они обеспечивают не только защиту от механических повреждений, проникновения влаги и возгорания, но и удобство монтажа, позволяя впоследствии проложить дополнительную проводку или заменить ее. В отличие от металлорукава, гофротруба не подвержена коррозии, не требует заземления, монтируется намного быстрее, существенно дешевле и легче. Для крепежа труб выпускается широкий ассортимент коробок и компонентов. Вместе с аксессуарами такие изделия образуют систему, куда входит все необходимое для монтажа на объектах. Цель разработки подобных систем — создание надежного комплекса для прокладки электропроводки с гарантированной экономией за счет удешевления материалов и сокращения времени монтажа, ведь, по данным ДКС, затраты на монтажные работы составляют до 70% от стоимости системы.
Гофрированная труба — массовый продукт, широко применяемый при прокладке силовой проводки и слаботочных кабелей. Трубы из ПНД «Октопус» серии 7’’ компании ДКС при сохранении прочностных и изоляционных свойств не содержат дорогостоящих добавок, препятствующих горению, и чаще всего используются при монолитном строительстве.
Для скрытой проводки внутри жилых и рабочих помещений ДКС предлагает систему «Октопус». Это гофротрубы нескольких серий, корпуса встраиваемых щитков и транзитных коробок, а также аксессуары для монтажа. Материал труб различается по цвету: в голубой окрашены полипропиленовые трубы (ПП) с повышенной эластичностью и устойчивостью к воздействию низких и высоких температур (от –40 до +100°C), в серый — негорючие трубы из поливинилхлорида (ПВХ), а в оранжевый и черный — трубы из полиэтилена низкого давления (ПНД). Компания планирует расширить спектр продукции и уже в этом году представить систему двустенных труб для прокладки кабельных трасс в грунте.
Предприятие «Экопласт» ориентируется на профессиональный рынок. Гофрированные трубы из композиций ПВХ и ПНД легкого и тяжелого типов изготавливаются на оборудовании немецких и итальянских производителей. Под системой в компании понимают весь спектр оборудования, необходимого для монтажа кабельной трассы, с дополнительными элементами. Она должна быть универсальна и обеспечивать реализацию всевозможных вариантов кабельной проводки. Системы «Экопласт» включают гофротрубы для прокладки кабелей в различных помещениях и средах, в том числе серию FL (легкая) и FH (тяжелая) с внешним диаметром от 16 до 50 мм, наружные и внутренние распределительные коробки и щитки. Они имеют степень защиты IP55 (по ГОСТ 14254/МЭК 529).
По данным статистики, до 95% пожаров происходит из-за электропроводки, поэтому особое внимание уделяется требованиям безопасности и качеству материалов. Чтобы исключить возгорание кабеля от короткого замыкания в силовой проводке и распространение пламени по трубе и кабелю, применяются самозатухающие композиции ПВХ, однако в соответствии с действующими в России нормативами при скрытой установке каналов в стенах и потолках из горючих материалов монтажники нередко вынуждены использовать металлические трубы.
Тем не менее, как отмечают в ДКС, сфера применения гофротруб очень широка: они могут использоваться при заливке в бетон или укладке под штукатурку, в конструкциях теплых полов, в длинных трассах. Гофротрубы из полиэтилена высокого давления (ПВД) прокладывают под землей и на наружных негорючих поверхностях. В тяжелом варианте (для заливки в бетон) они имеют утолщенную стенку.
Традиционное практичное решение — система гладких пластиковых жестких труб. По данным «Экопласт», фитинги (соединительные элементы) обеспечивают степень защиты от IP54 до IP65. Гладкие жесткие трубы из ПВХ широко применяются для магистральной прокладки кабеля, скрытой и открытой электропроводки в стенах жилых, административных и промышленных помещений. Такие решения тяжелее гофрированных труб на 40%, но их вес можно назвать средним, а значит, удобным для монтажа и транспортировки. Прокладка кабеля в гладкой трубе не представляет особых трудностей, времени затрачивается меньше, а негорючий материал исключает распространение пламени по трубе. Удобство и скорость монтажа системы гладких труб нашли отражение в названиях несущих систем ДКС — «ЭКСПРЕСС 4» (IP40) и «ЭКСПРЕСС 6» (IP65). В число аксессуаров входят корпуса для наружного монтажа электроустановочных изделий ВИВА от ДКС. Система гладких труб серии RIG от «Экопласт» обычно используется для электропроводки в подвалах и гаражах зданий, в промышленных цехах и на открытых площадках.
Иногда система должна быть не только прочной, но и гибкой. В этом случае используются гибкие армированные трубы из модифицированного пластиката. Трубы от «Экопласт», армированные спиралью из ПВХ, применяются для защиты кабелей машин, станков и промышленного оборудования с подвижными частями. Они устойчивы к агрессивным средам и влаге (IP64), выдерживают динамические нагрузки. ДКС выпускает гибкие армированные трубы с прочным спиралевидным каркасом, залитым пластикатом ПВХ для герметизации. В комплексе с гладкой жесткой трубой и аксессуарами для монтажа такие изделия позволяют строить информационные и силовые сети на любых сложных участках.
Гофротрубы из ПВХ, ПНД и полиэтилена высокого давления (ПВД) выпускает также завод «Рувинил». Это жесткие и гладкие трубы 16—63 мм, а также двустенные трубы (ПНД/ПВД), цвет которых указывает на область их применения (прокладка электрокабеля, системы связи и телекоммуникаций или кабельные линии общего назначения). Аналогичную продукцию производит и ряд других предприятий. Поставщики стараются учитывать требования, предъявляемые российскими компаниями к кабеленесущим системам, и стремятся быть в курсе зарубежных технологий, дабы предложить качественную продукцию с улучшенными монтажными свойствами, тем более что на их заводах установлено высокотехнологичное европейское оборудование. Освоив технологии производства пластиковых изделий, они переходят к выпуску более сложных видов продукции — системам пластиковых кабель-каналов.
КАЖДОМУ ПО ПОТРЕБНОСТЯМ
Способы прокладки кабелей в административных и офисных помещениях различны. Они могут располагаться в подвесных потолках, фальшполах или в залитых в бетон желобах и разводиться до рабочих мест с помощью лючков и мини-колонн. Однако с начала 90-х гг. на отечественном рынке наиболее широкое распространение получила открытая проводка информационных, телефонных, оптических, силовых и видеокабелей в настенных коробах, что упрощает обслуживание и реорганизацию кабельной системы.
Короб — замкнутый профиль с плоским основанием и с защелкивающейся крышкой — предназначен для монтажа на поверхность (стены, пола или потолка). Системные изделия имеют в своем составе набор совместимых аксессуаров для прокладки трасс различной сложности, включая настенные каналы (короба), соединительные и ответвительные аксессуары, элементы крепления электроустановочных изделий, телефонные и компьютерные розетки.
Кроме соответствия ГОСТам и ТУ, а также стандартам на проводку электрических силовых и слаботочных кабелей, рынок диктует и другие требования, а именно — широкий спектр аксессуаров, конкурентная цена и эстетичный вид. Дополнение системы коробов полным набором аксессуаров вкупе с продуманностью конструкции помогает быстро и легко монтировать их и прокладывать кабельные сети. Как отмечают в DNA Trading, наряду с традиционными требованиями к дизайну, долговечности самого пластика и его окраски, разнообразию типоразмеров и фитингов для всевозможных вариантов соединения, производители выпускают все более удобные и разнообразные решения. Это фитинги с изменяемым углом поворота короба и автоматическим обеспечением необходимого радиуса изгиба кабеля; короба со специальной конструкцией, чтобы кабель не приходилось фиксировать при монтаже; розетки, установку которых можно осуществить без специальных инструментов и навыков и т. д. Накладные аксессуары с защелками (без винтов) упрощают монтаж, к тому же они дешевле сборных.
Среди других требований — возможность различных соединений с переходом от короба одного сечения к другому для создания разветвленной сети, модульная конструкция в расчете на установку розеток различных типов, наличие креплений, например суппортов быстрой фиксации, простой и удобный доступ к проводке. Кабельные каналы должны быть устойчивыми к агрессивным средам и загрязнению, легко очищаться от пыли, обладать такими свойствами, как высокая гибкость и пластичность, способность выдерживать механические нагрузки, химическая стабильность в цветности, негорючесть.
Короба используют не только для подвода комбинированных сетей к рабочим местам, но и для создания магистральных каналов. Кабели прокладывают с учетом 30—50% запаса по сечению (на случай модернизации и развития кабельной системы), с соблюдением необходимого расстояния между информационной и силовой проводкой.
На российском рынке популярны пластиковые установочные короба. Этот материал отличается хорошими диэлектрическими параметрами, прочностью, химической стойкостью, а главное — ценой. При необходимости некоторые виды коробов можно окрасить. Выпускаются и цветные их модели, но стоят они значительно дороже — производители относят такие решения к категории эксклюзивных. По оценке «Экопласт» около 90% рынка составляют короба белого цвета.
[pagebreak]
Алюминиевые и стальные короба, как считают в ДКС, — специфическая продукция, применяемая там, где к электроустановке предъявляются особые требования. Они тяжелее, в три-четыре раза дороже пластиковых, их труднее монтировать. Поэтому до 90% уже установленных коробов изготовлены из композиций ПВХ с добавлением различных модификаторов. Такие системы не требуют заземления, обладают высокими электроизолирующими свойствами, малым весом и гибкостью. Вместе с тем, системным интеграторам подчас приходится сталкиваться с проектами, где требуется применение алюминиевых коробов. В «Сонет Текнолоджис» отмечают такие их качества и свойства, как пожаробезопасность, прочность и износостойкость. По мнению специалистов «Остек-Ком», спрос на подобные короба, весьма распространенные за рубежом, может вырасти, однако в DNA Trading полагают, что электропроводящие короба вряд ли составят конкуренцию пластиковым по причине дороговизны, сложности монтажа и требований к заземлению.
Сегодня на российском рынке представлено большое число популярных зарубежных марок кабельных каналов — Aesma, Efapel, GGK, Iboco, LAP, Marshall Tufflex, MITA, MK Electric, Quintela, Niedax, Rehau, Thorsman, Panduit и ряда других. Аналогичную продукцию выпускают и российские производители — ДКС, «Экопласт», «Электропласт», «Техпласт», «Рувинил» и др. Несмотря на внешнее сходство, изделия различаются стоимостью, качеством, долговечностью, удобством монтажа и эксплуатации, дизайном, разнообразием аксессуаров и типоразмеров. Экономия времени и затрат во многом зависит от применяемых технологических подходов и конструктивного исполнения продукции.
На отечественном рынке пластиковых коробов по-прежнему наиболее известна продукция французской компании Legrand. Она начала поставки этой продукции в Россию одной из первых, и ее марка стала здесь синонимом кабельного канала. Компания и сегодня предлагает одну из самых полных и удобных систем коробов DLP с широким выбором типоразмеров для монтажа СКС любой сложности, но ее продукция не относится к разряду дешевых решений, поэтому системные интеграторы и компании, специализирующиеся на проектных решениях, часто пытаются найти альтернативные продукты, оптимальные по соотношению цена/качество.
Некоторые поставщики дополняют зарубежную продукцию недорогой отечественной. Как отмечают в «Остек-Ком», изделия Thorsman и MITA способны удовлетворить любые требования, но довольно дороги, поэтому компания расширила продуктовую линейку кабель-каналами из ПВХ от «Экопласт», обладающими надлежащим качеством и привлекательной ценой. «Веритек Дистрибьюшн» и «Сонет Текнолоджис» в качестве поставщика кабельных каналов выбрали португальскую компанию Efapel, продукция которой, по их мнению, в своем ценовом сегменте выгодно отличается от конкурентов качеством пластика, большим выбором аксессуаров и полным соответствием распространенным в России стандартам. При сопоставимой с другими известными марками цене за короб, стоимость аксессуаров Efapel заметно ниже, поэтому и готовое решение оказывается дешевле. Среди наиболее интересных новинок — модульные короба Efapel серии 16 с возможностью установки модулей типа 45х45 непосредственно в короб, что помогает быстро расширять кабельные сети. Подобное удобство представляют и короба Consort от MITA, их жесткая конструкция с двойной боковой стенкой позволяет монтировать электроустановочные изделия прямо в короб, а затем устанавливать крышку нужной длины. Тем самым экономится и время, и деньги.
Серию DLP продолжает совершенствовать и Legrand. Новинка года — кабель-каналы с гибкой крышкой. Такое решение обеспечивает быстроту и удобство монтажа короба, поскольку крышку не нужно резать при обходе углов. Среди других решений, нацеленных на сокращение сроков работ, — заранее нарезанные отверстия в задней стенке, благодаря чему короб не нужно сверлить, и защелкивающиеся в кабель-канал суппорты, на которые крепятся лицевые панели и рамки. Для системы DLP разработаны розетки Mosaic с боковым подключением провода. Это экономит не только время, но и место, отведенное для прокладки кабеля. В системе INLINER от ДКС с этой целью применяют электроустановочные изделия ВИВА, где кабель присоединяется к боковой части розеток, а также «выдвинутые» наружу рамки. В результате высвобождается пространство внутри короба, что дает возможность использовать короб меньшего сечения.
В короба Legrand иногда устанавливают электротехнические изделия других производителей. Такой подход удешевляет решения, практически не ухудшая параметров качества и надежности. В частности, один из крупнейших в России производителей электроустановочных изделий компания WESSEN предлагает для установки в кабельные каналы продукцию серии Wessen45. Она состоит из универсальных модулей типоразмера 45х45 мм, включая информационные (Категории 5е), телефонные, силовые розетки, розетки для защищенного питания, одно- и двухклавишных выключателей и выключателей-переключателей (скоро к ним должны добавиться светорегуляторы). Все изделия серии монтируются в кабель-каналы с помощью суппорта. В системе INSTA от «Экопласт» применяются решения для крепления розеток евростандарта (60 мм) или модульных систем 45х45 от WESSEN, Legrand и SOLERA.
У испанской компании Quintela (входит в концерн Legrand) установочные короба EUROQUINT снабжены скобами для фиксации кабеля. От двух до четырех разделительных перегородок крепятся на рейку DIN на дне короба. Такой подход используют большинство производителей. В компании «Кросс Линк» отличительной особенностью EUROQUINT считают систему соединяемых в ряд суппортов, позволяющую организовать рабочие места на любое число пользователей. Для монтажа слаботочных розеток разных производителей предусмотрены адаптеры и переходники. В частности, как отмечают в компании «Тайле», при использовании переходников MMI и MMI/B со стандарта 47х47 на стандарт Mosaic (45х45) возможна установка в коробах Quintela любых модулей 45х45 для компьютерных и электрических розеток, что помогает подобрать экономичные варианты.
Американская компания Panduit применяет для установки коммуникационных и силовых розеток разных поставщиков лицевые панели, защелкивающиеся на основании короба или устанавливаемые на выносные коробки. Розетки могут монтироваться и непосредственно в канал. Конструкция короба обеспечивает защиту от несанкционированного доступа и возможность добавления, перемещения и замены элементов. Panduit предлагает системы кабель-каналов четырех цветов (белый, кремовый, бежевый и серый).
Специалисты DNA Trading в отношении кабельных каналов Panduit отмечают ограничение минимального радиуса изгиба кабеля, возможность использования для СКС других производителей, наличие лицевых панелей для модулей Keystone. У коробов малого сечения LD крышка соединяется с базой при помощи пластичного шарнира, поэтому при прокладке удерживаемый ею кабель не выпадает из короба, что облегчает монтаж. Panduit расширяет ассортимент принадлежностей и выпускает новые серии коробов. Среди новинок — потолочные короба. Интерес представляет и система коробов для офисных перегородок.
По мере создания все более сложных сетей, где кабеля требуется очень много, появляются короба увеличенного сечения. Если средние имеют сечение от 50х50 до 100х50 мм, то большие — от 50х170 до 50х254 мм. Quintela предлагает сдвоенные установочные каналы NETQUINT. Они изготавливаются как из ПВХ, так и из алюминия и допускают использование установочных механизмов Quintela, Legrand, BTicino и др.
Одна из новинок Efapel — расширяемые модульные короба со специальной конструкцией основания. С помощью соединителей несколько коробов стыкуется параллельно, что можно делать и при первоначальной установке, и в ходе эксплуатации в случае расширения сетей. Однако, по данным «Сонет Текнолоджис», популярность такого решения невелика, поскольку трассировка кабельного канала обычно рассчитывается с запасом.
MK Electric производит серию двухсекционных разноцветных коробов Prestige 2Com, обеспечивающих максимальную вместимость: углы фиксируют радиус изгиба кабеля, а сам короб, подобно системе Quintela, состоит из основы и двух крышек. У MK Electric имеется и серия трехсекционных коробов Prestige трех видов из ПВХ и алюминия. Legrand выпускает двухсекционные (65х195) и трехсекционные короба DLP (65x220) с гибкими крышками и внутренними разделителями по длине короба и в углах. Для удобства монтажа на коробах защелкиваются углы и отводы.
Недавно компания Trale приступила к поставкам новых кабельных каналов MK Electric, в большей степени адаптированных для нужд инсталляторов СКС и отвечающих эстетическим запросам требовательных заказчиков. Новая серия коробов Prestige Compact — усовершенствование серии Prestige Plus. Она включает в себя компактные и технологичные трехсекционные короба, специальные регулируемые углы, а монтаж кабеля упрощается благодаря использованию одинарного и двойного установочных мест без дна с двумя боковыми стенками, что позволяет обойтись без дополнительных отверстий. Специальный фиксатор дает возможность соблюсти радиус изгиба.
Гибкость и пластичность коробов из ПВХ облегчают монтаж на неровных поверхностях стен. Угловые соединения (внешние и внутренние) предусматривают различные варианты — от 60—80 до 120°. Регулируемые углы выпускают не только известные зарубежные поставщики, например Legrand и Thorsman, но и отечественные ДКС, «Экопласт» и «Рувинил». У Thorsman подобное решение предусмотрено и для коробов из алюминия.
Британская компания MITA предлагает двухсекционный короб Cableline Duo с возможностью прокладки заземления, а также парапетные короба серии CONSORT SOLO и AMBASADOR. В трехсекционном коробе SOLO съемные крышки имеются только у центральной секции, а перегородки можно снять, создав одно большое пространство. Короб изготовлен из высокопрочного пластика, углы крепятся на защелках. Декоративные короба MITA большого сечения известны на мировом рынке, однако пока мало востребованы в России из-за их высокой стоимости. В «Остек-Ком» отмечают исключительную белизну кабельных каналов MITA из ПВХ — по чистоте и устойчивости цвета эти изделия превосходят продукты многих известных марок.
MITA производит и специальные короба для оптического кабеля FOCUS с выступами на угловых соединениях для обеспечения большего радиуса изгиба кабеля. Для прокладки и распределения массивного пучка оптических кабелей разработан короб серии YS. Набор переходов, аксессуаров и фитингов обеспечивает быструю инсталляцию благодаря специальной системе соединения (clip together). В DNA Trading полагают, что спрос на короба для прокладки оптики в России будет расти. Не так давно новая серия подобных изделий появилась у Panduit, дополнившей серию FiberDuct системой FiberRunner с более широкими возможностями комплектации.
По данным «Кросс Линк», новое решение в этой области разрабатывает и Quintela.
Кабельные короба TWT из ПВХ предлагает российская компания LANMASTER. Это восемь видов коробов с сечением от 15х10 до 100х100 мм, стыкуемых друг с другом с помощью переходников. Они могут использоваться для разводки кабельных сетей по комнатам и рабочим местам или в качестве магистральных (серии больших сечений) и позиционируются как бюджетное решение с хорошим качеством. В компании считают, что эти типоразмеры практически полностью удовлетворяют требованиям рынка. Изделия других типоразмеров поставляются под заказ. В настоящее время в разработке находятся напольные и плинтусные короба, а также короба размера 100х50, повышенной прочности с возможностью установки нескольких разделительных перегородок. В ассортименте продукции TWT есть настенные розетки для установки модуля Mosaic 45x45, что позволяет использовать любые установочные изделия данного типа. Компанией рассматривается и возможность выпуска цветных коробов серого и коричневых цветов, а также расцветок «под дерево».
С зарубежными поставщиками кабель-каналов конкурируют ведущие российские производители, позиционирующие свои продукты как оптимальные по цене решения европейского качества. Например, в ДКС считают, что ее продукция не уступает решениям Legrand и Marshall Tufflex. В компании анализируют тенденции в электротехнической сфере и стараются соответствовать ожиданиям рынка.
Система INLINER от ДКС специально разработана для применения в составе СКС и позволяет монтировать телекоммуникационные розетки большинства поставщиков. Монтажные коробки устанавливаются простым защелкиванием, а далее без дополнительного крепежа в них размещают — опять-таки путем защелкивания — электроустановочные изделия. Экономия времени достигается и за счет широкого спектра аксессуаров. INLINER предусматривает перфорацию на коробе (его не нужно сверлить) и совместима с другими системами ДКС. По данным производителя, ее эксплуатационные характеристики сохраняются в течение длительного времени, а по цене она дешевле зарубежных аналогов.
В ответ на возрастающие требования рынка ДКС выпустила новую систему пластиковых коробов INLINER Front, разработанную и спроектированную с учетом пожеланий монтажников и российской специфики. Линейки продуктов компании развиваются в направлении улучшения функциональности, сервисного обслуживания, удобства использования и простоты инсталляции (в частности, за счет доработки и предложения дополнительных аксессуаров), снижения себестоимости, в том числе благодаря переводу производства большей части продукции в Россию. Сейчас компания импортирует около 20% изделий (в основном аксессуары).
«Экопласт» разрабатывает свои системные решения совместно с ведущими системными интеграторами и электромонтажными организациями, адаптируя их к условиям инсталляции слаботочной и силовой проводки. Ее серия коробов INSTA производится из российского ПВХ, а устойчивость к выцветанию обеспечивают специальные добавки, поставляемые немецкими партнерами. Кроме того, короба не подвержены горению. В «Экопласт» считают, что созданная модульная система хорошо адаптирована к требованиям российского рынка, где популярны модули 45х45, и отвечает евростандарту с посадочным местом 60 мм. Собирается она подобно конструктору, а монтаж розеток не отнимает много времени. Уже установленные розетки легко дополняются новыми или перемещаются. Система укомплектована различными аксессуарами (также российского производства), а замок позволяет многократно открывать и закрывать короб. Короб допускает размещение до трех внутренних разделителей. К концу этого года завод собирается выпустить два новых типоразмера изделий INSTA для малых офисов и муниципальных учреждений. Все компоненты систем каналов и труб «Экопласт» производятся в России.
[pagebreak]
Для открытой проводки в административных, жилых и промышленных помещениях компания выпускает систему пластиковых магистральных каналов TEC с сечением от 60х40 до 230х60 мм и повышенной ударопрочностью (8 Дж). Конструкция замка крышки выполнена в соответствии с немецким стандартом — в нахлест; фиксацию торцевых сторон обеспечивает кабельная скоба, которая одновременно служит распоркой и позволяет многократно открывать и закрывать короб без деформации крышки. Система TEC разработана для применения главным образом в промышленных помещениях или административных зданиях при прокладке кабелей на большие расстояния.
Системы кабель-каналов компании «Рувинил» белого и коричневого цвета изготавливаются на итальянском оборудовании с полным набором аксессуаров сочетаются с различными сериями розеток, устанавливаемых посредством суппорта. Компания готовится выпустить продукты новых типоразмеров. Производство кабельных каналов двух цветов наладил опытно-экспериментальный завод «Техпласт». Они изготавливается на импортном оборудовании с контролем качества; компоненты исходной смеси, кроме ПВХ, закупаются за рубежом.
МИНИ И МИКРО
Когда электропроводка и кабельная сеть уже смонтированы и нужно организовать еще одно рабочее место, подведя к нему телефонную и информационную сеть, часто используют мини- и микроканалы с откидывающейся или полностью открывающейся крышкой. Они позволяют организовать рабочие места там, куда невозможно подвести большой короб. Широкий выбор типоразмеров и полная гамма аксессуаров помогают подобрать наилучший вариант для конкретного случая. К мини-каналам (мини-коробам) обычно относят короба сечением от 8х10 до 40х60.
Интересное решение — микроканалы на самоклеющейся основе. Такую продукцию, предлагают, в частности, Quintela, MITA, MK Electric, Panduit, Aemsa, Niedax и ряд других компаний. Технологию производства мини-каналов с адгезивной пленкой 3М освоил «Экопласт». ДКС также планирует выпуск мини-каналов 10х10 с возможностью использования самоклеющейся ленты. Они легко и быстро монтируются там, где позволяет поверхность.
Мини-каналы отличаются более широким ассортиментом и могут снабжаться встроенными перегородками, однако название зависит от терминологии производителя. MITA предлагает еще и так называемые короба миди размером 50х30 и 50х50 мм. Кроме мини-коробов для телекоммуникаций и охранных сигнализаций стандартного и суперпрочного типа эта компания выпускает мини-канал-трансформер. Он поставляется в рулоне в виде плоской пластиковой ленты. Она легко прибивается или привинчивается к стене, а затем края отгибаются вверх и закрываются крышкой, образуя мини-короб.
Для компактной укладки кабельной проводки в малых сетях компания AESP предлагает в составе системы SignaMax Trunking System серию компактных односекционных коробов Mini, дополняющих полноразмерные серии Office и Solo. Розетки устанавливаются в наружные подрозетники. MK Electric выпускает мини-каналы серии Ega Mini белого и черного цветов. Электроустановочные изделия монтируются с помощью настенных подрозетников, стыкуемых с мини-коробом через адаптеры. Короба серии Ega Communication разработаны для прокладки кабелей малого диаметра (обычно для телефонии и сигнализации). Legrand выпускает мини-каналы (мини-плинтусы) трех цветов (серый, белый, коричневый); мини-плинтусы DLPlus можно монтировать на уровне пола, по стене или под потолком. Благодаря специальному держателю-мембране провод не выпадает из канала. Panduit производит три серии мини-каналов (LD, LDP и LDS) для слаботочной и силовой проводки, сопрягаемых с коробами T45, T70, TG70, Twin-70 и новой серией потолочных коробов.
Трансформируемые углы для мини-каналов Quintela дают возможность по-разному использовать один и тот же элемент. Например, L-образное соединение заменяет четыре детали, что упрощает подбор аксессуаров: путем нескольких простых манипуляций деталь собирается как элемент конструктора. По данным Quintela, такой подход сокращает время монтажа и стоимость проекта, а также позволяет решить многие проблемы несоответствия первоначального проекта с реальными задачами монтажа. Как и у большинства поставщиков, для стыковки с другими типами коробов имеются переходники и адаптеры. Возможность соединения всех серий коробов и мини-каналов INLINER предусматривает и ДКС. Система INLINER включает девять типоразмеров мини-каналов. У «Экопласт» микро- и мини-каналы для слаботочных сетей имеют отдельную или открывающуюся крышку и основу с отверстиями для крепления к стене. Недорогую серию мини-каналов выпускает предприятие «Электропласт». Это бюджетное решение для не очень сложной сети. Белые и коричневые мини-короба предлагает и «Рувинил».
КОРОБ НЕТРАДИЦИОННОЙ ОРИЕНТАЦИИ
Многие производители кабельных коробов выпускают специальные серии для жилых помещений, частных домов, школ и т. д. Они отличаются высоким качеством изготовления и привлекательным дизайном, отвечающим требованиям интерьера. Такие специализированные короба (плинтусные, карнизные, для установки на рабочий стол и проч.) нередко имеют нетрадиционную форму. Как отмечают в «Сонет Текнолоджис», «нетрадиционные» решения пользуются ограниченным спросом, но имеют свой четко выделенный сегмент. Это, например, крупные банки и офисы компаний, специализирующихся на дорогостоящих товарах и услугах, где престиж и дизайн интерьера играют большую роль.
У компании Efapel данная линейка представлена кабельным плинтусом, коробами для внутренней установки розеток, мини-каналами и напольными коробами. Разнообразные аксессуары позволяют устанавливать любые типы механизмов (розетки, выключатели и т. п. в терминологии компании). MK Electric производит короба-наличники и плинтусные короба Lincoln, а также оригинальные короба треугольного сечения Pinnacle, монтируемые в углах помещений и допускающие окрашивание. Для монтажа в качестве карниза (в стыке между стеной и потолком) MK Electric разработала серию коробов Ega Carnice, совместимых с Ega Mini и Lincoln. Похожая продукция треугольного сечения (DLP 3D 80x80) имеется и у Legrand.
Иногда заказчики предпочитают традиционному пластику короба из стали и алюминия. Они обеспечивают дополнительное экранирование, обладают высокой пожаростойкостью и могут окрашиваться. Например, Niedax выпускает такие офисные короба из стали с конца 70-х. Thorsman дополняет собственную систему пластиковых коробов металлическими (стальными и алюминиевыми) и даже деревянными. Marshall Tufflex, наряду с обширным спектром настенных, плинтусных и потолочных коробов из ПВХ, предлагает деревянные системы для организации кабельных трасс. Так, короб Real Wood Trunking способен удовлетворить самый взыскательный вкус. Он поставляется в прямоугольном (панельном) и плинтусном вариантах с совместимыми электрическими компонентами и изготавливается из дуба, бука, вишни, клена или ореха.
Требования к дизайну изделий заставляют производителей расширять спектр продукции за счет цветных изделий или коробов под окраску. Иногда кабельные каналы, короба или плинтусы выпускают в ограниченной цветовой гамме (двух-трех цветов), а под заказ производят окрашенные. По такому пути пошла компания Quintela.
При всем удобстве открытая проводка в настенных коробах не способствует уюту, поэтому в жилых помещениях нередко используются кабельные плинтусы. Они достаточно функциональны и позволяют организовать рабочие места любой сложности. Кабельный плинтус Quintela, включая цветную серию RODAQUINT для жилых помещений, снабжен перегородками, поставляется с аксессуарами и установочными коробками (такими же, как для мини-каналов). Серию кабельных плинтусов CARLTON выпускает MITA, а ее короба AMBASSADOR производятся в цветном варианте. Legrand предлагает декоративные плинтусы округлого сечения в четырех вариантах цветовой отделки. Трехсекционный короб с выносными розетками от Marshall Tufflex хорошо смотрится в городских квартирах и пригоден для прокладки телекоммуникаций и электрики внутри помещений, а короба Sovereign Plus Skirting Trunking этой же компании устанавливаются вместо плинтуса.
ДКС разработала для открытой проводки в административных и жилых зданиях систему EVOLUTION/ART, исполнение которой отличается особой эстетичностью. Она состоит из пластиковых каналов (настенных, напольных и плинтусных), соединительных и ответвительных аксессуаров, элементов крепления электроустановочных изделий, телефонных и компьютерных розеток и предлагается в трех цветовых решениях. Новую линию плинтусной системы с изменяемыми углами и модульными коробками для офисных помещений и квартир внедряет «Экопласт».
По данным «Остек-Ком», популярность приобретают напольные лючки и сервисные стойки, обладающие удобной функциональностью и привлекательным видом. Лючки и мини-колонны системы FrontLine предлагает, в частности, Thorsman, эту компанию на российском рынке представляет концерн Schneider Electric. Мини-колонны часто используются для организации рабочих мест в открытых интерьерах и больших
Открою вам один секрет: создать сайт, который состоит из страниц и которые будут высоко оценены поисковыми машинами и получат хороший вес и рейтинг, можно совершенно без использования последних технологий обмана поисковиков.
Как известно, борьба за первую десятку результатов выдачи поисковой системы - сфера жесточайшей конкуренции, особенно по высокочастотным запросам.
Поисковые машины ищут в интернете информацию (контент) и хороший рейтинг вы получите только в том случае, если сможете создать такой контент, который будет качественным и интересным не только для поисковика, но и для посетителя вашего сайта.
Самый простой способ получения поискового трафика - это написание небольших статей, обзоров, новостей по тематике вашего сайта. В данном случае лучше всего будет ежедневно обновлять свой сайт, добавляя новые разделы. Естественно, не нужно выходить за рамки тематики вашего сайта.
Пусть даже на наполнение сайта контентом и получение ощутимого трафика уйдут месяцы или даже годы, но это стоит того. Вложенный труд не пропадет зря, ведь результаты точно соответствуют затраченным на это усилиям.
А когда у вас будет сайт с несколькими сотнями или тысячами статей, то уже можно заняться его раскруткой - публикация статей, регистрация в каталогах (обязательно белых и тематических) и прочее.
Еще отмечу, что лучше всего писать статьи в рамках от 300 до 500 слов. Больше не нужно, это как раз размер стандартной статьи. Да и посетитель не будет уставать, читая огромную статью. Статьи же меньшего размера могут практически не нести информации и быть бесполезными для посетителя.
Также не забывайте о плотности ключевых слов, по которым вы хотите, чтобы ваш сайт находили в поисковой системе. Это очень важно, ведь поисковый робот внимательно просматривает страничку и анализирует, какие слова в ней встречаются и как часто.
Оптимальное количество ключевых слов на статью - 7-8. Этого вполне достаточно, чтобы поисковая система посчитала ее релевантной.
Совсем другое дело, что пробиться в топ10 только с одними ключевыми словами в статье не получиться. Разве что по низкочастотным запросам. Но название говорит само за себя - посетителей тоже будет мизерное количество. Для получения трафика по высокочастотника и среднечастотникам нужны ссылки, а еще лучше с близких по тематике с вашим сайтом ресурсов. Это уже проверено многими оптимизаторами.
Как говорил Мастер Вадим Ласто (прочитайте его блог - много нового узнаете - lasto.com/blog), без пиаристых морд никуда. Уже ему-то можно верить. Кстати, сейчас отправлю рассылку и загляну на его блог - там частенько появляются новые посты. Его блог я, кстати, нашел, когда искал CMS для своего сайта - Вадим не только оптимизатор, но и программист :)
Данная ситуация отлично подходит узкоспециализированным сайтам (разведение розовых котов с черными ушами и белым хвостом, например) или же нужно брать количеством этих низкочастотных статей.
Все проверено на личном сайте и много раз об этом читалось на различным SE форумах. Читайте форумы, спрашивайте, анализируйте! Удачи вам!
Многие начинающие создатели своих собственных страничек и маленьких сайтов часто заблуждаются, думая, что как только они создадут и разместят свои творения на веб-сервере, к ним тут же ринутся волны посетителей, желающих прочитать об авторе и что-то скачать с сайта. Это далеко не так.
Обычные обитатели Интернета с большим интересом заглянут не к вам, а на какой-нибудь информационный портал. И действительно, нам куда больше хочется узнать что-либо о наших кумирах, нежели о каких-то обычных людях.
Правда, сейчас многие люди приобретают известность именно в виртуальном мире. Например, популярные авторы различных электронных изданий или рассылок, владельцы широко известных сайтов различной тематики. Многие компьютерные авторитеты приобрели значимость в сетевом мире благодаря своим публикациям на сайтах или активной переписке в различных форумах. Вы, конечно же, можете повторить такой путь, но, увы, для этого надо много работать и многому научиться, и здесь я вам никак не смогу помочь своим советом, так как дело это требует оригинального творческого подхода и не терпит повторений.
В процессе разработки сайта важно понимать, что вы создаёте своё собственное произведение. Не ровняйтесь ни на кого. Можно лишь почерпнуть идеи относительно дизайна, концепции, но содержание ваших страниц должно быть плодом вашего собственного умственного труда. Вы не должны публиковать на своём сайте чужие мысли, пусть они находятся у других. Вам нужно писать всё самостоятельно, ведь это важно не только для посетителей, но и для вас, так как именно практикуясь передавать другим информацию от себя, вы приобретаете столь ценный опыт. И не важно насколько хорошо у вас будет получаться, со временем вы научитесь и будете работать более профессионально. Для начала ознакомьтесь со схожими по тематике работами других людей. Вы можете многое для себя открыть. Узнав что-либо новое, не спешите всё это выдать посетителям, вначале сами всё осмыслите и разберитесь в новой информации, ведь вам могут задать вопросы, на которые будет стыдно не ответить.
Если вам вдруг понравятся некоторые материалы, и вы захотите выложить это добро на своём сайте, то заранее следует спросить об этом автора. Это поможет вам избежать в дальнейшем многих проблем. Например, у меня был такой случай, когда один ушлый паренёк из родного города Владивостока просто-напросто украл мою статью. Дело-то нехитрое. Просто убрал из работы все мои ссылки и сам назвался автором. Таким образом он обманом попытался наполнить свой сайт чужой информацией за что и был наказан. Не скажу, что я сделал, но статья быстро исчезла с сайта злоумышленника, а сам он был явно напуган. Не допускайте этого. Всегда и везде старайтесь соблюдать авторские права, тем более что, спросив у человека разрешение на использование его материалов, вы тем самым можете приобрести в его лице хорошего друга и единомышленника.
Важную роль перед раскруткой сайта играет степень его информационной ценности. Вся информация должна быть специальным образом распределена по тематическим подразделам. Не следует сразу на главной странице давать ссылки на все ваши странички. Лучше распределить всё содержание так, чтобы вашим посетителям было удобно смотреть интересующие его страницы без существенных затрат времени на поиск нужной ему информации. Не создавайте пустых разделов. Если вам нечего пока выложить, лучше не запутывайте читателей. Всё это плохо скажется на отношении к вам. Характерным признаком непрофессионализма является наличие страничек с коронной надписью "Under Construction". А рядом ещё могут поставить какую-нибудь анимированную картинку, взятую из заурядной графической библиотеки. Зачем создавать такие странички? Сайт должен содержать полезную информацию, чем полезнее она будет, тем легче будет впоследствии перейти к его раскрутке и дальнейшему расширению.
На стадии создания сайта также полезно знать, что постепенное наполнение информацией намного эффективнее нерегулярных обновлений в плане удержания аудитории. Постоянное добавление новых полезных и бесполезных :) материалов очень полезно. Особенно полезно это в начальной стадии развития сайта. Допустим, к вам на сайт пришёл посетитель. Куда он двинется вначале? Правильно! Смотреть ваши новости. Именно на стадии ознакомления с новостями сайта посетитель обычно делает вывод о том, насколько актуальна информация, предложенная ему на данном сервере.
Увидев, что вчера на вашем сайте появились свежие странички или другие интересные штучки, посетитель первым делом направится туда чтобы оценить вашу работу. Если вы достаточно часто обновляете свой веб-сайт, то могу вам с уверенностью сказать, что у вас будет формироваться постоянное ядро аудитории, состоящее из повторных посетителей. Люди будут регулярно посещать ваш сайт просто чтобы проверить не появилось ли на нём что-то новенькое. Такие посетители для вас самые ценные, берегите их. При обновлении сайта обязательно давайте знать об этом вашим читателям.
Продвижение сайта в интернете - дело нелёгкое. Всю работу по раскрутке можно разделить на несколько этапов. Разумеется, все эти этапы взаимосвязаны и могут укладываться в одни и те же временные рамки. Я бы выделил три основных этапа: первоначальное привлечение посетителей, удержание аудитории и дальнейшее продвижение.
Самый важный этап в развитии любого сайта заключается в первоначальном привлечении на него посетителей. На данном этапе вы заявляете на весь мир, что ваш сайт появился и содержит массу полезной информации. Вся работа заключается в регистрации сайта в различных поисковых системах и каталогах. Трудно заранее предсказать, откуда приток будущих посетителей будет больше. Тут всё зависит от тематики сайта и от организации того или иного каталога или поисковой машины. На своём примере скажу, что основная масса новых людей приходит на мой сайт с Yandex (http://yandex.ru/) и с Google (http://google.com/).
Данный факт распространяется не только на этот сайт , так как общий объём страниц огромен и весьма разнообразен по своему содержанию. Поисковые машины с лёгкостью выводят такие сайты на первых страницах результатов поиска. Но, увы, такая перспектива светит только сайтам, где содержится действительно полезная информация. Но что делать, например, если ваш сайт предлагает посетителям галерею ваших графических работ? Ну не фиксируют современные поисковики графические файлы. Обидно. В таких случаях советую под каждым изображением давать краткое описание. Это позволит посетителям находить ваши работы даже при помощи поисковых машин.
Другое дело - каталоги. Тут можно разгуляться вволю. Каталоги отличаются от поисковых машин тем, что информация о ресурсах вводится вручную в отличие от автоматических роботов поисковых машин. Поисковые машины легко обмануть, людей трудно. Обычно каталоги ресурсов обслуживаются людьми. Регистрируясь, вы заполняете предложенные поля, где соблюдая правила даёте информацию о своём сайте (Название, описание, ключевые слова для поиска, адрес, имя автора и так далее). Далее за работу берутся модераторы каталога.
Модератор - человек занимающийся регистрацией сайтов, следящий за актуальностью информации и работоспособностью ссылок. Также модераторы осуществляют роль цензоров. Именно они решают быть или не быть вашему сайту в каталоге. Поэтому никогда не передавайте им ложную информацию! Кстати, многие каталоги имеют свои собственные требования к регистрируемым ресурсам. Некоторые не берут сайты, располагающиеся на бесплатных серверах или содержащие информацию эротического характера. Но таких строгих каталогов немного, и вы с лёгкостью сможете зарегистрироваться в огромном количестве их менее требовательных коллег. Это правда не относится к каталогу сайтов РМП "ProtoPlex", куда попасть вообще сложно.
Прописаться в огромном количестве каталогов и поисковых машин нам помогают специальные программы и онлайновые службы. Есть такие сайты, которые абсолютно бесплатно предоставят вам возможность быстрой регистрации. Обычно всё происходит довольно быстро, на это может уйти менее часа при хорошей производительности. Все инструкции по использованию таких служб можно найти непосредственно на их серверах. Различные компьютерные программы-регистраторы также удобны при регистрации. Принцип их действия весьма прост и незатейлив. В основном всё сводится к копированию данных из буфера обмена в поля форм веб-сайтов. Примером такой программы может стать Allsubmitter.
Привлекая посетителей на сайт, можно воспользоваться услугами многочисленных виртуальных досок объявлений или попросту форумов. При этом информацию о вашем ресурсе важно подать грамотно, иначе результат будет обратным. Не публикуйте ваше объявление многократно, это может вызвать раздражение со стороны других обитателей сети. Засорение форумов, чатов, гостевых книг однообразной информацией называется на сетевом жаргоне "флудом". Не занимайтесь этим. Даже заманив посетителей таким образом, вы не добьетесь от них внимания и тем более заинтересованности в вашей информации. Более правильным подходом будет размещение объявлений в нескольких форумах, нежели размещение нескольких одинаковых объявлений в одном.
СПАМ - метод привлечения аудитории за счёт массовой непрошеной рассылки почтовых сообщений рекламного характера. Я категорически против этого. Это лёгкий путь. Эффективность данного метода резко падает, несмотря на всю изобретательность спаммеров. Очень грубый метод, который может привести к плачевным результатам. Можно лишиться почтового ящика, нажить врагов и даже выслушать грубые слова от своего провайдера. В последнем случае вы можете лишиться и провайдера.
Все вышеперечисленные методы увеличения аудитории являются самыми простыми и к тому же бесплатными. На халяву обычно слетается очень много желающих, вы можете утонуть в их потоке. Поэтому можно использовать более продвинутые способы. Я не буду говорить о платном размещении вашей рекламы на других сайтах. Это довольно дорогое и абсолютно ненужное удовольствие для начинающих. Стоит рассказать о методах, использованных в своё время мной.
Размещение своих авторских статей на других сайтах предусматривает размещение ссылки на сайт при указании авторских прав. Вы можете этим воспользоваться и предлагать свои материалы различным информационным сайтам, электронным издательствам и так далее. На практике можно увидеть хороший приток посетителей с таких ссылок. И это не требует от вас каких-либо действий в дальнейшем. Размещая свои собственные материалы у других, вы тем самым приобретаете известность, на вас легко могут выйти другие и попросить разрешение на публикацию ваших материалов. Это в свою очередь ускорит процесс раскрутки сайта.
Также можно открыть рассылку новостей вашего сайта посредством электронной почты. При этом приток посетителей можно получить от самих служб рассылок. Наиболее популярны сейчас Служба рассылок Городского Кота (http://subscribe.ru/), Контент (http://content.ru/) и MailList (http://maillist.ru/). Первая - самая старая и самая вредная. Новичкам тут трудно. Причин этого множество. Начиная с того, что информацию о вашей рассылке будет трудно найти в общем каталоге для новичков, и заканчивая требованиями администрации к качеству и содержанию рассылок.
Самым оптимальным вариантом я считаю Контент.Ру. Их политика весьма лояльна к новичкам и непрофессионалам. Служба очень удобна и, что самое главное, очень грамотно относится к привлечению подписчиков к новым рассылкам. Всё это и многое другое позволяют новичкам иметь более трёхсот подписчиков уже в первые дни существования рассылки. Но одно дело создать рассылку, другое дело её вести. Я не говорю, что это достаточно сложно и к чему-то вас обязывает. Я вам это утверждаю.
Для программистов существуют специальные каталоги программного обеспечения. Размещая на таких сайтах ссылки на свои программы, вы приобретаете не только аудиторию, но и фанатов. Различные сайты, посвящённые компьютерной графике и анимации имеют обширные галереи работ со ссылками на авторов. Поэты могут публиковать свои произведения на литературных сайтах и так далее.
Таким образом, существует очень много разных методов первоначальной раскрутки сайтов. Секрет успеха заключается в правильном использовании этих методов и, конечно-же, в постоянном совершенствовании вашего веб-узла. Ведь вы же хотите, чтобы ваш сайт был самым интересным и популярным?
В стеке протоколов TCP/IP протокол TCP (Transmission Control Protocol) работает так же, как и протокол UDP, на транспортном уровне. Он обеспечивает надежную транспортировку данных между прикладными процессами путем установления логического соединения.
Сегменты TCP
Единицей данных протокола TCP является сегмент. Информация, поступающая к протоколу TCP в рамках логического соединения от протоколов более высокого уровня, рассматривается протоколом TCP как неструктурированный поток байт. Поступающие данные буферизуются средствами TCP. Для передачи на сетевой уровень из буфера "вырезается" некоторая непрерывная часть данных, называемая сегментом.
В протоколе TCP предусмотрен случай, когда приложение обращается с запросом о срочной передаче данных (бит PSH в запросе установлен в 1). В этом случае протокол TCP, не ожидая заполнения буфера до уровня размера сегмента, немедленно передает указанные данные в сеть. О таких данных говорят, что они передаются вне потока - out of band.
Не все сегменты, посланные через соединение, будут одного и того же размера, однако оба участника соединения должны договориться о максимальном размере сегмента, который они будут использовать. Этот размер выбирается таким образом, чтобы при упаковке сегмента в IP-пакет он помещался туда целиком, то есть максимальный размер сегмента не должен превосходить максимального размера поля данных IP-пакета. В противном случае пришлось бы выполнять фрагментацию, то есть делить сегмент на несколько частей, для того, чтобы он вместился в IP-пакет.
Аналогичные проблемы решаются и на сетевом уровне. Для того, чтобы избежать фрагментации, должен быть выбран соответствующий максимальный размер IP-пакета. Однако при этом должны быть приняты во внимание максимальные размеры поля данных кадров (MTU) всех протоколов канального уровня, используемых в сети. Максимальный размер сегмента не должен превышать минимальное значение на множестве всех MTU составной сети.
Порты и установление TCP-соединений
В протоколе TCP также, как и в UDP, для связи с прикладными процессами используются порты. Номера портам присваиваются аналогичным образом: имеются стандартные, зарезервированные номера (например, номер 21 закреплен за сервисом FTP, 23 - за telnet), а менее известные приложения пользуются произвольно выбранными локальными номерами.
Однако в протоколе TCP порты используются несколько иным способом. Для организации надежной передачи данных предусматривается установление логического соединения между двумя прикладными процессами. В рамках соединения осуществляется обязательное подтверждение правильности приема для всех переданных сообщений, и при необходимости выполняется повторная передача. Соединение в TCP позволяет вести передачу данных одновременно в обе стороны, то есть полнодуплексную передачу.
Соединение в протоколе TCP идентифицируется парой полных адресов обоих взаимодействующих процессов (оконечных точек). Адрес каждой из оконечных точек включает IP-адрес (номер сети и номер компьютера) и номер порта. Одна оконечная точка может участвовать в нескольких соединениях.
Установление соединения выполняется в следующей последовательности:
* При установлении соединения одна из сторон является инициатором. Она посылает запрос к протоколу TCP на открытие порта для передачи (active open).
* После открытия порта протокол TCP на стороне процесса-инициатора посылает запрос процессу, с которым требуется установить соединение.
* Протокол TCP на приемной стороне открывает порт для приема данных (passive open) и возвращает квитанцию, подтверждающую прием запроса.
* Для того чтобы передача могла вестись в обе стороны, протокол на приемной стороне также открывает порт для передачи (active port) и также передает запрос к противоположной стороне.
* Сторона-инициатор открывает порт для приема и возвращает квитанцию. Соединение считается установленным. Далее происходит обмен данными в рамках данного соединения.
Концепция квитирования
В рамках соединения правильность передачи каждого сегмента должна подтверждаться квитанцией получателя. Квитирование - это один из традиционных методов обеспечения надежной связи. Идея квитирования состоит в следующем.
Для того, чтобы можно было организовать повторную передачу искаженных данных отправитель нумерует отправляемые единицы передаваемых данных (далее для простоты называемые кадрами). Для каждого кадра отправитель ожидает от приемника так называемую положительную квитанцию - служебное сообщение, извещающее о том, что исходный кадр был получен и данные в нем оказались корректными. Время этого ожидания ограничено - при отправке каждого кадра передатчик запускает таймер, и если по его истечению положительная квитанция на получена, то кадр считается утерянным. В некоторых протоколах приемник, в случае получения кадра с искаженными данными должен отправить отрицательную квитанцию - явное указание того, что данный кадр нужно передать повторно.
Существуют два подхода к организации процесса обмена положительными и отрицательными квитанциями: с простоями и с организацией "окна".
Метод с простоями требует, чтобы источник, пославший кадр, ожидал получения квитанции (положительной или отрицательной) от приемника и только после этого посылал следующий кадр (или повторял искаженный). В этом случае производительность обмена данными существенно снижается - хотя передатчик и мог бы послать следующий кадр сразу же после отправки предыдущего, он обязан ждать прихода квитанции. Снижение производительности для этого метода коррекции особенно заметно на низкоскоростных каналах связи, то есть в территориальных сетях.
Во втором методе для повышения коэффициента использования линии источнику разрешается передать некоторое количество кадров в непрерывном режиме, то есть в максимально возможном для источника темпе, без получения на эти кадры ответных квитанций. Количество кадров, которые разрешается передавать таким образом, называется размером окна. Обычно кадры при обмене нумеруются циклически, от 1 до W. При отправке кадра с номером 1 источнику разрешается передать еще W-1 кадров до получения квитанции на кадр 1. Если же за это время квитанция на кадр 1 так и не пришла, то процесс передачи приостанавливается, и по истечению некоторого тайм-аута кадр 1 считается утерянным (или квитанция на него утеряна) и он передается снова.
Если же поток квитанций поступает более-менее регулярно, в пределах допуска в W кадров, то скорость обмена достигает максимально возможной величины для данного канала и принятого протокола.
Этот алгоритм называют алгоритмом скользящего окна. Действительно, при каждом получении квитанции окно перемещается (скользит), захватывая новые данные, которые разрешается передавать без подтверждения.
[pagebreak]
Реализация скользящего окна в протоколе TCP
В протоколе TCP реализована разновидность алгоритма квитирования с использованием окна. Особенность этого алгоритма состоит в том, что, хотя единицей передаваемых данных является сегмент, окно определено на множестве нумерованных байт неструктурированного потока данных, поступающих с верхнего уровня и буферизуемых протоколом TCP.
Квитанция посылается только в случае правильного приема данных, отрицательные квитанции не посылаются. Таким образом, отсутствие квитанции означает либо прием искаженного сегмента, либо потерю сегмента, либо потерю квитанции.
В качестве квитанции получатель сегмента отсылает ответное сообщение (сегмент), в которое помещает число, на единицу превышающее максимальный номер байта в полученном сегменте. Если размер окна равен W, а последняя квитанция содержала значение N, то отправитель может посылать новые сегменты до тех пор, пока в очередной сегмент не попадет байт с номером N+W. Этот сегмент выходит за рамки окна, и передачу в таком случае необходимо приостановить до прихода следующей квитанции.
Выбор тайм-аута
Выбор времени ожидания (тайм-аута) очередной квитанции является важной задачей, результат решения которой влияет на производительность протокола TCP.
Тайм-аут не должен быть слишком коротким, чтобы по возможности исключить избыточные повторные передачи, которые снижают полезную пропускную способность системы. Но он не должен быть и слишком большим, чтобы избежать длительных простоев, связанных с ожиданием несуществующей или "заблудившейся" квитанции.
При выборе величины тайм-аута должны учитываться скорость и надежность физических линий связи, их протяженность и многие другие подобные факторы. В протоколе TCP тайм-аут определяется с помощью достаточно сложного адаптивного алгоритма, идея которого состоит в следующем. При каждой передаче засекается время от момента отправки сегмента до прихода квитанции о его приеме (время оборота).
Получаемые значения времен оборота усредняются с весовыми коэффициентами, возрастающими от предыдущего замера к последующему. Это делается с тем, чтобы усилить влияние последних замеров. В качестве тайм-аута выбирается среднее время оборота, умноженное на некоторый коэффициент. Практика показывает, что значение этого коэффициента должно превышать 2. В сетях с большим разбросом времени оборота при выборе тайм-аута учитывается и дисперсия этой величины.
Реакция на перегрузку сети
Варьируя величину окна, можно повлиять на загрузку сети. Чем больше окно, тем большую порцию неподтвержденных данных можно послать в сеть. Если сеть не справляется с нагрузкой, то возникают очереди в промежуточных узлах-маршрутизаторах и в конечных узлах-компьютерах.
При переполнении приемного буфера конечного узла "перегруженный" протокол TCP, отправляя квитанцию, помещает в нее новый, уменьшенный размер окна. Если он совсем отказывается от приема, то в квитанции указывается окно нулевого размера. Однако даже после этого приложение может послать сообщение на отказавшийся от приема порт. Для этого, сообщение должно сопровождаться пометкой "срочно" (бит URG в запросе установлен в 1). В такой ситуации порт обязан принять сегмент, даже если для этого придется вытеснить из буфера уже находящиеся там данные.
После приема квитанции с нулевым значением окна протокол-отправитель время от времени делает контрольные попытки продолжить обмен данными. Если протокол-приемник уже готов принимать информацию, то в ответ на контрольный запрос он посылает квитанцию с указанием ненулевого размера окна.
Другим проявлением перегрузки сети является переполнение буферов в маршрутизаторах. В таких случаях они могут централизовано изменить размер окна, посылая управляющие сообщения некоторым конечным узлам, что позволяет им дифференцировано управлять интенсивностью потока данных в разных частях сети.
Формат сообщений TCP
Сообщения протокола TCP называются сегментами и состоят из заголовка и блока данных. Заголовок сегмента имеет следующие поля:
* Порт источника (SOURS PORT) занимает 2 байта, идентифицирует процесс-отправитель;
* Порт назначения (DESTINATION PORT) занимает 2 байта, идентифицирует процесс-получатель;
* Последовательный номер (SEQUENCE NUMBER) занимает 4 байта, указывает номер байта, который определяет смещение сегмента относительно потока отправляемых данных;
* Подтвержденный номер (ACKNOWLEDGEMENT NUMBER) занимает 4 байта, содержит максимальный номер байта в полученном сегменте, увеличенный на единицу; именно это значение используется в качестве квитанции;
* Длина заголовка (HLEN) занимает 4 бита, указывает длину заголовка сегмента TCP, измеренную в 32-битовых словах. Длина заголовка не фиксирована и может изменяться в зависимости от значений, устанавливаемых в поле Опции;
* Резерв (RESERVED) занимает 6 битов, поле зарезервировано для последующего использования;
* Кодовые биты (CODE BITS) занимают 6 битов, содержат служебную информацию о типе данного сегмента, задаваемую установкой в единицу соответствующих бит этого поля:
* URG - срочное сообщение;
* ACK - квитанция на принятый сегмент;
* PSH - запрос на отправку сообщения без ожидания заполнения буфера;
* RST - запрос на восстановление соединения;
* SYN - сообщение используемое для синхронизации счетчиков переданных данных при установлении соединения;
* FIN - признак достижения передающей стороной последнего байта в потоке передаваемых данных.
* Окно (WINDOW) занимает 2 байта, содержит объявляемое значение размера окна в байтах;
* Контрольная сумма (CHECKSUM) занимает 2 байта, рассчитывается по сегменту;
* Указатель срочности (URGENT POINTER) занимает 2 байта, используется совместно с кодовым битом URG, указывает на конец данных, которые необходимо срочно принять, несмотря на переполнение буфера;
* Опции (OPTIONS) - это поле имеет переменную длину и может вообще отсутствовать, максимальная величина поля 3 байта; используется для решения вспомогательных задач, например, при выборе максимального размера сегмента;
* Заполнитель (PADDING) может иметь переменную длину, представляет собой фиктивное поле, используемое для доведения размера заголовка до целого числа 32-битовых слов.
Один из примеров создания текстового компонента с трехмерной декоративной контурной рамкой (для создания компонента потребовалось около получаса. Он демонстрирует только принцип получения рамки. Я не стал колдовать над свойствами типа ParentFont..., т.к. это заняло бы еще немало времени и места).