Как стать автором
Обновить

Комментарии 98

Огромное спасибо! Я многое познал для себя, осталось начать использовать.
Сергей, просто отличная статья. Очень хорошо поможет тем, что будет создавать что-то подобное.
Надо же, корпоративный блог и по делу (:
Читалка забавная, на днях попользовался даже немного
жесть, дорогой проект вышел
Ту часть где вы кинул Тему вы забыли? :D
А почему вы решили, что мы его кинули? Потому что он об этом в блоге у себя написал?
Как оперативно :D Ну начнем с того, что весь дизаин так и кричит, что это его работа. И надо же — в его блоге это написано. И вообще вы мне ребята не нравитесь и айфонсру тоже. И смысл ему обманывать? Если выбирать кому верить я выберу его, хотя далеко не его фанат.
Чет я найти ничего такого у него не могу. Конечно, дело в руках скорее всего, но от ссылки не откажусь.
НЛО прилетело и опубликовало эту надпись здесь
давайте-ка без вот этих глупостей! тут офигенная статья про оптимизацию в неочевидных вещах, а вы с Темой
привет, «–271,0»! как дела, как семья?
уже холоднее чем в космосе…
даёшь исходники! :)
исходники вроде итак можно подсмотреть, это же обычный javascript
ты думаешь, они не пожаты? о_О
jsbeautifier.org и подобные думаю с этм справятся.
код вполне читабельный
В Хроме 5 с фоном не лады. Серое вместо белого.
Да, некоторые ребята жаловались на это, но я не могу поймать баг. Какая у вас ОС?
да и не только там, она по сути тока под мобильный сафари работает нормально
конкретнее, у меня не работает в хроме, опере мобайл 9 и 10
Мобильная версия онлайн-читалки пока не делалась, так как требуется совершенно другой интерфейс и подход к разбору данных. Но она обязательно появится.
зачем другой интерфейс если есть большой тач скрин?
Вы про айпад? Там тоже нужно дорабатывать, чтобы быстрее всё работало.
я про винмобайлы с тачскрином, где собственно опера мобайл 9 и 10
А, ну там тем более нужно оптимизировать. Как минимум, нужно одну страницу вместо двух выводить, оптимизировать по производительности и как-то иначе показывать настройки.
угу, а то такой облом вышел, думал ща книжку в самолете почитаю а тут (
Вы учитывайте, что это только первая бета-версия. В обязательных планах: cache manifest и хранение главы в local storage, чтобы мобильные пользователи могли при отключённом интернете продолжать читать
Хорошо, аккуратно. Номеров страниц не хватает.
Страницы без проблем можно пронумеровать в пределах одной главы, но если делать сквозную нумерацию всей книги, то возникает ряд проблем: нужно сначала загрузить всю книгу и просчитать все страницы + делать это каждый раз, когда пользователь меняет размер окна или настройки. А это довольно сильный провал в производительности. У меня в TODO стоит этот пункт, попробую что-нибудь придумать.
Не нужно пересчитывать. Экран должен быть фиксированного размера, особенно если речь про мобильные устройства.

На первой странице достаточно написать 1 и 2, при желании можно в фоне досчитать до конца, пока я читаю первые две, а без желания оставить так как есть, и просто менять при листании. Это точно производительность не затронет.
Всё не так просто. На мобильных устройствах вроде айфона действительно экран фиксированного размера, но расчёт всей книги может занять несколько минут. Тем более, пользователь в любой момент может поменять настройки чтения (например, находясь где-нибудь ближе к концу книги), а это означает новый пересчёт всей книги + сброс кэша расчётов остальных книг пользователя.
Пусть даже несколько минут. Мы ведь никуда не торопимся. Несколько минут я буду читать несколько страниц, и пусть оно пока асинхронно считается, вы же на яваскрипте пишете. Во всяком случае, так поступает хардварная читалка PocketBook, которая также вынуждена обходиться весьма скромным ЦПУ. А если пользователь ближе к концу что-то такое решит — значит сам виноват, останется без пажинации. Насколько част такой сценарий? ИМО, важнее создать позитивное впечатление у 98,571% пользователей, которые ведут себя предсказуемо, а не предусмотреть перфектность для всех случаев вообще, за счёт ущемления большинства.
Пусть даже несколько минут. Мы ведь никуда не торопимся.

Ну вы почитайте отзывы к предыдущим версиям приложения booq :)

Тем более, на айфоне есть другие (и бесплатные) читалки, на фоне которых наша смотрелась бы очень блекло. Нумерация страниц не может быть конкурентным преимуществом, если из-за этого читалка работает в несколько раз медленнее остальных.
а почему бы не отдать расчеты серверу?
и вообще, почему бы не отдавать на клиент небольшой кусок текста, где с ним шустренько и работать?
Как вы себе это представляете?

Подсказка: размер страницы зависит от гарнитуры и размера шрифта (в том числе системного, установленного в браузере пользователя), интерлиньяжа и размера окна браузера. И всё это пользователь может поменять в любую секунду.
а скрипт может в любую секунду передать на сервер все эти метрики, разве нет?
Может. Получается, что на сервере должны быть запущены тысячи экземпляров разных браузеров с разных платформ (на разных платформах по-разному текст отрисовывается)?

Какая тогда будет выгода пользователю, если на клиенте это всё будет выполняться в несколько раз быстрее? Сейчас расчёт главы среднего размера на не самом быстром клиенте делается не более чем за 100 мс
Не знаю, насколько ресурсоемко для сервера будет все обсчитывать (тут надо эксперементировать). Подозреваю, что при должном кешировании, можно обеспечить быструю отдачу обсчитанного контента.
Суть в том, что 100 мс стоили 7 месяцев вашей работы. Мне интересно, насколько была бы жизнеспособной и трудоемкой конфигурация (и была бы?) с серверными расчетами.

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

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


И все увидели, что в итоге получается :)

У рендеринга на сервере есть две большие проблемы. Первая — это необходимость каждый раз загружать новую книгу, когда пользователь что-то поменял в настройках. Вторая — вы заставляете пользователя быть постоянно подключенным к интернету, даже если он решил почитать книгу в метро, в самолёте или отдыхая в другой стране.
Кстати, если не сложно, в двух словах, а что получилось? Я только их рекламный ролик видел, айФона у меня нет.
Customer Reviews радуют, случайно запостил
Внесу ясность насчёт отзывов. Если смотреть iTunes через сайт, то там показываются отзывы к версии 0.6, которая действительно была ужасна, но которую нам пришлось запостить из-за ряда проблем с предыдущей версией приложения.

Последняя версия — 0.7, в ней присутствует описанный здесь оптимизированный движок. К ней отзывы по-лучше :)
Google Chrome 6.0.408.1 dev Windows XP SP3
На остальных страницах текста нет вообще.

Под другими браузерами всё тип-топ. Сервис супер!
Так сразу становится, или после каких-то действий (вижу, что у вас шрифт другой в книге)?
Используете блокировщик рекламы?
Да, кстати, возможно мешают какие-то расширения. Можете прислать список тех расширений, которые стоят у вас в Хроме?
Точно. Отрубил AdThwart всё заработало.
Спасибо, попробую сделать так, чтобы и с ним работало
пилю один сайт, в котором контент разбивается на блоки подобным образом…
у меня оно, конечно, пока все довольно медленно, но благодаря этим статьям, возможно, оптимизирую его :)
спасибо)
текст в книжке иногда обрезается если на странице несколько заголовков, скрин
Да, это баг расчёта размера страниц на «сложных» книгах (где много вложенных элементов с разным форматированием), работаю над этим
НЛО прилетело и опубликовало эту надпись здесь
Если не ошибаюсь, то для анимации используется jTweener, для чего тогда грузить целый jQuery, если он используется только для селекторов и обертки над ajax, или он не только для этого? Вполне можно обойтись каким-нибудь YASS, а для ajax обертку написать. А вобще есть еще bookmate.ru
jQuery используется для CSS-селекторов, работы с событиями (в том числе нормальная делегация событий), аякс, некоторые простые анимации. Я решил не изобретать новый велосипед и использовать jQuery для онлайн-читалки, так как хороший и проверенный инструмент. Так как это декстоп, то описанных проблем с производительностью нет.
НЛО прилетело и опубликовало эту надпись здесь
Блин, ну почему, если написано «не влезай, убъет», так хочется проверить, а точно убъет? Намертво подвешивает, гарантирую :)
Это русская традиция =)
НЛО прилетело и опубликовало эту надпись здесь
10.5 бета или всё же 10.6 альфа? Сейчас посмотрю
НЛО прилетело и опубликовало эту надпись здесь
Постаил себе эту версию. Когда у вас возникают зависания? Сразу после загрузки страницы?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ок, спасибо, проверю, что там такое
С оперой вообще какие-то проблемы (традиционные для браузера, полагаю) — 10.53 (8343), OSX: листаем, листаем, листаем -> о книге -> продолжить чтение -> браузер зависает где-то на минуту (при это интерфейс немного «бьётся»).
НЛО прилетело и опубликовало эту надпись здесь
> Блог компании Аймобилко
> Как создавалась Айчиталка.

Тогда уж «Как создавалось Айчиталко»
а есть такой сервис для которого сам грузишь книги чтобы их потом читать ??
=))
НЛО прилетело и опубликовало эту надпись здесь
У нас можно закачивать свои книги себе в аккаунт, но пока нельзя читать (есть некоторые технические сложности). Обязательно сделаем в ближайшее время.
bookmate.ru
на десктопе работает отлично (chrome 5.0.375.55, linux), но на телефоне с андроидом тормозит и на экране мобильника всё как-то мелко.
Интерфейс онлайн-читалки ещё не оптимизировался под мобильные устройства.
Супер, интересно было прочитать все от начала до конца.
Прям триллер — «Битва за время».
Господи зачем этот архаизм с переплетом и обрамлением из книги, вы бы еще эффект листания туда зафигачили.
Вы удивитесь, но эффект листания есть :)
так они и зафигачили. под файрфоксом работает.
я, кстати, тоже не понимаю, зачем с помощью компьютера имитировать «интерфейс книги».
Сделайте вид не книжный, а «портянкой» и будет отличаться от книги.
Уважаемые владельцы блога! Пользуясь случаем не могу не поинтересоваться. Правду ли Тема писал, когда запостил в свой жж, что вы его с оплатой кинули?
Могу сказать только одно: тот иск, которым пугал Тёма в своём жж, мы с нетерпением ждём уже больше года, но его почему-то нет.
НЛО прилетело и опубликовало эту надпись здесь
Добавил в TODO, возможно, сегодня сделаю
Сергей, вы — научный исследователь-теоретик в области html/css/js. У вас есть возможность решать задачи, на которые у остальных разработчиков-практиков не хватает времени (средств, мозгов). Cпасибо вам, что вы есть и делитесь с нами вашими разработками, и спасибо компании Аймобилко, что дает вам возможность заниматься этими научными исследованиями под своим крылом.
"Следующий шаг: правильно «размазать» расчёт страниц по времени"?
Ребят, я не знаю как у вас че создавалось, но… купил книгу «Эффективное общение» Кейт Кинан. А она не открывается.
Вот так вот.

Айчиталка вообще вылетает при открытии книги…
А вот booq пишет ошибку: content1.xhtml TypeError: Result of expression «c» [undefined] is not an object.
Приношу извинения: проблема была в самой книге. Сейчас исправил, попробуйте снова открыть. Для booq нужно удалить книгу и заново скачать, а для онлайн-читалки (если книга снова не открывается) почистить кэш
Спасибо за оперативность, не ожидал… теперь все заработало)
Хабраиндекс стал красив.
Да, забыл спросить, а как вы замеряете время выполнения отдельно взятых скритов и функций?
Записывал время до и после выполнения функции через (new Date).getTime() и сравнивал время. Но есть некоторые нюансы, о них чуть подробнее напишу в следующей части.
Супер статья! Спасибо огромное!
Жду продолжения с нетерпением!

НЛО прилетело и опубликовало эту надпись здесь
Пока нет. Читалка используется нативная (которая с железкой идёт), а движок booq используется для просмотра демо-версий книг. Потом планируем написать полностью своё приложение со своим движком
От покупки меня удерживает только наличие сенсорной плёнки (знаю, что
из-за неё экран будет очень заметно бликовать). Нет ли планов сделать
устройство без неё, а ещё лучше — с инфракрасной сенсорной рамкой?

В плане прошивки: хотелось бы иметь доступ к словарю.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий