вторник, 2 сентября 2014 г.

Немножко про debian/changelog

Ну вот как-то так:

git log --pretty=oneline
git-dch --since=906b89e06e... (md5)
vim debian/changelog
git add debian/changelog
debcommit -r
git push --tags
git push

Схема не идеальная. Больше интересно то, кто как это делает?

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

вторник, 27 мая 2014 г.

Профилирование в django

1. ./manage.py runprofileserver 0.0.0.0:8007 --use-cprofile --prof-path=tmp/prof/
в папку tmp/prof/ сохраяются файлы *.prof с названием, соответствующие посещенным url'ам.

2. gprof2dot -f pstats profile_results.prof | dot -Tpng -o profile_results.png
profile_results.png - красивый граф с вызовами и процентом выполнения в каждой функции.

Если нет gprof2dot, то поставить можно так:
brew install graphviz
pip install gprof2dot


Более подробно, см. тут: http://moscowdjango.ru/meetup/13/profiling-django/

суббота, 19 апреля 2014 г.

Обзор про асинхронщины в python

Рассказала доклад про асинхронное программирование в Python на курсе "Сетевое программирование".

http://www.slideshare.net/ssuser155b49/about-async-py

Последняя страница самая полезная =)

суббота, 5 октября 2013 г.

Всякое бывает...


Бывает так, что из-под питонячего кода нужно вызвать какой-то исполняемый файл(*.sh). Бывает так, что этот исполняемый файл (*.sh) должен выполнить какой-то питонячий скрипт. Бывает так, что исполняемый файл надо остановить.
Тут логично, что при остановке исполняемого файла, питоновский скрипт тоже должен остановиться. Но это не так...

четверг, 5 сентября 2013 г.

Частота - как много в этом звуке!

Сегодня я хочу рассмотреть разные решения одной распространенной задачи. Формулировки бывают разные. Вот одна из них:
"У нас есть access.log веб-сервера. Найти 5 IP-адресов, от которых было больше всего запросов."