понедельник, 18 апреля 2011 г.

Побывал на AgileBaseCamp

Или я потоки себе неудачно подобрал, или знать стал больше, но в этом году основной смысл мероприятия, для меня, оказался в общении.Ну и еще в 50% скидке на AgileEE, полученной в лотерее анкет :-D


Очень приятно было видеть людей, с которыми знаком только по подобным мероприятиям :)

Презентации со всех потоков:
http://www.slideshare.net/event/agile-base-camp-kiev/slideshows

среда, 16 марта 2011 г.

Предварительные данные по Firebird 3

Основные цели
- честная поддержка многопоточной мультипроцессорности с разделяемым кешем
- рефакторинг архитектуры для последующих версий

Гарантированно будет масштабируемый кеш страниц с межпоточными и межпроцессными блокировками

Поддержка разных версий ODS - в плагинах. А процесс лиснера уже будет подгружать нужную для базы реализацию движка.

Изменения в одс - флаг наличия мусора на странице, что ускорит его сборку.

Более подробный формат вывода плана выполнения запроса.
Стоимостной оптимизатор - гистограмма распределения данных, возможность автоматического сбора статистики, подробная информация по таблицам и индексам (кол-во записей страниц и т.п.)

SQL
  • Внешние процедуры функции и триггеры
  • PSQL функции
  • Пакеты аля Оракл
  • DDL триггеры
  • Оконные(аналитические) функции
  • Двунаправленные курсоры в PSQL
  • Парметризированные исключения
Безопасность
  • Аутентификация во внешних плагинах
  • Шифрование траффика
  • Юзеры в базе
  • Шифрование на уровне страниц
  • Группы пользователей
  • Права на DDL
Публичная альфа FB3 - в третьем квартале 2011 года

четверг, 24 февраля 2011 г.

Ограничение на количество генераторов в Firebird

24.02.2011 12:30, Vadim Mescheryakov пишет:
>
> Все работает норм. Конечно новые генераторы не создаются с той же частотой
> что и документы вводятся,
> Но по каждому виду дока, по каждому субъекту хозяйствования, раз в месяц
> создаются (нумерация в пределах месяца).
> Работает.
 
После создания 32К генераторов система может встать, там внутренний ID -
SMALLINT. И бекап-рестор не поможет, IIRC.
 
--
Дмитрий Еманов

пятница, 18 февраля 2011 г.

Файловый кеш Win64 и Firebird

На одном из наших серверов, после перехода на Win 2008 R2 64, стала забиваться память, на 100%, файловым кешем. Молча и стремительно. Топик обсуждения нашей ситуации.

Решилась проблема  помещением в автозапуск арийской утилитки
http://www.uwe-sieber.de/ntcacheset_e.html, которая просто дергает системную фукнцию, которая задает граничный размер кеша.

Но проблема это была не только наша, проскочило вот вчера в новостях (Firebird slow? Well, maybe it is Windows fault.) решение от самой MS http://support.microsoft.com/kb/976618/en-us

Понять логику того, почему это ограничение не устанавливается самой OS, пока не получилось.

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

От чего зависит скорость сетевой карты?

Выходит что чаще всего - от драйверов. И ведь можно на голову стать, пытаясь выяснять в чем проблема, при настройке системы...

http://blog.not-a-kernel-guy.com/2011/02/13/990
...
Пропускная способность выросла до 17 MByte/sec при полной загрузке процессора.
...
Приходящие пакеты отдавались NDIS-у не в том порядке, в каком они были приняты. С точки зрения TCP/IP это выглядело как потери пакетов. Драйвер протокола постоянно запрашивал повторную передачу «потерянных» пакетов, генерируя больший, чем нужно, траффик и сужая ширину TCP окна до минимума. Стоило поменять порядок пакетов в списке (три строчки в коде), скорость одного соединения выросла свыше 30 MByte/sec.

воскресенье, 13 февраля 2011 г.

У Delphi будет новый VCL?

Встретилась в блоге Ника Ходжеса интересная новость - разработчик http://www.ksdev.com/ вместе со своими наработками (VGScene, DXScene, or ImageFX) переходит в Embarcadero.

Похоже, после стольких лет, у Delphi наконец появится какой-то вариант векторного UI фреймворка.

пятница, 21 января 2011 г.

Как правильно заблокировать окно от перерисовки

Иногда это может понадобиться, если что-то активно добавляется, открывается и т.п.
Типичный способ, рекомендуемый первым, это вызов LockWindowUpdate. Что есть в корне неверно - в Майкрософт не очень удобно выбрали название функции.
http://www.transl-gunsmoker.ru/2010/12/lockwindowupdate_29.html
http://msdn.microsoft.com/en-us/library/dd145034%28v=vs.85%29.aspx

Правильный пример:
procedure SetWindowLock(AHandle: THandle);
begin
  SendMessage(AHandle, WM_SETREDRAW, 0, 0);
end;

procedure EndWindowLock(AHandle: THandle);
begin
  SendMessage(AHandle, WM_SETREDRAW, 1, 0);
  RedrawWindow(AHandle, nil, 0, RDW_ERASE or RDW_FRAME or
    RDW_INVALIDATE or RDW_ALLCHILDREN);
end;

Хитрость в том, что работает только RedrawWindow, а Invalidate нет.

UPD
На практике оказало не все так весело - окно просто прячется, а не перестает отрисовываться. У нас решилось точечным применением, только к изменяемым элементам - панелям, таб сетам и т.п.