<?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>Очередной блог фрилансера &#187; инструменты</title>
	<atom:link href="http://dreamhelg.ru/tag/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://dreamhelg.ru</link>
	<description>о моей работе в сети и не только</description>
	<lastBuildDate>Fri, 23 Dec 2011 07:10:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Инструменты для тестирования и отладки в IE</title>
		<link>http://dreamhelg.ru/2010/03/debugging-and-testing-tools-in-ie/</link>
		<comments>http://dreamhelg.ru/2010/03/debugging-and-testing-tools-in-ie/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 05:00:02 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[общая]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[инструменты]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1920</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/03/home1.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>Очень часто, при разработке проекта, его тестирование в Internet Explorer откладывают до последнего. И это вполне нормально, если ваши проблемы в основном связаны с версткой страницы.

Однако, во время разработки веб-приложения с большим количеством различных функций, вполне возможно появление другого рода проблем: постоянная отладка, производительность на клиентской стороне, проприетарные проблемы и многое другое. В любом случае, производить отладку в IE не всегда так же комфортно, как в других браузерах.<span id="more-1920"></span>

В сегодняшней статье, мы рассмотрим различные наборы инструментов, которые помогут вам сделать процесс отладки и тестирования в IE, более приятным.
<h3>Сборки браузеров</h3>
<p style="text-align: center;"><a href="http://dreamhelg.ru/wp-content/uploads/2010/03/browserpackages.jpg"><img class="size-full wp-image-1947 aligncenter" title="browserpackages" src="http://dreamhelg.ru/wp-content/uploads/2010/03/browserpackages.jpg" alt="" width="550" height="225" /></a></p>
В первую очередь конечно же нужно установить все популярные версии Internet Explorer (IE6, IE7, IE8). Для этого существует множество различных решений, я расскажу о четырех из них.
<h3>Internet Explorer Collection</h3>
Лично я рекомендую использовать – <a href="http://utilu.com/IECollection/">Internet Explorer Collection</a>. Не пугайтесь, это очень надежный инструмент (несмотря на внешний вид их сайта). Internet Explorer Collection содержит множество версий IE, совершенно независимых друг от друга, так что их можно использовать одновременно.

Я рекомендую эту сборку главным образом потому, что их браузеры весьма стабильны. Кроме того, Internet Explorer Collection содержит Internet Explorer Developer Toolbar.
<h3>BrowserSeal.BrowserPack</h3>
Если вам требуются более старые версии других браузеров, я рекомендую установить <a href="http://www.browserseal.com/?option=com_content&amp;view=article&amp;id=35">BrowserSeal.BrowserPack</a>. Он использует, упомянутый выше Internet Explorer Collection, и кроме того, позволяет установить браузеры типа Safari3 и Opera 9.

Браузеры, входящие в состав BrowserSeal.BrowserPack стабильны и не имеют никаких выявленных проблем.
<h3>IETester</h3>
<a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a> имеет некоторые преимущества в сравнении с другими сборками, например такие как открытие разных версий IE в табах.

IETester разрабатывается командой DebugBar, которая так же предоставляет замечательные инструменты отладки DebugBar и Companion.js (оба рассмотрены в сегодняшней статье).

К сожалению, IETester (версии 0.4.2) остается весьма ненадежным приложением, к тому же во время отладки находятся некоторые несоответствия. Будем надеяться, что рано или поздно эти проблемы будут исправлены, и мы сможем взять IETester на вооружение.
<h3>Microsoft Expression Web SuperPreview</h3>
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&amp;displaylang=en">Microsoft Expression Web SuperPreview</a> – это полноценное приложение и часть продукта <a href="http://www.microsoft.com/expression/products/Web_Overview.aspx">Microsoft Expression Web 3</a>. Главное его назначение – это возможность сравнить одну и ту же страницу одновременно в IE6, IE7 и IE8.

На мой взгляд, это приложение не предназначено для отладки и тестирования.
<h3>Основные инструменты отладки</h3>
<a href="http://dreamhelg.ru/wp-content/uploads/2010/03/generaldebugging.jpg"><img class="aligncenter size-full wp-image-1948" title="generaldebugging" src="http://dreamhelg.ru/wp-content/uploads/2010/03/generaldebugging.jpg" alt="" width="550" height="225" /></a>

Скорее всего, для отладки в Firefox, вы используете Firebug. И возможно, вы также слышали о Firebug Lite и даже использовали его. Далее, вы узнаете какие еще способы можно использовать для отладки кода под Internet Explorer.
<h3>Firebug Lite</h3>
Конечно же, вы уже знакомы с Firebug Lite. Если нет, читайте далее. <a href="http://getfirebug.com/firebuglite">Firebug Lite</a> – это javascript-файл, который можно подключить к странице, чтобы получить возможность использовать некоторые функции Firebug, в других браузерах.

Скажу сразу, я не являюсь большим фанатом Firebug Lite. Во-первых потому, что большинство возможностей консоли недоступны в других браузерах. Во-вторых, он не всегда хорошо работает. Мне не раз приходилось сталкиваться с рядом проблем в IE, поэтому не стоит концентрироваться только на этом инструменте.
<h3>IE Developer Toolbar</h3>
Возможно, вы знакомы с инструментами разработчика под IE8. <a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en">IE Developer Toolbar</a> – практически тот же самый инструмент для IE6 и IE7. И кроме того, он поставляется вместе со сборкой IE Collection, по умолчанию.

IE Developer Toolbar прост в использовании и предоставляет широкий набор средств для отладки. По функциональности, его можно сравнить с Web Developer – дополнением для Firefox.
<h3>DebugBar</h3>
Все, чего вам не хватило в Developer Toolbar, вы найдете в <a href="http://www.debugbar.com/">DebugBar</a>. В большинстве случаев, когда вам требуется найти что-либо за пределами документа, вам поможет DebugBar. Он очень быстрый и надежный.

Если бы требовалось описать DebugBar в двух словах, то достаточно сказать “он работает!”.
<h3>CompanionJS</h3>
<a href="http://www.my-debugbar.com/wiki/CompanionJS/HomePage">Companion.js</a> интегрируется с IE, и вполне может быть назван простейшей версией Firebug. В отличие от Firebug Lite, Companion.js, имеет более удобную консоль и отчеты об ошибках.

К сожалению, в Companion.js есть два серьезных недостатка: 1) он пока не поддерживает методы типа console.dir(); и 2) иногда вываливается в ошибку, при совместном использовании с другими инструментами разработчика для IE.
<h3>Инструменты тестирования производительности</h3>
<a href="http://dreamhelg.ru/wp-content/uploads/2010/03/performancetesting.jpg"><img class="aligncenter size-full wp-image-1949" title="performancetesting" src="http://dreamhelg.ru/wp-content/uploads/2010/03/performancetesting.jpg" alt="" width="550" height="225" /></a>

Клиентское тестирование производительности и оптимизация – это практика, которая долгое время “не существовала” в веб-разработке. Я имею в виду, что ей долгое время не уделяли должного внимания.

Как вам наверное известно, Internet Explorer (особенно IE6), не настолько хорош, особенно в сравнении с другими браузерами. Но, когда вы начнете тестировать производительность в IE6, вы удивитесь, насколько незначительные вещи могут влиять на скорость работы сайта.

Далее рассмотрены некоторые инструменты тестирования производительности, которые можно использовать в любом браузере, не столько в Internet Exploer.
<h3>dynaTrace AJAX</h3>
Если вы используете Speed Tracer в Google Chrome, тогда вы полюбите <a href="http://ajax.dynatrace.com/pages/">dyna Trace AJAX</a>. Название говорит само за себя – он используется для диагностики и отслеживания AJAX, а также проблем с производительностью клиентских скриптов. Кроме того, в дополнение, он предоставляет инструменты для отслеживания проблем рендера (отрисовки) и сетевой загрузки.

dynaTrace AJAX не самый простой в использовании инструмент. Однако в их <a href="http://blog.dynatrace.com/">одноименном</a> блоге, вы найдете множество полезной информации, об применении этого мощного приложения. Установите dynaTrace AJAX, и разрешите все проблемы производительности, замедляющие работу сайта в Internet Explorer.
<h3>MySpace’s Perfomance Tracker</h3>
<a href="http://msfast.myspace.com/">MySpace’s Perfomance Tracker</a> или “<a href="http://code.google.com/p/msfast/">msfast</a>” – это плагин для браузера, который помогает разработчикам улучшить производительность кода, путем сбора и измерения возможных “узких мест”, на веб-странице.

У меня возникли небольшие проблемы, при установке бета-версии. Но после того, как была установлена альфа-версия и произведено обновление до бета-версии, все заработало.
<h3>JSLitmus</h3>
<a href="http://www.broofa.com/Tools/JSLitmus/">JSLitmus</a> – это простой инструмент для создания специализированных JavaScript-тестов. Я особенно рекомендую использовать JSLitmus для тестирования производительности всего вашего JavaScript-кода.

JSLitmus предоставляет дополнительные преимущества в Internet Explorer. Как известно, в IE, существуют  проблемы с JavaScript, способные нанести серьезный удар по производительности. Но если вы заранее создадите несколько простых тестов, то времени на поиск и решение этих проблем уйдет гораздо меньше.
<h3>Fiddler2</h3>
<a href="http://www.fiddler2.com/fiddler2/">Fiddler</a> – это отладочный прокси-сервер, ведущий логи всего HTTP(S) трафика. Fiddler позволяет вам проверить весь HTTP(S) трафик, установить точки прерывания и “играть” с исходящими и входящими данными. Fiddler включает мощную скриптовую подсистему, и может быть расширен с помощью любого .NET языка.

Если честно, я практически не использую Fiddler. В основном потому, что проблемы производительности связанные с трафиком сайта, всегда решаются с помощью другого инструмента (в другом браузере). Но Fiddler на самом деле дает отличное понимание того, что действительно происходит между браузером и сервером, и кроме того предоставляет большое количество настроек.
<h3>Другие ресурсы</h3>
Во время написания статьи, мне попался инструмент под названием <a href="http://www.ieinspector.com/">IEInspector</a>. Инструмент платный, но есть бесплатная демо-версия. У меня не было времени рассмотреть его подробнее, возможно вы захотите попробовать его.

Кроме того, на сайте Microsoft Windows, есть <a href="http://www.microsoft.com/windows/internet-explorer/readiness/testing-tools.aspx">список</a>, в котором перечислены полезные инструменты для тестирования и разработки приложений под Internet Explorer 8.

Существует еще множество других интересных приложений и сервисов, которые не рассмотрены в этой статье. Если вы знаете хорошие инструменты тестирования и отладки кода под Internet Explorer, оставляйте ссылки в комментариях.

Перевод статьи "<a href="http://samuli.hakoniemi.net/debugging-and-testing-in-internet-explorer-made-easy/">Debugging and Testing in Internet Explorer Made Easy</a>", автор <strong>Samuli Hakoniemi</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/03/debugging-and-testing-tools-in-ie/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Меркуриал. Разрешение конфликтов</title>
		<link>http://dreamhelg.ru/2009/12/mercurial-resolve-conflicts/</link>
		<comments>http://dreamhelg.ru/2009/12/mercurial-resolve-conflicts/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 08:12:19 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[общая]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[tortoiseHG]]></category>
		<category><![CDATA[инструменты]]></category>
		<category><![CDATA[контроль версий]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1766</guid>
		<description><![CDATA[<p><img width="192" height="200" src="http://dreamhelg.ru/wp-content/uploads/2009/12/konflict_08.jpg" class="attachment-200x200 wp-post-image" alt="konflict_08" title="konflict_08" /></p>В <a href="http://dreamhelg.ru/2009/09/mercurial-merge-work/">предыдущей статье</a>, мы рассматривали совместную работу над одним проектом, изучив базовые приемы объединения двух различных репозиториев в один. В сегодняшней статье, мы рассмотрим более сложную ситуацию – разрешение конфликтующих изменений.<span id="more-1766"></span>Итак, как вы уже заметили ранее, большинство объединений выполняется очень просто, но из всякого правила бывают исключения. Иногда, вы можете столкнуться с тем, что каждая сторона изменений затрагивает одну и ту же часть, одного и того же файла. И если обе модификации не идентичны, то слияние приведет к образованию конфликта, в котором вам придется решить, каким образом «помирить» различные изменения, чтобы получить правильный результат.

<strong>Рисунок 3.4. Конфликтующие изменения документа</strong>

<img class="aligncenter size-full wp-image-1778" title="schema" src="http://dreamhelg.ru/wp-content/uploads/2009/12/schema.png" alt="schema" width="475" height="500" />

Рисунок 3.4.  иллюстрирует пример двух конфликтующих изменений одного и того же документа. Мы начнем с создания первоначальной версии файла, затем произведем в нем небольшие изменения, в то время как кто-нибудь другой, изменит ту же часть текста. Наша задача в разрешении конфликтующих изменений – решить, как именно должен выглядеть наш файл после объединения.

Меркуриал не имеет встроенной возможности разрешения конфликтов. Вместо этого, он использует внешнюю программу, имеющую графический интерфейс.
<h3>Рабочий пример</h3>
В разрешении конфликтующих изменений нет ничего сложного, и сейчас мы на примере разберем эту задачу.

Первое, что нам понадобится – это исходный репозиторий с файлом, который мы впоследствии будем изменять. Создаем папку <em>first</em>, внутри которой, создаем простой текстовый файл, с именем <em>letter.txt</em>, с одним единственным, знакомым многим, предожением:

<img class="aligncenter size-full wp-image-1768" title="letter" src="http://dreamhelg.ru/wp-content/uploads/2009/12/letter.jpg" alt="letter" width="467" height="187" />

Далее запускаем внутри папки командную строку, и поочередно выполняем следующие команды:

<code>$ hg init

$ hg add letter.txt

$ hg commit –m “исходная версия текстового файла”
</code>

Здесь, мы сначала создаем репозиторий, затем добавляем в него наш файл <em>letter.txt</em>, и сохраняем его начальную версию. То же самое можно сделать с помощью графического интерфейса, через контекстное меню, доступное по правому клику мыши.

Далее, клонируем репозиторий <em>first</em>, в репозиторий под названием <em>first-one</em>. Снова используем командную строку:

<code>$ cd ..

$hg clone first first-one</code>

Если вы все сделали правильно, у вас должна появится новая папка с именем <em>first-one</em>, заходим в нее и смело изменяем копию файла <em>letter.txt</em>:

<img class="aligncenter size-full wp-image-1770" title="letter-two" src="http://dreamhelg.ru/wp-content/uploads/2009/12/letter-two.jpg" alt="letter-two" width="486" height="188" />

Сохраняем изменения, и создаем новый коммит:

<code>$ cd first-one

$ hg commit –m “название булок изменено на норвежские”</code>

Отлично, наш первый репозиторий с изменениями готов. Теперь снова вернемся к изначальному репозиторию <em>first</em>, и клонируем его еще раз. В этот раз, имя клонированного репозитория будет <em>first-second</em>:

<code>$ cd ..

$ hg clone first first-second</code>

Заходим внутрь только что клонированного репозитория <em>first-second</em>, и снова изменяем копию файла <em>letter.txt</em>:

<img class="aligncenter size-full wp-image-1769" title="letter-three" src="http://dreamhelg.ru/wp-content/uploads/2009/12/letter-three.jpg" alt="letter-three" width="461" height="185" />

И снова повторяем действия второго этапа, записываем наши изменения:

<code>$ cd first-second

$ hg commit –m “название булок изменено на австрийские”</code>

Отлично, теперь у нас есть две копии одного репозитория, с разными изменениями одной и той же части предложения. Переходим к главной части нашего примера – к объединению. Для того, чтобы не было путаницы, создадим из репозитория <em>first-one</em> клон, и назовем его <em>first-merge</em>. Он как раз и будет содержать объединенные версии двух репозиториев.

<code>$ cd ..

$ hg clone first-one first-merge

$ cd first-merge

$ hg pull –u ../first-second</code>

В вышеприведенном коде, кроме того что мы клонировали новый репозиторий <em>first-merge</em>, мы еще затянули в него изменения из репозитория <em>first-second</em>, так что сейчас он содержит два набора взаимоисключающих изменений. Теперь самое интересное, нам нужно их объединить, так что смело запускаем команду:

<code>$ hg merge</code>

И перед вами должна предстать графическая утилита <strong>Kdiff3</strong>, предназначенная специально для разрешения конфликтов:

<img class="aligncenter size-full wp-image-1772" title="kDiff3" src="http://dreamhelg.ru/wp-content/uploads/2009/12/kDiff3.jpg" alt="kDiff3" width="615" height="438" />

Как раз, на представленном выше скриншоте, она сообщает нам, что у нас есть один конфликт, который не возможно разрешить автоматически. А нам и не нужно автоматически, поэтому жмем кнопку ОК, и внимательно смотрим на окошко:

<img class="aligncenter size-full wp-image-1773" title="kDiff3-2" src="http://dreamhelg.ru/wp-content/uploads/2009/12/kDiff3-2.jpg" alt="kDiff3-2" width="620" height="455" />

Здесь по порядку слева направо отображается:
<ul>
	<li><strong>A</strong> -  набор изменений после которого началась развилка</li>
	<li><strong>B</strong> -  набор изменений, содержащийся в репозитории <em>first-one</em></li>
	<li><strong>C</strong> - набор изменений, затянутый из репозитория first-<em>second</em>.</li>
</ul>
Итак, для того чтобы разрешить конфликтную ситуацию, нам нужно решить, какое же изменение стоит использовать в конечном итоге. Предположим, что свежие австрийские булки будут гораздо лучше на вкус, чем черствые норвежские, поэтому, мы решаем использовать набор изменений <strong>C</strong>, который был получен из репозитория <em>first-second</em>.

Для того чтобы использовать ревизию <strong>C</strong>, можно воспользоваться соответствующей кнопкой на панели инструментов, или пунктом меню «<em>Merge – Select Line(s) from C</em>»

<img class="aligncenter size-full wp-image-1774" title="kDiff3-merge" src="http://dreamhelg.ru/wp-content/uploads/2009/12/kDiff3-merge.jpg" alt="kDiff3-merge" width="620" height="455" />

После этого нажимаем кнопку сохранить, и все окошко можно закрыть. И последний этап – создание коммита полученного объединения, как обычно воспользуемся привычной командой:

<code>$ hg commit –m “объединение двух версий”</code>

Теперь если воспользоваться командой контекстного меню «<em>TortoiseHG – View Changelog</em>», мы сможем увидеть как были объединены наши конфликтующие ветки:

<img class="aligncenter size-full wp-image-1771" title="changelog" src="http://dreamhelg.ru/wp-content/uploads/2009/12/changelog.jpg" alt="changelog" width="672" height="307" />

В данном примере мы рассмотрели простейший конфликт, однако, в процессе совместной работы над проектом, таких конфликтов может быть огромное количество. С помощью утилиты kDiff3,  вы можете либо обрабатывать конфликты построчно, как мы только что сделали и для каждой строки назначать определенную ревизию, либо указать нужную ревизию для всех возникших конфликтов. В этом случае, указанная вами ревизия заменит своим содержанием все конфликтующие изменения, поэтому используйте ее аккуратно.

В статье использовались материалы книги "<a href="http://hgbook.red-bean.com/read/">Mercurial: The Definitive Guide</a>", автор <strong>Bryan O'Sullivan </strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/12/mercurial-resolve-conflicts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Создание прототипа с помощью CSS-фреймворка Grid 960</title>
		<link>http://dreamhelg.ru/2009/10/prototyping-with-the-grid-960-css-framework/</link>
		<comments>http://dreamhelg.ru/2009/10/prototyping-with-the-grid-960-css-framework/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 10:55:06 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[инструменты]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1641</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2009/10/home.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p><a href="http://960.gs/">Grid 960</a> - это CSS Фреймворк, который позволяет разработчикам быстро конструировать прототипы дизайна. Они являются замечательным инструментом для создания макетов. Почему?  Потому что они делают за вас всю тяжелую работу, позволяя получить быстрые результаты.

Звучит отлично, но как это делается? В интернете есть большое количество статей, агитирующих за и против использования CSS-фреймворков, но нет ничего в помощь неопытным читателям. Поэтому в сегодняшней статье мы рассмотрим процесс создания прототипа. Как обычно, можете сразу взглянуть на <a href="http://dreamhelg.ru/demo/grid960/960.html">результат</a>.<span id="more-1641"></span>

Представьте, что вы получили дизайн, и вам нужно сверстать его для клиента. Из этой статьи вы познакомитесь с  основами Grid, проектированием сетки дизайна и кодированием прототипа. Мы будем использовать довольно простой дизайн, использующий большинство возможностей Grid  960, который поможет вам получить основную базу знаний для дальнейшей работы. После того, как вы ознакомитесь с представленным ниже дизайном, давайте начнем изучение принципов работы Grid 960.
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1652" title="final" src="http://dreamhelg.ru/wp-content/uploads/2009/10/final.png" alt="final" width="690" height="718" /></p>

<h3>Создание Сетки</h3>

Grid 960 работает на основе наследования классов. Этот фреймворк предоставляет две сетки: 12 и 16 колонок. Основной контейнер всегда имеет ширину 960px. Использование числа 960 позволяет применять большинство различных комбинаций колонок, без усложнения работы с ними. Для верстки этого дизайна, мы будем использовать сетку из 12-ти колонок, но мы не будем использовать все 12 колонок. Каждой ячейке сетки назначено свойство margin: 0 10px. Это создает промежуток в 20 пикселей. При создании строки, сумма ширины всех элементов добавляется к 960. Взгляните на демонстрационную страницу Grid 960. Вы увидите сетку со всеми видами комбинаций.  Каждая ячейка сетки имеет класс, который определяет, какой она будет ширины. Далее представлена разбивка ширины столбцов для 12-ти колоночной сетки:
<ol>
	<li>60px</li>
	<li>140px</li>
	<li>220px</li>
	<li>300px</li>
	<li>380px</li>
	<li>460px</li>
	<li>540px</li>
	<li>620px</li>
	<li>700px</li>
	<li>780px</li>
	<li>860px</li>
	<li>940px</li>
</ol>
Каждая ширина соответствует имени класса, оформленного в виде: grid_X, где X это порядковый номер из представленного выше списка. Если вам нужен блок, шириной 940px, используйте класс grid_12. Откуда же Grid 960 знает, какая должна использоваться ширина? Каждый grid_X представляет собой селектор container_Y .grid_X, где значение Y равно 12 либо 16 колонок.

Давайте немного рассмотрим сам код. Вот как можно создать сетку из двух строк в 12-ти колоночном контейнере. Здесь первая строка шириной 940 пикселей, и вторая строка содержит две одинаковых колонки.

[html]
&lt;div class=&quot;container_12&quot;&gt;   
    &lt;div class=&quot;grid_12&quot;&gt;&lt;p&gt;940px&lt;/p&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_6&quot;&gt;&lt;p&gt;460px&lt;/p&gt;&lt;/div&gt;     
    &lt;div class=&quot;grid_6&quot;&gt;&lt;p&gt;460px&lt;/p&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
&lt;/div&gt;   
[/html]

Когда вы создаете строку в сетке, убедитесь, что все дочерние номера gird_X в сумме дают число колонок, которое вы используете. Это гарантирует правильную ширину. Два дива с классом grid_6, дают в сумме 12. Вы не ограничены только этими значениями, и также можете использовать 6, 4 и 2. Вот и все, сетка готова для контента. Теперь, после того как вы узнали как работает Grid 960, давайте посмотрим как создается макет.

<h3>Макет</h3>

Визуализировать сетку дизайна довольно легко. Будет одна строка для картинки заголовка, строка для навигации, строка с двумя колонками для статьи заголовка и постера, разделитель, 4 колонки, затем подвал, состоящий из трех колонок.

<p style="text-align: center;"><img class="aligncenter size-full wp-image-1653" title="grid" src="http://dreamhelg.ru/wp-content/uploads/2009/10/grid.png" alt="grid" width="597" height="304" /></p>
После визуализации, вы должны понимать, как создать сетку макета. Используя значения ширины в имени класса, из приведенного списка, давайте вместе составим код. Помните, что необходимо добавлять очищающий div в конце каждой строки. Не забудьте включить CSS-файлы, входящие в состав Grid 960.

[html]
&lt;div class=&quot;container_12&quot;&gt;   
    &lt;div class=&quot;grid_12&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
  
       
    &lt;div class=&quot;grid_12&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt; &lt;/div&gt;   
       
    &lt;div class=&quot;grid_7&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_5&quot;&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
       
    &lt;div class=&quot;grid_12&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
       
    &lt;div class=&quot;grid_3&quot;&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;grid_3&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_3&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_3&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
  
       
    &lt;div class=&quot;grid_12&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
       
    &lt;div class=&quot;grid_4&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_4&quot;&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;grid_4&quot;&gt;&lt;/div&gt;   
&lt;/div&gt;   
[/html]

Скелет готов. Пришло время накладывать дизайн. Зеленые панели – это просто блоки с фоновым цветом и высотой. У панели навигации высота не задана. Вместо этого, она будет контролироваться размером внутренних ссылок. Не забудьте добавить картинку заголовка.

[css]
div.spacer {   
    background-color: #8FC73E;   
    height: 1em;   
}   
  
div#navbar {   
    background-color: #8FC73E;   
    padding: 10px 0;   
}   
[/css]

Применение классов для корректировки блоков grid_12 и установка ID

[html]
&lt;div class=&quot;container_12&quot;&gt;   
    &lt;div class=&quot;grid_12&quot;&gt;&lt;a href=&quot;images/header.png&quot; alt=&quot;&quot;/&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
  
       
    &lt;div class=&quot;grid_12&quot; id=&quot;navbar&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt; &lt;/div&gt;   
       
    &lt;div class=&quot;grid_7&quot;&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;grid_5&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
       
    &lt;div class=&quot;grid_12 spacer&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
  
       
    &lt;div class=&quot;grid_3&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_3&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_3&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_3&quot;&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
       
    &lt;div class=&quot;grid_12 spacer&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;   
       
    &lt;div class=&quot;grid_4&quot;&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;grid_4&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_4&quot;&gt;&lt;/div&gt;   
&lt;/div&gt;   
[/html]

Центральным колонкам не требуются никакие эффекты. Добавим немного текста для заполнения дизайна. Прежде, чем приступать к верхней части, взглянем на подвал. На скриншоте подвал однородного цвета. У вас не получится реализовать это с существующим кодом. Оборачивающий div, вокруг этих трех колонок решит проблему. Вы думаете, ничего страшного, просто нужно вставить div. Но этот див поломает сетку, поскольку Grid 960 основывается на родительских и дочерних элементах, при использовании стилей (вспомните селектор container_12 .grid_4 ). В данном случае, проблему поможет решить вложенная сетка, которую Grid 960 позволяет использовать. Создайте вложенную сетку, путем добавления блока grid_12, затем расположите внутри блоки grid_4. При использовании вложенных сеток, дочерние элементы должны иметь специальные классы. Первый дочерний элемент должен иметь класс «alpha», а последний дочерний блок – класс «omega». Отредактируйте разметку для внесения необходимых изменений для подвала.

[html]
&lt;div class=&quot;grid_12&quot; id=&quot;footer&quot;&gt;   
    &lt;div class=&quot;grid_4 alpha&quot;&gt;&lt;/div&gt;   
    &lt;div class=&quot;grid_4&quot;&gt;&lt;/div&gt;   
  
    &lt;div class=&quot;grid_4 omega&quot;&gt;&lt;/div&gt;   
&lt;/div&gt;   
[/html]


[css]
div#footer {   
    background-color: #e5e5e6;   
}   
[/css]

Прекрасно! Теперь у подвала есть заливка однородным цветом, и вы можете указать размеры колонок, если это необходимо. Добавим немного текста для колонок подвала и перейдем к панели навигации. Навигация выполнена в виде простого маркированного списка Добавим немного ссылок и соответствующих стилей.

[html]
&lt;div class=&quot;grid_12&quot; id=&quot;navbar&quot;&gt;&lt;/div&gt;   
    &lt;ul&gt;   
        &lt;li&gt;Articles&lt;/li&gt;   
        &lt;li&gt;Topics&lt;/li&gt;   
  
        &lt;li&gt;About&lt;/li&gt;   
        &lt;li&gt;Editors&lt;/li&gt;   
        &lt;li&gt;Contact&lt;/li&gt;   
    &lt;/ul&gt;   
  
&lt;/div&gt;   
[/html]

[css]
div#navbar ul {   
    list-style: none;   
    display: block;   
    margin: 0 10px;   
}   
  
div#navbar ul li {   
    float: left;   
    margin: 0 1.5em;   
    font: bold 1em Arial;   
}   
[/css]

Замечательно. Страница скоро будет готова. Все что нам нужно сделать, это создать эффекты блока в верхней секции. Это не так просто, как кажется. Прежде чем мы начнем, вы должны кое-что понять о Grid 960 и CSS-фреймворках в целом.

<h3>CSS-фреймворки не решат всех ваших проблем</h3>
Внимательные читатели, наверное, уже заметили кое-что. В нашей странице абсолютно отсутствует гибкость. Всем элементам заданы определенные размеры, и изменение этих размеров может повлечь за собой проблемы или даже развалить весь дизайн в целом. Кроме того, в связи с ограничением Grid 960, дизайнеры не могут использовать некоторые из своих идей.

Например, если бы этот же дизайн был шириной в 1000 пикселей. Grid 960 создает сетку шириной 960 пикселей, так что макеты большего размера уже использовать нельзя.  Что если вы захотите расширить макет до 1000 пикселей, вместо 960-ти? Можно с уверенностью сказать, что вы не сможете это сделать без реализации нескольких сложных изменений кода.

Фреймворк ограничивает дизайнеров набором жестких правил. Скажем, клиент хочет дизайн шире или уже 960-ти пикселей. Дизайнеру будет проще создать код с нуля, для реализации новых задач, чем использовать ранее созданный.

Есть и другая, еще не выявленная, проблема – колонки одинаковой высоты. Поскольку центральные колонки имеют одинаковый фоновый цвет, они выглядят одинаковыми по высоте. В подвале, содержащий блок, устанавливает одинаковый фоновый цвет, позади трех колонок. Grid 960 не поможет вам в создании одинаковых по высоте колонок. Существуют, конечно, способы реализовать это самостоятельно, но поскольку мы просто создаем прототип дизайна, то не будем тратить время на решение мелких проблем в дальнейшем функционировании сайта. На данном этапе, вам нужно понять саму идею.

Есть еще один аспект Grid 960, который следует принять во внимание, прежде, чем мы перейдем к верхней секции. Grid 960 основывается на размерах элементов и отступов, при создании строки правильного размера. Если вы используете рамку или внутренний отступ (padding), макет сломается. Следовательно, если вам нужно их использовать, вы должны предусмотреть это в размере блока, для отражения изменений. Это очень утомительно. Указание размеров элементов в двух местах, всегда будет приводить к путанице, к тому же макет будет гораздо сложнее в обслуживании. Вот и все. Давайте закончим верхнюю секцию.

<h3>Верхняя секция</h3>
К счастью, вы можете манипулировать колонками одинаковой высоты в верхней секции. Поскольку картинке справа назначена ширина и высота, нам известен размер другой колонки. Создадим эффект блока, с помощью добавления нового дива с рамкой, внутри существующих дивов. Не забудьте указать размеры. Не назначайте padding дивам, потому что это изменит ширину блоков и сломает сетку. Вместо этого, укажите margin дочерним элементам. Это не изменит ширину родительских блоков. Применим margin к строчным элементам. Это создаст желаемый эффект и текст будет отступать от края.

[html]
&lt;div class=&quot;grid_7 topSection&quot;&gt;   
    &lt;div&gt; &lt;/div&gt;   
&lt;/div&gt;   
&lt;div class=&quot;grid_5 topSection&quot;&gt;   
  
&lt;/div&gt;   
[/html]

Используйте классы, вместо ID, потому что класс topSection применяется к обоим блокам. Это к тому же, упрощает изменение высоты. Выберите значение высоты, и создайте класс.

[css]
div.topSection div {   
    border: solid 10px #e5e5e6;   
    height: 280px;   
}   
  
div.topSection div p {   
    margin: 10px;   
}   
[/css]

Отлично! Давайте посмотрим на нашу работу.

<p style="text-align: center;"><img class="aligncenter size-full wp-image-1654" title="boxes" src="http://dreamhelg.ru/wp-content/uploads/2009/10/boxes.png" alt="boxes" width="599" height="292" /></p>
Приступаем к наполнению контентом. Заполните левый блок небольшим количеством текста. Только не увлекайтесь, если текста будет слишком много, он вылезет за край блока. Это создает потенциальную проблему в макете. Как вы узнаете, какое количество текста будет слишком большим? В производственном дизайне, для предотвращения этой проблемы, дизайнеру пришлось бы создать функцию, выводящую определенное количество слов.

Теперь, давайте вставим картинку. Только, прежде чем ее вставлять, укажите размеры. Если вы нормальный математик и понимаете боксовую модель, вы, скорее всего, уже знаете, какого размера она должна быть. Если не знаете, запустите Firebug и взгляните на DOM. Включите кнопку Inspect и кликните по блоку, в котором будет размещаться картинка. Откройте вкладку Layout. Firebug отобразит боксовую модель выделенного вами блока.

<img class="aligncenter size-full wp-image-1656" title="firebug-resized" src="http://dreamhelg.ru/wp-content/uploads/2009/10/firebug-resized.png" alt="firebug-resized" width="500" height="268" />

Скриншот показывает размер картинки 360 x 280. Найдите картинку, и создайте стиль. Я решил позволить картинке целиком заполнить весь блок. Если вы хотите создать 10-ти пиксельные отступы, убедитесь в том, что уменьшили размеры по 20 пикселей с каждой стороны.

[css]
img#poster {   
    width: 360px;   
    height: 280px;   
}   
[/css]

У вас должно было получиться следующее. Можете смело менять текст или картинку.
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1652" title="final" src="http://dreamhelg.ru/wp-content/uploads/2009/10/final.png" alt="final" width="591" height="615" /></p>

<h3>Помните об ограничениях</h3>
Теперь, когда прототип готов, давайте подведем итоги проделанной работы. Вы научились быстро создавать прототипы дизайна. Grid 960 легко создает сетку для нас. И что же дальше? Естественно, нужно показать клиенту, и послушать, что он скажет. Хотя, есть несколько предостережений. Тестировался ли дизайн в IE6 и IE7? Нет. Нужно ли это делать? Нет. Это только прототип. Конечно же, все особенности браузеров будут учтены, до производства.

А что если клиенты захотят создать более комплексный дизайн? В таком случае, вы быстро обнаружите ограничения фреймворка. Что если дизайн должен быть резиновым или эластичным? Фреймворк не сможет вам в этом помочь, поэтому вам придется делать все с нуля. Помните, что CSS-фреймворки не решат все ваши проблемы, но они могут помочь с некоторыми. Grid 960 также как и другие фреймворки, замечательно подходит для создания прототипов.

Вы, конечно, можете использовать концепцию Grid 960, в дальнейшей разработке кода, но фреймворки не рекомендуется полностью использовать в своих проектах. Помните, что CSS-фреймворки, также как и любой другой инструмент, имеют своих поклонников.

<a href="http://nettuts.s3.amazonaws.com/126_prototyping/prototyping-with-grid-960.zip">Скачать архив с примером</a>.

Перевод статьи "<a href="http://net.tutsplus.com/tutorials/html-css-techniques/prototyping-with-the-grid-960-css-framework/">Prototyping With The Grid 960 CSS Framework</a>", автор <strong>Adam Hawkins</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/10/prototyping-with-the-grid-960-css-framework/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>10 лучших CSS-редакторов</title>
		<link>http://dreamhelg.ru/2009/09/10-best-css-editors/</link>
		<comments>http://dreamhelg.ru/2009/09/10-best-css-editors/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 08:01:20 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[верстка]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[инструменты]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1378</guid>
		<description><![CDATA[CSS редакторы – это редакторы, которые предназначены только для создания Каскадных Таблиц Стилей. И хотя для этих целей можно использовать полнофункциональную среду разработки или другой редактор кода – CSS-редакторы могут [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/09/10-best-css-editors/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Основы Меркуриала: объединение работы</title>
		<link>http://dreamhelg.ru/2009/09/mercurial-merge-work/</link>
		<comments>http://dreamhelg.ru/2009/09/mercurial-merge-work/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 15:54:14 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[общая]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[tortoiseHG]]></category>
		<category><![CDATA[инструменты]]></category>
		<category><![CDATA[контроль версий]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1200</guid>
		<description><![CDATA[&#171;Одна голова &#8212; хорошо, а две лучше&#187;. Эта пословица как нельзя лучше походит к теме сегодняшней статьи о Меркуриале. После изучения в предыдущей статье базовых приемов и команд, необходимых для [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/09/mercurial-merge-work/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress. Обзор фреймворков</title>
		<link>http://dreamhelg.ru/2009/08/wordpress-explained-frameworks/</link>
		<comments>http://dreamhelg.ru/2009/08/wordpress-explained-frameworks/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 04:18:31 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[action]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[инструменты]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1080</guid>
		<description><![CDATA[WordPress-фреймворк это обычная WordPress-тема, разработанная в качестве гибкой основы, служащая родительской темой, для создания дочерней темы. Хотя еще не все оценили фреймворки по достоинству, они все равно приносят большую пользу [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/08/wordpress-explained-frameworks/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Введение в Mercurial. Основы</title>
		<link>http://dreamhelg.ru/2009/07/mercurial-the-basics/</link>
		<comments>http://dreamhelg.ru/2009/07/mercurial-the-basics/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 09:38:44 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[общая]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[tortoiseHG]]></category>
		<category><![CDATA[инструменты]]></category>
		<category><![CDATA[контроль версий]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=748</guid>
		<description><![CDATA[Сегодня, я наконец-то  публикую долгожданную статью про Меркуриал, точнее про его основы. Не кривитесь и не делайте вид что вам это не интересно и не нужно, потому что система контроля [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/07/mercurial-the-basics/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>10 полезных расширений для улучшения Firebug</title>
		<link>http://dreamhelg.ru/2009/06/10-useful-extensions-for-firebug/</link>
		<comments>http://dreamhelg.ru/2009/06/10-useful-extensions-for-firebug/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 05:11:44 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[общая]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[инструменты]]></category>
		<category><![CDATA[отладка]]></category>
		<category><![CDATA[расширения]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=658</guid>
		<description><![CDATA[Firebug – революционное расширение для Firefox, помогающее веб-разработчикам и дизайнерам тестировать и инспектировать код.  Он содержит множество полезных функций, таких как консоль для отображения информации, DOM-инспектор, детальную информацию об элементах [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/06/10-useful-extensions-for-firebug/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Инструменты верстальщика</title>
		<link>http://dreamhelg.ru/2008/12/%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d1%8b-%d0%b2%d0%b5%d1%80%d1%81%d1%82%d0%b0%d0%bb%d1%8c%d1%89%d0%b8%d0%ba%d0%b0/</link>
		<comments>http://dreamhelg.ru/2008/12/%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d1%8b-%d0%b2%d0%b5%d1%80%d1%81%d1%82%d0%b0%d0%bb%d1%8c%d1%89%d0%b8%d0%ba%d0%b0/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 08:02:26 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[общая]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[tortoiseHG]]></category>
		<category><![CDATA[инструменты]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=24</guid>
		<description><![CDATA[Не сказать что слишком долго, но определенное время я размышляла, какая же запись должна быть следующей. Можно было бы сразу пуститься во все тяжкие, и начать рассказывать всем, о том [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2008/12/%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d1%8b-%d0%b2%d0%b5%d1%80%d1%81%d1%82%d0%b0%d0%bb%d1%8c%d1%89%d0%b8%d0%ba%d0%b0/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

