<?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>Staicu Ionuţ-Bogdan &#187; Tips &amp; Tricks</title>
	<atom:link href="http://www.iamntz.com/category/tips-tricks/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iamntz.com</link>
	<description>the Frontend Developer</description>
	<lastBuildDate>Mon, 23 Jan 2012 04:55:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>O idee pentru cei ce au (sau administrează) site-uri multilanguage</title>
		<link>http://www.iamntz.com/2822/frontend-developer/o-idee-pentru-cei-ce-au-sau-administreaza-site-uri-multilanguage/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2822/frontend-developer/o-idee-pentru-cei-ce-au-sau-administreaza-site-uri-multilanguage/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 08:55:26 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Multi Language]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2822</guid>
		<description><![CDATA[Îți vine să crezi sau nu, ce vezi mai jos este un&#8230; language picker: Uite o idee la care să te gândești: în momentul în care faci un site multilimbi, ca să zic așa, acest feature îl adaugi pentru cei ce nu cunosc altă limbă decât cea maternă (și care, evident, este diferită de limba [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2822/frontend-developer/o-idee-pentru-cei-ce-au-sau-administreaza-site-uri-multilanguage/'>O idee pentru cei ce au (sau administrează) site-uri multilanguage</a>. <br/>
	<a href='http://www.iamntz.com/2822/frontend-developer/o-idee-pentru-cei-ce-au-sau-administreaza-site-uri-multilanguage/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Îți vine să crezi sau nu, ce vezi mai jos este un&#8230; language picker:</p>
<p><img src="http://content.iamntz.com/wp-content/uploads/2011/12/2011-12-11_10481.png" alt="" title="language picker" width="112" height="74" class="aligncenter size-full wp-image-2823" /></p>
<p>Uite o idee la care să te gândești: în momentul în care faci un site multilimbi, ca să zic așa, acest feature îl adaugi pentru cei ce nu cunosc altă limbă decât cea maternă (și care, evident, este diferită de limba în care ai gândit tu site-ul). </p>
<p>Prin urmare, dacă pui un language picker pe un site, pune textul în limba targetată:</p>
<ul>
<li>Română</li>
<li>English</li>
<li>etc..</li>
</ul>
<p>Nu de alta, dar dacă englezul poate alege limba <em>engleză</em>, nu <em>english</em>, s-ar putea să&#8230; nu știe că înseamnă fix același lucru!</p>
<p>Am scris toată povestea asta când am văzut pe site-ul eventim.de că stau în „Rumänien”. </p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2822/frontend-developer/o-idee-pentru-cei-ce-au-sau-administreaza-site-uri-multilanguage/'>O idee pentru cei ce au (sau administrează) site-uri multilanguage</a>. <br/>
	<a href='http://www.iamntz.com/2822/frontend-developer/o-idee-pentru-cei-ce-au-sau-administreaza-site-uri-multilanguage/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2822/frontend-developer/o-idee-pentru-cei-ce-au-sau-administreaza-site-uri-multilanguage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serverul de SVN întoarce 500 la commit</title>
		<link>http://www.iamntz.com/2736/frontend-developer/serverul-de-svn-intoarce-500-la-commit/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2736/frontend-developer/serverul-de-svn-intoarce-500-la-commit/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 09:00:55 +0000</pubDate>
		<dc:creator>adrian</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2736</guid>
		<description><![CDATA[Tips &#38; tricks cu SVN. Ştiu ca Ionuţ e fan GIT, dar eu folosesc SVN şi mai apar probleme. Aşa, să zicem că ai reinstalat sistemul şi nu îţi mai merge commit-ul la repo-uri. Să zicem că îţi întoarce următoarea eroare: Server sent unexpected return value (500 Internal Server Error) in response to PUT request [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2736/frontend-developer/serverul-de-svn-intoarce-500-la-commit/'>Serverul de SVN întoarce 500 la commit</a>. <br/>
	<a href='http://www.iamntz.com/2736/frontend-developer/serverul-de-svn-intoarce-500-la-commit/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Tips &amp; tricks cu SVN. Ştiu ca Ionuţ e fan GIT, dar eu folosesc SVN şi mai apar probleme. </p>
<p>Aşa, să zicem că ai reinstalat sistemul şi nu îţi mai merge commit-ul la repo-uri. Să zicem că îţi întoarce următoarea eroare:</p>
<blockquote><p>Server sent unexpected return value (500 Internal Server Error) in response to PUT request &#8230;</p></blockquote>
<p>După multe săpături am aflat că poate fi de la antivirus (KAV în cazul de fata). Tot ce trebuie să faci e să adaugi serviciul în excepţii la antivirus şi o sa meargă commit-ul din nou. Probabil consideră că pleacă fişierele de pe local fără voia ta, nu ştiu&#8230; cert este cş mi-am bătut capul un picuţ până am găsit un ins cu aceeaşi problemă şi implicit rezolvarea.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2736/frontend-developer/serverul-de-svn-intoarce-500-la-commit/'>Serverul de SVN întoarce 500 la commit</a>. <br/>
	<a href='http://www.iamntz.com/2736/frontend-developer/serverul-de-svn-intoarce-500-la-commit/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2736/frontend-developer/serverul-de-svn-intoarce-500-la-commit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>„Repararea” codului prea lăbărțat</title>
		<link>http://www.iamntz.com/2322/frontend-developer/repararea-codului-prea-labartat/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2322/frontend-developer/repararea-codului-prea-labartat/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 06:56:34 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Regex]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2322</guid>
		<description><![CDATA[Fie din cauza unei setări stupide de line ending pe care nu știu eu să o fac, fie din cauza setărilor stupide a celor ce lucrează direct pe server, fie pur și simplu din cauza unui client de ftp, codul tău frumos formatat poate ajunge să arate cam așa: (btw, funcția asta șterge anumite elemente [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2322/frontend-developer/repararea-codului-prea-labartat/'>„Repararea” codului prea lăbărțat</a>. <br/>
	<a href='http://www.iamntz.com/2322/frontend-developer/repararea-codului-prea-labartat/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Fie din cauza unei setări stupide de <a href="http://en.wikipedia.org/wiki/Newline#Representations">line ending</a> pe care nu știu eu să o fac, fie din cauza setărilor stupide a celor ce lucrează direct pe server, fie pur și simplu din cauza unui client de ftp, codul tău frumos formatat poate ajunge să arate cam așa:</p>
<pre class="brush: php; title: ; notranslate">
function remove_menus () {

	global $menu;

	$restricted = array( 'Posts', 'Media', 'Links', 'Comments' );

	end ( $menu );

	while ( prev($menu) ){

		$value = explode( ' ',$menu[key($menu)][0] );

		if( in_array( $value[0] != NULL?$value[0]:&quot;&quot; , $restricted ) ){

			unset( $menu[key($menu)] );

		}

	}

}

add_action('admin_menu', 'remove_menus');
</pre>
<p>(btw, funcția asta șterge anumite elemente din meniul de admin al WordPress)</p>
<p>Cum scapi de spatiile extra? Dacă ai extrem de mult timp liber, poți șterge fiecare spațiu, de mână. Dar ce faci dacă ai un fișier cu mii de linii? Chiar ești dispus să pierzi o zi pentru a formata codul?</p>
<h4>REGEX!</h4>
<p><a href="http://en.wikipedia.org/wiki/Regular_expression">Expresiile regulate (Regex)</a> sunt o invenție super tare ce îți permit să faci operațiuni într-un text pe baza unui pattern (șablon sună mult prea&#8230; ciudat). Pattern-ul nostru este reprezentat de două „enter” (unul legitim și unul inserat abuziv de setarea tâmpă de care am pomenit mai sus).</p>
<p>Expresiile regulate au anumite „scurtături” pentru caractere invizibile. Căci un rând nou este reprezentat de (cel puțin) un caracter. Și, în funcție de setările editorului tău, un rând nou poate fi reprezentat fie de <code>CR</code>, fie de <code>LF</code>, fie de ambele (<code>CRLF</code>). Ambele denumiri venind din epoca mașinilor de scris (Cariage Return respectiv Line Feed).</p>
<p>În limbajul Regex, asta se traduce prin <code>\r</code>, <code>\n</code>, respectiv <code>\r\n</code> (sau <code>\n\r</code>)</p>
<h4>Știm CE să căutăm. CUM căutăm?</h4>
<p><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/09/2011-09-07_09441.png" alt="" title="Sublime Text 2 - Regular Expression search &#038; replace" width="293" height="65" class="alignright size-full wp-image-2324" /> Majoritatea (toate?) editoarelor de cod au o funcție ce-ți permite să cauți (și să înlocuiești) pe baza minunăției sus-numite.</p>
<p>Prin urmare, cauți în cod după două linii noi &#8211; <code>\n\n</code> &#8211; și înlocuiești cu o singură linie &#8211; <code>\n</code>. În funcție de line-ending-ul din editorul tău de suflet, s-ar putea să fie nevoie să înlocuiești <code>\n</code> fie cu <code>\r</code> fie cu <code>\r\n</code>.</p>
<p>Apeși pe „Replace All” (sau echivalentul din editorul tău) și&#8230; Gata. Ai un cod frumos formatat:</p>
<pre class="brush: php; title: ; notranslate">
function remove_menus () {
	global $menu;
	$restricted = array( 'Posts', 'Media', 'Links', 'Comments' );
	end ( $menu );
	while ( prev($menu) ){
		$value = explode( ' ',$menu[key($menu)][0] );
		if( in_array( $value[0] != NULL?$value[0]:&quot;&quot; , $restricted ) ){
			unset( $menu[key($menu)] );
		}
	}
}
add_action('admin_menu', 'remove_menus');
</pre>
<h4>Quick tip</h4>
<p>În loc de <code>\n\n</code> poți folosi și <code>\n{2,2}</code>. În Regex, <code>{x,y}</code> se numește interval și poți defini câte caractere să caute (minim/maxim). Omiterea celui de-al doilea parametru înseamnă că nu există limită superioară. De exemplu, o căutare de genul <code>\n{2,}</code> va căuta cel puțin două rânduri noi consecutive.</p>
<p>Foarte util în cazul în care vrei să „cureți” un document care a fost formatat aiurea de la început.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2322/frontend-developer/repararea-codului-prea-labartat/'>„Repararea” codului prea lăbărțat</a>. <br/>
	<a href='http://www.iamntz.com/2322/frontend-developer/repararea-codului-prea-labartat/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2322/frontend-developer/repararea-codului-prea-labartat/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Folosești version control?</title>
		<link>http://www.iamntz.com/2201/frontend-developer/folosesti-version-control/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2201/frontend-developer/folosesti-version-control/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 12:25:04 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2201</guid>
		<description><![CDATA[Folosești version control? Nu? Du-te la ușă, pune mâinile pe toc și trântește ușa cu putere! Acum gândește-te că dacă aveai un soi de version control în viața reală puteai să dai revert la momentul când mâna ta funcționa corespunzător. Cam așa e și cu codul: faci o gafă de care îți dai seama după [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2201/frontend-developer/folosesti-version-control/'>Folosești version control?</a>. <br/>
	<a href='http://www.iamntz.com/2201/frontend-developer/folosesti-version-control/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/08/138_Version_Control-1306631688.png" alt="" title="138_Version_Control-1306631688" width="650" height="234" class="aligncenter size-full wp-image-2202" /></p>
<p>Folosești version control? Nu? Du-te la ușă, pune mâinile pe toc și trântește ușa cu putere! </p>
<p>Acum gândește-te că dacă aveai un soi de version control în viața reală puteai să dai revert la momentul când mâna ta funcționa corespunzător.</p>
<p>Cam așa e și cu codul: faci o gafă de care îți dai seama după câteva zile. În timpul ăsta ai scris sute de linii de cod. Poți să repari și să rescrii o bună bucată de cod timp de câteva ore sau poți să dai restore în câteva secunde.</p>
<p>Alege!</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2201/frontend-developer/folosesti-version-control/'>Folosești version control?</a>. <br/>
	<a href='http://www.iamntz.com/2201/frontend-developer/folosesti-version-control/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2201/frontend-developer/folosesti-version-control/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>ING Homebank v.3 &amp; Greasemonkey</title>
		<link>http://www.iamntz.com/2170/frontend-developer/ing-homebank-v-3-greasemonkey/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2170/frontend-developer/ing-homebank-v-3-greasemonkey/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 09:00:46 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Homebank]]></category>
		<category><![CDATA[ING]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2170</guid>
		<description><![CDATA[Acceași poveste ca aici sau aici, dar actualizată. Noul script este: Face autocomplete și focus la field-ul pentru parolă. Testat în Firefox 5.
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2170/frontend-developer/ing-homebank-v-3-greasemonkey/'>ING Homebank v.3 &#038; Greasemonkey</a>. <br/>
	<a href='http://www.iamntz.com/2170/frontend-developer/ing-homebank-v-3-greasemonkey/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Acceași poveste ca <a href="http://www.iamntz.com/1871/frontend-developer/ing-homebank-v-2-greasemonkey/">aici</a> sau <a href="http://www.iamntz.com/158/frontend-developer/ing-homebank-greasemonkey/">aici</a>, dar actualizată. Noul script este:</p>
<pre class="brush: jscript; title: ; notranslate">
// ==UserScript==
// @name           ing
// @namespace      ing.ro
// @include        https://www.homebank.ro/public/HomeBankLogin/home?lang=ro
// ==/UserScript==

var
	ING_USER = 'insert_user_here',
	user = document.getElementsByName('username')[0],
	pass = document.getElementsByName('password')[0];
user.value = ING_USER;
window.setTimeout(function(){
	pass.focus();
}, 50);
</pre>
<p>Face autocomplete și focus la field-ul pentru parolă.</p>
<p>Testat în Firefox 5.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2170/frontend-developer/ing-homebank-v-3-greasemonkey/'>ING Homebank v.3 &#038; Greasemonkey</a>. <br/>
	<a href='http://www.iamntz.com/2170/frontend-developer/ing-homebank-v-3-greasemonkey/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2170/frontend-developer/ing-homebank-v-3-greasemonkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dezactivează features în OSX Lion</title>
		<link>http://www.iamntz.com/2176/frontend-developer/dezactiveaza-features-in-osx-lion/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2176/frontend-developer/dezactiveaza-features-in-osx-lion/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 19:42:11 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Lion]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2176</guid>
		<description><![CDATA[OSX Lion aduce chestii cool. Sau&#8230; În fine, iată câteva chestii utile: Dezactivezi animațiile ferestrelor (când o fereastră nouă apare, apare cu un zoom ciudat care arată ok pe un display de 13&#8243;, dar nu și pe unul de 24&#8243;!) scriind această linie în Terminal (reactivezi înlocuind NO cu YES): Dezactivezi redeschiderea ferestrelor aplicațiilor din [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2176/frontend-developer/dezactiveaza-features-in-osx-lion/'>Dezactivează features în OSX Lion</a>. <br/>
	<a href='http://www.iamntz.com/2176/frontend-developer/dezactiveaza-features-in-osx-lion/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>OSX Lion aduce chestii cool. Sau&#8230;<br />
În fine, iată câteva chestii utile:</p>
<p>Dezactivezi animațiile ferestrelor (când o fereastră nouă apare, apare cu un zoom ciudat care arată ok pe un display de 13&#8243;, dar nu și pe unul de 24&#8243;!) scriind această linie în Terminal (reactivezi înlocuind <code>NO</code> cu <code>YES</code>):</p>
<pre class="brush: bash; title: ; notranslate">
defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO
</pre>
<p>Dezactivezi redeschiderea ferestrelor aplicațiilor din System Preferences -> General -> <a href="http://screencast.com/t/dDdUgoIe8D">Restore Windows when quitting and re-opening apps</a>.</p>
<p>Dezactivezi scroll-ul invers din System Preferences -> Mouse -> <a href="http://screencast.com/t/vpNnFTuge92">Move the content in the direction of finger movement when scrolling or navigating</a>.</p>
<p>Dezactivezi animațiile din Mail (sunt mișto dacă ai 14 ani, dar unii se maturizează mai repede&#8230;) cu:<span id="more-2176"></span></p>
<pre class="brush: bash; title: ; notranslate">
defaults write com.apple.Mail DisableReplyAnimations -bool YES
defaults write com.apple.Mail DisableSendAnimations -bool YES
</pre>
<p><del datetime="2011-07-28T04:27:56+00:00">Încă mai caut</del> <a href="http://www.iclarified.com/entry/index.php?enid=16229">O metodă de a dezactiva animațiile</a> (sau măcar a scurta timpul) la schimbarea desktop-urilor. Mie mi se pare stupid să instalezi o aplicație pentru a dezactiva ceva ce este un productivity killery. (<a href="http://www.boio.ro/">via</a>)</p>
<p>Închizi desktop-urile virtuale apăsând option.</p>
<p>Google Chrome are un buton frumos pentru full screen dar nu are și buton pentru ieșire din full screen. Poți folosi cmd+shift+f (merge și în alte aplicații).</p>
<p>Și câte ceva ce mergea și în Snow Leopard:</p>
<p>Accelerația mausului (o altă chestie genială cu care trebuie să te obișnuiești sau să mori încercând) se poate dezactiva tot din terminal cu:</p>
<pre class="brush: bash; title: ; notranslate">
defaults write .GlobalPreferences com.apple.mouse.scaling -1
</pre>
<p>Logout / restart.<br />
(reactivezi înlocuind -1 cu 1)</p>
<p>Dacă apeși cmd+m din greșeală și nu vrei să ajungi la maus să faci restore la o fereastră, apeși cmd+tab până selectezi aplicația și înainte de a da drumul la cmd apeși pe option.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2176/frontend-developer/dezactiveaza-features-in-osx-lion/'>Dezactivează features în OSX Lion</a>. <br/>
	<a href='http://www.iamntz.com/2176/frontend-developer/dezactiveaza-features-in-osx-lion/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2176/frontend-developer/dezactiveaza-features-in-osx-lion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Actualizarea unor elemente din pagină folosind AJAX/JSON</title>
		<link>http://www.iamntz.com/1949/frontend-developer/actualizarea-unor-elemente-din-pagina-folosind-ajax/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1949/frontend-developer/actualizarea-unor-elemente-din-pagina-folosind-ajax/#comments</comments>
		<pubDate>Sat, 28 May 2011 09:23:07 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1949</guid>
		<description><![CDATA[Atunci când scrii o aplicație , se întâmplă de multe ori să fii nevoit să faci update doar unor anumite părți din site. Să presupunem că ai un site de social networking în site care arată undeva în header numărul de mesaje trimise, nickname și&#8230; ce să mai fie? Ah, și numărul de like-uri date. [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1949/frontend-developer/actualizarea-unor-elemente-din-pagina-folosind-ajax/'>Actualizarea unor elemente din pagină folosind AJAX/JSON</a>. <br/>
	<a href='http://www.iamntz.com/1949/frontend-developer/actualizarea-unor-elemente-din-pagina-folosind-ajax/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Atunci când scrii o aplicație <acronym title="Asynchronous JavaScript + XML  - http://w3.org">AJAX</acronym>, se întâmplă de multe ori să fii nevoit să faci update doar unor anumite părți din site. </p>
<p>Să presupunem că ai un site de social networking în site care arată undeva în header numărul de mesaje trimise, nickname și&#8230; ce să mai fie? Ah, și numărul de like-uri date. Cât de util este să ai numărul de mesaje <em>trimise</em> sau numărul de like-uri <em>oferite</em> este mai puțin important, dar, de dragul exemplului, să zicem că e o chestiune de viață și de moarte. <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Și ca să nu folosim o limbă de lemn, facem un header frumos care să ne zică:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;header&gt;
	&lt;div&gt;Bine ai venit, Ionut. Ai 23 mesaje trimise și 598 like-uri!&lt;/div&gt;
&lt;/header&gt;
</pre>
<p>Ok, dacă tot am presupus atâtea, să mai presupunem că intri frumușel în setări să schimbi numele. Nu vreau să mai fiu <em>Ionut</em>, vreau să fiu <em>Bogdan</em>. Cum facem asta fără refresh?</p>
<p>A doua situație (presupusă și asta): trimiți un mesaj. Trimiterea mesajului nu face refresh la pagină, deci ar trebui să actualizăm numărul de mesaje trimise afișat în header, nu?<span id="more-1949"></span></p>
<p>A treia situație nu o mai povestesc, dar e cam la fel ca primele două, deci nu mai pierdem timpul.</p>
<p>Soluția propusă de mine presupune ușoara modificare a mark-up-ului de mai sus în:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;header&gt;
	&lt;div&gt;Bine ai venit, &lt;span id=&quot;update_1&quot;&gt;Ionut&lt;/span&gt;. Ai &lt;span class=&quot;update_2&quot;&gt;23&lt;/span&gt; mesaje trimise și &lt;span id=&quot;update_3&quot;&gt;598&lt;/span&gt; like-uri!&lt;/div&gt;
&lt;/header&gt;
</pre>
<p>Astfel, avem o oarecare referință a ceea ce trebuie actualizat. Dacă ai mai multe elemente de actualizat cu aceleași date, folosești clase în loc de id-uri.</p>
<p>Apelul spre AJAX arată cam așa:</p>
<pre class="brush: jscript; title: ; notranslate">
$.getJSON('do_some_awesome_ajax_thing.php', {
	param:	foo,
	query:	bar
}, function(json){
	replaceElements(json);
});
</pre>
<p>Sigur, poți folosi <code><a href="http://api.jquery.com/jQuery.ajax/">$.ajax()</a></code> dacă ai nevoie de mai multe opțiuni (de exemplu, trimiterea datelor prin POST nu GET).</p>
<p>Am dat și exemplu de cum se pot trimite parametrii deoarece am observat că foarte mulți programatori folosesc o metodă ușor&#8230; dubioasă:</p>
<pre class="brush: jscript; title: ; notranslate">
$.getJSON('do_some_awesome_ajax_thing.php?param='+foo+'&amp;query'+bar, {
</pre>
<p>Chiar dacă funcționează, această metodă este greu de citit.</p>
<h4>JSON</h4>
<p>Așa cum probabil bănuiești, serverul întoarce id-ul (sau clasa) elementului, împreună cu noua sa valoare:</p>
<pre class="brush: jscript; title: ; notranslate">
[
    {
        &quot;el&quot;: &quot;#update_1&quot;,
        &quot;val&quot;: &quot;Bogdan&quot;
    },
    {
        &quot;el&quot;: &quot;.update_2&quot;,
        &quot;val&quot;: &quot;24&quot;
    },
    {
        &quot;el&quot;: &quot;#update_3&quot;,
        &quot;val&quot;: &quot;600&quot;
    }
]
</pre>
<h4>Interpretarea răspunsului</h4>
<p>Tot ce ne mai trebuie este funcția <code>replaceElements()</code> apelată puțin mai sus:</p>
<pre class="brush: jscript; title: ; notranslate">
function replaceElements(json) {
	if( typeof( json ) === 'object' ){
		$(json).each(function(){
			$(this.el).html(this.val);
		});
	}
}
</pre>
<h4>Gata!</h4>
<p>Păi&#8230; e gata. <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> </p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1949/frontend-developer/actualizarea-unor-elemente-din-pagina-folosind-ajax/'>Actualizarea unor elemente din pagină folosind AJAX/JSON</a>. <br/>
	<a href='http://www.iamntz.com/1949/frontend-developer/actualizarea-unor-elemente-din-pagina-folosind-ajax/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1949/frontend-developer/actualizarea-unor-elemente-din-pagina-folosind-ajax/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Aplicații web pe localhost</title>
		<link>http://www.iamntz.com/1945/frontend-developer/aplicatii-web-pe-localhost/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1945/frontend-developer/aplicatii-web-pe-localhost/#comments</comments>
		<pubDate>Thu, 26 May 2011 06:43:46 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[DNS Dinamic]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1945</guid>
		<description><![CDATA[Dacă ești freelancer, probabil ești pus în situația în care vrei să-i arăți clientului tău ce ai lucrat. Cum urcatul pe un ftp este prea enervant pentru a fi folosit non stop, soluția cea mai la îndemână este un server http instalat pe calculatorul propriu. Deci avem prima problemă. A doua problemă ar fi că [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1945/frontend-developer/aplicatii-web-pe-localhost/'>Aplicații web pe localhost</a>. <br/>
	<a href='http://www.iamntz.com/1945/frontend-developer/aplicatii-web-pe-localhost/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Dacă ești freelancer, probabil ești pus în situația în care vrei să-i arăți clientului tău ce ai lucrat. Cum urcatul pe un ftp este prea enervant pentru a fi folosit non stop, soluția cea mai la îndemână este un server http instalat pe calculatorul propriu.</p>
<p>Deci avem prima problemă. A doua problemă ar fi că RDS nu îmi dă un IP fix, existând șansa ca din momentul în care dau un link (format din IP) cuiva pe mail, până verifică link-ul, ip-ul să nu mai corespundă cu PC meu.</p>
<p>Soluția găsită de mine constă în utilizarea serviciului <a href="http://www.dyndns.com/">dyndns</a>. Se instalează o aplicație pe pc (care trimite ip-ul tău spre serverul lor) și&#8230; cam asta e. Ai domenii de forma <code>numele_tau.dyndns.org</code> in no time, cum spune românu&#8217;. Poți avea și subdomenii (<code>subdomeniu.numele_tau.dyndns.org</code>), dacă știi <a href="http://dev.iamntz.com/128/get-organized">cum să le faci</a>.</p>
<h3>Am router!</h3>
<p>Și eu! Dar problema asta se rezolvă rapid printr-un port forwarding, dar generează altă problemă: nu poți accesa link-ul! (cred că se intră într-un loop). Have no fear, avem leac și pentru asta! Fișierul <code>hosts</code>. Apasă Win+R (dacă nu ești pe windows&#8230; well&#8230; te descurci tu) și scrie: <code>notepad c:\windows\system32\drivers\etc\hosts</code>.</p>
<p>La sfârșitul documentului scrii următoarele:</p>
<pre class="brush: bash; title: ; notranslate">
127.0.0.1	numele_tau.dyndns.org
127.0.0.1	subdomeniu1.numele_tau.dyndns.org
127.0.0.1	subdomeniu2.numele_tau.dyndns.org
[....]
</pre>
<p>Nu ține apache (sau ce server folosești) pe portul 80. Iar asta din două motive: 1) skype are obiceiul să ocupe acest port; 2) oricine poate nimeri pe hostul tău.</p>
<p><strong>Atenție!</strong> După fiecare adăugare a unui subdomeniu în vhosts este nevoie să modifici fișierul hosts. Altfel nu vei putea accesa acel subdomeniu.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1945/frontend-developer/aplicatii-web-pe-localhost/'>Aplicații web pe localhost</a>. <br/>
	<a href='http://www.iamntz.com/1945/frontend-developer/aplicatii-web-pe-localhost/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1945/frontend-developer/aplicatii-web-pe-localhost/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>ING Homebank v.2 &amp; Greasemonkey</title>
		<link>http://www.iamntz.com/1871/frontend-developer/ing-homebank-v-2-greasemonkey/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1871/frontend-developer/ing-homebank-v-2-greasemonkey/#comments</comments>
		<pubDate>Wed, 04 May 2011 08:17:34 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Greasemonkey script]]></category>
		<category><![CDATA[ING Homebank]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1871</guid>
		<description><![CDATA[Noua interfață a ING Homebank face ca scriptul publicat în urmă cu aproape doi ani să devină ușor inutil. Prin urmare, iată un update micuț ce aduce autocomplete-ul back in biznis, ca să zic așa Noul script este: Bonus: ce este inutil în noua interfață?
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1871/frontend-developer/ing-homebank-v-2-greasemonkey/'>ING Homebank v.2 &#038; Greasemonkey</a>. <br/>
	<a href='http://www.iamntz.com/1871/frontend-developer/ing-homebank-v-2-greasemonkey/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Noua interfață a ING Homebank face ca <a href="http://www.iamntz.com/158/frontend-developer/ing-homebank-greasemonkey/">scriptul publicat</a> în urmă cu aproape doi ani să devină ușor inutil. Prin urmare, iată un update micuț ce aduce autocomplete-ul back in biznis, ca să zic așa <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Noul script este:</p>
<pre class="brush: jscript; title: ; notranslate">
// ==UserScript==
// @name           ing
// @namespace      ing.ro
// @include        https://www.homebank.ro/public/HomeBankLogin/home?lang=ro
// ==/UserScript==

var uname = document.getElementById('usernameDl'),
		upass = document.getElementById('passwordDl');

uname.getElementsByTagName('input')[0].value='USER_NAME';
upass.getElementsByTagName('input')[0].focus();
</pre>
<h3>Bonus: ce este inutil în noua interfață?</h3>
<p><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/ing_home_bank-700x479.png" alt="" title="ing_home_bank" width="700" height="479" class="aligncenter size-large wp-image-1873" /></p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1871/frontend-developer/ing-homebank-v-2-greasemonkey/'>ING Homebank v.2 &#038; Greasemonkey</a>. <br/>
	<a href='http://www.iamntz.com/1871/frontend-developer/ing-homebank-v-2-greasemonkey/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1871/frontend-developer/ing-homebank-v-2-greasemonkey/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL Backup</title>
		<link>http://www.iamntz.com/1850/frontend-developer/mysql-backup/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1850/frontend-developer/mysql-backup/#comments</comments>
		<pubDate>Tue, 03 May 2011 12:38:13 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1850</guid>
		<description><![CDATA[Că sunt un backup freak este știut. Am două hdd-uri puse în RAID 1 (adică aceeași informație este scrisă pe ambele hdd-uri) iar fișierele importante sunt salvate pe Dropbox, Crashplan și Amazon S3 cel puțin o dată pe zi. În plus, folosesc version control (Git) pentru proiectele la care lucrez. Azi mi-a venit următoarea idee: [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1850/frontend-developer/mysql-backup/'>MySQL Backup</a>. <br/>
	<a href='http://www.iamntz.com/1850/frontend-developer/mysql-backup/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Că sunt un backup freak este știut. Am două hdd-uri puse în RAID 1 (adică aceeași informație este scrisă pe ambele hdd-uri) iar fișierele importante sunt salvate pe <a href="https://www.dropbox.com/referrals/NTE2NTk3NzY5">Dropbox</a>, <a href="https://www.crashplan.com/">Crashplan</a> și <a href="http://aws.amazon.com/">Amazon S3</a> cel puțin o dată pe zi. În plus, folosesc version control (Git) pentru proiectele la care lucrez.</p>
<p>Azi mi-a venit următoarea idee: ce-ar fi dacă aș pune și tot ce ține de mysql sub Git? La o adică, nu de puține ori mi s-a întâmplat să dau drop la ce nu trebuie, iar toate modificările făcute de la ultimul backup erau pierdute. Deci a trebuit să găsesc o modalitate. <span id="more-1850"></span></p>
<p>Ai nevoie doar de Git (<a href="http://code.google.com/p/msysgit/downloads/list?can=3">full installer</a>). La momentul scrierii acestui articol, ultima versiune este <em>Git-1.7.4-preview20110204.exe</em>. Știu că Git poate fi folosit și din cygwin, dar bash-skill-ul meu este destul de low&#8230; <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Este <strong>esențial</strong> să faci următoarea setare:<br />
<img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/2011-05-03_1444.png" alt="" title="2011-05-03_1444" width="503" height="388" class="aligncenter size-full wp-image-1851" /><br />
În rest next, next, next, next&#8230; <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Cum eu folosesc Xammp, fișierele ce țin de mysql sunt ținute aici: <code>C:\xampp\mysql\data</code>. Prin urmare fie apeși <em>win+r</em> și tastezi <code>cmd</code>, fie apeși shift și faci click dreapta pe folderul <code>data</code> și alegi <em>open command window here</em>, după care îi dai un <code>git init</code>, pentru a inițializa repository local.</p>
<p>Dacă ai deja multe baze de date, toată treaba asta s-ar putea să dureze câteva secunde/minute. La cele ~50 DB ale mele (~4500 fișiere și ~ 300Mb) a durat în jur de cinci secunde (SSD FTW!).</p>
<p>După ce ai făcut toată șmecheria asta, dacă vrei să faci backup remote (pe un server de Git), acum ar fi momentul să adaugi un <a href="https://www.mxhost.ro/clienti/aff.php?aff=096">server</a>:</p>
<pre class="brush: bash; title: ; notranslate">
git remote add origin remote_git_server_url
</pre>
<p>Dacă nu&#8230; Nu.</p>
<h4>Automatizarea</h4>
<p>Nu cred că vrei să rulezi manual câte un commit, nu? Cel puțin eu nu vreau. Prin urmare, Task Scheduler face o treabă excelentă! Facem un fișier, să-i zicem &#8230; <code>backup.bat</code>. Îl punem în același director cu datele mysql, să nu îl rătăcim sau să uităm de el și scriem în el următoarele:</p>
<pre class="brush: bash; title: ; notranslate">
@echo off
call git add .
call git commit -a -m &quot;%DATE% %TIME%&quot;
call git push origin master
</pre>
<p>Dacă ai ales varianta mai&#8230; ieftină (adică fără server), ultima linie este inutilă (și generatoare de erori!).</p>
<p>După ce ai făcut fișierul-minune, apeși iar <em>win+r</em> și scrii: <code>taskschd.msc</code>. Din meniul ferestrei apărute din neant alegi <em>action->create basic task</em>:<br />
<img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/2011-05-03_1503.png" alt="" title="2011-05-03_1503" width="400" height="300" class="aligncenter size-full wp-image-1853" /></p>
<p>Apoi urmezi pașii:</p>
<p><a href="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/1.png"><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/1-300x208.png" alt="" title="1" width="300" height="208" class="aligncenter size-medium wp-image-1854" /></a></p>
<p><a href="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/2.png"><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/2-300x208.png" alt="" title="2" width="300" height="208" class="aligncenter size-medium wp-image-1855" /></a></p>
<p><a href="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/3.png"><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/3-300x208.png" alt="" title="3" width="300" height="208" class="aligncenter size-medium wp-image-1856" /></a></p>
<p><a href="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/4.png"><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/4-300x208.png" alt="" title="4" width="300" height="208" class="aligncenter size-medium wp-image-1857" /></a></p>
<p><a href="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/5.png"><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/5-300x208.png" alt="" title="5" width="300" height="208" class="aligncenter size-medium wp-image-1858" /></a></p>
<p><a href="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/6.png"><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/6-300x208.png" alt="" title="6" width="300" height="208" class="aligncenter size-medium wp-image-1859" /></a></p>
<p>În următoarea fereastră alegi cât de des vrei să ruleze toată povestea:<br />
<a href="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/7.png"><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/05/7-300x119.png" alt="" title="7" width="300" height="119" class="aligncenter size-medium wp-image-1860" /></a></p>
<p>Eu am ales o oră. Ajustezi în funcție de necesități. De asemenea, alegi cât timp să ruleze un backup. Până acum nu am întâlnit vreun repo de git care să nu termine treaba în mai puțin de cinci minute. Dacă ai un server ceva mai lent, poate că ar fi bine să lași un timp de execuție mai mare.</p>
<h3>Serverul</h3>
<p>Dacă ești un pic paranoic (nu că aș fi!) și vrei să salvezi și pe un server remote, poți alege fie un cont plătit pe GitHub (pleacă de la 12$/lună un cont ce-l poți folosi la mai multe proiecte), fie un VPS configurat pentru a fi (și) server de Git. Eu am optat pentru cea de-a doua variantă, un VPS la <a href="https://www.mxhost.ro/clienti/aff.php?aff=096">MX Host</a> din mai multe motive, unul dintre ele fiind viteză (2-3Mb/sec upload și 10-11Mb/sec download; comparativ, github nu sare de 500kb/sec).</p>
<h3>Update</h3>
<p>Pentru a face <code>backup.bat</code> să ruleze invizibil, faci încă un fișier, lângă <code>backup.bat</code>, pe care îl botezi <code>backup.vbs</code>, în care pui următoarea poveste:</p>
<pre class="brush: jscript; title: ; notranslate">
Set WshShell = CreateObject(&quot;WScript.Shell&quot;)
WshShell.Run chr(34) &amp; &quot;C:\xampp\mysql\data\backup.bat&quot; &amp; Chr(34), 0
Set WshShell = Nothing
</pre>
<p>Evident, schimbi în Task Scheduler programul pe care îl vrei apelat.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1850/frontend-developer/mysql-backup/'>MySQL Backup</a>. <br/>
	<a href='http://www.iamntz.com/1850/frontend-developer/mysql-backup/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1850/frontend-developer/mysql-backup/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

