• Программирование

Программирование

Безопасность в сервис-ориентированных архитектурах (SOA)

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

Справочник по технологии COM

Справочник по интерфейсам, структурам и функциям, используемым в технологии COM. Рассматриваются функции компиляции типа и работы с библиотеками, функции API, работающие с вариантами, получение информации об ошибке, функции API обработки ошибок, обзор диспетчерских функций API, регистрация активного объекта с помощью функций API, функции преобразования даты и времени, функции преобразования BSTR и векторов, функции преобразования чисел из строкового представления в цифровое, функции API, работающие с массивами.

Собственные вектора и значения матриц

Как выясняется, некоторые специалисты до сих пор интересуются такой проблемой линейной алгебры, как вычисление собственных значений и собственных векторов матриц. Эта проблема возникает во многих областях математики, механики, инженерного дела и геологии. На сайте представлен несколько переработанный перевод 11-ой главы книги Numerical Recipes in C, 2nd edition, Cambridge University Press, reprinted 1999.

Ориентация на сервисы и её роль в Стратегии распределенных систем

Сервисная ориентация - средство для формирования распределенных систем. Наиболее абстрактно, сервисная ориентация рассматривает всё - от основных приложений, от принтера, до клерка из дока отгрузки, до компании ночной доставки - как поставщика услуг. Поставщики услуг предоставляют возможности через интерфейсы. SOA отображает эти возможности и интерфейсы так, что они могут гармонично сочетаться в процессы. Сервисная модель "рекурсивна"(fractal): вновь сформированный процесс - непосредственно сервис, выставляет новую, объединенную возможность.

Регулярные выражения

Регулярные выражения – это один из способов поиска подстрок (соответствий) в строках. Осуществляется это с помощью просмотра строки в поисках некоторого шаблона. Общеизвестным примером могут быть символы «*» и «?», используемые в командной строке DOS. Первый из них заменяет ноль или более произвольных символов, второй же – один произвольный символ. Так, использование шаблона поиска типа "text?.*" найдет файлы textf.txt, text1.asp и другие аналогичные, но не найдет text.txt или text.htm. Если в DOS использование регулярных выражений было крайне ограничено, то в других местах (то есть операционных системах и языках программирования) они почти достигли уровня высокого искусства.

Некоторые аспекты построения агентных систем

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

Теория фреймов

Теория фреймов - это  парадигма для представления знаний с целью использования этих знаний компьютером . Впервые была представлена Минским как  попытка построить фреймовую сеть , или парадигму с целью достижения большего эффекта понимания  . С одной стороны Минский пытался сконструировать базу данных , содержащую энциклопедические знания  , но с другой стороны , он хотел создать наиболее описывающую базу , содержащую информацию в структурированной и упорядоченной форме . Эта структура позволила бы компьютеру  вводить информацию в более гибкой форме , имея доступ к тому разделу , который требуется в данный момент . Минский разработал такую схему  , в которой информация содержится в специальных ячейках , называемых фреймами , объединенными в сеть , называемую системой фреймов . Новый фрейм активизируется с наступлением новой ситуации . Отличительной его чертой является то , что он одновременно содержит большой объем знаний и в то же время является достаточно гибким для того , чтобы быть использованным как отдельный элемент БД . Термин «фрейм» был наиболее популярен в середине семидесятых годов , когда существовало много его толкований , отличных от интерпретации Минского .

Чтобы было яснее

Программное обеспечение - это необычная среда для конструирования. Поскольку существует множество физических факторов, которые заставляют нас проектировать тем или иным образом, то большинство проектировочных решений не поддается объективному анализу. Как правило, речь о дизайне заходит не тогда, когда мы определяем, как работает программа, а тогда, когда мы хотим внести в нее изменения. Разумеется, работа программы очень важна, но все же о ее качестве, в первую очередь, говорит то, насколько просто внести в нее изменения.

Использование методологии Adaptive Software Development

Форма созданных человеком вещей меняется всякий раз, когда он обнаруживает в них уже существующие или потенциальные недостатки" - пишет Генри Петроски (Henry Petroski), профессор, преподающий гражданское строительство, и автор книги "The Evolution of Useful Things" ("Эволюция полезных вещей"). "Этот принцип справедлив для всех изобретений, инноваций и нововведений. Именно он заставляет работать творческую мысль изобретателей и инженеров". В том же ключе пишет и другой автор, Стюарт Брэнд (Stuart Brand). Он тоже полагает, что постулат "форма проистекает из функциональности" - не более чем иллюзия. В его книге "How Buildings Learn" ("Чему учит строительство") мы читаем: "Луи Салливан (Louis Sullivan) провозгласил, что форма следует за функциональностью, в результате чего большинство архитекторов более ста лет свято верили в то, что могут предвидеть все нюансы функционирования своих творений".

Новые методологии программирования

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

Метрика, ведущая к гибкости

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

Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения

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

Комплексный контроль за качеством кода

Статья описывает систему методов и действий, которые могут быть использованы при написании больших проектов на Delphi. Основная цель системы заключается в эффективном повышении качества кода и возможности быстрого поиска и исправления обнаруживаемых ошибок. В настоящее время, несмотря на большие возможности системы Delphi и библиотеки VCL, разработчикам не предложен простой и эффективный подход к написанию качественных программ. На основании личного опыта автора была составлена система методов, которые позволяют значительно усилить контроль над выполнением программы, ее сопровождением и исправлением обнаруживаемых ошибок. Статья может быть полезна как для начинающих, так и для профессиональных программистов. Однако, предполагается, что читатель хорошо знаком со средой разработки Borland Delphi и языком Object Pascal, а также таким понятием как исключение.

Каждой методологии - свое время

Все проекты и команды отличаются друг от друга, поэтому не существует одной методологии, которая подходила бы всем без исключения. Люди тоже отличаются друг от друга, к тому же им свойственно непостоянство, однако большинство любит общаться, может ориентироваться в нестандартной ситуации и проявлять инициативу. Можно ли строить удобные и эффективные методологии, базируясь на этих двух утверждениях? В этой статье я расскажу, как можно динамически конструировать гибкие методологии, с одной стороны, основываясь на положительных сторонах человеческой натуры, а с другой, учитывая ее слабости.

Варианты использования, десять лет спустя

Вариант использования - это прозаическое описание поведения системы при ее взаимодействии с окружающим миром. Я полагаю, большинство из вас уже использовали их или, по крайней мере, о них слышали. Некоторые, возможно, знают также и о жарких спорах, которые разгорелись по поводу их полезности (или бесполезности). Последнее десятилетие многое изменило в наших взглядах на варианты использования. Цель данной статьи - рассказать об эволюции этой концепции и тем самым дать возможность увидеть, насколько правильно или неправильно люди используют ее в наши дни. Кроме этого, конечно, автор хотел бы помочь вам наилучшим образом задействовать варианты использования в своей работе.

Экстремальное программирование – не методология…

Если посмотреть на экстремальное программирование с практической точки зрения сквозь призму отечественной высшей школы, то можно смело его охарактеризовать не как методологию, а как систематизированный подход к разработке программного обеспечения. Тем не менее, как бы этот феномен не назывался, важен конечный результат. В данной статье будет рассмотрена практическая применимость экстремального программирования, и чем оно полезно для разработчиков.

Учебник Turbo Pascal. Введение

На этом уроке мы познакомимся с основными элементами языка Паскаль. Вначале дается перечень символов и зарезервированных слов языка, рассматривается структура программы. Дается описание основных операторов языка. Вводятся подпрограммы-функции и библиотечные модули. Даются начальные сведения по программированию ввода/вывода данных и работе с внешними файлами. Завершается урок упражнениями. В данном уроке и далее в книге мы будем сопровождать описание конструкций языка и приемов программирования примерами программ — как относительно простых, так и более сложных.

Энциклопедия Turbo Pascal. Главы 9-11

Средства,  предназначенные для работы с  базой данных,  и графические средства, которые являются двумя очень полезными дополнениями Турбо Паскаля, рассматриваются соответственно  в главе 9 и главе 10.  В главе 11 рассматриваются вопросы эффективности, мобильности и отладки программ. В конце книги дается три приложения.  В приложении А показано, как программы на языках Си и Бейсик можно преобразовать в программу на языке Turbo Pascal. В приложении Б описаны отличия языка Турбо Паскаль от стандартного Паскаля.  В приложении В рассматривается применение блоков в Турбо Паскале.

Энциклопедия Turbo Pascal. Главы 5-8

Темой главы 5 является статистический анализ и в нее включены законченные программы по статистическому анализу.  В главе 6  рассматриваются  вопросы  кодировки, шифрования и сжатия данных.  В нее также включена краткая история криптографии.  В главе 7  рассматривается  несколько  генераторов случайных  числе и затем обсуждается их использование при решении двух задач моделирования /контрольной линии на складе и  управления портфелем заказов. Глава 8,  которая мне нравится больше всего, содержит полный код  рекурсивного нисходящего синтаксического анализатора.  Несколько лет назад я готов был заплатить почти любую цену  за такой код.  Глава  8  предназначена для тех,  кому требуется выполнять анализ выражений.

Энциклопедия Turbo Pascal. Главы 1-4

Для опытного пользователя,  применяющего Турбо Паскаль (Turbo Pascal),  эта книга станет необходимым инструментом при разработке  программ  в среде системы Турбо Паскаль (Turbo Pascal). Турбо Паскаль (Turbo Pascal) насчитывает во всем мире более 700 000 пользователей и  стал  фактически стандартным Паскалем для персональных компьютеров. В этот раз Герберт Шилдт, который сам является программистом, в своей книге, предназначенной для опытных пользователей Турбо Паскаля (Turbo Pascal), представляет алгоритмы и методы разработки эффективных, мобильных программ, свободных от ошибок.

Работа с СУБД Oracle через интерфейс OCCI

OCCI - расшифровывается как Oracle C++ Call Interface и представляет собой специализированное апи для работы с СУБД Oracle используя C++ что в общем то явствует из названия. Для использования необходимо подключить заголовочный файл "occi.h".

Задача Майхилла для Microsoft Visual C++

О синхронизации процессов в среде Windows. Задача Майхилла - еще один (наряду с задачей RS-триггера) пример решения нетривиальных проблем создания сложных систем. Справившись с ней, мы научимся организовывать взаимодействие параллельно работающих компонентов сложных программных комплексов в жестких условиях.

Использование ODBC в Visual C++

Класс CDatabase представляет собой класс, который обеспечивает связь с источником данных. Под источником данных может пониматься как непосредсвенно файл, в котором находится таблица, например dBase, так и файл с многими таблицами, например Microsoft Access или сервер баз данных Oracle, MS SQL Server и т.д. Для связи с источником данных используется интерфейс ODBC. У данного класса есть папа в виде класса CObject.

Создание простого приложения с плагинами

В этой статье описываются принципы и решения, применяемые при проектировании приложений, которые будут использовать внешние, динамически подключаемые, модули. Эта статья более ориентирована на тех, кто хочет использовать механизмы подключения/отключения функциональности приложения, наподобии механизма Aobe Photoshop или Far, а не просто многократного использования кода в разных приложениях.

Работа с 1C Предприятие из Visual C++

В данной статье показано, как можно работать с 1С Предприятием из С++ с помощью OLE DB. Так же она будет интересна тем, кто не пользуется C++, но хочет узнать подробности "а как оно устроено внутри 1С". В данной статье речь пойдет об 1С Предприятии версии 7.7. Полагаю, что в версии 8 мало что изменилось. Предполагается, что читатель хотя бы чуть-чуть знаком с 1С Предприятием. Так же предполагается, что вы изучали официальное руководство 1С по вопросам OLE DB (часть вторая описания языка), но осталься недоволен - т.к. исходники там приведены для Visual Basic, а вам ну очень нужен именно C++ (кстати - не обязательно Visual - главное что бы в вашем компиляторе была возможность работать с OLE).

Как самому сделать plug-in к FAR на Visual C++

Трудно найти человека, которые не знает или не использует Far - IMHO лучший клон NC для Windows. Кроме того, что это просто очень хороший файл менеджер, к нему есть огромное количество plug-in модулей. Plug-in модуль это DLL-файл, который вместо стандартных Windows функций по работе с монитором, клавиатурой и т.д. обращается к функциям Far-а. Far поддерживает весь набор функций для работы в текстовом режиме. Установка plug-in модуля происходит предельно просто - DLL файл и файлы данных копируются в каталог в каталоге Far\Plugins и Far перезапускается.

Использование директивы #import в Visual C++

В данной статье я попытаюсь объяснить то, как работает эта директива и привести несколько примеров её использования. Надеюсь, после этого вы тоже найдёте её полезной.  Директива #import введена в Visual C++, начиная с версии 5.0. Её основное назначение облегчить подключение и использование интерфейсов COM, описание которых реализовано в библиотеках типов.

Создание VxD на Visual C++ без ассемблерных модулей

Виртуальные драйверы устройств (VxD) в Windows во многих случаях являются единственным «честным» способом обхода ограничений, установленных системой для приложений Win32: невозможности прямого доступа к портам ввода-вывода и служебной памяти, эффективной обработки аппаратных прерываний, использования сервисных функций существующих VxD и т.п. Кроме того, без VxD не обходится практически ни один полноценный драйвер физического или виртуального устройства.

Основы разработки прикладных виртуальных драйверов

Как уже отмечалось ранее, виртуальные драйверы служат прежде всего для виртуализации аппаратуры, то есть для предоставления одновременно выполняемым задачам возможности совместного использования устройств компьютера. Измерительная или управляющая аппаратура, подключаемая к компьютеру с целью создания автоматизированной установки, вряд ли будет эксплуатироваться в многозадачном режиме, однако использование для ее управления виртуального драйвера может заметно сократить программные издержки и уменьшить время отклика. Рассмотрим пример виртуального драйвера, обслуживающего прерывания от описанной в предыдущей статье интерфейсной платы таймера-счетчика.

Прямой доступ к макросам в документах MS WORD

Иногда хочется посмотреть на исходный текст макросов, живущих внутри документов MS Word, особенно когда имеется подозрение на наличие в них какого-то злонамеренного кода - вируса или троянца. В данной статье будет рассмотрено несколько способов, как это можно сделать для документов MS Word версий 97, 2000 и XP, и как автоматизировать этот процесс.