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

image

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

Недавно разрабатывала сайт на python/django и нужна была возможность использования API Вконтакте. А именно:

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

Собственно, для администратора управление этим функционалом осуществляется через админку.

Расскажу по шагам реализацию этого функционала.
Читать полностью »

После почти года разработки вышел долгожданный релиз Django 1.7.
image
Ключевые изменения новой версии

  • Прекращена поддержка Python 2.6.
  • Добавлена поддержка миграций непосредственно в сам фреймворк. Здесь можно посмотреть инструкции о переходе с South.
  • Переработан механизм загрузки приложений. Теперь models.py — необязателен.
  • Изменения в Field API, в частности, добавлен обязательный метод deconstruct() для поддержки миграций.
  • Добавлена возможность вызова QuerySet напрямую из менеджера. Также теперь можно указывать необходимый менеджер при использовании связи между моделями.
  • Новая система для проверки проекта и диагностики ошибок, вместо validate добавлена команда check.

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

Приглашаем на Moscow Django MeetUp № 22

Дамы и господа, в четверг в офисе Mail.Ru Group пройдёт 22-я по счёту ежемесячная встреча Moscow Django MeetUp! В этот раз вы сможете услышать мудрые речи трёх докладчиков, которые выступят на сильно разные темы. В первых рядах выступающих окажется никто иной, как Григорий Петров (Digital October).

Приглашаем на Moscow Django MeetUp № 22Григорий регулярно выступает на конференциях не просто так. Он считает, что это приносит пользу не только сообществу разработчиков, но и ему самому. Специально для данного митапа Григорий подготовил доклад, в рамках которого вы услышите соображения программиста о публичных выступлениях, силе воли, нужности презентации и ключевой роли гипокампа в профессиональном росте айтишника. Доклад разбит на три части:
Читать полностью »

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

Задачи

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

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 запросов в секунду.Читать полностью »


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