Страницы

пятница, 27 мая 2011 г.

Текучка 14: Май 2011. Вести с полей.

Это будет пост ни о чём. На 80% оффтопик. На 20% – подведение итогов. whatever.

Have a Seat, Lets Talk... by ...-Wink-..., on Flickr

Интересно, кто сейчас читает мой блог? Как вы оцениваете работу блога? Аналитика от гугла показывает, что в день в среднем происходит около 250 визитов. Но я так понимаю, что львиная доля большая часть этих визитёров – какие-то веб-сервисы. Поэтому хотелось бы составить примерное представление, о числе живых читателей. Оставьте комментарий пожалуйста.

Здесь же можно написать свои пожелания по блогу, если таковые есть. Давно я не предлагал пообщаться в комментах. Вот давайте и пообщаемся как-нибудь. Вот, например, скажите, используете ли вы ModelMaker Code eXplorer? А пробовали ли работать с Lazy Delphi Builder, и каковы впечатления?

О блоге. Сделал отдельную страничку со ссылками на все известные мне статьи о JCL и JVCL.

Влад тут протестировал работу с Google Online Page Speed API из Delphi и зело заинтриговал. Я не знал о такой штуке. Но раз есть API, значит должен быть и сервис. Первый же поисковый запрос вывел на страницу Google Online Page Speed. Интересная штука. Этот инструмент позволяет провести анализ сайта с точки зрения быстродействия, выдаёт список рекомендаций по ускорению работы и даёт оценку быстродействия сайту. Где-то год назад чтобы проверить быстродействие я устанавливал плагин Y!Slow в Firefox. Как оказалось такая же штука уже встроена в Google Chrome. У меня, кстати получилось набрать 86 баллов из 100 (больше - лучше).

четверг, 26 мая 2011 г.

Описание CnPack IDE Wizards часть 19: настройки CnWizards

Это девятнадцатая запись в серии "Эксперты для Delphi: описание CnWizards”. В прошлый раз я описывал класс для отправки отладочных сообщений TCnDebugger. В этот раз я расскажу о настройках CnPack Wizards. Сейчас, я не буду вдаваться в детали и просто покажу как выглядят все формы настройки. Эта публикация посвящается тем, кто, ещё не установил CnWizards, из-за того “там слишком много ненужных мне функций”. Надеюсь что этот пост послужит лучшим доказательством того, насколько легко можно отключить все “ненужные функции” и как легко можно настроить “нужные” функции на свой вкус.

CnPack Wizards – комплексный эксперт состоящий из модулей (мастеров). Любой из модулей можно настроить под себя или просто отключить. Очень удобно. Я снимаю шапку перед разработчиками CnWizards. Архитектура этого эксперта достойна всяческого восхищения.

А пока вы читаете этот пост, я почитаю SEO статьи по теме "раскрутка интернет магазина", особенно по части раскрутки по long-tail (супернизкочастотных) запросов.

Настройка CnWizards

Диалог настроек CnWizards открывается через Главное меню->CnPack->Options.

четверг, 19 мая 2011 г.

Описание CnPack Wizards часть 18: cnDebug.pas

Продолжаю обзор CnWizards – бесплатного эксперта для Delphi с открытым исходным кодом от китайских программистов. В прошлый раз я рассказывал о CnDebugViewer-е – просмотрщике отладочных сообщений. Сегодня я расскажу как эти сообщения отправлять.

C помощью CnDebug из программы можно отправлять строковую информацию, integer, float, color и RTTI-информацию об объектах и компонентах. CnDebug также умеет записывать в журнал информацию о возникающих в программе исключениях, вместе с содержимым стека вызовов.

Файлы и директивы компилятора

Для работы CnDebug нам понадобятся файлы, расположенные в папке C:\Program Files\CnPack\CnWizards\Source\

  • cnDebug.pas – обязательно. Здесь объявлен основной класс отладчика: TCnDebugger.
  • CnPack.inc – обязательно. Здесь определяются директивы компилятора.
  • CnPropSheetFrm.pas и CnPropSheetFrm.dfm – опционально. Только если объявлена директива компилятора SUPPORT_EVALUATE (по умолчанию объявлена). В этом модуле описана форма инспектора CnDebug, предназначенной для изучения RTTI информации об объектах.

Директивы компилятора, влияющие на работу CnDebug:

понедельник, 16 мая 2011 г.

Описание CnPack Wizards часть 17: cnDebugViewer

Это семнадцатая публикация в серии: Эксперты для Delphi: Описание CnWizards. В прошлый раз я писал о Тестере зависимостей CnWizards (Relation Analyzer) – утилите для анализа зависимостей между скомпилированными и исходными файлами. Сегодня я расскажу о CnDebugViewer.exe - просмотрщике отладочной информации отправленной из модуля CnDebug.pas.

CnDebugViewer – программа для отображения отладочной информации посланной программой с помощью модуля CnDebug.pas а также с помощью стандартной API функции OutputDebugString. Полученная информация отображается в виде дерева. Её можно фильтровать, сохранять и загружать для дальнейшего изучения. Только распечатывать не умеет. Здесь, конечно не нужна широкоформатная интерьерная печать, но возможность вывести на печать хотя бы в каком-то виде была бы полезной.

Для отправки сообщений с отладочной информацией в CnWizards входит модуль CnDebug.pas содержащий определение класса TcnDebugViewer умеющего отправлять разнообразную информацию просмотрщику. Для получения информации из TcnDebugger-а используется отображаемый в память файл (Memory mapped file).

четверг, 12 мая 2011 г.

Описание CnPack Wizards часть 16: Описание Relation Analyzer.

Это шестнадцатая запись в серии: Delphi эксперты: CnWizards. В прошлый раз я завершил краткий обзор утилит из CnWizards. В этот раз я подробно опишу Relation Analyzer (Тестер зависимостей).

Relation Analyzer может помочь лучше разобраться в зависимостях большого числа bpl-ок, а также изучить собранные в Delphi программы – посмотреть список использованных юнитов, например.

В этой программе есть два режима анализа:

  1. Анализ исполняемых файлов. Даёт возможность:
    • Посмотреть список необходимых для работы пакетов. Для bpl-ок это то что обычно пишется в секции requires .dpk файла. Для exe-шек – это список необходимых пакетов времени исполнения (Runtime Packages).
    • Посмотреть список необходимых для работы пакетов и библиотек (bpl и dll).
    • Посмотреть список модулей (unit) использованных при компиляции.
    • Посмотреть, в каких исполняемых файлах использовуется определённый модуль (unit).
    • Посмотреть список общих использованных модулей, для нескольких исполняемых файлов.
  2. Анализ зависимостей между бинарными файлов и исходными файлов. Даёт возможность:
    • узнать, какие модули придётся перекомпилировать после изменения interface и implemenatation частей определённого модуля. Эта опция позволяет заранее узнать, где может появится ошибка компиляции: This unit was compiled with different version of ‘xxx’.

Язык не повернётся назвать GUI этой программы простым. Поэтому, я начну описание именно с интерфейса. Хотя GUI и не такой сложный, как может быть у crm системы, предназначенной для учёта данных по огромному числу клиентов . Но всё же, разбираться с ним дольше, чем, найти земельный участок в Рязани.

Итак. При запуске программы видны 5 закладок. Назначение каждой:

вторник, 10 мая 2011 г.

Текучка 13: “шаманский метод Гео” + RegisterClass = EFilerError

Я тут наткнулся на ошибку, появившуюся вследствии использования "Шаманского метода Гео". Уже второй раз натыкаюсь на неё и второй раз удивляюсь тому, откуда она взялась.

Симптомы ошибки

При вызове процедуры RegisterClass для класса появлется исключение EFilerError с текстом ошибки: “A class named XXX already exists”.

Расследование показало что эта ошибка появляется, если RegisterClass был вызван дважды для разных классов с одним и тем же названием.

Казалось бы, причём тут метод Гео?

А вот при том, что именно из-за подмены одного класса другим у меня в коде и возникла ситуация вызвавшая ошибку. В частности, я использую “метод Гео” для подмены стандартного TDbGrid-a своим наследником от TDbGridEh. Для работы моей программы (crm системы) мне необходимо зарегистрировать свой DbGrid. Так что при старте программы я спокойно регистрирую свой класс. А после получаю вышеупомяную ошибку при вызове одного из методов одной из сторонних библиотек, которой также необходимо зарегистрировать класс TDbGrid.

Пример кода вызывающего ошибку:

пятница, 6 мая 2011 г.

Описание CnPack Wizards часть 15: Дополнительные утилиты. Часть 2.

Это пятнадцатая запись в серии: Эксперты для комфортной работы в системе Delphi: CnWizards.  Официальные сайты проекта: www.cnpack.org и Google Code.

Вчера, я начал описание утилит входящих в CnWizards:

  • ASCII Chart,
  • утилите для импорта/экспорта конфигурации CnWizards,
  • утилите для резервного копирования/восстановления настроек Delphi IDE
  • конвертере DFM-файлов.

Сегодня я продолжу рассказ об утилитах и расскажу о следующих:

  • CnPack Debug Viewer
  • Утилите для быстрого отключения Мастеров CnPack
  • Утилите для управления внешними мастерами Delphi (экспертами)
  • Утилите для анализа зависимостей между юнитами и бинарными файлами

Debug Viewer

Название файла: CnDebugViewer.exe

Просмотрщик для отображения отладочной информации, посланной программой с помощью OutputDebugString и методов класса TCnDebugger, содержащегося в файле CnDebug.pas. C помощью CnDebug.pas из программы можно отправлять строковую информацию, integer, float, color и RTTI-информацию об объектах и компонентах. CnDebug также умеет устанавливать глобальный обработчик исключений и записывать в журнал содержимое стек и другие данные. Я напишу об этом подробнее в следующих постах.

А CnPack Debug Viewer позволяет просматривать эту информацию в удобном виде (с использованием иерархий, группировок, фильтров). Аналогичный инструмент, но попроще, входит и в состав gExperts.

четверг, 5 мая 2011 г.

Описание CnPack Wizards часть 14: дополнительные утилиты, часть 1

Это четырнадцатая запись в серии: Эксперты для комфортной работы в системе Delphi: CnWizards. В прошлый раз я рассказывал о шаблонах кода и комментариев в CnPack Wizards. В этот раз я расскажу об утилитах, входящих в состав CnPack мастеров IDE.

Официальные сайты проекта: www.cnpack.org и Google Code.

Утилиты в CnPack IDE Wizards

Помимо расширений для Delphi IDE, CnWizards включают в себя несколько утилит, которые можно запустить из меню программ (Start Menu->Programs). Все эти файлы находятся в папке CnWizards (c:\Program Files\CnPack\CnWizards\)

Меню программы CnWizards