<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Garbage Collector &#187; Javascript</title>
	<atom:link href="http://garbage-collector.ru/cats/dogs/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://garbage-collector.ru</link>
	<description>Журнал о Flash, Flex, AIR, Grails и разработке Rich Internet Applications в условиях, приближенных к реальным</description>
	<lastBuildDate>Sun, 16 May 2010 17:08:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ShrinkSafe – не красиво, зато мало и быстро</title>
		<link>http://garbage-collector.ru/2007/04/shrinksafe_ugly_but_little_n_fast.html</link>
		<comments>http://garbage-collector.ru/2007/04/shrinksafe_ugly_but_little_n_fast.html#comments</comments>
		<pubDate>Wed, 11 Apr 2007 10:26:03 +0000</pubDate>
		<dc:creator>Vooparker</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.garbage-collector.ru/gc/2007/04/11/shrinksafe-ugly-but-little-n-fast/</guid>
		<description><![CDATA[Не знаю как вы, а я очень люблю красоту отформатированного кода. И дело не только в эстетическом аспекте, но и в том, что разобраться в таком коде намного проще. А если где-то что-то не понятно на помощь приходят всякого рода комментарии. Но вся эта красота может сказаться на производительности, если речь идет о некомпилируемых языках, [...]]]></description>
			<content:encoded><![CDATA[<p>Не знаю как вы, а я очень люблю красоту отформатированного кода. И дело не только в эстетическом аспекте, но и в том, что разобраться в таком коде намного проще. А если где-то что-то не понятно на помощь приходят всякого рода комментарии. Но вся эта красота может сказаться на производительности, если речь идет о некомпилируемых языках, таких как JavaScript. А ведь хочется и красоты, и производительности. И вот здесь нам на помощь приходят так называемые<br />
<href="http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%82%D0%BE%D1%80">обфускаторы</a>.<br />
Принцип действия такой: берем файл с красиво оформленным, хорошо задокументированным кодом (я так полагаю, именно такие файлы вы пишите) и отдаем его обфускатору, обфускатор производит с кодом некоторые манипуляции, после чего, если мы пожелаем, результат своей работы сохраняет в файл. Размер получившегося файла значительно меньше, а сам код начинает работать куда быстрее, правда читать такой код очень сложно. То есть получается не красиво, зато мало и быстро.</p>
<p>Свой выбор по совету товарища (Димон, спасибо!) я остановил на <a href="http://alex.dojotoolkit.org/shrinksafe/">ShrinkSafe</a>. Ознакомившись с весьма «не большой» <a href="http://dojotoolkit.org/docs/shrinksafe">докой</a> и опробовав ShrinkSafe в деле, я подумал, что было не плохо автоматизировать его использование при сборке проекта. Отлично, этим и займемся.</p>
<p>Нам потребуются:</p>
<ul>
<li><a href="http://www.java.com/getjava/">jre</a></li>
<li>«антструмент» <a href="http://ant.apache.org/">Ant</a></li>
<li>ну и конечно сам <a href="http://svn.dojotoolkit.org/dojo/trunk/buildscripts/lib/custom_rhino.jar">ShrinkSafe</a> в виде <code>jar</code></li>
</ul>
<p>Как проинсталить jre не буду рассказывать, а про ant можно почитать <a href="http://constantiner.blogspot.com/2006/02/flash-apache-ant-new-media.html">здесь</a>. Что уже прочитали и проинсталили? Ну что ж, переходим к ShrinkSafe.</p>
<p>Я обычно храню подобные инструменты в папке <code>C:\Program Files\tools\</code>. Поэтому в этой папке я создал папку <code>ShrinkSafe</code> и положил туда скаченный <code>jar</code>. Вы же можете разместить <code>jar</code> где вам угодно, только не забудьте где. =)</p>
<p>Ну что ж переходим к написанию задачи. Но сначала предлагаю кое-что вынести в файл <code>build.propeties</code> (который не забываем подключить к основному <code>build.xml</code>). Скажем вот такую строку:</p>
<pre><code>shrinksafe=C:/Program Files/tools/ShrinkSafe/custom_rhino.jar</code></pre>
<p>Ну что ж добрались до самого главного. Пишем задачу в <code>build.xml</code>:</p>
<pre><code>&lt;target name="copyjs"&gt;
&lt;exec executable="java" output="[путь_до_сжатого_файла]js-lib-compressed.js"&gt;
	&lt;arg line="-jar '${shrinksafe}' -c [путь_до_исходного_файла]js-lib.js" /&gt;
&lt;/exec&gt;
&lt;/target&gt;
</code></pre>
<p>В итоге, я теперь работаю с красивым и читабельным js кодом, при этом  эта красота никак не сказывается на производительности этого кода, плюс весь процесс обфускации автоматизирован. Так что название статьи может звучать и так: <strong>ShrinkSafe &mdash; красиво, мало и быстро</strong>. На этом на сегодня все, желаю успехов.</p>
]]></content:encoded>
			<wfw:commentRss>http://garbage-collector.ru/2007/04/shrinksafe_ugly_but_little_n_fast.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
