Мир Delphi
Borland Inprise Borland Codegear Embarcadero в этом году анонсировали свои планы по развитию Delphi. В числе планов была упомянута взбудоражившая блогосферу кроссплатформенность.
В этом году вышла первая версия Delphi разработанная в Embarcadero – Delphi 2010. Эта версия Delphi характеризовалась большим количеством исправлений ошибок, некоторые из которых тянулись ещё со времён Delphi 7. Но стабильность – не единственный плюс этой версии, посмотрите также и на внушительный список нововведений в Delphi 2010.
В этом году Embarcadero продемонстрировали, что в отличие от Borland-a, они готовы к диалогу с Delphi-сообществом. В этом году Embarcadero провело несколько опросов дающих пользователям возможность оценить нововведения в последних версиях IDE, ожидаемые новинки, так и поддержку, и схемы лицензирования.
В этом году у Delphi появился свой форум на UserVoice. Quality Central мне кажется слишком запутанной, а форумы UserVoice – простыми и понятными. Поэтому я считаю, что баги стоит регистрировать в QC, а запрашивать новые фичи на UserVoice.
Также в этом году, были изменены условия обновления продуктов. И если раньше, приобрести новую версию Delphi по цене апгрейда (полцены от полной стоимости продукта), мог владелец любой версии Delphi, то теперь срок апгрейда ограничен только последними тремя версиями Delphi. Вероятно, кто-то в Embarcadero посмотрел на внушительное число пользователей, использующих Delphi версии 6 и 7, посчитал объёмы недополученных прибылей и сделал выводы. Так что те, кто используют версии Delphi младше 2007 и не успел купить обновления до конца этого года – будут вынуждены покупать следующую версию по цене новой лицензии.
В этом году у Delphi-программистов появился “свой вирус (Induc)”, нацеленный именно на Delphi-разработчиков.
Delphi сообщество
Русскоязычная блогосфера
В этом году в русскоязычной блогосфере появилось несколько новых блогов о Delphi. Из особенно интересных я хочу отметить блог Александра Божко: Delphi2010.ru и коллективный блог WebDelphi (сейчас у блога 2 автора: Vlad и SeregaAltmer).
Также я очень рад, что Александр Алексеев продолжил ведение своих замечательных блогов: gunsmoker и переводы от gunsmoker. Статьи такого уровня нечасто встретишь в свободном доступе.
Спасибо вам, ребята за то что вы делаете!
Также, в этом году, благодаря Александру Божко у Delphi-сообщества появился аггрегатор новостей DelphiFeeds.ru. Фактически это даёт возможность подписаться на всего на одну ленту и получать уведомления о новых материалах из 25 русскоязычных блогов и сайтов, посвящённых Delphi. Я очень надеюсь, что этот не обрастёт рекламой и не лишит посещаемости и подписчиков оригинальные блоги авторов, создающих контент. Хотя в той или иной степени, это всё-таки случится, поэтому у меня просьба к читателям – будьте более активны предоставляя авторам блогов обратную связь в виде комментариев. Это действительно важно.
И ещё, мне кажется, что в этом году Delphi-сообщество стало более сплочённым. Надеюсь, что это только начало. =)
Интересные открытые Delphi проекты 2009 года
Некоторые известные Delphi-проекты с открытым кодом в этом году переехали на Google Code, в том числе и такие старички как Virtual TreeView и продукты команды CnPack.
Если поискать в Google Code проекты с тэгом Delphi, то можно найти кое-что интересное. Например:
- Delphi Spring Framework
- Delphi On Rails – фрэймворк для создания приложений и веб-серверов основанных на MVC и REST.
- Extpascal - Ext JS wrapper for Object Pascal. Демки. (этот проект появился ещё в 2008 году, но я о нём узнал только в этом году).
Также, хочу упомянуть ещё один, на мой взгляд, очень интересный проект: Raudus – фрэймворк для создания богатых интернет-приложений (RIA). Raudus использует библиотеку ExtJS. Подход к созданию приложений – такой же как для настольных приложений. (цитата с офф-сайта). На сайте можно посмотреть примеры работы.
А также, хочу упомянуть одно большое изменение в JVCL. В этом году команда Jedi, перестала явно разделять обычные контролы и Db-aware-контролы. В последних версиях JVCL можно видеть, что многие JvКонтролы обзавелись свойством DataConnector, содержащим поля DataSource и DataField.
Рабочее
В этом году мне довелось заниматься следующими делами:
- Научиться компилировать Firebird UDF-ки на С для Linux и Windows.
- Составить план по интеграции нашего продукта с открытым сервером по синхронизации данных Funambol. План так и не был реализован.
- Написать программку для многопоточного тестирования результатов выполнения запросов в Firebird. После того, как я оттестировал с её помощью скомпилированную UDF-ку, эта программка более не используется. В следующем году, я всё-таки приведу её в порядок и выложу в свободный доступ.
- Потратить почти месяц на изучение Wix, - инструмента для создания Windows Installer инсталляций. Результатом этой работы явились 5 скриптов создающих инсталляции для наших продуктов. Злая ирония в том, что после того как я сделал инсталляции, оттестировал на чистых машинах и настроил сборку на Hudson-e – этой штукой пользовались только 1 раз.
- Убедил нашего админа попробовать в деле сервер виртуализации, в результате чего у нас появился настроенный сервер Citrix XenSource, который успешно использовался при тестировании инсталляций и для тестирования работы наших программ под пользователем с ограниченными правами. К концу года админ сумел убедить начальство выделить деньги на перевод зоопарка наших серверов (около 15 машин устаревшей конфигурации) на один мощный сервак построенный на Citrix XenServer-e. Citrix именно в этом году сделали свой XenServer бесплатным.
- Перевёл второй из моих постоянных проектов с BDE на FibPlus. Первый был переведён ещё в прошлом году и переход занял почти 4 месяца (включая тестирование и исправление ошибок). Перевод второго проекта прошёл раза в три быстрее.
- Написал небольшую утилиту позволяющую автоматизировать процесс обновления одинаковых баз данных. Об этом я не писал, но эта небольшая программка одна из тех приятных мелочей – позволяющих существенно сэкономить время на рутинных операциях.
- Очень плотно занимался созданием и развитием общей библиотеки для наших рабочих проектов. Создание и развитие заключалось в поиске кода дублирующегося хотя бы в двух наших проектов, разрывания зависимостей с родительским проектом, и создания интерфейсов, позволяющих использовать его в остальных проектах. Пока что, эта библиотека активно используется в трёх проектах из пяти. Но в следующем году у нас грядёт переход с Delphi 6 на Delphi 2010 – и я планирую внедрить её и в оставшиеся 2 проекта, чтобы не переводить на юникод один и тот же код в разных проектах.
- Окончательно освоился в Redmine. Регистрирую там все задачи, в каждом коммите в SVN, указываю соответствующую задачу. Начал писать документацию о внутренней библиотеке.
- Практика проведения еженедельных совещаний продержалась всего месяц. Причина в том, что у меня случился аврал в моих проектах, а инициативу проведения совещаний больше никто из программистов не подхватил. Из этого я сделал вывод, что явной необходимости в формальных совещаниях у нас в отделе нет.
- Опробовал в деле Test Driven Development. Пока что это только первые несмелые шаги – я пишу тесты только для тех классов, в которых нахожу ошибки, или не до конца понимаю, но даже это уже хорошо. Основным стимулом для этого послужила книга Майкла К. Физерса – Эффективная работа с унаследованным кодом. Это одна из тех редких книг, которые учат не тому, как сделать что-то, а тому как думать. Я называю такие книги, книгами ставящими мозги на место. Настоятельно рекомендую её прочитать.
- Последние месяцы я внедрял поддержку скриптов и дизайнера форм в одном из своих проектов.
Личное
- В конце января TDelphi-блог переехал с Vingrad-blogs на blogspot.com.
- Купил домены www.tdelphiblog.com и www.lazyproject.info.
- Сделал несколько переводов материалов по женерикам в Delphi.
- Выпустил финальную версию Lazy Delphi Builder (1.2.8.140). В этой версии реализовано почти всё что я хотел реализовать в бесплатной версии (возможность использовать относительные пути) и даже больше (возможность переопределять переменные окружения).
- Начал наполнять контентом сайт для Lazy Delphi Builder.
- Побывал в Штутгарте.
- Начал учить немецкий язык.
- Сдал экзамен на получение гражданства Латвии.
- Закончил последний курс в университете.
- Основательно подтянул свой английский, – очень помогли переводы. Теперь большинство фильмов смотрю без перевода (но с английскими субтитрами).
- Немного позанимался сальсой и спортом.
- В этом году я попробовал поработать в NetBeans (работал с Ruby On Rails). Мне понравилось.
Цели на следующий год
- В следующем году мне предстоит переводить свои проекты на работе с Delphi 6 на Delphi 2010. Буду стараться обобщать полученный опыт в блоге.
- Хочу завести блог на английском.
- Выйти на shareware-рынок.
Новогодний подарок
Доступен перевод материалов по дженерикам в Delphi 2009 в виде одной PDF-ки. За вёрстку спасибо Андрею Тишкину. Скачать можно здесь, либо на домашней странице Sébastien Doeraene (поиск по фразе «PDF form»).
C Новым Годом!
Вас тоже с Новым 2010 годом. Успехов в труде и личной жизни :)
ОтветитьУдалитьРад, что блог webdelphi отмечен как интересный. Правда второй автор блога куда-то пропал...видимо навсегда. Жаль конечно, было много новых идей именно коллективного плана, но ничего - жизнь продолжается.
DelphiFeeds.ru надо по-тихоньку продвигать, хотя бы вот такими ссылками в постах. Глядишь и сообщество вырастет
С Новым Годом! Удачи в 2010. Огромное спасибо, что пишет столько полезного материала. А также отдельное спасибо за новогодний подарок по дженерикам. ;)
ОтветитьУдалитьВсе, убежал читать! :)
Алексей.
ОтветитьУдалитьС Новым годом и Рождеством!
Успехов Вам и Вашим проектам в Новом Году.
Считаю Ваш блог исключительно полезным и нужным. Так держать!!!
В 2010 хотелось бы увидеть продолжение цикла статей по организации проекта и коллективной разработке. По распределению задач по разработчикам...
Очень интересно как у Вас движется с Redmine?
Великолепная система управления проектами, не правда ли? Планируете ли Вы освещать свои успехи в использовании Redmine? Так сказать "Курс молодого бойца".
Дело в том, что я работаю над системой управления проектами, которая представляет собой сборку на основе Redmine.
Если интересно: http://redmine.net.ua/forum/index.php?topic=99.0
Немного Wiki: http://redmine.net.ua/wiki/doku.php/install/paket_ustanovki_q_project
Еще раз спасибо за Вашу работу и С Новым годом!
Сергей.
Спасибо за добрые слова и пожелания, Сергей.
ОтветитьУдалитьУ нас в скором времени грядёт командный перевод тонн кода с Delphi 6 на Delphi 2010 - попробую запротоколировать впечатления в блоге.
Redmine у потихоньку расширяет своё влияние и начинает всё активнее использоваться в других проектах. Мне очень нравится Redmine, и уже понемногу не хватает некоторых фич.=)
Хммм...
А почему не использовать в качестве основы для сборки Bitnami Stack?
> Хммм...
ОтветитьУдалить> А почему не использовать в качестве основы для сборки Bitnami Stack?
Самый популярный вопрос... ;)
Причин несколько. Я много раз отвечал на него в разных форумах... Если коротко:
1. Размер и состав дистрибутива - мой по-меньше будет...
2. Не требует установки бОООООльшого, отдельного сервера БД - все в локальном файле sqlite3...
Это - основное отличие. Далее мелочи:
3. Установка "в-один-клик". После установки все сразу готово к работе...
4. Ориентирована на "не сисадмина" - конечному пользователю не требуется специальных знаний об конфигурировании Apache-Ruby-Rails-и.т.д.
5. Возможность "Lego-Like" сборки из отдельных кубиков...
Дополнительно можно почитать обсуждения моего проекта в инете (в хронологическом порядке):
http://redmine.net.ua/forum/index.php?topic=68.0
http://redmine.net.ua/forum/index.php?topic=99.0
http://forum.sources.ru/index.php?s=c23b8301f031f1ed77e8188c816b7056&showtopic=289893
http://forum.vingrad.ru/forum/topic-283695/kw-apache-svn-redmine.html
http://forum.ixbt.com/topic.cgi?id=26:40116
А также группы новостей:
http://groups.google.com/group/ror2ru/browse_thread/thread/777eb9fc12964831#
http://groups.google.com/group/ror2ru/browse_thread/thread/8145c7728aadb4e5#
На этих ресурсах мне приходилось отвечать на самые разные вопросы, так что повторяться не буду...
Все было сделано (и уже успешно эксплуатируется на работе) в первую очередь для обеспечения своих потребностей, а если кому пригодится - я только рад буду...
К сожалению, несмотря на создание своей сборки, в практическом использовании Redmine, я не далеко ушел. Еще учиться и учиться разным его полезняшкам...
Любая информация по этой теме - желаема ибо в русском инете ее крайне мало...
Еще раз спасибо за ваш архиполезный блог.
С наилучшими пожеланиями, Сергей