<?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>Marioosh&#039;s developer diary &#187; WebDeveloping</title>
	<atom:link href="http://marioosh.5dots.pl/category/webdeveloping/feed/" rel="self" type="application/rss+xml" />
	<link>http://marioosh.5dots.pl</link>
	<description>or something like this</description>
	<lastBuildDate>Mon, 06 Sep 2010 16:23:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WebSocket Interface</title>
		<link>http://marioosh.5dots.pl/2010/07/websocket-interface/</link>
		<comments>http://marioosh.5dots.pl/2010/07/websocket-interface/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 09:35:04 +0000</pubDate>
		<dc:creator>Marioosh</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[WebDeveloping]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[WebSockets]]></category>

		<guid isPermaLink="false">http://marioosh.5dots.pl/?p=438</guid>
		<description><![CDATA[Jedną z ciekawszych nowinek, które mają być wprowadzone wraz ze standardem HTML 5 jest (a może &#8220;są&#8221;&#8230;) WebSockets.
To do czego WebSockets mają służyć idzie opisać jednym zdaniem:
&#8221; Strony internetowe za pomocą protokołu WebSockets mogą nawiązać DWUSTRONNE połączenie ze zdalnym serwerem.&#8221;
Do tej pory, komunikacja była jednostronna. Ze strony zostało wysyłane zapytanie i serwer zwracał odpowiedź. Wprowadzenie [...]]]></description>
			<content:encoded><![CDATA[<p>Jedną z ciekawszych nowinek, które mają być wprowadzone wraz ze standardem HTML 5 jest (a może &#8220;są&#8221;&#8230;) <a href="http://dev.w3.org/html5/websockets/#the-websocket-interface">WebSockets</a>.</p>
<p>To do czego WebSockets mają służyć idzie opisać jednym zdaniem:<br />
&#8221; Strony internetowe za pomocą protokołu WebSockets mogą nawiązać <strong>DWUSTRONNE</strong> połączenie ze zdalnym serwerem.&#8221;</p>
<p>Do tej pory, komunikacja była jednostronna. Ze strony zostało wysyłane zapytanie i serwer zwracał odpowiedź. Wprowadzenie technologii AJAX zautomatyzowało trochę ten proces, uruchomiony w przeglądarce javascript automatycznie wysyłał zapytanie i obsługiwał nadesłaną odpowiedź. Mimo iż to przypomina dwustronną komunikację &#8211; nadal jest ona jednostronna.<br />
Czasami takie zapytania są powtarzane w bardzo krótkich okresach czasu (20-30 sekund) &#8211; nazywa się to HeartBeating (bicie serca). Główny problem jednak pozostaje taki sam: generowane jest wiele zapytań, które serwer musi obsłużyć. Na szczęście AJAX pozwala na minimalizację pytania i aktualizację tylko części strony, a nie pobieranie całej strony co kilkadziesiąt sekund, jednak problem pozostaje problemem.</p>
<p>Wspomniany wyżej protokół rozwiązuje ten problem poprzez wykorzystanie komunikacji dwustronnej. Ma ty wyglądać w ten sposób, że przeglądarka nawiązuje połączenie ze zdalnym hostem, a gdy informacje na tym hoście się zmienią zostaną wysłane z powrotem do przeglądarki. Nie trzeba już odpytywać serwera o zmiany co kilkadziesiąt sekund. </p>
<p>Z punktu widzenia użytkownika nic się nie zmieni, jednak z punktu widzienia developera bardzo dużo: wydajność, prostota użycia to główne zalety tego rozwiązania.</p>
<h3>Trochę bardziej techniczniej</h3>
<p>Konstruktor otwieranego obiektu WebSocket posiada dwa elementy:<br />
- pierwszym z nich jest URL z jaki należy się połączyć,<br />
- drugi to protokół, który ma być użyty do komunikacji.</p>
<p>Jeżeli występują jakieś błędy, np. URL jest nieprawidłowy lub użyto w nim niedozwolonych znaków, port jest zablokowany, protokół nie obsługiwany to serwer zwróci błąd. W przeciwnym przypadku jest generowany nowy obiekt WebSocket.</p>
<p>Z obiektem tym komunikujemy się za pomocą poniższych metod:<br />
- <code><strong>url</strong></code> &#8211; zwraca nam url połączenia użyty w konstruktorze,<br />
- <strong><code>readyState</code></strong> &#8211; zwraca nam stan połączenia, który może przyjać jedną z poniższych wartości:<br />
(wartości te są numeryczne, dodatkowo podaję ich tekstowy odpowiednik)<br />
1 &#8211; <strong>CONNECTING</strong> &#8211; połączenie nie zostało jeszcze zrealizowane,<br />
2 &#8211; <strong>OPEN</strong> &#8211; połączenie zostało zrealizowane i możliwa jest komunikacja z serwerem,<br />
3 &#8211; <strong>CLOSING</strong> &#8211; połączenie jest w trakcie rozłączania,<br />
4 &#8211; <strong>CLOSED</strong> &#8211; połączenie zostało zamknięte lub nie zostało otworzone.</p>
<p>W momencie utworzenia obiektu status musi być zmieniony na <strong>CONNECTING</strong>.</p>
<p>W celu przesłania danych używamy metody <strong><code>send(data)</code></strong>. W rezultacie wywołania tej metody uzyskamy wartość <strong>boolean</strong> oznaczającą czy wysyłka była pomyślna czy nie.</p>
<p>Wysyłane dane, są bufforowane po stronie serwera. Wielkośc tego buffera można sprawdzić za pomocą metody <strong><code>bufferedAmount</code></strong>. Sprawdzanie tego bufera jest przydatne zwłaszcza przy wykorzystaniu połączeń asynchronicznych &#8211; gdzie jedno połączenie wysyła dane, a drugie pobiera obliczenia na podstawie tych danych. W przypadku, gdy zostanie wysłane zapytanie o rezultat a nie wszystkie dane zostaną już przesłane to rezultat ten może być błędny. Warto zatem opatrzeć tą metodę sprawdzeniem czy bufferedAmount jest równe 0 co oznacza że wszystkie dane są już wysłane.</p>
<p>WebSockets muszą także implementować kilka rodzajów zdarzeń na które muszą reagować:<br />
Zdarzenia które występują to: <strong>open, close, message i error</strong>, natomiast metody nasłuchujące wystąpienia tych zdarzeń to :<strong>onopen, onclose, onmessage i onerror</strong>.</p>
<h3>Resume</h3>
<p>Jeżeli kogoś interesuje bardziej temat polecam wgłębienie się w API tego ciekawego protokołu, który IMO może przynieść kolejną rewolucję w internecie. Na dzień dzisiejszy jednak nie jest on do końca wspierany przez wszystkie przeglądarki. Pomimo, że Chrome, Safari i Firefox implementują go w mniejszej lub większej skali, to pozostaje jeszcze najpopularniejsza przegląrka &#8211; Internet Explorer, która nie implementuje tej funkcjonalności wogóle. Mam nadzieję, że to się zmieni.</p>
<p><a href="http://www.addtoany.com/add_to/wykop?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Wykop" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/wykop.png" width="16" height="16" alt="Wykop"/></a> <a href="http://www.addtoany.com/add_to/blip?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Blip" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blip.png" width="16" height="16" alt="Blip"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Twitter" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Facebook" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="DZone" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Digg" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/blinklist?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Blinklist" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blinklist.png" width="16" height="16" alt="Blinklist"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Delicious" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Evernote" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/google_buzz?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Google Buzz" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google_buzz.png" width="16" height="16" alt="Google Buzz"/></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fwebsocket-interface%2F&amp;linkname=WebSocket%20Interface" title="Google Reader" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p><h3  class="related_post_title">Losowe Wpisy:</h3><ul class="related_post"><li>09.02.2009 -- <a href="http://marioosh.5dots.pl/2009/02/wzorce-projektowe-iterator/" title="Wzorce projektowe: Iterator">Wzorce projektowe: Iterator</a></li><li>08.02.2009 -- <a href="http://marioosh.5dots.pl/2009/02/wzorce-projektowe-bridge/" title="Wzorce projektowe: Bridge">Wzorce projektowe: Bridge</a></li><li>03.09.2010 -- <a href="http://marioosh.5dots.pl/2010/09/recenzja-ksiazki-enterprise-rails/" title="Recenzja książki &#8220;Enterprise Rails&#8221;">Recenzja książki &#8220;Enterprise Rails&#8221;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://marioosh.5dots.pl/2010/07/websocket-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Szybka instalacja Drupala za pomocą Drush</title>
		<link>http://marioosh.5dots.pl/2010/07/szybka-instalacja-drupala-za-pomoca-drush/</link>
		<comments>http://marioosh.5dots.pl/2010/07/szybka-instalacja-drupala-za-pomoca-drush/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 13:57:33 +0000</pubDate>
		<dc:creator>Marioosh</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[WebDeveloping]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Drush]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://marioosh.5dots.pl/?p=435</guid>
		<description><![CDATA[Z doświadczenia wiem, że wszystkie czynności, które mogę wykonać z konsoli zabierają mi mniej czasu niż w interfejsie graficznym. No może przesadziłem, że wszystkie &#8211; przynajmniej większość z nich. Jeżeli zatem jest alternatywa, to zawsze wybiorę rozwiązanie konsolowe.
Dobrym przykładem jest narzędzie Drush. Jest to narzędzie, które pozwala nam z konsoli zainstalować drupala, moduły do niego, [...]]]></description>
			<content:encoded><![CDATA[<p>Z doświadczenia wiem, że wszystkie czynności, które mogę wykonać z konsoli zabierają mi mniej czasu niż w interfejsie graficznym. No może przesadziłem, że wszystkie &#8211; przynajmniej większość z nich. Jeżeli zatem jest alternatywa, to zawsze wybiorę rozwiązanie konsolowe.</p>
<p>Dobrym przykładem jest narzędzie <a href="http://drupal.org/project/drush">Drush</a>. Jest to narzędzie, które pozwala nam z konsoli zainstalować drupala, moduły do niego, łączyć się z bazą danych i w pewnym stopniu administrować witryną z poziomu konsoli. Możliwości jest wiele, polecam zatem do samodzielnego ich sprawdzenia.</p>
<p>Pierwszym krokiem, który musimy uczynić jest zainstalowanie drusha. Musimy go pobrać <a href="http://drupal.org/project/drush">z tej strony</a>, oraz rozpakować w dowolnym folderze. Następnie utworzyć link symboliczny do takiego miejsca, aby był w zasięgu zmiennej PATH.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># cd /opt/devel</span>
<span style="color: #666666; font-style: italic;"># wget http://ftp.drupal.org/files/projects/drush-6.x-3.1.tar.gz</span>
<span style="color: #666666; font-style: italic;"># tar -zxvf drush-6.x-3.1.tar.gz</span>
<span style="color: #666666; font-style: italic;"># sudo ln -s /opt/devel/drush/drush /usr/local/bin/</span></pre></div></div>

<p>Po wykonaniu powyższych czynności wykonując komendę &#8216;drush&#8217; w dowolnym miejscu, powinniśmy otrzymać listę dostępnych komend.</p>
<p>Aby zainstalować drupala przechodzimy do folderu w którym chcemy to zrobić i wywołujemy komendę:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># drush dl drupal</span></pre></div></div>

<p>Drupal zostanie pobrany ze strony i rozpakowany w bieżącym folderze. Instalacji dokonujemy w normalny sposób. Od wersji 7 Drupala będzie także możliwa instalacja z lini poleceń, jednak na dzień dzisiejszy najświeższa wersja to 6.17 więc musimy instalacji dokonać w tradycyjny sposób.</p>
<p>Po zainstalowaniu drupala, czas na kilka modułów. Za pomocą Drusha nie musimy szukać ich w witrynie drupala, tylko znając ich nazwy automatycznie pobrać i zainstalować. Dla przykładu gdy korzystamy z modułu &#8220;Views&#8221; wykonujemy komendy:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># drush dl views</span>
<span style="color: #666666; font-style: italic;"># drush en views</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> views was enabled successfully.</pre></div></div>

<p>Gdy po dłuższej pracy na projektem drupal, lub niektóre używane moduły pojawią się w nowej wersji, wystarczy, że skorzytamy z komendy</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># drush up</span></pre></div></div>

<p>aby zaktualizować wszystko do najnowszych wersji.</p>
<p>Drush ma jeszcze więcej możliwości polecam zapoznać się z jego dokumentacją.</p>
<p><a href="http://www.addtoany.com/add_to/wykop?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Wykop" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/wykop.png" width="16" height="16" alt="Wykop"/></a> <a href="http://www.addtoany.com/add_to/blip?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Blip" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blip.png" width="16" height="16" alt="Blip"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Twitter" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Facebook" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="DZone" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Digg" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/blinklist?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Blinklist" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blinklist.png" width="16" height="16" alt="Blinklist"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Delicious" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Evernote" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/google_buzz?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Google Buzz" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google_buzz.png" width="16" height="16" alt="Google Buzz"/></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F07%2Fszybka-instalacja-drupala-za-pomoca-drush%2F&amp;linkname=Szybka%20instalacja%20Drupala%20za%20pomoc%C4%85%20Drush" title="Google Reader" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p><h3  class="related_post_title">Podobne wpisy:</h3><ul class="related_post"><li>06.09.2010 -- <a href="http://marioosh.5dots.pl/2010/09/rvm-gemset-dla-projektu/" title="RVM, gemset dla projektu">RVM, gemset dla projektu</a></li><li>01.06.2010 -- <a href="http://marioosh.5dots.pl/2010/06/to-ze-windows-jest/" title="To że Windows jest&#8230;">To że Windows jest&#8230;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://marioosh.5dots.pl/2010/07/szybka-instalacja-drupala-za-pomoca-drush/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails Template</title>
		<link>http://marioosh.5dots.pl/2010/03/rails-template/</link>
		<comments>http://marioosh.5dots.pl/2010/03/rails-template/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 09:17:43 +0000</pubDate>
		<dc:creator>Marioosh</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[WebDeveloping]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[rails templates]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://marioosh.5dots.pl/?p=395</guid>
		<description><![CDATA[Idąc za ciosem postanowiłem wydłubać własny szablonik do startu z aplikacjami. Jest on dostępny na githubie i można śmiało z niego korzystać.
Co robi szablonik?
- inicjuje repozytorium Git, dodaje niektóre miejsca i pliki do ignore&#8217;a po czym zatwierdza resztę.
- instaluje platformę testową RSpec, RSpec-Rails, Cucumber, Factory_Girl i Webrat.
- instaluje authologic i declarative_authorization,
- tworzy model do dodawania [...]]]></description>
			<content:encoded><![CDATA[<p>Idąc za ciosem postanowiłem wydłubać własny szablonik do startu z aplikacjami. Jest on dostępny na <a href="http://github.com/marioosh/rails_template">githubie</a> i można śmiało z niego korzystać.<br />
Co robi szablonik?</p>
<p>- inicjuje repozytorium Git, dodaje niektóre miejsca i pliki do ignore&#8217;a po czym zatwierdza resztę.</p>
<p>- instaluje platformę testową RSpec, RSpec-Rails, Cucumber, Factory_Girl i Webrat.</p>
<p>- instaluje authologic i declarative_authorization,</p>
<p>- tworzy model do dodawania artykułów oraz cruda do niego.</p>
<p>- tworzy model użytkownika, ról  i sesji</p>
<p>- tworzy widoki dla artykułów, panel logowania i edycja profilu.</p>
<p>- tworzy dwie początkowe role: user i admin.</p>
<p>- nadaje uprawnienia:</p>
<p style="padding-left: 30px;">- gość może czytać artykuły, założyć konto i się zalogować,</p>
<p style="padding-left: 30px;">- użytkownik może się wylogować, dodać artykuł, edytować lub usunąć własny artykuł, edytować swój profil,</p>
<p style="padding-left: 30px;">- admin może wszystko.</p>
<p style="padding-left: 30px;">
<p>Planuję jeszcze nad kilkoma dodatkami, ale nie wiem jeszcze dokładnie co i jak. Muszę to przemyśleć. Jak na razie szablon tworzy to, co w prawie każdej aplikacji istnieje. Modele można rozbudować wg własnych potrzeb ale mamy już dobry punkt początkowy.</p>
<p>Zapraszam do testowania i wyrażania swoich uwag.</p>
<p><a href="http://www.addtoany.com/add_to/wykop?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Wykop" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/wykop.png" width="16" height="16" alt="Wykop"/></a> <a href="http://www.addtoany.com/add_to/blip?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Blip" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blip.png" width="16" height="16" alt="Blip"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Twitter" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Facebook" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="DZone" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Digg" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/blinklist?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Blinklist" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blinklist.png" width="16" height="16" alt="Blinklist"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Delicious" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Evernote" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/google_buzz?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Google Buzz" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google_buzz.png" width="16" height="16" alt="Google Buzz"/></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2010%2F03%2Frails-template%2F&amp;linkname=Rails%20Template" title="Google Reader" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p><h3  class="related_post_title">Podobne wpisy:</h3><ul class="related_post"><li>12.12.2009 -- <a href="http://marioosh.5dots.pl/2009/12/automatyczny-start-czyli-rails-templates/" title="Automatyczny start czyli Rails Templates">Automatyczny start czyli Rails Templates</a></li><li>16.07.2010 -- <a href="http://marioosh.5dots.pl/2010/07/pickle-na-rails3/" title="Pickle na Rails3">Pickle na Rails3</a></li><li>11.12.2009 -- <a href="http://marioosh.5dots.pl/2009/12/objecie-kontrola-wersji-git-nowej-aplikacji-rails/" title="Objęcie kontrolą wersji Git nowej aplikacji Rails">Objęcie kontrolą wersji Git nowej aplikacji Rails</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://marioosh.5dots.pl/2010/03/rails-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatyczny start czyli Rails Templates</title>
		<link>http://marioosh.5dots.pl/2009/12/automatyczny-start-czyli-rails-templates/</link>
		<comments>http://marioosh.5dots.pl/2009/12/automatyczny-start-czyli-rails-templates/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 10:01:16 +0000</pubDate>
		<dc:creator>Marioosh</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[WebDeveloping]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[rails templates]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://marioosh.5dots.pl/?p=379</guid>
		<description><![CDATA[Jeżeli tworzymy kilka aplikacji w ruby on rails, to przeważnie początkowe etapy są do siebie bardzo podobne. Np. inicjalizacja kontroli wersji (np. w sposób jaki jest opisany w poprzednim artykule), instalacja ulubionych pluginów, usuwanie zbędnych plików, Czy też inne operacje. Na szczeście do pomocy przychodzą nam Templates, które zostały wprowadzone w rails 2.3. Teplate to [...]]]></description>
			<content:encoded><![CDATA[<p>Jeżeli tworzymy kilka aplikacji w ruby on rails, to przeważnie początkowe etapy są do siebie bardzo podobne. Np. inicjalizacja kontroli wersji (np. w sposób jaki jest opisany w poprzednim artykule), instalacja ulubionych pluginów, usuwanie zbędnych plików, Czy też inne operacje. Na szczeście do pomocy przychodzą nam Templates, które zostały wprowadzone w rails 2.3. Teplate to nic innego niż plik ruby,  w którym wpisujemy komendy w przygotowanym do tego języku domenowym (DSL). Po przygotowaniu takiego szablonu inicjujemy projekt rails z parametrem <code>-m ścieżka_do_szablonu.rb</code>. Rails od razu po wykonaniu inicjacji projektu od razu uruchomi podany plik.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rails my_app <span style="color: #660033;">-m</span> ~<span style="color: #000000; font-weight: bold;">/</span>szablon_startowy.rb</pre></div></div>

<p>tak samo jak URI, możemy uzywać URL:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rails my_app <span style="color: #660033;">-m</span> http:<span style="color: #000000; font-weight: bold;">//</span>marioosh.5dots.pl<span style="color: #000000; font-weight: bold;">/</span>szablon.txt</pre></div></div>

<p>(powyższy plik nie istnieje więc nie testujcie <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )<br />
ostatnim sposobem jest inicjacja szablonu przed odpowiednie zadanie <code>rake</code> z ustawienie zmiennej <code>LOCATION</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rake rails:template <span style="color: #007800;">LOCATION</span>=~<span style="color: #000000; font-weight: bold;">/</span>szablon_startowy.rb</pre></div></div>

</p>
<p><span id="more-379"></span></p>
<p>
Jakie operacje możemy wykonywać w przygotowanym języku DSL? Może zacznemy od przykładu.<br />
Zacznijmy od wykonania kilku operacji opisanych w poprzednim artykule, mówiącym o wprowadzeniu aplikacji rails pod kontrolę Git.<br />
Przygotujmy nasz plik szablonu, ja go utworzłem w katalogu domowym i zapisałem go jako <code>5dots_template.rb</code><br />
Kroki które powinniśmy  wykonać:<br />
- inicjalizacja Git,<br />
- utworzenie pliku .gitignore w folderach <code>tmp</code> i <code>log</code><br />
- dodaniu kilku wpisów w głównym <code>.gitignore</code>.<br />
Plik powinien wyglądać tak:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># 5dots_szablon.rb</span>
git <span style="color:#ff3333; font-weight:bold;">:init</span>
git <span style="color:#ff3333; font-weight:bold;">:add</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;.&quot;</span>
<span style="color:#008000; font-style:italic;"># teraz dodajemy pliki .gitignore do folderów tmp i log.</span>
run <span style="color:#996600;">&quot;touch tmp/.gitignore log/.gitignore&quot;</span>
<span style="color:#008000; font-style:italic;">#oraz tworzymy plik .gitignore w głównym folderze z zawartością:</span>
file <span style="color:#996600;">'.gitignore'</span>, <span style="color:#006600; font-weight:bold;">&lt;&lt;-</span>GITIGNORE_FILE
.<span style="color:#9900CC;">DS_Store</span>
log<span style="color:#006600; font-weight:bold;">/*</span>.<span style="color:#9900CC;">log</span>
tmp<span style="color:#006600; font-weight:bold;">/**/*</span>
config<span style="color:#006600; font-weight:bold;">/</span>database.<span style="color:#9900CC;">yml</span>
db<span style="color:#006600; font-weight:bold;">/*</span>.<span style="color:#9900CC;">sqlite3</span>
doc<span style="color:#006600; font-weight:bold;">/</span>app
doc<span style="color:#006600; font-weight:bold;">/</span>api
GITIGNORE_FILE
&nbsp;
<span style="color:#008000; font-style:italic;"># teraz pozostaje tylko zatwierdzenie zmian do repozytorium:</span>
git <span style="color:#ff3333; font-weight:bold;">:commit</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;-a -m 'Initial commit'&quot;</span></pre></div></div>

</p>
<p>
W powyższym przykładnie poznaliśmy kilka komend języka DSL dla szablonów, wyjaśniam po kolei:<br />
- <code>git</code> odpowiada za komendy systemu kontroli wersji git,<br />
- <code>run</code> uruchamia polecenia konsolowe.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">run <span style="color:#996600;">&quot;rm -rf *&quot;</span></pre></div></div>

<p>(komenda ta robi porządki w folderze <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )<br />
- <code> file </code> &#8211; odpowiada za tworzenie plików i operacje na nich.
</p>
<p> Mając podstawy za sobą możemy przejść do szczegółowego opisania wszystkich poleceń, w końcu te trzy powyższe, może i zrobią dużo, to i tak nie wszystko.
</p>
<h3>Polecenie rake</h3>
<p>Za wykonywanie zadań rake jest odpowiedzialna komenda o tej samej nazwie ,dodatkowo możemy uruchomić skrypt jako superużytkownik, wtedy musimy podać parametr <code> :sudo => true</code>. Dodatkowo możemy podać parametry, których możemy używać podczas ręcznego użycia komendy <code>rake</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">rake <span style="color:#996600;">&quot;gem:install&quot;</span>
<span style="color:#008000; font-style:italic;"># lub jako superuser</span>
rake <span style="color:#996600;">&quot;gem:install&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:sudo</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span>
<span style="color:#008000; font-style:italic;"># jeszcze jeden przykład:</span>
rake <span style="color:#996600;">&quot;gem:install&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:env</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'production'</span></pre></div></div>

</p>
<h3> Operacje na gemach</h3>
<p>
Komenda <code>gem</code> odpowiada za dodawanie gemów. Komenda dodaje odpowiedni wpis do pliku <code> config/envoirnment.rb</code>. Parametry, które mają być również dopisane (takie jak <code> :version, :lib, :source</code>) podajemy na końcu.<br />
Komenda nie istaluje gema, do tego celu musimy użyć odpowiedniego zadania rake (zgadnijcie którego <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )<br />
Kilka przykładów:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">gem <span style="color:#996600;">'thoughtbot-factory_girl'</span>, <span style="color:#ff3333; font-weight:bold;">:lib</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'factory_girl'</span>, <span style="color:#ff3333; font-weight:bold;">:source</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'http://gems.github.com'</span>
gem <span style="color:#996600;">&quot;hpricot&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:version</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'0.6'</span>, <span style="color:#ff3333; font-weight:bold;">:source</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;http://code.whytheluckystiff.net&quot;</span>
gem <span style="color:#996600;">&quot;RedCloth&quot;</span></pre></div></div>

</p>
<h3>Instalowanie wtyczek (inaczej zwanymi pluginami) <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </h3>
<p>
Aby zainstalować pluginy używamy z komendy <code>plugin</code>(mam wrażenie, że się domyślaliście &#8211; ot taki prosty ten język, wszystko jest domyślnie proste)<br />
Pluginy możemy instalować z svn, z gita lub z gita jako submoduły:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># instalowanie ze starego dobrego subversion:</span>
plugin <span style="color:#996600;">'svnowy_plugin'</span>, <span style="color:#ff3333; font-weight:bold;">:svn</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'svn://repozytorium/scieżka_do_plugina/trunk'</span>
<span style="color:#008000; font-style:italic;"># albo z nowego, jeszcze lepszego gita:</span>
plugin <span style="color:#996600;">'git_plugin'</span>, <span style="color:#ff3333; font-weight:bold;">:git</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'git://github.com/scieżka_do_plugina.git'</span>
<span style="color:#008000; font-style:italic;"># lub nawet jako submoduł gitowy (o tym będzie w następnym artykule)</span>
plugin <span style="color:#996600;">'git_plugin'</span>, <span style="color:#ff3333; font-weight:bold;">:git</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'git://github.com/scieżka_do_plugina.git'</span>, <span style="color:#ff3333; font-weight:bold;">:submodule</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span></pre></div></div>

</p>
<h3>Inicjalizery- czyli automatory, wewnątrz automatora <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </h3>
<p>
Jeżeli korzystamy z inicjalizerów, czyli skryptów, które są uruchamiane podczas startu aplikacji używamy komendy <code>initialize</code>. Właśnie ona, tworzy plik w folderze <code>cofnig/initializers</code></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">initialize <span style="color:#996600;">&quot;nowy_object.rb&quot;</span>, <span style="color:#006600; font-weight:bold;">&lt;&lt;</span>NOWY_OBJECT_CONTENT
<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#CC00FF; font-weight:bold;">Object</span>
    <span style="color:#9966CC; font-weight:bold;">def</span> nowa_metoda
        <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Fajna ta nowa metoda, dobrze, że mogę z niej korzystać, zanim railsy się odpalą! &quot;</span>;
    <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
NOWY_OBJECT_CONTENT</pre></div></div>

<p>Dokładnie na tej samej zasadzie działają komendy <code>lib</code> i <code>vendor</code>, które tworzą pliki w folderach (odpowiednio) <code>/lib</code> i <code>/vendor</code>.
</p>
<h3>Pliki</h3>
<p>
Tworzenie nowych plików tworzymy na podobnej zasadzie jak poprzednia metoda, główną różnicą jest, że plik zostanie utworzony, wg folderu RAILS_ROOT a nie wewnątrz <code>initailizers</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">file <span style="color:#996600;">&quot;app/components/Klasa.rb&quot;</span>, <span style="color:#006600; font-weight:bold;">&lt;&lt;</span>KLASA
<span style="color:#9966CC; font-weight:bold;">class</span> Klasa
<span style="color:#9966CC; font-weight:bold;">end</span>
KLASA</pre></div></div>

<p>Komenda powyższa utworzy foldery <code>app/components</code> i umieści w nim plik <code>Klasa.rb</code>.
</p>
<h3>Zadania Rake</h3>
<p>
Komenda <code>rakefile</code> tworzy plik w folderze <code>/lib/tasks</code></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">rakefile <span style="color:#996600;">&quot;clear_all.rake&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    namespace <span style="color:#ff3333; font-weight:bold;">:clear</span> <span style="color:#9966CC; font-weight:bold;">do</span>
        task <span style="color:#ff3333; font-weight:bold;">:all</span> <span style="color:#9966CC; font-weight:bold;">do</span>
            <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Usuwamy wszystko!!!!! &quot;</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Teraz to zadanie możemy uruchomić po wydaniu komendy: <code>rake clear:all</code>.
</p>
<h3>Generatory</h3>
<p>
Generatory możemy uruchomić komendą <code>generate</code> i podając listę argumentów. Możemy uzywać wszystkie generatory, które są standardowo w railsach, lub które uprzednio zainstalowaliśmy w formie pluginów lub gemów.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">generate<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:scaffold</span>, <span style="color:#996600;">&quot;person&quot;</span>, <span style="color:#996600;">&quot;name:string&quot;</span>, <span style="color:#996600;">&quot;email:string&quot;</span>, <span style="color:#996600;">&quot;password:string&quot;</span>
generate<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;rspec&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

</p>
<h3>Uruchamianie skryptów powłoki</h3>
<p>
Jak już wspomniałem można tego dokonać za pomocą komendy <code>run</code></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">run <span style="color:#996600;">&quot;rm -rf *&quot;</span></pre></div></div>

</p>
<h3>Dodawanie rutingów <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </h3>
<p>Jeżeli potrzebujemy dodatkowych wpisów w pliku <code>/config/routes.rb</code> wykonujemy je uruchamiając komendę <code>route</code></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">route <span style="color:#996600;">&quot;map.root :controller =&gt; :person&quot;</span></pre></div></div>

</p>
<h3>Zmiana folderu</h3>
<p>
Czasami wygodne jest przejście do innego folderu i w nim wykonanie kilku operacji, możemy to zrobić za pomocą komendy <code>inside</code>. Jako parametr podajemy folder docelowy i potem block.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">inside <span style="color:#996600;">&quot;config&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    run <span style="color:#996600;">&quot;cp database.yml database.orig.yml&quot;</span>
<span style="color:#008000; font-style:italic;"># linkowanie ustawień z innego projektu, bo oba mają działać na tej samej bazie</span>
    run <span style="color:#996600;">&quot;ln -s /projekty/super_rails_app/config/database.yml database.yml&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

</p>
<h3>Działanie zależne od odpowiedzi</h3>
<p>
Podczas wykonywania skryptu, możemy wprowadzić małą intekerakcję, np. zadać pytanie i zależnie od odpowiedzi wykonać dalej skrypt.<br />
Na przykład możemy zapytać o nazwę pliku. W tym celu wykonujemy komendę <code>ask</code>.<br />
W poniższym przykładzie pytamy sie o nazwę pliku dla pliku konfiguracji <code>.yml</code>. Skrypt również sprawdza, czy rozszerzenie zostało podane czy nie. jeżeli nie, to dodaje je do nazwy pliku.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">file_name = ask<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Podaj nazwę pliku konfiguracyjnego&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
file_name <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#996600;">&quot;.yml&quot;</span> <span style="color:#9966CC; font-weight:bold;">unless</span> file_name.<span style="color:#9900CC;">index</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;.yml&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
file <span style="color:#996600;">&quot;/config/&quot;</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> filename, <span style="color:#006600; font-weight:bold;">&lt;&lt;</span>FILE_CONTENT
global_settings:
    color: <span style="color:#008000; font-style:italic;">#e343f3</span>
    font<span style="color:#006600; font-weight:bold;">-</span>size: 14px
FILE_CONTENT</pre></div></div>

</p>
<p>
Istnieją również uproszczone wersje powyższej metody, jedna oczekuje na odpowiedź &#8220;yes&#8221; druga na &#8220;no&#8221;</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">gem <span style="color:#996600;">&quot;RedCloth&quot;</span> <span style="color:#9966CC; font-weight:bold;">if</span> yes?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Zainstalować gem Red Cloth?&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">if</span> no?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Zainstalować gem Blue Cloth?&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> 
    gem ask<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Podaj nazwę gemu z edytorem, którym ma być użyty zamiast BlueCloth:&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">else</span>
    gem <span style="color:#996600;">&quot;BlueCloth&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#008000; font-style:italic;"># po wpisaniu 'no' zostanie uruchomione zapytanie o nazwe gem'a, w każdej innej sytuacji zostanie dodany BlueCloth</span></pre></div></div>

</p>
<h3>GIT &#8211; kochaj albo rzuć <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </h3>
<p>
Komenda <code>git</code> wykonduje komendy systemu kontroli wersji Git &#8211; jak nie trudno się domyśleć.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">git <span style="color:#ff3333; font-weight:bold;">:init</span>
git <span style="color:#ff3333; font-weight:bold;">:add</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;.&quot;</span>
git <span style="color:#ff3333; font-weight:bold;">:commit</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;-a -m 'Initial commit'&quot;</span>
git <span style="color:#ff3333; font-weight:bold;">:submodule</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;init&quot;</span></pre></div></div>

</p>
<h3>Rezume <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  </h3>
<p>Lista komend do wykorzystania:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">&nbsp;
gem<span style="color:#006600; font-weight:bold;">&#40;</span>nazwa, options=<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
plugin<span style="color:#006600; font-weight:bold;">&#40;</span>nazwa, options=<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
initializer<span style="color:#006600; font-weight:bold;">&#40;</span>nazwa_pliku, data=<span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
lib<span style="color:#006600; font-weight:bold;">&#40;</span>nazwa_pliku, data=<span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
vendor<span style="color:#006600; font-weight:bold;">&#40;</span>nazwa_pliku, data=<span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
rakefile<span style="color:#006600; font-weight:bold;">&#40;</span>nawa_pliku, data=<span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
generate<span style="color:#006600; font-weight:bold;">&#40;</span>co_generować, argumenty<span style="color:#006600; font-weight:bold;">&#41;</span>
run<span style="color:#006600; font-weight:bold;">&#40;</span>komenda<span style="color:#006600; font-weight:bold;">&#41;</span>
rake<span style="color:#006600; font-weight:bold;">&#40;</span>komenda, options=<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
route<span style="color:#006600; font-weight:bold;">&#40;</span>routing_code<span style="color:#006600; font-weight:bold;">&#41;</span>
inside<span style="color:#006600; font-weight:bold;">&#40;</span>folder<span style="color:#006600; font-weight:bold;">&#41;</span>
ask<span style="color:#006600; font-weight:bold;">&#40;</span>pytanie<span style="color:#006600; font-weight:bold;">&#41;</span>
yes?<span style="color:#006600; font-weight:bold;">&#40;</span>pytanie<span style="color:#006600; font-weight:bold;">&#41;</span>
no?<span style="color:#006600; font-weight:bold;">&#40;</span>pytanie<span style="color:#006600; font-weight:bold;">&#41;</span>
git<span style="color:#006600; font-weight:bold;">&#40;</span>parametry<span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Teraz znająć już wszystkie komendy, możemy tworzyć własne szablone jako startowe ustawienia aplikacji. Jeżeli stworzymy coś nowego i fajnego warto się tym podzielić. Moża dodać je do projektu: <a href="http://github.com/jeremymcanally/rails-templates">Rails Templates</a>, który takie szablony zbiera. Możemy również skorzystać z instniejących tam szablonów.</p>
<p><a href="http://www.addtoany.com/add_to/wykop?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Wykop" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/wykop.png" width="16" height="16" alt="Wykop"/></a> <a href="http://www.addtoany.com/add_to/blip?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Blip" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blip.png" width="16" height="16" alt="Blip"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Twitter" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Facebook" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="DZone" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Digg" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/blinklist?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Blinklist" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blinklist.png" width="16" height="16" alt="Blinklist"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Delicious" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Evernote" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/google_buzz?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Google Buzz" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google_buzz.png" width="16" height="16" alt="Google Buzz"/></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fautomatyczny-start-czyli-rails-templates%2F&amp;linkname=Automatyczny%20start%20czyli%20Rails%20Templates" title="Google Reader" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p><h3  class="related_post_title">Podobne wpisy:</h3><ul class="related_post"><li>05.03.2010 -- <a href="http://marioosh.5dots.pl/2010/03/rails-template/" title="Rails Template">Rails Template</a></li><li>16.07.2010 -- <a href="http://marioosh.5dots.pl/2010/07/pickle-na-rails3/" title="Pickle na Rails3">Pickle na Rails3</a></li><li>11.12.2009 -- <a href="http://marioosh.5dots.pl/2009/12/objecie-kontrola-wersji-git-nowej-aplikacji-rails/" title="Objęcie kontrolą wersji Git nowej aplikacji Rails">Objęcie kontrolą wersji Git nowej aplikacji Rails</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://marioosh.5dots.pl/2009/12/automatyczny-start-czyli-rails-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nowe trendy programowania</title>
		<link>http://marioosh.5dots.pl/2009/12/nowe-trendy-programowania/</link>
		<comments>http://marioosh.5dots.pl/2009/12/nowe-trendy-programowania/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 08:27:10 +0000</pubDate>
		<dc:creator>Marioosh</dc:creator>
				<category><![CDATA[WebDeveloping]]></category>

		<guid isPermaLink="false">http://marioosh.5dots.pl/?p=367</guid>
		<description><![CDATA[Patrząc na rynek pracy, a obecnie mam taką sytuację zawodową, że patrzeć muszę, zauważyłem pewną nową tendencję. Otóż jeszcze kilka lat temu, programistów szukało sie po języku programowania, w którym potrafi pracować. Szukało się programistów Java (ew. J2EE), PHP, C++ i innych. Po kilku latach, pojęcie języka programowania stało się zbyt ogólne, więc ogłoszenia stały [...]]]></description>
			<content:encoded><![CDATA[<p>Patrząc na rynek pracy, a obecnie mam taką sytuację zawodową, że patrzeć muszę, zauważyłem pewną nową tendencję. Otóż jeszcze kilka lat temu, programistów szukało sie po języku programowania, w którym potrafi pracować. Szukało się programistów Java (ew. J2EE), PHP, C++ i innych. Po kilku latach, pojęcie języka programowania stało się zbyt ogólne, więc ogłoszenia stały się bardziej specjalistyczne, uzywano nazw frameworków czy technologii bezpośrednio z tym językiem związane, np. widziałem takie warunki: Struts, JSF, Hibernate, JPA, J2ME (to javowe), albo takie: CakePHP, Zend, Symphony, Smarty (to php-owe).</p>
<p>W sumie nic dziwnego, języki rozwijają się, dołączone do nich biblioteki rosną w postępie logarytmicznym. Poza tym znajomość języka to raz, a znajomość konkretnego frameworka to dwa. Dając ogłoszenie o programisty JSF jakoby normalny staje się fakt, że potrafi on Javę samą w sobie.</p>
<p>Można by było przypuszczać, że obecny trend zmierza do jeszcze większej specjalizacji. Jednak tak nie jest. Znajomość frameworka czy narzędzia nadal pojawia się w ogłoszeniach. Jednak oprócz nich pojawiają się wymagania dotyczących technologii nie związanych bezpośrednio z językiem, np. AJAX. Przecież możemy wykorzystywać go zarówno w aplikacjach javowych, php-owych, rails-owych czy też innych. Poniżej przedstawiam listę nowych wymagań stwianych w ofertach pracy. Wg mnie technologie te staną się w ciągu kilku najbliższych lat bardzo ważne, więc zapoznanie się znimi już dziś może nam ułatwić poszukiwania pracy.</p>
<p>1. Widgety, Gadgety</p>
<p>Wiele stron i mechanizmów umożliwia wykorzsytywanie tych mini aplikacji. Widgety to jakby aplikacje wewnątrz innych aplikacji, które potrafią żyć własnym cyklem nie ingerując w mechanikę strony. Za to dodają witrynie wiele nowych finkcjonalności, których napisanie zajęłoby nam sporo czasu.</p>
<p>2. Integracja z serwisami społecznościowymi</p>
<p>Serwisy społecznościowe rosną jak grzyby po deszczu. Jedne bardziej popularne drugie mniej. Jedne oferują więcej usług i możliwości inne odwrotnie. W każdym razie już coraz mniej witryn można spotkać, które nie mają chociaż jednej malutkiej integracji z takim portalem społecznościowy. Wiele takich integracji z resztą polega na dodaniu do strony widgetu wspomnianego w punkcie pierwszym. Przeglądając witrynę spójrzmy, czy nie ma tam linka do takich serwisów jak Twitter, Blip, Flakier, Wykop, Dig-it, delicious czy też innych.</p>
<p>3. SEO</p>
<p>SEO jest ważnym elementem pozycjonowania strony więc wiedza na ten temat jest coraz bardziej wymagana.</p>
<p>4. Aplikacje mobilne IPhone &amp; Android</p>
<p>iPhone zrewolucjonizował rynek telefonów, uczynił rewolucję, która podłączyła wielu użytkowników do internetu. Przeglądamy strony jadąc tramwajem, słuchamy radia internetowego, czy też gramy w gry online. Oferty pracy dla programistów iPhone&#8217;a czy Androida pojawiają się coraz częściej. Moim zdaniem Android będzie się rozwijał szybciej bo nie jest blokowany jak to ma się z telefonem od Apple.Dostęp do tej technologi jest łatwiejszy, więc rynek będzie szedł w tą stronę.</p>
<p><a href="http://www.addtoany.com/add_to/wykop?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Wykop" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/wykop.png" width="16" height="16" alt="Wykop"/></a> <a href="http://www.addtoany.com/add_to/blip?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Blip" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blip.png" width="16" height="16" alt="Blip"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Twitter" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Facebook" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="DZone" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Digg" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/blinklist?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Blinklist" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blinklist.png" width="16" height="16" alt="Blinklist"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Delicious" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Evernote" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/google_buzz?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Google Buzz" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google_buzz.png" width="16" height="16" alt="Google Buzz"/></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2009%2F12%2Fnowe-trendy-programowania%2F&amp;linkname=Nowe%20trendy%20programowania" title="Google Reader" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p><h3  class="related_post_title">Losowe Wpisy:</h3><ul class="related_post"><li>06.07.2010 -- <a href="http://marioosh.5dots.pl/2010/07/jak-powinna-wygladac-dobra-historyjka-uzytkownika/" title="Jak powinna wyglądać dobra historyjka użytkownika?">Jak powinna wyglądać dobra historyjka użytkownika?</a></li><li>25.08.2010 -- <a href="http://marioosh.5dots.pl/2010/08/vim-tryb-rozszerzony-ex/" title="Vim &#8211; tryb rozszerzony (ex)">Vim &#8211; tryb rozszerzony (ex)</a></li><li>25.08.2010 -- <a href="http://marioosh.5dots.pl/2010/08/vim-przesuwanie-w-zakresie-okna/" title="Vim &#8211; przesuwanie w zakresie okna">Vim &#8211; przesuwanie w zakresie okna</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://marioosh.5dots.pl/2009/12/nowe-trendy-programowania/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>960gs &#8211; praktyczne zastosowanie</title>
		<link>http://marioosh.5dots.pl/2008/12/960gs-praktyczne-zastosowanie/</link>
		<comments>http://marioosh.5dots.pl/2008/12/960gs-praktyczne-zastosowanie/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 05:15:40 +0000</pubDate>
		<dc:creator>Marioosh</dc:creator>
				<category><![CDATA[WebDeveloping]]></category>
		<category><![CDATA[960gs]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Layout]]></category>

		<guid isPermaLink="false">http://marioosh.5dots.pl/?p=43</guid>
		<description><![CDATA[Jak obiecałem w poprzednim artykule pokażę jak praktycznie można wykorzystać framework 960gs. Do tego celu będę się wzorował na layoucie witryny wordpress.org .
Spójrzmy jak rozkłada się layout witryny wordpress.org. Gdy nałożymy na nią siatkę (użyłem modelu 12 kolumnowego) przygotowaną przez twórców systemu 960gs to otrzymamy coś takiego:
Patrząc teraz widzimy jak poszczególne elementy nakładają się z [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_50" class="wp-caption aligncenter" style="width: 310px"><a href="http://marioosh.5dots.pl/wp-content/uploads/wordpressorg.png"><img class="size-medium wp-image-50" title="Wordpress.org" src="http://marioosh.5dots.pl/wp-content/uploads/wordpressorg-300x246.png" alt="Wygląd wytryny wordpress.org" width="300" height="246" /></a><p class="wp-caption-text">Wygląd wytryny wordpress.org</p></div>
<p>Jak obiecałem w <a title="960 Grid System" href="http://marioosh.5dots.pl/2008/12/960-grid-system/">poprzednim artykule</a> pokażę jak praktycznie można wykorzystać framework 960gs. Do tego celu będę się wzorował na layoucie witryny <a title="wordpress" href="http://wordpress.org">wordpress.org</a> .<span id="more-112"></span></p>
<p>Spójrzmy jak rozkłada się layout witryny wordpress.org. Gdy nałożymy na nią siatkę (użyłem modelu 12 kolumnowego) przygotowaną przez twórców systemu 960gs to otrzymamy coś takiego:</p>
<div id="attachment_52" class="wp-caption aligncenter" style="width: 310px"><a href="http://marioosh.5dots.pl/wp-content/uploads/wordpressorggrid.png"><img class="size-medium wp-image-52" title="Wordpress.org" src="http://marioosh.5dots.pl/wp-content/uploads/wordpressorggrid-300x254.png" alt="Nałożona siatka na layout" width="300" height="254" /></a><p class="wp-caption-text">Nałożona siatka na layout</p></div>
<p>Patrząc teraz widzimy jak poszczególne elementy nakładają się z kolumnami systemu 960gs. Wystarczy jest teraz dokładnie zdefinionwać i okreslic ich szerokość.</p>
<p>Zobaczmy:</p>
<div id="attachment_53" class="wp-caption aligncenter" style="width: 310px"><a href="http://marioosh.5dots.pl/wp-content/uploads/wordpressorggrid2.png"><img class="size-medium wp-image-53" title="wordpress.org" src="http://marioosh.5dots.pl/wp-content/uploads/wordpressorggrid2-300x254.png" alt="Podział layout na elementy" width="300" height="254" /></a><p class="wp-caption-text">Podział layout na elementy</p></div>
<p>Teraz widać wyraźnie poszczególne elementy. Cały layout dzieli się na 5 poziomych sekcji &#8211; header składający się z logo (1) pola wyszukiwania (2) oraz menu górnego (3).<br />
Następna sekcja to treść podzielona na dwie równe części (4 i 5), od razu pod nim znajduje się obszar komunikatów zajmujący całą szerokość (6). Kolejna sekcja została symetrycznie podzielona na cztery części &#8211; z przeznaczeniem na ogłoszenia i komunikaty (elementy 7 &#8211; 10). Na samym dole znajdujemy footer, który podzielony został na dwie części &#8211; po lewej: standardowy footer (10), po prawej:  widoczny jest slogan witryny (11).</p>
<p>Sprawdźmy teraz jak można zreplikować ten layout za pomocą systemu 960gs. Na początku zajmiemy się headerem. Zauważmy, że elementy 2 i 3 są jeden po drugim i nie są tej samej szerokości. Musimy je zgupować razem w jednym elemencie i umieścić w tym samym rzędzie co logo.</p>
<p>Rozpoczynamy od zdefiniowania kontenera 12-to kolumnowego:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"> ...
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;container_12&quot;</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
...</pre></div></div>

<p>Teraz czas na header:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">  ...
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;logo&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_4&quot;</span>&gt;</span>LOGO<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_8&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;prefix_5 grid_3 alpha omega&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;search&quot;</span>&gt;</span> SEARCH<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;menu&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_8 alpha omega&quot;</span>&gt;</span> MENU<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
...</pre></div></div>

<p>Następnie dodajemy drugi wiersz zawierający dwie kolumny:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"> ...
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_6&quot;</span>&gt;</span>CONTENT 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_6&quot;</span>&gt;</span>CONTENT 2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
...</pre></div></div>

<p>Obszar powiadomień:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">  ...
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;messages&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_12&quot;</span>&gt;</span>MESSAGES<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
...</pre></div></div>

<p>i reszta:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">  ...
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_2&quot;</span>&gt;</span>CONTENT 2 a<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_4&quot;</span>&gt;</span>CONTENT 2 b<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_4&quot;</span>&gt;</span>CONTENT 2 c<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_2&quot;</span>&gt;</span>CONTENT 2 d<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;footer&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_10&quot;</span>&gt;</span>FOOTER<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;footerlogo&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_2&quot;</span>&gt;</span>Footer logo<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
...</pre></div></div>

<p>Gotowe, a tak wygląda to co zrobiliśmy:</p>
<p><a href="http://marioosh.5dots.pl/wp-content/uploads/ready.png"><img class="aligncenter size-medium wp-image-59" title="gotowy layout" src="http://marioosh.5dots.pl/wp-content/uploads/ready-300x216.png" alt="" width="300" height="216" /></a></p>
<p>Czyż nie podobny to tego z wordpress.org? <img src='http://marioosh.5dots.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Oczywiście system 960gs nie rozwiąże wszytkich naszych problemów związanych z przygotowaniem layoutu, ale na pewno nam to ułatwi. Nie musimy się martwić jak on będzie wyglądał w danej przeglądarce bo w każdej z nowych witryna będzie wyglądała tak samo.</p>
<p><a href='http://marioosh.5dots.pl/wp-content/uploads/wordpress_fake.zip'>Pobierz gotowy plik</a></p>
<p><a href="http://www.addtoany.com/add_to/wykop?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Wykop" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/wykop.png" width="16" height="16" alt="Wykop"/></a> <a href="http://www.addtoany.com/add_to/blip?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Blip" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blip.png" width="16" height="16" alt="Blip"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Twitter" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Facebook" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="DZone" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Digg" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/blinklist?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Blinklist" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blinklist.png" width="16" height="16" alt="Blinklist"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Delicious" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Evernote" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/google_buzz?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Google Buzz" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google_buzz.png" width="16" height="16" alt="Google Buzz"/></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960gs-praktyczne-zastosowanie%2F&amp;linkname=960gs%20%26%238211%3B%20praktyczne%20zastosowanie" title="Google Reader" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p><h3  class="related_post_title">Podobne wpisy:</h3><ul class="related_post"><li>02.12.2008 -- <a href="http://marioosh.5dots.pl/2008/12/960-grid-system/" title="960 grid system">960 grid system</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://marioosh.5dots.pl/2008/12/960gs-praktyczne-zastosowanie/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>960 grid system</title>
		<link>http://marioosh.5dots.pl/2008/12/960-grid-system/</link>
		<comments>http://marioosh.5dots.pl/2008/12/960-grid-system/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 17:13:11 +0000</pubDate>
		<dc:creator>Marioosh</dc:creator>
				<category><![CDATA[WebDeveloping]]></category>
		<category><![CDATA[960gs]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Layout]]></category>

		<guid isPermaLink="false">http://marioosh.5dots.pl/?p=31</guid>
		<description><![CDATA[Kilkanaście miesięcy temu, podczas przeszukiwania sieci, natrafiłem na framework CSS o nazwie 960 grid system. Był on wtedy w fazie beta i zgodnie z komentarzami autorów &#8211; nie wszystko działało jak powinno. Kilka dni temu, gdy przyjąłem zlecenie na przerobienie pliku .psd na szablon .xhtml przypomniałem sobie o tym narzędziu. Zapytałem wujka google&#8217;a o adres, [...]]]></description>
			<content:encoded><![CDATA[<p>Kilkanaście miesięcy temu, podczas przeszukiwania sieci, natrafiłem na framework CSS o nazwie <a title="960 Grid System" href="http://960.gs">960 grid system</a>. Był on wtedy w fazie beta i zgodnie z komentarzami autorów &#8211; nie wszystko działało jak powinno. Kilka dni temu, gdy przyjąłem zlecenie na przerobienie pliku .psd na szablon .xhtml przypomniałem sobie o tym narzędziu. Zapytałem wujka google&#8217;a o adres, pobrałem kilkubajtowy plik, zerknąłem na przykład, rzuciłem okiem na plik .css, zrobiłem kilka poprawek w .psd i po kilkunastu minutach wielokolumnowy szablon był gotowy.</p>
<p><span id="more-93"></span></p>
<h3>Czym jest 960 grid system?</h3>
<p>960gs jest prostym szablonem CSS wykorzystywanym do tworzenia layoutów. Zaprojektowano go w tym celu, aby pomagał w projektowaniu układu kolumnowego. Szablon opiera sie na szerokości 960px &#8211; stąd nazwa. Dlaczego akurat 960px? Z dwóch powodów. Pierwszym z nich jest to, że zgodnie ze satystykami W3C naczęściej używaną rozdzielczością przy przeglądaniu stron internetowych jest 1024X768px. Mając to na uwadze projektanci budują tak strony aby ich szerokość nie była większa niż 1024px. Ale dlaczego akurat 960? a nie np. 980 albo 1000? Otóż 960 jest podzielne przez liczby: 2, 3, 4, 5, 6, 8, 10, 12, 15, 16, 20, 24, 30, 32, 40, 48, 60, 64, 80, 96, 120, 160, 192, 240, 320 i 480. Daje to bardzo duże pole do popisu w dostosowywaniu szerokości.</p>
<p>Zasada działanie systemu 960 jest banalnie prosta. Projekt jest dzielony na równe kolumny i każdy element na stronie jest dostosowany do odpowiedniej ilości kolumn we wierszu. 960Gs wspiera dwa układy: 12 kolumn oraz 16 kolumn.</p>
<p>W pierwszym z nich kolumna ma szerokość 60px w drugim 40px. Marginesy są równe 10px po obu stronach co daje nam razem 20px na kolumnę. Warto zerknąć na <a href="http://960.gs/demo.html">stronę demo</a> gdzie pokazane są różne możliwe układy. Oczywiście nie są przedstawione wszystkie możliwości, ale jest ich dość aby zobaczyć ogólną zasadę działania.</p>
<h3>Co w paczce?</h3>
<p>System 960gs możemy pobrać <a href="http://960.gs/files/960_download.zip">tutaj.</a> W środku otrzymujemy pliki css składające się na system (960.css, reset.css oraz text.css) w wersji skompresowanej jak i nie. Plik 960.css jest esencją systemu. W nim znajdują sie deklaracje wyglądu kolumn. Plik reset.css zeruje wszystkie podstawowe tagi html. Plik text.css jest przykładowym dodatkowym szablonem który nadaje wielkość i wygląd czcionek w pragrafach i nagłówkach. Jest to plik opcjonalny i nie musimy z niego korzystać.</p>
<p>Obok plików CSS w paczce znajdują się sketch_sheets w formie pliku PDF. Są to gotowe szablony gotowe do wydrukowania &#8211; można je wykorzystać przy projektowaniu szablonu za pomocą ołówka na kartce.</p>
<p>W paczce także możemy znaleźć gotowe szablony do programów graficznych które wykorzystujemy jako plik bazowy do projektowania layoutu.</p>
<h3>Jak to działa?</h3>
<p>Pierwszym krokiem jest wybranie wariantu zgodnie, z którym będziemy budować nasz layout. mamy do wyboru 12 lub 16 kolumn.</p>
<p>Tworzymy div z klasą <code>container_12</code> (albo <code>container_16</code>), w którym umieścymy całą naszą treść.<br />
Dalsze projektowanie polega na tym, że układamy elementy we wierszach, gdzie zwracamy uwagę na to ile kolumn poszczególny element zajmuje. Pamiętać należy że każdy wiersz powinien mieć zdefinione co w której kolumnie się znajduje i nie można zapomnieć o żadnej z nich. Błędem jest np. zdefinowanie dwóch elementów po 5 kolumn (dających razem 10) w układzie 12-to kolumnowych. Dwie brakujące kolumny mogą (aczkowlkiek nie muszą) narobić potem zamieszania. Szerokość elementów określa się bardzo łatwo. Nadaje się klasę <code>grid_xx</code> gdzie xx &#8211; określa ilość kolumn które element ma zająć. Dla przykładu:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;container_12&quot;</span>&gt;</span> <span style="color: #808080; font-style: italic;">&lt;!-- wybieramy wielkość 12 kolumn --&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_3&quot;</span>&gt;</span> menu left<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_6&quot;</span>&gt;</span> content<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_3&quot;</span>&gt;</span> menu right<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- koniec wiersza --&gt;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- koniec głównego div'a --&gt;</span></pre></div></div>

<p>W przykładzie widzimy, że nasz wiersz został podzielony na trzy sekcje prawa i lewa po 3 kolumny, oraz środkowy element 6 kolumn.</p>
<p>Co jednak gdy będziemy chcieli zostawić puste miejsca w układzie? Używamy wtedy w elemencie dodatkowo klasy <code>prefix_x</code> lub <code>suffix_x</code>. Klasy te tworzą puste przestrzenie przed (gdy użyjemy <code>prefix</code>) lub po (<code>suffix&gt;</code>) wybranym elemencie. &#8220;x&#8221; oznacza ilość kolumn pustego miejsca.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;container_12&quot;</span>&gt;</span> <span style="color: #808080; font-style: italic;">&lt;!-- wybieramy wielkość 12 kolumn --&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_2 prefix_1&quot;</span>&gt;</span> menu left<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_6&quot;</span>&gt;</span> content<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_2 suffix_1&quot;</span>&gt;</span> menu right<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- koniec wiersza --&gt;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- koniec głównego div'a --&gt;</span></pre></div></div>

<p>W tym przykładzie tworzymy podobny układ do poprzedniego, z tym, że lewy i prawy element mają szerokość 2 kolumn, content &#8211; jak poprzednio 6, a z lewej i prawej strony są marginesy szerokości 1 kolumny.</p>
<p>W powyższych przykładach można zauważyć, że w każdym wierszu ostatni <code>div</code> posiada klasę <code> clear</code>. Kolumny są rozmieszczane jako opływające (&#8217;float&#8217;) i nadanie takiego atrybutu pozwoli &#8220;złamać wiersz&#8221;. Korzystanie z tej klasy jest zalecane aby zachować dobry układ.<br />
Nie jest wymagane korzystanie z tag&#8217;u <code>div</code>. Można używać także tagu:<code> span</code>.<br />
Istnieje także możliwość wpisywania elementów wewnątrz innych elementów. Nic nie stoi na przeszkodzie na stworzenie takiego kodu:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;container_12&quot;</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- wybieramy wielkość 12 kolumn --&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_3&quot;</span>&gt;</span> menu left<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_6&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_3 suffix_1&quot;</span>&gt;</span> content<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_2&quot;</span>&gt;</span> image<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_3&quot;</span>&gt;</span> menu right<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- koniec wiersza --&gt;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- koniec głównego div'a --&gt;</span></pre></div></div>

<p>Niestety nie jest on do końca poprawny. Pamiętajmy, że każda kolumna ma margines 10px z lewej i prawej storny. W sytuacji jak powyższa, gdy dwa elementy umieszczamy bezpośrednio w drugim elemencie zajdzie sytuacja że marginesy lewy i prawy będą miały wartość 20px. (10px margines elementu nadrzędnego i 10px elementu potomnego). Gdy będziemy chcieli nasz layout zagłębić jeszcze poziom w dół to nasz margines wyniesie jeszcze więcej. Rozwiązaniem w takich sytuacjach jest użycie klas <code> alpha</code> i <code>omega</code>, które ustawiają margines na 0. <code>alpha </code> zeruje lewy margines, <code>omega</code> zaś prawy.<br />
Poprawnym, więc zapisem będzie:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;container_12&quot;</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- wybieramy wielkość 12 kolumn --&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_3&quot;</span>&gt;</span> menu left<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_6&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_3 suffix_1 alpha&quot;</span>&gt;</span> content<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_2 omega&quot;</span>&gt;</span> image<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;grid_3&quot;</span>&gt;</span> menu right<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- koniec wiersza --&gt;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- koniec głównego div'a --&gt;</span></pre></div></div>

<p>Reasumując:<br />
Projektując nasz layout z wykorzystaniem 960gs wykorzystujemy klasy:</p>
<pre>container_12
container_16
grid_xx
prefix_xx
suffix_xx
alpha
omega
clear</pre>
<p>W następnym artykule pokażę praktyczne zastosowanie frameworku 960gs.</p>
<p><a href="http://www.addtoany.com/add_to/wykop?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Wykop" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/wykop.png" width="16" height="16" alt="Wykop"/></a> <a href="http://www.addtoany.com/add_to/blip?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Blip" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blip.png" width="16" height="16" alt="Blip"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Twitter" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Facebook" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="DZone" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Digg" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/blinklist?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Blinklist" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/blinklist.png" width="16" height="16" alt="Blinklist"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Delicious" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Evernote" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/google_buzz?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Google Buzz" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/google_buzz.png" width="16" height="16" alt="Google Buzz"/></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fmarioosh.5dots.pl%2F2008%2F12%2F960-grid-system%2F&amp;linkname=960%20grid%20system" title="Google Reader" rel="nofollow" target="_blank"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://marioosh.5dots.pl/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p><h3  class="related_post_title">Podobne wpisy:</h3><ul class="related_post"><li>05.12.2008 -- <a href="http://marioosh.5dots.pl/2008/12/960gs-praktyczne-zastosowanie/" title="960gs &#8211; praktyczne zastosowanie">960gs &#8211; praktyczne zastosowanie</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://marioosh.5dots.pl/2008/12/960-grid-system/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
