Давненько у нас не было новостей про MyTetra. Поэтому вдвойне ценнее сегодняшняя новость. Что произошло? На этом сайте (Webhamster.Ru) появился блок, в котором отображается некоторое количество самых свежих записей, сделанных пользователями MyTetra.
Этот блок должен был быть разработан лет 10 назад, когда MyTetra бодро развивалась. Это могло бы привлечь больше пользователей - люди бы видели, что их открытые записи появляются на главной странице. Это могло бы мотивировать постоянно работать с собственной базой знаний. В конце концов, мог бы включиться механизм соревнования. Но у меня тогда небыло времени сделать еще один сложный блок на сайте. И вот теперь за несколько вечеров я все-таки его сделал. Лучше поздно, чем никогда!
В чем была проблема? Дело в том, что количество баз MyTetra в интернете около 400 (среди них 9/10 уже закрытых и удаленных репозитариев). Чтобы найти самые свежие записи, надо сделать какой-то краулер, который по протоколу HTTP/HTTPS обойдет все известные базы MyTetra, найдет в них самые свежие публичные записи (а каждая база может содержать их тысячи), сложит в один массив, отсортирует по времени, и покажет самую верхушку этого массива. Этот краулер должен работать асинхронно, и каким-то образом должен быть привязан к древнему PHP-фреймверку, в котором никаких заданий, очередей, и тому подобного просто нет.
Вместо этого был придуман другой механизм, который работает через кеш проекта MyTetra Share. В этом кеше скапливаются индексные XML-страницы тех баз, которые отображаются на страницах данного проекта. Таким образом, информация о всех записях во всех отображаемых базах содержится в одном месте (по сути, в одном каталоге кеша). И анализируя эти данные можно достаточно быстро вытащить самые свежие. Для вытаскивания данных были написаны уникальные XPath-запросы, произведена оптимизация, и даже не потребовалось кешировать результат работы самого отслеживателя новых записей.
* * *
В общем, теперь на главной странице этого сайта, на месте второй новости, размещен блок со ссылками на самую актуальную информацию, которая добавляется пользователями MyTetra. Это должно улучшить и индексирование сайта со стороны поисковиков, и, я надеюсь, немного поднимет поведенческие факторы.
Всем пользователям MyTetra, которые когда-либо настраивали синхронизацию через Интернет и делились знаниями в MyTetra Share, я в который раз говорю огромное спасибо. Вы именно те люди, которым хватило разума накапливать собственные знания, и делиться ими с окружающими.
UPD: Так же появилась страница, которую я называю Пульс проекта MyTetra Share. На ней собирается более подробная статистика о работе пользователей со своими открытыми записями.