• Три правила проектирования интерфейсов с высокоскоростным пользовательским взаимодействием

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

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

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

      1. Вычисления не должны блокировать взаимодействие с интерфейсом и его рендеринг — пользователь всегда должен иметь возможность указать на фокус своих интересов.
      2. Страница объекта, к которому обратился пользователь, должна отображаться мгновенно, не дожидаясь загрузки данных, в которых нуждается объект.
      3. Запросы в сеть не должны уходить одной большой группой, не должны отправляться сразу; должны откладываться на небольшое время, складываться и приоритезироваться в случае необходимости.


      Изложенная в этой заметке информация — это мой практический опыт проектирования и разработки интерфейса моего приложения для поиска и прослушивания музыки seesu.me. Приложения, в котором гармонично комбинируются огромные пласты данных из разрозненных сервисов, таких как last.fm, вконтакте, ex.fm, hypem.com, soundcloud.com, discogs.com, youtube.com


      Читать дальше →
    • Список оптимизаций рендеринга DOM, реализуемых на уровне Javascript фреймворка

        С октября 2009 года я занимаюсь разработкой приложения для поиска и прослушивания музыки. Я стремлюсь организовать возможность быстрого взаимодействия пользователя с интерфейсом, и в качестве одного из средств ускорения взаимодействия использую различные способы для быстрой отрисовки страниц.

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

        • Использование CSS и переключение классов вместо перестроения DOM дерева
        • Повсемнестное кеширование выборок элементов ($('div.active_part span.highlighter')), атомарные операции по изменению (вместо всеобщей перерисовки, вместо переделывания больших участков DOM дерева)
        • Минимизации чтений DOM во время записи изменений состояний
        • Кеширование размеров и расположения элементов (это спасает от излишнего вычисления при считывании этих значений при наличии других изменений: чтение во время изменения множества частей дерева крайне негативно сказывается на производительности)
        • Аккуратное, не затягивающееся накопление изменений, необходимых произвести в DOM
        • Прикрепление частей изменяющихся коллекций единовременно (когда, например, в середину списка вставляется 3 новых элемента; createDocumentFragment) в конкретное место (after, before) вместо открепления всей коллекции от DOM и повторного прикрепления (и вместо того, чтобы перерисовывать весь список)
        • Прогрессивный асинхронный рендеринг: картина прорисовывается сразу с небольшим количеством деталей, затем деталей появляется всё больше
        • Клонирование нодов (как часть шаблонизации)
        • Кеширование и использование кеша результатов парсинга DOM шаблонов


        image image
        изображения из части с заголовком «Прикрепление частей изменяющихся коллекций единовременно...»
        Читать дальше →
      • Онлайн версия Seesu с вконтактовским Open API и поиском mp3 по soundcloud

          Сису — это очередное, небольшое приложение для удобнейшего поиска и прослушивания музыки. Комбинация last.fm, вконтакте, а также с недавних пор soundcloud. Написано на html/css/js.

          Со времени последнего поста на хабре о сису я не только запустил сайт проекта, но и благодаря вконтактовскому APIонлайн версию, которая работает не только на десктопе, но и на мобильных: проверены Android, iPhone, iPad и Opera Mini (в ней работает только soundcloud). Причём на айфонах работает в многозадачном режиме (в том числе на iPhone 3g, в котором в принципе нет многозадачности). Помимо онлайн версии существует виджет для оперы, расширение для хрома и виджет для apple dashboard.

          seesu
          Читать дальше →
        • Seesu (last.fm + vkontakte.ru виджет) в файрфоксе

            image
            Новая версия (1.7) виджета Seesu для поиска и прослушивания музыки может запускаться не только в опере, но и в файрфоксе. Для этого надо поставить расширение ZoooS Widget Runner. Последние изменения в виджете были произведены именно для поддержки этого расширения, хотя оно и сыровато.
            Читать дальше →
          • Удобный поиск по last.fm, проигрывание лучших треков и загрузка музыки с вконтакте в виджете Seesu

              seesu logoНовая (1.2) версия Seesu (зеркало), виджета для прослушивания музыки на основе last.fm и вконтакте.ру, приносит тонну баг фиксов, исправление проблемы инициализации флеша (если тот не во вьюпорте), лучшую поддержку ошибок серверов, улучшения в интерфейсе, рефакторинг кода и с ним лучшую скорость работы, а также

              — сробблинг (поддерживает «прослушивает сейчас» и общую отправку)
              — быстрый удобный поиск (саджестовый + полный), навигация по нему с клавиатуры
              — флеш в айфрейме (поэтому теперь не нужно добавлять виджет в белый список — флеш просто играет музыку)
              — уменьшен размер виджета с 225 кб до 70
              — поддержку Оперы 10.50

              seesu fast search

              С тех пор как была представлена версия 0.25 (или что-то около того) появилось и развилось много альтернатив
              Читать дальше →
            • Браузеры — автомобили

                До 17 марта Microsoft, в сответствии с директивой Еврокомиссии, должна была предложить пользователям Windows в странах ЕС специальное окно выбора браузеров (и предложила ). Так это выглядит — www.browserchoice.eu. Для нас, в отличие от ЕС, это событие выглядит скорее любопытным, чем практически полезным. Хочу приурочить в этому событию пост «А что было бы, если бы браузеры были автомобилями», в котором обыграть плюсы и минусы пятёрки ведущих браузеров, сподвигли описания каждого из них в «экране выбора» — именно по этим описаниям пользователи из ЕС теперь будут выбирать чем ходить в Интернет. Конечно каждый кулик хвалит своё болото. Но в 1000-й раз говорить о преимуществах и недостатках «в лоб» — скучно :)

                Итак, что если браузеры были бы автомобилями? (Где соврал, чего недоговорил, кто прав, кто виноват?). У кого лучше подсвеска, кого не ведёт на дороге, за чей руль лучше не садится?
                Читать дальше →
              • API вконтакте совсем скоро станет доступно не только для флеш приложений

                  Возможно вам всё равно, но мне как разработчику оперовиджета для вконтакте и last.fm — нет:
                  В течение недели API ВКонтакте станет открыт для разработчиков JS. Вы сможете создавать приложения ВКонтакте на JS (HTML, PHP etc.), и все Ваши наработки и навыки работы с API станут весьма востребованы.
                  vkontakte.ru/topic-1_22091956#n2

                  В общем, землю — крестьянам, api — веб-технологам!
                  Осталось дождаться беспарольной авторизации (oauth)
                • Javascript производительность? А как насчёт производительности перерисовки страниц?

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

                  Удивительно, что так мало внимания уделяется другим, более соответствующим аспектам производительности современных страниц, либо вообще не уделяется. Например, как быстро работают браузеры с динамично меняющимся стилем страницы (CSS)?

                  На Velocity 2009 Линдси Симон из компании Google говорил именно об этом. И на слайдах из презентации есть пара итересных графиков.
                  opera css change perfomance
                  Выяснилось, что Оперовский движок очень быстро работает с динамично меняющимся контентом страницы, а это именно то, что используется в интернете повсеместно. Что, если в будущем производительность браузера будет измеряться более комплексно, в отличии от простого JavaScript теста?

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

                  Кроме того Опера очищает кэш от неиспользуемых элементов каждые 10 минут, но не видно что бы это было отражено в отчёте испытания. Мы могли бы очищать кеш все время, но тогда нам пришлось бы пожертвовать производительностью, как по всей видимости, делает Firefox.

                  В контексте комплексного тестирования JavaScript и памяти Джаракан, похоже, увеличит показатели искусственных JavaScript тестов, но, возможно, за счет использования большего количества памяти.
                • Твиттер, музыка и непослушные медведи

                    Первая муз. группа у которой есть твиттер @padlabearoutfit?

                    «Печальные и смешные тексты. Цепляет раз и навсегда.
                    Даже если по описанию вам покажется, что это всё лажа, то все равно скачайте и послушайте. Убедитесь сами или разубедитесь.» community.livejournal.com/i_am_rare/744020.html



                    ««Пэдла Бер» родился и вырос в г. Ленинграде, в конце восьмидесятых, в интеллигентной семье. Музыкой начал увлекаться с шести лет, с интересом слушая записи А. Вертинского, Б. Окуджавы и, так называемых, «джаз» и «рок» ансамблей.» www.afisha.ru/blogcomments/3921

                    Скачать Padla Bear Outfit — hipster

                    Вот так вот твиттер и свободное распространение альбомов вполне привычно для современных артистов. Вы ещё считаете, что кому-то нужен продюссер?