Глубины Indy

Delphi 3 и создание приложений баз данных

Без баз данных сегодня невозможно представить работу большинства финансовых, промышленных, торговых и прочих организации. Потоки информации, циркулирующие в мире, который нас окружает, огромны. Во времени они имеют тенденцию к увеличению. Не будь баз данных, мы давно захлебнулись бы в информационной лавине. Базы данных позволяют информацию структурировать, хранить и извлекать оптимальным для пользователя образом.
Поскольку использование баз данных является одним из краеугольных камней, на которых построено существование различных организаций, пристальное внимание разработчиков приложений баз данных вызывают инструменты, при помощи которых такие приложения можно было бы создавать. Выдвигаемые к ним требования в общем виде можно сформулировать как: "быстрота, простота, эффективность, надежность".
В основе такой общепризнанной популярности Delphi лежит тот факт, что Delphi, как никакая другая система программирования, удовлетворяет изложенным выше требованиям. Действительно, приложения с помощью Delphi разрабатываются быстро, причем взаимодействие разработчика с интерактивной средой Delphi не вызывает внутреннего отторжения, а наоборот, оставляет ощущение комфорта. Delphi-приложения эффективны, если разработчик соблюдает определенные правила (и часто - если не соблюдает). Эти приложения надежны и при эксплуатации обладают предсказуемым поведением.

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

Формируемые запросы
Часто один компонент TQuery используют для выполнения различных отстоящих друг от друга во времени запросов. Такой подход уменьшает число используемых компонентов, но может привести к возрастанию программного кода.

Предложение WHERE : задание сложных условий поиска
Ранее были рассмотрены простые варианты задания условия поиска в предложении WHERE (сравнение столбца с константой и внутреннее соединение). Однако условия поиска могут быть достаточно сложными, чему способствует и сам синтаксис оператора SELECT. Рассмотрим основные конструкции для построения сложных условий поиска.

Принудительная запись на диск
Записи таблиц при добавлении или изменении их в БД могут помещаться в буфер или немедленно физически записываться на диск В первом случае записи из буфера физически записываются на диск после заполнения буфера

Групповая разработка и организация коллектива

В первый раз я столкнулся со специалистами по инженерной психологии в 1968 году. На мат-мехе была установлена польская ЭВМ ODRA 1204 с хорошей операционной системой и достаточно полной реализацией Алгола 60. На этой ЭВМ мы впервые получили возможность посимвольного ввода/вывода информации, используя телетайп или перфоленту. До этого мы могли работать только с целой колодой перфокарт или с целой перфолентой. Мы реализовали один из первых в СССР (и уж точно – первый в нашем университете) диалоговый корректор текстов (программа dico ). Г.С. Цейтин придумал идею и показал примеры основных операций, я написал на Алголе 60 почти все программы, а С.Н. Баранов подготовил хорошую документацию. Программа быстро стала популярной, после чего Александр Марьяненко (сотрудник института комплексных социальных исследований) попросил разрешения провести некоторые психологические исследования проблем диалогового редактора. Мы, разумеется, согласились, хотя совершенно не верили, что это принесет пользу.

Психология программирования




OFSA. Основные принципы

В настоящее время найти информацию об OFSA в отечественных СМИ (включая конечно и электроные) несложно, но практически вся эта информация носит формальный характер. Сначала идет формально-рекламное определение, потом список функциональных модулей и далее в телеграфном стиле обзор модулей. Отсутствие информации о принципах работы системы часто приводит к ситуации, когда читатель позиционирует OFSA как просто аналитическую систему, в ряду нескольких имеющихся на рынке, а это точка зрения далека от истины.
В настоящей статье деляется попытка выделить отличительные особенности OFSA и дать самое первое приближение (насколько позволяюют рамки статьи) основных принципов работы системы. С этой позиции неформальное определение может выглядеть следующим образом:
OFSA является банковской аналитической системой имитационного моделирования, построенной на основе дисконтированного кэш-флоу; система предназначена для поддержки принятия управленческих решений, оценки финансового состояния банка и прогнозирования.

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

OFSA Основные принципы
Центральное место в системе занимают т.н. "Финансовые Инструменты" (или просто Инструменты), под которыми понимаются юридически обеспеченные соглашения (договора) находящихся в обращении типов финансовых активов. Каждому Финансовому Инструменту в FDM соответствует отдельная таблица, используемая для хранения информации на уровне договора/лицевого счета

Общее описание системы
Система предназначена для информационной поддержки проведения торгов по закупкам оборудования и материалов, заказа услуг. Полное протоколирование всех действий участников торгов обеспечивает накопление информации по заказчикам и поставщикам. Формализованная часть этих данных позволяет получить характеристики партнёров, организовывать их уведомление о новых проводимых торгах и поступающих заявках.

Архитектуры ООСУБД. Анализ реализаций
Когда началось коммерческое использование ООСУБД, реляционная технология уже была хорошо укоренившейся, и, хотя о ней все еще продолжали спорить, все основные поставщики РСУБД заняли свое место на рынке баз данных. В то время компании переходили из стадии принятия решений относительно инфраструктурной технологии баз данных в стадию принятия решений о применении этой технологии для повышения эффективности бизнеса.

Архитектура среды тестирования на основе моделей

Представлен подход к построению архитектуры инструментария для тестирования на основе моделей, использующего современные компонентные технологии. Одна из основных идей, лежащих в его основе — применение техник неинвазивной композиции, позволяющих с минимальными затратами интегрировать множество независимо разработанных компонентов в сложную систему и переконфигурировать ее, не изменяя кода компонентов. Также описывается прототипная реализации предложенного подхода на базе свободно доступных библиотек и пример ее использования для построения тестов.

Введение
Тестирование на основе моделей и инструменты тестирования
Архитектурный каркас для тестирования на основе моделей
Пример построения теста
Литература

Глубины Indy

Indy отличается от других сокетных компонент, с которыми вы возможно уже знакомы. Если вы никогда не работали с другими сокетными компонентами, возможно, вы найдете, что Indy очень прост, так как Indy работает так как вы ожидали. Если вы уже работали с другими сокетными компонентами, то просто забудьте все, что вы знали. Это будет вам только мешать и вы будете делать ложные предпосылки.
Почти все другие компоненты работают в неблокирующем режиме, асинхронно. Они требуют от вас реагировать на события, создавать машину состояний и часто исполнять циклы ожидания. Например, с другими компонентами, когда вы делаете соединения, то вы должны ожидать событие соединения или крутить цикл ожидания, пока свойство, ухаживающие факт соединение не будет установлено. С Indy, вы просто вызываете метод Connect и просто ждете возврата из него. Если соединение будет успешное, то будет возврат из метода по окончанию соединения. Если же соединение не произойдет, то будет возбуждено исключение.
Работа с Indy аналогична работе с файлами. Indy позволяет поместить весь код в одно место, вместо создания различных разработчиков событий. В дополнение, многие находят Indy более простым в использовании. Indy также разработан на работу с потоками. Если вы имеет проблемы с реализацией чего-либо в Indy, то вернитесь назад и реализуйте это как для файлов.

Методология Indy
Клиент – это процесс, который инициализирует соединение. Обычно, клиенты общаются с одним сервером за раз. Если процессу требуется общаться с несколькими серверами, то создаются несколько клиентов.

Прозрачные прокси
Прозрачные прокси – это прокси, которые не требуют вмешательства в протокол обмена. О наличии прозрачного прокси часто не догадываются разработчики или пользователи (на то они и прозрачные и их нельзя обойти).
Хотя прозрачные прокси не оказывают влияния на клиента, они оказывают влияние на сервера. В большинстве случаев, серверы позади таких прокси скрыты от остального мира. Это позволяет иметь доступ к серверу с другой стороны прокси через его порты и эти порты туннелируются снаружи внутрь.

Небезопасный код
Небезопасный код включает следующее: Абсолютные переменные (Absolute) Функции Addr(), Ptr(), Hi(), Lo(), Swap() Процедуры BlockRead(), and BlockWrite() Процедура Fail() Процедуры GetMem(), FreeMem(), ReallocMem() Ассемблерный код Операторы работы с указателями

В глубь языка Python

Эта книга не предназначена для новичков. Подразумевается, что:
Вы уже знакомы хотябы с одним объектно-ориентированным языком, таким как Java, C++, или Delphi.
Вы знаете хотя бы один скриптовой язык, например, Perl, Visual Basic, или JavaScript.
Вы уже установили Python версии 2.0 или выше (рекомендуется Python 2.2)
Если вы только начали изучать программирование, это не значит, что вы не можете изучать Python. Python — один из самых простых языков для обучения, но для начинающих предназначены совсем другие книги.

Предисловие
Объединяем все вместе
GNU Free Documentation License
Словари