Показаны сообщения с ярлыком reference. Показать все сообщения
Показаны сообщения с ярлыком reference. Показать все сообщения

четверг, 22 марта 2012 г.

Perforce: edit, add, delete в командной строке


      Всем привет.
      Сегодня наткнулся на интересный способ для автоматического добавления файлов на редакторивание в perforce, пришлось править, и потому решил сразу написать для себя и будущих поколений небольшую подсказку-памятку.
      Задача очень простая. В депоте хранится клиент в распакованном виде, т.е. так как он будет лежать на машине у пользователей. При сборке новой версии нужно переписывать измененные файлы, добавлять новые, и, по-возможности, удалять старые.
      Как раз третий шаг у нас и не выполнялся. Итак, что было?
      Сборка шла по следующим шагам:
  1. Удаление локальной версии;
  2. Копирование на ее место новой, только собранной версии клиента;
  3. Добавление на чекаут измененных файлов;
  4. Добавление новых файлов;
  5. Коммит изменений на сервер.
      Как видим удаления нет. Некоторое время это было не критично, но вот пришлось править.
      Недолго думая я решил, что после чекаута измененных файлов необходимо вставить код, который будет удалять в депоте файлы, отсутствующие локально. Вроде все просто. Добавил команду, между 3 и 4 шагами, и... обломался. Не было удалено ни одного файла, хотя пару кандидатов на примете у меня было.
      Причина оказалась банальна. На 3 шаге был вот такой вот код:
   
            p4 edit \\depot\client\...
            p4 revert -a -c
       
      Т.е. сначала на редактирование брались тупо все файлы, а потом делался реверт тех файлов, которые не были изменены. Особенность perforce (да наверное и любой другой системы контроля версий ) такова, что при реверте локальный файл восстанавливается. Другими словами, даже если в сборке и не хватало файлов, то после этой команды они восстанавливались из депота и мой шаг по удалению ничего не находил.
      Вот эту штуку и пришлось править. В perforce есть хорошая команда, которая позволяет отобрать уже только измененные файлы и взять на редактирование только их. Она же позволяет находить файлы, которые нужно удалить в депоте.
      После небольшой правки скипт стал выглядеть примерно так:

            echo "DELETE MISSED FILES"
            p4 diff -sd \\depot\client\... | p4 -x - delete
         
            echo "CHECKOUT CHANGED FILES"
            p4 diff -se \\depot\client\... | p4 -x - edit
         
            echo "ADD NEW FILES IN PERFORCE"
            cd /d D:/p4/client
            dir /b /s /a-d | p4  -x - add -f

      Все просто и наглядно.
      Ну а потом делаем коммит на сервер. Референс на все команды perforce можно глянуть тут: http://www.perforce.com/perforce/doc.current/manuals/cmdref/index.html
      Всем доброй ночи.

вторник, 28 декабря 2010 г.

Kanban vs Scrum

Привет всем. 

Сегодня тема не совсем соответствует названию сайта, но я думаю что с автором мы договоримся. 

Последнее время набирает популярности новая техника управления проектами под названием "Канбан", которую как обычно придумали японцы. Вот уж до чего непоседливые. Сегодня я попытаюсь немного рассказать о канбане.

Для начала посмотрим, что нам говорит Вики по поводу канбана

Канбан (камбан) — система организации производства и снабжения, позволяющая реализовать принцип «точно в срок».

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

Вот ссылочка на книгу: Scrum и Kanban: выжимаем максимум от Хенрика Книберга и Маттиаса Скарина. Книга на русском и помогает сделать первый шаг в понимании того, что такое канбан. 

Если кратко, то канбан работает во многом аналогично скраму, т.е. присутствует доска, standup митинги, много общения между разработчиками и т.д. Самое главное, что как и в скраме существует ограничение на количество работы, которую команда может делать в определенный момент и никто не может поменять это объем работы. 

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

Например у нас есть команда: 5 программистов. Ставим ограничение на количество задач в 9. Дальше у нас есть проект с набором задач, количество которых конечно же огромно. Лид (продюсер, владелец продукта) выбирает первые 5 задач и программисты начинают работать над ними. И вот по каким-то причинам они не могут закрыть ни одну из задач, тогда программист, который заблокирован приостанавливает свою задачу и берет новую у лида. Таким образом в работе оказывается уже 6 задач. Если у команды накапливается 9 незакрытых задач, то она больше не может брать новые задачи, а должна во что бы то не стало закончить хотя бы одну из уже взятых задач. Такой подход позволяет увидеть проблемы проекта очень быстро, поскольку мы обязаны завершать все задачи, чтобы получать новые и если где-то образуется затык, то вынуждены его исправлять, а не откладывать на будущее. 

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

Когда же такой подход наиболее приемлем? На каком проекте или на какой стадии проекта?

Я для себя нашел как минимум один тип проекта, когда можно применять такой подход. Это багафикс. Многим из вас наверное приходилось работать на проекте в период багафикса и вы знаете, что скрам при багафиксе работает не очень хорошо. Основная проблема для скрама - это отсутствие фиксированного объема работы, которую можно оценить и взять на спринт. Ситуация меняется каждый день, приходят задачи, которые нужно сделать вчера, начальству плевать на ваши попытки объяснить "что спринт и скрам и вообще..." и весь спринт летит к чертям.

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

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

Единственное, что упустил, это слабые стороны и недостатки канбана. Оставлю это вам и буду рад услышать ваше мнение. 

Всем доброй ночи.

суббота, 16 октября 2010 г.

Живи действуя

Привет всем.

Несколько раз за неделю наталкиваюсь на мысль о том, что достижение нирваны без действия невозможно.
В первую очередь это был перевод статьи "6 Tips To Stop Talking And Start Doing".
"Суть успешного стартапа - это превращение идей в действие" и
"Спенс определяет 3 простых ключевых слова, который приведут к совершенству в бизнесе — фокус, дисциплина и действие. Если что-либо из этого у вас отсутствует, на выходе вы получите посредственность. А как только вы начнете мириться с посредственностью, вы станете для нее магнитом."

Потом появилось две статьи на блоге Армена Петросяна "Мыслехранилище №28". Первая о книге Rework и вторая о использовании тегов при сохранении информации "Теги помогают эффективнее действовать". Вот несколько цитат:
"Действовать по обстоятельствам – это нормально. Просто сядьте в самолет и взлетайте. Симпатичную рубашку, крем для бритья и зубную щётку можно купить, уже добравшись до места" (Rework)

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

Конечно эти статьи не только о действиях, но каждый видит то, что хочет видеть, то что может видеть со своей колокольни.

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

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

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

Своими успехами поделюсь в будущих записях.

Всем доброй ночи.

пятница, 11 июня 2010 г.

Блог Джона Роббинса

Читаю книгу Роббинса об отладке приложений. Одна из тех книг, которые стоит прочитать всем. Программистам конечно.

Всем доброй ночи

Problem with delete[]

Рубрика Reference
Буду собирать ссылки на интересные для меня статьи.
delete[] - интересная проблема, возникающая при удалении массива объектов.

Всем доброй ночи