<?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>Labs &#187; CakePHP</title>
	<atom:link href="http://labs.webdunulis.lt/tag/cakephp/feed" rel="self" type="application/rss+xml" />
	<link>http://labs.webdunulis.lt</link>
	<description></description>
	<lastBuildDate>Fri, 04 Dec 2009 11:43:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CakePHP v1.2.5 ir v1.3.0 alpha greičio bei atminties palyginimas</title>
		<link>http://labs.webdunulis.lt/cakephp-v1-2-5-ir-v1-3-0-alpha-greicio-bei-atminties-palyginimas.html</link>
		<comments>http://labs.webdunulis.lt/cakephp-v1-2-5-ir-v1-3-0-alpha-greicio-bei-atminties-palyginimas.html#comments</comments>
		<pubDate>Fri, 04 Dec 2009 10:29:03 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[1.2.x]]></category>
		<category><![CDATA[1.3.x]]></category>
		<category><![CDATA[greitis]]></category>
		<category><![CDATA[testas]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=235</guid>
		<description><![CDATA[Atlikau nedidelį testą, kaip skiriasi greitis bei atminties vartojimas CakePHP v1.2.5 ir v1.3.0 versijose:
Greitis, debug rėžimas:
v1.2.5 ~0.228s
v1.3.0 ~0.168s (35% greičiau)
Atmintis, debug rėžimas:
v1.2.5 ~8.4MB
v1.3.0 ~7.2MB (17% mažiau)
v1.2.5 ~7,1MB
v1.3.0 ~6,1MB (16% mažiau)
Rezultatai iš tiesų neblogi.
]]></description>
			<content:encoded><![CDATA[<p>Atlikau nedidelį testą, kaip skiriasi greitis bei atminties vartojimas CakePHP v1.2.5 ir v1.3.0 versijose:</p>
<p>Greitis, debug rėžimas:<br />
v1.2.5 ~0.228s<br />
v1.3.0 ~0.168s (35% greičiau)</p>
<p>Atmintis, debug rėžimas:<br />
<span style="text-decoration: line-through;">v1.2.5 ~8.4MB<br />
v1.3.0 ~7.2MB (17% mažiau)</span></p>
<p>v1.2.5 ~7,1MB<br />
v1.3.0 ~6,1MB (16% mažiau)</p>
<p>Rezultatai iš tiesų neblogi.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/cakephp-v1-2-5-ir-v1-3-0-alpha-greicio-bei-atminties-palyginimas.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wordpress temu antraštės CakePHP aplikacijoje</title>
		<link>http://labs.webdunulis.lt/wordpress-temu-antrastes-cakephp-aplikacijoje.html</link>
		<comments>http://labs.webdunulis.lt/wordpress-temu-antrastes-cakephp-aplikacijoje.html#comments</comments>
		<pubDate>Fri, 25 Sep 2009 13:43:24 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=220</guid>
		<description><![CDATA[Jeigu kam prireiktų CakePHP aplikacijoje ištraukti iš Wordpress naujausias temas, sprendimas labai paprastas.
Sukuriam Modelį &#8220;Blog&#8221;:
/app/model/blog.php



&#60;?php


class Blog extends AppModel &#123;


&#160;


&#160;var $name = &#39;Blog&#39;;


&#160;var $useDbConfig = &#39;blog&#39;;


&#160;var $useTable = &#39;wp_posts&#39;;


&#160;


&#160;function getTitles&#40;&#41; &#123;


&#160; $filter = array&#40;


&#160; &#160;&#39;limit&#39; =&#62; 2,


&#160; &#160;&#39;conditions&#39; =&#62; array&#40;


&#160; &#160; &#39;post_status&#39; =&#62; &#39;publish&#39;,


&#160; &#160; &#39;post_type&#39; &#160; =&#62; &#39;post&#39;


&#160; &#160;&#41;,


&#160; &#160;&#39;order&#39; =&#62; &#39;post_date desc&#39;


&#160; &#41;;


&#160; return [...]]]></description>
			<content:encoded><![CDATA[<p>Jeigu kam prireiktų CakePHP aplikacijoje ištraukti iš Wordpress naujausias temas, sprendimas labai paprastas.<br />
Sukuriam Modelį &#8220;Blog&#8221;:<br />
/app/model/blog.php</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Blog <span class="kw2">extends</span> AppModel <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$name</span> <span class="sy0">=</span> <span class="st0">&#39;Blog&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$useDbConfig</span> <span class="sy0">=</span> <span class="st0">&#39;blog&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$useTable</span> <span class="sy0">=</span> <span class="st0">&#39;wp_posts&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> getTitles<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$filter</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;limit&#39;</span> <span class="sy0">=&gt;</span> <span class="nu0">2</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;conditions&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#39;post_status&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;publish&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#39;post_type&#39;</span> &nbsp; <span class="sy0">=&gt;</span> <span class="st0">&#39;post&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;order&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;post_date desc&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&#39;all&#39;</span><span class="sy0">,</span> <span class="re1">$filter</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>bei duomenų bazių konfigūracijoje:<br />
/app/config/database.php</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$blog</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;driver&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;mysql&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;persistent&#39;</span> <span class="sy0">=&gt;</span> <span class="kw2">false</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;encoding&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;utf8&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;host&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;localhost&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;login&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;password&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;database&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;autoz_wp&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;prefix&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>ir belieka kontroleryje iškviesti:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$news</span> <span class="sy0">=</span> ClassRegistry<span class="sy0">::</span><span class="me2">init</span><span class="br0">&#40;</span><span class="st0">&#39;Blog&#39;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">getTitles</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/wordpress-temu-antrastes-cakephp-aplikacijoje.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bandom kurti lietuvišką CakePHP bendruomenę</title>
		<link>http://labs.webdunulis.lt/bandom-kurti-lietuviska-cakephp-bendruomene.html</link>
		<comments>http://labs.webdunulis.lt/bandom-kurti-lietuviska-cakephp-bendruomene.html#comments</comments>
		<pubDate>Wed, 16 Sep 2009 11:05:52 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Cupcake]]></category>
		<category><![CDATA[forum]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=215</guid>
		<description><![CDATA[Senai jau norėjau kažką panašaus sukurti, bet pagalvojau, jog visai gražu kad ta bendruomenė kurtųsi CakePHP karkso pagalba. O būtent šiandien Miles Johnson pristatė forumo beta versiją Cupcake. tad nieko nelaukęs įdiegiau http://forum.webdunulis.lt adresu. Tiesa, iš karto susidūriau su keliomis klaidomis, tačiau pradėt naudot sistemą iš esmės galima. 

Nežinau kiek tiksliai čia pas mus yra [...]]]></description>
			<content:encoded><![CDATA[<p>Senai jau norėjau kažką panašaus sukurti, bet pagalvojau, jog visai gražu kad ta bendruomenė kurtųsi CakePHP karkso pagalba. O būtent šiandien <a href="http://www.milesj.me/">Miles Johnson</a> pristatė forumo beta versiją <a href="http://www.milesj.me/blog/read/58/Come-Have-A-Cupcake%2C-Open-Beta-Released">Cupcake</a>. tad nieko nelaukęs įdiegiau <a href="http://forum.webdunulis.lt">http://forum.webdunulis.lt</a> adresu. Tiesa, iš karto susidūriau su keliomis klaidomis, tačiau pradėt naudot sistemą iš esmės galima. </p>
<p><a href="http://labs.webdunulis.lt/wp-content/uploads/2009/09/cupcake_forum.jpg"><img src="http://labs.webdunulis.lt/wp-content/uploads/2009/09/cupcake_forum-300x131.jpg" alt="cupcake_forum" title="cupcake_forum" width="300" height="131" class="alignleft size-medium wp-image-217" /></a></p>
<p>Nežinau kiek tiksliai čia pas mus yra šio karkaso mėgėjų, bet visus kviečiu užsukti, spręsti iškilusius klausimus, ieškoti patarimų ir t.t. Manau pradžioj bendro forumo užteks, vėliau priklausomai nuo diskusijų skirstysim į atskiras kategorijas. </p>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/bandom-kurti-lietuviska-cakephp-bendruomene.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nauja web aplikacija kodiniu pavadinimu &#8211; devCRM</title>
		<link>http://labs.webdunulis.lt/nauja-web-aplikacija-kodiniu-pavadinimu-devcrm.html</link>
		<comments>http://labs.webdunulis.lt/nauja-web-aplikacija-kodiniu-pavadinimu-devcrm.html#comments</comments>
		<pubDate>Thu, 20 Aug 2009 10:08:44 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Developing'as]]></category>
		<category><![CDATA[devCRM]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=201</guid>
		<description><![CDATA[Įmonėje atsiradus daugiau klientų, bei bendravimo su jais, atsirado poreikis visa tai kažkur užsirašinėti. Trumpai peržvelgus esamas nemokamas CRM sistemas, nei viena nepatiko. Sunkios, prigrūstos visko, grafinės sąsajos nemielos akiai.
Tuomet pagalvojau, gal ką pačiam greit pasirašyti ir tą mintį pavadinau devCRM. Po kelių valandų jau turėjau kliento, su juo susijusios veiklos bei komentarų įvedimą/redagavimą/trynimą. Iš [...]]]></description>
			<content:encoded><![CDATA[<p>Įmonėje atsiradus daugiau klientų, bei bendravimo su jais, atsirado poreikis visa tai kažkur užsirašinėti. Trumpai peržvelgus esamas nemokamas CRM sistemas, nei viena nepatiko. Sunkios, prigrūstos visko, grafinės sąsajos nemielos akiai.<br />
Tuomet pagalvojau, gal ką pačiam greit pasirašyti ir tą mintį pavadinau devCRM. Po kelių valandų jau turėjau kliento, su juo susijusios veiklos bei komentarų įvedimą/redagavimą/trynimą. Iš pradžių be jokių prisijungimų, ACL taisyklių ir pan, kadangi naudosiuosi vienas darbo vietoje. Svarbiausia jau galima dirbi su klientais:</p>
<p><a href="http://labs.webdunulis.lt/wp-content/uploads/2009/08/Screenshot.png"><img src="http://labs.webdunulis.lt/wp-content/uploads/2009/08/Screenshot-300x133.png" alt="Klientai" title="Klientai" width="300" height="133" class="alignleft size-medium wp-image-202" /></a></p>
<p><a href="http://labs.webdunulis.lt/wp-content/uploads/2009/08/Screenshot-1.png"><img src="http://labs.webdunulis.lt/wp-content/uploads/2009/08/Screenshot-1-300x144.png" alt="Screenshot-1" title="Screenshot-1" width="300" height="144" class="alignleft size-medium wp-image-203" /></a></p>
<p><a href="http://labs.webdunulis.lt/wp-content/uploads/2009/08/Screenshot-2.png"><img src="http://labs.webdunulis.lt/wp-content/uploads/2009/08/Screenshot-2-300x268.png" alt="Screenshot-2" title="Screenshot-2" width="300" height="268" class="alignleft size-medium wp-image-204" /></a></p>
<p>Sistema paprasta &#8211; įvedamas klientas, kuriam galima rašyti komentarus bei veiklą. Veikla &#8211; tai visas bendravimas su klientu, nutarimai ir t.t. Tai taip pat atlieka dalinai ir užduočių funkciją tiek sau, tiek klientui, kadangi turi 3 tipus: </p>
<ul>
<li>Laukiama</li>
<li>Gauta</li>
<li>Informacija</li>
</ul>
<p>Imkim kaip pavyzdį &#8211; kuriate interneto svetainę klientui ir jis jums turi pateikti tam tikrą informaciją. Tokiu atveju prirašai jog lauki tekstų ir uždedi tipą &#8220;laukiama&#8221;, o gavus reikiama informacija pažymi &#8220;gauta&#8221;, taip aiškiai užfiksuojamas laiko tarpas. Tai padeda lengviau  apskaičiuoti laiko terminus, kada laikas vilkinamas kliento kalte. Taip pat nuėjus į visų veiklų sąrašą, klientą galima paraginti, kad nėra gauta duomenų. Taip pat, kai įvedi informaciją apie sutarimus, visą bendravimą, tada nekyla klausimų po kiek laiko. Atsidarai klientą ir matai visą istoriją. </p>
<p>Dar kiek patobulinus ir patvarkius kodą, įdėsiu source&#8217;ą čia. </p>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/nauja-web-aplikacija-kodiniu-pavadinimu-devcrm.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CakePHP karkaso ateitis trumpai</title>
		<link>http://labs.webdunulis.lt/cakephp-karkaso-ateitis-trumpai.html</link>
		<comments>http://labs.webdunulis.lt/cakephp-karkaso-ateitis-trumpai.html#comments</comments>
		<pubDate>Tue, 14 Jul 2009 07:04:31 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cake3]]></category>
		<category><![CDATA[CakePHP2]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=184</guid>
		<description><![CDATA[
Ne per seniausiai užmačiau, kad jau išleistas viešai cake3 source&#8217;as. Kuriamas naujausios PHP v5.3 pagrindu.  Iš trumpo aprašymo matyt kad bus praktiškai iš esmės perrašytas karkasas.
Bet anksčiau sulauksim CakePHP2, nuo šios versijos jau bus atsisakytas PHP4 palaikymas. Pagrindiniai uždaviniai:

PHP 5/6 only support
Change Model::tableId to Model::primaryKey
Fix Bake and ACL CLI scripts, and let&#8217;s not forget to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-186 align=" title="cake-php-logo" src="http://labs.webdunulis.lt/wp-content/uploads/2009/07/cake-php-logo.png" alt="cake-php-logo" width="137" height="125" /></p>
<p>Ne per seniausiai užmačiau, kad jau išleistas viešai <a href="http://code.cakephp.org/cake3">cake3 source&#8217;as</a>. Kuriamas naujausios PHP v5.3 pagrindu.  Iš <a href="http://code.cakephp.org/cake3/wiki">trumpo aprašymo</a> matyt kad bus praktiškai iš esmės perrašytas karkasas.</p>
<p>Bet anksčiau sulauksim <a href="http://code.cakephp.org/cakephp2">CakePHP2</a>, nuo šios versijos jau bus atsisakytas PHP4 palaikymas. Pagrindiniai uždaviniai:</p>
<ul>
<li>PHP 5/6 only support</li>
<li>Change Model::tableId to Model::primaryKey</li>
<li>Fix Bake and ACL CLI scripts, and let&#8217;s not forget to generate unit test files this time, too</li>
<li>Inflector: support for custom rules</li>
<li>Allow Cake apps to be independent of the Cake install directory</li>
<li>Degradable Ajax, with support for Bookmarking and the Back button</li>
<li>Planned ACL updates</li>
<li>datasource: http://www.w3.org/TR/wsdl</li>
<li>Add a PDO driver</li>
<li>Change Models to return object instances instead of arrays</li>
<li>Validation class, with auto length and type based on db field</li>
<li>Enable field whitelist for Model::save( ) &#8211; http://groups.google.com/group/cake-php/browse_thread/thread/3ce2bc624d335b9/9ae1f14d5b74cce8?q=&amp;rnum=6#9ae1f14d5b74cce8</li>
<li>Session flashing needs some help, maybe the ability to specify layouts/parameters?</li>
<li>Consider auto-generating hasMany and belongsTo relationships by comparing foreign keys to loaded models. This might also be the place to implement something db-specific, like reading InnoDB relationships.</li>
<li>Query caching</li>
<li>Change Component to a base class instead of a loader/singleton, and have components extend Component.</li>
<li>Make Router a singleton</li>
<li>Write an LDAP DataSource, and an ACL interface to it</li>
<li>Create a formalized way to extend Cake at the bootstrap level, and a basics function for loading these extensions (Extensions?)</li>
<li>Rewrite NeatArray and NeatString as Array and String, and actually add some handy methods/make it possible to call some stuff statically</li>
<li>Enable global loading of JavaScript libraries in /cake_core/vendors/js</li>
<li>Correct 2 files from Changeset [2643] (cake/config/tags.ini.php and cake/libs/view/helpers/html.php)</li>
</ul>
<p>Žinoma, bus dar ir <a href="https://trac.cakephp.org/milestone/1.3.x.x">CakePHP v1.3</a>, tačiau kiek teko girdėti, kažkokių kardinalių pakeitimų nebus. Tiesiog esamos 1.2 tobulinimas.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/cakephp-karkaso-ateitis-trumpai.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nemokama knyga &#8220;Super Awesome Advanced CakePHP Tips&#8221; PDF formatu</title>
		<link>http://labs.webdunulis.lt/nemokama-knyga-super-awesome-advanced-cakephp-tips-pdf-formatu.html</link>
		<comments>http://labs.webdunulis.lt/nemokama-knyga-super-awesome-advanced-cakephp-tips-pdf-formatu.html#comments</comments>
		<pubDate>Fri, 15 May 2009 08:03:16 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=146</guid>
		<description><![CDATA[Vakar Matt iš PseudoCoder išleido trumpą pdf knygą  &#8220;Super Awesome Advanced CakePHP Tips&#8221; visiškai nemokamai. Trumpai peržvelgsiu, ką naudingo joje galima rasti:

Trumpą paaiškinimą apie Containable Behavior naudingumą 
Funkcijos find perdarymą savo aplikacijos reikmėms (kaip pvz $Model->find(&#8217;latest&#8217;) ar $Model->find(&#8217;tag&#8217;, array(&#8217;php&#8217;, &#8216;cakephp&#8217;)), iš ties patogu!)
Prisijungusio vartotojo informacijos gavimas bet kurioje MVC dalyje (Model, View ar Controller) [...]]]></description>
			<content:encoded><![CDATA[<p>Vakar Matt iš <a href="http://www.pseudocoder.com/">PseudoCoder</a> išleido trumpą pdf knygą  &#8220;<a href="http://www.pseudocoder.com/archives/2009/05/13/free-cakephp-e-book-super-awesome-advanced-cakephp-tips/">Super Awesome Advanced CakePHP Tips</a>&#8221; visiškai nemokamai. Trumpai peržvelgsiu, ką naudingo joje galima rasti:</p>
<ul>
<li>Trumpą paaiškinimą apie Containable Behavior naudingumą </li>
<li>Funkcijos find perdarymą savo aplikacijos reikmėms (kaip pvz $Model->find(&#8217;latest&#8217;) ar $Model->find(&#8217;tag&#8217;, array(&#8217;php&#8217;, &#8216;cakephp&#8217;)), iš ties patogu!)</li>
<li>Prisijungusio vartotojo informacijos gavimas bet kurioje MVC dalyje (Model, View ar Controller) per User::get(&#8217;id&#8217;)</li>
<li>Automatinis vartotojo veiksmų sekimas (pvz kas ir kada sukūrė ar redagavo puslapio informaciją)</li>
<li>Unit Testing</li>
<li>Funkcijų add/edit sujungimas į vieną (tiek Controller, tiek View dalyse)</li>
<li>Paprastas sprendimas SEO nuorodoms</li>
<li>JQuery naudojimas vietoj Prototype ir script.aculo.us</li>
<li>Aplikacijos optimizavimas</li>
<li>Bei keletas naudingų patarimų</li>
</ul>
<p>Šią knygą sudaro vos 64 puslapiai, viskas konkrečiai ir aiškiai aprašyta. Labai rekomenduoju perskaityt. </p>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/nemokama-knyga-super-awesome-advanced-cakephp-tips-pdf-formatu.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rodyti/Paslėpti teksto turinį Ajax pagalba</title>
		<link>http://labs.webdunulis.lt/rodytipaslepti-teksto-turini-ajax-pagalba.html</link>
		<comments>http://labs.webdunulis.lt/rodytipaslepti-teksto-turini-ajax-pagalba.html#comments</comments>
		<pubDate>Mon, 04 May 2009 14:36:55 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=143</guid>
		<description><![CDATA[Kartais prireikia tam tikrų informacinių blokų paslėpimo/rodymo funkcijos (kaip pvz didelės kategorizuotos registracijos formos, kur užpildyti laukus neprivaloma). Toks būdas sutaupo nemažai vietos vertikaliai.
Pirmiausia reikės prototype bibliotekos, parsiunčiam į /webroot/js/ katalogą. Toliau aplikacijos kontroleryje (Controller) nurodome JavascriptHelper&#8217;io biblioteką:



var $helpers = array&#40;&#39;Html&#39;, &#39;Form&#39;, &#39;Javascript&#39;&#41;;



Belieka tik šablone (View) įterpti šį kodą:



&#60;?php


&#160;// įterpiama prototype biblioteka


&#160;echo $javascript-&#62;link&#40;&#39;prototype&#39;&#41;;


&#160;


&#160;// nuoroda, kuri [...]]]></description>
			<content:encoded><![CDATA[<p>Kartais prireikia tam tikrų informacinių blokų paslėpimo/rodymo funkcijos (kaip pvz didelės kategorizuotos registracijos formos, kur užpildyti laukus neprivaloma). Toks būdas sutaupo nemažai vietos vertikaliai.</p>
<p>Pirmiausia reikės <a href="http://www.prototypejs.org/">prototype</a> bibliotekos, parsiunčiam į /webroot/js/ katalogą. Toliau aplikacijos kontroleryje (Controller) nurodome JavascriptHelper&#8217;io biblioteką:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$helpers</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;Html&#39;</span><span class="sy0">,</span> <span class="st0">&#39;Form&#39;</span><span class="sy0">,</span> <span class="st0">&#39;Javascript&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Belieka tik šablone (View) įterpti šį kodą:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// įterpiama prototype biblioteka</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">echo</span> <span class="re1">$javascript</span><span class="sy0">-&gt;</span><span class="me1">link</span><span class="br0">&#40;</span><span class="st0">&#39;prototype&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// nuoroda, kuri paslepia/parodo turinį</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">echo</span> <span class="re1">$html</span><span class="sy0">-&gt;</span><span class="me1">link</span><span class="br0">&#40;</span><span class="st0">&#39;Rodyti/Paslėpti&#39;</span><span class="sy0">,</span><span class="st0">&#39;#&#39;</span><span class="sy0">,</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;onclick&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;Element.toggle(&#39;content&#39;);&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>div id<span class="sy0">=</span><span class="st0">&quot;content&quot;</span> style<span class="sy0">=</span><span class="st0">&quot;display: none;&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;Tekstas</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/rodytipaslepti-teksto-turini-ajax-pagalba.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Užklausos į duomenų bazę cache&#8217;avimas</title>
		<link>http://labs.webdunulis.lt/uzklausos-i-duomenu-baze-cacheavimas.html</link>
		<comments>http://labs.webdunulis.lt/uzklausos-i-duomenu-baze-cacheavimas.html#comments</comments>
		<pubDate>Fri, 17 Apr 2009 07:39:43 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cache]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=138</guid>
		<description><![CDATA[Lygiai su tokia problema ir man teko susidurti, kaip šio rašinio autoriui. Kada užkešuoti kontrolerio funkciją neužtenka, nes ji gražina du ar daugiau skirtingus duomenų kiekius. Šis sprendimas leidžia kešuoti kiekvieną užklausimą į duomenų bazę atskirai:



// Cache query to /tmp/cache/sql/model-test_sql_query


$results = $this-&#62;Model-&#62;find&#40;&#39;all&#39;, array&#40;


&#160;&#39;cache&#39; =&#62; &#39;test_sql_query&#39;


&#41;&#41;;


&#160;


// Cache query to /tmp/cache/sql/model-another_query that expires in 24 hours


$results = [...]]]></description>
			<content:encoded><![CDATA[<p>Lygiai su tokia problema ir man teko susidurti, kaip <a href="http://www.milesj.me/blog/read/34/cacheing-each-query-individually-">šio rašinio autoriui</a>. Kada užkešuoti kontrolerio funkciją neužtenka, nes ji gražina du ar daugiau skirtingus duomenų kiekius. Šis sprendimas leidžia kešuoti kiekvieną užklausimą į duomenų bazę atskirai:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// Cache query to /tmp/cache/sql/model-test_sql_query</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$results</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">Model</span><span class="sy0">-&gt;</span><span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&#39;all&#39;</span><span class="sy0">,</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;cache&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;test_sql_query&#39;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Cache query to /tmp/cache/sql/model-another_query that expires in 24 hours</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$results</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">Model</span><span class="sy0">-&gt;</span><span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&#39;all&#39;</span><span class="sy0">,</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&#39;cache&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;another_query&#39;</span><span class="sy0">,</span> <span class="st0">&#39;+24 hours&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Visa dokumentacija bei kodas &#8211; <a href="http://www.milesj.me/blog/read/34/cacheing-each-query-individually-">milesj.me</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/uzklausos-i-duomenu-baze-cacheavimas.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wordpress ir CakePHP draugija</title>
		<link>http://labs.webdunulis.lt/wordpress-ir-cakephp-draugija.html</link>
		<comments>http://labs.webdunulis.lt/wordpress-ir-cakephp-draugija.html#comments</comments>
		<pubDate>Wed, 15 Apr 2009 10:27:32 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=135</guid>
		<description><![CDATA[Jeigu esate sukūrę aplikaciją CakePHP karkasų, tačiau reikia įdiegti ir Wordpress blogą kaip pvz www.example.com/blog/ adresu, šis sprendimas .htaccess pagalba jums padės:



RewriteEngine on


RedirectMatch temp ^/blog/wp-admin$ http://www.example.com/blog/wp-admin/


RewriteRule blog$ /blog/ &#91;L&#93;


RewriteRule blog/wp-admin$ /blog/wp-admin/ &#91;L&#93;


RewriteRule ^$ app/webroot/ &#91;L&#93;


RewriteRule &#40;.*&#41; app/webroot/$1 &#91;L&#93;



Šaltinis: sebgalarneau.com
]]></description>
			<content:encoded><![CDATA[<p>Jeigu esate sukūrę aplikaciją CakePHP karkasų, tačiau reikia įdiegti ir Wordpress blogą kaip pvz www.example.com/blog/ adresu, šis sprendimas .htaccess pagalba jums padės:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">RewriteEngine on</div>
</li>
<li class="li1">
<div class="de1">RedirectMatch temp ^<span class="sy0">/</span>blog<span class="sy0">/</span>wp<span class="sy0">-</span>admin$ http<span class="sy0">:</span><span class="co1">//www.example.com/blog/wp-admin/</span></div>
</li>
<li class="li1">
<div class="de1">RewriteRule blog$ <span class="sy0">/</span>blog<span class="sy0">/</span> <span class="br0">&#91;</span>L<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">RewriteRule blog<span class="sy0">/</span>wp<span class="sy0">-</span>admin$ <span class="sy0">/</span>blog<span class="sy0">/</span>wp<span class="sy0">-</span>admin<span class="sy0">/</span> <span class="br0">&#91;</span>L<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">RewriteRule ^$ app<span class="sy0">/</span>webroot<span class="sy0">/</span> <span class="br0">&#91;</span>L<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">RewriteRule <span class="br0">&#40;</span><span class="sy0">.*</span><span class="br0">&#41;</span> app<span class="sy0">/</span>webroot<span class="sy0">/</span>$<span class="nu0">1</span> <span class="br0">&#91;</span>L<span class="br0">&#93;</span></div>
</li>
</ol>
</div>
<p><em>Šaltinis: <a href="http://www.sebgalarneau.com/2009/04/14/wordpress-cakephp/">sebgalarneau.com</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/wordpress-ir-cakephp-draugija.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>counterCache įrašų skaičiui saugoti</title>
		<link>http://labs.webdunulis.lt/countercache-irasu-skaiciui-saugoti.html</link>
		<comments>http://labs.webdunulis.lt/countercache-irasu-skaiciui-saugoti.html#comments</comments>
		<pubDate>Mon, 06 Apr 2009 18:24:09 +0000</pubDate>
		<dc:creator>Mindaugas</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[optimizacija]]></category>

		<guid isPermaLink="false">http://labs.webdunulis.lt/?p=121</guid>
		<description><![CDATA[Imkime kaip pavyzdį užduočių valdymo (ToDo) aplikaciją ir norime sužinoti kiek kiekvienoje kategorijoje yra nebaigtų darbų.



CREATE TABLE IF NOT EXISTS `task_categories` &#40;


&#160; `id` int&#40;10&#41; unsigned NOT NULL auto_increment,


&#160; `item_count` int&#40;10&#41; unsigned NOT NULL,


&#160; `name` varchar&#40;32&#41; NOT NULL,


&#160; `created` datetime NOT NULL,


&#160; PRIMARY KEY &#160;&#40;`id`&#41;


&#41; ENGINE=MyISAM &#160;DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


&#160;


CREATE TABLE IF NOT EXISTS `task_items` &#40;


&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Imkime kaip pavyzdį užduočių valdymo (ToDo) aplikaciją ir norime sužinoti kiek kiekvienoje kategorijoje yra nebaigtų darbų.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">CREATE TABLE <span class="kw1">IF</span> NOT EXISTS `task_categories` <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `id` int<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> unsigned NOT <span class="kw2">NULL</span> auto_increment<span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `item_count` int<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> unsigned NOT <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `name` varchar<span class="br0">&#40;</span><span class="nu0">32</span><span class="br0">&#41;</span> NOT <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `created` datetime NOT <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; PRIMARY <span class="kw3">KEY</span> &nbsp;<span class="br0">&#40;</span>`id`<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> ENGINE<span class="sy0">=</span>MyISAM &nbsp;<span class="kw2">DEFAULT</span> CHARSET<span class="sy0">=</span>utf8 AUTO_INCREMENT<span class="sy0">=</span><span class="nu0">1</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">CREATE TABLE <span class="kw1">IF</span> NOT EXISTS `task_items` <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `id` int<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> unsigned NOT <span class="kw2">NULL</span> auto_increment<span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `task_category_id` int<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> unsigned NOT <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `user_id` int<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> unsigned <span class="kw2">default</span> <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `name` varchar<span class="br0">&#40;</span><span class="nu0">128</span><span class="br0">&#41;</span> NOT <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `description` text NOT <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `status` tinyint<span class="br0">&#40;</span><span class="nu0">3</span><span class="br0">&#41;</span> unsigned NOT <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; `created` datetime NOT <span class="kw2">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; PRIMARY <span class="kw3">KEY</span> &nbsp;<span class="br0">&#40;</span>`id`<span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">KEY</span> `task_category_id` <span class="br0">&#40;</span>`task_category_id`<span class="sy0">,</span>`user_id`<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> ENGINE<span class="sy0">=</span>MyISAM &nbsp;<span class="kw2">DEFAULT</span> CHARSET<span class="sy0">=</span>utf8 AUTO_INCREMENT<span class="sy0">=</span><span class="nu0">1</span> <span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Taigi, turime du modelius &#8211; TaskCategory ir TaskItem.:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> TaskItem <span class="kw2">extends</span> AppModel <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$name</span> <span class="sy0">=</span> <span class="st0">&#39;TaskItem&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$belongsTo</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;TaskCategory&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;className&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;TaskCategory&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;foreignKey&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;task_category_id&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;counterCache&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;items_count&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;counterScope&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;status = 0&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> TaskCategory <span class="kw2">extends</span> AppModel <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$name</span> <span class="sy0">=</span> <span class="st0">&#39;TaskCategory&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$hasMany</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&#39;TaskItem&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;className&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;TaskItem&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;foreignKey&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;task_category_id&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="st0">&#39;dependent&#39;</span> <span class="sy0">=&gt;</span> <span class="kw2">true</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Šiuo atveju žiūrim į TaskItem modelyje &#8216;counterCache&#8217; => &#8216;items_count&#8217; ir &#8216;counterScope&#8217; => &#8217;status = 0&#8242; nustatymus. Pirmasis nurodo lentelės lauką kur bus saugojamas įrašų kiekis, antrasis nurodo, jog skaičiuoti tik tuos, kada TaskItem.active lygus 0 (darbas neatliktas).<br />
Viskas, nuo šiol nereiks atskirai skaičiuoti kiekvienos kategorijos neatliktų darbų kiekio papildomomis užklausomis bei funkcijomis. Tuo pačiu gauname optimizuotą sistemą.<br />
<img src="http://labs.webdunulis.lt/wp-content/uploads/2009/04/screenshot.png" alt="ToDo kategorijos" title="ToDo kategorijos" width="294" height="266" class="alignleft size-full wp-image-127" /></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.webdunulis.lt/countercache-irasu-skaiciui-saugoti.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
