Страницы

16 июня 2012 г.

pgScript. Генераторы случайных последовательностей. Дата и время

       Приветствую Вас с своем скромном блоге.
       Сегодня мне хотелось бы продолжить ряд статей (который дополняется медленно, но верно :) ) посвященных генерации случайных последовательностей в pgScript. Далее пойдет речь о последовательностях типа Data, Time и Timestamp. 
Итак, начнем... Синтаксис определения генераторов всех выше указанных типов идентичен:
DATE(min, max, [sequence], [seed])
TIME(min, max, [sequence], [seed])
DATETIME(min, max, [sequence], [seed]) 
где,
min - Минимальная граница диапазона генерации значений;
max - Максимальная граница диапазона генерации значений;
[sequence] - необязательный параметр, устанавливает способ генерации. Различает только нулевое и ненулевое значение. 
[seed] - необязательный параметр, указывает функции номер значения в последовательности которое должна вернуть функция. Это целесообразно использовать в случаях когда необходимо генерировать одинаковое значение при нескольких обращениях к одному генератору, иначе (по умолчанию) при каждом обращении будет генерироваться произвольное значение.

7 июня 2012 г.

Регистрация COM сервера в системе

       Здравствуйте.
       Тем, кто уже работал с COM-серверами и успешно переносил их на другие машины - можно не читать.
       На начальном этапе программеров смущает тот факт, что при переносе на новую машину клиенты их COM-серверов (я работал только Out-precess) выдают ошибку "Interface not supported". Лично мой сервер является приложением, а не библиотекой. Где-то я вычитал что сервера-приложения сами себя регистрируют при запуске, что меня в конечном итоге и сбило с толку. При переносе на другую машину столкнулся с вышеописанной ошибкой. Все оказалось не так просто...
Итак, COM-сервера бывают 2-х видов:
  • В виде DLL;
  • В виде исполняемого файла.

4 июня 2012 г.

COM - объекты. Параметры фабрики классов.

Приветствую Вас в блоге "Будни программиста".

       Я заметил, что многие задают вопросы типа "А как сделать чтобы к одному Com-серверу можно было подключиться множеством клиентов?", "А как сделать чтоб для всех клиентов создавался один объект на сервере?" и т.д.
       Совсем недавно, немного познакомившись с технологией COM, я и сам искал ответы на эти вопросы. В этом посте я постараюсь подвести итог моих поисков.
Итак, имеется два параметра фабрики классов управляющие генерацией COM-объектов на сервере:
  • Instancing;
  • Threading Model;

3 июня 2012 г.

GRUB. Убираем дублирование вариантов загрузки ОСей.

       Доброго времени суток. Добро пожаловать в мой скромный блог.

       Речь пойдет и Linux Ubuntu и загрузчике GRUB который позволяет управлять вариантами загрузки системы (или систем если их несколько на ПК).
       Итак, в линуксе я относительно недавно и потому был очень удивлен, увидев что со временем вариантов загрузки системы становится все больше и больше. Варианты загрузки появляются при обновлении ядра Linux. Новое ядро прописывается в конфиг загрузчика, а старая версия не удаляется... Вот как раз 3 мин. назад установилось новое обновление, которое потребовало перезагрузки, сейчас ребутнусь, заодно и сделаю фото для наглядности. :)
Перезагрузка принесла нам фото, вот так это выглядит:


28 мая 2012 г.

pgScript. Генераторы случайных последовательностей. Числовые данные

Здравствуйте. Добро пожаловать в мой скромный блог.

       Сегодня я опишу генераторы случайных последовательностей числовых значений, которые используются в pgScript.

Целочисленные последовательности.

Следующая строка присвоит переменной "@Rec" значение генератора:

set @Rec = INTEGER ( Min, Max, [Sequence], [Seed] );
где,
Min - Минимальная граница генерации чисел.
Max - Максимальная граница генерации.
Sequence - Не обязательный параметр назначающий последовательность генерации чисел. (реакция генератора различна только на нулевое и ненулевое значение данного параметра).
Seed - Не обязательный параметр обозначающий индекс числа в последовательности. Т.е. если данный параметр установлен, то генератор будет возвращать не произвольное число, а число с указанным в данном параметре индексом, не зависимо от количества обращений.

21 мая 2012 г.

Написание callback-функций в C++ и COM

       Это быстрое описание того, как адаптировать Ваши указатели функции C-стиля, если Вы кодируете на C++. Эта статья написана для того, чтобы предоставить быстрое описание людям, пытающимся выяснять, как работают функции обратного вызова на всевозможных языках. Щелкните здесь для C#/.NET версии. Или щелкните здесь, если Вы хотите сделать делегат C#-стиля функций обратного вызова в C++.

       Проблема написания программы на C++ состоит в том, что работа с указателями функции реализована более сложно. В C все Ваши функции глобальны, и определить адрес функции можно в любой точке кода где это понадобится. Однако, в C ++ Ваши функции (если они не объявлены как статичные) связаны с объектами, и Вы должны оперировать объектом наряду со своим указателем функции.

17 мая 2012 г.

Delphi 2007. Сохранение библиотеки типов COM-сервера. Ошибка "Unable to rename 'my_TLB.tlb' to ' '"

Доброго времени суток.
       Внезапно понадобилось разработать свой маленький COM-сервер на Pascal-е  для реализации взаимодействия между приложениями. Воспроизводя все действия согласно мануалу я наткнулся на проблему не позволяющую мне сохранить проект. При открытой библиотеке типов IDE постоянно генерировало исключение "Unable to rename 'my_TLB.tlb' to '.'".
       Покопавшись по форумам я высянил,что такая проблема преследует только тех кто использует Delphi 2007 в совокупности с твикером. Твикер представляет собой исполняемый файл: "D2007Tweaks.exe". В инструкции к этой программе написано, что необходимо поставить галочки напротив пунктов 'Don't create local files', 'Don't create ~bpl files', 'Don't create history files', что я и сделал при установке Delphi.
       Как выяснилось именно эта настройка препятствует сохранению библиотеки типов COM - сервера. Если Снять вышеуказанные галочки, проект сохраниться нормально.