FeedBurner: проверьте свои фиды

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

Работая над одной идеей, связанной с RSS, заметил, что больше половины всех FeedBurner-лент блогеров работают не совсем правильно. Дело в том, что при определённой настройке FeedBurner меняет в ленте все ссылки на редиректные, находящиеся на своём сервере. Таким образом, если на каком-то аггрегаторе выводятся ссылки на ваши последние статьи, то ведут они не на ваш сайт, а на FeedBurner, с которого уже перебрасываются к вам. С точки зрения пользователя это не заметно, а с точки зрения SEO — это маленькая катастрофа, так как вес в большинстве случаев не передаётся.

Сегодня вместе с Диким мы разобрались как решить эту проблему.

Решения два:

1. Если вы только создаёте RSS-трансяляцию в FeedBurner, то на втором этапе не ставьте галочку «Clickthroughs«.

FeedBurner Fix 1

2. Если лента уже существует, то зайдите в раздел «Analize» — «Site Stats» и снимите галочку с «Item link clicks».

FeedBurner Fix 2

Это всё. Теперь все ссылки на оригинал записи в ленте и в аггрегаторах будут вести прямо на ваш блог. Что от этого теряет статистика FeedBurner? Учёт кликов по заголовкам. Но его, в общем-то, никто и не смотрит.



Переходим на собственный блог

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

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

Итак, что нам нужно для этого сделать?

  • Найти хостинг.
  • Получить доменное имя.
  • Установить WordPress.
  • Настроить свой новый блог.

Хостинг стоит денег. Есть и дешёвые, есть и бесплатные варианты, но… поверьте, люди арендуют VDS и платят за хостинг не просто так. К одному из своих сайтов, созданных на бесплатном хостинге, я не могу получить доступ уже 5 лет (пламенный мой привет Агаве — яркому примеру отстойного хостинга).

Из достойных российских предложений я рекомендую Majordomo — у них круглосуточная техподдержка и всегда всё работает. Кроме того, WordPress на их хостинге устанавливается автоматически. Тариф «Солнечный» обойдётся вам в 175 рублей в месяц, а при оплате за 3 месяца домен вам дадут в подарок. Итого — 525 рублей за домен навсегда и хостинг на 3 месяца.

Опять же по ряду причин рекомендую выбрать доменное имя в зоне RU, желательно без дефисов и цифр и не длиннее 10 символов. Так имя будет смотреться серьёзно, а сайт будет хорошо индексироваться поисковыми системами.

После оплаты хостинга и выбора доменного имени вам останется только нажать на кнопку «Создание сайта» в панели управления и в пару кликов получить установленный WordPress.

Обязательно настройте его — выберите себе удобную тему оформления, фавиконку, зарегистрируйтесь в FeedBurner и перенаправьте через него фид RSS — это удобно.

Если ваша цель — писать, то можете приступать.



Комплект 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”.

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



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

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. Однажды зарегистрировавшись и залогинившись, во все подключенные блоги можно авторизоваться в один клик. Это, оказывается, весьма удобно, но создателям ресурса я уже посоветовал озаботиться разработкой не_флэш_версии плагина и дизайном этих модулей.

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

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



Бесплатный Adobe Photoshop Express

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

Бесплатный Adobe Photoshop ExpressКак и было обещано компанией Adobe 1 марта, вышел новый веб-сервис — Photoshop Express. Это бесплатная облегченная версия известного «фотошопа», в которой пока нет многих важных инструментов (отсутствуют карандаш, кисть и текст). на данный момент разработчики принимают пожелания и предложения по доработке сервиса.

Регистрация в Photoshop Express бесплатна, на собственную галерею пользователю выделяется 2 Гб. В настоящее время Photoshop Express доступен только на английском языке.

Для сравнения можете глянуть аналогичный сервис SplashUp, о котором я уже писал.

Спонсор: Зубастая биржа ссылок: на этом можно заработать.

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



Как на сайте сделать…

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

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

Итак, как…

Может кто-нибудь продолжит список в комментариях ?

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



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

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

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

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

Вдогонку к моей заметке про регулярные выражения нашлось ещё несколько полезных ссылок на новые сервисы автоматической проверки и конструирования регэкспов.

  • Шпаргалка по регулярным выражениям — на стенку.
  • RegexPal: Скрипт, который позволяет на лету создавать и проверять паттерны регэкспов средствами JavaScript. Подсвечивает синтаксис и содержит подсказки. Кстати, этот скрипт можно сохранить — он работает независимо от сервера.
  • Regexp.ru: Проверяет регэкспы средствами PHP (preg_match_all).
  • Rexv.org и REGex Tester: Проверяют регэкспы средствами PCRE, POSIX или JavaScript.
  • Java Regexp: Проверяет регэкспы на Java.

Спонсор: Есть работа!: О кредитах на приобретение жилья человеческим языком.

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



Блоги. Новая сфера влияния.

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

Блоги. Новая сфера влияния.На выходных приобрёл прочитал книгу Антона Попова «Блоги. Новая сфера влияния«. Забавно, что новость об этом «событии» вышла даже на главную Xабрахабра.

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

Несмотря на то, что уклон в книге сделан на маркетинг и сферу корпоративных блогов, в ней нашлось место и некоторым техническим моментам. Например, доходчиво описано, что такое RSS , приведён список самых популярных аггрегаторов и описаны способы организации e-mail трансляции. Необходимость всех этих действий подтверждена различными графиками и результатами опросов и исследований.

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

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



5 инструментов моей продуктивности

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

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

1. Mandriva Linux 2008 Free + комплект из Apache, PHP и MySQL.
Эта система меня порадовала и я её уже не хочу ни на что менять. Стабильность, открытость, понятность.

2. Firefox с плагином Firebug.
Комплект, который работает как швейцарский нож для разработчика. Осторожно, может вызывать лень. Хотя сейчас ещё Opera качаю — не для серфинга (мне неудобно), а для контроля верстки.

3. Google и его сервисы - GMail, Reader, Docs.
Поисковик, отличная почта, RSS-читалка и онлайн-офис. Удобный комплект.

4. Pidgin IM.
ICQ, Jabber, IRC, … — клиент. Надо бы к нему ещё Skype прикрутить.

5. Audacious.
Аналог XMMS и WinAmp. В отличие от второго — работает под Linux, в отличие от первого — не имеет проблем с кривыми русскими кодировками в тегах. Почему он в этом списке? Люблю работать под музыку.

А какие инструменты постоянно используете вы? Михаил? Сергей? Евгений?

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




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