Image Styler - замечательная программа для создания графики для Web. Особенно эта программа нравиться новичкам (тем, кто никогда не имел дело с графическими редакторами, или толком в них не разбираются).
Графика без труда (Image Styler).
Image Styler - замечательная программа для создания графики для Web. Особенно эта программа нравиться новичкам (тем, кто никогда не имел дело с графическими редакторами, или толком в них не разбираются).
Открываем Image Styler. По умолчанию программа уже создала новый документ. Теперь надо предать этому документу необходимый размер. Для этого надо выбрать пункты Edit - Canvas Size - и появится табличка, в которой можно задать нужные размеры листа. Создадим лист побольше ( width - 600, а height - 500). Потом можно сохранить свое меню как угодно, одной картинкой или несколькими, поэтому не обязательно делать много документов.
Что можно нарисовать на первых страницах? – кнопки и несложный логотип.
Как создавать кнопки.
Вызываем меню с основными функциями, выбрав пункт в верхнем меню Window - Tools.
В появившемся меню видны изображения: квадрата, квадрата с закругленными краями, круга и многоугольника - берем одну из этих опций (пусть будет квадрат) и рисуем квадрат нужных размеров.
Чтобы квадрат, который рисуем на белом фоне, был виден, надо задать ему цвет. Для этого выбираем пункт меню (вверху) Window - Color - появится таблица с цветами. И в этой таблице ищем нужный цвет квадрата.
Можно задать цвет сразу нескольких объектов, для этого надо выделить их все. Если надо создать кнопку определенных размеров, то тогда надо выбрать пункт меню Window - Tranform - здесь можно задать положение квадрата относительно листа (X, Y), размеры квадрата в пикселях (W, H), вращение (rotation) в градусах и наклон (skew) относительно горизонтали или вертикали. Для первого раза понадобятся параметры высоты и ширины (width и height). Допустим, что кнопку надо сделать на основе многоугольника. Рисуем - получаем ромб. Как сделать, чтобы углов было больше (пятиугольник, шестиугольник и т.д.)? Или меньше (треугольник)? Идем в меню: Window - Properties. Для работы с объектом (ромбом), надо его выделить. Теперь можно сделать его пятиугольником (шести... и т.д.) - sides - этот параметр задает количество сторон многоугольника (максимум 10). Можно сделать его рамкой-контуром (outlinе) и снова наполненным (fill). Если сделать многоугольник контуром, то нужно задать толщину контура (width) в пикселях.
Для разных объектов properties (свойства) разные. Чтобы понять работу со свойствами надо с ними поэкспериментировать.
Вернемся к квадрату. Нарисовали, раскрасили, задали нужный размер. Теперь как его сделать кнопкой? Очень просто - Window - Styles. Появится окошко со стилями. Выделяем квадрат или квадраты и выбираем нужный стиль (с тенью, без тени и любой другой).
Сделать надпись на кнопке тоже не очень сложно. Вернемся к основному меню (Tools). Жмем кнопку с буквой Т - это означает текст. Теперь левой кнопкой мыши щелкаем в любом месте нашего "листа" (помните, текст такой же объект как квадрат, вы можете задать ему Стиль, поменять также цвет, задать вращение и так далее). Появится обычная табличка (стандартная для всех графических и текстовых редакторов) со свойствами только для текста. Выбираем нужный шрифт, нужный размер шрифта, нужное расстояние между буквами. Когда все готово, выделяем текст и перемещаем его так, чтобы он был на квадрате - кнопка с текстом готова.
Стайлер может не понимать русский шрифт. В таком случае пишется нужный текст русскими буквами в блокноте (или другом текстовом редакторе), копируется и вставляется в Image Styler. Это неудобно, но не надо делать картинкой очень много текста.
Чтобы создать идентичные кнопки, но с другими надписями - выделяется квадрат с текстом. Edit - Copy. Edit - Paste. Появится точно такой же квадрат с точно таким же текстом. Отодвигаем его на свободное пространство листа (или выравниваем относительно первой кнопки с надписью). А теперь надо только изменить текст на новой кнопке. Для этого два раза щелкаем левой кнопкой мыши по тексту и вставляем (пишем) новую надпись. Вот так вы очень быстро можно создать меню.
Теперь как сохранить полученный рисунок? Как задать нужный формат (jpg, gif, png)? И можно ли чтобы программа сама написала HTML код для этого рисунка?
Опции для Экспорта картинок: Window - Export. Здесь можно выбрать нужный формат, выбрать какого качества будет картинка. И самое интересное - можно еще до сохранения увидеть, как будет выглядеть картинка, когда ее экспортируют (active preview - только надо поставить галочку).
Теперь немного о логотипе. Его также можно создать с помощью Image Styler. Рисуется опять квадрат. Теперь выбирается пункт меню Window - Shapes. Выделить квадрат и придать ему нужную форму. С помощью этой опции можно создавать много разных рисунков, хотя и незатейливых.
Также можно импортировать текстуры, картинки, нарисованные не в Image styler: File - Place as Texture. Таким образом, можно задать текстуру для всего листа (фон), для отдельного объекта, только надо не забывать перед эти нужное выделять.
P.S. Image Styler уже довольно старая программа и Adobe отказалась от ее совершенствовании. Но не стоит расстраиваться программа-то функциональная, да и одно из новых детищ Adobe - Live Motion - как близнец похоже на Image Styler (+ имеет новые, упрощающие вашу жизнь возможности)..
Всё что вы когда-либо хотели знать про mysql, php и кодировки, но боялись спросить! Почему кириллица на сайте отображается вопросами? Как правильно настроить сервер mysql для работы с кириллицей? Как поменять кодировку в mysql? Как изменить кодировку в скриптах php? Какую выбрать кодировку? Как сконвертировать базу данных из одной кодировки в другую? Эти и многие подобные вопросы с завидным упорством снова и снова поднимаются на различных форумах уже который год. В этом посте я постарался рассказать что нужно делать чтобы такие проблемы не возникали и дать наиболее эффективные советы на тот случай если они все-таки возникнут.
Mysql, php и кодировки. Источник проблем.
Проблемы с кодировками в Mysql обусловлены историей создания этой программы. Так как разрабатывали mysql - европейцы - для них было естественно выбрать в качестве основной кодировки более удобную для себя latin1. Странно, но и по сей день большинство инсталляций Mysql по умолчанию работают с этой кодировкой что и создает для пользователей кириллицы проблемы с добавлением в базу данных строк на русском и украинском языках - в latin1 эти символы просто отсутствуют.
Поэтому первое что нужно сделать при возникновении проблем с кодировками в mysql - нужно проверить какая кодировка является для данной инсталляции mysql основной. Проверить это можно несколькими способами.
Настройка сервера mysql для нужной кодировки.
* Если вы админ сервера или вы самостоятельно настраиваете собственную mysql на рабочей машине.
Откройте файл конфигурации mysql.ini (/etc/mysql.cnf для os linux) и найдите такие строки.
Вместо “название_кодировки” нужно подставить название той кодировки, которую вы будете использовать. Для текстов на русском и украинском языках можно использовать utf8 или cp1251 (обратите внимание - названия кодировок в mysql пишутся без обычного дефиса!!!). Но я советовал бы использовать только utf8 - так вы себе сэкономите в будущем немало нервов.
Если такие строки в файле конфигурации отсутствуют, то это означает что база данных использует по умолчанию ту кодировку, которая была задана при компиляции. Добавьте в конфиг нужные вам настройки кодировок (примеры ниже) и перезапустите mysql.
Если у вас возникли проблемы с кодировкой на хостинге, где вы не имеете прав администратора, то проверить настройки кодировки для mysql вы сможете другим способом: установите соединение с mysql (при помощи консольной команды mysql или phpmyadmin - как вам удобнее) и выполните такой sql-запрос: show variables like ‘char%’. Этот запрос покажет вам значения переменных mysql, которые имеют отношение к кодировкам. Скорее всего, вы увидите что-то вроде такого
Я специально привел выше пример НЕПРАВИЛЬНО НАСТРОЕННОГО СЕРВЕРА!!! Обратите внимание - в нем используются в разных случаях три(!) разные кодировки. Начинающему веб-программисту в такой ситуации будет сложно добиться корректной работы скрипта. Старайтесь чтобы все переменные были настроены на работу с одной и той же кодировкой. Тогда 99% проблем которые обсуждаются на форумах у вас просто не возникнут. Тут даже не столь важно какую именно кодировку вы выберете - главное чтобы она была везде одинаковой. Но все-таки старайтесь указывать в настройках ту кодировку, которую действительно будете использовать для хранения данных.
Итак, удачный вариант - это если команда show variables like ‘char%’ из абзаца выше покажет вам список одинаковых кодировок для каждой из переменных и еще лучше будет если эта кодировка совпадет с той которую используете вы.
Если же кодировка mysql отличается от вашей - не спешите расстраиваться. Изменить любую из этих переменных вы можете либо глобально, для всех правкой конфигов (если вы администратор сервера), либо только для себя - sql-запросом set character_set_database=utf8 (если вы пользователь). Такой запрос должен будет выполняться из вашего php скрипта сразу после установки соединения с сервером mysql. Ниже пример для установки кодировки utf8 из php скрипта.
Что касается character_set_database - постарайтесь сразу создать базу данных в нужной кодировке (как вариант - отправьте такую просьбу в техподдержку хостинга), тогда вы избежите по крайней мере одного лишнего запроса к mysql во время работы скрипта. Если удастся,то строчку с ‘character_set_database’ из приведенного выше кода можно будет удалить.
Примеры настроек сервера mysql для правильной работы с кодировками.
При правильно настроенном сервере делать запросы из скрипта для установки правильной кодировки уже будет не нужно.
Настройки для utf8
Проверка реальной кодировки в которой хранятся базы данных mysql.
В случае если вы все (и сервер, и php скрипт) настроили правильно, по инструкции выше, но русские буквы все равно не отображаются - проверьте действительно ли ваши строки сохранены в той кодировке, которую вы указали в настройках!!!
Простой способ проверки - сделайте дамп базы данных в sql-формате и откройте его в текстовом редакторе. Sql-формат - это обычный текст. Если ваша база данных mysql в кодировке cp1251 - открывайте в Блокноте. Если utf8 - в любом редакторе с поддержкой Юникода. Пролистайте файл и убедитесь что все надписи с кириллицей нормально читаются и что sql-команды create table и create database, которые встречаются в дампе содержат правильные названия кодировки mysql (той кодировки, которая вами была указана в настройках сервера или в запросах из php-скриптов.
Если кодировка не подходит - сделайте бекап базы на всякий случай, перекодируйте sql-дамп в любом текстовом перекодировщике, замените названия кодировок в файле на правильные и заливайте полученный файл на сервер mysql. Теперь с кодировками все должно быть в порядке.
В этой статье я попытаюсь дать оценку быстродействию файловых систем, используемых в операционных системах WindowsNT/2000. Статья не содержит графиков и результатов тестирований, так как эти результаты слишком сильно зависят от случая, методик тестирования и конкретных систем, и не имеют почти никакой связи с реальным положением дел. В этом материале я вместо этого постараюсь описать общие тенденции и соображения, связанные с производительностью файловых систем. Прочитав данный материал, вы получите информацию для размышлений и сможете сами сделать выводы, понять, какая система будет быстрее в ваших условиях, и почему. Возможно, некоторые факты помогут вам также оптимизировать быстродействие своей машины с точки зрения файловых систем, подскажут какие-то решения, которые приведут к повышению скорости работы всего компьютера.
В данном обзоре упоминаются три системы - FAT (далее FAT16), FAT32 и NTFS, так как основной вопрос, стоящий перед пользователями Windows2000 - это выбор между этими вариантами. Я приношу извинение пользователям других файловых систем, но проблема выбора между двумя, внешне совершенно равнозначными, вариантами со всей остротой стоит сейчас только в среде Windows2000. Я надеюсь, всё же, что изложенные соображения покажутся вам любопытными, и вы сможете сделать какие-то выводы и о тех системах, с которыми вам приходится работать.
Данная статья состоит из множества разделов, каждый из которых посвящен какому-то одному вопросу быстродействия. Многие из этих разделов в определенных местах тесно переплетаются между собой. Тем не менее, чтобы не превращать статью в кашу, в соответствующем разделе я буду писать только о том, что имеет отношение к обсуждаемый в данный момент теме, и ни о чем более. Если вы не нашли каких-то важных фактов в тексте - не спешите удивляться: скорее всего, вы встретите их позже. Прошу вас также не делать никаких поспешных выводов о недостатках и преимуществах той или иной системы, так как противоречий и подводных камней в этих рассуждениях очень и очень много. В конце я попытаюсь собрать воедино всё, что можно сказать о быстродействии систем в реальных условиях.
Теория
Самое фундаментальное свойство любой файловой системы, влияющее на быстродействие всех дисковых операций - структура организации и хранения информации, т.е. то, как, собственно, устроена сама файловая система. Первый раздел - попытка анализа именно этого аспекта работы, т.е. физической работы со структурами и данными файловой системы. Теоретические рассуждения, в принципе, могут быть пропущены - те, кто интересуется лишь чисто практическими аспектами быстродействия файловых систем, могут обратиться сразу ко второй части статьи.
Для начала хотелось бы заметить, что любая файловая система так или иначе хранит файлы. Доступ к данным файлов - основная и неотъемлемая часть работы с файловой системой, и поэтому прежде всего нужно сказать пару слов об этом. Любая файловая система хранит данные файлов в неких объемах - секторах, которые используются аппаратурой и драйвером как самая маленькая единица полезной информации диска. Размер сектора в подавляющем числе современных систем составляет 512 байт, и все файловые системы просто читают эту информацию и передают её без какой либо обработки приложениям. Есть ли тут какие-то исключения? Практически нет. Если файл хранится в сжатом или закодированном виде - как это возможно, к примеру, в системе NTFS - то, конечно, на восстановление или расшифровку информации тратится время и ресурсы процессора. В остальных случаях чтение и запись самих данных файла осуществляется с одинаковой скоростью, какую файловую систему вы не использовали бы.
Обратим внимание на основные процессы, осуществляемые системой для доступа к файлам:
Поиск данных файла
Выяснение того, в каких областях диска хранится тот или иной фрагмент файла - процесс, который имеет принципиально разное воплощение в различных файловых системах. Имейте в виду, что это лишь поиск информации о местоположении файла - доступ к самим данным, фрагментированы они или нет, здесь уже не рассматривается, так как этот процесс совершенно одинаков для всех систем. Речь идет о тех "лишних" действиях, которые приходится выполнять системе перед доступом к реальным данным файлов.
На что влияет этот параметр: на скорость навигации по файлу (доступ к произвольному фрагменту файла). Любая работа с большими файлами данных и документов, если их размер - несколько мегабайт и более. Этот параметр показывает, насколько сильно сама файловая система страдает от фрагментации файлов.
NTFS способна обеспечить быстрый поиск фрагментов, поскольку вся информация хранится в нескольких очень компактных записях (типичный размер - несколько килобайт). Если файл очень сильно фрагментирован (содержит большое число фрагментов) - NTFS придется использовать много записей, что часто заставит хранить их в разных местах. Лишние движения головок при поиске этих данных, в таком случае, приведут к сильному замедлению процесса поиска данных о местоположении файла.
FAT32, из-за большой области самой таблицы размещения будет испытывать огромные трудности, если фрагменты файла разбросаны по всему диску. Дело в том, что FAT (File Allocation Table, таблица размещения файлов) представляет собой мини-образ диска, куда включен каждый его кластер. Для доступа к фрагменту файла в системе FAT16 и FAT32 приходится обращаться к соответствующей частичке FAT. Если файл, к примеру, расположен в трех фрагментах - в начале диска, в середине, и в конце - то в системе FAT нам придется обратиться к фрагменту FAT также в его начале, в середине и в конце. В системе FAT16, где максимальный размер области FAT составляет 128 Кбайт, это не составит проблемы - вся область FAT просто хранится в памяти, или же считывается с диска целиком за один проход и буферизируется. FAT32 же, напротив, имеет типичный размер области FAT порядка сотен килобайт, а на больших дисках - даже несколько мегабайт. Если файл расположен в разных частях диска - это вынуждает систему совершать движения головок винчестера столько раз, сколько групп фрагментов в разных областях имеет файл, а это очень и очень сильно замедляет процесс поиска фрагментов файла.
Вывод: Абсолютный лидер - FAT16, он никогда не заставит систему делать лишние дисковые операции для данной цели. Затем идет NTFS - эта система также не требует чтения лишней информации, по крайней мере, до того момента, пока файл имеет разумное число фрагментов. FAT32 испытывает огромные трудности, вплоть до чтения лишних сотен килобайт из области FAT, если файл разбросан разным областям диска. Работа с внушительными по размеру файлами на FAT32 в любом случае сопряжена с огромными трудностями - понять, в каком месте на диске расположен тот или иной фрагмент файла, можно лишь изучив всю последовательность кластеров файла с самого начала, обрабатывая за один раз один кластер (через каждые 4 Кбайт файла в типичной системе). Стоит отметить, что если файл фрагментирован, но лежит компактной кучей фрагментов - FAT32 всё же не испытывает больших трудностей, так как физический доступ к области FAT будет также компактен и буферизован.
Поиск свободного места
Данная операция производится в том случае, если файл нужно создать с нуля или скопировать на диск. Поиск места под физические данные файла зависит от того, как хранится информация о занятых участках диска.
На что влияет этот параметр: на скорость создания файлов, особенно больших. Сохранение или создание в реальном времени больших мультимедийных файлов (.wav, к примеру), копирование больших объемов информации, т.д. Этот параметр показывает, насколько быстро система сможет найти место для записи на диск новых данных, и какие операции ей придется для этого проделать.
Для определения того, свободен ли данный кластер или нет, системы на основе FAT должны просмотреть одну запись FAT, соответствующую этому кластеру. Размер одной записи FAT16 составляет 16 бит, одной записи FAT32 - 32 бита. Для поиска свободного места на диске может потребоваться просмотреть почти всего FAT - это 128 Кбайт (максимум) для FAT16 и до нескольких мегабайт (!) - в FAT32. Для того, чтобы не превращать поиск свободного места в катастрофу (для FAT32), операционной системе приходится идти на различные ухищрения.
NTFS имеет битовую карту свободного места, одному кластеру соответствует 1 бит. Для поиска свободного места на диске приходится оценивать объемы в десятки раз меньшие, чем в системах FAT и FAT32.
Вывод: NTFS имеет наиболее эффективную систему нахождения свободного места. Стоит отметить, что действовать "в лоб" на FAT16 или FAT32 очень медленно, поэтому для нахождения свободного места в этих системах применяются различные методы оптимизации, в результате чего и там достигается приемлемая скорость. (Одно можно сказать наверняка - поиск свободного места при работе в DOS на FAT32 - катастрофический по скорости процесс, поскольку никакая оптимизация невозможна без поддержки хоть сколь серьезной операционной системы).
Работа с каталогами и файлами
Каждая файловая система выполняет элементарные операции с файлами - доступ, удаление, создание, перемещение и т.д. Скорость работы этих операций зависит от принципов организации хранения данных об отдельных файлах и от устройства структур каталогов.
На что влияет этот параметр: на скорость осуществления любых операций с файлом, в том числе - на скорость любой операции доступа к файлу, особенно - в каталогах с большим числом файлов (тысячи).
FAT16 и FAT32 имеют очень компактные каталоги, размер каждой записи которых предельно мал. Более того, из-за сложившейся исторически системы хранения длинных имен файлов (более 11 символов), в каталогах систем FAT используется не очень эффективная и на первый взгляд неудачная, но зато очень экономная структура хранения этих самих длинных имен файлов. Работа с каталогами FAT производится достаточно быстро, так как в подавляющем числе случаев каталог (файл данных каталога) не фрагментирован и находится на диске в одном месте.
Единственная проблема, которая может существенно понизить скорость работы каталогов FAT - большое количество файлов в одном каталоге (порядка тысячи или более). Система хранения данных - линейный массив - не позволяет организовать эффективный поиск файлов в таком каталоге, и для нахождения данного файла приходится перебирать большой объем данных (в среднем - половину файла каталога).
NTFS использует гораздо более эффективный способ адресации - бинарное дерево, о принципе работы которого можно прочесть в другой статье (Файловая система NTFS). Эта организация позволяет эффективно работать с каталогами любого размера - каталогам NTFS не страшно увеличение количества файлов в одном каталоге и до десятков тысяч.
Стоит заметить, однако, что сам каталог NTFS представляет собой гораздо менее компактную структуру, нежели каталог FAT - это связано с гораздо большим (в несколько раз) размером одной записи каталога. Данное обстоятельство приводит к тому, что каталоги на томе NTFS в подавляющем числе случаев сильно фрагментированы. Размер типичного каталога на FAT-е укладывается в один кластер, тогда как сотня файлов (и даже меньше) в каталоге на NTFS уже приводит к размеру файла каталога, превышающему типичный размер одного кластера. Это, в свою очередь, почти гарантирует фрагментацию файла каталога, что, к сожалению, довольно часто сводит на нет все преимущества гораздо более эффективной организации самих данных.
Вывод: структура каталогов на NTFS теоретически гораздо эффективнее, но при размере каталога в несколько сотен файлов это практически не имеет значения. Фрагментация каталогов NTFS, однако, уверенно наступает уже при таком размере каталога. Для малых и средних каталогов NTFS, как это не печально, имеет на практике меньшее быстродействие.
Преимущества каталогов NTFS становятся реальными и неоспоримыми только в том случае, если в одно каталоге присутствуют тысячи файлов - в этом случае быстродействие компенсирует фрагментированность самого каталога и трудности с физическим обращением к данным (в первый раз - далее каталог кэшируется). Напряженная работа с каталогами, содержащими порядка тысячи и более файлов, проходит на NTFS буквально в несколько раз быстрее, а иногда выигрыш в скорости по сравнению с FAT и FAT32 достигает десятков раз.
Практика
К сожалению, как это часто бывает во всевозможных компьютерных вопросах, практика не очень хорошо согласуется с теорией. NTFS, имеющая, казалось бы, очевидные преимущества в структуре, показывает не настолько уж фантастические результаты, как можно было бы ожидать. Какие еще соображения влияют на быстродействие файловой системы? Каждый из рассматриваемых далее вопросов вносит свой вклад в итоговое быстродействие. Помните, однако, что реальное быстродействие - результат действия сразу всех факторов, поэтому и в этой части статьи не стоит делать поспешных выводов.
Объем оперативной памяти (кэширование)
Очень многие данные современных файловых систем кэшируются или буферизируются в памяти компьютера, что позволяет избежать лишних операций физического чтения данных с диска. Для нормальной (высокопроизводительной) работы системы в кэше приходится хранить следующие типы информации:
Данные о физическом местоположении всех открытых файлов. Это, прежде всего, позволит обращаться к системным файлам и библиотекам, доступ к которым идет буквально постоянно, без чтения служебной (не относящейся к самим файлам) информации с диска. Это же относится к тем файлам, которые исполняются в данный момент - т.е. к выполняемым модулям (.exe и .dll) активных процессов в системе. В эту категорию попадают также файлы системы, с которыми производится работа (прежде всего реестр и виртуальная память, различные .ini файлы, а также файлы документов и приложений).
Наиболее часто используемые каталоги. К таковым можно отнести рабочий стол, меню "пуск", системные каталоги, каталоги кэша интернета, и т.п.
Данные о свободном месте диска - т.е. та информация, которая позволит найти место для сохранения на диск новых данных.
В случае, если этот базовый объем информации не будет доступен прямо в оперативной памяти, системе придется совершать множество ненужных операций еще до того, как она начнет работу с реальными данными. Что входит в эти объемы в разных файловых системах? Или, вопрос в более практической плоскости - каким объемом свободной оперативной памяти надо располагать, чтобы эффективно работать с той или иной файловой системой?
FAT16 имеет очень мало данных, отвечающих за организацию файловой системы. Из служебных областей можно выделить только саму область FAT, которая не может превышать 128 Кбайт (!) - эта область отвечает и за поиск фрагментов файлов, и за поиск свободного места на томе. Каталоги системы FAT также очень компактны. Общий объем памяти, необходимый для предельно эффективной работы с FAT-ом, может колебаться от сотни килобайт и до мегабайта-другого - при условии огромного числа и размера каталогов, с которыми ведется работа.
FAT32 отличается от FAT16 лишь тем, что сама область FAT может иметь более внушительные размеры. На томах порядка 5 - 10 Гбайт область FAT может занимать объем в несколько Мбайт, и это уже очень внушительный объем, надежно кэшировать который не представляется возможным. Тем не менее, область FAT, а вернее те фрагменты, которые отвечают за местоположение рабочих файлов, в подавляющем большинстве систем находятся в памяти машины - на это расходуется порядка нескольких Мбайт оперативной памяти.
NTFS, к сожалению, имеет гораздо большие требования к памяти, необходимой для работы системы. Прежде всего, кэширование сильно затрудняет большие размеры каталогов. Размер одних только каталогов, с которыми активно ведет работу система, может запросто доходить до нескольких Мбайт и даже десятков Мбайт! Добавьте к этому необходимость кэшировать карту свободного места тома (сотни Кбайт) и записи MFT для файлов, с которыми осуществляется работа (в типичной системе - по 1 Кбайт на каждый файл). К счастью, NTFS имеет удачную систему хранения данных, которая не приводит к увеличению каких-либо фиксированных областей при увеличении объема диска. Количество данных, с которым оперирует система на основе NTFS, практически не зависит от объема тома, и основной вклад в объемы данных, которые необходимо кэшировать, вносят каталоги. Тем не менее, уже этого вполне достаточно для того, чтобы только минимальный объем данных, необходимых для кэширования базовых областей NTFS, доходил до 5 - 8 Мбайт.
[pagebreak]
К сожалению, можно с уверенностью сказать: NTFS теряет огромное количество своего теоретического быстродействия из-за недостаточного кэширования. На системах, имеющих менее 64 Мбайт памяти, NTFS просто не может оказаться быстрее FAT16 или FAT32. Единственное исключение из этого правила - диски FAT32, имеющие объем десятки Гбайт (я бы лично серьезно опасался дисков FAT32 объемом свыше, скажем, 30 Гбайт). В остальных же случаях - системы с менее чем 64 мегабайтами памяти просто обязаны работать с FAT32 быстрее.
Типичный в настоящее время объем памяти в 64 Мбайта, к сожалению, также не дает возможности организовать эффективную работу с NTFS. На малых и средних дисках (до 10 Гбайт) в типичных системах FAT32 будет работать, пожалуй, немного быстрее. Единственное, что можно сказать по поводу быстродействия систем с таким объемом оперативной памяти - системы, работающие с FAT32, будут гораздо сильнее страдать от фрагментации, чем системы на NTFS. Но если хотя бы изредка дефрагментировать диски, то FAT32, с точки зрения быстродействия, является предпочтительным вариантом. Многие люди, тем не менее, выбирают в таких системах NTFS - просто из-за того, что это даст некоторые довольно важные преимущества, тогда как типичная потеря быстродействия не очень велика.
Системы с более чем 64 Мбайтами, а особенно - со 128 Мбайт и более памяти, смогут уверенно кэшировать абсолютно всё, что необходимо для работы систем, и вот на таких компьютерах NTFS, скорее всего, покажет более высокое быстродействие из-за более продуманной организации данных. В наше время этим показателям соответствует практически любой компьютер.
Быстродействие накопителя
Влияют ли физические параметры жесткого диска на быстродействие файловой системы? Да, хоть и не сильно, но влияют. Можно выделить следующие параметры физической дисковой системы, которые по-разному влияют на разные типы файловых систем:
Время случайного доступа (random seek time). К сожалению, для доступа к системным областям на типичном диске более сложной файловой системы (NTFS) приходится совершать, в среднем, больше движений головками диска, чем в более простых системах (FAT16 и FAT32). Гораздо большая фрагментация каталогов, возможность фрагментации системных областей - всё это делает диски NTFS гораздо более чувствительными к скорости считывания произвольных (случайных) областей диска. По этой причине использовать NTFS на медленных (старых) дисках не рекомендуется, так как высокое (худшее) время поиска дорожки дает еще один плюс в пользу систем FAT.
Наличие Bus Mastering. Bus Mastering - специальный режим работы драйвера и контроллера, при использовании которого обмен с диском производится без участия процессора. Стоит отметить, что система запаздывающего кэширования NTFS сможет действовать гораздо более эффективно при наличии Bus Mastering, т.к. NTFS производит отложенную запись гораздо большего числа данных. Системы без Bus Mastering в настоящее время встречаются достаточно редко (обычно это накопители или контроллеры, работающие в режиме PIO3 или PIO4), и если вы работаете с таким диском - то, скорее всего, NTFS потеряет еще пару очков быстродействия, особенно при операциях модификации каталогов (например, активная работа в интернете - работа с кэшем интернета).
Кэширование как чтения, так и записи на уровне жестких дисков (объем буфера HDD - от 128 Кбайт до 1-2 Мбайт в современных дорогих дисках) - фактор, который будет более полезен системам на основе FAT. NTFS из соображений надежности хранения информации осуществляет модификацию системных областей с флагом "не кэшировать запись", поэтому быстродействие системы NTFS слабо зависит от возможности кэширования самого HDD. Системы FAT, напротив, получат некоторый плюс от кэширования записи на физическом уровне. Стоит отметить, что, вообще говоря, всерьез принимать в расчет размер буфера HDD при оценке быстродействия тех или иных файловых систем не стоит.
Подводя краткий итог влиянию быстродействия диска и контроллера на быстродействия системы в целом, можно сказать так: NTFS страдает от медленных дисков гораздо сильнее, чем FAT.
Размер кластера
Хотелось бы сказать пару слов о размере кластера - тот параметр, который в файловых системах FAT32 и NTFS можно задавать при форматировании практически произвольно. Прежде всего, надо сказать, что больший размер кластера - это практически всегда большее быстродействие. Размер кластера на томе NTFS, однако, имеет меньшее влияние на быстродействие, чем размер кластера для системы FAT32.
Типичный размер кластера для NTFS - 4 Кбайта. Стоит отметить, что при большем размере кластера отключается встроенная в файловую систему возможность сжатия индивидуальных файлов, а также перестает работать стандартный API дефрагментации - т.е. подавляющее число дефрагментаторов, в том числе встроенный в Windows 2000, будут неспособны дефрагментировать этот диск. SpeedDisk, впрочем, сможет - он работает без использования данного API. Оптимальным с точки зрения быстродействия, по крайней мере, для средних и больших файлов, считается (самой Microsoft) размер 16 Кбайт. Увеличивать размер далее неразумно из-за слишком больших расходов на неэффективность хранения данных и из-за мизерного дальнейшего увеличения быстродействия. Если вы хотите повысить быстродействие NTFS ценой потери возможности сжатия - задумайтесь о форматировании диска с размером кластера, большим чем 4 Кбайта. Но имейте в виду, что это даст довольно скромный прирост быстродействия, который часто не стоит даже уменьшения эффективности размещения файлов на диске.
Быстродействие системы FAT32, напротив, можно довольно существенно повысить, увеличив размер кластера. Если в NTFS размер кластера почти не влияет на размер и характер данных системных областей, то в системе FAT увеличивая кластер в два раза, мы сокращаем область FAT в те же два раза. Вспомните, что в типичной системе FAT32 эта очень важная для быстродействия область занимает несколько Мбайт. Сокращение области FAT в несколько раз даст заметное увеличение быстродействия, так как объем системных данных файловой системы сильно сократиться - уменьшается и время, затрачиваемое на чтение данных о расположении файлов, и объем оперативной памяти, необходимый для буферизирования этой информации. Типичный объем кластера для систем FAT32 составляет тоже 4 Кбайт, и увеличение его до 8 или даже до 16 Кбайт - особенно для больших (десяток и более гигабайт) дисков - достаточно разумный шаг.
Другие соображения
NTFS является достаточно сложной системой, поэтому, в отличие от FAT16 и FAT32, имеются и другие факторы, которые могут привести к существенному замедлению работы NTFS:
Диск NTFS был получен преобразованием раздела FAT16 или FAT32 (команда convert). Данная процедура в большинстве случаев представляет собой тяжелый случай для быстродействия, так как структура служебных областей NTFS, скорее всего, получится очень фрагментированной. Если есть возможность - избегайте преобразования других систем в NTFS, так как это приведет к созданию очень неудачного диска, которому не поможет даже типичный (неспециализированный) дефрагментатор, типа Diskeeper-а или встроенного в Windows 2000.
Активная работа с диском, заполненным более чем на 80% - 90%, представляет собой катастрофический для быстродействия NTFS случай, так как фрагментация файлов и, самое главное, служебных областей, будет расти фантастически быстро. Если ваш диск используется в таком режиме - FAT32 будет более удачным выбором при любых других условиях.
Выводы
В данной заключительной части "одной строчкой" собраны ключевые особенности быстродействия этих трех файловых систем.
FAT - плюсы:
Для эффективной работы требуется немного оперативной памяти.
Быстрая работа с малыми и средними каталогами.
Диск совершает в среднем меньшее количество движений головок (в сравнении с NTFS).
Эффективная работа на медленных дисках.
FAT - минусы:
Катастрофическая потеря быстродействия с увеличением фрагментации, особенно для больших дисков (только FAT32).
Сложности с произвольным доступом к большим (скажем, 10% и более от размера диска) файлам.
Очень медленная работа с каталогами, содержащими большое количество файлов.
NTFS - плюсы:
Фрагментация файлов не имеет практически никаких последствий для самой файловой системы - работа фрагментированной системы ухудшается только с точки зрения доступа к самим данным файлов.
Сложность структуры каталогов и число файлов в одном каталоге также не чинит особых препятствий быстродействию.
Быстрый доступ к произвольному фрагменту файла (например, редактирование больших .wav файлов).
Очень быстрый доступ к маленьким файлам (несколько сотен байт) - весь файл находится в том же месте, где и системные данные (запись MFT).
NTFS - минусы:
Существенные требования к памяти системы (64 Мбайт - абсолютный минимум, лучше - больше).
Медленные диски и контроллеры без Bus Mastering сильно снижают быстродействие NTFS.
Работа с каталогами средних размеров затруднена тем, что они почти всегда фрагментированы.
Диск, долго работающий в заполненном на 80% - 90% состоянии, будет показывать крайне низкое быстродействие.
Хотелось бы еще раз подчеркнуть, что на практике основной фактор, от которого зависит быстродействие файловой системы - это, как ни странно, объем памяти машины. Системы с памятью 64-96 Мбайт - некий рубеж, на котором быстродействие NTFS и FAT32 примерно эквивалентно. Обратите внимание также на сложность организации данных на вашей машине. Если вы не используете ничего, кроме простейших приложений и самой операционной системы - может случиться так, что FAT32 сможет показать более высокое быстродействие и на машинах с большим количеством памяти.
NTFS - система, которая закладывалась на будущее, и это будущее для большинства реальных применений сегодняшнего дня еще, к сожалению, видимо не наступило. На данный момент NTFS обеспечивает стабильное и равнодушное к целому ряду факторов, но, пожалуй, всё же невысокое - на типичной "игровой" домашней системе - быстродействие. Основное преимущество NTFS с точки зрения быстродействия заключается в том, что этой системе безразличны такие параметры, как сложность каталогов (число файлов в одном каталоге), размер диска, фрагментация и т.д. В системах FAT же, напротив, каждый из этих факторов приведет к существенному снижению скорости работы.
Только в сложных высокопроизводительных системах - например, на графических станциях или просто на серьезных офисных компьютерах с тысячами документов, или, тем более, на файл-серверах - преимущества структуры NTFS смогут дать реальный выигрыш быстродействия, который порой заметен невооруженным глазом. Пользователям, не имеющим большие диски, забитые информацией, и не пользующимся сложными программами, не стоит ждать от NTFS чудес скорости - с точки зрения быстродействия на простых домашних системах гораздо лучше покажет себя FAT32.
На некоторых сайтах часто можно увидеть следующую надпись внизу страницы или под статьями: "Всего просмотров xxx. Сегодня xx". На первый взгляд ничего особенного, но все равно, многим интересно, как это сделано.
В этой статье я попробую рассказать вам о том, как устроена данная статистика просмотров страниц сайта, на самом простом примере, написанном на php. Статистика просмотров страниц будет работать на связке MySQL + PHP. Основным отличием этой статистики от других будет то, что MySQL таблица будет занимать очень мало места, но при этом нельзя будет точно сказать какую именно страницу и сколько раз просмотрели. А все из-за того, что все url будут хешированны с помощью php функции md5(), что гарантирует почти 100% неповторяющихся id для каждой страницы сайта. Делается это только для ускорения работы php скрипта (при условии, что индексом является id страницы) и уменьшения размеров MySQL таблицы (за счет отсутствия длинных url).
MySQL таблица будет иметь следующую структуру:
page_id – уникальный id для каждой страницы сайта сгенерированный php функцией md5().
all – значение всех просмотров данной страницы.
today – просмотров страницы сегодня.
date – дата возвращаемая php функцией time() + 24 часа
Для правильного учета посещений страниц значение поля date будет изменяться, тогда, когда текущая дата будет больше той, что указанна в таблице. В этот же момент будет происходить и обнуление счетчика просмотров страницы за прошедшие сутки.
Почти весь php скрипт статистики просмотров для каждой страницы сайта состоит в основном из функций, которые выполняют строго определенную роль. Все функции снабжены комментариями, поэтому, надеюсь, все поймете сами.
PHP код скрипта статистики просмотров страниц сайта:
Вот в принципе и весь php скрипт статистики просмотров страниц сайта. Для того, что бы он работал, его нужно "подключить" к нужному вам скрипту, например к index.php, добавив в index.php строчку include(' counter.php ');. А в том месте, где должно выводиться сообщение о том, сколько человек просмотрело данную страницу – строчку echo Today_and_all_counter;.
Скачать данный php скрипт статистики просмотров страниц сайта и MySQL файл со структурой таблицы можно здесь
Потоки всегда создаются в контексте какого-либо процесса, и вся их жизнь проходит только в его границах. На практике это означает, что потоки исполняют код и манипулируют данными в адресном пространстве процесса. Если два или более потока выполняются внутри одного процесса, они делят одно адресное пространство.
Любой поток (thread) состоит из двух компонентов:
объекта ядра, через который ОС управляет потоком. Там же хранится статистическая информация о потоке.
Стека потока, который содержит параметры всех функций и локальные переменные, необходимые потоку для выполнения кода.
Потоки могут выполнять один и тот же код, манипулировать одними и теми же данными, а также совместно использовать описатели объектов ядра, поскольку таблица описателей создается не в отдельных потоках, а в процессах.
Потоки используют намного меньше ресурсов системы, чем процессы, поэтому все задачи, требующие параллельного выполнения нескольких подзадач, стоит решать по возможности с помощью потоков, не прибегая к созданию нескольких процессов.
Обычная структура многопоточного приложения рассчитана на одновременное исполнение нескольких подзадач. Однако стоит помнить, что, создавая многопоточное приложение, нам придется заботиться о сохранности и ликвидности, общих для всех потоков, данных.
Создание потока.
Первичный поток, который присутствует в программе, начинает свое выполнение с главной функции потока типа WinMain.
Для создания вторичного потока необходимо создать и для него входную функцию, которая выглядит примерно так:
Имя у функции вторичного потока, в отличии от первичного, может быть любым однако, при наличии нескольких разных потоков, назвать функции необходимо по-разному, иначе система создаст разные реализации одной и той же функции.
Когда поток закончит свое исполнение, он вернет управление системе, память, отведенная под его стек, будет освобождена, а счетчик пользователей его объекта ядра "поток" уменьшится на 1. Когда счетчик обнулится, этот объект ядра будет разрушен.
Для создания своего потока необходимо использовать функцию CreateThread:
При каждом вызове этой функции система создает объект ядра (поток). Это не сам поток, а компактная структура данных, которая используется операционной системой для управления потоком и хранит статистическую информацию о потоке.
Система выделяет память под стек потока из адресного пространства процесса. Новый поток выполняется в контексте того же процесса, что и родительский поток. Поэтому он получает доступ ко всем описателям объектов ядра, всей памяти и стекам всех потоков в процессе. За счет этого потоки в рамках одного процесса могут легко взаимодействовать друг с другом.
CreateThread - это Windows-функция, создающая поток. Если вы пишете код на С/С++ не вызывайте ее. Вместо нее Вы должны использовать _beginthreadex из библиотеки Visual C++. Почему это так важно в наших следующих выпусках.
Параметры функции CreateThread.
LpThreadAttributes - является указателем на структуру LPSECURITY_ATTRIBUTES. Для присвоения атрибутов защиты по умолчанию, передавайте в этом параметре NULL.
DwStackSize - параметр определяет размер стека, выделяемый для потока из общего адресного пространства процесса. При передаче 0 - размер устанавливается в значение по умолчанию.
LpStartAddress - указатель на адрес входной функции потока.
LpParameter - параметр, который будет передан внутрь функции потока.
DwCreationFlags - принимает одно из двух значений: 0 - исполнение начинается немедленно, или CREATE_SUSPENDED - исполнение приостанавливается до последующих указаний.
LpThreadId - Адрес переменной типа DWORD в который функция возвращает идентификатор, приписанный системой новому потоку.
Завершение потока
Поток можно завершит четырьмя способами:
функция потока возвращает управление (рекомендуемо);
поток самоуничтожается вызовом функции ExitThread;
другой поток процесса вызывает функцию TerminateThread;
завершается процесс, содержащий данный поток.
Все способы , за исключением рекомендуемого, являются нежелательными и должны использоваться только в форс-мажорных обстоятельствах.
Функция потока, возвращая управление, гарантирует корректную очистку всех ресурсов, принадлежащих данному потоку. При этом:
любые С++ объекты, созданные данным потоком, уничтожаются соответствующими деструкторами;
система корректно освобождает память, которую занимал стек потока;
система устанавливает код завершения данного потока. Его функция и возвращает;
счетчик пользователей данного объекта ядра (поток) уменьшается на 1.
При желании немедленно завершить поток изнутри используют функцию ExitThread(DWORD dwExitCode).
При этом освобождаются все ресурсы ОС, выделенные данному потоку, но С С++ ресурсы (например, объекты классов С++) не очищаются. Именно поэтому не рекомендовано завершать поток, используя эту функцию.
Если же вы ее использовали, то кодом возврата потока будет тот параметр, который вы передадите в данную функцию.
Как и для CreateThread для библиотеки Visual C++ существует ее аналог _endthreadex, который и стоит использовать. Об причинах в следующем выпуске.
Если появилась необходимость уничтожить поток снаружи, то это моет сделать функция TeminateThread.
Эта функция уменьшит счетчик пользователей объекта ядра (поток) на 1, однако при этом не разрушит и не очистит стек потока. Стек будет существовать, пока не завершится процесс, которому принадлежит поток. При задачах, постоянно создающих и уничтожающих потоки, это приводит к потере памяти внутри процесса.
При завершении процесса происходит следующее.
Завершение потока происходит принудительно. Деструкторы объектов не вызываются, и т.д. и т.д.
При завершении потока по такой причине, связанный с ним объект ядра (поток) не освобождается до тех пор, пока не будут закрыты все внешние ссылки на этот объект.
Давайте определимся с номенклатурой. Поле - это ячейка в таблице. Запись - набор из полей. Так вот, существуют разные типы полей - обычные, индексные и ключевые. Обычные поля - просто данные. Индексное поле - поле, по которому данные сортируются. Ключевое - поле, значение которого уникально. В общем-то четкого разделения нет. Ведь программа базы данных может сортировать таблицу и по обычным полям, а индексное поле может быть также уникальным.
В BDE достаточно логично поределена структура построения полей и их типов. Для этого имеются классы TxxxDef (три икса здесь обозначают подстановку, а то мало ли что Вы подумаете ;)), произведенные ото абстрактного базового класса TNamedItem. В компоненте TTable имеются и соответствующие свойства
TIndexDefs
TFieldDefs
Как и следовало предполагать, эти свойства содержат в себе определения индексных и обычных полей. Здесь нет свойства типа TKeyDefs, потому что в таблицах типа Парадокс индексные поля могут быть сами по себе уникальны. За счет этих свойств и задаются параметры таблицы, ее сетка. Создание таблицы довершает метод CreateTable.
Теории было много, теперь практика. Вот пример, честно скажу, взятый их Хелпа и перекомментированный автором (то есть мной).
Это все еще объяснять и объяснять. Но, я надеюсь, общая логика понятна.
22 наиболее часто встречаемых ошибок при самостоятельной оптимизации сайта под поисковые системы:
1. Регистрируемая в поисковой системе страница должна содержать ссылки на другие страницы сайта. В противном случае она будет единственным, что проиндексирует поисковая машина.
2. Не стоит регистрировать сайт в поисковых системах, который находится в стадии разработки (к каталогам, доскам объявлений и форумам это относиться в меньшей степени). Робот, пришедший на пустую страницу вернется очень не скоро и придется ждать следующей индексации.
3. При использовании механизма переадресации, регистрировать в поисковых системах необходимо реальный адрес Вашего сайта. Машина все равно будет выдавать ссылки именно на него, а не на redirect.
4. Разведение линкопомоек на сайтах. Никогда не размещайте на одной странице сайта больше 20 исходящих ссылок. Если необходимо разместить большее количество ссылок, то их стоит располагать на отдельных страницах. В противном случае Ваш сайт может пропасть из поисковой системы на длительное время.
5. Если поисковая машина не понимает переадресацию, то ресурс останется не проиндексированным.
6. Не стоит плодить копии страницы под разными именами, релевантности сайту это не добавит, а на санкции от поисковой машины нарваться можно.
7. Неправильное написание букв национальных алфавитов - вместо русской "С" (эс) английская "С" (це). Данное правило стоит всегда соблюдать.
8. Грамматические ошибки и примкнувшие к ним опечатки. Используйте редакторы с проверкой правописания.
9. Не используйте слова через п р о б е л. Слова, написанные таким образом - поисковая машина воспримет как группу несвязанных символов.
Если требуется установить большое расстояние между буквами - используйте таблицы стилей CSS (напр.: letter-spacing: 7px; ).
10. Размещение на странице текста по цвету схожего с фоном и включение в этот текст кучи ключевых слов, является недопустимым. При обнаружении поисковыми системами можно попасть в бан.
11. Большое количество индексируемых страниц, не содержащих ключевой информации, снижает релевантность сайта и увеличивает время его индексации.
12. Не стоит создавать несколько страниц настроенных на одинаковый набор ключевых слов. Используйте синонимы или слова близкие по смыслу. Люди при поиске могут набирать фразы по-разному.
13. Использование для выделения тега FONT. Этот тег не увеличивает релевантность выделяемых слов. Используйте, когда это возможно, теги
-
или .
14. Использование в заголовке (тег TITLE) посторонней информации: название сайта на всех языках мира, его URL, самые популярные в Сети слова, не имеющие отношения к сайту (кстати, это может квалифицироваться как спам), пара десятков восклицательных знаков и т.п. Выводите в заголовок важную ключевую информацию. Например, для сайта www.ваш сайт.ru, заголовок может выглядеть следующим образом - Магазин техники – персональные компьютеры и комплектующие.
15. Использование в META-теге KEYWORDS слов не только не встречающихся в тексте, но и не имеющих к нему никакого отношения. Такие страницы могут считаться спамом.
16. Использование тегов DESCRIPTION и/или TITLE как еще одного тега KEYWORDS (бессмысленный набор ключевых слов)
17. Каждая страница должна иметь индивидуальный тег TITLE, а в идеале и KEYWORDS + DESCRIPTION.
18. Создание множества никому не нужных, невразумительных сателитов. (Хороший, интересный сателит с уникальным и интересным контентом - это совсем другое дело).
19. Частой ошибкой при конструировании сайта является идти "на поводу" оптимизации в ущерб контенту и дизайну.
20. Использование "чужого" контента. Более эффективным является написание собственного уникального контента.
21. Оптимизация страницы более чем под 10 поисковых запросов. На практике лучше каждую страницу оптимизировать под конкретные ключевые слова, причём количество слов не должно превышать 10!
22. Частой ошибкой является необдуманная покупка внешних ссылок с различных веб-сайтов. К данному вопросу стоит относиться очень серьёзно и покупать ссылки только у профессиональных компаний.
Все началось до банального просто - любимый директор сказал "Хочу!". Аргументация была следующей:
* Переводится много бумаги для печати и отправки по факсу (клиентов много, потому отправленные счета сразу выбрасываются: найти нужный документ даже через день - нереально)
* Электронная почта "есть в наши дни у всех и каждого" (то, что сам директор ею не пользуется - другой вопрос :-) )
* Тратится меньше времени персонала (не нужно сидеть и ждать перед факсом, стартовать, "прошло"/"не прошло", ...)
* Легче вести учет когда и что было отправлено.
Сначала ставился вопрос отправки документов вообще - что может быть проще? Сохранить таблицу как файл MS-Excel, вызвать внешнюю программу отправки с параметрами - и все. Потом возникли сомнения:
* А вот клиенты отредактируют файл - и будут доказывать что мы такой и отправили,
* В файле передается рисунок печати - они его смогут использовать с какой-нибудь темной целью.
Сразу же было предложено отправить как рисунок, благо я знал, что это можно сделать, но как - еще не представлял. Согласие получено, и вот начались поиски соответствующих программ...
Подбор нужного инструментария
Некоторое время я стараюсь использовать бесплатные программы, а не ломать те, за которые нужно платить деньги. Так что одним из условий (не главным, но в результате выполненным почти на 100%) была бесплатность инструментария.
Понятно, что для получения рисунка на выходе нужен виртуальный принтер, на который можно печатать любой документ. Выходным форматом был выбран tiff как достаточно распространенный, предполагая что его можно будет конвертировать в любой формат, если возникнет необходимость. Были испробованы многие принтеры, встреченные в просторах Internet`а, как бесплатные, так и нет. Большинство из них умеют печатать кроме искомого tiff еще и pdf документы, но не один не удовлетворял условиям передачи в них внешних параметров (важно было указать место сохранения и возможно имя файла для уменьшения коллизий, поскольку работа происходит на сервере терминалов). В конечном итоге выбор пал на AFPL Ghostscript 8.14 for Win32 и драйвер переадресации порта принтера RedMon.
Ghost Script умеет конвертировать данные из ps, eps, pdf в разные форматы (те же ps, eps, pdf, языки принтеров вроде PCL6 от HP, и рисунки). Получать данные он может как из файла, так и из входящего потока (stdin для посвященных). RedMon умеет данные, полученные от драйвера принтера, передавать как входной поток выбранной программе. Кроме того устанавливает несколько системных переменных, одну из которых (%REDMON_USER% - имя пользователя, печатающего документ) мы будем использовать.
Итак - используемый режим связки: установка PS принтера в системе, указание ему виртуального порта RedMon, пересылка исходящего PS потока от принтера на Ghost Script, формирование tif по указанным настройкам.
Настройки для режима работы Ghost Script хранятся в файле одном для всех, потому в схему добавим еще одно звено: RedMon передает данные не Ghost Script, а скрипту WSH, а уже он откорректировав настройки под пользователя, передает дальше поток для Ghost Script. Потому еще одна программа, которая нам нужна: Windows Script 5.6 for Windows. Нужна именно версия 5.6, поскольку во встроенной в Windows 2000 версии 5.1 отсутствует необходимый метод Exec().
Еще возможно нам понадобится компонент для вывода рисунков с прозрачным фоном. Пока приходится использовать Active_BMP, упоминаемый на безвременно почившем hare.ru. Этот компонент умеет отображать прозрачными только 2-х цветные bmp (по крайней мере только с ними у меня получилось добиться прозрачности), но за неимением лучшего... :-) (Если кто знает бесплатный ActiveX компонент для отображения gif с прозрачным слоем - скажите в форум или мыло)
Собственно для отправки почты из командной строки я уже полгода пользуюсь Postie, потому искать ничего нового не пришлось.
Приступим (установка и регистрация программ)
Установка WSH проблем не вызывает (конечно, если вы не попытаетесь установить версию для 9X/NT4 на 2000/XP, как я это сделал, причем осознал это только взявшись за статью - уже месяц сервер живет в этом режиме :-) ): запуск scripten.exe (scr56en.exe), ответы на все вопросы, перезагрузка.
Установка Ghost Script не требует даже перезагрузки. Единственный момент - от пытается по умолчанию установится в каталог %SystemDrive%\gs - я его устанавливал в %SystemDrive%\Tools\gs - так мне удобнее. (ниже в скобках я буду писать свои настройки, с которыми у меня работает живая система).
Для установки RedMon нужно его распаковать в некий каталог (%SystemDrive%\Tools\RedMon) и запустить setup.exe из него. В файлах readme.txt и redmon.hlp находится подробная информация по установке и стандартной настройке redmon.
Регистрация Active_BMP осуществляется распаковкой файлов в каталог (%SystemDrive%\Tools\OLE\ActiveBMP) и запуском из этого каталога "regsvr32 Bmp_1c.ocx".
В дальнейшем каталоги с RedMon и Active_BMP нам не понадобятся, так что про них смело можно забыть (но не удалять совсем с диска :-) ).
Postie устанавливается простым извлечение его в нужный каталог (%SystemDrive%\Tools\Postie).
Теперь нам необходимо настроить принтер. Для этого из папки принтеры выбираем "Добавить". Тип принтера - локальный, отказываемся от автоматического поиска и добавляем порт: тип порта: Redirect Port, имя: RPT1. На следующем шаге выбираем модель PS-принтера (в RedMon рекомендуется Apple LaserWriter II NT или Apple Color LaserWriter 12/600 если вы хотите цветное изображение). Я использовал Apple LaserWriter II NT, т.к. мне нужно было черно-белое изображение. Сразу после этого я переименовал принтер в более соответствующее его функциям название: "Send EMail". Теперь нам необходимо настроить порт. Для этого открываем настройки принтера, ищем страницу "Порты" и жмем кнопку "Конфигурировать порт".
Дальнейшие настройки отличаются от стандартных, описанных в redmon.hlp:
* "Redirect this port to the program:"="cscript.exe" (без кавычек, естественно),
* "Arguments for this programs are:"="Наш\Скрипт\С\Полным\Путем.js" (%SystemDrive%\Tools\gs\PrnUser.js) (в кавычках, если путь содержит пробелы),
* "Output:"="Program handles output"
* "Run:"="Hidden"
* "Run as user" снята (у меня вызывало ошибку, если установлено)
* "Shut down delay:"="300"
Кнопка "Log file" нужна во время отладки всей системы отправки почты, хотя можно оставить запись лога и в рабочем режиме - все равно он перезаписывается, а не накапливается.
Соглашения о настройках
Скрипт, который мы указали в настройках порта, принимает данные с принтера и согласно настройкам, сохраненным из внешней программы (1С или другой), отправляет его по почте как рисунок (в скрипте предусмотрены проверки на корректность значений). Поскольку единственное, что мы можем получить из печатного задания - это имя пользователя (%REDMON_USER%), то с каждым пользователем мы будем работать в его каталоге, при этом одновременная печать 2-х заданий от одного пользователя невозможна. (Если вам удастся передать в скрипт другую информацию из 1С, например: уникальный идентификатор задания или имя файла - сообщите мне). У меня используется самописный компонент SysTools для получения профиля пользователя по его имени. Поскольку он еще только в альфа-версии выкладывать не буду, если кому нужен - вышлю по почте. Итак, предположим, у нас есть каталог, в котором хранятся данные пользователей (%MyProfiles%\User1, %MyProfiles%\User2, ...). К личном каталоге пользователя мы будем создавать подкаталог SendMail для отправки почты.
Временные файлы для работы мы будем хранить во временном каталоге (переменная %TEMP% для системы, поскольку запускаться скрипт будет от имени Local service).
Все остальные настройки и пути к файлам заданы в переменных вначале скрипта - их можно (и нужно) изменить для себя.
Файл, в котором 1С сохраняет настройки называется %UserProfile%\SendMail\mail.ini и имеет следующую структуру: каждая строка - поле=значение, кроме поля BODY, которое обязательно идет последним и может быть растянуто на несколько строк.
Пишем программу
В этом разделе будут показаны и пояснены тексты нескольких модулей, входящих в демонстрационную конфигурацию. Скрипт на языке JavaScript здесь описан не будет, поскольку несоответствует тематике раздела. Надеюсь - комментариев внутри скрипта будет достаточно для пожелавших разобраться в его работе.
Поскольку в 1С не предусмотрена модульная организация программ, то сложные вещи я обычно строю по такой схеме: законченная функциональность - во внешней обработке, параметры в которую передаются через СписокЗначений, и вспомагательная процедура/функция в глобальном модуле, которая этот список заполняет из параметров. Так было сделано и здесь.
Функция запроса параметров отправки почты (кому, от кого, тема и пр.) в глобальном модуле выглядит так:
[pagebreak]
В этой функции переданные параметры записываются в список значений, который передается внешней обработке ПараметрыОтправкиПочты.ert в подкаталоге ExtForms каталога базы данных. Запрос параметров имеет вид:
Возвращенные значения записываются в файл, параметры которого (путь, имя, и т.п.) заданы в конце глобального модуля.
В самой обработке ничего интересного нет: чтение параметров из списка, отображение и проверка параметров при нажатии кнопки Отправить. Если не заданы необходимые параметры (ОтКого, Кому) или адреса E-Mail указаны не правильно - будет выдано сообщение и форма не закроется.
Рассмотрим параметры вызова даной функции:
* Заголовок - заголовок формы, на рисунке - синяя надпись "Тестовый документ №3 от 30.04.04";
* Кому, ОтКого, Копия - E-mail или список E-Mail`ов (через ",");
* Тема, Сообщение - соответствующие параметры письма;
* Запретить - какие поля запрещены для редактирования (на рисунке - поле Тема);
* БезФормы - если 1: форма не отображается и при правильных параметрах письмо отправится автоматически.
Следующая функция вызывает эту и если все прошло успешно - вызывает внешнюю обработку для небольшой предподготовки таблицы при печати и отправки ее:
Здесь уже большая функциональность перенесена на обработку. Она (обработка) вообще не открывается, только выполняет некоторые действия. Рассмортим параметры:
* Таб - Значение типа "Таблица", которую и будем печатать;
* Заголовок, Кому, ОтКого, Копия, Тема, Сообщение, Запретить, БезФормы - просто передаются в функцию глПараметрыОтправкиПочты и подробно рассмотрены в ней;
* Масштаб - масштаб печати таблицы. Если не задан - автомасштаб по ширине.
В обработке всего 2 процедуры: ПроверитьПараметр для проверки корректности переданных значений и ПриОткрытии, в которой подготавливается и печатается таблица. Выглядит весь модуль обработки так:
Код: (1c)
Вот практически и все, что касается программы в 1С. Некоторые сервисные функции, которые не были описаны здесь, можно посмотреть в примере конфигурации. Таким образом ничего сложного здесь нет. Больше сложностей вызывает настройка системы для правильной работы. Выглядит отправленный документ приблизительно так:
Замечания в процессе эксплуатации
Сразу скажу - в боевом режиме система работает недолго (с 15.04.2004), но даже за это время были замечены некоторые "особенности" работы:
* Формат tiff оказался не таким уж стандартным. Потому пришлось его заменить на png. Сделать это нужно в двух местах: в суффиксе исходящего файла в скрипте (чтобы Postie правильно поставил его Content-Type:) и в настройках GS (параметр -sDEVICE=pngmono собственно и задает выходной формат файла). Можно заменить и на еще более стандартный jpeg, но при этом сильно вырастет размер файла. К сожалению gif уже не поддерживается в текущей версии GS (как я понял из документации - из-за возможных проблем с лицензированием этого формата). Можно добится поддержки gif, выдрав ее из исходников предыдущих версий и перекомпилировав текущую, но я пока этого не делал. Возникла мысль передавать в настроечном файле (%UserProfile%\SendMail\mail.ini) параметры, как отправлять изображения (jpeg, tif, png; color/mono; ...) и в скрипте динамически менять.
* PostScript шрифты, идущие в поставке GS, не так хорошо "вылизаны", как TrueType. Потому русские буквы выглядят жирнее англиских. Пока жалоб на это не было :-)
* В новой версии Postie у меня почему-то не работает ключ -bcc (ошибки не выдает, но и не отправляет по указанным адресам). Так и не разобрался - пришлось откатится на старую версию (POSTIE Version 4)
* Хотя ломать ничего и не пришлось, но все-таки мы нарушаем лицензию Postie, который "free for personal use". Может кто знает другую программу отправки почты из коммандной строки?
Благодарности
Моему любимому директору - за неуемный ум и новые интересные задания.
Вадиму Ханасюку - за неопубликованную здесь, но полезную компоненту SysInfo (получение каталога профиля пользователя по имени) и помощь в поиске нужного софта.
Всем сотрудникам, которые не мешали работать.
Сегодня все более актуальной становится проблема перегруженности кабельной канализации, решить которую можно с помощью микротраншейной прокладки волоконно-оптических кабелей. Совершенствование телекоммуникационного оборудования позволяетзначительно сокращать площадь, занимаемую станционным оборудованием, при этом многократно наращивая мощность.
В отношении линейных сооружений такие тенденции, к сожалению, практически не наблюдаются. Развитие сетей операторов связи, а также ведомственных сетей приводит к тому, что существующая кабельная канализация оказывается перегруженной, и дополнительная прокладка кабелей невозможна. Кроме того, следует учитывать, что волоконно-оптические кабели необходимо прокладывать в свободных каналах кабельной канализации, в которые впоследствии могут быть проложены другие волоконно-оптические кабели. В канале кабельной канализации, занятом кабелем с металлическими проводниками, допускается совместная прокладка волоконно-оптических кабелей только в защитной полиэтиленовой трубке. Однако часто в каналах отсутствует место для прокладки кабелей в полиэтиленовых трубках. В такой ситуации приходится выполнять докладку каналов кабельной канализации, а это весьма дорогостоящая процедура. Чаще всего возникает необходимость докладки каналов в центральных районах, и без того перенасыщенных подземными коммуникациями (это, как правило, районы с высокой деловой активностью).
Надо отметить, что разрытие влечет за собой многочисленные неудобства: создает препятствия передвижению транспорта и пешеходов, ухудшает внешний вид улиц. В местах пересечений с коммуникациями сторонних организаций необходимо привлекать представителей этих организаций. Работы часто приходится проводить в сжатые сроки, в том числе и в ночное время. Для движения пешеходов через зоны разрытий устраиваются временные переходы с ограждениями, в темное время суток предусматривается освещение. Кроме того, по окончании работ проводятся ре-культивационные мероприятия, а также восстановление покрытия дорожного полотна (асфальтирование, укладка плитки и пр.). Действующие инструкции рекомендуют проводить ручным способом работы по рытью траншей и котлованов в стесненных городских условиях. Это создает дополнительные проблемы, особенно в зимний период. Городские власти с неохотой позволяют осуществлять разрытия в центральных районах города. Таким образом, есть целый комплекс проблем, препятствующих развитию проводных сетей в районах, где они более всего необходимы. Поиск путей решения этих проблем заставляет обратиться к опыту зарубежных партнеров. Одним из эффективных методов является применение микротраншейной прокладки волоконно-оптических кабелей.
Механизмы микротраншейной прокладки
Методика микротраншейной прокладки основана на использовании специализированных механизмов. Они представляют собой фрезу на шасси трактора для снятия дорожного покрытия и устройство для удаления пыли, песка, гравия и других мелких фракций. Эти механизмы могут быть совмещены в один или же, наоборот, разделены, соответственно распределяя технологическую операцию подготовки траншеи к инсталляции кабеля на два этапа – вскрытия асфальта и очистки микротраншеи. В качестве устройства очистки может применяться компрессор, а также вакуумный или водяной насос. Соответственно, посторонние частицы выдуваются воздушным потоком, отсасываются или же вымываются водяным потоком, который подается под напором.
Как правило, прокладка кабеля в грунт осуществляется в траншею на глубину 1,2 м (кроме скальных и прочих плотных грунтов IV и выше категории) согласно действующим нормам. Такая глубина считается достаточной для надежной защиты линейно-кабельных сооружений, эксплуатируемых вне помещений, от несанкционированного доступа и влияния факторов окружающей среды. В городских условиях для упорядочивания коммуникаций строится кабельная канализация, которая обеспечивает дополнительную защиту линейно-кабельных сооружений.
Различными разработчиками волоконно-оптических кабелей предлагаются разные варианты технологии прокладки кабеля в микротраншею. Эти варианты имеют общую технологическую операцию – заглубление. Идея микротраншейной технологии заключается в том, чтобы при значительном сокращении земляных работ обеспечить надежную защиту кабелей. Дополнительной защитой от наиболее вероятного внешнего механического и температурного воздействия служит само дорожное полотно.
Схема функциональных устройств при прокладке оптического кабеля в микротраншею
Существуют технологии прокладки волоконно-оптических кабелей специальной конструкции непосредственно в микротраншею, а также прокладка специальных каналов для последующей инсталляции в них волоконно-оптических кабелей.
Прокладка волоконно-оптических кабелей непосредственно в грунт
С помощью специализированных механизмов в полотне дороги проделывается микротраншея шириной до 15 мм и глубиной от 40 до 100 мм, в которую укладывается специализированный волоконно-оптический кабель. Проложенный кабель накрывается жгутом из пористой резины, диаметр жгута подобран таким образом, чтобы он плотно укладывался в траншею и служил распоркой. После этого траншея заливается битумом.
Кабель, предназначенный для такого способа инсталляции, представляет собой конструкцию monotube и состоит из одного металлического модуля, выполненного из медного сплава, внутри которого содержатся оптические волокна. Внутреннее пространство модуля с волокнами заполняется гидрофобным компаундом. Внешний диаметр модуля составляет 5 мм. Модуль содержит пучки оптических волокон. Для идентификации оптические волокна в одном пучке имеют различную окраску, а каждый пучок имеет обмотку из цветных синтетических нитей. Количество оптических волокон в пучке – до 12 штук. Кабель может содержать до 5 пучков оптических волокон. Таким образом, количество оптических волокон в кабеле может достигать шестидесяти. Снаружи кабель покрыт защитной полиэтиленовой оболочкой. Наружный диаметр кабеля составляет 7 мм, вес – порядка 110 кг/км.
Волоконно-оптический кабель для микротраншейной прокладки
Такая конструкция волоконно-оптического кабеля обеспечивает высокую устойчивость к температурным колебаниям и механическим воздействиям. Допустимое усилие на разрыв составляет 1 кН. Допустимый радиус изгиба при прокладке – 70 мм. Диапазон рабочих температур – от -40 до+70°С.
Следует заметить, что, как и в случае с другими волоконно-оптическими кабелями, инсталляционные работы должны проводиться при температуре окружающей среды не ниже -5°С.
Для сращивания строительных длин волоконно-оптического кабеля разработаны специальные муфты, предназначенные для установки на поверхности грунта таким образом, чтобы люк муфты оказывался на одном уровне с дорожным покрытием. Это муфты проходного типа. Корпус круглой формы выполнен из нержавеющей стали и рассчитан на сращивание до двух строительных длин кабеля, то есть имеет 4 кабельных ввода. Существуют модификации муфт для сращивания волоконно-оптических кабелей различной емкости. Корпус муфты имеет круглую форму, диаметр рассчитан таким образом, чтобы обеспечить возможность выкладки технологического запаса оптических волокон внутри корпуса муфты.
Кабельные вводы располагаются в нижней части корпуса муфты, герметизируются механически путем обжима патрубка муфты вокруг металлического модуля кабеля с помощью обжимного инструмента. Затем место стыка защитной полиэтиленовой оболочки кабеля и кабельного ввода муфты может быть дополнительно защищено термоусаживаемой трубкой для предотвращения проникновения влаги под оболочку. Такой способ герметизации обеспечивает надежную долговременную защиту муфты от проникновения влаги.
Микротраншейная прокладка кабельных каналов
Способ подготовки микротраншеи для инсталляции аналогичен способу прокладки кабеля непосредственно в грунт, за исключением размеров микротраншеи. Для прокладки каналов проделывается микротраншея шириной 100 мм и глубиной порядка 250 мм. В нее прокладывается 1–2 канала, содержащих до 7 субканалов для прокладки кабелей: один центральный и 7 периферийных. Внутренний диаметр каналов составляет 10 мм. После укладки каналов микротраншея заливается легким бетоном, а затем восстанавливается асфальтовое покрытие. Для расположения муфт и технологического запаса волоконно-оптического кабеля устраиваются специальные микроколодцы, представляющие собой пластиковые или металлические короба, заглубленные в грунт и вмурованные в асфальт. Горловина микроколодца закрывается крышкой или люком с замком, препятствующим несанкционированному доступу. Ввод каналов с кабелями осуществляется через стенки с последующей герметизацией места ввода. Муфта закрепляется на стенке микроколодца, а технологический запас кабеля выкладывается в форме восьмерки. За счет небольшого внешнего диаметра кабеля минимально допустимый радиус изгиба кабеля – около 150 мм.
Сечение микротраншей с проложенным кабелем
Строительство традиционных смотровых устройств кабельной канализации предусматривает значительный объем земляных работ, включающих в себя рытье котлована, вывоз излишков грунта, трамбовку грунта на дне котлована во избежание проседания под весом железобетонной конструкции. При строительстве необходима также техника для разгрузки железобетонных элементов колодца.
Поскольку микроколодцы располагаются на поверхности грунта, а их размеры и вес гораздо меньше стандартных смотровых устройств кабельной канализации, необходимы значительно меньшие затраты на их строительство. В первую очередь это достигается за счет значительного сокращения объемов земляных работ, а также за счет уменьшения трудозатрат.
Для данной методики разработаны специальные микрокабели, представляющие собой типичные кабели конструкции loose tube, но с оптическими модулями уменьшенного диаметра. Благодаря использованию таких технологических решений и совершенствованию материалов кабеля удалось уменьшить наружный диаметр кабеля до 7,2 мм без снижения механической прочности, то есть устойчивости к растягивающим и раздавливающим усилиям, к удару, кручению, изгибу, а также к температурным колебаниям. Такой кабель содержит до 6 оптических модулей, в каждом из которых может быть до 12 оптических волокон. Таким образом, общее количество оптических волокон в кабеле может достигать 72. Выпускаются также модификации этих кабелей, содержащие 8 и 12 оптических модулей и, соответственно, 96 и 144 оптических волокна.
Поскольку основная масса подземных коммуникаций располагается в канализациях и коллекторах, которые находятся на глубине не менее 1 м, а глубина микротраншеи значительно меньше, существенно снижается вероятность повреждения сторонних коммуникаций в процессе инсталляции. Упрощается также процесс согласования строительных работ на этапе проектирования.
При использовании стандартных методик строительства кабельной канализации скорость инсталляции составляет до 300 м в день. Использование микротраншейной технологии позволяет увеличить скорость строительства до нескольких километров в день, без учета времени на строительство смотровых устройств, где преимущества этого метода еще более очевидны.
В результате инсталляции одного канала можно получить кабельную канализацию, готовую для прокладки волоконно-оптических кабелей емкостью до полутысячи оптических волокон.
Перспективы
Широкие перспективы применения микротраншейной технологии прокладки волоконно-оптических кабелей обусловлены отсутствием необходимости приобретения дополнительного дорогостоящего оборудования и привлечения зарубежных специалистов для его наладки и обучения персонала. Необходимое для реализации этого метода дорожно-строительное оборудование имеется в наличии в учреждениях, занимающихся эксплуатацией дорог. Достоинством этой технологии прокладки является отсутствие необходимости длительных перерывов движения транспорта. В случае проведения работ на улицах с незначительным транспортным потоком движение вообще можно не перекрывать даже в случае поперечного пересечения.
В заключение необходимо отметить, что микротраншейная технология прокладки волоконно-оптических кабелей намного дешевле традиционных способов строительства кабельной канализации. Применение этой методики позво-ляет значительно сократить трудозатраты и время на проведение строительных работ, а также повысить эффективность труда с помощью механизации. Широкое внедрение микротраншейной технологии на практике позволит интенсифицировать развитие межстанционной сети в мегаполисах и тем самым улучшить качество обслуживания клиентов.
Проблемы соединения волоконных световодов приобрели особую актуальность при разработке технологии их промышленного применения. Выбор способа сращивания зависит от условий применения волоконной оптики.
Очевидно, что значительные преимущества при использовании волоконно-оптических технологий в телекоммуникационной отрасли, связанные с улучшением целого ряда технико-экономических показателей (возрастанием скорости передачи информации, увеличением длины регенерационного участка, уменьшением массогабаритных характеристик кабелей, экономией цветных металлов и др.), предопределят в будущем широкое внедрение волоконной оптики при построении линий связи различных уровней. Однако необходимо было разработать методики сращивания волоконных световодов, обеспечивающие высокие качественные и вместе с тем достаточно технологичные и доступные показатели, чтобы сделать возможным применение этих световодов не только в стационарных, но и в полевых условиях.
Строительная длина волоконно-оптического кабеля на практике устанавливается, исходя из ряда факторов. Прокладка больших длин кабеля неудобна вследствие необходимости сматывания с барабана и манипуляций с кабелем как во время прокладки в полевых условиях (при пересечении других подземных коммуникаций), так и в городских условиях (при прокладке в кабельную канализацию). Прокладывая кабель с помощью кабелеукладочной техники, также возникают неудобства, связанные с манипуляциями большими длинами, если для погрузочно-разгрузочных работ приходится использовать специализированную технику. Особенно остро стоит проблема манипуляции строительными длинами с большой удельной массой при прокладке глубоководных морских кабелей и кабелей для прибрежной зоны. Из-за необходимости инсталляции кабелей максимально возможной длины для их транспортировки по суше используются спаренные железнодорожные платформы, на которых кабели выкладываются в форме "8", а не на кабельные барабаны. Таким образом кабель транспортируется по суше до погрузки на судно.
Для соединения оптических волокон разработаны два способа соединений: разъемные и неразъемные. Неразъемные соединения оптических волокон осуществляются методом сварки, методом склеивания, а также с помощью механических соединителей. Для создания разъемных соединений оптических волокон используются оптические коннекторы.
Соединения оптических волокон с помощью сварки
Соединение оптических волокон с помощью сварки является сегодня наиболее распространенным методом получения неразъемных соединений. Благодаря в достаточной мере совершенной технологии этот метод позволяет получать качественные соединения с низкими показателями вносимых потерь (порядка 0,1-0,15 дБ), что обуславливает его применение на линиях связи, где этот показатель входит в приоритетные - магистральные, зоновые и другие - высокоскоростные ВОЛС.
Сваривание оптических волокон предусматривает оплавление концов волоконных световодов путем помещения их в поле мощного источника тепловой энергии, как, например, поле электрического разряда, пламя газовой горелки, зона мощного лазерного излучения.
Каждый из перечисленных методов имеет свои достоинства и недостатки. Достоинством метода сварки с помощью лазера можно считать возможность получения чистых соединений из-за отсутствия в них сторонних примесей, и, как следствие, достаточно малых вносимых потерь (0,1 дБ и менее). Как правило, в качестве источника лазерного излучения высокой мощности (до 5 Вт) используются газовые лазеры на СО2.
К достоинствам метода сварки с помощью газовой горелки следует также отнести возможность получения соединений оптических волокон, отличающихся высокой прочностью мест сростков. В качестве источника пламени используют смесь пропана с кислородом или соединение кислорода, хлора и водорода. Этот метод распространен по большей части для сварки многомодовых оптических волокон.
Основным достоинством сварки в поле электрического разряда является быстрота и технологичность. Этот метод в настоящее время приобрел наибольшую популярность для сварки одномодовых световодов.
Аппараты для сварки оптических волокон можно классифицировать следующим образом: по способу юстировки свариваемых концов оптических волокон (в зависимости от геометрических размеров сердцевин или от потерь мощности светового сигнала, распространяющегося через место сварки); по способу проведения операций (ручные или автоматические); по типу устройства контроля (микроскоп, монитор на жидких кристаллах); по количеству оптических волокон, которые могут быть сварены одновременно (одно- и многоволоконные).
При сварке оптических волокон в поле электрического разряда можно выделить такие технологические этапы:
* подготовка торцевых поверхностей соединяемых оптических волокон;
* надевание защитной термоусаживаемой гильзы на одно из соединяемых волокон;
* установка подготовленных концов оптических волокон в направляющие системы сварочного аппарата;
* юстировка свариваемых оптических волокон;
* предварительное оплавление торцов оптических волокон (fire cleaning) с целью ликвидации микронеровностей, возникающих в
* процессе скалывания;
* непосредственное сваривание оптических волокон;
* предварительная оценка качества сварки;
* защита места сварки с помощью термоусаживаемой гильзы;
* окончательная оценка качества сварки с помощью рефлектометра.
Существует два способа юстировки. Первый базируется на выравнивании сердцевин свариваемых оптических волокон по их геометрическим размерам (Profile Alignment System PAS) с помощью боковой подсветки концов свариваемых волокон.
Второй способ основан на выравнивании сердцевин оптических волокон по принципу минимизации потерь тестового светового сигнала, распространяющегося через место сварки.
Что касается активной юстировки, то известно три метода.
Первый заключается в использовании оптического излучателя и приемника на противоположных концах оптических волокон, подлежащих сварке. Информация от приемника передается персоналу, производящему сварку.
Второй метод сводится к использованию оптического передатчика на дальнем конце и детектора в точке соединения. Тестовый оптический сигнал выводится из соединяемого оптического волокна на небольшом (примерно 0,5 м) расстоянии от места сварки на изгибе и детектируется приемником, оборудованным измерителем оптической мощности.
Третий метод реализует LID (Local Injection and Detection) - процедуру юстировки, ограниченную исключительно местом соединения. В основу этого метода положено введение тестового оптического сигнала в сердцевину одного из соединяемых оптических волокон и поиск его в сердцевине второго соединяемого волокна путем изгиба.
Метод LID является наиболее эффективным, поскольку, в отличие от метода PAS, качество сварного соединения в большей мере зависит от сварочного аппарата, а не от индивидуального мастерства персонала. В современных сварочных аппаратах для управления процессами юстировки и сварки используются микропроцессоры, с помощью которых возможна оптимизация процесса сварки для получения минимальных (менее 0,1 дБ) потерь в местах соединений оптических волокон.
В процессе оплавления оптические волокна подаются одновременно для предотвращения укорачивания одного из них в месте сварки. Операции оплавления и сваривания, как правило, выполняются автоматически. В современных автоматических сварочных аппаратах для снятия механического напряжения в точке соединения оптических волокон предусмотрен режим прогревания места стыка по окончании процесса сварки. Такой режим называется "режимом релаксации".
Цикл плавления (длительность подачи и сила тока как для предварительного оплавления, так и для сварки и релаксации) для оптических волокон различных производителей и типов различны.
Некоторые сварочные аппараты, кроме рассмотренных выше способов контроля качества места сварки, используют еще и тест на растяжение во избежание нарушения соединения во время манипуляций при выкладке сростков в кассету, а также в дальнейшем, в процессе эксплуатации. Соединенное оптическое волокно прочно закреплено в направляющих платформах (которые используются при юстировке). Под контролем микропроцессора по завершении этапа сварки эти направляющие платформы расходятся в противоположные стороны, образуя строго нормированное продольное усилие на растяжение, приложенное к месту стыка. Считается, что стык, прошедший такое тестирование, более надежен и выполнен более качественно. При невозможности получения стыка, способного пройти этот тест, но удовлетворяющего по параметрам передачи, эту опцию можно отключить.
Особо следует отметить сварку ленточных элементов (ленточных волоконно-оптических кабелей, отличающихся большим количеством оптических волокон). Эту операцию можно проводить, только применяя полностью автоматический сварочный аппарат, с помощью которого можно соединить до 12 оптических волокон приблизительно за 3 минуты, причем средний уровень потерь составит около 0,1-0,15 дБ. Однако для сваривания ленточных элементов необходим опытный, хорошо подготовленный персонал.
Во время сварки оптические волокна размещаются с соответствующим смещением от оси электродов, что обеспечивает равномерное нагревание. До начала процесса сваривания и по его завершении проверяется смещение оптических волокон, состояние торцевых поверхностей, а также деформация.
При сваривании ленточных элементов необходимо, кроме основных процессов, рассмотренных ранее, провести еще три технологические операции: устранить расхождения торцов соединяемых оптических волокон, плавление всех волокон выполнить одновременно с одинаковой температурой, в процессе предварительной оценки измерить уровень вносимых потерь рефлектометром. Если оказалось, что результаты не отвечают требованиям, процесс сварки повторяют.
Как показывает практика, предварительная оценка качества сварных соединений оптических волокон, базирующаяся на методе РАС, может содержать погрешность в диапазоне 5-1000%, поэтому окончательный вывод о качестве сварного соединения стоит делать после измерений рефлектометром.
По мере совершенствования качества сварочного оборудования и технологии сварки возрастают возможности получения сварных соединений оптических волокон высокого качества. Потери на сварных соединениях зависят от нескольких факторов: опыта персонала, геометрических погрешностей свариваемых оптических волокон, а также от материалов, из которых изготовлены волокна. Особенно часто проблемы возникают при сварке оптических волокон различных производителей. Дело в том, что оптические волокна различных производителей изготавливаются с использованием принципиально отличающихся друг от друга технологических процессов. В результате материал оптических волокон - кварцевое стекло - не является идентичным в волокнах различного происхождения, несмотря на то, что параметры оптических волокон, указанные в спецификациях фирм-производителей, отличаются незначительно.
Факторами, определяющими свойства стекла, являются технология изготовления и качество материалов. Многочисленные исследования показали, что тысячные доли процента примесей в кварцевом стекле оказывают большее влияние, чем добавки в десятки процентов тех же компонентов к многокомпонентным стеклам.
Для сварки наибольшее влияние имеют следующие характеристики: плотность, коэффициент теплового расширения, показатель преломления, вязкость и механические характеристики. Эти параметры определяют оптические потери в местах сращивания и должны приниматься во внимание при использовании оптических волокон, произведенных по различным технологиям, в пределах одного элементарного кабельного участка ВОЛС. Особое внимание следует уделять идентификации оптических волокон в кабеле по типу, производителю и технологии изготовления.
Более совершенные аппараты для сварки оптических волокон содержат программы, оптимизирующие процесс сварки для оптических волокон различных типов и различных производителей, однако на практике нередки ситуации, когда, используя стандартные программы, невозможно получить качественную сварку. В этих случаях необходимо самостоятельно корректировать параметры процесса (время и ток, подаваемый на электроды) для достижения оптимальных результатов.
[pagebreak]
Наиболее часто сварка оптических волокон различных производителей производится при оконцовке оптических волокон пигтейлами, а также при ремонтно-восстановительных работах, если эксплуатационный запас кабеля израсходован, и приобретение полностью идентичного кабеля невозможно (к примеру, по причине снятия с производства оптического волокна такого типа, который использовался первоначально) или экономически нецелесообразно.
В общем виде величина потерь в местах сварных соединений может быть представлена как суммарная величина: Dобщ = Dор + Dдм + Dую + Dнм + Dрпп, где: Dобщ - суммарная величина потерь в сварке; Dор - потери из-за осевого рассогласования модовых полей равного диаметра; Dдм - потери из-за разницы диаметров модовых полей; Dую - потери от погрешности угловой юстировки осей оптических волокон; Dнм - потери, обусловленные не-круглостью модовых полей; Dрпп - потери из-за разницы показателей преломления.
Изучение параметров и характеристик различных одномодовых оптических волокон показывает, что разброс величины диаметра модового поля для l = 1310.1330 нм или l = 1500...1550 нм может составлять от 10,5 до 21,7% (9,2 0,5 мкм). Такое рассогласование приводит к появлению потерь от 0,05 дБ до 0,25 дБ (с положительным знаком, когда излучение проходит из волокна с большим диаметром в волокно с меньшим диаметром, и отрицательным - в противоположном направлении). Эти потери будут иметь место, даже если аппарат расположит соосно два волокна с разными диаметрами сердцевин, у которых эксцентриситет пренебрежительно мал. Обычно разброс величины модового поля оптического волокна не превышает 14%, таким образом, величина этой составляющей - не более 0,1 дБ.
Составляющая Dую практически не компенсируется современным сварочным оборудованием. Установлено, что углы между осями сердцевин 0,5°; 1°; 1,5°; 2° вызывают приращение потерь соответственно в 0,08; 0,34; 0,77 и 1,5 дБ. Таким образом, благодаря надлежащей подготовке торцов соединяемых оптических волокон при скалывании можно уменьшить потери - необходимо обеспечить наименьший (не более 0,5°) угол между плоскостями торцов оптических волокон. В этом случае величина потерь не превысит 0,08 дБ.
Составляющая Dнм учитывает влияние некруглости модового поля. По приблизительным оценкам она равна 0,05 дБ.
При соединении сваркой оптических волокон, имеющих неконцентричность модового поля, часто возникает нарушение юстировки сердцевин вследствие действия сил поверхностного натяжения. Это нарушение можно минимизировать следующими способами:
* сокращение времени плавления за счет неполного сваривания оптических волокон или же сокращение длины свободного конца оптического волокна в сварочном устройстве, чтобы концы оптических волокон в процессе сварки могли перемещаться на очень малое расстояние;
* использование компенсационных программ, таких как управление смещением сердцевины с помощью метода умышленного смещения осей.
Такой режим получил название RTC (Real Time Control). В этом режиме после юстировки сердцевин свариваемых оптических волокон и проведения процедуры предварительного оплавления происходит компенсация поперечного смещения сердцевин в сторону, противоположную производной расхождения.
Сварка оптических волокон осуществляется посредством чередования коротких импульсов тока высокой интенсивности с импульсами тока низкой интенсивности (релаксационными импульсами). При этом после сваривания в электрическом поле импульса высокой интенсивности в поле релаксационного импульса происходит перемещение оптических волокон под действием поверхностного натяжения. Количество чередующихся импульсов зависит от смещения сердцевин оптических волокон, которое постоянно контролируется сварочным аппаратом; как правило, количество импульсов не превышает 2-3.
Весьма существенное влияние на общую величину потерь, если свариваются оптические волокна с разными показателями преломления (N) сердцевины, может оказать составляющая Dрпп. Эта составляющая учитывает потери мощности оптического сигнала в результате несоблюдения условия полного внутреннего отражения на месте стыка двух оптических волокон, у которых показатели преломления сердцевин имеют различия. В этом случае часть оптического сигнала проникает через оболочку волокна и рассеивается. Ситуация усугубляется многократным отражением луча от границы "сердцевина/оболочка", каждое из которых (отражений) служит источником потери мощности. На практике нередки случаи, когда даже многократные повторные сварки не позволяют добиться малой величины потерь.
Наибольший вклад в суммарную величину потерь вносят потери от погрешности угловой юстировки осей оптических волокон и потери из-за разницы показателей преломления.
Международная электротехническая комиссия предлагает в качестве типичной характеристики сварного соединения оптических волокон, полученного в полевых условиях, величину вносимых потерь, равную 0,2 дБ (IEC 1073-1). При современном развитии технологии сварки оптических волокон этот показатель вполне достижим даже тем персоналом, который не обладает значительным опытом в этой области.
Соединение оптических волокон методом склеивания
Практически одновременно с методом сварки был разработан метод склеивания оптических волокон. Для получения клеевых соединений используют совмещение и фиксацию оптических волокон: в капилляре, в трубке с прямоугольным сечением, с помощью V-образной канавки и с помощью трех стержней в качестве направляющих. Оптические волокна соединяются поодиночке.
Технология получения таких соединений состоит из следующих этапов:
* подготовка оптических волокон к соединению (очистка, снятие буферных покрытий, скалывание);
* ввод оптического волокна в капилляр;
* наполнение иммерсионной жидкостью, гелем или клеем;
* регулирование соединения, юстировка оптических волокон;
* нанесение адгезивного вещества;
* цементирование адгезивного вещества с помощью ультрафиолетового излучения.
Клей, используемый для оптических волокон, должен иметь коэффициент преломления, близкий к коэффициенту преломления волокон. Он должен обеспечивать фиксированное положение соединенных оптических волокон, защищать место сращивания от воздействий окружающей среды, гарантировать прочность сростка при воздействии нагрузок в осевом направлении. К достоинствам этого метода следует отнести оперативность и отсутствие деформации сердцевин соединяемых оптических волокон. Это способствует тому, что в области стыка - малые потери, обеспечиваются хорошие механические свойства и т.п. Однако ограниченный срок службы и нестабильность во времени, а также весьма высокая чувствительность к повышению температуры и воздействию влажности являются факторами, сдерживающими распространение этого метода получения неразъемных соединений. В настоящее время он уступил свои позиции методу соединения оптических волокон с помощью механических соединителей.
Механические соединители оптических волокон
Механические соединители оптических волокон разрабатывались как более дешевый и быстрый способ сращивания оптических волокон. Применение аппарата для сварки оптических волокон сопряжено с необходимостью соблюдения ряда условий: для работы используется помещение, параметры которого (температурный диапазон, влажность, давление, вибрации и проч.) соответствуют требованиям производителей сварочного оборудования; также необходима организация питания от сети переменного тока с достаточно жестко регламентированными параметрами. При стоимости комплекта оборудования для сварки оптических волокон, составляющей десятки тысяч долларов США, амортизационные отчисления, а также техническое обслуживание и ремонт являются довольно дорогостоящими.
Достаточно высокие требования предъявляются также к персоналу, производящему работы по сварке оптических волокон. Часто этими же лицами производится наладка и обслуживание аппаратов для сварки оптических волокон (очистка направляющих поверхностей и зажимов, замена электродов и проч.), для чего требуются специалисты с высоким уровнем квалификации.
Всех этих сложностей можно избежать, применяя механические соединители оптических волокон. Конструкция оптических соединителей относительно проста. Основными узлами являются направляющие для двух оптических волокон и устройство фиксации волокон. Внутреннее пространство заполняется тиксотропным гелем для защиты открытых участков оптических волокон от воздействия влаги. Одновременно гель обладает иммерсионными свойствами - его показатель преломления близок к показателю преломления сердцевины волокна.
Процедура монтажа оптических соединителей является частью процедуры монтажа промежуточного или оконечного устройства - кабельной муфты, бокса или стойки. Размеры и форма оптических соединителей позволяют устанавливать их в кассету муфты или бокса аналогично сросткам оптических волокон, полученных путем сварки.
Процедура монтажа включает в себя следующие технологические операции:
* разделка кабелей;
* очистка оптических волокон от гидрофобного геля (при его наличии);
* снятие буферных покрытий соединяемых оптических волокон на участках длиной, рекомендуемой производителями оптических соединителей конкретного типа;
* скалывание оптических волокон;
* проверка качества скола волокон;
* введение соединяемых волокон в отверстия с направляющими;
* позиционирование волокон в соединителе для достижения оптимальных параметров соединения;
* фиксация оптических волокон в соединителе;
* тестовые измерения соединения.
Особое место среди оптических механических соединителей занимает RMS (Rotary Mechanical Splice) как наиболее сложный среди аналогов. Процесс его монтажа наиболее трудоемок, однако он позволяет достичь наименьших потерь при соединении одномодовых волокон. В отличие от остальных соединителей, где величина потерь главным образом зависит от качества скола торцевых поверхностей оптических волокон, этот соединитель позволяет юстировать волокна простым вращением вокруг своей оси стеклянных втулок, удерживающих подготовленные оптические волокна, и добиваться наилучших результатов.
Следует отметить, что применение механических соединителей является наиболее быстрым способом соединения оптических волокон. При этом вносимое затухание практически не отличается от затухания, создаваемого сварным соединением. Достаточно устойчивое функционирование механических соединителей в процессе эксплуатации позволяет уже сегодня рекомендовать их для широкого внедрения на телекоммуникационных сетях с невысокими требованиями к качеству соединений, а также в случаях, когда использование аппарата для сварки оптических волокон технологически затруднено или вообще невозможно. В дальнейшем статистика технической эксплуатации, а также совершенствование материалов компонентов механических соединителей, вероятно, определит их более широкое применение для строительства телекоммуникационных волоконно-оптических линий различных уровней.
Обращает на себя внимание тот факт, что механические соединители оптических волокон условно допускают однократное использование, однако на практике встречаются ситуации их многократного применения. Производители гарантируют качество соединения оптических волокон при повторном монтаже соединителя не более 2-3 раз, однако при повторном наполнении внутреннего пространства иммерсионным гелем (в тех конструкциях, где это предусмотрено) такие соединители использовались многократно без ущерба для качества стыков. Некоторыми производителями механических соединителей разработаны механизмы фиксации, предусматривающие использование специального ключа для открытия фиксатора.
Сегодня использование механических соединителей наиболее удобно при проведении аварийного ремонта волоконно-оптическихлиний для технологической операции организации временной вставки.
Процесс загрузки компьютера казалось бы изучен нами до мелочей: кнопка - BIOS - операционная система - логин... А ты задумывался когда-нибудь о том что же на самом деле происходит в это время внутри твоего компьютера? Можешь по шагам рассказать как работает компьютер? Уверен, что нет. Поэтому сегодня проведем короткий ликбез - расскажем о том, как же на самом деле загружается компьютер. Эта статья рассматривает работу Windows XP, в остальных системах процесс, естественно, несколько отличается.
Включается тумблер питания. Блок питания проводит самодиагностику. Когда все электрические параметры в норме БП посылает сигнал Power Good процессору. Время между включением питания и уходом сигнала обычно 0.1-0.5 секунд.
Таймер микропроцессора получает сигнал Power Good. С получением этого сигнала таймер перестает посылать сигнал Reset процессору, позволяя тому включиться.
CPU начинает выполнять код ROM BIOS. Процессор загружает ROM BIOS начиная с адреса FFFF:0000. По этому адресу прописан только переход на адрес настоящего кода BIOS ROM.
Система выполняет начальный тест железа. Каждая ошибка, встречающаяся на этом этапе сообщается определенными звуковыми кодами (в прошлом биканьем, сейчас уже вероятно более современно - голосом), так как видео система еще не инициализирована.
BIOS ищет адаптеры, которые могут потребовать загрузки своего BIOS-а. Самым типичным случаем в этом случае является видео карта. Загрузочная процедура сканирует память с адреса C000:0000 по C780:0000 для поиска видео ROM. Таким образом загружаются системы всех адаптеров.
ROM BIOS проверяет выключение это или перезагрузка. Процедура два байта по адресу 0000:0472. Любое значение отличное от 1234h является свидетельством "холодного" старта.
Если это включение ROM BIOS запускает полный POST (Power On Self Test). Если это перезагрузка, то из POST процедуры исключается проверка памяти. Процедуру POST можно разделить на три компоненты:
* Видео тест инициализирует видео адаптер, тестирует карту и видео память, показывает конфигурацию или возникшие ошибки.
* Идентификация BIOS-а показывает версию прошивки, производителя и дату.
* Тест памяти проверяет чипы памяти и подсчитывает размер установленной памяти.
Ошибки, которые могут возникнуть в ходе POST проверки можно разделить на смертельные и не очень :). Во втором случае они показываются на экране, но позволяют продолжить процесс загрузки. Ясно, что в первом случае процесс загрузки останавливается, что обычно сопровождается серией бип-кодов.
BIOS читает конфигурационную информацию из CMOS. Небольшая область памяти (64 байт) питается от батарейки на материнской платы. Самое главное для загрузки в ней - порядок, в котором должны опрашиваться приводы, какой из них должен быть первым - дисковод, CD-ROM или винчестер.
Если первым является жесткий диск, BIOS проверяет самый первый сектор диска на наличие Master Boot Record (MBR). Для дисковода проверяется Boot Record в первом секторе. Master Boot Record - первый сектор на цилиндре 0, 0 головке, 512 байт размером. Если она находится, то загружается в память по адресу 0000:7C00, потом проверяется на правильную сигнатуру - два последних байта должны быть 55AAh. Отсутствие MBR или этих проверочных байт останавливает процесс загрузки и выдает предупреждение. Сама MBR состоит из двух частей - системного загрузчика (partition loader или Boot loader), программы, которая получает управление при загрузке с этого жесткого диска; таблицы разделов (партиций), которая содержит информацию о логических дисках, имеющихся на жестком диске.
Правильная MBR запись записывается в память и управление передается ее коду. Процесс установки нескольких операционных систем на один компьютер обычно заменяет оригинальный лоадер на свою программу, которая позволяет выбрать с какого диска производить остальную загрузку.
Дальше Boot Loader проверяет таблицу партиций в поисках активной. Загрузчик дальше ищет загрузочную запись (Boot Record) на самом первом секторе раздела. В данном случае Boot Record это еще 512 байт - таблица с описанием раздела (количество байт в секторе, количество секторов в кластере и т.п.) и переход на первый файл операционной системы (IO.SYS в DOS).
Операционная система.
Управление передается операционной системы. Как же она работает, как проходит процесс загрузки?
Boot Record проверяется на правильность и если код признается правильным то код загрузочного сектора исполняется как программа. Загрузка Windows XP контролируется файлом NTLDR, находящемся в корневой директории системного раздела. NTLDR работает в четыре приема:
1. Начальная фаза загрузки
2. Выбор системы
3. Определение железа
4. Выбор конфигурации
В начальной фазе NTLDR переключает процессор в защищенный режим. Затем загружает соответствующий драйвер файловой системы для работы с файлами любой файловой системы, поддерживаемой XP. Если кто забыл, то наша любимая ОСь может работать с FAT-16, FAT-32 и NTFS.
Если в корневой директории есть BOOT.INI, то его содержание загружается в память. Если в нем есть записи более чем об одной операционной системе, NTLDR останавливает работу - показывает меню с выбором и ожидает ввода от пользователя определенный период времени. Если такого файла нет, то NTLDR продолжает загрузку с первой партиции первого диска, обычно это C:\.
Если в процессе выбора пользователь выбрал Windows NT, 2000 или XP, то проверяется нажатие F8 и показ соответствующего меню с опциями загрузки. После каждой удачной загрузки XP создает копию текущей комбинации драйверов и системных настроек известную как Last Known Good Configuration. Этот коллекцию можно использовать для загрузки в случае если некое новое устройство внесло разлад в работу операционной системы.
Если выбранная операционная система XP, то NTLDR находит и загружает DOS-овскую программу NTDETECT.COM для определения железа, установленного в компьютере. NTDETECT.COM строит список компонентов, который потом используется в ключе HARDWARE ветки HKEY_LOCAL_MACHINE реестра.
Если компьютер имеет более одного профиля оборудования программа останавливается с меню выбора конфигурации.
После выбора конфигурации NTLDR начинает загрузку ядра XP (NTOSKRNK.EXE). В процессе загрузки ядра (но перед инициализацией) NTLDR остается главным в управлении компьютером. Экран очищается и внизу показывается анимация из белых прямоугольников. Кроме ядра загружается и Hardware Abstraction Layer (HAL.DLL), дабы ядро могло абстрагироваться от железа. Оба файла находятся в директории System32.
NTLDR загружает драйвера устройств, помеченные как загрузочные. Загрузив их NTLDR передает управление компьютером дальше. Каждый драйвер имеет ключ в HKEY_LOCAL_MACHINE\SYSTEM\Services. Если значение Start равно SERVICE_BOOT_START, то устройство считается загрузочным. Для кажого такого устройства на экране печатается точка.
NTOSKRNL в процессе загрузки проходит через две фазы - так называемую фазу 0 и фазу 1. Первая фаза инициализирует лишь ту часть микроядра и исполнительные подсистемы, которая требуется для работы основных служб и продолжения загрузки. На этом этапе на экране показывается графический экран со статус баром. XP дизейблит прерывания в процессе фазы 0 и включает их только перед фазой 1. Вызывается HAL для подготовки контроллера прерываний. Инициализируются Memory Manager, Object Manager, Security Reference Monitor и Process Manager. Фаза 1 начинается когда HAL подготавливает систему для обработки прерываний устройств. Если на компьютере установлено более одного процессор они инициализируются. Все исполнительные подсистемы реинициализируются в следующем порядке:
Инициализация Менеджера ввода/Вывода начинает процесс загрузки всех системных драйверов. С того момента где остановился NTLDR загружаются драйвера по приоритету. Сбой в загрузке драйвера может заставить XP перезагрузиться и попытаться восстановить Last Known Good Configuration.
Последняя задача фазы 1 инициализации ядра - запуск Session Manager Subsystem (SMSS). Подсистема ответственна за создание пользовательского окружения, обеспечивающего интерфейс NT. SMSS работает в пользовательском режиме, но в отличии от других приложений SMSS считается доверенной частью операционной системы и "родным" приложением (использует только исполнительные функции), что позволяет ей запустить графическую подсистему и login.
SMSS загружает win32k.sys - графическую подсистему. Драйвер переключает компьютер в графический режим, SMSS стартует все сервисы, которые должны автоматически запускаться при старте. Если все устройства и сервисы стартовали удачно процесс загрузки считается удачным и создается Last Known Good Configuration.
Процесс загрузки не считается завершенным до тех пор, пока пользователь не залогинился в систему. Процесс инициализируется файлом WINLOGON.EXE, запускаемым как сервис и поддерживается Local Security Authority (LSASS.EXE), который и показывает диалог входа в систему. Это диалоговое окно показывается примерно тогда, когда Services Subsystem стартует сетевую службу.
Напомним, что IP относится к группе протоколов TCP/IP. Протокол TCP реализует транспортные функции модели OSI (Open Systems Interconnection), ее четвертого уровня. Его основная обязанность - обеспечение надежной связи между начальной и конечной точками пересылки данных. IP располагается в OSI на сетевом, или третьем, уровне; он должен поддерживать передачу маршрутизаторам адресов отправителя и получателя каждого пакета на всем пути его следования.
Маршрутизаторы и коммутаторы третьего уровня считывают записанную в пакетах по правилам IP и других протоколов третьего уровня информацию и используют ее совместно с таблицами маршрутизации и некоторыми другими интеллектуальными средствами поддержки работы сети, пересылая данные по сетям TCP/IP любого масштаба - от "комнатной" до глобальной, охватывающей всю планету.
Процесс маршрутизации начинается с определения IP-адреса, уникального для станции-отправителя (адреса источника), который может быть постоянным или динамическим. Каждый пакет содержит такой адрес, длина которого, в соответствии с современной спецификацией IPv4, составляет 32 бита.
Кроме того, в заголовке пакета записан IP-адрес его места назначения. Если отправляющая станция определяет, что адрес доставки не локальный, пакет направляется маршрутизатору первого сетевого сегмента. Этот маршрутизатор определяет IP-адрес пакета и проверяет по своей таблице, не расположена ли станция получателя в локальной физически подключенной к нему сети, которая называется IP-подсетью (обычно она назначается для всех сетевых интерфейсов маршрутизатора). Если же выясняется, что IP-адрес получателя локальный, маршрутизатор начинает искать внутреннее хранилище IP- и MAC-адресов локальных устройств - ARP-кэш (Adress Resolution Protocol), позволяющий сопоставлять IP- и MAC-адреса.
При обнаружении нужного MAC-адреса маршрутизатор помещает его в заголовок пакета (удаляя собственный MAC-адрес, который больше не нужен) и направляет пакет по месту назначения. Если MAC-адрес получателя не найден в ARP-кэше, маршрутизатор пересылает ARP-запрос в подсеть, соответствующую IP-адресу получателя пакета, где конечная станция с этим IP-адресом передает ответ на запрос, содержащий необходимый MAC-адрес. Затем маршрутизатор обновляет содержимое кэша, устанавливает новый MAC-адрес в заголовке пакета и отправляет его. Если пакет не предназначен для локальной подсети, маршрутизатор направляет его на маршрутизатор следующего сегмента по MAC-адресу последнего.
Процесс построения и обновления таблиц маршрутизации практически непрерывен. Он осуществляется средствами, использующими интеллектуальные протоколы обнаружения, например RIP или OSPF. В таблице каждого маршрутизатора указан оптимальный маршрут до адреса назначения или до маршрутизатора следующего сегмента (если адрес не принадлежит локальной подсети). Последовательно просматривая собственные таблицы маршрутизации, соответствующие устройства передают пакет "по этапу", запрашивая, при необходимости, MAC-адрес конечной станции. Этот процесс продолжается до тех пор, пока пакет не доберется до пункта назначения.
Однако при пересылке пакета через множество сетевых сегментов существует опасность образования "петель": неправильно сконфигурированный маршрутизатор постоянно возвращает пакет тому маршрутизатору, через который данный пакет уже проходил. Во избежание этого в IP предусмотрена TTL-функция (time-to-live), позволяющая задать предел времени путешествия пакета по сети. Значение TTL устанавливается заранее и уменьшается на единицу при каждом прохождении любого сегмента. Если величина TTL становится равной нулю, пакет удаляется, а маршрутизатор отсылает отправителю сообщение ICMP.
Механизм IP- маршрутизации
1. Маршрутизатор проверяет IP-адрес входящего пакета и просматривает т аблицу, определяя, не является ли пунктом назначения локальная сеть.
2. Если IP-адрес назначения локальный, то маршрутизатор находит во внутреннем хранилище IP- и MAC-адресов локальных устройств MAC-адрес места назначения, помещает его в заголовок пакета и направляет пакет получателю.
3. Если MAC-адрес получателя не обнаруживается, маршрутизатор должен послать запрос о нем по IP-адресу получателя. Если после просмотра таблицы выясняется, что пакет не предназначен для локальной сети, маршрутизатор переправляет его маршрутизатору следующего сетевого сегмента, используя MAC-адрес последнего.
Реферал - это url, с которого посетитель приходит на ваш сайт. К примеру, на странице http://www.site.com/links.html есть ссылка на ваш сайт. Если человек нажмет на нее, то он попадет на ваш сайт. Тогда url http://www.site.com/links.html будет вашим рефералом. Каждому владельцу ресурса не будет лишним знать, откуда именно заходят посетители на его сайт. Для тех, кому интересно решение данной проблемы (задачи) с помощью PHP, и посвящена данная статья.
Не спорю, что у любой уважающей себя CMS (content management system, система управления содержанием) есть модули (боты), которые отвечают за сбор статистики. Для тех же, у кого на сайте не стоит CMS, есть возможность попрактиковаться в написании и конфигурировании собственного мини-модуля статистики.
Его можно реализовать в небольшом скрипте, который будет отслеживать нажатия на ссылки, записывать их URL'ы в базу данных (в нашем примере это MySQL) и генерировать статистику в виде графика. Да и поможет разобраться, как это все работает на самом деле, не копаясь в модулях сторонних разработчиков.
Нам потребуется три файла:
* referer.sql (запрос к БД на создание таблицы, где будет храниться статистика);
* referer.php (сам скрипт);
* viewreferer.php (скрипт для просмотра статистики).
Для создания таблицы referer необходимо выполнить запрос referer.sql. Вот его содержание:
Теперь займемся файлом referer.php. Зададим значения переменным:
.
.
.
.
.
.
.
.
.
.
.
.
В переменную $ref заносим информацию о ссылке-реферере:
.
.
С помощью функции strtolower переводим значение переменной $ref в нижний регистр. Это делается для того, чтобы ссылки типа www.site.com, www.Site.com или WWW.SITE.COM были одинакового регистра.
Если переменная $ref не пустая,
.
.
то подключаемся к БД:
Производим выборку из столбца url, значение которого совпадает с $ref
Переменная $rows содержит количество совпадений
.
.
.
Если же не найдено ни одной записи (т.е c такого url'a еще не было рефералов)
устанавливаем значение переменной $hits в "1"
.
.
А далее просто выполняем вставку url'а и переменной $hits в нашу таблицу (referer):
Выполняем запрос:
.
.
.
Если же были найдены записи по данному url (т.е c этого url'a уже заходили рефералы),
Инкрементируем значение переменной $hits (увеличиваем на "1")
.
.
.
.
.
.
В ту страницу сайта, для которой необходима статистика по рефералам (как правило - это главная страница, index.php), необходимо вставить ссылку на скрипт referer.php. Предполагается, что файлы referer.php и index.php находятся в одной папке.
.
.
.
На этом и заканчивается содержимое скрипта referer.php. Но, как я написал выше, есть также и графическая статистика. Это будет наш третий файл - viewreferer.php.
Задаем переменные для подключения к БД:
.
.
.
.
.
.
Так как этот скрипт генерирует таблицу с графиком, то есть смысл для определенных диапазонов значений хитов назначить определенные цвета.
Опять соединяемся с БД:
Делаем выборку из БД и упорядочиваем ее по убыванию (desc) количества хитов (столбец hits).
Подсчитываем количество строк с уникальными рефералами (это попросту число строк в нашей таблице referer).
.
.
.
Если же не найдено ни одной записи (таблица пуста), то выводим сообщение:
Выбираем цвет для текущего значения hits:
Табличка с графиком строится как результат MySQL-запроса. В первой колонке содержится название url'а, а во второй - количество хитов, а в третей - цветная полоса.
.
.
.
.
.
.
.
.
.
.
.
Итак, все готово! Теперь можно периодически вызывать скрипт viewreferer.php и смотреть графическую статистику переходов на ваш сайт.
Здесь я привожу примеры программ, которые я использую для копирования и удаления таблиц. Необходимые для работы модули: DB, DBTables, DbiProcs,DbiErrs, и DbiTypes.
Вам всего лишь необходимо указать каталог расположения, исходное имя таблицы, каталог назначения и имя таблицы, куда будет скопирована исходная таблица и BDE скопирует таблицу целиком со всеми индексами. Процедура удаления в качестве входных параметров использует каталог расположения и имя таблицы, при этом BDE удаляет как саму таблицу, так и все файлы, связанные с ней (индексы и т.п.).
Для тестирования данные процедуры были помещены в новое приложение и мне пришлось их немного отредактировать, чтобы удалить некоторые зависимости, которые были связаны с главной формой приложения. Теперь процедуры являются полностью автономными и могут быть помещены в отдельный модуль. (Не забудьте включить его в список используемых модулей).
Очевидно, BDE содержит номер версии структуры, по крайней мере для файлов Paradox. (Я не могу поручиться за dBase и другие форматы.) Всякий раз при изменении структуры (например, в Database Desktop) BDE увеличивает номер версии. Следующий модуль содержит функцию, которая возвращает версию структуры базы данных: