Использование стандартных редакторов типов

Добавлено Дата: 13 January, 2011 категория: C#, Компоненты

Конечно же, не всегда нужно писать собственные редакторы типов. Часто вполне достаточно стандартных. В этом разделе я хочу рассказать о некоторых из них и возможных проблемах, возникающих при их использовании.

Редактирование коллекций

Читать »

Futility pruning

Добавлено Дата: 13 January, 2011 категория: Игры, Теория

Автор идеи — Эрнст Хайнц, применивший ее в своей программе DarkThough. Сама идея очень проста. На последних двух полуходах перебора оценка не­точна, и можно, основываясь на текущей статической оценке позиции и характеристике узла, подрезать целую ветвь поиска. Нельзя с определен­ностью сказать, что вносит погрешность, т. к. в двух послед­них узлах программа и так постоянно ошибается. Можно сказать, что ошибки будут, но несколько другого характера.

Читать »

Включение файлов схемы в другую схему

Добавлено Дата: 13 January, 2011 категория: Java, Web, XML

В создаваемую схему можно включить файлы, содержащие другие схемы. Для этого есть два элемента схемы: <inciude> и <import>. Например:

<xsd: include xsi: schemaLocation= "names .xsd" />

Включаемый файл задается атрибутом xsi: schemaLocation. В примере использован для того, чтобы включить в создаваемую схему содержимое файла names.xsd. Файл должен содержать схему с описаниями и определениями из того же пространства имен, что и в создаваемой схеме, или без пространства имен, то есть в нем не использован атрибут targetNamespace.

Читать »

Преобразование простых именованных шаблонов в функции XSLT

Добавлено Дата: 12 January, 2011 категория: XSLT

Задача

В XSLT 1.0 не было поддержки для написания функций, а именованные шаб­лоны – не слишком удачная замена.

Решение

Если нужно всего лишь вычислить результат, а не породить новое сериализо- ванное содержимое, отдавайте предпочтение функциям XSLT 2.0. Ниже приведе­ны разнородные примеры ситуаций, когда функции гораздо удобнее именован­ных шаблонов:

Читать »

Класс SimplePropertyDescriptor

Добавлено Дата: 12 January, 2011 категория: C#, Компоненты

Как я уже говорил в разд. 4.5, все дескрипторы являются или внутренними, или абстрактными классами, поэтому использовать их "напрямую" не получится, Реализовывать свой дескриптор с нуля— занятие достаточно сложное. Класс TypeConverter содержит внутри себя интересный класс SimplePropertyDescriptor, реализующий большинство необходимых методов дескриптора. Это тоже абстрактный класс, но его наследнику достаточно реализовать всего два метода:

Читать »

Alpha-beta

Добавлено Дата: 12 January, 2011 категория: Алгоритмы, Игры

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

Читать »

Использование строки главного изменения

Добавлено Дата: 11 January, 2011 категория: Алгоритмы, Игры

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

Читать »

Работа с Axis

Добавлено Дата: 11 January, 2011 категория: Java, Web, XML

Программный продукт Axis (Apache extensible Interaction System) (http://xml.apache.org/axis/), разрабатываемый консорциумом W3C, представляет собой набор классов, большинство из которых реализуют интерфейсы пакетов Sun SAAJ, JAXM, JAX-RPC. Эти интерфейсы мы рассмотрим подробно в главе 6. Кроме того, в состав Axis входит небольшой отладочный SOAP-сервер — класс simpleAxis Server — и классы для преобразования описаний WSDL в объекты Java и обратно.

Читать »

РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

Добавлено Дата: 11 January, 2011 категория: XSLT

Какого бы разра­ботчика на XSLT я ни спрашивал, добавление регулярных выражений в XSLT стояло в верхней позиции его списка из 10 наиболее желательных усовершен­ствований. Эта врезка предназначена для тех программистов, которые еще не имели удовольствия работать с регулярными выражениями или побаиваются их. Справочник не исчерпывающий, но для начала его хватит.

Читать »

Расположение компонентов друг на друге

Добавлено Дата: 11 January, 2011 категория: C#, Компоненты

Класс ParentcontrolDesigner реализует дизайнер, предназначенный для компонентов, которые содержат другие компоненты или сами содержатся в других компонентах. Этот класс имеет множество дополнительных свойств и методов, но наиболее интересны два (и еще про одно свойство я расскажу в следующем разделе):

Читать »

Добавление и удаление свойств, событий и атрибутов компонентов

Добавлено Дата: 11 January, 2011 категория: C#, Компоненты

В разд. 6.6 я показывал, как делать фильтрацию свойств, и событий с помощью методов дизайнера. Те же действия можно выполнить, зарегистрировав дополнительный сервис фильтра HypeDescriptorFilterService. В ОТЛичие от предыдущих сервисов, сервисы фильтров организуют цепочку, последовательно вызывая друг друга. Соответственно, при регистрации сервиса мы должны позаботиться, чтобы новый фильтр вызывал предыдущий. Для этого в переменную oldservice мы сохраним ссылку на предыдущий сервис (листинг 7.17) и будем использовать ее при вызове предыдущего фильтра:

Читать »

Элементы расширения в Saxon

Добавлено Дата: 11 January, 2011 категория: XSLT

XSLT 1.0 (Saxon версия 6.5.4)

можно реализовать только на языке Java. Не­обходимо определить пространство имен, которое связывает имя расширения с его реализацией. Но правила здесь более четкие, чем для функций расширения. URI пространства имен должен завершаться символом /, за которым следует пол­ностью квалифицированное имя Java-класса, реализующего интерфейс com.icl.saxon. ExtensionElementFactory:

Читать »

Линии взаимного расположения компонентов

Добавлено Дата: 10 January, 2011 категория: C#, Компоненты

Типы линий привязки взаимного расположения компонентов (см. разд. 2.2) определяются перечислением SnapLineType:

Q SnapLineType.тор— горизонтальная линия по верхней границе компонентов;

?     SnapLineType.Bottom— горизонтальная линия по иижией границе компонентов;

Читать »

Реализация стандартных математических функций

Добавлено Дата: 10 January, 2011 категория: XSLT

Задача

Требуется выйти за пределы математики для пятого класса, но в XSLT необ­ходимых средств нет.

Решение XSLT 1.0

Ниже предлагаются реализации на языке XSLT 1.0 функций для вычисления абсолютного значения, квадратного корня, логарифмов, степенной функции и фак­ториала.

Читать »

Генерация XSLT из XSLT

Добавлено Дата: 10 January, 2011 категория: XSLT

Задача

Требуется сгенерировать XSLT-код из другого XML-представления. Или пре­образовать один код на XSLT или псевдо-XSLT в другой.

Решение

Иногда меня раздражают два аспекта управляющих конструкций в XSLT. Первый – отсутствие конструкции if-then-elsif-else; второй – отсутствие настоящих циклов. Конечно, я знаю о существовании команд xsl:choose и xsl:for-each, но у каждой из них есть недостатки. Так, xsl:choose мне не нравится, потому что у элемента choose нет никакого иного назначения, кроме организации дополнительного уровня вложенности. А xsl:for-each – не столько цикл, сколько конструкция для итерирования. Чтобы эмулировать поведение цикла со счетчиком, приходится прибегать к рекурсии или методу Пиза (см. рецепт 2.5), а это не красиво.

Читать »