OpenProfile – в режиме идеи.

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

OpenProfileНа iCamp 2008 мы не только пили пиво, но ещё и очень-очень много общались. Под воздействием эпохальных речей норвежских парней из Opera Software о скорой смерти проприетарных стандартов, в голове у представителей различных социальных сетей начали шевелиться мысли…

И начали мы думать, как нам объединить усилия таким образом, чтобы проекты ничего не потеряли, но при этом стали сильнее. Некоторые гнули в свою сторону, мол мы будем интеграторами всея рунета, некоторые махали руками в сторону Google, SocialGraph, FoaF, OpenID и прочих вещей, которые технологически интересны и полезны, но законченного решения, увы, не дают.

Потом мы ещё очень долго думали и к концу третьего дня iCamp мысль начала понемногу фокусироваться и люди с ней начали соглашаться.

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

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

Решение: создание единого формата обмена пользовательскими данными между сайтами.

Мы решили создать такой формат, придумав кодовое имя OpenProfile. Да, есть аналоги, может быть даже речь идёт об изобретении велосипеда, но мне кажется, что есть шанс сделать действительно удобный, гибкий и полностью децентрализованный формат. В каком-то роде это получится продолжение идеи OpenID, но пересекаться с ним никак не будет, разве что дополнит его.

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

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

1. Спецификация и форматы обмена данными в разнородных информационных системах на базе XML-технологий.

2. Уже почти забытый формат обмена PDF OIFML.

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

Если у кого-то есть мысли на этот счёт – welcome в комментарии или в Wiki по адресу oProfile.ru.

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



Безопасный Gmail.

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

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

Но с учётом того, что мы часто используем Wi-Fi и выходим в сеть из публичных мест, использование веб-клиента может быть небезопасно. Например, в из общей Wi-Fi сети на Chaos Constructions наши умельцы вытаскивали все пароли беспечных участников фестиваля прямо на большой экран. Выглядело это как-то так:

Chaos Constructions

Так вот – хорошая новость. Теперь в настройках почты Gmail появилась галочка – “Всегда использовать https”:

Gmail HTTPS

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

Мы собрали рюкзаки, повесили на них палатки, спальные мешки и через несколько часов выезжаем в Москву на iCamp. Не упустите шанс пообщаться!

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



IT Nation. Как меня рассмешили.

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

ITNation.ru - каталог IT-блоговНа днях я всё-таки переделал свой каталог IT-блогов “Коллеги” и вынес его на отдельный сайт – ITNation.ru, а со старого адреса сделал редирект.

Но из-за моей жуткой нехватки времени идея дополнительным функционалом так и не обзавелась, разве что поиск по всем блогам от Google CSE прикрутил. Его можно как поисковый плагин установить в браузере.

Меня сегодня насмешил автор блога IнTересности – он нашёл и подписал несколько “сюжетов”, сложившихся из иконок добавленных блогов:

ITNation

Пока кто-то идёт на вершину (1), кто-то уже носит медали (2), а кто-то курит чудо-траву(3).

ITNation

Одни ловят баги (1), другие ждут манные небесной (3), третьим уже конец (3).

Говорит, там ещё есть смешные моменты. Кстати,  про саму идею. Это матрица на 1000 блогов компьютерной тематики. Добавляется блог в пару кликов без регистрации, удаляется по просьбе. Ежедневно самые интересные из сообщений в добавленных блогах транслируются в общую ленту. На каждый блог, сообщение с которого транслируется, ставится прямая ссылка (хотя это зависит от того, как настроен у вас FeedBurner).

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



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? Учёт кликов по заголовкам. Но его, в общем-то, никто и не смотрит.

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



WebSlug – сравниваем скорость загрузки сайтов.

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

Я уже писал про проект Webo, позволяющий подробно анализировать скорость загрузки сайта и избавляться от тормозящих элементов. Сегодня мне на глаза попался ещё один интересный сервис на эту тему – WebSlug.

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

WebSlug

Так я узнал, что мой блог грузится быстрее сайта MicroSoft. К сожалению, у сервиса пока есть недочёт: на некоторых сайтах установлен простой скриптик, не разрешающий их открытие во фрейме. Такие сайты не обрабатываются – именно поэтому Google и Яндекс сравнить не удалось.

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



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

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

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

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

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

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

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

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

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

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

Если ваша цель – писать, то можете приступать. Если есть желание заняться тюнингом блога, обратите внимание на FAQ по блогингу, там всё уже описали до меня.

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



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

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



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

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

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

Начнём с сайта. Среднестатистический сайт – это набор файлов на диске и база данных, как правило – 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, о котором я уже писал.

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

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




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