Archive for July, 2008
Инициализация проекта MLP
В прошлом посте я рассказал, что начинаю работу над проектом MLP и приглашаю всех присоединится ко мне.
В соответствии с руководством PMBOK работа над проектом разбивается на 5 этапов:
- initiating — инициализация
- planning — планирование
- executing — выполнение
- controlling — контроль
- closing — закрытие

(Изображение со сайта:
http://www.mpmm.com/)
Корнелиус Финхнер, автор замечательного подкаста про управление проектами http://thepmpodcast.com/ в одном из свох выпусков рассказал про другое деление проекта на этапы:
- Проект не начался
- Проект закончился
- Проект находится в кризисе
- Проект близок к кризису
При работе над проектом MLP я постараюсь придерживаться этапности, предложенном в PMBOK, а не разбивку Корнелиуса =)
Сейчас проект MLP находится на первом этапе — на этапе инициализации. На этом этапе должны выполняться следующие работы:
- Пишется и распространяется декларация проекта
- Определение и фиксация списка заинтересованных лиц
- Агетирование за проект
В стадию инициализации так же входит процесс выбора проекта. Есть много параметров, по которым заказчик определяет, какой проект нужно выполнять. В проекте MLP все просто — проект уже выбран.
Немного подробнее про каждый этап:
Декларация проекта
Над проектом работают команда. В эту команду входят следующие люди:
Заказчик — оплачивает проект и определяет, что будет сделано в проекте. Решение проекта нужно в первую очередь заказчику. Без заказчика проекта бы не было.
Куратор — человек обладающей формальной властью, который помогает решать проблемы менеджеру проекта. Для работы над проектом необходимы ресурсы. Не всегда менеждер проекта может сам выбить все необходимые, для решений этой задачи он обращается к куратору. В идеале куратор должен не только обладать властью, но так же должен являться действительно умным человек, к которому менеджер может обратится по любым возникающим вопросам.
Менеджер проекта — тот, кто отвечает за успешное выполнение проекта, тот кто составляет планы, контролирует выполнение, находит людей, планирует риски, тот кто является связующим звеном между всеми участниками проекта. Одним словом, главный за проект.
Исполнители — те, кто под руководством менеджера проекта выполняют работу.
В случае проекта MLP я (Бессарабов Иван) являюсь одновременно и заказчиком, и менеджером проекта, и исполнителем. Посмотрим, что из этого получится =)
Это я немного описал тех лиц, которые вовлечены в проект. Декларация — это документ, который рассылается всем заинтересованным лицам, в котором говорится, что проект начался. Цель этого документа — уведомить всех заинтересованных, о том, что проект начался, рассказать, что это за проект, а так же официально подтвердить полномочия, которыми наделяется менеджер на время проекта.
В случае проекта MLP роль декларации играет мой пост в блоге Проект MLP.
Список заинтересованных лиц
Как понятно из название, это документ в котором содержится список все людей, которые заинтересованы в успешном решении проекта, описано то, что каждый из этих людей ждет от проекта, а так же то, что этот человек предоставляет проекту.
На данный момент в прокте MLP список заинтересованных лиц состоит из одного человека — из меня.
Агетирование за проект
Нужно верить и четко знать, что проект будет успешным и донести свою уверенность до всех членов команды. Агетирование за проект MLP я выполняю в этом блоге.
Краткое резюме
Название проекта: MLP (mail list project).
Цель проекта: Создать и запустить веб сайт, являющимся удобным инструментом для работы со списками рассылок.
Заказчик, менеджер, исполнитель проекта: Бессарабов Иван
На этом я считаю работу над первым этапом проекта MLP завершенной.
Дальше я начаю планировать работу над проектом.
Если вам интересно присоединится к проекту — жду ваших писем на ivan@bessarabov.ru
Если у вас есть свой блог, пожалуйста опишите в нем об этом проекте. Спасибо.
Проект MLP
Коммуникации в проекте
В процессе работы над каким нибудь проектом, например, над разработкой программного обеспечения, очень важно предоставить возможность участникам легко и просто обмениваться информацией друг с другом.
Для этого используются куча разных методов. Личные встречи, совещания, телефонные разговоры, электронная почта, системы совместной работы над проектом, аська и другие средства мгновенной передачи сообщений, видеоконференции и еще что-то в этом роде.
Чем лучше организованна коммуникация, тем лучше для проекта.
Один из очень удобных способов коммуникации является электронная почта. У нее куча плюсов — простота написания и отправки писем, быстрота доставки сообщений, возможность чтения в удобное для получателя время.
Очень часто требуется отправить письмо всем участникам проекта. Вот еще один большой плюс электронной почты: отправить письмо 100 людям всего лишь чуть-чуть сложнее, чем отправить это же письмо одному человеку. Это “чуть-чуть” заключается в том, что нужно “всего лишь” ввести 100 адресов кому следует отправлять письмо. Сто адресов можно вводить каждый раз руками, либо один раз создать группу для рассылки, в которую входят все участники проекта. В этом случае, когда требуется отправить письмо всем, нужно только выбрать группу получателей.
Проблема групп рассылок
Неприятность в работе с группой рассылки заключается в том, что каждому, кому эта группа необходима, нужно будет либо самому забить себе в адресную книгу, либо каким-то образом скопировать у того, кто эту операцию уже сделал.
Итак представим, 100 человек вовлечены в проект, наконец-то все создали у себя группу рассылки, а тут в проект приходит еще несколько человек. Всем приходится обновлять свою группу — финиш.
Когда все участники проекта являются сотрудниками одной организации, есть очень хороший способ для решений этой проблемы: группа рассылки находится на сервере и обновляется централизованно. В этом случае, группу нужно будет забить всего один раз и некоторые сотрудники компании будут иметь доступ к ее редактированию.
К сожалению, далеко не всегда все участники проекта являются сотрудниками одной компании и у них нет доступа к тому серверу на котором находится группа рассылки (кстати, бывает, что даже когда все участники проекта принадлежат одной фирме, все равно не используется единая группа рассылки, так как просто нет такой ИТ возможности).
Проект MLP
Один из вариантов решения этой задачи — список рассылки. Пользователь отправляет письмо на особый адрес, а все пользователи, которые подписались на этот список рассылки его получают.
Итак (вот я и дошел до самого важного в этом посте), я начинаю проект, с рабочим названием MLP (mail list project). Цель проекта: создать и запустить web based систему для работы со списками рассылок.
В проекте я собираюсь использовать следующие технологии и программное обеспечение: perl, mysql, javascript, html, css, trac, svn, postfix.
Проект является полностью открытым. Это означает, что любой человек может присоединится к работе над проектом, и любой сможет использовать то что в итоге получится. На данный момент времени проект является некоммерческим. О том как продвигается работа над проектом, я буду отписывать в этом блоге. Все посты с тэгом mlp будут посвящены проекту по созданию системы работы со списками рассылок.
В результате этого проекта, я хочу создать не только хороший продукт, но так же получить удовольствие от самого процесса работы.
Я призываю людей, которым интересно участвовать в подобном начинании написать мне: ivan@bessarabov.ru.
Я буду мега рад любым комментариям к этому посту.
PS а если вы разрекламируете этот мой пост в своих блогах, то вообще ух! =)
Отправка списка открытых тикетов trac-а на почту
Появилась задачка: есть система trac, в 8 часов утра нужно сбрасывать на определенную почту список активных тикетов с определенным владельцем.
Решил все это дело написанием скрипта на perl, который засовывается в кронтаб.
Решение не идеальное, но свою задачу решает:
-
#! /usr/bin/perl
-
-
use strict;
-
use warnings;
-
-
use DBI;
-
-
###
-
### Start - Переменные значение которых нужно переопределить, для того, чтобы скрипт работалY
-
-
# Путь к базе трака
-
my $file = "/var/trac/test/db/trac.db";
-
-
# Кто должен быть владельцем тикета
-
my $owner = "bessarabov";
-
-
# Мыло на которое нужно отсылать полученные данные
-
my $email = "ivan\@bessarabov.ru";
-
-
### End - Переменные значение которых нужно переопределить, для того, чтобы скрипт работалY
-
###
-
-
-
# Подключаюсь к базе данных трака
-
my $dbh = DBI->connect("dbi:SQLite:dbname=$file","","", { RaiseError => 1, PrintError => 0 }) or die "Failed to connect to SQLite filesystem digest cache database at $file: " . DBI->errstr;
-
-
$dbh->{unicode} = 1;
-
-
# Запрос, который выдает список всех активных тикетов для указанного пользователя
-
my $sth = $dbh->prepare("
-
SELECT id, summary
-
FROM ticket
-
WHERE
-
status IN ('new', 'assigned', 'reopened')
-
AND owner = '$owner'
-
ORDER BY id");
-
-
$sth->execute();
-
-
# Переменная в которую я собираю всю необходимую мне инфу
-
my $content;
-
-
while (my $result = $sth->fetchrow_hashref) {
-
$content .= "#" . $result->{id} . " - ". $result->{summary} . "\n";
-
}
-
-
# Если есть хоть один тикет
-
if ($content) {
-
-
# тогда дописываю шапку
-
$content = "All active tickets for user $owner\n\n" . $content;
-
-
# и отправляю письмо
-
binmode MAIL, ":utf8";
-
print MAIL $content;
-
}
-
-
$sth->finish;
Система охлажения жестких дисков
Совершенно случайно выяснил, что, оказывается, температура моих жестких дисков в моем домашнем сервере зашкаливает. В машине установлена 2 одинаковых винта Seagate Barracuda ST3500630AS объемом по 500 Gb, температура первого диска колеблется около 50 °C, а второго — около 48 °C.
В пятницу мне рассказали следующее, цитирую (мега респект и уважуха Алексею):
«на самом деле, конечно, зависит от дисков (производителя)
Seagate, например, для своих sata-барракуд говорит ( и это официальная
информация), что при температуре 50 градусов по цельсию, работа устройства не
гарантируется, проще говоря может сдохнуть
при 45 градусах они проводят свои испытания на дисках
то есть, надо понимать, что 45 градусов это тоже не оптимальная среда для
функционирования в штатном режиме»
Соответственно, я перепугался и сегодня за 493 рубля купил в Никсе систему охлаждения жестких дисков VIZO Voyager HDD Cooler (2 штуки). Установил (этим объясняется те полчаса, что мой сервер был недоступен). Установка совершенно элементарна (правда пришлось снять внутренний кард ридер, так как винт вместе с системой охлаждения занимает места в два раза больше и из-за этого мне пришлось разнести винты по разным отсекам, но это и к лучшему, когда они один над друг другом, то нижний нагревает верхний).
Итак, собрал, включил. Проверил, что все работает и оставил на некоторое время, чтобы дать возможность пособираться статистике. Через пару часиков залез в систему мониторинга munin:

Wow!
Вместо 50 градусов — 35! Разница в 15 градусов!
Кстати, классный график. На нем отлично видно и те полчаса, что сервер был в дауне, и то, что сейчас температура винтов одинаковая, и то, что раньше, когда один винт был над другим, верхний нагревался на 2 градуса больше.
PS Вот статья на английском, про установку этой же системы охлаждения, но там уменьшение температуры всего на 4-7° C.
My bash history
Наткнулся на интересный пост.
Следующая консольная команда linux-а отображает список разных программ, которые запускал пользователь, с указанием количества их запуска:
history 1000 | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head -n 50
Вот мой вывод этой команды на моей домашней машине (все что меньше 10 я показывать не стал):
123 cd 85 sudo 59 ls 49 vim 31 svn 25 ping 22 clear