воскресенье, 29 мая 2011 г.

Метрики, звездочки, флажки...

Intro
На OpenTalk при проведении практической сессии определения требований от целей. Аудитория была разделена на три конкурирующие команды. Вопросами было нужно выявить цели условного заказчика и выявить требования. За "правильные" вопросы команды получали "крестики".
Работаем на повышение метрик?
Это немного всех сбило. После каждого полученного крестика остальные команды старались задать вопрос по типу того который получил крестик, вместо того чтобы задавать вопросы вскрывающие цели. После, во время анализа был сделан вывод вредности публичных метрик. Этот вывод был применен и к внутри командным метрикам. От сюда у меня возникли вопросы безапелляционности этого вывода. Я знаю противоположные мнения. Что метрики необходимы. Даже, что без них никак. Т.е. как оценить насколько человек эффективно работает если его никак не мерять? Мнение такое, что мерять надо, просто нужно определить достаточный набор "правильных" метрик. При этом опять возникает вопрос должны ли быть эти метрики публичны? Для того кого меряют, для всей команды, чтобы можно было меряться. Красный флажок на столе лучшего работника за прошлый месяц...
Так нужны ли метрики?
Из моего личного опыта складывается мнение, что какие-то метрики все-таки нужны. Но использовать их в открытую для мотивации сотрудников, чтоб все знали кого и как померяли крайне губительно. Через какое-то врямя вместо решения задач и делания работы, люди будут предпринимать действия направленные на повышение метрик. После чего метрики надо менять Мне могут возразить, что мол это только при плохих метриках, можно заработать повышение метрики без нормального выполнения работы. В моей практике метрики учитывали отдельные факторы на другие не обращая никакого внимания. Что вызывает огромное раздражение у команды. Ну не видел я идеальных систем для измерения эффективности работы в команде.
Мотивация
С точки зрения мотивации берусь утверждать, что любые метрики на мотивации сказываются негативно. Есть детская сказка где козленок научился считать до 10 и считал остальных животных, за что те очень обижались на него и пытались отомстить. Моя личная мотивация также падает, когда какой-то козел козленок меня считает. Где почитать про то как создать эффективную и сбалансированную систему метрик?

пятница, 1 апреля 2011 г.

python urllib2 и загрузка файлов на сервер

Возникла такая задача. Из питоновского кода нужно было загружать файл на сервер (без участия браузерных форм). Долго перерывал документацию и гуглил. Постоянно натыкался на неработающие решения, потом начал находить работающие, но с плохой реализацией. Короче вот самый лучший и адекватный вариант: http://www.doughellmann.com/PyMOTW/urllib2/#uploading-files Можно пользовать сразу, но я дописал несколько функций для работы представленого класса с заранее созданым опенером.

понедельник, 21 февраля 2011 г.

Дубровский

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

воскресенье, 20 февраля 2011 г.

Published with Blogger-droid v1.6.7

четверг, 1 апреля 2010 г.

Продвигаем bash

Прочитав переводную статью о продвинутых командах bash, принял на вооружение следующие:

Запустить последнюю команду с правами рута

Пример притянут за уши - не пытайтесь повторить в домашних условиях :)
user@localhost /etc $ mv sudoers sudoers.bak
mv: cannot move `sudoers' to `sudoers.bak': Permission denied
user@localhost /etc $ sudo !!
user@localhost /etc $

Запустить последнюю команду с заменой одной фразы другой

user@localhost ~/tmp $ mkdir somedir
user@localhost ~/tmp $ ^somedir^anotherdir^
Соответственно "anotherdir" тоже будет создана.

Быстрое копирование или переименование файла

user@localhost ~/tmp $ ls
somefile
user@localhost ~/tmp $ mv somefile{,.txt}
user@localhost ~/tmp $ ls
somefile.txt
user@localhost ~/tmp $ cp somefile.txt{,.bak}
user@localhost ~/tmp $ ls
somefile.txt somefile.txt.bak

Вернуться в предыдущую директорию

Это просто любимое!
user@localhost ~/tmp $ cd files/mp3
user@localhost ~/tmp/files/mp3 $ cd -
/home/user/tmp
user@localhost ~/tmp $

среда, 26 августа 2009 г.

Визуализация моделей в Django

На определенном этапе разработки сайтов на Django встала необходимость визуализировать модели и связи между ними - держать все в голове стало сложно.
Погуглил и решил что на данном этапе меня вполне устроят возможности django_extensions.
В базовые возможности данного приложение входит команда graph_models из модуля GraphModels.
Но обо всем по-порядку: У данного приложения есть зависимости поэтому в начале нужно установить pygraphviz
В gentoo я это делаю так:
$ emerge dev-python/pygraphviz
хотя вполне можно обойтись универсальным методом:
$ easy_install pygraphviz
Далее нужно установить django_extensions Можно установить его стандартно: $ cd django-command-extensions
$ python setup.py install
Но я предпочитаю, чтобы все от чего зависит проект было вместе с проектом, поэтому я поступаю так:

$ cd project_root
$ hg clone http://hgsvn.trbs.net/django-command-extensions/django_extensions
Далее стандартно добавляю django_extensions к списку установленных приложений:
INSTALLED_APPS += ('django_extensions',)
Все! Приложение можно использовать с данными Вашего проекта.
Все возможности его я описать не в состоянии, тема данного поста команда graph_models.
Собственно это дополнительная команда для manage.py, т.е. ее нужно запускать в командной строке как syncdb или runserver
Из всех возможностей синтаксиса данной команды я вынес для себя следующие варианты использования:
1. Вывод диаграммы всех установленных приложений:
$ python manage.py graph_models -o models_diagramm.png
Ключ -o означает в какой файл выводить.
2. То же самое, но с группировкой по приложениям - таблицы будут не перемешаны как попало, а сгруппированы по принадлежности к приложениям красивой рамочкой.
$ python manage.py graph_models -g -o models_diagramm.png
3. Когда проекты достаточно большие вывод всех моделей понимания не вносит, поэтому есть возможность заказать себе на вывод только те приложения которые интересуют в данный момент:
$ python manage.py graph_models -g -o models_diagramm.png polls
В конец команды можно дописывать через пробел имена именно тех приложений, которые интересуют.
Если не использовать ключ -o будет генерироваться .dot файл, что с ним делать потом я не разобрался :) Было бы интересно найти никсовую программу которая бы позволяла вносить дополнительные комментарии, двигать блоки так как удобно, кастомизировать цвета вывода...
P.S. Примеры вывода смотреть на официальной странице.