Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение > Программы для программистов - II.


Автор: Gluttton 9.8.2009, 14:54
Доброго времени суток!

Уже поднималась http://forum.vingrad.ru/index.php?showtopic=231777&view=findpost&p=1665305, но меня интересует нечто другое, описаное в http://forum.vingrad.ru/index.php?showtopic=231777&view=findpost&p=1669523 к указанному выше топику. А именно:

Цитата(Lazin @  15.10.2008,  22:50 Найти цитируемый пост)
любой программист обязан владеть следующими вещами:
- система контроля версий(version control system), например ClearCase, SVN, Git, Mercurial... 
- toolchain - набор программ для компиляции(или запуска, если используется интерпритируемый ЯП) и генерации выполняемого кода из исходных текстов, например это может быть компилятор, компоновщик итд...
- система сборки - набор программ для управления процессом сборки...
- багтрекер (Trac, Rational ClearQuest)вики(Moin Moin), или генератор документации(doxygen)...


Недавно начал успешно использовать систему контроля версий Subversion (на это меня натолкнула http://alenacpp.blogspot.com/2007/09/blog-post.html). Ощущение от использования трудно передать словами, был бы хвост - завилял бы smile .
Мои подозрения о том, что система контроля версий не единственная "вкусность", используя котору можно облегчить себе жизнь оправдались. Об этом я прочитал в http://alenacpp.blogspot.com/2008/01/wiki.html.

Предварительно (руководствуясь отзывами) остановил свой выбор на Trac.
Попытался поставить - ничего не вышло...
Ещё раз расспросил Googl'a. Посмотрел в сторону Bagzilla и Bonsai, окончательно запутался и понял, что я не смогу найти ответ пока точно не пойму, чего хочу.

А теперь непосредственно к вопросу.
Прошу рассказать, кто, чем и для чего пользуется и посоветовать, на чем монжно остановить выбор новичку исходя из следующих (предварительных) требований:
- программы должны быть бесплатны;
- системы будут использованы при написании программ с использованием C++, .NET, SQL(DDL). (Не web-приложения);
- OS Windows;
- командная (удаленная) работа не подразумевается, т.е. из расчета на то что "команда" состоит из одного человека иными словами для самостоятельно использвания (хотя, с другой стороны, возможно есть смысл "пощупать", что-то и для командной работы).

Буду признателен за любую помощь.

Автор: Любитель 9.8.2009, 19:42
Смысл в багтреккере/тасктреккеров при работе в одиночку сомнителен. Только если работаешь над множеством огромных проектов и не в состоянии помнить о состоянии каждого smile 

Смысл в билд-системе? Да, есть конечно (хотя в CI и сетапе билд-сервера - это уже только в академических целях). Для .Net бы рекомендовал в первую очередь посмотреть на NAnt. С С++ подружить его вполне можно - само собой.

Полезным трюком будет также научить билд-систему прогонять тесты (модульные и функциональные) и пекеджить систему для деплоя (инсталлер).

Автор: Gluttton 9.8.2009, 19:55
Цитата

Смысл в багтреккере/тасктреккеров при работе в одиночку сомнителен. Только если работаешь над множеством огромных проектов и не в состоянии помнить о состоянии каждого  


Ну, к сожалению, множеством проектов и не пахнет smile ... А за мнение спасибо. Т.е. багтреккер "в одиночку" - из пушки по воробьям?

Цитата

Смысл в билд-системе? Да, есть конечно (хотя в CI и сетапе билд-сервера - это уже только в академических целях).


Ну этот вопрос меня, собственно говоря, интересует в самую последнюю очередь... 

Цитата

Полезным трюком будет также научить билд-систему прогонять тесты (модульные и функциональные) и пекеджить систему для деплоя (инсталлер).


С тестами я только начал разбираться, но за рекомендацию опять-таки спасибо smile ...

А
Цитата

вики(Moin Moin), или генератор документации(doxygen)...
 
не приходилось пользоваться?

Автор: Любитель 9.8.2009, 20:35
Цитата(Gluttton @  9.8.2009,  19:55 Найти цитируемый пост)
Т.е. багтреккер "в одиночку" - из пушки по воробьям?

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

Цитата(Gluttton @  9.8.2009,  19:55 Найти цитируемый пост)
Ну этот вопрос меня, собственно говоря, интересует в самую последнюю очередь... 

Хм.. А зря. ИМХО билд-система - это первое, что нужно для организованной работы над проектом.

Цитата(Gluttton @  9.8.2009,  19:55 Найти цитируемый пост)
не приходилось пользоваться? 

Ну.. doxygen-ом, конечно, пользовался. Но для .Net-а есть свои тулзы (встроенный генератор XML-документации, а дальше возможно NDoc, Sandcastle или даже собственная простая XSLT трансформация (в html)).

Автор: NightmareZ 9.8.2009, 20:43
Хороший линк:  http://www.developers.org.ua/archives/jony/2009/06/16/dot-net-development-process/   smile 

Автор: Gluttton 9.8.2009, 23:06
To NightmareZ, 
спасибо, линк действительно хороший  smile ...

То Любитель, 
а какой багтрекер, стоило бы изучить (ознакомиться) с академической целью?

Автор: Любитель 9.8.2009, 23:14
Ну.. С точки зрения базового использования все багтреккеры подобны. С точки зрения администрирования и каких-то особых фишек - конечно, надо изучать. Хотя.. тут проще просто работать с этим багтреккером - само освоится smile

А так - для .Net-чика достаточно неплохо бы уметь админить тасктрекер из TFS, но к бесплатным это не относится. Из бесплатных, пожалуй Trac лучший. А вообще - я серьёзно, не стоит на это время тратить.. С настройкой - надо будет, разберёшься. А всякие мегафишки от багтрекеров - они программерам особо не нужны smile 

Автор: Gluttton 9.8.2009, 23:31
Любитель, 
Цитата

А вообще - я серьёзно, не стоит на это время тратить.

учту... (но наверное немного Trac пободаю smile ).

Ну и... раз уже начал, то добью smile .
А приходилось ли пользоваться Wiki? Зачем ее используют? В качестве "доски объявлений"?

Автор: Любитель 10.8.2009, 00:26
Gluttton, ты смотришь на средства, используемые при командной разработке. Wiki непосредственно для этого не предназначена, но часто используется. Как централизованный портал проектной документации, адресов серверов и пр. Не более того.

Автор: kolobok0 27.8.2009, 10:53
Цитата(Gluttton @ 9.8.2009,  23:06)
...а какой багтрекер, стоило бы изучить (ознакомиться) с академической целью?

при изучении софта обращайте внимание на клиент-серверные приложения.
например VSS - НЕ клиент-серверное решение
SVN - клиент-серверное

это не про багтрэккер, а про систему хранения, но всё же.


(круглый)

Автор: Gluttton 28.8.2009, 21:39
To kolobok0, спасибо за совет. С системами контроля версий у меня всё ОК smile . Уже почти год, как я открыл для себя Subversion и активно её использую...
Более того, раз заговорили о системах контроля версий, то, я слышал, что нужно отдавать предпочтение распределенным системам (например http://ru.wikipedia.org/wiki/Mercurial).

Теперь непосредственно по теме...
Как я и планировал, пободался с Track'ом. Не хватило то ли терпения, то ли ума разобраться... Поискал аналоги. Нашел Redmine (http://habrahabr.ru/blogs/pm/63724/), поставил, поэксперементировал и, согласившись с Любителем, пришел к выводу, что для людей не страдающих раздвоением личности польза от использования подобных систем сомнительна smile .

Зато я, последовав совету Любителя, сосредоточился на использовании систем тестирования (NUnit под MS C#, http://www.techdays.ru/videos/1360.html). Пытаюсь "познакомиться" с Nant и CruiseControl.NET.


Автор: bilbobagginz 28.8.2009, 22:36
по моему скромному мнению, 
вся идея в багтракерах в том, чтобы была полноценная связка:
Код

            development environment
                /                \
               /                  \
              /                    \
version conotrol----------bug/task tracker

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

в принципе вершен контроля конечно же хватит для начала.
но если смотреть стратегически:
а если у тебя появится тестер, или помощник ?
а если тебе придётся работать над несколькими проектами параллельно ?

если ты будешь работать в фирме, то думаю этот вопрос решат тебе 1-2 разовым инструктажом, поэтому не убивай время.
а если будешь работать самостоятельно, то думаю смысл это как раз имеет.

удачи.

Автор: Gluttton 8.9.2009, 14:16
bilbobagginz, спасибо за расширенное разъяснение!

P.S. Нашел для себя и рекомендую таким же как я (интересующихся) почитать http://svn2.xp-dev.com/svn/GuAlex-Tutorial/trunk/Технологии%20программирования/Материалы/Учебное%20пособие%20Технологии%20программирования.doc - достаточно сжато, доступно и в комплексе smile ...


Автор: ДокторТуамОсес 14.6.2014, 10:47
Цитата(Gluttton @  9.8.2009,  14:54 Найти цитируемый пост)
Недавно начал успешно использовать систему контроля версий Subversion (на это меня натолкнула одна статья). Ощущение от использования трудно передать словами, был бы хвост - завилял бы smile .

Да  фигня это. Современные системы контроля версий достаточно тупы и не развиты. Вот если бы можно было сравнивать изменение СТРУКТУРЫ и СЕМАНТИКИ/СМЫСЛА версий программы, то таки да. Было бы круто.
Я сейчас как раз над этим работаю.

Ведь не секрет что можно переколбасить весь исходник не изменив СМЫСЛА программы. Обычные системы контроля версий покажут море измененений в котором можно утонуть и заблудиться.

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

Автор: Ilya81 17.6.2014, 10:22
Цитата(ДокторТуамОсес @  14.6.2014,  10:47 Найти цитируемый пост)
Да  фигня это. Современные системы контроля версий достаточно тупы и не развиты. Вот если бы можно было сравнивать изменение СТРУКТУРЫ и СЕМАНТИКИ/СМЫСЛА версий программы, то таки да. Было бы круто.
Я сейчас как раз над этим работаю.

Ведь не секрет что можно переколбасить весь исходник не изменив СМЫСЛА программы. Обычные системы контроля версий покажут море измененений в котором можно утонуть и заблудиться.

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


Успехов, как говорится. Особенно жду версии для C#. Пока пользуюсь классическими решениями, всё ж лучше, чем ничего. Но, например, даже просто автоматически находить те места, которые требуют refactoring'а, было б классно (да и прочий автоматический code review).

Автор: ДокторТуамОсес 22.6.2014, 09:25
Ilya81, 
Просто реально сталкивался с тем, что такое средство "упрощения деятельности программиста" как система контроля версий, на практике не упрощало, а усложняло жизнь программиста. Поскольку в голове теперь приходится держать не только все нюансы используемого языка программирования и его библиотек, нюансы решаемой задачи, но и нюансы работы с системой контроля версий.
А потом, как я говорил выше, приходится ориентироваться не только в исходнике, а и во всех ветках и версиях.

Короче, при использовании CVS резко возрастает объём информации, которую программист должен держать у себя в голове.

Что естественно приводит к увеличению числа ошибок

Автор: Ilya81 23.6.2014, 11:13
Ну я обычно пользуюсь лишь последней версией, остальное - если когда-то что-то делалось, но было потом выкинуто, а теперь надо вернуть, смотрю историю изменений. Хотя, доводилось отлаживать один кусок программы на стабильной версии другого на какую-то фиксированную дату, а не на последней, исправляемой, версии. 

А что касается branch'ей - в нынешних системах, хорошо, если удаётся просто внести после его создание считанное число правок в них, а потом забыть. Если ж нужно делать merge - это, конечно, не из простых вещей. Так что если эта система нового поколения научится хоть сколько-то автоматизировать merge, это было б классно.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)