В 70-е годы был предложен новый принцип организации связи, который позволил
увеличить число абонентов и повысить качество связи: разбивать обслуживаемую
территорию на небольшие участки, называемые сотами или ячейками.
Любой из каналов сотовой связи представляет собой пару частот для дуплексной связи, т.
е. частоты базовой и подвижной станций разнесены. Это делается для того, чтобы
улучшить фильтрацию сигналов и исключить взаимное влияние передатчика на приемник
одного и того же устройства при их одновременной работе.
Алгоритмы функционирования систем сотовой связи
Например, для создания единой сети стандарта GSM в России, предлагающей услуги
роуминга в национальном масштабе, требуется организация связи с каждым
региональным оператором. Кроме того, для передачи служебных сообщений необходим,
как минимум, выделенный цифровой канал со скоростью передачи информации 64
Кбит/с.
Никто не может, категорически утверждать, что нет вреда от радиотелефонов, равно как
никто не может утверждать, что вред есть. Исследования в этой области ведутся с начала
90-х годов. Все учёные единодушно сходятся на том, что электромагнитное излучение
сотовых телефонов, конечно же, влияет на ткани головного мозга.
бличная верстка нынче совсем не в почете. Буквально на каждом углу кричат, что надо
переходить к верстке с помощью слоев, потому что это соответствует стандартам,
правильнее и вообще «прикольно». Почему слои лучше таблиц обычно не сообщают, так
что приходится либо верить на слово, либо решать дилемму самостоятельно. Поэтому
попытаемся объективно решить, что же представляют собой таблицы, где их следует
применять, а где не стоит.
Сразу следует оговорить, что спор вокруг таблиц происходит только в том случае, когда
они используются для верстки. Если дело касается хранения табличных данных, то не
возникает сомнений, что таблицы именно для этой цели и предназначены.
Преимущества таблиц
Таблицы довольно долго властвовали в области верстки, поскольку предлагали
достаточно простые методы для размещения разных элементов на веб-странице при
отсутствии явных конкурентов. Благодаря наличию большого числа параметров, особенно
границе нулевой толщины, таблица выступает в роли невидимой модульной сетки,
относительно которой добавляется текст, изображения и другие элементы. Удобство и
широкие возможности верстки — вот основной реверанс в пользу таблиц. И на этом
список не заканчивается, далее рассмотрены и другие плюсы таблиц.
Создание колонок
«Резиновый» макет
Таблицы удачно подходят для «резинового» макета, ширина которого привязана к ширине
окна браузера. Благодаря тому, что размер таблицы можно задавать в процентах, она
занимает все отведенное ей свободное пространство. Также можно регулировать и высоту
содержимого. Например, если текста немного, то «подвал» страницы может висеть в ее
середине. Параметрами таблицы можно отрегулировать это так, что при небольшом
тексте «подвал» плотно прилегает к нижнему краю окна браузера, независимо от размеров
окна.
«Склейка» изображений
Фоновые рисунки
Выравнивание элементов
Особенности браузеров
Недостатки таблиц
Несмотря на описанные достоинства таблиц, у них есть и определенные недочеты,
которые порой заставляют искать другие способы верстки.
Долгая загрузка
Особенность таблиц такова, что пока последнее слово в самом низу таблицы не
загрузится, на экране содержимое ячеек отображаться не будет. Браузеры используют
такой подход, чтобы получить всю информацию о таблице для правильного
форматирования ее содержимого. Но если таблица велика по высоте, может пройти
достаточно много времени, прежде чем мы увидим нужную информацию.
Громоздкий код
В идеале HTML-код должен содержать только теги с указанием стилевого класса или
идентификатора. А все оформление вроде цвета текста и положения элемента выносится в
CSS и модифицируется отдельно. Такое разделение позволяет независимо править код
страницы и менять вид отдельных ее элементов. Хотя к таблицам стиль легко
добавляется, но обилие «лишних» тегов не позволяет действительно просто и удобно
управлять видом отдельных компонентов страницы. К тому же не все параметры таблиц
имеют свой стилевой синоним, поэтому в любом случае приходится обращаться к коду
веб-страницы и править его.
Несоответствие стандартам
С помощью таблицы можно добиться эффекта, что нижняя часть страницы («подвал»)
выравнивается по нижнему краю окна браузера. Это имеет смысл в том случае, если
объема данных не хватает для увеличения высоты документа. В противном случае часть
страницы будет «висеть» в середине окна. Естественно, для документа достаточного
объема его отображение происходит как обычно.
Нет времени на сложную верстку
Стоит признать, что табличная верстка если не легче, то гораздо привычнее, чем верстка с
помощью слоев. Таблицы используют уже несколько лет и естественно, что приемы
верстки с их помощью стали каноническими. Поэтому, в условиях лимита времени на
создание сайта применение таблиц более чем оправдано. Кстати, многие дизайн-студии,
занимающиеся разработкой сайтов, именно по этой причине отдают предпочтение
табличной верстке. Результат получается планируемым и ожидаемым, а ошибок с
отображением сайта в разных браузерах практически не возникает.
Работаем опять таки с массивами, но уже с конкретными элементами, пока еще без
привязки по идентификатору. То есть управляем правилами внутри таблиц стилей
используя операторы CSS как элементы массива. Это опять таки удобно при написании
библиотек для динамического управления стилями документов. При этом будет неважно
как дизайнер обозвал селекторы, программист все равно получит нужный результат.
Имеется только одно изменяемое свойство cssText. Оно содержит код указанного
оператора CSS в указанной таблице стилей. Свойство cssText может использоваться как
для создания правил, так и для получения текста существующего оператора.
document.getElementById("my_id").style.backgroundColor = "red";//запись
свойств document.getElementById("my_id").style.backgroundColor;//чтение
этих свойств.
my_id.style.setAttribute("borderBottomWidth", 5, false);//вставили
my_id.style.removeAttribute("borderTopWidth", false);//удалили
XML и электронная коммерция
Листинг 1.1. Код HTML для таблицы, содержащей информацию о товарах [Все
представленные в курсе тексты программ можно найти на сайте издательства по
адресу www.piter.com. — Примеч. ред. ]
<table>
<tr>
<th>Название товapa</th>
<th>0писание</th>
<th>Ценa</th>
</tr>
<tr>
<td><b>Фонарик</b>
</td>
<td>Свет, который всегда с вами!</td>
<td>$9.95</td>
</tr>
<tr>
<td><b>Неоновая лампа</b></td>
<td>$14.75</td>
</tr>
</table>
Документ HTML только определяет, как должен быть отформатирован данный текст.
Автоматическое извлечение информации из статической страницы HTML даже в лучшем
случае окажется весьма непростой задачей. Если вы хотите написать программу, которая
бы извлекала данные о цене из приведенного кода HTML, вы можете указать, что цена
фонарика присутствует в третьем столбце таблицы в той строке, где в первом столбце
стоит слово «фонарик». Но при этом вы рискуете тем, что ваша программа перестанет
работать, если изменится дизайн web-сайта ABC Lightening или просто поменяется
название данного товара.
В листинге 1.2 приведен пример того, как та же информация может быть представлена с
помощью XML [Catalog — каталог, product — товар, name — название, description —
описание. — Примеч. перев ].
<ABC_Lighting:product>
<ABC_Lighting:name>Фонарик</ABC_Lighting:name>
</ABC_Lighting:description>
<ABC_Lighting:price>$9.95</ABC_Lighting:price>
</ABC_Lighting:product>
<ABC_Lighting:product>
<АВС_Lighting:name>Неоновая лампа</ABC_Lighting:name>
<ABC_lighting:price>$14.75</ABC_Lighting:price>
</ABC_Lighting:product>
</ABC_Lighting:catalog>
Это DTD показывает, какие элементы могут появиться в каталоге, а также определяет
порядок их следования и число появлений. С использованием данных XML и DTD
автоматическая идентификация и извлечение полезных данных из документа XML
становятся довольно простым делом, в чем вы убедитесь, изучив этот курс.
Связь с базами данных MySQL
СУБД MySQL - одна из множества баз данных, поддерживаемых в PHP. Система MySQL
распространяется бесплатно и обладает достаточной мощностью для решения реальных
задач.
Для работы с базами данных удобно пользоваться средством, входящее в комплект Web-
разработчика: Denwer phpMyAdmin. Здесь можно создать новую базу данных, создать
новую таблицу в выбранной базе данных, заполнить таблицу данными, а также добавлять,
удалять и редактировать данные.
В MySQL определены три базовых типа данных: числовой, дата и время и строчный.
Каждая из этих категорий подразделяется на множество типов. Основные из них:
Тип Описание
Тип Описание
Все строки таблицы должны иметь значение в этом атрибуте. Если не указано,
NOT NULL
поле может быть пустым (NULL)
После целочисленного типа означает, что его значение может быть либо
UNSIGNED
положительным, либо нулевым
Для получения доступа только к некоторому полю следует указать его имя в инструкции
SELECT. Например:
UPDATE books SET price = price * 1.05 WHERE price <= 250;
Для удаления строк из базы данных используется оператор DELETE. Ненужные строки
указываются при помощи конструкции WHERE. Например, какие-то книги проданы:
Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие
основные шаги:
После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных.
Для этого используется функция mysql_select_db(). Ее аргумент: имя базы данных.
Функция возвращает true, если указанная база данных существует и доступ к ней
возможен. Например:
$db = "sample";
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
Пример 1
<html>
<head>
<title>Добавление записи в таблицу</title>
</head>
<body>
<?php
$db = "sample";
$link = mysql_pconnect ();
if ( !$link )
die ("Невозможно подключение к MySQL");
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "INSERT INTO books
VALUES ('966-7393-80-1', 'Аллен Вайк',
'PHP. Справочник', '213', '4')";
mysql_query ( $query );
mysql_close ( $link );
?>
</body>
</html>
В примере 2.1 приведена HTML-форма для добавления новых книг в базу данных.
Пример 2.1
<html>
<head>
<title>HTML-форма добавления новых книг</title>
</head>
<body>
<form aсtion="insert_book.php" method="post">
<table>
<tr><td>ISBN<td><input name=isbn maxlength=13 size=13>
<tr><td>Автор<td><input name=author maxlength=30 size=30>
<tr><td>Название<td><input name=title maxlength=60
size=30>
<tr><td>Цена<td><input name=price maxlength=7
size=7>
<tr><td>Количество<td><input
name=quantity maxlength=3 size=3>
<tr>td colspan=2><input type=submit value="Ввод">
</table>
</form>
</body>
</html>
Пример 2.2
<html>
<head>
<title>Программа добавления новых книг (файл insert_book.php)</title>
</head>
<body>
<?php
if (!$isbn || !$author || !$title || !$price || !$quantity)
die ("Не все данные введены.<br>
Пожалуйста, вернитесь назад и закончите ввод");
$isbn = trim ( $isbn );
$author = trim ( $author );
$title = trim ( $title ) ;
$isbn = addslashes ( $isbn );
$author = addslashes ( $author );
$title = addslashes ( $title ) ;
$db = "sample";
$link = mysql_pconnect();
if ( !$link ) die ("Невозможно подключение к MySQL");
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "INSERT INTO books VALUES ('"
.$isbn."', '".$author."', '".$title."', '"
.$price."', '".$quantity."')";
$result = mysql_query ( $query );
if ($result) echo "Книга добавлена в базу данных.";
mysql_close ( $link );
?>
</body>
</html>
Все записи результата запроса можно просмотреть в цикле. Перед этим с помощью
функции mysql_fetch_array() для каждой записи получают ассоциативный массив.
В примере 3.1 приведена HTML-форма для поиска определенных книг в базе данных.
Пример 3.1
<html>
<head>
<title>HTML-форма поиска книг</title>
</head>
<body>
<form aсtion="search_book.php" method="post">
Ищем по:<br>
<select name="searchtype" size=3>
<option value="author" selected>Автору
<option value="title">Названию
<option value="isbn">ISBN
</select> <br>
Что ищем:<br> <input name="searchterm"> <br>
<input type=submit value="Поиск">
</form>
</body>
</html>
Пример 3.2
<html>
<head>
<title>Программа поиска книг (файл search_book.php)</title>
</head>
<body>
<?php
trim ( $searchterm );
if (!$searchterm)
die ("Не все данные введены.<br>
Пожалуйста, вернитесь назад и закончите ввод");
$searchterm = addslashes ($searchterm);
$link = mysql_pconnect ();
if ( !$link ) die ("Невозможно подключение к MySQL");
$db = "sample";
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "SELECT * FROM books WHERE "
.$searchtype." like '%".$searchterm."%'";
$result = mysql_query ( $query );
$n = mysql_num_rows ( $result );
for ( $i=0; $i<$n; $i++ )
{
$row = mysql_fetch_array($result);
echo "<p><b>".($i+1).". $row[title]</b><br>";
echo "Автор: $row[author]<br>";
echo "ISBN: $row[ISBN]<br>";
echo "Цена: $row[price]<br>";
echo "Количество: $row[quantity]</p>";
}
if ( $n == 0 ) echo "Ничего не можем предложить. Извините";
mysql_close ( $link );
?>
</body>
</html>
- Java Servlet и JSP, используемые для серверов Tomcat, JBoss, Apache под управлением
различных операционных систем;
- РНР, применяемые для серверов Apache и многих других, находящихся под управлением
GNU/Linux и других UNIX-подобных операционных систем;
На форуме Searchengines есть полезная статья, которая рассказывает о том, как заставить
поисковые системы правильно индексировать генерируемые страницы сайта.