<?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>Marcin Dryka</title>
	<atom:link href="http://marcin.dryka.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://marcin.dryka.pl</link>
	<description></description>
	<lastBuildDate>Mon, 16 Feb 2015 19:05:33 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.12</generator>
	<item>
		<title>PHPers Silesia styczeń 2014</title>
		<link>http://marcin.dryka.pl/2015/02/phpers-silesia-styczen-2014/</link>
		<comments>http://marcin.dryka.pl/2015/02/phpers-silesia-styczen-2014/#comments</comments>
		<pubDate>Mon, 16 Feb 2015 19:05:33 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpers]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=781</guid>
		<description><![CDATA[Zaproszony przez @daryush_d do zrobienia zdjęć na PHPers Silesia aparat zabrałem. I wcale nie czuję się winny tego, że zdjęć jest tak mało. More: https://www.flickr.com/photos/drymek/sets/72157648523249544/]]></description>
				<content:encoded><![CDATA[<p>Zaproszony przez <a title="@daryush_d" href="https://twitter.com/daryush_d" target="_blank">@daryush_d</a> do zrobienia zdjęć na PHPers Silesia aparat zabrałem. I wcale nie czuję się winny tego, że zdjęć jest tak mało.</p>
<p><span id="more-781"></span></p>
<p><a href="http://marcin.dryka.pl/wp-content/uploads/2015/02/16364754169_e36107f6f5_o.jpg"><img class="aligncenter size-full wp-image-783" src="http://marcin.dryka.pl/wp-content/uploads/2015/02/16364754169_e36107f6f5_o.jpg" alt="16364754169_e36107f6f5_o" width="1024" height="680" /></a></p>
<blockquote>
<p style="text-align: center;">More:</p>
<h2 style="text-align: center;"><a title="PHPers Silesia styczeń 2014" href="https://www.flickr.com/photos/drymek/sets/72157648523249544/" target="_blank">https://www.flickr.com/photos/drymek/sets/72157648523249544/</a></h2>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2015/02/phpers-silesia-styczen-2014/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SymfonyCon Madrid 2014</title>
		<link>http://marcin.dryka.pl/2015/02/symfonycon-madrid-2014/</link>
		<comments>http://marcin.dryka.pl/2015/02/symfonycon-madrid-2014/#comments</comments>
		<pubDate>Mon, 16 Feb 2015 17:58:35 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[symfony2]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=777</guid>
		<description><![CDATA[It tooks me a while to upload all these photos. Finally all of them are here. I have no idea who took pictures of bins, but you could see a lot of them in Madrid. See you next time! More: https://www.flickr.com/photos/drymek/sets/72157650419919319/ Legal notice: You can use the images for any purpose. You can modify and [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>It tooks me a while to upload all these photos. Finally all of them are here. I have no idea who took pictures of bins, but you could see a lot of them in Madrid. See you next time!<br />
<span id="more-777"></span></p>
<blockquote>
<p style="text-align: center;">More:</p>
<h2 style="text-align: center;"><a title="SymfonyCon Madrid 2014 Photos" href="https://www.flickr.com/photos/drymek/sets/72157650419919319/" target="_blank">https://www.flickr.com/photos/drymek/sets/72157650419919319/</a></h2>
</blockquote>
<h2>Legal notice:</h2>
<p>You can use the images for any purpose. You can modify and use for commercial. You should link to this post and/or information about the author (<a title="@drymek" href="https://twitter.com/drymek/" target="_blank">@drymek</a>) (but you don&#8217;t have to).</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2015/02/symfonycon-madrid-2014/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPCon 2014</title>
		<link>http://marcin.dryka.pl/2014/11/phpcon-2014/</link>
		<comments>http://marcin.dryka.pl/2014/11/phpcon-2014/#comments</comments>
		<pubDate>Tue, 11 Nov 2014 18:43:20 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=764</guid>
		<description><![CDATA[Trochę czasu minęło od września, no ale czasem tak ciężko jest się pozbierać, że trwa to blisko 2 miesiące. Ale są zdjęcia ode mnie już dostępne. Nie jakaś porażająca liczba, ale jest co zobaczyć. Co tu dużo pisać? Krótki spoiler: Wszystko zaczęło się od prezentacji Mariusza Gila. Zwrócił moją uwagę na HHVM. Co prawda nie [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Trochę czasu minęło od września, no ale czasem tak ciężko jest się pozbierać, że trwa to blisko 2 miesiące. Ale są zdjęcia ode mnie już dostępne. Nie jakaś porażająca liczba, ale jest co zobaczyć. Co tu dużo pisać?<span id="more-764"></span></p>
<p>Krótki spoiler:</p>
<p>Wszystko zaczęło się od prezentacji Mariusza Gila. Zwrócił moją uwagę na HHVM. Co prawda nie mogę go używać, bo Doctrine nie współpracuje, ale zawsze warto wiedzieć, że ktoś ma lepiej.</p>
<p>&nbsp;</p>
<p><a href="http://marcin.dryka.pl/wp-content/uploads/2014/11/mariuszgil.png"><img class="aligncenter wp-image-766" src="http://marcin.dryka.pl/wp-content/uploads/2014/11/mariuszgil.png" alt="mariuszgil" width="300" height="300" /></a><br />
Następnie kilka osób zostało uznanych za zaginionych. Spokojnie bez paniki. Tylko tymczasowo. Pani sprzątająca pokoje odnalazła wszystkie zguby.<br />
<a href="http://marcin.dryka.pl/wp-content/uploads/2014/11/wanted.png"><img class="aligncenter wp-image-767" src="http://marcin.dryka.pl/wp-content/uploads/2014/11/wanted.png" alt="wanted" width="300" height="300" /></a><br />
I ostatnia kompilacja, ale tym razem zupełnie serio. Moim zdaniem najlepsza prezentacja. Prezentacja z cyklu &#8222;jak żyć&#8221;. Najtrudniejsze z możliwych, a tutaj autor pokazał pełną klasę. Zarówno zawartość, jak i przekaz na wysokim poziomie. Karol &#8211; jakbym rozdawał jakieś nagrody, to byś ode mnie dostał za tą prezentację! (Ale nie rozdaje).</p>
<p><a href="http://marcin.dryka.pl/wp-content/uploads/2014/11/rambo.png"><img class="aligncenter wp-image-765" src="http://marcin.dryka.pl/wp-content/uploads/2014/11/rambo.png" alt="rambo" width="300" height="300" /></a></p>
<p>No i na sam koniec odnośnik do całego streamu:</p>
<blockquote>
<p style="text-align: center;"><a title="Flickr" href="https://www.flickr.com/photos/drymek/sets/72157648816279480/" target="_blank">https://www.flickr.com/photos/drymek/sets/72157648816279480/</a></p>
</blockquote>
<p>Do zobaczenia za rok!</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2014/11/phpcon-2014/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Women In Technology (28 sierpnia 2014), Jak odnaleźć się w zespole projektowym.</title>
		<link>http://marcin.dryka.pl/2014/09/women-in-technology-28-sierpnia-2014-jak-odnalezc-sie-w-zespole-projektowym/</link>
		<comments>http://marcin.dryka.pl/2014/09/women-in-technology-28-sierpnia-2014-jak-odnalezc-sie-w-zespole-projektowym/#comments</comments>
		<pubDate>Fri, 12 Sep 2014 13:48:11 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[metodologia]]></category>
		<category><![CDATA[pm]]></category>
		<category><![CDATA[praca]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=759</guid>
		<description><![CDATA[Pod koniec wakacji odbyło się 6 spotkanie Women In Technology w Gliwicach. Dzięki uprzejmości Skygate znalazła się lokalizacja, a ja zrobiłem prezentację pt. &#8222;Jak odnaleźć się w zespole projektowym&#8221;. Trochę trwało, ale ostatecznie udało mi się opublikować! Uh&#8230; ciężko było, dlatego to tyle trwało. Przepraszam, że kazałem tyle czekać. &#160; Dzięki za spotkanie. Mam nadzieję, że [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pod koniec wakacji odbyło się 6 spotkanie Women In Technology w Gliwicach. Dzięki uprzejmości <a href="http://www.skygatedigital.co.uk" target="_blank">Skygate</a> znalazła się lokalizacja, a ja zrobiłem prezentację pt. &#8222;Jak odnaleźć się w zespole projektowym&#8221;. Trochę trwało, ale ostatecznie udało mi się opublikować! Uh&#8230; ciężko było, dlatego to tyle trwało. Przepraszam, że kazałem tyle czekać.<span id="more-759"></span></p>
<p>&nbsp;</p>
<p><script class="speakerdeck-embed" src="//speakerdeck.com/assets/embed.js" async="" data-id="2ed42420175201329f66460735b58e3e" data-ratio="1.33333333333333"></script></p>
<p>Dzięki za spotkanie. Mam nadzieję, że Marlena mnie jeszcze kiedyś dopuści do głosu na WIT i będzie możliwość powiedzenia czegoś więcej.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2014/09/women-in-technology-28-sierpnia-2014-jak-odnalezc-sie-w-zespole-projektowym/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tworzenie szablonu maszyny wirtualnej vagranta</title>
		<link>http://marcin.dryka.pl/2014/05/tworzenie-szablonu-maszyny-wirtualnej-vagranta/</link>
		<comments>http://marcin.dryka.pl/2014/05/tworzenie-szablonu-maszyny-wirtualnej-vagranta/#comments</comments>
		<pubDate>Mon, 12 May 2014 15:23:06 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[Administracja]]></category>
		<category><![CDATA[ansible]]></category>
		<category><![CDATA[chef]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=744</guid>
		<description><![CDATA[Tak, istnieje bardzo dużo obrazów boxów zlokalizowanych gdzieś tam w sieci. Spory zbiór boxów znajduje się na http://www.vagrantbox.es/, jednak nie zawsze takie rozwiązanie będzie wystarczające. Często dochodzi się do wniosku, że potrzebny jest własny obraz. Samo stworzenie pierwszego obrazu nie jest trudne, do tego jest opisane w dokumentacji. Zatem o co tyle szumu? Mój największy [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Tak, istnieje bardzo dużo obrazów boxów zlokalizowanych<em> gdzieś <em>tam</em> </em>w sieci. Spory zbiór boxów znajduje się na <a href="http://www.vagrantbox.es/" target="_blank">http://www.vagrantbox.es/</a>, jednak nie zawsze takie rozwiązanie będzie wystarczające. Często dochodzi się do wniosku, że potrzebny jest własny obraz. Samo stworzenie pierwszego obrazu nie jest trudne, do tego jest opisane w <a href="http://docs.vagrantup.com/v2/boxes/base.html" target="_blank">dokumentacji.</a> Zatem o co tyle szumu? Mój największy problem to utrzymanie tego obrazu w najnowszej wersji systemu. Przykładowo Ubuntu wychodzi dwa razy w roku, zatem dwa razy w roku należałoby <em>ręcznie</em> przejść tworzenie obrazu. A kto lubi wielokrotnie robić to samo? (po cichu zakładam, że każdy tutaj odpowie &#8222;<em>nikt</em>&#8222;)</p>
<p><span id="more-744"></span></p>
<p>Z pomocą przychodzi projekt <a href="https://github.com/jedi4ever/veewee" target="_blank">veewee</a>, który ma wspomóc programistów i administratorów w automatycznym budowaniu obrazów. Veewee zajmuje się procesem od tworzenia boxa  (od ściągnięcia odpowiedniego iso z sieci), aż po wyeksportowanie wirtualnej maszyny do formatu box. Aktualnie wspiera czterech providerów: VirtualBox, VMware, KVM i Parallels.</p>
<p>Przykład instalacji został zrobiony na hoście na którym działa Ubuntu 14.04 LTS, a moim providerem jest VirtualBox. Na początek instalacji rvm (dostarczana w systemie wersja Ruby nie jest zalecana przez autorów):</p>
<pre class="brush:shell">curl -sSL https://get.rvm.io | bash
source ~/.rvm/scripts/rvm
rvm install 1.9.2</pre>
<p>A następnie instalacja (czy kod) veewee:</p>
<pre class="brush:shell">git clone https://github.com/jedi4ever/veewee.git
cd veewee
rvm use 1.9.2@veewee --create
gem install bundler
bundle install</pre>
<p>Autorzy dostarczają całkiem pokaźną listę systemów, które veewee jest w stanie utworzyć na VirtualBox (w chwili pisania postu jest to 226 systemów operacyjnych w różnych wersjach). Aby wyświetlić listę możliwości wystarczy uruchomić:</p>
<pre class="brush:shell">bundle exec veewee vbox templates</pre>
<p>Mnie interesuje Ubuntu  Server w najnowszej wersji (na moment pisania postu), zatem definiuje sobię:</p>
<pre class="brush:shell">veewee vbox define 'ubuntu-14.04-server-amd64' 'ubuntu-14.04-server-amd64' --workdir=~/veewee</pre>
<p>Po tej operacji zostaje utworzony katalog <em>~/veewee/definitions/ubuntu-14.04-server-amd64</em>, który możemy wyedytować według własnych potrzeb. Skrypty tam zawarte to opisy:</p>
<ul>
<li>instalacji samego systemu (debian installer) i jego początkowej konfiguracji,</li>
<li>instalacji VirtualBox Additions (dla VirtualBox) lub Parallels Tools (dla Parallels),</li>
<li>konfiguracji kluczy vagranta,</li>
<li>konfiguracji pakietu sudo (brak hasła),</li>
<li>instalacji Ruby, puppet, chef,</li>
<li>oczyszczenia obrazu z danych, które się w nim nie powinny znaleźć,</li>
<li>oraz plik <em>definition.rb </em>opisujący proces budowania maszyny wirtualnej.</li>
</ul>
<p>Budowanie maszyny jest narazie słabo odporne na zaniki Internetu, zwiększone obciążenie komputera (timeout dla instalacji), co sprawia, że czasem musiałem wielokrotnie uruchomić budowanie, ale uważam, że veewee jest wart uwagi mimo to.</p>
<pre class="brush:shell">bundle exec veewee vbox build 'ubuntu-14.04-server-amd64' --workdir=~/veewee
bundle exec veewee vbox validate 'ubuntu-14.04-server-amd64'</pre>
<p>No i ostatecznie, po całej instalacji, utworzenie pliku box.</p>
<pre class="brush:shell">bundle exec veewee vbox export 'ubuntu-14.04-server-amd64'</pre>
<p>Ostatnia komenda powoduje utworzenie pliku <em>~/veewee/ubuntu-14.04-server-amd64.box</em>, który już bezpośrednio można wykorzystać w vagrancie.</p>
<pre class="brush:shell">vagrant box add 'ubuntu-14.04-server-amd64' '~/veewee/ubuntu-14.04-server-amd64.box'
vagrant init 'ubuntu-14.04-server-amd64'
vagrant up
vagrant ssh</pre>
<p>ot i cała magia. Stworzenie maszyny jest stosunkowo szybkie. Gdy wyjdzie nowa wersja systemu, możemy mieć nawet nadzieje, że stare definicje zadziałają (jest tam jakaś zgodność wsteczna), a za pomocą <em>definitions.rb</em> i swoich własnych skryptów możemy utworzy dokładnie taką maszynę jak potrzebujemy. Taką którą będzie można wykorzystywać wielokrotnie.</p>
<p>Happy vagranting!</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2014/05/tworzenie-szablonu-maszyny-wirtualnej-vagranta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pierwszy śląski PHPers</title>
		<link>http://marcin.dryka.pl/2014/02/pierwszy-slaski-phpers/</link>
		<comments>http://marcin.dryka.pl/2014/02/pierwszy-slaski-phpers/#comments</comments>
		<pubDate>Mon, 10 Feb 2014 15:30:48 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[Administracja]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[vagrant]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=730</guid>
		<description><![CDATA[6 lutego 2014 r. odbyło się pierwsze śląskie (pod nową nazwą) spotkanie osób związanych z językiem PHP &#8211; PHPers. Jak zwykle były 3 tematy. Jedną z tych prezentacji miałem okazję poprowadzić osobiście. Podczas prezentacji pt. &#8222;Jeszcze sprytniejsze środowisko deweloperskie&#8221; chciałem pokazać, że vagrant to narzędzie, którego warto używać. Czy się udało? Tego nie wiem, ale [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>6 lutego 2014 r. odbyło się pierwsze śląskie (pod nową nazwą) spotkanie osób związanych z językiem PHP &#8211; <a title="http://phpers.pl/" href="http://phpers.pl/" target="_blank">PHPers</a>. Jak zwykle były 3 tematy. Jedną z tych prezentacji miałem okazję poprowadzić osobiście. Podczas prezentacji pt. &#8222;Jeszcze sprytniejsze środowisko deweloperskie&#8221; chciałem pokazać, że <a title="http://www.vagrantup.com/" href="http://www.vagrantup.com/" target="_blank">vagrant </a>to narzędzie, którego warto używać. Czy się udało? Tego nie wiem, ale bardzo chętnie poznam Wasze opinie w komentarzach (jeśli w ogóle się pojawią ;-).<span id="more-730"></span></p>
<p>Zanim będą dostępne filmy na oficjalnym <a title="http://www.youtube.com/channel/UC9984yoPYVobFlZFRZTuMdQ" href="http://www.youtube.com/channel/UC9984yoPYVobFlZFRZTuMdQ">kanale PHPers</a>, ja postanowiłem udostępnić swoją prezentację. Na początek część, w której opowiadałem o Vagrancie, a następnie sesja Live Demo. Niestety obie pozbawione komentarza, ale mam nadzieję, że PHPers wkrótce umieści wideo uzupełniające.</p>
<p><script async class="speakerdeck-embed" data-id="8484ca10726c01318b20063debaef239" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script></p>
<p>&nbsp;</p>
<p><iframe src="//www.youtube.com/embed/7G3pPROPg60" height="402" width="715" allowfullscreen="" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2014/02/pierwszy-slaski-phpers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SymfonyCon Warsaw 2013</title>
		<link>http://marcin.dryka.pl/2013/12/symfonycon-warsaw-2013/</link>
		<comments>http://marcin.dryka.pl/2013/12/symfonycon-warsaw-2013/#comments</comments>
		<pubDate>Tue, 17 Dec 2013 08:49:42 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=710</guid>
		<description><![CDATA[More than two years ago there was a Symfony2 Launch Party, a few days ago was SymfonyCon Warsaw. It was fun, good presentations, pleasantly spent evenings (on a few pictures appeared even fog, how? :D ). Many people was asking me if and where pictures will be. Here they are: The new love from SymfonyCon [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>More than two years ago there was a <a title="Symfony2 Launch Party" href="http://marcin.dryka.pl/2011/07/symfony2-launch-party/">Symfony2 Launch Party</a>, a few days ago was SymfonyCon Warsaw. It was fun, good presentations, pleasantly spent evenings (on a few pictures appeared even fog, how? :D ). Many people was asking me if and where pictures will be. Here they are:</p>
<p><span id="more-710"></span></p>
<p style="text-align: center;"><a href="http://marcin.dryka.pl/wp-content/uploads/2013/12/love.jpg">The new love from SymfonyCon<img class="aligncenter size-full wp-image-726" alt="love" src="http://marcin.dryka.pl/wp-content/uploads/2013/12/love.jpg" width="1096" height="857" /></a></p>
<blockquote>
<p style="text-align: center;">More:</p>
<h2 style="text-align: center;"><a title="SymfonyCon Warsaw 2013 Photos" href="http://goo.gl/vyB6Fh" target="_blank">http://goo.gl/vyB6Fh</a></h2>
</blockquote>
<h2>Legal notice:</h2>
<p>You can use the images for any purpose. You can modify and use for commercial. If you can, link to this post and/or information about the author (<a title="@drymek" href="https://twitter.com/drymek/" target="_blank">@drymek</a>) (you can skip this information if you have to). You can also link to your site/presentation/whatever with photos in comments below. If you need better quality pictures (ok, maybe just in a higher resolution ;-), write to me (marcin at dryka.pl). The originals are quite large, so I will upload only those that are actually needed.</p>
<h2>Excuse:</h2>
<p>When shooting during talks, I tried to be invisible. Especially when it comes to flash. This is the first reason why the photos, are not as good as I&#8217;d like, but the eyes of speakers and general silence in the room seems to be more important. The second reason why the pictures are so weak: I&#8217;m not a photographer :P</p>
<h2 style="text-align: center;">Do you have any pictures?</h2>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2013/12/symfonycon-warsaw-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployment przy pomocy capifony</title>
		<link>http://marcin.dryka.pl/2013/08/deployment-przy-pomocy-capifony/</link>
		<comments>http://marcin.dryka.pl/2013/08/deployment-przy-pomocy-capifony/#comments</comments>
		<pubDate>Mon, 19 Aug 2013 16:06:10 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[Administracja]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[capifony]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[synchronizacja]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=649</guid>
		<description><![CDATA[Całkiem niedawno pisałem o Deployment przez FTP. Największą zaletą tego rozwiązania jest to, że działa. Ale nie jest ono idealne &#8211; trwa bardzo długo. Najlepszym sposobem aktualizacji aplikacji opartej o Symfony 2 w tej chwili to capifony. Capifony to zbiór skryptów capistrano przeznaczonych dla aplikacji napisanych w Symfony (zarówno 1.x jak i 2). Dlaczego capifony? Już [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Całkiem niedawno pisałem o <a title="Deployment przez FTP" href="http://marcin.dryka.pl/2012/12/deployment-przez-ftp/">Deployment przez FTP</a>. Największą zaletą tego rozwiązania jest to, że <em>działa</em>. Ale nie jest ono idealne &#8211; trwa bardzo długo. Najlepszym sposobem aktualizacji aplikacji opartej o Symfony 2 w tej chwili to <a href="http://capifony.org/">capifony</a>.</p>
<p><span id="more-649"></span></p>
<p>Capifony to zbiór skryptów capistrano przeznaczonych dla aplikacji napisanych w Symfony (zarówno 1.x jak i 2). Dlaczego capifony? Już na początku nie musimy się przejmować m.in.:</p>
<ul>
<li><span style="line-height: 16px;">ręczną aktualizacją kodu</span></li>
<li>czyszczeniem cache</li>
<li>ściąganiem zależności composera</li>
<li>zarządzaniem assetami</li>
</ul>
<p>A w mojej konfiguracji również:</p>
<ul>
<li><span style="line-height: 16px;">usunięciem kontrolera deweloperskiego</span></li>
<li>ustawianiem praw do katalogów cache i logs</li>
</ul>
<p>Na początek należy przygotować serwer produkcyjny (docelowy). Do konfiguracji należy dodać użytkownika z poziomu którego będą wykonywane aktualizacje kodu, zainstalować <em>acl </em>(jeśli zamierzamy korzystać z setfacl).</p>
<pre class="brush:shell">production# adduser capifony
production# apt-get install git acl</pre>
<p>Aby capifony ustawiało prawidłowo prawa dostępów do katalogów <em>logs</em> i <em>cache</em> należy dać użytkownikowi możliwość uruchamiania <em>setfacl</em> bez konieczności wpisywania hasła.</p>
<pre class="brush:shell">production# visudo</pre>
<p>w pliku należy umieścić wpis:</p>
<pre class="brush:shell">capifony ALL=NOPASSWD:/bin/setfacl</pre>
<p>Pozostają jeszcze dwie rzeczy do skonfigurowania na serwerze produkcyjnym:</p>
<p>Pierwsza z nich &#8211; dostęp do repozytorium gita &#8211; czyli klucze do deploymentu.</p>
<pre class="brush:shell">production# ssh-keygen
production# cat ~/.ssh/id_rsa.pub</pre>
<p>A następnie wartość klucza należy skopiować do repozytorium np. dla Bitbucket:</p>
<blockquote><p>https://bitbucket.org/drymek/codifico/admin/deploy-keys</p></blockquote>
<p>No i ostatnia rzecz, do skonfigurowania na serwerze &#8211; serwer http.</p>
<pre class="brush:shell">production# vim /etc/nginx/sites-available/codifico.pl</pre>
<pre class="brush:js">server {
	listen   80;
	rewrite ^/app\.php/?(.*)$ /$1 permanent;

	root /usr/share/nginx/codifico.pl/current/web/;

	server_name codifico.pl;

	location / {
		index app.php;
		try_files $uri @rewriteapp;
	}

	location @rewriteapp {
    		rewrite ^(.*)$ /app.php/$1 last;
  	}

	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

	location ~ ^/(app|app_dev)\.php(/|$) {
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_split_path_info ^(.+\.php)(/.*)$;
		include fastcgi_params;
		fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
		fastcgi_param  HTTPS              off;
  	}
	location ~ /\.ht {
		deny all;
	}
}</pre>
<p>Tyle na serwerze produkcyjnym. Można się spokojnie wylogować :-)</p>
<p>Pozostaje konfiguracja na lokalnym komputerze z którego będziemy robić deployment.</p>
<p>Inicjalizacja capifony:</p>
<pre class="brush:shell">localhost# capifony .</pre>
<p>stworzy pliki <em>app/config/deploy.rb</em>  i <em>Capfile</em>.</p>
<p>Aby umożliwić logowanie do serwera produkcyjnego dla użytkownika capifony kopiuje swój klucz:</p>
<pre class="brush:shell">localhost# ssh-copy-id -i ~/.ssh/id_rsa.pub capifony@codifico.pl</pre>
<p>(Dla osób które nie mają ssh-copy-id na maku polecam wpis <a title="Kopiowanie kluczy SSH" href="http://marcin.dryka.pl/2013/01/kopiowanie-kluczy-ssh/" target="_blank">Kopiowanie kluczy SSH</a>)</p>
<p>Aby capifony skonfigurowało katalogi potrzebne dla aplikacji należy uruchomić:</p>
<pre class="brush:shell">localhost# cap deploy:setup</pre>
<p>Ponieważ domyślnie <em>parameters.yml</em> znajduje się w katalogu <em>shared</em>, należy go za pierwszym razem utworzyć i wypełnić treścią (ta jest oczywiście zależna od projektu).</p>
<pre class="brush:shell">mkdir -p /usr/share/nginx/codifico.pl/shared/app/config/
vim /usr/share/nginx/codifico.pl/shared/app/config/parameters.yml</pre>
<p>Tyle, nareszcie można świętować patrząc jak aplikacja się wrzuca na serwer (do katalogu <em>/var/www/codifico.pl/current</em>, podczas gdy poprzednie wersje lądują do <em>/var/www/codifico.pl/releases)</em>:</p>
<div>
<pre class="brush:shell">cap deploy</pre>
</div>
<p>Dla ciekawskich dorzucam moją konfigurację capifony:</p>
<pre class="brush:ruby">set :application, "codifico"
set :domain,      "capifony@#{application}.pl"
set :deploy_to,   "/var/www/#{application}.pl"
set :app_path,    "app"
set :git_domain,  "git@bitbucket.org:codifico"
set :user,        "capifony"
set :writable_dirs,     ["app/cache", "app/logs"]
set :webserver_user,    "www-data"

set :repository,  "#{git_domain}/#{application}.git"
set :scm,         :git

set :model_manager, "doctrine"
set :shared_files,  ["app/config/parameters.yml"]
set :shared_children,     [app_path + "/logs", web_path + "/uploads", "vendor"]
set :use_composer, true
set :vendors_mode, "install"
set :update_vendors, false
set :dump_assetic_assets, true
set :ssh_options, {:forward_agent =&gt; false}
default_run_options[:pty] = true

role :web,        domain                            # Your HTTP server, Apache/etc
role :app,        domain                            # This may be the same as your `Web` server
role :db,         domain, :primary =&gt; true          # This is where Symfony2 migrations will run

set  :use_sudo,       true
set  :keep_releases,  10

# Change ACL on the app/logs and app/cache directories
namespace :deploy do
  task :update_acl, :roles =&gt; :app do
    shared_dirs = [
      app_path + "/logs",
      app_path + "/cache"
    ]

    pretty_print "--&gt; Setting up setfacl for shared directories"
    # Allow directories to be writable by webserver and this user
    run "cd #{latest_release} &amp;&amp; sudo setfacl -R -m u:www-data:rwx -m u:#{user}:rwx #{shared_dirs.join(' ')}"
    run "cd #{latest_release} &amp;&amp; sudo setfacl -dR -m u:www-data:rwx -m u:#{user}:rwx #{shared_dirs.join(' ')}"
    puts_ok
  end

  task :remove_dev, :roles =&gt; :app do
    pretty_print "--&gt; Removing dev controller"
    run "cd #{latest_release} &amp;&amp; if [ -f web/dev.php ]; then rm web/dev.php; fi;"
    puts_ok
  end
end

# Be more verbose by uncommenting the following line
# logger.level = Logger::MAX_LEVEL</pre>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2013/08/deployment-przy-pomocy-capifony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tworzenie bazy i użytkownika MySQL</title>
		<link>http://marcin.dryka.pl/2013/01/tworzenie-bazy-i-uzytkownika-mysql/</link>
		<comments>http://marcin.dryka.pl/2013/01/tworzenie-bazy-i-uzytkownika-mysql/#comments</comments>
		<pubDate>Tue, 15 Jan 2013 16:32:14 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[Administracja]]></category>
		<category><![CDATA[callate]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=658</guid>
		<description><![CDATA[Za każdym razem gdy tworzę bazę danych muszę tych dwóch linijek szukać w Google. Krótki wpis tworzę bardziej dla siebie (tak, często wracam do swoich własnych tekstów). Być może ktoś skorzysta z tych dwóch (ważnych) linijek dla MySQL: Tworzenie bazy danych z ustawieniem kodowania (jeśli administrator nie zmienił domyślnego latin1_swedish): CREATE DATABASE &#60;NAZWA_BAZY&#62; CHARACTER SET [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Za każdym razem gdy tworzę bazę danych muszę tych dwóch linijek szukać w Google. Krótki wpis tworzę bardziej dla siebie (tak, często wracam do swoich własnych tekstów). Być może ktoś skorzysta z tych dwóch (ważnych) linijek dla MySQL:</p>
<p><span id="more-658"></span></p>
<ul>
<li>Tworzenie bazy danych z ustawieniem kodowania (jeśli administrator nie zmienił domyślnego <em>latin1_swedish</em>):</li>
</ul>
<pre class="brush:sql">CREATE DATABASE &lt;NAZWA_BAZY&gt; CHARACTER SET utf8 COLLATE utf8_general_ci;</pre>
<ul>
<li>Tworzenie użytkownika dla danej bazy danych:</li>
</ul>
<pre class="brush:sql">GRANT ALL PRIVILEGES ON &lt;NAZWA_BAZY&gt;.* TO '&lt;NAZWA_UZYTKOWNIKA&gt;'@'localhost' IDENTIFIED BY '&lt;HASLO&gt;';</pre>
<p>A czy Wy też utworzyliście kiedyś bazę danych nie zmieniając Collate na UTF-8? ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2013/01/tworzenie-bazy-i-uzytkownika-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kopiowanie kluczy SSH</title>
		<link>http://marcin.dryka.pl/2013/01/kopiowanie-kluczy-ssh/</link>
		<comments>http://marcin.dryka.pl/2013/01/kopiowanie-kluczy-ssh/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 14:51:23 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Dryka]]></dc:creator>
				<category><![CDATA[Administracja]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh-copy-id]]></category>

		<guid isPermaLink="false">http://marcin.dryka.pl/?p=651</guid>
		<description><![CDATA[Na Mac OS X z jakiś powodów domyślnie nie ma narzędzia do kopiowania plików kluczy publicznych. Oczywiście można robić to ręcznie, ale w wielu miejscach można się pomylić, a chyba nikomu na tym nie zależy, prawda? Zatem lepiej skorzystać z narzędzia do tego przeznaczonego: ssh-copy-id. Jeśli ktoś korzysta z homebrew instalacja jest dość prosta: sudo brew [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Na Mac OS X z jakiś powodów domyślnie nie ma narzędzia do kopiowania plików kluczy publicznych. Oczywiście można robić to ręcznie, ale w wielu miejscach można się pomylić, a chyba nikomu na tym nie zależy, prawda? Zatem lepiej skorzystać z narzędzia do tego przeznaczonego: <strong>ssh-copy-id</strong>.</p>
<p><span id="more-651"></span></p>
<p>Jeśli ktoś korzysta z <a title="homebrew" href="http://mxcl.github.com/homebrew/" target="_blank">homebrew</a> instalacja jest dość prosta:</p>
<pre class="brush:shell">sudo brew install ssh-copy-id</pre>
<p>Jednak w przypadku <a title="ports" href="http://www.macports.org/" target="_blank">ports</a> nie jest już tak różowo:</p>
<pre class="brush:shell">sudo port install openssh +ssh_copy_id</pre>
<p>co powoduje zainstalowanie openssh, a nie zawsze tego chcemy. Dlatego najprostszą metodą wydaje się:</p>
<pre class="brush:shell">wget https://raw.github.com/drymek/ssh-copy-id/master/ssh-copy-id -O /usr/bin/ssh-copy-id &amp;&amp; sudo chmod +x /usr/bin/ssh-copy-id</pre>
<p>Ot, wszystko. Tyle wystarczy. Teraz aby skopiować klucz na serwer wystarczy wpisać:</p>
<pre class="brush:shell">ssh-copy-id -i ~/.ssh/id_rsa.pub username@ssh-server</pre>
]]></content:encoded>
			<wfw:commentRss>http://marcin.dryka.pl/2013/01/kopiowanie-kluczy-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
