Рассылка закрыта
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Сентябрь 2001 → | ||||||
1
|
||||||
---|---|---|---|---|---|---|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
14
|
15
|
16
|
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
Статистика
за неделю
Программирование для начинающих #23
Программирование для начинающихВыпуск 23
Ведущий рассылки: Вячеслав Мацнев | e-mail: stac@stacmv.net |
|
В этом выпуске читайте: |
Я уже заканчивал этот выпуск, когда стали поступать сообщения о трагедии в Соединенных Штатах. По всем телевизионным каналам передавали кадры отснятые CNN. Все только и говорили о происшедших событиях. Но очень мало говорили о том, что будет потом. Почти никаких прогнозов от официальных лиц. А, вот, простые граждане порой говорили о начале чуть ли не третьей мировой войны. Соединенные Штаты уже применяли вооруженные силы против государств, угрожавших их безопасности. Что же они сделают с теми, кто свои угрозы осуществил? Не удивлюсь (да и никто не удивится) если Соединенные Штаты соберут небольшую армию и вломят всяким террористам. Конечно, будет расследование происшедшего, которое затянется на месяцы. И если американский президент, не дожидаясь завершения этого расследования, даст распоряжение нанести пару-тройку ракетных ударов, многие его поддержат. Больше не буду ничего говорить. Вы знаете, я могу много чего сказать. Но какая польза будет в этих словах? Единственно, я хочу выразить надежду, что хотя бы наши друзья (а в США живут ряд подписчиков, в том числе и в Нью-Йорке) не пострадали в результате этих трагических событий. И хочу пожелать всем американцам мужества и сил в борьбе с последствиями и с причинами сегодняшней катастрофы.
При обсуждении структуры ДОС (в выпуске 4) мы немного коснулись темы команд. В частности, тогда вы узнали, что саму возможность выполнения каких бы то ни было команд обеспечивает специальный компонент ДОС - командный процессор, который находится в файле COMMAND.COM. Так же вы узнали, что все команды ДОС составляют ее командный язык и бывают двух видов: внутренние и внешние. Внутренние команды реализуются командным процессором, т.е. соответствующий этим командам код является частью программы командного процессора. Внутренними сделаны самые часто используемые (по мнению разработчиков ДОС) команды. Это например, COPY, DEL, RENAME, TYPE, EXIT, PATH и ряд других. Внутренние команды к моменту их исполнения уже находятся в памяти, поэтому выполняются быстро. Напротив, внешние команды хранятся во внешних по отношению к COMMAND.COM файлах. Поэтому для выполнения их нужно сначала загрузить в память (это делает командный процессор). К внешним командам относятся, например, такие: CHKDSK, FORMAT, FC, FIND, XCOPY и другие. Вы можете найти на диске (в каталоге DOS или WINDOWSCOMMAND) com или exe файлы, соответствующие внешним командам. При вводе команды, ее интерпретирует командный процессор. Если команда внутренняя, то выполняется соответствующая процедура командного процессора. Если команда внутренняя, командный процессор пытается запустить соответствующий ей файл. Сначала этот файл ищется в текущем каталоге, затем в каталогах указанных в переменной окружения PATH (переменные окружения будут обсуждаться позже). Т.к. внешние команды ДОС это обычные программы, то возникает идея расширить функциональность ДОС, добавив самостоятельно написанные программы. Эта идея была с успехом реализована многими разработчиками. Мы тоже не останемся в стороне. Но прежде чем создавать собственные команды, необходимо выяснить какие команды уже существуют и какие возможности они предоставляют. Так, в течение следующих нескольких выпусков мы познакомимся с существующими командами ДОС. Кратко. Почему кратко? Потому что команды ДОС довольно хорошо документированы, имеют встроенную справку, с которой все вы можете ознакомиться. А начнем мы с классификации команд. По функциональному назначению и использованию команды ДОС делятся на пять групп:
1) общие команды; Общие и инструментальные команды, а также команды-фильтры вводятся командной строкой с клавиатуры в ответ на приглашение ДОС или выполняются из командных файлов. Первые из них обеспечивают выполнение ДОС различных действий, реконфигурирование (перенастройку) системы в процессе работы и выдачу пользователю информационных сообщений. Эти команды делятся на семь пересекающихся групп:
1) команды манипулирования дисками, объектом действий которых
выступает диск в целом; Инструментальные команды выполняют функции инструментальных систем. (Инструментальная система - совокупность программного продукта, обеспечивающего разработку информационно-программного обеспечения, и формальных языков, поддерживаемых этим продуктом.) Фильтры - обеспечивают преобразование входного потока в выходной по определенному алгоритму. (О фильтрах писал Константин Даниленко в статье "Устройства" (Выпуск 12\DOS)) Многие внешние команды ДОС генерируют код возврата, который можно анализировать в командных файлах или родительских программах. (Программа, вызывающая другую *дочернюю) программу, является для нее родительской, в случае если управление возвращается к ней после выполнения дочерней программы. Например, при выполнении внешних команд ДОС командный процессор вызывает соответствующие программы, которые являются для него дочерними.) Команды для командных файлов могут использоваться главным образом только в командных файлах с целью управления их выполнением (это команды, реализующие конструкции УСЛОВНЫЙ/БЕЗУСЛОВНЫЙ ПЕРЕХОД, ЦИКЛ и др.). Наряду с этими командами в командных файлах допустимы все команды, которые можно ввести с клавиатуры. Командный файл - это текстовый файл, содержащий список (по одной на строке) команд ДОС. Если командный файл имеет расширение .bat, то его можно вызывать на выполнение как внешнюю команду (в том числе, из других командных файлов). Команды конфигурирования системы используются только в файле CONFIG.SYS для настройки ДОС во время загрузки, если принимаемые по умолчанию значения пользователя не устраивают.
Табличное представление данных довольно распространено в современном мире. И это не удивительно, ведь таблицы позволяют компактно отобразить большое количество разнородных данных, показать их структуру и взаимосвязи, если такие имеются. Не удивительно, что возможность размечать таблицы появилась и в HTML. Но удивительно, что это случилось только в HTML 3.2. До того, как официально была утверждена спецификация HTML 3.2, разработчикам контента приходилось использовать преформатированный текст (тег <PRE>). При этом текст форматировался вручную. Кому приходилось готовить таблицы в неформатирующих текстовых редакторах (Notepad, NEdit, MS Edit и т.п.), тот знает о чем я. Все нормально, только на оформление таблицы уходит слишком много времени и сил. Тем не менее преформатированный текст еще используется для отображения таблиц, когда это удобно. Например, я в рассылке его использую, потому что иначе мне пришлось бы делать две версии таблицы: для текстовой и HTML версий рассылки. В HTML для разметки таблиц используются несколько тегов (одновременно). Это напоминает разметку списков, когда один тег определяет список целиком, а другой - отдельный элемент списка. Тег <TABLE> размещает таблицу. Закрывающий тег обязателен. Любая таблица состоит из ячеек. В HTML ячейки таблицы сгруппированы по рядам (строкам). Для разметки ряда таблицы используется тег <TR> (от table row - ряд таблицы). Слово row довольно часто применяется в нашей отрасли и часто переводится как "строка". Я буду использовать оба термина: строка и ряд. Для обозначения столбцов используется термин col - первые три буквы слова column. Для разметки отдельных ячеек в строке используется <TD> (от table data - табличные данные). Спецификацией HTML допускается отсутствие закрывающих тегов </TD> и </TR>. Но опыт вебдизайнеров (в том числе и мой) показывает, что лучше использовать закрывающие теги для ячеек и строк таблицы. Теперь мы можем создать простую таблицу.
<H4>Среднее число зависаний компьютера по дням недели</H4> <TABLE> <TR><TD>Понедельник</TD><TD>3</TD></TR> <TR><TD>Вторник</TD><TD>0</TD></TR> ........ <TR><TD>Суббота</TD><TD>1</TD></TR> <TR><TD>Воскресенье</TD><TD>4</TD></TR> </TABLE>
Эта таблица выглядит следующим образом: Среднее число зависаний компьютера по дням недели
Как видите, внешне эта таблица не выглядит как таблица. Но легко заметить, что все ячейки четко позиционированы относительно друг друга. Это ценное свойство делает таблицы мощным и очень гибким инструментом. Дело в том, что <TD> это тег уровня блока, т.е. в ячейке могут содержаться другие блочные элементы - абзацы, заголовки, другие таблицы. Например, все содрежимое html версии выпуска нашей рассылки, кроме заголовка и содержания, находится в одной ячейки таблицы. Кстати, эта таблица содержит единственную ячейку. При желании в ячейки таблицы можно помещать картинки. Например, ряд таблицы содержит три ячейки:
<TABLE> <TR><TD>Текст</TD><TD><IMG src=unknown.gif></TD><TD>Текст2</TD></TR> </TABLE> В этом примере изображение будет посередине, между двумя колонками текста. Одним словом, с помощью таблиц можно сделать все, что угодно. Сейчас таблицы используются на абсолютном большинстве вебстраниц. Посетите любой сайт и вы убедитесь в этом. Достигается сие разнообразие возможностей за счет большого числа атрибутов, которые имеют теги <TABLE>, <TR>, <TD>. Ниже мы рассмотрим некоторые из них. Небольшое отступление: есть еще тег <TH> (от тег table header), для разметки заголовков таблицы (например, в ее шапке). Единственное отличие этого тега от <TD> состоит в том, что содержимое <TH> отображается полужирным шрифтом. Как вы заметили, по умолчанию, таблица не имеет рамки. Или имеет. Это зависит от браузера. Мы можем управлять шириной рамки таблицы с помощью атрибута BORDER тега <TABLE>. Данный атрибут задает ширину рамки таблицы. Если его значение равно 0, то рамка не отображается.
<CAPTION> <H4>Среднее число зависаний компьютера по дням недели</H4> </CAPTION> <TABLE border=1> <CAPTION> <H4>Среднее число зависаний компьютера по дням недели</H4> </CAPTION> <TR><TD>Понедельник</TD><TD>3</TD></TR> ........ <TR><TD>Воскресенье</TD><TD>4</TD></TR> </TABLE>
Несколько вариантов этой таблицы:
Тег <CAPTION> определяет подпись таблицы. Вы можете заметить, что таблица имеет двойную рамку. Этому есть объяснение: рамку имеет таблица в целом и каждая ячейка в отдельности. Причем между ячейками есть расстояние, поэтому мы видим оба вида рамок и принимаем их за двойную рамку. Расстоянием между ячейками можно управлять с помощью атрибута cellspacing тега <TABLE>. Выше показаны несколько вариантов одной и той же таблицы с различными значениями border и cellspacing. Выравнивание данных в ячейках таблицы задается с помощью атрибута ALIGN (его воспринимают все рассмотренные нами табличные теги). Т.е. можно задавать различное выравнивание для разных рядов или даже отдельных ячеек таблицы. Значения ALIGN традиционны: LEFT, CENTER, RIGHT. Можно задать и вертикальное выравнивание содержимого с помощью атрибута VALIGN. Его значения TOP, MIDDLE, BOTTOM. Еще одними "общими" атрибутами являются WIDTH и HEIGHT, определяющие ширину и высоту таблицы, ряда, ячейки. Ширину и высоту можно задавать в пикселах или в процентах. Лучше всегда использовать относительное задание размеров (в процентах от ширины родительского элемента). Хотя в ряде ситуаций приходиться использовать абсолютные значения. Если необходимо сделать так, чтобы страница одинаково отображалась на экранах с различным разрешением, все содержимое страницы можно поместить в таблицу с одной ячейкой и задать ширину ширину этой таблицы, допустим, в 600 пикселей. Это распространенный, но не единственный прием. Кстати, в HTML пиксели это не совсем абсолютная единица. Дело в том, что браузер оперирует не с физическими пикселями, а с виртуальными. Размер виртуального пикселя рассчитывается исходя из размеров области экрана отводимой под отображение страницы. О том, когда это может доставить неприятности, я расскажу в другой раз. А в большинстве случаев вертикальные пиксели не вызывают беспокойства. Всей таблице, ряду или отдельной ячейке может быть назначен фоновый цвет или даже фоновое изображение (по моим данным, это поддерживается только IE). Для этого служат атрибуты BGCOLOR и BACKGROUND. Да, еще что касается рамок. Меня тут спрашивали, можно ли сделать рамки ячеек разных цветов? Можно. Для этого служат атрибуты BORDERCOLOR или BORDERCOLORDARK и BORDERCOLORLIGHT. Но их понимает только Internet Explorer. Еще можно указать браузеру какие рамки отображать: вертикальные, горизонтальные или все. Внешнюю рамку для таблицы определяет атрибут FRAME. Его значения: BOX или BORDER - рамка рисуется со всех четырех сторон; ABOVE - только с верхней стороны; BELOW - только с нижней стороны; HSIDES - рисуется верхняя и нижняя сторона; VSIDES - рисуется левая и правая сторона; LHS - только с левой стороны; RHS - только с правой стороны; VOID - таблица без внешней рамки. Прорисовкой внутренних линий сетки таблицы управляет атрибут RULES, который может принимать следующие значения: NONE - внутренние линии не рисуются; COLS - рисуются линии, разделяющие столбцы; ROWS - рисуются линии, разделяющие строки; ALL - рисуются все внутренние линии; GROUPS - рисуются линии, разделяющие группы. Группы [столбцов] применяются не часто (т.к. они введены недавно - в спецификации 4.0) и их изучение не входит в наш курс. Обладая всеми этими сведениями, что я только что изложил, вы уже можете создавать симпатичные таблицы. Но только с одинаковым числом ячеек в столбцах и строках. В жизни приходится иметь дело с более сложными таблицами. Как, например, разметить такую таблицу:
*--------------------------------------* | " | Расписание занятий | | Э |---------------------------| | " | Группа 104 | |----+-----+---------------------------| |День|Время| Предмет |Ауд.| |----+-----+----------------------+----| | | 8:30|Основы правовых знаний|725 | | |-----+----------------------+----| | |10:00|Организация произ-ва | 1 | | ПН |-----+----------------------+----| | |11:30| Промышленная | 1 | | |-----| |----| | |13:05| экология |524 | |----+-----+----------------------+----| | |10:00|Управление ТС | 1 | | |-----+----------------------+----| | ВТ |11:30|Детали машин |206 | | |-----+----------------------+----| | |13:05|Организация произ-ва | 1 | |----+-----+----------------------+----| | | 8:30|Промышленная экология | | | |-----+----------------------+326 | | СР |10:00|Детали машин | | | |-----+----------------------+----| | |11:30|Математический анализ |725 | *--------------------------------------* Некоторые ячейки этой таблицы распространяются на несколько строк или столбцов. (Предположим, что в верхнем левом углу расположена эмблема факультета). Тег <TD> имеет два интересных атрибута: ROWSPAN и COLSPAN, которые определяют на сколько строк или мтолбцов распространяется ячейка. Чтобы записать нашу сложную таблицу в HTML, нужно мысленно проходить по ней слева направо, сверху вниз, размечая каждую не размеченную еще ячейку, попутно задавая ее атрибуты, если нужно. Итак, пишем нашу таблицу в HTML. По ходу я буду давать комментарии.
<TABLE align=center border=1 cellspacing=0 cellpading=4 bgcolor=#FEFDE0 bordercolor=#549461> <!-- cellpadding задает отступ данных от границы ячейки; align выравнивает саму таблицу, а не содержимое таблицы. -->
Вы, должно быть, обратили внимание, что запись таблицы в HTML довольно громоздка. Более того HTML кода больше чем данных таблицы. Но это тот случай, когда искусство требует жертв. Кстати, HTML код этой таблицы я писал сам, символ за символом. Естественно возникали ошибки. Где слеш обратный пропустил, где квадратную скобку не закрыл. Браузер таблицу с ошибками отображал очень забавно (если можно назвать забавной таблицу с напрочь перемешанными ячейками, отображенными ни пойми в каких местах). К чему это я? К тому, друзья, что сложные таблицы сейчас "от руки" пишут редко. Даже не WYSIWYG HTML редакторы имеют средства для создания кода таблиц. Обычно это какие-нибудь мастера или wizard'ы. Обычно сначала таблица создается мастером, а затем правится с целью задания свойств отдельным ячейкам. Расскажу об одном таком мастере - мастере таблиц из редактора Macro HTML Александра Кузнецова (см. выпуск 12). Мастер вызывается нажатием на кнопку "Таблица" в панели инструментов. При этом появляется диалоговое окно, где можно задать всевозможные свойства будущей таблицы. Цвета всех элементов, cellpadding, cellspacing, border, align, rules,... Естественно мастер все атрибуты называет понятными русскими словами. Если нажать кнопочку "Тест", то можно сразу увидеть, что за таблица получится. А при нажатии "Создать" мастер сгенерирует HTML код и вставит его в документ. Нужно будет только ввести данные. Некоторые другие редакторы позволяют вводить данные во время работы мастера, на пример в режиме WYSIWYG. Мастер таблиц MacroHTML тоже может размещать данные в ячейки таблицы. Для этого их нужно ввести в документ каким-либо образом, напечатать или скопировать через буфер обмена. Затем следует выделить эти данные и запустить мастер таблиц. В его диалоговом окне будет помечен флажок "Разместить данные" и будут автоматически заданы числа строк и столбцов. Последние определяются из предположения, что исходные данные разделены каким-либо разделителем, что обычно и бывает. Разделитель можно выбрать. Очень просто преобразовать в HTML содержимое CSV файла. Нужно открыть его, выделить текст, запустить мастер таблиц и указать в качестве разделителя "," (запятую). Ну и "Создать", естественно, нажать. На последок, замечание относительно применения таблиц. В общем случае, по мере чтения таблицы браузером, ему не известна ее структура, за исключением уже прочитаного фрагмента. Поэтому при отображении документов, содержащих таблицы, браузер ожидает конца получения данных таблицы, затем интерпретирует ее и только потом отображает. Между началом загрузки таблицы и ее отображением имеет место пауза, пропорциональная сложности таблицы. При загрузке вебстраниц из Интернета эта пауза хорошо заметна, особенно если в таблицу заключено все содержимое страницы. При этом пользователь не может начать просмотр информации до полного завершения загрузки страницы. Бороться с этим явлением трудно, но все же можно уменьшить степень неудобства. Во-первых, нужно по возможности задавать ширину таблицы и число столбцов (атрибут COL тега <TABLE>). Во-вторых, можно разбить страницу на несколько частей (т.е. запихнуть все содержимое не в одну таблицу, а в несколько). Есть и такой интересный прием. Я применял его на странице со списком студентов нашего курса в первой версии сайта рассылки. Перед большой таблицей я поместил сообщение "Гружу...". А сама таблица после загрузки смещается вверх и закрывает это сообщение. Смещение таблицы сделано с помощью CSS. Это довольно просто. Вот соответствующий фрагмент кода:
<h2 style="color:red">Гружу ...</h2></center> <div style="margin-top:-3em;"> <TABLE BORDER BGCOLOR="#74CAF3" ALIGN="CENTER"> .... </TABLE> </div> Вот, в общем и все о таблицах. Некоторые вопросы, связанные с ними, остались за рамками нашего курса, но и изложенных сегодня сведений достаточно для создания таблиц на практике. Если кому интересно, мы не рассмотрели новые теги <THEAD>, <TBODY>, <TFOOT>, <COL>, <COLGROUP> и некоторые атрибуты рассмотренных тегов. Пополнить свои знания вы всегда можете в спецификации HTML или учебниках. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу | Рейтингуется SpyLog |
В избранное | ||