PHP, семинары и конкурсы

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

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

1. LastRSS — открытый парсер RSS. Возможности перечислять смысла нет — он может практически всё, что только можно придумать при работе с RSS-потоками.

2. Нашёл несколько шаблонов под скрипты, которые могут сэкономить время при разработке аналогов: скрипт защиты графическим кодом (captcha) и cкрипт разбивки на страницы (1, 2).

Ну и ещё немного информации:

Umisoft и TRINET организуют совместный семинар 10 октября в Санкт-Петербурге в конференц-зале бизнес-центра Бизнес-Депо по теме «создание и продвижение эффективного корпоративного сайта». Вот думаю — не сходить ли, на СПИКе парни из TRINET зажигали очень неплохо.

Наш «Конкурс Конкурентов» продолжается (ещё принимаются адреса компьютерных блогов на участие), на данный момент собрано 42 блога, соответствующих требованиям : OPML.

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



Капча (captcha)

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

Captcha скрипт PHPCAPTCHA (от англ. «Completely Automated Public Turing test to tell Computers and Humans Apart» — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей) — торговая марка Университет Карнеги — Меллона, компьютерный тест, используемый для того чтобы определить, человек ли использует систему.

Термин появился в 2000 году. Основная идея теста: предложить пользователю такую задачу, которую легко решает человек, но которую невозможно (или крайне трудно) научить решать компьютер. В основном это задачи на узнавание образов.

Существует готовое решение, которое можно просто взять и поставить на свой сайт, немного разобравшись в настройках: проект KCAPTCHA. Для его работы требуется только PHP версии 4.0.7 или выше с поддержкой библиотеки GD версии 2.

Не могу обойти вниманием и такие сервисы как Сaptchator и Recaptcha. Также весьма интересны рассуждения о kaptcha-алгоритмах Ивана Склярова.
Ну а поскольку сегодня праздник (День программиста), а программисты люди весёлые, вот ещё ссылочка: Самые безумные КАПЧИ в интернете.

Кстати, в WordPress капча тоже реализуется через плагины, например, Anti-Spam Image.

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



Ускорение PHP-программ

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

PHP ускорение и оптимизацияКак без особых усилий заставить PHP-код работать на порядок быстрее ? Перед тем как задаваться вопросами кеширования и масштабирования стоит попробовать оптимизировать код. Есть ряд несложных правил:

  • Выносите переменные из строк. Примерно так: <?php $x=»test».$test; ?> , это на 25-40% быстрее.
  • Имена переменных должны быть короче 7 символов. Это быстрее на 15%.
  • В массивах не стоит обращаться к элементам по имени и без кавычек. Особенно в многомерных. Сэкономите 40%.
  • А если обращение к элементу массива вынести из строки (как в пункте 1), то можно сэкономить ещё 25-30%.
  • Используйте Perl-ориентированные регулярные выражения. Или хотя бы сравнивайте их с POSIX-аналогами по скорости выполнения. Скорость может отличаться до 200% на разных запросах.
  • SizeOf() быстрее Count(), а в циклах sizeof лучше вообще заменить на переменную, for и while практически не отличимы, для перебора простых индексных массивов нужно использовать for или while, а для ассоциативных массивов — foreach. Плюс 30% при соблюдении.
  • Для чтения файла file() быстрее, чем fopen()+цикл. Ускорение до 40%.

Прочитать про всё это подробнее, посмотреть графики скорости и загрузить все примеры можно вот тут: «Оптимизация программ на PHP«.

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



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» их можно найти огромное количество.

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



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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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



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

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

Регулярные выражения (англ. 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).




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