Блог Александра Божко
Архивы
Рубрики

admin

EntityDACLogoТехнология объектно-реляционного отображения (ORM) заинтересовала меня более десяти лет назад. Именно тогда мы с группой единомышленников создали Интернет-проект «Mda по-русски» (mda-delphi.ru), посвященный вошедшему в состав Delphi 7 Architect продукту Bold for Delphi. В то время этот продукт вызвал довольно оживленный интерес у Delphi разработчиков, нам удалось организовать довольно большое и продуктивное сообщество, собрать множество материалов и полезных наработок.  К сожалению, проект исчерпал себя, отчасти ввиду кризиса Delphi, отчасти из-за субъективных обстоятельств, но в основном из-за того, что Bold перестал официально поддерживаться.

Так или иначе, интерес к подобным решениям существует, и довольно странно, что в то время как для других сред разработки есть огромное количество различных ORM библиотек, для Delphi их не так и много. Если верить Wikipedia за всю историю существования Delphi, было лишь три проприетарные реализации. Это, Bold for Delphi, абсолютно провальный проект ECO, реализованный компанией Borland для Delphi for .Net, и, возможно вы удивитесь, вполне современный, поддерживаемый и активно развивающийся проект от компании DevArtEntityDAC.
Именно о последнем продукте сегодня и пойдет речь.

Но прежде всего, давайте разберемся с тем, что же такое ORM и какие преимущества эта технология предоставляет разработчикам. Согласно всё той же Wikipedia, ORM (англ. object-relational mapping, рус. объектно-реляционное отображение) это технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».

Основная цель использования ORM подхода – увеличение продуктивности разработки. Достигается это за счет разделения бизнес-логики приложения и низкоуровневых операций по взаимодействию с БД, что, в свою очередь, позволяет разработчикам ускорить процесс создания проектов и облегчить их сопровождение.

Очевидно, что именно с этой точки зрения и следует рассматривать EntityDAC. Читать далее

БезымянныйНа фоне последних событий а мире Delphi незамеченной осталась книжная новинка. Обучение мобильной разработке на Delphi. Автор книги, наверняка, хорошо  вам знаком. Это Всеволод Леонов. Да, да. Тот самый Всеволод Леонов, который ещё пару лет назад работал в Enbarcadero, проводил вебинары и колесил по всему СНГ, представляя новые продукты компании. Иными словами, компетентность автора сомнений не вызывает. Но отличительной чертой книги, помимо её бесплатности, является то, что она рассчитана на начинающих. Именно то, чего долгое не хватало новичкам для “быстрого старта”. Изначально книга задумывалась, как книга для школьников. Однако, я не скажу, что она совсем уж детская. Студентам и просто начинающим программистам, вероятно, она будет вполне интересна. У меня даже возникла ассоциация с книгами Архангельского.

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

- Сев, привет. Книгу написал?
– Да, Саш, есть такое. Сам от себя не ожидал, но сложились обстоятельства.

– Какие обстоятельства?
– Прежде всего с переходом в Samsung программирование перестало быть постоянным занятием. Образовался вакуум, который нельзя заполнить ничем, кроме как опять программированием. Такая была гигантская тоска по тому, чем занимался со школьной скамьи.

– Не обязательно было писать книгу. Писал бы блог.
– Порывался. Но потом мы в Samsung совместно с Embarcadero сделали такой “кейс” для школьников. Ежегодно в Москве проводится конкурс “Школа реальных дел”, где команды получают “задание” от вендоров. Мы вместе в прошлом году курировали проекты команд на тему “разработка электронного учебника на Delphi”. Работал я, Сергей Терлецкий и Денис Васильев. Екатерина Макарова тоже помогала. Наш “кейс” стал “образцово-показательным” в масштабах Москвы. Но без книг было трудно.

– Почему? Можно было сделать вебинары…
– Да, мы их и делали. Я вёл “проектную” часть вместе с Сергеем, Денис – чисто “дельфовую”. Но нужна была именно книга в виде “методички”, т.е. сборка пошаговых инструкций с объяснениями по созданию приложения. Читать далее

Обновилась бесплатная библиотека FireMonkey компонентов Ярослава Бровина FGX.

Новая версия 0.7.0.69 предназначена только для RAD Studio RX.

Полное описание и список изменений новой версии приведен здесь.

 

365

Сегодня партнеры и клиенты компании Embarcadero получили письмо от Ренди Якобса, CEO компании IDERA, Inc. Я, посчитал, что русскоязычный вариант этого письмо следует выложить в блог, как это сделал из один из наших англоязычных коллег. А заодно выскажу свои соображения по данному поводу.

Я тоже читал, обсуждения в форумах (хотя и не встревал в дискуссии), общался с коллегами и, конечно, переживал за судьбу продукта, который кормит меня на протяжении практически всей моей профессиональной карьеры. Лично меня беспокоило два вопроса. Во-первых то, что  IDERA, образно говоря, DB-шная компания, и далеко не факт, что у них найдется желание и ресурсы для развития нового направления. Я имею введу средства разработки. Во-вторых, интересовало, как IDERA будет выстраивать отношение с Delphi сообществом, и будет ли компания вообще заниматься этим.

В принципе сейчас, мои ожидания можно охарактеризовать как умеренно оптимистичные. Мы получили определенные ответы на означенные выше вопросы. И, по крайней мере, стало понятно, что IDERA  планирует не просто развивать средства разработки Embarcadero (пока я называю эту группу продуктов так), но и имеет определенное виденье этого развития. И, очевидно, скоро мы увидим внятный Road Map.

Ну, а сам факт письма является подтверждением намерений IDERA выстраивать отношения с коммюнити. Так, что надеюсь, для Delphi сообщества, в том числе и русскоязычного, всё сложится наилучшим образом. Поэтому книги по Java и C# отвожу обратно в гараж и привожу полный текст письма Ренди Якобса.

Читать далее

Компания Idera объявила о договоренности по приобретению Embarcadero Technologies. Ожидается, что сделка будет завершена в середине октября. Официальный пресс-релиз вы можете прочесть здесь.

 

780_198_11

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

Цитирую Ярослава Бровина:

Главные отличия TListView от TListBox в:

  1. TListBoxItem - контрол, TListViewItem - нет
  2. В TListBoxItem можно добавлять любые контролы, используя Parent. В TListVIewItem - нет.
  3. TListVIewItem хранит только данные для отображения
  4. TListVIewItem сам выполняет отрисовку хранимых данных через метод Render
  5. За счет собственно ручной отрисовки в TListVIewItem достигается прирост скорости и малое потребление памяти (хранение только актуальных данных)
  6. Чтобы создать свой вариант TListViewItem, нужно создать свой класс итема, в нем реализовать требуемые данные (например время) и создать in-place редактор для редактирования времени, зарегистрировать его и т. д.

 

Сам по себе факт повышения производительности и уменьшения потребления памяти – веский аргумент в пользу использования TListView. Но есть и еще кое что.

Во многих Android приложениях мне приходилось наблюдать следующую реализацию списков. При нажатии на элемент списка (Item, если придерживаться выбранной терминологии), производится определенное действие. Обычно вызывается новая форма для редактирования данных. Но при нажатии с удерживанием (Long Tap) производится совершенно другое действие. И эти события не пересекаются. Иными словами Android приложения умеют четко различать “длинное нажатие” от “обычного”. Более того, ни одно из этих событий не срабатывает при скроллинге списка. Наглядный пример – список писем в Яндекс Почта.

При попытке реализовать подобный функционал с помощью TListBox, я получил чехарду из накладывающихся друг на друга событий. Главной проблемой оказалось отделение скроллинга от обычного нажатия. В TListView, как оказалось, с этим проблем нет. Но правильно определить события – тоже задача довольно интересная. Дабы сэкономить время своим читателям, я поделюсь здесь результатами своих экспериментов. Читать далее

В последний день лета Embarcadero выпустила очередную версию Rad Studio. Событие ожидаемое, с недавнего времени релизы выпускаются дважды в год. Неожиданностью стало другое. А именно, смена системы нумерации версии, логотипов и прочей внешней атрибутики. За двадцатилетнюю историю Delphi подобное происходит в третий раз. Хотя, какой-то радикальной “смены имиджа” сейчас не произошло. В принципе, ничего особо странного здесь я не вижу. Тенденция. Девятки пропускаем. Windows 10 – Delphi 10 – Rad Studio 10. Итак, RAD Studio 10 Seattle.

Дальше сразу о приятном. iso-образ новой студии (7,2 Гб), наконец начал загружаться быстро (со скоростью моего домашнего канала :)). Установка тоже прошла довольно быстро и без эксцессов. При запуске новая Студия порадовала приятной обновленной заставкой.

Seattle

Читать далее

Часть #0

Создание клиентского приложения

Поскольку в нашем случае речь идёт о мобильном приложении, клиентской приложение будет создано с помощью FireMonkey.

  • Создаем новое Multi-Device приложение (настройки не критичны);

DataSnapClient000

Я создаю клиентское приложение в группе, что дает возможность параллельно отлаживать и серверное приложение.

Читать далее

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

Итак, имеется настольное приложение, работающее с БД MS Access (это не мой выбор и мы условились не обсуждать его здесь). Функционал приложения довольно обширный, но некоторая его часть связана с учетом рабочего времени. На ПК запускается таймер, по окончанию его работы в БД заносятся данные об отработанном времени, выполняемом проекте и т.д. Идея заключается в том, что бы этот таймер можно было запускать на мобильном устройстве, а информация с него попадала в базу на ПК.

Задачу я реализую с помощью FireDAC. И поскольку обилия русскоязычных руководств по данной теме не наблюдается, я решил в блоге описать всю процедуру пошагово. Естественно, в несколько упрощенном виде.

Создание сервера

Создаем новый проект.

  • Выбираем  File > New > Other из главного меню;
  • В ветке DataSnap Server выбираем DataSnap REST Application;

DataSnap00

Читать далее

Итак, релиз RAD Studio XE8 увидел свет и у меня появилась возможность познакомиться с продуктом на практике.

Первое, что бросается в глаза в процессе установки новой версии RAD Studio – размер дистрибутива. Iso- образ занимает 6,7  Гб. Но есть и хорошая новость. Мне удалось закачать дистрибутив на довольно приличной скорости, раньше со скоростью закачки частенько возникали проблемы.

Процесс инсталляции ничем особо не отличается от того, что имелось в предыдущих версиях, за исключением, пожалуй, визуального оформления. Под Windows 8.1 все установилось без проблем.  Традиционная процедура регистрации при первом запуске также не претерпела изменений. Правда загружаться XE8 стала немного медленнее, что, очевидно, связанно с бОльшим  количеством подгружаемых пакетов. А вот стартовый экран стал выглядеть иначе.

startScreenXE8

Впрочем банальной  “косметикой” новшества не ограничились. Я постараюсь, насколько это возможно,  систематизировать рассказ об изменениях в последней версии Delphi.

Прежде всего, обновился формат справочной системы. Справка в формате .chm загружается моментально, что меня очень порадовало.

Набор расширений IDE Castalia, который был доступен зарегистрированным пользователям XE7, в XE8 поставляется “в коробке”. Как по мне, самый полезный инструмент из этого набора – подсветка структуры кода

Castalia

Вообще, Embarcadero довольно активно расширяет функциональность Delphi продуктами сторонних производителей, включая их в поставку. Еще одной “новинкой” стал менеджер пакетов GetIt, который позволяет скачать и установить более десятка пакетов и библиотек из набора  TurboPack. Сюда вошли ставшие бесплатными хорошо известные продукты компании Turbo Power, а также некоторые другие компоненты. Подробнее о них вы можете прочесть в блоге Марко Канту.

Интересна сама идея встроить загрузку и установку компонентов или пакетов в IDE. В меню Tools пункт GetIt позволяет вызвать диалог следующего вида.

Getit

Теперь загрузку и установку компонентов можно выполнить буквально в один клик. И это не метафора. Удобно. К слову, среди библиотек GetIt есть и библиотеки для FireMonkey, предназначенные для работы на мобильных платформах. Думаю, большинство из этих библиотек достойны отдельного обзора.

Если говорить о сторонних компонентах, то все, что было в предыдущих версиях Delphi осталось. FastReport, по-прежнему устанавливается отдельно (дистрибутив размещен на официальном сайте и доступен зарегистрированным пользователям). То же самое относится и к AQtime Standard и IP*Works. Любимый мною инструмент логирования CodeSite не поделил пути с полной версией для XE7 и отказался загружаться. Впрочем, не думаю, что “помирить” разные версии продукта окажется большой проблемой.

Новой возможностью RAD Studio стала поддержка физического движка Box2D. Собственно, сами модули для использования Box2D в Delphi существовали довольно давно, но теперь они включены в стандартный комплект (находятся в папке C:\Program Files (x86)\Embarcadero\Studio\16.0\source\FlatBox2D ).

Так же в XE8 появилась поддержка платформы тестирования DUnitX.

Похоже с каждой новой версией Delphi расширяется и список поддерживаемых систем контроля версий. На этот раз добавилась поддержка Mercurial.

vcs

Интересной и удобной новинкой в XE8 стал Settings Migration Tool (Инструмент переноса настроек). Он позволяет переносить настройки между любыми (начиная с Delphi 7, если верить документации) версиями Delphi/RAD Studio или AppMethod. Настройки  экспортируются в xml-файл и/или в реестр и восстанавливаются оттуда. Сам инструмент migrationtool.exe находится в папке C:\Program Files (x86)\Embarcadero\Studio\16.0\bin.

migration

Я попробовал запустить утилиту, но к сожалению, установленные на моей машине Delphi 2010 и Delphi 2007 не обнаружились в списке доступных версий.

migration2

Впрочем, сам спектр настроек старых и новых версий RAD Studio довольно серьезно разнится и вряд ли тут можно полностью положиться на утилиту. А вот при переносе настроек на другую машину или при смене очередной версии Delphi на более новую, утилита может оказать весьма полезной. Хотя и здесь следует быть аккуратным, поскольку можно безвозвратно утратить текущие настройки и попросту “завалить” IDE.

В контексте настроек IDE стоит упомянуть о новой опции Customer Experience Program. Если она включена, то будут собираться анонимные данные о действиях пользователей в IDE, что должно способствовать улучшению качества продукта. Данную опцию можно отключить Tools > Options > Environment Options > Customer Experience Program.

Об изменениях в VCL, RTL и, конечно же в FireMonkey я расскажу в следующих частях обзора. А пока пара слов об изменениях в механизме лицензирования. Владельцы версий XE3-XE7 (XE3 только до 30 июня 2015 года) могут приобрести могут приобрести XE8 по цене обновления. При этом цена на обновление с XE7 та же, что и на обновление с других версий. Новая позиция Recharge Renewal from XE7 доступна только для тех, кто купил  Recharge на XE7 и покупает Recharge на XE8.

До 31 мая 2015 на полные лицензии и апгрейд (за исключением 5-pack и 10-pack) объявлена специальная цена –  -10% от обычной.

Действительные цены на продукты в рублях приведены по ссылка ниже:

Delphi XE8

C++ Builder XE8

RAD Studio XE8

 


780_198_11

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика