Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Задачки на подумать

1090  1 2 3 4 5 все
Murr_0002 постоялец04.06.17 19:10
Murr_0002
NEW 04.06.17 19:10 
в ответ AlexNek 04.06.17 14:03

Как говорил, всё пишется в один каталог.

-----

Не клади плугины в каталог программы. Проверено - создает головную боль.

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


Не говоря уже о том, что все плагины нужно было было обновить.

-----

Ну это еще пустяки. Иногда непонятно что начинать крутить.

Я вот на 2017 еще не перехожу. Да, надо бы, но как подумаю что придется все перенастроить... лучше подожду 2020...



я что то не уверен что он вообще будет иметь туды доступ.

-----

У нас, для юзеров на машинах работающих со станками, вообще все что можно обрезано.

И все одно иногда умудряются что-то угробить... ну папочку там потрут из Саве-диалога...



Гораздо проще это сделать в диалоге "О программе".

-----

Когда Я это сделал первый раз - получил по шее - Я не стал парсить строку подключения к базе и показал ее целиком.

Поправил почти сразу. Потом, когда все усложнилось, туда прописались все детали по проге и плугинам Абоут стала первой страницей куда смотрят при возникновении проблем.



Это вообще в голове не укладывается.

-----

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

#41 
Murr_0002 постоялец04.06.17 19:21
Murr_0002
NEW 04.06.17 19:21 
в ответ Программист 04.06.17 12:43

Уверяю тебя, MSI работает предсказуемо.

-----

Когда среда его работы идеальна - возможно.

Но приближенная к идеальной среда для МСИ - свежая винда в минимальной конфигурации.

В таком виде винда обычно не живет. Обычно идут наслоения с заменой каких-то компонентов.

Самый простой вариант проверки - использование инсталятора Студии - в 2015 невозможно

сказать - Поставь ВСЕ - инсталятор будет пыхтеть, но отвалится, оставив нерабочую Студию.

Так что - ой...


#42 
AlexNek патриот04.06.17 21:06
AlexNek
NEW 04.06.17 21:06 
в ответ Murr_0002 04.06.17 19:10, Последний раз изменено 04.06.17 21:10 (AlexNek)
Не клади плугины в каталог программы.

А отчего думаешь задачка возникла?

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

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

А домейнами еще возится и возится, причём только дома.


Ну или хотя бы одна папка под каждую версию

Это вообще не канает. Сейчас всё грузится в один домейн.


Я вот на 2017 еще не перехожу...лучше подожду 2020

вот в 2020 как раз на 2017 и можно будет перейти спок

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


проще было реализовать новую форму

Это тоже нехорошо. Привыкают юзвери к системным диалогам. Я вот лично люблю файлики копировать из Save As диалога или "зип" запустить.

Хотя для диалога "выбора папок" приходится извращаться.

......

Я вот сейчас с ХМЛ сериализацией играюсь, стандартная вконец задолбала. Да и не нужно мне объекты восстанавливать, только их "содержание".

#43 
Murr_0002 постоялец05.06.17 11:58
Murr_0002
NEW 05.06.17 11:58 
в ответ AlexNek 04.06.17 21:06

Тут так, или всё в одной или в разных

-----

У меня с моими, гораздо меньшими заморочками, и то возникает головная боль, когда оно в куче.

Чуток помогают атрибуты на классах, но сейчас появится порядка 100 + 20 плугинов под оборудование - надо будет что-то делать и скорее всего это что-то будет папкой с датой создания конфигурации оборудования.


Это вообще не канает. Сейчас всё грузится в один домейн.

------

Да ну? А какая связь между доменом куда все грузится и организацией размещения в файловой системе?


Это тоже нехорошо. Привыкают юзвери к системным диалогам.

-----

Это - нормально.

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

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


стандартная вконец задолбала.

-----

Хи-хи... Я уже давно забил... Что можно - стандартным, что нельзя - руками...

#44 
AlexNek патриот05.06.17 13:33
AlexNek
NEW 05.06.17 13:33 
в ответ Murr_0002 05.06.17 11:58
У меня с моими, гораздо меньшими заморочками, и то возникает головная боль, когда оно в куче.

У Мурки меньшие заморочки хаха

Не знаю, отчего у тебя головная боль, может воздух плохой в помещении.бебе

У нас количество всего гораздо меньше, а копировать все в одно гораздо проще.

Потому как любая автоматизация требует соединения с сервером. А из китая, например, это не так просто сделать.


А какая связь между доменом куда все грузится и организацией размещения в файловой системе?

Это типо "суслика". Не видишь а он есть. миг

Сможешь загрузить в один домейн две разные версии подписанной ДЛЛ-ки? У меня не получается.


Хи-хи... Я уже давно забил... Что можно - стандартным

Чтобы забить на "стандарт", нужно вначале иметь свой.

Пока вот так сделал. "1" - версия


            StorageData storageDataItem = new StorageData(123, "namexxx", 12345678);
            using (XmlSerializerStorage storage = new XmlSerializerStorage("test.xml", 1, "Comment:Ser test"))
            {
                storageDataItem.Addition = "A1";
                //storageData.Write(storage);
                storage.Write(storageDataItem, XmlSerializerStorage.ESerilizationType.AllFields);

                storageDataItem.Name = "test2";
                storageDataItem.Addition = "A2";
                storageDataItem.Write(storage);

                storageDataItem.Name = "test3";
                storageDataItem.Addition = "A3";
                storageDataItem.Write(storage);
            }
            using (XmlSerializerStorage storage = new XmlSerializerStorage("test.xml", 1))
            {
                storageDataItem.Read(storage);
                storageDataItem.Read(storage);
                storageDataItem.Read(storage);
            }
#45 
Murr_0002 постоялец05.06.17 15:44
Murr_0002
NEW 05.06.17 15:44 
в ответ AlexNek 05.06.17 13:33

У меня не получается.

-----

Ну так оно и правильно.

Блин, "надо покласть две разные, но одинаково поименованные ДЛЛки в одну папку" и не поиметь при этом ни гемороя, ни головной боли.


а копировать все в одно гораздо проще.

-----

Ну зип/рар - какая разница - оба распакуют заданную структуру.

Встроить распаковщик - уже лет 5 как без проблем.


в один домейн

-----

Вроде уже рассмотрели и пришли к заключению - доменов будет несколько.

Осталось решить сколько, какие и как разгрести либы по доменам.

Хочешь грести из одного каталога и еще копировать руками - ну делай себе геморой.

Я же их разношу по максимуму, чтобы из пути было понятно что используется.



Пока вот так сделал.

-----

В каждом классе - либо метод, либо фриенд-метод.

Что-то большое и продуманное писать уже лениво... лет 10-ть назад - можно было бы... а сейчас - лениво...


-----


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

Как-то так...

Пока не представляю где коvырять...

#46 
AlexNek патриот05.06.17 17:13
AlexNek
NEW 05.06.17 17:13 
в ответ Murr_0002 05.06.17 15:44
две разные, но одинаково поименованные ДЛЛки в одну папку" и не поиметь при этом ни гемороя, ни головной боли.

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

Я лично о времени полной перекомпиляции проекта.


Встроить распаковщик - уже лет 5 как без проблем.

А при чём здесь зип, врое ничего не говорили о нём.


Вроде уже рассмотрели и пришли к заключению - доменов будет несколько.

Это только мы с тобой так решили, а шеф грит - нефиг тратить время.

Осталось решить сколько, какие и как разгрести либы по доменам.

А что там решать, каталог каждого плагина в папочку, папочку в домейн.


В каждом классе - либо метод,

Ну так и есть, может быть даже вообще ничего. Что тебе не понравилось?


как оформить хост для компиляции и выполнения шаблонов

Как виртуалка не канает?

#47 
Murr_0002 постоялец05.06.17 18:29
Murr_0002
NEW 05.06.17 18:29 
в ответ AlexNek 05.06.17 17:13

Не ну если спрашивает что такой файл уже существует и заменяешь

-----

Ну так именно этот геморой ты и хочешь поиметь.

Тебе предлагается покласть каждую фиговинку покласть в папку и рулить загрузкой как тебе надо.

Ну а ты упираешься и отвечаешь - я буду разбираться со скинутым в одну папку...


Я лично о времени полной перекомпиляции проекта.

-----

Или это где-то сбоку, или Я потерялся.


А при чём здесь зип, врое ничего не говорили о нём.

-----

Один файл и распаковка структуры каталогов как задано при упаковке.

Вроде как нормально для того что тебе надо.


а шеф грит

-----

Ты таки хочешь, чтобы Я удаленно убедил твоего шефа?

Ты мои софтовые скилсы учитываешь?



папочку в домейн

------

Там не так все легко... Я пару раз ковырял аппдомены - для меня там мало интересного было.



Что тебе не понравилось?

-----

Ручная работа. Даже при том что Я много генерирую.



Как виртуалка не канает?

-----

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

#48 
AlexNek патриот05.06.17 19:11
AlexNek
NEW 05.06.17 19:11 
в ответ Murr_0002 05.06.17 18:29
Ну так именно этот геморой ты и хочешь поиметь.

не вижу проблемы, rebuild all & copy


Тебе предлагается покласть каждую фиговинку покласть в папку и рулить загрузкой как тебе надо.

Это две совершенно разные проблемы


или Я потерялся.

Мы видимо о разных вещах думаем.

Я размышляю о времени когда папка ехешника только создается.


Один файл и распаковка структуры каталогов как задано при упаковке.

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

Ты таки хочешь, чтобы Я удаленно убедил твоего шефа?

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


Там не так все легко...

Ну так IPC требуется когда домейны нужно подружить.


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

не дошло...хммм

#49 
AlexNek патриот05.06.17 20:36
AlexNek
NEW 05.06.17 20:36 
в ответ Murr_0002 05.06.17 18:29
Ручная работа. Даже при том что Я много генерирую.

А где ты видишь ручную работу? Для ПОКО ка раз то что нужно, а для чего сложного как раз ручная работа и требуется


storage.Write(storageDataItem, XmlSerializerStorage.ESerilizationType.AllFields);
#50 
Murr_0002 постоялец05.06.17 20:41
Murr_0002
NEW 05.06.17 20:41 
в ответ AlexNek 05.06.17 19:11

rebuild all & copy

Я размышляю о времени когда папка ехешника только создается.

------

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

Если задача была изменена - Я не заметил.


не дошло...хммм

-----

Надо защитится от

StartProcess("Format C: /Y")

#51 
AlexNek патриот05.06.17 21:31
AlexNek
NEW 05.06.17 21:31 
в ответ Murr_0002 05.06.17 20:41
Если задача была изменена - Я не заметил.

Задача осталась, обсуждение изменилось. спок

Кстати нашел еще пару вариантов: ILMerge

https://stackoverflow.com/questions/2460542/using-differen...

Extern alias

https://blogs.msdn.microsoft.com/ansonh/2006/09/27/extern-...


Хотя "свой локальный GAC" был бы видимо лучшим вариантом.


Надо защитится от StartProcess("Format C: /Y")

где? Просто на винде, первое что приходит в голову - UAC, привилегии...


#52 
Murr_0002 постоялец05.06.17 23:43
Murr_0002
NEW 05.06.17 23:43 
в ответ AlexNek 05.06.17 21:31

первое что приходит в голову - UAC, привилегии

-----

Можно. Но мне, скорее всего, не хватит. Так же как и спецюзер.

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

#53 
Murr_0002 постоялец05.06.17 23:51
Murr_0002
NEW 05.06.17 23:51 
в ответ AlexNek 05.06.17 21:31

"свой локальный GAC"

-----

Ну а Я тебе об чем толкую...

#54 
AlexNek патриот06.06.17 01:05
AlexNek
NEW 06.06.17 01:05 
в ответ Murr_0002 05.06.17 23:51
"свой локальный GAC"-----Ну а Я тебе об чем толкую...

Де? Аппдомейн не подходит - работы дофига.

ИЛмерге вот еще не пробовал - делать то почти ничего не надо

#55 
Murr_0002 постоялец06.06.17 11:48
Murr_0002
NEW 06.06.17 11:48 
в ответ AlexNek 06.06.17 01:05

ИЛмерге вот еще не пробовал - делать то почти ничего не надо

-----

Это линковщик - либо ты руками прописал что тебе надо и он собрал, либо снова на поле 1.

Вопрос об загрузке плугина вообще не стоит.


Второй линк заканчивается вот этим:


static void Main(string[] args)
{
FooVersion1::Acme.Foo f1 = new FooVersion1::Acme.Foo();
f1.Bar();

FooVersion2::Acme.Foo f2 = new FooVersion2::Acme.Foo();
f2.Goo();
}



Тебе же нужно чтобы Фоо бралось из сменной библиотеки после линковки.


работы дофига.

-----

Хи-хи...

#56 
AlexNek патриот06.06.17 23:07
AlexNek
NEW 06.06.17 23:07 
в ответ Murr_0002 06.06.17 11:48
Это линковщик - либо ты руками прописал что тебе надо и он собрал

Там тоже проблем может быть спок

http://www.bjoernrochel.de/2009/07/07/how-to-shoot-yoursel...

не хочется все на себе пробовать....


Второй линк заканчивается вот этим

главное идея - можно враппер зафигачить динамический или еще что. Пока даже и не думал.


Вот знаешь на каком принципе ГАК работает? Я в эту сторону тоже не рыл.


работы дофига.
-----Хи-хи...

ну не для себя же делаю. Пока требуется проще, но быстрее.

#57 
Murr_0002 постоялец07.06.17 00:22
Murr_0002
NEW 07.06.17 00:22 
в ответ AlexNek 06.06.17 23:07

можно враппер зафигачить динамический

-----

Статический. Статическая предлинковка. А у тебя - динамическая загрузка.

Т,е, либо ты заранее знаешь все используемые дллки, либо ловить нечего...


Вот знаешь на каком принципе ГАК работает?

-----

Имеет структуру каталогов в соответствии типами и версиями и хранит копии всех версий дллок.

Глубже не копал.


Пока требуется проще

-----

угу...

#58 
Murr_0002 постоялец07.06.17 15:47
Murr_0002
NEW 07.06.17 15:47 
в ответ Murr_0002 07.06.17 00:22

Пока требуется проще

-----

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

Манеджер плугинов - выделен, можно подстроить под любые нужды.


#59 
AlexNek патриот07.06.17 23:12
AlexNek
NEW 07.06.17 23:12 
в ответ Murr_0002 07.06.17 15:47

Спасибо конечно за исходники, но "простой вариант" у меня есть достаточно давно.

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


Нашел другую проблему. А именно лицензия на использование ILMerge.ехе


Здесь пишут что коммерческое использование низзя

https://www.codeproject.com/Articles/17797/Gilma-GUI-for-t...

Туть на одной странице подтверждение, а на другой что это опен соурсе проект

https://www.microsoft.com/en-us/research/people/mbarnett/?...

https://github.com/Microsoft/ILMerge/blob/master/LICENSE

и коммерческое использование можно


еще вот пару ссылок нашел

https://www.codeproject.com/Articles/4352/Demystifying-the...

http://www.telerik.com/blogs/working-with-assemblies-in-th...

#60 
1 2 3 4 5 все