Motto

В тихом саду здравомыслия
Пусть на вас постоянно падают
кокосовые орехи пробужденности.
Чогьям Трунгпа РИНПОЧЕ


Версия для мобильного


четверг, 26 июля 2012 г.

Головокружительные возможности Dependency Injection и Delphi Spring. Часть 7. Контроль над созданием.

Это перевод публикации Ника Ходжеса от 08 октября 2011 года: Getting Giddy with Dependency Injection and Delphi Spring #7 – Controlling Construction.


Все переводы по Spring


Как обычно, Delphi Spring Framework можно скачать с GoogleCode.

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

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

Вы правы на этот счёт – там действительно много всего происходит. Delphi Spring Framework делает за вас кучу работы – в основном за счёт создания экземпляров классов используя RTTI (информацию о типах времени выполнения).­ Spring контролирует создание, но при этом, оставляет программисту возможность управлять жизненным циклом объектов.

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

Хорошая новость здесь в том, что вам и не придётся. Фреймворк, при желании, позволяет управлять созданием объектов. В большинстве случаев если классы хорошо спроектированы, то их конструкторы просты, и в них не происходит ничего, кроме присвоения значений. Но иногда возникает нужда сделать при создании объекта что-то особенное. Иногда, классу требуется динамический параметр – объект, чьё состояние будет известно только при выполнении. (Примечание переводчика: мне очень не нравится слово динамический в этом контексте и примеры Ника, но я не придумал лучшего объяснения. Есть идеи, читатель? Пиши в комментарии!) Например, у нас может быть класс Клиент, и у этого Клиента могут быть Счета. И у нас есть класс, который мы хотим передать этому клиенту, но при этом мы не хотим связывать эти классы. Наш Клиент динамический – мы можем запускать запрос и выполнять эту операцию на каждом клиенте в нашей базе данных. Или Клиент может что-то делать на нашем сайте, и таким образом наш объект Клиента будет относиться именно к этому конкретному клиенту. В любом случае, данные нашего Клиента динамичны во время выполнения, и поэтому мы не можем загнать создание объекта в жёсткие рамки. Он должен быть уникальным, каждый раз, когда нам нужен экземпляр объекта, который выполняет действие над данным клиентом.


Читать дальше..

понедельник, 25 июня 2012 г.

Головокружительные возможности Dependency Injection и Delphi Spring. Часть 6. Обойдёмся без конструктора.

Это перевод публикации Ника Ходжеса от 24-09-2011: Getting Giddy with Dependency Injection and Delphi Spring #6 – Don’t even have a constructor.


Все переводы по Spring


Вступление

В четвёртой статье этой серии я озвучил пару правил, одним из которых было “Делайте Конструкторы Простыми”.(примечание переводчика: я не переводил части 1-4.) В последней статье мы узнали, как использовать контейнер Spring для хранения интерфейсов и реализаций и как запросить у контейнера Spring готовую реализацию интерфейса, вместо создания объекта вручную с помощью конструктора.

В этой статье мы продвинемся ещё на один шаг и посмотрим, как Delphi Spring Framework умеет самостоятельно создавать объекты и автоматически вставлять реализацию в нужных местах, и нам для этого не придется даже вызывать конструктор.


Читать дальше..

пятница, 18 мая 2012 г.

Lazy Delphi Builder 1.6.2.200 от 18-05-2012

Lazy Delphi Builder logo

  1. Изменено: В .LazyDbp файле всегда сохранять списки файлов в одном и том же порядке - упорядоченными по алфавиту. Чтобы было проще сравнивать 2 версии сохранённых профилей LazyDbp. (Tortoise Diff всё-равно показывает каждую строку изменившейся из-за того, что меняются номера строк. Зато, Beyond Compare сравнивает файлы корректно.)
  2. Горячие клавиши в Installation Log: Ctrl+Вверх и Ctrl+Вниз позволяют быстро перемещаться между сообщениями о начале компиляции ("Compiling ...").
  3. Добавлена возможность останавливать процесс сборки пока удаляются файлы.
  4. Встроен JCL диалог отлова исключений.
  5. Добавлено: Закладка Installed Packages: Теперь можно удалять и отключать пакеты из выбранной версии Delphi.
  6. Исправлено: Иногда профиль не компилировался без перезагрузки.
  7. Закладка "Select files to compile":
    1. Добавлено: Устанавливать фокус на добавленную папку.
    2. Несколько исправлений в работе "Substitute path"
  8. Изменено: Создание резервных копий файлов и их удаление теперь происходит в отдельном потоке.
  9. Исправлено: Программа не работала с сетевыми путями.
  10. Исправлена ошибка "List index out of bounds (-1)" на закладке "Library paths" формы "Environment Variables" (см. http://www.hostedredmine.com/issues/53575).
  11. Исправлено: !Не запускать CnDebugViewer при поиске!
  12. Много небольших исправлений и улучшений в Installation Log.
  13. Много исправлений и улучшений в GUI (около 20 разных мелочей).

Об ошибках можно писать в комментариях, на мейл (см. окно About) или в баг-трекер по адресу: http://www.hostedredmine.com/projects/lazy

Скачивать на домашней странице: http://www.lazyproject.info/downloads/ или здесь

Что возможно будет в следующем билде:

  • Drag’n’drop файлов в дерево пакетов (точно будет)
  • “Check wizard” для быстрой отметки проектов для конкретной версии Delphi
  • Вместо удаления файлов в Recycle Bin, перемещать их. Иначе слишком долго работает
  • Сборка проектов в отдельном потоке

Release notes in english.


Читать дальше..

понедельник, 2 апреля 2012 г.

Самое интересное в Delphi блогах за 2011 год

Подборка лучших материалов по Delphi на русском языке за 2011. В сравнении с прошлым годом, появилось намного больше качественных публикаций. Смотрите также: Самые интересные публикации 2009 года и Самое интересное в Delphi-блогах за 2010 год.

Особенно рекомендую почитать переводы статей Hallvard-а Vassbotn-а, и обратить внимание на раздел “Инструменты для Delphi”.

Оглавление


Читать дальше..

воскресенье, 5 февраля 2012 г.

Планы на 2012 год. Голосуем в комментариях.

 

mnx personal today todo list

Голосуем в комментариях за самые интересные темы. =)

  • Сделать подборку лучших постов о Delphi за 2011 год. Будет обязательно.
  • Инструкция для Lazy Delphi Builder
  • Lazy Delphi Builder: улучшение работы, исправление ошибок, хранение профилей в SVN.
  • Lazy Delphi Builder: Генерация .bat файлов.
  • Выявление возможных проблем при установке компонентов. В виде готовой программки или как часть Лэйзи билдера.
  • Продолжение перевода серии про Dependency Injection и Delphi Spring.
  • Статья: Компиляция сторонних библиотек. Подводные камни. И почему этот процесс нельзя унифицировать.
  • Статья: Переход из HelpMaker в Help & Manual. И их сравнение.
  • Продолжение заметки о процессе ведения проектов в Delphi на примере использования Redmine. Тут если подумать всё тривиально и кроме прописных истин мне и сказать особо нечего. Разве что только дать несколько советов о хранении Delphi кода в системах контроля версий.
  • Описание CnWizards в одном файле.
  • Написать программку для извлечения метаданных и данных БД Firebird для удобного хранения в системе контроля версий. Из серии, запустились по расписанию, автоматом извлекли всё что надо и отправили в систему контроля версий. А помимо метаданных извлекать планируется некоторые БЛОБы (например в виде DFM-ок или XML-файлов). Хочу такую для себя написать. Может ещё кому надо/интересно?
  • Статья: пишем простенький ORM с помощью Delphi RTTI.
  • Продолжение серии постов о переходе на юникод:
    • Замена Dream VCL на TMS Scripter Pro.
    • Переход с RxLib на JVCL: Как это было на деле.
    • Грабли при переходе. На что обратить внимание.
  • Поверхностный обзор скриптовых движков и дизайнеров форм для Delphi. Ищем замену Dream VCL.
  • Статический анализ Delphi кода – мой опыт. Я пробовал Code Healer и Peganza Pascal Analyzer + ещё какую-то программку для поиска повторяющихся фрагментов кода (Copy Paste). Инструмент от Peganza мне очень помог. Могу попробовать вкратце рассказать.
  • Firemonkey – ищем/пишем замену DbGird-у.
  • Обзоры JVCL. Стоит ли продолжать?
  • Закрыть блог и больше ничего не писать. Может быть это сделает кого-то счастливым?

p.s. не обещаю что напишу, но обещаю взять на заметку.


Читать дальше..

Постоянные читатели