Итак вы решили создать сайт. Ну что же, давно пора :) Однако прежде чем создавать его сядьте и немного подумайте. Многие начинающие веб мастера думают, что все размышления о раскрутке интернет проекта будут уместны уже потом, после того как сам проект будет создан. Это в корне не верно. Начинать нужно заранее. Во первых продумайте контент, т.е. ту информацию, которая будет у вас на сайте, зайдите в поисковые системы и оцените, есть ли конкуренция по данной тематике и насколько она велика.
Затем подготовьте материалы. Продумайте, какая информация будет выложена у вас на сайте. Подбирая материал, подумайте о том, чтобы его не было слишком мало. Интернет проект, претендующий на то, чтобы стать популярным, должен состоять как минимум из нескольких сотен страниц. С меньшим объемом контента сложно рассчитывать на серьезные успехи в поисковых машинах. Да и пользователь случайно забредший к вам на сайт, вряд ли будет находиться там долго, если все, что вы сможете ему предложить - это десяток страниц текста. Итак начать нужно с того, что продумайте качество и количество контента.
Далее необходимо продумать по каким ключевым словам пользователь будет находить ваш сайт? На яндексе есть сервис предоставляющий возможность веб мастеру оценить популярность поисковых запросов. Например, когда я перед созданием своего портала Портал InternetCity ввел запрос на популярность ключевого слова культуризм, то получил, что за прошедший месяц это слово запрашивалось в Яндексе около 1500 раз. А вот словосочетания "культуризм грудь" спрашивалось только 6 раз. Догадываетесь куда я клоню, к необходимости оптимизировать текст на ваших страницах, так, чтобы пользователь мог вас найти. Например я счел, оптимизировать страницы моего портала под словосочетание "культуризм грудь" смысла не имеет, так как дополнительные 6 посетителей в месяц мне погоду не сделают, а вот оптимизировать под слово культуризм страницы нужно. Кстати по этому слову мой портал будет где то в первой тройке.
Старайтесь продумать все основные ключевые слова, по которым ваш сайт будут находить в поисковых запросах. В последствии это сбережет вам массу времени. Чтобы вы лучше поняли о чем идет речь приведу еще такой пример: Как я уже писал, я оптимизировал свой сайт под ряд ключевых запросов, одним из которых был культуризм, а вот оптимизировать под слово бодибилдинг (надеюсь ни кому не нужно объяснять что это такое) не догадался и уже после создания сайта проверив популярность этого слова, выяснил, что оно ищется пользователями поисковиков в 4 раза чаще, чем слово культуризм.
Следовательно мне сейчас придется думать о том, как оптимизировать еще свои страницы и по этому слову, значит нужно расширить портал, внести исправления в уже существующий текст, закачать все исправленное и переделанное на сервер и т.д. Одним словом потратить кучу времени. А все это по тому, что я вовремя не подумал о том, что ключевое слово бодибилдинг популярно в рунете.
Привык все время говорить культуризм да культуристы, а заморское словечко бодибилдинг в моем лексиконе не прижилось, а зря, мог бы себе немало времени сэкономить.
Итак контент подобран, ключевые слова тоже, дизайн сайта продуман, пора приступать непосредственно к его созданию. Я не буду здесь писать о том как вам создать дизайн сайта, это тема отдельной статьи. Здесь мы поговорим только об оптимизации страниц для поисковых систем. Прежде чем начинать сайтотворчество не забудьте зайти на Рамблер, Яндекс и Апорт и почитать что нужно сделать, а чего не надо делать для того, чтобы поисковый робот вас смог найти.
Итак, что нужно сделать для того, чтобы вашу страницу легко можно найти.
Заходим в Яндекс и читаем: Необходимо задавать уникальные заголовке в теге title, но не более 20-25 слов. К слову сказать на моем портале каждый заголовок уникален. Не стремитесь писать в заголовках название своего сайта, в заголовке вы должны отразить краткое содержание каждой страницы. Например: Индексация сайта в поисковых машинах. Что нужно знать для поисковой индексации. Давайте каждому документу описание в тэге description Собственно говоря не все поисковые машины учитывают этот тег, но тем не менее некоторые выводят его как краткое описание сайта при выдачи поискового запроса. Само собой описание в этом теге также должно быть уникальным для каждой странички.
Не забывайте о ключевых словах, по возможности уникальных для каждой страницы в теге Keywords. Однако используйте в этом теге только те слова, которые встречаются в тексте страницы. Делайте подписи к картинкам в тэге alt. Поисковым системам важно: есть ли искомое слово на странице документа, насколько часто оно в нем повторяется, промежутки между ключевыми словами, вес каждого слова.
О весе слова нужно поговорить особо, слово набранное в теге alt будет иметь меньший вес по сравнению со словами в тексте документа, а вот слово набранное в теге title или используемое в гиперссылках будет иметь больший вес. Также некоторый приоритет имеют слова, заключенные тегами H, B. Наличие искомого слова в теге Keywords также повышает его значимость, но лишь в том случае если это же слово присутствует и в тексте документа. Если же такого слова в тексте документа нет, а присутствует только в мета теге, то поисковая система эту страницу в результате поиска скорее всего вообще не покажет. Играет также значение месторасположение слова, чем ближе оно к вершине документа, тем больший вес будет иметь. К примеру слово культуризм расположенное в начале странице на моем портале имеет гораздо больший вес, чем слово культуризм расположенное всередине страницы.
Конечно поисковая оптимизация страниц вашего сайта сильно замедлит работу по его созданию, но не оптимизировав страницы практически невозможно будет добиться каких-нибудь серьезных результатов в поисковиках и следовательно раскрутить ваш ресурс, а раз так, то возникает вопрос, зачем его вообще создавать.
Если вам необходимо найти компанию, которая предлагают хостинг, то ее можно очень просто найти в интернете через любимую вами поисковую машину. При выборе конкретной компании вам следует обратить внимание на следующие очень важные моменты:
1) Техническая поддержка должна быть круглосуточной (24/7/365), включая праздники и выходные и должна предоставляться по телефону, сервису мгновенных интернет сообщений через пейджеры (icq, qip, miranda) и электронной почте. Время ответа не должно превышать 1 часа.
2) Хорошие показатели доступности сервера в сети (uptime, аптайм). Если вы занимаетесь продажей чего-либо на вашем сайте, то во время простоя сайта у вас не будет покупателей и еще сложиться негативное мнение как о ненадежном магазине. Выбирайте uptime не менее 99%. Причем важно узнать его величину от независимых служб мониторинга и за несколько отчетных периодов. Ведь что толку, если в мае сайт имел аптайм 99,9%, а в марте и апреле - всего 80%.
3) Быстрый интернет канал, к которому подключен ваш хостер. Здесь важно выбирать географическое расположение хостера в зависимости от аудитории вашего сайта. К примеру, сайт на английском языке лучше размещать в США, поскольку основная часть англоязычной аудитории будет идти оттуда, да и пропускная способность каналов и стоимость трафика в США значительно лучше, чем, к примеру, у отечественных хостеров.
4) Если ваш сайт относится в сфере e-commerce (интернет или электронная коммерция), то необходимо позаботиться о возможности доступа по SSL для совершения безопасных транзакций. Естественно, хостинг должен поддерживать выполнение скриптов на определенном языке программирования (php, perl, cgi, asp или java).
5) Многие хорошие хостеры вернут вам деньги, если вам не понравятся их услуги. Это довольно распространенная на западе практика (называется там money-back guarantee), которая повышает доверие к компании как поставщику услуг. Это будет гарантией тому, что в случае некачественных услуг хостинга вы не останетесь без посетителей и своих денег.
6) Дисковое пространство для вашего сайта должно быть с запасом. Так, если для сайта-визитки фирмы хватит и 10 Мб диска, то для новостного сайта или крупного интернет магазина может быть мало и 1 Гб.
7) Трафик. Для большинства сайтов количество трафика столь невелико, что даже если они используют вместе не 100, а 110 Мб трафика в месяц, то это не разорит хостера. Вот для этого и предлагают тарифные планы с безлимитным трафиком. А вот если у вас посещаемый сайт с графикой, файлами, то величина трафика может измеряться десятками и сотнями гигабайт.
В таких случаях за него придется платить и лучше сразу брать хостинг с оплатой трафика, тогда вы будете приблизительно знать, во что он вам обойдется. А то перерасходуете лимит, возьмут и отключат сайт или придет счет на круглую сумму. Да, через некоторое время сайт вновь заработает, но его простой уж точно не пойдет на пользу.
8) Безопасность. Если у вас должен быть защищенный (зашифрованный) канал, то вам придется оплатить дополнительные расходы на получение сертификата сервера. Если вы собираетесь обрабатывать персональные данные или кредитной карты на вашем веб-сайте, вам потребуется наличие сертификата безопасности.
Цифровые сертификаты используется для защиты любого сообщения с клиентами, которое содержит личную информацию. Также вы должны иметь установленный цифровой сертификат на вашем веб-сервере, чтобы вы могли воспользоваться кредитной картой заказов в безопасном режиме.
9) Доступ по FTP (file transfer protocol, протокол передачи файлов). Без него сейчас не обойтись и он предоставляется всеми хостерами. Если вы планируете создать несколько FTP-аккаунтов (например, для совместной разработки сайта), то узнайте, сколько их входит в ваш тарифный план.
10) Программное обеспечение. Узнайте, какое программное обеспечение или встроенные скрипты предлагает ваш хостер. Не все хостинговые компании предлагаем одинаковый набор программного обеспечения. У некоторых есть несколько бесплатных инструментов, которые помогут вам работать с сайтом легко и эффективно.
Есть множество скриптов, которые помогут вам организовать поиск на сайте, завести и управлять электронной почтой, создать форум, доску объявлений или чат, сделать резервное копирование и восстановление всего сайта или только одной базы данных.
Вообще поиску компании для веб-хостинга следует уделить достаточно времени. Помните, что вы значительная часть успеха вашего веб-сайта будет связана с этой компанией. А одним из главных расходов, которые вам нужно будет оплачивать при серьезных проектах, будет оплата услуг хостинга. Поэтому лучше сразу выбирать компанию с надежной репутацией.
Transmission Control Protocol/Internet Protocol (TCP/IP) - это промышленный стандарт стека протоколов, разработанный для глобальных сетей.
Стандарты TCP/IP опубликованы в серии документов, названных Request for Comment (RFC). Документы RFC описывают внутреннюю работу сети Internet. Некоторые RFC описывают сетевые сервисы или протоколы и их реализацию, в то время как другие обобщают условия применения. Стандарты TCP/IP всегда публикуются в виде документов RFC, но не все RFC определяют стандарты.
Стек был разработан по инициативе Министерства обороны США (Department of Defence, DoD) более 20 лет назад для связи экспериментальной сети ARPAnet с другими сателлитными сетями как набор общих протоколов для разнородной вычислительной среды. Сеть ARPA поддерживала разработчиков и исследователей в военных областях. В сети ARPA связь между двумя компьютерами осуществлялась с использованием протокола Internet Protocol (IP), который и по сей день является одним из основных в стеке TCP/IP и фигурирует в названии стека.
Большой вклад в развитие стека TCP/IP внес университет Беркли, реализовав протоколы стека в своей версии ОС UNIX. Широкое распространение ОС UNIX привело и к широкому распространению протокола IP и других протоколов стека. На этом же стеке работает всемирная информационная сеть Internet, чье подразделение Internet Engineering Task Force (IETF) вносит основной вклад в совершенствование стандартов стека, публикуемых в форме спецификаций RFC.
Если в настоящее время стек TCP/IP распространен в основном в сетях с ОС UNIX, то реализация его в последних версиях сетевых операционных систем для персональных компьютеров (Windows NT 3.5, NetWare 4.1, Windows 95) является хорошей предпосылкой для быстрого роста числа установок стека TCP/IP.
Итак, лидирующая роль стека TCP/IP объясняется следующими его свойствами:
* Это наиболее завершенный стандартный и в то же время популярный стек сетевых протоколов, имеющий многолетнюю историю.
* Почти все большие сети передают основную часть своего трафика с помощью протокола TCP/IP.
* Это метод получения доступа к сети Internet.
* Этот стек служит основой для создания intranet- корпоративной сети, использующей транспортные услуги Internet и гипертекстовую технологию WWW, разработанную в Internet.
* Все современные операционные системы поддерживают стек TCP/IP.
* Это гибкая технология для соединения разнородных систем как на уровне транспортных подсистем, так и на уровне прикладных сервисов.
* Это устойчивая масштабируемая межплатформенная среда для приложений клиент-сервер.
Структура стека TCP/IP. Краткая характеристика протоколов
Так как стек TCP/IP был разработан до появления модели взаимодействия открытых систем ISO/OSI, то, хотя он также имеет многоуровневую структуру, соответствие уровней стека TCP/IP уровням модели OSI достаточно условно.
Протоколы TCP/IP делятся на 4 уровня.
Самый нижний (уровень IV) соответствует физическому и канальному уровням модели OSI. Этот уровень в протоколах TCP/IP не регламентируется, но поддерживает все популярные стандарты физического и канального уровня: для локальных сетей это Ethernet, Token Ring, FDDI, Fast Ethernet, 100VG-AnyLAN, для глобальных сетей - протоколы соединений "точка-точка" SLIP и PPP, протоколы территориальных сетей с коммутацией пакетов X.25, frame relay. Разработана также специальная спецификация, определяющая использование технологии ATM в качестве транспорта канального уровня. Обычно при появлении новой технологии локальных или глобальных сетей она быстро включается в стек TCP/IP за счет разработки соответствующего RFC, определяющего метод инкапсуляции пакетов IP в ее кадры.
Следующий уровень (уровень III) - это уровень межсетевого взаимодействия, который занимается передачей пакетов с использованием различных транспортных технологий локальных сетей, территориальных сетей, линий специальной связи и т. п.
В качестве основного протокола сетевого уровня (в терминах модели OSI) в стеке используется протокол IP, который изначально проектировался как протокол передачи пакетов в составных сетях, состоящих из большого количества локальных сетей, объединенных как локальными, так и глобальными связями. Поэтому протокол IP хорошо работает в сетях со сложной топологией, рационально используя наличие в них подсистем и экономно расходуя пропускную способность низкоскоростных линий связи. Протокол IP является дейтаграммным протоколом, то есть он не гарантирует доставку пакетов до узла назначения, но старается это сделать.
К уровню межсетевого взаимодействия относятся и все протоколы, связанные с составлением и модификацией таблиц маршрутизации, такие как протоколы сбора маршрутной информации RIP (Routing Internet Protocol) и OSPF (Open Shortest Path First), а также протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol). Последний протокол предназначен для обмена информацией об ошибках между маршрутизаторами сети и узлом - источником пакета. С помощью специальных пакетов ICMP сообщается о невозможности доставки пакета, о превышении времени жизни или продолжительности сборки пакета из фрагментов, об аномальных величинах параметров, об изменении маршрута пересылки и типа обслуживания, о состоянии системы и т.п.
Следующий уровень (уровень II) называется основным. На этом уровне функционируют протокол управления передачей TCP (Transmission Control Protocol) и протокол дейтаграмм пользователя UDP (User Datagram Protocol). Протокол TCP обеспечивает надежную передачу сообщений между удаленными прикладными процессами за счет образования виртуальных соединений. Протокол UDP обеспечивает передачу прикладных пакетов дейтаграммным способом, как и IP, и выполняет только функции связующего звена между сетевым протоколом и многочисленными прикладными процессами.
Верхний уровень (уровень I) называется прикладным. За долгие годы использования в сетях различных стран и организаций стек TCP/IP накопил большое количество протоколов и сервисов прикладного уровня. К ним относятся такие широко используемые протоколы, как протокол копирования файлов FTP, протокол эмуляции терминала telnet, почтовый протокол SMTP, используемый в электронной почте сети Internet, гипертекстовые сервисы доступа к удаленной информации, такие как WWW и многие другие. Остановимся несколько подробнее на некоторых из них.
Протокол пересылки файлов FTP (File Transfer Protocol) реализует удаленный доступ к файлу. Для того, чтобы обеспечить надежную передачу, FTP использует в качестве транспорта протокол с установлением соединений - TCP. Кроме пересылки файлов протокол FTP предлагает и другие услуги. Так, пользователю предоставляется возможность интерактивной работы с удаленной машиной, например, он может распечатать содержимое ее каталогов. Наконец, FTP выполняет аутентификацию пользователей. Прежде, чем получить доступ к файлу, в соответствии с протоколом пользователи должны сообщить свое имя и пароль. Для доступа к публичным каталогам FTP-архивов Internet парольная аутентификация не требуется, и ее обходят за счет использования для такого доступа предопределенного имени пользователя Anonymous.
Протокол telnet обеспечивает передачу потока байтов между процессами, а также между процессом и терминалом. Наиболее часто этот протокол используется для эмуляции терминала удаленного компьютера. При использовании сервиса telnet пользователь фактически управляет удаленным компьютером так же, как и локальный пользователь, поэтому такой вид доступа требует хорошей защиты. Поэтому серверы telnet всегда используют как минимум аутентификацию по паролю, а иногда и более мощные средства защиты, например, систему Kerberos.
Протокол SNMP (Simple Network Management Protocol) используется для организации сетевого управления. Изначально протокол SNMP был разработан для удаленного контроля и управления маршрутизаторами Internet, которые традиционно часто называют также шлюзами. С ростом популярности протокол SNMP стали применять и для управления любым коммуникационным оборудованием - концентраторами, мостами, сетевыми адаптерами и т.д. и т.п. Проблема управления в протоколе SNMP разделяется на две задачи.
Первая задача связана с передачей информации. Протоколы передачи управляющей информации определяют процедуру взаимодействия SNMP-агента, работающего в управляемом оборудовании, и SNMP-монитора, работающего на компьютере администратора, который часто называют также консолью управления. Протоколы передачи определяют форматы сообщений, которыми обмениваются агенты и монитор.
Вторая задача связана с контролируемыми переменными, характеризующими состояние управляемого устройства. Стандарты регламентируют, какие данные должны сохраняться и накапливаться в устройствах, имена этих данных и синтаксис этих имен. В стандарте SNMP определена спецификация информационной базы данных управления сетью. Эта спецификация, известная как база данных MIB (Management Information Base), определяет те элементы данных, которые управляемое устройство должно сохранять, и допустимые операции над ними.
Добрый день уважаемые господа! В данной статье я хотел бы затронуть очень важную тему, а именно шаблоны в PHP. В этой статье я приведу простой, но работающий пример “шаблонов”, также мы рассмотрим все за и против использования шаблонов.
Использование шаблонов
Прежде чем использовать шаблоны, подумайте, действительно ли они вам так нужны? В данный момент существует огромное количество коммерческих вариантов шаблонов. Все они работают по одному принципу (значение, замена), но имеют огромное количество наворотов, таких как автоматическое изменения регистра переменных, поиск по регулярным выражениям и т.д., все это конечно хорошо и легко реализуемо. Когда я решил посмотреть “коммерческий” шаблон, я ужаснулся, один его класс весил 398 КБ. Это нормально? Также в сети можно найти множество бесплатных вариантов шаблонов (классы шаблонов в PHPBB, IPB…), но все они много весят и работают не слишком быстро. Я предлагаю вам простой каркас “шаблонов” на PHP, с его помощью можно сделать свой классный шаблонизатор, со всеми необходимыми вам функциями.
За и против
Приведу вам жизненный пример, не так давно я занимался разработкой программы для одного человека, заранее было обговорено, что я пишу программу, а дизайн это его дело. Через некоторое время, мой заказчик пишет мне, что дизайн для моей программы сделать невозможно. Конечно, человек ничего не знающий в web-программировании будет испытывать огромные затруднения, при построении дизайна в PHP-программе. Главная задача ‘шаблонов’ – это облегчить жизнь дизайнеру. Безусловно, главным плюсом использования шаблонов можно считать то, что дизайнер без помощи программиста сможет изменять свой web-проект. Также мне нравится само разделение – программа и дизайн.
Я не использую шаблоны в своих личных проектах, т.к. они дают дополнительную “нагрузку”. Шаблоны это хорошо, но использовать их надо только если пишешь какой, то публичный проект или выполняешь работу на заказ.
Реализация шаблонов на PHP
И так приступим. Всего у нас будет 2 ключевых файла.
1) file2compile.tpl – файл который мы будем парсить
2) template.php – главный файл содержащий класс шаблонов
Листинг файла file2compile.tpl:
Листинг файла template.php:
Теперь я подробно опишу содержание этих двух файлов.
Файл: file2compile.tpl
Тут приведен обычный HTML код. В данном файле можно найти переменные вида {TITLE}. Это как раз именно те переменные которые мы будем заменять на нужное нам значение.
Файл: template.php
Мы имеем PHP класс, разделенный на 3 функции. В самом начале файла мы объявляем классовые переменные.
$vars – массив со значениями (переменная, замена).
$template – файл который мы будем парсить.
Теперь перейдем к описанию функций.
Функция: get_tpl
В качестве аргумента функция принимает имя файла. В теле функции мы проверяем задан ли аргумент и существует ли файл. Если аргумент не задан и файл не существует мы возвращаем значение FALSE. В противном случае мы заполняем классовую переменную(template) содержанием файла.
Функция set_tpl
Функция принимает 2 значения, это переменная (напр. {TITLE)} и значение на которое мы будем ее заменять.
Функция tpl_parse
Функция не принимает никаких значений. В теле функции мы считывает массив $vars и производим замену установленных переменных на заданные значения.
Использование класса.
Для вывода на экран используйте следующие команды:
Заключение.
Надеюсь, моя статья поможет вам лучше понять, что такое шаблоны.
Для оптимизации работы с сетью используется механизм сохранения однажды полученных по HTTP документов в кеше с целью их повторного использования без обращения к серверу-источнику. Документ, сохраненный в кеше будет доступен при следующем обращении к нему, без выгрузки с сервера-источника, что призвано повысить скорость доступа клиента к нему и уменьшить расход трафика сети.
Сами кэши бываю двух видов - локальные и общие
Локальный это кеш, хранимый непосредственно на диске у клиента, создаваемый и управляемый его браузером. Общий - кэш прокси-сервера организации или провайдера и может состоять из одного или нескольких прокси-серверов. Локальный кеш присутствует, наверное в каждом браузере, общими пользуется значительная часть людей использующих Internet. И если малую часть сайтов сейчас оценивают по расходу трафика, то скорость загрузки - важный критерий, который должен учитываться при разработке Вашего web-проекта.
Для динамических страниц, создаваемых в результате работы PHP-программы, казалось бы, кэширование вредно. Содержание страницы формируются по запросу пользователя на основе какого-либо источника данных. Однако, кэширование может быть полезным. Управляя им Вы можете сделать работу с Вашим сервером комфортнее для пользователя, разрешая загрузку из кэш определенных страниц, предотвращая тем самым их повторную выгрузку с Вашего сервера и экономя пользователю время и трафик.
Кэшировать или нет?
Возможность сохранения в кэш страницы определяется динамичностью информации в источнике данных. Таким образом необходимость использования кэша определяется Вами, исходя из планируемого времени жизни страницы.
Если речь идет о формировании выборки по базе (например, поиск введенного пользователем слова), то такую страница обязательно следует запрашивать с сервера при каждом вызове без использования кэш, так как количество вариантов запрашиваемых слов огромно, а если мы к тому же имеем дело с меняющимся массивом данных, то кэширование бессмысленно. Или речь идет о формировании допустим графика приходящих посетителей (который изменяется с каждым визитом, то есть практически с каждым вызовом), то кеширование уже просто вредно.
Однако, если мы говорим о том же графике но за вчерашний день, то кэширование рекомендуется, так как данные изменяться уже не будут и мы можем экономить себе и пользователю ресурсы и время на загрузку таких страниц помещением их в локальный или общий кэш. Как продолжение этой ситуации формирование графика не в реальном масштабе времени, а ежечасно. Тут Вы можете заранее предсказать дату окончания "срока годности" сформированных данных.
PHP-программа может управлять кэшированием результатов ее работы формируя дополнительные поля в заголовке HTTP ответа вызовом функции Header().
Несколько общих утверждений характерных не только для PHP-программ:
* Страницы передаваемые по POST никогда не сохраняются в кэш.
* Страницы запрашиваемые по GET и содержащие параметры (в URL присутствует '?') не сохраняются в кэш, если не указано обратное
Таким образом в большинстве ситуаций дополнительных инструкций в программу добавлять не надо. Основные моменты на которые следует обратить внимание можно свести к двум:
* запрет кэширования документов, кэшируемых по умолчанию
* кэширование документов, не подлежащих кэшированию по умолчанию.
В приведенном ниже примере описано как можно получить список логических дисков, установленных в системе, а также определить их тип. Для этих целей используются функции winAPI GetLogicalDrives и GetDriveType.
Для работы примера на форму проекта поместите объекты Button1 и Memo1. В обработчике событий для Button1 нужно ввести указанный код.
Возможно ли создание массива компонентов? Для показа статуса я использую набор LED-компонентов и хотел бы иметь к ним доступ, используя массив.
Прежде всего необходимо объявить массив:
.
.
При необходимости динамического создания LED-компонентов организуйте цикл, пример которого мы приводим ниже:
.
.
.
.
.
.
.
.
Если компоненты уже присутствуют на форме (в режиме проектирования), сделайте их элементами массива, например так:
.
.
.
.
.
.
.
.
.
.
Тем не менее у нас получился массив со случайным расположением LED-компонентов. Я предлагаю назначить свойству Tag каждого LED-компонента порядковый номер его расположения в массиве, а затем заполнить массив, используя это свойство:
.
.
.
.
.
.
.
.
Если вам нужен двухмерный массив, то для формирования индекса понадобится другая хитрость, например, хранение в свойстве Hint информации о времени создания компонентов.
Я несколько раз видел в конференциях вопросы типа "как мне добавить элементы управления в TTabbedNotebook или TNotebook во время выполнения программы?". Теперь, когда у меня выдалось несколько свободных минут, я попытаюсь осветить этот вопрос как можно подробнее.
TTabbedNotebook
Добавление элементов управления в TTabbedNotebook во время проектирования - красивая и простая задача. Все, что Вам нужно - это установить свойство PageIndex или ActivePage на необходимую страницу и начать заполнять ее элементами управления.
Добавление элементов управление во время выполнения приложения также очень просто. Тем не менее, в прилагаемой документации по Delphi вы не найдете рецептов типа Что-и-Как. Видимо для того, чтобы окончательно запутать начинающих программистов, фирма-изготовитель даже не удосужилась включить исходный код TTabbedNotebook в VCL-библиотеку. Таким образом, TTabbedNotebook остается для некоторых тайной за семью печатями. К счастью, я имею некоторый опыт, коим и хочу поделиться.
Первым шагом к раскрытию тайны послужит просмотр файла DELPHIDOCTABNOTBK.INT, интерфейсной секции модуля TABNOTBK.PAS, в котором определен класс TTabbedNotebook. Беглый просмотр позволяет обнаружить класс TTabPage, описанный как хранилище элементов управления отдельной страницы TTabbedNotebook.
Вторым шагом в исследовании TTabbedNotebook может стать факт наличия свойством Pages типа TStrings. В связи с этим отметим, что Delphi-классы TStrings и TStringList соорганизуются с двумя свойствами: Strings и Objects. Другими словами, для каждой строки в TStrings есть указатель на соответствующий Objects. Во многих случаях этот дополнительный указатель игнорируется, нам же он очень пригодится.
После небольшого эксперимента выясняем, что свойство Objects указывает на нашу копию TTabPage и ссылается на имя страницы в свойстве Strings. Блестяще! Всегда полезно знать что ищешь. Теперь посмотрим что мы можем сделать:
TNotebook
Операция по заполнению элементами управления компонента TNotebook почти такая же, как и в TTabbedNotebook - разница лишь в типе класса - TPage вместо TTabPage. Тем не менее, если вы заглянете в DELPHIDOCEXTCTRLS.INT, декларацию класса TPage вы там не найдете. По неизвестной причине Borland не включил определение TPage и в DOC-файлы, поставляемые с Delphi. Декларация TPage в EXTCTRLS.PAS (можно найти в библиотеке VCL-исходников), правда, расположена в интерфейсной части модуля. Мы восполним пропущенную информацию о классе TPage:
Теперь, по аналогии с вышеприведенной процедурой, попробуем добавить кнопку на TNotebook. Все, что мы должны сделать - заменить "TTabbedNotebook" на "TNotebook" и "TTabPage" на "TPage". Вот что должно получиться:
Одной и наиболее сильных сторон среды программирования Delphi является ее открытая архитектура, благодаря которой Delphi допускает своего рода метапрограммирование, позволяя “программировать среду программирования”.
Такой подход переводит Delphi на качественно новый уровень систем разработки приложений и позволяет встраивать в этот продукт дополнительные инструментальные средства, поддерживающие практически все этапы создания прикладных систем.
Столь широкий спектр возможностей открывается благодаря реализованной в Delphi концепции так называемых открытых интерфейсов, являющихся связующим звеном между IDE (Integrated Development Environment) и внешними инструментами. Данная статья посвящена открытым интерфейсам Delphi и представляет собой обзор представляемых ими возможностей.
В Delphi определены шесть открытых интерфейсов: Tool Interface, Design Interface, Expert Interface, File Interface, Edit Interface и Version Control Interface. Вряд ли в рамках данной статьи нам удалось бы детально осветить и проиллюстрировать возможности каждого из них.
Более основательно разобраться в рассматриваемых вопросах вам помогут исходные тексты Delphi, благо разработчики снабдили их развернутыми комментариями. Объявления классов, представляющих открытые интерфейсы, содержатся в соответствующих модулях в каталоге ...DelphiSourceToolsAPI.
Design Interface (модуль DsgnIntf.pas) предоставляет средства для создания редакторов свойств и редакторов компонентов. Редакторы свойств и компонентов – это тема, достойная отдельного разговора, поэтому напомним лишь, что редактор свойства контролирует поведение Инспектора Объектов при попытке изменить значение соответствующего свойства, а редактор компонента активизируется при двойном нажатии левой кнопки мыши на изображении помещенного на форму компонента.
Version Control Interface (модуль VCSIntf.pas) предназначен для создания систем контроля версий. Начиная с версии 2.0, Delphi поддерживает интегрированную систему контроля версий Intersolv PVCS, поэтому в большинстве случаев в разработке собственной системы нет необходимости. По этой причине рассмотрение Version Control Interface мы также опустим.
File Interface (модуль FileIntf.pas) позволяет переопределить рабочую файловую систему IDE, что дает возможность выбора собственного способа хранения файлов (в Memo-полях на сервере БД, например).
Edit Interface (модуль EditIntf.pas) предоставляет доступ к буферу исходных текстов, что позволяет проводить анализ кода и выполнять его генерацию, определять и изменять позицию курсора в окне редактора кода, а также управлять синтаксическим выделением исходного текста.
Специальные классы предоставляют интерфейсы к помещенным на форму компонентам (определение типа компонента, получение ссылок на родительский и дочерние компоненты, доступ к свойствам, передача фокуса, удаление и т.д.), к самой форме и к ресурсному файлу проекта.
Также Edit Interface позволяет идентифицировать так называемые модульные нотификаторы, определяющие реакцию на такие события, как изменение исходного текста модуля, модификация формы, переименование компонента, сохранение, переименование или удаление модуля, изменение ресурсного файла проекта и т. д.
Tool Interface (модуль ToolIntf.pas) предоставляет разработчикам средства для получения общей информации о состоянии IDE и выполнения таких действий, как открытие, сохранение и закрытие проектов и отдельных файлов, создание модуля, получение информации о текущем проекте (число модулей и форм, их имена и т. д.), регистрация файловой системы, организация интерфейсов к отдельным модулям и т.д.
В дополнение к модульным нотификаторам Tool Interface определяет add-in нотификаторы, уведомляющие о таких событиях, как открытие/закрытие файлов и проектов, загрузка и сохранение desktop-файла проекта, добавление/исключение модулей проекта, инсталляция/деинсталляция пакетов, компиляция проекта, причем в отличие от модульных нотификаторов add-in нотификаторы позволяют отменить выполнение некоторых событий.
Кроме того, Tool Interface предоставляет средства доступа к главному меню IDE Delphi, позволяя встраивать в него дополнительные пункты.
Expert Interface (модуль ExptIntf.pas) представляет собой основу для создания экспертов — программных модулей, встраиваемых в IDE c целью расширения ее функциональности. В качестве примера эксперта можно привести входящий в Delphi Database Form Wizard, выполняющий генерацию формы для просмотра и изменения содержимого таблицы БД.
У меня есть неотложная задача: в настоящее время я разрабатываю проект, где я должен проверять достоверность введенных дат с применением маски __/__/____, например 12/12/2007.
Некоторое время назад я делал простой шифратор/дешифратор дат, проверяющий достоверность даты.