суббота, 3 ноября 2012 г.

Как создать генератор номера счёта? (Перевод)

Требования к генератору:
  1. Выдача псевдо-случайных последовательных номеров (уникальных для десятков миллионов записей)
  2. Простая проверка корректности (без обращения к БД)
Мы будем использовать сеть Фейстеля для создания псевдо-случайных чисел (только положительных) из последовательных чисел (т.е. возвращаемых при помощи nextval() для posgresql sequence). Этот алгоритм принимает базис для функции `make_feistel_number`, доступной в пакете wheezy.core.

Передача аргументов с неверным идентификатором (Перевод)


Я получил запрос на улучшение для hgapi, указывающий, что не возможно фильтровать логи Mercurial используя API, так как специального метода для этого нет, а запасной способ - указание именованных аргументов для дальнейшей передачи их в командную строку - не работает. Сам метод такой:
def hg_log(self, identifier=None, limit=None,
           template=None, branch=None, **kwargs):
где kwargs принимает ключи для передачи их командной строке. Таким образом, если мы хотим получить лог для ветки, то использование вызова
repo.hg_log(-b=mybranch)
должно бы сработать, пока Вы не заметите, что  '-b' некорректный идентификатор, так что код просто не будет работать. Но ведь почти все опции для работы с Mercurial, которые Вы можете захотеть передать, начинаются с -, так какой тогда смысл использовать kwargs вообще?
Примечание: То, что приведено дальше - плохой подход к коду!
И всё же возможно передать аргументы в функцию при помощи некорректного идентификатор, используя распаковку аргументов. Если взять функцию:
>>> def myfunc(positional, kwarg='Hello', **kwargs):
>>>     print(positional)
>>>     print(kwarg)
>>>     for key in kwargs:
>>>         print("%s: %s" % (key, kwargs[key]))
Вы можете передать любой словарь типа:
>>> myfunc(1, **{'-1-': 'dash-one-dash'})
1
Hello
-1-: dash-one-dash
Это, конечно, кривоватый способ, но он может быть полезен, например, в качестве запасного метода для поддержки аргументов, которые могут появиться в будущем, непонятных аргументов и вообще всего, что угодно.
(hgapi 1.3.1a3 был только что загружен на cheeseshop; hg_log теперь принимает аргумент 'branch')

Источник

Обновление статуса Py3k №7 (Перевод)


Это уже седьмое обновление статуса работы над py3k branch, что стало возможным благодаря людям, пожертвовавшим на развитие py3k.
Главная новость на данный момент в том, что Philip начал работать над py3k параллельно с Antonio. Соответственно, резко возросло количество проделанной работы.
Бот сборки теперь каждую ночь собирает новую версию и запускает тесты стандартной библиотеки Python. На данный момент мы проходим 160 тестов приблизительно 355 модулей CPython, проваливает 144 и пропускает около 51.

Релиз Pillow 1-7-8 (Перевод)


Pillow - "дружественный" форк PIL. Сперва это был лишь форк пакета, теперь он содержит исправления ошибок кода для изображений и поддержку Python 3. Чтобы сделать его дружелюбным мы отслеживаем все пожелания к PIL.

четверг, 1 ноября 2012 г.

Документация South - Перевод. Установка

Текущий релиз South - 0.7.6. Но документация написана для 0.7.5, так что имейте это ввиду.
Есть несколько способов установить South:

  • Используя easy_install или pip, что рекомендуется, если Вы хотите получить стабильный релиз
  • Используя Mercurial, что рекомендуется если Вы хотите получить самый последний релиз
  • Скачав архив, если у Вас нет ни easy_install, ни Mercurial
Некоторые дистрибутивы Linux (и UNIX, например, FreeBSD - прим. переводчика) уже содержат South в их репозитории, например, если Вы используете не стабильный Debian, то Вы можете использовать команду apt-get install python-django-south, а на Fedora - yum install Django-south. Обратите внимание, что таким образом Вы можете получить старую версию, так что проверьте сначала номер версии в репозитории.
South <=0.7.3 должен работать с версиями Django от 0.97-pre до 1.1
South >=0.7.4 должен работать с версиями Django начиная от версии 1.2
Пожалуйста, проверьте совместимость с вашей версией в заметках о релизе, чтобы быть в курсе последних изменений.

Документация South - Перевод. Что такое миграция?

Для непосвящённых: миграция (migrations), так же известная как 'schema evolution' или 'mutations' - это способ изменения схемы вашей БД с одной версии на другую. Django сам по себе может лишь добавлять новые модели, но почти во всех проектах часто происходят изменения самой модели - добавляются поля, изменятся свойства полей, и т.д.
South, и другие аналогичные решения, предоставляет способ обойти эту проблему, давая Вам инструмент для лёгкого и предсказуемого изменения схемы вашей БД. Вы пишете миграцию, которая говорит South как перейти с одной версии на другую, и, связывая эти миграции в цепочку, Вы можете двигаться вперёд или назад по истории изменений схемы вашей БД. 
В South, миграция это так же способ создания БД - первая миграция на самом деле миграция из пустой схемы к вашей схеме. Таким образом Вы можете как воссоздать самую последнюю версию схемы БД, так и проапгрейдить любую из устаревших, просто запустив миграцию с определённой точки. 
В процессе этого руководства мы покажем Вам как миграция работает и как она может быть полезна на разных примерах.


Документация South - Перевод. Про South



South привносит миграцию в приложения на Django. Его главная цель - предоставить простой, стабильный и независящий от БД слой миграции чтобы избавить Вас от хлопот по обслуживанию изменений схемы БД в ваших приложениях.