JavaScript → Спагетти в последовательном вызове асинхронных функций. Теория и практика
В продолжение статьи Последовательный вызов асинхронных функций.
Большинство традиционных, не-веб языков программирования являются синхронными (блокирующими).
Как можно определить, синхронный или же асинхронный данный язык? Например, по наличию/отсутствию функции sleep (может называться также delay, pause и т.д.), когда программа полностью останавливается на определённое количество времени.
В JavaScript, как вы знаете, такой функции нет. Есть, например
Часть 1. Теория
Большинство традиционных, не-веб языков программирования являются синхронными (блокирующими).
Как можно определить, синхронный или же асинхронный данный язык? Например, по наличию/отсутствию функции sleep (может называться также delay, pause и т.д.), когда программа полностью останавливается на определённое количество времени.
В JavaScript, как вы знаете, такой функции нет. Есть, например
Ajax → Признак ожидания ответа по Ajax на Хабре есть, но не используется
Во время анализа стилей сайта в своё время было обнаружено, что в стилях и скриптах предусмотрено то, что должно быть по правилам юзабилити — показ режима ожидания ответа от сервера — но оно никак не проявляется визуально. Работает это только на страницах с новой вёрсткой — почти на всех, исключая некоторые специально оформленные (в старой вёрстке, принятой до октября 2011) страницы блогов компаний. Так давайте же использовать то, что сделано!
Поэтому при создании юзерстилей ZenComment был задействован стиль ожидания. Он появляется после того как пользователь нажал на отправку оценки и исчезает в момент прихода успешного ответа от сервера. Выглядит он не очень впечатляюще, нет крутящихся стрелок, потому что создавать особые эффекты — уже нет места в файле, который должен быть ограничен 65 КБ на все стили по правилам хостинга. Признак проявляется просто в виде бледно-жёлтого фона кнопки оценивания. Если, например, связь с сервером потерялась, фон кнопки ответа так и останется жёлтым. Без юзерстилей в этом случае ничего не происходит визуально.
Поэтому при создании юзерстилей ZenComment был задействован стиль ожидания. Он появляется после того как пользователь нажал на отправку оценки и исчезает в момент прихода успешного ответа от сервера. Выглядит он не очень впечатляюще, нет крутящихся стрелок, потому что создавать особые эффекты — уже нет места в файле, который должен быть ограничен 65 КБ на все стили по правилам хостинга. Признак проявляется просто в виде бледно-жёлтого фона кнопки оценивания. Если, например, связь с сервером потерялась, фон кнопки ответа так и останется жёлтым. Без юзерстилей в этом случае ничего не происходит визуально.
Веб-разработка → Juvia: open source система комментирования для вашего сайта
Многие веб-разработчики пытаются упростить себе жизнь и пользуются различными сторонними сервисами для «аутсорсинга» базы данных, системы комментирования, хранения аватарок, чата, системы аутентификации и так далее. Это очень удобно: например, чтобы добавить на сайт комментарии, достаточно вставить просто сниппет JavaScript. Приятно знать, что в этой сфере появляются новые сервисы, лучше прежних. Речь идёт о системе комментирования Juvia.
Сейчас самыми популярными сторонними системами комментирования считаются Disqus и IntenseDebate. Однако, обе они были разработаны в начале 2000-х, когда Ajax ещё не стал стандартом де-факто. Поэтому, при попытке интегрировать их на Ajax-сайте могут возникнуть проблемы.
Сейчас самыми популярными сторонними системами комментирования считаются Disqus и IntenseDebate. Однако, обе они были разработаны в начале 2000-х, когда Ajax ещё не стал стандартом де-факто. Поэтому, при попытке интегрировать их на Ajax-сайте могут возникнуть проблемы.
Разработка → Асинхронный обмен данными поверх HTTP
Не так давно на работе передо мной была поставлена задача реализовать механизм асинхронного обмена данными между веб-приложением на Java и веб фронт-эндом на стороне клиента. Задача заключалась в том, чтобы клиент получал апдейты с минимальной задержкой, при этом апдейты могли приходить со скоростью 100 апдейтов в секунду, так и 1 апдейд в минуту, т.е. желательно не слать лишних запросов со стороны клиента.
Вначале я набросал тестовый сервлет, который мгновенно отвечал на запрос, присланный с клиента, на котором данный запрос формировался каждую секунду. Конечно, эта схема была далека от идеала, поэтому я принялся гуглить.
Вначале я набросал тестовый сервлет, который мгновенно отвечал на запрос, присланный с клиента, на котором данный запрос формировался каждую секунду. Конечно, эта схема была далека от идеала, поэтому я принялся гуглить.
.NET → Сравнение производительности JSON-сериализаторов для .NET из песочницы
Json в .NET может использоваться для разных целей. В моём случае это формирование ответа на Ajax-запрос в ASP.NET Mvc приложении. Конечно, конвертация ответа в JSON — не самое тонкое место, но мне стало интересно, как можно ускорить эту операцию. Настоящая статья не является детальным обзором существующих JSON-сериализаторов для .NET/Mono. Меня интересовало в первую очередь время, затрачиваемое на сериализацию относительно простых структур данных, и во вторую очередь маппинг. То есть, хочется чтобы сериализация легко и гибко программировалась и быстро работала.
В исследование попали следующие средства сериализации:
В исследование попали следующие средства сериализации:
- Простая конкатенация строк
- JavaScriptSerializer (.NET Framwork)
- DataContractJsonSerializer (.NET Framwork 3.5)
- Newton Json.net (json.codeplex.com/, james.newtonking.com/pages/json-net.aspx)
- JsonEx (code.google.com/p/jsonexserializer/)
- Fluent Json (fluentjson.codeplex.com/, code.google.com/p/fluent-json/)
Персональные блоги → Основные тезисы конференции HighLoad++ 2011
В октябре 2011 года в Москве проходила ежегодная конференция разработчиков высоконагруженных проектов HighLoad++. Решил поделиться с читателями основными тезисами с конференции. Поскольку вся информация открыта и доступна на странице конференции, решил что собрать все тезисы вместе будет не такой уж и плохой затеей. Сразу отмечу, что в отчёте не содержится детальной информации о каждом докладе — затронуты лишь ключевые моменты.
Итак, о чём говорилось на HighLoad++ 2011.
Livejournal → Новости LiveJournal: будет введена ≈карма, обновлён дизайн, возвратится dolboeb
Во-первых, будет обновлён дизайн. Во блоге у Артемия Лебедева выложены наброски нового дизайна, и каждый может оценить этот шаг в сторону повышения эксплуатационной пригодности (сиречь юзабилити).
Во-вторых, на смену рейтингу блоггеров придёт «социальный капитал».
В-третьих, медиа-директором SUP Media стал автор блога dolboeb.livejournal.com, который в прошлом ужé занимал в «Супе» различные более или менее руководящие должности. Руководителем же LiveJournal стал Илья Дронов. Объявлено о намерениях изменить как серверную часть LJ (в том числе переместить часть серверов из США в Европу), так и клиентскую (в том числе шире внедрить AJAX). Обещан читальник для Android и система автоматической рекомендации блогов, понравившихся френдам блоггера.
Google Web Toolkit → Высокопроизводительный GWT. Часть 1

Данный пост является началом серии статей про оптимизацию и улучшение производительности GWT-приложений. Поскольку материала у меня накопилось достаточно много, решил разбить его на 2-3 части.
Приступим к описанию того, что нас ждёт в первой статье.
jQuery → jQuery Mobile 1.0

После более года разработки увидел свет финальный релиз jQuery Mobile 1.0 на базе jQuery 1.6.4 (поддержка jQuery 1.7 появится с версии jQuery Mobile 1.1). Этот фреймворк создан для разработки сайтов с тач-интерфейсом при помощи привычных HTML, CSS и JavaScript. Инструменты вроде PhoneGap позволяют легко трансформировать сайт HTML5 в мобильное приложение и распространять его через магазины приложений.
