tag:blogger.com,1999:blog-25923264699640395442024-03-13T16:23:27.624-07:00Записки отставного сиэмщикаЗаметки о Software Configuration Management.
Управление конфигурацией программного обеспечения.Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.comBlogger79125tag:blogger.com,1999:blog-2592326469964039544.post-56514882413839834832020-01-08T05:05:00.001-08:002020-01-08T05:05:25.592-08:00Arc, система контроля версий Яндекса<div dir="ltr" style="text-align: left;" trbidi="on">
Всем привет!<br />
<br />
Не могу удержаться, делаю редкую здесь запись, ибо не каждый день вижу новую систему контроля версий :)<br />
<br />
На Хабре вышла статья "<a href="https://habr.com/ru/company/yandex/blog/482926/">Arc — система контроля версий для монорепозитория. Доклад Яндекса</a>" по мотивам доклада разработчика из Яндекса о том, как они делают свою VCS. Докладчик объясняет, как дошли они до жизни такой, и что всё это значит.<br />
<br />
Весьма занятно.<br />
<br />
Всё, пойду дальше работать <a href="https://softvelum.ru/">сам собой у нас</a>. Кстати, почитайте наши <a href="https://blog.wmspanel.com/2019/12/2019-summary.html">новости-отчет за 2019 год</a>, там новые продукты и фичи.<br />
<br /></div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-6866889768991205152016-05-22T18:49:00.000-07:002016-05-22T18:49:12.698-07:00Мы выпустили транскодер<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего дня!<br />
<br />
Как я уже писал ранее, наша команда работает над программным медиа-сервером - <a href="https://ru.wmspanel.com/nimble">Nimble Streamer</a>. Это самое эффективное решение в своём классе. Мы постоянно совершенствуем наши продукты и вот мы сделали ещё один шаг - выпустили транскодер. Это платное дополнение для Nimble Streamer, обладающее широкими возможностями для декодирования, преобразования и кодирования потокового медиа-вещания.<br />
<br />
На вход берутся H.264, MPEG2 видео с AAC, MP3, MP2, Speex аудио, выход идёт H.264/AAC или выдаются напрямую кодеки без обработки. Забираю на вход RTMP, RTSP и MPEGTS, на выход отдаются они же, плюс HLS и MPEG-DASH.<br />
<br />
<div>
Транскодер имеет низкое ресурсопотребление и высокую производительность, т.к. каждый поток декодируется только единожды и кодируется также всего один раз после всех обработок. Используется многопоточная обработка на множестве ядер процессора. Кроме того, сам Транскодер - это нативное приложение <a href="https://wmspanel.com/transcoder/install">для тех платформ</a>, где он ставится, отсюда оптимизация.<br />
<br />
Обработка осуществляется помощью множества фильтров, а управление процессом делается с помощью веб-интерфейса, причем применять настройки можно для множества серверов одновременно. Ниже вы можете посмотреть плейлист с видео, показывающими примеры работы.<br />
<br />
Все подробности можно изучить на сайте: <a href="https://ru.wmspanel.com/transcoder">https://ru.wmspanel.com/transcoder</a><br />
<br />
<br class="Apple-interchange-newline" />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/videoseries?list=PLRDQWjeuSAkM6itDPes-r8HrN95ub36ue" width="560"></iframe><br />
<br />
<div>
</div>
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">
<div style="margin: 0px;">
<br /></div>
<div style="margin: 0px;">
<br /></div>
</div>
</div>
</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-45578351660604629702016-01-06T19:27:00.000-08:002016-01-13T03:50:00.895-08:00Итоги 2015 года для Nimble Streamer<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
Давно не писал в блог - очень много активностей по работе, всюду не успеть. Для тех, кто интересуется проектом, мы подвели итоги ушедшего года, он был очень насыщен разными событиями.</div>
<br />
В первую очередь, для нас заметным событием стало <a href="http://sk.ru/net/1121103/">вхождение в Сколково</a> - это открывает для нас ряд новых интереснейших возможностей. Мы уже начали работу с различными подразделениями Фонда и планируем нарастить объёмы этого взаимодействия в наступившем году.<br />
<br />
Если говотрить о достижениях с точки зрения бизнеса, то надо отметить увеличение продуктовой линейки.<br />
<br />
Мы выпустили <a href="https://ru.wmspanel.com/mobile_library">SDK мобильного вещания</a>, доступного для лицензирования, и поддержали его выпуском приложений в Google.Play и AppStore.<br />
<br />
Наш флагманский продукт, <a href="https://ru.wmspanel.com/nimble">Nimble Streamer</a>, был серьёзно переработан и мы можем с уверенностью говорить о том, что сейчас это - лучшее решение по доставке видео на международном рынке.<br />
<br />
Полный текст итогов года с описанием самых значимых достижений можно прочитать <a href="http://blog.wmspanel.ru/2016/01/2015-summary.html">в новой записи русскоязычного блога</a> нашей компании.<br />
<br />
С Новым Годом и Рождеством!</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com5tag:blogger.com,1999:blog-2592326469964039544.post-47275726391766205522015-07-30T18:38:00.000-07:002015-07-30T18:53:37.561-07:00github поднял 250M инвестиций<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего дня!<br />
<br />
<a href="http://techcrunch.com/2015/07/29/github-raises-250m-series-b-round-to-take-risks/">ТехКранч пишет:</a><br />
<br />
<blockquote class="tr_bq">
<a href="https://github.com/">GitHub</a>, the software development collaboration and version control service based on the popular open source <a href="https://git-scm.com/">Git</a> tool, today announced that it has raised a $250 million funding round led by Sequoia Capital. Andreessen Horowitz, Thrive Capital and Institutional Venture Partners also participated in this round.</blockquote>
Общий объём вложений составляет теперь 350М долларов. Издание Wall Streat Journal оценивает компанию в 2 миллиарда долларов.<br />
<br />
Согласно Крису Ванстрату, СЕО и со-основателю компании, деньги будут вложены в первую очередь в усиление продаж, а также в инженерную команду. В целом же цель привлечения этого раунда - инвестировать в укрепление сообществ в разных страна мира. Порядка 70% пользователей находятся за пределами США, отсюда и стремление "выйти в народ" и поддержкать местные комьюнити.<br />
<br />
Также в статье немного последней статистики по использованию сервиса.<br />
<br />
P.S. <a href="http://habrahabr.ru/post/263881/">Запостил статью на Хабр</a>.</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-55031595818509391122015-05-03T01:28:00.001-07:002015-05-03T01:28:15.429-07:00git исполнилось 10 лет<div dir="ltr" style="text-align: left;" trbidi="on">
Короткий пост.<br />
<br />
Во-первых, исполнилось 10 лет с момента появления первой версии git. Ура.<br />
<br />
Во-вторых, всвязи с этим вышло занятное интервью Торвальдса к 10-летию git: <a href="http://www.linux.com/news/featured-blogs/185-jennifer-cloer/821541-10-years-of-git-an-interview-with-git-creator-linus-torvalds">10 Years of Git: An Interview with Git Creator Linus Torvalds</a><br />
<br />
А ведь как будто вчера было.</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-39085005708707014722014-06-24T23:15:00.000-07:002014-06-24T23:15:20.559-07:00Статьи на Хабре и на Спарке<div dir="ltr" style="text-align: left;" trbidi="on">
Возвращаясь к двум предыдущим статьям про <a href="https://wmspanel.com/">WMSPanel</a> и <a href="https://wmspanel.com/nimble">Nimble Streamer</a>.<br />
<br />
Не так давно решил написал краткий обзор того, зачем люди вообще начинают делать свои видеопроекты, чем хорош и чем плох YouTube, и когда стоит выбрать его, а когда - создать собственное решение.<br />
<br />
<ul style="text-align: left;">
<li>Читаем: <a href="http://habrahabr.ru/post/224505/">Зачем что-то придумывать, если есть YouTube?</a></li>
</ul>
<br />
<br />
Кроме того, для знакомых и не только решил открыть русскоязычный блог, посвящённый нашим продуктам, на площадке Spark.ru.<br />
<br />
Итак, читаем статьи <a href="http://spark.ru/startup/nimble-streamer/blog">блога про видеотехнологии</a>:<br />
<br />
<br />
<ul style="text-align: left;">
<li><a href="http://spark.ru/startup/nimble-streamer/blog/1827">С чего всё началось</a> - как вообще возникла идея своего продукта, SaaS-решения для отчетности и управления медиасервером.</li>
<li><a href="http://spark.ru/startup/nimble-streamer/blog/1972">Свой медиа-сервер</a> - почему решили взяться на создание своего медиасервера.</li>
<li><a href="http://spark.ru/startup/nimble-streamer/blog/2140">Сервис анализа потокового вещания</a> - ещё один небольшой продукт, возникший на стыке уже разработанных.</li>
<li><a href="http://spark.ru/startup/nimble-streamer/blog/3700">Конференции и выставки</a> - приехав с очередной конференции, решил набросать, зачем вообще они нужны и что на них делать.</li>
</ul>
<br />
<br />
Чуть позже планирую продолжить графоманство на русском. Если у кого есть вопросы, которые нужно осветить - обращайтесь.</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-69588487256906747592013-10-22T21:08:00.000-07:002015-07-30T18:29:43.523-07:00Nimble Streamer - сервер для медиа-стриминга<div dir="ltr" style="text-align: left;" trbidi="on">
И снова здравствуйте.<br />
<br />
В <a href="http://scm-notes.blogspot.com/2013/10/wmspanel-wowza-admin-gui.html">предыдущей заметке</a> я рассказал, чем наша команда занималась в последние годы и почему не было статьей в бложике. Продолжу тему рассказом о разработке, с которой мы выходим на новые рынки.<br />
<br />
Итак, в начале 2013 года мы представили <b>медиа-сервер <a href="https://wmspanel.com/nimble">Nimble Streamer</a></b>. Это лёгковесный сервер, заточенный под потоковую передачу данных (стриминга). Что он умеет?<br />
<br />
<br class="Apple-interchange-newline" />
В этой презентации можно посмотреть обзор основных фич, а ниже - чуть подробностей.<br />
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="421" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/27625635" style="border: 1px solid rgb(204, 204, 204); margin-bottom: 5px;" width="512"></iframe></div>
<div style="margin-bottom: 5px;">
<strong><a href="https://www.slideshare.net/WMSPanel/nimble-streamer-overview-27625635" target="_blank" title="Nimble Streamer overview">Nimble Streamer overview</a> </strong>from <strong><a href="http://www.slideshare.net/WMSPanel" target="_blank">WMSPanel</a></strong><br />
<div>
<br /></div>
</div>
<a href="https://wmspanel.com/nimble/vod_streaming">MP4 to HLS VOD transmuxing</a> и <a href="http://blog.wmspanel.com/2014/12/mpeg-dash-vod-nimble-streamer.html">MP4 to MPEG-DASH transmuxing</a>. Можно класть на сервер файлы MP4, заэнкоденные в H.264/AAC, и по мере обращения, на лету, делать <b>re-packaging в HLS и MPEG-DASH</b>. Это и называется <b>транзмаксинг</b>, т.е. перепаковка формата передачи данных при передаче их клиенту для воспроизведения. На формат энкодинга это влияет, поэтому при должной оптимизации (а она у нас присутствует в полной мере) операция это достаточно быстрая и не ресурсоёмкая. Что важно - передача в ведётся в режиме VOD.<br />
<br />
Потоковую передачу в "живом режиме" - <b>live streaming</b>. Можно брать данные по RTMP и <a href="https://wmspanel.com/nimble/live_streaming">транзмаксить в HLS</a>, <a href="https://wmspanel.com/nimble/dash">DASH</a>, <a href="https://wmspanel.com/nimble/audio_streaming">Icecast</a>. Можно также <a href="https://wmspanel.com/nimble/rtmp">раздавать по RTMP</a> - как на проигрывание, так и на пере-публикацию. Также в качестве источников может быть взяты MPEG-TS и Icecast.<br />
<br />
Кроме этого есть функционал для <b>ре-стриминга медиа-данных</b> по HTTP-based протоколам. Нимбл умеет делать <a href="https://wmspanel.com/nimble/http_restreaming"><b>ре-стриминг для HLS, Smooth Streaming, HDS</b>, MPEG-DASH и pseudo-streaming</a>. Ставится несколько <b>edge-серверов</b> Нимбла поближе к клиентам-потребителям трафика и эти сервера настраиваются на <b>origin</b> - на всё тот же Nimble или на любой другой <b>медиа-сервер</b>.<br />
<br />
Нимбл умеет эффективно кешировать данные <a href="http://blog.wmspanel.com/2013/07/nimble-hls-restreaming-cache.html">как в памяти</a>, <a href="http://blog.wmspanel.com/2013/10/nimble-disk-cache-hls-smooth-vod.html">так и на диске</a>, поэтому ориджин будет работать с уменьшенной нагрузкой - её возьмут на себя эджи в исполнении Нимбла.<br />
<br />
Кроме указанных протоколов Nimble умеет раздавать контент <a href="https://wmspanel.com/nimble/progressive_download"><b>по протоколу progressive download</b> (он же <b>псевдо-стриминг</b>)</a> в качестве как <b>origin</b>, так и <b>edge</b>. Многие сайты в Рунете предпочитают раздавать именно через этот протокол.<br />
<br />
В дополнение имеется возможность делать <a href="https://wmspanel.com/nimble/streaming_infrastructure">балансировку нагрузки между медиа-серверами</a>. Это важно в нашем случае, т.к. расчёт делается на то, что медиа-стример будет ставить несколько небольших серверов поближе к потребителям контента. Отсюда необходимость <b>балансировать нагрузку по местоположению</b> или IP-адресам. Кроме гео, есть возможность разбрасывать соединения и по round robin.<br />
<br />
Был реализован механизм <a href="http://blog.wmspanel.com/2013/11/nimble-streamer-protect-hotlinking-domain-lock.html">защиты от ре-стриминга - hotlinking protection</a> - он позволяет предотвращать кражу прямых ссылок. Также можно <a href="http://blog.wmspanel.com/2013/11/nimble-streamer-geo-ip-restriction-lock.html">ограничивать работу потоков через гео-локацию</a> или диапазоны IP.<br />
<br />
Сервер в данный момент ставится на <b>Ubuntu, Debian, CentOS и RedHat</b> через <a href="https://wmspanel.com/nimble/install">обычную пакетную установку</a>, а также на <b>Windows</b> и <b>MacOS</b> через нативные установщики.<br />
<br />
<b>Сервер - бесплатный</b>. Деньги мы берём за удобное управление через веб-интерфейс и возможность <a href="https://wmspanel.com/reporting">создания статистических отчетов</a> через уже упоминавшуюся <a href="http://scm-notes.blogspot.ru/2013/10/wmspanel-wowza-admin-gui.html">панель управления WMSPanel</a>. Чтобы гарантировать возможность бесплатного использования, мы открыли формат конфигурационных файлов, чтоб можно было работать с сервером автономно, без привязки к нашей панели управления.<br />
<br />
Кстати, <a href="https://wmspanel.com/nimble">сервер</a>, как и <a href="https://wmspanel.com/">сервис</a>, разрабатывается российской командой, с нами можно встретиться и пообщаться на родном языке. Впереди большие планы, так что если есть пожелания или вопросы - <a href="https://wmspanel.com/contact">обязательно обращайтесь</a>.<br />
<br />
Уверен, кому-то из моих читателей наша разработка пригодится.<br />
<br />
P.S. Да, это снова разнузданный самопиар :)<br />
<br /></div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com8tag:blogger.com,1999:blog-2592326469964039544.post-41134853461754228852013-10-22T20:23:00.003-07:002015-05-03T01:25:07.565-07:00WMSPanel - admin GUI Wowza Media Server<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего дня!<br />
<br />
Пришла пора рассказать, куда же я пропал и почему за последние пару лет было так мало обновлений в блоге отставного сиэмщика.<br />
<br />
Примерно 3 года назад мы с единомышленниками начали свой бизнес. Или bootstrap startup, как некоторые его модно называют. Начали мы с создания плагина для Windows Media Services, который помогал защитить медиа данные от ре-стриминга. Потом мы перешли к созданию панели управления для этого же медиа сервера. В итоге к концу 2011 года у нас был проект, способный собирать статистику и защищать медиа-данные для Windows Media.<br />
<br />
Дальше мы решили переключиться на поддержку <b>Wowza Media Server</b> (ныне - Wowza Streaming Engine) - и не прогадали. Впоследиствии мы добавили поддержку <b>Red5</b>, <b>Flussonic</b> и <b>nginx-rtmp-module</b>.<br />
<br />
На сегодняшний день нам удалось сделать универсальную <b><a href="https://wmspanel.com/">панель администратора</a> медиа-серверов</b>, которая включает в себя:<br />
<br />
<ul style="text-align: left;">
<li><a href="http://blog.wmspanel.com/2013/05/wowza-end-user-reporting.html">систему статистики и отчетности</a> - число соединений, трафик, скорость передачи, статистику длительностей просмотра, географию пользователей, а также их устройства и браузеры;</li>
<li>систему <a href="http://blog.wmspanel.com/2012/05/protecting-wowza-from-re-publishing-re.html">защиты контента от рестриминга;</a></li>
<li>возможности <a href="http://blog.wmspanel.com/2012/10/wowza-server-management.html">удаленного контроля медиа-сервера</a> - создания приложений, их настройку, управления потоками, аутентификацию;</li>
<li><a href="http://blog.wmspanel.com/2012/09/wowza-geo-ip-range-connections-lock.html">систему ограничения доступа</a> на основе месторасположения и IP, ограничение по одновременным подключениям и скорости передачи;</li>
<li>фреймворк для <a href="http://blog.wmspanel.com/2013/07/pay-per-view-for-wowza-media-server.html">создания систем pay-per-view</a>;</li>
<li>возможность <a href="http://blog.wmspanel.com/2012/12/data-slices-concept-in-nutshell.html">создавать "срезы" статистики</a> по нескольким критериям для разных клиентов;</li>
<li>способность управлять сервером через <a href="http://blog.wmspanel.com/2012/03/branded-panel-explained.html">white label</a>, то есть иметь "брендовую панель";</li>
<li>возможность получать агрегированные <a href="http://blog.wmspanel.com/2013/07/wowza-statistics-reporting-api.html">данные через API</a>;</li>
<li>выбор <a href="http://blog.wmspanel.com/2013/04/speaking-your-language.html">язык общения</a> с системой - кроме английского и русского присутствуют португальский, испанский, итальянский, а также сербский и турецкий.</li>
</ul>
Полный список возможностей <a href="https://wmspanel.com/reporting">можно посмотреть здесь</a>.<br />
<br />
Панель представляет собой веб-сайт, данные для которого отсылает специальный add-on. Через него же идёт управление сервером. Панель доступна по модели <b>Software-as-a-Service</b>, с помесячной или годичной оплатой, и с пробным периодом использования. Подходит всем - от новичков медиа-бизнеса до матёрых CDN-ов.<br />
<br />
Основные "этапы славного пути" можно узнать из <a href="http://blog.streamingmedia.com/2013/01/wmspanel.html">статьи про нас</a> от корифея медиа-стриминга, Дэна Рэйбёрна, там описана наша история по январь 2013 года. Можете <a href="http://blog.wmspanel.com/">почитать наш блог</a> или <a href="https://twitter.com/WMSPanel" rel="nofollow">Твиттер</a>, чтобы узнать, что делается сейчас и куда движемся.<br />
<br />
Кому интересно, некоторые наши наработки - включая плагины для WMS и темплейт для Maven - выложены <a href="https://github.com/WMSPanel/">в открытый доступ на гитхабе</a>.<br />
<br />
Однако, это ещё не всё! В следующей статье читаем про наш новый <a href="http://scm-notes.blogspot.ru/2013/10/nimble-streamer-http-hls-streaming.html">сервер медиа-стриминга</a>.<br />
<br />
P.S. Да, это разнузданный самопиар :)</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-73375048048211881842013-08-26T02:36:00.002-07:002013-09-07T03:08:26.006-07:00Ещё о системе контроля версий от JetBrains<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://scm-notes.blogspot.com/2013/08/jetbrains-vcs.html">Не так давно запостил ссылку</a> на видео, где представитель компании JetBrains рассказывал об их новой системе контроля версий, которую пилят в их потаённых исследовательских лабораториях.<br />
<br />
И вот опять они. Набрёл (как водится, на Хабре) на <a href="http://habrahabr.ru/post/191222/">подкаст Разбор полётов</a>, где CTO JetBrains рассказывает в числе прочего и про новую VCS. Рассказ начинается примеро с 0:30.<br />
<br />
Итак, что нового по сравнению с предыдущим инсайдом.<br />
<br />
Ключевой момент, на мой взгляд, это управление правами доступа. Про него было сказано вскользь, однако это принципиальный момент. Когда я рассказывал про <a href="http://scm-notes.blogspot.ru/2011/09/perforce-basics.html">впечатления от Перфорс</a> я упоминал об этом. До сих пор считаю, что в P4 права доступа сделаны отлично. Посмотрим, что сделают здесь, для централизованной ситемы контроля версий это чрезвычайно важно.<br />
<br />
Более подробно рассказали про синхронизацию рабочих копий. Вкратце работа будет идти по следующему принципу:<br />
<br />
<ul style="text-align: left;">
<li>Пользователь пишет код, сохраняет его.</li>
<li>Специальный сервис (демон? процесс?) трекает изменения и если изменения сделаны - синхронизирует их с центральным сервером.</li>
<li>Это же пользователь, сев за другое рабочее место, получает все измененённые файлы в том виде, что и на первом рабочем месте.</li>
<li>Если изменения нужно кому-то показать без забрасывания в ветку в виде отдельной версии - это можно легко сделать (понятно, детайле пока нет).</li>
<li>Если изменения нужны на ветке - они коммитятся, получается версия.</li>
<li>Версии можно будет также делать локально - с последующей синхронизацией с центральным сервером (пресловутый юзкейс "хочу коммитить код, летя в самолёте")</li>
</ul>
<br />
То есть с одной стороны система централизованная, а с другой - есть возможность офлайновой работы.<br />
<br />
Ещё интересный момент - локально у пользователя будет подниматься локальный сервер контроля версий, который будет общаться и синкаться с другим таким же, но централизованным сервером. Дефолтный интерфейс для работы с серверами - <b>через веб</b>. Будет и интеграция с IDE через API, конечно же, да и ком. строка в наличии, однако самая полная функциональность будет доступна через браузер.<br />
<br />
Не раз были сравнения с git, отдельно было сказано о том, что будет предусмотрена прозрачная синхронизация с его репами. Это нужно как для облегчения перехода с него на новую систему, так и полноценная работа в том случае, если разные части команды будут принципиально сидеть на разных тулах.<br />
<br />
Было ещё раз сказано о том, что система - open source. Прозвучала здравая мысль о том, что в наше время писать с нуля закрытую VCS - это мягко говоря неправильно. Оно и понятно - если есть открытый git, кому нужен закрытый конкурент?<br />
<br />
В целом, движение интересное и не лишённое смысла, очень хочется посмотреть, что получится.<br />
<br />
P.S. На Google+ <a href="https://plus.google.com/u/0/116973796016152310240/posts/MJJFGHNsSKd">возникло обсуждение</a>.</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-6186008302884298122013-08-21T05:39:00.002-07:002013-08-21T05:40:10.927-07:00JetBrains замышляет новую VCS<div dir="ltr" style="text-align: left;" trbidi="on">
И снова здравствуйте.<br />
<br />
Не смог пройти мимо очень занимательного видео.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/PR8BhFv9KAU?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
Да, JetBrains решили сделай свою систему контроля версий, с преферансом и поэтессами. Судя по видео (преступно короткому!!!) система будет централизованной, с возможностью офлайновых коммитов. Очень напоминает Perforce - опять-таки, судя по рассказанному. Но, в отличие от, будет вроде как open source.<br />
<br />
Многие, только увидев название видео и даже чуть-чуть его посмотрев, скривили лица и начали бормотать всякие непотребства, где из культурных слов можно было разобрать только "git". Как водится, кто-то из критиков не досмотрел и до середины, а из тех, кто досмотрел - половине не поняла о чем речь. Однако ж я скажу чуть больше.<br />
<br />
Во-первых, централизованные системы контроля версий не только имеют право на жизнь, но и в некоторых случах справляются с задачами лучше распределённых систем вроде git и Hg. В качестве иллюстрации: огромное число компаний используют, например, Perforce, и даже не думают с него слезать. Ярчайший пример - Гугл, которого работает <a href="http://scm-notes.blogspot.ru/2011/05/google-scm-code-review.html">крупнейшая в мире инсталяция Perforce</a>.<br />
<br />
Во-вторых, раз уж за дело взялись ДжетБрэйнсы, то оно действительного того стоит. А значит, дело они доведут до конца и представят продукт широкой публике.<br />
<br />
Поэтому я лично очень хочу посмотреть, во что превратится это начинание.<br />
<br /></div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-9327791013803403022013-08-21T05:21:00.000-07:002013-08-21T05:22:07.880-07:00Release engineering и вообще разработка в Badoo<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего!<br />
<br />
Не далее как вчера на Хабре увидел интервью, прям напросившееся в почти заброшенный бложик.<br />
<br />
<a href="http://habrahabr.ru/company/badoo/blog/190572/" target="">Процесс разработки и выкатка релизов в Badoo. Автоматическое тестирование. Девелоперское окружение.</a><br />
<br />
Инетервью с двумя инженерами, которые занимаются configuration management, release management и все, что с этим связано. Прям ностальгия накрыла - именно этим я и занимался немало времени, именно из этих занятий пошёл данный бложик.<br />
<br />
В общем, интервью крайне познавательное, всё по делу, много интересного. Комментировать здесь смысла нет - в интервью всё рассказано с избытком. Ну, для тех, кто понимает, о чём речь, конечно.<br />
<br />
<br /></div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com2tag:blogger.com,1999:blog-2592326469964039544.post-85321658036133151272013-01-31T05:35:00.005-08:002013-01-31T05:35:59.021-08:00github и домовладение<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего!<br />
<br />
Как человек, проживающий четвёртый год в своём доме, не смог пройти мимо ещё одного необычного применения для гитхаба. Один мужик все свои задачу по содержанию своего дома ведет в трекере открытого проекта: <a href="https://github.com/frabcus/house/issues">https://github.com/frabcus/house/issues</a>.<br />
<br />
Сразу скажу, что github в данном случае - просто первый попавшийся под руку инструмент для отслеживания задач. Просто автор уже ведет там свои проекты и решил не бегать между разными платформами и остался там же. По мне, так Basecamp для этой же задачи подошёл бы идеально. Однако, всё равно хорошо получилось.<br />
<br />
Конечно же, каждая задача представлена в виде записи в issue tracker, в которой описывается проблема и комменты по ходу решения. Ну и она по закрывается по мере решения задачи. Что характерно - в комменты влазят вроде посторонние люди и предлагают свои решения :))<br />
<br />
Нашлось применению и mliestones (майлстоунам, или вехам). У человека была проблема с влажностью в доме - очень неприятная штука, чреватая плесенью, плохим запахом и порчей материалов дома. Он завёл майлстоун и писать туда все таски по ходу работы. В общем, проблема заборота (или снижена до приемлемого уровня) и веха была закрыта.<br />
<br />
Отдельно стоит отметить теги. Поскольку одна проблема может иметь отношение к разным системам в доме, то логично каждой такой системе или проблемной области жать тегу и вешать её везде, где придётся. Среди меток - и сам дом. и его украшение, и электрика, и газ, и вода - всё, до чего руки дотянулись.<br />
<br />
Ну и как на гитхабе без форков? Их есть там. Правда, те, что смотрел, были дохленькие.<br />
<br />
В общем, штука получилась забавная. Правда, мне пока не пригодится - свои задачи по дому пока удаётся держать в голове.<br />
<br /></div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com2tag:blogger.com,1999:blog-2592326469964039544.post-73706278931367966692012-08-08T05:17:00.003-07:002012-08-08T05:17:32.025-07:00github и германские законы<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего!<br />
<br />
Один гражданин Германии взял, да и выложил все немецкие законы и правила на Гитхаб:<br />
<a href="https://github.com/bundestag/gesetze">https://github.com/bundestag/gesetze</a><br />
Объясняет он это необходимостью показывать людям реальные изменения, которые происходят в законодательстве - мол, народ должен знать, чего делается.<br />
<br />
Контроль версий и отслеживание изменений - в действии.<br />
<br />
Толково, я считаю. Мир меняется, однако.</div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-72427205965479533952012-05-20T03:22:00.000-07:002013-11-12T16:37:54.008-08:00Мой доклад на VLDC2 про SCM<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего!<br />
<br />
В День Пионерии во Владивостоке прошла Vladivostok Developers Conference за номером 2.<br />
Мне довелось выступать первым. Кто о чём - а больной о своём, поэтому я рассказывал о том, про что рассказываю в этом бложике уже третий год. Про SCM, конечно же.<br />
<br />
Речь идёт о групповой распределённой разработке и об инструментах и практиках SCM, которые этот процесс поддерживают. В качестве примера взята <a href="http://www.rhondasoftware.com/" rel="nofollow" target="_blank">Rhonda Software</a>, в которой я проработал в общей сложности 6 лет.<br />
<br />
Видео начали писать с середины, да и рассказать я успел не всё, что планировал, поэтому, дабы не позориться лишний раз, решил выложить только презентацию :)<br />
<br />
Презентацию можно посмотреть здесь: <a href="http://www.slideshare.net/Yurriq/scm-vldc2">http://www.slideshare.net/Yurriq/scm-vldc2</a><br />
<br />
P.S. Почему пианист - старые читатели, наверное, <a href="http://scm-notes.blogspot.com/2010/06/piano-player-at-brothel.html">уже догадались</a>.<br />
<br />
P.P.S. А вот чем я занимаюсь в данный момент: <a href="https://wmspanel.com/nimble">Nimble Streamer</a>. <a href="http://scm-notes.blogspot.com/2013/10/nimble-streamer-http-hls-streaming.html">Здесь чуть подробнее</a>.<br />
<div id="__ss_12998444" style="width: 425px;">
<strong style="display: block; margin: 12px 0 4px;"><a href="http://www.slideshare.net/Yurriq/scm-vldc2" target="_blank" title="Доклад по SCM для VLDC2, Юрий Удовиченко">Доклад по SCM для VLDC2, Юрий Удовиченко</a></strong> <iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/12998444" width="425"></iframe> <br />
<div style="padding: 5px 0 12px;">
View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/Yurriq" target="_blank">Yurriq</a> </div>
</div>
</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com4tag:blogger.com,1999:blog-2592326469964039544.post-44907372834899539972012-05-01T22:46:00.000-07:002012-05-01T22:54:53.774-07:00Release engineering в Facebook<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего!<br />
<br />
RSS лента в очередной раз принесла интересную <a href="http://blog.openquality.ru/software-quality-news-04120/">подборку материалов от OpenQuality.ru</a>, где взгляд немедленно зацепился на некоторые ссылки из раздела "Архитектура систем". Особенно за последнюю ссылку :)<br />
<br />
Однако самое вкусное там для меня - это <a href="http://arstechnica.com/business/news/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering.ars">Exclusive: a behind-the-scenes look at Facebook release engineering</a> - эксклюзивный материал про управление релизами в Facebook. Кому лень читать или кто думает, читать ли вообще, - несколько основных моментов.<br />
<br />
Код пишется на PHP, затем транслируется в оптимизированный код на C++, который затем отстраивается в единый бинарник размером 1.5 Гб. Да, полтора гигабайта.<br />
<br />
Далее код выкладывается во внутренний доступ и посредством BitTorrent скачивается на все сервера которые участвуют в работе. Итог по времени - 30 минут, из которых 15 минут делается сам бинарник, а ещё 15 - этот бинарник распространяется по серверам.<br />
<br />
При этом то, что касается статического контента - яваскрипты, стили и т.п. - распросраняется через свои же CDNы, т.е. распределённые сети доставки контента.<br />
<br />
Оставим за скобками странную цепочку PHP -> C++ -> Большой-Бинарник-На-Полтора-Гига, однако доставка релиза через торрент - это остроумно. Ну и распространение статики через CDN - вообще отлично.<br />
<br />
P.S. Кстати, на всё том же OpenQuality лежит моё сочинение на тему "<a href="http://experience.openquality.ru/software-configuration-management/">Управление изменениями, или Кессонная болезнь проектов</a>". Ушёл в отрыв, сделал безумную, но на мой взгляд интересную аналогию.</div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com3tag:blogger.com,1999:blog-2592326469964039544.post-33295798186632410682011-12-01T21:14:00.001-08:002011-12-01T21:49:04.952-08:00Интервью с техдиром VisualSVN и немного мыслей<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего.<br />
<br />
Набрёл в блоге Якова Сироткина на <a href="http://yakov-sirotkin.livejournal.com/182448.html">интервью с Иваном Жаковым</a>, техническим директором <a href="http://www.visualsvn.com/">VisualSVN</a>, и по совместительству - контрибьютором Subversion.<br />
<br />
Интересный пример того, как можно сделать прибыльный проект, используя в качестве базы open source продукты. Сабвершн открыт и бесплатен, однако, как и бОльшая часть оупенсорса - требует или доработки напильником, или хитрой настройки, или гуру, который бы объяснил как надо работать. Парни сделали плагин к Visual Studio, затем свою серверную надстройку над SVN. С них и живут, причём <a href="http://www.visualsvn.com/server/customers/">в клиентах</a> у них значатся не последние компании из Fortune 500, а также куча американских госучреждений. В общем, люди определённо добились чего-то на непростом рынке систем контроля версий.<br />
<br />
Ситуация, описанная в начале - большая контора, все сидят на Visual SourceSafe, одиночки-энтузиасты пытаются изменить мир к лучшему - была типичной для российских компаний конца XX - начала XXI века. Мантра "так уж здесь повелось" до сих пор успешно работает практически повсеместно. Не сказать, чтобы это было плохо, но во многих ситуациях бывает проще перейти на новый тул, затратить усилия, чем продолжать тратить время и нервы на поддержку тула старого. Особенно если это СорсСэйф... Брр...<br />
<br />
Так и с контролем версий. Долгое время стандартом у нас был SourceSafe, просто потому, что шёл вместе со Студией (ибо она повсеместно была хакнутой). CVS, этот стандарт де-факто мира open source того времени, приживался не очень охотно (см. "Так уж здесь повелось"). На этом фоне Subversion стал тем продуктом, который вывел системы контроля версий на новый уровень и его применение стал нормальной практикой не только у нас в стране, но и вообще везде. Это же обстоятельство сыграло против него. Некоторая заторможенность в развитии вылилась в то, что нормальное слияние веток (merge) и его отслеживание ("стрелки мёржа") появилось буквально недавно даже по меркам софтварной индустрии. И если судить по интевью, переименование файлов и директорий будет сделано нормальным образом только в будущем.<br />
<br />
Одним словом, появление третьего поколения систем контроля версий стало вопросом времени и оно таки случилось. Новые поколения разработчиков считают стандартом уже не SVN, а git или Mercurial и недоумевают: "как можно работать с *№;%: SVN-ом, когда у меня тут распределённый контроль версий, всё быстро, продвинуто и вообще - Сам Линус его написал!" Флейм комментариев к интервью очень оказателен в этом смысле. Да и спорность некоторых реплик Ивана подливает масла в огонь.<br />
<br />
Что сказать - централизованные системы контроля ещё живы и никуда уходить не собираются, взгляните на тот же список клиентов VisualSVN - для них распределённость не является явным плюсом.<br />
<br />
Дабы не начинать холивар distributed vs. centralized VCS, на этом и закончу заметку :)<br />
<br /></div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-11766905479739287632011-10-23T05:30:00.000-07:002012-03-13T19:12:36.368-07:00Перевод // Dear Perforce: f*ck you<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего!<br />
<br />
Кинули тут ссылочку на отличную заметку, буквально крик души человека, измученного <strike>нарзаном</strike> Перфорсом. Называется он "<a href="http://weblog.masukomi.org/2007/08/31/dear-perforce-fuck-you">Dear Perforce: f*ck you</a>", что цензурно можно перевести как "Дорогой Перфорс, иди нахрен", но сведущие в английском поймут, о чём название.<br />
<br />
Решил перевести, поскольку сам с недавнего времени <a href="http://scm-notes.blogspot.com/2011/09/perforce-basics.html">работаю с Перфорсом</a> и наступил на некоторые грабли, которые малость испортили нервы. Да и продолжают портить, чего уж там. Замечу, что статья написана в 2007 году и прочитав её в 2011, я не увидел коренных отличий от ситуации на сегодня. Хотя я сам несколько терпимее отношусь к этому продукту :)<br />
<br />
Так что ниже - мой перевод исходной заметки, отдельные комментарии показаны в скобочках.<br />
<br />
<a name='more'></a><br />
<br />
/*<br />
Начало перевода<br />
*/<br />
<br />
Дорогой Перфорс!<br />
<br />
Иди нахрен.<br />
Иди нахрен, жалкий, ненадёжный, обманчивый, переоценённый ублюдок. Надеюсь, твой офис сгорит дотла вместе со всеми сторонними бэкапами. Молюсь на то, чтобы какой-нибудь продукт с открытыми исходниками, при поддержке сильных мира сего, выкинет тебя из бизнеса. Надеюсь, твои "продажники" не одурачат больше ни одну компанию и не заставят их думать, что у тебя есть что-то, хотя бы отдалённо напоминающее по качеству древний говнопродукт, известный как CVS. Никогда раньше я не испытывал столько боли при работе с настолько простыми задачами по контролю версий, сколько испытал после устройства на работу в компанию, которая совершила ошибку и выбрала тебя.<br />
<br />
Я полностью согласн с <a href="http://scm-notes.blogspot.com/2010/03/git-presentation-by-linus-torvalds.html">Линусом</a>, который считает, что CVS - это зло, и что любой, кто использует его при наличии альтернативы - "тупой и ужасный", но я переключился бы с Перфорса на CVS, не моргнув глазом. Я бы пал ниц и лобызал ноги создателей CVS, если бы только смог избежать использования твоего "инструмента" самобичевания.<br />
<br />
В данный момент я единственный, кто работает с базой исходников.<br />
<br />
Уже четыре раза я приходил на работу, садился кодировать, открывал файл, который редактировал и сабмитил буквально вчера, только для того, чтобы обнаружить, что он сейчас в какой-то предыдущей версии. Говорю Перфорсу взять последнюю версию, на что получаю ответ, что файл <i>уже</i> синхронизирован. В конечном счете, я вынужден вызвать "sync -f" (то есть принудительно перезаписать всё или рискнуть поломать мой репозиторий сначала отредактировав файл, а потом внеся то, что у меня откатилось безо всякого предупреждения). Нет, юнит-тесты не помогут поймать эту проблему, ведь они точно так же откатятся на предыдущую версию, а поскольку я никогда не вношу поломаный код, то и после загадочного откатывания тесты будут показывать зеленую полоску, а я как-то не запоминаю в конце дня точное количество тестов каждого проекта. Сегодня он меня заставил сделать слияние ("мёрдж") "их" изменений. Вот только я единственный, кто работает на этой чёртовой ветке, и у меня всего один клиент, который на неё ссылается. (Прим. пер.: у Перфорса во время слияния в окне с 3-хсторонним слиянием показаны "их" - "theirs", "ваши" - "yours" и измения "общего предка")<br />
<br />
Когда вы попробуете "интегрировать" (везде оно известно как "смёрджить") файлы из директории А, где вы работали, в директорию Б, он скажет: в "их" файлах есть изменения, "ваши" файлы в порядке, и хотите ли принять "их" изменения? И вы видите, что "их" изменения - это то, что сделали ВЫ в директории А и "ваши" изменения - это те, что в директории, где вы вообще ничего не делали, и куда собираетесь смёрджить всё, что надо.<br />
<br />
Он меняет права на файлы. Он меняет окончания строк. Да, конечно, для этого всего есть настройки, но такого вообще не должно быть. Система контроля версий вообще не должна изменять файлы, которые в неё помещают. Инструменты командной строки - полнейший отстой. Если надо сделать что-то нетривиальное, то в конечном счёте придётся воспользоваться GUI-клиентом.<br />
<br />
Он недостаточно умён, чтобы понять, что файл, который ты поменял - это... погоди-ка... именно тот файл, который ты поменял! Ну, конечно, можете сказать "Господин Перфорс, с вашего позволения, я бы хотел отредактировать вон тот файл." и после этого он будет знать, но просто так файл отредактировать нельзя. Разговор чокнутых в стране сложившихся обстоятельств. (Прим. пер.: тут игра слов: "perforce land" - "<a href="http://lingvo.yandex.ru/perforce/">perforce</a>" переводится как "необходимость", "в силу сложившихся обстоятельств", или попросту "припекло") Если попробуете откатывать наборы изменений, он начнёт скулить о том, что не хочет затрагивать файлы, которым были сделаны права на запись после очередного отката, и это несмотря на то, что вы с ними ничего не делали, а только лишь откатили несколько раз.<br />
<br />
Он не умеет расширяться. Хотите положить в него терабайты данных? Он это позволит, но как только дерзнёте и вправду начнёте это делать, то при этом или вообще упадёт сервер, или больше никто не сможет нормально работать.<br />
<br />
Он определяет права по правилу XVII века под названием "запирание" (Приме. пер.: "locking"). Возможно это из-за того, что он не может наверняка сказать, работали вы над файлом ли нет. Выставляя файлам атрибут "только для чтения", он вынуждает явно ему сказать, когда захотите поменять файл, тем самым явно дав ему узнать, что вы поменяли файл. Он смутится и начнёт скулить, что надо засабмитить файлы и вы скажете их засабмитить, но сабмитить нечего, поэтому создается пустой набор изменений который он отказывается сабмитить, потому что набор - пустой. Этот пустой набор будет мозолить глаза, пока не взорвется солнце или пока вы сами не возьмёте и не удалите его... удалите то, что Перфорс сказал создать, но после создания - отказался принимать. (Прим. пер.: да-да, именно так и бывает)<br />
<br />
На это я каждую неделю убиваю по несколько часов.<br />
<br />
Обновление: Вы не подумайте, я не просто скулю насчет Перфорса. Да, он мне не нравится, и я по этому поводу кое-что сделал. Я взял и написал инструмент, синхронизирующий Перфорс с самыми разными системами контроля версий, но потом пришёл к выводу, что Git слишком чертовски хорош, чтобы заморачиваться с остальными, так что перешёл на Git с его git-p4 для синхронизации с <strike>Сатаной</strike> Перфорсом. Если интересно, его можно найти в директории contrib в исходниках git. Просто куда-нибудь скопируйте в другую дирку - и можно работать (но нужен Python).<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Что было дальше</span><br />
<br />
Я получил ряд комментариев и критики на статью, так что дальше - мои ответы. Комменты можно разбить на 3 основные категории, но прежде чем приступить к ним, хотелось бы указать на, чёрт побери, лучший ответ, который кто-либо давал на этот пост:<br />
<br />
<i>- У Перфорса просто другой подход. Надо попробовать в него погрузиться, прежде чем так сильно ругать.</i><br />
<i>Знаете, я как-то бился над, казалось бы, простой проблемой, используя Perl 5 тем способом, который считал самым подходящим, и сделал ошибку, упомянув о нём на открытом форуме.</i><br />
<i>- Ну конечно, - последовал ответ - неопытных программистов всегда сбивает с толку то, как Перл дает то, что надо. Как только ты в него погрузишься, ты увидишь, что путь Перла - это правильно.</i><br />
<i>Я расширил описание ошибки и добавил, что между мной и моим напарником (с которым мы бились на проблемой) - десятилетия разницы в опыте.</i><br />
<i>- Ну конечно, опытные програмеры думают, что их проблему Перл решит тем способом, который они от него ожидают, но к</i><i>ак только ты в него погрузишься, ты увидишь, что путь Перла - это правильно.</i><br />
<i>Примерно таков уровень обсуждений между програмерами касаемо инструментов.</i><br />
<i>Если что, я пользовался Perforce вполне успешно в нескольких местах (как например дома, как например в компании, раскиданной по нескольким континентам) и, да, тебе надо понять, что именно он думает насчёт контроля версий и конфигурационного управления - и это не обязательно будет совпадать с тем, что думаешь ты об этих же вещах. И, да, его реакция на неверные входные данные может быть совершенно аутичной. Всё, что он тебе говорит - </i>верно<i>, но редко бывает полезным.</i><br />
<i>Фактически Perforce - это то, что называется "система со своим взглядом на вещи", у него есть свой взгляд на то, что такое контроль версий и конфигурационное </i><i>управление</i><i>. Если у вас тот же взгляд на вещи - будете с ним летать. Если не тот - будете с ним бороться. Но в самом деле, как только вы в него погрузитесь, поймёте, что он довольно хорош </i>в том, что делает<i>. Гораздо более хорош, чем SVN, особенно когда вы с ума сходите по, ну, вы знаете... </i>ветвлению и слиянию <i>кода.</i><br />
<i>Лучше ли он, чем Mercurial/git/прочие - не знаю, я их не использовал. Для тех вещей, что делают они, тем способом контроля версий, который хотят их пользователи, - видимо нет. И это нормально.</i><br />
<br />
Остальные комментарии:<br />
<br />
<b>Комментарии типа "Я работал с ним на протяжении N лет, и ни разу у меня Перфорс не: испортил файл/сработал нестабильно/упал"</b><br />
<br />
<i>- Я использую Перфорс 4 года на своём проекте, но никогда не сталкивался с проблемами, о которых вы упоминаете</i><br />
<br />
Я говорил только об одной явной ошибке (странности с откатом), остальное же было намеренно запрограммировано разработчиками Перфорса. По мне, так он вовсе не сломан, он работает как задумано, просто задумано - плохо.<br />
<br />
Чтоб совсем понятно было: Перфорс всё записывал правильно (ну кроме случая с окончанием строк, и я понимаю, что там всё настраивается), но тем не менее, я считаю, что система контроля версий не должна додумывать за меня, что же я имел в виду сделать. Ни один файл не испортился и не потерялся, и я ожидаю подобного в будущем.<br />
<br />
<i>- Хочу сказать, что несмотря на странности, он делает то, что написано на коробке.</i><br />
<i>- Перфорс был непробиваем для нашей группы разработки ~10 человек и ~10000 файлов при использовании с Линукса, Виндов и МаксОСи.</i><br />
<br />
Ни на минуту не сомневаюсь в указанных утверждениях. Уверен, именно так он себя и ведёт. У меня нет ни тени сомнения в том, что Перфорс - это стабильная и надёжная база для исходников. Я говорю только об инструментах конечного пользователя.<br />
<br />
<b>Коментарии типа "Да ты просто не умеешь им пользоваться/не дал ему ни единого шанса/ты специально его ломаешь"</b><br />
<br />
Я без особых проблем ставил и начинал использовать Bazaar, CVS, Darcs, Git, Mercurial (Hg) и Subversion, всегда меньше часа требовалось для начала полноценной работы даже без того, чтобы начать что-то гуглить. Я дал Перфорсу 2 месяца. Я разговаривал с разработчиками, работавшими с ним годами.<br />
<br />
Когда я говорю с опытными людьми, и на мои вопросы как правило отвечают тем, что или не знают как сделать с командной строки, только из GUI, или знают как сделать из комстроки или GUI, но понятия не имеют как оно так срабатывает. <b>Вы правы, я возможно не знаю как его использовать, но обучение базовым операциям управления исходным кодом (включая ветвление и слияние) не должно занимать 2 месяца!</b><br />
<br />
Нет прощения за то, что люди, использующие его годами, до сих пор не могут объяснить, почему что-то происходит именно так, а не иначе, и/или как сделать какие-то похожие штуки. Я полагаю, что что-то явно не так с тем, как Перфорс взаимодействует с пользователем. Так неинтуитивно, что даже годами используя его, всё равно не могут объяснить, как надо делать те или иные вещи.<br />
<br />
<i>- Проблемы есть только у тех, кто его не понимает и изучил "по верхам", вместо того, чтобы попросить о помощи.</i><br />
<br />
Вот в этом я меньше всего сомневаюсь. Но вместо того, чтобы считать это признаком некомпетентности пользователя, может таки считать это проблемой Перфорса, которые не предоставляет интуитивно понятного интерфейса? Перфорс не проповедует парадигму с фундаментальными отличиями от других централизованных систем контроля версий. Стало быть, разве не должен он быть похожим и интуитивным для тех, кто уже работал с ними?<br />
<br />
<i>- Похоже, вы используете его как распределённую систему контроля, хотя всё совсем наоборот. Подозреваю, большинство проблем - это результат того, что вы пытаетесь использовать его как svn, git или darcs. Надо использовать систему в том ключе, в котором она была спроектирована, а если архитектура вам не подходит, значит вообще не надо использовать эту систему.</i><br />
<br />
Ну, во-первых, SVN - не распределённая система. Помня об этом, распределённые системы контроля следует считать распоследним веянием в истории программной индустрии. Моим первым опытом с контролем версий был CVS, потом SVN. Так что я не пришел к этой ситуации имея за плечами лишь опыт использования распределённых систем, поэтому не пытаюсь уложить распределённую модель в централизованную систему. Я прекрасно знаю о разнице между ними, и, хотя я не в восторге от CVS или SVN, с ними у меня проблем никогда не было. Так что если уж чего проще и должен быть Перфорс, так это всех этих новомодных рапределённых штуковин.<br />
<br />
<i>- Вы совершенно несправедливы к Перфорсу. Надёжность - это наверняка проблема конфигурации. Модель же - сильно централизована, и видимо, это не то, что вам нужно.</i><br />
<br />
Вообще, я не против централизованных систем. Просто я предпочитаю не их. Кроме того, надёжность никогда не должна быть проблемой конфигурации. У меня не должно быть возможности недоконфигурировать систему таким образом, что она сделается ненадёжной. Конечно, она может поломаться, но если уж работает, то должна работать надёжно. Если нельзя положиться на систему контроля версий, то с системой явно что-то не так.<br />
<br />
<i>- А я считаю, что инструменты командной строки - очень мощные и полезные.</i><br />
<br />
Так и есть. Не могу отрицать, что они мощные и полезные. Блин, похоже GUI просто втихаря запускает те же самые команды почти на каждое действие. Я также верю, что истребитель F-16 такой же мощный и полезный, но он и близко не похож на что-то, что может быть полезным и мощным без предварительного серьёзного обучения. К сожалению, то же самое могу сказать и об инструментах командной строки Перфорса (хотя и не с таким временем обучения... я надеюсь).<br />
<br />
<i>- У Перфорса просто другой подход. Надо попробовать в него погрузиться, прежде чем так сильно ругать.</i><br />
<br />
Ну почему мне кажется, что я один такой, кто видит постоянную проблему "мне он тоже показался странным, когда я начал его использовать". Нет, НЕТ, НЕТ, НЕТ. Такое ВООБЩЕ нельзя произносить. Перфорс существует уже больше десятилетия, и людям известен контроль версий ещё дольше. Не может быть никакого прощения за то, что на текущем этапе основые действия контроля версий могут чем-то непростым. У Перфорса было достаточно времени, чтобы переработать свои интерфейсы, сделать безумные вещи вроде команды "move" (дя, я знаю про команду "integrate", это не одно и то же). Говорить "странный" про совершенно новый инструмент, только что из "беты" - это нормально. Нормально говорить такое, про инструмент, использующий не ту парадигму, к которой вы привыкли. Ненормально говорить такое про такой старый инструмен, как Perforce, с такой старой парадигмой, как централизованный контроль версий.<br />
<br />
<b>Я согласен со всеми комментариями о том, что Перфорс - отстой.</b><br />
<br />
Спасибо, приятно знать, что я такой не один.<br />
<br />
<br />
/*<br />
Конец перевода<br />
*/<br />
<div>
<br /></div>
</div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com8tag:blogger.com,1999:blog-2592326469964039544.post-4001433199528953192011-10-12T16:47:00.000-07:002011-10-19T05:15:50.439-07:00Осень - время релизов: IBM ClearCase 8.0, SVN 1.7, PlasticSCM 4.0<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего.<br />
<br />
Производители систем контроля версий собирают урожай.<br />
<br />
IBM решила тряхнуть стариной и выпустила <a href="http://www-01.ibm.com/support/docview.wss?uid=swg21566807">ClearCase версии 8.0</a> .<br />
Вот <a href="http://www-01.ibm.com/support/docview.wss?uid=swg21566805">список новых фич</a>, кому интересно. Из заметного - сделали ещё более дружелюбный GUI - как десктопный, так и с веб-интерфейсом.<br />
<br />
Ну и не остался в стороне <a href="http://subversion.apache.org/">Apache Subversion</a> , он отрелизился <a href="http://subversion.apache.org/docs/release-notes/1.7.html">до версии 1.7</a>. Обещают ряд вкусностей. Например они таки избавились от папки .svn в каждой директории с подконтрольными файлами. Ну и общее ускорение работы обещают, как без него.<br />
<br />
Кстати, очень показателен флейм на Хабре по поводу релиза:<br />
<a href="http://habrahabr.ru/blogs/development_tools/130214/">http://habrahabr.ru/blogs/development_tools/130214/</a><br />
SVN до сих пор вызывает эмоции, значит жив ещё, курилка :)<br />
<br />
Ну и ещё <a href="http://scm-notes.blogspot.com/search/label/Plastic">Plastic SCM</a>, про который я много писал, также решил <a href="http://plasticscm.com/labs/40-beta-1.aspx">обрадовать обновлениями</a>. У них там много всего нового, судя по периодическим новым заметкам в блоге, так что даже не могу выделить однозначно что-то большее, слишком много интересного.</div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com3tag:blogger.com,1999:blog-2592326469964039544.post-2012465473414540712011-09-29T23:04:00.000-07:002011-09-29T23:04:55.134-07:00eTraxis вышел на новую орбиту<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего!<br />
<div>
<br /></div>
<div>
За суетой чуть не забыл о важном. Как известно постоянным читателям бложика, я пристально слежу за развитием <a href="https://www.etraxis.com/">eTraxis</a> - системы для управления задачами, отслеживания ошибок, да и вообще трекинга чего угодно. Так вот, он сделал ещё один шаг вперёд! Его онлайн-версия, <a href="https://www.etraxis.com/">etraxis.com</a>, о которой я уже писал, теперь стала полноценным продуктом.</div>
<div>
<br /></div>
<div>
Что значит полноценным? Теперь для пользователей стали доступны расширенные возможности работы, а именно - больше шаблонов, больше активных пользователей, больше места под вложения. Что значит продуктом - да, теперь за неё можно заплатить деньги. :) Были добавлены <a href="https://www.etraxis.com/plans.php">тарифные планы</a>, каждый из которых даёт расширенные возможности.</div>
<div>
<br /></div>
<div>
Конечно же, <a href="https://www.etraxis.com/plans.php">бесплатный онлайн-трекинг</a> всё также доступен и в нём по-прежнему действует ограничение на 2 активных шаблона записей и 5 пользователей. Если заказчику нужно больше пространства для манёвра - достаточно заплатить, например через банковскую карту. Сейчас после регистрации в сервисе по умолчанию создается шаблон с типовым сценарием работы над проблемой и группы пользователей. Так что дополнительная настройка workflow - это уже шаг на усмотрение пользователя.</div>
<div>
<br /></div>
<div>
<a href="http://code.google.com/p/etraxis/">Open source версия</a> всё также никуда не делась. Она по-прежнему доступна и активно поддерживается. Новые версии как выходили, так и будут продолжать выходить стабильно. Функциональность open source решения полностью поддерживается онлайн-сервисом и опробуются именно там.</div>
<div>
<br /></div>
<div>
Итак, заходим, пробуем, ну и конечно же покупаем :)</div>
</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-30455518152838429902011-09-29T00:41:00.000-07:002011-09-29T22:35:59.903-07:00Впечатления от работы с Perforce<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего.<br />
<br />
Как уже писал чуть ранее, я по <a href="http://scm-notes.blogspot.com/2010/06/piano-player-at-brothel.html">роду деятельности</a> после <a href="http://scm-notes.blogspot.com/2011/08/blog-post.html">смены места</a> работы активно осваиваю новое пианино - <a href="http://www.perforce.com/">Perforce</a>. Часто его сокращённо называют P4.<br />
<br />
До этого на Перфорс доводилось только глядеть через плечо коллег, работавших с ним на небольшом проекте. Так что, можно сказать, знакомство начал с чистого листа. Почитал материалы тренинга и по ходу дела смотрел доки на сайте самого Перфорса.<br />
<br />
<b>Общие основы</b><br />
<br />
Perforce - типичная централизованная система контроля версий. Есть сервер, который хранит историю изменений подконтрольных сущностей в репозиториях, которые называются depot. Читается как "дипоу", но вообще - просто депо, типа как трамвайное. Клиент, подключаясь к серверу, берет нужную часть сущностей к себе на локальную машину. С этого момента программа-клиент П4 создает т.н. workspace, т.е. рабочее пространство.<br />
<br />
<a name='more'></a><br /><br />
Все изменения, вносимые в workspace, при желании отправляются на сервер, в соответствующее депо. Процесс отправки называется традиционно - submit. Отправляемые изменения - атомарны, и работа идет посредством change lists, т.е. списков изменений, отправляемых единой транзакцией. Изменил десяток файлов - посылаешь их через сабмит. Если что-то пошло не так - всё изменение откатывается.<br />
<br />
Списки имеют каждый свой номер - примерно как в SVN есть сквозные номера ревизий. Создавая новый список, ему можно или самому присвоить очередной номер, или не присваивать и при сабмите это сделает сам Перфорс.<br />
<br />
Если нет желания засабмитить изменения, но нужно показать результат работы кому-либо - используется механизм shelving. Нужные файлы выкладываются "на отдельную полку" всем причастным, их просматривают, делают правки и берут обратно. Похожий механизм используется в Microsoft TFS.<br />
<br />
Работа ведется в основном в GUI-оболочке, P4V. Однако можно использовать и командную строку. Но P4V достаточно удобен, отторжения и неудобств он не вызывает.<br />
<br />
Что касается обеспечения распределённости разработки и балансировки нагрузки, то несколько серверов могут быть реплицированы между собой. Можно спокойно работать с прокси-сервером и новые изменения будут доступны всем серверам по мере обмена данными между ними. В ClearCase аналогом является механизм MultiSite.<br />
<br />
<b>File mappings</b><br />
<br />
Первая особенность Перфорса от большинства систем контроля версий - использование для связи структуры файлов в depot и их отображения на структуру директорий механизма file mapping. Т.е. это отображение файлов из депо на файловую систему пользователя.<br />
<br />
Например, рабочее окружение под названием my_workspace настроено в директорию C:\workspaces\my_workspace\ . В настройках workspace пишется например такое:<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">//depot/... //my_workspace/...</span><br />
Это означает, что структура будет отображена один-к-одному. Теперь достаточно взять последние версии файлов отдельной командой - и в директории на диске появится срез исходников.<br />
Можно также комбинировать файлы из разных источников. Например, если есть депо с исходниками двух модулей - //depot1/module1 и //depot2/module2, а также приложение, которое их использует - //app_depot/main/, то соорудив вот такие правила<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">//depot1/module1/... //my_workspace/modules/module1/...</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">//depot2/module2/... //my_workspace/modules/module2/...</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">//app_depot/main/... //my_workspace/main/...</span><br />
можно получать срез нужных исходников автоматически в нужной структуре директорий.<br />
Есть ещё несколько возможностей, связанных с mapping, но общий смысл - именно такой.<br />
<br />
<b>Ветвление, слияние и метки</b><br />
<br />
Модель ветвления похожа на модель Subversion. Как и в SVN, здесь ветка образуется копированием структуры нужной директории в любое место депо. Лично мне такой подход не нравится по принципиальным соображениям, однако - он вот такой. В работе столкнулся с тем, что хотя образование ветки процесс быстрый (работает cheap copy), получается всё равно довольно громоздко, т.к. для отстройки исходников файлы приходится всё равно доставать из депо в полном составе. При количестве файлов в ветке, исчисляемом тысячами, процесс растягивается на долгие минуты и даже, при плохой связи, на часы.<br />
<br />
При этом, в отличие от Сабвершна, метки там - это действительно метки. То есть метка - это бирка, которая вешается на нужную версию выбранного файла. Т.е. вешая метку на какую-то директорию в какой-то момент времени, пользователь помечает видимые версии каждого файла внутри директории нужной информацией. И при необходимости по этой метке можно воссоздать нужный срез исходников. Есть и побочный эффект, которого я не встречал нигде больше - меткой можно пометить одновременно два ответвления файловой структуры. Я пока не видел как бы это могло кому-то понадобиться, но в других системах это в принципе невозможно. Занятно, в общем.<br />
<br />
Для удобства интеграции механизм mapping, описанный выше, был расширен не только для взятия файлов из депо, но и для ветвления и выставления меток. Например, если часто делается интеграция с ветки для новой фичи на основную ветвь разработки, то создается mapping, где прописываются оба бранча, и дальнейшая интеграция сводится к паре кликов. Аналогично - с метками.<br />
<br />
Что касается слияния, то как и SVN, Перфорс не блещет ни скоростью, ни сообразительностью. Да, оно успешно сливает вместе две ветки с общим предком. Даже использует для этого 3-хстороннее слияние, т.е. определяет общего предка. При этом скорость при работе с файлами размером в несколько десятков Кб и 2-3-хгодичной историей весьма низка, бывает до десятка секунд. Дефолтный инструмент сравнения и слияния, при всей и наглядности и удобстве, при сложных сравнениях просто начинает выдавать несуразицу, например совершенно не сращивает перемещение кода по файлу. Перемещение и переименование файлов отрабатывает иногда как перемещение, а иногда - как удаление и создание нового файла. Изменения между такими файлами, которые в одной ветке переименованы, а в другой - остались на месте, практически не отслеживаются вообще.<br />
Допускаю, что у меня были сложные нетривиальные случаи - история у многих файлов очень большая и разветвлённая - но конкретно для меня слияние оказалось не очень предсказуемым и стабильным функционалом.<br />
<br />
<b>Управление доступом</b><br />
<br />
Что откровенно порадовало - так это управление доступом.<br />
<br />
Для удобства все пользователи могут разбиться по группам. У каждого юзера или группы могут быть права разных уровней - от полного отказа в доступе до полных прав, включая запись или создание ветки. В общем, вполне стандартные возможности.<br />
<br />
Сами же права прописываются в виде текста, где перечисляются права на доступ, имя юзера или группы, IP-адрес или диапазон, для которого применимы права, и директория, на которые права прописываются (wildcards также применимы). Чем ниже правило, тем оно приоритетнее.<br />
<br />
Простая схема, но она даёт все возможности для гибкого управления доступом.<br />
<br />
<b>Общее впечатление</b><br />
<br />
Общее впечатление сейчас скорее положительное, несмотря на некоторые неудобства. Я бы сказал, что Perforce - это по сути сильно улучшенный Subversion с хорошим GUI. Но при этом платный.<br />
<br />
По мере погружения в глубины Перфорса, наверное, что-то ещё напишу.</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com2tag:blogger.com,1999:blog-2592326469964039544.post-53984042879864391682011-08-08T22:54:00.000-07:002011-09-29T00:45:25.186-07:00Второй раз в ту же реку<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего.<br />
<br />
Как-то за суетой забыл совсем - не так давно я вернулся на <a href="http://www.rhondasoftware.com/">предыдущее место работы</a>. Я теперь снова - <a href="http://scm-notes.blogspot.com/2010/06/piano-player-at-brothel.html">СМ-инженер</a>. Снова большая корпорация, снова embedded-системы, снова контрактор. Всё как я люблю, в общем. :) Как поется в шлягере гражданина Бадди Гая: "Back to the same old place..."<br />
<br />
Основной инструмент теперь - <a href="http://perforce.com/">Perforce</a>, а также JIRA, не считая ещё нескольких инструментов. В ближайшее время будет пост про личные впечатления от Перфорса. Откровений, шокирующих подробностей и скриншотов не ждите, ибо <a href="http://en.wikipedia.org/wiki/Non-disclosure_agreement">NDA</a> никто не отменял. Следите за RSS-лентой, что ещё сказать.<br />
<br />
P.S. Теперь, спустя 2 года после заведения блога с записками отставного сиэмщика, впору его как-нибудь переименовать. Но не стану. Меня вот уже и в поиске по этому позывному находят.<br />
<div>
<br /></div>
</div>
Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com8tag:blogger.com,1999:blog-2592326469964039544.post-698034854131485302011-08-04T01:05:00.000-07:002012-01-26T13:15:40.868-08:00Как закрыть задачу в Redmine<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего.<br />
<br />
Ко мне в бложик часто заходят люди по запросам, связанным с закрытием задачи в Рэдмайне. Им в Redmine надо отметить задачу, как выполненную. Видимо, при всей навороченности этой системы, простейшие операции по началу вызывают недоумение. Хотя всё довольно просто и проистекает из идеологии всей системы. Если вы прочитали предыдущие <a href="http://scm-notes.blogspot.com/search/label/redmine">заметки про Redmine</a>, всё должно быть понятно. Но читали их не все (хотя и стоило бы).<br />
<br />
Чтоб, как говорится, два раза не вставать - пишу здесь отдельным постом.<br />
<br />
<a name='more'></a><br />
Итак, задачи в Рэдмайне находятся в любой момент времени в каком-то одном статусе. Статус бывает трёх видов - начальный, промежуточный и конечный. Закрытой запись считается тогда, когда ей присвоили конечный статус. Такими статусами считаются Закрыта и Отклонена.<br />
<br />
Соответственно, <b>чтобы в Redmine закрыть задачу</b>, нужно поменять статус. Сделать это можно двумя способами.<br />
<br />
<b>Способ первый</b>. Заходим с интересующую задачу. Нажимаем кнопку Update (Обновить). Появляется форма обновления задачи. Ищем поле Статус, выбираем подходящий пункт, жмём Submit - заслать, стало быть.<br />
<br />
<b>Способ второй</b>, для ленивых. Находясь в списке задач, нажимаем на нужной задаче правой кнопкой мыши и в выпадающем меню выбираем Статус и далее - закрывающий статус.<br />
<br />
Всё.</div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com12tag:blogger.com,1999:blog-2592326469964039544.post-73481760386650782792011-07-26T02:59:00.000-07:002011-07-26T03:14:46.657-07:00Version Control by Example - свежая книжка про контроль версий<div dir="ltr" style="text-align: left;" trbidi="on"> Добрейшего!<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Рад сообщить, что вышла книга <a href="http://www.ericsink.com/vcbe/">Version Control by Example</a> (<b>Управление версиями в примерах</b>). Поскольку я пристально слежу за <a href="http://scm-notes.blogspot.com/p/scm-books.html">книгами по SCM</a>, появление новых трудов всегда интересно.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://www.ericsink.com/vcbe/1802_image001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://www.ericsink.com/vcbe/1802_image001.jpg" width="151" /></a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Автор книги - <a href="http://www.ericsink.com/vcbe/html/author_background.html">Eric Sink</a> (Эрик Синк), человек и пароход, который живет именно системами контроля версий и другими девелоперскими инструментами уже не один десяток лет. Сейчас он вместе с командой создает <a href="http://www.veracity-scm.com/">Veracity</a>, распределенную систему контроля версий.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Текст выложен в виде HTML и PDF, в скором времени будут доступны бумажные копии и версия для Kindle.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Труд целиком посвящен контролю версий, и только ему. Никаких отступлений в сторону общих практик SCM, например багтрекинга, контроля изменений, управления релизами или чего-то подобного. Нет, только чистый контроль версий с точки зрения его базовых функций и примеры работы с 4 выбранными системами. Написана живо, с юмором даже местами, читать приятно и не напряжно.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
Что внутри?<br />
<br />
<a name='more'></a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Часть I - <b>Centralized version control</b> (Централизованный контроль версий) - целиком посвящена централизованным системам контроля версий (CVCS) на примере <b>Subversion</b>. Сначала перечисляются и описываются все базовые команды подобных систем, причем в качестве иллюстраций дается "Джоконда" Да Винчи. Над ней выполняют разные манипуляции - подрисовывают усы, шляпу или ещё как-нибудь издеваясь, тем самым показывая наглядно - что такое изменение, добавление, удаление, дельта и прочие термины. Далее эти команды рассматриваются на примере реальной системы - SVN. Пример взят доходчивый, и код, и текст читаются легко.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Часть II - <b>Distributed Version Control</b> (Распределенный контроль версий) - значительно более обширна. Даётся общее описание модели распределенных систем, приводятся плюсы и минусы, которые также честно описываются. После чего поочередно для всё того же примера, приведенного в главе про SVN, рассматриваются <b>Mercurial</b>, <b>git</b> и <b>Veracity</b>. Конечно, на последнем сосредоточено больше внимания, т.к. это детище самого Эрика, однако мне лично было интересно почитать, система и впрямь занятная получилась. Опять же, давно хотел попробовать в деле - после такого описания будет повод взяться.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Часть III - <b>Beyond Basics</b> (Когда основы уже пройдены) - рассказывает о более нетривиальных вещах. В первую очередь дает краткий обзор типовых способов работы (workflows). Ничего нового, но кому-то может быть полезным. Далее углубляется в устройство DVCS - довольно занимательное чтение. Ну и напоследок ряд советов по организации работы. Какие-то тривиальны, какое-то спорны, но в целом, полезны.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Итог</b>. Если в вашей команде кому-то надо ознакомиться с контролем версий с нуля или же обновить свои знания в этой области - эта книжка как раз подойдёт, можно смело брать.</div></div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com2tag:blogger.com,1999:blog-2592326469964039544.post-53210186285388563502011-05-26T00:48:00.000-07:002011-10-17T23:16:39.842-07:00Контроль версий и SCM в Google<div dir="ltr" style="text-align: left;" trbidi="on">
Добрейшего.<br />
<br />
Давно ищу разную информацию, касающуюся SCM в Google. Всегда ведь интересно знать, как работают крупные команды. Были разрозненные данные, и вот не так давно появился повод подытожить то, что известно. Нашелся хороший человек, который там работает, он не смог дать подробную инфу в силу <a href="http://en.wikipedia.org/wiki/Non-disclosure_agreement">NDA</a> (что вполне понятно и ожидаемо), однако дал подсказки для раскопок общедоступных данных, за что ему спасибо.<br />
<br />
Итак, Гугл использует <a href="http://www.perforce.com/">Perforce</a>. Использует практически на всех внутренних проектах. Есть сведения, что в Youtube его создатели использовали Subversion до покупки Гуглом, но наверняка сейчас их перевели на общую платформу.<br />
Для "наружного применения" компания выдаёт все популярные open source системы. В первую очередь это git - через него идёт предоставление исходников платформы Android. Ну а Google Code предоставляет централизованный канонический Subversion и распределённые Mercurial и git (из DVCS сначала <a href="http://scm-notes.blogspot.com/2011/02/mercurial-git-google-code.html">выбирали между Hg и git</a>).<br />
<br />
Над Perforce располагается широкая прослойка из инструментов, заточенных под работу именно на гугловыми проектами. Вплоть до того, что командой для работы с системой является не "p4", а "g4". Многие костыли или workarounds, сделанные из-за недостатка функционала, до сих пор работают, несмотря на то, что в самом Перфорсе это уже давно реализовано. Работает старый принцип "работает - не трогай", ведь переделывать инфраструктуру - дело непростое, и зачастую очень богатое на ошибки. Так что после выхода очередной версии P4 её сначала разворачивают на отдельном оборудовании, накатывают сверху все внутренние тулзы, а уж потом, когда всё настроится и заработает, выкатывают это всем остальным.<br />
<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
Сам Perforce работает на системе серверов в режиме 24/7. Оно и понятно, над исходниками проектов работают круглые сутки со всех точек мира. И конечно, его сопровождением занимается выделенная команда инженеров.</div>
<br />
Работа ведется без использования веток. Уж не знаю, чем это вызвано - сложностями работы с Перфорсом или другими соображениями - однако оно вот так. Для того, чтобы на транке не появлялись глючные изменения, их необходимо проверять перед тем, как помещать под контроль версий. Долгое время это делалось посредством обмена email-ами и работой через NFS, где расшаривалось рабочее пространство всех пользователей. Потом в 2006 году в компанию пришёл Гвидо ван Россум, создатель языка Python, и сделал систему ревью кода под названием Mondrian. Она позволяет по-прежнему инспектировать изменения до их помещения под контроль версий, но сейчас до коммита вся информация о дельте и комментариях к ней лежит в BigTable (гугловая система ранения). Конечно, удобный веб-интерфейс (Python + JavaScript) сильно упрощает работу, но вот вводить лишнюю сущность для хранения просто потому, что не принято класть изменения на ветки - по меньшей мере странно. Но - им виднее.<br />
<br />
При этом широко используются релиз-инженеры. Судя по вакансиям, они занимаются всем, что требуется для доставки изменения от разработчика к конечному потребителю. Выпуск очередных версий систем, поддержание работы системы контроля версий, багтрекинг и всё то, что составляет инфраструктуру современного SCM.<br />
<br />
Касательно багтрекинга и вообще процесса работы непосредственно над кодом - тут всё разнится от проекта к проекту. Вполне ожидаемо учитывая сколько разных проектов живет под крышей Гугла. Опять таки, многие проекты когда-то были отдельными компаниями, со своей инфраструктурой, так что хорошо уже то, что у них всех есть по крайней мере одна общая часть - система контроля версий.<br />
<br />
Данные брались из разных материалов, однако основой служат 2 презентации:<br />
<ul style="text-align: left;">
<li>Perforce Users Conference 2010: <a href="http://filehost.perforce.com/downloads/media/userconftalks/2010/google/google.html">Developing and Maintaining an Ongoing Strategic Perforce Plan at Google</a> by Geoff Mendal.</li>
<li>Google Tech Talk 2006: <a href="http://www.youtube.com/watch?v=sMql3Di4Kgc">Mondrian Code Review On The Web</a> by Guido Van Rossum.</li>
</ul>
Кстати, ван Россум сделал из Mondrian отдельное приложение, которые можно взгромоздить поверх Subversion и Google App Engine, называется <a href="http://code.google.com/appengine/articles/rietveld.html">Rietveld</a>.<br />
<br />
Если есть кому что добавить - велкам.<br />
<br />
P.S. Для сравнения можно прочитать <a href="http://scm-notes.blogspot.com/2010/03/scm-microsoft.html">Немного об SCM в Microsoft</a> и <a href="http://scm-notes.blogspot.com/2010/03/windows-software-engineering-odyssey.html">Windows. A Software Engineering Odyssey</a>.</div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0tag:blogger.com,1999:blog-2592326469964039544.post-25075702959123419302011-05-24T05:38:00.000-07:002011-05-24T05:38:29.759-07:00Git в картинках на RSDN<div dir="ltr" style="text-align: left;" trbidi="on">Добрейшего.<br />
<br />
Постоянные читатели бложика знают мой скепсис по поводу распределённых систем контроля версий вообще и git в частности. Однако нет-нет, да и проскакивают ссылки, которые просто необходимо <strike>утащить в нору</strike> сохранить в бложике, чтоб не потерялись. Может кому и пригодится.<br />
<br />
Сегодня увидел как раз такую - <a href="http://www.rsdn.ru/article/tools/Git.xml">Git в картинках</a> за авторством Игоря Ткачёва, одного из родоначальников и апологетов сообщества RSDN. Название говорит само за себя - объясняется на картинках, как работать с git через git extentions (оконную надстройку над гитом). Объяснение простое и доходчивое, даже я понял что к чему.<br />
<br />
В общем, кто давно хотел подружится с git, но боялся ч0рной командной строки и непонятного английского - это для вас.</div>Aquaryhttp://www.blogger.com/profile/10690422971056030987noreply@blogger.com0