Как вы справляетесь со светлой и темной стороной распределенных систем управления версиями?

Недавно у меня были некоторые дискуссии на работе о переходе от Subversion к DVCS, как bazaar, и я хотел бы получить мнение других людей.

Мне удалось выкристаллизовать свое нежелание делать это в простую параллель.

Контроль версий может использоваться хорошо или плохо.

'light side' контроля версий-это когда вы используете его для отслеживания ваших изменений, можете вернуться к старым версиям, когда вы нарушаете материал, и когда вы публикуете свои изменения, чтобы ваши коллеги могли видеть ваш work-in-progress.

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

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

С другой стороны, 'dark side' довольно трудно следовать тоже. Вам нужно только один раз укусить, не имея ваших локальных изменений, совершаемых время от времени в онлайн-хранилище, и сломать ваш код с помощью простого редактирования, которое вы даже не помните. Таким образом, вы в конечном итоге делаете регулярные коммиты, и люди могут видеть работу, которую вы делаете.

Таким образом, в конце концов Subversion становится хорошим middle-of-the-road VCS, который, хотя и немного громоздкий для реализации лучших практик, все же затрудняет получение очень неправильных вещей.

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

Итак, в двух словах, вот вопрос: если я дам нашим разработчикам на работе DVCS, как я могу убедиться, что они используют его, чтобы перейти к 'light side', по-прежнему регулярно публиковать свои изменения в Центральном местоположении и заставить их понять, что их недельный локальный хак, который они не хотели делиться, может быть просто тем, что какой-то другой разработчик может использовать для завершения функции, пока первый находится в отпуске?

Если и светлая сторона, и темная сторона DVCS так легко добраться, как я могу держать их подальше от темной стороны?

svn   version-control    

380   4   04:24, 25th August, 2020


Что я здесь сделал не так? [Javascript Regex]

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

Посмотрите на мой код и скажите мне, что я делаю неправильно.

<form method="post" action="/" onsubmit="return check_form()">
    <input type="text" id="display-name" name="display-name" maxlength="255" />
    <input type="submit" />
</form>
<script type="text/javascript">
<!--
    var name_regex = /^([a-zA-Z0-9_])+/

    function check_form()
    {
        if (!name_regex.test(document.forms[0].elements[0].value))
        {
            document.forms[0].elements[0].focus()
            alert("Your display name may only contain letters, numbers and underscores")
            return false
        }
    }
-->
</script>

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

javascript   regex    

442   8   04:24, 25th August, 2020


Вопросы поставщику услуг виртуализации

На следующей неделе еду на презентацию стенда Hyper-V в MS. Какие вопросы задать, что вас давно интересовали, и о которых я не догадываюсь, что бы обезопасить себя в будущем в случае не предвиденной ситуации?

Меня на пример вопрос с переносом виртуальных машин интересует, у которых есть снепшоты, с хоста на хост (вне кластера). Все ли там так же просто как в ESX, или есть какие то проблемы, как на пример в VirtualBox?

Есть какие то моменты, которые сразу надо прогнать на стенде, и решить — готовы мы мириться с особенностями продукта или нет?

Какие технологии виртуализации востребованы в работе среднестатистической компании?

Microsoft   Виртуализация    

326   6   04:21, 25th August, 2020


Nvidia Geforce GT420?

Всем привет. Я бы хотел купить видеокарту Nvidia Geforce GT420, но как назло её ставят только в собранные компьютеры, а по отдельности в розницу не продают. Во всяком случае, так пишут на сайте Nvidia, а Яндекс.Маркет утвёрждает, что готовых компьютеров с этой картой продают целое море.

Может, кто-нибудь знает, где такую купить?


//Предвидя вопросы и советы в духе «зачем она нужна» и «можно купить за те же деньги более мощную карту», отвечаю заранее. Мне нужна отладочная карта для CUDA с двумя гигабайтами памяти на борту и с чипом не младше GF106 (здесь GF108), производительность при этом совершенно не важна.

GPGPU   CUDA   NVIDIA    

359   2   04:20, 25th August, 2020


mysqli или PDO - каковы плюсы и минусы?

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

Я предпочитаю PDO только по той причине, что он допускает именованные параметры для подготовленных операторов, а насколько мне известно, mysqli этого не делает.

Есть ли еще какие-то плюсы и минусы в выборе одного из них в качестве стандарта, когда мы объединяем наши проекты, чтобы использовать только один подход?

php   mysql   pdo   mysqli   database-abstraction    

882   13   04:14, 25th August, 2020


Как лучше всего сообщать об ошибках из рабочего процесса SharePoint?

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

UPD: в идеале я хотел бы поместить рабочий процесс в состояние ошибки и записать сообщение в журнал рабочего процесса. Это кажется невозможным. Как можно ближе подобраться к нему? Я хочу, чтобы повторно используемый раствор,то, что легко для пользователей, чтобы настроить, когда через мои пользовательские действия в SharePoint дизайнер.


Добавил больше деталей к вопросу.

@mauro это заботится о сохранении ошибки, но как я могу отобразить ошибку пользователю таким образом, чтобы это имело смысл?

@AdamSane это кажется довольно хрупким решением. Это не вопрос настройки этого один раз на одном сайте. Мне нужно что-то, что другие могут добавить, используя SPD.

sharepoint   error-handling   moss   workflow    

452   4   04:12, 25th August, 2020


Как я должен протестировать метод, который заполняет список из DataReader?

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

Код, над которым я работаю, должен быть заполнен, скажем, a List<Foo> из A DataReader, который возвращает все поля, необходимые для функционирования Foo. Однако если я хочу проверить, что код фактически возвращает один элемент списка на одну строку базы данных, я пишу тестовый код, который выглядит примерно так:

Expect.Call(reader.Read()).Return(true);
Expect.Call(reader["foo_id"]).Return((long) 1);
// ....
Expect.Call(reader.Read()).Return(true);
Expect.Call(reader["foo_id"]).Return((long) 2);
// ....
Expect.Call(reader.Read()).Return(false);

Что тоже довольно утомительно и довольно легко нарушается.

Как я должен подходить к этому вопросу, чтобы результат не был огромным беспорядком хрупких тестов?

Кстати, в настоящее время я использую Rhino.Mocks для этого, но я могу изменить его, если результат будет достаточно убедительным. Просто пока альтернативой не является TypeMock, потому что их EULA было немного слишком страшно на мой вкус, когда я последний раз проверял.

Edit: я также в настоящее время ограничен C# 2.

c#   unit-testing   tdd   mocking    

472   6   03:56, 25th August, 2020


Как сделать так чтобы CTRL+C/CTRL+V в Mac OS X работали аналогично cmd+v/cmd+с?

При переключении постоянно путаюсь, хочется сделать так чтобы работали обе комбинации, как можно настроить mac os на это?


C помощью сторонних программ если они бесплатны тоже можно.

Клавиатура   Резервное   копирование   macOS    

539   5   03:42, 25th August, 2020


Видеокарты. Что лучше взять Palit GTX460 Sonic Platinum или Gainward GTX460GLH?

Цены почти одинаковые, но что лучше?

Видеокарты    

295   3   03:32, 25th August, 2020


Помогите найти запись на хабре, посвящённую IM интерфейсу

Некоторое время назад (может и больше) на хабре была опубликована запись, в которой описывался интерфейс IM клиента. Прототип так сказать…

Краткое описание:
  1. Белый цвет интерфейса
  2. 2 режима работы (полный и минималистичный)
  3. Сам интефейс «работал» в однооконном режиме (список контактов в одном окне с чатом)


Может у кого в закладках сохранилась ссылка или копия в других местах.

Сегодня перерыл половину хабра по тегам, которые по-моему мнению должны соответствовать данной записи, но безрезультата… :(

Макеты   и   прототипы   Интерфейс   пользователя    

366   5   03:32, 25th August, 2020