<?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>IT Projekti</title>
	<atom:link href="http://www.itprojekti.lv/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.itprojekti.lv</link>
	<description>Blogs par web izstrādi, dažādiem IT projektiem, fotogrāfēšanu u.c. interesantām tēmām</description>
	<lastBuildDate>Tue, 20 Jul 2010 16:02:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Dizaina tēmas un skripti par izdevīgu cenu</title>
		<link>http://www.itprojekti.lv/2010/07/20/dizaina-temas-un-skripti-par-izdevigu-cenu/</link>
		<comments>http://www.itprojekti.lv/2010/07/20/dizaina-temas-un-skripti-par-izdevigu-cenu/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:05:24 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Resursi]]></category>
		<category><![CDATA[dizains]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=322</guid>
		<description><![CDATA[Ļoti bieži, veidojot jaunu interneta projektu, nav nepieciešamība veidot pilnīgi oriģinalu dizainu. Lai ietaupītu varam izmantot arī bezmaksas dizainu alternatīvas, bet ne vienmēr starp tiem varam atrast atbilstošas. Nesen atklāju kompānijas Envato web vietnes, kurās var dabūt profesionālus un patiešām kvalitātīvus dizainus, kā arī gatavus php, javascript skriptus, audio un video failus u.c. interesantus darbus [...]]]></description>
			<content:encoded><![CDATA[<p>Ļoti bieži, veidojot jaunu interneta projektu, nav nepieciešamība veidot pilnīgi oriģinalu dizainu. Lai ietaupītu varam izmantot arī bezmaksas dizainu alternatīvas, bet ne vienmēr starp tiem varam atrast atbilstošas. Nesen atklāju kompānijas Envato web vietnes, kurās var dabūt profesionālus un patiešām kvalitātīvus dizainus, kā arī gatavus php, javascript skriptus, audio un video failus u.c. interesantus darbus par ļoti pieņemām cenām.</p>
<p><span id="more-322"></span>Pirmā no Envato interneta vietnēm ir <a href="http://themeforest.net?ref=itpg">ThemeForest.net</a>. Tajā atrodamas Joomla, WordPress, kā arī parastas html/css dizaina tēmas. WordPress un Joomla tēmu cena svārstās vidēji ap 17-37$, bet dizainu, kas nav pielāgoti nevienam CMS (Site template) cena vidēji ir ap 7-22$. Šeit ir viena no retajām vietām, kurā iespējams atrast gatavus dizainus administrācijas paneļu veidosanai (<em>backend</em>). Iespējams iegādāties arī tikai PSD formāta dizainus. Ir pat atsevišķa sadaļa izveidota <a href="http://www.magentocommerce.com/">Magento</a> interneta veikalu platformas tēmām.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/theme-forest/themeforest2.png" title="" class="shutterset_singlepic16" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/16__520x340_themeforest2.png" alt="themeforest2" title="themeforest2" />
</a>

<p><a href="http://activeden.net?ref=itpg">activeden.net</a> &#8211; visdažādākie flash komponenti, sākot ar video un audio atskaņotājiem un beidzot ar flash spēlēm un mājas lapu šaboniem  sākot no 1$.</p>
<p><a href="http://3docean.net?ref=itpg">3docean.net</a> &#8211; 3D modeļi, tekstūras u.c. materiāli, kas noderēs tiem, kas nodarbojas ar 3D leitām</p>
<p><a href="http://audiojungle.net?ref=itpg">audiojungle.net</a> -nopērkami audio gabali, kas var noderēt gan spēļu veidotājiem, gan veidojot video prezentācijas</p>
<p><a href="http://codecanyon.net?ref=itpg">codecanyon.net</a> &#8211; PHP, JavaScript, ASP.NET un Java skripti</p>
<p><a href="http://graphicriver.net?ref=itpg">graphicriver.net</a> -pieejamas vektorgrafikas bildes, tekstūras, dizaina šabloni kredītkartēm, flaijeriem u.c.</p>
<p><a href="http://videohive.net?ref=itpg">videohive.net</a> &#8211; dažādi video faili</p>
<p>Šīs visas interneta vietnes piedāvā ne tikai iegādāties failus, bet arī kļūt par to autoru un pelnīt no katra pirkuma, piemēram, izveidojot oriģinālu WordPress dizaina tēmu dizaineris var nopelnīt 40%-70% no katra pirkuma (atkarībā no apgrozījuma), ja konkrētais produkts tiek tirgots tikai kādā no šīm lapām. Ja tiek tirgots arī vēl kaut kur citur, tad par katru pārdoto vienību autora atlīdzība ir 25%. Tādejādi tiek panākts, ka tirgotie faili šajās lapās lielākoties ir unikāli un atrodami tikai šajās interneta vietnēs. Ja mēnesī ir nopelnīts mazāk par 500$, tad nopelnīto naudu var izmaksāt uz <a href="https://www.moneybookers.com/app/?rid=15265996">MoneyBookers</a> vai <a href="https://www.paypal.com/lv">PayPal</a>. Savukārt savācot vairāk par 500$ mēnesī izmaksa tiek veikta ar čeku vai <em>wire transfer</em> pārskaitījumu.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2010/07/20/dizaina-temas-un-skripti-par-izdevigu-cenu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO padoms Nr.1 &#8211; domēna kanoniskošana (canonicalization)</title>
		<link>http://www.itprojekti.lv/2010/01/13/seo-padoms-nr-1-domena-kanoniskosana-canonicalization/</link>
		<comments>http://www.itprojekti.lv/2010/01/13/seo-padoms-nr-1-domena-kanoniskosana-canonicalization/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 17:35:17 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Padomi]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[.htaccess]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=303</guid>
		<description><![CDATA[Viens no vienkāršākajiem veidiem, ko mājas lapu īpašnieki var veikt SEO (Search Engine Optimization) labā, ir realizēt domēna kanoniskošanu (canonicalization) jeb, citiem vārdiem sakot, izvēlēties labāko domēna url adresi. Problēmas Daudzi uzskata, ka adreses http://www.mansdomens.lv, http://mansdomens.lv, http://www.mansdomens.lv/index.php, http://mansdomens.lv/index.php ir ekvivalentas, bet tehniski tā tas nav. No SEO viedokļa, ir ļoti ieteicams, saitēm uz savu mājas [...]]]></description>
			<content:encoded><![CDATA[<p>Viens no vienkāršākajiem veidiem, ko mājas lapu īpašnieki var veikt SEO (Search Engine Optimization) labā, ir realizēt domēna kanoniskošanu (canonicalization) jeb, citiem vārdiem sakot, izvēlēties labāko domēna <em>url</em> adresi.</p>
<p><span id="more-303"></span></p>
<h1>Problēmas</h1>
<p>Daudzi uzskata, ka adreses <em>http://www.mansdomens.lv</em>, <em>http://mansdomens.lv</em>, <em>http://www.mansdomens.lv/index.php</em>, <em>http://mansdomens.lv/index.php</em> ir ekvivalentas, bet tehniski tā tas nav. No SEO viedokļa, ir ļoti ieteicams, saitēm uz savu mājas lapu izmantot tikai vienu noteiktu variantu (ar vai bez www). Galvenie iemesli tam ir divi. Pirmkārt, eksistē meklēšanas dzinēji, kas <em>http://www.mansdomens.lv</em> un <em>http://mansdomens.lv</em> varētu uztvert par dublējošu saturu un sodīt par to lapu. Cik zināms tas neattiecas uz Google un tā kā Latvijā lielākoties visi meklēšanai izmanto tieši Googles meklētāju, tad tas vēl mūsu lapai, ja tā orientēta Latvijas tirgum, nenodara pārlieku lielu ļaunumu. Otrkārt, kas ir pats būtiskākais, šāda dublēšanās var pazemināt mājas lapas <em>pagerank </em>vērtību. Ja uz<em> http://mansdomens.lv </em>ir 50 saites un uz <em>http://www.mansdomens.lv</em> būs 100 saites, tas nenozīmē, ka uz mūsu mājas lapu pavisam kopā ir 150 saites. Līdz ar to <em>http://mansdomens.lv</em> un<em> http://www.mansdomens.lv</em> <em>pagerank </em>vērtības var atšķirties, bet, kas ir pats būtiskākais, augstāku <em>pagerank </em>mēs varētu iegūt, ja būtu jau sākotnēji izmantojuši vai nu vienu, vai otru <em>url </em>adresi.</p>
<h1>Risinājumi</h1>
<p>Vispirms būtu jāizvēlas lietot adreses ar vai bez www un pēc tam pie šīs izvēles arī jāpieturas. Ieteicamākais ir otrs variants, jo tas ir tas, ko cilvēki visbiežāk lieto. Kad esam izvēlējušies, tad vajadzētu tehniski realizēt, lai automātiski lietotājs nokļūtu vajadzīgajā lapā, pat ja viņš pārlūkā ieraksta pretējo adresi. Visvienkāršākais veids kā to izdarīt ir ar <em>.htaccess</em> failu palīdzību, vienīgi ir jāņem vērā, ka, lai strādātu šī metode, <em>apache </em>web serverim ir jābūt uzinstalētam <em>mod_rewrite </em>modulim. Ja vēlamies, lai ierakstot <em>http://mansdomens.lv</em> lietotājiem vienmēr atvērtos <em>http://www.mansdomens.lv</em>, tad <em>.htaccess</em> faila saturam ir jābūt šādam:</p>
<pre>RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]</pre>
<p>Šinī gadījumā pat, ja lietotājs ierakstīts adresi bez www uz kādu no domēna apakšlapām, piemēram, <em>http://mansdomens.lv/raksts-par-seo</em>, tad tāpat tiks automātiski atvērta adrese <em>http://www.mansdomens.lv/raksts-par-seo</em></p>
<p>Vēl viena alternatīva, kā to izdarīt ir <em>index.php</em> failā iekopēt sekojošas koda rindiņas:</p>
<pre class="brush: php;">
&lt;?php
 if (substr($_SERVER['HTTP_HOST'],0,3) != 'www')
 {
 header('HTTP/1.1 301 Moved Permanently');
 header('Location: http://www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
 }
 ?&gt;
</pre>
<p>Ja konkrētās mājas lapas visi pieprasījumi neiet caur<em> index.php</em> failu, tad šis kods ir jāiekļauj visos failos caur kuriem iet pieprasījumi. Šo metodi nevarēs pielietot, ja mūsu mājas lapa sastāv no html failiem, tāpēc ieteicamākā metode būtu tieši <em>.htaccess</em> failu izmantošana.</p>
<p>Ja ir vēlme visas adreses pārveidot formā bez www, tad <em>.htaccess</em> failā būs jāieraksta:</p>
<pre>RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]</pre>
<p>Ja <em>.htaccess</em> failā ir vēl kādas rindiņas, kas sākas ar <em>RewriteCond </em>un <em>RewriteRule</em>, tad būtu ieteicams iepriekš minētā piemēra saturu izvietot faila sākumā nevis beigās.</p>
<p>Vēl viens iemesls, kāpēc būtu nepieciešams veikt iepriekš minētās darbības, ir tas, ka atstājot abas adreses (ar un bez www), iegūtie <a title="google analytics" href="http://www.google.com/analytics/">Google Analytics</a> dati nebūs precīzi, piemēram, lietotājs, kas vispirms apskata <em>http://www.mansdomens.lv</em> un pēc tam atver <em>http://mansdomens.lv</em>, tiks uzskatīts kā jauns lietotājs.</p>
<p>Situācijas uzlabošanai būtu arī ļoti ieteicams piereģistrēt <a title="google webmasters" href="https://www.google.com/webmasters">Google Webmaster Tools</a> abas url adreses (<em>www.mansdomens.lv</em> un <em>mansdomens.lv</em>). Pēc tam šajā Google rīkā, kad esam iegājuši domēna <em>www.mansdomens.lv</em> profilā, ir jāatver <em>Site Configurations -&gt; Settings</em> un pie <em>Preferred domain </em>jānorāda vajadzīgo (ar vai bez www). Ieguvums no tā būs visai ievērojams &#8211; ja būsim norādījuši <em>Display URLs as www.mansdomens.lv</em>,  tad visas saites uz mājas lapu, ko Google atradīs formā <em>http://mansdomens.lv</em>, tiks uztvertas, kā saites uz <em>http://www.mansdomens.lv</em>, nevis <em>http://mansdomens.lv</em>. Papildus tam arī Google meklēšanas rezultātos, tiks uzrādīts izvēlētais variants.</p>
<p>Šis ir viens no vienkāršākajiem SEO paņēmieniem, ko būtu pa spēkam veikt arī neprogrammētājiem. Arī turpmāk turpināšu dalīties informācijā, ko savā ikdienas darbā (kas nav tieši saistīts ar SEO) uzzinu par SEO principiem un paņēmieniem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2010/01/13/seo-padoms-nr-1-domena-kanoniskosana-canonicalization/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Model-View-Controller arhitektūras principi (2. daļa)</title>
		<link>http://www.itprojekti.lv/2010/01/10/model-view-controller-arhitekturas-principi-2-dala/</link>
		<comments>http://www.itprojekti.lv/2010/01/10/model-view-controller-arhitekturas-principi-2-dala/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 19:17:19 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Programmēšana]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Model View Controller]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=283</guid>
		<description><![CDATA[Ar šo rakstu centīšos parādīt to, kā iepriekš apskatīto kodu būtu iespējams sadalīt pēc Model View Controller arhitektūras principiem. Veidi kā to izdarīt ir dažādi un katra ietvara (framework) MVC realizācija var atšķirties. Šis konkrētais piemērs būs uz manis izstrādātā PHP ietvara balstīts. /public_html Publiski pieejamais kods (css, bildes, javascript faili u.tml.) /private Php faili, [...]]]></description>
			<content:encoded><![CDATA[<p>Ar šo rakstu centīšos parādīt to, kā <a title="mvc" href="http://www.itprojekti.lv/2009/12/14/model-view-controller-arhitekturas-principi-1-dala/" target="_self">iepriekš</a> apskatīto kodu būtu iespējams sadalīt pēc Model View Controller arhitektūras principiem. Veidi kā to izdarīt ir dažādi un katra ietvara (framework) MVC realizācija var atšķirties. Šis konkrētais piemērs būs uz manis izstrādātā PHP ietvara balstīts.</p>
<p><span id="more-283"></span><a href="http://www.itprojekti.lv/wp-content/uploads/2010/01/mvc-piemers.png"><img class="alignright size-full wp-image-284" title="mvc piemers" src="http://www.itprojekti.lv/wp-content/uploads/2010/01/mvc-piemers.png" alt="" width="306" height="469" /></a></p>
<p><strong>/public_html</strong></p>
<p>Publiski pieejamais kods (css, bildes, javascript faili u.tml.)</p>
<p><strong>/private</strong></p>
<p>Php faili, kuros atrodas kods, kas veic pašas aplikācijas pieprasījumu apstrādi un izpildi, datu atlasīšanu no datu bāzes u.tml.</p>
<p><strong>/public_html/index.php</strong></p>
<p>Lielākoties PHP MVC ietvaros tiek lietots Frontend pattern arhitektūra, t.i. kad visi pieprasījumi tiek apstrādāti centralizēti. Tā arī šeit ir realizēts, tas, ka katrs pieprasījums izsauc index.php failu, no kura tālāk jau tiek izsaukta attiecīgās ietvara klases un metodes, kas veic pieprasījuma apstrādi un atbilstošās Controller klases un metodes atrašanu.</p>
<pre>$c = new Framework_Bootstrap();
$c-&gt;route();</pre>
<p>Bez augstāk esošā koda, vēl arī <em>index.php</em> failā tiek definēti ceļi uz aplikācijas komponentēm.</p>
<p><strong>/public_html/.htaccess</strong></p>
<p>Lai varētu nodrošināt to, ka katrs pieprasījums tiek veikts caur <em>index.php</em> failu, <em>.htaccess</em> failā  ir jāieraksta sekojošais:</p>
<pre class="brush: php;">
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css|swn|html|xml|txt|swf)$ index.php
</pre>
<p><strong>/private/library</strong></p>
<p>Atrodas ietvara klašu faili, kā arī <em>3rd party</em> klašu bibliotēkas, piemēram, bilžu apstrādes klase, PDF ģenerēšanas klašu bibliotēka u.c.</p>
<p><strong>/private/config/db.php</strong></p>
<p>Datu bāzes konfigurācijas fails.</p>
<pre class="brush: php;">
&lt;?php
define('DB_HOST', 'localhost');
define('DB_USER', 'user');
define('DB_PSW', 'psw');
define('DB_NAME', 'databasename');
?&gt;
</pre>
<p><strong>/private/app/models</strong></p>
<p>Atrodas klases, kas veic darbības ar datu bāzi (<em>Model </em>slānis). Katrai datu bāzes tabulai parasti tiek izveidota viena atsevišķa <em>Model </em>klase, piemēram, šinī gadījumā tas ir <em>Product.php.</em></p>
<pre class="brush: php;">
&lt;?php
class Product extends Framework_Db
{
private $_table = 'product';
private $_pk = 'productId';

function getAll(){
$query  = &quot;SELECT * FROM $this-&gt;_table&quot;;
return $this-&gt;selectAll($query);
}

function insert($productName){
$data = array(
'productName' =&gt; $productName
);
return parent::insert($this-&gt;_table, $data);
}
}
?&gt;
</pre>
<p>Kā redzams piemērā iepriekšējo datu bāzes vaicājumu</p>
<pre>SELECT * FROM product</pre>
<p>esam pārvietojuši atsevišķā Model klases metodē, kas pēc tam dos iespēju to izsaukt pēc vajadzības, nepārrakstot vairākkārtīgi pašu datu bāzes vaicājumu. Tāpat arī šeit tiek likti visi pārējie datu bāzes vaicājumi, kas attiecas uz datu bāzes tabulu <em>product</em>, piemēram, metode <em>insert($productName).</em> Klase <em>Product </em>tiek paplašināta ar ietvara klasi <em>Framework_Db</em>, kas nodrošinās <em>sql </em>vaicājumu sagatavošanu un datu atgriešanu no datu bāzes.</p>
<p><strong>/private/app/backend</strong></p>
<p>Satura pārvaldības sistēma (CMS), kas ir atsevišķi atdalīta no lapas apmeklētājiem publiski pieejamās daļas, piemēram, atrodas subdomēnā cms.mansdomens.lv. Šāda pieeja ļauj izstrādāt no lapas apmeklētājiem publiski pieejamās lapas satura, atdalītu sistēmu, bet tomēr atļaujot kopīgi izmantot <em>Model </em>klases, piemēram, datu ievietošana tabulā <em>product</em>, var būt nepieciešama, gan lapas lietotājiem, gan lapas administratoram, kas rediģē aplikācijas datu bāzi speciāli izveidotā cms sistēmā.</p>
<p><strong>/private/app/frontend</strong></p>
<p>Publiski pieejamā sadaļa. Tā kā zem <em>frontend </em>un <em>backend </em>esošā failu struktūra ir līdzīga, tad tālāk apskatīsim tikai <em>frontend </em>sadaļu.</p>
<p><strong>/private/app/frontend/layouts</strong></p>
<p>Atrodas <em>view </em>slāņa <em>layout </em>faili, kuri kalpo kā pamata html šablons, kurā noteiktās vietās tiek pievienots mainīgais lapas saturs.</p>
<p><strong>/private/app/frontend/layouts/index.phtml</strong></p>
<pre class="brush: php;">&lt;/pre&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;title&gt;Paraugs&lt;/title&gt;
&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
 &lt;?=$this-&gt;layout['center']?&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><em>&lt;?=$this-&gt;layout['center']?&gt;</em> vietā tiek ievietots konkrētā piepasījuma <em>view </em>fails, kuru apskatīsim vēlāk.</p>
<p><strong>/private/app/frontend/modules</strong></p>
<p>Tā kā tiek veidota modulāra aplikācija, tad tiek veidoti moduļi, kas katrs sevī var saturēt vairākas <em>Controller </em>un <em>View</em> komponentes.</p>
<p><strong>/private/app/frontend/modules/product/controllers</strong></p>
<p><em>Product </em>moduļa <em>Controller </em>slānis.</p>
<p><strong>/private/app/frontend/modules/product/controllers/PrintController.php</strong></p>
<p>Product moduļa Controller klase.</p>
<pre class="brush: php;">
&lt;?php
class Product_PrintController extends Framework_Controller {
 function indexAction(){
 require_once PATH_TO_MODELS.'Product.php';
 $o_product = new Product();
 $this-&gt;view['product'] = $o_product-&gt;getAll();
 $this-&gt;layout['center'] = $this-&gt;render('index');
 $this-&gt;layout();
 }
}
?&gt;
</pre>
<p>Web aplikācijas adrese, lai izsauktu <em>product </em>moduļa <em>PrintController </em>klases<em> indexAction()</em> metodi, būs <em>mansdomens.lv/product/print </em>vai <em>mansdomens.lv/product/print/index</em>.</p>
<p>Kā redzams <em>PrintController </em>klases <em>indexAction()</em> metodē, tad tiek izsaukta <em>Model </em>slāņa <em>Product </em>klases metode <em>getAll()</em>, kas atgriež masīvā visu produktu sarakstu un šis masīvs tiek noglabāts mainīgajā <em>$this-&gt;view['product']</em>, kura vērtībām pēc tam varēs piekļūt <em>view </em>slāņa failos.</p>
<p>Metode <em>$this-&gt;render(&#8216;index&#8217;);</em> ģenerē attiecīgā <em>Controller</em>, attiecīgās <em>Action </em>metodes <em>view </em>failu (<em>/private/app/frontend/modules/product/views/print/index.phtml</em>).</p>
<p><em>$this-&gt;layout();</em> izsauc <em>/private/app/frontend/layouts/index.phtml </em>failu, kurā tiek ierakstīts <em>$this-&gt;layout['center']</em> esošā view faila vērtība, līdz ar to iegūstot gatavu html lapu, kas ir redzama lietotājam.</p>
<p><strong>/private/app/frontend/modules/product/views/print/index.phtml</strong></p>
<p><em>Product </em>moduļa <em>View </em>slāņa fails. Šeit tiek likts html izejas kods, kas tiek iekļauts <em>layouts </em>html failos.</p>
<pre class="brush: php;">
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;produkts&lt;/th&gt;
&lt;?
foreach($this-&gt;view['product'] as $row) {?&gt;
 &lt;tr&gt;&lt;td&gt;&lt;?=$row['productName']?&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;? }?&gt;
&lt;/tr&gt;
&lt;/table&gt;
</pre>
<p>Šīs ir tikai viens no veidiem, kā varētu realizēt Model View Controller arhitektūru. Lai iegūtu labāku priekšstatu par šo tik izplatīto arhitektūru, iesaku pašiem praktiski pamēģināt vairākus piemērus, lai izprasto šo tēmu labāk:</p>
<ul>
<li><a href="http://www.phpro.org/tutorials/Model-View-Controller-MVC.html">http://www.phpro.org/tutorials/Model-View-Controller-MVC.html</a></li>
<li><a href="http://www.yiiframework.com/doc/guide/basics.mvc">http://www.yiiframework.com/doc/guide/basics.mvc</a></li>
<li><a href="http://framework.zend.com/docs/quickstart">http://framework.zend.com/docs/quickstart</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2010/01/10/model-view-controller-arhitekturas-principi-2-dala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii Framework &#8211; jauns, daudzsološs MVC PHP ietvars</title>
		<link>http://www.itprojekti.lv/2010/01/10/yii-framework-jauns-daudzsoloss-mvc-php-ietvars/</link>
		<comments>http://www.itprojekti.lv/2010/01/10/yii-framework-jauns-daudzsoloss-mvc-php-ietvars/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 11:20:33 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Programmēšana]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=272</guid>
		<description><![CDATA[Pirms trim gadiem, kad sāku interesēties par web aplikāciju izstrādi ar PHP ietvariem, izvēlējos apgūt Zend Framework. Neskatoties uz tā spēcīgajām īpašībām, tomēr nācās secināt, ka, lai pielāgotu ietvaru izstrādājamās aplikācijās vajadzībām, nākas pavadīt visai padaudz laika lasot oficiālo Zend Framework dokumentāciju, kā arī regulāri meklēt risinājumus citos resursos. Ar Zend Framework izveidoju dažus portālus, [...]]]></description>
			<content:encoded><![CDATA[<p>Pirms trim gadiem, kad sāku interesēties par web aplikāciju izstrādi ar PHP ietvariem, izvēlējos apgūt <a title="zend framework" href="http://framework.zend.com/" target="_blank">Zend Framework</a>. Neskatoties uz tā spēcīgajām īpašībām, tomēr nācās secināt, ka, lai pielāgotu ietvaru izstrādājamās aplikācijās vajadzībām, nākas pavadīt visai padaudz laika lasot oficiālo Zend Framework dokumentāciju, kā arī regulāri meklēt risinājumus citos resursos. Ar Zend Framework izveidoju dažus portālus, interneta veikala sistēmu, kā arī vairākas mazākus web projektus, tomēr nepameta sajūta, ka pat vienkāršu lietu realizācijai ir jāpatērē pārāk daudz laika lasot dokumentāciju, kas ne vienmēr ir skaidri saprotama, kā arī citus resursus. Vēl pirms gada radās izdevība vienam projektam izmēģināt <a title="codeigniter" href="http://codeigniter.com/" target="_blank">Codeigniter</a>, veidojot sistēmu, kur bija jārealizē 5 atsevišķu domēnu darbība caur vienu kodu. Nevarētu teikt, ka arī Codeigniter būtiski paātrinātu aplikācijas izstrādi un izstrāde ar to būtu ļoti ērta un intuitīva. Izveidoju arī savu minimālisma stilā ieturēto <a title="php framework" href="http://www.itprojekti.lv/2009/09/28/kapec-butu-verts-izstradat-savu-php-ietvaru/" target="_self">MVC PHP ietvaru</a>, kas galvenokārt nodrošina koda dalīšanu slāņos pēc <a title="model view controller" href="http://www.itprojekti.lv/2009/12/14/model-view-controller-arhitekturas-principi-1-dala/" target="_self">Model View Controller</a> arhitektūras principiem, bet lielāko daļu funkcionalitātes atstājot citu veidotām PHP klašu bibliotēkām. Visos trīs gadījumos nepameta sajūta, ka ir jāraksta pārāk daudz koda standartlietu realizācijai, piemēram CRUD (<span style="text-decoration: underline;">C</span>reate, <span style="text-decoration: underline;">R</span>etrieve, <span style="text-decoration: underline;">U</span>pdate, and <span style="text-decoration: underline;">D</span>elete) funkcionalitātes nodrošināšanai, kā arī Zend Framework un Codeigniter, vadoties pēc dažādiem internetā atrodamajiem ātrdarbības testiem, ir visai resursprasīgi. Pirms neilga laika, meklējot ietvaru, kas gan paātrinātu aplikācijas izstrādes laiku, gan būtu ievērojami pārāks atrdarbības ziņā par Zend Framework, Codeigniter u.c. populārajiem PHP ietvariem, uzgāju pāris alternatīvas. Viena no tām bija DooPHP ietvars, par kuru jau <a title="doophp" href="http://www.itprojekti.lv/2009/12/23/doophp-iespejams-pasaule-atrakais-mvc-php-ietvars/" target="_self">rakstīju iepriekš</a>. Neskatoties, uz tā iespaidīgajiem ātrdarbības testiem, šķiet, ka šim jaunajam ietvaram vēl ir nepieciešams laiks, lai tas izaugtu par nopietnu palīgrīku, kas būtiski atvieglotu aplikāciju izstrādi. Otrs PHP ietvars, kas piesaistīja uzmanību, bija Yii Framework.</p>
<p><span id="more-272"></span></p>
<p><img class="aligncenter size-full wp-image-275" title="yii framework" src="http://www.itprojekti.lv/wp-content/uploads/2010/01/yii-framework.jpg" alt="" width="500" height="250" /></p>
<p><a title="yii framework" href="http://www.yiiframework.com" target="_self">Yii Framework</a> ir jauns PHP ietvars, kuru izveidojis <a title="prado framework" href="http://www.pradosoft.com/" target="_blank">Prado framework</a> izstrādes komandas bijušais dalībnieks Qiang Xue. Pirmā alfa versija tika izdota 2008. gada oktobrī un ieguvu lielu web izstrādātāju kopienas ieinteresētību, jo Yii ietvars pārspēja konkurējošos ietvarus ātrdarbībā, neskatoties uz to, ka piedāvāja līdzvērtīgas iespējas. Yii ietvarā JavaScript atbalstam tiek izmantota JQuery bibliotēka, tas ir ērtā veidā paplašināms ar <em>3rd party</em> klasēm, kā arī ar Yii Framework palīdzību ir iespēja ģenerēt aplikācijas kodu &#8211; ir nepieciešams tikai izveidot datu bāzi un no komandrindas izsaukt koda ģenerēšanas funkcijas, kas izveido būtisku daļu no aplikācijas funkcionalitātes. Yii Framework ir ietekmējies no vairākiem citiem populāriem ietvariem:</p>
<ul>
<li><a title="prado framework" href="http://www.pradosoft.com/" target="_blank">Prado </a>- šis ietvars ir galvenais ideju avots Yii Framework realizētajai arhitektūrai. Yii no Prado ir paņēmis komponentu bāzēto (component-based) un notikumu vadīto (event-driven) programmēšanas paradigmu, datu bāzes abstrakcijas slāni, modulāro aplikācijas arhitektūru, internacionalizāciju, lokalizāciju un daudzas citas īpašības.</li>
<li><a title="ruby on rails" href="http://www.rubyonrails.com/" target="_blank">Ruby on Rails</a> &#8211; Yii ir mantojis aplikācijas konfigurācijas paražas, kā arī <em>active record</em> dizaina šablonu.</li>
<li><a title="symfony framework" href="http://www.symfony-project.org/" target="_blank">Symfony</a> &#8211; no šī ietvara Yii ir īstenots filtru dizains un spraudņu (plug-in) arhitektūra</li>
<li><a title="joomla" href="http://www.joomla.org/" target="_blank">Joomla</a> &#8211; modulārais dizains un ziņojumu tulkošanas shēma</li>
</ul>
<p>Kā jau minēju, Yii piedāvā visai ievērojamu ātrdarbības pārākumu pār konkurējošiem PHP MVC ietvariem.  Tas ir panākts tādā veidā, ka Yii Framework arhitektūrā klašu faili netiek iekļauti līdz brīdim, kamēr klase tiek lietota pirmo reizi, kā arī objekti netiek veidoti līdz brīdim, kamēr nenotiek vēršanās pie tiem. Citos ietvaros būtisks ātrdarbības zudums rodas dēļ tā, ka katrā pieprasījumā tiek iekļauta arī tā funkcionalitātē, kas nav vienmēr nepieciešama, piemēram, datu bāzes konekcijas, sesiju atbalsts utt. Kā redzams zemāk esošaja attēlā, Yii ietvara ātrdarbības būtisks uzlabojums ir panākams, izmantojot <a title="apc" href="http://www.php.net/manual/en/book.apc.php" target="_blank">APC</a> paplašinājumu.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/yii-framework-jauns-daudzsoloss-mvc-php-ietvars/performance-20090131.png" title="" class="shutterset_singlepic14" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/14__520xfloat=_performance-20090131.png" alt="performance-20090131" title="performance-20090131" />
</a>

<p>Vēl no Yii Framework iespējām ir jāpiemin dizaina tēmu atbalsts, kas ļauj nomainīt aplikācijas izskatu vienā mirklī. Tāpat ir realizēta slāņota kešošanas shēma (layered caching scheme), kas nodrošina datu, lapu, fragmentu un dinamiska satura kešošanu. Kešinga uzglabāšanas vide var tikt viegli mainīta bez aplikācijas koda izmaiņām. Yii Framework izstrādātāji ir padomājuši arī par aplikāciju drošību, ieviešot dažādus aizsardzības mehānismus, piemēram, aizsardzību pret <em>cross site scripting</em> (XSS), <em>cross-site request forgery</em> (CSRF) u.c. izplatītākajām web aplikāciju ievainojamībām. Vēl ir jāpiemin tas, ka Yii ir atbalsts lietotāju veidotiem Yii ietvara <a title="yii extensions" href="http://www.yiiframework.com/extensions/" target="_blank">paplašinājumiem</a>, kas, līdzīgā veidā kā WordPress spraudņu (plugin) mehānisms, padara praktiski neierobežotu ietvara iespēju klāstu.</p>
<p>Vairāk par Yii Framework iespējām var atrast <a href="http://www.yiiframework.com/features/" target="_blank">šeit</a>.</p>
<p>Biežāk dzirdētais arguments ietvaru neizmantošanai ir tas, ka tie patērē liekus resursus, bet no otras puses ir jāpadomā tas, cik daudz no mūsu veidotajām aplikācijām ir tādas, kurām sagaidāmais apmeklējums ir tik milzīgs, ka ietvara darbībai esošie resursu patēriņš radīs nepieciešamību veikt tādus ieguldījumus serveru resursos, kurus nevarēsim atļauties. Manuprāt web aplikāciju izstrādātājiem lielākoties sanāk veidot aplikācijas, kur primārais ir tas, cik ātri un viegli mēs varam to realizēt, nevis panākt maksimāli iespējamā ātrdarbība un, ja tas ir tā, tad kāpēc gan neizmantot ietvarus, kas būtiski samazina rutīnas darbu, kā arī radina programmētājus pie labās programmēšanas prakses, piemēram, atdalot html izvadu no datu bāzes un biznesa loģikas slāņa, tādā veidā samazinot koda dublēšanos, kas nākotnē atvieglos projekta tālāku attīstību un iespēju arī kādam programmētājam no malas turpināt mūsu iesākto darbu.</p>
<p>Nobeigumā vēl maza karikatūra, kas lieliski raksturo to, kāpēc, veidojot aplikācijas kodu, būtu vērts vadīties pēc programmēšanas labās prakses.</p>
<p><img class="aligncenter size-full wp-image-276" title="wtf code" src="http://www.itprojekti.lv/wp-content/uploads/2010/01/wtf-code.jpg" alt="" width="500" height="453" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2010/01/10/yii-framework-jauns-daudzsoloss-mvc-php-ietvars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Barters &#8211; reāls risinājums krīzes pārvarēšanai</title>
		<link>http://www.itprojekti.lv/2009/12/30/barters-reals-risinajums-krizes-parvaresanai/</link>
		<comments>http://www.itprojekti.lv/2009/12/30/barters-reals-risinajums-krizes-parvaresanai/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 11:20:37 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Projekti]]></category>
		<category><![CDATA[Pārdomas]]></category>
		<category><![CDATA[barters]]></category>
		<category><![CDATA[bizness]]></category>
		<category><![CDATA[krīze]]></category>
		<category><![CDATA[maiņas tirdzniecība]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=255</guid>
		<description><![CDATA[Arvien vairāk esmu dzirdējis no pazīstamiem cilvēkim, kas strādā par freelanceriem vai kuriem pieder uzņēmums, ka pēdējā gada laikā barters jeb maiņas tirdzniecība tiek pielietota aizvien biežāk. Arī es esmu sācis praktizēt šo visai efektīvo līdzekli krīzes pārvarēšanai. Iedomāsimies, ka gribam realizēt web projektu x un ir nepieciešams profesionāls, oriģināls web dizains, kura cena ir, [...]]]></description>
			<content:encoded><![CDATA[<p>Arvien vairāk esmu dzirdējis no pazīstamiem cilvēkim, kas strādā par freelanceriem vai kuriem pieder uzņēmums, ka pēdējā gada laikā barters jeb maiņas tirdzniecība tiek pielietota aizvien biežāk. Arī es esmu sācis praktizēt šo visai efektīvo līdzekli krīzes pārvarēšanai.</p>
<p><span id="more-255"></span>Iedomāsimies, ka gribam realizēt web projektu x un ir nepieciešams profesionāls, oriģināls web dizains, kura cena ir, piemēram, 500 Ls. Pirmais veids, neizmantojot barteri, būtu tāds, ka mēs ar saviem pakalpojumiem, piemēram, programmēšanu, šos 500 Ls nopelnam, bet šādā veidā ceļš līdz mērķim (dizainam 500 Ls vērtībā) būs garāks, jo mums ir jāatrod klients, kam ir nepieciešami mūsu pakalpojumi, jāstrādā pie projekta un tad nopelnīto naudu varam samaksāt par mums nepieciešamo dizainu. Bartera veidā tas būtu daudz vienkāršāk &#8211; ir jāatrod dizaineris, kam ir nepieciešami mūsu programmēšanas pakalpojumi un jāstrādā uz pakalpojumu apmaiņas principa &#8211; 500 Ls vērti programmēšanas pakalpojumi apmaiņā pret 500 Ls vērta dizaina izstrādi. Tas ir tikai mazs maiņas tirdzniecības piemērs. Bez iepriekš minētā piemēra, es arī dažiem klientiem esmu sācis piedāvāt izstrādāt <a title="bezmaksas mājas lapa" href="http://www.itprojekti.lv/2009/12/23/ka-iegut-bezmaksas-majas-lapu-un-hostingu/" target="_self">bezmaksas mājas lapu</a>, kā arī nodrošināt <a title="bezmaksas hostings" href="http://www.itprojekti.lv/2009/12/23/ka-iegut-bezmaksas-majas-lapu-un-hostingu/" target="_self">bezmaksas hostingu</a>, apmaiņā pret iespēju izvietot šajā bezmaksas mājas lapā teksta saites.</p>
<p>Latvijā arī ir parādījušies vairāki projekti, kas piedāvā publicēt savus piedāvājumus maiņai.</p>
<p><a href="http://www.mainamies.lv" target="_blank">www.mainamies.lv</a> &#8211; Jāuzslavē labi realizētā iespēja redzēt, kas piedāvā mainīties tuvumā tavai dzīvesvietai. Mazais trūkums pašlaik šim projektam ir tas, ka nav izveidota sadaļa pakalpojumu maiņai, jo tieši tas ir būtiski daudziem uzņēmumiem.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/barters-reals-risinajums-krizes-parvaresanai/mainamies.png" title="" class="shutterset_singlepic12" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/12__500xfloat=center_mainamies.png" alt="mainamies" title="mainamies" />
</a>

<p><a href="http://www.dotspretdotu.lv" target="_blank">www.dotspretdotu.lv</a> &#8211; Atsevišķi atdalīti privātpersonu un uzņēmumu maiņas tirdzniecības sludinājumi. Izveidota sadaļa arī pakalpojumiem. Pārskatot sludinājumus rodas mazas problēmas, jo nevar uzreiz redzēt pret ko tiek piedāvāts mainīt konkrēto preci vai pakalpojumu, kā dēļ ir jāatvērt katrs sludinājums, kur to var apskatīt.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/barters-reals-risinajums-krizes-parvaresanai/dotspretdotu.png" title="" class="shutterset_singlepic11" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/11__500xfloat=center_dotspretdotu.png" alt="dotspretdotu" title="dotspretdotu" />
</a>

<p><a href="http://www.samaini.lv" target="_blank">www.samaini.lv</a> (<a href="http://www.barteris.lv" target="_blank">www.barteris.lv</a>) &#8211; Sludinājumu sarakstā uzskatāmi parādīts kas un pret ko tiek piedāvāts. Lietojot pirmajā brīdi rodas mazas neskaidrības ar kategoriju sadalījumu, piemēram, lai atrastu to, kas piedāvā pakalpojumu maiņu ir jāatver sadaļa Darbs-&gt;Intelektuālais darbs un tad kāda no sadaļām, bet pakalpojumu sludinājumus var atrast arī zem sadaļas Dažādi-&gt;Pakalpojumi, kurā ir jau citi pakalpojumu sludinājumi.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/barters-reals-risinajums-krizes-parvaresanai/samaini.png" title="" class="shutterset_singlepic13" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/13__500xfloat=center_samaini.png" alt="samaini" title="samaini" />
</a>

]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2009/12/30/barters-reals-risinajums-krizes-parvaresanai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rīki regulāro izteiksmju apgūšanai</title>
		<link>http://www.itprojekti.lv/2009/12/28/riki-regularo-izteiksmju-apgusanai/</link>
		<comments>http://www.itprojekti.lv/2009/12/28/riki-regularo-izteiksmju-apgusanai/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 10:07:45 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Programmas]]></category>
		<category><![CDATA[Programmēšana]]></category>
		<category><![CDATA[regular expressions]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=247</guid>
		<description><![CDATA[Regulārās izteiksmes (regular expressions) tiek plaši pielietotas programmēšanā teksta virkņu apstrādei. Tas noder, ja vēlamies atrast, salīdzināt vai pārveidot teksta virkni, piemēram, teksta virknē atrast visas saites un pārveidot tās, pieliekot klāt &#60;a&#62; tagu, vai arī pārliecināties, ka teksta virkne ir e-pasts utt. Neskatoties uz regulāro izteiksmju spēcīgajām iespējām, tās apgūt tomēr nav nemaz tik [...]]]></description>
			<content:encoded><![CDATA[<p>Regulārās izteiksmes (regular expressions) tiek plaši pielietotas programmēšanā teksta virkņu apstrādei. Tas noder, ja vēlamies atrast, salīdzināt vai pārveidot teksta virkni, piemēram, teksta virknē atrast visas saites un pārveidot tās, pieliekot klāt &lt;a&gt; tagu, vai arī pārliecināties, ka teksta virkne ir e-pasts utt. Neskatoties uz regulāro izteiksmju spēcīgajām iespējām, tās apgūt tomēr nav nemaz tik viegls uzdevums, it īpaši iesācējiem. Lai atvieglotu to apgūšanu, ir vērts izmantot kādu no regulāro izteiksmju rīkiem.</p>
<p><span id="more-247"></span><a title="RegExr" href="http://gskinner.com/RegExr/" target="_blank">RegExr</a> &#8211; rīks, kurā var atrast daudz un dažādus lietotāju iesūtītos regulāro izteiksmju šablonus, kā arī iesūtīt pats savus. Iespēja pārbaudīt ir ne tikai virkņu validāciju, bet arī izteiksmes virkņu pārveidošanu (replace).  Pieejama arī <a href="http://gskinner.com/RegExr/desktop/" target="_blank">Desktop aplikācija</a>.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/riki-regularo-izteiksmju-apgusanai/regular-expressions-large.png" title="" class="shutterset_singlepic7" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/7__500x_regular-expressions-large.png" alt="regular-expressions-large" title="regular-expressions-large" />
</a>

<p><a href="http://ryanswanson.com/regexp/" target="_blank">Flex 3 Regular Expressions Explorer</a> &#8211; Līdzīgi kā RegExr, arī šis rīks piedāvā jau vairākus gatavus regulāro izteiksmju šablonus, kā arī atverot kādu no tiem, ir redzami arī vairāki testa piemēri. Nav iespējas pārveidot teksta virknes pēc regulārās izteiksmes šablona.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/riki-regularo-izteiksmju-apgusanai/flex-3-regular-expression-explorer.png" title="" class="shutterset_singlepic6" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/6__500x_flex-3-regular-expression-explorer.png" alt="flex-3-regular-expression-explorer" title="flex-3-regular-expression-explorer" />
</a>

]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2009/12/28/riki-regularo-izteiksmju-apgusanai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DooPHP &#8211; iespējams pasaulē ātrākais MVC PHP ietvars</title>
		<link>http://www.itprojekti.lv/2009/12/23/doophp-iespejams-pasaule-atrakais-mvc-php-ietvars/</link>
		<comments>http://www.itprojekti.lv/2009/12/23/doophp-iespejams-pasaule-atrakais-mvc-php-ietvars/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 16:31:19 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Programmēšana]]></category>
		<category><![CDATA[doophp]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=225</guid>
		<description><![CDATA[Pēdējo gadu laikā, veidojot PHP web aplikācijas, par modes kliedzienu ir kļuvis izmantot kādu no daudzajiem ietvariem. Neskatoties uz to lieliskajām iespējām, bieži vien nepieciešamība pēc tiem tiek pārvērtēta. Vienkāršu aplikāciju izveidei tiek izvēlēts kāds ļoti universāls, bet salīdzinoši lēns ietvars. Šādu stratēģiju nereti varētu pielīdzināt šaušanai ar lielgabalu pa zvirbuļiem. Pēdējā laikā ir parādījušies [...]]]></description>
			<content:encoded><![CDATA[<p>Pēdējo gadu laikā, veidojot PHP web aplikācijas, par modes kliedzienu ir kļuvis izmantot kādu no daudzajiem ietvariem. Neskatoties uz to lieliskajām iespējām, bieži vien nepieciešamība pēc tiem tiek pārvērtēta. Vienkāršu aplikāciju izveidei tiek izvēlēts kāds ļoti universāls, bet salīdzinoši lēns ietvars. Šādu stratēģiju nereti varētu pielīdzināt šaušanai ar lielgabalu pa zvirbuļiem. Pēdējā laikā ir parādījušies vairāki <a href="http://www.itprojekti.lv/2009/12/14/model-view-controller-arhitekturas-principi-1-dala/" target="_blank">Model View Controller</a> PHP ietvari, kuru prioritāte ir nevis universālums, bet gan veiktspēja. Viens no tādiem jaunajiem censoņiem ir arī <a href="http://doophp.com/" target="_blank">DooPHP</a> ietvars.</p>
<p><span id="more-225"></span></p>
<h1>DooPHP ātrdabība</h1>
<p>Vairums ietvaros ir mēģināts realizēt visu iespējamo, tie ir pārpilni ar visdažādākajiem spraudņiem un komponentēm, tiek pat mēģināts automātiski ģenerēt publiski pieejamo aplikācijas daļu (frontend). DooPHP nav centies iet šo ceļu &#8211; DooPHP ietvarā netiek nekas lieks ielādēts, tikai nepieciešamās lietas, lai tiktu uzģenerēta lapa. Attēlā var aplūkot šī ietvara izstrādātāju ātrdarbības testus salīdzinājumā ar citiem PHP ietvariem.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/doophp/doophp_benchmark_comparison.png" title="" class="shutterset_singlepic5" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/5__500xfloat=_doophp_benchmark_comparison.png" alt="doophp_benchmark_comparison" title="doophp_benchmark_comparison" />
</a>

<p>Pie testiem interesanti ir arī apskatīties stresa testēšanas veiktspēju katram no ietvaram, kas tika salīdzināti. Testā tika padoti vienlaicīgi ik pēc laika 1000 pieprasījumi (kopā 10000 pieprasījumi) un salīdzināts apstrādāto pieprasījumu skaits 30 sekundēs. Stresa testēšanas rezultāti:</p>
<ul>
<li><strong>DooPHP</strong> &#8211; kopā apstrādāti <strong>6757</strong> pieprasījumi</li>
<li><strong>CakePHP</strong> &#8211; kopā apstrādāti <strong>685</strong> pieprasījumi</li>
<li><strong>Yii</strong> &#8211; kopā apstrādāti <strong>2315</strong> pieprasījumi</li>
<li><strong>CodeIgniter</strong> &#8211; kopā apstrādāti <strong>2107</strong> pieprasījumi</li>
<li><strong>QeePHP</strong> &#8211; kopā apstrādāts <strong>1780</strong> pieprasījums</li>
</ul>
<p>Vairāk par DooPHP ātrdarbības testiem &#8211; <a href="http://doophp.com/benchmark" target="_blank">http://doophp.com/benchmark</a></p>
<h1>DooPHP funkcionalitāte</h1>
<p>Kaut gan DooPHP prioritāte ir ātrdarbība, nav atstātas novārtā arī cita būtiska ietvara funkcionalitāte:</p>
<ul>
<li><a href="http://www.itprojekti.lv/2009/12/14/model-view-controller-arhitekturas-principi-1-dala/" target="_self">Model View Controller</a> arhitektūra</li>
<li>URI maršrutēšana (routing)</li>
<li>I18n</li>
<li>Centrālā konfigurācija</li>
<li>Datubāzes ORM rīki</li>
<li>HTTP autentifikācija</li>
<li>Autorizācija</li>
<li>Kešošana (caching)</li>
<li><a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">RESTful</a> API</li>
<li><em>Templating </em>sistēma</li>
<li>Koda ģenerēšanas iespēja</li>
<li>Atbalsts Ajax projektiem</li>
</ul>
<p>Lai sāktu apgūt DooPHP ietvaru, var sākt ar <a href="http://doophp.com/doc/guide" target="_blank">šo</a> ievadu, kā arī noteikti noderēs izstrādātāju veidotais <a href="http://learn.doophp.com/" target="_blank">blogs</a>, kurā viegli uztveramā veidā tiek pastāstīts, kā veidot aplikācijas ar DooPHP. Tajā ir atrodamas pamacības ne tikai jau oficiāli iznākušajām versijām, bet arī jaunākajai <a href="http://doophp.googlecode.com/svn/trunk/" target="_blank">izstrādes versijai</a>, kuru var lejupielādēt ar kādu no SVN rīkiem, piemēram, es izmantoju <a href="http://tortoisesvn.tigris.org/" target="_blank">Tortoise SVN</a>. Oficiāli iznākušajām versijām ir pieejams arī <a href="http://doophp.com/docs/api" target="_blank">API</a>.</p>
<p style="text-align: left;">Šeit var apskatīt mazu piemēru, kāda veidā DooPHP notiek lapas kartes (sitemap) un <em>controller </em>klašu ģenerēšana:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6069049&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=6069049&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h1>Secinājumi</h1>
<p>DooPHP ietvars pagaidām ir tikai dažus mēnešus jauns (pirmā oficiālā versija 1.0 tika izlaista 2009. gada jūlijā), tomēr tā izvēlētais ceļš ir pietiekami daudzsološs un atšķirīgs no universālo PHP ietvaru (<a href="http://framework.zend.com/" target="_blank">Zend Framework</a>, <a href="http://www.symfony-project.org/" target="_blank">Symfony</a> u.c.) principiem. Lai rastos skaidrāks priekštats par ietvara lietošanas ērtumu, kādu no nākamajiem web projektiem centīšos realizēt izmantojot tieši DooPHP ietvaru.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 17px; width: 1px; height: 1px;">kopā 10000 pieprasījumi,</div>
]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2009/12/23/doophp-iespejams-pasaule-atrakais-mvc-php-ietvars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kā iegūt bezmaksas mājas lapu un hostingu?</title>
		<link>http://www.itprojekti.lv/2009/12/23/ka-iegut-bezmaksas-majas-lapu-un-hostingu/</link>
		<comments>http://www.itprojekti.lv/2009/12/23/ka-iegut-bezmaksas-majas-lapu-un-hostingu/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:28:54 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Projekti]]></category>
		<category><![CDATA[barters]]></category>
		<category><![CDATA[bezmaksas]]></category>
		<category><![CDATA[hostings]]></category>
		<category><![CDATA[mājas lapas]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=217</guid>
		<description><![CDATA[Pēdējā laikā esmu daudz redzējis reklāmas Latvijā, par to, ka mājas lapas izstrāde tiek piedāvāta par ļoti zemām cenām, bet nereti ir situācijas, kad sākotnēji ieguldīt mājas lapā pat 100 Ls, kādam var šķist par daudz. Tāpēc nesen pāris paziņām piedāvāju izveidot mājas lapu par brīvu, kā arī nodrošināt bezmaksas hostingu uz bartera nosacījumiem. Šis [...]]]></description>
			<content:encoded><![CDATA[<p>Pēdējā laikā esmu daudz redzējis reklāmas Latvijā, par to, ka mājas lapas izstrāde tiek piedāvāta par ļoti zemām cenām, bet nereti ir situācijas, kad sākotnēji ieguldīt mājas lapā pat 100 Ls, kādam var šķist par daudz. Tāpēc nesen pāris paziņām piedāvāju izveidot mājas lapu par brīvu, kā arī nodrošināt bezmaksas hostingu uz bartera nosacījumiem.</p>
<p><span id="more-217"></span>Šis barters ir sekojošs &#8211; es palīdzu izveidot mājas lapu, blogu, interneta veikalu cenā līdz 100 Ls, kā arī  izvietoju uz servera šo mājas lapu, neprasot par to samaksu, bet, apmaiņā pret to, šinī mājas lapā izvietoju vairākas teksta saites (līdz 15) uz citām lapām. Rezultātā klients tiek pie bezmaksas mājas lapas un hostinga, savukārt mans ieguvums ilgtermiņā ir tāds, ka,  izvietojot saites citās mājas lapās, iegūstu iespēju celt atslēgvārdu Google pozīcijas saviem un citiem projektiem. Ja kādu ir ieinteresējusi iespēja šādā bartera veidā tikt pie bezmaksas mājas lapas (vai 100 Ls atlaides) un bezmaksas hostinga, tad ar mani var sazināties izmantojot šo kontaktformu:</p>
[contact-form]
]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2009/12/23/ka-iegut-bezmaksas-majas-lapu-un-hostingu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Screenpresso: programma ekrānuzņēmumiem (screenshots)</title>
		<link>http://www.itprojekti.lv/2009/12/23/screenpresso-programma-ekranuznemumiem-screenshots/</link>
		<comments>http://www.itprojekti.lv/2009/12/23/screenpresso-programma-ekranuznemumiem-screenshots/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 09:31:51 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Programmas]]></category>
		<category><![CDATA[bezmaksas]]></category>
		<category><![CDATA[screenpresso]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=209</guid>
		<description><![CDATA[Screenpresso ir maza un vienkārša, bezmaksas programmiņa, kas būtiski uzlabo Prt Scr funkcionalitāti. Darbojoties ar to, vienkāršu uzdevumu veikšanai vairs nebūs nepieciešams uzņemto attēlu vajadzīgās daļas izgriezt (crop) kādā no attēlu apstrādes programmām, jo tā sevī jau ietver šo funkcionalitāti. Tāpat ir iespēja mainīt attēla izmēru, kā arī pielikt bildei efektus. Vēl ikdienas darbu lieliski [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.screenpresso.com" target="_blank">Screenpresso</a> ir maza un vienkārša, bezmaksas programmiņa, kas būtiski uzlabo <em>Prt Scr</em> funkcionalitāti. Darbojoties ar to, vienkāršu uzdevumu veikšanai vairs nebūs nepieciešams uzņemto attēlu vajadzīgās daļas izgriezt (<em>crop</em>) kādā no attēlu apstrādes programmām, jo tā sevī jau ietver šo funkcionalitāti. Tāpat ir iespēja mainīt attēla izmēru, kā arī pielikt bildei efektus.</p>
<p><span id="more-209"></span>Vēl ikdienas darbu lieliski atvieglo <em>drag&#8217;n'drop</em> iespēja ar citām programmām, piemēram, pēdējos 100 ekrānuzņēmumus, kas tiek saglabāti vēsturē, varu uzreiz ievietot Open Office dokumentā, vai pievienot e-pasta pielikumā Outlook vai kādā citā e-pasta klienta programmā. Ja vēlamies iegūt ekrānuzņēmumus no kādas tīmekļa vietnes pilnā garumā, tad noderēs Image Stich iespēja &#8211; vairākus ekrānuzņēmumus ar vienādiem izmēriem savienot vienā bildē. Lejupielādēt šo programmu var <a href="http://www.screenpresso.com/download.html" target="_blank">šeit</a>.</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/screenpresso/history.png" title="" class="shutterset_singlepic4" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/4__337xfloat=_history.png" alt="history" title="history" />
</a>

]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2009/12/23/screenpresso-programma-ekranuznemumiem-screenshots/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ko darīt, ja no WordPress nevar nosūtīt e-pastus uz inbox.lv</title>
		<link>http://www.itprojekti.lv/2009/12/22/ko-darit-ja-no-wordpress-nevar-nosutit-e-pastus-uz-inbox-lv/</link>
		<comments>http://www.itprojekti.lv/2009/12/22/ko-darit-ja-no-wordpress-nevar-nosutit-e-pastus-uz-inbox-lv/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 15:14:06 +0000</pubDate>
		<dc:creator>Aigars</dc:creator>
				<category><![CDATA[Padomi]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.itprojekti.lv/?p=196</guid>
		<description><![CDATA[Pēdējā gada laikā ir sanācis ir sanācis vairāk padarboties ar WordPress platformu, ko esmu izmantojis arī kā CMS vairākiem projektiem, bet pēdējā projektā, kurā bija nepieciešams realizēt lietotāju reģistrāciju, atklājās problēma, ka WordPress sūtītos e-pastus nepieņem inbox.lv, delfi.lv u.c. Latvijas e-pasta servisi. Šo problēmu izdevās atrisināt pavisam vienkārši &#8211; konfigurēju WordPress instalāciju, lai e-pasti tiktu [...]]]></description>
			<content:encoded><![CDATA[<p>Pēdējā gada laikā ir sanācis ir sanācis vairāk padarboties ar WordPress platformu, ko esmu izmantojis arī kā CMS vairākiem projektiem, bet pēdējā projektā, kurā bija nepieciešams realizēt lietotāju reģistrāciju, atklājās problēma, ka WordPress sūtītos e-pastus nepieņem inbox.lv, delfi.lv u.c. Latvijas e-pasta servisi.</p>
<p><span id="more-196"></span>Šo problēmu izdevās atrisināt pavisam vienkārši &#8211; konfigurēju WordPress instalāciju, lai e-pasti tiktu sūtīti caur SMTP serveri, piemēram, Gmail. Šī mērķa sasniegšanai var izmantot jau gatavus risinājumus, piemēram, <a href="http://wordpress.org/extend/plugins/hgk-smtp/" target="_blank"><strong>HGK SMTP</strong></a> spraudni. Kad tas uzstādīts, tad atliek vien to nokonfigurēt:</p>

<a href="http://www.itprojekti.lv/wp-content/gallery/ko-darit-ja-no-wordpress-nevar-nosutit-e-pastu-uz-inbox-lv/untitled.png" title="" class="shutterset_singlepic3" >
	<img class="ngg-singlepic" src="http://www.itprojekti.lv/wp-content/gallery/cache/3__520x_untitled.png" alt="untitled" title="untitled" />
</a>

<p>Gmail konta vietā var rakstīt arī e-pasta adresi no domēna, kas pieslēgts <a href="http://www.google.com/apps/" target="_blank">Google Apps</a>, piemeram, info@mansuznemums.lv.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itprojekti.lv/2009/12/22/ko-darit-ja-no-wordpress-nevar-nosutit-e-pastus-uz-inbox-lv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
