Публикации о языке Python   страница 382

Django & Cron

Интро В предыдущей статье я описывал как выкладывать Django-проект на сервер и можно сказать попутно выкладывал. =) Но на этом мои “мучения” не закончились – оказалось, что я не знаю как прикрутить вызовы частей приложения по Cron. Погуглив и почитав, решение нашлось… и оно оказалось намного приятнее решения на php ;) Решение В корневой директории [...]




Links: tddspry, ItQuest.ru

Link 1. tddspry

Что такое tddspry? Это небольшой набор утилит для тестирования django-приложений с помощью nosetests. Если по какой-то причине Вы не можете воспользоваться Django Test-execution Framework или джанговские тесты просто Вас раздражают, то обязательно обратите внимание на этот небольшой проект. На данный момент в состав tddspry включены хэлперы для написания тестов, а также моки для БД и twill. В дальнейшем возможно включение поддержки Windmill, etc. Проект открыт для предложений. :)
Пример использования:
class TestUI(TwillMock, DbMock):
def setup(self):
super(TestUI,self).setup()
login_to_admin(username='admin'



Система развертывания (deploy system)

Как я и обещал в предыдущей серии, посвящаю этот пост нашей системе развертывания.

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

Общая схема

На рисунке приведена немного сумбурная схема процесса развертывания.

Разработка ведется с использованием SVN установленным на локальном сервере, там же расположен и локальный сервер MySQL. MySQL используется всеми при разработке, структура создается через initdb. Начальные данные в обязательном порядке (




Sapka contest

Не так давно закончился контест Sapka, который проходил с 13-го по 20-е марта 2009 года. Я принимал в этом контесте участие и не могу не поделиться впечатлениями, ведь их было очень-очень-очень много.

Введение

Sapka - контест, больше похожий на ICFPC, чем на контесты, проводимые ACM. А именно - задание здесь одно, марафонного типа, которое может решить практически любой хороший программист, но только в ситуации, когда у него в распоряжении будет неограниченное количество времени. К тому же задания как в ICFPC, так и в Sapka обычно намного интересней, подаются в игровой форме и больше требуют не знания алгоритмов, а умения напрягать мозг, концентрировать усилия и бороться. Для меня контест Sapka стал первым контестом подобного типа.

Команда

Sapka и ICFPC - командные соревнования. Естественно, участвовать можно и одному, но для одного



Dynamic Language Runtime: динамические языки в .NET

Dynamic Language Runtime (DLR) - позволяет создавать свои динамические языки на платформе .NET. Сейчас самыми популярными из них являются IronPython и IronRuby. Также на просторах CodePlex существует IronLisp и другие динамические языки. Последняя версия DLR имеет номер 0.9 и была выпущена 10 декабря 2008 года. Кроме того, что DLR позволяет создавать динамические языки, она также позволяет добавлять динамические элементы в уже сеществующие языки: C# 4.0 уже использует DLR - смотрите в сторону IDynamicObject.




Мои пять копеек про Google App Engine

Где-то с месяц назад приспичило попробовать портировать простенький сайт URIs (даа, с фантазией у меня туго :] ) на GAE, дабы поближе познакомится с данной платформой.

Итак, что мы имеем (на все вызовы распространяются лимиты при превышении которых включают счётчик :] ):

  • 1GB datastore под данные
  • Mail API
  • Image Manipulation API
  • Кеш на базе memcached
  • URLFetch
  • Сервис авторизации через Google

URLFetch - это сервис для получения данных извне. Как обёртка над URLFetch сейчас может использоваться urllib2.

API для работы с картинки в принципе ничем не отличаются от PIL, в SDK через него и эмулируются.

По поводу Datastore... Всё бы хорошо, но как бы заманчиво он не смотрелся исходя из лозунга "а google пользуется BigTable" и это всё круто, и за нереляционными базами будущее, но перестроить своё мышление после реляционных СУБД - довольно трудно. Хотя из плюсов о




Система билдов

Кстати, еще летом нас была совсем страшная система создания билда, java ant с вкраплениями питоновского кода.
Когда она ломалась - атас. Никто не проверял, чем закончились эти самые вызовы подпроцессов. Собиралка продолжала работать дальше. Очень долго.
Через примерно 40 минут можно было увидеть - билд не прошел. Почему - догадаться можно. Иногда. Часто - нет. Все очень сложно и запутанно. Повторить - извольте начать все сначала (40 мин, помните?)
И так раз за разом.

Летом я как раз был в Нью-Йорке пару месяцев. И выпала моя неделя почетного билдера. После третьего проблемного билда за мою неделю (мне везло просто сказочно) - озверел. Переписал все к черту.

Теперь, как водится, все делается Питоном. С очень строгими проверками. Теперь все бросает exception и он, заметьте, не съедается как except Exception - долго бил по рукам за такое. Еще бить и бить - есть их у нас в рабочем коде... Если сломалось - стоп с максимально полной инфой.

Сист




Reia - скриптовый язык для виртуальной машины Erlang`а

Лично я считаю Erlang одним из самых простых яызков программирования, а среди знакомых мне функциональных языков - самым простым. К тому же на Erlang благодаря его направленности на создание конкурентных приложений написано уже множество проектов, таких как Yaws, CouchDB, ejabberd, которые являются для него наилучшей рекламой.
Таким образом, Erlang - функциональный язык с простым и понятным синтаксисом, который нашёл свою нишу, и если вы интересуетесь созданием масштабируемых конкурентных систем - вам стоит выучить его. Однако из-за того, что Erlang - функциональный, его синтаксис и стиль понятен не всем - он слишком отличается от императивных языков(таких как С и подобные) и даже от Ruby/Python, которые включают в себя частицы функционального подхода.
Если Вы столкнулись с такой проблемой - обратите внимание на




django-mediafiles 0.2

Сегодня оффициально вышел первый публичный релиз моего проекта, под названием django-mediafiles.

О чем этот проект уже практически понятно из его названия, а чтобы рассеять последние ваши сомнения, посвечу скриншотами того, что он умеет:

Главная страница

Создание новой директории или файла, загрузка файла на сервер




app-engine-patch 1.0 is out!

Не далее как 24-го февраля сего года увидела свет новая версия одной незаменимой вещи для разработки под Google AppEngine, а именно app-engine-patch.