Блоги и сообщества

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

Как я писал много раз, главное (и единственное) достоинство ЖЖ в сравнении с другими «платформами» — это «тусовка по интересам». Вести блог в ЖЖ или вести его на standalone-хостинге — небольшая разница. А вот такая замечательная «фича» ЖЖ, как «сообщества», по-видимому, остается единственной возможностью не дать бывшим пользователям ЖЖ «разбежаться» на другие блогохостинги.

Формат «сообщества» — это некое развитие обычного форума. В самом деле, записи на главной странице сообщества можно сравнить со списком тем древовидного форума (типа ВИФ2NE), которым соответствуют древовидные же комментарии. Но достаточно сравнить упомянутый Военно-исторический форум и [info]warhistory, чтобы, как говорится, почувствовать разницу.

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

Соответственно, необходимость участвовать в жизни сообществ держит пользователей в ЖЖ. Никакие уговоры переходить на другой хостинг не помогут «окончательно порвать» с ЖЖ — просто за счет того, что в этом случае придется покинуть привычные community и уходить на форумы.

С другой стороны, никто всерьез не рассматривал вопрос о переводе сообщества на standalone-платформу. При этом, ИМХО, вполне возможно настроить WordPress таким образом, что в нем смогут писать посты входящие по OpenID пользователи — а это, по сути, и есть основная функция сообщества — большое количество авторов. Добавим сюда трансляцию в ЖЖ — и получим нечто большее, чем очередной форум.

Думаю, надо поэкспериментировать в этом направлении. Если же удастся интегрировать подобную функциональность в WordPress MU — получим очень интересный движок для «правильного» блогохостинга. И, конечно же, не надо повторять ошибок нынешней администрации ЖЖ и считать OpenID-пользователей «людьми второго сорта». Для небольшого блогохостинга возможность привлечь в свои блоги и сообщества людей из ЖЖ — просто находка.

Standalone-френдлента

Похерил свою «френдленту», которую изготавливал плагин Feedwordpress. Плагин жутко глючный, не используйте ни в коем случае!

Придется писать свой практически с нуля.

Про OpenID-плагин

Продолжаю разбираться с OpenID-плагином Александра Никулина. Сегодня напишу свои измышления по поводу реализованных в этом плагине методов авторизации.

Итак, в «обычном» WordPress без плагинов можно «авторизоваться» двумя способами. Первый — оставить комментарий, тогда WordPress сбросит cookie с информацией о комментаторе. При последующих загрузках страницы с формой для комментариев будет происходить ее автозаполнение. Второй способ — авторизация на страничке wp-login, но у нее есть свои недостатки. Во-первых, не хотелось бы включать опцию «каждый может зарегистрироваться» и пускать пользователей в админскую панель, пусть даже и «сильно обрезанную». Во-вторых, регистрироваться на standalone-блоге лишь для того, чтобы оставить комментарий, будет далеко не каждый.

Плагин Александра Никулина добавляет «третью» возможность. Оставив OpenID-комментарий, пользователь получит cookie, по которому OpenID-плагин будет «узнавать» его. Это напоминает первый метод, но в cookie используются другие параметры.

Этот подход имеет огромное количество недостатков. Самый большой — незнание авторов других плагинов о том, что пользователь с определенными cookies считается «залогиненным». Эти cookies не опознаются, как принадлежащие WordPress. Конечно, можно добавить в OpenID-плагин фильтр, который, при наличии кеширующего плагина, будет оповещать тот, что пользователь уже зашел, но придется также править .htaccess, что уже не настолько тривиально.

В общем, плагин нуждается в серьезной переделке. И здесь снова есть два подхода — сделать авторизацию по специальным образом составленному «имени пользователя» в cookie или же использовать встроенную в WordPress систему «пользователей» и «ролей». Второй вариант мне представляется более интересным. Думаю, что подобным способом можно сделать даже некое подобие ЖЖшных «сообществ» на движке WordPress — а это уже очень заманчивая перспектива. Если удастся еще и «подружить» это с WordPress MU — то будет совсем здорово.

Френдлента против RSS

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

Итак, Friends Page, она же «Лента друзей», она же «френдлента» — это страница, содержащая выбранные в хронологическом порядке записи «друзей» (или, точнее, «френдов») пользователя ЖЖ. Наверное, это самая посещаемая страничка для любого ЖЖ-юзера. К сожалению, «стандартный» WordPress чисто технически не может показывать френдленту из ЖЖ, и сократить заходы на страницы в домене livejournal.com не получается.

Но… Несмотря на то, что движок ЖЖ делался по принципу «лишь бы работало» людьми, не имеющими никакого понятия о работе большого блогохостинга (кстати, винить их за это ни в коем случае не надо — до появления ЖЖ не было ни одного блогохостинга в его сегодняшнем понимании), очень многое в ЖЖ сделано по-человечески. В частности, в ЖЖ имеются RSS-трансляции всех блогов, предназначенные, например, для роботов типа яндексовского поиска по блогам. Ознакомиться с «ЖЖ для ботов» можно здесь:

http://www.livejournal.com/bots/

Есть даже поддержка HTTP Digest — метода авторизации с включением данных, обычно остающихся в Cookie, в GET-запрос.

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

К числу недостатков такого подхода относится то, что в этом случае в базе данных WordPress сохраняются копии всех записей из френдленты. Поэтому необходимо ограничить количество кешируемых записей. Например, в ЖЖ френдлента ограничена «в глубину» 1000 записями. Предположим, что каждая запись занимает 10 Кб. Тогда они займут в базе данных порядка 10 Мб. Это много, но допустимо в случае одного блога.

При использовании подобных методов, например, на небольшом блогохостинге на 200 посадочных мест, размер базы данных рискует стать просто непомерным. Поэтому ограничения просто жизненно необходимы. Кроме того, нужно избежать дублирования записей из френдлент разных пользователей. Например, если пользователи Бивис и Батхед с блогохостинга на WordPress MU читают один и тот же блог в Livejournal, то должна создаваться только одна запись в вордпрессовской базе данных.

В общем, доработка плагина обещает стать весьма интересной задачей.

Блогохостинг быстрого приготовления

Вниманию общественности предлагается новый проект Шуры Люберецкого под условным названием «Типовой блогохостинг на 200 человек» или проект быстроразворачиваемого блогохостинга для массовых миграций из жежешечки.

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

Технические детали и прочая полезная информация будут несколько позже.

Про OpenID

Самый большой недостаток OpenID в его нынешнем виде — невозможность «обратной связи» с владельцем аккаунта по e-mail. С Identity URL не связывается никакой адрес электронной почты, соответственно, опенайдиста нельзя уведомить об ответах на его комментарии. Это неудобно как самому комментатору, так и отвечающим — вряд ли кто-то, оставив комментарий, будет регулярно заходить на сайт, чтобы увидеть, не появились ли новые ответы.

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

Вариант второй, увидено на Тифаретнике. Там все сделано несколько проще, но почему-то только для пользователей ЖЖ. Вместе со строкой ввода логина ЖЖ показывается строка ввода e-mail адреса, на который в дальнейшем будут приходить извещения об ответе на комментарий. Этот метод тоже имеет свои недостатки — как-никак, а лишнее поле ввода совсем не «смотрится», да и заставлять всякий раз вводить e-mail заново как-то не кошерно.

Наверное, наиболее разумным решением, которое удовлетворило бы всех, было бы добавление в «стандарт» OpenID требования к OpenID-сервисам предоставлять своим пользователям e-mail адрес, легко получаемый из Identity URL, например, из user.server.com генерировался бы user@server.com. Можно делать не полноценный e-mail адрес, а нечто вроде «шлюза», когда письма на user@server.com перенаправляются на указанный пользователем адрес. Это реализуется сравнительно легко.

К сожалению, никакого «стандарта» для серверов, предоставляющих OpenID, не существует. Так что придется как-то выкручиваться. В своей модификации OpenID-плагина для WordPress постараюсь реализовать следующую схему: показывать поле ввода e-mail для пользователей с OpenID, а также галку «запомнить меня». Если введен e-mail — то он будет использоваться для уведомления об ответах на комментарий, если поставлена галочка «запомнить» — то создается некое подобие «OpenID-аккаунта» из ЖЖ, с «привязанным» к нему e-mail адресом. Более того, в этом случае комментатор сможет «входить» и с «морды» сайта.

Если исчезнет LiveJournal

Уже полторы недели обещаю написать критическую запись об OpenID. По мере написания сие трансформировалось в настоящую, можно сказать, постапокалиптическую, повесть под рабочим названием «Если исчезнет LiveJournal». Что же, мое так называемое творчество в жанре альтернативной истории вызвало приступы неконтролируемой ненависти у некоего анонима. Думаю, что постапокалипсис будет не хуже.

В начале хочу извиниться за «многобукв» и обилие технических терминов. Впрочем, некоторым понравится.

В общем, представим себе на минуту, что терпит банкротство очередная «инвестиционная компания», в очередной раз купившая ЖЖ. Никто не заинтересован в покупке неприбыльного web-сервиса, в результате чего сервера по остаточной стоимости выкупает хостинговая компания и предоставляет всем бывшим пользователям ЖЖ 6 месяцев (да, они добрые :) ) на скачивание архива своих уютных бложиков. В результате 13 миллионов педофилов остаются с собственными «полными собраниями сочинений» на винчестерах и без всякой возможности высказывать в интернете свое мнение обо всем на свете.

Что же происходит дальше? Вряд ли стоит ожидать массовой миграции бывших ЖЖистов на DeadJournal (эмоготский суицидальный клон жежешечки), лирушечку, диарею и тифаретник. А вот появление большого количества малых блогохостингов с использованием чего-нибудь вроде WordPress или WordPress MU — вполне вероятно. Как будет выглядеть такой блогохостинг «после ядерной войны»?

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

Еще одно лирическое отступление на тему конкретно постапокалипсиса. Очень многие авторы, описывая мрачное будущее, на самом деле пишут про «проклятое прошлое» — некий средневековый феодализм с автоматами вместо арбалетов. По-моему, это не совсем верно. Еще бородатый Карл Маркс писал, что общественные отношения напрямую зависят от технологического прогресса — читай «способности обеспечивать потребности общества». Уровень «постапокалиптических» технологий — на много порядков выше средневекового, соответственно, и общество будет отличаться от феодального. Применительно к Интернету — никто не будет возвращаться от блогов к «домашним страничкам» на narod.ru. Даже в отсутствие ЖЖ всем доступны такие технологические новинки, как хостинг с PHP, MySQL и прочими недоступными простым смертным пять-шесть лет назад маленькими радостями.

Не думаю, что будут массово плодиться standalone-блоги. Все-таки «самодеятельное сайтостроительство» — это особый вид хобби, сродни «фидошничеству» или любительской радиосвязи. Далеко не каждый способен понять, в чем кайф от связи с какой-нибудь Южной Америкой на минимальной мощности, какое может быть удовольствие от маршрутизации эхопочты, или, как в нашем случае, от победы над какими-то плагинами WordPress. Содержание стендалончика подразумевает еще кучу дел, к блоггингу непосредственно не относящихся. Зато малые блогохостинги «на 10 персон» будут развиваться очень активно.

Можно ожидать развитие совершенно новых отношений между пользователями и администрацией. Если самые мелкие «панковские» блогохостинги, состоящие из двух-трех «параллельных» установок WordPress будут функционировать, в лучшем случае, на энтузиазме единственного админа, подогреваемом пивом от благодарных пользователей, то на более крупных возможны рекламные «партнерские программы» и прочие привлекающие публику удовольствия.

Потерь в «сервисном обслуживании», скорее всего, не будет. Если недовольство одного пользователя ЖЖ для тамошней администрации незаметно, то потеря даже одного из сотни клиентов для некрупного «хостера» — это уже небольшая, но все-таки проблема. Соответственно, все основные ЖЖшные «услуги» в том или ином объеме сохранятся. К тому же, обычно используемые в таких случаях WordPress или WordPress MU допускают расширение при помощи плагинов. Думаю, вполне ожидаемо появление возможности экспорта комментариев от записей в ЖЖ с сохранением их «древовидной» структуры, появление «псевдофрендленты» — то есть некоего RSS-аггрегатора, использующего движок WordPress и прочих замечательных нововведений.

Нельзя ни в коем случае забывать, что ЖЖ — это не столько сервис, сколько люди. Самое главное — создать возможность расселившимся по «независимым блогохостингам» пользователям сохранить свои контакты. Именно сложившаяся «тусовка», комментирующая и читающая друг друга, удерживает даже самых склонных к «миграции» пользователей на привычных им «класических» крупных блогохостингах. Здесь же потребуется возможность авторизации пользователей на «чужих» для них хостингах. Де-факто стандартом авторизации «внешних» пользователей в блогах стал протокол OpenID. К сожалению, здесь не обошлось без недостатков. Если верить русскоязычной Википедии, то недостатки у протокола следующие:

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

На мой взгляд, эти недостатки надуманные. В самом деле, «недобросовестность провайдера» — штука слишком редкая, чтобы волноваться за сохранность своей уютной днявки. Никто же не взволнован тем, что админы mail.ru могут читать почту пользователей и точно так же использовать их логины, пароли, в какой-то мере — вести учет посещаемых пользователем сайтов? Защита от фишинга — дело не протокола, а пользователя.

Проблемы при использовании OpenID — совершенно другие. Начну с очевидного. OpenID переводится, как «открытое удостоверение личности» — то есть своего рода «виртуальный документ». Как говорил почтальон Печкин, «на докУментах всегда печать и фотография бывает». Если «печать» в виде подтверждения от предоставляющего регистрацию сервера есть, то «фотографии» и прочих атрибутов разнообразных документов у OpenID обычно нет.

Проблематична на данный момент и реализация привычного для многих режима friends-only. Решение всех этих проблем можно получить, добавив к «обычному» OpenID некоторые расширения. Например, согласиться, что по адресу http://<OpenID URL>/feed всегда будет находиться RSS-лента, по адресу http://<OpenID URL>/about — некое подобие «профиля» — страничка «О сайте», а на http://<OpenID URL>/avatar можно «положить» юзерпик. Авторизацию по OpenID на «сторонних» сайтах надо производить так, как это сделано в ЖЖ — то есть с созданием «псевдоаккаунта», авторизующегося уже через cookie — то есть не требовать ввода Identity URL «на каждый чих». Для того, чтобы «подзамочные» записи для таких аккаунтов были видны во «френдленте», можно предложить следующее решение — передавать параметры логина через строку запроса, или, говоря на языке HTTP-протокола — методом GET. URL RSS-ленты для «авторизованного» запроса будет выглядеть так: http://<OpenID URL>/feed?id=<много букв и цифр>. Подобным методом авторизации при отсутствии cookie пользуются довольно часто, и в принципе он достаточно надежен. От себя же лично сообщу, что попробую доработать OpenID-плагин в соответствии с этими своими мыслями.

Еще одна недоработка в OpenID, на этот раз «организационного» характера, это то, что слова «поддержка OpenID» ничего не значат. Они могут означать функционирование сайта, как провайдера идентификации, или возможность оставить комментарий, «подписавшись» своим OpenID — но не определяют никаких конкретных возможностей для владельцев OpenID-аккаунтов. На месте разработчиков стандарта я бы действовал так: слово OpenID и соответствующий логотип регистрируются, как торговая марка, а в соглашении об использовании прописывается некий минимальный набор требований, которым должен удовлетворять сайт, заявляющий о своей поддержке этой технологии. Кстати, подобная схема придумана не мной, а известной фирмой Philips, производящей, помимо всего прочего, микросхемы. Разработанный этой фирмой двухпроводной интерфейс I2C могут использовать в своей продукции и другие фирмы, при условии соблюдения определенных технических требований. В противном же случае Philips угрожает судебным преследованием за использование слова I2C, зарегистрированного как торговая марка.

Еще один вопрос, связанный с внезапно исчезнувшим ЖЖ — это судьба сообществ. Здесь все совсем просто — тот же WordPress с минимальными доработками, OpenID-акаунты, наделяемые правами писать записи — и все опять в шоколаде.

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

Кстати, о рекламе и рентабельности. Смело заявлю, что мелкий блогохостинг может существовать даже на голом энтузиазме трех-четырех человек. Подсчитаем: 20 пользователей по 50 МБ на брата (или сестру), с собственным доменным именем для каждого, обойдутся примерно в 350 рублей в месяц. При этом, кстати, можно писать о «100 Мб на пользователя» — в расчете на то, что далеко не каждый будет способен «съесть» свою квоту. При наличии у тех же деятелей ненужного сервера — достаточно добавить небольшую сумму за Colocation и уже не волноваться за недостаток дискового места — но этот вариант потребует некоторого умения администрирования web-серверов. Подобные затраты можно окупить размещением рекламы на своих страницах, а пользователей привлечь «партнерской программой», отстегивая им небольшой процент от рекламной прибыли. При этом, в отличие от крупного хостинга, энтузиасты могут не тратиться на техподдержку, аренду офиса и прочие затраты, не относящиеся собственно к блогохостингу. Могу предположить, что при такой модели достигатся минимальная стоимость в расчете на одного пользователя. Например, в вышеприведенном примере новый пользователь — то есть 50 Мб места и 1 виртуальный сервер — обойдется примерно в 8 рублей в месяц. Это уже очень и очень недорого. В варианте с Colocation при достаточном количестве пользователей можно снизить эту величину еще на порядок.

В общем, привет из светлого будущего без ЖЖ!

Миграция из ЖЖ, финальное

В общем, докладываю о результатах эксперимента по миграции из ЖЖ в собственный стендалончик. Результаты в целом положительные.

Про стоимость. Как я уже писал, самый дешевый хостинг и доменное имя второго уровня в зоне ru обойдутся примерно в 1000 рублей в год. Если обойтись доменом третьего уровня — например, в зоне msk.ru или spb.ru — то оплата будет разовой, примерно 60 рублей за регистрацию, дальше доменное имя продлевается бесплатно. В общем, если в общую стоимость не включать доменное имя, то все удовольствие обойдется примерно в 20$/год — столько же, сколько стоит платный аккаунт в ЖЖ.

Кстати, про доменное имя. Этим редко пользуются, но можно сделать так, чтобы доменное имя было привязано к аккаунту ЖЖ: http://www.livejournal.com/support/faqbrowse.bml?faqid=129. Именно поэтому я и не включаю его в общую стоимость — не понравилось на стендалончике, перенаправил на ЖЖ и ниипет. Такая же возможность есть и на лирушечке, да и вообще много где.

Про сложность в установке. К сожалению, это пока больное место WordPress. Конечно, создание блога на этом движке — дело двух кликов, но вот установка — к сожалению, весьма нетривиальное занятие. Дело не в невероятной сложности, а в огромном количестве новых терминов, валящихся на пользователя: хостинг, биллинг, FTP-клиент, MySQL база данных, доменное имя, «сборка» WordPress, плагины, темы, … . Инструкций по запуску «голого» WordPress — море, но когда дело доходит до конкретных плагинов и их комбинаций — интернет молчит.

Впрочем, внимательный читатель моего руководства вполне сможет разобраться со всеми премудростями этого этапа. Главное — не запутаться в огромном количестве логинов и паролей — к биллингу, к контрольной панели, к FTP, к базе данных, к WordPress. С этим справится и «блондинка», и «продвинутый пользователь». Навыков програмирования для всего этого не надо.

Проблемы начинаются на следующем этапе — установке плагинов. Несмотря на наличие у каждого плагина инструкции по установке, они рассчитаны на работу с «голым» WordPress. Установка нескольких плагинов одновременно — иногда дело нетривиальное. Например, непростой задачей оказалось «подружить» Brian’s Threaded Comments и OpenID Comments for WordPress Александра Никулина. Думаю, что «заменить код, отвечающий за вывод формы» — это замечательное описание того, что мне пришлось сделать. Не умей я программировать на PHP (впрочем, можно обойтись и знанием синтаксиса C — они похожи), никогда бы в этом не разобрался.

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

Работа с готовым движком WordPress, на который «навешены» все необходимые плагины и темы, затруднений не вызывает. Здесь все очень просто, а главное — настройки более-менее собраны в одном месте, а не раскиданы по множеству совершенно непохожих страниц, как в ЖЖ.

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

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

«Блондинка» — базовые навыки работы с Windows, Office, Internet Explorer.
«Продвинутый пользователь» — все то же самое, но более уверенно. Не пугается установки необходимых программ, знает о существовании или пользуется Opera, Firefox или чем-то подобным.
«Продвинутый пользователь с навыками программирования» — от предыдущего отличается тем, что понимает вот такие вещи:

bool value;

if (value.ToString().Length == 4){
...
}

«Программист» — сам такое пишет.

Итак, табличка:

Покупка хостинга и установка WordPress — блондинка или продвинутый пользователь
Установка плагинов — от продвинутого пользователя (желательно — с навыками программирования) до программиста
Работа с WordPress — блондинка
Обновление WordPress — продвинутый пользователь

Прямо скажу, классификация условная, но, на мой взгляд, реалистичная. К счастью, все последующие версии WordPress становятся все проще и проще, функции популярных плагинов интегрируются в ядро системы. Например, в версии 2.7 обещают добавить встроенную поддержку древовидных комментариев. Думаю, это устранит немало глюков и непоняток, связанных с плагином Brian’s Threaded Comments.

Всегда, когда речь заходит о развитии какой-либо техники, привожу такой пример: в 1936 году над Испанией советские И-16 «на равных» сражались с первыми модификациями 109-х Мессершмитов. Уже к 1940 году «ишачки» безнадежно устарели, даже такие глубокие их модификации, как И-180, уже не удовлетворяли современным требованиям — а «мессера» избавились от «детских болезней». Впрочем, уже к 1942-1943 году новые советские Яки, МиГи и Ла не уступали «Мессершмитам», которые уже исчерпали свой предел модернизации.

LjveJournal сегодняшнего образца можно сравнить с «Мессершмитом» 1941 года — вроде бы ничего не угрожает, конкуренты прошлых лет безнадежно отстали — но никто не видит в малоудачном на первый взгляд ЛаГГ-3 будущий Ла-5 или Ла-7. «Улучшать» ЖЖ дальше уже затруднительно, а вот WordPress — еще «опытная разработка», но с большим запасом для дальнейшей модернизации. Советую обратить внимание.

Ликбез по OpenID

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

Впрочем, есть отдельные примеры со знаком «плюс». К ним можно отнести OpenID, разработанную Бредом Фицпатриком — создателем LiveJournal. Фактически, все более-менее крупные блогохостинги на сегодняшний день поддерживают ее.

OpenID позволяет оставлять комментарии в «сторонних» блогах, используя только один аккаунт на каком-либо блогохостинге. Например, пользователь ЖЖ может комментировать записи в diary.ru. При этом нет необходимости создавать аккаунт в другом месте.

Как это работает? Для пользователя ЖЖ надо ввести свой OpenID Identity URL — ссылку на сервер, на котором заведен его аккаунт и который может подтвердить, что это — действительно тот самый Вася Пупкин, который пытается оставить комментарий. На некоторых серверах (например, у меня :) ), не нужно даже знать Identity URL — достаточно лишь указать свое имя пользователя и все проверки пройдут автоматически.

Для пользователя ЖЖ с логином login его Identity URL, как написано в справке ЖЖ, будет совпадать с адресом его дневника — http://login.livejournal.com . После ввода этого и попытки отправки сообщения, он будет переадресован на страничку ЖЖ с вопросом, разрешить ли использование OpenID для запрашивающего авторизацию сайта. Вариантов ответа — три: разрешить один раз, разрешить навсегда или не разрешать.

Вторая сторона поддержки OpenID — это возможность пользователям сторонних блогов комментировать в ЖЖ. Здесь все выглядит очень похоже, при этом для OpenID создается «кастрированный» пользовательский аккаунт ЖЖ, который не может вести блог на LiveJournal, но зато может смотреть френдленту, добавлять в друзья, комментировать записи… Единственные возможности OpenID-аккаунта в ЖЖ, которых не хватает мне лично — это возможность вступать в сообщества (впрочем, ее можно обойти), возможность писать в сообщества и связывать со своим OpenID RSS-ленту, которая отображалась бы у тех, кто добавил его в «друзья».

Конечно, у OpenID есть и недостатки — но упоминать о них в заметке, призывающей этот самый OpenID использовать — как-то некошерно.

Если кто-то из ЖЖистов хочет проверить, как это работает — оставляйте комментарии к этой записи.

Миграция из ЖЖ, техническое.

Удивило, в общем-то, незнание многих о возможностях OpenID. Неужели никто ни разу не видел форму отправки комментария в ЖЖ с полями «анонимно», «OpenID» и «пользователь ЖЖ»? Неужели никто ради интереса не нажимал на значок вопроса рядом с OpenID просто из любопытства?

Я понимаю, что, например, слово Gravatar никто из пользователей ЖЖ никогда не видел, потому что для них нет небходимости использовать этот сервис. Но уж про OpenID хоть краем уха кто-то слышал?

В общем, я удивлен. Сейчас даже отредактирую сообщение «вы можете оставить комментарий там».

PS Посмотрел статью в русской Википедии про OpenID — типичнейший образец википидорства. Будет время — напишу о своих впечатлениях.

Миграция из ЖЖ, часть четвертая, ставшая по недоразумению шестой. Про DNS

Как может видеть любой мой читатель, я перебрался на собственный домен. Теперь я могу гордо называться «владельцем собственного сайта».

К сожалению, из-за происков ЦРУ моих собственных непоняток, эта запись из серии «Миграция из ЖЖ», которая должна была быть четвертой, превратилась в шестую. Сегодня речь пойдет о DNS.

Начну издалека. Когда-то, давным-давно, когда компьютеры были большими и их было мало, в протоколе IP — Internet Protocol была предусмотрена адресация в виде четырех чисел, например, 127.0.0.1. Всем «пользователям» тогдашнего интернета было известно, что 1.2.3.4 — это сервер Пентагона, 2.3.4.5 — ЦРУ и так далее. Со временем подключенных к интернету компьютеров становилось все больше, и даже пьяному ежу стало понятно, что невозможно запомнить адреса многих миллионов серверов. Выходом из положения стала система «символьных имен». Все тому же ежу понятно, что pentagon.gov — это намного лучше, чем 155.7.40.239, а shura.luberetsky.ru — лучше, чем 78.47.38.238.

«Символьные имена» различных серверов организованы в большой распределенной базе данных DNS — Domain Name System. Отмечу, что слово «домен» встречалось задолго до появления интернета и означало феодальное владение. База данных DNS устроена точно также. «Корневые DNS-сервера» хранят информацию о доменах первого уровня, например, домене luberetsky.ru, а также «знают», где искать информацию о доменах второго уровня, то есть shura.luberetsky.ru.

Такая система позволяет сравнительно удобно и быстро редактировать информацию об иерархии доменов. Например, я оплатил luberetsky.ru сегодня в 9 утра, а уже к 11 часам домен и его поддомены прекрасно функционировали.

Перейдем теперь от теории к практике. Чтобы зарегистрировать для своего сайта доменное имя второго уровня, понадобится найти регистратора. Я не стал уходить далеко от хостинга и зарегистрировал свое доменное имя у него же: http://knutov.net/domains. Для регистрации домена в зоне ru надо всего лишь зарегистрироваться в биллинговой системе регистратора, затем заполнить заявку на регистрацию домена. При заполнении заявки надо указать DNS-серверы, которые будут обслуживать домен. Если у вас уже куплен хостинг, то провайдер хостинга должен был сообщить адрес двух DNS-серверов, их и надо указать. Например, у меня это ns1.dobrohost.ru и ns2.dobrohost.ru.

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

Внимание! Как всегда, не надо торопиться. Домен обычно становится доступен через несколько часов после создания, когда информацию о нем получат «вышестоящие» DNS-сервера. Второй неприятный момент — это то, что WordPress не очень хорошо работает при переносе на другой домен. Так что не надо повторять моих ошибок и запускать WordPress до регистрации домена.

Можно управлять поддоменами и «алиасами» из контрольной панели хостинга. Например, можно создать поддомен shura.luberetsky.ru, точно также, как создавался основной домен. При этом автоматически создаются «алиасы» — указания DNS-серверам, что www.luberetsky.ru и luberetsky.ru — это одно и то же.

На этом техническая часть миграции из ЖЖ завершается, дальше будет необходимо лишь вовремя оплачивать хостинг, а в следующей части этого «романа в письмах» я расскажу, что такое OpenID и Gravatar и для чего они нужны.

Миграция из ЖЖ. Часть пятая. Перенос записей из ЖЖ в WordPress

Этот этап перехода из ЖЖ на standalone — наверное, самый короткий по описанию и самый длинный «на самом деле». Перенос записей из ЖЖ встроен в WordPress по умолчанию. Для этого надо выполнить два простых шага.

Первое. Экспортируем записи. Для этого переходим на страницу экспорта — http://www.livejournal.com/export.bml, вводим месяц и год, за которые хотим экспортировать записи. Выбираем формат XML и жмем на кнопку «Продолжить». Сохраняем получившийся файл.

Второе. Импортируем записи. Для этого в администраторской панели WordPress переходим в раздел Управление — Импорт, выбираем LiveJournal, загружаем файл и наслаждаемся результатом.

Все проходит довольно быстро, но, к сожалению, может потеряться форматирование записей, не распознаются теги, да и импорт записей «помесячно» не так быстр. Зато теперь мы свободны от любых происков СУПа :)

Да, теперь я буду писать в своем уютном бложике. Позравляйте с новосельем в комментах.

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

Миграция из ЖЖ, часть третья. Настраиваем WordPress.

Сегодня речь пойдет о том, как сделать собственный уютный бложик по-настоящему уютным. Запись с просьбой написать нужные фичи все дружно проигнорировали, поэтому буду делать все сам.

Итак, начнем с дизайна. У WordPress нет «систем стилей» S1 и S2 — и это правильно, учитывая их глючность. Оформление для блогов на WordPress — это так называемые «темы». В комплекте идет две темы, которые лично мне не очень понравились. В Интернете есть много сайтов, предлагающих скачать темы для WordPress. Естественно, искать надо русифицированные темы. Сделать это очень просто — достаточно набрать в любом поисковике «русские темы для WordPress».

Мне лично понравилась Stylized c http://wpthemes.ru/ . Установка тем для WordPress достаточна проста. Распаковываем архив с темой, и загружаем папку simpla в каталог wp-content/themes там, где у нас установлен WordPress. Дальше заходим в администраторскую панель WordPress, и ныряем в раздел «Дизайн». Выбираем понравившуюся тему из доступных.

Дальше речь пойдет о плагинах — дополнениях для WordPress, добавляющих новые функции. Буду описывать их в том порядке, в каком устанавливал сам.

Всем пользователям ЖЖ привычен вид комметариев, организованных «лесенкой». WordPress по умолчанию этого не поддерживает, но эту функциональность добавляет известный плагин Brian's Threaded Comments, который можно скачать либо на официальном сайте: http://code.google.com/p/briansthreadedcomments/ , либо у меня:

http://shura.luberetsky.ru/tools/briansthreadedcomments-1.5.20.zip

Установка плагина описана в его файле readme. Для, тех кто не умеет читать:

— распаковываем архив
— файл briansthreadedcomments.php копируем в wp-content/plugins
— файл comments.php копируем в каталог используемой темы, у меня это будет wp-content/themes/simpla (обязательно сохраните исходный файл, если что-то пойдет не так!)
— дальше в администраторской панели, в разделе «Плагины» активируем свежеустановленный плагин
— установка завершена!

К сожалению, русифицированной версии плагина я не нашел.

Вторым полезным плагином в списке будет OpenID Comments for WordPress. К сожалению, подружить его с Brian's Threaded Comments оказалось непросто. Предлагаю вниманию публики «гибрид» этих двух плагинов:

http://shura.luberetsky.ru/tools/openid-threaded-comments-0.9.1&1.5.20.zip

Немного о функциональности плагина. Он позволяет пользователям ЖЖ и других сервисов с OpenID комментировать в вашем блоге, не регистрируясь, а также реализует OpenID-сервер, позволяющий уже вам комментировать в ЖЖ, не создавая ЖЖ-аккаунт, примерно так: http://brat-luber.livejournal.com/71807.html?thread=88191 . Подробнее об использовании в ЖЖ OpenID написано в справке ЖЖ:

http://www.livejournal.com/support/faqbrowse.bml?faqid=283

Третий необходимый для бывшего пользователя ЖЖ плагин — LiveJournal Crossposter, http://mywordpress.ru/plugins/ljxp/ . Установка плагина совершенно проста, по сравнению с многими другими — достаточно всего лишь скопировать папку плагина в wp-content/plugins и активировать его. Затем плагин надо настроить — в разделе «настройки» для него появляется отдельная ссылка. Впрочем, там все написано по-русски и очень понятно. Кстати, там же настраваются и все остальные плагины, для которых это необходимо. Например, я увеличил уровень вложености комментариев в Brian's Threaded Comments с трех до семи.

На этом настройку привычного для бывшего ЖЖиста внешнего вида блога с WordPress можно считать законченной. Расскажу еще о нескольких нужных плагинах и побегу покупать карточку Webmoney — надо же зарегистрировать красивое доменное имя!

Не буду подробно описывать установку каждого из плагинов, она достаточно проста.

WP-Polls — http://mywordpress.ru/plugins/wp-polls/ Позволяет создавать опросы. Поставил версию 2.31, полет нормальный.

WordPress Database Backup — http://lecactus.ru/2007/09/09/658/ Создает резервную копию базы данных, на случай глобальных котоклизьмов.

Russify Comments Number — http://mywordpress.ru/plugins/russify-comments-number/ Показывает количество комментариев в соответствии с правилами русской грамматики.

На этом я, наверное, закончу пост, а затем расскажу об импорте записей из ЖЖ в WordPress.

Про OpenID

А вот кто мне объяснит, как это OpenID-аккаунт смог вступить в 47 сообществ?

http://www.livejournal.com/userinfo.bml?userid=9991135&t=I&mode=full

Я так подозреваю, что OpenID стал гораздо лучше, чем описано в справке ЖЖ.

А вот очередной тупой флешмоб

Мой результат: 29 из 30!
[info]koneko_k — я вас не знаю, извините.

Проверь, насколько хорошо ты знаешь своих френдов! ©[info]chalif

Через пару дней даже при большом желании я не смогу участвовать в подобной фигне — потому что покидаю ЖЖ окончательно и бесповоротно. Этот акаунт оставлю исключительно для трансляций из автономного блога. Такой вот прощальный ЖЖ-тупнячок.