Закончил читать очередную книгу Тома Демарко "Deadline Роман об управлении проектами".
Книжка мне очень понравилась, прежде всего нестандартным способом изложения материала. Это именно роман, с сюжетом, героями и даже небольшой любовной линией.
По сюжету герой, мистер Вебстер Томпкинс, управляет большим предприятием по выпуску софта и сталкивается с разными ситуациями. Выводы же сделанные в процессе работы он заносят в свою записную книжку.
Большинство изложенных ситуации я уже читал в "Человеческом факторе", но стиль подачи позволяет как бы со стороны понаблюдать за действиями героев в них.
Конечно же, это очередная книга-сказка об управлении сказочными людьми, в сказочном королевстве, но все же она позволяет задуматься, провести параллели с реальными ситуациями и возможно даже натолкнет на решения.
Считаю что книга достойна занять место на моей полке с литературой.
Большая часть этого блога посвящена вопросам и мыслям, которые возникают у меня при разработке программного обеспечения.
воскресенье, 28 ноября 2010 г.
пятница, 12 ноября 2010 г.
How to install Etherpad on Windows

Linux систем у меня в хозяйстве нет, потому ставить решил на виртуальную машину с Windows 2008 R2 (x64), на которой крутится еще куча всего.
Для начала нашел вот эту инструкцию и попытался выполнить ее. Но cтолкнулся с рядом трудностей, посему попытаюсь ее перевести и немного дополнить.
Если кратко то надо сделать следующее:
Поставить:
- MySQL
- mysql-connector-java-5.1
- CygWin т.к. все файлы сборки заточены под posix команды
- Java JDK (я ставил jdk1.6.0_22)
- Scala, причем ставить надо не последнюю (на момент написания 2.8.0), а предыдущую - 2.7.7. В противном случае на этапе компиляции получите ошибку "error not found type byte"
- Сам Etherpad, причем редакцию предназначенную именно для windows, вот отсюда.
После чего надо создать фолдер, не содержащий пробелы, например "C:\Prog". И сделать в него символические линки используя либо вот эту програмку, либо иной способ например Alt+F6 в FAR Manager.
В результате должна получится следующая структура каталогов:
- С:\Prog\Java\jdk1.6.0_22
- С:\Prog\MySQL\MySQL Server 5.1
- С:\Prog\Scala
- С:\Prog\mysql-connector-java-5.1.13-bin.jar
После этого надо создать вот такие вот переменные среды:
- JAVA_HOME = С:\Prog\Java\jdk1.6.0_22
- SCALA_HOME = С:\Prog\Scala
- JAVA = С:\Prog\Java\jdk1.6.0_22\bin\java
- SCALA = С:\Prog\Scala\bin\scala
- MYSQL_CONNECTOR_JAR = С:\Prog\mysql-connector-java-5.1.13-bin.jar
А так же добавить вот эти пути к переменной среды PATH:
- C:\CygWin\bin
- C:\Prog\MySQL\MySQL Server 5.1\bin
- C:\Prog\Scala\bin
- C:\Prog\Java\jdk1.6.0_22\bin
Причем, крайне важно добавить путь C:\CygWin\bin в начало PATH!. В противном случае на этапе компиляции получим ошибку связанную с find. Т.к. вместо find из CygWin будет использоваться системный find, а он использует совершенно иной синтаксис.
После всего этого создаем базу в mysql для EtherPad:
Запускаем интерпретатор команд:
mysql -u root -p
И выполняем вот такие команды :
create database etherpad;
grant all privileges on etherpad.* to 'etherpad'@'localhost' identified by 'password';
quit
Ну и теперь запускаем cmd.exe
Делаем cd C:\etherpad-win\trunk\etherpad
И запускаем компиляцию bash bin\rebuildjar.sh
Если все сделано верно то компиляция завершится без ошибок.
И можно будет запустить сервис командой run-local.bat
После чего зайдите на http://localhost:9000 и насладитесь работающим Etherpad'ом.
Но если попытаться зайти на него снаружи по адресу http://myserver:9000 то получите сообщение в браузере invalid superdomain.
Для того, чтобы работать удаленно надо открыть файл C:\etherpad-win\trunk\etherpad\src\etherpad\globals.js и добавить в список доменов наш, например вот так:
var SUPERDOMAINS = {
'localbox.info': true,
'localhost': true,
'etherpad.com': true,
'myserver': true
};
После чего снова все пересобрать и на этот раз все должно заработать.
Надеюсь установка и настройка этого тула сможет способствовать улучшению коммуникаций в вашей команде.
суббота, 6 ноября 2010 г.
Книга: "Человеческий фактор"
С удовольствием прочел книгу Тома Демарко и Тимоти Листера "Человеческий фактор". Написано весело и легко. В ненавязчивой манере позволяет улучшить понимание того как формируются команды и как этим командам помочь достичь успеха.
Вот несколько тезисов которые мне особо понравились в этой книги:
- Серьезные проблемы имеют не сколько технологическую, сколько социологическую природу.
- Многие руководители слишком много времени уделяют технологиям, забывая что человеческий фактор
- Команды это наши рабочие единицы, а потому наша область деятельности - преимущественно человеческое взаимодействие.
- Поощрение атмосферы, не позволяющей допускать ошибки, заставляет людей занимать оборонительные позиции.
- Именно уникальность участников команды является залогом активности и эффективности.
- Единственное стабильное состояние в жизни проекта - трупное окоченение
- Каждый час сверхурочных компенсируется часом недоработки
- Трудоголизм - это заболевание
- Команда имеет право вето на сдачу продукта если по ее мнению он не готов,и не имеет значение готов ли клиент принять такой продукт
- Даже в тех редких случаях, когда давление на человека остается единственным вариантом, руководитель должен оказывать это давление последним
- Проекты, в которых шеф не оказывал давления, характеризовались самой высокой производительностью
- Единственным доказательством того, что открытая планировка улучшает производительность, всегда служит упорное повторение этого утверждения
- Поток - это состояние глубокого, почти медитативного погружения в работу
- Сотрудник, который постоянно пытается войти в поток и постоянно вынужден отвлекаться, - человек недовольный
- В большинстве офисов, шума и помех достаточно, чтобы затруднить серьезные мыслительные процессы до невозможности
- Работников не очень заботит вид офиса, но их заботит шум, уединенность и площадь стола
- Большая часть ошибок при найме вызвана излишним вниманием к внешности кандидата и недостаточным к их способностям
- Нанимая человека попросите его подготовить краткую презентацию по известной ему теме для всей команды, а потом обсудите его со всей командой
- Вы причините меньший ущерб организации, если выстроите сотрудников перед дулом пулемета, чем если организуете переезд
- Ничто не может лишить сотрудников мотивации настолько эффективно, насколько это сделает осознание ими того факта, что руководство считает их некомпетентными
- Вера в то, что сотрудники автоматически принимают цели организации, признак наивного оптимизма руководства.
- Лучший успех - тот, в котором нет очевидного участия руководства, а команда работает как содружество равных.
- Человек которому нельзя доверить автономную работу, бесполезен
- Руководитель находится за пределами команды и время от времени подчеркивает направление развития и убирает административные препятствия
- Команда - это сеть, а не иерархия. Лидерству здесь нет места.
- Женщины работают не чуть не хуже мужчин, и в команде они должны быть непременно.
- В работе должна быть возможность для беспорядка ,это могут быть пилотные проекты, игры, мозговые штурмы, путешествия, конференции etc. Это объединяет команды и способствует их кристаллизации
- Лучшие руководители способны выделять тех кто сочетает перспективу и зрелость и позволить им работать самим. Так они принесут больше пользы компании
- Взаимное обучение сотрудников возможно лишь при отсутствии внутренней конкуренции
- Люди не любят перемен т.к. не уверены что у них все получится. Для успешных изменении люди должны быть уверены что при любых результатах их не накажут.
- Переменам способны помочь лишь те кто в них верит, но способен оспорить. Те кто слепо верит и те кто активно противодействуют - враги перемен.
- Любые регулярные собрания это скорее ритуалы и они не несут пользы
понедельник, 1 ноября 2010 г.
Log4net: Issue with RollingFileAppender
Достаточно давно работаю с Log4Net и в принципе нахожу его весьма неплохим и простым в использовании инструментом.
Причем пользуюсь я им именно в режиме ротации логов (RollingFileAppender)
Настраиваю его как то вот так:
Недавно столкнулся с тем, что, иногда в папке с логами, вижу дикое количество очень коротких фрагментов лога. Работать с такими обрезками совершенно не возможно.
После некоторого исследования оказалось, что происходит это, если основной файл лога (в нашем случае All.log) был залочен (например открыт в редакторе), после этого механизм ротации логов перестает работать человеческим образом и начинает генерировать файлы вида All.log.123 при каждом создании логера этого типа.
Причем если убрать +MinimalLock то картина становится еще хуже т.к. новые файлы просто не создаются, а переименовывается один и тот же.
Без выключения staticLogFileName мне это победить не удалось, а с staticLogFileName мне не подходит.
Причем пользуюсь я им именно в режиме ротации логов (RollingFileAppender)
Настраиваю его как то вот так:
<appender name="all" type="log4net.Appender.RollingFileAppender">
<file value=".\All.log" />
<appendToFile value="true" />
<maxSizeRollBackups value="1000" />
<maximumFileSize value="10000" />
<rollingStyle value="Size" />
<staticLogFileName value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{version}] - %message%newline" />
</layout>
</appender>
<file value=".\All.log" />
<appendToFile value="true" />
<maxSizeRollBackups value="1000" />
<maximumFileSize value="10000" />
<rollingStyle value="Size" />
<staticLogFileName value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{version}] - %message%newline" />
</layout>
</appender>
Недавно столкнулся с тем, что, иногда в папке с логами, вижу дикое количество очень коротких фрагментов лога. Работать с такими обрезками совершенно не возможно.
После некоторого исследования оказалось, что происходит это, если основной файл лога (в нашем случае All.log) был залочен (например открыт в редакторе), после этого механизм ротации логов перестает работать человеческим образом и начинает генерировать файлы вида All.log.123 при каждом создании логера этого типа.
Причем если убрать +MinimalLock то картина становится еще хуже т.к. новые файлы просто не создаются, а переименовывается один и тот же.
Без выключения staticLogFileName мне это победить не удалось, а с staticLogFileName мне не подходит.
Подписаться на:
Сообщения (Atom)