Посты с тэгом полезности


Пример работы с естественными языками (Natural Language Processing) на Python

Хорошая статья с примерами и полезными ссылками. Традиционно NLP задачи реализовывались на Java, но Python приобретает все большую популярность в этой области.



PyCharm бесплатно

Вчера пришла новостная рассылка от JetBrains, в которой говорится о том, что теперь есть бесплатная версия PyCharm — Community Edition. Я сам уже три года как пользуюсь Professional Edition, и это замечательный продукт. А для Java я пользуюсь IntelliJ IDEA Очень рекомендую тем, кто пишет на Python, и еще не знаком с PyCharm, попробовать ее. Есть встроенная поддержка Django, virtualenv, Git/HG, тестирования и покрытия кода тестами.



Django + PyPy + MySQL

Давно уже мои товарищи хвалят заоблачные скорости PyPy, но без работы с базами данных можно было только облизываться и мечтательно закатывать глаза, представляя рост производительности сайтов. Сегодня получилось подружить его с MySQL, так что появился отличный шанс проверить двойного питона с турбонаддувом в деле.

This is how I’ve managed to get PyPy working with MySQL:

  1. Download PyPy to some folder (I used /usr/local/pypy-1.8)
  2. Create a symlink in /usr/local/bin/ : ln -s /usr/local/pypy-1.8/bin/pypy pypy
  3. Make virtualenv with pypy as python: mkvirtualenv mysite —no-site-packages -p pypy
  4. Activate virtual env, install Django via pip
  5. Tricky part starts: download sources of MySQL-python
  6. Unpack it somethere in your virtualenv. Unfor


Django Social Auth: now with images

В рамках текущего проекта возникла задача при регистрации пользователей через социальную сеть кроме их контактных данных получать еще и изображение. Небольшое расследование показало, что каждая сеть практикует свой метод отдачи изображений, что в результате вылилось в следующий код, который вызывается в обработчике сигнала pre_update:

from social_auth.signals import pre_update

@receiver(pre_update)
def update_person_details(sender, **kwargs):
    person = kwargs.get('user')
    details = kwargs.get('details')

…

    load_person_avatar(sender, person, kwargs.get('response'))
…

def load_person_avatar(sender, person, info):
    image_url = None

    if sender.name == 'vkontakte-oauth2':
        vk_response = info.get('response')
        if vk_response:
            image_url = vk_response.get('user_photo') # If photo is absent user_photo is absent too

    elif sender.name == 'odnoklassniki':
        image_url = info.get('pic_2')
        if 'stub' in image_url: # No real im


Новости Django Social Auth – 2

Предыдущие новости см. здесь.

В коммите добавлены:

  1. Поддержка OAuth 2.0 для ВКонтакте
  2. Поддержка OAuth 2.0 для Mail.ru
  3. Решена проблема с return_to. Одна строчка правок потребовала усилий со стороны четырех человек, вот как бывает.

Следующий коммит будет не раньше середины мая: уезжаю в отпуск.



Новости Django Social Auth

В продолжение статьи «Авторизация в социальных сетях для Django».

Основная ветка проекта развивается довольно интенсивно, добавилась поддержка LinkedIn, Google OAuth2, тесты и большое количество мелких, но полезных фитюлечек, вроде автоматического ассоциирования пользователя по e-mail.

Замечена интересная особенность Google OpenID. Если ваш сайт поддерживает «сквозную» авторизацию на поддоменах и вам принципиально, чтобы человек, авторизовавшийся в одном поддомене, мог продолжать работать без авторизации и в другом, я рекомендую воспользоваться Google OAuth. Фишка в том, что Google OpenID выдает разные id пользователя для разных поддоменов одного и того же сайта. Так как библиотека не может определить, что пользователь, который пришел на поддомен ААА, уже был зарегистрирован в поддомене БББ, в результате создается новая учетная запись. У OAuth такой проблемы нет, зато есть два плюса: вы гаран



Авторизация в социальных сетях для Django

Зачем

Когда в нашем проекте возникла необходимость реализовать авторизацию через социальные сети, я по совету Ромы Ворушина просмотрел несколько готовых решений, чтобы не изобретать уже многократно изобретенный велосипед. Оказалось, что не все велосипеды умеют ездить туда, куда нам нужно, и в точности так, как именно нам нужно:

  1. Кроме крупных мировых сетей хотелось также работать с LiveJournal, Yandex и ВКонтакте.
  2. Нужна была возможность контролировать действия системы после успешной авторизации, то есть управлять процессом обработки полученной от сервиса информации о пользователях.

Я остановился на https://github.com/omab/django-social-auth: просмотрев исходники, я увидел, что их немного, а написано все понятно. Изначально библиотека поддерживала Facebook, Twitter, Google, OpenID и OpenAuth и процесс работы с БД был немного не такой, как хотелось бы. Форка было не избежа