<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2" -->
<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/"
	>

<channel>
	<title>Web Developer Blog</title>
	<link>http://weblog.axent.pl</link>
	<description>PostgreSQL, MySQL, PHP, JavaScript, AJAX, XML, XSLT, ...</description>
	<pubDate>Wed, 21 Jan 2009 21:23:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>
	<language>en</language>
			<item>
		<title>Najbliższe urodziny osoby</title>
		<link>http://weblog.axent.pl/2009/01/21/najblizsze-urodziny-osoby/</link>
		<comments>http://weblog.axent.pl/2009/01/21/najblizsze-urodziny-osoby/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 21:22:46 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2009/01/21/najblizsze-urodziny-osoby/</guid>
		<description><![CDATA[Jak pobrać daty najbliższych urodziń na podstawie dat urodzenia ?
Może tak : ?

SELECT
	CASE
		WHEN STR_TO_DATE&#40;CONCAT&#40;YEAR&#40;NOW&#40;&#41;&#41;,'-',MONTH&#40;birth_date&#41;,'-',DAY&#40;birth_date&#41;&#41;,'%Y-%m-%d'&#41; &#60; NOW&#40;&#41;
			THEN STR_TO_DATE&#40;CONCAT&#40;YEAR&#40;NOW&#40;&#41;&#41;,'-',MONTH&#40;birth_date&#41;,'-',DAY&#40;birth_date&#41;&#41;,'%Y-%m-%d'&#41; + INTERVAL 1 YEAR
		ELSE STR_TO_DATE&#40;CONCAT&#40;YEAR&#40;NOW&#40;&#41;&#41;,'-',MONTH&#40;birth_date&#41;,'-',DAY&#40;birth_date&#41;&#41;,'%Y-%m-%d'&#41;
	END AS birthday
FROM
	users
ORDER BY
	birthday;

]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2009/01/21/najblizsze-urodziny-osoby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP 1.2 hABTM Segmentation fault</title>
		<link>http://weblog.axent.pl/2008/03/27/cakephp-12-habtm-segmentation-fault/</link>
		<comments>http://weblog.axent.pl/2008/03/27/cakephp-12-habtm-segmentation-fault/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 17:19:46 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2008/03/27/cakephp-12-habtm-segmentation-fault/</guid>
		<description><![CDATA[Znalazłem ostatnio bardzo nieprzyjemny bug w CakePHP 1.2 - po zdefiniowaniu relacji belogsTo i hasAndBelongsToMany (przyklad ponizej) dostajemy segmentation fault przy próbie wypieczenia kontrolera.

class Tag extends AppModel &#123;
&#160;
	var $name = 'Tag';
	var $useTable = 'tags';
	var $validate = array&#40;
		'name' =&#62; array&#40;'required'&#41;,
		'lft' =&#62; array&#40;'numeric'&#41;,
		'rght' =&#62; array&#40;'numeric'&#41;
	&#41;;
&#160;
	var $hasAndBelongsToMany = array &#40;
		'Entry' =&#62; array&#40;'className' =&#62; 'Entry',
			'joinTable' =&#62; 'entries_tags',
			'foreignKey' =&#62; 'tag_id',
			'associationForeignKey' [...]]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2008/03/27/cakephp-12-habtm-segmentation-fault/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP Theme View</title>
		<link>http://weblog.axent.pl/2008/01/03/cakephp-theme-view/</link>
		<comments>http://weblog.axent.pl/2008/01/03/cakephp-theme-view/#comments</comments>
		<pubDate>Thu, 03 Jan 2008 15:42:26 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2008/01/03/cakephp-theme-view/</guid>
		<description><![CDATA[Ostatnio pokazała się krótka i zwięzła notka o tym jak stosować motywy w CakePHP 1.2 :
http://www.sanisoft.com/blog/2007/12/29/theming-your-cakephp-apps-v12/
]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2008/01/03/cakephp-theme-view/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MySQL stawianie repliki</title>
		<link>http://weblog.axent.pl/2007/12/31/mysql-stawianie-repliki/</link>
		<comments>http://weblog.axent.pl/2007/12/31/mysql-stawianie-repliki/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 12:11:46 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2007/12/31/mysql-stawianie-repliki/</guid>
		<description><![CDATA[1) Sprawdzenie statusu serwera MASTER

Łączymy się z serwerem MASTER i wpisujemy polecenie show master status;.
Powinniśmy otrzymać mniej więcej taki rezultat jak poniżej. Jeżeli tak to można od razu przejść do punktu #3.

mysql> show master status;
+------------------+----------+-----------------------------+------------------+
&#124; File             &#124; Position &#124; Binlog_Do_DB    [...]]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2007/12/31/mysql-stawianie-repliki/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP .pot generator</title>
		<link>http://weblog.axent.pl/2007/12/28/cakephp-pot-generator/</link>
		<comments>http://weblog.axent.pl/2007/12/28/cakephp-pot-generator/#comments</comments>
		<pubDate>Fri, 28 Dec 2007 15:55:28 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2007/12/28/cakephp-pot-generator/</guid>
		<description><![CDATA[Prosty i prymitywny generator plikow .pot dla aplikacji napisanej w CakePHP.
Wystarczy odpalic ten skrypt z katalogu pod którym jest aplikacja.

for file in $(ls app/views); do
xgettext -L PHP --keyword=__:1 --keyword=__d:2 --keyword=__dc:2 --keyword=__n:1,2 --keyword=__dn:2,3 --keyword=__dcn:2,3 -p app/locale/ -o $file.pot app/controllers/${file}_controller.php app/views/$file/*.ctp
done

]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2007/12/28/cakephp-pot-generator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP MySQL CollationBehavior</title>
		<link>http://weblog.axent.pl/2007/12/28/cakephp-mysql-collationbehavior/</link>
		<comments>http://weblog.axent.pl/2007/12/28/cakephp-mysql-collationbehavior/#comments</comments>
		<pubDate>Fri, 28 Dec 2007 15:31:57 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2007/12/28/cakephp-mysql-collationbehavior/</guid>
		<description><![CDATA[Aplikacje wielojęzykowe przyspażają wielu problemów. Jednym z nich jest sortowanie wyników zapytania.
W MySQL mamy wiele opcji porównywania napisów. Ja najczęściej stosuję utf8_general_ci, ale przy tej opcji &#8220;ogonki&#8221; lądują na końcu zwracanych wyników (po znakach ASCII). Można jednak w zależości od wybranego języka używać innych COLLATION, np.:

SELECT *
FROM products
ORDER BY name COLLATE utf8_polish_ci
LIMIT 10;

Tutaj &#8220;ą&#8221; wystąpi [...]]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2007/12/28/cakephp-mysql-collationbehavior/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Drag Drop Tree oparte na prototype i script.aculo.us</title>
		<link>http://weblog.axent.pl/2007/12/05/drag-drop-tree-oparte-na-prototype-i-scriptaculous/</link>
		<comments>http://weblog.axent.pl/2007/12/05/drag-drop-tree-oparte-na-prototype-i-scriptaculous/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 15:50:29 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[Przykłady prac]]></category>

		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2007/12/05/drag-drop-tree-oparte-na-prototype-i-scriptaculous/</guid>
		<description><![CDATA[Od pewnego czasu wykorzystuję w projektach gotowe skrypty drzewek z drag&#038;drop.
Niestety jak dotąd nie znalazłem takiego, które:

pozwala na umieszczenie na stronie kilku instancj
współpracuje dobrze z prototype i script.aculo.us
pozwala łatwo i bez modyfikacji kodu dołączyć funkcję, która wyśle AJAXem dokonaną modyfikację struktury drzewa

Dlatego przyszła pora na napisanie własnego drzewka, opartego właśnie na prototype i script.aculo.us.
Demo wciąż [...]]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2007/12/05/drag-drop-tree-oparte-na-prototype-i-scriptaculous/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP, budowanie drzewa ACOs dla AuthComponent</title>
		<link>http://weblog.axent.pl/2007/12/03/cakephp-budowanie-drzewa-acos-dla-authcomponent/</link>
		<comments>http://weblog.axent.pl/2007/12/03/cakephp-budowanie-drzewa-acos-dla-authcomponent/#comments</comments>
		<pubDate>Mon, 03 Dec 2007 15:29:00 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2007/12/03/cakephp-budowanie-drzewa-acos-dla-authcomponent/</guid>
		<description><![CDATA[CakePHP 1.2 udostepnia deweloperom bardzo wygodny AuthComponent. Dołączenie go w aplikacji jest na prawdę szybkie i przyjemne. Wystarczy zerknąć na następujące dwa tutoriale :

http://lemoncake.wordpress.com/2007/07/19/using-authcomponent-and-acl-in-cakephp-12/
http://lemoncake.wordpress.com/2007/07/19/acl-with-groups/

Wszystko idzie gładko aż do momentu, w którym chcemy zbudować drzewo Acos.
]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2007/12/03/cakephp-budowanie-drzewa-acos-dla-authcomponent/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Zapisywanie wielu rekordów w CakePHP</title>
		<link>http://weblog.axent.pl/2007/09/18/zapisywanie-wielu-rekordow-w-cakephp/</link>
		<comments>http://weblog.axent.pl/2007/09/18/zapisywanie-wielu-rekordow-w-cakephp/#comments</comments>
		<pubDate>Tue, 18 Sep 2007 13:16:43 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2007/09/18/zapisywanie-wielu-rekordow-w-cakephp/</guid>
		<description><![CDATA[Byłem ostatnio zmuszony do zbudowania w CakePHP aplikacji,
która miałaby pozwalać na masową edycję stron, produktów, etc.
Szperając na blogach i forach nie udało mi się jednak znaleźć rozwiązania,
które pozwalałoby jednocześnie korzystać ze wszystkich udogodnień CakePHP.
Po paru eksperymentach udało mi się zneleźć dość satysfakcjonujące rozwiązanie.
Przynajmniej nadal mogę korzystać z takich ‘automagicznych’ elementów jak
walidacja i helpera do formularzy.
Kontroler [...]]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2007/09/18/zapisywanie-wielu-rekordow-w-cakephp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP 1.2 : zapisywanie modeli</title>
		<link>http://weblog.axent.pl/2007/08/23/cakephp-12-zapisywanie-modeli/</link>
		<comments>http://weblog.axent.pl/2007/08/23/cakephp-12-zapisywanie-modeli/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 10:45:13 +0000</pubDate>
		<dc:creator>prond</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://weblog.axent.pl/2007/08/23/cakephp-12-zapisywanie-modeli/</guid>
		<description><![CDATA[Domyślnie &#8216;wypieczony&#8217; w Cake 1.2 kod zapisujący model wygląda następująco:

function add&#40;&#41; &#123;
	if &#40;!empty&#40;$this-&#62;data&#41;&#41; &#123;
		$this-&#62;cleanUpFields&#40;&#41;;
		$this-&#62;Page-&#62;create&#40;&#41;;
		if &#40;$this-&#62;Page-&#62;save&#40;$this-&#62;data&#41;&#41; &#123;
			$this-&#62;Session-&#62;setFlash&#40;'The Page has been saved'&#41;;
			$this-&#62;redirect&#40;array&#40;'action'=&#62;'index'&#41;, null, true&#41;;
		&#125; else &#123;
			$this-&#62;Session-&#62;setFlash&#40;'The Page could not be saved. Please, try again.'&#41;;
		&#125;
	&#125;
&#125;

Moim zdaniem brakuje w nim rozróżnienia sytuacji, w której pola są nie poprawne od błędu przy zapisie do bazy.
]]></description>
		<wfw:commentRss>http://weblog.axent.pl/2007/08/23/cakephp-12-zapisywanie-modeli/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
