Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

среда, 17 февраля 2010 г.

23 хака для работы

Данный пост написан по мотивам поста Hack Your Work: 23 Ways to Get Ahead, Work Less and Achieve More из блога Dumb Little Man - Tips for Life.


  1. Одна цель

    Установите одну цель, которую хочется достигнуть в этом году. Слишком сложно достигать несколько целей одновременно, т.к. это рассеивает ваши усилия, энергию. Выберите одну цель на следующие 12 месяцев, и затем одну цель на ближайшие 3-6 месяцев (но такую, которая бы приближала вас к годовой цели). Затем выберите что-либо, что можно сделать в течении 1-2 недель, и что приближает к 3-6-месячной цели. После этого приложите все усилия, чтобы достигнуть свою краткосрочную цель. А затем двигайтесь в том же духе дальше.

  2. Найди свою страсть

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

  3. Поработай из дома

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

  4. Приходи на работу раньше

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

  5. Работай 4 дня

    Если ты можешь управлять своим расписанием, попробуй работать меньше дней в неделю, чем обычно. Например, четыре дня, а не пять. Это дает: дополнительный выходной, это заставляет тебя быть более продуктивным (на 20%). Подумай сам: если ты знаешь, что твоя рабочая неделя закончится в четверг, а не в пятницу, будешь ли отвлекаться на посторонние вещи? Думаю, вряд ли.

  6. Работай 6 часов в день

    Аналогично предыдущему пункту. Но предыдущий пункт может подойти не для всех. Тогда стоит попробовать работать по 6 часов в день, и при этом рано вставать. Представь, работу начинаешь в 7 утра, а заканчиваешь уже в час дня!

  7. Работай 20 часов в неделю

    Если ограничить работу 20 часами в неделю (например, у вас удаленная работа), то скоро почувствуешь, что ты стал более сфокусированных и успеваешь сделать больше за меньшее время.

  8. СВЗ

    СВЗ - Самые Важные Задачи. В начале каждого дня пиши список из трех самых важных задач, которые нужно сделать за сегодня. Сделай по крайней мере одну из них приближающей тебя к Твоей Главной Цели. Это должны быть действительно важные задачи, те, которые повлияют положительно на тебя и твой доход в долгосрочной перспективе. И попробуй сделать их с утра, самыми первыми, до того, как на тебя свалится масса других дел.

  9. Пакетное выполнение

    Есть множество маленьких дел, которые, тем не менее, отвлекают тебя от твоей работы. Это могут быть телефонные звонки, работа с бумагами, выписка счетов, составление и отправка email, и т.д. Ты уже понимаешь, что надо их выписывать на листочек, а затем делать все сразу, за один присест, и больше к ним не возвращаться в течении дня. Это называется "пакетное выполнение", по аналогии в пакетными файлами в Юникс.

  10. Работай удаленно один день в неделю

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

  11. Фрилансить в свободно время

    Комментарии здесь излишни: нужно выделить свободное время, и начать фриланс-практику.

  12. Обедать на работе

    Можно приносить обед из дома, и обедать на работе. Этим убивается несколько зайцев: экономятся деньги и время, можно пораньше уходить с работы, можно больше успеть сделать.

  13. Ездить на работу на велосипеде

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

  14. Занимайся проектами с потенциально высокой отдачей

    Ежедневная текучка не сделает тебя звездой. Если ты примешься за проект, который может принести высокую отдачу, сильно продвинуть твою компанию вперед, то, если ты его хорошо выполнишь, это благоприятно отразится на твоем положении в компании. Сделай задачи по этому проекту своими СВЗ, и начинай каждый день с работы над ними.

  15. Автоматизируй свой бизнес

    Автоматизированный бизнес высвобождает твое время для более интересных и творческих задач.

  16. Откладывай добавочный доход

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

  17. Расчисти рабочее место

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

  18. Разделяй и властвуй

    Если задача целиком кажется неподъемной, раздели ее на ряд небольших подзадач, и выполни их одна за одной.

  19. Делегируй

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

  20. Избавься от необязательных задач

    Избавься от необязательных задач, которые висят в твоем туду-списке, но до которых никогда не доходят руки. И твоя жизнь намного упростится.

  21. Не отвлекайся

    Телефонные звонки, email, твиттер и т.п. отвлекают тебя от дел. Больше фокусируйся, и ты больше сделаешь.

  22. Убей митинги

    Долгие митинги - это пустая трата времени. Большинство проблем, которые обсуждаются на митинге, можно решить через email или телефонным звонком.

  23. Чтение и написание Email - один раз в день

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

четверг, 11 февраля 2010 г.

Google собирается проложить экспериментальную сеть на 1 Гб/сек

Think big with a gig: Our experimental fiber network - пост в Гугл-блоге, в котором Гугл объявляет о том, что планирует проложить экспериментальную сеть, с пропускной способностью для конечного пользователя в 1 Гб/сек. Сеть запускается, чтобы протестировать новые возможности, новые приложения и др. Сеть будет доступна 50 тыс пользователям, с возможностью расширения до 500 тыс пользователей.

Вышел релиз Google App Engine SDK 1.3.1. Новые возможности Datastore

Это мой первый пост в новом 2010 году!!!

Итак, вышел релиз Google App Engine SDK 1.3.1. Основные изменения касаются хранилища данных! По порядку:

  • Появились курсоры - курсоры позволяют приложению ставить "закладки" при проходе по набору записей, полученных в результате запроса.

  • Отменен лимит на 1000 записей!!! Юхуууу! Хранилище теперь может возвращать столько записей, сколько потребуется!

  • Уменьшилось количество ошибок хранилища Теперь App Engine автоматически повторяет все запросы к хранилищу, если произошла ошибка доступа к Bigtable. Это уменьшает количество ошибок при put-запросах в 3-4 раза, при get-запросах в 10-30 раз


Дополнительно еще есть много других изменений (см. лист изменений для Python SDK).

По мотивам поста App Engine SDK 1.3.1, Including Major Improvements to Datastore! в блоге Google App Engine.

понедельник, 28 декабря 2009 г.

Удаление элемента из массива JavaScript

Как не надо удалять элемент из массива в JavaScript:

var list = [4,5,6];
delete list[1];
print(list); // [4, undefined, 6]
 


Как правильно:

var list = [4,5,6];
list.splice(1, 1); // Remove one element, returns the removed ones.
print(list); // [4, 6]


И еще правильно:

var visibleIds = [4,5,6];
visibleIds.splice(visibleIds.indexOf(5), 1);
print(visibleIds); // [4, 6]


См. также JavaScript: Remove element from Array.

пятница, 27 ноября 2009 г.

10 навыков, которые потребуются девелоперам в ближайшие пять лет

По мотивам 10 skills developers will need in the next five years.

1) Знать что-то из "большой тройки" (.NET, Java, PHP)

2) Rich Internet Applications (RIAs)

Flash - это уже не просто анимация на страничках - взгляните в сторону Flex и AIR. Его конкуренты: JavaFx, Silverlight. Добавляйте сюда также HTML5 и AJAX.

3) Веб разработка

4) Веб-сервисы

REST или SOAP? JSON или XML? Сеть - это компьютер.

5) Иметь не только навыки разработки ПО

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

6) Знать еще один динамический и/или функциональный язык

Ruby, Python, F#, и Groovy - не помешает.

7) Знать гибкие методологии разработки

8) Знания предметной области

9) Гигиена разработки

Использовать систему контроля версий, баг-трекинг, документировать код, проводить тестирование.

10) Разработка под мобильные устройства

10 вещей, которые каждый Java-разработчик должен знать о Unix

По мотивам Ten Things Every Java Developer Should Know About Unix.

Предназначено для разработчиков на Java, сидящих под Windows.


  1. Для использования некоторых портов нужны права.
    В Unix программы, запускаемые простыми смертными ;-), не могут использовать сетевые порты с номером меньше чем 1024. Только пользователь с правами root может это сделать.

  2. Нет магического лока файлов.

  3. Иногда нет GUI, и это нормально.








10 вещей, который каждый Java-разработчик должен знать

Данная статья является вольным пересказом статьи в блоге Armel Nene - 10 things all JAVA developers should know.

  1. Знать и помнить основы Java, а также объектно-ориентированного подхода.
    Необходимо знать основы языка, а также основные пакеты стандартной библиотеки. Особое внимание обратить на пакеты java.lang, java.util, java.io.

  2. Знать используемый технологический стэк.
    Java - это платформа разработки. В рамках этой платформы существует набор фреймворков, которые принято использовать вместе. Например, open-source J2EE стэк включает в себя Spring Framework + Hibernate + MySQL/PostgreSQL. Или, стэк Oracle включает в себя: JSF + TopLink + Oracle СУБД.

  3. Иметь опыт использования нескольких Java EE фреймворков.
    Как минимум, необходимо знать Spring. Дополнительно, не помешает иметь представление о EJB, Struts 1.3/2.0, Tapestry, Wicket. Опыт с Hibernate также highly desirable, хотя сейчас идет переход на JPA. Hibernate, кстати, совместима с JPA.

  4. Знать еще один скриптовый (динамический) язык.
    Для некоторых вещей Java слишком тяжеловесна. Поэтому необходимо знать еще как минимум один скриптовый, или, может, динамический язык. Хорошо подойдет Python. Также неплохо знать язык скриптов используемой ОС. Для Unix flavors, например, знание shell scripting очень помогает ;-)

  5. Знать, как разрабатывать веб-сервисы.
    Сеть - это компьютер. Необходимо иметь представление о различных фреймворках для разработки веб-сервисов. Понимать разницу между стандартизированным SOAP и нестандартизированным ReST, и знать, что где лучше использовать.

  6. Многопоточное программирование.
    Необходимо знать, когда следует сделать приложение многопоточным. Каждый Java-разработчик должен уметь написать многопоточное приложение на Java.

  7. Работа с СУБД - SQL, JDBC.
    Необходимо уметь написать SQL-запрос. Знать основы обращение с СУБД из Java - через JDBC.

  8. Знать скриптовые клиентские языки и что такое AJAX.
    AJAX позволяет снять нагрузку с сервера. Поэтому необходимо его знать, а также и различные фреймворки для рабоыт с ним. Со стороны Java это - DWR и GWT. GWT компилирует код на Java в эффективный JavaScript.

  9. Знать конкурентов.
    Отличие Java от .NET, Ruby, Python.

  10. Знать Ant (Maven), Tomcat или GlassFish/JBoss.
    Ant - скрипты сборки, стандарт де-факто при разработке на Java. Maven - имеет заданную структуру построения проекта, менеджмент библиотек. Tomcat - базовый сервлет-контейнер, который каждый разработчик на Java EE обязан знать. А также еще хотя бы один сервер приложений на Java (GlassFish или JBoss AS).

четверг, 26 ноября 2009 г.

Как узнать версию Python

Через командную строку:

python --version


Программно:
import sys
print sys.version_info


П.С. Многострочные комментарии в Питоне создаются с помощью тройных апострофов:
'''
This is
multiline comment
in Python
'
''

среда, 25 ноября 2009 г.

Node.JS - JavaScript-фреймворк для обработки ввода-вывода

Node.JS - JavaScript-фреймворк для обработки ввода-вывода. В качестве движка JavaScript используется V8 - движок от Google Chrome. Сайт проекта: http://nodejs.org/.

Несмотря на то, что большинство разработчиков использует JavaScript в качестве клиентского языка в браузере, появление встраиваемых движков, таких как Rhino от Mozilla (Rhino написан на Java) или V8 от Google (V8 написан на С++) сделало возможным выполнение JavaScript-сценариев на сервере. Одним из примеров таких систем и является Node.JS. JavaScript здесь выступает лишь как язык сценария, он связан с библиотеками на Python или С/С++, которые и выполняют основную работу (через функции epoll, kqueue, /dev/poll, or select).

О преимуществах Node.JS подробнее рассказано здесь.

А вот статья на InfoQ, по которой я и нашел Node.JS:
Evented I/O for Javascript with Google V8-based Node.js

Reactor pattern

Reactor - шаблон проектирования, используемый в параллельном программировании. Шаблон используется при обработке запросов к сервису, которые доставляются параллельно. Сервисный обработчик затем разбирает прибывшие запросы и синхронно перенаправляет их на соответствующие обработчики запросов.

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

Ссылки:

Reactor pattern - Википедия

Patterns for Concurrent, Parallel, and Distributed Systems

Comparing Two High-Performance I/O Design Patterns

Merlin brings nonblocking I/O to the Java platform

Java Performance Tuning - тюнинг производительности Джавы.

Schmidt - Reactor_An_Object_Behavioral_Pattern_for_Demultiplexing_and_Dispatching_Handles_for_Synchronous_Events

V8 JavaScript Engine

V8 - это опен-соурсный JavaScript-движок, который используется в браузере Google Chrome. V8 написан на С++.

V8 реализуетECMAScript, согласно третьему изданию стандарта ECMA-262, и работает под Windows XP и Vista, Mac OS X 10.5 (Leopard), и Linux-системами на IA-32 или ARM процессорах.

V8 может запускаться отдельно, а также быть встроенным в любое C++ приложение.

Сайт проекта: http://code.google.com/p/v8/.

Одним из преимуществ V8 является его сборщик мусора, т.е. garbage collector. Он придает производительность этому движку.

Одним из наиболее широких применений JavaScript, как клиентского языка, является манипуляция с DOM. Однако, DOM предоставляет браузер (например, Google Chrome), а не движок. V8 предоставляет все типы данных, операторы, объекты и функции, определенные в стандарте ECMA.

понедельник, 9 ноября 2009 г.

Sun Java Application Store поддерживает оплату через систему PayPal

Sun Java Application Store теперь поддерживает оплату через систему PayPal.

На конференции PayPal X Innovate 2009 компания Sun анонсировала интеграцию магазина приложений Sun Java App Store c платежной системой PayPal.

Разработчики могут назначать цены за приложения, распространяемые через Java App Store в диапазоне от $1.99 до $200.00 (USD) и выбирать тип лицензии. Разработчики получают 70% с каждой продажи приложения, проданного через Java Store Beta. Java App Store использует Adaptive Payment API от PayPal, потребители могут авторизоваться в Java Store Beta и просто нажимать кнопку "Buy", таким образом, совершая покупки не покидая магазина. Дополнительно, когда совершается платеж, разработчик получает оплату моментально, в момент перечисления денег клиентом. Девелоперы могут моментально получать платежи и в каждый момент точно знать, как идут продажи, и сколько людей купило их приложение.

Ссылки:
Sun Enhances Java Application Store with PayPal Payment Capability

Sun Enhances Java Application Store with PayPal Payment Capability

Yahoo Traffic Server now is Open-Source

Компания Yahoo передала код проекта Yahoo Traffic Server в Apache Incubator.

Traffic Server - это высокопроизводительный HTTP/1.1 кэширующий и прокси сервер, используемый Yahoo во внутренних проектах начиная с 2002 года (с тех пор, как они приобрели его разработчика - компанию Inktomi). Traffic Server обрабатывает в Yahoo около 400TB данных ежедневно. По сообщениям от разработчиков, Traffic Server обрабатывает свыше 30,000 запросов в секунду на одном сервере.

Traffic Server предоставляет управление сессиями и конфигурациями, балансировку нагрузки, аутентификацию и роутинг, и спроектирован для высоконагруженных сайтов, в которых администраторы могут создавать сложные, комплексные настройки для обработки запросов на файлы, изображения и иные объекты. Модульная (plugin) архитектура позволяет разработчикам расширять Traffic Server для выполнения различных задач.

Traffic Server помещен в Apache Incubator, где он будет приведен в соответствие со стандартами кода Apache Software Foundation. Traffic Server состоит из более чем 300,000 строк кода на C/C++. Долговременные цели включают перенос на все Unix-системы, переделку под 64-битовость, и добавление фич, таких как, наприимер, нативная поддержка IPV6.

Shelton Shugar, VP of Yahoo, говорит, что это ПО будет полезно для использования в облаке. Также Yahoo надеется, что вокруг Traffic Server появится сообщество пользователей, которые привнесут новый end customer experience.

См. ссылки:

Yahoo donates Traffic Server to Apache

Yahoo! Traffic Server donated to Apache

Traffic Server Project Incubation Status

суббота, 7 ноября 2009 г.

Google открывает ключевые инструменты разработки

В посте от 5 Ноября 2009 года Introducing Closure Tools компания Google объявила об открытии нескольких своих ключевых инструментов разработки на JavaScript (Closure Compiler, Closure Library, Closure Templates, Closure Inspector), надеясь, что они позволят программистам создавать веб-приложения быстрее.

При помощи этих инструментов созданы популярные веб-приложения (Gmail, Google Docs и Google Maps).

Closure Compiler
Closure Compiler - JavaScript-оптимизатор, который сжимает код JavaScript, а также выполняет оптимизацию кода (это опционально). Существует три уровня сжатия и оптимизации:

  • WHITESPACE_ONLY - удаление пробелов в комментариев из кода

  • SIMPLE_OPTIMIZATIONS - локальная оптимизация частей скрипта, которые не взаимодействуют с внешним кодом. Обычно, это переименование локальных переменных

  • ADVANCED_OPTIMIZATIONS - агрессивная оптимизация


Closure Compiler имеет REST-интерфейс. Помимо этого можно скачать JAR-файл, который содержит Closure Compiler, и пользоваться им локально.

Closure Compiler для работы требует Java 6.

Closure Library
Кросс-браузерная JavaScript-библиотека, которая содержит утилиты для обращения к DOM, модель событий, коммуникацию с сервером, структуры данных, большое количество виджетов и другое.

Closure Templates
Шаблонизатор, работающий и на клиенте, и на сервере.

Closure Inspector
Расширения для FireBug for FireFox. Добавляет следующие фичи в файербаг:

  • мэппинг исходного кода - при выполнении жатого кода мэппит его на несжатый оригинал

  • улучшенное отображение stack trace

  • интеграцию с юнит-тестированием

понедельник, 2 ноября 2009 г.

Python, Django, and Google App Engine

Выступление Гвидо Ван Россума на Google I/O 2008. См. видео-трансляцию.

четверг, 29 октября 2009 г.

Использование nginx

Nginx (произносится как Энжин Икс - Engine X)- эффективный веб-сервер (а также прокси-сервер), созданный Игорем Сысоевым для Рамблера. Используется на 3% самых загруженных серверов в мире (См. Википедию).

Ссылки по Nginx:

1) http://sysoev.ru/nginx/ - cтраничка проекта
2) Nginx: the High-Performance Web Server and Reverse Proxy - статья в LinuxJournal
3) Nginx Internals by Joshua Zhu - презентация на SlideShare
4) Разработка модулей для nginx - статья Валерия Холодков для конференции HighLoad++ 2008
5) Введение в nginx - введние от Зеленой Мыши, также есть другие материалы по nginx.
6) Установка и настройка Nginx. Nginx frontend + Apache backend. Установка mod_rpaf - руководство на сайте Server Help - установка и настройка выделенного сервера.


Раздел будет дополняться по мере нахождения новых материалов.

The Joel Test: 12 Steps to Better Code

Тест от Joel Spolsky: 12 шагов к лучшему коду (правда, пост довольно давний - аж от 9 Августа 2000 года).

Ответьте на 12 вопросов:
1) Используете ли вы систему контроля версий?
2) Сборка происходит в одно действие?
3) Проводятся ли ежедневные сборки?
4) Ведется ли баг трекинг (bug database)?
5) Перед написание нового кода происходит фикс багов?new code?
6) Имеется ли расписание разработки, которое к тому же и up-to-date?
7) Есть ли спецификация (спек)?
8) Программисты имеют спокойные условия для работы?conditions?
9) Используются ли лучший инструментарий?
10) Есть ли тестеры?
11) Новые кандидаты пишут код на интервью?interview?
112) Есть и юзабилити-тестирование?

Полная версия находится здесь - The Joel Test: 12 Steps to Better Code
by Joel Spolsky

Прикольное описание вакансии на StackOverflow

Software Developer (Python/Django)
at Playfire.com (Gaming social networking startup!)
London, United Kingdom

Hi! We are an exciting, well-funded web startup looking for an ambitious software engineer who is hungry to build awesome software that millions of people use. Based in Soho, London, we are building the next big thing for millions of gamers around the world, and are looking for an exceptional technical mind to join the team and attack some hard problems in creative ways.

....

Are you the one? You are, if you:

* Love agile development, working independently on your own challenges, and together in a team on the bigger vision
* Are completely fluent in a scripting language such as Python, Perl, PHP or Ruby and have experience with web frameworks and the MVC concept
* Have used MySQL or PostgreSQL extensively and you know your way around Apache, nginx or other server
* It's a bonus if you have good JavaScript skills (we use jQuery)
* Get excited by the idea of scaling web apps to millions of users
* Are the best developer in your peer group, and want to be at a place where you are constantly challenged and pushed to become better
* Get obsessed about the problem you're solving and don't stop until you've cracked it
* Have a thirst to learn new skills and technologies, and can pick things up easily
* Want to have fun building lots of new features and get stuff done
* Are full of positive energy, relish the thought of being part of a small, fast-moving team and enjoy brainstorming about new ideas

Benefits

* Opportunity to become recognised as one of the best in your field, through being a core developer for a high-profile startup
* Relaxed, sociable work environment with lots of freedom and independence
* Building an exciting app that millions of real life people will use and appreciate everyday
* First hand experience of how to start, grow, market and raise funding for startups (perhaps useful for your own company one day)
* Working with awesome technologies (Python/Django/jQuery/Debian/Git)
* As part of one of the top technical teams in the UK, along side super smart people who have a lot of fun, devoid of any politics
* With dual-widescreen monitors, a new computer and a Herman Miller Aeron chair
* In a fun office, with free drinks, in the heart of Soho (there are so many options for lunch it's crazy!)
* A competitive salary and a generous equity stake in the company (you're working hard to make the company successful, so you should share generously in the reward!)

A little more about us

* Backed by some of the most prestigious investors in the world with specific experience in social networks and games (including the founder of Bebo, the former CEO of PlayStation, the founders of Skpe, etc - who you'll likely get to meet)
* Founded by entrepreneurs with a track record for success with internet and video games companies
* 200,000 gamers already using the service!
* We'll be messing around with Facebook Apps, OpenSocial and will be integrating with Xbox Live and other multiplayer services.
* And unlikely many other web businesses, we know exactly how to make money, and steps needed to get us there :)

So, all in all, exciting stuff! We want to hear from you! Details on how to do that are below :-)


По-моему, это просто CRAZY & AWESOME, не так ли?

XMPP - как протокол для клауд-сервисов

Matt Tucker в статье XMPP (a.k.a. Jabber) is the future for cloud services описывает возможное применение XMPP-протокола в качестве протокола для связи между клауд-сервисами.

Для организации двусторонней связи клиент-сервер протокол HTTP подходит плохо, т.к. он спроектирован для случаев, когда инициатива по открытию соединения с севером лежит на клиенте. В случаях, когда инициатива по установке соединения исходит от сервера (примеры: messaging applications, stock qoutes online, онлайновые аукционы и др.), HTTP весьма сложно использовать (в этом случае применяются технологии Comet, Bayeux).

Один из вариантов - отдавать данные от сервера клиенту бесконечно долго ("в час по чайной ложке"), оставляя таким образом соединение открытым. Другой вариант - клиент постоянно опрашивает сервер (так называемый поллинг - polling), запросы происходят с некоторым временным интервалом (5-10 секунд) - если на сервере появляются новые данные, то по AJAX они передаются на клиент. Но при этом на сервер сыпятся сотни тысяч, миллионы запросов, абсолютное большинство из которых абсолютно не нужны (т.е. не несут в себе данных), что является издержкой однонаправленности протокола HTTP.

XMPP же лишен этого недостатка, это двунаправленый протокол, построенный на основе XML, легко расширяемый и доказавший работу при больших нагрузках (сотни тысяч, миллионы пользователей) - например, в GTalk. При его использовании происходит ровно столько запросов, сколько надо для передачи данных.

Постоянные читатели