25 августа 2026

Как научить PowerDesigner добавлять полям индекса порядок сортировки

В компании, где я работал будучи студентом, для проектирования модели базы данных использовали ERwin. Мне он сразу показался, мягко сказать, не очень удобным. Для нового проекта я взял у своего знакомого PowerDesigner 6.0 (пришлось записать целых 5 дискет по 1.44 МБ!). С тех пор PowerDesigner используется мной в каждом проекте, где я сам выбираю инструментарий. Вы скажете, что это "как стрелять из пушки по воробьям". Да, я с этим согласен. Но десятки лет его использования вызвали стойкое привыкание. Хотя к PowerDesigner у меня тоже есть вопросы. Хорошо, что большинство из них решаемы. Для примера рассмотрим, как научить PowerDesigner добавлять в генерируемый DDL-скрипт полям индекса порядок сортировки. Да, у этого мощнейшего программного обеспечения есть такая маленькая проблемка.

20 августа 2026

Delphi - единственный платный язык программирования в топ-20 TIOBE Index

После вылета MATLAB из топ-20 TIOBE Index в августе 2026-го года Delphi стал единственным платным языком программирования в топ-20 TIOBE Index. А стоит он между прочим не копейки... Во времена, когда большинство языков программирования доступны бесплатно, занимать 10 или 11 место в рейтинге для него – это вдвойне круто!
Топ-20 TIOBE Index август 2026-го года

20 февраля 2026

Что ждет в Delphi 13.1 Florence?

19 марта 2026 года компания Embarcadero приглашает на вебинар "What’s Coming in RAD Studio 13.1 Florence". Марко Канту, Ян Баркер, Бен Швенк, Нуно Кастро и Максим Меньшиков в прямом эфире расскажут, что ждет разработчиков на Delphi и C++Builder в RAD Studio 13.1 Florence.
What’s Coming in RAD Studio 13.1 Florence

Бесплатная регистрация

05 февраля 2026

Вычисление выражений в инспекторе объектов Delphi 13.1

Разработчики Delphi с каждым новым релизом стремятся повышать удобство работы в IDE Delphi. В Delphi 13.1 представлен новый механизм, позволяющий выполнять простые вычисления в определенных числовых полях инспектора объектов (Object Inspector).

02 февраля 2026

Получение расширения файла в SQL-запросе

Фантазия авторов PostgreSQL поражает. Его разнообразные синтаксические конструкции почти всегда позволяют решить задачу несколькими способами. Например, рассмотрим получение расширения файла из его имени. В отличии от Oracle и MS SQL Server, для PostgreSQL я насчитал 4 варианта.
PostgreSQL - это швейцарский нож

24 января 2026

Delphi 13.1 бета и поддержка Windows ARM

Компания Embarcadero Technologies проводит бета-тестирование новой версии RAD Studio, Delphi и C++ Builder. В Delphi 13.1 и C++Builder 13.1 будут представлены несколько новых функций и, как обычно, уделено особое внимание существенному улучшению качества продукта. Эта бета-версия получила кодовое название "Amalthea". В Embarcadero его связывают с одним из спутников Юпитера Amalthea.

Delphi 13.1 Amalthea
Но мне больше нравится трактовка этого названия из древнегреческой мифологии. Там Amalthea — это коза вскормившая своим молоком младенца Зевса. Когда у козы сломался рог, Зевс в благодарность и в память о своей кормилице наделил его волшебной силой наполняться всем, что пожелает владелец, тем самым создав Рог Изобилия. Который в Средние века христиане переименовали в Святой Грааль. Delphi — это Рог Изобилия для программистов. А Delphi без багов — это их Святой Грааль (такая же недостижимая заветная цель).

12 ноября 2025

29 октября 2025

Выпущен Delphi 13 Florence Patch 2

Сегодня, 29 октября 2025 года, компания Embarcadero выпустила второе обновление для Delphi 13 Florence, C++Builder 13 Florence и RAD Studio 13 Florence. Октябрьский патч для RAD Studio 13 обеспечивает качественные улучшения RTM-версии, уделяя особое внимание улучшению отладчика, решению проблем с iOS 26 и reFind, инструментам C++ и улучшению интеграции Windows SDK для C++. Кроме этого добавили дважды потерянные файлы библиотеки Indy (надеюсь, что на этот раз они смогли).

13 октября 2025

Удаление базы данных PostgreSQL с активными подключениями

Базу данных нельзя удалить, если к ней подключены пользователи. Перед удалением базы данных PostgreSQL я всегда выполняю запрос, который для всех подключений к удаляемой базе данных вызывает функцию принудительного завершения процесса подключения:

06 октября 2025

Восстановить запись в журнал сообщений PostgreSQL

Обратил внимание на одну маленькую неприятную особенность PostgreSQL – если удалить текущий файл журнала сообщений, то сервер не создаст новый файл, пока не наступит момент ротации файла. Это наблюдается и под Windows и под Linux. Что делать, если log_rotation_age большой или вовсе установлен в ноль и смена файлов по времени не производится? Можно наплевать на подключенных к базам данных пользователей и перегрузить PostgreSQL. Но есть более безболезненный способ.

29 сентября 2025

Hotfix на Delphi 13.0 Florence Patch 1 для Indy

RTM-версия Delphi 13 Florence включает в себя копию Indy 10.6.3.11, но несколько компонент Indy отсутствуют в палитре компонентов. Потерялись компоненты OAuth SASL, которые были добавлены в Indy 10.6.3.7.

26 сентября 2025

Выпущен Delphi 13.0 Florence Patch 1

Для загрузки и установки доступно первое обновление для Delphi 13.0 Florence, C++Builder 13.0 Florence и RAD Studio 13.0 Florence. Как обычно, первое обновление от команды разработчиков Delphi содержит потерянные в инсталляторе релиза файлы и мелкие фиксы: правильную версию PAServer для MacOS, потерянные файлы библиотеки Indy, фикс падения FireMonkey в design time... Примерный размер - 500 МБ.

22 сентября 2025

Ускоряем поиск с использованием LIKE

Прислали мне SQL-запрос с жалобой, что при определенных параметрах он работает около 10 минут. Хотя в большинстве случаев возвращает данные быстрее, чем за секунду. Запрос не простой. В нем объединяется несколько таблиц и вьюшек, а среди всех условий – регистронезависимый поиск по вхождению строки: UPPER(поле) LIKE '%СТРОКА%'. Мои замечания по поводу UPPER и LIKE по вхождению, так же как и предложения изменить запрос или использовать полнотекстовый поиск не приняли, т.к. запрос создан генератором запросов и переписывать его никто не будет. Проблему усугублял планировщик запросов PostgreSQL. Судя по плану, когда запрос возвращал данные, LIKE выполнялся по уже отфильтрованным данным и проверял несколько десятков строк, и время выполнения было приемлемое. А с параметрами при которых результат запроса был пустой, LIKE выполнялся первым условием и перебирал все строки в таблице. Как результат – жуткие тормоза. Это поведение моделировалось на PostgreSQL с 12-й версии по 17-ю. На MS SQL Server план этого запроса составлялся всегда корректно.

10 сентября 2025

09 сентября 2025

Директива "noreturn" для объявления процедур в Delphi 13 Florence

В компилятор Delphi 13 Florence добавлена директива "noreturn". "noreturn" - это атрибут объявления процедуры, который указывает, что вызов процедуры 100% вызовет исключение, а не завершит обычное выполнение. Это позволит компилятору выполнить оптимизацию путем исключения лишнего кода и пропустить предупреждение о неопределенных результатах в функциях.

08 сентября 2025

Новые директивы компилятора {$PUSHOPT} и {$POPOPT} в Delphi 13 Florence

В компилятор Delphi 13 Florence добавлены новые директивы {$PUSHOPT} и {$POPOPT}, которые сохраняют и восстанавливают текущий набор параметров и конфигурации warning'гов. Их реализация аналогична "#pragma option push" и "#pragma option pop") в C++.

07 сентября 2025

Новые операторы "is not" и "not in" в Delphi 13 Florence

Компилятор Delphi 13 Florence обзавелся двумя новыми операторам: "is not" и "not in". Они предлагают более короткую и удобочитаемую версию существующих комбинированных операторов.

04 сентября 2025

Поддержка VCL-стилей у TitleBarPanel и прокрутка пунктов меню в Delphi 13 Florence

В предстоящем релизе Delphi 13 Florence в Visual Component Library (VCL) пользователей ждет множество изменений. Это не только улучшения качества, но и новые мелкие функции. Можно выделить две новые "плюшки", на которые разработчики RAD Studio получили много запросов.

20 августа 2025

MS SQL Server. Таблицы оптимизированные для памяти и пропажа места на диске

К нам в поддержку обратился клиент с ошибкой "MAT/PIT export/import encountered a failure for memory optimized table or natively compiled stored procedure with object ID 1873539326 in database ID 5. The error code was 0x80030070." в приложении работающем с MS SQL Server.

MAT/PIT export/import encountered a failure for memory optimized table or natively compiled stored procedure with object ID <ID> in database ID <ID>
Так как в тексте ошибки упомянута таблица оптимизированная для памяти, то моя первая мысль была, что на сервере недостаточно памяти или она глюканула. Поиск описания ошибки по коду 0x80030070 вывел на STG_E_MEDIUMFULL "There is insufficient disk space to complete operation", а потом на ERROR_DISK_FULL 112 (0x70) "There is not enough space on the disk". Действительно, как мне потом написали, у клиента "всё починилось добавлением места". Как связаны таблицы оптимизированные для памяти и недостаток места на диске для завершения операции?