ТЕКСТ: АЛЕКСЕЙ ОГАРКОВ. Не секрет, что площадка Livejournal является самой посещаемой блог-платформой Рунета. Большинство самых известных, интересных и читаемых дневников расположены там. Идеей создать топ записей блогов Живого Журнала я загорелся года 2 назад, когда после серии скандалов, связанных с накруткой рейтинга, Яндекс заявил, что вообще прекращает составление топа, но оставляет API, благодаря которому каждый желающий может создать свой рейтинг. Естественно, мой рейтинг должен был быть самым объективным и самым лучшим, и, разумеется, жизнь внесла свои коррективы: быстро набросав алгоритм составления рейтинга, я принялся долго и нудно «вылизывать» код, пытаться прикрутить различные фичи, даже создать разные рейтинги под разные интересы пользователей – всё это затянулось на полтора месяца, а когда я был готов выложить продукт в сеть, обнаружил (сюрприиииз!), что таких рейтингов блогов уже примерно 100500, причём появились они буквально несколько дней спустя после закрытия топа Яндекса.
Видимо, не я один такой умный оказался. Большинство этих топов канули в Лету буквально в течение нескольких месяцев, но я уже потерял интерес к этой теме и задвинул её в самый дальний ящик.
Второй раз я открыл его в октябре 2011. Связано это было, как можно догадаться, с приближающимися выборами в Думу, когда атмосфера в обществе накалилась до предела. Ежедневно в блогосфере появлялись десятки резонансных постов и мнений, но вот читать их было некогда: домой я возвращаюсь поздно и уставшим, а на работе начальство почему-то возмущается, когда я всего-то на часик решаю посидеть в жежешечке. Оставалось время в дороге, и вот тут я столкнулся с неожиданной проблемой – отсутствием приложения для чтения ЖЖ и рейтингом популярных записей.
Я облазал весь Appstore – есть только родное приложение LJ для авторов, а для читателей ничего. Для меня это было необъяснимо. Надо сказать, к тому моменту я уже купил себе долгожданный мак, и пробовал всякие простенькие программки писать, плюс подвернулось объявление на хабре о наборе в школу iOS программистов от фирмы e-Legion. Преподаватель у нас был очень крутой, но ученики разной силы, так что я старался работать по своему плану и спрашивать все, что возможно, у преподавателя. В айфон-программировании, конечно, самое полезное – это гугл, плюс мне попалась очень крутая книжка от Head First – IPhone and IPad development 2nd edition. Всем советую. В общем, я решил, что моим первым приложением будет именно топ ЖЖ – в конце концов, мне это просто самому интересно (я и вправду теперь пользуюсь приложением ежедневно).
Придумать название, как понимаете, было несложно: почему имя «АйБлоги» до сих пор оказалось никем не занято – для меня очередная загадка. Сущность приложения была понятна с самого начала – топ записей ЖЖ с сортировкой по методу составления: по комментариям, по количеству ссылок и т. д. Но этого мало. Глупо делать приложение из одной странички – хотелось сделать его сразу максимально удобным и функциональным. Из этого посыла сразу выросли три фичи: удобный просмотрщик записи, возможность быстро кинуть ссылку в твиттер или фейсбук и возможность забанить автора.
Со ссылками всё понятно: социальные сети без возможности шаринга – это нелепо. С экраном просмотра тоже ясно – у разных людей в ЖЖ применены разные стили оформления, не всегда они удачны, да и пестрящее разнообразие утомляет, поэтому нужно взять текст и картинки и показывать их просто, без авторских изысков, оставив пользователю выбор размера и начертания шрифта.
А вот на возможности бана хотелось бы остановиться поподробнее – он моя гордость, крайне удачный инструмент, приведший к тому, что мой топ записей теперь наполнен действительно гораздо более качественно, чем веб-рейтинги. Кто читает ЖЖ, тот знает, что там можно вывести в топ запись почти любого уровня: например, представители т. н. кремлёвских молодёжных организаций создали настоящий ботнет из своих журналов и выводят нужные записи в топ путём перекрёстных ссылок. Ну а лично меня всегда утомляло наличие в топах людей, являющихся, по сути, копипастерами – бесконечные перепечатывания материалов из сети господами ibigdan, teh-nomad и т. п. превращают блогосферу в филиал fishki.net, что, ИМХО, довольно уныло. Проблема в том, что в веб-рейтингах никуда от них не деться, половина рейтинга будет всё равно принадлежать не очень приятным для вас (или просто скучным) людям. Ну а в приложении избавиться от надоевшего автора проще простого – одно нажатие клавиши и его посты не будут показаны в рейтинге, их место займут следующие – очень удобно. Сейчас думаю над возможностью делать топ с учётом предпочтений пользователя по авторам.
За радостями кастомизации рейтингов я вдруг понял, что приложение не решало моей главной проблемы – чтения в дороге, т. к. моя дорога проходит в основном под землёй, в метро, где нет связи. Пришлось придумать новую фичу – избранные записи (впоследствии к ним присоединились избранные авторы). Запись, помеченная как избранная, переносилась в отдельный таб и сохранялась на телефоне. По пути к метро я просматривал топы и отмечал потенциально интересные посты (для этого метку-звёздочку вынес прямо в список), а уже под землёй открывал записи и читал.
Логичным продолжением стали избранные авторы, причём ориентированы они не на топ-блоггеров (этот список почти не изменяется со временем), а на те случаи, когда в топ вышла запись неизвестного автора (вам нравится его стиль, но есть подозрения, что вы его больше в топе не увидите) – я так набил списочек из десятка авторов на свой вкус, не очень известных, в топах они не появляются. Вот думаю над новой фичей – показывать, сколько постов появилось у избранных авторов с момента последнего к ним захода, правда, пока не очень понимаю, как это сделать.
Одно тянуло другое, все новогодние праздники, позабыв про оливье, сидел над приложением – прикрутил поиск по блогам (сам почти не пользуюсь, но это же вроде как часть обязательной программы) и рейтинг любимых записей пользователей: подумал, может, это будет интересно – знать, какие посты отметили избранными наибольшее количество пользователей, правда, спустя время думаю, что сделал огромную лишнюю работу – наверняка избранные записи будут во многом совпадать с самими топами. Ну, по крайней мере, подтянул знания по работе с no-sql базами. Кстати, о «птичках». Все самые серьёзные сложности в разработке я испытал в работе с API Яндекса: оно не позволяло тянуть данные прямо с айфона, потому что в нем отсутствуют возможности сортировки и выборки определенного количества и т. п. Поэтому я написал маленького бота, который собирает все, что есть в API, и кладет в облачную базу на Амазоне, откуда и тянет данные айфон, плюс пришлось написать парсилку постов LJ, так как в API отсутствовало описание поста, и, например, аватар. Парсилка понадобилась как раз, чтобы доставать эти данные. Амазонской базой Simple DB я очень доволен – все очень просто и удобно. К моменту завершения проги я переписал ее три раза, так как недоученность каждый раз давала себя знать в грязном и неудобном архитектурном дизайне. Но, набив шишек, я все расставил на свои места; придется, правда, еще раз все переделать под новый компилятор и для айпада, но это будет уже совсем другая история.
Вообще проблемы в ходе разработки были самыми разными – я не смог придумать, как засунуть в приложение комментарии. Их древовидная структура совершенно не подходит к экрану смартфона, да и выкачивать их пришлось бы вечность. В итоге принял решение показывать их количество и переходить к браузерному просмотру по запросу. Или внешний вид – вместе со знакомым дизайнером решили, что все управляющие элементы будут в очень тёмно-серых тонах: являясь как бы продолжением и сливаясь с чёрной поверхностью айфона, они всё внимание переносят на белое тело записи. Мысль о наличии белых айфонов не пришла в голову никому из нас до самого последнего дня.
В общем, несмотря ни на что, это было интересно и познавательно, а, кроме того, на выходе я получил приложение, которым сам пользуюсь постоянно – не частая удача в жизни программиста. Сейчас меня ждут исправления и улучшения, а летом думаю начать делать ещё одно приложение, о котором обязательно расскажу. Спасибо за внимание.
Сайт: iblogsapp.ru
Цена: $1.99 [iTunes link]
Данная история опубликована в рамках рубрики Developer Story, где разработчики делятся секретами своей внутренней кухни.
Источник: