В прошлый раз я говорил про более сложные методы взаимодействия ядра и плагинов: создание активных плагинов. К этой теме я ещё вернусь несколько позже, но сначала я хотел бы поговорить про вопросы взаимодействия плагинов друг с другом. Хотя некоторые из читателей могут подумать, что в их программах им это не нужно (и закрыть эту статью), но, на самом деле, эта тема показывает некоторые техники, которые будут вам полезны, даже если вы не будете реализовывать взаимодействие плагинов между собой.
Посмотреть текст целиком...
30 января 2012 г.
11 января 2012 г.
Разработка системы плагинов, часть 3: активные плагины
В прошлой части мы реализовали пассивные плагины: они просто предоставляли функции, а ядро их вызывало по мере надобности. Сам же плагин был полностью пассивен, он не инициировал никаких действий в ядре. В этой части мы рассмотрим более сложные методы общения между ядром и плагинами.
Посмотреть текст целиком...
Посмотреть текст целиком...
8 января 2012 г.
Разработка системы плагинов в Delphi, часть 2: разработка API
Первая часть.
В этой части мы рассмотрим реализацию функциональности плагинов.
Для начала я напомню, что в качестве демонстрационного приложения я использовал программу-пример из комплекта демок Delphi - RichEdit Demo. Программа представляет собой простенький текстовый редактор типа WordPad:
Напомню, что в прошлый раз мы создали в этой программе инфраструктуру для плагинов и написали пустой плагин. Теперь настало время для реализации чего-то полезного.
Посмотреть текст целиком...
В этой части мы рассмотрим реализацию функциональности плагинов.
Для начала я напомню, что в качестве демонстрационного приложения я использовал программу-пример из комплекта демок Delphi - RichEdit Demo. Программа представляет собой простенький текстовый редактор типа WordPad:
Напомню, что в прошлый раз мы создали в этой программе инфраструктуру для плагинов и написали пустой плагин. Теперь настало время для реализации чего-то полезного.
Посмотреть текст целиком...
25 декабря 2011 г.
Разработка системы плагинов в Delphi
Эта статья - продолжение старой серии.
Напомню, что те статьи, несмотря на некоторый практический выхлоп в конце, всё же не очень-то освещали тему плагинов, а представляли собой копание во внутренностях работы DLL и пакетов Delphi. Было решено эту серию закончить - именно как серию о плагинах.
Ну, во-первых, причиной для новой статьи стали просьбы её продолжить/закончить. За три года они поступали регулярно. Во-вторых, я заметил, что многие люди ссылаются на эту статью как на руководство по разработке плагинов, хотя, как я уже сказал, оно таким не является. Сам я всегда ссылался на него со словами "вот, это не читай, но в первой части тут неплохая подборка ссылок по интересующей тебя теме".
В общем, все эти факторы в итоге перевесили мою лень и я решил написать нормальную статью про плагины.
Примечание: я был бы очень благодарен, если кто-нибудь со знанием Visual Studio (C++) просмотрел бы раздел 8 (и особенно - касательно генерации заголовочников для Visual Studio C++) на предмет моих ошибок.
Посмотреть текст целиком...
Напомню, что те статьи, несмотря на некоторый практический выхлоп в конце, всё же не очень-то освещали тему плагинов, а представляли собой копание во внутренностях работы DLL и пакетов Delphi. Было решено эту серию закончить - именно как серию о плагинах.
Ну, во-первых, причиной для новой статьи стали просьбы её продолжить/закончить. За три года они поступали регулярно. Во-вторых, я заметил, что многие люди ссылаются на эту статью как на руководство по разработке плагинов, хотя, как я уже сказал, оно таким не является. Сам я всегда ссылался на него со словами "вот, это не читай, но в первой части тут неплохая подборка ссылок по интересующей тебя теме".
В общем, все эти факторы в итоге перевесили мою лень и я решил написать нормальную статью про плагины.
Примечание: я был бы очень благодарен, если кто-нибудь со знанием Visual Studio (C++) просмотрел бы раздел 8 (и особенно - касательно генерации заголовочников для Visual Studio C++) на предмет моих ошибок.
Посмотреть текст целиком...
20 декабря 2011 г.
12 ноября 2011 г.
Сериализация - потоки данных
Это второй пост в серии постов про сериализацию. В этой части мы рассмотрим потоки данных.
Посмотреть текст целиком...
Посмотреть текст целиком...
8 ноября 2011 г.
Процедуры, классы, компоненты...
Хотя это не очень-то видно из заголовка, но это - дополнение к посту "Чего не хватает в Delphi". Поговорим о модели компонентов в Delphi и её недостатках.
Посмотреть текст целиком...
Посмотреть текст целиком...
17 октября 2011 г.
Сериализация - файлы в стиле Pascal
Это первый пост в серии постов про сериализацию. В этой части мы рассмотрим т.н. файлы в стиле Pascal.
Посмотреть текст целиком...
Посмотреть текст целиком...
12 октября 2011 г.
Установка Delphi 1 на Windows 7 x64
Предупреждение: это несерьёзный пост с нулевой практической пользой. For fun only...
У меня сломалась VMWare, поэтому получилось немножко поиграться...
Посмотреть текст целиком...
У меня сломалась VMWare, поэтому получилось немножко поиграться...
Посмотреть текст целиком...
15 сентября 2011 г.
Семинар 13-го сентября 2011 в Москве - отчёт
Отчёт по семинару "RAD Studio XE 2 World Tour", посвящённому выходу Delphi XE 2.
Посмотреть текст целиком...
Посмотреть текст целиком...
11 сентября 2011 г.
Сериализация - налоги
Оглавление серии.
Заголовок статьи использует понятие "налог на ПО" - это термин, обозначающий вещи, которые вы делаете не для пользователя или себя, а для поддержания здоровья общей экосистемы компьютера.
Этот пост будет говорить об общих подходах к правильному дизайну работы с файлами и хранилищами данных. В т.н. "книжках по Delphi" об этом обычно не пишут, поскольку такие вещи не имеют отношения к Delphi, а описываются в "книгах по Windows". По какой-то не очень понятной мне причине, "книги по Windows" читаются не так уж многими людьми. Хотя, казалось бы, как можно писать программы под какую-то ОС, не владея знаниями по этой ОС. В любом случае, если вы захотите исправить этот свой недостаток, то вот книги, которые вам стоит прочитать:
Тем не менее, в этом посте я лишь кратко упомяну основные принципы. Я не буду их обосновывать - можете поверить мне на слово. Если на слово верить не хочется - придётся читать книги или документацию. Возможно, позже я напишу что-то более развёрнутое, но пока - только так.
Посмотреть текст целиком...
Заголовок статьи использует понятие "налог на ПО" - это термин, обозначающий вещи, которые вы делаете не для пользователя или себя, а для поддержания здоровья общей экосистемы компьютера.
Этот пост будет говорить об общих подходах к правильному дизайну работы с файлами и хранилищами данных. В т.н. "книжках по Delphi" об этом обычно не пишут, поскольку такие вещи не имеют отношения к Delphi, а описываются в "книгах по Windows". По какой-то не очень понятной мне причине, "книги по Windows" читаются не так уж многими людьми. Хотя, казалось бы, как можно писать программы под какую-то ОС, не владея знаниями по этой ОС. В любом случае, если вы захотите исправить этот свой недостаток, то вот книги, которые вам стоит прочитать:
- Windows via C/C++. Программирование на языке Visual C++ (старое название: Windows для профессионалов. Создание эффективных Win32-пpилoжeний с учетом специфики 64-разрядной версии Windows)
- Защищенный код
- Защищенный код для Windows Vista
- Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, Windows 2000. Мастер-класс
Тем не менее, в этом посте я лишь кратко упомяну основные принципы. Я не буду их обосновывать - можете поверить мне на слово. Если на слово верить не хочется - придётся читать книги или документацию. Возможно, позже я напишу что-то более развёрнутое, но пока - только так.
Посмотреть текст целиком...
10 сентября 2011 г.
Сериализация - общие сведения о файлах
Оглавление серии.
Для начала вспомним, что такое файл. Файл - это устройство с последовательным доступом, к которому можно обратиться по имени. Самый типичный файл - это файл на диске. Но в более широком смысле файлом являются и файловые устройства - вроде сетевого соединения, потоков данных, каналов pipe и т.п. Соответственно, операцию записи или загрузки данных из файлов на диске можно рассматривать в более широком смысле, применительно к любым файлам.
Посмотреть текст целиком...
Для начала вспомним, что такое файл. Файл - это устройство с последовательным доступом, к которому можно обратиться по имени. Самый типичный файл - это файл на диске. Но в более широком смысле файлом являются и файловые устройства - вроде сетевого соединения, потоков данных, каналов pipe и т.п. Соответственно, операцию записи или загрузки данных из файлов на диске можно рассматривать в более широком смысле, применительно к любым файлам.
Посмотреть текст целиком...
9 сентября 2011 г.
1 сентября 2011 г.
Три составные части хорошего описания ошибки
Источник.
Запомнить правила составления хорошего описания ошибки совсем нетрудно. Каждое хорошее описание ошибки должно содержать ровно три вещи:
Посмотреть текст целиком...
Запомнить правила составления хорошего описания ошибки совсем нетрудно. Каждое хорошее описание ошибки должно содержать ровно три вещи:
- Какие шаги привели к ошибке.
- Что вы ожидали увидеть.
- Что вы в самом деле увидели.
Посмотреть текст целиком...
20 августа 2011 г.
Сериализация - оглавление
Этот пост начинает серию статей про сериализацию данных в Delphi. Он является оглавлением, которое я буду дополнять ссылками по мере написания статей. Я начал писать эту статью, поскольку у многих начинающих программистов возникают проблемы с ведением внешних данных в их программах.
Посмотреть текст целиком...
Посмотреть текст целиком...
15 августа 2011 г.
14 августа 2011 г.
8 августа 2011 г.
29 июля 2011 г.
26 июля 2011 г.
Программирование - это искусство
На этот пост меня подтолкнуло прочтение вот этой статьи. Хотя я давно собирался что-то такое написать, но эта статья стала катализатором, а изначальной причиной стали комментарии к некоторым моим предыдущим постам.
Многие бросаются фразой, мол, "программирование - это искусство", не вполне осознавая её смысл, часто добавляя к ней подобные же штампы ("искусство требует жертв"). Иногда можно видеть и противоположную картину - программирование низводят до уровня "механического вырезания болтов на станке". Некоторые спорят, ремесло программирование или же искусство (а может и наука). Многим просто без разницы.
Посмотреть текст целиком...
Многие бросаются фразой, мол, "программирование - это искусство", не вполне осознавая её смысл, часто добавляя к ней подобные же штампы ("искусство требует жертв"). Иногда можно видеть и противоположную картину - программирование низводят до уровня "механического вырезания болтов на станке". Некоторые спорят, ремесло программирование или же искусство (а может и наука). Многим просто без разницы.
Посмотреть текст целиком...
1 июля 2011 г.
26 июня 2011 г.
18 июня 2011 г.
Адресное пространство под микроскопом
Продолжаем тему про память в программах Delphi.
В прошлый раз мы узнали о том, что понятие "память" в программах представляет собой большой однородный массив байтов, где и хранится в куче вообще всё, с чем напрямую работает программа. Массив этот виртуален, не ограничен количеством физической памяти, индивидуален у каждой программы и достаточно велик, чтобы вы не задумывались о его ограничениях 99% времени. Большой размер, изолированность и однородность существенно упрощает разработку программ.
Ну, вообще-то я вам наврал. Извините, если вы мне поверили.
Посмотреть текст целиком...
В прошлый раз мы узнали о том, что понятие "память" в программах представляет собой большой однородный массив байтов, где и хранится в куче вообще всё, с чем напрямую работает программа. Массив этот виртуален, не ограничен количеством физической памяти, индивидуален у каждой программы и достаточно велик, чтобы вы не задумывались о его ограничениях 99% времени. Большой размер, изолированность и однородность существенно упрощает разработку программ.
Ну, вообще-то я вам наврал. Извините, если вы мне поверили.
Посмотреть текст целиком...
14 мая 2011 г.
11 мая 2011 г.
8 мая 2011 г.
25 апреля 2011 г.
Архитектура памяти в Windows: мифы и легенды (spin-off)
Этот пост - несколько необычное ответвление (spin-off) предыдущего.
Слова "звучит как сюжет для разрушителей легенд" из него, сказанные случайно, красного словца ради, сильно запали мне в голову, и я решил, что было бы неплохо самому "разрушить" несколько таких мифов. И вот появился этот пост - возможно, недостаточно точный технически, но рассказывающий различные факты о памяти в, как я надеюсь, занимательной форме.
Мне кажется, что будет особенно интересно, если вы попробуете при чтении угадывать результаты экспериментов (и статус мифов) до того, как они будут изложены.
Посмотреть текст целиком...
Слова "звучит как сюжет для разрушителей легенд" из него, сказанные случайно, красного словца ради, сильно запали мне в голову, и я решил, что было бы неплохо самому "разрушить" несколько таких мифов. И вот появился этот пост - возможно, недостаточно точный технически, но рассказывающий различные факты о памяти в, как я надеюсь, занимательной форме.
Мне кажется, что будет особенно интересно, если вы попробуете при чтении угадывать результаты экспериментов (и статус мифов) до того, как они будут изложены.
Посмотреть текст целиком...



