iCamp 2008 — активисты рунета в юртах

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

iCamp 200831 июля стартует iCamp 2008 – первая в России неформальная конференция интернет-активистов, проходящая в формате barcamp.

Она пройдёт в 100 километрах от Москвы рядом с городом Боровск (Калужская область), впрочем из Москвы будет организована доставка на место проведения.

Насколько я понял, этот «слёт» как раз для тех, кто скучным лекциям, повторяющимся из года в год (вспомнили СПИК), предпочитает неформальное кулуарное общение и решение вопросов на месте.

Организаторы обещают абсолютно неформальную и неформатную атмосферу, и судя по их



17 июня не забудьте скачать FireFox 3.

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

Firefox Download DayЭто официальная дата релиза отличного браузера и день, в который разработчики установят мировой рекорд по числу загрузок программы за сутки. И мы им в этом поможем.

Если верить данным Google Analytics, то среди моих посетителей более 41% использует этот браузер, но среди моих читателей (минус поисковый траффик) этот процент намного выше.

Прошедший недавно по блогосфере контент-вирус «5 программ, которые я использую» очень хорошо показал превосходство бесплатного и открытого браузера — он был практически в каждом списке.

Поэтому жмём по кнопке, обещаем помочь с рекордом, 17 июня скачиваем новую версию FireFox,
и радуемся новым возможностям самого популярного среди блогеров браузера. На данный момент более миллиона пользователей из разных стран пообещали загрузить Firefox 3, в том числе почти 35 тысяч пользователей из России.

И помните, Internet Explorer — это всего лишь программа, которая позволяет скачать FireFox :-)

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



Как сделать облако тегов на PHP.

41 комментарий

Облако тегов«Облако тегов» или «Облако меток» (англ. tag cloud) — визуальное представление списка ярлыков. Частота упоминаний, поисков, ссылок в интернете с определенного сайта неких слов, терминов, имен, отображается в виде изображения этих слов в формате гиперссылок. Размер изображения тем больше, чем выше релевантность данного слова.

Теги для многих удобнее категорий, и, наверное, поэтому без них сейчас не обходится ни один проект в концепциях Web 2.0. Для многих CMS есть модули или плагины, выводящие облако тегов. WordPress поддерживает такую функцию начиная с версии 2.3.

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

  • 1. Создал таблицу соответствий «Тег — Число».
  • 2. Заполнил её (несложная функция, подсчитывающая число вхождений тега в таблице блогов).
  • 3. Рассчитал максимальное значение и исходя из него — популярность каждого тега в процентах.
  • 4. Разделил теги на группы по популярности и назначил им CSS-классы.
  • 5. Подготовил соответствующие CSS-классы для отображения.
  • 6. Вывел облако на страницу блоком.

скачать PHP скриптTagCloud.phps - формирование облака тегов.

В тексте исходника — все инструкции, дамп таблицы и CSS-классы. Посмотреть этот код в действии можно в «Коллегах».

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



Комплект PHP-функций для работы с UTF-8.

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

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

Это полнейший must have для PHP-программистов — если даже и не включать это в готовый код, то для отладки — бесценно. Я уже не знаю, что бы я делал без функции is_utf8, например. Поэтому качаем архив, распаковываем его себе и пользуемся, изучив и сохранив описание.

Этот сборник продвинутых функций для работы с UTF-8 текстом создан коллективным разумом форума программистов и усилиями Рината Мухтарова. Скачать архив.

Далее — список доступных функций и их описания:

1. censure. Функция определяет наличие мата (нецензурных, матерных слов) в тексте. Возвращает false, если мат не обнаружен, иначе обнаруженное матерное слово. Алгоритм достаточно надежен и быстр, в т.ч. на больших объемах данных. Метод обнаружения мата основывается на корнях и предлогах русского языка, а не на словаре, поэтому скорость очень высока.

2. cp1251_to_utf8_recursive. Функция для перекодировки данных произвольной структуры из кодировки cp1251 в кодировку UTF8.

3. cp1259_to_utf8. Конвертирует текст из кодировки cp1259 и cp1251 в кодировку UTF-8.

4. html_template. HTML-ориентированный шаблонизатор с автоматическим квотированим значений меток-заменителей.

5. html_words_highlight. «Подсветка» найденных слов для результатов поисковых систем.

6. hyphen_words. Расстановка «мягких» переносов в словах.

7. is_utf8. Возвращает true усли переданная строка — правильный UTF-8, иначе false.

8. php2js. Конвертирует данные PHP из scalar, array и hash в данные JS в scalar/array/hash.

9. strip_tags_smart. Более продвинутый аналог strip_tags() для корректного вырезания тегов из html кода. Возможности:

— корректно обрабатываются вхождения типа «a < b > c».
— корректно обрабатывается «грязный» html, когда в значениях атрибутов тагов могут встречаться символы < >.
— корректно обрабатывается разбитый html.
— вырезаются комментарии, скрипты, стили, PHP, Perl, ASP код, MS Word теги.
— автоматически форматируется текст, если он содержит html код.
— защита от подделок типа: «<script>alert(‘hi’)script>».

10. textarea_rows. Вычисляет высоту области редактирования текста (<textarea>) по значению и ширине.

11. ucs2_to_utf8. Преобразует строку из кодировки UCS-2 в UTF-8, без использования iconv.

12. utf8_autoconvert_request_charset. Перекодирует значения элементов массивов $_GET, $_POST, $_COOKIE, $_REQUEST, $_FILES из кодировки cp1251 в UTF-8, если необходимо. Побочным положительным эффектом функции является защита от XSS атаки с непечатаемыми символами на уязвимые PHP функции.

13. utf8_check. Пытается определить, находится ли строка в кдировке Unicode.

14. utf8_convert_case. Конвертирует регистр букв в строке в кодировке UTF-8.

15. utf8_escape. Перекодирует строковые объекты так, чтобы они читались везде.

16. utf8_html_entity_decode. Конвертирует все HTML-entities в символы UTF-8.

17. utf8_html_entity_encode. Конвертирует спецсимволы UTF-8 в HTML-entities.

18. utf8_simple_search_sql. Создает условия для простого поискового SQL запроса, основанного на LIKE и REGEXP.

19. utf8_str_limit. Обрезает текст в кодировке UTF-8 до заданной длины, причём последнее слово показывается целиком, а не обрывается на середине.

20. utf8_strlen. Расширенная функция strlen() для работы со строками в utf-8.

21. utf8_substr. Расширенная функция substr() для работы со строками в utf-8.

22. utf8_ucfirst. Преобразует первый символ строки в кодировке UTF-8 в верхний регистр.

23. utf8_ucwords. Преобразует в верхний регистр первый символ каждого слова в строке в кодировке UTF-8, остальные символы каждого слова преобразуются в нижний регистр.

24. utf8_unescape. Функция декодирует строку в формате %uxxxx в строку формата UTF-8.

25. utf8_unescape_recursive. Рекурсивный вариант utf8_unescape().

26. utf8_unescape_request. Корректирует глобальные массивы $_GET, $_POST, $_COOKIE, $_REQUEST, декодируя значения в юникоде, закодированные через функцию javascript escape() ~ “%uxxxx”.

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



СПИК-2008: Присоединяйтесь!

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

6 июня 2008 года в отеле «Ольгино» состоится III Санкт-Петербургская интернет-конференция (СПИК – 2008), посвященная актуальным тенденциям развития интернета в России и Северо-Западном регионе в частности.

Я для себя примерно набросал следующий маршрут:

СПИК-2008

  • Как повысить эффективность медийной рекламы (Александр ЯКУТСКИЙ).
  • Как повысить эффективность контекстной рекламы (Алексей ДОВЖИКОВ).
  • Интернет-сообщества и социальные сети, секреты успеха (Дмитрий КРАВЧУК).

Для себя можете тоже повыбирать — вот полная программа СПИКа СПИК.

Ещё планирую принять участие в неофициальной мини-конференции Александра Мусаева Лес на СПИКе в кулуарах СПИКа, на которую приглашаются Лес на СПИКе все желающие пообщаться в таком формате.

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



Итоги Russian Blog Awards 2008.

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

Russian Blog Awards 2008

Подведён итог Russian Blog Awards 2008, этот блог признан лучшим в номинации Блог об Информационных технологиях. А в общем зачёте — 9-е место. Спасибо всем, кто по моей просьбе голосовал за блог!

Не забываем получать регистрации в "Москве".

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



Организация общения с посетителями сайта: варианты.

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

Организация общения с посетителями сайтаДовольно интересная тема, особенно важная для интернет-магазинов, сайтов турагенств и прочих оператор-ориентированных сервисов. Стандартный подход в рунете такой: в шапке сайта указывается телефон, в подвале — е-мейл, в лучшем случае есть ICQ или форма обратной связи.

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

На западе решением этой проблемы было озадачено несколько компаний, разработавших всё, что можно найти в Google по запросу «Live Chat Software«, то есть программы для мгновенной связи оператора с посетителем сайта. По некоторым данным, такой механизм в хорошей реализации может увеличить конверсию и, соответственно, продажи более чем на 80% (!). Это вполне логично — задать вопрос специалисту проще, чем лазать по каталогу и легче, чем звонить, искать кого-то в ICQ или ждать ответа по e-mail.

Отсюда логически следует жизненный вопрос: как это реализовать, желательно самостоятельно и бесплатно?

Подход первый. Грамотный.
Будем писать сервис под себя. Самый удобный, открытый и подходящий для этой цели стандарт, на мой взгляд — Jabber Jabber. Берём class.jabber.php class.jabber.php или немного его доработанный вариант PHP Jabber Client PHP Jabber Client и пишем всё, что нам нужно. Для любителей Python: xmpppy xmpppy.

Не нравится XMPP — можно рискнуть и заморочиться с ICQ, например на основе PHP-класса WebIcqPro WebIcqPro или даже Java-библиотеки Joscar Joscar. Я думаю, что ICQ следует использовать только в том случае, когда нет возможности использовать Jabber, так как этот протокол не блещет стабильностью, надёжностью и предсказуемостью. Да и возможность несложного создания Jabber2ICQ гейта даёт Jabber`у дополнительное преимущество.

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

1. Hab.la Hab.la. Весьма удобный сервис, основанный на Jabber. Легко настраивается, не вызывает конфликтов, легко интегрируется в любую страницу, позволяет использовать любой jabber-клиент на стороне оператора. Подробнее про хаблу можно почитать у Дикого Hab.la.

2. Google Talk chatback badge Google Talk chatback badge. Просто и со вкусом, если грамотно оформить, то вполне приемлемо. Но найден недостаток в реализации — сделано с использованием Flash (Google, ЗАЧЕМ?), что ограничивает в общении неанглоязчных пользователей не-windows. Я надеюсь, в Google исправят этот косяк.

Подход третий. Корпоративный.
Самим писать ничего не хочется, бесплатных сервисов мало, хочется чего-то серьёзного — придётся платить. Не буду рекламировать платные сервисы, скажу только, что идеального среди них я тоже не нашёл, так как каждый стремится к изобретению нового двухколёсного транспортного средства. Вот список более-менее дружественных корпоративному пользователю:

  • Веб Мессенджер Веб Мессенджер
  • SiteHelper.NET SiteHelper.NET
  • GoTalk GoTalk
  • LiveContact LiveContact

В общем, выбор есть, и я постарался сделать его чуть более очевидным. Пользуйтесь, это очень повышает уровень доверия пользователей к онлайн-сервису.

Спонсор статьи: продвижение сайтов от StarDesign. Без комментариев.

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



Началась регистрация на СПИК-2008

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

СПИК-2008Третья Санкт-Петербургская интернет-конференция «СПИК – 2008» состоится 6 июня 2008 года в отеле «Ольгино». Эта конференция, проводимая в рамках Северо-Западного этапа всероссийского Интернет-Марафона (РОЦИТ) посвящена развитию интернет-бизнеса в регионе и привлечению внимания компаний к современным сетевым возможносям.

Мои заметки о предыдущих конференциях:

На официальном сайте конференции СПИК-2008 открыта регистрация для бесплатного посещения. Быть всем :-)

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

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



PHP: фильтр от XSS и SQL-инъекций.

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

Защита от XSS-атак и SQL-инъекцийПредлагаю небольшое исследование на тему безопасности веб-приложений и фильтрации вводимых данных. Скорее всего, я ещё вернусь к этой теме, но сейчас больше хочется не писать трехтомник, а сохранить и упорядочить собранное и проверенное. В частности, речь пойдёт о фильтрационной защите от XSS-атак и SQL-инъекций.

В PHP есть ряд специальных функций для работы со строками, применимых для этой цели. Вот они:

strip_tags() — вырезает теги HTML и PHP из строки.

htmlspecialchars() — конвертирует только специальные символы (‘&’, ‘»‘, »’, ‘<‘ и ‘>’) в HTML сущности (‘&amp;’, ‘&quot;’…). Используется для фильтрации вводимых пользователем данных для защиты от XSS-атак.

htmlentities() — конвертирует все символы в строке (кроме букв) в мнемоники HTML. Используется для защиты от XSS, являясь более гибким аналогом htmlspecialchars.

stripslashes() — удаляет заэкранированные символы (после преобразования в сущности предыдущими функциями их незачем экранировать). Обычно используется в связке с проверочной функцией get_magic_quotes_gpc(), показывающей текущую установку конфигурации magic_quotes_gpc.

Эта конфигурация влияет на то, как будут обрабатываться специальные символы, содержащиеся в данных, передаваемых пользователем (массивы $_GET, $_POST, $_COOKIE). При magic_quotes_gpc = 1 эти спецсимволы (одиночные и двойные кавычки, обратный слэш, байт NULL) автоматически экранируются. При magic_quotes_gpc = 0 все данные передаются в таком виде, в каком их ввел пользователь. В последнем случае в целях безопасности требуется обрабатывать передаваемые данные.

mysql_real_escape_string — мнемонизирует специальные символы в строке для использования в операторе SQL с учётом текущего набора символов в кодировке соединения. Иными словами, функция превращает любую строку в правильную и безопасную для MySQL-запроса. Используется для очистки всех данных, передающихся в MySQL-запрос для защиты от SQL-инъекций.

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

скачать PHP скриптInputClear.phps - фильтрация введённых пользователями данных.

Если кто-то обнаружит ошибки, или знает способ лучше — добро пожаловать в комментарии, мне очень интересно.

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



Резервирование и бэкап — зачем и как.

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

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

Начнём с сайта. Среднестатистический сайт — это набор файлов на диске и база данных, как правило — MySQL.

С базой данных особых проблем не вижу:

  • для WordPress есть плагин WordPress Database Backup WordPress Database Backup, который сохраняет базу по расписанию и отправляет её на e-mail
  • для других систем можно воспользоваться скриптом Sypex Dumper Sypex Dumper, или настроить дамп и отправку по почте самостоятельно (несколько строк кода).

С сохранением файлов сайта чуть сложнее. Можно просто периодически сохранять их вручную, но можно и автоматизировать.

Сначала заархивируем все файлы сайта в один архив с помощью библиотеки PclZip PclZip:

<?php require_once('pclzip.lib.php');
$date = date('Y-m-d');
$archive = new PclZip("$date.zip");
$v_list = $archive->add('../');
if ($v_list == 0) { die("Error : ".$archive->errorInfo(true)); }

В этом примере $v_list — это относительный путь к архивируемому каталогу или список каталогов и фалов через запятую. Выбирайте сами, что именно нужно резервировать.

После этого можно сделать дамп MySQL базы и добавить его в этот архив, а потом, например, отправить полученный архив по почте с помощью класса PhpMailer PhpMailer и удалить его чтобы не занимал место. Запускать этот процесс можно с помощью планировщика у хостинг-провайдера (у Majordomo бесплатный) или (если это WordPress) с помощью WP-Cron WP-Cron.

Законченного решения я не выложил, но конструктор укомплектован — собирайте кому что нужно, все части надёжны и проверены.

Следующий эпизод — локальный компьютер. Тут стоит сразу определиться — что именно резервировать. Для больших и редко используемых файлов (фото, видео, архивы) я поставил себе под стол старенький компьютер под Ubuntu, настроил NFS и забыл о нём — приходя домой я получаю доступ к этим файлам, а в крайнем случае — можно и удалённо залезть.

А для регулярного бэкапа текущих проектов вполне подойдёт Gmail. Бесплатный почтовый ящик вмещает до 10Gb данных, а самый интересный фокус в том, что его можно подключить как обычный диск — как в Linux GmailFS, так и под Windows GMail Drive. А сохранять туда нужные файлы тоже можно кроном, или его Windows-аналогом — nnCron + nnBackup nnCron.

А заодно посмотрим, что об этом думают другие участники конкурса на лучший способ бэкапа личных данных.

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




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