Автоматизация управления релизами, структурирование проекта Django

Наверное одно из самых важных в эффективной работе непосредственно над реализацией задуманного проекта — структурирование данных и файлов.

  1. Разработчик интуитивно понимает нахождение и функцию того или иного модуля проекта. Уменьшается порог вхождения для стороннего разработчика.

  2. Системный администратор может следить за изменениями версии проекта и с легкостью обновлять код на тестовых и боевых серверах вручную или автоматическими средствами.

В своих проектах я использую следующую структуру, частично позаимствованную у проекта Twisted

 

Новые костюмы марки Sargan. Плюсы и минусы.

burus-sargan

Компания Sargan выпустила новые костюмы и новую партию старых моделей с “улучшениями”. Я купил такой костюм, так как являюсь обладателем старой модели Сенеж 3мм и очень им доволен, очень!

На различных формах были опубликованы некоторые недочеты этих гидрокостюмов. Предпринимательство в России развивается и думает о потребителе, о массах. Это так же хорошо, как и плохо. Т.к. всем не угодишь. Кроме того компания выпускает много мелочей, которые может купить потенциальный подвох1 и хорошо позиционирует их на рынке. Молодцы.

Собственное мнение и тесты костюма в боевых условиях.

Плюсы.

  1. Неопрен намного более эластичный.
  2. Теплее. Штаны закрывают спину, очень удобно при комбинировании куртки 3мм и штанов 7мм, вместо использования 5мм костюма.
 

Катушка на Seac Sub X-Fire. Переделка Omer Match Sport.

Не удалось найти катушку на ружье Seac sub X-fire? Можно адаптировать катушку Omer Match Sport с универсальным креплениемхомутом для арбалета. Кроме того, катушка от фирмы Omer легче, хоть это и не сказалось на плавучести ружья с катушкой =(, ну и “буй с ним”.

x-fire-reel-omer

Для работы понадобится:

  • Дрель
  • Сверла М6, М4, М2.5
  • Два самореза с широкой шляпкой и один с конической длинной 2см.
  • Ножовка
  • Напильник
  • Наждачная бумага
  • Отвертка крестовая

Далее инструкция с фотографиями.

 

Компенсируем плавучесть ружья Seac Sub X-Fire. Не скользящая рукоятка.

seac-sub-x-fire

Так уж получилось, что в России подводная охота как вид спорта не сильно распространен, поэтому особо большого выбора и адекватных цен на снаряжения практически нет. Из соображения цена/качество по наличию снаряжения в магазинах, я приобрел ружье Seac Sub X-Fire 95. У любого ружья есть плюсы и минусы и все они индивидуальны для каждого спортсмена. Мне категорически не нравится:

  1. Ружье тонет в пресной воде
  2. Рукоятка очень узкая у основания, нет уверенного хвата

 

Ableton Live API: Python 2.2

Мало кто знает, а еще меньше людей пользуется этим. При помощи Python, немецкая компания Ableton AG автоматизирует управление секвенсером Ableton Live.

Это нужно чтобы можно было делать вот так:


Или так, как это делаю я, управляю матрицей клипов в секвенсоре ногами, в то время, как сам играю на гитаре и создаю контент для этой матрицы на ходу, что позволяет импровизировать и делать музыку из синтезированных и электроакустических звуков.
 

Twisted ПАиПП — Техника разработки

Введение

Сообщество разработчиков Twisted открыто ведет процесс разработки и документирует его. Это позволяет взглянуть на работу профессионалов и позаимствовать базу знаний.

Разработка через тестирование (Test driven development/TDD)

Twisted имеет модуль для тестирования кода(unit tests). Он называется Trial.

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

Немного о технике TDD:

  1. Мы создаем код теста и пишем в нем пустые методы для нашего кода.
  2. Нашего кода не существует! Мы ставим себе задачу для его реализации.
  3. Запускаем Trial. Видим что у нас все горит, — ничего не работает.
  4. Начинаем выполнять эти пункты! Таким образом мы сразу тестируем свой код и планируем работы.
 

Twisted ПАиПП — Практика в рабочих проектах

Постановка задачи

В качестве примера буду использовать два реализованных проекта:

  1. FATS — Быстрые телефонные сервисы на базе программной IP-PBX Asterisk
  2. DBSync — синхронизатор баз данных в режиме 24/7/365

В первую очередь важно понять необходимость использования Twisted. Как уже говорилось ранее: “есть множество способов решить задачу”.

 

Twisted ПАиПП — Классические примеры

Deferred \ Callbacks \ Errbacks

Не блокирующий запрос web страницы:

from twisted.web.client import getPage
from twisted.internet import reactor

def lowerCaseContents(contents):
    return contents.lower()

def printContents(contents):
    print contents
    reactor.stop()

deferred = getPage('http://twistedmatrix.com/')


# Добавляем два callback'а для запроса web страницы
# первый преобразует весь полученный текст к нижнему регистру
# второй распечатает ответ запроса в стандартный поток вывода
deferred.addCallback(lowerCaseContents)
deferred.addCallback(printContents)

reactor.run()

 

Sportbox.ru в Финале акции народное голосование 2008!

Дорогие друзья, мы в финале! Значит не зря идет работа и столько времени потрачено на портал Sportbox.ru.

Не ленитесь! Проголосуйте за нас, помогите питоноведам и просто хорошим ребятам =)

ГОЛОСОВАТЬ ЗА Sportbox.ru КАЖДЫЕ 24 ЧАСА!

Из истории: Мы первые кто использовал технологию Zope3 для крупного портала при высоких нагрузках. В данный момент мы поддерживаем несколько сервисов на Django. На наших серверах живут и размножаются сервисы Twisted, вы их не видите, но они есть =).

Заранее СПАСИБО!

Unix epoch time in the Python

Начало эпохи Unix отмечается с 00:00:00 UTC on January 1, 1970 Ссылка на Wiki

Следовательно это время должно быть 0 счетчика, а все значения раньше иметь знак “-“. В очередной рабочей задаче наталкиваюсь на ошибку: