<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>danield.ro</title>
	
	<link>http://www.danield.ro</link>
	<description />
	<pubDate>Thu, 28 May 2009 11:26:16 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/mnsblogverde" type="application/rss+xml" /><item>
		<title>Dezabonare newsletter</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/YrPZs8xqIv4/</link>
		<comments>http://www.danield.ro/2009/05/25/dezabonarea-newsletter/#comments</comments>
		<pubDate>Mon, 25 May 2009 15:39:27 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category><![CDATA[dezabonare]]></category>

		<category><![CDATA[newsletter]]></category>

		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.danield.ro/?p=310</guid>
		<description><![CDATA[Comandand in urma cu cateva saptamani Don&#8217;t Make Me Think, am devenit foarte curios fata de cum este tratat acest subiect la noi (edit: de usability vorbeam, dar am uitat sa mentionez), dar intamplarea pe care am avut-o cu dezabonarea la newsletter-ul Diverta Online, mi-a dat de inteles ca mai avem multe de invatat. Sa [...]]]></description>
			<content:encoded><![CDATA[<p>Comandand in urma cu cateva saptamani <a title="Don't make me think" href="http://okian.ro/shop/product/index.php?product_id=278845">Don&#8217;t Make Me Think</a>, am devenit foarte curios fata de cum este tratat acest subiect la noi (edit: de usability vorbeam, dar am uitat sa mentionez), dar intamplarea pe care am avut-o cu dezabonarea la newsletter-ul Diverta Online, mi-a dat de inteles ca mai avem multe de invatat. Sa luam un exemplu concret:</p>
<ul>
<li>vrei sa te dezabonezi de la newsletter, vezi un link de dezabonare:</li>
</ul>
<p style="text-align: center;"><a href="http://www.danield.ro/wp-content/uploads/2009/05/dzbn1.png"><img class="size-medium wp-image-311 aligncenter" title="dzbn1" src="http://www.danield.ro/wp-content/uploads/2009/05/dzbn1-300x53.png" alt="dzbn1" width="300" height="53" /></a></p>
<ul>
<li>ajungi la pagina dorita si iti dai seama ca trebuie sa completezi un intreg formular, formular care iti afiseaza o eroare la submit</li>
</ul>
<h3 style="text-align: center;"><a href="http://www.danield.ro/wp-content/uploads/2009/05/dzbn2.png"><img class="aligncenter size-medium wp-image-312" title="dzbn2" src="http://www.danield.ro/wp-content/uploads/2009/05/dzbn2-300x184.png" alt="dzbn2" width="300" height="184" /></a></h3>
<p><span id="more-310"></span></p>
<h3>De ce vei ajunge sa-ti enervezi clientul</h3>
<p>Textul din email e &#8220;acceseaza acest link si completeaza formularul cu datele tale&#8221;, stim bine ca nimeni nu are chef si timp sa-si introduca datele de acces la site, in cazul in care nu le-a si uitat deja.</p>
<p>In momentul in care dai click pe link ajungi la pagina cu formularul de contact al magazinului online. Aici sunt total pierdut, nu mai stiu care e legatura dintre un formular de contact, deasupra caruia scrie: &#8220;Nu gasesti produsul dorit? Ai nevoie de ajutor la plasarea comenzii pe Diverta Online ? Nimic mai simplu! Ne poti contacta atat telefonic si prin email, iar noi iti vom raspunde in cel mai scurt timp.&#8221;, si faptul ca eu vreau sa ma dezabonez de la newsletter.</p>
<h3>Dar&#8230;</h3>
<p>Formularul nu-ti cere datele de login. Nu le cere, dar din textul din email asta reiese. Omul se gandeste ca va trebui sa completeze un formular, se enerveaza si renunta.</p>
<p>Scrie clar in textul din email ca trebuie sa completezi formularul si la campul mesaj trebuie introdus &#8220;dezabonare&#8221;. Problema e ca nimeni nu citeste un text pana la capat, mai ales cand e vorba de o actiune. Un user vede un link pe care scrie ceea ce cauta, in cazul dezabonare si nu merge mai departe, astfel, in cazul de fata, ajungi la un formular de contact ca sa ce?</p>
<h3>Nu e mai simplu sa&#8230;</h3>
<p>Faci tot posibilul ca utilizatorul sa aiba o experienta cat mai placuta la tine pe site? Ce e mai placut, 10 abonati nervosi care nu vor sa mai auda de magazinul tau, sau 5 oameni multumiti de faptul ca sunt respectati, oameni ce probabil vor mai reveni?</p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/YrPZs8xqIv4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/05/25/dezabonarea-newsletter/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/05/25/dezabonarea-newsletter/</feedburner:origLink></item>
		<item>
		<title>WYSIWYG, or is it?</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/UnPgeKXLs5M/</link>
		<comments>http://www.danield.ro/2009/05/14/wysiwyg-or-is-it/#comments</comments>
		<pubDate>Thu, 14 May 2009 15:15:04 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[La intamplare]]></category>

		<guid isPermaLink="false">http://www.danield.ro/?p=303</guid>
		<description><![CDATA[Cred ca absolut toate solutiile de publicare a continutului, site-urile, aplicatiile online, in special Wordpress, se folosesc de editoare WYSISYG (what you see is what you get). Cel mai intalnit editor e TinyMCE de la Moxiecode, e usor de implementat, usor de customizat si usor de folosit.
Daaaaarrrrrr, dupa cum scrie si pe site-ul oficial, acesta [...]]]></description>
			<content:encoded><![CDATA[<p>Cred ca absolut toate solutiile de publicare a continutului, site-urile, aplicatiile online, in special Wordpress, se folosesc de editoare WYSISYG (what you see is what you get). Cel mai intalnit editor e TinyMCE de la Moxiecode, e usor de implementat, usor de customizat si usor de folosit.</p>
<p>Daaaaarrrrrr, dupa cum scrie si pe site-ul oficial, acesta este un editor WYSIWYG, problema este ca niciodata ceea ce vezi nu este ceea ce vei obtine, asta pentru ca in toate editoarele continutul, adica ceea ce editezi este o pagina alba cu font negru, in timp ce pagina pe care vei publica articolul are o cu totul alta infatisare.</p>
<p><span id="more-303"></span>Asadar, mai sunt editoare WYSIWYG? Nu spun ca ar trebui ca editorul sa prezinte pagina exact asa cum va fi ea publicata, dar in unele cazuri e foarte folositor sa incerci sa vezi dinainte live (nu folosind un preview) cum arata textul introdus.</p>
<p>TinyMCE ofera posibilitatea de a incarca un css cu stilul continutului editorului, astfel ca nu trebuie decat sa iei stilul paginii finale, il coafezi putin si il trimiti la TinyMCE, astfel ai un editor WYSIWYG in adevaratul sens al cuvantului.</p>
<p style="text-align: center;"><a href="http://www.danield.ro/wp-content/uploads/2009/05/editor.png"><img class="size-thumbnail wp-image-306 alignnone" title="editor" src="http://www.danield.ro/wp-content/uploads/2009/05/editor-150x150.png" alt="Textul in editor" width="150" height="150" /></a> <a href="http://www.danield.ro/wp-content/uploads/2009/05/pagina.png"><img class="size-thumbnail wp-image-307 alignnone" title="pagina" src="http://www.danield.ro/wp-content/uploads/2009/05/pagina-150x150.png" alt="Textul in pagina" width="150" height="150" /></a></p>
<p>Nu e mai ok asa?</p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/UnPgeKXLs5M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/05/14/wysiwyg-or-is-it/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/05/14/wysiwyg-or-is-it/</feedburner:origLink></item>
		<item>
		<title>OpenCoffee 37</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/eEYT3ZBCCLs/</link>
		<comments>http://www.danield.ro/2009/04/24/opencoffee-37/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 21:43:03 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category><![CDATA[fixee]]></category>

		<category><![CDATA[lucky 7]]></category>

		<category><![CDATA[opencoffe]]></category>

		<guid isPermaLink="false">http://www.danield.ro/?p=297</guid>
		<description><![CDATA[Am ajuns in sfarsit inapoi la Arad, am fost dimineata la Opencoffe 37 unde am facut o scurta prezentare a ceea ce vrea sa fie (in curand) fixee. Din punctul meu de vedere a meritat drumul, am avut ocazia sa ma aflu printre multi oameni cu idei bune si care au facut lucruri importante in [...]]]></description>
			<content:encoded><![CDATA[<p>Am ajuns in sfarsit inapoi la Arad, am fost dimineata la <a title="Opencoffe 37" href="http://www.opencoffee.ro/a-fost-opencoffee-37/">Opencoffe 37</a> unde am facut o scurta prezentare a ceea ce vrea sa fie (in curand) fixee. Din punctul meu de vedere a meritat drumul, am avut ocazia sa ma aflu printre multi oameni cu idei bune si care au facut lucruri importante in online-ul romanesc.</p>
<p>Grupul de feedback format din  <a href="http://www.bobbyvoicu.ro/">Bobby</a>, <a href="http://fusu.ro/">Calin</a>, <a href="http://www.ecostin.com/">Costin</a> + <a href="http://www.spinu.ro/">Viorel</a> a parut putin dur, mai ales cu startul in forta pe care l-au avut cu dailysport.ro, dar avand in vedere ca toti au o anumita experienta e normal sa nu fie la fel de entuziasmati de proiectele pe care le-au vazut (in aceeasi masura cu persoanele care le-au prezentat) si sa aiba o parere obiectiva fata de ceea ce li s-a pus in fata. Eu ma bucur de feedback-ul si sfaturile primite si sper sa nu trec prea usor peste ele.</p>
<p>Mai multe despre OpenCoffee: <a href="http://themindstorms.blogspot.com/2009/04/lucky-7-we-want-to-see-blood.html">Lucky 7: We want to see blood</a>,  <a href="http://www.scarlatescu.ro/2009/04/23/lucky-7-la-opencoffee-proiector-de-idei/">Lucky 7 la Opencoffee</a> si <a href="http://www.arenabiz.ro/lucky-7-reloaded-la-open-coffee/">Lucky 7 reloaded la Opencoffe</a>.</p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/eEYT3ZBCCLs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/04/24/opencoffee-37/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/04/24/opencoffee-37/</feedburner:origLink></item>
		<item>
		<title>Joi la Opencoffee</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/-kyu598AwaA/</link>
		<comments>http://www.danield.ro/2009/04/21/joi-la-opencoffe/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 20:24:27 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://www.danield.ro/?p=293</guid>
		<description><![CDATA[Yey, fixee a intrat printe cele 7 proiecte norocoase de la Opencoffee, asadar, joi sunt la Bucuresti. Mai multe detalii despre fixee de joi incolo.  
]]></description>
			<content:encoded><![CDATA[<p>Yey, <a title="fixee" href="http://greentempo.com/fixee/">fixee</a> a intrat printe cele 7 proiecte norocoase de la <a title="Opencofee" href="http://www.opencoffee.ro/">Opencoffee</a>, asadar, joi sunt la Bucuresti. Mai multe detalii despre fixee de joi incolo. <img src='http://www.danield.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/-kyu598AwaA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/04/21/joi-la-opencoffe/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/04/21/joi-la-opencoffe/</feedburner:origLink></item>
		<item>
		<title>Ș si ț in linkurile Wordpress</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/TSuOnA9hv9w/</link>
		<comments>http://www.danield.ro/2009/04/16/s-si-t-in-linkurile-wordpress/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 11:02:16 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category><![CDATA[Programare]]></category>

		<guid isPermaLink="false">http://www.danield.ro/?p=285</guid>
		<description><![CDATA[Datorita unui mesaj de pe Twitter mi-am adus azi aminte de problema aparitiei caracterelor Șș si Țț in linkurile posturilor, categoriilor si tagurilor din Wordpress.
Probabil pentru ca nu prea au fost folosite in trecut, cei de la Wordpress probabil au uitat de ele, astfel, cei ce folosesc caracterele corecte pentru s si t (cele cu [...]]]></description>
			<content:encoded><![CDATA[<p>Datorita unui mesaj de pe Twitter mi-am adus azi aminte de problema aparitiei caracterelor Șș si Țț in linkurile posturilor, categoriilor si tagurilor din Wordpress.</p>
<p>Probabil pentru ca nu prea au fost folosite in trecut, cei de la Wordpress probabil au uitat de ele, astfel, cei ce folosesc caracterele corecte pentru s si t (cele cu virgula sub) pot avea unele probleme.</p>
<p>Am incercat sa fac un plugin, dar nu am reusit sa-l fac sa mearga si pentru slug-urile de la categorii si taguri, asadar postez aici o solute mult mai simpla:</p>
<ul>
<li>deschidedti wp-includes/formatting.php</li>
<li>cautati &#8220;<strong>/Euro sign</strong>&#8221; sau functia &#8220;<strong>remove accents</strong>&#8221; (in ultima versiune de Wordpress, randul 277)</li>
<li>adaugati cele 2 linii de cod deasupra &#8220;/Euro sign&#8221;:</li>
</ul>
<pre class="brush: php">chr(200).chr(152) =&gt; 'S', chr(200).chr(153) =&gt; 's',
chr(200).chr(154) =&gt; 'T', chr(200).chr(155) =&gt; 't',</pre>
<p>Acum nu ar mai trebui sa aveti probleme cu ș si ț.</p>
<p><strong>Edit: Nu folositi aceasta metoda daca aveti deja posturi, categorii si taguri ce contin caracterele ș si ț (asta daca nu vreti sa le editati pe toate), o solutie: <a href="http://scribu.net/util/link-uri-fara-diacritice-in-wordpress.html" target="_blank">aici</a>.</strong></p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/TSuOnA9hv9w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/04/16/s-si-t-in-linkurile-wordpress/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/04/16/s-si-t-in-linkurile-wordpress/</feedburner:origLink></item>
		<item>
		<title>e-licitatie.ro si Firefox</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/AOMFNh5bf7w/</link>
		<comments>http://www.danield.ro/2009/04/15/e-licitatiero-si-firefox/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 21:33:48 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://www.danield.ro/?p=276</guid>
		<description><![CDATA[Trecand peste modul greoi in care se poate folosi Sistemul electronic de achizitii publice (e-licitatie.ro), am vrut sa vad daca ma pot loga in sistem folosind Firefox. Nu stiu daca pur si simplu sunt eu putin mai incet si nu mi-am dat seama ce trebuie facut, dar mi-a luat putin timp pana sa rezolv problema.
Sa [...]]]></description>
			<content:encoded><![CDATA[<p>Trecand peste modul greoi in care se poate folosi Sistemul electronic de achizitii publice (e-licitatie.ro), am vrut sa vad daca ma pot loga in sistem folosind Firefox. Nu stiu daca pur si simplu sunt eu putin mai incet si nu mi-am dat seama ce trebuie facut, dar mi-a luat putin timp pana sa rezolv problema.</p>
<p>Sa zicem ca certificatele au fost instalate cu succes in Windows (urmand pasii si sfaturile din ghidul de instalare de la e-licitatie), dar in Firefox inca nu se poate accesa pagina de logare.</p>
<p><span id="more-276"></span></p>
<p>Asadar, tot ce trebuie facute este sa se importe certificatul descarcat (fisierul .p12) in Firefox: Options - &gt; Advanced -&gt; View Certificates -&gt; Your Certificates -&gt; Import -&gt; Selectat fisierul .p12 -&gt; Introdus Parola si gata. De acum se va putea accesa pagina de login si in Firefox.</p>
<p style="text-align: center;"><a href="http://www.danield.ro/wp-content/uploads/2009/04/seap1.png"><img class="alignnone size-thumbnail wp-image-277" title="seap1" src="http://www.danield.ro/wp-content/uploads/2009/04/seap1-150x150.png" alt="seap1" width="150" height="150" /></a> <a href="http://www.danield.ro/wp-content/uploads/2009/04/seap2.png"><img class="alignnone size-thumbnail wp-image-278" title="seap2" src="http://www.danield.ro/wp-content/uploads/2009/04/seap2-150x150.png" alt="seap2" width="150" height="150" /></a> <a href="http://www.danield.ro/wp-content/uploads/2009/04/seap3.png"><img class="alignnone size-thumbnail wp-image-279" title="seap3" src="http://www.danield.ro/wp-content/uploads/2009/04/seap3-150x150.png" alt="seap3" width="150" height="150" /></a></p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/AOMFNh5bf7w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/04/15/e-licitatiero-si-firefox/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/04/15/e-licitatiero-si-firefox/</feedburner:origLink></item>
		<item>
		<title>Simple PHP Cache</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/3cqV2_xQ6G8/</link>
		<comments>http://www.danield.ro/2009/03/26/simple-php-cache/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 23:14:37 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[Programare]]></category>

		<guid isPermaLink="false">http://www.danield.ro/?p=259</guid>
		<description><![CDATA[Avand in vedere ca  nu am mai avut chef sa lucrez in seara asta, m-am gandit sa postez despre o chestie la care am lucrat in trecut si care, cel putin in cazul meu, mi-a fost de folos.
Este vorba de o solutie simpla si home-made de a face cache la anumite date in PHP. Cel [...]]]></description>
			<content:encoded><![CDATA[<p>Avand in vedere ca  nu am mai avut chef sa lucrez in seara asta, m-am gandit sa postez despre o chestie la care am lucrat in trecut si care, cel putin in cazul meu, mi-a fost de folos.</p>
<p>Este vorba de o solutie simpla si home-made de a face cache la anumite date in PHP. Cel mai simplu exemplu ar fi urmatorul: ai o pagina cu un articol, pagina respectiva se modifica destul de rar, dar e accesata destul de des. Ce rost ar avea sa preiei/procesezi din nou informatiile de fiecare data cand e accesata pagina, cand ai putea sa salvezi datele si sa le trimiti direct catre partea ce se ocupa cu afisarea lor. Sper sa nu gresesc, dar daca am vorbi despre o arhitectura <a title="MVC" href="http://en.wikipedia.org/wiki/Model-view-controller">Model-View-Controller</a> in PHP, practic sari in mare parte peste Model.</p>
<p><span id="more-259"></span>Stiu ca exista solutii gata facute pentru cache, majoritatea framework-urilor au asa ceva, exista un pachet PEAR pentru cache, dar cred ca e mai fun sa incerci sa faci unele chestii de unul singur, poti invata multe lucruri noi si poti sa controlezi fiecare aspect a ceea ce vrei sa realizezi.</p>
<p>Revenind acum la subiectul principal. Deoarece am avut nevoie de o solutie simpla de a face cache la anumite pagini, am facut cu ceva timp in urma o clasa destul de simpla ce permite sa stochez informatiile pe care le afisez, fara a le mai mesteca inca o data.</p>
<blockquote><p>(1. Vreau pagina x) -&gt; (2.1. Macina datele primite -&gt; 2.2 Returneaza datele) -&gt; (3. Afiseaza continutul)</p></blockquote>
<p>Schema de mai sus putem spune ca e ceea ce se intampla in mod normal. Punctul 2. este de obicei cel care consuma si foloseste cele mai multe resurse. Cred ca deja se poate vedea directia pe care vreau sa merg. De ce nu am incerca sa scoatem punctul 2.1? Nu are rost ca acelasi proces sa se repete de foarte multe ori, mai ales cand datele returnate sunt aceleasi. Ce facem mai departe? Luam datele &#8220;macinate&#8221;, le salvam, iar data viitoare cand vom mai avea nevoie de ele, le luam direct din cache, fara a mai repeta inca o data procesul cel mai greoi.</p>
<p style="text-align: left;">Solutia a fost destul de eficienta pentru mine. Nu am testat chiar atat de serios si nu am testat eficienta decat pe un computer de test, dar rezultatul a fost destul de satisfacator.<img class="size-full wp-image-263 aligncenter" title="Grafic performanta" src="http://www.danield.ro/wp-content/uploads/2009/03/imagine.png" alt="Grafic performanta" width="450" height="320" /></p>
<p style="text-align: left;">Primele doua valori din grafic nu sunt reprezentative, deoarece am testat la rece sistemul, nici varful acela de la seria fara cache. Cu toate acestea, este clar ca la prima accesare, in cazul de fata, momentul in care s-au salvat datele in cache, timul de procesare si afisare a paginii a fost mai ridicat, dar pe parcurs, facandu-se media, se poate vedea ca solutia a fost eficienta.</p>
<p style="text-align: left;">Clasa are 3 metode principale: constructorul, get si set, care sunt prezentate pe scurt mai jos.</p>
<p>In <strong>constructor</strong>, in cazul in care exista date de configurare (directorul, timeout si active), luam datele si le salvam, apoi se verifica daca putem scrie in directorul in care salvam fisierele, daca nu se poate, nu se poate. <img src='http://www.danield.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush: php">public function __construct($config = array()) {
		if (count($config)) {
			foreach($config as $var =&gt; $value)
				if (in_array($var, $this-&gt;config))
					$this-&gt;$var = $value;
		}

		if (!is_writable($this-&gt;dir)) {
			throw new Exception('Cache directory not writable.');
			$this-&gt;active = false;
		}
	}</pre>
<p><strong>set()</strong> e folosita pentru a salva datele. Se verifica daca id-ul este ok, mai verificam directorul in care scriem, verificam si daca putem sa scriem fisierul si salvam datele. Nimic mai simplu.</p>
<pre class="brush: php">public function set($id, $data) {
		if (!$this-&gt;active)
			return false;

		$this-&gt;data = $data;

		if (preg_match("/(^[a-zA-Z0-9_-]{3,64}$)/", $id)) {
			$cache_file = $this-&gt;dir.$id;
		} else {
			throw new Exception('Invalid cache ID');
			return false;
		}

		if (!is_dir($this-&gt;dir)) {
			throw new Exception('Cache directory not available');
			return false;
		}
		else {
			if (!$handle = fopen($cache_file, 'w')) {
				throw new Exception('Cannot open file');
				return false;
			}
			else {
				if (fwrite($handle, serialize($this-&gt;data))===false) {
					throw new Exception('Cannot write to file');
					return false;
				}
				fclose($handle);
			}
		}

		return true;
	}</pre>
<p><strong>get()</strong> e folosita pentru a prelua datele de cache. Facem din nou niste verificari, daca fisierul exista si e valid (din punct de vedere al timeout-ului), preluam datele si le returnam.</p>
<pre class="brush: php">public function get($id) {
		if (!$this-&gt;active)
			return false;

		if (preg_match("/(^[a-zA-Z0-9_-]{3,64}$)/", $id)) {
			$cache_file=$this-&gt;dir.$id;
		} else {
			throw new Exception('Invalid cache ID');
			return false;
		}
		if (($this-&gt;active)&amp;&amp;(file_exists($cache_file))) {
			if ((time()-filemtime($cache_file))&gt;($this-&gt;timeout*60)) {
				unlink($cache_file);
				return false;
			}

			$this-&gt;data = unserialize(@file_get_contents($cache_file));
			$this-&gt;hit++;
			return $this-&gt;data;
		}
	}</pre>
<p>Am sa postez si un mic exemplu, care poate parea cam greoi, ca si cum ai omora o musca cu pusca, dar nu mi-a venit pe moment o idee de un exemplu mai complex.</p>
<pre class="brush: php">function salut() {
	$mesaj = "Salut, uite ora la care m-au executat :". date("Y-m-d H:i:s");

	return $mesaj;
}

try {
	$cache = new Cache();

	if (!$mesaj = $cache-&gt;get("f-salut")) {
		$mesaj = salut();
		$cache-&gt;set("f-salut", $mesaj);
	}

	echo $mesaj;
} catch (Exception $e) {
    echo 'Ceva n-a mers: '. $e-&gt;getMessage();
}</pre>
<p>Clasa, impreuna cu un exemplu, poate fi downloadata de aici: <a title="Cache" href="http://greentempo.com/funbox/simplecache/Cache.zip">PHP Simple Cache</a>. Un exemplu live poate fi gasit <a title="Cache" href="http://greentempo.com/funbox/simplecache/">aici</a>, dar e cu doua ore in urma pentru ca am uitat sa setez fusul orar <img src='http://www.danield.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . In exemplul respectiv se poate vedea data la care a fost geneerat fisierul de cache, data se actualizeaza la fiecare 15 minute, adica la durata de viata setata in acest moment pentru cache.</p>
<p>In cazul in care cineva are sugestii, critici sau orice fel de comentarii, le primesc pe toate cu placere. <img src='http://www.danield.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/3cqV2_xQ6G8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/03/26/simple-php-cache/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/03/26/simple-php-cache/</feedburner:origLink></item>
		<item>
		<title>Gmail rocks</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/-Tjdo_BYyZw/</link>
		<comments>http://www.danield.ro/2009/03/11/gmail-rocks/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 20:17:25 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.danield.ro/2009/03/11/gmail-rocks/</guid>
		<description><![CDATA[Mi-am dat seama astazi cat de mult imi place Gmail si cat de folositor poate sa fie. Mai are niste probleme din cand in cand, dar este un serviciu gratuit si probabil cel mai bun si simplu webmail din cate exista.
Ceea ce m-a luminat azi in legatura cu Gmail a faptul ca aveam nevoie de [...]]]></description>
			<content:encoded><![CDATA[<p>Mi-am dat seama astazi cat de mult imi place Gmail si cat de folositor poate sa fie. Mai are niste probleme din cand in cand, dar este un serviciu gratuit si probabil cel mai bun si simplu webmail din cate exista.</p>
<p>Ceea ce m-a luminat azi in legatura cu Gmail a faptul ca aveam nevoie de un curs mai vechi din facultate. Cum au trecut mai bine de 3 ani de atunci, printre cursurile tiparite nu le-am gasit pe cele de care aveam nevoie, cu toate ca nu tin minte sa le fi aruncat, iar documentele &#8220;electronice&#8221; sunt pierdute in mare ede CD-uri de backup.</p>
<p>Revenind la Gmail, mi-am adus aminte ca foloseam mailul pentru a-mi trimite si salva aplicatiile de laborator, astfel am gasit nu numai toate cursurile de care aveam nevoie, dar si exercitiile si aplicatiile facute la scoala si am reusit astfel sa calculez ca folosind diferite sisteme de affiliate marketing, poti castiga intr-o luna bani pentru a manca zilnic cate un iaurt Muller Bianco. <img src='http://www.danield.ro/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Asadar, cu un singur search am gasit mailuri vechi de 3 ani si niste documente pe care altfel le-as fi pierdut si nu as fi avut ocazia de a ma juca acum cu tot felul de formule sexy de statistica <img src='http://www.danield.ro/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . M-am uitat acum mai atent si am observat ca am mailuri chiar din 2004, toate stand frumos ordonate intr-un inbox fara SPAM, odihnindu-se acolo in cei &#8220;314 MB (4%) of your 7304 MB&#8221;.</p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/-Tjdo_BYyZw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/03/11/gmail-rocks/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/03/11/gmail-rocks/</feedburner:origLink></item>
		<item>
		<title>Linkuri curate</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/VYQI552jrw8/</link>
		<comments>http://www.danield.ro/2009/01/28/pretul-bananelor-a-explodat/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 15:32:51 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category><![CDATA[Programare]]></category>

		<guid isPermaLink="false">http://www.danield.ro/2009/01/28/linkuri-curate/</guid>
		<description><![CDATA[In urma cu cativa ani circulau tot felul de linkuri catre articole in care puteai sa introduci numele cuiva, facand din respectiva persoana personajul principal intr-o stire jenanta (violator de oi, campion mondial la masturbare etc).
Ce legatura are asta cu titlul postului si ceea ce va urma mai jos? Nimic mai simplu. Majoritatea site-urilor din [...]]]></description>
			<content:encoded><![CDATA[<p>In urma cu cativa ani circulau tot felul de linkuri catre articole in care puteai sa introduci numele cuiva, facand din respectiva persoana personajul principal intr-o stire jenanta (violator de oi, campion mondial la masturbare etc).</p>
<p>Ce legatura are asta cu titlul postului si ceea ce va urma mai jos? Nimic mai simplu. Majoritatea site-urilor din ziua de azi folosesc o structura a linkurilor cat mai sugestiva, in mare parte din cauza considerentelor legate de SEO, astfel, un link catre un articol despre cultivarea bananelor in America de Sud poate sa se prezinte in felul urmator:</p>
<p><span id="more-253"></span></p>
<blockquote><p><a href="http://www.example.com/articol/cultivarea-bananelor-in-america-de-sud/">http://www.example.com/articol/cultivarea-bananelor-in-america-de-sud/</a></p></blockquote>
<p>Avantajele principale sunt date de faptul ca linkul pare foarte curat si usor de inteles pentru oameni si poate sa te ajute in cazul motoarelor de cautare. Pe langa exemplul general pe care l-am dat mai sus, pot sa existe multe alte versiuni si posibilitati de a folosi aceasta tehnica, in unele cazuri este des intalnit si un id numeric al articolului, linkul devenind:</p>
<blockquote><p><a href="http://www.example.com/articol/cultivarea-bananelor-in-america-de-sud-127538/">http://www.example.com/articol/cultivarea-bananelor-in-america-de-sud-127538/</a></p></blockquote>
<p>De ce se intampla asta? In momentul in care trebuie sa preiei elementul din locul in care il ai stocat, ai nevoie de un identificator unic al acestuia. In cazul in care sunt folosite baze de date, totul e relativ simplu si te folosesti de sistemul prin care ai o cheie unica ce se autoincrementeaza la fiecare element nou. In cazul in care se foloseste doar un id de acest gen poti da de linkuri de genul:</p>
<blockquote><p><a href="http://www.example.com/articol/218793/">http://www.example.com/articol/218793/</a></p>
<p><a href="http://www.example.com/articol?96735">http://www.example.com/articol?96735</a></p></blockquote>
<p>Linkurile sunt mai scurte, dar nu foarte sugestive pentru un om pentru ca nu are de unde sa stie despre ce e vorba in pagina respectiva. Aceasta metoda, chiar daca este cea mai simpla si cea mai usor de implementat, din punctul meu de vedere lasa de dorit.</p>
<p>Revenind la cel de-al doilea exemplu, care e un compromis relativ bun intre celelalte doua variante, aceste, daca nu este implementat corect, poate duce la unele situatii comice si neplacute pentru unele site-uri.</p>
<blockquote><p><a href="http://www.example.com/articol/cultivarea-bananelor-in-america-de-sud-127538/">http://www.example.com/articol/cultivarea-bananelor-in-america-de-sud-127538/</a></p></blockquote>
<p>Revenind la exemplul prezentat mai sus, de multe ori cand se foloseste atat titlul curatat al articolului, cat si un id, nu se mai verifica ce apare in titlu, care este pus acolo doar din motive de forma, nu si de fond, astfel, o pagina despre eventualul imprumut FMI acordat Romaniei poate sa dea impresia ca e despre pretul bananelor, dupa cum arata si exemplele de mai jos:</p>
<blockquote><p><a title="http://economie.hotnews.ro/stiri-finante_banci-5367467-pretul-bananelor-a-scazut-in-raport-cu-valoarea-leului.htm" href="http://economie.hotnews.ro/stiri-finante_banci-5367467-pretul-bananelor-a-scazut-in-raport-cu-valoarea-leului.htm">http://economie.hotnews.ro/stiri-finante_banci-5367467-pretul-bananelor-a-scazut-in-raport-cu-valoarea-leului.htm</a></p>
<p><a title="http://www.evz.ro/articole/detalii-articol/837528/Criza-producatorilor-de-odorizante-wc/" href="http://www.evz.ro/articole/detalii-articol/837528/Criza-producatorilor-de-odorizante-wc/">http://www.evz.ro/articole/detalii-articol/837528/Criza-producatorilor-de-odorizante-wc/</a></p>
<p><a title="http://www.gandul.info/actualitatea/basescu-urmareste-cu-interes-fluctuatiile-de-pe-piata-bananelor.html?3927;3812675" href="http://www.gandul.info/actualitatea/basescu-urmareste-cu-interes-fluctuatiile-de-pe-piata-bananelor.html?3927;3812675">http://www.gandul.info/actualitatea/basescu-urmareste-cu-interes-fluctuatiile-de-pe-piata-bananelor.html?3927;3812675</a></p>
<p><a title="http://www.realitatea.net/sindicalistii-din-domeniul-bananifer-in-greva_445547.html" href="http://www.realitatea.net/sindicalistii-din-domeniul-bananifer-in-greva_445547.html">http://www.realitatea.net/sindicalistii-din-domeniul-bananifer-in-greva_445547.html</a></p></blockquote>
<p>Pe langa faptul ca poti schimba acel parametru dupa cum doresti, site-urile returneaza in mod normal pagina corect, chiar daca acela nu mai este un link-ul normal al respectivei pagini. Nu stiu daca acest lucru poate avea un impact in cazul unui google bombing, dar nu este  normal sa ai un numar nelimitat de linkuri incorecte catre o singura pagina.</p>
<p>Solutia in cazul de fata este sa se faca o verificare atat a titlului cat si a id-ului. Cei de la GSP, de exemplu, fac acest lucru iar in cazul in care schimbi titlul din link, te redirectioneaza catre pagina normala.</p>
<p>Metoda cea mai eleganta este, insa, folosirea doar a titlului curatat al paginii respective. Acest lucru este putin mai greu de realizat deoarece trebuie parcursi urmatorii pasi:</p>
<ol>
<li>inlocuirea/scoaterea caracterelor neprietenoase (diacritice, caractere speciale, spatiu etc)</li>
<li>generarea unui titlu unic pentru fiecare element in parte (acest lucru se poate rezolva relativ usor cu o expresie regulata si una sau doua verificari)</li>
</ol>
<p>Beneficiile acestei metode sunt relative la prima vedere, dar cu timpul isi vor face simtita prezenta:</p>
<ol>
<li>daca folosesti un sistem unitar de organizare, poti crea o structura foarte simpla si usor de citit a intregului site</li>
<li>persoanele interesate pot afla dinainte despre ce e vorba in respectiva pagina</li>
<li>in cazul browserelor, introducand un cuvant din titlu sau link in bara de adresa, poti cauta foarte simplu prin istoria paginilor vizitate, gasind mult mai repede o pagina interesanta vizitata in trecut</li>
</ol>
<p>Pe final, un lucru destul de important este acela ca in momentul in care si o singura litera sau cifra din link este schimbata, linkul in sine schimbandu-se intr-un link ce duce catre o pagina inexistenta, este foarte bine ca pagina sa returneze un mesaj de eroare 404.</p>
<p>Am insistat pe aspectul unor linkuri curate si usor de citit pentru ca mi-a ramas in minte ceea ce a spus un profesor in facultate: cu timpul, masinile (in cazul de fata, computerele) trebuie sa inteleaga si sa invete sa comunice in limbajul natural, nu omul sa invete sa stapaneasca limbajul masina.</p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/VYQI552jrw8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2009/01/28/pretul-bananelor-a-explodat/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2009/01/28/pretul-bananelor-a-explodat/</feedburner:origLink></item>
		<item>
		<title>Stop spam-ului hipermarketurilor</title>
		<link>http://feedproxy.google.com/~r/mnsblogverde/~3/_ZZqcWa1Wp4/</link>
		<comments>http://www.danield.ro/2008/12/09/stop-spam-ului-hipermarketurilor/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 19:02:06 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
		
		<category><![CDATA[La intamplare]]></category>

		<guid isPermaLink="false">http://www.danield.ro/2008/12/09/stop-spam-ului-hipermarketurilor/</guid>
		<description><![CDATA[Nu ma refer la spam electronic, ci la o varianta clasica a mesajelor nesolicitate. In ultimele luni am inceput sa primit tot mai multe oferte si reviste cu oferte din partea hipermarketurilor din Arad, dar ce au facut azi cei de la Carrefour a intrecut orice limita. Am primit un fel de revista din partea [...]]]></description>
			<content:encoded><![CDATA[<p>Nu ma refer la spam electronic, ci la o varianta clasica a mesajelor nesolicitate. In ultimele luni am inceput sa primit tot mai multe oferte si reviste cu oferte din partea hipermarketurilor din Arad, dar ce au facut azi cei de la Carrefour a intrecut orice limita. Am primit un fel de revista din partea lor, dar nu una, ci vreo 5, care impreuna cred ca sunt la fel de groase ca o carte de telefon. Pe langa faptul ca incearca sa le indese in cutiile postale chiar daca nu este loc, mai lasa o parte din pliante si in fata casei pe jos.</p>
<p>Chestiile astea se intampla din ce in ce mai des, principalii vinovati fiind Carrefour, Kaufland, Plus si Praktiker.</p>
<p>Ce s-ar putea face? As vrea sa ne strangem cat mai multi oameni si sa adunam toate ofertele pe care le-am primit din partea respectivelor magazine. In momentul in care avem un sac sau doi de oferte, ca si cetateni model ce suntem, sa le ducem pliantele inapoi, deoarece nu mi se pare normal sa pastrez ceva ce nu este al meu. In cazul asta ajutam magazinele sa recicleze, astfel, vor putea sa retrimita ofertele mai departe, fara sa consume hartie, fara sa fie taiati pomi. In acest fel vor putea si sa renunte la cativa biti din mesajele de email (imaginea cu semnatura verde aka nu printa acest mail, salveaza un pom) reducand astfel consumul de energie necesar pentru transmiterea unui email si emisiile de noxe rezultate in urma procesului prin care se produce respectiva energie.</p>
<img src="http://feeds.feedburner.com/~r/mnsblogverde/~4/_ZZqcWa1Wp4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danield.ro/2008/12/09/stop-spam-ului-hipermarketurilor/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.danield.ro/2008/12/09/stop-spam-ului-hipermarketurilor/</feedburner:origLink></item>
	</channel>
</rss>
