Это по необходимости стоит? [закрытый]

DateTime now = DateTime.Now;
int prevMonth = now.AddMonths(-1).Month;
int year = now.AddMonths(-1).Year;
int daysInPrevMonth = DateTime.DaysInMonth(year, prevMonth);
DateTime firstDayPrevMonth = new DateTime(year, prevMonth, 1);
DateTime lastDayPrevMonth = new DateTime(year, prevMonth, daysInPrevMonth);
Console.WriteLine("{0} {1}", firstDayPrevMonth.ToShortDateString(),
  lastDayPrevMonth.ToShortDateString());
19
задан Thorbjørn Ravn Andersen 30 December 2015 в 04:10
поделиться

10 ответов

Обновление, ноябрь 2011 г .:

Использование Git, как настоятельно рекомендовал Тило , очевидно, лучший выбор по ряду причин (децентрализация , частные коммиты, ветвление, слияние, ...).
Я полностью осведомлен о различиях между централизованной и децентрализованной VCS, как подробно описано в « Опишите свой рабочий процесс использования контроля версий (VCS или DVCS) ».

Однако, используя его в большом масштабе предприятие непросто .
Я знаю. Я представил Git на большом предприятии:
Я изложил общие причины в « Можем ли мы наконец перейти к DVCS в корпоративном программном обеспечении? Является ли SVN« обязательным элементом »для разработки? » (при этом все еще говоря, что DVCS - очень правильный выбор)

Но я подробно описал основные проблемы при установке Git на предприятии в статье « Распределенные системы управления версиями и предприятие - хорошее сочетание? ».
Я фактически представил эти болевые точки в последнем CodeKen 2011 (заменяющем ex-DevDays 2011) .
Презентация называлась « Внедрение DVCS в большой корпорации », и твиты были красноречивы:

  • Grundlefleck : Мое резюме: на предприятие просто не попадают
  • ben_sim : @VonC_ переопределяет боль на # codeken2011: перекомпилирует git и все его зависимости, чтобы вы могли использовать его на производственном сервере на предприятии.

Уловка с DVCS заключается в следующем: вам все еще нужен " сервер ", централизованное место, где все разработчики могут получить" благословенную "версию своего репо.
А в большой корпорации эти взаимно объединенные серверы ... взаимно объединены, уже запущено множество других сервисов, что означает, что вы не можете просто добавить на него свой Git (вы выиграли на этом сервере нет нужных библиотек).
Кроме того, вам понадобятся ваши собственные ssh и httpd, чтобы ваш пользователь мог отправлять / тянуть на / с этого сервера.

Я фактически автоматизировал процесс установки Git и всех его зависимостей / связанных служб в проекте GitHub compileEverything .

Так что да, используйте Git.
На клиентском ПК его можно установить и начать использовать за считанные минуты!
Но на сервере большого предприятия? Это не так-то просто.

Вспомните 2009 г .:

  • Поддержка Git в Windows была возможна, но все еще продолжается,
  • Git сам не включал " smart http ", что означало единственным протоколом с аутентификацией для операций pull / clone и push был ssh: убедить пользователей сгенерировать и управлять открытыми / закрытыми ключами ... проблематично, если не сказать больше.
    Https можно было извлекать и клонировать, даже если запрос был довольно неэффективным. Для толчка ... настройка задействовала WebDAV и была сложной. Smart Http все изменил.
  • уровни авторизации были неуклюжими ( гитозис ), а гитолит едва запускался.
    И вам нужен уровень авторизации на большом предприятии.
    Ни один пользователь не может получить доступ к любому репозиторию, некоторые из указанных репозиториев являются довольно конфиденциальными.

Исходный ответ, еще в 2009 году:

Внутри корпорации, в закрытой централизованной среде Perforce, безусловно, является хороший вариант.
Он проверяет ваше рабочее пространство быстро и прекрасно управляет набором изменений.

20
ответ дан 30 November 2019 в 02:52
поделиться

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

С другой стороны, недавно я изучал некоторые распределенные системы контроля версий (в частности, git, Mercurial и Bazaar). У них есть много функций, которые выглядят очень интригующе, особенно не требующие постоянного подключения к серверу. Кроме того, вы можете настроить свою систему так, чтобы она имела «главный» сервер, даже в распределенных системах. Поэтому я предлагаю сначала взглянуть на один из них и посмотреть, соответствуют ли они вашим потребностям.

2
ответ дан 30 November 2019 в 02:52
поделиться

Мы его используем, и у него определенно есть много "вкусностей", которые можно рекомендовать. Вы должны немного привыкнуть к этому и думать «в Perforce».

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

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

Мы использовали Vault до Perforce, и в целом переход был очень плавным без слишком большой потери производительности. :)

3
ответ дан 30 November 2019 в 02:52
поделиться

Этот вопрос аналогичен по своей природе вопросу о том, лучше ли Ant, чем Maven или C #. лучше чем Java. На мнение людей будут влиять их боевые шрамы, и у большинства людей есть только тяжелый и полезный опыт использования от 1 до 3 инструментов SCM, поэтому я не могу дать вам сбалансированное мнение.

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

Не повредит ли какое-то время попробовать Subversion, Git, Mercurial или один из других SCM с открытым исходным кодом? Если окажется, что они не подходят для использования, по крайней мере, это даст вам представление о том, на что обращать внимание при оценке Perforce.

2
ответ дан 30 November 2019 в 02:52
поделиться

Perforce довольно тяжелый вес, особенно для небольшой команды.

Я бы настоятельно рекомендовал SVN или GIT, для хорошей надежной, хорошо поддерживаемой VCS, затем используйте доступные инструменты и лучшие практики (все бесплатно из вашего дружелюбного локального Интернета) для поддержки необходимых вам функций.

Например, с SVN вы можете настроить свойства «bugtraq», которые помогают группировать изменения.

6
ответ дан 30 November 2019 в 02:52
поделиться

Большинство преимуществ Perforce также доступны в Subversion. Subversion также проще в управлении, и у нее нет такого жесткого требования оставаться подключенным к серверу.

Однако я считаю, что синтаксис p4 намного намного проще в использовании и вывод намного менее загадочен, чем svn .

2
ответ дан 30 November 2019 в 02:52
поделиться

На работе мы много лет использовали Visual SourceSafe, прежде чем в прошлом году переключились на Perforce. Это определенно дорого, и у нас также есть сценарии сборки Ant, работающие от имени пользователя "build", который считается одним лицензированным пользователем, что вроде как сгорает. Компания оплатила двухдневный обучающий семинар, поэтому разработчики здесь быстро освоились, но время от времени возникают вопросы о том, как делать foo и т. Д. (Я являюсь частью небольшой группы здесь, которая поддерживает других пользователей по вопросам Perforce - в основном из-за того, как работает Visual Studio, а не из-за самого Perforce).

Что касается использования Perforce, я думаю, что самая большая разница заключается в том, как Perforce концептуализирует всю задачу отслеживания ваших изменений. Например, Subversion хранит каталог с именем .svn для хранения метаданных о файлах; с p4, сам сервер p4 хранит список имеющихся у вас файлов. Это, по-видимому, самый большой источник проблем - кто-то сообщает серверу p4 получить последние файлы для проекта, но затем что-то вручную удаляет. Когда он / она снова запрашивает у сервера p4 последнюю информацию, сервер p4 думает, что она у него уже есть, поэтому не обновляется. Как только люди «поймут» это, работать с ними станет намного легче. Вам просто нужно сказать серверу «удалить из рабочей области», а затем получить его снова.

У нас есть несколько пользователей MS Visual Studio, а также Eclipse и IntelliJ, и поддержка плагина p4 для всего этого работает достаточно хорошо. Ежедневный распорядок регистрации заезда / отъезда и получения последних новостей ничем не отличается. В основном мы используем базовые функции, и даже тогда это кажется улучшением по сравнению с Visual SafeSafe (опять же, Судя по разглагольствованиям, которые я иногда вижу в сети по этому поводу, возможно, что-то лучше Visual SourceSafe). Наличие нескольких открытых списков изменений одновременно дает некоторым из нас большую гибкость в том, как мы работаем. Кажется, что настройки плагина Perforce предпочитают тихую проверку, которую сразу заметили многие пользователи, но мне это очень нравится, и я думаю, что в целом это улучшение производительности. IDE выделяют имена файлов другим цветом, чтобы вы могли видеть, были ли что-то изменены, - и в списках изменений p4 всегда отображается то, что вы отметили.

Объединение изменений, когда несколько пользователей отметили изменения в файле, довольно приятно легко. Инструменты сравнения не очень впечатляющие, но мы можем довольно хорошо сравнивать конфликты по строкам и просто выбирать те, которые нам нужны. Должен отметить, что инструменты графического интерфейса отличные. Большинство разработчиков здесь не используют клиент p4v, но некоторые используют, и я, например, использую его постоянно. Я уже говорил, что графический интерфейс отличный? Вы можете просмотреть все представленные списки изменений, просмотреть историю файлов, перетащить одну ревизию на любую другую и получить мгновенное различие, посмотреть на график ревизий, который показывает вам историю ветвлений, посмотреть на "покадровый" просмотр ревизии файла (очень удобная функция - перетащите ползунок вперед и назад вверху и наблюдайте, как содержимое файла обновляется с каждой ревизией).

Мы сделали только несколько веток кодовой строки, поэтому мы еще не очень разбираемся в этом. До сих пор это было очень просто, и слияние изменений тоже довольно легко. В рамках учебного курса каждый получил экземпляр «Practical Perforce», написанный вице-президентом Perforce по технологиям или кем-то подобным. Там' Там довольно много контента о различных методологиях обработки строк кода и ветвления. Я думаю, что когда мы использовали SourceSafe, мы были настолько ограничены в том, что он мог делать, что мы могли думать только определенным образом - Perforce настолько более гибок, что внезапно стало возможным иметь разные философии относительно того, когда / как / почему должны быть установлены кодовые строки вверх и т. д. В связи с этим мы все еще пробуем много чего, что касается ветвления и интеграции (слияния).

PS Двухпользовательская установка не требует лицензии и ограничивает вас только 5 рабочими пространствами. Вы можете оценить его без ограничения по времени. Они также предлагают бесплатное (но не поддерживаемое) лицензирование для проектов с открытым исходным кодом.

мы были настолько ограничены в том, что он мог делать, что мы могли думать только определенным образом - Perforce настолько гибок, что внезапно стало возможным иметь разные философии относительно того, когда / как / почему должны быть установлены кодовые строки и т. д. Итак, в этом учитывая, что мы все еще пробуем много чего в отношении ветвления и интеграции (слияния).

PS Двухпользовательская установка не требует лицензии и ограничивает вас только 5 рабочими пространствами. Вы можете оценить его без ограничения по времени. Они также предлагают бесплатное (но не поддерживаемое) лицензирование для проектов с открытым исходным кодом.

мы были настолько ограничены в том, что он мог делать, что мы могли думать только определенным образом - Perforce настолько гибок, что внезапно стало возможным иметь разные философии относительно того, когда / как / почему должны быть установлены кодовые строки и т. д. Итак, в этом учитывая, что мы все еще пробуем много чего в отношении ветвления и интеграции (слияния).

PS Двухпользовательская установка не требует лицензии и ограничивает вас только 5 рабочими пространствами. Вы можете оценить его без ограничения по времени. Они также предлагают бесплатное (но не поддерживаемое) лицензирование для проектов с открытым исходным кодом.

Так что в этом отношении мы все еще пробуем много чего, что касается ветвления и интеграции (слияния).

PS Двухпользовательская установка не требует лицензии и ограничивает вас только 5 рабочими пространствами. Вы можете оценить его без ограничения по времени. Они также предлагают бесплатное (но не поддерживаемое) лицензирование для проектов с открытым исходным кодом.

Так что в этом отношении мы все еще пробуем много чего, что касается ветвления и интеграции (слияния).

PS Двухпользовательская установка не требует лицензии и ограничивает вас только 5 рабочими пространствами. Вы можете оценить его без ограничения по времени. Они также предлагают бесплатное (но не поддерживаемое) лицензирование для проектов с открытым исходным кодом.

5
ответ дан 30 November 2019 в 02:52
поделиться

Как насчет макро-трюки?

Испытали код ниже

  • проверены с динамиками - работали нормально
  • , проверенные подклассы - предупреждение! сломается, я согласен, что это делает трюк не так полезно, но все же я думаю, что он рассказывает о том, как Objc работает ...

MyClass.h

@interface MyClass : NSObject {
#ifdef MYCLASS_CONTENT
    MYCLASS_CONTENT // Nothing revealed here
#endif
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, assign) int extra;
- (id)initWithString:(NSString*)str;
@end

MyClass.m

// Define the required Class content here before the #import "MyClass.h"
#define MYCLASS_CONTENT \
  NSString *_name; \
  int _extra; \
  int _hiddenThing; 

#import "MyClass.h"

@implementation MyClass
@synthesize name=_name;
@synthesize extra=_extra;

- (id)initWithString:(NSString*)str
{
    self = [super init];
    if (self) {
        self.name = str;
        self.extra = 17;
        _hiddenThing = 19;
    }
    return self;
}

- (void)dealloc
{
    [_name release];
    [super dealloc];
}

@end
-121--4538104-

Я работал с SVN, CVS, VSS, и теперь я работаю с Perforce. Я использую для работы с Baazar для моих личных проектов, и я пробовал Git и Mercurial.

Я не рекомендую вам Perforce вообще, и, конечно, я тоже не рекомендую вам VSS. Это небезопасно, ненадежно и непрактично работать с. Это модель Это намного более скрученно, чем SVN, CVS, Git, и т. Д. Это также сложнее использовать с помощью скриптов (поскольку вам нужно иметь дело с представлениями, клиентами и другими системными переменными).

Я бы порекомендовал вам SVN с любым регулярным трекером. Вы можете настроить его вплоть до крючков SVN по желанию .... В некоторых случаях было бы интересно распределиться (Git, Mercurial, Baazar), но если у вас еще нет мнения, вы должны начать с SVN ..

Ну, это мое мнение конечно ...

2
ответ дан 30 November 2019 в 02:52
поделиться
0
ответ дан 30 November 2019 в 02:52
поделиться

Perforce - это дорого и ненадежно. Он ненадежно помещает нужные файлы в рабочую область, иногда оставляя устаревшие версии.

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

2
ответ дан 30 November 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: