<?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"?><!-- generator="wordpress/2.2" --><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/" version="2.0">

<channel>
	<title>Bogdan's Developer Blog</title>
	<link>http://bogdan.designlabs.ro/blog</link>
	<description />
	<pubDate>Mon, 29 Jun 2009 01:27:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BogdansDeveloperBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="bogdansdeveloperblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>To localize or not to localize</title>
		<link>http://bogdan.designlabs.ro/blog/2009-05-21-to-localize-or-not-to-localize/</link>
		<comments>http://bogdan.designlabs.ro/blog/2009-05-21-to-localize-or-not-to-localize/#comments</comments>
		<pubDate>Thu, 21 May 2009 15:58:15 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Developer]]></category>
<category>Developer</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2009-05-21-to-localize-or-not-to-localize/</guid>
		<description><![CDATA[  
Note: You can rate this post by visiting the site.
 ]]></description>
			<content:encoded><![CDATA[<p> <img src="http://bogdan.designlabs.ro/blog/wp-content/to-localize-or-not-to-localize.png" title="Localizare în uTorrent" alt="Localizare în uTorrent" width="425" height="120" /></p>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/_dgq3ax6Scc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2009-05-21-to-localize-or-not-to-localize/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rezoluții pentru noul an</title>
		<link>http://bogdan.designlabs.ro/blog/2008-12-29-rezolutii-pentru-noul-an/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-12-29-rezolutii-pentru-noul-an/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 19:13:48 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Personal]]></category>
<category>Personal</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-12-29-new-years-resolutions/</guid>
		<description><![CDATA[ 
să obțin permisul de conducere (cred că e chestia pe care am tărăgănat-o cel mai mult vreodată);
să trec pe un post de programator C sau Java (preferabil C);
să îmi fac mai mult timp pentru proiecte personale;
să călătoresc mai mult; să văd Timișoara și Clujul (de mult îmi propun să merg în partea aia de țară);
să [...] ]]></description>
			<content:encoded><![CDATA[<ul>
<li>să obțin permisul de conducere (cred că e chestia pe care am tărăgănat-o cel mai mult vreodată);</li>
<li>să trec pe un post de programator C sau Java (preferabil C);</li>
<li>să îmi fac mai mult timp pentru proiecte personale;</li>
<li>să călătoresc mai mult; să văd Timișoara și Clujul (de mult îmi propun să merg în partea aia de țară);</li>
<li>să termin facultatea cu bine (se înțelege).</li>
</ul>
<p>Aș mai putea scrie câte ceva, dar acestea sunt obiective realizabile&#8230;</p>
<p><strong>Sănătate și putere de muncă pentru 2009! La mulți ani!</strong></p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/yuJTvBPaIgU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-12-29-rezolutii-pentru-noul-an/feed/</wfw:commentRss>
		</item>
		<item>
		<title>15 reguli de ortografie și punctuație</title>
		<link>http://bogdan.designlabs.ro/blog/2008-10-29-15-reguli-de-ortografie-si-punctuatie/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-10-29-15-reguli-de-ortografie-si-punctuatie/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 22:21:10 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Articole]]></category>
<category>Articole</category><category>indexable</category><category>limba romana</category><category>ortografie</category><category>punctuatie</category><category>Uncategorized</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-10-29-15-reguli-de-ortografie-si-punctuatie/</guid>
		<description><![CDATA[  Am citit foarte multe materiale de-a lungul timpului și nu m-am putut opri să nu observ greșelile, care erau, deseori, aceleași.
Așa că am decis să compilez aici, câteva reguli de care țin cont atunci când redactez un text. Nu am pretenția să le fi menționat pe toate, nefiind un savant în acest domeniu, nici [...] ]]></description>
			<content:encoded><![CDATA[<p> Am citit foarte multe materiale de-a lungul timpului și nu m-am putut opri să nu observ greșelile, care erau, deseori, aceleași.</p>
<p>Așa că am decis să compilez aici, câteva reguli de care țin cont atunci când redactez un text. Nu am pretenția să le fi menționat pe toate, nefiind un savant în acest domeniu, nici nu am intenționat (neapărat) o ordine a importanței prin așezarea lor. Sunt doar câteva recomandări de bun simț, aș zice, revenind fiecărui cititor decizia respectării lor. Multe dintre ele au fost menționate încă din ciclul primar sau din gimnaziu.</p>
<ol>
<li>Se pune spațiu după orice semn de punctuație; semnele „-“ și „/“ sunt încadrate de spații, pentru claritate: este bine să fie textul cât mai degajat, să se poată citi ușor; se pune spațiu înainte de a începe un bloc de cuvinte cuprins între paranteze;</li>
<li>Nu se pun mai multe spații între cuvinte decât este nevoie (unul singur adică);</li>
<li>Propoziția începe cu litera mare (chiar și într-o enumerație, nefiind totuși o regulă) și se termină cu punct;</li>
<li>Nu pune virgulă înainte de <em>etc.</em>; de fapt, sunt multe alte cazuri în care trebuie evitată folosirea virgulei, de exemplu, înainte de o propoziție atributivă (vezi sintaxa frazei);</li>
<li>Nu omite semne de punctuație în situațiile în care acestea sunt alăturate (cum a fost sus, punctul după <em>etc.</em> și apoi „;“ care încheia ideea);</li>
<li>Nu abunda în prescurtări (în general, acestea nu se folosesc în textele literare), dar dacă le folosești, nu uita să le succezi cu „.“;</li>
<li>Nu folosi scrierea cu cifre pentru numeralele de la unu la zece, o sută, o mie ș.a.m.d.; la fel, <em>al treilea</em> și nu <em>al 3-lea</em>;</li>
<li>Când ai o prescurtare cum este <em>ș.a.m.d.</em>, nu uita ultimul punct (de exemplu, foarte întâlnit în CV-uri, este să scrii, <em>S.R.L</em> - ce, dupa <em>L</em>, nu trebuie punct, daca ai pus la celelalte?);</li>
<li>Nu uita că semnul de punctuație „puncte de suspensie“ are trei astfel de puncte, nu două sau mai multe (să scrii .. sau &#8230;&#8230;&#8230;.. este urât, neglijent); evident, după semnele de suspensie se pune spațiu (vezi prima regulă);</li>
<li>Când ai o enumerație, se pune „;“ după fiecare element al listei și „.“ după ultimul element al listei;</li>
<li>Dacă folosești numele unui brand, folosește ortografierea proprie a brand-ului (de exemplu, eMAG și nu Emag sau EMAG);</li>
<li>Dacă ai un link, este ideal ca linia subliniată să fie doar sub cuvintele care formează link-ul și „<a href="http://bogdan.designlabs.ro/blog/" target="_blank"> nu așa</a>“ (este neglijență);</li>
<li>Dacă ai un cuvânt împrumutat din alta limbă care nu este încă suficient de bine sudat în limba română, articularea se face cu cratimă, de exemplu, <em>site-ul</em> și  nu <em>siteul</em>; la fel, când ai substantive proprii, articolul hotărât este antepus: <em>lui Alicia</em> și nu <em>Aliciei</em>;</li>
<li>Folosește noile reguli impuse de DOOM, de exemplu, <em>nicio</em> în loc de <em>nici o</em> (nici eu nu le știu pe toate astea, era vorba la un moment dat ca Academia Română să publice un fel de diff-patch);</li>
<li>Poți folosi diacritice (am zis-o ca pe o recomandare, lăsând să se înțeleagă că precedentele sunt chiar mai importante decât asta). Cititorul tău va semnala și aprecia prezența lor.</li>
</ol>
<p>Să <em>scriți</em> bine!</p>
<p><strong>Later edit</strong>:</p>
<ol start="16">
<li>În limba română, ghilimelele care trebuie folosite sunt „ “ (ghilimea jos, apoi ghilimea sus). În plus, este, preferată folosirea ghilimelelor răsucite, în ciuda celor drepte (o recomandare pe care am citit-o mai de demult într-un articol adresat în special scriitorilor de content pe web).</li>
<li>La finalul abrevierilor, nu se pune punct dacă ultima literă / secvență coincide cu finalul cuvântului abreviat.</li>
</ol>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/QTolJxDkbYA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-10-29-15-reguli-de-ortografie-si-punctuatie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Profile în Firefox</title>
		<link>http://bogdan.designlabs.ro/blog/2008-06-19-profile-in-firefox-worry-less/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-06-19-profile-in-firefox-worry-less/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 23:56:00 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Tehnologie]]></category>
<category>configuration</category><category>firefox</category><category>mozilla firefox</category><category>profil firefox</category><category>profile manager</category><category>Tehnologie</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-06-19-profile-in-firefox-worry-less/</guid>
		<description><![CDATA[  Pentru cei stresaţi înainte de fiecare reinstall de Windows să facă backup la tot ce se poate, puteţi muta din start profilul Firefox pe o partiţie pe care nu o wipe out la reinstalare.
După ce te-ai asigurat că Firefox este închis, poţi reloca profilul Firefox editând:
%APPDATA%\Mozilla\Firefox\Profiles\profiles.ini
La secţiunea Profile0, schimbă Path cu o nouă cale [...] ]]></description>
			<content:encoded><![CDATA[<p> Pentru cei stresaţi înainte de fiecare reinstall de Windows să facă backup la tot ce se poate, puteţi muta din start profilul Firefox pe o partiţie pe care nu o wipe out la reinstalare.</p>
<p>După ce te-ai asigurat că <strong>Firefox este închis</strong>, poţi reloca profilul Firefox editând:</p>
<div style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">%APPDATA%\Mozilla\Firefox\Profiles\profiles.ini</div>
<p>La secţiunea <code>Profile0</code>, schimbă <code>Path</code> cu o nouă cale pe care ai creat-o pe alta partiţie, iar <code>Name</code> cu numele ultimului director din cale. Iată un exemplu, după schimbare:</p>
<div style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">[General]<br />
StartWithLastProfile=1<br />
[Profile0]<br />
Name=firefox.default<br />
IsRelative=0<br />
Path=D:\config\firefox.default<br />
Default=1
</div>
<p>Pentru a finaliza mutarea, copiază toate fişierele din vechea locaţie <code>Path</code> în noua locaţie, <code>D:\config\firefox.default</code>, de exemplu. Dacă deja te-ai grăbit, directorul iniţial era ceva de genul <code>Profiles\xxxxxxxx.default</code>, la calea amintită mai sus.</p>
<p>Există un <a href="http://support.mozilla.com/en-US/kb/Managing+profiles" title="Managing profiles" target="_blank">Profile Manager</a>, dar mai mult te complici - tot va trebui să get dirty şi să copiezi manual fişierele profilului. El se deschide aşa:
</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px"> firefox.exe -ProfileManager</p>
<p>Ca un best practice, în acel <code>/config/</code>, poţi reloca şi alte fişiere de configurare - ini-urile lui Total Commander, semnătura din Thunderbird etcetera.</p>
<p><em>Succes!</em></p>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/aj697TrFatA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-06-19-profile-in-firefox-worry-less/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Boicot la Download Day!?</title>
		<link>http://bogdan.designlabs.ro/blog/2008-05-29-boicot-la-download-day/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-05-29-boicot-la-download-day/#comments</comments>
		<pubDate>Thu, 29 May 2008 11:59:55 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[De pe web]]></category>

		<category><![CDATA[Events]]></category>
<category>De pe web</category><category>download day</category><category>Events</category><category>firefox</category><category>firefox world record</category><category>firefox3</category><category>marketing</category><category>messenger</category><category>mozilla</category><category>spread firefox</category><category>worldrecord</category><category>yahoo</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-05-29-boicot-la-download-day/</guid>
		<description><![CDATA[  Download Day este zi de sărbătoare: Mozilla lansează Firefox 3! O campanie a fost lansată pe www.spreadfirefox.com/worldrecord cu scopul de a înscrie acest moment în Cartea Recordurilor ca ziua cu cele mai multe download-uri ale unui software. Recunosc că este o iniţiativă de marketing foarte interesantă, şi asta când Firefox are cota de piaţă [...] ]]></description>
			<content:encoded><![CDATA[<p> <a href="http://www.spreadfirefox.com/worldrecord/" title="Firefox 3 Download Day 2008" target="_blank">Download Day</a> este zi de sărbătoare: Mozilla lansează Firefox 3! O campanie a fost lansată pe <a href="http://www.spreadfirefox.com/worldrecord" title="Firefox 3 Download Day 2008" target="_blank">www.spreadfirefox.com/worldrecord</a> cu scopul de a înscrie acest moment în Cartea Recordurilor ca ziua cu cele mai multe download-uri ale unui software. Recunosc că este o iniţiativă de marketing foarte interesantă, şi asta când Firefox are cota de piaţă mai bună ca oricând.</p>
<p>Astăzi am stat 10 minute să îmi setez statusul la Yahoo! Messenger cu URL-ul mai sus menţionat ca să ajut la răspândit vorba, dar nu a mers (menţionez ca oricare alt URL sau string obişnuit este setat fără probleme). Iniţial am crezut că este un lag, până m-am prins că nu. Am rugat colegi cu sisteme de operare diferite (respectiv, OS X şi Ubuntu), deci clienţi de messenger diferiţi, fără niciun succes! Nu pot să cred decât într-un complot; vedeţi şi voi, înainte de a mă acuza de teoria conspiraţiei! <img src="http://bogdan.designlabs.ro/blog/wp-includes/images/smilies/icon_biggrin.gif" class="wp-smiley" style="border: 0px; padding: 0px;" />.</p>
<p>Soluţia este să daţi click pe imaginea de mai jos şi să vă înscrieţi e-mail-ul (<em>Pledge Now!</em>), pentru a fi anunţaţi când vine the day of downloads! <img src="http://bogdan.designlabs.ro/blog/wp-includes/images/smilies/icon_smile.gif" class="wp-smiley" style="border: 0px; padding: 0px;" /></p>
<p><a href="http://www.spreadfirefox.com/en-US/worldrecord"><img src="http://www.spreadfirefox.com/sites/all/themes/spreadfirefox_RCS/images/download-day/buttons/en-US/468x60_dday.png" alt="Download Day 2008" title="Download Day 2008" style="border: 0px none ; margin: 0px; padding: 0px" border="0" /></a></p>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/NTtUqhhffD8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-05-29-boicot-la-download-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Îmi iau bicicletă!</title>
		<link>http://bogdan.designlabs.ro/blog/2008-05-26-imi-iau-bicicleta/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-05-26-imi-iau-bicicleta/#comments</comments>
		<pubDate>Mon, 26 May 2008 20:52:53 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Personal]]></category>
<category>Personal</category><category>Uncategorized</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-05-26-imi-iau-bicicleta/</guid>
		<description><![CDATA[  Dar înca nu m-am hotărât:

sau

Acum zău, chiar îmi caut . E genul de alegere cu care mă confrunt, în general, când îmi cumpăr o componentă sau un sistem nou.
Note: You can rate this post by visiting the site.
 ]]></description>
			<content:encoded><![CDATA[<p> Dar înca nu m-am hotărât:</p>
<p><a href="http://flickr.com/photos/kittenclaw/57737595/" target="_blank" title="Black Label's Bike Kill on Flickr"><img src="http://farm1.static.flickr.com/31/57737595_ab30a3f810.jpg?v=0" title="Black Label's Bike Kill on Flickr" alt="Black Label's Bike Kill on Flickr" border="0" height="500" hspace="0" vspace="0" width="423" /></a></p>
<p>sau</p>
<p><a href="http://flickr.com/photos/automatt/119508538" target="_blank" title="Tall Bike on Flickr"><img src="http://farm1.static.flickr.com/37/119508538_3fc70310ac.jpg?v=0" title="Tall Bike on Flickr" alt="Tall Bike on Flickr" border="0" height="500" hspace="0" vspace="0" width="461" /></a></p>
<p>Acum zău, chiar îmi caut <img src="http://bogdan.designlabs.ro/blog/wp-includes/images/smilies/icon_biggrin.gif" class="wp-smiley" style="border: 0px; padding: 0px;" />. E genul de alegere cu care mă confrunt, în general, când îmi cumpăr o componentă sau un sistem nou.</p>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/kUWp5HN2-tE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-05-26-imi-iau-bicicleta/feed/</wfw:commentRss>
		</item>
		<item>
		<title>De ce ţi-e frică nu scapi</title>
		<link>http://bogdan.designlabs.ro/blog/2008-05-20-de-ce-ti-e-frica-nu-scapi/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-05-20-de-ce-ti-e-frica-nu-scapi/#comments</comments>
		<pubDate>Tue, 20 May 2008 09:13:29 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Personal]]></category>
<category>Personal</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-05-20-de-ce-ti-e-frica-nu-scapi/</guid>
		<description><![CDATA[  &#8230; ca de exemplu, să-mi uit charger-ul de la laptop acasă. A fost suficient să mă gândesc ieri la asta (deja îmi pun vreo 3-4 memento-uri pentru dimineaţă ca să mă trezesc, alarma nefiind îndeajuns — când mă gândeam aseară de ce nu mi-aş pune şi pentru charger, surprins fiind că nu l-am uitat [...] ]]></description>
			<content:encoded><![CDATA[<p> &#8230; ca de exemplu, să-mi uit charger-ul de la laptop acasă. A fost suficient să mă gândesc ieri la asta (deja îmi pun vreo 3-4 memento-uri pentru dimineaţă ca să mă trezesc, alarma nefiind îndeajuns — când mă gândeam aseară de ce nu mi-aş pune şi pentru charger, surprins fiind că nu l-am uitat niciodată până acum), iar azi în metrou, în drum spre serviciu, mi-am adus aminte că nu l-am luat&#8230; <img src="http://bogdan.designlabs.ro/blog/wp-includes/images/smilies/icon_smile.gif" class="wp-smiley" style="border: 0px; padding: 0px;" />.</p>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/XX__unNb4LU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-05-20-de-ce-ti-e-frica-nu-scapi/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cum ştergi exact ultima revizie dintr-un repository Subversion</title>
		<link>http://bogdan.designlabs.ro/blog/2008-05-18-cum-stergi-exact-ultima-revizie-dintr-un-repository-subversion/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-05-18-cum-stergi-exact-ultima-revizie-dintr-un-repository-subversion/#comments</comments>
		<pubDate>Sat, 17 May 2008 23:29:21 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Developer]]></category>
<category>apache</category><category>araxis merge</category><category>bdb</category><category>berkeley db</category><category>Developer</category><category>diff</category><category>dump</category><category>fs type</category><category>fsfs</category><category>indexable</category><category>linux</category><category>load</category><category>merge</category><category>repository</category><category>repository backup</category><category>resync</category><category>subversion</category><category>subversion repository</category><category>svn</category><category>svn repository</category><category>svnadmin</category><category>svnadmin create</category><category>svnadmin dump</category><category>svnadmin load</category><category>trac</category><category>trac admin</category><category>webdav</category><category>winmerge</category><category>working copy</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-05-18-cum-stergi-exact-ultima-revizie-dintr-un-repository-subversion/</guid>
		<description><![CDATA[  Dacă ai făcut commit la ceva ce nu trebuia, sau nu la tot ce trebuia, sau pur şi simplu ai nevoie de asta din alt motiv, soluţia constă în câteva mişcări rapide. Cu magenta, am evidenţiat variabilele din comenzile de mai jos, adică ce trebuie înlocuit în funcţie de situaţia ta.
$ cp /path/to/repo /path/to/repo_backup [...] ]]></description>
			<content:encoded><![CDATA[<p> Dacă ai făcut commit la ceva ce nu trebuia, sau nu la tot ce trebuia, sau pur şi simplu ai nevoie de asta din alt motiv, soluţia constă în câteva mişcări rapide. Cu <span style="color: magenta">magenta</span>, am evidenţiat <em>variabilele</em> din comenzile de mai jos, adică ce trebuie înlocuit în funcţie de situaţia ta.</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">$ cp <span style="color: magenta">/path/to/repo</span> <span style="color: magenta">/path/to/repo_backup</span> -R</p>
<ul>
<li>Am creat mai întâi un backup la structura de fişiere a repository-ului;</li>
<li><code>/path/to/</code> este calea către repository (atenţie, nu a lui working copy), iar <code>repo</code> este numele repository-ului; de exemplu, la mine ar putea fi <code>/var/svn/repositories/test</code>.</li>
</ul>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">$ svnadmin dump <span style="color: magenta">/path/to/repo</span> <span style="letter-spacing: -3px">- - </span>revision 0:<span style="color: magenta">n</span> &gt; dumpfile</p>
<ul>
<li>Am făcut dump într-un fişier la toate reviziile între <code>0</code> şi <code>n</code>, inclusiv;</li>
<li><code>n</code> este numărul reviziei dinaintea ultimei, <code>n</code>+1 fiind revizia curentă, la care renunţăm;</li>
<li><code>dumpfile</code> este fişierul în care redirecţionăm output-ul comenzii, care altfel iese în stdout;</li>
<li>Metoda asta poate fi folosită şi pe post de backup la repository.</li>
</ul>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">$ rm -rf <span style="color: magenta">repo</span></p>
<ul>
<li>Am şters repository-ul, nu mai avem nevoie de el (încă avem <code>repo_backup</code>, dacă ceva nu merge bine de-acum înainte).</li>
</ul>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">$ svnadmin create <span style="color: magenta">repo</span> <span style="letter-spacing: -3px">- - </span>fs-type=<span style="color: magenta">tip</span></p>
<ul>
<li>Am creat un repository gol, cu numele cel vechi;</li>
<li>Nu e suficient să creez doar directorul - când importăm mai târziu din <code>dumpfile</code>, vom primi erori dacă nu avem un repository gol;</li>
<li>Tipul repository-ului nou (<code>bdb</code> - sau - <code>fsfs</code>) trebuie să fie identic celui vechi. Înlocuieşte <code>tip</code> cu valoarea potrivită. Dacă nu eşti sigur care din ele este, poţi să-l afli din backup, cu comanda:</li>
</ul>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">$ cat <span style="color: magenta">/path/to/repo_backup</span>/db/fs-type</p>
<p>Trecem mai departe.</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">$ svnadmin load <span style="color: magenta">repo</span> &lt; dumpfile</p>
<ul>
<li>Am importat conţinutul lui <code>dumpfile</code>, în repository-ul gol, nou creat.</li>
</ul>
<p>În unele cazuri, mai trebuie ca owner-ul structurii de fişiere a repository-ului nou creat să fie identic cu cel al vechiului repository:</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px"> $ cd <span style="color: magenta">/path/to</span><br />
$ ls -al | grep <span style="color: magenta">repo_backup</span><br />
drwxr-xr-x 7 <span style="color: magenta">A</span> <span style="color: magenta">B</span> 4096 2008-05-18 01:28 <span style="color: magenta">repo_backup</span><br />
$ sudo chown <span style="color: magenta">A</span>:<span style="color: magenta">B</span> -R repo</p>
<ul>
<li>Privind iarăşi către backup-ul făcut înainte, am setat owner-ul recursiv pentru întreaga structură de fişiere a noului repository (deseori <code>A</code> coincide cu <code>B</code>);</li>
<li>În cazul meu, fluxurile SVN sunt servite de Apache (prin WebDAV), iar serverul Apache trebuie să aiba drepturi depline asupra directorului unde se află repository-ul; în cazul meu <code>A</code> = <code>B</code> = <code>www-data</code> (userul sub care rulează Apache sub Debian/Ubuntu). Creând acel repository la un pas anterior, owner-ul lui era utilizatorul de linux care a emis comanda <img src="http://bogdan.designlabs.ro/blog/wp-includes/images/smilies/icon_wink.gif" class="wp-smiley" style="border: 0px; padding: 0px;" />.</li>
</ul>
<p>Gata, asta e!</p>
<p>Un pas suplimentar, pentru cei ce folosesc un mediu Trac pentru urmărirea repository-ului SVN:
</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">$ trac-admin <span style="color: magenta">/path/to/trac-environment</span> resync</p>
<ul>
<li> Am resincronizat mediul Trac (cache-ul lui intern, etc.), cu  noul repository, care are mai puţin cu o revizie decât ştia Trac;</li>
<li><code>/path/to/trac-environment</code> este calea către mediul Trac asociat repo-ului urmărit, de exemplu la mine ar putea fi <code>/var/trac/test</code>.</li>
</ul>
<p><strong>Note de final</strong></p>
<p>Dacă doar vrei să schimbi comentariul de commit, autorul reviziei sau alte lucruri de genul ăsta, soluţia este alta - <code>svn propset</code>.</p>
<p>Working copy a rămas la revizia <code>n</code>+1 (dând acel commit total nefast) şi lucrurile o să-ţi cam crape în acest moment (am încercat <code>svn cleanup</code> şi alte variante =&gt; no use!). Soluţia este să faci un checkout nou într-un alt director şi apoi să mergi cu o unealtă specializată de tip diff (de exemplu, <a href="http://www.araxis.com/merge/index.html" title="Araxis Merge" target="_blank">Araxis Merge</a> sau <a href="http://winmerge.org/" title="WinMerge" target="_blank">WinMerge</a> sub Windows) şi să faci un merge manual între cele două directoare. Dacă dai peste o soluţie mai buna, feel free to share it!</p>
<p>Ce am scris mai sus, merge de minune în linux (testat în Debian 4.0r3 cu svnadmin 1.4.2 şi trac-admin 0.10.3), în Windows nu am încercat / nu ştiu cum e. De asemenea, trebuie să ai şi drepturile potrivite pentru toate mişcările astea. Ce faci este pe riscul tău, dar dacă ai backup aşa cum am recomandat înca de la început, you should be fine.</p>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/e61XI-CaN2A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-05-18-cum-stergi-exact-ultima-revizie-dintr-un-repository-subversion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ochelarii… Inspect</title>
		<link>http://bogdan.designlabs.ro/blog/2008-05-02-ochelarii-inspect/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-05-02-ochelarii-inspect/#comments</comments>
		<pubDate>Fri, 02 May 2008 14:49:38 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Developer]]></category>
<category>Developer</category><category>firebug</category><category>firebug tip</category><category>firefox</category><category>indexable</category><category>inspect</category><category>inspect element</category>
		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-05-02-ochelarii-inspect/</guid>
		<description><![CDATA[  Pentru că deja s-au adunat câţiva oameni care m-au întrebat la ce îmi folosesc &#8220;ochelarii&#8221;&#8230;

Este un shortcut, nu foarte cunoscut, pentru Inspect din Firebug. Poate fi adăugat din Customise [Toolbar] la right click pe orice bară de instrumente, dacă ai Firebug instalat.
Îl găsesc foarte util, aproape şi uşor de atins.
Note: You can rate this [...] ]]></description>
			<content:encoded><![CDATA[<p> Pentru că deja s-au adunat câţiva oameni care m-au întrebat la ce îmi folosesc &#8220;ochelarii&#8221;&#8230;</p>
<p><img src="http://bogdan.designlabs.ro/blog/wp-content/firebug-inspect.png" title="Great shortcut for Firebug's Inspect tool" alt="Great shortcut for Firebug's Inspect tool" style="border: 0px none ; margin: 0px; padding: 0px" width="434" border="0" height="294" /></p>
<p>Este un shortcut, nu foarte cunoscut, pentru Inspect din <a href="http://www.getfirebug.com/" title="Firebug" target="_blank">Firebug</a>. Poate fi adăugat din Customise [Toolbar] la right click pe orice bară de instrumente, dacă ai Firebug instalat.</p>
<p>Îl găsesc <strong>foarte util</strong>, <strong>aproape</strong> şi <strong>uşor de atins</strong>.</p>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/BNiCXhfEnEo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-05-02-ochelarii-inspect/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Debugging rapid în PHP</title>
		<link>http://bogdan.designlabs.ro/blog/2008-04-19-debugging-rapid-in-php/</link>
		<comments>http://bogdan.designlabs.ro/blog/2008-04-19-debugging-rapid-in-php/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 14:55:51 +0000</pubDate>
		<dc:creator>Bogdan Ghervan</dc:creator>
		
		<category><![CDATA[Developer]]></category>

		<guid isPermaLink="false">http://bogdan.designlabs.ro/blog/2008-04-19-debugging-rapid-in-php/</guid>
		<description><![CDATA[  Nu o să mă întind, pentru că toată lumea a făcut deja debugging în PHP, dar o să amintesc câteva procedee care mi-au fost de mare folos, în general, în lucrul la proiecte (foarte) mari.
1. assert - Pe parcursul scriptului, în locuri în care crezi că o să crape, chemi funcţia assert dând ca [...] ]]></description>
			<content:encoded><![CDATA[<p> Nu o să mă întind, pentru că toată lumea a făcut deja debugging în PHP, dar o să amintesc câteva procedee care mi-au fost de mare folos, în general, în lucrul la proiecte (foarte) mari.</p>
<p><strong>1.</strong> <a href="http://www.php.net/assert" target="_blank">assert</a> - Pe parcursul scriptului, în locuri în care crezi că o să crape, chemi funcţia <code>assert</code> dând ca parametru condiţia favorabilă. Scriptul poate fi oprit dacă valoarea de adevăr a condiţia va fi evaluată ca fiind falsă (by default, scriptul nu se opreşte). Este recomandat ca <code>assert</code> să fie prezent doar în timpul dezvoltării. Exemplu:</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">assert($expectedRows == $foundRows);</p>
<p>Poţi wrap-a această funcţie în <code>myAssert</code>, de exemplu, pentru a specifica şi alte instrucţiuni (logging etc.). Cu funcţia <a href="http://www.php.net/assert_options" target="_blank"><code>assert_options</code></a> poţi specifica opţiuni ca:</p>
<ul>
<li><code>ASSERT_BAIL</code> - opreşte scriptul la evaluarea falsă a condiţiei;</li>
<li><code>ASSERT_QUIET_EVAL</code> - nu sunt output-ate erori la evaluarea la fals, util dacă vrei să le loghezi pentru o depanare ulterioară;</li>
<li><code>ASSERT_CALLBACK</code> - callback care se cheamă după evaluarea la fals - aici poţi face logging-ul;</li>
<li><a href="http://www.php.net/assert_options" target="_blank">şi altele</a>.</li>
</ul>
<p><strong>2.</strong> <a href="http://www.php.net/debug_backtrace" target="_blank">debug_backtrace</a> - Afişează stiva de call-uri (de funcţii) şi de include-uri care au determinat flow-ul din aplicaţie, până la momentul apelului. Întoarce un vector asociativ cu informaţii de genul: numele funcţiei, linia de cod, numele fişierului etc. şi astfel vă puteţi scrie propria metodă de afişare a acestora. Pentru rapiditate poţi folosi <a href="http://www.php.net/debug_print_backtrace" target="_blank">debug_print_backtrace</a> (doar PHP 5), pentru un output standard. Exemplu (generat în codul WordPress-ului):</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">#0 include() called at [/home/designla/public_html/bogdan/blog/wp-includes/template-loader.php:20]<br />
#1 require_once(/home/designla/public_html/bogdan/blog/wp-includes/template-loader.php) called at [/home/designla/public_html/bogdan/blog/wp-blog-header.php:21]<br />
#2 require(/home/designla/public_html/bogdan/blog/wp-blog-header.php) called at [/home/designla/public_html/bogdan/blog/index.php:4]</p>
<p>Eu, de obicei, am o funcţie globală pentru aplicaţie, care conţine propria mea afişare a backtrace-ului sau care doar wrappează  apelul standard de afişare.</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">function myBacktrace() {<br />
	debug_print_backtrace(); // Pot scrie ulterior o afisare proprie<br />
}</p>
<p><strong>3.</strong> Folosirea mecanismului de <a href="http://www.php.net/oop5.reflection" target="_blank">reflection</a>. Reflection este mecanismul prin care un program îşi poate cunoaşte funcţiile, clasele şi instanţele lor, excepţii şi alte entităţi, la runtime. Eu m-am folosit foarte recent de acest mecanism, facând debugging la un proiect foarte mare şi neştiind unde era definită o funcţie pe care o apelam (în plus, existau mai multe funcţii cu acelaşi nume în aplicaţie şi o junglă de includeri până la acel apel). Simplul apel arătat mai jos, mi-a dezvăluit această informaţie. Exemplu (generat în codul WordPress-ului):
</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px">ReflectionFunction::export(&#8217;the_content<empty></empty>&#8216;<empty></empty>)<empty></empty>; // unde the_content este numele unei functiei</p>
<p>Apelul a produs:</p>
<p style="border: 1px solid #dadada; padding: 5px; background-color: #eeeeee; font-size: 11px; font-family: monospace; margin-bottom: 20px"> Function [ &lt;user&gt; function the_content ] {<br />
@@ /home/designla/public_html/bogdan/blog/wp-includes/post-template.php 53 - 58<br />
- Parameters [3] {<br />
	Parameter #0 [ &lt;optional&gt; $more_link_text = &#8216;(more&#8230;<empty></empty>)<empty></empty>&#8216;<empty></empty> ]<br />
	Parameter #1 [ &lt;optional&gt; $stripteaser = 0 ]<br />
	Parameter #2 [ &lt;optional&gt; $more_file = &#8221; ]<br />
	}<br />
}
</p>
<p>Putem observa:</p>
<ul>
<li>declaraţia funcţiei;</li>
<li>cine o defineşte: în cazul nostru este user defined function - <code>&lt;user&gt;</code>; <code>strtolower</code>, de exemplu, este <code>&lt;internal:standard&gt;</code>;</li>
<li>parametrii;</li>
<li>locaţia ei şi liniile de cod între care este cuprinsă definiţia funcţiei.</li>
</ul>
<p><code>export</code> este o metoda statică pe care o are fiecare clasă care implementează <code>Reflector</code> pentru entitatea respectivă, dar mai sunt şi o grămadă de metode care furnizează doar informaţiile ce te interesează.</p>
<p><em>Va urma.</em></p>
<p>Note: You can rate this post by visiting the site.</p>
<img src="http://feeds.feedburner.com/~r/BogdansDeveloperBlog/~4/is9LuMcVHso" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bogdan.designlabs.ro/blog/2008-04-19-debugging-rapid-in-php/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
