Основные тэги html
Основные теги
Теги оглавления
Атрибуты тела документа
Теги форматирования текста
Гиперссылки
Форматирование
Графические элементы
Таблицы
Атрибуты таблицы
Фреймы
Атрибуты фреймов
Ифрейм и его атрибуты
Формы
<html></html> Указывает программе просмотра страниц что это HTML документ.
<head></head> Определяет место, где помещается различная информация не отображаемая в теле документа. Здесь располагается тег названия документа и теги для поисковых машин.
<body></body> Определяет видимую часть документа
Теги оглавления
<base href="www.?"> Указание браузеру от какого базового адреса все ссылки (кроме ссылок явно прописанных полностью)
<base target="?"> Указание браузеру от какого базового окна в котором открываются все ссылки (кроме ссылок с отдельным указанием данного параметра)
<meta name="allow-search" content="?"> Указание для поисковых роботов как следует сканировать данную страницу
<meta http-equiv="distribution" content="?"> Указание для поисковых роботов относится ли данная страница к мировым
<meta name="robots" content="?"> Указание для поисковых роботов как следует сканировать данную страницу
<meta name="author" content="?"> Указание автора странички
<meta name="keywords" content="?"> Описание содержащийся информации (для поисковых машин)
<meta http-eguiv="content-type" content="text/plain;churset="?"> Указание браузеру в какой кодировке следует подгружать страницу (Window-1251, KOI8-R, KOI8-U, ISO-8859-5, UTF-8, UTF-16 и д.р.)
<meta name="description" content="?"> Ключевые слова странички (для поисковых машин)
<title></title> Помещает название документа в оглавление программы просмотра страниц
Атрибуты тела документа
<body bgcolor="?"> Устанавливает цвет фона документа, используя значение цвета в виде RRGGBB - пример: FF0000 - красный цвет.
<body text="?"> Устанавливает цвет текста документа, используя значение цвета в виде RRGGBB - пример: 000000 - черный цвет.
<body link="?"> Устанавливает цвет гиперссылок, используя значение цвета в виде RRGGBB - пример: 00FF00 - зеленый цвет.
<body vlink="?"> Устанавливает цвет гиперссылок, на которых вы уже побывали, используя значение цвета в виде RRGGBB - пример: 333333 - серый цвет.
<body alink="?"> Устанавливает цвет гиперссылок при нажатии.
Теги форматирования текста
<pre></pre> Обрамляет предварительно отформатированный текст.
<h1></h1> Создает самый большой заголовок
<h2></h2>, <h3>, </h3><h4></h4>, <h5>, </h5> Создает заголовоки промежуточных размеров
<h6></h6> Создает самый меленький заголовок
<b></b> Создает жирый текст
<i></i> Создает наклонный текст
<tt></tt> Создает текст - имитирующий стиль печатной машинки.
<kbd></kbd> Создает текст - имитирующий стиль печатной машинки.
<var></var> Название переменных отображается курсивом
<cite></cite> Выделение цитат курсивом
<address></address> Отображается курсивом в виде отдельного абзаца
<em></em> Наклонный текст (воспринимается посковыми роботами как выделение)
<strong></strong> Жирный текст (воспринимается посковыми роботами, как особо сильное выделение)
<font size="?"></font> Устанавливает размер текста в пределах от 1 до 7.
<font color="?"></font> Устанавливает цвет текста, используя значение цвета в виде RRGGBB.
Гиперссылки
<a href="URL"></a> Создает гиперссылку на другие сайты.
<atarget="?"></a> Указывает в каком окне открывать гиперссылку.
<a href="NAME"></a> Создает гиперссылку на другую страницу.
<a href="mailto:EMAIL"></a> Создает гиперссылку вызова почтовой программы для написания письма по указанному адресу.
<a href="#name"></a> Создает гиперссылку на метку текущей страници.
<a name="name"></a> Отмечает часть текста, как метку для гипперссылок на странице.
<a href="NAME#name"></a> Создает гиперссылку на метку другой страници.
Форматирование
<p></p> Создает новый параграф
<p align="?"></p> Выравнивает параграф относительно одной из сторон документа, значения: left, right, justify или center
<nobr> Запрещает перевод строки.
<wbr> Указывает где разбивать строку для переноса при необходимости.
Вставляет перевод строки.
<blockquote></blockquote> Создает отступы с обеих сторон текста.
<dl></dl> Создает список определений.
<dt> Определяет каждый из терминов списка
<dd> Описывает каждое определение
<ol></ol> Создает нумерованный список
<li> Определяет каждый элемент списка и присваивает номер
<ul></ul> Создает ненумерованный список
<li> Предваряет каждый элемент списка и добавляет кружок или квадратик.
<div align="?"></div> Важный тег используемый для форматирования больших блоков текста HTML документа, также используется в таблицах стилей
Графические элементы
<img src="name"> Добавляет изображение в HTML документ
<img src="name" align="?"> Выравнивает изображение к одной из сторон документа, принимает значения: left, right, center; bottom, top, middle
<img src="name" border="?"> Устанавливает толщину рамки вокруг изображения
<img src="name" vspase="?"> Устанавливает поля сверху и снизу
<img src="name" hspase="?"> Устанавливает поля сбоков
<img src="name" alt="?"> Всплывающая подсказка при наведении на имедж
<hr> Добавляет в HTML документ горизонтальную линию.
<hr size="?"> Устанавливает высоту (толщину) линии
<hr width="?"> Устанавливает ширину линии, можно указать ширину в пикселах или процентах.
<hr noshade> Создает линию без тени.
<hr color="?"> Задает линии определенный цвет. Значение RRGGBB.
Таблицы
<table></table> Создает таблицу.
<tr></tr> Определяет строку в таблице.
<td></td> Определяет отдельную ячейку в таблице
<caption></caption> Определяет подпись таблицы
Атрибуты таблицы
<table border="#"> Задает толщину рамки таблицы.
<table cellspacing="#"> Задает расстояние между ячейками таблицы.
<table cellpadding="#"> Задает расстояние между содержимым ячейки и ее рамкой.
<table width="#"> Устанавливает ширину таблицы в пикселах или процентах от ширины документа.
<table height="#"> Устанавливает высоту таблицы в пикселах или процентах от высоты документа.
<tr align="?"> или <td align="?"> Устанавливает выравнивание ячеек в таблице, принимает значения: left, center, или right.
<tr valign="?"> или <td valign="?"> Устанавливает вертикальное выравнивание для ячеек таблицы, принимает значения : top, middle, или bottom.
<td colspan="#"> Указывает кол-во столбцев, которое объединено в одной ячейке. (по умолчанию=1)
<td rowspan="#"> Указывает кол-во строк, которое объединено в одной ячейке. (по умолчанию=1)
<td nowrap> Не позволяет программе просмотра делать перевод строки в ячейке таблицы.
<td width="#"> Устанавливает ширину ячейки в пикселах или процентах от ширины таблицы (ячейки одного столбца не могут иметь разную ширину).
<td height="#"> Устанавливает высоту ячейки в пикселах или процентах от высоты таблици (ячейки одной строки не могут иметь разную высоту).
Фреймы
<frameset></frameset> Предваряет тег <body> в документе, содержащем фреймы;
<frameset rows="value,value"> Определяет строки в таблице фреймов, высота которых определена кол-вом пикселов или в процентном соотношении к высоте таблицы фреймов.
<frameset cols="value,value"> Определяет столбцы в таблице фреймов, ширина которых определена кол-вом пикселов или в процентном соотношении к ширине таблицы фреймов.
<frame> Определяет единичный фрейм или область в таблице фреймов.
<noframes></noframes> Определяет, что будет показано в окне браузера, если он не поддерживает фреймы.
Атрибуты фреймов
<frame src="URL"> Определяет какой из HTML документов будет показан во фрейме.
<frame name="name"> Указывает Имя фрейма или области, что позволяет перенаправлять информацию в этот фрейм или область из других фреймов.
<frame marginwidth="#"> Определяет величину отступов по левому и правому краям в нутрь фрейма; должно быть равно или больше 1.
<frame marginheight="#"> Определяет величину отступов по верхнему и нижнему краям в нутрь фрейма; должно быть равно или больше 1.
<frame scrolling=VALUE> Указывает будет-ли выводится линейка прокрутки во фрейме; значение value может быть "yes," "no," или "auto". Значение по умолчанию для обычных документов - auto.
<frame noresize> Препятствует изменению размеров фрейма пользователем.
Ифрейм и его атрибуты
<iframe></iframe> Создает контейнер, который может содержать любые элементы. Остальные элементы обтекают этот контейнер.
<iframe src="URL"> Определяет какой из HTML документов будет показан в ифрейме.
<iframe name="name"> Указывает Имя ифрейма, что позволяет перенаправлять информацию в этот ифрейм .
<iframe vspase="?"> Устанавливает поля сверху и снизу с наружи от ифрейма
<iframe hspase="?"> Устанавливает поля сбоков с наружи от ифрейма
<iframe marginwidth="#"> Определяет величину отступов по левому и правому краям в нутрь ифрейма; должно быть равно или больше 1.
<iframe marginheight="#"> Определяет величину отступов по верхнему и нижнему краям в нутрь ифрейма; должно быть равно или больше 1.
<iframe scrolling=VALUE> Указывает будет-ли выводится линейка прокрутки в ифрейме; значение value может быть "yes," "no," или "auto". Значение по умолчанию для обычных документов - auto.
<iframe width="#"> Определяет ширину ифрейма
<iframe height="#"> Определяет высоту ифрейма
<iframe title="?"> Текст всплывающей подсказки
Формы
<form></form> Создает формы
<select multiple name="NAME" size="?"></select> Создает скролируемое меню. Size устанавливает кол-во пунктов меню, которое будет показано на экране, остальные будут доступны при использовании прокрутки.
<option> Указывает каждый отдельный элемент меню
<select name="NAME"></select> Создает ниспадающее меню
<option> Указывает каждый отдельный элемент меню
<textarea name="NAME" cols=40 rows=8></textarea> Создает окно для ввода текста. Columns указывает ширину окна; rows указывает его высоту.
<input type="checkbox" name="NAME"> Создает checkbox.
<input type="radio" name="NAME" value="x"> Создает radio кнопку.
<input type=text name="foo" size=20> Создает строку для ввода текста. Параметром Size указывается длина в символах.
<input type="submit" value="NAME"> Создает кнопку "Отправить"
<input type="image" border="0" name="NAME" src="name.gif"> Создает кнопку "Отправить" - для этого используется изображение
<input type="reset"> Создает кнопку "Очистить"
Всё что вам нужно знать про память Windows. Читать от начала и до конца. Ну, про 333 можно не читать
Ask the Performance Team => Memory Management 101
Ask the Performance Team => Memory Management — Understanding Pool Resources
Ask the Performance Team => Memory Management — Dude where's my RAM??
Coding Horror => Dude, Where's My 4 Gigabytes of RAM?
The Old New Thing => Why can't I see all of the 4GB of RAM in my machine?
Ask the Performance Team => Memory Management — Demystifying /3GB
Clint Huffman's Windows Performance Blog => Free System Page Table Entries (PTEs)
A Premier Field Engineer in Denmark => Tuning Free System Page Table Entries when using /3GB and /USERVA=wxyz
Ask the Performance Team => Troubleshooting Event ID 333 Errors
Ask the Performance Team => Memory Management — Understanding Pool Resources
Ask the Performance Team => Memory Management — Dude where's my RAM??
Coding Horror => Dude, Where's My 4 Gigabytes of RAM?
The Old New Thing => Why can't I see all of the 4GB of RAM in my machine?
Ask the Performance Team => Memory Management — Demystifying /3GB
Clint Huffman's Windows Performance Blog => Free System Page Table Entries (PTEs)
A Premier Field Engineer in Denmark => Tuning Free System Page Table Entries when using /3GB and /USERVA=wxyz
Ask the Performance Team => Troubleshooting Event ID 333 Errors
Одна простая вещь
Если вы хотите защитить важную директорию от удаления вследствие небрежного обращения с командой rm -rf *, то создайте файл с именем -i, это заставит rm запросить подтверждение:
touch ~/important-directory/-i
Памятка PHP разработчика
Настройки PHP при разработке в качестве рекомендации
1) error_reporting = E_ALL | E_STRICT
2) display_errors = On
3) register_globals,register_long_arrays,magic_quotes off (первые 2 удалены в 5.4)
4) short_open_tag off
5) allow_call_time_pass_reference = off (Удалено в 5.4)
6) safe_mode — все настройки off (Удалено в 5.4)
Типичные уязвимости
Загрузка файлов:
1. Заливка исполняемого файла
2. Исполнение неопределённых Mime Type Apache например file.php.7z
3. Исполнение мета-информации например исполняемый image.gif
4. Уязвимость связки php+nginx (выставить cgi.fix_pathinfo=0)
5. Выставление некорректных прав на загружаемый файл
Код:
1. Ядовитый ноль он же нулевой байт он же символ конца строки %00, позволяет производить php injection
2. Не фильтрованный ввод
3. SQL injection
4. XSS
5. Remote File Inclusion [RFI] (отключаем allow_url_include = Off)
6. Возможность перехвата сессии (привязываем к клиенту)
7. Rainbow Table подбор ( храним пароли в sault md5)
8. Автоматизированное внедрение iframe (иногда помогает вынос точки выхода из приложение в файл отличный от index + exit в конце) (Такая простая мера очень часто меня спасала)
9. CSRF — Cross-Site Request Forgery (имитирование запроса пользователя к стороннему сайту)
Читать дальше →
1) error_reporting = E_ALL | E_STRICT
2) display_errors = On
3) register_globals,register_long_arrays,magic_quotes off (первые 2 удалены в 5.4)
4) short_open_tag off
5) allow_call_time_pass_reference = off (Удалено в 5.4)
6) safe_mode — все настройки off (Удалено в 5.4)
Типичные уязвимости
Загрузка файлов:
1. Заливка исполняемого файла
2. Исполнение неопределённых Mime Type Apache например file.php.7z
3. Исполнение мета-информации например исполняемый image.gif
4. Уязвимость связки php+nginx (выставить cgi.fix_pathinfo=0)
5. Выставление некорректных прав на загружаемый файл
Код:
1. Ядовитый ноль он же нулевой байт он же символ конца строки %00, позволяет производить php injection
2. Не фильтрованный ввод
3. SQL injection
4. XSS
5. Remote File Inclusion [RFI] (отключаем allow_url_include = Off)
6. Возможность перехвата сессии (привязываем к клиенту)
7. Rainbow Table подбор ( храним пароли в sault md5)
8. Автоматизированное внедрение iframe (иногда помогает вынос точки выхода из приложение в файл отличный от index + exit в конце) (Такая простая мера очень часто меня спасала)
9. CSRF — Cross-Site Request Forgery (имитирование запроса пользователя к стороннему сайту)
Читать дальше →
Highload оптимизация
Зачастую, «бутылочным горлышком» вашего приложения является база данных, таким образом перво-наперво включаем slow query log и смотрим какой запрос у нас самый медленный, и думаем что с ним делать, если не можем вкурить проблему — зовём старших, пусть тоже повтыкают в EXPLAIN (хабр) вашего чудо-запроса.
Но, опять же ссылаясь к моему опыту, большинство проблем с БД решают правильные индексы. Легко запомнить, что индексировать следует внешние ключи, и всё что у вас в WHERE, ORDER BY, GROUP BY (список не полон, для начала – самое оно).
Не следует пихать много индексов в таблицу которая часто обновляется, иначе накладные расходы на обновление индекса будут перекрывать ваш профит от оных в разы. Советую внимательно почитать об оптимизации в MySQL.
Поиск с использованием LIKE это плохо. Полнотекстовый с MyISAM уже лучше. Внешний аля Sphinx — рулит и бибикает для MySQL и PostgreSQL, инфа достоверная 100%.
Но это полбеды, проблем в БД может подкинуть и само приложение — обращение к БД в цикле/рекурсии или еще каким извращенным способом могут привносить удивительные поправки в результаты нагрузочного тестирования. Сделайте простой профайлер ваших запрос и проследите на каких страницах количество запросов начинает зашкаливать (особенно это касается типа-ORM и почти-Active Record, когда один объект = один запрос, или даже не один). Всем кто уповает на магию фреймворков, иль каких-нить gem-ов — не надейтесь, всё о чём я написал в равной степени относится к большинству языков web-программирования, г… код есть везде, он вездесущ.
Ну, а теперь о главном, нет о главной странице в 1,5 метра — дождется ли её загрузки пользователь со скоростью доступа в 256кбит? Клиентская оптимизация должна проводиться в обязательном порядке: YSlow да Page Speed вам в зубы. Да если погуглить, то даже небольшая правка htaccess для apache улучшит ситуацию:
Пожмите JavaScript и CSS, да переключите jQuery на Google CDN.
Но, опять же ссылаясь к моему опыту, большинство проблем с БД решают правильные индексы. Легко запомнить, что индексировать следует внешние ключи, и всё что у вас в WHERE, ORDER BY, GROUP BY (список не полон, для начала – самое оно).
Не следует пихать много индексов в таблицу которая часто обновляется, иначе накладные расходы на обновление индекса будут перекрывать ваш профит от оных в разы. Советую внимательно почитать об оптимизации в MySQL.
Поиск с использованием LIKE это плохо. Полнотекстовый с MyISAM уже лучше. Внешний аля Sphinx — рулит и бибикает для MySQL и PostgreSQL, инфа достоверная 100%.
Но это полбеды, проблем в БД может подкинуть и само приложение — обращение к БД в цикле/рекурсии или еще каким извращенным способом могут привносить удивительные поправки в результаты нагрузочного тестирования. Сделайте простой профайлер ваших запрос и проследите на каких страницах количество запросов начинает зашкаливать (особенно это касается типа-ORM и почти-Active Record, когда один объект = один запрос, или даже не один). Всем кто уповает на магию фреймворков, иль каких-нить gem-ов — не надейтесь, всё о чём я написал в равной степени относится к большинству языков web-программирования, г… код есть везде, он вездесущ.
Ну, а теперь о главном, нет о главной странице в 1,5 метра — дождется ли её загрузки пользователь со скоростью доступа в 256кбит? Клиентская оптимизация должна проводиться в обязательном порядке: YSlow да Page Speed вам в зубы. Да если погуглить, то даже небольшая правка htaccess для apache улучшит ситуацию:
# Enable ETag
FileETag MTime Size
# Enable Deflate
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
</ifModule>
Пожмите JavaScript и CSS, да переключите jQuery на Google CDN.
Полезные запросы, чтобы очистить БД в wp
Очищает всякие левые символы. Когда кодирует БД туда сюда.
Запрос, чтобы закрыть все «обратные ссылки» на свои посты. Ну функция пингбеки знаете такая есть. Не будешь же каждую запись вручную ;)
Очищает все неиспользуемые шорткоды.
Удаляет некорректные метки
Удаляет все неиспользуемые и давно забытые метки, которые не принадлежат постам, но остались в базе.
Очистка кеша фидов.
Удаляет все копии сообщений и историю изменений.!!! Вот это очень хорошо очищает. Ибо после каждого редактирования сохраняется копия правок.
Пакетное удаление старых сообщений
В данном примере устанавливается для удаления любой пост, который старше 600 дней.
Изменить автора у всех сообщений сразу.
UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '“', '“');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€', '”');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '’', '’');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '‘', '‘');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '—', '–');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '–', '—');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '•', '-');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '…', '…');
Запрос, чтобы закрыть все «обратные ссылки» на свои посты. Ну функция пингбеки знаете такая есть. Не будешь же каждую запись вручную ;)
UPDATE wp_posts SET ping_status = 'closed';
Очищает все неиспользуемые шорткоды.
UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;
Удаляет некорректные метки
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
Удаляет все неиспользуемые и давно забытые метки, которые не принадлежат постам, но остались в базе.
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms);
DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);
Очистка кеша фидов.
DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient%_feed_%')
Удаляет все копии сообщений и историю изменений.!!! Вот это очень хорошо очищает. Ибо после каждого редактирования сохраняется копия правок.
DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id);
Пакетное удаление старых сообщений
В данном примере устанавливается для удаления любой пост, который старше 600 дней.
DELETE FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF(NOW(), `post_date`) > 600
Изменить автора у всех сообщений сразу.
SELECT ID, display_name FROM wp_users;
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
Как убить тяжелый MySQL запрос?
1. Зайти на сервер по SSH.
2. Выполнить
$ mysql -u USER -p
USER — это ваш пользователь MySQL
3. Ввести пароль для USER.
4. Выполнить
show processlist;
(не забудьте про точку с запятой в конце)
5. Узнать идентификатор тяжелого запроса.
6. Выполнить
kill query 12345;
где 12345 заменить на идентификатор запроса.
2. Выполнить
$ mysql -u USER -p
USER — это ваш пользователь MySQL
3. Ввести пароль для USER.
4. Выполнить
show processlist;
(не забудьте про точку с запятой в конце)
5. Узнать идентификатор тяжелого запроса.
6. Выполнить
kill query 12345;
где 12345 заменить на идентификатор запроса.
Как узнать, какие модули Apache загружены в текущий момент?
В httpd.conf большой список незакомментированных модулей. Но есть ощущение, что список не полный. Как можно посмотреть полный спсиок модулей, который прямо сейчас загружен (используется) апачем?
Зайти на сервер по SSH и выполнить
apachectl -t -D DUMP_MODULES
Зайти на сервер по SSH и выполнить
apachectl -t -D DUMP_MODULES
В ispmanager при добавлении домена ошибка rotate already exists
Из раздела WWW domains в панели ispmanager исчез домен. При попытке добавить его второй раз появляется ошибка «rotate already exists». Как эту проблему решить? И почему вообще мог исчезнуть домен?
Нужно удалить из файла /usr/local/ispmgr/etc/rotate.conf записи об исчезнувшем домене. Потом добавить домен заново из панели.
Нужно удалить из файла /usr/local/ispmgr/etc/rotate.conf записи об исчезнувшем домене. Потом добавить домен заново из панели.