<?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>Chemikpil Blog - HTML, CSS, JavaScript i trochę Wordpressa</title>
	<atom:link href="http://chemikpil.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://chemikpil.pl</link>
	<description>Blog o rzeczach związanych z Front-Endem (HTML, CSS, JavaScript) oraz z Wordpressem. Czasem coś o życiu.</description>
	<lastBuildDate>Wed, 16 Apr 2014 13:02:45 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.28</generator>
	<item>
		<title>Podumowanie ostatniego meet.js w Poznaniu</title>
		<link>http://chemikpil.pl/podumowanie-ostatniego-meet-js-w-poznaniu/</link>
		<comments>http://chemikpil.pl/podumowanie-ostatniego-meet-js-w-poznaniu/#comments</comments>
		<pubDate>Wed, 16 Apr 2014 13:02:45 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[Eventy]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1931</guid>
		<description><![CDATA[Nowe miejsce, większy zespół organizatorów, wzbogacona formuła spotkania. Tak można by streścić ostatnie spotkanie meet.js w Poznaniu, na którym gościliśmy ponad setkę developerów. Jak zwykle było treściwie, luźno, nie zabrakło pizzy czy browarów. Każdy mógł ze spotkania wynieść coś dla siebie, a co poniektórzy załapali się nawet na kubek. Najbardziej zauważalną zmianą jest oczywiście nowe [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Nowe miejsce, większy zespół organizatorów, wzbogacona formuła spotkania. Tak można by streścić ostatnie spotkanie meet.js w Poznaniu, na którym gościliśmy ponad setkę developerów. Jak zwykle było treściwie, luźno, nie zabrakło pizzy czy browarów. Każdy mógł ze spotkania wynieść coś dla siebie, a co poniektórzy załapali się nawet na kubek.</p>

<span id="more-1931"></span>

<figure>
					
<img src="http://chemikpil.pl/wp-content/uploads/2014/04/meetjs-2.png" alt="Uczestnicy na meet.js" width="500" height="333" class="alignnone size-medium wp-image-1946" />

					
				</figure>

<p>Najbardziej zauważalną zmianą jest oczywiście nowe miejsce. Tym razem spotkaliśmy się w siedzibie <a href="http://www.wikia.com/Polska" title="Wikia w Poznaniu" target="_blank">Wiki</a> w Kupcu Poznańskim. Gospodarze zapewnili stały dostęp do pizzy, kanapek oraz piwa. Przygotowane zostały również różnego rodzaju gadżety, w tym kubki, które można było zgarnąć za zadawanie pytań, lub występ w sesji <em>Lightning Talks</em>, o których wspomnę później.<br />
Dajcie nam znać jak podobał wam się event w nowym miejscu, wypełniają nasza <a href="https://docs.google.com/forms/d/149XS-HJrBcalfTM-VsXi27PVF7QWaqYAtqXpSjjTSS8/viewform" title="Oceń ostatni meet.js" target="_blank">ankietę</a>.<p>

<p>Zmianie uległ również skład organizatorów. Dołączył do mnie Zbyszek Tenerowicz (<a href="http://twitter.com/naugtur">@naugtur</a>), który świetnie poprowadził ostatnie spotkanie. Wspólnymi siłami, będziemy dbać o to by nadal utrzymać wysoki poziom spotkań.</p>

<p>Wzorem innych spotkań, postanowiliśmy wprowadzić lightning talki. Jak na pierwszy raz wyszło naprawdę fajnie. Wystarczyło dobre wytłumaczenie formuły przez Zbyszka i kilka pierwszych wystąpień, które pokazały reszcie, że nie ma się czego obawiać. Zachęcamy więc gorąco do zgłaszania się na kolejne spotkania. Każdy z nas na pewno ma coś ciekawego do powiedzenia.</p>

<figure>
					
<img src="http://chemikpil.pl/wp-content/uploads/2014/04/meetjs.png" alt="meetjs" width="500" height="333" class="alignnone size-full wp-image-1951" />

					
				</figure>

<p>Kolejne spotkanie planowane jest gdzieś w okolicach czerwca. Do tego czasu zachęcamy do wypełnienia krótkiej <a href="https://docs.google.com/forms/d/149XS-HJrBcalfTM-VsXi27PVF7QWaqYAtqXpSjjTSS8/viewform" title="Ankieta z ostatniego spotkania" target="_blank">ankiety</a>, dzięki której dacie nam znać co wam się podobało, a nad czym powinniśmy jeszcze popracować. Zachęcam również do zgłaszania się w roli prelegenta na najbliższy event pod jednym z adresów email:<p>

<ul>
<li>chemikpil@gmail.com</li>
<li>naugtur@gmail.com</li>
</ul>

<p>Poniżej jeszcze linki do prezentacji:</p>
<ul>
	<li><a href="http://jtomaszewski.github.io/slides-gulp-is-better-grunt/" target="_blank">&#8222;Gulp – lepszy Grunt?&#8221;</a> by Jacek Tomaszewski</li>
	<li><a href="http://naugtur.pl/pres/mem2.html" target="_blank">&#8222;Ciąg dalszy: konstruktywnie o radzeniu sobie z pamięcią&#8221;</a> by Zbyszek Tenerowicz</li>
	<li><a href="http://kvas-damian.github.io/frontend-perf/" target="_blank">„Frontend Performance – Podstawy” by Damian Jóźwiak</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/podumowanie-ostatniego-meet-js-w-poznaniu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pierwszy w tym roku meet.js w Poznaniu</title>
		<link>http://chemikpil.pl/pierwszy-w-tym-roku-meet-js-w-poznaniu/</link>
		<comments>http://chemikpil.pl/pierwszy-w-tym-roku-meet-js-w-poznaniu/#comments</comments>
		<pubDate>Thu, 20 Mar 2014 11:45:22 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[Eventy]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1921</guid>
		<description><![CDATA[Zapraszamy na pierwsze w tym roku spotkanie meet.js w Poznaniu 11 kwietnia o 18:00, które tym razem odbędzie się w biurze Wikia Polska w Kupcu Poznańskim na 5 piętrze. O czym będzie można posłuchać tym razem? 18:20 &#8211; 18:50 &#8222;Gulp &#8211; lepszy Grunt?&#8221; by Jacek Tomaszewski 18:50 &#8211; 19:20 &#8222;Frontend Performance &#8211; Podstawy&#8221; by Damian [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Zapraszamy na pierwsze w tym roku spotkanie meet.js w Poznaniu 11 kwietnia o 18:00, które tym razem odbędzie się w biurze Wikia Polska w Kupcu Poznańskim na 5 piętrze. O czym będzie można posłuchać tym razem?</p>

<ul>
	<li>18:20 &#8211; 18:50 &#8222;Gulp &#8211; lepszy Grunt?&#8221; by Jacek Tomaszewski</li>
	<li>18:50 &#8211; 19:20 &#8222;Frontend Performance &#8211; Podstawy&#8221; by Damian Jóźwiak</li>
	<li>19:20 &#8211; 19:40 coffee break</li>
	<li>19:40 &#8211; 20:10 &#8222;Ciąg dalszy: konstruktywnie o radzeniu sobie z pamięcią&#8221; by Zbyszek Tenerowicz</li>
	<li>20:10 &#8211; 20:40 &#8222;Serwer wert.x i oprogramowywanie go w JS&#8221; by Łukasz Wójciak</li>
	<li>20:40 &#8211; 21:00 &#8222;Lightning talki&#8221;</li>
	<li>21:00         Pizza i rozmowy w kuluarach <img src="http://chemikpil.pl/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></li>
</ul>

<span id="more-1921"></span>

<p>Na najbliższym spotkaniu będziemy chcieli was trochę rozruszać i zaangażować poprzez wprowadzenie lightning talks. Jeżeli więc znalazłeś coś fajnego w internecie, stworzyłeś jakieś ciekawe narzędzie i chciałbyś o nim coś powiedzieć daj nam znać, chętnie posłuchamy <img src="http://chemikpil.pl/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/pierwszy-w-tym-roku-meet-js-w-poznaniu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 3.6 &#8211; HeartBeat API</title>
		<link>http://chemikpil.pl/wordpress-3-6-heartbeat-api/</link>
		<comments>http://chemikpil.pl/wordpress-3-6-heartbeat-api/#comments</comments>
		<pubDate>Thu, 05 Sep 2013 09:50:05 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1799</guid>
		<description><![CDATA[Od czasu aktualizacji WordPressa do wersji 3.6 minęło już trochę czasu. Sporo już o niej napisano, o nowym odtwarzaczu multimediów, o nowej domyślnej skórce itd. Wielu skupiało się na efektach wizualnych jakie wprowadził ze sobą &#8222;Oscar&#8221;, ja natomiast chciałbym zająć się częścią przeznaczą dla developerów. Dziś opiszę Heartbeat API, dzięki któremu działa m.in. blokowanie postów [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Od czasu aktualizacji WordPressa do wersji 3.6 minęło już trochę czasu. Sporo już o niej napisano, o nowym odtwarzaczu multimediów, o nowej domyślnej skórce itd. Wielu skupiało się na efektach wizualnych jakie wprowadził ze sobą &#8222;Oscar&#8221;, ja natomiast chciałbym zająć się częścią przeznaczą dla developerów. Dziś opiszę Heartbeat API, dzięki któremu działa m.in. blokowanie postów edytowanych już przez kogoś innego, lub informowanie użytkownika o wygaśnięciu jego sesji logowania.</p>

<span id="more-1799"></span>

<section id="czym-jest-hearbeat-api">
					<h3>Czym jest HertBeat API?<a href="#czym-jest-hearbeat-api"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Heartbeat API umożliwia ciągłą komunikację przeglądarki z serwerem. Komunikacja ta polega na cyklicznym wysyłaniu danych do serwera, który w reakcji na to odsyła dane wykorzystywane przez przeglądarkę. Proces ten jest powtarzany regularnie, przypominając bicie ludzkiego serca, dzięki czemu zresztą zawdzięcza swoją nazwę. Wszystko to odbywa się w tle, nie wpływając tym samym na pracę użytkownika. Ważny jest też fakt, że HeartBeat API startuje automatycznie po załadowaniu strony, ale z serwerem komunikuje się tylko wtedy gdy posiada jakieś dane do wysłania.</p>

				</section>

<section id="komunikacja-przegladarka-serwer">
					<h3>Komunikacja przeglądarka -&gt; serwer<a href="#komunikacja-przegladarka-serwer"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Do komunikowania się przeglądarki z serwerem wykorzystywana jest, napisana w JavaScripcie biblioteka heartbeat. Oznacza to, że każdy utworzony skrypt do poprawnego działania wymaga by wcześniej został załadowany plik heartbeat.js.</p>

<pre data-lang="PHP"><code class="language-javascript">wp_enqueue_script(
 'heartbeat_example',
 get_template_directory_uri() .'/heartbeat_example.js',
 array( 'heartbeat'),
 '1.0.0',
 true
);</code></pre>

<p>Aby wysłać jakieś dane do serwera musimy je najpierw dodać do kolejki dzięki metodzie <code>wp.heartbeat.enqueue()</code>, która przyjmuje 3 parametry:</p>
<ul>
	<li><code>handle</code> &#8211; (string) identyfikator wysyłanych na serwer danych. Powinien być unikatowy.</li>
	<li><code>data</code> &#8211; (object) dane wysyłane do serwera</li>
	<li><code>override</code> &#8211; (bool) jeżli <i>true</i> to wcześniejsze dane przypisane do identyfikatora zostaną nadpisane</li>
</ul>

<p>Przykład użycia:</p>
<pre data-lang="JavaScript"><code class="language-javascript">wp.heartbeat.enqueue('sign_in', {
    'name': 'chemikpil'
}, false};</code></pre>

<p>Dodane do kolejki dane, oczekują na wysłanie do serwera, co następuje co 15 sekund, po czym są z niej usuwane. Aby sprawdzić czy nastąpiło już wysłanie, możemy skorzystać z metody <code>wp.heartbeat.isQueued(handle)</code>, która zwraca <i>null</i> lub przypisane do identyfikatora informacje.</p>

				</section>

<section id="komunikacja-serwer-przegladarka">
					<h3>Komunikacja serwer -&gt; przeglądarka<a href="#komunikacja-serwer-przegladarka"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Po odebraniu danych przez serwer, są one ponownie zwracane do przeglądarki. Podczas tego procesu uruchamiane są dwa pomocne <a href="http://codex.wordpress.org/Plugin_API/Hooks" target="_blank">hooki</a>, dzięki którym mamy możliwość wpływać na informacje wracające do przeglądarki.</p>
<ul>
	<li><code>heartbeat_received</code> &#8211; filtr pozwalający na modyfikowanie zwracanej odpowiedzi. Dodatkowo przekazywane są również dane przesłane przez przeglądarkę oraz <code>screen_id</code>, lub <code>front</code> jeżeli użytkownik nie jest zalogowany.</li>
	<li><code>heartbeat_send</code> &#8211; filtr działa podobnie do powyższego, z ta różnicą, że nie są przekazywane dane z przeglądarki.</li>
</ul>

<p>Powyższe filtry działają dla użytkowników zalogowanych i posiadają swoje odpowiedniki dla przypadków, kiedy dany użytkownik nie jest zalogowany:</p>

<ul>
	<li><code>heartbeat_nopriv_received</code></li>
	<li><code>heartbeat_nopriv_send</code></li>
</ul>

<p>Przykład użycia:</p>

<pre data-lang="PHP"><code class="language-javascript">function admin_sign_in($response, $data, $screen_id) {
    if (isset($data['sign-in'])) {
        $response['sign-in'] = array(
            'message' => 'admin is here!'
        );
    }
    return $response;
}

add_filter('heartbeat_received','admin_sign_in',10,3);
add_filter('heartbeat_nopriv_received','admin_sign_in',10,3);</code></pre>

				</section>

<section id="nasluchiwanie-danych">
					<h3>Nasłuchiwanie danych<a href="#nasluchiwanie-danych"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Na koniec pozostaje nam już tylko odebrać dane po stronie przeglądarki. Robimy to poprzez nasłuchiwanie eventu <code>heartbeat-tick</code>.</p>

<pre data-lang="JavaScript"><code class="language-javascript">document.addEventListener('heartbeat-tick.sign-in', 
    function (event, data) {
        if (data.hasOwnProperty('sign-in')) {
            console.log(data['sign-in']);
        }
    },
false);</code></pre>


				</section>

<section id="konfiguracja">
					<h3>Konfiguracja<a href="#konfiguracja"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Po za wysyłaniem i odbieranie danych mamy możliwość również konfigurowania samego działania Heartbeat API.</p>

<h4>Zmiana pulsu</h4>
<pre data-lang="PHP"><code class="language-javascript">function heartbeat_api_settings( $settings ) {
    $settings['interval'] = 60;
    return $settings;
}
add_filter( 'heartbeat_settings', 'heartbeat_api_settings' );</code></pre>

<p>Powyżej zmieniliśmy domyślny interwał <code>$settings['interval']</code>, który przyjmuje wartość pomiędzy 15 a 60 sekund. Przypomnijmy ponownie, że domyślny puls wynosi 15 sekund.</p>

<p>Puls możemy również zmienić po stronie JS przy pomocy metody </p>

<pre data-lang="JavaScript"><code class="language-javascript">wp.heartbeat.interval(interval);</code></pre>

<p>z tym że tutaj możemy użyć tylko trzech wartości, które są stringami</p>
<ul>
	<li><code>fast</code> &#8211; puls co 5 sekund przy czym tylko na maximum 2,5 minuty, po czym wraca do domyślnego ustawienia</li>
   	<li><code>standard</code> &#8211; puls co 15 sekund</li>
  	<li><code>slow</code> &#8211; puls co 60 sekund</li>
</ul>

<h4>Wyłączenie autostartu</h4>

<p>Kolejna zmiana to wyłączenie autostartu:</p>

<pre data-lang="PHP"><code class="language-javascript">function heartbeat_api_settings( $settings ) {
    $settings['autostart'] = false;
    return $settings;
}
add_filter( 'heartbeat_settings', 'heartbeat_api_settings' );</code></pre>

<p>Po tej zmianie możemy go ponownie włączyć z poziomu JavaScriptu przy pomocy metody:</p>

<pre data-lang="JavaScript"><code class="language-javascript">wp.heartbeat.start();</code></pre>

<p>Można go również z poziomu JS wyłączyć:</p>

<pre data-lang="JavaScript"><code class="language-javascript">wp.heartbeat.stop();</code></pre>


				</section>

<section id="podsumowanie">
					<h3>Podsumowanie<a href="#podsumowanie"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>To by było na tyle jeżeli chodzi o HeartBeat API. Jak widać jest to całkiem fajna opcja, dająca autorom pluginów jeszcze większe pole manewrów niż dotychczas. Wystarczy tak naprawdę poznanie kilku JavaScriptowych funkcji oraz filtrów od strony PHP. Nie jest to oczywiście jedyna zmiana, która pojawiła się wraz z &#8222;Oscarem&#8221;, ale o tym w kolejnych wpisach.</p>

				</section>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/wordpress-3-6-heartbeat-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bootstrap 3 oficjalnie wydany</title>
		<link>http://chemikpil.pl/bootstrap-3-oficjalnie-wydany/</link>
		<comments>http://chemikpil.pl/bootstrap-3-oficjalnie-wydany/#comments</comments>
		<pubDate>Wed, 21 Aug 2013 09:02:37 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1791</guid>
		<description><![CDATA[Wczoraj oficjalny release miał Bootstrap 3.0, czyli jeden z najpopularniejszych frameworków CSS. Data wydania nie była przypadkowa, gdyż właśnie wczoraj Bootstrap obchodził swoje drugie urodziny. Co takiego się zmieniło?]]></description>
				<content:encoded><![CDATA[<p>Wczoraj oficjalny release miał <a href="http://getbootstrap.com/" title="Bootstrap 3.0" target="_blank">Bootstrap 3.0</a>, czyli jeden z najpopularniejszych frameworków CSS. Data wydania nie była przypadkowa, gdyż właśnie wczoraj Bootstrap obchodził swoje drugie urodziny. Co takiego się zmieniło?</p>

<span id="more-1791"></span>

<section id="co-nowego">
					<h3>Co nowego?<a href="#co-nowego"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Najbardziej zauważalną zmianą w nowej wersji Bootstrapa jest nowy design komponentów, który stał się płaski jak iOS 7. Nie jest to jednak żaden nowy trend, jak tłumaczą autorzy, a próba dostarczenia użytkownikom najbardziej neutralnego designu, który pozwalał by na łatwiejsze tworzenie własnych motywów graficznych. Przykładem jest strona <a href="http://bootswatch.com/" target="_blank">bootswatch.com</a>, na której możemy znaleźć kilka ciekawych rozwiązań.</p>

<p>Po za desginem autorzy przepisali cały kod css od nowa, stosując podejście Mobile First. Teraz każdy komponent jest napisany z myślą o urządzeniach mobilnych i skalowany do desktopów, a nie na odwrót, jak w wersji 2.</p>

<p>Po za wyżej wymienionymi nowy Bootstrap to:</p>
<ul>
	<li>Nowy Customizer</li>
	<li>Poprawiony box model &#8211; teraz wszystko ma <code>box-sizing: border-box</code></li>
	<li>Nowy Grid System</li>
	<li>Od nowa przepisane pluginy JavaScript &#8211; niestety wciąż napisane w jQuery</li>
	<li>Glyphicons icon font</li>
	<li>Sporo zmian w samych komponentach CSS</li>
</ul>

<p>Autorzy dodatkowo postanowili porzucić wsparcie dla IE 7 i FF 3.6, co jest dobrym ruchem, patrząc na to jak archaiczne są to przeglądarki. Zalecane jest również dołączenie pliku <a href="https://github.com/scottjehl/Respond" target="_blank">Respond.js</a>, jeżeli zależy nam na media queries w IE 8.</p>

				</section>

<section id="zrodla">
					<h3>Żródła<a href="#zrodla"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<ul>
	<li><a href="http://blog.getbootstrap.com/2013/08/19/bootstrap-3-released/" target="_blank">Wpis na blogu autorów</a></li>
	<li><a href="http://getbootstrap.com/" target="_blank">Dokumentacja Bootstrapa</a></li>
</ul>


				</section>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/bootstrap-3-oficjalnie-wydany/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Emmet LiveStyle &#8211; edycja CSS na żywo</title>
		<link>http://chemikpil.pl/emmet-livestyle-edycja-css-na-zywo/</link>
		<comments>http://chemikpil.pl/emmet-livestyle-edycja-css-na-zywo/#comments</comments>
		<pubDate>Wed, 14 Aug 2013 10:00:52 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Polecane]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1774</guid>
		<description><![CDATA[Jakiś czas temu pisałem o jednym z dodatków, bez którego nie mogę sobie wyobrazić pisania jakiegokolwieg dokumentu HTML, czyli Emmet. Jego autor stworzył właśnie kolejny plugin, który tym razem umożliwia nam edycję CSS z podglądem na żywo, czyli Emmet LiveStyle. Oczywiście ktoś zapyta, po co komu kolejne tego typu narzędzie skoro mamy już np. LiveReload, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Jakiś czas temu pisałem o jednym z dodatków, bez którego nie mogę sobie wyobrazić pisania jakiegokolwieg dokumentu HTML, czyli <a href="http://chemikpil.pl/nie-slyszales-jeszcze-o-emmet-czas-go-poznac/" title="Nie słyszałeś jeszcze o emmet? Czas go poznać." target="_blank">Emmet</a>. Jego autor stworzył właśnie kolejny plugin, który tym razem umożliwia nam edycję CSS z podglądem na żywo, czyli <a href="http://livestyle.emmet.io/" target="_blank">Emmet LiveStyle</a>. Oczywiście ktoś zapyta, po co komu kolejne tego typu narzędzie skoro mamy już np. LiveReload, CodeKit czy Bracket?</p>

<span id="more-1774"></span>

<section id="dlaczego-jest-to-lepsze">
					<h3>Dlaczego jest to lepsze?<a href="#dlaczego-jest-to-lepsze"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Wszystko rozchodzi o sposób w jaki to narzędzie działa. Emmet LiveStyle nie wymusza na nas trzymania wszystkich plików lokalnie. Tak naprawdę on w ogóle nie interesuje się tym gdzie dany plik się znajduje, a zmiany wprowadza poprzez powiązany edytor tekstu (na razie jest to niestety tylko Sublime Text). Dzięki temu edytowany plik CSS wcale nie musi być tym samym, który jest wykorzystywany w przeglądarce. Idąc dalej, również nowo utworzony i niezapisany plik możemy powiązać z Emmet LiveStyle i wprowadzać w nim zmiany.</p>

<p>Narzędzie to dodatkowo działa w obie strony, a więc również zmiany wprowadzane w Chrome DevTools są przenoszone do edytora. Jedyne co nam zostaje to tylko zapisać taki plik. Wspomniany wyżej np. LiveReload już tego nie potrafi.</p>

<p>To oczywiście nie wszystko. Poniżej znajduje się demo przygotowane przez autora rozszerzenia pokazujące jak to działa. Warto zobaczyć.</p>
<figure>
					
<iframe width="580" height="435" src="//www.youtube.com/embed/iQLhGbkupS4?autoplay=0" frameborder="0" allowfullscreen></iframe>

					
				</figure>

<p>Na koniec, Emmet LiveStyle nie radzi sobie niestety z preprocesorami CSS takimi jak np. LESS, SASS, SCSS. Autor jednak zapewnia, że jest szansa by to uzyskać. Na razie zostaje nam jednak używanie np. CodeKit.</p>

				</section>

<section id="zrodla">
					<h3>Źródła<a href="#zrodla"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<ul>
	<li><a href="http://livestyle.emmet.io/" title="Emmet LiveStyle" target="_blank">Strona główna rozszerzenia</a></li>
	<li><a href="http://livestyle.emmet.io/install/" target="_blank">Instalacja</a></li>
	<li><a href="http://coding.smashingmagazine.com/2013/08/08/release-livestyle-css-live-reload/" target="_blank">Artykuł na Smashing Magazine</a></li>
</ul>

				</section>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/emmet-livestyle-edycja-css-na-zywo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hgroup wypadł z łask W3C</title>
		<link>http://chemikpil.pl/hgroup-wypadl-z-lask-w3c/</link>
		<comments>http://chemikpil.pl/hgroup-wypadl-z-lask-w3c/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 10:30:59 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1757</guid>
		<description><![CDATA[Informacja nie jest niczym nowym i pewnie część z was już wie co się stało. Około dwóch miesięcy temu W3C pozbyło się tagu &#60;hgroup&#62;, wpisując go na listę elementów niezgodnych ze specyfikacją. Decyzja nie powinna zbytnio dziwić bo element ten wcześniej znalazł się pod kontrolą. Program naprawczy nie przyniósł jednak efektów, i możemy zapomnieć o [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Informacja nie jest niczym nowym i pewnie część z was już wie co się stało. Około dwóch miesięcy temu W3C pozbyło się tagu <code>&lt;hgroup&gt;</code>, wpisując go na listę elementów <a href="http://www.w3.org/html/wg/drafts/html/CR/obsolete.html#non-conforming-features">niezgodnych ze specyfikacją</a>. Decyzja nie powinna zbytnio dziwić bo element ten wcześniej znalazł się pod kontrolą. Program naprawczy nie przyniósł jednak efektów, i możemy zapomnieć o dalszym używaniu <code>&lt;hgroup&gt;</code>. Jako oficjalny powód &#8222;rozwiązania umowy&#8221; podano brak znaczenia semantycznego.</p>

<span id="more-1757"></span>

<p>Przypomnijmy, że hgroup zasłynął możliwością grupowania elementów <code>h1-h6</code>. Jego środowiskiem naturalnym miały być nagłówki sekcji, dzięki czemu developerzy mogli definiować wielopoziomowe tytuł lub tagline.</p>

<p><code>&lt;hgroup&gt;</code> maił też pewną magiczną moc, dzięki której ukrywał przed <a href="http://gsnedders.html5.org/outliner/" target="_blank"><em>document outline</em></a> wszystkie elementy nagłówków wewnątrz siebie, informując tylko o tym z najwyższą rangą. Hmmm &#8230; pojawiały się głosy że to nie moc a okłamywanie najwyższych organów.</p>

<p>Pewnego pięknego marcowego dnia, Steve Faulkner postanowił skończyć z tą samowolką i <a href="http://lists.w3.org/Archives/Public/public-html/2013Mar/0026.html" target="_blank">zaproponował</a> kilka, jego zdaniem lepszych rozwiązań. Swoje propozycje opisał również na <a href="http://html5doctor.com/howto-subheadings/" target="_blank">html5doctor</a>, popierając je przykładami, i wyjaśniając jak w poszczególnym przypadku zachowa się document outline.<p>

<p>Jak widać na fali popularności HTML5 wraz z elementami wspomagającymi semantykę, wybiły się elementy z nie do końca jasnym znaczeniem, lub w jakiś inny sposób przeszkadzające ludziom z W3C. W tym przypadku obyło się jednak bez zamieszek czy masowych marszy niezadowolonych. Wszyscy pamiętamy czym kończyły się próby <a href="http://chemikpil.pl/zastapienie-elementu-time-elementem-data/" title="Zamach na semantykę? Zastąpienie elementu time elementem data." target="_blank">usunięcia elementu</a> <code>&lt;time&gt;</code>. Tym razem nikt chyba nie będzie płakał po tej zmianie.</p>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/hgroup-wypadl-z-lask-w3c/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>meet.js &#8211; wracamy w Poznaniu</title>
		<link>http://chemikpil.pl/meet-js-wracamy-w-poznaniu/</link>
		<comments>http://chemikpil.pl/meet-js-wracamy-w-poznaniu/#comments</comments>
		<pubDate>Wed, 12 Jun 2013 11:00:56 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[Eventy]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1744</guid>
		<description><![CDATA[Po dłuższej nieobecności wracamy do Poznania z kolejną edycją meet.js, która odbędzie się 28 czerwca o godzinie 18:00 oczywiście w siedzibie Cognifide. Wciąż mamy wolne miejsca dla speakerów, więc jeżeli masz coś ciekawego o czym chciałbyś opowiedzieć i czujesz się na siłach, napisz na chemikpil@gmail.com. Więcej informacji ogólnie spotkaniach meet.js znajdziecie na meetjs.pl]]></description>
				<content:encoded><![CDATA[<p>Po dłuższej nieobecności wracamy do Poznania z kolejną edycją meet.js, która odbędzie się <strong>28 czerwca</strong> o godzinie <strong>18:00</strong> oczywiście w siedzibie <a href="http://www.cognifide.com/"><strong>Cognifide</strong></a>. Wciąż mamy wolne miejsca dla speakerów, więc jeżeli masz coś ciekawego o czym chciałbyś opowiedzieć i czujesz się na siłach, napisz na <a href="mailto:chemikpil@gmail.com">chemikpil@gmail.com</a>.</p>
<span id="more-1744"></span>
<p>Więcej informacji ogólnie spotkaniach meet.js znajdziecie na <a href="http://meetjs.pl" target="_blank">meetjs.pl</a></p>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/meet-js-wracamy-w-poznaniu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML template element &#8211; szablony w standardzie</title>
		<link>http://chemikpil.pl/html-template-element/</link>
		<comments>http://chemikpil.pl/html-template-element/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 12:49:20 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1676</guid>
		<description><![CDATA[Szablony w aplikacjach webowych to dzisiaj nic nowego. Dla samego JavaScriptu mamy na rynku kilka dobrych rozwiązań wspomagających pracę z templateami jak choćby Handlebars, Mustache.js czy Underscorowy _.template(). To oczywiście tylko część tego co oferuje nam internet. A co z natywnym wsparciem dla szablonów?]]></description>
				<content:encoded><![CDATA[<p>Szablony w aplikacjach webowych to dzisiaj nic nowego. Dla samego JavaScriptu mamy na rynku kilka dobrych rozwiązań wspomagających pracę z templateami jak choćby <a href="http://handlebarsjs.com/" target="_blank">Handlebars</a>, <a href="http://mustache.github.io/" target="_blank">Mustache.js</a> czy Underscorowy <a href="http://underscorejs.org/#template" target="_blank">_.template()</a>. To oczywiście tylko część tego co oferuje nam internet. A co z natywnym wsparciem dla szablonów?</p>

<span id="more-1676"></span>

<section id="jak-definiujemy-szablony-teraz">
					<h3>Jak definiujemy szablony teraz?<a href="#jak-definiujemy-szablony-teraz"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Dotychczas, definiując szablon w dokumencie, mogliśmy skorzystać z dwóch rozwiązań. Pierwsze podejście to tworzenie takiego szablonu jako część DOM i ukrywanie go poprzez <code>display:none</code> lub nowy atrybut <code>hidden</code>:</p>

<pre data-lang="HTML"><code class="language-markup">&lt;div id="myTemplate" hidden&gt;
    &lt;li class="todo-item"&gt;&lt;/li&gt;
&lt;/div&gt;</code></pre>

<p>Drugie podejście wykorzystuje element script:</p>

<pre data-lang="HTML"><code class="language-markup">&lt;script id="myTemplate" type="text/template"&gt;
    &lt;li class="todo-item"&gt;&lt;/li&gt;
&lt;/script&gt;</code></pre>

<p>Obydwa podejścia mają swoje wady i zalety, ale nie są to rozwiązania natywne. W3C postanowiło więc wprowadzić element <code>&lt;template&gt;</code>, który takie natywne wsparcie ma nam zapewnić</p>

				</section>

<section id="element-template">
					<h3>Element template<a href="#element-template"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Element <code>&lt;template&gt;</code>, jak mówi <a href="https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html" target="_blank">specyfikacja</a>, pozwala nam na zdefiniowanie fragmentu kodu HTML, który możemy wielokrotnie wykorzystywać w dalszej części naszej aplikacji. Zawartość tego elementu, czyli nasz szablon, nosi nazwę <i>template content</i> i znajduje się pod właściwością <code>content</code>. Poniżej przykładowy szablon.</p>

<pre data-lang="HTML"><code class="language-markup">&lt;template id="myTemplate"&gt;
    &lt;li class="todo-item"&gt;&lt;/li&gt;
&lt;/template&gt;</code></pre>

<p>Element <code>&lt;template&gt;</code> ma kilka ciekawych właściwości o których warto pamiętać.</p>
<ol>
        <li>Może zostać umieszczony w dowolnym miejscu na stronie, czyli i w
<code>&lt;head&gt;</code> i w <code>&lt;body&gt;</code> ale także np. w <code>&lt;table&gt;</code>.</li>
	<li>Zawartość szablonu jest ignorowana przez przeglądarkę, co oznacza że HTML nie pojawi się na stronie.</li>
        <li>Wywołanie <code>querySelector</code> (lub jemu podobnych) na elemencie <code>&lt;template&gt;</code> nie zwróci nam żadnego wyniku. Jednak wywołanie tej funkcji na własności <code>content</code> już wynik zwróci:
<pre data-lang="JavaScript"><code class="language-javascript">var t = document.querySelector('#myTemplate');
t.content.querySelector('label');</code></pre>
 </li>
	<li>Znajdujące się wewnątrz skrypty nie zostaną wywołane.</li>
	<li>Przeglądarka nie pobierze również obrazków, video czy audio zdefiniowanych w szablonie.</li>
	<li>Zawartość <code>content</code> jest tylko do odczytu</li>
</ol>


				</section>

<section id="wykorzystanie-szablonu">
					<h3>Wykorzystanie szablonu<a href="#wykorzystanie-szablonu"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Najprostszym sposobem aby wykorzystać zdefiniowany szablon jest utworzenie głębokiej kopii zawartości <code>content</code>, używając do tego funkcji <code>cloneNode(true)</code>.</p>

<pre data-lang="JavaScript"><code class="language-javascript">var t = document.querySelector('#myTemplate'),
    todos = document.getElementById('todos');

todos.appendChild(t.content.cloneNode(true));</code></pre>

<p>Warto tutaj zaznaczyć, że w momencie kopiowania zawartości, przeglądarka pobierze wszystkie zdefiniowane wewnątrz obrazki, video ipt. i/lub wywoła napotkane skrypty.</p>

<p>Link do <a href="http://jsbin.com/uyixil/8" target="_blank">demo</a> (chrome <i aria-hidden="true" class="icon-chrome"></i> 26+, lub firefox <i aria-hidden="true" class="icon-firefox"></i> 22+)</p>

				</section>

<section id="wsparcie-przegladarek">
					<h3>Wsparcie przeglądarek<a href="#wsparcie-przegladarek"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>W chwili pisania tego postu jedynie chrome (<i aria-hidden="true" class="icon-chrome"></i> 26+) oraz firefox (<i aria-hidden="true" class="icon-firefox"></i> 22+) zapewniają wsparcie dla elementu <code>&lt;template&gt;</code>. Jak zawszę odsyłam jednak do <a href="http://caniuse.com/#feat=template" target="_blank">caniuse.com</a> aby być na bieżąco.</p>

<p>Aby wykryć wsparcie przeglądarki dla <code>template</code> wystarczy utworzyć ten element w JS i sprawdzić czy posiada on właściwość <code>content</code>.</p>

<pre data-lang="JavaScript"><code class="language-javascript">function supports_template() {
  return 'content' in document.createElement('template');
}</code></pre>


				</section>

<section id="podsumowanie">
					<h3>Podsumowanie<a href="#podsumowanie"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>To by było na tyle. Specyfikacja dalej się rozwija więc możemy się spodziewać kolejnych zmian, ale już teraz można powiedzieć, że dobrze że taki element się pojawił. Fajnie, że dostaniemy natywną możliwość definiowania szablonów, zamiast bawić się nie do końca semantycznymi rozwiązaniami. Wsparcie oczywiście nie jest jeszcze imponujące ale miejmy nadzieję, że to się szybko zmieni.</p>

				</section>

<section id="zrodla">
					<h3>Źródła<a href="#zrodla"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<ul>
	<li><a href="https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html" target="_blank">W3C spec</a></li>
	<li><a href="http://www.html5rocks.com/en/tutorials/webcomponents/template/#toc-old" target="_blank">Artykuł na html5rocks.com</a></li>
</ul>

				</section>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/html-template-element/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Nie słyszałeś jeszcze o emmet? Czas go poznać.</title>
		<link>http://chemikpil.pl/nie-slyszales-jeszcze-o-emmet-czas-go-poznac/</link>
		<comments>http://chemikpil.pl/nie-slyszales-jeszcze-o-emmet-czas-go-poznac/#comments</comments>
		<pubDate>Fri, 17 May 2013 18:01:22 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Polecane]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1657</guid>
		<description><![CDATA[Dość dawno temu pisałem o narzędziu Zen Coding, które niesamowicie ułatwia nam pracę z HTML-em, i bez którego ja nie wyobrażam sobie tworzenia tego typu dokumentów. Zen Codingu już jednak niema, ale to nie oznacza, że straciłem sens życia. Poznajmy naszego dzisiejszego gościa, czyli Emmet, który jest młodszym bratem wspomnianego narzędzia.]]></description>
				<content:encoded><![CDATA[<p>Dość dawno temu pisałem o narzędziu <a href="http://chemikpil.pl/zen-coding-szybsze-tworzenie-dokumentu-html/" target="_blank">Zen Coding</a>, które niesamowicie ułatwia nam pracę z HTML-em, i bez którego ja nie wyobrażam sobie tworzenia tego typu dokumentów. Zen Codingu już jednak niema, ale to nie oznacza, że straciłem sens życia. Poznajmy naszego dzisiejszego gościa, czyli <a href="http://emmet.io/" target="_blank">Emmet</a>, który jest młodszym bratem wspomnianego narzędzia.</p>

<span id="more-1657"></span>

<section id="o-emmet">
					<h3>Emmet, czym ty w ogóle jesteś?<a href="#o-emmet"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					

<p>Emmet to stworzone dla web-developerów narzędzie, a bardziej plugin do ich edytorów, który ciąg znaków, przypominający budową selektory w CSS, zamienia w rozbudowaną strukturę HTML. Dla przykładu poniższy ciąg znaków:</p>

<pre data-lang="Emmet"><code class="language-css">ul#menu>li.item-$*5>a[href=#]{Menu link $}</code></pre>

<p>… po wciśnięciu klawisza <em>tab</em> zamieni się na:</p>

<pre data-lang="HTML"><code class="language-markup">&lt;ul id="menu"&gt;
	&lt;li class="item-1"&gt;&lt;a href="#"&gt;Menu link 1&lt;/a&gt;&lt;/li&gt;
	&lt;li class="item-2"&gt;&lt;a href="#"&gt;Menu link 2&lt;/a&gt;&lt;/li&gt;
	&lt;li class="item-3"&gt;&lt;a href="#"&gt;Menu link 3&lt;/a&gt;&lt;/li&gt;
	&lt;li class="item-4"&gt;&lt;a href="#"&gt;Menu link 4&lt;/a&gt;&lt;/li&gt;
	&lt;li class="item-5"&gt;&lt;a href="#"&gt;Menu link 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</code></pre>

<p>Emmet potrafi też pomóc w pisaniu CSS. Fajną rzeczą jest np. skrót lg(…), który na wyjściu daje nam definicje gradientu dla wszystkich przeglądarek.</p>


<pre data-lang="Emmet"><code class="language-css">lg(top, red, blue)</code></pre>

<pre data-lang="Emmet"><code class="language-css">background-image: -webkit-gradient(linear, 0 0, 0 100%, 
                   from(red), to(blue));
background-image: -webkit-linear-gradient(red, blue);
background-image: -moz-linear-gradient(red, blue);
background-image: -o-linear-gradient(red, blue);
background-image: linear-gradient(red, blue);</code></pre>

<p>Problemem przy CSS jest jednak to, że skrótów do zapamiętania jest zbyt wiele, co znacznie utrudnia korzystanie z niego. Emmet postarał się jednak rozwiązać ten problem, wprowadzając <em>fuzzy search</em>. Działa to tak, że za każdym razem kiedy podamy niezdefiniowany skrót, Emmet postara się znaleźć najbardziej zbliżoną do niego definicję. Dla przykłady, aby otrzymać <code>overflow: hidden</code>, możemy użyć skrótu <code>ov:h</code>, który jest właściwy, ale również <code>ov-h</code>, <code>ovh</code> lub nawet <code>oh</code>, które de facto nie występują w dokumentacji.</p>


				</section>

<section id="akcje">
					<h3>Akcje<a href="#akcje"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					

<p>Emmet to nie tylko skróty i klawisz tab. To również wiele bardzo przydatnych akcji. Dla przykładu, możemy w łatwy sposób poruszać się pomiędzy specjalnymi <a href="http://docs.emmet.io/actions/go-to-edit-point/" target="_blank">punktami edycji</a>, dodawanymi przez Emmet pomiędzy tagami lub w miejscu na wartość atrybutu. Innym przykładem jest <a href="http://docs.emmet.io/actions/update-image-size/" target="_blank">wzbogacanie</a> tagu <code>img</code> o atrybuty <code>width</code> i <code>height</code>, pobrane automatycznie z dołączonego pliku używając klawiszy <em>Shift+Ctrl+U</em> (<em>Shift+Ctrl+i</em> w Sublime Text 2). Więcej akcji znajdziecie w dokumentacji:
<br /><a href="http://docs.emmet.io/actions" target="_blank">http://docs.emmet.io/actions</a></p>


				</section>

<section id="dokumentacja">
					<h3>Składnia, dokumentacja, taka sytuacja<a href="#dokumentacja"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>A propo dokumentacji. Celowo piszę tutaj szczątkowo o tym co potrafi to narzędzie, bowiem Emmet w porównaniu do swojego poprzednika ma zdecydowanie lepszą i bardziej przystępną dokumentację. Znaleźć tam można opis wszystkich możliwości tego narzędzia wraz z interaktywnymi przykładami. Nie ma sensu bym to powielał, dodatkowo w gorszej formie. Link poniżej:</p>
<p><a href="http://docs.emmet.io" target="_blank">http://docs.emmet.io</a>
<br /><a href="http://docs.emmet.io/cheat-sheet/" target="_blank">http://docs.emmet.io/cheat-sheet/</a></p>

				</section>

<section id="podsumowanie">
					<h3>Podsumowanie<a href="#podsumowanie"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Narzędzie jest warte uwagi i polecam je każdemu, o ile w ogóle istnieje jeszcze ktoś, kto o nim nie słyszał. To w jaki sposób ułatwia ono prace jest nie do opisania. Ja osobiście nie potrafię pracować w środowisku gdzie Emmeta nie ma (tak, w notatniku bym sobie nie poradził). Dla mnie jest po prostu must have.</p>

				</section>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/nie-slyszales-jeszcze-o-emmet-czas-go-poznac/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Front-Trends 2013 &#8211; podsumowanie</title>
		<link>http://chemikpil.pl/front-trends-2013-podsumowanie/</link>
		<comments>http://chemikpil.pl/front-trends-2013-podsumowanie/#comments</comments>
		<pubDate>Sat, 27 Apr 2013 14:17:10 +0000</pubDate>
		<dc:creator><![CDATA[Chemikpil]]></dc:creator>
				<category><![CDATA[Eventy]]></category>

		<guid isPermaLink="false">http://chemikpil.pl/?p=1614</guid>
		<description><![CDATA[24-26 kwietnia to data którą każdy szanujący się miłośnik front-endu miał zapisaną w sowim kalendarzu i wyczekiwał jej ze zniecierpliwieniem. To czas kiedy w Polsce odbyło się prawdziwie święto, czyli Front-Trends 2013, konferencja na prawdziwym światowym poziomie. Organizatorzy, czyli Diamian Wielgosik i Paweł Czerski, starali się by poziom z roku na rok był coraz wyższy, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>24-26 kwietnia to data którą każdy szanujący się miłośnik front-endu miał zapisaną w sowim kalendarzu i wyczekiwał jej ze zniecierpliwieniem. To czas kiedy w Polsce odbyło się prawdziwie święto, czyli Front-Trends 2013, konferencja na prawdziwym światowym poziomie. Organizatorzy, czyli <a href="http://ferrante.pl/" target="_blank">Diamian Wielgosik</a> i <a href="http://czerski.info/" target="_blank">Paweł Czerski</a>, starali się by poziom z roku na rok był coraz wyższy, i to się im niewątpliwie udaje. Szacunek panowie! A teraz trochę o tym co działo się w tym roku.</p>
<span id="more-1614"></span>

<section id="tlo-konferencji">
					<h3>O samej konferencji słów kilka<a href="#tlo-konferencji"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Edycja 2013 w porównaniu z latami ubiegłymi trwała 3 dni, zaproszonych zostało 24 wspaniałych speakerów, pojawiło się 420 gości. Tyle jeżeli chodzi o liczby.</p>
<h4>Rejestracja</h4>
<figure>
					
<img src="http://chemikpil.pl/wp-content/uploads/2013/04/20130424-103547.jpg" alt="20130424-103547.jpg" width="500" height="375" class="alignnone size-full wp-image-1559" />

					<figcaption>Rejestracja przebiegła sprawnie</figcaption>
				</figure>
<p>Organizatorzy bardzo się postarali by rejestracja nie była głównym punktem do narzekań gości. Wszystko przebiegło bardzo sprawnie i nie odnotowano żadnych poślizgów. Tu ukłon w stronę organizatorów bo rok temu tak dobrze nie było.</p>
<h4>Venue</h4>
<p>Ponownie wybrano <a href="http://www.sohofactory.pl/en" target="_blank">Soho Factory</a>, więc nie ma się co tutaj za bardzo rozpisywać. Kto był rok temu dobrze znał to miejsce. Zabrakło jednak hamaków, a sala gdzie odbywały się przerwy, trzeciego dnia zamieniła się w saunę. Nie były to jednak jakieś duże niedogodności, i osobiście uważam że to dobre miejsce na tego typu eveny.</p>
<h4>After Party</h4>
<p>Po za oficjalnymi after partami, które zorganizowane zostały po drugi dniu, odbyło się jeszcze kilka nieoficjalnych. Tutaj jak zwykle było epicko i każdy kto się pojawił, czy to w Irish Pubie, czy w Soho nie miał czego żałować. O tym co się tam działo być może przeczytacie kiedyś na PudelekJS.</p>

				</section>


<section id="prezentacje">
					<h3>Co ciekawego mówili speakerzy?<a href="#prezentacje"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>Jak to bywa na takich konferencjach, występy są lepsze i gorsze. Skupię się tylko na tych które dla mnie wydały się najbardziej wartościowe.</p>

<h4>Holger Bartel &#8211; 180 Degrees East</h4>
<p>Holger przedstawił jak wygląda rynek azjatycki i jak dziwny on jest w porównaniu do tego co znamy, czyli Europy lub Stanów. Jako największe różnice wymienione zostały choćby język czy kultura jaka tam panuje. Azjaci kładą na to duży nacisk, co oznacza, że chcąc wejść na ten rynek, od razu trzeba pomyśleć o tym by zatrudnić dobrego tłumacza. Prezentacja głównie pomocna dla tych, którzy myślą o tym by zacząć zarabiać sprzedając swoje produkty w Azji.</p>

<h4>Estelle Weyl &#8211; Web performance considerations in a mobile world</h4>
<p>To chyba najlepsza prezentacja pierwszego dnia. Estelle mówiła o tym co zrobić by nasza strona była lżejsza na urządzeniach mobilnych. Niby nic odkrywczego jak np. to <a href="http://estelle.github.io/mobilecss/30.html#slide10" target="_blank">jpg < png < gif</a> czy choćby zdanie dnia jak dla mnie:</p>

<blockquote class="twitter-tweet"><p>The best sentence today &#8222;Use querySelector instead of jQuery&#8217;s $&#8221; <a href="https://twitter.com/search/%23fronttrends">#fronttrends</a></p>&mdash; Michał Maćkowiak (@chemikpil) <a href="https://twitter.com/chemikpil/status/327034201599782913">April 24, 2013</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>… ale np. ładowanie responsywnych obrazków przez svg, było dla mnie nowością. Warto zainteresować się tą prezentacją, gdy tylko pojawi się w sieci.</p>

<h4>Allen Wirfs-Brock &#8211; JavaScript: The Machine Language of the Ambient Computing Era</h4>
<p>Wspaniałe otwarcie drugiego dnia co było widać choćby po reakcjach na twitterze. Allen opowiedział o tym jak JavaScript wyglądał, wygląda i będzie wyglądał. Pokazał kilka innych zastosowań tego jezyka jak np. <a href="http://asmjs.org/" target="_blank">asm.js</a> oraz kilka nowości z ES6 jak choćby klasy. Po tej prezentacji wiem, że czekają nas piękne czasy.<p>

<h4>Jake Archibald &#8211; Rendering without lumpy bits</h4>
<p>Kolejna wspaniała prezentacja, głównie przez sposób prowadzenia. Jake pokazał nam kilka problemów związanych z renderingiem i wyjaśnił jak sobie z nimi radzić, robiąc przy tym wspaniałe show. Przypomina mi się <a href="http://css-tricks.com" target="_blank">Chris Coyier</a> z roku ubiegłego. Poniżej wideo z innej konferencji, na której Jake pojawił się z tym samym tematem:</p>

<iframe src="http://player.vimeo.com/video/64733304?title=0&amp;byline=0&amp;portrait=0&amp;color=f3b940" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>

<p>Link do prezentacja: 
<a href="https://speakerdeck.com/jaffathecake/rendering-without-lumps">Rendering Without Lumps</a></p>

<h4>Braniecki i Małolepszy &#8211; Responsive localization with L20n</h4>
<p>Kolejna dobra prezentacja, której przyjemnie się słuchało, tym razem o narzędziu <a href="http://l20n.org" target="_blank">l20n.org</a>. Nie będę się tu rozpisywał tylko od razu zaproszę do przejrzenia <a href="http://l20n.github.io/preso/responsive/" target="_blank">prezentacji</a>. Od siebie dodam, że samo narzędzie wygląda ciekawie, a na dniach pojawi się jakiś wpis o tym jak to działa.</p>

<p>P.S. był to jedyny polski akcent w tym roku.</p>

<h4>Lea Verou &#8211; The humble border-radius</h4>
<p>Na koniec nie mogłem nie wspomnieć o prezentacji Lei, która mówiła o właściwości border-radius. Wydawać by się mogło, że zrobienie z tego prezentacji na 30 min to jakaś abstrakcja. Nic bardziej mylnego. Wiele ciekawych informacji i przykładów. Zresztą przekonajcie się sami: <a href="http://lea.verou.me/humble-border-radius/" target="_blank">link do prezentacji</a>.</p>

<h4>Co przegapiłem?</h4>
<p>Niestety przegapiłem też dwie prezentacje, które muszę nadrobić jak pojawi się wideo (organizatorzy wspominali coś o miesiącu oczekiwania):</p>
<ul>
	<li>The New CSS Layout &#8211; Rachel Andrew</li>
	<li>Everybody hates passwords &#8211; your site doesn&#8217;t need one &#8211; Shane Tomlinson</li>
</ul>

				</section>

<section id="podsumowanie">
					<h3>Podsumowanie<a href="#podsumowanie"><i aria-hidden="true" data-icon="&#xe015;"></i></a></h3>
					
<p>No cóż wszystko co dobre szybko się kończy i nie inaczej było w tym przypadku. Wspaniałe 3 dni które na długo zapadną mi w pamięci. Teraz pozostaje czekać na kolejne okazje do spotkań w Warszawie, a najbliższa może nadarzyć się 1 czerwca na warsztatach z <a href="http://blog.end3r.com/241/warsztaty-tworzenia-aplikacji-firefox-os-w-czerwcu-w-warszawie/" target="_blank">Firefox OS</a>.</p>

				</section>]]></content:encoded>
			<wfw:commentRss>http://chemikpil.pl/front-trends-2013-podsumowanie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
