Unlike some other shooting games, Overwatch is defined by roles and the fact that players from each team can play the same hero.
Oftentimes, the difference between losing and winning a game can come down to the performance of a specific hero or role on one team that overwhelms the same hero or role on the opposite team.
Over the past few years, players have started to explain that phenomenon with the shorthand abbreviation “diff.”
For instance, if the opposing team’s Widowmaker was chaining headshots in a match and your team’s Widow had no kills, one might attribute that loss to the “Widowmaker diff.”
The same can be said for roles as well. If your tanks consistently outplay the opposing team’s tanks, you could say that you’re winning because of a “tank diff.”
Regularly, teams will evaluate a loss by trying to figure out or agree on whether the loss can be attributed to a tank or DPS “diff.” This basically means “were our tanks not good enough or were our DPS bad?”
The phrase is also frequently used as a way to flex your prowess or trash talk players who are thought to have performed poorly. So watch out for the way you throw the phrase around if you’re trying to convince a teammate to cooperate with you.
Неоднократно поступали пожелания узнать, что же написали японцы в книжке владельца о полном приводе и кнопке «C.DIFF AUTO» аж на целых двух страницах… Переводим выдержку из руководства для Corolla Spacio (1998)
Машина с Fulltime 4WD, где усилие передается на все четыре колеса, демонстрирует эффект в следующих условиях движения: Стабильность в движении и управляемость при повороте улучшаются. Увеличивается предел стабильности и управляемости при движении по заснеженной или мокрой от дождя дороге, по рыхлому грунту и неровной дороге. Fulltime 4WD не делает машину универсальной. Действуйте акселератором, рулем и тормозами с разумной осторожностью, всегда контролируя автомобиль. О езде Это легковой дорожный автомобиль. Запрещается бездумная езда. Данная машина не предназначена для использования в офф-роуд и ралли. Соблюдайте следующие пункты: Не ездите под водой, например при пересечении реки вброд. На скользком покрытии ездите с осторожностью. При вывешивании колес не газуйте бессмысленно. О шинах Поскольку на машине Fulltime 4WD усилие постоянно передается на четыре колеса, состояние шин оказывает существенное влияние на эффективность. Не забывайте проверять шины. Каждые 5000 км меняйте шины местами. При наличии разного износа шин вы не получите максимальной эффективности. Используйте четыре колеса правильной размерности, одного производителя, одного типоразмера, одной марки и одного рисунка протектора. При замене шины и диска проконсультируйтесь в магазине Toyota. Периодически проверяйте давление в шинах. При значительной разнице в давлении между передними и задними колесами, вы не получите максимальной эффективности. Устанавливайте цепи противоскольжения на передние колеса.
Переключатель управления межосевым дифференциалом.
Межосевой дифференциал предназначен для обеспечения разницы в частоте вращения передних и задних колес в повороте, во избежание принудительного торможения. Это улучшает стабильность и управляемость в повороте. Выключатель переключается из ON в OFF нажатием. Когда выключатель нажат, загорается индикатор на комбинации приборов. Используйте при обычном движении положение AUTO. Управление дифференциалом осуществляется автоматически в зависимости от режимов движения.
Примечание. Если автомобиль застрял, то при положении переключателя AUTO переведите селектор АКПП в положения «L» или «R» для облегчения выезда.
Переключатель в OFF прекращает управление дифференциалом. Переключайте его в OFF при использовании докатки или при буксировке.
Обзор инструментов для визуального сравнения и разрешения конфликтов слияния
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.
Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
Название
Особенности
Платформа
KDiff3
[скриншот]
С этим инструментом скорее всего сталкивались как пользователи git, так и пользователи системы mercurial, тем не менее пару строк не помешает.
Примечание: устанавливается вместе с TortoiseHg.
Windows, Mac OS X, Linux
DiffMerge
WinMerge
Diffuse
TKDiff
SmartSynchronize
BeyondCompare
Araxis Merge
Git и DiffMerge
1) Добавим в директорию c:/Git/libexec/git-core/mergetools/ файл diffmerge следующего содержания:
2) Теперь добавим в файл c:/Users/swipe/.gitconfig следующие строки:
3) Создадим конфликт и вызовем DiffMerge для его разрешения
Выводится сообщение о конфликте слияния, чего мы и добивались.
В среднем окне, приведем файл к требуемому состоянию и сохраним изменения. Конфликт разрешен. Настройку DiffMegre подсмотрел тут: http://twobitlabs.com/2011/08/install-diffmerge-git-mac-os-x/
Git и WinMerge
1) Добавим в директорию c:/Git/libexec/git-core/mergetools/ файл winmerge следующего содержания:
Когда Git не может автоматически объединить изменения, происходит конфликт слияния и в конфликтующий файл добавляются маркеры слияния ( >>>>>>). Они необходимы для разрешения конфликта с помощью сторонних инструментов. Рассмотрим файл readme.txt который образуется в результате выполнения слияния веток master и new в приведенном выше примере:
Мы можем открыть файл конфликтов с помощью программы WinMerge для разрешения конфликта.
После этого откроется средство двухстороннего слияния:
Исходя из описанной логики перепишем команду слияния merge_cmd следующим образом:
По сути, оба приведенных варианта эквивалентны.
2) Отредактируем .gitconfig
последняя строчка отменяет сохранение backup-файлов в директории репозитория.
3) Создадим конфликт при слиянии двух веток (см. пример с использованием DiffMerge).
Для разрешения конфликта при слиянии веток, воспользуемся командой
Синяя линия показывает разницу забитых/пропущенных мячей клуба за последние 10 игр в лиге (goal difference);
Красная линия показывает разницу созданных/допущенных xG (xG difference).
Сравнение этих двух показателей позволяет нам видеть не только изменения выступления клуба с течением времени, но также различия между goal difference и xG difference.
Они затенены следующим образом:
Синие заштрихованные области указываю на положение дел, когда показатель забитых/пропущенных мячей (goal difference) выше, чем создаваемые/допущенные моменты (xG difference).
Красные заштрихованные области показывают обратную сторону.
Вертикальная шкала указывает на разницу забитых/пропущенных (goal difference) и созданных/допущенных (xG difference).
«Арсенал» в этом сезоне демонстрирует не совсем стабильные показатели по goal difference и xG difference. Новички команды, возможно, помогут «канонирам» не допустить падение цифр в конце сезона (как в сезоне 16/17).
Показатели «Брайтона» по goal difference немного подскочив в осенней стадии чемпионата, вновь пошли вниз.
«Бернли» продолжают своё удивительное (не «Лестер» чемпионского сезона, конечно) шествие по дистанции. Дисциплина, вратарь, удача и умение пользоваться именно сильными своими сторонами делают своё дело.
«Челси» последнее время выглядит лучше, чем когда-либо (с момента начала данного исследования).
Ужасные показатели «Кристал Пэлас» в начале сезона (худшие с момента начала исследования) всё-таки выправились, и «Орлы» уверенно приближаются к неплохим цифрам.
«Эвертон» Сэма Эллардайса серьёзно улучшили показатели goal difference, чего не скажешь о xG difference (там всё осталось примерно на уровне предшественника)
«Ливерпуль» в последнее время здорово улучшили goal difference. Осенью данный показатель был не на уровне клуба, который собрался бороться за высокие места.
А вот «МанСити» ожидаемо немного сбавили по показателю goal difference, создавая и позволяя создавать примерно одинаковые цифры на протяжении всего сезона.
Показатели «Манчестер Юнайтед» по xG difference в последнее время чуть ли не худшие за всё время пребывания Моуринью у руля «красных дьяволов».
Серьёзная разница данного показателя с разницей забитых/пропущенных (что и приносит пока хороший набор очков) говорит о хорошей реализации, везении и факторе Давида де Хеа.
«Ньюкасл» в последних матчах прервал стремительное падение обоих показателей, но о дальнейшем улучшении пока говорить не приходится.
Стоит обратить внимание на практически идентичные в последнее время показатели goal difference и xG difference у «Тоттенхэма».
«ВестБром» с новым менеджером улучшили свои показатели, но только время покажет, чем вызван данный прогресс.
Можно сказать, что «Вест Хэм» угадал с увольнением Билича и назначением Мойеса (показатели goal difference просто взлетели), но xG difference пока на том же уровне, что и при хорвате.
У ‘diff’ есть несколько взаимоисключающих опций для задания формата вывода. Следующие разделы посвящены описанию каждого формата, показывая как ‘diff’ сообщает о различиях на примере двух образцов входных файлов.
Далее представлены два образца входных файлов, которые мы будем использовать в нескольких примерах, чтобы показать работу ‘diff’ и как различные опции ее меняют.
Детальное описание нормального формата
Нормальный формат вывода состоит из одного или более ханков различий; каждый ханк показывает на место где файлы различаются. Нормальный формат ханка выглядит так:
Прибавляет строки из промежутка R во втором файле после строки L в первом файле. Например, ‘8a12,15’ означает дописать строки 12-15 второго файла после 8 строки первого файла; или, если изменять второй файл в первый, удалить строки 12-15 из второго файла.
Заменяет строки из промежутка F первого файла строками из промежутка T второго файла. Эту команду можно представить как комбинацию добавления и удаления, но более компактную. Например, ‘5,7c8,10’ означает заменить строки 5-7 первого файла на строки 8-10 второго файла; или, если изменять второй в первый, заменить строки 8-10 второго файла на строки 5-7 первого файла.
Пример нормального формата
Далее представлен результат работы команды ‘diff lao tzu’ (см. «Два образца входных файлов», для полного текста этих файлов). Заметьте, что отображаются только те строки, которые в этих файлах разные.
Обычно, рассматривая различия между двумя файлами, необходимо также видеть части файлов около отличающихся строк, чтобы легче понять что действительно изменилось. Эти соседние части файлов называются «контекстом».
GNU ‘diff’ обеспечивает два формата вывода, которые показывают контекст около различающихся строк: «контекстный формат» и «унифицированный формат». Он может оптимальным образом показывать в какой функции или разделе файла были найдены различающиеся строки.
При распространении новых версий файлов среди других людей в форме результатов работы ‘diff’, следует использовать один из форматов вывода, показывающих контекст изменений, так чтобы они могли применять «изменения» даже если они вносили свои собственные маленькие изменения в файлы. ‘patch’ может применять «изменения» в этом случае, ища в файлах отличающиеся строки по контексту; если эти строки на самом деле незначительно смещены от указанного в «изменениях» положения, ‘patch’ может привести номера строк в соответсвие со смещением и все равно применить «изменения» правильно. (См. «Применение несовершенных списков различий», для подробностей использования ‘patch’ в применении к несовершенным «изменениям»).
Контекстный формат
Контекстный формат вывода отображает несколько строк из контекста отличающихся строк. Это стандартный формат для распространения улучшенных исходных текстов.
Детальное описание контекстного формата
Контекстный формат вывода начинается с двухстрочного заголовка, который выглядит так:
Потом следует один или несколько ханков различий; каждый ханк показывает одно место, где файлы различаются. Контекстный формат ханка выглядит так:
Строка, являющаяся частью группы из одной или нескольких строк, которые изменились от одного файла к другому. Существует соответствующая группа строк отмеченная ‘!’ в этом же ханке, относящаяся к другому файлу.
Строка «вставленная» во второй файл, которой нет соответствия в первом файле.
Пример контекстного формата
Пример контекстного формата с меньшим числом строк контекста
Унифицированный формат
На данный момент, только GNU ‘diff’ может работать с этим форматом и только GNU ‘patch’ может автоматически применять «изменения» в этом формате. Для правильной работы, ‘patch’ необходимо по крайней мере 2 строки контекста.
Подробное описание унифицированного формата
Унифицированный формат вывода начинается с двухстрочного заголовка, который выглядит так:
Потом следует один или несколько ханков различий; каждый ханк показывает одно место, где файлы различаются. Унифицированный формат ханка выглядит так:
В этом месте строка была прибавлена к первому файлу.
В этом месте строка была удалена из первого файла.
Пример унифицированного формата
Выяснение, в каких разделах находятся различия
Отображение строк соответствующих регулярному выражению
Чтобы показать в каких разделах встретились изменения в файлах не являющихся текстами программ для C или сходного языка, используйте опцию ‘-F REGEXP’ или `—show-function-line=REGEXP’. ‘diff’ рассматривает строки, которые соответствуют агрументу REGEXP как начала разделов файла. Далее приведены регулярные выражения, заданные для нескольких распространенных языков: `^[A-Za-z_]’
Texinfo Эта опция не задает сама по себе формат вывода; чтобы ее использовать, нужно задать контекстный (см. «Контекстный формат») или унифицированный (см. «Унифицированный формат») формат. В других форматах вывода она не работает.
Опции `-F’ и `—show-function-line’ находят для каждого ханка различий ближайшую предшествующую ему неизмененную строку, соответствующую данному регулярному выражению. Затем они добавляют эту строку в конец строки звездочек в контекстном формате, или в конце ‘@@’-строки в унифицированном формате. Если такой строки не найдено, они оставляют ханк неизменненым. Если эта строка состоит более чем из 40 символов, они учитывают только первые 40 символов. Можно указать более одного регулярного выражения для таких строк; ‘diff’ ищет соответствия для всех строк со всеми регулярными выражениями, начиная с последнего заданного. Это означает, что при желании допустимо использовать опции ‘-p’ и ‘-F’ совместно.
Отображение заголовков функций С
Чтобы отображать в каких функциях обнаружены различия для C или сходного языка, можно использовать опцию `-p’ или `—show-c-function’. Эта опция автоматически устанавливает контекстный формат вывода (см. Контекстный формат. ), с заданным по умолчанию количеством строк контекста. Возможно изменение этого числа введением ‘-C LINES’ в командной строке. Можно изменить и формат и число строк контекста с помощью ‘-U LINES’.
Отображение альтернативных имен файлов
Если сравниваются два файла, имеющие бессмысленные или неинформативные имена, возможно заставить ‘diff’ показывать альтернативные имена в заголовке контекстного или унифицированного форматов вывода с помощью опции ‘-L LABEL’ или ‘—label=LABEL’. Первое применение этой опции заменяет на свой аргумент имя и дату первого файла в заголовке; второе применение заменяет на аргумент имя и дату второго файла. Если попытаться использовать эту опцию еще раз, ‘diff’ сообщит об ошибке. Опция ‘-L’ не затрагивает имена файлов в заголовке ‘pr’, когда использована опция ‘-l’ или ‘—paginate’ (см. «Разбивка результатов ‘diff’ на страницы»).
‘diff’ позволяет двусторонне отображать различия между двумя файлами. Файлы отображаются в двух колонках разделенных колонкой управляющих символов. Колонка управляющих символов состоит из следующих маркеров: Пробел
Соответствующие строки эквивалентны. Это означает, что либо они одинаковые, или различие игнорировано из-за одной из опций ‘—ignore’ (см. «Пропуски».).
Соответствующие строки разные, и либо обе приведены полностью, либо обе неполностью.
Строка содержится только во втором файле.
Строка содержится только в первом файле, но различие игнорируется.
Строка содержится только во первом файле, но различие игнорируется.
Соответствующие строки разные, первая строка приведена неполностью.
Соответствующие строки разные, вторая строка приведена неполностью. Обычно, строка из результатов работы неполна тогда и только тогда, когда строки из которых она состоит неполны (См. «Неполные строки»). Тем не менее, когда результирующая строка представляет две различные строки, одна из них должна быть неполной, в то время как другая наоборот. В этом случае, результирующая строка полна, но в колонку управляющих символов помещается знак ‘\’, если не полна первая строка и ‘/’, если не полна вторая.
Двусторонний формат обычно проще воспринимается, но он имеет свои ограничения. Он генерирует более широкие строки, обрезая непомещающиеся строки. Кроме того, для него более, чем для остальных форматов важна выравненность текста, так что его результаты выглядят особенно плохо при использовании шрифтов разной ширины, нестандартной табуляции, или непечатающихся символов.
Для интерактивного устранения различий при двустороннем формате можно использовать команду ‘sdiff’. (См. подробнее «Интерактивное устранение различий»).
Двусторонний формат задается опцией ‘-y’ или ‘—side-by-side’. Поскольку строки двустороннего формата содержат две исходные строки, они шире, чем обычно. В норме они состоят из 130 символов, так, что могут поместиться в традиционную строку принтера. Их длину можно устанавливать с помощью опции ‘-W COLUMNS’ или ‘—width=COLUMNS’. Результирующая строка разбивается на две половины равной длины, разделенные маленькой колонкой управляющих символов для отметки различий; правая половина выравнена на границу табуляции. Входные строки, которые не помещаются в половинках выходной строки, обрезаются.
Опция ‘—left-column’ печатает только левую колонку для двух общих строк. Опция ‘—supress-common-lines’ не печатает их вообще.
Пример сравнительного формата
Несколько режимов вывода создают управляющие файлы для редактирования FROM-FILE с целью получения TO-FILE.
Командные файлы для ‘ed’
‘diff’ позволяет составлять командный файл, показывающий текстовому редактору ‘ed’ как изменить первый файл во второй. Раньше это был единственный формат вывода, позволяющий делать из одного файла другой автоматически; сегодня, благодаря утилите ‘patch’, он практичеки устарел. Чтобы задать этот формат используйте опцию ‘-e’ или ‘—ed’.
Как и в нормальном формате (см. «Нормальный формат».), этот формат вывода не показывает контекста; но в отличие от нормального формата, он не включает информацию, необходимую для обращения «изменений» (воссоздания первого файла, при наличии второго и «изменений»).
Подробное описание ‘ed’-формата
‘Ed’-формат вывода состоит из одного или более ханков различий. Изменения ближайшие к концу файлов идут первыми, так чтобы команды меняющие номера строк не влияли на интерпретацию ‘ed’ номеров строк в последующих командах. Ханки в ‘ed’-формате выглядят так:
Существует три типа команд, изменяющих текст. Каждая состоит из номера строки или раздленного запятыми списка строк первого файла и символа, показывающего какой вид изменения нужно сделать. Все номера строк оригинальны для каждого файла. Типы команд следующие: ‘La’
Добавить текст из второго файла после строки L первого файла. Например, ‘8a’ значит добавить следующие строки после строки 8 первого файла. ‘Rc’
Заменить строки из промежутка R в первом файле следующими строками. Команда подобна комбинации удаления и вставки, но более компактна. Например, ‘5,7c’ значит заменить строки 5-7 первого файла на текст из второго файла. ‘Rd’
Удалить строки из промежутка R в первом файле. Например, ‘5,7d’ значит удалить строки 5-7 из первого файла.
Пример командного файла для ‘ed’
Прямые командные файлы для ‘ed’
‘diff’ позволяет выводить результаты работы в формате командного файла для ‘ed’, но с прямым (от первого к последнему) порядком ханков. Формат команд также немного изменен: командные символы предшествуют списку изменяемых строк, строки в списке разделяются пробелами, и не делается попыток прояснить строки ханков, состосящие из одного периода. Подобно ‘ed’-формату, прямой ‘ed’-формат не может отображать неполные строки.
Прямой ‘ed’-формат не очень полезен, так как ни ‘ed’, ни ‘patch’ не могут применять «изменения» этого формата. Он существует главным образом для совместимости с более старыми версиями ‘diff’. Чтобы задать его используйте опцию ‘-f’ или ‘—forward-ed’.
Командный файл для RCS
Например, при изменении первоначального
Форматы групп строк
Форматы групп строк позволяют Вам задать форматы, работающие для многих приложений, которые позволяют ввод структурами if-then-else, включая языки программирования и форматирования текста. Формат групп строк задает формат вывода для соприкасающихся групп сходных строк.
обозначает строки первого файла, включая символ новой строки. Каждая строка форматирована в соответствии с форматом старых строк (см. Строчные формат. ).
обозначает строки второго файла, включая символы новой строки. Каждая строка форматирована в соответствии с форматом новых строк.
обозначает строки, общие для обоих файлов, включая завершающие символы перехода на новую строку. Каждая строка форматируется в соответствии с форматом неизмененных строк
Номер строки, предшествующей группе в старом файле.
Номер первой строки в группе из старого файла; равен E + 1.
Номер последней строки в группе из старого файла.
Номер строки, следующей за группой в старом файле; равен L + 1.
То же для строк в новом файле. Спецификаторами в строке форматирования типа `printf’ могут быть `%d’, `%o’, `%x’, или ‘%X’, задавая вывод десятичный, восьмеричный, вывод прописными и строчными шестнадцатиричными соответственно. После символа ‘%’ следующая опция может появиться в следующей последовательности: ‘-‘, задающий на левое выравнивание; целое число, задающее минимальную ширину поля; и точка, за которой следует возможно отсутствующее целое, задающее минимальное число знаков. Например, ‘%5dN’ печатает число новых строк в группе в поле шириной 5 символов, используя ‘printf’ формат ‘»%5d»‘.
Если A равно B, то T, иначе E. A и B оба должны быть либо десятичными константами, либо единственным символом, интерпретируемым подобно вышеописанному. Этот вид формата эквивалентен T, если значение A равно значению B; в противном случае он эквивалентен E.
Например, ‘%(N=0?no:%dN) line%(N=1?:s)’ эквивалентно ‘no lines’, если N (количество строк в группе из нового файла) равно 0, ‘1 line’, если N равно 1, и ‘%dN lines’ в противном случае.
Строчные форматы
Строчные форматы управляют, каким образом каждая строка, взятая из входного файла, выводится как часть группы строк в формате if-then-else.
форматирует только строки из первого файла.
форматирует только строки из второго файла.
форматирует строки, общие для обоих файлов.
форматирует все строки; т.е. имеет тот же эффект, что и одновременное применение трех предыдущих опций.
В строчном формате обычные символы представляют сами себя; спецификации изменений начинаются с символа ‘%’ и имеют одну из следующих форм. ‘%l’
обозначает содержимое строки, не включая прилегающих к ней символов перехода на новую строку (если они есть). Для этого формата все равно, является ли строка неполной (см. «Неполные строки»).
обозначает содержмое строки, включая прилегающие к ней символов перехода на новую строку (если они есть). Если строка неполна, этот формат сохраняет ее такой, как она есть.
Если входной текст содержит символы табуляции, и необходимо, чтобы это сохранилось в результирующем тексте, следует следить за тем, чтобы ‘%l’ и ‘%L’ в строчном формате следовали только после табуляции (например, ставить символ табуляции перед каждым ‘%l’ или ‘%L’), или использовать опции ‘-t’ или ‘—expand-tabs’.
Определенные одновременно, строчный формат и формат групп строк позволяют задать много разных форматов. Например, следующая команда использует формат, похожий на нормальный формат ‘diff’. С помощью изменений этой команды можно получить полный контроль над выводом информации ‘diff’.
Детальное описание формата if-then-else
Для строк общих для обоих файлов, ‘diff’ использует формат неизмененных групп строк. Для каждого ханка различий в объединяющем формате вывода, если ханк содержит только строки из первого файла, ‘diff’ использует формат старых групп строк; если ханк содержит только строки из второго файла, ‘diff’ использует формат новых групп; иначе, ‘diff’ использует формат измененных групп.
Формат старых, новых и неизмененных строк задает формат вывода из строк первого файла, строк второго файла и строк общих для обоих файлов соответственно.
Опция ‘patch’ ‘-D NAME’ работает также как и опция ‘diff’ ‘-D NAME’, за исключением того, что она имеет дело с файлом и diff-ом для воспроизведения единого файла (см. Опции patch::).