Непонятно каким образом происходит профилактика туннельного синдрома. Обычно, чем выше мышь, тем сильнее изогнута кисть и выше риск развития заболевания.
В целом курс неплохой. Подход к обучению практический, материал сосредоточен на сути алгоритма и реализации, матана (доказательств корректности и расчета скорости) практически нет, задания на программирование и вопросы к собеседованию довольно интересные и заставляют подумать, плюс про яву немножечко рассказывают, по ходу дела.
А вот упражнения меня каждую неделю раздражали до крайности, постоянно приходилось рисовать в тетрадочке массивы и деревья и производить с ними различные манипуляции, в результате я где-нибудь посредине сбивался и приходилось все переделывать. В конце концов оказалось проще накатать свою (или взять готовую из библиотек курса) реализацию алгоритма и пропустить через нее данные из упражнения.
Т.е. для автоматизации тестирования необходимо написание модуля для конверсии результатов в ваш (или из вашего) XML-формата с последующим сранением результатов кодирования/декодирования? Кстати, почему вы отказались от XER в пользу собственного XML-формата?
Интересное предположение. Кстати, на моей провинциальной почте мешки начали валяться подолгу совсем недавно, по словам сотрудников, из-за увеличения объема международных посылок.
Самое интересное то, что посылка идет в регионы сравнительно шустро, а дольше всего валяется на таможне или на выходе с нее. Если проблема в каком-то конкретном сортировочном центре, неужели нельзя разобраться и оптимизировать процессы.
>> Вас обманули. Variant и COM-объекты — перепендикулярны. Вы с OLE Automation спутали.
Не совсем. Просто одним из полей объединения (union) типа VARIANT из WINAPI является указатель на IDispatch, через который и происходит работа. А IDispatch это точно такой-же СОМ-интерфейс, как и все остальные, просто позволяющий вызывать методы объектов по именам.
>>смарт-поинтеры для родных дельфийских объектов.
>> Марко Кэнту, Delphi 2009 Handbook. Все уже описано до нас.
Может прекратите переходить на личности и тыкать носом в книжки и свой преподавательский опыт, а опишите метод
именно автоматического вызова деструкторов. О чем еще может идти речь кроме построения деревьев объектов и автоматического подсчета ссылок СОМ-объектов при работе с ними через Variant?
>> Используйте myObj := myClass.Create(Owner); плюс правильно написанный деструктор.
Построение деревьев объектов один из возможных выходов, но не панацея.
>> Приходили бы в мою группу 5 лет назад, когда я тренировал людей, я бы Вам рассказал.
>> Но не поздно вырасти надо собой! Эрик Хармон, COM в Дельфи. Книга такая.
Так расскажите сейчас, или за 5 лет уже забыли? Реализация каждого объекта как СОМ-объекта и работа с ними через тип Variant, как я писал выше, довольно накладный способ обеспечить универсальный автоматический менеджмент памяти.
Вот еще что вспомнил. В Дельфи же имеется хитрым образом встроенный в компилятор (и слабодокументированный) механизм работы с COM-объектами через тип Variant и позднее связывание, обеспечивающий автоматический подсчет ссылок (вызов AddRef & Release) при обновлении/обнулении указателей (обернутых в Variant). На базе подобного подхода можно было бы реализовать автоматические объекты или, хотя бы, смарт-поинтеры для родных дельфийских объектов.
Мне кажется, основная проблема Delphi, а в частости языка Object Pascal и рунтайма — это отсутствие эффективных средств контроля времени жизни объектов. Проще говоря, необходимость на каждый Create вручную вызывать Free, каждый раз создавая между этими двумя операторами конструкцию try… finally если могут выбрасываться исключения.
Решением проблемы могли бы стать сборщик мусора или автоматические объекты (идиома RAII), но внедрение подобных фич с сохранением обратной совместимости, при текущих темпах разработки, кажется крайне маловероятным.
А вот упражнения меня каждую неделю раздражали до крайности, постоянно приходилось рисовать в тетрадочке массивы и деревья и производить с ними различные манипуляции, в результате я где-нибудь посредине сбивался и приходилось все переделывать. В конце концов оказалось проще накатать свою (или взять готовую из библиотек курса) реализацию алгоритма и пропустить через нее данные из упражнения.
Не совсем. Просто одним из полей объединения (union) типа VARIANT из WINAPI является указатель на IDispatch, через который и происходит работа. А IDispatch это точно такой-же СОМ-интерфейс, как и все остальные, просто позволяющий вызывать методы объектов по именам.
>>смарт-поинтеры для родных дельфийских объектов.
>> Марко Кэнту, Delphi 2009 Handbook. Все уже описано до нас.
Может прекратите переходить на личности и тыкать носом в книжки и свой преподавательский опыт, а опишите метод
именно автоматического вызова деструкторов. О чем еще может идти речь кроме построения деревьев объектов и автоматического подсчета ссылок СОМ-объектов при работе с ними через Variant?
Построение деревьев объектов один из возможных выходов, но не панацея.
>> Приходили бы в мою группу 5 лет назад, когда я тренировал людей, я бы Вам рассказал.
>> Но не поздно вырасти надо собой! Эрик Хармон, COM в Дельфи. Книга такая.
Так расскажите сейчас, или за 5 лет уже забыли? Реализация каждого объекта как СОМ-объекта и работа с ними через тип Variant, как я писал выше, довольно накладный способ обеспечить универсальный автоматический менеджмент памяти.
Решением проблемы могли бы стать сборщик мусора или автоматические объекты (идиома RAII), но внедрение подобных фич с сохранением обратной совместимости, при текущих темпах разработки, кажется крайне маловероятным.