LINUX.ORG.RU
ФорумTalks

Почему люди все время пытаются изобрести велосипед

 ,


0

4

Tl;dr прежде чем героически писать свой велосипед на пару дней желательно просто немного почитать код и подумать

У меня прям пичот от этой хрени. Суть - есть либца, есть разраб которому её нужно заюзать. Либца уже используется в хвост и в гриву, нужно добавить один флаг чтоб строка в выводе была зачеркнута. Разраб ставит флаг и… и нихрена, не зачеркивает. Вот не зачеркивает и все.

Разраб начинает чесать репу и изобретать велосипед через функции рисования. Почему, почему блин так сложно открыть исходник либы и посмотреть что именно для этого варианта метода вывода текста зачеркивание не определено, а для всех остальных восьми вариантов оно работает. Ну забыли его блин, ctrl+c, ctrl+v, там 5 строк, неужели так сложно? Не, это для слабых, лучше просрать пару дней сношаясь с рисованием и метриками шрифта.

Все, выдохнул

★★★★★

Последнее исправление: upcFrost (всего исправлений: 2)

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

mittorn ★★★★★
()
Ответ на: комментарий от Nervous

Ничё не понятно

Вместо того чтобы пофиксить используемый сторонний продукт патчем на 5 строк и 5 минут, некто навесил на него снаружи костыль за пару дней.

firkax ★★★★★
()

Tl;dr прежде чем героически писать свой велосипед на пару дней желательно просто немного почитать код и подумать

Потому что героическое большинство руководствуются парадигмой «а что тут думать, трясти надо!» :)

Я по результатам исследования этой парадигмы книгу в нескольких томах написать могу, как только NDA кончится :))

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

Я по результатам исследования этой парадигмы книгу в нескольких томах написать могу, как только NDA кончится :))

У меня будет скорее оперетта

utanho ★★★★★
()

неужели так сложно?

Смотря что за либца, как написана и документирована.

Nervous ★★★★★
()

Унылая BDSM-оргия в унылом LGBT-борделе.

Проще пристрелить (с)

x22
()

А когда каждый разраб на каждый чих будет лезть в твою либу, ты как будешь орать? Или просто в эпилепсию впадёшь?

R_He_Po6oT ★★★★
()
Ответ на: комментарий от R_He_Po6oT

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

firkax ★★★★★
()
Ответ на: комментарий от mittorn

если не выкидывать получается что или придётся тащить патченную либу с собой

Ну не про gtk же речь, так что всё норм.

firkax ★★★★★
()
Ответ на: комментарий от mittorn

Вот автор deadbeef (при всем к нему неуважении) целый ворох патченных либ всегда таскает и поэтому его программа - работает.

James_Holden ★★★
()
Ответ на: комментарий от Nervous

Он всё ясно объяснил: вместо того чтобы найти и поправить пару строк, пишется велосипед «из первых принципов».

seiken ★★★★★
()
Ответ на: комментарий от James_Holden

Не, всё, конечно, зависит от конторы и масштаба, но по моему понятию, даже если это бага - согласовать изменения надо, а не просто хреначить на своё усмотрение. Потому что каждый считает себя компетентным, но проблемы потом у всех начинаются. Но по воплям ТСа непонятно, там три чела в одной комнате пишут всё в кучу, или там контора с отделами и подразделениями?

R_He_Po6oT ★★★★
()

ctrl+c, ctrl+v, там 5 строк, неужели так сложно?

Степерь сложности зависит от обстоятельств.

i-rinat ★★★★★
()

Я бы тоже так сделал. Пропатчить самому = все сломать при очередном обновлении либы, а оно может прийти через год или когда ты уже уволился. Расчитывать на наркоманов «тут тебе никто ничего не должен, хочешь - форкай и пили» яб не стал.

untitl3d
()

Во-первых чем разбирать чужое проще написать своё

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

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от untitl3d

Пропатчить самому = все сломать при очередном обновлении либы

Ну как бы да — если ты делаешь костыль в своём проекте, то поддерживать нужно только свой проект. Если ты форкаешь и фиксишь либу, то теперь тебе поддерживать и проект, и форк чужой либы. И не всегда организация готова выделять ресурсы на поддержку чужих либ.

Не так всё однозначно.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от firkax

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

mittorn ★★★★★
()
Ответ на: комментарий от James_Holden

В этом контексте уже большой вопрос что лучше было бы - тащить с собой целую библиотеку или вытащить из неё реализации нужных тебе механизмов и уже поддерживать в своём проекте. Конечно если тебе нужна большая часть библиотеки - лучше её притащить в виде «как есть». Но если пришлось её запатчить - это уже не «как есть»

mittorn ★★★★★
()

У меня прям пичот от этой хрени. Суть - есть либца, есть разраб которому её нужно заюзать. Либца уже используется в хвост и в гриву, нужно добавить один флаг чтоб строка в выводе была зачеркнута. Разраб ставит флаг и… и нихрена, не зачеркивает. Вот не зачеркивает и все. Разраб начинает чесать репу и изобретать велосипед через функции рисования.

В целом (может не в данном случае) вполне себя оправдывающий подход. Обратите внимание - «либца уже использует в хвост и в гриву». По какой-то причине разраб усомнился в том, что патчить либу безопасно.

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

И инженер превращается в чуть более опытного инженера, набившего себе шишек. Теперь в каких-то ситуациях он предпочтет сделать за два дня черезжопную навеску, чем за пять минут что-то изменить в том, что уже используется в разных частях проекта в хвост и в гриву, а потом разгребать возможные последствия, включая скрытые, неделю и больше. Да еще отвечать теперь за за проект целиком, поскольку изменил чужую либу.

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

vaddd ★☆
()
Ответ на: комментарий от untitl3d

Пропатчить самому = все сломать при очередном обновлении либы

Версия залочена. Плюс там сложность обновления такая что один хрен все ломать. Ну и тестов там выше крыши.

upcFrost ★★★★★
() автор топика
Ответ на: комментарий от vaddd

Так что причину надо искать в ходе мыслей разраба, а не чертыхаться на форуме

Ход мыслей - «оно ниработает, пойду сделаю троллейбус из буханки». Вот именно такой, это не мои домыслы, это натурально то что я услышал в ответ.

upcFrost ★★★★★
() автор топика
Ответ на: комментарий от Bad_ptr

Во-первых чем разбирать чужое проще написать своё

Вот при таком подходе люди начинают забивать гвозди микроскопом. Используя какую-либо технологию желательно знать как её авторы видели её использование, результаты будут намного лучше чем попытки пришить кобыле хрен

upcFrost ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Степерь сложности зависит от обстоятельств.

Разумеется. Но пичот не от того что человек «не скопипастил», а от того что даже не потрудился хотя бы исходник открыть.

upcFrost ★★★★★
() автор топика

Сложность кода, кажется, что с моим накопленным уровнем сделать проще, чем разбирать как там все устроено.

skidphysic
()
Ответ на: комментарий от skidphysic

Сложность кода, кажется, что с моим накопленным уровнем сделать проще, чем разбирать как там все устроено

Вообще неплохо бы знать как работают используемые в проекте библиотеки, особенно если их количество можно пересчитать по пальцам двух рук. Иначе будет типичный веб, в котором люди тащат babel чтоб поставить значок валюты к сумме.

upcFrost ★★★★★
() автор топика

когда-то тоже поправил пару строчек в библиотеке...

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

так что давай сначала вмержи эти 5 строчек в библиотеку, а потом ругай костыли и велосипеды.

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

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

n_play
()

Все просто. Если программист не нуб в используемом фреймворке, он заранее знает, что запилить велосипед с зачеркиванием займет примерно столько-то времени. А вот сколько времени займет допиливание чужого говнокода в глючной либе – заранее не известно, может пять минут, а может и пять недель.

quwy
()

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

Irma ★★
()
Последнее исправление: Irma (всего исправлений: 1)

Не, друган, тебе попалась простая либа. Я в свой электронной книге не смог продолжать разработку, так как мне нужно было залезть в сам код Qt, а там жопа - тысячи мелких функций и попробуй проследи что зачем и за что отвечает. Как раз с текстом было связано, нужно было добавить деление на страницы и нужно было или найти там флаг или встроить свой. :(

xwicked ★★☆
()
Ответ на: комментарий от R_He_Po6oT

А когда каждый разраб на каждый чих будет лезть в твою либу, ты как будешь орать? Или просто в эпилепсию впадёшь?

Орать от факта форков? Возможно, стоило выбирать другую лицензию тогда?

skiminok1986 ★★★★★
()

Не всё так однозначно. Быстрее не значит лучше.

Psilocybe ★★★★
()
Ответ на: комментарий от upcFrost

Это нормальных ход мыслей, потому что это именно что «оно». Либа != поддерживаемый тобой код. Ты не владеешь кодом либы, не владеешь её жизненным циклом и т.д. Когда ты развернешь эту либу еще где-то надо накладывать твои патчи, когда либа обновится, надо тоже накладывать свои патчи, короче, любое изменение либы - превращается в то, что весь головняк по её поддержке ложиться на тебя. Ты должен знать весь код этой либы, должен понимать последствия любых изменений в том числе в перспективе дальнейшей разработки. Это база, для того, чтобы хоть что-то там изменить.

А ты хочешь по-быстрому вставить в либу костыль. А потом тебе надо будет еще один. А потом она у тебя не работает. А потом тебе надо обновиться и накатить патчами все свои костыли. Упс, оказывается у тебя тут свой форк либы.

crutch_master ★★★★★
()

Чем меньше этих вот «либ» в проекте, тем надёжнее и шелковистые. Потому что через два месяца половина фич этой либы будет поломана, остальная половина deprecated. Deprecated - это такое фатальное слово. Ну, ОК, deprecated. А взамен то ч0? А ничё. А если не переходить на новую версию либы, то зачёркиваться не будет никогда. Выбирай. Современная разработка - закономерный результат доминирования программистов и сисадминов, особенно, вторых. Половина пакетов из нюгета ломает студию ха-ха-ха-хха! Это же бред, не? Не. На Майкрософт, майкрософт, Карл, половина документации - полный мусор. Устаревший текст, плохо переведённый. И эти люди запрещают мне мою сишечку!

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 4)
Ответ на: комментарий от firkax

А потом выходит новая версия стороннего продукта и начинается самое интересное. Впрочем, тут всё уже сказано.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)

А вообще, автор, с твоей зарплатой тебе должно быть знакомо понятие API и порядок действий, если API, ,экак тебе кажется, работает не так, как должно. Это есть культура разработки, еслич0.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

Исходники сейчас отдают потому, что сцаный линукс-хайп, а не для того, чтобы их правили все, кому не лень, и все, кому что-то кажется.

lenin386 ★★★★
()

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

Это, конечно, круто, но как всегда бывает с абстракными идеями за все хорошее против всего плохого, они совершенно оторваны от конкретных реалий конкретного проекта. Патч на пять строк кода наколхозить за десять минут - не проблема. Проблема - придумать как этот патч вкорячить в уже имеющийся конвейер CI/CD, когда у тебя пятьсот других либ устанавливаются из репозитория навроде Artifactory, куда они попадают из публичных репозиториев навроде PyPi, пройдя многоэтапную проверку на безопасность, лицензии и всякие согласования и шарятся на еще десять других проектов. Когда ты придешь со своим патчем к SRE, они тебе посочувствуют, покачают головами и ты пойдешь городить костыль, потому что в своих десяти модулях, за которые ты отвечаешь, делай что хочешь.

FishHook
()
Последнее исправление: FishHook (всего исправлений: 1)
Ответ на: комментарий от upcFrost

Разумеется. Но пичот не от того что человек «не скопипастил», а от того что даже не потрудился хотя бы исходник открыть.

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

Да и не только проприетарщины касается. Вот пишу я используя Qt, и я не полезу в коде править, а сделаю костыль, иначе мне придется таскать за собой свою версию кутей и поддерживать её.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от lenin386

На Майкрософт, майкрософт, Карл, половина документации - полный мусор. Устаревший текст, плохо переведённый. И эти люди запрещают мне мою сишечку!

Где мои VS 6.0 и VS 2003, когда MSDN был эталоном документации? Эххх, были времена.

Сейчас, кстати, по качеству доков, Qt на голову выше, чем MSDN современный.

Loki13 ★★★★★
()
Ответ на: комментарий от James_Holden

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

Вот за это его можно не уважать, да.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от upcFrost

Во-первых чем разбирать чужое проще написать своё

Используя какую-либо технологию желательно знать как её авторы видели её использование, результаты будут намного лучше чем попытки пришить кобыле хрен

Ты не учёл п.2 того камента, на который отвечал:

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

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr

Во-вторых, выясняется, что разработчики, как правило, криворукие мудаки

Починил.

Nervous ★★★★★
()

Почему люди все время пытаются изобрести велосипед

Я почему раньше вредный был? Потому что у меня велосипеда не было. © Печкин.

scanner
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)