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

Многопользовательский онлайн-шутер на WebGL и asyncio, часть вторая

PythonJavaScriptNoSQLHTMLWebGL

В этом материале постарался описать создание браузерного 3D-шутера, начиная от импорта симпатичных моделей танков на сцену и заканчивая синхронизацией игроков и ботов между собой с помощью websocket и asyncio и балансировкой их по комнатам.

Введение
1. Структура игры
2. Импорт моделей и blender
3. Подгрузка моделей в игре с babylon.js и сами модели
4. Передвижения, миникарта и звуки игры в babylon.js
5. Вебсокеты и синхронизация игры
6. Игроки и их координация
7. Балансировка игроков по комнатам и объектный питон
8. Asyncio и генерация поведения бота
9. Nginx и проксирование сокетов
10. Асинхронное кэширование через memcache
11. Послесловие и RoadMap

Всех кому интересна тема асинхронных приложений в Python3, WebGL и просто игр, прошу под кат.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Просмотры22K
Комментарии 5

Асинхронный Python 3.5 и Mongodb

PythonNoSQLMongoDB
Перевод
Tutorial

Это достаточно вольный перевод статьи об основных новшествах асинхронного драйвера для mongodb используемого в tornado. Основной мотив, который послужил для написания этого перевода — новшества, появившиеся в этой версии, такие как поддержка asyncio, async, await и Python 3.5. Сама статья не сколько перечисление новшеств, сколько лаконичные примеры асинхронной работы с MongoDB.


Введение
asyncio
aggregate
Python 3.5
async and await

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Просмотры30K
Комментарии 22

Транспорт-бот Jabber конференций для Telegram

МессенджерыOpen sourcePython
Из песочницы


Доброго времени суток.

В один прекрасный день, после значительного перерыва, судьба вновь столкнула меня с jabber-конференциями. Правда, среди знакомых jabber уже никто не использует, 2007 год канул в лету, а основным средством общения стал Telegram. Поддержка XMPP на мобильных устройствах оставляла желать лучшего — клиенты на Android хороши каждый в чём-то одном, с iOS и WP всё мягко скажем, не очень. И особенности протокола тоже сказываются на автономности. Поэтому возникла мысль: а не сделать ли бота, которой будет транслировать сообщения из конференций в чат Telegram?

В качестве инструментов использовались:
  • Python 3.5
  • aiohttp для API Telegram
  • slixmpp для xmpp
  • gunicorn как wsgi сервер
  • nginx как фронтенд и прокси для gunicorn
  • VS Code в качестве IDE

Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Просмотры19K
Комментарии 13

Telegram-бот, webhook и 50 строк кода

PythonПрограммирование
Tutorial
Recovery mode
Как, опять? Ещё один туториал, пережёвывающий официальную документацию от Telegram, подумали вы? Да, но нет! Это скорее рассуждения на тему того, как построить функциональный бот-сервис используя Python3.5+, asyncio и aiohttp. Тем интереснее, что заголовок на самом деле лукавит…
Читать дальше →
Всего голосов 31: ↑21 и ↓10+11
Просмотры126K
Комментарии 19

Получаем фотографии NASA с Марса с помощью aiohttp

Python
Перевод
Я большой фанат книги «Марсианин» Энди Вейера. Читая её, мне было интересно, что же Марк Уотни чувствовал, гуляя по красной планете. Недавно наткнулся на пост на Twillo, в котором упоминалось, что у NASA есть публичный API для доступа к фотографиям с марсоходов. Так что я решил написать собственное приложение для просмотра изображений непосредственно в браузере.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Просмотры10K
Комментарии 0

Tornado vs Aiohttp: путешествие в дебри асинхронных фреймворков

Блог компании АвитоВысокая производительностьРазработка веб-сайтовPythonМикросервисы
Привет! Я Дима, и я довольно давно и плотно сижу на Python. Сегодня хочу показать вам отличия двух асинхронных фреймворков — Tornado и Aiohttp. Расскажу историю выбора между фреймворками в нашем проекте, чем отличаются корутины в Tornado и в AsyncIO, покажу бенчмарки и дам немного полезных советов, как забраться в дебри фреймворков и успешно оттуда выбраться.


Читать дальше →
Всего голосов 58: ↑57 и ↓1+56
Просмотры21K
Комментарии 16

Самые быстрые Python веб-фреймворки в 2019

PythonПрограммирование
Перевод


В 2018 году Python укрепил свои позиции популярности среди программистов и вошел в Top 3 самых популярных языков на github. Все больше и больше людей переходит на светлую сторону…то есть Python. Появилось еще большее количество разработчиков, которые интересуются данным языком и ведут разработку своих проектов с его помощью. Одним из популярных направлений для Python является web-разработка. Хочется, чтобы не только процесс разработки был удобным и быстрым, но и сами проекты могли похвастаться скоростью и стабильностью работы.

Читать дальше →
Всего голосов 35: ↑28 и ↓7+21
Просмотры45K
Комментарии 30

Мелкая питонячая радость #2: Starlette

Python


Туннельное зрение


Так уж сложилось, что на Python пишут много веб-приложений. Эту нишу Python разработки почти полностью поделили между собой два здоровых игрока — Django и Flask. Поэтому большой процент программистов, пишущих на Python, заточен на работу с этими двумя фреймворками.


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

Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Просмотры19K
Комментарии 14

RealWorld: aiohttp, Tortoise ORM

Разработка веб-сайтовPython
Tutorial

На Real World отсутствует пример для aiohttp, и я решил его сделать. Опытным разработчикам, похоже, некогда этим заниматься, а начинающим в aiohttp непонятно как делать правильно. Я начал его делать с помощью Tortoise ORM. Пока начал делать аутентификацию.


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

Читать дальше →
Всего голосов 15: ↑11 и ↓4+7
Просмотры5.7K
Комментарии 2

Практическое руководство по разработке бэкенд-сервиса на Python

Блог компании ЯндексPythonПрограммированиеАнализ и проектирование системТестирование веб-сервисов
Tutorial
Привет, меня зовут Александр Васин, я бэкенд-разработчик в Едадиле. Идея этого материала началась с того, что я хотел разобрать вступительное задание (Я.Диск) в Школу бэкенд-разработки Яндекса. Я начал описывать все тонкости выбора тех или иных технологий, методику тестирования… Получался совсем не разбор, а очень подробный гайд по тому, как писать бэкенды на Python. От первоначальной идеи остались только требования к сервису, на примере которых удобно разбирать инструменты и технологии. В итоге я очнулся на сотне тысяч символов. Ровно столько потребовалось, чтобы рассмотреть всё в мельчайших подробностях. Итак, программа на следующие 100 килобайт: как строить бэкенд сервиса, начиная от выбора инструментов и заканчивая деплоем.



TL;DR: Вот репка на GitHub с приложением, а кто любит (настоящие) лонгриды — прошу под кат.
Читать дальше →
Всего голосов 70: ↑68 и ↓2+66
Просмотры83K
Комментарии 50

Web-сервер машинного обучения «ВКФ-решатель»

MySQLPythonМашинное обучение
Сейчас в глазах обычной публики машинное обучение прочно ассоциируется с различными вариантами обучения нейронных сетей. Если первоначально это были полносвязные сети, потом заместившиеся сверточными и рекуррентными, то теперь это стало совсем экзотическими вариантами типа GAN и LTSM-сетей. Кроме все больших объемов выборок, требуемых для их обучения, они еще страдают невозможностью объяснить, почему было принято то или иное решение. Но существуют и структурные подходы к машинному обучению, программная реализация одного из которых описана в настоящей статье.


Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Просмотры3.3K
Комментарии 10

Web server for Machine Learning 'VKF-solver'

MySQLPythonМашинное обучение
Nowadays most people identify Machine Learning with training of various kinds of neural networks. At the beginning there were fully connected networks, then convolutional and recurrent networks replace them, now there exist a quite exotic variants of networks such that GAN and LTSM networks.

Their training requires constantly increasing volume of samples, and they also do not be able to explain why a particular decision was made. Structural approaches to Machine Learning avoiding these drawbacks exist, the software implementation of one of which is described in the article. This is an English translation of original post by the author.


Read more →
Всего голосов 1: ↑1 и ↓0+1
Просмотры1.1K
Комментарии 0

День и ночь в интернете, или открытое письмо веб-разработчикам

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

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

Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Просмотры3.8K
Комментарии 15

Aiohttp + Dependency Injector — руководство по применению dependency injection

PythonПроектирование и рефакторинг
Tutorial
Привет,

Я создатель Dependency Injector. Это dependency injection фреймворк для Python.

Продолжаю серию руководств по применению Dependency Injector для построения приложений.

В этом руководстве хочу показать как применять Dependency Injector для разработки aiohttp приложений.

Руководство состоит из таких частей:
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Просмотры3.7K
Комментарии 0

Фоновые задачи на Faust, Часть I: Введение

Высокая производительностьPythonРаспределённые системыФинансы в IT

https://habrastorage.org/webt/wo/6b/ui/wo6buieqgfwzr4y5tczce4js0rc.png


  1. Часть I: Введение
  2. Часть II: Агенты и Команды

Как я дошёл до жизни такой?


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

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Просмотры2.3K
Комментарии 2

Фоновые задачи на Faust, Часть II: Агенты и Команды

Высокая производительностьPythonРаспределённые системыФинансы в IT

Часть II. Узнаем, как писать агентов, обрабатывающих стрим событий из kafka, а так же как написать команды (обёртка на click).

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Просмотры1.6K
Комментарии 2

О первоклашках, дистанционке и асинхронном программировании

Разработка веб-сайтовPythonJavaScriptВидеоконференцсвязь
image

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

Пока я увлеченно занимался веб разработкой, где-то на фоне жена периодически жаловалась на проблемы выбора школы для ребёнка. И тут (вдруг) ребёнок подрос и школьный вопрос встал ребром. Ладно, значит, время пришло. Давайте вместе разберёмся, что же все-таки не так с системой образования в бывшей 1/6 части суши, и что мы с вами можем с этим сделать?
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Просмотры4.5K
Комментарии 23

Ещё раз о производительности фреймворков Python для веб разработки

Высокая производительностьРазработка веб-сайтовPythonDjangoFlask
Недавно мне пришлось начинать проект нового веб сервиса, и я решил протестировать максимальную нагрузочную способность Django, а заодно сравнить её с Flask’ом и AIOHTTP. Результат показался мне неожиданным, поэтому я «просто оставлю» его тут.
Читать дальше →
Всего голосов 18: ↑12 и ↓6+6
Просмотры6.8K
Комментарии 15
1