Итоги 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.

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

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



Старые проблемы WordPress.

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

Проблемы WordPressНесмотря на уже довольно «взрослый» номер версии (2.5.1), WordPress пока не избавился от нескольких недостатков, которые с самого начала мешают ему сделать вообще всех.

Помните, чуть больше года назад пользователи, переходящие из ЖЖ (LiveJournal.com) лихорадочно искали удачные сборки Nested Comments + Subscribe To Comments? Я помню.

Проблема первая — древовидные комментарии.

Выходя из того же ЖЖ, новые пользователи ждали и ждут наличия в WordPress привычной и действительно необходимой функциональности — возможности ответить на любой комментарий и получить ответы на e-mail. По какой причине это так и не включили в официальный дистрибутив — загадка. А по какой причине это до сих пор нельзя реализовать без шаманского бубна — большая загадка.

Threaded comments - древовидные ветвящиеся комментарии в WordPress

Вот возможные варианты реализации:

  • Brian’s Threaded Comments (тот самый первый Nested Comments) — криво реализован на JavaScript, с коверканьем кода и превращением установку других плагинов в окончательное шаманство. Требует замены comments.php, не поддерживает стандартный WordPress Plugin API. Иными словами, это даже не плагин — это костыль.
  • Alex’s Threaded Comments — его форк, на вид не отличить.
  • YATCP — упрощённая версия. Очень упрощённая, за счёт этого абсолютно неудобная.
  • WordPress Thread Comment — китайская версия. Немного лучше BTC, но в целом — тот же JavaScript и безумие с кроссбраузерной версткой.
  • Disqus — монстроподобный и избыточно функциональный внешний сервис.
  • Intense Debate — аналог Disqus.

Подводя черту, можно сказать, что нормального, рабочего плагина, основанного на WP Plugin API и работающего без проблем просто нет. В этом блоге никаких threaded-комментариев не будет, пока я не найду или не напишу что-то работоспособное.

Проблема вторая — авторизация.

Писать в каждом блоге своё имя, адрес почты, блога и сколько будет 39+54 все уже порядком подустали, а единой системы авторизации нет даже на горизонте. Нужен аналог Яндекс.Паспорт или Google Accounts, например. Или плагин, который будет работать с аналогичной системой авторизации — с Google это, кажется, даже возможно. Да, есть OpenID — ещё одна группа кривых плагинов:

  • WP-OpenID — в данный момент его можно проверить у меня в комментариях. Мой аккаунт в ЖЖ считает анонимом, но комментарии принимает (!). С Я.Блогами работает отлично, но почему нет вообще никаких настроек? И ЖЖ — это не самый малоизвестный сервис.
  • Alternate OpenID for WordPress — альтернативный и опять же упрощённый до бесполезности вариант.

Есть ещё правда наш русский альтернативный проектOne-Face.ru (его тоже можно попробовать у меня в комментариях). Он построен на собственном протоколе на основе Flash. Однажды зарегистрировавшись и залогинившись, во все подключенные блоги можно авторизоваться в один клик. Это, оказывается, весьма удобно, но создателям ресурса я уже посоветовал озаботиться разработкой не_флэш_версии плагина и дизайном этих модулей.

Именно по этим двум направлениям очень хочется улучшения. А не через раз работающих флэш-загрузчиков в админке.

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



Майские праздники.

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

Неизбежно надвигается май а весте с ним — выходные и праздники. У меня на сегодняшний день три новости.

В первую очередь хочется отметить, что завтра — 1 мая, а это значит, что моему блогу исполняется ровно один год. Да, первого мая 2007 года была опубликована первая запись — Выбор движка для блога.

За год сделано многое — написано 212 статей, создан уникальный дизайн, на внутреннем счётчике — 78126 уникальных посетителей за этот год, на фидбернере — больше тысячи читателей, запущено несколько субдоменов (регистрация доменов, каталог IT-блогеров, библиотека).

Статистика по liveinternet Статистика по feedburner

Вторая новость. Первого мая проходит акция «RSS Awareness Day» в поддержку формата RSS как наиболее удобного и современного способа получения информации с сайтов и блогов. Что такое RSS?

День RSS

Третья новость. Приближается 9 мая, в честь чего Андрей Рябых начал акцию «Ты помнишь!» среди сайтов рунета, цель которой — показать, что мы помним о победе нашего народа в Великой Отечественной Войне. Для этого достаточно добавить георгиевскую ленточку к своему логотипу (я помню — я это сделал). Всем удачных праздников и хорошего отдыха !

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



Chaos Constructions 2008: начинается подготовка.

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

Chaos Constructions 2008Внимание! Публикация уже устарела: совсем скоро Chaos Constructions 2010.

Ежегодный Санкт-Петербургский хакерский фестиваль Chaos Constructions (ранее — ENLiGHT) начинает сверхраннюю подготовку к старту. Организаторы определились с датой — в этом году это будет 30 и 31 августа, как всегда включая ночь.

Тематика Chaos Constructions в этом году — электроника и микроконтроллеры. Но это только небольшой акцент, фестиваль пройдёт в духе своих лучших традиций.

На фестивале пройдут все традиционные конкурсы в полном объеме, а так же некоторые новые, например, Realtime Graphics и Invitation Compo (конкурс приглашений), приём работ на который уже начался. В прошлом году меня можно было увидеть среди организаторов на Antique и мельком на HackAround, в этом году пока не знаю свою форму участия.

Условия участия — стандартные для CC — 400 рублей за 2 дня, девушкам и участникам выставки раритетной техники вход бесплатный. Регистрация уже началась.

Небольшой экскурс в прошлое:

UPD: Уточнилось — я в организаторах. Пресс-центр.

UPD2: Отчёт по Chaos Constructions 2008.

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



Стартап — «Променял».

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

ПроменялСкоро начнётся закрытое тестирование проекта promenyal.ru, имеющего, на мой взгляд, весьма примитивную, но очень полезную идею.

Суть в том, чтобы позволить людям обменяться тем, что у них есть, но чем они не пользуются (а выкинуть — жалко).

Наверное, у каждого есть такие вещи — подаренная бутылка Хеннесси в шкафу у непьющего, например. У меня на шкафу стоит усилитель и две колонки Radiotehnika S35 в идеальном состоянии, а уж всякого компьютерного железа в самом шкафу — лень даже инвентаризировать. Начиная от пачки сетевых карт типа RTL-3129 и заканчивая раритетным переходником Socket 370 -> Slot1. Я бы с удовольствием выменял что-нибудь на материнскую плату под Socket 370 — в магазине таких уже давно не купишь, а выбрасывать старое железо — не в моих правилах. Я из него собираю устройства различной степени полезности.

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

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



Asus EeePC — как избавиться от Windows и поставить Xandros.

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

Asus EeePCСтал счастливым обладателем Asus EeePC — нашумевшего сабноутбука с рекордными ценой и размером. Меня не очень задела всеобщая истерика, связанная с этими устройствами, мне необходимо было мобильное устройство, а этот ноутбук оказался дешевле емкой батарейки в Dell Inspiron.

С лёгкой руки первых пользователей устройства этого класса окрестили SCC — Small Cheap Computer.

Приобретённый мной EeePC 4G XP шёл с предустановленной Windows XP Home, что не очень-то меня впечатлило. Как оказалось, задача установить на него родной Xandrox Linux не самая простая — пришлось вдоволь порыскать по сети в поисках инструкций и файлов — в комплекте к «ишке» шёл только диск с Windows (это цинизм — в устройстве нет CD-привода).

Как оказалось, получить диск с Xandros можно двумя путями:

Поскольку в наличие есть диск с Windows из коробки, то особой разницы откуда качать нет, но для установки понадобится компьютер с Windows и CD-ROM. Скачанный диск можно записать на болванку или смонтировать эмулятором и запустить утилиту создания загрузочной флешки (нужна флешка на 2Gb).

Asus EeePC

Загрузив EeePC с полученной флешки, мы получим «ишку» с установленной родной unix-like ОС. На чистом английском языке. Но это тоже поправимо: жмём Ctrl+Alt+T, открывается терминал.
su
(пароль)
dpkg-reconfigure locales

В открывшемся меню нужно выбрать ru_RU.UTF-8 и сохранить настройку.
mcedit /etc/X11/xorg.conf
Исправить строки в секции «InputDevice» / Identifier «keyboard» следующим образом:
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp:caps_toggle"

И обновим систему:
apt-get dist-upgrade

Всё, получаем русскую раскладку (переключение — капслоком), русские меню и русскую локаль.
Xandros на разрешении «ишки» (800×480) выглядит намного солиднее Windows, да и работает побыстрее. Мне уже удалось запустить Quake 3 Arena на этом устройстве (кому интересно — проинструктирую), надо будет попробовать запустить OpenArena. Впечатления от устройства исключительно позитивные — работает быстро, в карман влезет. Есть с чем поехать на СПИК-2008.

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




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