PHP: головоломка

28 комментариев

PHPХотите поломать голову над задачкой по веб-программированию ? Пожалуйста. Есть код:

<table><tr><td background=#fff7eb id=message>
<?php mysql_query("INSERT INTO `res_action` (`type`, `date`, `id`, `from`, `to`, `text`, `viewed`, `hidden`)
VALUES ('hate', '08/08/07 12:15', 1070808121557, 'foo', 'bar', '', '0', '0')"); ?>
</td></tr></table>

При обработке такого кода происходит ошибка – запись добавляется в базу два раза. Стоит убрать из таблицы цвет фона – ошибка исчезает. В продолжении – ответ на задачу. Кто сообразит без подсказки ?

Читать далее »



Google Sitemap

19 комментариев

Google sitemapGoogle Sitemap – это один из довольно интересных инструментов от Google для веб-разработчиков, позволяющих в какой-то степени влиять на индексацию своих сайтов. Про то, что это такое и зачем это надо подробно написано самими разработчиками. “Скормить” sitemap консоли Google можно в четырёх форматах:

  • Sitemap. Это созданный Google открытый XML-протокол.
  • OAI-PMH – это инфраструктура взаимодействия на основе сбора метаданных. Не стоит это курить, я думаю.
  • RSS-поток – каналы в формате RSS 2.0 и Atom 0.3.
  • TXT – простой текстовый файл, содержащий один URL в каждой строке.

Сам Google рекомендует использовать первый вариант, так как он наиболее информативен для его пауков. Текстовый файл несет слишком мало информации, а OAI-PMH это что-то сугубо спецефическое. Интерес представляет возможность обработки RSS, особенно в свете покупки Google сервиса FeedBurner, обрабатывающего RSS-потоки.

Об этом сейчас ведутся очень активные обсуждения, ставятся эксперименты, но делать выводы пока рано. Хотя быстрая индексация страниц сайта, отправленных RSS-потоком в FeedBurner, была замечена многими. Но тут есть один момент: для больших сайтов не получится транслировать в RSS все страницы, обычно это делается только для новых. Поэтому оптимальным мне кажется использование RSS одновременно с традиционным Sitemap.

Простейший файл с одним элементом и без необязательных параметров в формате Google Sitemap выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>https://zhilinsky.ru/</loc>
</url>
</urlset>

Для его автоматического создания есть большое количество онлайн-сервисов. Например, довольно простые пауки:

Комплексный онлайн-сервис с максимальной функциональностью:

А вообще есть официальный Sitemap-генератор от Google почему-то на языке Python и его неофициальный порт на язык PHP – PhpSiteMapNG. Для многих CMS существуют соответствующие плагины, Google Sitemaps для WordPress, например.

Жилинский Владимир.



Настройка .htaccess онлайн

16 комментариев

htaccess онлайнНашёл весьма полезный онлайн-сервис для работы с файлами .htaccess. Защита сайта или его части на этом уровне очень эффективна, так как создаётся на уровне веб-сервера Apache. Но ручное составление инструкций настройки .htaccess довольно скучное занятие, которое действительно лучше доверить скриптам.

Возможности:

  • Защита паролем (http-авторизация) сайта, части сайта, или файлов по маске (Password Generator)
  • Полная блокировка доступа с IP-адреса, списком или по маске (Visitor IP Banning)
  • Полная блокировка доступа по ссылке с определённых ресурсов (Site Referrer Ban)
  • Запрет использования файлов сайта на других ресурсах (Disable Hotlinking)

А ещё там есть скрипты для оптимизации изображений, маскировки e-mail адресов от ботов, генераторы favicon, градиентов и кнопок формата 80×15.



“RSS Submit” в рунете

26 комментариев

Rss submitВ комментариях к заметке, объясняющей принципы и пользу RSS был задан вопрос – куда можно сабмитить RSS-поток русскоязычного блога ? Кажется, пришло время ответить развернуто. Вот список русских сервисов (каталоги, аггрегаторы), принимающих на рассмотрение RSS-ленты блогов:

А вот тут – список аналогичных сервисов, рассчитанных на англоязычную аудиторию – чуть больше сотни. Впрочем, в гугле по словам “submit rss feed” их можно найти огромное количество.

Жилинский Владимир.



Безопасные CMS

18 комментариев

CMSНебольшой опрос показал, что наиболее безопасными и защищёнными от взлома люди считают следующие системы управления контентом (CMS):

  • CMS Made Simple – рекомендации от людей, занимающихся аудитом безопасности, успешная эксплуатация в “боевых” условиях.
  • SmallNuke CMS.
  • MODx CMS – довольно новая система, и довольно сложная, поэтому считается довольно безопасной.
  • Joomla CMS – постоянно выходящие обновления безопасности делают её очень защищённой.
  • e107.
  • ExpressionEngine Core.

Многие так же обратили внимание, что очень редко встречаются сообщения о взломе дорогих CMS. Скорее всего, дело в том, что при возникновении такой ситуации, владелец сайта просто обращается в техподдержку CMS и сам факт взлома из интересов создателей CMS не разглашается. Впрочем, многие считают Битрикс и Юми тоже очень “крепкими” системами. Исходя из того, кто их делает и почём продаёт, в этом нет причин сомневаться.

Жилинский Владимир.



Табличная верстка не хуже блочной

17 комментариев

Блочная верстка против табличной версткиПереписка о методах блочной и табличной верстки с Константином Красносельским, начатая в комментариях в статье про блочную верстку, вылилась в довольно интересную переписку, которую я с его разрешения и публикую.

Общий вывод довольно прост: глупо спорить о методах – суть не в них. Делать надо всё с умом.


Жилинский В.: Для меня блочная верстка удобнее – позволяет при программировании выкинуть из кода много мусора в tr и td и окончательно отделить контент от дизайна.

Красносельский К.: Да я и таблицами обхожусь без лишних тд и др. Когда смотрю на чужую верстку, не могу понять, зачем людям все эти тд и тр. Несколько лет назад я специально переделал одну страницу, чтобы показать человеку, что можно обходится без матрешек из таблиц. Но до него не дошло.

Так чем всё-таки таблицы от дивов при верстке принципиально отличаются ?

Так в том-то и дело, что я не вижу принципиальных различий и не понимаю, зачем о них спорить. Я верстаю наугад: какая клавиша попадет первая, такая верстка и будет.

Но ведь всё равно есть различия, например, их видно на мобильной технике типа смартфонов или КПК – там сайты с разными методами верстки и смотрятся совсем по-разному.

Да, отличия есть на несовершенных устройствах. Но это явление временное и устройства поймут, как отобразить сложные таблицы.

И ещё такой момент – редизайн намного легче сделать с дивами – передвигать блоки можно вообще в автоматическом режиме. С таблицами – пыли наглотаешься от таких задач.

Да нет, элементарно блоки превращаются в таблицы, а таблицы в блоки. Если таблицы выполнены без фанатизма
(без многократного вкладывания), а дизайн хранится отдельно от данных и скриптов. Все хочу написать статью об организации сайта – как хранить дизайн, данные и т. д., но руки не доходят. Так что, редизайн не зависит от способа верстки. Вообще, заглядывая во внутрь других сайтов, я вижу что у 99% верстальщиков в голове каша. Другого объяснения их приемам верстки не нахожу. А раз так, то не удивляет и спор вокруг таблиц и блоков.

То есть основная мысль такая: верстать сайт нужно так, как сказал заказчик, потому что разницы нет, правильно ?

Мне пока еще не разу никто не говорил, как нужно верстать. Говорят, каков должен быть внешний вид, часто дают готовые эскизы. А верстаю наугад. Раз так, в другой раз эдак. Если заказчик скажет как-то определенно, сверстаю точно по желанию заказчика.

Ясно. Ну я, к примеру, если заказываю верстку, то пишу конкретно – вот тут блоками будет лучше, тут таблицу оставить.

Ты то разбираешься в верстке, а обычный заказчик часто даже не знает, что бывает верстка блоками, верстка таблицами.



Infosecurity Russia 2007

3 комментария

Infosecurity Russia 2007Ну что же, пока мы готовимся к Chaos Constructions 2007 (кажется, в этом году даже удастся поучавствовать в его проведении), пусть порадуются и жители Москвы, ибо 26-28 сентября в Экспоцентре на Красной Пресне состоится международная выставка-конференция по информационной безопасности Infosecurity Russia 2007.

Infosecurity Russia 2007 – ведущая в России международная выставка-конференция по информационной безопасности, ежегодно собирающая экспертов отрасли из России, СНГ и стран дальнего зарубежья.

В этом году на выставке будут представлены новинки от мировых лидеров отрасли информационной безопасности, таких как – Cisco, Microsoft, F-Secure, Kerio Technologies, McAfee, Symantec, SurfControl, Trend Micro, Websense, а также ведущих российских фирм, таких как Аладдин, Антивирусный центр, АМТ-Груп, БИТ, Диалог Наука, Доктор ВЕБ, Информзащита, Инфосистемы Джет, Лаборатория Касперского, Поликом Про, Элвис Плюс, Digital Security, Positive Technologies и других.

Выставка-конференция Infosecurity ориентирована на бизнес-руководителей и руководителей служб ИТ и ИБ, специалистов по информационным технологиям, консультантов и экспертов по ИТ.

Жилинский Владимир.
За информацию спасибо Sklyaroff.ru.



Регулярные выражения

13 комментариев

Регулярные выражения (англ. regular expressions, жарг. регэкспы или регексы) — современная система поиска текстовых фрагментов в электронных документах, основанная на специальной системе записи образцов для поиска.

Это очень мощный инструмент работы со строковыми данными. Лично для меня всегда было трудно привыкнуть к синтаксису шаблонов – вылетает из головы быстрее, чем запоминается. Но и на этот счёт у меня есть “пара единственно верных решений”.

Во-первых, можно повесить на стенку шпаргалку по регулярным выражениям.

Во-вторых, есть замечательный инструмент – RegexPal.

regular expressions - регулярные выражения

Его видно на скриншоте. Этот скрипт позволяет на лету создавать и проверять шаблоны (паттерны) регэкспов, подсвечивает синтаксис и содержит подсказки. Кстати, этот скрипт можно сохранить – он работает независимо от сервера.

В-третьих, есть программа RegexBuddy, которую многие хвалят. Говорят, если с ней разобраться, то она очень удобна. Но она опять же денег стоит…

Ну и на закуску самая маленькая шпаргалка по регулярным выражениям:

. - любой символ кроме перевода строки.
^ - начало строки.
$ - конец строки.
\d,\w,\s - цифры, буквы [A-Za-z0-9_], пробел.
\D,\W,\S - всё кроме цифр, букв, пробела.
[abc] - буквы a, b, или c.
[a-z] - от a до z.
[^abc] - любой символ кроме a, b и c.
a|b - или a или b.
? - Ноль или один символов.
* - ноль или более символов.
+ - один или более символов.
{n} - точно n символов.
{n,} - n или более символов.
{m,n} - между m и n символов.

Жилинский Владимир.



Работа с UTF-8 в PHP

20 комментариев

UTF-8 PHPНе так давно в комментариях интересовались PHP-функциями для перекодировки в UTF-8 из других кодировок и наоборот. Выкладываю несколько скриптов, на основе которых, в принципе, можно собрать любую функцию для конвертации кодировок.

Напоминаю, что всё-таки это не самый прямой путь. Для начала попробуйте использовать Iconv, если он установлен на вашем сервере.

$title = iconv("ISO-8859-1","utf-8",$title); // из ISO в UTF.

скачать PHP скрипт detect_utf
Функция для обнаружения того, что строка закодирвана UTF-8 (бинарно). Возвращает true если UTF-8 или false если ASCII.

скачать PHP скрипт unicod
Функция для перекодирования строки CP1251 в UNICODE. Для экономии размера заменяет одинаковые по начертанию символы кириллицы на символы латиницы (чтобы сэкономить – вместо “&x0430” (“а” рус.) рисует “a” (“a” eng.))

скачать PHP скрипт win_utf8
Перекодировка win1251 -> unicode (UTF-8)
То же самое, только без экономии места.

скачать PHP скрипт utf8_win
Функция для перекодировки unicode UTF-8 -> win1251.

скачать PHP скрипт utf8win
Конвертация строки в Win-1251, если она закодирвана UTF. Например – (&[#]x041C;&[#]x0435;&[#]x043B;) . Иногда ошибается. Кавычки – чтобы WP не дешифровал.

скачать PHP скрипт utf16win
Конвертация строки в Win-1251,если она закодирвана UTF. Например – (%u041C%u0435%u043B). Иногда ошибается.

скачать PHP скрипт win2utf
Конвертирует Win1251 -> unicode (не UTF-8).



Социальные сети

8 комментариев

Социальные сетиПредлагаю порассуждать на тему социальных проектов в интернете — их уже так много, что пора уже как-то классифицировать. Пожалуй, стоит сразу заметить, что я имею в виду русскоязычные сервисы (в основной массе — клоны англоязычных).

На мой взгляд, несколько обособилась от остальных проектов Wikipedia (Видео: Wikis), прочно заняв свою нишу универсальной энциклопедии и источника информации. Примерно то же самое происходит и с Last.fm — многие пользуются, многие уже по привычке, но шума никакого нет — просто удобный сервис со своей аудиторией.

Сервисы социальных закладок понемногу сдают свои позиции. Я думаю, что основная причина — недостаточно юзабельные сервисы. Например, никто из них так и не догадался сделать плагины для браузеров, отображающие социальные закладки в привычном пользователям виде (а если такой плагин и есть, то я о нём не знаю).

К социальным закладкам примазываются сервисы социальных новостей, но опять же — ни одной удачной реализации я не вижу — у каждой есть свои недостатки — у кого-то проблемы со скоростью работы, у кого-то — с самой структурой социальной сети.

Недалеко ушли и сервисы контактов — большинство пользуется примитивным «вконтакте», в то время как любая попытка добавить функциональности неизбежно убивает удобство и интуитивность (Xing, например).

Поэтому я считаю, что единственная стабильная и саморегулирующаяся социальная сеть — это сеть блогов. А будущее за теми стартапами, основатели которых догадаются взять в команду толкового специалиста по usability (удобство и простота использования). Все желающие поспорить — комментируйте.

Жилинский Владимир.




© 2007-2010 Блог интернет-разработчика, автор — Zhilinsky.ru.
При использовании информации ссылка на источник обязательна.