Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Вниз

Runtime packages   Найти похожие ветки 

 
Rouse_ ©   (2016-03-05 19:32) [40]

Юр, именно это я и сказал изначально :)

ЗЫ: вообще я думал что ты оветишь в плане: спили мушку :)


 
Юрий Зотов ©   (2016-03-05 19:38) [41]

> Rouse_ ©   (05.03.16 19:32) [40]
> именно это я и сказал изначально

Изначально ты сказал не это, а вот что: "BPL это самый простой способ убить хорошую идею с плагинами".

На самом же деле BPL тут ни при чем. Проблема глубже.


 
asail ©   (2016-03-05 19:50) [42]

Всем привет! Давно не заходил...
Мы используем bpl, причем весьма активно. И дело не в экономии места на диске, хотя оно и весьма существенно... У нас комплекс, состоящий из примерно десятка ехе и под сотню dll. Если несколько мб общего кода вынести в bpl, то экономия составит сотни мб. Но, с сегодняшними дисками это ерунда...
Но, есть и другие плюсы. На мой взгляд, основной в следующем:
Представим, что есть некие базовые классы, наследники которых используются во всех эти exe и dll... Теперь мы что-то меняем в приватных методах одного из бальзовых классов. Если работаем без bpl, то придется перекомпилить всю эту ватагу из exe и dll. В противном случае - компилим только один bpl и отдаем его заказчику... Профит.


 
Юрий Зотов ©   (2016-03-05 21:11) [43]

> Rouse_ ©   (05.03.16 14:04) [25]

Саш, я правильно понял, что в качестве плагинов вы используете DLL?


 
Rouse_ ©   (2016-03-05 21:15) [44]

Да, конечно


 
Kilkennycat ©   (2016-03-05 21:21) [45]

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


 
Юрий Зотов ©   (2016-03-05 21:27) [46]

> Rouse_ ©   (05.03.16 21:15) [44]

И при этом компилируете EXE и эти DLL без RT-пакетов?


 
sniknik ©   (2016-03-05 21:56) [47]

> Если работаем без bpl, то придется перекомпилить всю эту ватагу из exe и dll. В противном случае - компилим только один bpl и отдаем его заказчику...
часто слышал такие объяснения, и ни разу не видел это реально работающим... не, может мне просто не везло, но обычно это выглядит так, с точки зрения заказчика -
- мы тут кое чего исправили, замените файл.
- заменили, вообще запускаться перестало с ошибкой ...
- хм. тут наверное еще вот этот модуль нужен.
- не получилось.
...
дальше длинная переписка, с высылкой все нового и нового. в итоге вообще ВСЕГО, как именно у разработчиков стоит. и только после этого начинает работать. ну более менее т.к. у тех у кого подобные мысли почему то не возникает других, ну типа сделать сетап, и чтобы он сам либо устанавливал либо апдейтил нужное... и не говорите что он у вас есть, в сетапе должно быть все, вместе с модулями, без необходимости "кусочно-апдейта". а раз там все то какая разница 1-ехе файл обновлять, 100 вместе с dll, или 200 с bpl??? (цифры "с потолка").

> [0]
1 не использую
2 видел, приходилось "обслуживать". (что за прога говорить смысла нет, ее давно переписали на "яве", т.к. "все проблемы из-за глючной дельфы, нужно"... хотя, после переписывания проблемы никуда не делись просто стали другими, что подсказывает что "дело было не в бобине" :))


 
эндсоувот ©   (2016-03-05 23:00) [48]

в общем резюме такое.
пакеты не работают так как задумано у тех кто их не использует, и работают как и задумано у тех кто их использует лет 15-16 как уже.
без длинных переписок с заменой "всего" в конце их.


 
Kerk ©   (2016-03-05 23:08) [49]


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

Тестирование? Не, не слышал.


 
Германн ©   (2016-03-05 23:30) [50]


> Юрий Зотов ©   (05.03.16 19:01) [39]
>
> > Rouse_ ©   (05.03.16 16:08) [31]
>
> Саш, проблема не в BPL, а в несовместимости версий Delphi
> на уровне откомпилированного кода.

Об этом я и говорил конкретно в  [19], и в топике в целом. Из-за этого все упомянутые доводы в пользу RT-пакетов просто блекнут. А эти проблемы несовместимости не исчезнут никогда. Имхо это нереально. Дай боже чтобы проблем несовместимости исходников разных версий было как можно меньше! (И в целом папаша Борланд с этим справляется, несмотря на многократные смены "места жительства". :)


 
Германн ©   (2016-03-05 23:36) [51]


> Kerk ©   (05.03.16 23:08) [49]
> > - мы тут кое чего исправили, замените файл.
> > - заменили, вообще запускаться перестало с ошибкой ...
> Тестирование? Не, не слышал.

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


 
sniknik ©   (2016-03-06 00:03) [52]

> пакеты не работают так как задумано у тех кто их не использует, и работают как и задумано у тех кто их использует лет 15-16 как уже.
скорее в них нет смысла если использовать правильно, а так как используют получается хреново.
и еще проблемка... "задумывают" часто люди оторванные от реальности, в чисто "разработческих" конторах. а вот "парятся" с ними в поддержке.

> Тестирование? Не, не слышал.
само собой, откуда тестирование в логике "компилим только один bpl и отдаем его заказчику..."?
о совместимости версий тоже не слышал.


 
sniknik ©   (2016-03-06 00:09) [53]

Kerk ©   (05.03.16 23:08) [49]
ты вообще когда нибудь поддерживал программу у более чем 1-го клиента? а например с полтысячи. и они у тебя все были "дрессированными" на единой версии, обновлялись манипулируя файлами, все с доступом в папку установки и т.д. ???
ну, присоеденюсь
> Не всем так везёт с конторой, как тебе.


 
Kilkennycat ©   (2016-03-06 00:38) [54]


> все были "дрессированными" на единой версии, обновлялись
> манипулируя файлами, все с доступом в папку установки и  т.д. ???

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


 
Kerk ©   (2016-03-06 01:00) [55]


> sniknik ©   (06.03.16 00:09) [53]
>
> Kerk ©   (05.03.16 23:08) [49]
> ты вообще когда нибудь поддерживал программу у более чем
> 1-го клиента?

Я поддерживал программу с двумя миллионами клиентов.


 
Kerk ©   (2016-03-06 01:03) [56]

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

Вот например в Delphi в окне About есть кнопочка "Version Info". Но учет мелких деталей - это для трусов.


 
Германн ©   (2016-03-06 01:19) [57]


> Kerk ©   (06.03.16 01:03) [56]
>
> Но важно не это.

В каждом конкретном случае важно что-то . Либо это, либо то, либо что-то ещё. Главное что во всех случаях от RT-библиотек пользы очень мало, а проблем может быть много.
И даже если эти проблемы возникают из-за малограмотности тех, кто их использует, это только минус для этих библиотек. :)


 
Плохиш ©   (2016-03-06 01:42) [58]


> Тогда просто спросив у пользователя список версий линкующихся
> библиотек

Действительно, повезло с конторой


 
sniknik ©   (2016-03-06 01:49) [59]

> Я поддерживал программу с двумя миллионами клиентов.
и что реально "отдавал" каждому по обновленному файлу, с учетом версии остального у каждого, желания обновляться и т.д.?
что то мне подсказывает, что у тебя в этом случае система была другая, например описанный "сетап" с "все включено". ну или ты врешь. учесть все, включая блаж клиентов невозможно.


 
asail ©   (2016-03-06 05:59) [60]


> sniknik ©   (05.03.16 21:56) [47]
> > Если работаем без bpl, то придется перекомпилить всю эту
> ватагу из exe и dll. В противном случае - компилим только
> один bpl и отдаем его заказчику...
> часто слышал такие объяснения, и ни разу не видел это реально
> работающим... не, может мне просто не везло, но обычно это
> выглядит так, с точки зрения заказчика -
> - мы тут кое чего исправили, замените файл.
> - заменили, вообще запускаться перестало с ошибкой ...
> - хм. тут наверное еще вот этот модуль нужен.
> - не получилось.

Да не, работает... Есть нюансы, конечно, но работает. Клиентов много, но они все корпоративные... Ибо продукт рассчитан на них. Не для одиноких домохозяек, скажем так...

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

А, ну да... Скажи это МС, чтоб они тебе на каждый виндовый хот-фикс полный дистрибутив винды высылали. С необходимостью полной установки... :)

> само собой, откуда тестирование в логике "компилим только
> один bpl и отдаем его заказчику..."?

Это, как "само-собой" разумеющееся. Процесс "отдаем заказчику" не такой простой, как тебе кажется... Там, как минимум, два уровня тестирования - наш и заказчика. Бывает и третий - интегратора...


 
asail ©   (2016-03-06 06:06) [61]

Но, есть и недостатки...
Например, сейчас столкнулись с полной опой... Есть известный баг в Controls.pas, связанный с RegisterWindowMessage... Лечится правкой этого самого Controls.pas. Но, в случае работы с BPL, не лечится никак, ибо надо перекомпилить дельфишную vcl60.bpl (у нас Д6, если че :) ). А как? Сырцов то полных нету...


 
эндсоувот ©   (2016-03-06 13:34) [62]

Я поддерживал программу с двумя миллионами клиентов.


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

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

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


 
Германн ©   (2016-03-07 00:30) [63]


> asail ©   (06.03.16 06:06) [61]
>
> Но, есть и недостатки...
> Например, сейчас столкнулись с полной опой... Есть известный
> баг в Controls.pas, связанный с RegisterWindowMessage...
>  Лечится правкой этого самого Controls.pas. Но, в случае
> работы с BPL, не лечится никак, ибо надо перекомпилить дельфишную
> vcl60.bpl (у нас Д6, если че :) ). А как? Сырцов то полных
> нету...

Сырцы-то полные есть. Нет только исходников самих пакетов RTLxxx.dpk и VCLxxx.dpk. Но почему-то мне кажется что это не полная опа.


 
asail ©   (2016-03-07 10:23) [64]


> Германн ©   (07.03.16 00:30) [63]

> Сырцы-то полные есть. Нет только исходников самих пакетов
> RTLxxx.dpk и VCLxxx.dpk. Но почему-то мне кажется что это
> не полная опа.

А толку от оных сырцов без этих dpk? Подозреваю, что там помимо имеющихся юнитов, требуются еще всякие RES и OBJ... Да и где гарантия, что имеющиеся сырцы идентичны тем, которые использовались Борландом для компиляции своих BPL?
Есть идеи, насчет не полной опы? Был бы весьма признателен!


 
asail ©   (2016-03-07 10:24) [65]


> Германн ©   (07.03.16 00:30) [63]

> Сырцы-то полные есть. Нет только исходников самих пакетов
> RTLxxx.dpk и VCLxxx.dpk. Но почему-то мне кажется что это
> не полная опа.

А толку от оных сырцов без этих dpk? Подозреваю, что там помимо имеющихся юнитов, требуются еще всякие RES и OBJ... Да и где гарантия, что имеющиеся сырцы идентичны тем, которые использовались Борландом для компиляции своих BPL?
Есть идеи, насчет не полной опы? Был бы весьма признателен!


 
KSergey ©   (2016-03-07 16:23) [66]

> Rouse_ ©   (05.03.16 16:28) [34]
> Приложение 32 бита, сложно собрать и подгрузить 64 битную библиотеку в 32 битное приложение.
> Все работает и не первый год :)

Я понимаю, что пои примеры вас не убедят, т.к. вы будете уверены, что "вас это не касается". Но взгляните на эти примеры шире. Тем более, что рано или поздно вы будете переезжать на x64 как минимум.
Я не про плагины в явном виде, я про разного рода API, ну и код, который работает на разных машинах и взаимодействует по сети.

Первый раз серьёзно пришлось попотеть, когда часть C++ кода потребовалось перенести на iOS. После повторился цирк с Андроид.
Считаю проблема в том, что из iOS не вынесли уроки как раз вот с типами и выравниванием. Т.е. вместо того, чтобы поправить общий код так, чтобы он однозначно компилировался на разных платформах (в частности, это касалось размеров данных и выравниваний), решили "и так пойдёт". Соответственно, с Андроид"ом занимались сексом по второму кругу в полном объёме ровно с тем же кодом.

А потом "просто перекомпилировали" под новой какой-то версией iOS - и всё прошло совершенно гладко! счастью не было предела.
Разумеется, у клиентов всё тут же "совершенно неожиданно" навернулось, кто бы сомневался.
А всего-то платформа стала 64-разрядной вместо 32 оразрядной, ну и пара безалаберностей в коде про которые все уже давно забыли так вот печально выстрелили. (если напишу предметнее - каждый, уверен, скажет "ну я так-то так никогда не сделаю! это же азбука!" хо-хо, скажу я на это)

Я для себя вынес урок:

1) В API - только типы явно указанного размера! причем для Win-платформы лично я бы использовал только типы из WinAPI, по-моему, это правильнее, хотя это только моё мнение.

2) Обязательно явно указывать размер упаковки структур!
Не, можно, конечно, заморачиваться и при разработке интерфейсных структур очень включать голову, чтобы при любом выравнивании было одинаково, но зачем?? не понимаю. Да и потом это "тайное знание" непременно забудется, придут новые необстрелянные люди - какой смысл оставлять грабли.


 
KSergey ©   (2016-03-07 16:26) [67]

А еще я против переменных беззнаковых типов, если эти переменные участвуют в арифметических выражениях.
Добра ни разу из этого не случалось, а граблей - вагон.


 
Германн ©   (2016-03-08 00:51) [68]


> asail ©   (07.03.16 10:23) [64]
>
>
> > Германн ©   (07.03.16 00:30) [63]
>
> > Сырцы-то полные есть. Нет только исходников самих пакетов
> > RTLxxx.dpk и VCLxxx.dpk. Но почему-то мне кажется что
> это
> > не полная опа.
>
> А толку от оных сырцов без этих dpk? Подозреваю, что там
> помимо имеющихся юнитов, требуются еще всякие RES и OBJ.
> .. Да и где гарантия, что имеющиеся сырцы идентичны тем,
>  которые использовались Борландом для компиляции своих BPL?
>  

Ну вообще-то Борланд такие гарантии даёт. Но предупреждает, что сырцы могут быть не совсем точными для данной сборки дистрибутива. Ну по крайней мере раньше предупреждал.
"Всякие RES и OBJ" в сырцах присутствуют.
Ну и лично сам пробовал менять исходник System.pas с целью проверить, что сырцы рабочие.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.61 MB
Время: 0.04 c
6-1281946428
PonosetcDM
2010-08-16 12:13
2017.01.15
Indy в Internet


2-1421904151
i2e
2015-01-22 08:22
2017.01.15
В MDI-приложении надо программно сделать окно активным


15-1451394616
Kerk
2015-12-29 16:10
2017.01.15
Сувениры


1-1345382325
abolnykh
2012-08-19 17:18
2017.01.15
Импорт объекта из dll


3-1308557586
MacroDenS
2011-06-20 12:13
2017.01.15
ADO + Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский