Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Мистификация о комете

Чулан
По Интернету упорно ходит мистификация о какой-то мегакомете, которая якобы упадет в конце октября то ли на Южный полюс, то ли в Германию, то ли в океан. Ну ходит и ходит, но сообщение начало просачиваться в сетевые и несетевые СМИ. Причем просачивается оно как якобы соответствующее действительности.

Поэтому всем, кто начинает думать «А вдруг это так» просьба почитать первоисточник

www.kometa.by.ru

Автор явно не в ладах с астрономией (хотя бы в рамках школьного учебника) и логикой.

Люди! Будьте бдительны! Потребуйте у автора цифр, чтобы иметь возможность повторить его наблюдения. Потребуйте эфемериду, если он знает это слово (эфемерида — это такая бабочка ;)

Афтор! Выпей водички или пивка и успокойся!

Журналисты! На вас лежит ответственность проверять полученные данные. Если вы чего то не знаете, не страшно, возьмите интервью у любого специалиста-астронома. Если вы не умеете отличить астронома от астролога, выпейте йаду!
Всего голосов 8: ↑3 и ↓5 -2
Просмотры 349
Комментарии 0

Adobe откроет RTMP

Adobe Flash
Adobe объявила о планах открыть в I пол. 2009 года спецификации протокола Real-Time Messaging Protocol (RTMP), который используется в веб-разработке (например, см. подробное руководство на Хабре по организации сервера вещаний).

Несмотря на своё изначальное предназначение, иногда RTMP используют не только для видеовещания. Например, на нём работает система Adobe LiveCycle Data Services ES. По мнению некоторых специалистов, после открытия RTMP он может сильно потеснить с рынка свободный протокол Comet.

Спецификации RTMP будут выложены здесь.
Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 4.7K
Комментарии 0

Обслуживание тысяч запросов в секунду на примере XBT Tracker

Серверная оптимизация *
Недавно проводили тест, результаты которого показали, что одно приложение обрабатывает 2000 запросов в секунду на скромном сервере, где это было не единственной нагрузкой. При этом результат каждого запроса записывается в 3-5 таблиц в MySQL. Честно говоря, меня такой результат удивил, поэтому решил поделиться с хабрасообществом описанием архитектуры этого приложения. Подобный подход применим от баннерных показов до чатов и микроблогов, надеюсь кому-нибудь покажется интересным.

Во-первых, это приложение однопоточное. Всё делается одним процессом, работа с сокетами — неблокирующими epoll/select, никаких ожидающих ввода/вывода потоков (threads). С развитием HTTP, сначала появлением Keep-Alive, затем AJAX и набирающим популярность COMET, количество постоянных соединений с веб-сервером растёт, на нагруженных проектах измеряется тысячами и даже десятками тысяч, и если для каждого создавать свой поток (thread) со своим стеком и постоянно переключаться между ними — ресурсов сервера очень быстро не хватит.

Второй ключевой момент — что один SELECT… WHERE pk in (k1, k2, ..., kN) выполняется быстрее, чем несколько SELECT… WHERE pk=… Выполняя работу с базой данных большими пачками можно уменьшить не только число запросов в секунду, но и общую нагрузку.
Читать дальше →
Всего голосов 69: ↑67 и ↓2 +65
Просмотры 7.1K
Комментарии 41

Пуш ми, бум-бум, тач ми… Ajax Push Engine

Разработка веб-сайтов *
logoСегодня поговорим о Comet и о server push вообще.

Обычные веб-приложения, как и сайты, работают по традиционной модели запрос-ответ-запрос, при этом, в силу особенностей HTTP-протокола и некоторых серверных реализаций обработчиков, приложение не хранит информацию между запросами, так что каждый вызов является независимым, а идентификация или сессионность обеспечиваются более высокоуровневыми средствами (например, всем известная реализация сессий в PHP). Кроме этого, запрос на новую информацию посылает всегда клиент, который заинтересован в получении самой актуальной версии данных. В приложениях, которым критично обновление, это часто становиться узким местом. У нас в одном из предыдущих проектов, было сразу несколько периодических AJAX-запросов на обновление данных. Хотя для такого случая есть варианты и вызова нескольких обработчиков на стороне сервера одним запросом от клиента.
Читать дальше →
Всего голосов 51: ↑43 и ↓8 +35
Просмотры 6.6K
Комментарии 34

Клон omegle.com: pogovorisomnoi.ru

Я пиарюсь

Поговори со мной.ru


Мы не будем рассказывать о синдроме незнакомца, а просто скажем, что запустили небольшой проект поговори со мной.ру, весьма откровенный клон англоязычного сервиса omegle.com.
Сервис позволяет общаться с одним случайно выбранным посетителем сайта анонимно один на один. И главное! У нас есть печеньки звуковое оповещение о сообщениях :)
Читать дальше →
Всего голосов 68: ↑47 и ↓21 +26
Просмотры 4.5K
Комментарии 113

Tornado Web Server

Python *


Команда friendfeed.com, недавно присоединившаяся к Facebook, выложила в открытый доступ собственный неблокирующий веб-сервер на Python. Из-за своей неблокирующей природы (используется epoll) сервер легко выдерживает тысячи одновременных подключений. У Tornado есть все шансы стать лучшим выбором для реализации технологии Comet средствами языка Python.

Производительность впечатляет:


Документация (на англ.) — www.tornadoweb.org/documentation
Всего голосов 62: ↑59 и ↓3 +56
Просмотры 15K
Комментарии 38

Пишем Comet-чат

Разработка веб-сайтов *
Хочу поделиться своим опытом создания простого Comet-чата. Периодически читал про эту технологию, и сейчас решил попробовать сделать что-либо сам. Получился небольшой чат, интерфейс которого я старался сделать похожим на интерфейс irc-клиента mIRC. Так как подобную вещь пишу первый раз, просьба прокомментировать возможные ошибки в программе и статье и описать более оптимальные пути решения задач. Посмотреть на работающий чат можно здесь: http://94.127.68.84:6884/
Читать дальше →
Всего голосов 42: ↑39 и ↓3 +36
Просмотры 15K
Комментарии 81

WebSockets — полноценный асинхронный веб

Разработка веб-сайтов *
Пару недель назад разработчики Google Chromium опубликовали новость о поддержке технологии WebSocket. В айтишном буржунете новость произвела эффект разорвавшейся бомбы. В тот же день различные очень известные айтишники опробовали новинку и оставили восторженные отзывы в своих блогах. Моментально разработчики самых разных серверов/библиотек/фреймворков (в их числе Apache, EventMachine, Twisted, MochiWeb и т.д.) объявили о том, что поддержка ВебСокетов будет реализована в их продуктах в ближайшее время.
Что же такого интересного сулит нам технология? На мой взгляд, WebSocket — это самое кардинальное расширение протокола HTTP с его появления. Это не финтифлюшки, это сдвиг  парадигмы HTTP. Изначально синхронный протокол, построенный по модели «запрос — ответ», становится полностью асинхронным и симметричным. Теперь уже нет клиента и сервера с фиксированными ролями, а есть два равноправных участника обмена данными. Каждый работает сам по себе, и когда надо отправляет данные другому. Отправил — и пошел дальше, ничего ждать не надо. Вторая сторона ответит, когда захочет — может не сразу, а может и вообще не ответит. Протокол дает полную свободу в обмене данными, вам решать как это использовать.

Я считаю, что веб сокеты придутся ко двору, если вы разрабатываете:
— веб-приложения с интенсивным обменом данными, требовательные к скорости обмена и каналу;
— приложения, следующие стандартам;
— «долгоиграющие» веб-приложения;
— комплексные приложения со множеством различных асинхронных блоков на странице;
— кросс-доменные приложения.

Заинтриговал? Давайте посмотрим подробнее
Всего голосов 222: ↑210 и ↓12 +198
Просмотры 317K
Комментарии 388

Realplexor: производительный Comet-сервер с API для PHP и Javascript (realtime)

Высокая производительность *
Dklab Realplexor — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера.

Хотя идейным вдохновителем Realplexor-а был предыдущий проект, dklab_multiplexor, код Realplexor-а не имеет с ним практически ничего общего. Поэтому я и решил сменить название. Несопоставимы также возможности продуктов (см. ниже), да и размер кода увеличился в 7 раз.

Realtime-направление сейчас довольно активно развивается на Западе, и в нем особенно выделяется продукт Tornado — событийно-ориентированный веб-сервер на языке Python. Правда, Tornado — это не столько Comet-сервер, сколько инструмент, с помощью которого можно запрограммировать «в том числе» и Comet-сервер. Ключевые слова: Comet, Push Server, Long polling, JavaScript, XMLHttpRequest.

Главные преимущества Realplexor-а:
  • простота использования: наличие API для JavaScript, API для PHP (в будущем — и для других языков);
  • простота конфигурирования;
  • широкий функционал (либо отстутствующий, либо недоступный напрямую в аналогах).

Лучше один раз увидеть...


Я сделал отдельную онлайн-песочницу, чтобы продемонстрировать функционал нового Realplexor-а и то, для чего вообще нужны Comet-серверы (кстати, это физически тот же самый демон Realplexor-а, что использует мой новый стартап РуТвит). Песочница реализует что-то типа многоканального чата: зайдя, вы получите как будто бы 2 независимых «браузера», запущенных на разных компьютерах.
  • Верхний «браузер» отображает каналы — в них моментально появляются новые сообщения, как только кто-то их туда отправляет на стороне сервера. Конечно же, эту страницу могут просматривать одновременно сотни тысяч пользователей, и они все будут видеть одно и то же (реализовано с использованием Realplexor JavaScript API). Можно «на лету» добавлять новые каналы (подписка) или скрывать уже имеющиеся (отписка).
  • Нижний браузер содержит формы, позволяющие добавлять сообщение в произвольный канал, указав его имя. Форма AJAX-ом отправляется на сервер, и уже там PHP-скрипт записывает в Realplexor полученный текст через PHP API. (И да, так можно чатиться.)
По умолчанию на странице открыто 3 канала с именами Alpha, Beta и RuTvit. Но, конечно, вы можете закрыть эти каналы и открыть новые. Вот, например, страница с единственным открытым каналом по имени Habrahabr: http://rutvit.ru/realplexor/demo?ids=Habrahabr.



Песочница демонстрирует следующие функции Realplexor-а:
Читать дальше →
Всего голосов 99: ↑92 и ↓7 +85
Просмотры 19K
Комментарии 141

Двунаправленный асинхронный обмен данными в веб-приложениях

Разработка веб-сайтов *
Одной из основных черт современного веба эксперты называют RIA, что часто расшифровывается как тренд, когда веб-приложения по функциональности приближены к настольным приложениям. Тем не менее, это приближение весьма условно. Подавляющее большинство «обогащеных» веб-приложений по-прежнему построены по модели «запрос-ответ». Т.е. события на стороне клиента могут быть отражены на стороне сервера, никак не наоборот. Для того чтобы реализовать такую банальную вещь как чат приходиться прибегать к изощренным уловкам. Спасибо Алексу Расселу (Alex Russell) из Dojo, у нас есть даже имя для подобной техники – Comet.
Читать дальше →
Всего голосов 68: ↑64 и ↓4 +60
Просмотры 19K
Комментарии 52

Comet для ASP.NET своими руками

.NET *
Не так давно в рамках разработки крупного ASP.NET проекта возникла следующая подзадача: реализовать визуальное отображение табличных данных, обновляющихся в режиме real-time. Схема обновления довольно проста, а именно: на сервер посредством QueryString присылаются данные, которые должны как можно быстрее заменить собой устаревшие данные на странице, причем без необходимости страницу эту рефрешить. Первым решением, которое сразу же пришло мне в голову, было использовать ставшую уже общепринятой технику AJAX-запросов по таймеру, скажем, каждые 5 секунд. Однако сразу же выявились очевидные недостатки применения такого подхода: во-первых, довольно внушительное число потенциальных клиентов, дергающих сервер каждые 5 секунд с созданием каждый раз нового соединения, а во-вторых, это все-таки довольно грубая эмуляция real-time'а, ведь данные на сервер гипотетически могут приходить даже по несоколько раз в секунду (а могут не приходить и по несколько минут, и это уже больше относится к «во-первых»).

Идея решения пришла довольно неожиданно от коллеги по работе, поделившегося линком на статью на Хабре, описывающую реализацию технологии Comet на Perl в целях создания веб-чата. "Comet — это то что нужно!", — подумали мы, и я начал разбираться, как же эту штуку можно прикрутить к ASP.NET. О чем, собственно, и пойдет речь под катом.

Читать дальше →
Всего голосов 63: ↑50 и ↓13 +37
Просмотры 10K
Комментарии 45

Неофициальная трансляция ACM ICPC 2010 — как это было

Спортивное программирование *
Пост по мотивам прошедшего в пятницу финала ACM ICPC 2010, о том, как в буквальном смысле слова «на коленке» поднять зеркало умирающей под нагрузкой странички, прикрутить к нему чат с ее обсуждением, и не загнуться от нагрузки самому :)

Пост будет интересен скорее веб-программистам, нежели олимпиадникам.

Немного статистики, конфигов nginx, полезные трюки, а также ряд граблей, которые должны быть прекрасно известны людям с опытом, но на которые многие все равно часто наступают…

Читать дальше →
Всего голосов 84: ↑72 и ↓12 +60
Просмотры 854
Комментарии 15

Веб-Преферанс на Python

Я пиарюсь
Не первое десятилетие продолжается спор между архитекторами настольных приложений на предмет, какой же подход, statefull или stateless, более предпочтителен, и в каких случаях.
Сейчас мы наблюдаем определенный тренд сдачи позиций апологетами statefull. Не в последнюю очередь в этом виноват даже не столько web, сколько банальный HTTP, вполне заслуженно занявший нишу «универсального протокола для всего». Причем возможность передачи Cookie весьма слабо влияет на его насквозь stateless природу.

Но что HTTP может нам предложить, в случае необходимости создания интерактивного приложения на вебе? Для того чтобы достичь «реактивности» оффлайнового statefull приложения, классического варианта с постоянным опросом состояния сервера короткими AJAX запросами по таймеру явно недостаточно. HTML5 несет нам технологию WebSockets, призванную решить эту проблему. Но ведь нужно чтобы работало «здесь и сейчас» на всех браузерах выпущенных в текущем тысячелетии.

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

Итак, знакомьтесь. Клуб интеллектуальных игр «Трельяж»
trellis-club.com

Трельяж
Читать дальше →
Всего голосов 85: ↑83 и ↓2 +81
Просмотры 2.1K
Комментарии 68

«Прямой эфир» для общения c посетителями вашего сайта

Разработка веб-сайтов *
Недавно я анонсировал Realplexor — habrahabr.ru/blogs/hi/79189 — однопоточный событийно-ориентированный Comet-сервер, написанный на Perl и имеющий готовое API для JavaScript и PHP. С его помощью можно создавать сайты, пользователи на которых взаимодействуют друг с другом в реальном времени, не перезагружая страницу и без значительного расхода трафика.

Сегодня я хочу представить и, как водится, немного «покопаться в моторе» первой версии продукта Прямой эфир, работающей на платформе РуТвит с применением Realplexor-а. Это виджет, который вебмастер может за 1 минуту установить на свой сайт, чтобы устроить микроблоггинг-общение с аудиторией в режиме реального времени.

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

Для начала общения посетителю сайта нет необходимости проходить процедуру регистрации. Авторизация производится по OpenID. Т.е. ему достаточно иметь аккаунт на Яндексе, Google, LiveJournal и т.д., чтобы начать писать сообщения; не требуется даже e-mail.
Читать, как это устроено внутри
Всего голосов 60: ↑45 и ↓15 +30
Просмотры 4.9K
Комментарии 45

Реализация Polling на Google App Engine

Я пиарюсь
Хочу пропиарить свою небольшую игрушку, которую я написал на Python, которая использует App Engine в качестве платформы, и в которой я реализовал comet через обычный polling.
image
Геймплей — казуальная разновидность risk-игр. Все банально, захватите мир и станете победителем. Итак, знакомьтесь: gumwars.com.
Подкатом — подробности реализации и расчет стоимости поддержки на App Engine.
Читать дальше →
Всего голосов 14: ↑10 и ↓4 +6
Просмотры 604
Комментарии 10

Веб-Преферанс. Месяц спустя

Я пиарюсь
Месяц назад, мы уже писали про старт нового проекта клуба интеллектуальных игр «Трельяж». Сервис успешно выдержал хабраэффект, благодаря которому пришла тысяча игроков, и выдвинула множество предложений по улучшению и развитию проекта. Все они были услышаны, и многие из них реализованы.
image

За последний месяц на сервере было сделано: 22 обновления, зарегистрировалось 1043 игрока, сыграно более 500 игр, закрыто более 100 тикетов в багтрекере.

Читать дальше →
Всего голосов 57: ↑49 и ↓8 +41
Просмотры 851
Комментарии 59

Создание Comet-приложения с использованием Ajax Push Engine

Разработка веб-сайтов *
Из песочницы

Введение


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

Comet


Модель Comet позволяет создавать асинхронные Web-приложения, реагирующие на данные, которые приходят с сервера в реальном времени. В данном случае для ее реализации используется технология Long-polling на фреймворке Ajax Push Engine (APE). Суть технологии состоит в том, что браузер подключается к серверу и ждет до тех пор, пока не появятся данные. Как только они появляются, клиент их принимает и подключается снова. Если никаких данных не поступает, соединение разрывается после тайм-аута и снова устанавливается.

APE


APE представляет из себя программный комплекс с открытым исходным кодом, предназначенный для Ajax Push. Система включает в себя веб-сервер и Javascript Framework. APE позволяет передавать в браузер любые данные в реальном времени без каких-либо дополнительных приложений на стороне клиента. По заявлениям создателей свободно выдерживает нагрузку в 100000 соединений.

Итак, приступим
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 5.4K
Комментарии 6

Javascript мастер-классы от Ильи Кантора в Украине

Блог компании Ciklum
В прошлом году у нас проводил мастер-классы Илья Кантор (http://javascript.ru), профессионал в области JavaScript.

Темами его мастер-классов были — профессиональное JavaScript-программирование, AJAX/COMET, jQuery. С тех пор мы получили много вопросов о том, планируются ли такие мастер-классы еще и когда.

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

Мастер-классы пройдут в Киеве 17-18 мая, в нашем чудесном зале на 20-м этаже.

Кроме Киева, они будут в этом году в Харькове, Львове и Херсоне.
Более подробная информация о мастер-классах — на сайте ведущего http://javascript.ru/mk.

Читать дальше →
Всего голосов 25: ↑17 и ↓8 +9
Просмотры 8K
Комментарии 7

Моделируем полёт PHP на крыльях Erlang

PHP *Erlang/OTP *
В данной статье изложены размышления и фантазии на тему «как можно было бы скрестить Erlang и PHP, чтобы случилось вселенское счастье», а не описание готовой технологии или продукта. Впрочем, мы намерены это реализовать, скорее всего, в форме open-source проекта, если, конечно, уважаемая хабра-аудитория не отговорит :) Собственно, одна из главных задач этой статьи — понять, насколько идея интересна и потенциально полезна широкому PHP-сообществу. Кстати, некоторые из проблем, обсуждаемых в статье, справедливы и для других популярных скриптовых языков (тут я подразумеваю Ruby и Python), так что предлагаемое решение, возможно, будет актуально и для них.
Интересно, нафига козе баян?
Всего голосов 95: ↑86 и ↓9 +77
Просмотры 8.5K
Комментарии 166

Faye как способ не задолбать свой сервер

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

Суть проблемы: веб-приложение для службы такси, диспетчера работают удаленно (из дома, из офиса и т.п.). Перед каждым — список заказов. Состояние заказов может измениться в любой момент — водитель взял заказ, водитель отказался, клиент отказался, другой диспетчер завел новый заказ. Очень важно чтобы диспетчер видел картину практически в реальном времени, поскольку в час пик звонки идут один за другим без перерыва. Вначале это было сделано через вызывающийся периодически (setTimeout) AJAX запрос, который получив с сервера отрендеренный список текущих запросов заменял содержимое div'а. Для 1-2 разработчиков, и пары тестеров это казалось нормальной идеей — 1-2 запроса в секунду не сильно напрягали. По результатам компромисса между актуальностью и снижением нагрузки на сервер определились что будем дергать сервер раз в 3 секунды.
Читать дальше →
Всего голосов 45: ↑42 и ↓3 +39
Просмотры 11K
Комментарии 25