Motto

В тихом саду здравомыслия
Пусть на вас постоянно падают
кокосовые орехи пробужденности.
Чогьям Трунгпа РИНПОЧЕ


Версия для мобильного


вторник, 24 августа 2010 г.

TDelphi-блог в отпуске. Кто хорошо отдыхает - тот лучше работает.

Брюссель, центральная площадь

Чудесное жаркое лето. В июле я был в отпуске. Ездил на неделю в Бельгию – страну пива, шоколада и картошки фри. Побывал в Брюсселе (жил там), в Генте, в Льеже и в Брюге. В Брюсселе не мог отделаться от ощущения, что большая часть белых людей ходят с окаменевшим выражением лица и поджав губы, а когда пытаешься перехватить чей-нибудь взгляд и улыбнуться – отводят глаза. Северная часть Бельгии мне понравилась больше – и люди там приветливее и более эмоционально-открыты. Очень понравился Гент. А больше всего Брюге. Брюге вообще показался сказочным городом в котором в игрушечных домиках живут феи, эльфы и гномы, которые с утра до вечера плетут кружева, делают шоколад, жарят картошку фри и варят пиво. А перемещаются по городу исключительно на велосипедах.


Читать дальше..

вторник, 17 августа 2010 г.

Описание CnPack Wizards часть 13: Шаблоны кода и комментариев

Это одиннадцатая публикация в серии: Эксперты для Delphi: CnWizards. Предыдущая публикация доступна по ссылке: описание CnPack Wizards Часть 12: панель инструментов в редакторе кода. Скачать CnWizards можно на официальном сайте проекта: www.cnpack.org �� на Google Code.

Шаблоны кода и комментариев.

CnPack Wizards включают в себя инструмент для работы с шаблонами кода. Шаблон представляет собой текст, который может содержать макросы (см. картинку ниже). Шаблоны можно вставлять по нажатию горячей клавиши (для этого её придётся назначить), либо через меню шаблонов (см. описание тулбара, выше).

Подобный функционал есть и в gExperts, а в последних версиях Delphi даже в самой IDE. Но так как я всё ещё больше всего времени провожу в Delphi 6, то наличие таких вещей в эксперте для меня важно.


Читать дальше..

среда, 7 июля 2010 г.

Обзор CnWizards часть 12: тулбар в редакторе кода

Это двенадцатый пост в серии: Эксперты для комфортной работы в Delphi: CnWizards. Предыдущая публикация доступна по ссылке: описание CnPack Wizards 11-я часть: редакторы свойств в CnWizards. Скачать бесплатно CnWizards можно на официальном сайте проекта: www.cnpack.org и на Google Code.

После установки CnPack IDE Wizards добавляют в редактор кода новый тулбар:

CnWizards: тулбар в редакторе кода

Половина кнопок на тулбаре содержит ссылки на стандартные команды Delphi, такие как Open, Save, Build, Run, Trace и другие (см. ниже). Я полагаю что это сделано для того, чтобы было удобнее работать с редактором кода в полноэкранном режиме (см. ниже).

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

CnWizards: кнопка включения/выключения редактора кодаВключает/выключает автоматическое появление помощника ввода (Code Input Helper). Горячая клавиша по умолчанию - Shift+F2.


Читать дальше..

вторник, 6 июля 2010 г.

Описание CnPack Wizards часть 11: Редакторы свойств

Это одиннадцатая публикация в серии: Эксперты для Delphi: CnWizards. Предыдущая публикация доступна по ссылке: описание CnPack Wizards Часть 10: проектные расширения Delphi IDE. Скачать CnWizards можно на официальном сайте проекта: www.cnpack.org и на Google Code.

CnPack IDE Wizards включают в себя несколько расширенных редакторов свойств. Любой из редакторов свойств можно отключить в настройках.

Редакторы свойств CnPack IDE Wizards


Редактор булевых свойств

Добавлен checkbox - теперь свойство можно менять и одинарным кликом и двойным.

Boolean property editor with checkbox


Читать дальше..

воскресенье, 4 июля 2010 г.

Итоги весеннего семестра в RTU, по программе Информационные технологии (часть 2).

Day 23 - Exam hall

Image by jackhynes via Flickr

Это продолжение публикации о учёбе в университете. Первая часть (осенний семестр последнего курса) доступна по ссылке: Итоги осеннего семестра в RTU, по программе Информационные технологии.

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

Основы искусственного интеллекта

На втором курсе у меня тоже был предмет с похожим названием. Это был выборный предмет и там мы проходили экспертные системы. Курс "Основ ИИ" был куда серъёзнее.

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

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


Читать дальше..

суббота, 3 июля 2010 г.

Описание CnPack Wizards часть 10: проектные расширения

Это десятая публикация в серии: Эксперты для комфортной работы в системе Borland Delphi: CnPack Wizards. Предыдущая публикация доступна по ссылке: описание CnPack Wizards Часть 9: стиратель комментариев, расширение информации о версии и мастер подписки. Скачать CnWizards можно на официальном сайте проекта: www.cnpack.org и на Google Code.

Проектные расширения

CnWizards: проектные расширения

Здесь я опишу только часть функционала. Остальное вполне понятно и без пояснений.


Запустить вне IDE

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

Горячая клавиша по умолчанию: Shift + F9.


Список модулей

Список модулей (юнитов) в программе. По умолчанию, этот диалог заменяет и стандартный список юнитов, вызываемый по Shift+F12. Основные преимущества перед стандартным:


Читать дальше..

среда, 30 июня 2010 г.

Описание CnPack Wizards часть 9: стиратель комментариев и другие вкусности

Это девятая публикация в серии: Эксперты для комфортной работы в системе Borland Delphi: CnPack Wizards. Предыдущая публикация доступна по ссылке: описание CnPack Wizards Часть 8: резервное копирование настроек Delphi, и встроенный в IDE "explorer". Официальный сайт проекта: www.cnpack.org, но не так давно проект переехал на Google Code.

Настройки расширения информации о версии

CnPack Wizards позволяют включать в информацию о версии проекта время последней компиляции, и увеличивать номер билда при каждой компиляции.

CnWizards: Включить время компиляции в информацию о версии программы

Стиратель комментариев

Я никогда не использовал этого мастера. Полагаю, что он предназначен для очистки исходников от комментариев. =)


Читать дальше..

вторник, 29 июня 2010 г.

Как мы делали chm справку для наших программ. Часть 2: Help Maker и процесс создания

Вчера я описывал виды справок, и критерии по которым мы подбирали программу для создания chm-хэлпа. Это были поддержка латышских и русских букв цена в пределах 100$. Рассмотрев несколько вариантов, мы в конце-концов мы остановились на бесплатной программе HelpMaker.

История HelpMaker-a

Изначально HelpMaker задумывался как проект с открытым исходным кодом, написанный на Delphi. Но из-за огромного числа ошибок, говнокода и отсутствия активности open-source сообщества, исходники были закрыты и проект был полностью переписан на Visual C. Тем не менее, продукт остался бесплатным. Развитием продукта занимается компания VizAcc, но последние версии программы не доступны для широкой публики. Последняя свободно доступная версия - это HelpMaker 7.4.4 и именно её мы и использовали. Скачать эту версию можно с софтопедии (офф. сайт недоступен уже неделю).

HelpMaker: описание

Чем же хорош HelpMaker?
  • Там есть WYSIWYG RichText редактор.
  • Есть возможность строить иерархию топиков.
  • Удобный редактор метаданных (TopicID, Keywords, A-keywords) (см. 2-ю картинку ниже).
  • Удобный редактор статусов топиков (можно помечать страницы как незаконченные, нуждающиеся в доработке и прочими статусами) (см. ниже, 3-ю картинку ).
  • Есть горячие клавиши для выставления предустановленных шрифтов.
  • Есть редактор HTML-шаблона страницы для Веба и Chm (см. 4-ю картинку ниже).
  • Можно указать кодировку для результирующего хэлп-файла (есть поддержка латышских букв и кириллицы).
  • Автоматически генерирует ID топиков и экспортирует их в отдельный файл.
  • Для компиляции chm-справки использует Html Help Workshop. Также, при компиляции создаёт HHW-проект.
  • При каждом сохранении, создаётся резервная копия проекта.
Минусы HelpMaker-a:

Читать дальше..

понедельник, 28 июня 2010 г.

Как мы делали chm справку для наших программ. Часть 1: теория

Заметил у Влада в блоге пост посвящённый созданию chm-справки с помощью Html Help Workshop и решил рассказать о своём опыте. Тем более что, в начале этого года я попробовал кучу редакторов для создания справки к программам и нашёл подходящий далеко не сразу. Сначала я хотел написать мини-обзор программ для создания chm справки, но при написании поста вдруг понял, что даже забыл какие из программ я тестировал, поэтому просто опишу историю написания хэлпа.

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

  • WinHelp (старая добрая справка с расширением .hlp)
  • Html Help 1.x (.chm - Compiled Html Help)
  • Html Help 2.x (освновное расширение файла - .hxs) - формат справки использующийся в Visual Studio и последних версиях Delphi. Да, это та самая справка котороая так раздражает большинство пользователей, привыкших к быстрой и точной справке в старых версиях Delphi.
  • MS Help Viewer 1.0 - справочный движок для Visual Studio 2010. Выступает как замена формату MS Html Help 2.x. Самый новый.
  • Windows Vista Assistance Platform Help - вообще, этот формат мы даже не рассматривали. Просто он попался мне на глаза на сайте Helpware при написании поста и я решил его упомянуть.
  • Html, PDF и другие. В принципе, при нажатии F1 можно делать всё что угодно, в том числе открывать любые документы и вызывать любые программы. Так что, теоретически можно использовать и Html и Pdf и даже .doc-файлы. Другое дело, что организация поиска, просмотр содержимого и контроль за окном справки остаются на совести автора программы. Эти варианты мы всерьёз не рассматривали.

Читать дальше..

среда, 23 июня 2010 г.

Описание CnPack Wizards часть 8: импорт/экспорт настроек Delphi и проводник

Это восьмая публикация в серии: Эксперты для комфортной работы в Delphi: CnWizards. Предыдущая публикация доступна по ссылке: описание CnPack Delphi Wizards Часть 7: расширения окон Delphi IDE. Официальный сайт проекта: www.cnpack.org, но не так давно проект переехал на Google Code.

Сохранение/восстановление настроек IDE

В CnPack Wizards есть мастер, позволяющий сделать резервную копию всех настроек IDE, или восстановить настройки из такой копии. Данный мастер доступен как из меню cnPack в Delphi, так и в виде отдельной программы из Start Menu.

CnWizards: Импорт/экспорт настроек Borland Delphi. 1й экран.


Читать дальше..

воскресенье, 13 июня 2010 г.

Описание CnPack Wizards часть 7: расширение окон Borland Delphi IDE

Это седьмая публикация в серии: Эксперты для комфортной работы в borland Delphi: CnWizards. Официальный сайт проекта: www.cnpack.org. не так давно проект переехал на Google Code. Предыдущая публикация доступна по ссылке: описание CnPack Wizards Часть 6: мастер префиксов и корректор свойств.

Расширение главного окна IDE

Диалог настройки этого мастера выглядит следующим образом. Из картинки понятно, для чего предназначен этот мастер, ниже я лишь покажу как это выглядит в Borland Delphi 7.

CnWizards: Настройки расширений главного окна  IDE Borland Delphi

Многострочная палитра компонентов, если я не ошибаюсь работает только в старых версиях Borland Delphi. Но главное, что добавляют CnWizards в IDE - это удобнейший поиск компонентов. В углу палитры компонентов появляется маленькая стрелочка, при нажатии на которую открывается диалог в котором можно найти компонент или закладку по частичному совпадению имени. Есть возможность искать как по совпадению первых символов, так и по совпадению текста в середине. Взгляните на картинку ниже. Это одна из тех вещей, которых мне очень не хватает при работе на чужом компьютере. В последних версиях Delphi новая палитра компонентов тоже позволяет легко найти нужный компонент. Но в Borland Delphi 6-7 поиск CnWizards рулит непревзойдённо.


Читать дальше..

суббота, 12 июня 2010 г.

Описание CnPack Wizards часть 6: мастер префиксов и корректор свойств

Это шестая публикация в серии: Эксперты для комфортной работы в Delphi: CnWizards. Официальный сайт проекта: www.cnpack.org но не так давно проект переехал на Google Code. Предыдущая публикация доступна по ссылке: описание CnPack Wizards: Часть 5: дизайнер сообщений, MSDN-справка, групповая замена в файлах и статистика по исходникам.

Эти мастера вызываются из главного меню CnPack, а также тесно интегрируются с другими мастерами CnWizards..

Мастер префиксов

Мастер префиксов позволяет унифицировать префиксы для всех компонентов на формах.

CnWizards: Префикс-мастер


Читать дальше..

пятница, 11 июня 2010 г.

Описание CnWizards: Часть 5 - не такие интересные возможности CnWizards

Это пятая публикация в серии: Эксперты для комфортной работы в Delphi: CnWizards. Предыдущая публикация доступна по ссылке: Подробное описание CnPack Wizards: Часть 4: редактор кода - Code Input Helper.

Эти мастеры вызываются из главного меню CnPack.

Дизайнер сообщений

Это аналог визарда существующего также и в gExperts. Я пользуюсь им если забываю названия констант.

CnPack Wizards: диалог создания MessageBox-ов и MessageDlg-ов

Справка MSDN

К списку панелей Delphi, CnWizards добавляет панель для быстрого поиска в MSDN. Умеет работать как с локальной версией MSDN (если такая ещё существует - не проверял), так и с онлайн версией (открывается в броузере).

CnWizards: панель для быстрого поиска в MSDN


Читать дальше..

четверг, 10 июня 2010 г.

Обзор CnWizards: Часть 4 - редактор кода 3: Code Input Helper

Это четвёртая публикация в серии: Эксперты для комфортной работы в Delphi: CnWizards. Предыдущая публикация доступна по ссылке: Обзор CnWizards: Часть 3 - редактор кода 2. В ней рассматривались: работа с табами, история переходов по файлам, автоотступы, автодополнение и другие штуки.

Помощник ввода

Code Input Helper - удобная замена для стандартного Code Insight. Работает как автодополнялка для текста, и при этом ищет совпадающий текст не только в начале строки, но и в середине. Умеет появляться как автоматически при вводе определённого числа символов (по умолчанию двух), так и вручную (по умолчанию - Alt+Стрелка вниз).

CnPack Wizards: Code Input Helper


Читать дальше..

среда, 9 июня 2010 г.

Среда обитания TDelphi-блоггера. Фотографии.

Это будет абсолютно лытдыбрный пост, не имеющий никакого отношения к программированию.

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

Я часто засматривался на фотографии рабочих мест западных блоггеров и думал, что-то вроде вот если б у меня было такое чудесное рабочее место, я бы работал в 500 раз продуктивнее меньше отвлекался и работал более старательно. Я давно подумывал о том, чтобы снять квартиру, в которой бы всё было красиво и удобно, но глядя на арендную плату, решал, что не готов платить столько. О покупке я пока даже и не думаю - не хочу брать кредит на срок больше 5 лет, а брать на меньший доходы пока не позволяют.

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

За фотками добро пожаловать под кат.


Читать дальше..

понедельник, 7 июня 2010 г.

Обзор CnWizards: Часть 3 - редактор кода 2.

Это третья публикация в серии: Эксперты для комфортной работы в Delphi: CnWizards. Предыдущая публикация доступна по ссылке: CnWizards: Часть 2 - редактор кода. В ней рассказывалось о подсветке л��гических блоков, операции с выделенным текстом и работа с букмарками.

Работа с ТАБами редактора.

СnWizards позволяет расширить работу с ТАБами редактора кода. Например, в заголовок каждого изменённого файла добавляется символ звёздочки (*). Появляется возможность закрывать закладки (табы) двойным щелчком мышью.

В всплывающее меню появляющееся при правом клике на ТАБе редактора, добавляются новые пункты:

  • закрыть все вкладки;
  • скопировать имя файла;
  • открыть файл в проводнике Windows;
  • контекстное меню проводника (его можно открыть кликнув по ТАБу правой кнопкой с зажатой клавишей Shift или Ctrl). Я часто использую эту фишку для вызова команд TortoiseSVN.

CnWizards: Работа с Subversion (Tortoise SVN) из Delphi


Читать дальше..

Обзор CnWizards: Часть 2 - редактор кода.

Это вторая публикация в серии: Эксперты для комфортной работы в Delphi: CnWizards. Предыдущая публикация доступна по ссылке: CnWizards: дизайнер форм. В этой части я начну рассказ о том что сделали китайские волшебники с редактором кода Delphi.

Подсветка кода.

CnWizards: Подсветка блоков кода и скобочек в редакторе кода 

CnWizards умеют подсвечивать текущую пару скобок. Это позволяет сразу понять в каком из вложенных подвыражений сейчас находится курсор. Также CnPack Wizards соединяют соответствующие begin-ы и end-ы цветными линиями. При хорошо отформатированном коде, это позволяет легче воспринимать вложенные блоки begin-end, try-except-finally, if-else. Также, при установке курсора на begin или end, будет подсвечено соответствующее парное слово.


Читать дальше..

суббота, 29 мая 2010 г.

Эксперты для комфортной работы в Delphi: CnWizards, часть 1 - улучшение дизайнера форм.

image

Эксперт (здесь) – это design-time пэкэдж или dll-ка, расширяющая стандартные возможности Delphi.

CnPack Wizards - набор инструментов для Delphi, написанный группой разработчиков из Китая, на данный момент является наиболее мощным и удобным бесплатным инструментом для Delphi. Функционал этого набора просто огромен и способен фантастически упростить работу программиста. Официальный сайт проекта: www.cnpack.org но не так давно проект переехал на Google Code.

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

В этом посте я расскажу о том, как cnWizards расширяют дизайнер форм Delphi.

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

Дизайнер формы с расширениями cnWizards в Delphi 6

Эти кнопочки появляются при активном дизайнере формы. Они могут выглядеть по-разному, в зависимости от версии Delphi и настроек дизайнера.


Читать дальше..

Эксперты для комфортной работы в Delphi: gExperts

Эксперт (здесь) – это design-time пэкэдж или dll-ка, расширяющая стандартные возможности Delphi.

Меню gExperts - эксперта для Delphi IDE

gExperts – это наверное наиболее старый и популярный набор экспертов с открытым исходным кодом. Работают с Delphi 2 по Delphi 2010. Домашняя страничка эксперта (www.gexperts.org) до сих пор является наиболее полным источником информации по работе с Open Tools Api и написании собственных экспертов. (в момент написания поста, сервер не отвечает, но я надеюсь что это временное явление).

В последние годы этот набор экспертов почти не обновляется. И некоторые его фичи уже реализованы и в другом крупном наборе экспертов – CnPack Wizards (о нём речь пойдёт в следующем посте). Но я до сих пор с удовольствием использую в работе оба набора.

Причина по которой я не хочу отказываться от gExperts – это несколько небольших, но очень удобных фич:

Grep Search

Grep Search - полнотекстовый поиск по файлам проекта/папкам (Alt+Shift+S). Без него как без рук. Умеет искать в .pas и .dfm файлах, искать только в текущем файле, только в файлах текущего проекта, во всех файлах группы проектов, а также в указанных папках. Поиск происходит довольно быстро. Результаты отображаются в виде удобного списка.


Читать дальше..

пятница, 28 мая 2010 г.

Чего не хватает в Delphi

Публикация для конкурса проводимого агрегатором Delphi новостей DelphiFeeds.ru.

Интеграция с SVN

Я говорю не просто о добавлении комманд Update/Commit в какие либо меню. Всё это возможно и в варианте интеграции SVN в Delphi для бедных. Я говорю о широкой визуальной поддержке. Чтобы на Tab-ах редактора и в дереве проекта отображался значок как в TortoiseSVN.

Чтобы изменённые строки в исходниках подсвечивались другим цветом.

Мне понравилось, как сделана интеграция SVN в NetBeans.

Интеграция SVN в IDE NetBeans

SVN команды доступны в отдельном субменю при правом клике как на файле в дереве так по заголовку таба в редакторе.


Читать дальше..

четверг, 27 мая 2010 г.

Delphi 2010: Open Tools API интерфейсы для интеграции системы контроля версий в IDE.

Embarcadero уже долгое время обещает интегрировать поддержку систем контроля версий в Delphi. И эта функция довольно востребована. Официально даже было объявлено, что эта поддержка доступна уже в Delphi 2010. Давайте посмотрим, что приготовила для нас Embarcadero.

Для работы с VCS (Version Control System - системами контроля версий) в файле ToolsApi.pas добавлены 3 интерфейса:

  1. IOTAVersionControlNotifier - интерфейс отвечающий непосредственно за реализацию связи с VCS.
  2. IOTANotifier - базовый интерфейс для уведомлений. Содержит методы позволяющие получать уведомления при изменении файла, его сохранении и закрытии редактора.
  3. IOTAVersionControlServices - сервисный интерфейс, позволяющий подключить и отключить свою реализацию VCS.

Читать дальше..

среда, 26 мая 2010 г.

Одной строкой: о мод��рации комментариев и рекламе в блоге

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

Favicon

Сегодня наконец настроил отображение favicon-ки в Google Chrome и Firefox.

О рекламе: итоги за полгода

В январе этого года, я начал попытки монетизации этого блога. Пришло время подвести кое-какие итоги.


Читать дальше..

вторник, 25 мая 2010 г.

Заметки о процессе ведения проектов в Delphi. Мой опыт.

Это старый пост из архива, который почему-то не был опубликован. Он немного устарел, и описывает то как я видел процесс разработки 1,5 года назад. Если интересно, то позже я напишу о том, как я вижу этот процесс сейчас.

Как-то так получилось, что в основном, мне приходилось заниматься сопровождать и развивать чужие проекты. А характерным признаком всех моих мест работ было одно – бардак. На всех работах, одним проектом занимался только один программист. У проекта обычно есть руководитель, который формулирует задания. Руководитель кода не знает, и программировать не умеет. В проекте могут участвовать люди, занимающиеся поддержкой и развитием базы данных, тестированием продукта, общением с клиентами и установкой новых версий. Практически все проекты, с которыми я работал, относились к бухгалтерским программам, и напрямую работали с базой данных(Firebird). Обычно в фирме таких проектов было несколько, но общего кода, не считая сторонних компонентов, у них почти не было. Так что у меня нет опыта работы в команде. И практически нет опыта следования процессу разработки. Только на одной из моих работ, для программистов была написана инструкция о том, как правильно работать. Там были как разумные вещи, так и не очень(in my humble opinion). Но, полностью инструкции не следовал ни один из программистов. Поэтому большинство моих рассуждений – это отчаянная попытка придумать велосипед навести порядок и превратить бардак в процесс так, чтобы это не сильно напрягало ни меня, ни других программистов и позволило навести и сохранить порядок в проекте.


Процесс выглядит так:

Читать дальше..

суббота, 22 мая 2010 г.

Текучка 12: Велосипед для езды по минному полю. Или почему не стоит вешать обработчики Application.On...

Это история о том, как один программист, начал изобретать групповой делегат (multicast delegate) для обработки события Application.OnMessage, не зная о том, что подобный класс включён в стандартную поставку Delphi.

Одному программисту понадобилось сделать так, чтобы одна из форм обрабатывала событие Application.OnMessage. Программист не раз встречал подобный код у себя в библиотеках. Обычно это делалось так:

  • в секции юнита initialization, запоминался старый обработчик события
  • затем вешался свой обработчик события, который после выполнения своих операций вызывал запомненный старый обработчик
  • а восстанавливалась цепочка, как правило, в секции finalization

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


Читать дальше..

среда, 28 апреля 2010 г.

Текучка 11: Поиск AV в полевых условиях и найденная в результате цепочка ужасного кода.

Недавно был случай: у клиента при запуске программы возник загадочный Access Violation, а проблема оказалась в статически прилинкованной Dll-ке. Но начав исследовать эту проблему, выявился большой комок ужасного кода.

Звонит коллега: я у клиента, поставил обновление, и последний билд не запускается на 3х компах из 10. При старте программы вылетает сообщение об ошибке по адресу 0x0000L0L0. А очень старый билд запускается без проблем. Подключись пожалуйста удалённо, говорит, и посмотри в чём может быть дело.


Читать дальше..

воскресенье, 7 марта 2010 г.

Bug Shooting: скриншоты с комментариями? запросто!

Многие по старинке делают снимки экрана PrintScreen-ом, а потом обрезают лишнее в графическом редакторе. Это отличный способ, который работает на всех компьютерах. Это работает даже если необходимо выделить цветом что-то на картинке или добавить подпись, нарисовать стрелочки. Но удобно ли это? Попробуйте добавить несколько стрелочек, а потом растянуть одну из них, или перенести добавленный текст с одного места на другое. А когда нужно сделать несколько снимков?

Можно конечно купить SnagIt и наслаждаться работой с мощнейшей программой для создания снимков экрана. Всего 49$. Но если скриншоты вы делаете раз в полгода, то покупать софт для таких редких случаев нет смысла. Что ж, есть и бесплатные инструменты.

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


Читать дальше..

суббота, 6 марта 2010 г.

Delphi 2011: Fulcrum. Слухи и фантазии.

Я уже публиковал крупнейший в рунете обзор нововведений в Delphi 2010, теперь пришло время взяться за Delphi 2011. =)

Update: пост изменён 20-го мая, так как предыдущий вариант содержал закрытую информацию Embarcadero. Впрочем, почти вся информация сохранилась и теперь доступна публично. Так как, к этому времени обновился roadmap, я переписал пост, основываясь на официальной официальной дорожной карте Delphi.

Что же нам обещают в "Fulcrum"

  • Кроссплатформенность, использующую технологию cross-compiler для Windows и Mac OS.
    • RAD Studio будет запускаться под Windows.
    • Особое внимание будет уделено возможности создания клиентских программ с GUI, умеющих работать с dbExpress и DataSnap
  • Удалённая отладка и деплоймент приложений для Mac OS
  • Кроссплатформенный аналог VCL
  • Полное решение/интерфейс для управления исходным кодом
  • Автоматическая генерация юнит-тестов
  • Поддержка гибкого моделирования с генерированием диаграмм последовательности (англ: sequence diagram)
  • создание REST серверов
  • Поддержка облачных вычислений: интеграция с Microsoft Azure.

А вот список того, что запланировано на последующие релизы:

  • 64-битный компилятор - 1я половина 2011 года
  • Компиляция для Linux-a - следующая версия Delphi "Wheelhouse"
  • серверная часть Datasnap для Linux и MacOS - в "Wheelhouse"

Читать дальше..

среда, 3 марта 2010 г.

Обзор функционала JWSCL (JEDI Windows Security Library)

Это перевод поста Кристиана Виммера "JWSCL Features Overview", опубликованного в блоге JWSCL.

У меня было свободное время, которое я потратил на то, чтобы собрать вместе все функции содержащиеся в JWSCL. Есть еще несколько фич, которые реализуются другими инструментальными классами и функциями, которые я оставил за кадром для хорошего обзора. Полный обзор всех классов, методов и многое другое можно найти в документации по адресу http://jwscldoc.delphi-jedi.net.

Вот эти фичи (На странице документации Вы можете искать по именам классов):


Читать дальше..

воскресенье, 28 февраля 2010 г.

RxLib 2.7.7.5 доступна на sf.net. И пара слов о сборках для D2009.

RxLib 2.7.7.5 доступна для скачивания на SourceForge.net. Эта версия включает около 20 исправлений, сделанных psa1974. Также были отформатированы исходники. Полный список исправлений доступен в файле ReadMe_rus_psa1974.txt.

Пара слов о существующих сборках.

На данный мне известны 3 версии RxLib с поддержкой юникода:


Читать дальше..

суббота, 27 февраля 2010 г.

А Вы хорошо знаете календарь в Windows?

Меня по работе несколько раз просили заменить стандартный TDateTimePicker на RxLib-овский, потому в стандартном якобы неудобно менять год. Как оказалось, просившие не знали об одном свойстве стандартного календаря.

Знаете ли вы, что если кликнуть по заголовку календаря, там где год и месяц, то календарь позволит выбрать месяц. А если кликнуть ещё раз, то можно будет выбрать год из текущего десятилетия. А если ещё раз, то можно будет выбрать десятилетие, при этом стрелки сверху будут менять столетия. Проверял в Windows XP и Vista.

То же самое будет если нажать Ctrl + стрелка вверх/вниз.

Календарь - выбор числа

Календарь - выбор месяца

Календарь - выбор года Календарь - выбор столетия

А ещё, TDateTimePicker не позволяет выбрать дату до 14 сентября 1752 года. А вот компонент TjvDateEdit из бесплатной библиотеки JVCL такого ограничения не имеет.


Читать дальше..

пятница, 19 февраля 2010 г.

Выложил программку, использовавшуюся для сравнения Rx и JVCL компонентов

Выложил программку, использовавшуюся для сравнения свойств и методов Rx и JVCL компонентов. Если кто-то захочет продолжить эксперимент, или просто посмотреть, что и как можно сделать с помощью RTTI в Delphi 2010.

Примечание: скомпилируется только в Delphi 2010 и только, если у вас установлены RxLib и JVCL.

Программка состоит из 3-х юнитов:

  • uRxJvComponents.pas - содержит список классов Rx и JVCL компонентов. Составление этого списка было самой неприятной частью работы и заняло больше всего времени.
  • uCompareClasses.pas - класс отвечающий за сравнение Rx и JVCL компонентов.
  • RxJvCompareMainFormU.pas - главная форма. Умеет запускать сравнение, и отображать результат выполнения в текстовом формате и в html.

Скачать: Rx and Jvcl Compare util.zip с сайта LazyProject.info


Читать дальше..

четверг, 18 февраля 2010 г.

Переход с RxLib на JVCL в деталях. Список пропавших свойств и методов Rx-компонентов.

Вчера в комментарии прозвучала мысль, что предыдущий пост об отличиях компонентов RxLib от JVCL даёт только поверхностный взгляд на изменения в компонентах. Ну что же, вот полный список всех public и published свойств и методов, которые пропали в JVCL-контролах. Для каждого компонента.

Ante Scriptum: Мне положительно нравится новое RTTI в Delphi 2010. =)

Примечание: некоторые свойства и методы, на самом деле остались и в JVCL-версии, но были переименованы, либо у них изменились названия типов в параметра (я сравнивал методы по полным названиям). Однако, программка делающая сравнение с помощью RTTI, вывела в список и их.


Читать дальше..

вторник, 16 февраля 2010 г.

Переход с RxLib на Jvcl. Какие изменения?

Это материал для тех, кто ещё использует библиотеку RxLib и рассматривает возможность перехода на юникод. В 2002-году библиотека RxLib была официально включена в состав JVCL. В JVCL есть утилита для быстрой замены всех Rx компонентов, функций и юнитов на JVCL-версии. См. пост Jvcl Dev Tools: JvclConvert.

Почему стоит перейти на JVCL:

  1. В отличие от RxLib, JVCL развивается. Ошибки исправляются. Регулярно выходят версии с поддержкой новых версий Delphi.
  2. JVCL контролы поддерживают новые версии Windows и Windows-стили.

В этом посте перечислены все Rx компоненты. Для каждого указан соответствующий Jvcl компонент, package, и краткий список отличий.


Читать дальше..

среда, 10 февраля 2010 г.

JVCL dev tools

JVCL содержит несколько приятных утилит, способных упростить разработку библиотек компонентов. Эти утилиты находятся в папке JVCL\devtools. Большая часть из них работает из командной строки. Большинство утилит описаны в файле devtools.txt. Этот пост является частичным переводом того файла с комментариями.

Наиболее интересным является JVCLConvert, позволяющий легко перейти с использования RxLib на JVCL. Также, разработчику библиотек может быть интересен PackagesGenerator позволяющий создавать по шаблону файлы проектов и групп проектов для разных версий Delphi (PackagesGenerator не описан в devtools.txt и я с ним тоже не разбирался).

Чтобы скомпилировать утилиты нужно запустить CompileDevTools.bat. Однако, если у вас на компьютере установлено несколько версий Delphi, то лучше скомпилировать их вручную в IDE, открыв группу проектов devtools.bpg. При использовании DFMCleaner я столкнулся с ситуацией, когда преобразованная форма отказалась читаться в Delphi6. Я не исследовал причину, но подозреваю что это случилось из-за того, что DFMCleaner был скомпилирован компилятором от Delphi 2010. После перекомпиляции вручную в Delphi 6, всё заработало должным образом.


Читать дальше..

воскресенье, 7 февраля 2010 г.

RxLib для Delphi 6-2010 доступна для скачивания

Доступна для скачивания библиотека RxLib (2.7.7.4) с поддержкой Delphi 2009 и 2010.

Эта версия основана на последней ревизии в репозитории проекта на sf.net. Плюс к ней были применены изменения, которые сделал psa_1974 для поддержки юникода. Те, кто уже использует версию от psa_1974, могут не обновляться - там то же самое.

В данный момент все компоненты библиотеки RxLib включены в JVCL. А развитие RxLib фактически заморожено. В JVCL даже есть удобный инструмент для заме��ы Rx-компонентов, функций и юнитов на JVCL-аналоги. И даже лучше переходить на JVCL-версию, так как она имеет поддержку тем Windows, плюс некоторые компоненты были существенно дополнены.

Скачать можно на официальной странице RxLib в SourceForge:

http://sourceforge.net/projects/rxlib/files/

п.с. В скором времени я буду переводить несколько проектов с RxLib на JVCL и напишу пост о переходе. А также о разнице между Rx и JVCL версиями.


Читать дальше..

понедельник, 1 февраля 2010 г.

Описание JVCL-контролов: закладка Jv Edits

image   JVCL – бесплатная библиотека с открытым исходным кодом, которую можно использовать в ПО с закрытым исходным кодом по лицензии MPL1.1, так и в свободном ПО.

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

Также, помните о том, что для большинства компонент доступны программы-примеры. Они находятся в папке JVCL\Examples.

Из всех контролов это закладки, мне были интересны только TjvFilenaneEdit, TjvDirectoryEdit, TjvRichEdit и TjvHLEditor (подсветка синтаксиса в Delphi). Тем, кто использует неюникодную версию Delphi может быть интересен TjvHLWideEditor (редактор с подсветкой синтаксиса, поддерживающий юникод).


Читать дальше..

суббота, 30 января 2010 г.

Delphi outsourcing. Предлагаю свои услуги по переводу программ с BDE на FibPlus.

image 

Перевод программ с BDE на FibPlus.

Предлагаю свои услуги по быстрому и качественному переводу программ с BDE на FibPlus. По сути перевод сводится к замене одних компонентов на другие, и замене BDE-методов на соответствующие методы Fib-компонентов. У меня есть опыт перевода двух больших проектов (больше сотни форм, ~400 000 строк кода) и инструменты для автоматизации. Я готов сделать эту работу быстро и качественно.


Читать дальше..

вторник, 26 января 2010 г.

Сегодня: Одной строкой

 

Страницы в blogspot

Команда Blogspot-а объявила о появлении в blogger-е поддержки страниц (pages). Список страницы могут отображаться как табы и в сайдбаре. Для того, чтобы протестировать функционал необходимо войти в draft-версию блогспота.

Я сделал себе страницу About. Там можно найти описание всех тэгов, ответ на вопрос “разве простое спасибо – это хороший комментарий?”, а также контактные данные и запрет на копирование информации.

Обновлена голосовалка о покупке софта

Вчера добавил голосование по теме покупки софта и забыл включить самый наверное важный пункт “всегда покупаю”. :D

К сожалению, blogspot не даёт возможности добавлять пункты, если кто-то уже проголосовал, поэтому я пересоздал голосование заново.

А вы покупаете софт? (запасся попкорном)

Одной строкой

Сегодня случайно скачал FibPlus 6.9.9 с сайта devrace в версии для старых Дельфи в исходниках. Юникодную версию также случайно скачать так и не получилось. Оно в общем-то наверное и к лучшему, для перехода на D2010 придётся поддержать разработчика.


Читать дальше..

понедельник, 25 января 2010 г.

Узкопрофильный блог: окупаемость - вложения < 0 ?

Это будет необычный пост. Блогун - монетизируем блоги (=

Предыстория

Я завёл этот блог чтобы фиксировать то чем я занимался на работе, чтобы потом указывать ссылку на блог в CV, да и самому было проще вспомнить что я делал. Когда число посетителей в день достигло сотни, я повесил текстовые баннеры Adsense. Чтобы привлечь читателей, я стал писать обзоры компонентов JVCL. За пару месяцев там набежало двадцать с чем-то долларов. Но вскоре день случилось нечто странное: около 30 кликов при 5 посещениях. Я до сих пор гадаю, как такое могло произойти. Но Google гадать не стал и через день уведомил меня, что мой аккаунт в Adsense заблокирован, а деньги возвращены рекламодателем. Разблокировать аккаунт мне так и не удалось, и с тех пор путь в Google Adsense для меня закрыт. Именно после этого случая я перенёс блог с vingrad.blogs на blogspot и забросил идею заработать хоть что-то.

Катализатор

Читать дальше..

суббота, 23 января 2010 г.

Льготные апгрейды для владельцев старых версий Delphi продлены на Январь.

Подводя итоги 2009 года, я упоминал, что в прошлом году Embarcadero изменило политику обновлений Delphi. Раньше купить новую версию Delphi по цене апгрейда (почти в 2 раза меньше стоимости новой лицензии) мог владелец любой версии Delphi/BDS. С нового года, покупка по цене апгрейда стала доступна только владельцам последних 3 версий Delphi/BDS – 2006-й, 2007-й и 2009-й.

Рабочие проекты были начаты на Delphi 3, потом переведены на Delphi 6. И до сих пор ведутся на Delphi 6. Переход на более свежую версию Unicode как-бы запланирован, но постоянно откладывался. После того, как Embarcadero объявила о изменении политики апгрейдов, мы наконец купили Delphi 2010. Мы успели заплатить в самый последний момент (регистрационные ключи пришли к нам уже в этом году).

Однако, как оказалось, можно было и не спешить. Embarcadero продлили срок льготных апгрейдов и на январь. Так что, если вы до сих пор работаете на Delphi 5, 6, 7 и планируете в ближайшее время переходить на Юникод, я настоятельно советую вам поспешить с покупкой. До конца января ещё есть возможность купить D2010 по цене обновления, которая почти в 2 раза меньше. С февраля, обновления по льготным ценам будут доступны только владельцам Delphi 2006, 2007 и 2009.

Сравните цены на примеры Delphi 2010 Professional:

  • Цена новой лицензии: 899.00EUR
  • Цена апгрейда: 399.00 EUR

Осталось всего 8 дней.


Читать дальше..

воскресенье, 3 января 2010 г.

Самые интересные публикации 2009 года

В этом году в русскоязычном Delphi-сообществе было опубликовано огромное количество материалов. Можно было запросто пропустить что-то интересное. Я постарался собрать в одной публикации ссылки на наиболее интересные публикации 2009 года. Все публикации имеют прямое отношение к Delphi. Получилось довольно много. Большое спасибо любезным авторам!

 


Читать дальше..

Постоянные читатели