Skram: автоматизируем отчеты по проектам


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

Сначала рассказ о сделанном и запланированных задачах происходил в свободной форме. После окончания чатика обязанностью ведущего было пройтись по логу и составить отчет по каждому участнику, после чего разослать его команде. Отчет занимал много времени и мой коллега Денис Карпов задумался об автоматизации задачи. Результатом стал плагин для скайпа Skram.

Возможности

Основная задача плагина — упрощение создания отчета при минимальном влиянии на формат общения. Задачу эту решили путем введения простых тегов для пометки сообщений. Рассмотрим простой пример:

skram master: #start:super-project-chat

skram master: Logging chat: #skrm.mstr/$asdfsadf234afs. Project: Super proJEcT.

skram master: Developer делал что?

developer: #done Сделал очень важную таску по проекту (XXX-102)
#plans посмотреть новый дефект
может все там работает как надо

developer: #blocker одмины не дают посмотреть ролик с вебинаром на ютубе :(

skram master: ок, спасибо. Тестер?

tester: #plans ждать новую сборку и проверить заресолвленные талоны

skram master: ок, всем спасибо

skram master: #end

Из этого диалога плагин выцепит, что разработчик занимался тем (#done) , что сделал очень важную таску по проекту и планирует (#plans) посмотреть новый дефект. Также он пожаловался (#blocker), что IT служба полные редиски и не даёт посмотреть вебинар, выложенный на ютуб. Тестировщик ничего не делал с момента последнего чатика и ждет (#plans) новой сборки приложения.

В этом диалоге есть 2 технических момента: начало и конец записи, которые задаются командами #start и #end соответсвенно. После ввода #end плагин автоматически откроет почтовый клиент с сформированным отчетом и заполненным списком адресатов:
Полученный отчет можно подредактировать (если нужно) и отправить адресатам.

Приведенные в качестве примера теги и шаблон по которому формируется отчет - не предопределены и настраиваются для каждого проекта. Плагин поддерживает любые теги, что позволяет гибко настроить формат чата и отчета под свои нужды, лишь бы шаблон вывода предусмотрел их отображение. Кроме того поддерживаются alias'ы, которые могут быть использованы для сокращения команд. В итоге можно писать не #done, а #d.

Настройки

Все настройки хранятся в ini файлах. Есть основной файл skram.ini, где содержится информация о заведенных проектах, путях где лежит файл с параметрами проекта и путь до шаблона, по которому сформируется отчет:
;файл с настройками нашего супер проекта и шаблон к нему
[super-project-chat]
ini=myprj.ini
template=common.html

[Properties]
rollingLogFileMaxBytes=5000000

Файл проекта выглядит так:

[Names]
#отображения skype имен на нормальные названия
skrm.mstr=Skram master
developer=Developer
tester=Tester
#о ! и ? читаем в документации :)
ignoredguy=!Петр Игноренко
optionalguy=?Иван Возможин
[Mail]
subject=Протокол чата по проекту Super proJEcT
to=proj-manager@company.com
cc=skrm-master@company.com; dev@company.com; tester@company.com

[Formatting]
date=%d/%m/%Y

[Aliases]
d=done
p=plans
n=notes
b=blockers

[Properties]
globalTags=blockers

Более подробно формат описан в документации (pdf)

Поддерживаемые платформы

На текущий момент версия плагина есть как для Windows так и для Linux.

Windows версия ориентирована на работу с Outlook и других почтовых клиентов пока не поддерживает.

Linux клиент использует indicator API для показа иконки в трее, поэтому завязана на убунту, но так как весь код по логированию вынесен отдельно , переписать эту часть не составит труда и под другие API. Завязки на почтовый клиент нет. Вместо этого для формирования отчета вызывается shell скрипт, который волен делать с результатом что хочет. Имеется заготовка для вызова Thunderbird.

Впечатление от owncloud 4.5 + syncclient

Недавно наконец то добрался до восстановления ownCloud на домашнем сервере.
Честно сказать до переустановки сервера я им мало пользовался, поставил больше для эксперимента. Причин этому было несколько:
  1. Тормоза при работе с большими файлами и папками с большим числом фотографий в высоком разрешении. От них старенькая машинка вставала на колени под нагрузкой.
  2. Очень сырой sync client под linux и windows. Достаточно вспомнить создание фантомных папок с названием как у уже имеющиеся папки. При попытке удалить такое чудо через веб интерфейс терлась и оригинальная папка со всей инфой
  3. Косяки с русскими символами при работе как через web, так и через sync client.
  4. В Sync клиенте нет никакой сигнализации о том, что же он делает. Это вам не дропбокс, который помечает значками файлы и папки в подконтрольной директории и сигнализирует сменой иконки в трее, когда идет синхронизация с сервером.
При работе с owncloud было видно, что софт еще сыроват. Нормальная работа получалась только через webdav, но это не сравнится по удобству с автоматичеки синхронизуемой папкой.

И вот, новая версия 4.5 (точнее 4.5.4) с обещаниями исправлений багов и улучшений в работе sync клиента под интересующие меня платформы.

Так как у меня не было никаких серьезных данных, переустанавливал с нуля. Установка проходит стандартно прямо по описанию в документации. Финальная настройка немного смущает переводом: из подписей не сразу понятно, что для инициализации базы просят имя и пароль пользователя с правами создания схемы и пользователя для owncloud. Интерфейс сильных изменений не претерпел, разве что сделали более гламурное отображение папок в разделе "Рисунки".

Из вкусного - добавился встроенный редактор текстовых файлов, так что заметку набросать или скрипт написать, можно прям в браузере.

Клиент для синхронизации действительно улучшили. Теперь он так не портит хранилище и хорошо относится к русским буквам в названиях. Косячки встречаются, но небольшие. Как пример, не хотела удаляться папка. Локально её уже не было, а вот через веб интерфейс и на других синхронизуемых машинах она осталось, но без файлов. Столкнулся только 1 раз, больше такое воспроизвести не удалось.

До сих пор нет почти никакой сигнализации о том, чем же занимается sync клиент. Так что о появлении новых файлов или о том что все локальные изменения отправлены на сервер, остается только догадываться.

В целом owncloud уже можно пользоваться, но для важных вещей я бы рекомендовал провести тестовый период и почаще делать бэкапы :). Ждем дальнейшей полировки и устранений шероховатостей.


Qwirkle своими руками

Хочется поделиться опытом создания своей собственной версии замечательной игры Qwirkle. Это интересная логическая игра, напоминающая домино.

Фишки в оригинальной игре деревянные, но в интернете я встречал только инструкции как сделать картонную версию, что не спортивно. Ниже рассказано как сделать деревянную. Для интересующихся приведены финансовые и временные затраты.

В инструкции рассказано о изготовлении "быстрой" версии, без заморочек с лакированием фишек и нанесением разметки на них краской. В конце статьи есть приблизительные финансовые расчеты для такого варианта.

Приготовления

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

Размер фишек в коробочной версии приблизительно 3x3 сантиметра. Мы не будем делать такой же размер с точностью для миллиметра и будем отталкиваться от размеров имеющихся материалов.

Инструменты

  1. Угольник
  2. Простой карандаш
  3. Электрический лобзик с пилкой по дереву (желательно чтобы у пилки был "чистый" рез)
  4. Наждачная бумага двух степеней зернистости - Р150 и Р400
  5. Ножницы или канцелярский нож
  6. Штангенциркуль (желательно, но можно обойтись и угольником) 
Я очень рекомендую брать именно лобзик, а не пилу, так как из-за высоких оборотов у него получается качественный, почти гладкий, срез под прямым углом и предсказуемая ширина пропила (не рассматриваем убитые экземпляры с люфтом пилки и кривой площадкой, которая дает косые срезы)
необходимые инструменты

Материалы

  1. 5 метров обработанной рейки размером 10x30мм. У нас на строительном рынке такая продается по 15 рублей метр.
  2. Набор цветной самоклеящейся бумаги 110 рублей.
У нас рейка продавалась планками по 3 метра, поэтому я купил 2 штуки (итого 90 рублей). Размер реек немного гуляет, поэтому при покупке лучше взять с собой линейку или штангенциркуль чтобы выбрать одинаковые экземпляры.

Делаем

 Сначала нужно разметить рейку на фишки.Так как ширина рейки 3 сантиметра, фишки мы будем делать размером 3х3 см. Для этого берем угольник и остро заточенный карандаш и наносим разметку. Границы между фишками нужно делать с учетом толщины пилки лобзика (измеряется штангенциркулем), нанося двойную разметку. Такой подход позволяет повысить точность, так как пилить нужно между двух линий, а не по одной. При разметке сразу выкидывайте области с сучками, так как нам не нужны "меченные" фишки.

Всего необходимо сделать 108 фишек. Разметка реек займет 2 часа.

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

Слева заготовка для фишки получаемая при использовании подпорки, справа без.
Распиловка реек займет около часа, если не торопиться.

Теперь у нас есть гора заготовок. Пришло время заняться шлифовкой. Для этого сначала грубой наждачкой снимаем фаску с ребер фишки и убираем выступающий "скол" другой фишки (если есть). После этого наждачкой с мелким зерном еще раз проходим по фаскам и полируем грани до гладкого состояния. В результате получаем готовую фишку, которую приятно держать в руках.
Те же фишки после обработки наждачкой
Этот этап на мой взгляд самый скучный и неприятный. Потраченное время составит 2-3 часа.




Осталось разметить получившиеся фишки. Для этого 
  1. скачиваем pdf  файл с контурами фигур (оригинал в формате Inkscape svg)
  2. заправляем в принтер 6 разноцветных листов самоклеящейся цветной бумаги так, чтобы напечатать контуры на обратной стороне (которая не приклеивается)
  3. печатаем 6 копий
  4. вырезаем получившиеся фигуры и наклеиваем на фишки
Все это займет от часа до двух в зависимости от того, как быстро вы работаете ножницами.


Итоги

В результате получаем свою версию Qwirkle затратив 200 рублей и порядка 8 часов труда на все изготовление. Теперь самое время сыграть :)


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

Для более износостойкого варианта необходимо нанести фигуры краской и покрыть фишки лаком. Данное решение безусловно долговечнее, но затратнее по материалам и времени изготовления.

Приблизительный расчет на основе акриловых красок (нагуглил фирму Decola) и покрытием лаком дает еще порядка 800 рублей (~65 рублей за 50мл. баночку одного цвета + лак) . По времени думаю уйдет не менее 8 часов сосредоточенной работы без учета сушки.

 

 

Проверка скидки выходного дня на labirint.ru

До конца 2012 года в магазине labirint.ru каждый месяц устраивается акция: в один из выходных они на все товары дают скидку в 3 процента.

Вот скриптик для того чтобы автоматизировать проверку наличия скидки и не проверять руками каждый выходной.
#!/bin/bash

#список почтовых адресатов для рассылки сообщения о скидке (через пробел)
MAILERS="john@example.com mary@example.com"

logo_img=$(wget -q http://www.labirint.ru -O - \
 | iconv -f cp1251 -t utf8 \
 | grep -A 2 "id=\"logo\"" \
 | xpath -e '//img[@src]/@src[1]' 2>/dev/null \
 |  sed -E -e "s/ src=\"(.+)\"/\\1/")

if [ $logo_img == "http://img.labirint.ru/design/logo_we.png" ]; then
  mail -s "Скидка в лабиринте" $MAILERS <<-EOF
 Weekend discount at http://www.labirint.ru
EOF
fi

Добавляем этот скрипт на выполнение в крон:
0 6 * * 6 $HOME/bin/labirint_discount_check.sh
и ждем писем счастья :)

P.S. для корретной работы нужны пакеты wget и libxml-xpath-perl

Запрет скайпа как способ повысить безопасность

В одной компании случилась интересная ситуация: в связи с недавней рассылкой вируса по скайпу в виде короткой ссылки, запретили пользоваться этим мессенджером. Форсят майкрософтовский Lync. Причем ладно бы делали это в рекомендательном порядке, но нет, активно выживают скайп с рабочих мест:
  1. вводят запрет на ввод exe'шника (решается переименованием skype.exe в skype2.exe ;) ). 
  2.  режут на сетевом уровне (уже серьезнее, приходится пользоваться всякими интернет шлюзами)
Это при учете того, что на очень многих проектах скайп был основным инструментом общения, причем не только внутри компании. Конечно, он не был "официальным" инструментом, который стоит на поддержке IT служб, но из-за удобства групповых чатов и других фишек, прочно обосновался наравне с аутлуком, офисом и другими рабочими инструментами.

Хотелось бы выразить свою позицию по этому вопросу. Запрещение — это неверный подход. Главная проблема здесь совсем не скайп, а недостаточное обучение пользователей вопросам безопасности.

Я могу понять, когда заражение и распространение вируса проходит совершенно без ведома пользователя, но когда для заражения нужно пройти по какой-то ссылке, скачать exe файл и запустить его ручками (пусть даже от знакомого контакта!), виноват здесь отнюдь не мессенджер. Пользователи слабо представляют элементарные правила по безопасности и тут надо не скайп запрещать, а устраивать ликбезы и семинары по безопасному использованию компьютеров.

Такое поведение аналогично тому как запрещать электронную почту, мотивируя это возможностью получить в письме ссылку на exe'шник с вирусом.