Система Orphus

30 января 2012 г.

Разработка системы плагинов, часть 4: взаимодействие плагинов

В прошлый раз я говорил про более сложные методы взаимодействия ядра и плагинов: создание активных плагинов. К этой теме я ещё вернусь несколько позже, но сначала я хотел бы поговорить про вопросы взаимодействия плагинов друг с другом. Хотя некоторые из читателей могут подумать, что в их программах им это не нужно (и закрыть эту статью), но, на самом деле, эта тема показывает некоторые техники, которые будут вам полезны, даже если вы не будете реализовывать взаимодействие плагинов между собой.

Посмотреть текст целиком...

11 января 2012 г.

Разработка системы плагинов, часть 3: активные плагины

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

Посмотреть текст целиком...

8 января 2012 г.

Разработка системы плагинов в Delphi, часть 2: разработка API

Первая часть.

В этой части мы рассмотрим реализацию функциональности плагинов.

Для начала я напомню, что в качестве демонстрационного приложения я использовал программу-пример из комплекта демок Delphi - RichEdit Demo. Программа представляет собой простенький текстовый редактор типа WordPad:


Напомню, что в прошлый раз мы создали в этой программе инфраструктуру для плагинов и написали пустой плагин. Теперь настало время для реализации чего-то полезного.

Посмотреть текст целиком...

25 декабря 2011 г.

Разработка системы плагинов в Delphi

Эта статья - продолжение старой серии.

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

Ну, во-первых, причиной для новой статьи стали просьбы её продолжить/закончить. За три года они поступали регулярно. Во-вторых, я заметил, что многие люди ссылаются на эту статью как на руководство по разработке плагинов, хотя, как я уже сказал, оно таким не является. Сам я всегда ссылался на него со словами "вот, это не читай, но в первой части тут неплохая подборка ссылок по интересующей тебя теме".

В общем, все эти факторы в итоге перевесили мою лень и я решил написать нормальную статью про плагины.

Примечание: я был бы очень благодарен, если кто-нибудь со знанием Visual Studio (C++) просмотрел бы раздел 8 (и особенно - касательно генерации заголовочников для Visual Studio C++) на предмет моих ошибок.

Посмотреть текст целиком...

20 декабря 2011 г.

Публичная бета EurekaLog 7

Получи бесплатную лицензию на EurekaLog 7! ;)

Посмотреть текст целиком...

12 ноября 2011 г.

Сериализация - потоки данных

Это второй пост в серии постов про сериализацию. В этой части мы рассмотрим потоки данных.

Посмотреть текст целиком...

8 ноября 2011 г.

Процедуры, классы, компоненты...

Хотя это не очень-то видно из заголовка, но это - дополнение к посту "Чего не хватает в Delphi". Поговорим о модели компонентов в Delphi и её недостатках.

Посмотреть текст целиком...

17 октября 2011 г.

Сериализация - файлы в стиле Pascal

Это первый пост в серии постов про сериализацию. В этой части мы рассмотрим т.н. файлы в стиле Pascal.

Посмотреть текст целиком...

12 октября 2011 г.

Установка Delphi 1 на Windows 7 x64

Предупреждение: это несерьёзный пост с нулевой практической пользой. For fun only...

У меня сломалась VMWare, поэтому получилось немножко поиграться...

Посмотреть текст целиком...

15 сентября 2011 г.

Семинар 13-го сентября 2011 в Москве - отчёт

Отчёт по семинару "RAD Studio XE 2 World Tour", посвящённому выходу Delphi XE 2.

Посмотреть текст целиком...

11 сентября 2011 г.

Сериализация - налоги

Оглавление серии.

Заголовок статьи использует понятие "налог на ПО" - это термин, обозначающий вещи, которые вы делаете не для пользователя или себя, а для поддержания здоровья общей экосистемы компьютера.

Этот пост будет говорить об общих подходах к правильному дизайну работы с файлами и хранилищами данных. В т.н. "книжках по Delphi" об этом обычно не пишут, поскольку такие вещи не имеют отношения к Delphi, а описываются в "книгах по Windows". По какой-то не очень понятной мне причине, "книги по Windows" читаются не так уж многими людьми. Хотя, казалось бы, как можно писать программы под какую-то ОС, не владея знаниями по этой ОС. В любом случае, если вы захотите исправить этот свой недостаток, то вот книги, которые вам стоит прочитать: Данные книги являются обязательным чтением для любого разработчика программ под Windows.

Тем не менее, в этом посте я лишь кратко упомяну основные принципы. Я не буду их обосновывать - можете поверить мне на слово. Если на слово верить не хочется - придётся читать книги или документацию. Возможно, позже я напишу что-то более развёрнутое, но пока - только так.

Посмотреть текст целиком...

10 сентября 2011 г.

Сериализация - общие сведения о файлах

Оглавление серии.

Для начала вспомним, что такое файл. Файл - это устройство с последовательным доступом, к которому можно обратиться по имени. Самый типичный файл - это файл на диске. Но в более широком смысле файлом являются и файловые устройства - вроде сетевого соединения, потоков данных, каналов pipe и т.п. Соответственно, операцию записи или загрузки данных из файлов на диске можно рассматривать в более широком смысле, применительно к любым файлам.

Посмотреть текст целиком...

9 сентября 2011 г.

Сериализация - общие сведения

Оглавление серии.

Этот пост содержит основные определения серии.

Посмотреть текст целиком...

1 сентября 2011 г.

Три составные части хорошего описания ошибки

Источник.

Запомнить правила составления хорошего описания ошибки совсем нетрудно. Каждое хорошее описание ошибки должно содержать ровно три вещи:
  • Какие шаги привели к ошибке.
  • Что вы ожидали увидеть.
  • Что вы в самом деле увидели.

Посмотреть текст целиком...

Вышли Delphi XE 2 и RAD Studio XE 2

Хотя официального анонса ещё не было, но Trial-версии уже доступны.

Посмотреть текст целиком...

20 августа 2011 г.

Сериализация - оглавление

Этот пост начинает серию статей про сериализацию данных в Delphi. Он является оглавлением, которое я буду дополнять ссылками по мере написания статей. Я начал писать эту статью, поскольку у многих начинающих программистов возникают проблемы с ведением внешних данных в их программах.

Посмотреть текст целиком...

15 августа 2011 г.

Задачка №12

Что не так с этим кодом?

Посмотреть текст целиком...

14 августа 2011 г.

Сертификация Delphi

Теперь я "Embarcadero Certified Delphi Developer" ;)


Посмотреть текст целиком...

8 августа 2011 г.

Акция RAD Studio XE 2 Sweepstakes: выиграй Delphi XE 2 (Pulsar) до её выхода

До 31 августа Embarcadero разыгрывает три лицензии на RAD Studio XE 2.

Посмотреть текст целиком...

29 июля 2011 г.

Ответ на задачку №11

Ответ на задачку №11.

Посмотреть текст целиком...

26 июля 2011 г.

Программирование - это искусство

На этот пост меня подтолкнуло прочтение вот этой статьи. Хотя я давно собирался что-то такое написать, но эта статья стала катализатором, а изначальной причиной стали комментарии к некоторым моим предыдущим постам.

Многие бросаются фразой, мол, "программирование - это искусство", не вполне осознавая её смысл, часто добавляя к ней подобные же штампы ("искусство требует жертв"). Иногда можно видеть и противоположную картину - программирование низводят до уровня "механического вырезания болтов на станке". Некоторые спорят, ремесло программирование или же искусство (а может и наука). Многим просто без разницы.

Посмотреть текст целиком...

1 июля 2011 г.

Задачка №11

Объяснить этот снимок экрана.

Посмотреть текст целиком...

Ответ на задачку №10

Ответ на задачку №10.

Посмотреть текст целиком...

26 июня 2011 г.

Изменения в блоге

Что нового в блоге...

Посмотреть текст целиком...

18 июня 2011 г.

Адресное пространство под микроскопом

Продолжаем тему про память в программах Delphi.

В прошлый раз мы узнали о том, что понятие "память" в программах представляет собой большой однородный массив байтов, где и хранится в куче вообще всё, с чем напрямую работает программа. Массив этот виртуален, не ограничен количеством физической памяти, индивидуален у каждой программы и достаточно велик, чтобы вы не задумывались о его ограничениях 99% времени. Большой размер, изолированность и однородность существенно упрощает разработку программ.

Ну, вообще-то я вам наврал. Извините, если вы мне поверили.

Посмотреть текст целиком...

14 мая 2011 г.

Текучка

Что нового в блоге и не только.

Посмотреть текст целиком...

11 мая 2011 г.

Задачка №10

Объяснить это поведение кода.

Посмотреть текст целиком...

8 мая 2011 г.

Ответ на задачку №9

Ответ на задачку №9.

Посмотреть текст целиком...

25 апреля 2011 г.

Архитектура памяти в Windows: мифы и легенды (spin-off)

Этот пост - несколько необычное ответвление (spin-off) предыдущего.

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

Мне кажется, что будет особенно интересно, если вы попробуете при чтении угадывать результаты экспериментов (и статус мифов) до того, как они будут изложены.

Посмотреть текст целиком...

22 апреля 2011 г.

Ответ на задачку №8

Ответ на задачку №8.

Посмотреть текст целиком...