Рубрика «django» - 19

При разработке большинства сервисов возникает потребность во внутреннем биллинге для аккаунтов сервиса. Так и в нашем сервисе возникла такая задача. Готовые пакеты для её решения мы так и не смогли найти, в итоге пришлось разрабатывать систему биллинга с нуля.
В статье хочу рассказать о нашем опыте и подводных камнях, с которыми пришлось столкнуться во время разработки.

Задачи

Задачи, которые нам предстояло решить были типичны для любой системы денежного учета: прием платежей, лог транзакций, оплата и повторяющиеся платежи (подписка).Читать полностью »

Jelastic — многоязыковая платформа как сервис. Сначала была добавлена поддержка Java, затем PHP и Ruby, но на этом разработчики не остановились. Месяц за месяцем вытачивалась новая для Jelastic платформа — Python. В этой статье будет рассказано, как развернуть Django CMS на Infobox Jelastic.

В конце статьи информация о том, как получить 300 рублей на счет для экспериментов с Infobox Jelastic.

Python на облачном хостинге Infobox Jelastic: запускаем Django CMS

ЧаВо по Python в Jelastic

В Jelastic поддерживается веб-сервер Apache для хостинга приложений Python. Реализована поддержка Apache + mod_wsgi.
Вы можете воспользоваться одной из 3х версий Python:

  • 2.7
  • 3.3
  • 3.4

Все версии предустановлены в контейнеры Python. Пользователь может выбрать необходимую версию при создании окружения и изменить, при необходимости, в процессе работы.
Читать полностью »

Как перестать беспокоиться и создать командуВ самом конце прошло года мне предложили принять участие в создании очень интересного проекта, на стыке видео и социальности. Из требований было — “надо” и минимальные вводные данные. Конечно же я сразу согласился, ведь это же очень интересно, участвовать в чём-то амбициозном, особенно когда ты сам можешь повлиять на то, чем это в итоге станет.

Вспомнив теорию по проектам и применив её к нашей реальности, мы с моим руководителем выработали следующие этапы:

  1. Сбор и придумывание функционала
  2. Создание архитектуры
  3. Поиск команды
  4. Создание UX
  5. Создание дизайна
  6. Разработка
  7. Внедрение и запуск

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

Итак, есть архитектура, есть новая команда, но нет UX. Тупик. Что же делать?
Естественно сделать ещё один проект!

Чтобы ресурсы не простаивали, и чтобы новая команда сработалась, мы решили сделать ещё один проект с близким функционалом — ВсеВидео.ру.
Читать полностью »

Приглашаем на Moscow Django Meetup 31 июля
Если вы ещё не уехали в отпуск (или уже вернулись), то хотим пригласить вас 31 июля на очередной, уже 21-й по счёту, Moscow Django Meetup. Как обычно, формат встречи подразумевает небольшую программу выступлений. Всего будет два доклада:

  1. Использование сервис-ориентированной архитектуры (SOA) для построения сложных веб проектов.
  2. О вреде априорныхъ формъ познанiя въ примененiи къ содержанiю веб-страниц на прiмерахъ Django и Яндекс.Метрики.

Читать полностью »

Проблема и решение

Я думаю многие знают что такое Freedom. Для тех кто не знает — это приложение под Android, позволяющее делать внутриигровые покупки в других приложениях без траты денег.

Описание:
Вам надоели предложения в играх и программах что-то купить(расширения, монетки и т.п.)? Покупайте их бесплатно с помощью Freedom!
Пользоваться очень просто: устанавливаете, запускаете (первый запуск может занять какое-то время — до нескольких минут), тапаете по приложению — оно запускается. После этого оно возможно пройдёт проверку лицензии, а при покупке из приложения Вы сможете расплачиваться фэйковой карточкой.

Ссылка на статью автора: habrahabr.ru/post/163547/

Я до определенной поры игнорировал этот прискорбный факт, тем более что я в какой-то степени согласен с автором, что те кто пользуются этим софтом и так врядли бы купили что-то у меня в игре. Но новый проект над которым мы работаем должен стать мультиплеерным. А это значит, что читеры получат реальное преимущество перед обычными игроками, что меня не особо радует.
Покурив вечером мануалы по Google API я решил соорудить собственную проверку валидности покупок. Т.к. мы используем Unity3D + Prime31 IAP, пришлось их немного обработать напильником, чтобы они начали выдавать purchase token.
Читать полностью »

Давно уже перестало быть секретом, что Django-ORM в целом глупое как палка и не способно решать более менее серьезные задачи, и особо глупа в тех случаях, когда необходимо влиять извне на формирование разумных SQL запросов. Об одном из таких случаев и как я пытался с этим бороться — поведаю под катом.
Читать полностью »

Хочу поделиться простым рецептом, как можно эффективно выполнять большое число http-запросов и других задач ввода-вывода из обычного Питона. Самое правильное, что можно было бы сделать — использовать асинхронные фреймворки вроде Торнадо или gevent. Но иногда этот вариант не подходит, потому что встроить event loop в уже существующий проект проблематично.

В моем случае уже существовало Django-приложение, из которого примерно раз в месяц нужно было выгрузить немного очень мелких файлов на AWS s3. Шло время, количество файлов стало приближаться к 50 тысячам, и выгружать их по очереди стало утомительным. Как известно, s3 не поддерживает множественное обновление за один PUT-запрос, а установленная опытным путем максимальная скорость запросов с сервера ec2 в том же датацентре не превышает 17 в секунду (что очень не мало, кстати). Таким образом, время обновления для 50 тысяч файлов стало приближаться к одному часу.

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

Получается, всего-то нужен пул потоков, который будет выполнять запросы. К счастью, такой пул уже написан. Начиная с версии 3.2 для унификации всей асинхронной работы в Питоне появилась библиотека concurrent.futures. Для второй версии Питона есть бекпорт под именем futures. Код до безобразия прост:

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(concurrency) as executor:
    for _ in executor.map(upload, queryset):
        pass

Здесь concurrency — число рабочих потоков, upload — функция, выполняющую саму задачу, queryset — итератор объектов, которые по одному будут передаваться в задачу. Уже этот код при concurrency в 150 смог пропихнуть на сервера Амазона ≈450 запросов в секунду.Читать полностью »

Django widgets и еще пара трюков

Все знают что Django это замечательный фреймворк для разработки, с кучей мощных батареек. Лично для меня, при первом знакомстве с django все казалось крайней удобным — все для удобства разработчика, думалось мне. Но те кто с ним вынужден работать в течении долгого времени, знают, что не все так сказочно, как кажется новичку. Шло время проекты становились больше, сложнее, писать вьюшки стало неудобным, а разбираться во взаимоотношении моделей становилось сложнее и сложнее. Но работа есть работа, проект был большой и сложный, и, ко всему прочему необходимо было иметь систему управления страниц как в cms, и, вроде бы, есть замечательный django cms, к которому всего и надо что написать плагинов. Но оказалось, что можно сделать весь процесс несколько более удобным, добавив пару фич и немного кода.Читать полностью »

CrowdCafe — мобильная краудсорсинг платформа

CrowdCafe.io — это краудсорсинг платформа, где люди на мобильном устройстве выполняют микро-задания в обмен на небольшие вознаграждения.

Введение

Краудсорсинг является темой моей работы в аспирантуре Университета Тренто (Италия). В настоящее время подобные термины: краудсорсинг, интернет вещей, нанотехнологии — стали означать одновременно все и ничего. Краудсорсинг включает в себя несколько отдельных направлений: микро-задачи, макро-задачи, конкурсы и краудфандинг. Есть и другие классификации: resultsfromcrowds, crowdsourcing landscape. Конкретно моя работа больше связана с микро-задачами (иногда называется crowd-labour).
Читать полностью »

2-3 июня в Екатеринбурге прошла вторая международная конференция python-разработчиков PyCon Russia 2014. Участники съехались из 23 городов России и мира.

IMG_0636.jpg

Участники PyConRu 2014

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js