русский
Germany.ruForen → Архив Досок→ Programmierung

Резюме для программиста

Срыв покровов патриот03.05.22 21:09
NEW 03.05.22 21:09 
in Antwort alex445 03.05.22 20:26

а нафиг их упорядочивать?

AlexNek патриот03.05.22 22:05
AlexNek
NEW 03.05.22 22:05 
in Antwort alex445 03.05.22 20:26
для упорядоченных энумов

Не существует упорядоченных энумов.

https://docs.microsoft.com/en-us/dotnet/csharp/language-re...

А если кому то это хочется, то с хотелками что то не так спок

Murr патриот03.05.22 22:13
Murr
NEW 03.05.22 22:13 
in Antwort alex445 03.05.22 16:46
А надо в том же порядке, как объявлены.

-----

А кому надо?

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

alex445 коренной житель04.05.22 04:31
NEW 04.05.22 04:31 
in Antwort Срыв покровов 03.05.22 21:09
а нафиг их упорядочивать?


alex445 коренной житель04.05.22 04:33
NEW 04.05.22 04:33 
in Antwort Murr 03.05.22 22:13

А надо в том же порядке, как объявлены.

-----

А кому надо?

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

На работоспособность не должны, а на восприятие - по вкусу.

alex445 коренной житель04.05.22 04:40
NEW 04.05.22 04:40 
in Antwort AlexNek 03.05.22 22:05

Не существует упорядоченных энумов.

https://docs.microsoft.com/en-us/dotnet/csharp/language-re...

А если кому то это хочется, то с хотелками что то не так спок

Понятно теперь, с какого вы острова... ))

alex445 коренной житель05.05.22 20:35
NEW 05.05.22 20:35 
in Antwort alex445 04.05.22 04:40, Zuletzt geändert 05.05.22 20:38 (alex445)

Как вы относитесь желанию разраба тащить и регать в GAC либы типа известных логгеров, юнит тестов и прочих утилит? Не через Нюгет там внедрять в проекты и отслеживать версионность, а жёстко забивать весию в приложухе (ещё и проверять её, и вываливать эксепшен, если вдруг версии не равны) и тащить либу в GAC. При этом ещё в регистре виндовс жёстко фиксится путь к тулзе gacutil.exe. А это значит - жёсткая привязка к определённому SDK (т.к. к каждому SDK своя утилита идёт). Короче, всё жёстко и захардкожено. И чтобы ещё всё это дерьмо установить, пишутся тонны кода - залезть в реестр, вызвать gacutil, скопировать файлы туда-сюда (жонглирование кучей относительных и абсолютных путей - не дай бог где-то не совпадёт часть пути) и т.д. Целый класс, блин, накатан в сотни строк, который всё это проверяет, таскает, регает и устанавливает.


Открываешь на другой машине - нихера не работает, высыпается куча ошибок. Ну да - надо же понаставить все определённые SDK нужных версий, даже если это старое ненужное дерьмо.


Правда, этот проект был написан во времена, когда Нюгета не было. Это может служить оправданием?

AlexNek патриот05.05.22 21:29
AlexNek
NEW 05.05.22 21:29 
in Antwort alex445 05.05.22 20:35
и регать в GAC

Зачем? Всё свое тащу с собой.

Срыв покровов патриот05.05.22 21:43
NEW 05.05.22 21:43 
in Antwort alex445 05.05.22 20:35

как вы относитесь к желанию Алекса узнавать причины тех или иных действий людей не от них самих, а от анонимусов на форуме?

alex445 коренной житель06.05.22 01:31
NEW 06.05.22 01:31 
in Antwort Срыв покровов 05.05.22 21:43

Там намекнули, что этих людей уже нет. Вообще нет.

alex445 коренной житель06.05.22 01:34
NEW 06.05.22 01:34 
in Antwort AlexNek 05.05.22 21:29
Зачем? Всё свое тащу с собой.

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

И в России на фирме одной тоже не поняли.

И я не понял - как это, пить из чужих кружек?


Как пьют, так и с либами обращаются. С другого острова, понимаешь.

))

Срыв покровов патриот06.05.22 06:35
NEW 06.05.22 06:35 
in Antwort alex445 06.05.22 01:34

не говори, что за люди?

Никакого понятия о зашкваре))

Программист коренной житель06.05.22 08:07
NEW 06.05.22 08:07 
in Antwort alex445 05.05.22 20:35
Как вы относитесь желанию разраба тащить и регать в GAC

GAC хорошая придумка. Вот только пользоваться GAC'ом как-то не очень научились. От этого он доставляет больше проблем, чем пользы :D


либы типа известных логгеров

Вот именно для этого GAC и придумали.


юнит тестов

А тестам в GAC'е делать нечего.


прочих утилит

Как и утилитам.


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

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


При этом ещё в регистре виндовс жёстко фиксится путь к тулзе gacutil.exe.

Не знаю зачем это может понадобиться :)


И чтобы ещё всё это дерьмо установить, пишутся тонны кода

Это из-за того, что люди в каменном веке и еще не открыли для себя WiX :D В каменном веке кругом боль и страдание :D


Открываешь на другой машине - нихера не работает, высыпается куча ошибок. Ну да - надо же понаставить все определённые SDK нужных версий, даже если это старое ненужное дерьмо.

Не совсем понимаю, что открываешь? Проект? Или финальную программу? Если проект на компе разработчика, то это не проблема ИМХО. Нужен просто чек-лист с необходимыми пререквизирами. Ну или перейти на Nuget. Если речь о финальной программе, то она всегда должна устанавливаться инсталлятором. Никаких копирований. Ну или надо заморочиться и написать программу так, чтобы ее можно было переносить копированием (т.е. не использовать реестр и файловую систему за пределами папки с exe'шником)


Это может служить оправданием?

Нет.

alex445 коренной житель06.05.22 09:20
NEW 06.05.22 09:20 
in Antwort Программист 06.05.22 08:07
либы типа известных логгеров

Вот именно для этого GAC и придумали.


юнит тестов

А тестам в GAC'е делать нечего.


прочих утилит

Как и утилитам.

Я имел ввиду либы всех этих библиотек.

alex445 коренной житель06.05.22 09:21
NEW 06.05.22 09:21 
in Antwort Срыв покровов 06.05.22 06:35, Zuletzt geändert 06.05.22 09:30 (alex445)
не говори, что за люди?
Никакого понятия о зашкваре))

Вы чужую сигаретку изо рта в рот берёте? А бычки незнакомые поднимаете докурить? Из чужих стаканов пьёте? А зачем?


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

alex445 коренной житель06.05.22 09:27
NEW 06.05.22 09:27 
in Antwort Программист 06.05.22 08:07
Не через Нюгет там внедрять в проекты и отслеживать версионность, а жёстко забивать весию в приложухе (ещё и проверять её, и вываливать эксепшен, если вдруг версии не равны) и тащить либу в GAC.

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

Я имел ввиду, вот есть у вас солюшен с кучей проектов. И на каждый надо подключить тулзу для юнит тестов или логирования. Будете регать эти тулзы в GAC и брать всеми проектами оттуда, или через нюгет на солюшен поставите на нужные проекты? Для меня, как для разраба, второй путь куда проще. А с GAC возиться надо сначала у себя на машине - регать всё это. Потом на машине клиента.


При этом ещё в регистре виндовс жёстко фиксится путь к тулзе gacutil.exe.

Не знаю зачем это может понадобиться :)

Ошибся малость. Фиксится путь к конкретному SDK - т.е. там и название, и версия. Ну а SDK при установке пишет путь к себе в реестре. Прога туда лезет, читает пусть установки и хочет юзать только эту версию этой тулзы (gacutil). Суть тут в привязке к конкретной версии и подверсии SDK. Если она обновилась (было х.0, а стало х.2, например), то всё - в реестре другой путь и прога выдаёт исключение.

Программист коренной житель06.05.22 09:32
06.05.22 09:32 
in Antwort alex445 06.05.22 09:20
Я имел ввиду либы всех этих библиотек.

Далеко не все либы имеет смысл пихать в GAC.

Опять же, GAC - центральное место для хранения библиотек, соответственно и устанавливаться и менеджериться там они должны централизованно. MS для этого придумали merge modules. Т.е. ты делаешь merge module и потом вставляешь его во все свои истралляторы. В этом случае у тебя будет централизованное управление (этим займется MSI). Если же ты в каждый продукт будешь встраивать какие-то сборки и пихать их в GAC, то у тебя будет каша и рано или поздно наступит всей этой конструкции трындец :D

alex445 коренной житель06.05.22 09:32
06.05.22 09:32 
in Antwort Программист 06.05.22 08:07, Zuletzt geändert 06.05.22 09:52 (alex445)
Это из-за того, что люди в каменном веке и еще не открыли для себя WiX :D В каменном веке кругом боль и страдание :D

Вот Викс и есть боль и страдания. Нормальные люди юзают

https://github.com/oleg-shilo/wixsharp

https://www.codeproject.com/Articles/31407/Wix-WixSharp-ma...


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


Я не знаю, нахрена был придуман Викс на XML. Какой-то отдельной должности "мастер по Викс и XML" в фирмах нет - всё равно всё фигачат обычные разрабы-кодеры. А им проще с кодом общаться. Нет, блин, всё заточили опять на XML, но при этом любой шаг в сторону от столбовой дороги - городи расширяющие модули с кодом. Т.е. гипотетический "мастер по Викс и XML" всё равно должен уметь кодить - т.е. всё равно инсталлятор будет делать обычный разраб-кодер. Так сделайте сразу всё в коде.


По-моему, это было сделано для совместимости с ещё более дремучей и муторной вещью - MSBuild. Так что какие-то сложные инсталляторы народ делал тупо спецприложением (те же Формы или WPF) и делал всё опять в привычном для себя коде.

alex445 коренной житель06.05.22 09:38
NEW 06.05.22 09:38 
in Antwort Программист 06.05.22 09:32, Zuletzt geändert 06.05.22 09:56 (alex445)
Опять же, GAC - центральное место для хранения библиотек, соответственно и устанавливаться и менеджериться там они должны централизованно.

Может, этим любят корпораты баловаться? Типа у нас есть централизованный дистриб, где фиксированы все либы? - Вот только ими мол и пользуйтесь. Даже разрабы не могут скачать или обновить какую-нибудь либу, пока не будет согласовано с центральными админами и они не соизволят включить новую либу или новую версию в общий дистриб... Но тогда зачем регать в GAC - оно же уже должно быть зарегано.


Как делали до появления нюгета - до 2010 года? Насколько я помню, либа просто скачивалась куда-нибудь на диск и оттуда копировалась к себе в проект (в зависимостях проекта выбирал эту либу и она копировалась к тебе). Т.е. можно было иметь свой "склад" с либами и оттуда копировать. Опять же, при билде все либы копировались в bin к экзешнику, а при деплое просто переносились на машину клиента вместе с экзешником. Но тащить при этом в GAC всё равно не было обязательно.

alex445 коренной житель06.05.22 09:42
NEW 06.05.22 09:42 
in Antwort alex445 06.05.22 09:38, Zuletzt geändert 06.05.22 09:44 (alex445)

Там суть проекта такая. Он состоит из многих проектов - сервисы, сайты, десктопные проги. И всё это ставится одним инсталлятором. При разработке некоторые сторонние либы берутся со "склада" (просто директория с либами), а при установке - копируются и регаются в GAC. Нафига - не понял. Можно же перенести этот "склад" на машину клиента и пользовать оттуда. А можно просто использовать копии этих либ, скопированные при билде в папки к экзешникам - ничего не поменяется. Всё равно при обновлении будет сделан новый инсталлятор, и если в проекте всё централизовано, то инсталлятор добавит хоть и новую, но одну и ту же версию либы к каждому проекту (сайт, декстоп, сервис и т.д.). Поэтому регать в GAC всё равно не вижу смысла - просто лишняя возня, тонны кода и тестов, и всё равно это дерьмо не работает нормально, если кто-то где-то что-то захардкодил.