рд╣рд╛рдп% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%,
рдЖрдЬ, рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЛ рдЕрдкрдиреЗ рдорд┐рддреНрд░ рдирд┐рдХреЛрд▓рд╛рдИ рдмрд╛рдмрд┐рдВрд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ -
рдХреИрдХреНрдЯрд╕ рдУрдмрдлрд╕рдХреЗрдЯрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
Cactus Obfuscator рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдХреЛрдб рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рддреАрди-рдореЙрдбреНрдпреВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред
рдХреИрдХреНрдЯрд╕ Obfuscator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
рдЕрдкрд╛рдЪреЗ рдорд╛рд╡реЗрди рдорд╛рд╡реЗрди рд╕рдВрд╕реНрдХрд░рдг 2-3 рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИред
рдпреВрдпреВрдЖрдИ рдХрдВрдкреНрд░реЗрд╕рд░ - рдЬреЗрдПрд╕ / рд╕реАрдПрд╕рдПрд╕ рдУрдлрд╝реНрдлрд╝реНрдпреВрд╕реЗрд╢рдиред
рд╕рд░рд▓ XML - XML тАЛтАЛрдореИрдкрд┐рдВрдЧ рдФрд░ (рдбреА) рдХреНрд░рдорд╛рдВрдХрдиред
рд╕рд╛рдордЧреНрд░реА:
1. рдПрдХ рдорд╛рд╡реЗрди рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
2. рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
3. рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ (XML) рдХрд╛ рдирд┐рд░реНрдорд╛рдгредрдХреИрдХреНрдЯрд╕ рдХреЛ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдорд╛рд╡реЗрди рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рднреАред
рдорд╛рд╡реЗрди рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВредрдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдорд╛рд╡реЗрди рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдорд╛рд╡реЗрди рд╕рдВрд╕реНрдХрд░рдг 2 рдпрд╛ 3 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рд╡реЗрди
рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 3 рдХреЗ рд▓рд┐рдП рдХреИрдХреНрдЯрд╕-рдкреНрд▓рдЧрдЗрдиред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, * .jar рд╕рдВрд╕реНрдХрд░рдг 2 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рд╕реЗ рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕рдПрдордПрд╕ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП) ред
1. рд╕реНрд░реЛрдд рд╕реЗ рдХреИрдХреНрдЯрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ:
git clone git@github.com:nbabinski/Cactus.git cd Cactus
- рд╕реНрдерд╛рдкрдирд╛:
mvn install
2. рд╕рдВрдХрд▓рд┐рдд рдХреИрдХреНрдЯрд╕-рдкреНрд▓рдЧрдЗрди.рдЬрд░ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред
рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦреЗрдВ:
mvn install:install-file -Dfile=DOWNLOAD_FOLDER/cactus-plugin.jar -DgroupId=com.cactus -DartifactId=cactus-plugin -Dpackaging=maven-plugin -Dversion=0.1
Cactus-plugin.jar рдХреЗ рд▓рд┐рдП "DOWNLOAD_FOLDER" рдкрде рдХрд╣рд╛рдБ рд╣реИ
рдпрджрд┐ рд╕реНрдерд╛рдкрдирд╛ рд╕рдлрд▓ рд░рд╣реА, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.702s
[INFO] Finished at: Tue Apr 19 01:36:31 EEST 2011
[INFO] Final Memory: 2M/48M
рдмрдзрд╛рдИ рд╣реЛ, рдХреИрдХреНрдЯрд╕ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ pom.xml рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
<build> <plugins> ... <plugin> <groupId>com.cactus</groupId> <artifactId>cactus-plugin</artifactId> <version>0.1</version> <configuration> <jsBaseDirectory>src/main/webapp/js</jsBaseDirectory> <outputDirectory>cache</outputDirectory> </configuration> <executions> <execution> <goals> <goal>obfuscate</goal> </goals> </execution> </executions> </plugin> ... </plugins> </build>
рдЬрд╣рд╛рдВ:
рдЖрдзрд╛рд░рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ - (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ $ {project.basedir} рд╣реИред
jsBaseDirectory - (рдЖрд╡рд╢реНрдпрдХ) JavaScript / CSS рдХреЛрдб рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП baseDirectory рд╕реЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдеред
confingDirectory - (рд╡реИрдХрд▓реНрдкрд┐рдХ) cactus.xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ jsBaseDirectory рдХреЗ рд╕рдорд╛рди рд╣реИред
outputDirectory - (рд╡реИрдХрд▓реНрдкрд┐рдХ) jsBaseDirectory рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдкрде рд╕рдВрд╕рд╛рдзрд┐рдд / obfuscated рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рдеред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдореЛрдб - (рд╡реИрдХрд▓реНрдкрд┐рдХ) рджреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рд╣реИрдВ - рдкреНрд░реЛрдбрдХреНрд╢рди / рдбреЗрдмрдЧред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореЛрдб рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдлрд╝рд╛рдЗрд▓реЗрдВ рдЪрд┐рдкрдХреА рдФрд░ рдмрд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИрдВред DEBUG рдореЛрдб рдореЗрдВ - рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдзрд┐рдд рдирд╣реАрдВред
Pom.xml рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
mvan рдкреИрдХреЗрдЬ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреИрдХреНрдЯрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд╕рднреА рдХреА рдЬрд░реВрд░рдд рд╣реИ рдПрдХ cactus.xml рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рдПрдХ рдмрд╛рд░ cactus.xml рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ:
mvn com.cactus:cactus-plugin:obfuscate
рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВредрдХреИрдХреНрдЯрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рд╡реЗрди рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╕ рдХрдВрд╕реЛрд▓ рд╕реЗред рд╣рдо рд╕рднреА рдХреА рдЬрд░реВрд░рдд рд╣реИ рдПрдХ JVM рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
1. рдПрдХ cactus.xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред
2. рдХреИрдХреНрдЯрд╕-рдЙрдкрдХрд░рдг рдЪрд▓рд╛рдПрдБ:
java -jar cactus-tool.jar
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреИрдХреНрдЯрд╕-рдЯреВрд▓ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ -c рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - cactus.xml рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдкрдеред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИрдВ:
-d - рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде
-o - рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдмрд┐рдВрджреБ рдЬреЛ рдУрдлрд┐рд╕рдХреЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ -d рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛
-m - рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрддреНрдкрд╛рджрди / DEBUG рдореЛрдбред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
java -jar cactus-tool.jar -d ../web/js -o cache
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ (XML) рдмрдирд╛рдирд╛рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓:
<?xml version="1.0" encoding="UTF-8"?> <cactus> <js> <needles> <needle> <output>ext-3.1.0.js</output> <files> <file>https://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core-debug.js</file> </files> </needle> <needle> <output>jquery-1.5.2.js</output> <files> <file>https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js</file> </files> </needle> </needles> </js> <css> <needles> <needle> <output>test.css</output> <files> <file>YOUR_CSS_FILE_HERE</file> </files> </needle> </needles> </css> </cactus>
рдЙрджрд╛рд╣рд░рдг рддреАрди рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИ (рд╕реБрдЗрдпреЛрдВ, рдЕрдиреБрд╡рд╛рдж рдореЗрдВ - рд╕реБрдЗрдпреЛрдВ, рдЗрд╕рд▓рд┐рдП, рдФрд░ рдХреИрдХреНрдЯрд╕, рддрдереНрдп рдХреА рдмрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ): ext-3.1.0.js, jquery-1.5.2.js рдФрд░ test.css
рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж:
mkdir cactus-test
cd cactus-test
//copy cactus.xml and cactus-tool.jar in cactus-test folder
java -jar cactus-tool.jar -c PATH_TO_CACTUS_CONFIG_FOLDER
- рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ 2 js рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓реЗрдВрдЧреАред
рдлрд╝рд╛рдЗрд▓ рдЯреИрдЧ рдЖрдкрдХреЛ URL, рдкрде, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рднреА рдлрд╝реЛрд▓реНрдбрд░ BASE рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА (-c) рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП:
|-root
|--batch
| | - cactus-tool.jar
|--webapp
|----js
| |--cactus.xml
| |--boo.js
| |--foo.js
| |--utils
| | |--array.js
| | |--string.js
| | |--parser
| | | |--xmlparser.js
| |--cache
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд cactus.xml рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<?xml version="1.0" encoding="UTF-8"?> <cactus> <js> <needles> <needle> <output>test.js</output> <files> <file>boo.js</file> <file>utils</file> <file>utils/parser/xmlparser.js</file> </files> </needle> </needles> </js> </cactus>
рдЕрдЧрд▓рд╛, рд░реВрдЯ / рдмреИрдЪ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдХреИрдХреНрдЯрд╕-рдЯреВрд▓ рдЪрд▓рд╛рдПрдБ:
java -jar cactus-tool.jar -c ../webapp/js -d ../webapp/js -o cache
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, cactus.xml js рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП -c рдФрд░ -d рд╡рд┐рдХрд▓реНрдк рд╕рдорд╛рди рд╣реИрдВред
рдирддреАрдЬрддрди, рд╣рдо рд░реВрдЯ / webappjs / рдХреИрд╢ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ test.js рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ boo.js рдлрд╝рд╛рдЗрд▓ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдФрд░ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдмрд░реНрддрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ utils / parser / xmlparser.js рд╕реЗ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВред
рдлрд╝рд╛рдЗрд▓ рдЯреИрдЧ рдХрд╛ рдЕрдиреБрдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдкрд░рд┐рдгрд╛рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпреБрдкреАрдбреАрдХрд▓реА рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рд╡рд╛рдж рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрдЯреМрддреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХрд┐
YUI рдХрдВрдкреНрд░реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдХреНрд╖реЗрдк рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ, рдХреИрдХреНрдЯрд╕ рдХреЛ рдЬреЗрдПрд╕ / рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
рд╕рдВрдкреАрдбрд╝рди рд╕реЗ рдкрд╣рд▓реЗрд╕рдВрдкреАрдбрд╝рди рдХреЗ рдмрд╛рдж