Здравствуйте, gandjustas, Вы писали:
H>>Здравствуйте, gandjustas, Вы писали: G>>>Если у объектов есть финализаторы, то они еще некоторое время проживут. Сначала выполнятся финализаторы для всех, а только на следующем проходе их GC уберет все объекты.
H>>Есть гарантия, что финализатор родителя выполнится последним? G>Нет, а оно вам надо?
По условию задачи: родитель живет, пока жив хоть один дочерний интерфейс.
Здравствуйте, gandjustas, Вы писали:
MC>>>В Вашем случае с деревом объектов GC сможет выявить, что дерево целиком недоступно — это раз. Далее он в неопределенном порядке выполнит финализаторы объектов, а потом и освободит память. Соответственно, в финализаторах родители и потомки никак не взаимодействуют. H>>Вот (неопределенный порядок, невозможность взаимодействия в финализаторах). Значит тут, и таким способом, задачу не решить. Не смертельно, конечно, но не сильно приятно.
G>Теперь приведи 3 причины почему финализаторы должны ввыполняться в определенном порядке.
Я уже писал. Чилды должны умереть раньше, чем родитель.
Здравствуйте, DOOM, Вы писали:
kuj>>И конечно же негативно сказывается на производительности. DOO>Это почему? Потому что надо будет поддержку RTTI включить? Ну в дельфи ее просто не выключить
Вообще, в Delphi, RTTI создается только для потомков TPersistent. Для всего прочего, ее нужно включать директивой {$TYPEINFO ON}, и {$METHODINFO ON} для extended RTTI.
Здравствуйте, DOOM, Вы писали:
DOO>Надо их корректно обработать. DOO>Еще пример (опять жизненный): была у меня проблема в работе VMWare virtual infrastructure client (этот уже на .Net'е писан) — не мог цепляться к удаленной консоли. Клиент говорил, что-то типа: Failed to establish remote MKS connection. Could not read /bla-bla-bla/machine_name.vmx. Молодца. Просто море отладочной информации — а почему он его could not read? Если сам клиент не смог бы, например, показать свойства виртуальной машины без доступа к этому файлу? Вот сидел и гадал. Твоя обработка исключения будет приводить к точно таким же "подробным" диагностическим сообщениям. Чтобы сделать грамотно, надо все-таки знать, как это работает, а не так, что "вот как просто, можно даже ни черта не знать, чтобы пользоваться".
Сомневаюсь что там Remoting был.
Здравствуйте, hattab, Вы писали:
___>>А здесь ничего не можешь сказать. Как так?
H>Очень просто. Я знаю о наличии этих штук. Знаю их предназначение и видел демки. Но я с этим не работал лично, поэтому точнее сказать ничего не могу. Есть вопросы -- читай доки/рой гугл.
Вот так у тебя все просто. Сначала выдвинул в качестве аргумента, а потом сказал, что мол я в этом не бум бум и не пойти ли тебе в гугл.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
MC>>>>В Вашем случае с деревом объектов GC сможет выявить, что дерево целиком недоступно — это раз. Далее он в неопределенном порядке выполнит финализаторы объектов, а потом и освободит память. Соответственно, в финализаторах родители и потомки никак не взаимодействуют. H>>>Вот (неопределенный порядок, невозможность взаимодействия в финализаторах). Значит тут, и таким способом, задачу не решить. Не смертельно, конечно, но не сильно приятно.
G>>Теперь приведи 3 причины почему финализаторы должны ввыполняться в определенном порядке.
H>Я уже писал. Чилды должны умереть раньше, чем родитель.
Зачем, сферический конь в вакууме? Можешь считать что они умрут одновременно.
Ты же писал что-то такое. Приведи условия реальной задачи, тогда посмотрим как она решается в .NET
G>>>// Client.cs
G>>>using System;
G>>>using System.Runtime.Remoting;
G>>>using TestObject;
G>>>namespace Client
G>>>{
G>>> class Client
G>>> {
G>>> [STAThread]
G>>> static void Main(string[] args)
G>>> {
G>>> RemotingConfiguration.Configure("Client.exe.config");
G>>> Test test = new Test();
G>>> Console.WriteLine(test.GetAppName()); //Здесь test.GetAppName() вызовется на сервере!!!!
G>>> }
G>>> }
G>>>}
G>>>
G>>>Такое на делфи возможно? DOO>>Такое возможно даже на VBScript. DCOM называется. G>Какие еще языки поддерживают такуюже легкость работы с COM? Что-то мне кажется что никакие. G>Если попробовать написать подобное с DCOM на С++ или Delphi, то получится в разы больше кода, не считая автогенерных Proxy и Stub.
В какие разы??? Не смеши. Будет ровно таже -- строчка две и всех делов. Но мы от DCOM отказались именно по причине его настроек безопасности. Сеть работала не с MS-инфраструктурой, посему это был большой геморой.
G>А еще добавитсявозня с DCOM совместимыми типами (Variant и прочие)
В чем та возня? Объекты маршалить можно не напрягаясь, если знать как
DOO>>Вот только вся твоя красота может быть (да точно будет!) обломана настройками безопасности. Ты хоть сможешь это корректно обработать? G>Remoting можно настроить чтобы он работал через HTTP c помощью SOAP. Все это в конфиге, как на клиенте, так и на сервере
Здравствуйте, hattab, Вы писали:
H>В какие разы??? Не смеши. Будет ровно таже -- строчка две и всех делов. Но мы от DCOM отказались именно по причине его настроек безопасности. Сеть работала не с MS-инфраструктурой, посему это был большой геморой.
А прозрачно для прилодения сделать объект не удаленным, а локальным?
Про поменять протокол и формат сериализации вообще молчу.
G>>А еще добавитсявозня с DCOM совместимыми типами (Variant и прочие) H>В чем та возня? Объекты маршалить можно не напрягаясь, если знать как
В .NET вообще маршалить не надо, а знать тем более. Главное чтобы передаваемые объекты были сериализуемыми.
Здравствуйте, gandjustas, Вы писали:
DOO>>>>Такое возможно даже на VBScript. DCOM называется. G>>>Какие еще языки поддерживают такуюже легкость работы с COM? Что-то мне кажется что никакие. DOO>>Да почему — в Дельфях можно было подрубать те же IDispatch'и и превращать программу в какое-то подобие скрипта... Абсолютно аналогично VBScript'у. G>И получать Runtime error на коде, который выглядит как обычный статический.
А на своем test.GetAppName() ты думаешь не можешь получить эксепшен? Я думаю ты хотел сказать, что при написании можно ошибиться в имени метода. Если так, это не проблема, ибо Delphi умеет генерить заглушки.
G>>>Если попробовать написать подобное с DCOM на С++ или Delphi, то получится в разы больше кода, не считая автогенерных Proxy и Stub. G>>>А еще добавитсявозня с DCOM совместимыми типами (Variant и прочие) DOO>>В Дельфи можно было этого избежать. G>Ну да, использовать простые типы
Зачем ты снова говоришь неправду? Ты пробовал и у тебя не получилось?
Здравствуйте, hattab, Вы писали:
kuj>>>>Не знаю как оно в Делфи, но в .NET и Java конфиги не имеют такой привычки — куда-то там слетать...
H>>>И юзеры с админами ну прям небожители. Охотно верю.
___>>Ну так какое отношение .Net имеет к админам? Если уж ты такой любитель народных поговорок (впрочем как и я): с дуру можно и х.. сломать"
H>Ситуация, вполне себе, жизненная
Не спорю. Но тем не менее никакого отношения к "пердмету" разговора не имеющая. Или скажем по другому: юзеры/админы относятся к Дельфи/C#-ДотНет также как считать, что пользователи могут залить клавиатуру кофе недостатком клавиатуры.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
DOO>>>>>Такое возможно даже на VBScript. DCOM называется. G>>>>Какие еще языки поддерживают такуюже легкость работы с COM? Что-то мне кажется что никакие. DOO>>>Да почему — в Дельфях можно было подрубать те же IDispatch'и и превращать программу в какое-то подобие скрипта... Абсолютно аналогично VBScript'у. G>>И получать Runtime error на коде, который выглядит как обычный статический.
H>А на своем test.GetAppName() ты думаешь не можешь получить эксепшен? Я думаю ты хотел сказать, что при написании можно ошибиться в имени метода. Если так, это не проблема, ибо Delphi умеет генерить заглушки.
В делфи можно включить режим, когда для каждого объекта, реализующего IDispatch вызовы методов через точку будут оборачиаваться в вызовы Invoke. При синтаксической ошибке в имени метода будет получатся Runtime exception. То что делфи умеет генерить заглушки я знаю.
G>>>>Если попробовать написать подобное с DCOM на С++ или Delphi, то получится в разы больше кода, не считая автогенерных Proxy и Stub. G>>>>А еще добавитсявозня с DCOM совместимыми типами (Variant и прочие) DOO>>>В Дельфи можно было этого избежать. G>>Ну да, использовать простые типы H>Зачем ты снова говоришь неправду? Ты пробовал и у тебя не получилось?
Я пробовал, у меня получилось и больше не хочу.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
G>>Если ты имеешь ввиду программситов, которые используют распределенные объекты, то им незнание не мешает.
H>Шедевр
Правда жизни. Сам так работал пару месяцев, пока не изучил что такое Remoting.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, _d_m_, Вы писали:
H>>>Если люди чего-то там не знали/забывали, это характеризует только их, но не инструмент. Если выражаться простым языком: не можешь срать -- не мучай жопу. В управляемых средах, таки, есть место ручной очистке (пусть даже семантически скрываемой) для объектов владеющих ресурсами. Что начнется, когда
___>>В оригинале вобще-то звучит вобще-то "не хочешь срать — не мучай жопу". Разница существенная. В дальнейшем просьба быть точнее, а то минусы буду ставить нещадно!
H>Мне доводилось слышать в моем варианте. А виртуальный фетишь меня не прет, т.ч. хоть обминусись
Это искажение фактов. Так вот и писались библия и евангелия. Каждый человек непременно добавляет свое частное IMHO.
Насчет минусов — ты вообще заметил смайлик? Шутка же. Сам к оценкам отношусь двояко — ставлю когда ну уж совсем нравится или нет. Отрицательные оценки ставлю очень редко. Оценки своих сообщений не смотрю, т.к. во первых, в Outlook Express-е их не видно, во вторых: ибланов много, минусов наставят будь здоров — ну что мне из-за этого настроение портить — не дождутся. Вобщем, живу по совести — остальное все х..ня.
Здравствуйте, hattab, Вы писали:
___>>Про Дельфи не скажу, но от поделий Богланд меня что-то воротит. Может вспомним еще угробище под названием Interbase?
H>Есть такая штука: индивидуальная препаратная непереносимость Про интербейс спорить не буду, мне его клон (FB) вполне нравится (но я и с MSSQL (6.5-2000) работал).
FB это уже другая пестня, которая к Богланд уже не имеет никакого отношения.
Здравствуйте, Sinclair, Вы писали:
H>>Я привер пример тула. Чего еще? Примеры нужны? Ищи. Только думаю это все в корпоративном секторе, коли на него нацелено... S>Этот тул нежизнеспособен. Авторы WebSnap не поняли, что такое веб приложения, и как их нужно писать. Еще вопросы?
Мой пост был ответом на вопрос: что у вас для Web. Вопросы?
Здравствуйте, Sinclair, Вы писали:
H>>Я провел аналогии с форумными ветками. Ок. Тогда объясни мне, как .Net-разработчик, отчего могут эти фризы возникать на ровном месте. Хотя можешь не рассказывать, ты мне сейчас поведаешь об алгоритмах, проектировании и бла-бла-бла. Я все это слышал много раз. Можем завязать на этом. S>Ну если захотелось помериться хамилками, то объясни мне, как Дельфи разработчик, отчего в дельфи программах утечки памяти наступают на ровном месте. Ась?
Тут уже приводили пример кода, где, как-бы на ровном месте...
S>Я вот учил ПДД по вот такой дельфийской программе — приходилось перезапускать раз в десять минут из-за чудовищных ликов. А казалось бы — место ровнее некуда.
У меня приятель писал прогу для ПДД еще на DOS'овском паскале. Вери кул. И?
Здравствуйте, _d_m_, Вы писали:
___>>>А здесь ничего не можешь сказать. Как так?
H>>Очень просто. Я знаю о наличии этих штук. Знаю их предназначение и видел демки. Но я с этим не работал лично, поэтому точнее сказать ничего не могу. Есть вопросы -- читай доки/рой гугл.
___>Вот так у тебя все просто. Сначала выдвинул в качестве аргумента, а потом сказал, что мол я в этом не бум бум и не пойти ли тебе в гугл.
Конечно просто. Был вопрос: что у вас есть? Я ответил. Я не работаю со всем, что включает в себя Delphi.
Здравствуйте, gandjustas, Вы писали:
H>>Я уже писал. Чилды должны умереть раньше, чем родитель. G>Зачем, сферический конь в вакууме? Можешь считать что они умрут одновременно. G>Ты же писал что-то такое. Приведи условия реальной задачи, тогда посмотрим как она решается в .NET
Я и так привел условия реальной задачи. Чилды должны умирать раньше парента. Я уже говорил, про попытку кроить задачу под решение. Просто согласиь, что такие моменты ты не контролируешь, и разойдемся спокойно.