На сайте CodeGear выложены материалы докладов в разбивке по дням конференции. Есть только flash-файлы. Исходников нет, но обычно в презентациях указывается где можно взять исходники.
На третьем и пятом дне (т.е. 28 и 30 ноября) я не был.
Зато был 29 ноября.
С большим удовольствием я послушал оба доклада Джима МакКи (Jim McKeeth): Exceptional Exceptions и Class Helpers: Friend or Foe.
Второй доклад мне лишний раз доказал, что хелперы есть хорошая разминка для ума, не более того. Я пока не решаюсь их широко использовать в работе - плохо документировны и имеют не всегда очевидное поведение (имхо). Для небольших вливаний (добавок) в класс вполне сгодятся. Главное - самому не запуться.
Замечу, что в презентации есть небольшой обзор блогов, которые писали о хелперах. Есть что почитать.
Первый доклад на тему исключений мне подкинул пару идей.
Я иногда вижу на форумах вопросы о том, как уменьшить размер консольного приложения.
Вот такое минимальное приложение у меня занимает 17920 байтprogram Project1;
{$APPTYPE CONSOLE}
begin
end.
Если требуется наследование от Exception, то нужно подключать SysUtils, а это уже 44032 байта.program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
end.
Но ведь можно сделать проще - возбуждать не потомков Exception, а потомков TObject:program Project1;
{$APPTYPE CONSOLE}
type
TMyException = class
end;
procedure Test;
begin
raise TMyException.Create;
end;
begin
try
Test;
except
on E: TMyException do
do something
end;
end.
Такая программа уже весит 19456. Я, конечно, понимаю, что идиотизм экономить 20Кб, но это чем не ответ на вопрос о том, как сделать маленький EXE?
Также в докладе Джима об исключениях меня заинтересовала методика использования функции AcquireExceptionObject для управления временем жизни объекта исключения. К сожалению есть некий баг, относящийся к функции AcquireExceptionObject и парной ей функции ReleaseExceptionObject (если кратко, то в документации все неверно написано). Однако идея выбрасывать в качестве исключений объекты и при этом не давать им уничтожаться имеет право на жизнь.program Project1;
{$APPTYPE CONSOLE}
type
TMyException = class
end;
procedure Test;
begin
raise TMyException.Create;
end;
var
C: TMyException = nil;
begin
try
Test;
except
on E: TMyException do
C := AcquireExceptionObject;
end;
if C <> nil then
begin
здесь можно использовать C, но его нужно
потом явно удалить, т.к. после вызова
функции AcquireExceptionObject нарушен
обычный контроль над временем жизни
исключения.
C.Free;
end;
end.
Замечу, что подобным образом можно выбросить в качестве исключения, например, кнопку на форме, например так:raise Button1;
Только нужно быть готовым к тому, что кнопка пропадет с экрана после такого вызова, т.к. будет удалена :)
Также имхо стоит обратить внимание на доклад Fighting Memory Leaks for Dummies, который сделал Francois Gaillard. Доклад про FastMM. В принципе материал схож с тем, который я приводил ранее. По теме сложно что-то сказать нового, т.к. вся документация по FastMM состоит из поисания в *.inc файле, поставляемом с FastMM.
пятница, 30 ноября 2007 г.
Четвертый день коференции Code
на
22:48
0
коммент.
Ярлыки: delphi
среда, 28 ноября 2007 г.
Старая новая панель инструментов VS старая панель инструментов.
Источник блог Ника Ходжеса.
Ник сказал, что ему вчера на конференции CodeRage заметили о том, что не хватает старой панели иснтрументов. На что Ник ответил:
1. Новая панель в 723 раза удобней :)
2. Нелюбовь к новой панели является следствием незнания ее возможностей.
Сказал, как отрезал :)
Также он привел ссылочку на ролик, демонстрирующий возможности новой панели.
ИМХО интересно, я, например, что-то новое увидел для себя.
на
15:50
0
коммент.
Ярлыки: delphi
Второй день конферении CodeRageII
Вчера был второй день on-line конференции CodeRage II 2007.
Я посмотрел и послушал презентации Марко Кенту и Рея Конопки.
О своих презентациях Марко Кенту говорит в своем блоге. Там же находятся исходники к презентациям.
В презентации Delphi Dynamic Architectures with Packages Марко рассказал о том, как в дельфи с использованием BPL делать плагины (расширения), которые можно подцеплять к приложению без его перекомпиляции, возможно даже к работающему приложению! Также сравнил подход плагинизации с использованием BPL и DLL, есно сделал вывод в пользу первого подхода. В общем ничего нового для меня, т.к. я активно пользуюсь плагинами на основе BPL. Однаком презентация может быть полезна тем, кто еще не прочувствовал всей крутизны рантайм пакетов.
В презентации Delphi 2007 and Vista Марко рассказал есно о Дельфи и Vista. Vista я пока в глаза не видел, поэтому ничего не понял.
Презентации Рея Конопки:
1. Introduction to Generics in Delphi
2. Creating Composite VCL Controls
Первая презентация мне очень понравилась. Вся презентация практически полностью идентична материалам, представленным в блоге Hallvard Vassbotn в статье Highlander2 Beta: Generics in Delphi for .NET. В Delphi 2007 for Win32 джнериков пока нет, обещают в Tiburon'е в 2008 году. Но на меня презентация произвела большое впечатление - представил, какая светлая жизнь начнется после выхода Tiburon'а :)
Вторая презентация в стиле Рея - он же известны и опытный писатель компонентов. Было интересно.
Исходники по докладам Рея у меня есть - прямые ссылки на исходники Рей озвучивал в чате. Но сейчас я их не могу найти. Когда найду, выложу.
Еще от Рея я узнал, что есть второе издание его книги про написание компонентов. Он считает, что она с упехом применима также и для Delphi 2007, а не только для более ранних версий Delphi. Я так понял, что она на русский язык книга переведена не была :(
на
13:28
0
коммент.
Ярлыки: delphi
понедельник, 26 ноября 2007 г.
Конференция CodeRage II
CodeGear устраивает вторую online-коференцию CodeRageII.
Сегодня прошел первый день. Не знаю как кому, а мне интересно - мне практика таких конференций для собственного бизнеса пригодится. Пока, конечно, ничего нового не сказали (ну там unicode будет, generics и усовершенствованная документация). Про любимый россиянами баг в Delphi2007 с вводом русских символов есно ничего не сказали: там русских 2 или 3 человека. При случае спрошу кого-нибудь из CodeGear'а.
Завтра будут выступать Марко Кенту и Рей Конопка. По Москве это +11 часов: т.е. Кенту, начиная в 7:15 АМ по ихнему времени, по Москве начинает в 18:15. Подробное расписание можно найти по приведенной выше ссылке.
Если кто решится присоединиться к конференции, то имейте в виду:
1. Нужно будет поставить ActiveX для вашего IE60 (и вроде только его) от Interwise. На сайте CodeGear написано где брать и как ставить. Делов на 1 минуту.
2. Я при регистрации использовал свой CDN логин. Наверное он обязателен, точно не знаю.
на
23:03
0
коммент.
Ярлыки: delphi
воскресенье, 25 ноября 2007 г.
Несколько новостей
1. Где-то 14 ноября CodeGear'у было ровно год. Офигеть. Вот тут http://blog.marcocantu.com/blog/one_year_codegear.html говорит о сабже. Коротко - CodeGear молодец!
2. Книга Марка Кенту http://www.marcocantu.com/dh2007/. Может переведут когда-нибудь. Будем ждать.
Я вот тут решил пофилосовствовать о Unicode for VCL. Я, признаться, совершенно не могу представить себе - как это и что это!?!?! (и ?! в периоде). С одной стороны - дело нужное. С другой - реально ли это?
Для того, чтобы был Unicode нужно делать нормальные двухбайтовые строки, я не то уродство, что есть сейчас в виде WideString. Верно ведь? Ибо AnsiString и WideString - две большие разницы, и не в 2 раза :) Естественно, что CodeGear решит сделать умольчательным типом для жереника string именно новый тип для unicode-строки.
Но сколько тогда завалится старого кода?! Например, простое преобразование PChar(S), где S типа String что должно давать? Часто такое преобразование делается при пераче параметров для win-api функций. Сколько разработчиков не учтет факт смены формата представления в памяти значений типа string.
В общем так:
1. Если они сделают это таким образом, что миграция не-unicode -> unicode будет простой и понятной, то я ... скажу, что они молодцы!
2. Жду с нетерпением новых тестовых билдов. Я хочу делать софт для буржуинов и не хочу пользовать сторонние компоненты.
на
01:41
3
коммент.