MediaWiki: решение проблем с производительностью

Каждый, кто устанавливал MediaWiki, замечал, как медленно она работает. Буквально при любом действии вы сталкиваетесь с невыносимыми тормозами (конечно, если сервер не космически быстрый).

В поисках решения этой проблемы вы придете, например, сюда - How to make MediaWiki fast. Ну, или вот общая категория: Performance tuning. Там собраны вполне разумные советы. Однако важно понять вот что: большинство из них дает лишь микроскопический прирост скорости и не решает проблему тормозов кардинально.

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

Mediawiki.org предлагает использовать Squid, но мне с ним никак не хотелось связываться — во-первых, опыт эксплуатации оставил не очень приятные воспоминания, а во-вторых, на промышленном сервере уже стоял Nginx, который отдавал статику по классической схеме в связке с httpd.

Скажем так: здесь могут быть трудности, но настроить можно. Мне это удалось (не исключаю, правда, что придется еще понаблюдать и что-то допилить). Nginx — очень мощный прокси, и когда вы видите, насколько мгновенно он отдает контент, это, конечно, производит впечатление. Главное — подумать, как различать залогиненных и незалогиненных пользователей. Можно найти пример конфига, где проверяется, содержится ли в куке «UserID» — для этого задействуется модуль ngx_lua, я же решил обойтись без него.

Основы: NGINX Content Caching.

When Anna Met Jony

На TechCrunch появляется много проходных материалов, заметок в стиле «Произошло событие X. Что будет дальше? Мы не знаем». Поэтому я не очень-то слежу за этим потоком, но вот эта статья — When Anna Met Jony — достаточно важная, чтобы ее упомянуть. По крайней мере, важная для моих размышлений.

Да, все — мода. И не только о часах, не только об Эппл речь, ведь и студенты, похваляющиеся друг перед другом своими четырехъядрёными телефонами (или восьми-?) — это тоже явление моды. У них тоже есть соответствующие соображения — носят сейчас такое или не носят, есть ли у меня такое же, как у него, и т.п. 

Кстати, статья напоминает о хорошем фильме, захотелось его пересмотреть:)

Падает memcached?

Обновляйте. Похоже, другого рецепта нет.

У меня были проблемы с 1.4.15 на CentOS 5, с которыми пытался разобраться — бессмысленно. В логи ничего не попадало ни при какой степени детализации, memcached держался несколько часов и вырубался.

Однако вот у 1.4.20 аптайм уже почти две недели.

Ну, расскажи мне, какой ты крутой CEO

Иногда просматриваю проекты (в основном, точнее, зачатки проектов), работающие в касающихся меня нишах. И вот что замечаю: ребята очень любят рассказывать: а) для потенциальных инвесторов — какие они крутые; б) для пользователей — как много возможностей у их проекта.

И то, и другое мне видится бессмысленным.

Если они когда-либо найдут инвестора, это произойдет не потому, что инвестор прочитал на сайте, какие они крутые. Между тем самолюбование так и прет: на сайт выкладываются фотки, краткие биографии «визионеров», люди радостно назначают друг друга CEO, CTO, COO и так далее (прямо сидя в кофейне, я так думаю).

Про сам продукт — у меня нет цели объяснить, как делать правильно и как — неправильно. Все-таки какое-то саморегулирование экосистемы должно быть и кто-то должен уходить работать на обычную работу менеджера по продажам или программиста на предприятии.

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

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

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

Блокировка сайтов: что произошло и как быть?

Вчера, кроме сайтов Грани.ру, Каспаров.ру и ЕЖ.ру, которые недоступны и сейчас, были временно заблокированы LiveJournal и сайт «Эха Москвы». Это было связано с требованием Генпрокуратуры закрыть блог Навального (оригинал — в ЖЖ, копия — на «Эхе Москвы»).

Важно понимать роль Ростелекома. Возможно, это ваш провайдер:

rostelekom-vologda

Ростелеком, крупнейший акционер которого — Российская Федерация, не умеет ограничивать доступ к сайту по его адресу (или доступ к конкретной странице сайта). Точнее, он собирался научиться, но пока не получилось. Возможно, помешали различные расходы: например, прежнему руководителю Провоторову при увольнении выплатили 280 млн р. Поэтому блокировка происходит по IP-адресу — думаю, не нужно объяснять, что на одном IP могут находиться тысячи сайтов, и блокировка одного из них закроет сразу все оптом.

Поэтому, пока в стране не запрещено шифрование информации, а интернет еще не переведен на китайскую модель или вовсе не запрещен, полезно узнать, какие у вас есть варианты доступа к информации (а заодно вспомнить свои конституционные права). Варианты есть разные, оперативная информация о том, как обходить блокировки, публикуется на Рулусе: Как зайти на заблокированный сайт.

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

Секрет успеха Wildberries

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

А секрет прост, его можно показать на одном простом примере. В подкасте BBC Click (это вроде бы про интернет, гаджеты и технологии, но все время где-то на грани фантастики) недавно обсуждали очередную идею примерки одежды по интернету — там вы будто бы указываете свои метрики, а система строит вашу 3D-модель, примеряет на нее конкретный предмет одежды и показывает вам.

Это вот как раз такая штука, о которой приятно поговорить, но которая жить все равно не будет. Кто станет загонять туда параметры остромодной дешевой курточки, которая завтра уже будет продаваться с дисконтом, а послезавтра ее вообще не будет?

Другими словами, если когда-то что-то подобное будет применимо в бизнесе, то это будет происходить совсем на другом уровне, более бесшовно — как именно, сейчас трудно представить.

А что сделали Wildberries? Они построили очень хорошую и реально работающую систему без всей этой 3D-мути. Вы заказываете одежду, обувь и ничего не платите. Вы им ничем не обязаны, и у вас нет страхов типа «А что, если не подойдет?» или «А как потом отправлять обратно, если что?». Вот когда заказ приедет в пункт выдачи в вашем городе, тогда вы туда идете все это примерять на свое 3D-тело. И только если понравилось и подошло, вы расплачиваетесь. Конечно, у них есть свои фишечки, помогающие мотивировать покупателя — если вы от чего-то отказались, то в следующий раз скидка будет меньше. Но главное — страх массового покупателя перед онлайн-шопингом — они победили.

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

Бонус

«Хей! — воскликнет юный гений и почти стартапер. — Сделать такой огромный проект я, конечно, не могу, но вот идея у меня есть просто зашибенная. Может, ее кому-нибудь продать?»

Насчет продажи идей на Рулусе появилась замечательная статья. Причем я даже не пойму, то ли это статья. то ли алтимейт мануал на тему «Что делать со своей жизнью».

Почему он перешел на МакБук

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

Чтобы понять, как так получилось, надо быть в курсе предыстории: откуда взялась Microsoft, как развивалась и на чем зарабатывала. Часто забывают, что она — из мира энтерпрайза, а большинство рассуждений о винде исходят от людей, которые вообще про энтерпрайз ничего не знают и думают, что Mac OS и Windows — прямо конкуренты-конкуренты. Раньше сюда еще часто подмешивали Linux, но сейчас то поколение подросло и успокоилось.

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

К статье прилагаются еще такие интересные комментарии типа «...с восхитительной операционной системой Windows 8...», но они, похоже, сами себя дискредитируют. И, конечно, в таких случаях всегда видно стремление людей выбрать тот или иной лагерь и примкнуть к нему — тоже способ получения ощущения чего-то большего.

Рулус и Вики

Когда мне нужно было выбрать вики-движок для Рулуса, MediaWiki была исключена из возможных вариантов за избыточный функционал (и, возможно, за свою внешность).

Тогда я остановился на WikkaWiki. Это довольно неплохой легкий движок, но по ходу дела я с ним намучился. В основном это было связано либо с локализацией, либо с тем, как она обращается с UTF-8.

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

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

Вот так и получается, что эти вики-движки, однажды буйно разросшиеся, постепенно забываются и пылятся на своих сайтах.

Рулус был перенесен на MediaWiki (последняя стабильная версия на этот момент — 1.22) и вчера выпущен на промысел. Конечно, там все более четко. Благодаря тому, что от движка зависит Википедия, они не могут позволить себе явных косяков. Но в целом, как мне показалось, дела в сообществе скорее грустные. Например, на Stack Overflow человек что-то спрашивает, и ему говорят: «А почему вы не спросите на странице обсуждения где-то на mediawiki.org?» Он отвечает: «Да я спросил, но там уже несколько месяцев никто не отвечает, поэтому я сюда пришел».

Скажем, к MediaWiki нельзя просто взять и прикрутить вход через OAuth. Есть расширение для Facebook, я взялся за него, но не так-то просто. Последняя версия использует что-то из MediaWiki 1.23, которая сейчас пока в альфе — соответственно, пришлось взять предыдущую. Далее, она использует класс из 1.21, которого уже нет в 1.22 — почему это сохраняется в расширении вплоть до последней версии, я так и не понял. К счастью, реально этот класс не очень-то нужен, так что просто берем его из 1.21 и подсовываем. Была еще проблема с сертификатом, но это уже знакомо и решение есть. В итоге вход через Facebook заработал.

Что касается стилей, выбор небольшой, в основном все очень старое и уродливое. То, что сейчас на Рулусе, было получено допиливанием стиля Vector. Не все гладко с мобильным фронтендом, он почему-то не подгружает дополнительные стили, которые должен подгружать. Вот просто так пишут — в предыдущей версии была ошибка, они не грузились, а в этой должны. Пришлось вшивать это туда довольно грубым способом.

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

Hooked

Сделайте себе подарок на Новый год, тем более что до 31-го он бесплатен. Вышла давно ожидаемая книга Hooked: How to Build Habit-Forming Products (автор — Nir Eyal, редакция — Ryan Hoover). На блоги обоих товарищей я подписан, так что могу уверенно рекомендовать. Сам уже скачал и начал читать (заодно посмотрел, что за зверь такой — Kindle Cloud Reader). Во многом книга перекликается с «Силой привычки» Дахигга — собственно, не обошлось без ссылки на нее — но если вас интересует прикладной аспект, то Hooked будет поинтереснее. Здесь все крутится вокруг фейсбуков, смартфонов, веба и продуктов, формирующих пользовательские привычки.

Чтобы сделать мир лучше

«Есть отношение к Мейлу, как к компании, которая цинично зарабатывает деньги на пользователях, не очень заботясь о том, чтобы сделать мир прекраснее, о чем часто заявляют интернет-компании. Как ты реагируешь на такие заявления?» — спросил Максим Спиридонов у Дмитрия Гришина, генерального директора Mail.ru Group.

«Если посмотреть на последние 3 года, мы сделали многое для того чтобы сделать мир лучше. Можно посмотреть на наши продукты и то, что мы делаем» — ответил Дмитрий Гришин.

И тут один из моих технических пользователей Моего Мира, необходимых при разработке, прислал мне личное сообщение.

«Неужели вломали аккаунт?» — подумал я.

«Не расставайтесь с друзьями — общайтесь в мобильной версии Моего Мира!» — гласило сообщение.