Previous Entry Share Next Entry
photo25

Очередной выпуск нашей передачи

..."Гит - говно, с иллюстрациями"

Оригинал взят у slonopotamus в О рукожопии
В дополнение к предыдущему посту.

Симптом: при юзании git-lfs из виндового GUI-клиента, на каждый вызов git-lfs кратковременно показывается черное окно. Открываешь диалог коммита, а тебе 10-20 раз подряд в рандомных местах экрана показываются и исчезают черные окна. Мечта эпилептика, одним словом.

Раскопки показали, что:

  1. GUI-клиент не виноват, он вызывает git хорошо
  2. git не виноват, он вызывает git-lfs хорошо


"Ага" сказали мужики и полезли внутрь git-lfs. Так вот, эти рукожопые кретины видите ли хотят сформировать заголовок User-Agent, с которым полезут на git-lfs сервер и хотят в этот User-Agent включить версию git'а. Как же узнать версию git'а из Go? Очень просто - запустив "git --version". На каждый сука файл, т.к. git-lfs сейчас stateless. На каждый сраный, долбанный файл, 5k раз в нашем тестовом репозитории. И им даже не важно, полезут они куда-то с этим User-Agent'ом или у них просто --help спросили. Первым делом надо немножко порожать процессов, а потом уже можно и полезной работой заняться, ага. В результате продолб 15 минут на никому нахрен ненужную вебдванольную херню.

Зафиксили, конечно, но осадочек остался.


  • 1
slonopotamus June 12th, 2015
Это не гит, а Go-хипстеры, которые делают git-lfs.

wizzard0 June 14th, 2015
Это да. Но ввиду завала по работе более обоснованные темы для срачиков мне соображать влом :(

lyuden June 12th, 2015
А при чем здесь гит собственно ? Какие то странные люди пишут, нечто на go под Windows, общающееся с gitом через консоль ( что уже вызывает некоторые вопросы ). Git здесь ни при чем.

sorhed June 12th, 2015
Так этому lfs сколько исполнилось, пару месяцев? Ничо, починят.

Но вообще гитом все пользуются по двум причинам: 1) он быстрый и внутри выстраивает правильный граф, 2) Линус Торвальдс это у-ууууу, плохого не посоветует!

На самом деле гит говно.

slonopotamus June 12th, 2015
Про "починят": вы кагбэ различайте непредумышленный продолб перфоманса (неоптимальный алгоритм, который внезапно при некоторых сценариях оказывается hot spot'ом) от умышленного выполнения тяжелых операций (превышающих по времени собственно полезную нагрузку) ради никому не нужных косметических глупостей. Ну реально, 0.1-0.2s ради того, чтобы впихнуть в строчку http'шного User-Agent'а информации, которая даже не относится непосредственно к клиентскому приложению в условиях, когда это приложение совершит ровно один http-запрос (а может и вообще ноль), после чего завершится?

ex0_planet June 12th, 2015
Ну пральна, винда почему-то тратит 0.2с на запуск процесса, а виноват в этом почему-то гит.

wizzard0 June 12th, 2015
тред "fork vs CreateThread" в другое место, плз.

ex0_planet June 12th, 2015
Мне просто интересно почему люди решают что проблема именно в этом месте.

Ну, вот если забыть про всякие Win vs Lin, вот допустим.. я не знаю... у нас какие-нибудь volumetric textures на красных и зеленых видеокартах. И вот какую-нибудь новую поигрушку с ними запускают на ынтеле, который их в жизни не умел, и игрушка стоит раком. Кто плохой? Разумеется, игрушка. Или вообще DirectX какой-нибудь.

wizzard0 June 12th, 2015
декларирует ли игрушка поддержку ынтелов?

ex0_planet June 12th, 2015
Её никто никогда не декларирует.

orvind June 14th, 2015
Кто виноват - неправильный вопрос. Правильный вопрос - кто должен заниматься этой проблемой. В случае с игрушкой на интеле проблема создателей игрушки, Интела и ДиректИкса. Из этой тройки, я думаю, легче всего ее решить создателям игрушки.
А вот проблемы пользователя заканчиваются в тот момент, когда он заплатил деньги. А вот если разработчик продукта говорит, что это проблема пользователя или что эта проблема его не касается, в этот момент ему пора вон из бизнеса.

slonopotamus June 14th, 2015
Ненене, уважаемый. Если пользователь купил себе кусок говна, то это исключительно его проблемы. Мы вот сейчас делаем 3d-игру и попытались в качестве min spec взять GT 240. На пинуточку, 2008 года выпуска, ей почти 10 лет будет когда мы зарелизимся. Так вот, всякие интелы слабее ее. А еще есть недоразумения типа GT 610, на них мы тоже положили болт. Тут еще маркетологи стараются, ломая предположение, что больше цифра - значит лучше, но тем не менее.



Edited at 2015-06-14 09:14 am (UTC)

wizzard0 June 14th, 2015
Меня в видеокартах всегда ну не сказать чтоб раздражало, но возмущало то, что есть два измерения - "быстрые но не держащие новые фичи карточки" и "урезанные карточки", да.

slonopotamus June 14th, 2015
Ну если покупать карточки в диапазоне $100-200, такой фигни не происходит. Дешевле - урезанная хрень (выгоднее купить тогда above average карточку предыдущего поколения), дороже - топовые карточки, которые со временем попадут в категорию "быстрые, но без новых фич". Такой выбор конечно не затащит, к примеру, 4K или Oculus в нормальном разрешении или 3D на три монитора, но так и эти штуки пока еще сильно дорогие.

orvind June 14th, 2015
Я понимаю ваши чувства, но то, что вы чувствуете по отношению к какой-то видеокарте, - это ваше дело, а то, что игра не запускается, - проблема вашей игры. К счастью, в Стиме теперь можно просто вернуть себе деньги, да еще и оставить отзыв для остальных покупателей и никогда не слышать про говно. Вариант "извиниться и вернуть деньги" - вполне себе решение, если не получается изменить код.
Маркетологи ломают предположение, что большая цифра - значит лучше, разработчики ломают предположение, что современная игра должна запускаться на современном компьютере. Хотите быть во всем белом и не уподобляться маркетологам - напишите на коробке "внимание! игра не совместима с некоторыми современными компьютерами" и приложите список тех видеокарт, на которых вы готовы фиксить баги.

slonopotamus June 14th, 2015
Подход такой - берется статистика по железу на сегодняшний день и объявляется, что новая игра (которую еще пару лет разрабатывать) должна работать при минимальных настройках у N% пользователей (в нашем случае, 80%), выдавая 30 FPS и у M% (в нашем случае, 50%) на средних, выдавая 60 FPS. Верхние настройки качества оставляются для топовых конфигураций (пользователь должен иметь возможность потратить over9k денег и увидеть от этого прирост, чтобы было чем меряться).

Edited at 2015-06-14 04:46 pm (UTC)

orvind June 15th, 2015
Я понимаю, я сам долго работал в геймдеве. Этот подход с точки зрения разработчика, а не пользователя и не маркетинга. Разработчик пишет код, но код - это только часть продукта. Поддержка того или иного железа, равно как и наличие багов, - это тоже характеристика качества конечного продукта. Если Angry Birds идет на любой модели айфона, но не на любой модели андроида - качество этой игры как продукта выше на айфоне. Если Uber доступен в Урюпинске, но там нет дорог - это проблема Uber'а. Если бы Uber брал деньги вперед, то пользователь из Урюпинска в праве требовать деньги обратно. Если тулза, позиционирующая себя как клиент для git под Windows показывает 5000 окошек в секунду, то она некачественная тулза в независимости от того, где в цепочке зависимостей код сделан криво.
Собственно вопрос в том, кто отвечает за качество конечного продукта. Имхо отвечает тот, кто продает продукт пользователю. Какой-нибудь Assassin's Creed может попросить Нвидию добавить фичу в драйвер, игра поменьше не может. При этом код у игры поменьше может быть качественней, но как современная игра на PC качественней Assassin's Creed.

anonim_legion June 13th, 2015
А создавать 5000 тредов для выполнения такой задачи - это нормально?

ex0_planet June 13th, 2015
Это некрасивое решение. Ну или этот момент банально могли проглядеть, от ранних стадий разработки могло остаться, да мало ли. Просто в "нормальной оси"™ этот процесс занимает секунд пять. В винде медленнее, конечно, но не критично — в данном случае еще и случилось так, что в конкретной использованной сборке гита на бинарнике стоял флажок, означающий "обязательно открывать терминал, если его еще нет".

jakobz June 12th, 2015
Я тут год как на гит перелез. Так по ощущениям - SVN, Tortoise, и "Trunk me tender" - заметно лучше для небольших проектов. Я реально не понимаю, например, зачем в 5 человек нужны бранчи на каждый чих. Бранчи создают неиллюзорные проблемы, а решают - скорее иллюзорные. Старпёр, чо.

amarao_san June 12th, 2015
А зачем в небольших проектах разводить бранчи?

wizzard0 June 12th, 2015
Просто не надо разводить их в гите, где с ними работать неудобно.

Вот меркуриал - другое дело.

amarao_san June 12th, 2015
Разводить что-либо в маленьком проекте, кроме самого маленького проекта, - бюрократия и потеря эффективности.

В больших же проектах гит себя ведёт отлично и вполне удерживает команду от хаоса (с помощью костылей вида "не мерджить в мастер без ревью").

lyuden June 12th, 2015
Никогда не работал с SVN, не очень понимаю какие неиллюзорные проблемы создают бранчи. Помню когда собиралась команда и мы работали втроем, и мы решили, что на свежем проекте нам нужно только две ветки dev и master (которая была пустой месяца два после старта), то проблем было просто дофига, ( в основном правда потому что люди были неопытные и конфликты при мердже разрешали просто - выбирая один из вариантов). Когда я волевым решением ввел фича бранчи, производительность сильно возросла, поскольку мерджил в основном только я.




max630 June 12th, 2015
косяк в git-lfs, а говно гит. нуачо, подстрока находится же

anonim_legion June 13th, 2015
Потому что гит создает вот эту субкультуру.

max630 June 13th, 2015
субкультуру инстинктивной реакции на ключевые слова? нет, вряд ли

wizzard0 June 14th, 2015
Насчет необоснованности обсырания всего гита из-за git-lfs я согласен. Просто ввиду завала по работе более обоснованные темы для срачиков мне соображать влом :(

ex0_planet June 13th, 2015
Тогда уж весь юникс её создает.

Альтернатива-то в чем? Монолит, который внутри себя что-то варит-варит, а потом у него КЭШИК сглючивает. И все, концов не найти.

wizzard0 June 14th, 2015
Ну нет, гит не создает, но является хорошим примером.

Сам Go, кстати, тоже. При этом меня больше всего развлекает тот факт, что хорошо допиленные линукс-экосистемы существуют (NixOS, Unslung, webOS), но это не мешает остальной базарной модели выдавать удивительно некачественные концепты за продукты.

  • 1
?

Log in

No account? Create an account