<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Komentarze do Nexik</title>
	<atom:link href="http://nexik.net/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://nexik.net</link>
	<description>Tomasz Ślązok</description>
	<lastBuildDate>Thu, 10 Jun 2010 21:36:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Skomentuj Dependency Injection, którego autorem jest nexik</title>
		<link>http://nexik.net/dependency-injection/comment-page-1/#comment-406</link>
		<dc:creator>nexik</dc:creator>
		<pubDate>Thu, 10 Jun 2010 21:36:41 +0000</pubDate>
		<guid isPermaLink="false">http://nexik.net/?p=1118#comment-406</guid>
		<description>I ogólnie set_limit jest wykorzystywany nie tylko przez wiele metod jednej klasy ale praktycznie przez wiekszosc obiektow w aplikacji</description>
		<content:encoded><![CDATA[<p>I ogólnie set_limit jest wykorzystywany nie tylko przez wiele metod jednej klasy ale praktycznie przez wiekszosc obiektow w aplikacji</p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj Dependency Injection, którego autorem jest nexik</title>
		<link>http://nexik.net/dependency-injection/comment-page-1/#comment-405</link>
		<dc:creator>nexik</dc:creator>
		<pubDate>Thu, 10 Jun 2010 21:28:10 +0000</pubDate>
		<guid isPermaLink="false">http://nexik.net/?p=1118#comment-405</guid>
		<description>ogólnie mówisz o DI Container a ja pokazałem podstawową najbardziej przyziemną wersje DI.

przekazuje $db do metody poniewasz u mnie klasa po której dziedziczą wszystkie modele (ta w ktorej wystepuje deklaracja metody set_limit) nie ma atrybutu $db. Oczywiscie mozna by sie uprzec ze podczas wykonaniu kodu klasa rodzic nie istnieje tylko jej potomki ale nie lubie gdy abstrakcja jest zalezna od konkretnych jej implementacji lecz odwrotnie aby implementacji byly zalezne od abstrakcji.

Przykład może mało niefortunny, bo de facto Dependency Injection jest tutaj tablica $options a nie instancja $db. 

Jeżeli chcesz poczytać o DI w PHP to polecam projekt Symfony Dependency Injection http://components.symfony-project.org/dependency-injection/</description>
		<content:encoded><![CDATA[<p>ogólnie mówisz o DI Container a ja pokazałem podstawową najbardziej przyziemną wersje DI.</p>
<p>przekazuje $db do metody poniewasz u mnie klasa po której dziedziczą wszystkie modele (ta w ktorej wystepuje deklaracja metody set_limit) nie ma atrybutu $db. Oczywiscie mozna by sie uprzec ze podczas wykonaniu kodu klasa rodzic nie istnieje tylko jej potomki ale nie lubie gdy abstrakcja jest zalezna od konkretnych jej implementacji lecz odwrotnie aby implementacji byly zalezne od abstrakcji.</p>
<p>Przykład może mało niefortunny, bo de facto Dependency Injection jest tutaj tablica $options a nie instancja $db. </p>
<p>Jeżeli chcesz poczytać o DI w PHP to polecam projekt Symfony Dependency Injection <a href="http://components.symfony-project.org/dependency-injection/" rel="nofollow">http://components.symfony-project.org/dependency-injection/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj Dependency Injection, którego autorem jest @krzychukula</title>
		<link>http://nexik.net/dependency-injection/comment-page-1/#comment-404</link>
		<dc:creator>@krzychukula</dc:creator>
		<pubDate>Thu, 10 Jun 2010 20:58:39 +0000</pubDate>
		<guid isPermaLink="false">http://nexik.net/?p=1118#comment-404</guid>
		<description>Witam,
Nie jestem ekspertem więc po prostu napiszę co myślę :)
Styczność z DI mam raczej od strony Javy/Springa jednak to co zaprezentowałeś nie wpisuje mi się w schemat DI... ok, może ja to źle rozumiem ale:
1: DI poprzez zastosowanie jakiejś klasy kontenera + zewnętrznej konfiguracji pozwala nam na duże zmiany w działaniu aplikacji, które nie wymagają np. rekompilacji. Po prostu podpinamy jakąś inną wartość w pliku XML którą do naszych klas wstrzykuje kontener. Daje nam to dużą dozę swobody, o ile np. mamy interfejs z metodą: get_products_by_category to przez DI możemy do kodu który z niej korzystać &#039;wstrzykiwać&#039; różne implementacje tej klasy, tu mi się jako bardziej oczywisty przykład nasuwa np. obiekt DAO dla różnych baz danych który ma ten sam Interfejs ale implementacja zapytań do bazy musi być inna. Dzięki temu nasze klasy nie zależą od siebie w sposób bezpośredni, tak naprawdę znają tylko swoje interfejsy publiczne. W twoim kodzie tego nie ma.
To co widzę to wywołanie funkcji która zamiast ustawiać te parametry inline deleguje to do drugiej funkcji która: robi dokładnie to samo. Mam też pytanie czemu przekazujesz $db jako parametr? Czy nie jest on dostępny w całym obiekcie? Chyba że funkcja która ustawia te parametry dla DB jest wspólna dla wszystkich metod w klasie, lub istnieje kilka takich funkcji dla całej aplikacji, wtedy ustawianie np. limitu i strony przez nią faktycznie miało by sens ;) z tego względu że zmiejszyło by ilość kodu. Ale DI to ja tutaj raczej słabo widzę... chętnie przeczytał bym więcej o DI w PHP. Generalnie pomysł moim zdaniem ciekawy i &#039;coś w tym jest&#039; ale niestety nie zrozumiałem :( Przypomina mi to troszkę to jak to jest zrobione w CakePHP, ale tam używany jest obiekt w kontrolerze i modelu który sam sobie sprawdza parametry stron i pobiera odpowiednie dane na jego podstawie.

Pozdrawiam, i czekam na łopatologiczne wytłumaczenie :)</description>
		<content:encoded><![CDATA[<p>Witam,<br />
Nie jestem ekspertem więc po prostu napiszę co myślę :)<br />
Styczność z DI mam raczej od strony Javy/Springa jednak to co zaprezentowałeś nie wpisuje mi się w schemat DI&#8230; ok, może ja to źle rozumiem ale:<br />
1: DI poprzez zastosowanie jakiejś klasy kontenera + zewnętrznej konfiguracji pozwala nam na duże zmiany w działaniu aplikacji, które nie wymagają np. rekompilacji. Po prostu podpinamy jakąś inną wartość w pliku XML którą do naszych klas wstrzykuje kontener. Daje nam to dużą dozę swobody, o ile np. mamy interfejs z metodą: get_products_by_category to przez DI możemy do kodu który z niej korzystać &#8216;wstrzykiwać&#8217; różne implementacje tej klasy, tu mi się jako bardziej oczywisty przykład nasuwa np. obiekt DAO dla różnych baz danych który ma ten sam Interfejs ale implementacja zapytań do bazy musi być inna. Dzięki temu nasze klasy nie zależą od siebie w sposób bezpośredni, tak naprawdę znają tylko swoje interfejsy publiczne. W twoim kodzie tego nie ma.<br />
To co widzę to wywołanie funkcji która zamiast ustawiać te parametry inline deleguje to do drugiej funkcji która: robi dokładnie to samo. Mam też pytanie czemu przekazujesz $db jako parametr? Czy nie jest on dostępny w całym obiekcie? Chyba że funkcja która ustawia te parametry dla DB jest wspólna dla wszystkich metod w klasie, lub istnieje kilka takich funkcji dla całej aplikacji, wtedy ustawianie np. limitu i strony przez nią faktycznie miało by sens ;) z tego względu że zmiejszyło by ilość kodu. Ale DI to ja tutaj raczej słabo widzę&#8230; chętnie przeczytał bym więcej o DI w PHP. Generalnie pomysł moim zdaniem ciekawy i &#8216;coś w tym jest&#8217; ale niestety nie zrozumiałem :( Przypomina mi to troszkę to jak to jest zrobione w CakePHP, ale tam używany jest obiekt w kontrolerze i modelu który sam sobie sprawdza parametry stron i pobiera odpowiednie dane na jego podstawie.</p>
<p>Pozdrawiam, i czekam na łopatologiczne wytłumaczenie :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj 10 Sposobów na PHPUnit z KohanaPHP, którego autorem jest nexik</title>
		<link>http://nexik.net/10-sposobow-na-phpunit-z-kohanaphp/comment-page-1/#comment-403</link>
		<dc:creator>nexik</dc:creator>
		<pubDate>Wed, 26 May 2010 19:16:19 +0000</pubDate>
		<guid isPermaLink="false">http://nexik.net/?p=984#comment-403</guid>
		<description>testowanie nie powinno być odpalane na serwerach produkcyjnych a raczej na localhoscie w srodowisku developerskim, poniewaz gdy masz ich pare tysiecy moze to troche potrwac. Szczegolnie gdy masz polaczenia z wieloma bazami danych. 

W testach tez czesto uzywa sie tak zwanych mock objects ktore symuluja bardziej zlozone powiazania miedzy obiektami w celu latwiejszego panowania nad testami

Ogólnie to pokazałem raczej jak zacząć z PHPUnit niż gotowe skrypty do użycia. W tym celu proponuje raczej module PHPUnit dla Kohany</description>
		<content:encoded><![CDATA[<p>testowanie nie powinno być odpalane na serwerach produkcyjnych a raczej na localhoscie w srodowisku developerskim, poniewaz gdy masz ich pare tysiecy moze to troche potrwac. Szczegolnie gdy masz polaczenia z wieloma bazami danych. </p>
<p>W testach tez czesto uzywa sie tak zwanych mock objects ktore symuluja bardziej zlozone powiazania miedzy obiektami w celu latwiejszego panowania nad testami</p>
<p>Ogólnie to pokazałem raczej jak zacząć z PHPUnit niż gotowe skrypty do użycia. W tym celu proponuje raczej module PHPUnit dla Kohany</p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj 10 Sposobów na PHPUnit z KohanaPHP, którego autorem jest Arson</title>
		<link>http://nexik.net/10-sposobow-na-phpunit-z-kohanaphp/comment-page-1/#comment-402</link>
		<dc:creator>Arson</dc:creator>
		<pubDate>Wed, 26 May 2010 18:39:01 +0000</pubDate>
		<guid isPermaLink="false">http://nexik.net/?p=984#comment-402</guid>
		<description>Hej,

Bardzo fajnie, że podzielileś się wiedzą. Niestety skrypt kopiujący bazę danych zawiera błąd, którego nie udało mi się jeszcze poprawić. Problem pojawia się, gdy user schamatu default nie ma uprawnień do tworzenia/usuwania baz danych. W moim przypadku obie bazy są nawet na innych maszynach.
Pierwsze rozwiązanie jakie przyszło mi do głowy, to zmienić ostatnie linijki metod drop_db i create_db 
z Database::instance()-&gt;query(...);
na Database::instance($db_schema)-&gt;query(..);
dzięki czemu zapytania byłyby wykonywane &quot;przez&quot; odpowiedni schemat.
Niestety powoduje to inny błąd podczas tworzenia tabel w metodzie copy_db (ostatnia pętla) mianowicie rzuca wyątek &quot;No database selected&quot;. I tutaj już za ch.. nie mogę wymusić, żeby baza była selected. W zasadzie samo wystąpienie tego wyjątku wydaje się być bez sensu.</description>
		<content:encoded><![CDATA[<p>Hej,</p>
<p>Bardzo fajnie, że podzielileś się wiedzą. Niestety skrypt kopiujący bazę danych zawiera błąd, którego nie udało mi się jeszcze poprawić. Problem pojawia się, gdy user schamatu default nie ma uprawnień do tworzenia/usuwania baz danych. W moim przypadku obie bazy są nawet na innych maszynach.<br />
Pierwsze rozwiązanie jakie przyszło mi do głowy, to zmienić ostatnie linijki metod drop_db i create_db<br />
z Database::instance()-&gt;query(&#8230;);<br />
na Database::instance($db_schema)-&gt;query(..);<br />
dzięki czemu zapytania byłyby wykonywane &#8220;przez&#8221; odpowiedni schemat.<br />
Niestety powoduje to inny błąd podczas tworzenia tabel w metodzie copy_db (ostatnia pętla) mianowicie rzuca wyątek &#8220;No database selected&#8221;. I tutaj już za ch.. nie mogę wymusić, żeby baza była selected. W zasadzie samo wystąpienie tego wyjątku wydaje się być bez sensu.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj Alternatywa do PhpMyAdmin, którego autorem jest Karol Janyst</title>
		<link>http://nexik.net/alternatywa-do-phpmyadmin/comment-page-1/#comment-303</link>
		<dc:creator>Karol Janyst</dc:creator>
		<pubDate>Mon, 01 Feb 2010 21:19:27 +0000</pubDate>
		<guid isPermaLink="false">http://nexik.net/?p=664#comment-303</guid>
		<description>Zapomniałeś wspomnieć o narzędziach udostępnionych przez MySQL tzn. Workbench i Query Browser. To bardzo rozbudowane programy i pozwalają na łatwą pracę z bazami danych, mają w miarę prosty interface. Można pracować lokalnie i na zdalnej bazie danych. Minusem niestety jest konieczność korzystania na własnym komputerze.</description>
		<content:encoded><![CDATA[<p>Zapomniałeś wspomnieć o narzędziach udostępnionych przez MySQL tzn. Workbench i Query Browser. To bardzo rozbudowane programy i pozwalają na łatwą pracę z bazami danych, mają w miarę prosty interface. Można pracować lokalnie i na zdalnej bazie danych. Minusem niestety jest konieczność korzystania na własnym komputerze.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj ZF #2 Zend_Acl, którego autorem jest nexik</title>
		<link>http://nexik.net/zf-2-zend_acl/comment-page-1/#comment-285</link>
		<dc:creator>nexik</dc:creator>
		<pubDate>Fri, 22 Jan 2010 11:13:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.nexik.net/?p=561#comment-285</guid>
		<description>literówka, mój błąd.
dzięki za info, poprawione</description>
		<content:encoded><![CDATA[<p>literówka, mój błąd.<br />
dzięki za info, poprawione</p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj ZF #2 Zend_Acl, którego autorem jest tasuki</title>
		<link>http://nexik.net/zf-2-zend_acl/comment-page-1/#comment-284</link>
		<dc:creator>tasuki</dc:creator>
		<pubDate>Fri, 22 Jan 2010 10:34:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.nexik.net/?p=561#comment-284</guid>
		<description>DIY jest Do It Yourself ^^
nie powtarzaj sie jest DRY ... mala roznica ;)</description>
		<content:encoded><![CDATA[<p>DIY jest Do It Yourself ^^<br />
nie powtarzaj sie jest DRY &#8230; mala roznica ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj ZF #1 PHPUnit, którego autorem jest Clifford W. Hansen</title>
		<link>http://nexik.net/zf-1-phpunit/comment-page-1/#comment-268</link>
		<dc:creator>Clifford W. Hansen</dc:creator>
		<pubDate>Thu, 03 Dec 2009 06:33:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.nexik.net/?p=524#comment-268</guid>
		<description>Greetings,

Thanks for the info, the only issue I found was I needed to add:

require_once(&#039;Zend/Loader/Autoloader.php&#039;);
$autoloader = Zend_Loader_Autoloader::getInstance();

to the bootstrap

HTH

Clifford.</description>
		<content:encoded><![CDATA[<p>Greetings,</p>
<p>Thanks for the info, the only issue I found was I needed to add:</p>
<p>require_once(&#8216;Zend/Loader/Autoloader.php&#8217;);<br />
$autoloader = Zend_Loader_Autoloader::getInstance();</p>
<p>to the bootstrap</p>
<p>HTH</p>
<p>Clifford.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Skomentuj Ubuntu + LAMP, którego autorem jest nexik</title>
		<link>http://nexik.net/ubuntu-lamp/comment-page-1/#comment-197</link>
		<dc:creator>nexik</dc:creator>
		<pubDate>Fri, 02 Oct 2009 07:58:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.nexik.net/?p=452#comment-197</guid>
		<description>no it&#039;s only nick ;p</description>
		<content:encoded><![CDATA[<p>no it&#8217;s only nick ;p</p>
]]></content:encoded>
	</item>
</channel>
</rss>
