Pull to refresh
  • by relevance
  • by date
  • by rating

Мощная крошка.

Gadgets
Translation
Tornado M10 Digital Media CenterЕсли вы собираетесь приобрести центр развлечений для вашей гостиной, обратите внимание на SysMaster Tornado M10 Digital Media Center. Это устройство обладает массой функций при размерах всего в 15 сантиметров. Спецификация этой крошки полна акронимов, например: IPTV, VOD, VoIP SIP, PVR, а так же позволяет вам пользоваться электронной и голосовой почтой, чатами, видеокамерой для конференций, сетевым видео и аудио вещанием, возможностью автоматически получать свежие новости и прогноз погоды, многими другими возможностями.
Подробнее
Total votes 12: ↑8 and ↓4 +4
Views 398
Comments 10

Async Hearts

Python *
Некоторое время назад случилось несколько событий, изменивших привычный вид ландшафта веб-разработки на Питоне: Facebook приобрела сервис Friendfeed и сразу же открыла исходный код технологии проекта — http-сервер и микрофреймворк Tornado. Одновременно разработчик Friendfeed опубликовал в своем блоге заметку, в которой привел причины, по которым было решено с нуля разрабатывать собственный асинхронный веб-сервер.

Статья — экскурсия в самое сердце этого и конкурирующего (Twisted.web) проектов, их циклы асинхронной обработки поступающих данных.

Читать дальше →
Total votes 52: ↑51 and ↓1 +50
Views 9.6K
Comments 29

Everychat.ru — быстрый чат на вашем сайте

Self Promo
Everychat.ruПриветствую тебя, хабрасообщество! Сегодня я хочу рассказать об одном моем проекте, которым занимался в последнее время, что называется just for fun (and experience). При его разработке я использовал несколько новых технологий, о чем и хочу рассказать в данном топике ;)

Читать дальше →
Total votes 49: ↑27 and ↓22 +5
Views 2K
Comments 29

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

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

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

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

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

Трельяж
Читать дальше →
Total votes 85: ↑83 and ↓2 +81
Views 2K
Comments 68

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

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

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

Читать дальше →
Total votes 57: ↑49 and ↓8 +41
Views 838
Comments 59

Охотники за торнадо

Lenovo corporate blog
Наверняка многие из вас смотрели фильм «Торнадо» (Twister) 1996 года с замечательной Хелен Хант в главной роли. Этот фильм в свое время поразил меня как занятием «ловцов торнадо», совершенно далеким от моей обычной офисно-планктонной жизни, так и прекраснейшими видами, когда на ярко освещенный солнцем пейзаж надвигается смертельно-опасная тьма. Кстати, «Торнадо» стал самым первым в мире голливудским фильмом, выпущенным на DVD-диске. Помните этот формат конца 20-го века? Впрочем, существуют и настоящие охотники за смерчами. Может быть, их работа не так драматична, как у героев фильма, и им не приходится привязывать себя цепями к водопроводным трубам, чтобы не унесло ветром. Хотя играть в догонялки с опасным вихрем наверняка приходится.

В прошлом году ученые, работающие над масштабным исследовательским проектом Vortex2, получили в свое распоряжение больше 50 ноутбуков Lenovo, 8 настольных ПК ThinkCentre, мониторы ThinkVision и множество дополнительных устройств – флешки и внешние жесткие диски с функцией автоматического шифрования данных. Все это используется в самых жестких условиях: мощные мобильные компьютеры установлены в грузовиках, являющихся базой для мощных допплеровских радаров, а на легких ThinkPad X-серии исследователи работают «в поле», оценивая причиненный ущерб. А недавно исследователи получили на пробу новые (еще не представленные официально) моноблоки ThinkCentre M90z с сенсорными экранами. Необычны как сами ноутбуки, используемые в проекте Vortex2, так и их применение, и об этом я расскажу подробнее.

И покажу!
Total votes 35: ↑31 and ↓4 +27
Views 13K
Comments 40

Вышла версия 1.0 фреймворка Tornado

Python *
image

Популярный проект, по созданию неблокирующего web-сервера и «сопутствующего» фреймворка на языке Python, объявил о релизе версии 1.0.

Скачать новую версию можно тут: github.com/downloads/facebook/tornado/tornado-1.0.tar.gz

По сравнению с последним релизом версии 0.2, было добавлено множество новшеств,

— возможность запуска WSGI-приложений, под управлением сервера Tornado (например приложения Django и CherryPy)
— улучшенная производительность в MacOS X (с использованием kqueue) и экспериментальная поддержка win32
— переписан класс AsyncHTTPClient
— поддержка .mo файлов в модуле локализации
— поддержка пре-форкинга для запуска нескольких процессов Tornado
— поддержка SSL и gzip в HTTP-сервере

И многое другое.
Total votes 40: ↑36 and ↓4 +32
Views 1.4K
Comments 10

Многопоточное приложение под Tornado

Server optimization *


В документации к неблокирующему вебсерверу Торнадо красиво расписано как здорово он справляется с нагрузкой, и вообще является венцом творения человечества в области неблокирующих серверов. Отчасти это верно. Но при построении сложных приложений за рамками «еще одного чата» выявляется много неочевидных и тонких моментов, о которых желательно знать до вояжа по граблям. Под «катом» разработчики клуба интелектуальных игр Трельяж готовы поделиться своими мыслями о подводных камнях.
Читать дальше →
Total votes 70: ↑65.5 and ↓4.5 +61
Views 37K
Comments 28

Асинхронный удар

Python *
Sandbox
imageКак уже наверное кто-то догадался, в этой статье речь пойдет о сокетах, и фреймфорках облегчающих работу с ними. Недавно я начал работу надо новым проектом, онлайн игрой. Для таких проектов довольно критично время ответа от сервера, если это конечно не пошаговая стратегия, хотя и в этом случае пожалуй тоже. Так как же этого добиться при суровой ограниченности ресурсов?
  • Облегчить сервер от ненужной работы, например отрисовки самой странички, используя вместо этого javascript шаблонизатор.
  • Использовать хороший front-end, например nginx, учитывая пункт первый, динамики у нас нет, и это нам вполне подходит.
  • Распределяя нагрузку на frontend, например используя Tornado.

Остался самый главный вопрос, что будет происходить когда пользователь совершает какое-либо действие? Обычные ajax запросы не подойдут, вполне понятно почему. Поэтому нам на помощь приходят сокеты.
Читать дальше →
Total votes 52: ↑47 and ↓5 +42
Views 16K
Comments 59

Вышел Tornado Web Server 2.0 RC

Python *

Основные изменения:


  • Автоматически добавляются escape-символы при выводе в шаблоны
  • Стандартная реализация AsyncHTTPClient теперь simple_httpclient.
  • Поддержка Python 3.2.


Минорные изменения:


  • Новые теги шаблонизатора:
    — {% autoescape ...%} управление добавлением escape — символов
    — {% raw… %} убрать escape-символы
    — {% module… %} для вызова UIModules
  • {% module Template(path, **kwargs) %} теперь может быть использовано для вызова другого шаблона с независимым пространством имен
  • Все вызовы IOStream callbacks теперь осуществляются напрямую в IOLoop через add_callback.
  • HTTPServer теперь поддерживает IPv6. Для отключения нужно передать параметр family=socket.AF_INET в HTTPServer.bind().
  • HTTPClient теперь поддерживает IPv6, если у запроса установлен параметр allow_ipv6=True
  • RequestHandlers теперь может использовать кодировки, отличные от utf-8 для параметра запроса путем переопределения decode_argument()
  • Улучшена производительность, особенно для приложений, использующих много IOLoop timeouts
  • HTTP OPTIONS метод теперь не требует XSRF token.
  • Вывод в JSON (RequestHandler.write(dict)) теперь устанавливает Content-Type application/json
  • вычисление Etag теперь может быть настроено или отключено путем переопределения RequestHandler.compute_etag
  • USE_SIMPLE_HTTPCLIENT больше не поддерживается, вместо него используйте AsyncHTTPClient.configure.

Берем на GitHub
Total votes 26: ↑20 and ↓6 +14
Views 1.7K
Comments 16

HowTo: Как подружить Django с WebSocket (socket.io, sockjs)

Python *Django *
Version: 0.2

Возникла у меня потребность атомарного обновления в реальном времени страницы у некоторого количества пользователей в зависимости от действий других пользователей (не гербалайф чат). Понятное дело, можно всё выкинуть в помойку и, по-молодецки, запилить с нуля на tornado/twisted.web, но явно не самый продуктивный путь (да и я не мо́лодец ни разу) когда всё что надо — уже работает на Django и нужно всего-то чуть-чуть… Естественным образом, по сути своей, сюда просится WebSocket. И всё бы ничего но Django WSGI приложение, а этот стандарт не предполагает таких выкрутасов даже близко (пока). Гугления интернетов навели, в очередной раз, на труд известного python-гуру kmike (это без сарказма, т.к. его работы выручали меня лично уже не однократно, за что нижайший ему поклон!).

Итак если вы хотите скрестить ваш Django проект с websocket посредством js библиотеки socket.io или sockjs — вилькоммен!
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Views 29K
Comments 22

Inline-callback в tornado server для asyncmongo

Website development *
Пару недель назад разработчики tornado добавили нативный модуль по созданию inline callback (аналог inlineCallbacks в Twisted, Seq в Node.js, Fibers в Ruby).
Ниже примеры использования и примеры с участием asyncmongo (асинхронным драйвером для mongoDB)
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Views 3.7K
Comments 5

Исследование производительности сервера SockJS

Python *
Доброе время суток!

Так уж сложилось, что я занимаюсь всякими разнообразными push технологиями с использованием Tornado. Чуть ранее описывал Tornadio2, серверную реализацию протокола socket.io поверх Tornado.

Теперь хочу представить похожий проект — sockjs-tornado.

Для тех кому не очень интересно, есть другая полезная информация: сравнительное нагрузочное тестирование PyPy 1.7 против CPython 2.6.6, sockjs-node и socket.io (оба на node.js 0.6.5). Все под катом :-)
Читать дальше →
Total votes 57: ↑56 and ↓1 +55
Views 13K
Comments 13

Всё самое модное

Website development *
Начитавшись в интернете про новые, простые, быстрые и масштабируемые технологии, захотелось их всех попробовать. Вдруг они окажутся лучше уже привычной мне связки postgresql + django + json-rpc.

Идея проекта


Так как никакой идеи не было, но был свободный домен uglyrater.org — пришлось делать рейтинг.
Суть проста: есть список пользователей, которым можно расставить + и -. Новые пользователи в рейтинг добавляются по адресу страницы ВКонтакте.

Осторожно! В статье много субъективных оценок , основанных на личном опыте!
Total votes 106: ↑79 and ↓27 +52
Views 5.3K
Comments 33

Старый добрый чат

Self Promo
Когда то давно был расцвет чатов, почти каждый город/провайдер имел свой чат, времена прошли а воспоминания остались.
Изучая Tornado(неблокируемый веб-сервер/фреймворк) решил отдать должное прошлому и написал чат для своей малой родины, провинциального городка.
Приглашаю всех желающих испытать ностальгию и заодно помочь мне его протестировать.

Войти туда можно по гостевому логину, через вконтакте или зарегестрировашись.
На данный момент не работает возможность заполнять профили и нет защиты от флуда;)

Когда закончу разработку выложу в open-source, может кому и пригодится.
russa-chat.ru

График нагрузки можно наблюдать тут russa-chat.ru/stats

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

В чате несколько раз спрашивали исходники, кому надо пишите в личку.
Total votes 44: ↑23 and ↓21 +2
Views 2.1K
Comments 21

Осовремененный Unix Way или pipe в браузер

Website development *Open source *
Наверное, каждый, кому когда-нибудь приходилось следить одновременно за большим количеством окошек с логами, подумывал о переносе некоторых из них на экран планшета или телефона.
А, находясь далеко от компьютера, следить за выхлопом недавно запущенного большого и страшного сервиса?
Конечно, можно поставить ssh клиент на телефон, но это не особо удобно.
Поэтому я решил сделать мини-сервис упрощающий «удалённый» просмотр логов.

Читать дальше →
Total votes 67: ↑63 and ↓4 +59
Views 3.3K
Comments 35

Самая короткая запись асинхронных вызовов в tornado или патчим байткод в декораторе

Python *
Сложный асинхронный обработчик в tornado иногда расползается на десятки callback функций, из-за чего становится трудно воспринимать и модифицировать код. Поэтому существует модуль tornado.gen, позволяющий писать обработчик как генератор. Но много yield gen.Task(...) тоже выглядит не очень. Поэтому в порыве бреда я написал упрощающий запись декоратор:
До После
@asynchronous
@gen.engine
def get(self):
    result, status = yield gen.Task(
        db.users.find_one, {
            '_id': ObjectId(user_id),
        },
    )
@asynchronous
@gen.engine
@shortgen
def get(self):
    result, status << db.users.find_one_e({
        '_id': ObjectId(user_id),
        },
    )

Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Views 5.9K
Comments 18

Самая короткая запись асинхронных вызовов в tornado v2, или патчим AST

Abnormal programming *Python *Compilers *
Меня очень заинтересовала статья Самая короткая запись асинхронных вызовов в tornado или патчим байткод в декораторе, не столько с практической точки зрения, сколько с точки зрения реализации.
Всё-таки модификация байткода в рантайме это слишком опасная и ненадежная операция. И уж наверняка не поддерживаемая альтернативными интерпретаторами Python.

Попробуем исправить этот недостаток способом, который для этого предназначен куда больше и который применяется для схожих целей во многих других языках (я точно встречал в Lisp или Erlang). Этот способ — модификация Абстрактного синтаксического дерева (AST) программы.
Читать дальше →
Total votes 33: ↑32 and ↓1 +31
Views 4.3K
Comments 4

Background Dating — в поисках людей, с которыми интересно говорить

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

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

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

А вот, кстати, и описание в «рекламном» стиле:

Вы давно хотели найти себе девушку, которая умеет программировать на Brainfuck? Или вам важно, чтобы она была сторонницей адаптивной и семантической вёрстки? А может, вы хотите познакомиться с той, кто может легко рассказать об отличиях микроядра от монолитного, но при этом ещё является танцовщицей?

Теперь у вас появилась такая возможность — если, конечно, она уже зарегистрировалась на Background Dating. :)
Читать дальше →
Total votes 83: ↑73 and ↓10 +63
Views 16K
Comments 116