Архив рубрики «Программирование»
IDC (Internet Database Connector) — общие сведения и особенности
1) Общие сведения об IDC
Web-сервер IIS представляет доступ к БД с использованием Internet Database Connector. IDC работает как промежуточное звено системы, обеспечивая взаимодействие между тем, что отображается при просмотре страницы HTML и тем, как данные запрашиваются на уровне БД. При установке IIS необходимо указать установку OBDC. Ядром, выполняющим всю работу с БД с помощью драйвера ODBC, является файл HttpOdbc.DLL – ISAPI-расширение, устанавливаемое при инсталляции IIS в каталог C:\WINDOWS\system32\inetsrv. Источник данных ODBC должен быть системным (System DSN).
Прочитать остальную часть записи »
OLE Automation, типы данных OLE и Dispatch-интерфейсы
1. OLE Automation
Автоматизация OLE — это способность управлять OLE другого приложения программным путем.
Приложения могут обеспечить доступ к своим сервисам через интерфейсы СОМ. После этого такими сервисами сможет воспользоваться любой фрагмент кода, способный вызывать методы СОМ-объекта. В СОМ такой стандартный способ обеспечения программируемости называется автоматизацией (Automation). Часто для создания программ, управляющих другими приложениями, используются простые языковые инструменты типа Visual Basic. Создаваемые ими программы называют также и сценариями (script).
Прочитать остальную часть записи »
ASP (Active Server Pages) — общие сведения и особенности
1) Общие сведения об ASP
ASP (Active Server Pages) – это технология программирования, позволяющая создавать на Web-сервере (с IIS, 1997 г.) динамические интерактивные Web-страницы. ASP представляет собой файлы с расширением *.Asp, содержащие смесь кода HTML, кода сценариев на языке VBScript или JavaScript, средств доступа к БД (ADO), управления внешними COM-объектами и внутренних объектов ASP. Эта технология впервые была реализована в Web-сервере IIS фирмы Microsoft и фактически является интерпретируемым вариантом ISAPI-расширения сервера.
Прочитать остальную часть записи »
Маршалинг и демаршалинг, Динамический маршалинг и информация о типе
• Если СОМ-объект реализован в составе внутреннего сервера, то клиентский указатель указывает непосредственно на интерфейс объекта.
• Если СОМ-объект реализован в составе локального сервера, то клиентский указатель указывает на заместителя (proxy) внутри клиентского процесса. Заместитель — это просто другой СОМ-объект, обычно предоставляюший клиенту те же интерфейсы, что и объект локального сервера, с которым Клиент пытается взаимодействовать. Вызов клиентом метода через такой указатель на интерфейс на самом деле вызывает исполнение кода заместителя. Заместитель принимает переданные параметры и упаковывает их для пересылки. Далее запрос передается в процесс, который фактически реализует объект.
Прочитать остальную часть записи »
Связь веб-клиента с СУБД по API (Application Programming Interface)
1) Общие сведения об API
API (Application Programming Interface) — это расширение Web-сервера запускается как многопоточная динамическая библиотека (DLL), выполняющее обработку каждого вызова сервера в обычном процессе Web-сервера, что значительно проще, чем создание отдельного процесса для каждого клиентского запроса.
Прочитать остальную часть записи »
Методика создания клиента в Delphi
а) Для взаимодействия с СОМ-сервером целесообразно создать:
• Проект, например, с именем ComTest.Dpr.
• Блок с описанием интерфейса. Он может быть полностью аналогичен файлу, созданному при проектировании сервера и просто скопирован.
• Блок с экранной формой, например, с именем ComForm. В этом блоке следует подключить блок с интерфейсом IntfCom и включить константу с GUID класса Class_Sum:
Unit ComForm;
Uses.., ComObj, IntfCom; Const
Class_Sum:TGUID='{EODBF9F4-2C63-HD6-8E8F-00608C93D419}’;
CGI (Common Gateway Interface)
1) Общие сведения о CGI
С 1993 года CGI является очень часто используемой технологией создания трехзвенных клиент/серверных приложений в Интернет. CGI-приложение совместно с Web-сервером выполняют роль сервера приложений в трехзвенной архитектура клиент/сервер. CGI – набор правил (спецификация), согласно которым пользовательские программы, запускаемые на Web-сервера, могут возвращать данные клиенту в виду HTML-документа. CGI – это консольное приложение, загружаемое в ответ на запрос клиента на выборку или обновление данных, функционирующее как отдельный однопоточный процесс под управлением Web-сервера и выгружаемое сразу после завершения работы. WinCGI – Windows реализация CGI.
Прочитать остальную часть записи »
Функции для создания (активизации) СОМ объектов в Delphi
Способы активизации СОМ-объектов клиентом
В Delphi предусмотрено несколько способов для активизации СОМ-объекта клиентом:
• Для создания одного экземпляра объекта можно использовать функцию API CoCreatelnstance:
OIeCheck(CoCreateInstance(Clsid, // CLSID объекта требуемого класса
Nil, // Нужно для агрегирования (не используем)
I, // Тип сервера (1, 4, 16 удаленный)
IID, // Идентификатор требуемого интерфейса
рСоm)); // Указатель на запрашиваемый интерфейс
Прочитать остальную часть записи »
Особенности работы СУБД в WEB
Возможность доступа к БД с помощью Web существенно изменила стратегии доступа к данным из-за того, что:
• Количество пользователей может не только существенно варьироваться, но и изменяться без предупреждения. В обычных клиент/серверных приложениях администраторы могут контролировать число пользователей и возможность их доступа к данным.
Прочитать остальную часть записи »
Интерфейс фабрики классов и его методы в Delphi
Фабрики классов используются для создания экземпляров объектов СОМ-объекты не порождаются приложением-клиентом. Вместо этого в СОМ используется механизм, названный генератором классов. Генераторы классов — это объекты, чье главное предназначение — создавать другие объекты. В Delphi фабрики классов для СОМ-объектов создаются автоматически.
Прочитать остальную часть записи »
Объявление пакета в SQL, понятие уровней строгости
1. Понятие пакета
В СУБД Oracle, начиная с 7 версии, предусмотрена возможность создания пакетов, представляющих по существу коллекцию функций, процедур, констант, пользовательских типов данных, переменных, курсоров, исключительных ситуаций. Пакет включает спецификацию пакета и его тело. Объекты, объявленные в спецификации, являются общедоступными. Тело пакета включает реализацию общедоступных объектов, а также объявление и реализацию приватных объектов. Пакет можно сделать невыгружаемым из памяти. Помещая в пакет наиболее часто используемые процедуры и функции, можно существенно повысить быстродействие системы.
Прочитать остальную часть записи »
Типовой механизм создания СОМ-объектов, серверы объектов СОМ
1) Первоначально клиент вызывает функцию библиотеки СОМ — СоCreatelnstance, передавая ей CLSID нужного объекта, а также IID интерфейса, поддерживаемого объектом. Кроме того, можно указать тип сервера: «в процессе» — 1 или локальный — 4. Допускается не указывать тип сервера.
OIeCheck(CoCreateInstance(Clsid, // CLSID объекта требуемого класса
Nil, // Нужно для агрегирования (не используем)
I, // Тип сервера (1, 4, 16 удаленный)
IID, // Идентификатор требуемого интерфейса
рСоm)); // Указатель на запрашиваемый интерфейс
Триггеры, объявление и назначения триггеров в SQL
Понятие триггера
Триггер – это подпрограмма, похожая на процедуру БД, автоматически вызываемая СУБД при изменении, удалении или добавлении записи в таблице. К триггерам невозможно обратиться из программы, передать им параметры или получить от них результат. Наиболее часто триггеры применяются для поддержания ссылочной целостности и каскадных операций в БД. Ссылочные спецификации, определяющие каскадные действия при удалении и обновлении и создаваемые при объявлении таблиц, также реализуются через триггеры, однако текст этих триггеров не редактируется.
Прочитать остальную часть записи »
Обзор технологий СОМ, серверы и объекты СОМ, библиотеки
Модель COM (Component Object Model) представляет собой независимую от языка программирования спецификацию, базирующуюся на объектах. Эта спецификация определяет требования к созданию составных объектов (Component Objects) и механизм предоставления доступа к составным объектам, т.е. обеспечивает поддержку средств, разрешающих реализовывать объекты, которые могут вызываться между различными процессами и, даже, компьютерами. По определению СОМ является реализацией OLE.
Прочитать остальную часть записи »
Табличные функции в SQL
• Понятие табличных функций
В SQL:2003 специфицированы табличные функции, т.е. функции, вызываемые из SQL и возвращающих результат «таблицу». Поскольку в SQL нет типа таблица, то фактически результатом табличной функции является мультимножество (типом элементов которого является анонимный строчный тип). Однако к результату табличной функции можно адресовать запросы таким же образом, как и к таблица. В синтаксических конструкциях для определения и вызова табличных функций предусмотрено ключевое слово TABLE.
Прочитать остальную часть записи »
Интерфейсы автоматизации, диспинтерфейсы
В блоке System Delphi объявлен также и IDispatch интерфейс, предназначенный для поддержки объектов автоматизации (Automation). Таким образом, любое приложение, предоставляющее свои внутренние методы другим приложениям, может осуществлять это через этот интерфейс.
Прочитать остальную часть записи »
Внешние функции в SQL
1) Понятие внешней функции
SQL/PSM разрешает для определения тела подпрограммы использовать код, написанный на широко известных HOST-языках программирования. Под внешней функцией понимается функция, написанная на одном из HOST-языков программирования и специальным образом подключенная к БД.
Прочитать остальную часть записи »
Делегирование полномочий интерфейсов, свойство классов типа интерфейс
С помощью команды Implements можно делегировать полномочия одного или нескольких интерфейсов свойству в классе реализации интерфейса. Фактически делегирование означает, что класс-контейнер включает ссылку на другой класс, который реализует один или несколько интерфейсов.
Прочитать остальную часть записи »
Встроенные и хранимые функции в SQL
Встроенные (системные) функции
1) Список стандартных функций
Функция | Возвращаемый результат |
Bit_Length(< строка>) | Количество битов в < строке> |
Cast(< значение> As < тип данных>) | < значение>, преобразованное в указанный < тип данных> |
Char[acter]_Length(< строка>) | Длина < строки> символов |
Convert(< строка> using < функция>) | < строка>, преобразованная в соответствии с указанной < функцией> |
Current_Date | Текущая дата |
Current_Time(< точность>) | Текущее время с указанной < точностью> |
Current_TimeStamp(< точность>) | Текущая дата и время с указанной < точностью> |
Extract(< часть> from < значение>) | Указанная < часть> (Day, Hour и т.п.) из < значения> даты |
Lower(< строка>) | < строка>, преобразованная к нижнему регистру |
Octet_Length(< строка>) | Число байтов в < строке> |
Position(< строка1> in < строка2>) | Позиция, с которой < строка1> входит в < строку2> |
Substring(< строка> from | Часть < строки>, начинающаяся с позиции |
Trim(Leading|Trailing|Both < символ> from < строка>) | < строка>, у которой удалены ведущие | концевые | с обоих сторон < символы> |
Upper(< строка>) | < строка>, преобразованная к верхнему регистру |
User | Определяет идентификатор пользователя |
Прочитать остальную часть записи »
Иерархия классов Delphi, поддерживающих технологию COM и OLE
Общая иерархия классов Delphi, поддерживающих СОМ технологию имеет следующий вид.
• TInterfacedObject — Определен в модуле System. Реализует интерфейс
IUnknown. Используется для реализации объектов внутри приложений.
Прочитать остальную часть записи »
Особенности промышленных серверов при работе с процедурами SQL
InterBase/Firebird
1) Процедуры действия
CREATE PROCEDURE < имя процедуры> [(< имя параметра>< тип данных>[(< размер>)],…)] [RETURNS (< имя параметра>< тип данных>[(< размер>)],…)] AS [DECLARE VARIABLE < имя переменной>< тип данных>[(< размер>)];]
BEGIN
<SQL-операторы>
END
Особенности ООП Delphi for DotNet
Чтобы подстроится под DotNet, внесены изменения в ООП Delphi:
1. Производный класс не TObject, а System.Object.( TObject переименованный System.Object).
2. Запрещены нетипизированные указатели и другие типы данных, которые напрямую обращаются к памяти.
Прочитать остальную часть записи »
Видимость компонентов класса, особенности разделов класса
Одно из больших преимуществ ООП — это инкапсуляция и ее поддержка для скрытия данных. Если работать с полями напрямую или просто показывать их, в результате детали реализации становятся известными и могут не всегда корректно взаимодействовать с внешним миром. Гораздо лучше написать методы для доступа к полям объекта, что позволит добиться настоящей инкапсуляции и исключит возможность некорректной модификации данных объектов. Вместо прямого доступа к полям вызываются соответствующие методы.
Прочитать остальную часть записи »
Понятие интерфейса и его назначение в Delphi
Объектный интерфейс или просто интерфейс — определяет методы, которые могут быть реализованы классом. Интерфейсы объявляются подобно классам, но не могут использоваться непосредственно и не имеют собственных реализаций методов, поскольку это обязанность любого класса, который поддерживает интерфейс — обеспечить реализации методов интерфейса. Интерфейс, подобно классу, также наследует методы всех своих предков. Переменная типа интерфейс может ссылаться на объекты, которые определяют этот интерфейс, однако, используя эту переменную, можно вызывать только методы, объявленные в этом интерфейсе.
Прочитать остальную часть записи »
Работа с процедурами SQL в Delphi
1) Основные свойства компонента TStoredProc
• StoredProcName :Strings – позволяет с помощью встроенного компонента ComboBox указать имя хранимой процедуры.
• Params :TParams — позволяет указать типы и значения входных и выходных параметров, если таковые есть.
Прочитать остальную часть записи »
Подготовка сообщений при исключениях
Использование ресурсных файлов
Одним из видов ресурсов Delphi являются таблицы строк. Ресурсы очень эффективно управляются системой и облегчают перевод программы на другой язык сообщений. В репозитории Delphi предусмотрен мастер для работы с ресурсами. Рассмотрим возможности использования ресурсов в виде таблицы строк для хранения текста сообщений об ошибках.
Прочитать остальную часть записи »
Особенности процедур — преимущества и трудности при работе с ними
1) Повышение скорости работы БД
→ Процедуры хранятся в скомпилированном виде, а значит, СУБД не тратит время на компиляцию запроса при каждом его исполнении.
→ Команда для вызова хранимой процедуры значительно короче, чем запрос, содержащийся в коде приложения, поэтому требуется меньше времени и трафика на передачу операторов на сервер БД.
→ Быстродействие хранимых процедур обусловлено еще и тем, что после вызова они загружаются в память и выгружаются из нее с учетом алгоритма вытеснения по давности использования. В Oracle размер памяти для КЭШа хранимых процедур оказывается в файле Init.Ora.
→ С помощью автоматической или ручной перекомпиляции изменяют плана выполнения из-за изменения индексов и т.п. В СУБД SQL Server при создании процедуры предусмотрена опция WITH RECOMPILE, используемая как при создании, так и при вызове процедур.
Прочитать остальную часть записи »
Хотите улучшить Fact? для разработчиков и программистов на Python
Желающим развивать Fact
Взгляд с высоты птичьего полёта
Fact написан на Python 2.4 (так же успешно протестирован на 2.5 и 2.6a0).
Программа обрабатывается в три шага:
token_list = TokenSeq() # 1. разбиение на токены
token_list = load(text) # и отсечение комментариев
code=Prog() # 2. компиляция во внутреннее
code=load(token_list) # представление (последовательность
# классов операций)
code.execute(context) # 3. выполнение программы в заданном
# контексте
Метод load класса TokenSeq осуществляет синтаксический разбор. Метод load класса Prog — лексический.
Прочитать остальную часть записи »
Архитектурные ошибки при разработке Perl/mod_perl ОО-приложений
Подходы
Речь пойдёт о двух вариантах организации объектно-ориентированного кода. Оба подхода приводят к решению и оба встречаются в реальной жизни.
Итак, выражаясь формально, нам надо получить из данных a данные b=f(a). (Собственно, всё программирование сводится к преобразованию одних данных в другие.)
Подход — программирование на объектах
Прочитать остальную часть записи »
Perl vs PHP: perl против PHP
Основная разница между Perl и PHP
Сама природа Perl и PHP различна. Perl — это язык программирования — универсальный инструмент для решения очень широкого круга задач. Perl не разрабатывался специально для Web-программирования.
PHP изначально предназначался для разработки Web-приложений. Он пытается сочетать мощь полноценного языка и преимущества узкоспециального средства. В поисках компромисса, PHP приобретает целый ряд спорных качеств.
Ядро языка
Прочитать остальную часть записи »