Работа с legacy-xsl-кодомЕвгения Фирсоваsaigo@yamoney.ru презентация

Содержание

ПЕРВЫЙ ЭТАП - ПОНИМАНИЕ

Слайд 1Работа с legacy-xsl-кодом Евгения Фирсова saigo@yamoney.ru


Слайд 2ПЕРВЫЙ ЭТАП - ПОНИМАНИЕ


Слайд 3Написание документации
Не скатываемся в простое перечисление вызовов, шаблонов, переменных.

Описываем логику, а

не алгоритм (отвечаем на вопрос «зачем», а не «как»).

Пишем не для себя, а для «того парня», который ничего о внутреннем устройстве проекта не знает.




Слайд 4Написание документации
Комментировать код – рано:
собираем документацию воедино
не создаём лишние ревизии




Слайд 5XSL

XSL

Document-oriented text


XML

Schema

Document-oriented text

DocBook
Пусть код описывает себя сам.




Написание документации


Слайд 6Написание документации
XSLDoc от Jeni Tennison (http://www.jenitennison.com/xslt/utilities)





Слайд 7Статистическое исследование кода
Коммерческие продукты с функциональностью рефакторинга:
Microsoft Visual Studio
IntelliJ IDEA
Eclipse
oXigen

рефакторинг с

использованием шаблонов
автоматическое создание шаблонов
переименование шаблонов и переменных

Слайд 8Статистическое исследование кода
Скриптовые языки, поддерживающие regexp:

open(InFile, "get_regexp.xsl") || die;
while ($line =

)
{
if ($line =~ //)
{
$match = $1;
$mode = $3 ne "" ? "with mode $3" : "";
print "we apply template $match $mode\n";
}
}
close (InFile);

Слайд 9Статистическое исследование кода
Скриптовые языки, поддерживающие DOM:

xfile.setProperty "SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'"
set templates = xfile.selectNodes("//xsl:template")
for

each template in templates
line = ""
if template.getAttribute("match") > "" then
line = "we apply template " & template.getAttribute("match")
end if
if template.getAttribute("mode") > "" then
line = line & " with mode " & template.getAttribute("mode")
end if
WScript.Echo line
next

Слайд 10Статистическое исследование кода
XSL.
XML/XSL

XSL

Statistic text


Слайд 11Взлом «чёрных ящиков»
Коммерческие отладчики.
XMLSpy Debugger

слежение за контекстом
вычисление XPATH-выражений
пошаговое

выполнение
XPATH-точки слежения и останова
список вызванных шаблонов, включая встроенные




Слайд 12Взлом «чёрных ящиков»
xsltproc --verbose
xsltCompilePattern : parsing 'page'
xsltCompilePattern : parsed page, default

priority 0.000000
added pattern : 'page' priority 0.000000
Found AVT href: {url}
xsltCompilePattern : parsing 'test'
xsltCompilePattern : parsed test, default priority 0.000000
added pattern : 'test' priority 0.000000
parsed 3 templates
Resolving attribute sets references
Registered 0 modules
Creating sub-dictionary from stylesheet for transformation
reusing transformation dict for output
Registering global variables
Registering global variables from xsltproc_test.xsl
xsltProcessOneNode: applying template '/' for /
xsltApplyOneTemplate: copy node html
xsltApplyTemplates: select page
xsltApplyTemplates: list of 1 nodes
xsltProcessOneNode: applying template 'page' for page
xsltApplyOneTemplate: copy node head
xsltApplyOneTemplate: copy node title

Слайд 13Взлом «чёрных ящиков»
Текстовые маркеры.



***

-->







Слайд 14Взлом «чёрных ящиков»
Восстановление исходного XML-документа по вызываемым шаблонам.




select="descr"/>



Слайд 15Восстановление исходного XML-документа по вызываемым шаблонам.





target="_blank">{../name}

Взлом «чёрных ящиков»



Слайд 16Взлом «чёрных ящиков»
Плагины к FireFox:
Web Developer
Live HTTP headers
FireBug


Слайд 17ВТОРОЙ ЭТАП – ИЗМЕНЕНИЕ/REFACTORING


Слайд 18Не жадничать…
С каких частей проекта стоит начинать refactoring?

с наиболее значимых в

бизнес-плане частей;

с наиболее сложных по реализации частей;

с наиболее уязвимых частей.

Слайд 19Не жадничать…
xsltproc --profile


Слайд 20Не жадничать…
XMLSpy Profiler.

количество вызовов

время работы с и без учёта

времени выполнения вложенных инструкций

время выполнения XPATH-выражений

Слайд 21Не играть с тенью…
Пусть лучше работает плохо, чем не работает никак.
Пусть

медленно, но с меньшим количеством ошибок.
Не называть точных сроков.

Слайд 22Разделять и властвовать…
XForms – изменение функциональности.



mode="element"/>










Слайд 23Разделять и властвовать…
DocBook – расширение функциональности.











Слайд 24Отделять ресурсы от кода…
css;

javascript, в той части, которая не зависит от

xsl-кода;

тексты, относящиеся к интерфейсу:
многоязычность;
удалённое редактирование;
«быстрые» изменения.


Слайд 25Оптимизировать xsl-код…
Зачем?
удобно
быстро

продолжение в следующей серии…



Слайд 26Евгения Фирсова

http://money.yandex.ru
e-mail: saigo@yamoney.ru
icq: 169866344


Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика