<?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>David Gouveia</title>
	<atom:link href="http://www.davidgouveia.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.davidgouveia.net</link>
	<description>Bits and Bytes of useless information</description>
	<lastBuildDate>Thu, 12 Jan 2012 10:39:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Router Passwords removed from Android Market</title>
		<link>http://www.davidgouveia.net/2012/01/router-passwords-removed-from-android-market/</link>
		<comments>http://www.davidgouveia.net/2012/01/router-passwords-removed-from-android-market/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 10:39:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[market]]></category>
		<category><![CDATA[paranoid]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=183</guid>
		<description><![CDATA[Yesterday I received an email from Android Market support team saying that my application was removed due to a violation of the Developer Distribution Agreement. They explicitly say that the application could be used in an &#8220;harmful way&#8221;. Here is the complete email: This is a notification that the application, Router Passwords, with package ID [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I received an email from Android Market support team saying that my application was removed due to a violation of the Developer Distribution Agreement. They explicitly say that the application could be used in an &#8220;harmful way&#8221;.</p>
<p>Here is the complete email:</p>
<blockquote><p>This is a notification that the application, Router Passwords, with package ID net.davidgouveia.routerpasswords has been removed from Android Market due to a violation of Android Market developer terms. It has come to our attention that this application could be used in a way that is harmful to devices, networks, or users.</p>
<p>For specific policies pertaining to this suspension, please see:<br />
Developer Distribution Agreement:<br />
4.3 Use of the Market by You<br />
4.4 Prohibited Actions<br />
Content Policy:<br />
Malicious Products</p>
<p>Specifically, this application allows users to circumvent the (default) password protection made available through third-party routers. We would like to emphasize that the simplicity in which a security measure is circumvented is irrelevant to the application of this Android Market Developer agreement provision.</p>
<p>Please fully review the Content Policies, Developer Distribution Agreement, and Business and Program Policies before you create or upload additional applications. Please also consult our guidelines on rating your application.</p>
<p>Please be advised that this or additional violations may result in a suspension of your Android Market Publisher account, and may also result in actions, including possible suspension, taken against any associated Android Market Publisher, AdSense, Google Checkout, or AdMob accounts.</p>
<p>Thanks,<br />
The Android Market Team</p></blockquote>
<p>Since I believe that the source of this problem is the database that ships with the application, I will launch a new one without any information. You will then be able to populate da database with information about all of your network devices.</p>
<p>I would also like to thank all the people who&#8217;ve helped me reach almost 700k downloads in a few months.</p>
<p>Stay tuned <img src='http://www.davidgouveia.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>PS: <span style="color: #ff0000;">You can still download the application from other sources including this website. Click</span> <a href="http://www.davidgouveia.net/routerpasswords.apk">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2012/01/router-passwords-removed-from-android-market/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A (in)segurança dos routers da SAPO</title>
		<link>http://www.davidgouveia.net/2011/12/a-inseguranca-dos-routers-da-sapo/</link>
		<comments>http://www.davidgouveia.net/2011/12/a-inseguranca-dos-routers-da-sapo/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 12:22:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[information disclousure]]></category>
		<category><![CDATA[insegurança]]></category>
		<category><![CDATA[sapo]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=176</guid>
		<description><![CDATA[Enquanto testava o reencaminhamento de portas para a minha rede interna verifiquei uma serie de factos assustadores. Provavelmente este assunto já foi debatido pela Internet fora mas nunca me tinha apercebido. Quem tem um router wireless Thomson TG784n espero que saiba que por defeito o acesso à consola de administração está aberto a partir do [...]]]></description>
			<content:encoded><![CDATA[<p>Enquanto testava o reencaminhamento de portas para a minha rede interna verifiquei uma serie de factos assustadores.</p>
<p>Provavelmente este assunto já foi debatido pela Internet fora mas nunca me tinha apercebido. Quem tem um router wireless Thomson TG784n espero que saiba que por defeito o acesso à consola de administração está aberto a partir do exterior e como se não bastasse as credenciais de acesso são estáticas e iguais para todos! Ou seja, em vez de terem criado passwords aleatórias tal como fazem com as chaves do acesso wireless, resolveram correr toda a gente com as passwords 3!play e meo para as contas Administrator e meo respectivamente.</p>
<p>Resolvi então fazer um varrimento de pequena subnet onde me encontrava e constatei algo ainda mais assustador, é que esta situação é GERAL em todos (OK, talvez não sejam todos mas pelo menos os Thomson e Zyxel que testei eram)!</p>
<p>Os portadores de routers Zyxel fornecidos pela Sapo  não só possuem credenciais de acesso semelhantes como ainda são brindados com toda a informação relativa às credenciais de acesso à Internet e Wifi completamente escarrapachadas para qualquer um ver! basta digitarem https://[vosso IP externo] para se depararem com algo como isto:</p>
<p><a href="http://www.davidgouveia.net/wp-content/uploads/2011/12/zyxel-ssid.png"><img src="http://www.davidgouveia.net/wp-content/uploads/2011/12/zyxel-ssid-300x168.png" alt="" title="zyxel information disclousure" width="300" height="168" class="aligncenter size-medium wp-image-178" /></a></p>
<p>Numa análise mais cuidada ao código fonte é possível verificar que a password do acesso à internet encontra-se cifrada, mas o nome de utilizador não! PIOR&#8230;  a chave de acesso ao wireless não é cifrada tal como poderão ver nesta imagem o que compromete e muito a segurança da rede!</p>
<p><a href="http://www.davidgouveia.net/wp-content/uploads/2011/12/ssid.png"><img src="http://www.davidgouveia.net/wp-content/uploads/2011/12/ssid-300x100.png" alt="" title="ssid" width="300" height="100" class="aligncenter size-medium wp-image-177" /></a><br />
E isto é apenas para falar do que salta logo à vista, pois há outro tipo de possibilidades como por exemplo descobrir a topologia da rede, escutar a propria rede (vulgo sniffing) ou até mesmo usar essa mesma rede como tunel para executar outro tipo de tarefas ilicitas em terceiros.</p>
<p>O conselho que dou é: Se possuem algum equipamento adquirido a um ISP então tratem de ou mudar as credenciais de acesso ou então bloquear o acesso ao interface de gestão a dispositivos provenientes do exterior da rede.</p>
<p>Não digam que não vos avisei!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/12/a-inseguranca-dos-routers-da-sapo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to convert video to animated gifs from a linux console</title>
		<link>http://www.davidgouveia.net/2011/09/how-to-convert-video-to-animated-gifs-from-a-linux-console/</link>
		<comments>http://www.davidgouveia.net/2011/09/how-to-convert-video-to-animated-gifs-from-a-linux-console/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 11:56:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[animated gifs]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mplayer]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=169</guid>
		<description><![CDATA[Hi, Today I&#8217;m going to show you a very small script that allows you to convert any video (as long as it is supported by mplayer) to a GIF. Required tools: * mplayer * convert &#160; mplayer is popular media player available for multiple operating systems that support a wide range of video formats. The [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Today I&#8217;m going to show you a very small script that allows you to convert any video (as long as it is supported by mplayer) to a GIF.</p>
<p>Required tools:</p>
<p>* mplayer</p>
<p>* convert</p>
<p>&nbsp;</p>
<p>mplayer is popular media player available for multiple operating systems that support a wide range of video formats. The convert tool is an utility that lets you convert between multiple image formats among other definitions.  Since the mplayer takes screenshots using jpeg format, we need to use the convert tool to do the convertion to aGIF format.</p>
<p>&nbsp;</p>
<p>Copy the following code, save it to a file and change its permissions (chmod a+x) and you are ready to roll <img src='http://www.davidgouveia.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co0">#!/bin/sh</span>
<span class="re2">TMPDIR</span>=<span class="sy0">/</span>tmp<span class="sy0">/</span>animated
<span class="kw3">shopt</span> <span class="re5">-s</span> nocaseglob
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-d</span> <span class="st0">&quot;<span class="es2">$TMPDIR</span>&quot;</span> <span class="br0">&#93;</span>
<span class="kw1">then</span>
        <span class="kw2">mkdir</span> <span class="re1">$TMPDIR</span>
<span class="kw1">fi</span>
&nbsp;
\<span class="kw2">rm</span> <span class="re1">$TMPDIR</span><span class="sy0">/*</span> <span class="sy0">&amp;</span>amp;<span class="sy0">&amp;</span>gt; <span class="sy0">/</span>dev<span class="sy0">/</span>null
&nbsp;
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re4">$#</span> <span class="re5">-lt</span> <span class="nu0">3</span> <span class="br0">&#93;</span>
<span class="kw1">then</span>
        <span class="kw3">echo</span> <span class="re5">-e</span> <span class="st0">&quot;Usage: $0 &lt;start&gt; &lt;length&gt; &lt;inputfile&gt; [&lt;with:height&gt;]<span class="es1">\n</span>Example:<span class="es1">\n</span>$0 00:15:11 10 myvideo.avi 320:240&quot;</span>
        <span class="kw3">exit</span> <span class="nu0">1</span>
<span class="kw1">fi</span>
&nbsp;
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-n</span> <span class="st0">&quot;$4&quot;</span> <span class="br0">&#93;</span>
<span class="kw1">then</span>
        <span class="re2">SCALE</span>=<span class="st0">&quot;scale=$4&quot;</span>
<span class="kw1">fi</span>
&nbsp;
<span class="kw3">echo</span> <span class="st0">&quot;Generating screenshots. Please be patitent...&quot;</span>
<span class="kw2">mplayer</span> <span class="re5">-ao</span> null <span class="re5">-ss</span> <span class="re4">$1</span> <span class="re5">-endpos</span> <span class="re4">$2</span> <span class="re4">$3</span> <span class="re5">-vo</span> jpeg:<span class="re2">outdir</span>=<span class="re1">$TMPDIR</span><span class="sy0">/</span> <span class="re5">-vf</span> <span class="re1">$SCALE</span> <span class="sy0">&amp;&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-f</span> <span class="re1">$TMPDIR</span><span class="sy0">/</span>00000001.jpg <span class="br0">&#93;</span>
<span class="kw1">then</span>
        <span class="kw3">echo</span> <span class="st0">&quot;Finished generating frames. Assembling the animated GIF...&quot;</span>
        convert <span class="re5">-delay</span> <span class="nu0">5</span> <span class="re1">$TMPDIR</span><span class="sy0">/*</span>.jpg <span class="re1">$TMPDIR</span><span class="sy0">/</span>output.gif
        <span class="kw3">echo</span> <span class="st0">&quot;Done! Please check the <span class="es2">$TMPDIR</span>/output.gif&quot;</span>
        <span class="kw3">exit</span> <span class="nu0">0</span>
<span class="kw1">else</span>
        <span class="kw3">echo</span> <span class="re5">-e</span> <span class="st0">&quot;Oops\! Something went wrong and the frames were not generated. Check your parameters\!&quot;</span>
        <span class="kw3">exit</span> <span class="nu0">1</span>
<span class="kw1">fi</span></pre></div></div></div></div></div></div></div>


<p>Just try it and let me know <img src='http://www.davidgouveia.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/09/how-to-convert-video-to-animated-gifs-from-a-linux-console/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world part II</title>
		<link>http://www.davidgouveia.net/2011/09/hello-world/</link>
		<comments>http://www.davidgouveia.net/2011/09/hello-world/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 12:36:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davidgouveia.net/?p=1</guid>
		<description><![CDATA[This post is going to be like a rebirth of the blog. After some catastrophic events,  part of the information was lost. I will try to recover it in time.]]></description>
			<content:encoded><![CDATA[<p>This post is going to be like a rebirth of the blog. After some catastrophic events,  part of the information was lost. I will try to recover it in time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/09/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use nagios to check your raid arrays</title>
		<link>http://www.davidgouveia.net/2011/08/use-nagios-to-check-your-raid-arrays/</link>
		<comments>http://www.davidgouveia.net/2011/08/use-nagios-to-check-your-raid-arrays/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 12:52:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[adaptec]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[raid]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=4</guid>
		<description><![CDATA[As a sysadmin, I should always search and check for errors on every machine that I manage. Unfortunately one of them has an Adaptec 5405 which I forgot to monitor using nagios and just like Murphy’s Law says – “Anything that can go wrong will go wrong” – something went wrong and I have lost [...]]]></description>
			<content:encoded><![CDATA[<p>As a sysadmin, I should always search and check for errors on every machine that I manage. Unfortunately one of them has an Adaptec 5405 which I forgot to monitor using nagios and just like Murphy’s Law says – “Anything that can go wrong will go wrong” – something went wrong and I have lost information. Not a really big problem because I have backups of everything but it could have been avoided if I had monitored the status of the Adaptec just the way I do with software raid arrays (/proc/mdstat rules!).</p>
<p>So I developed another simple script using Perl (again <img src='http://www.davidgouveia.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' />  ) to check the status of all the available arrays.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="perl"><pre class="de1"><span class="co1">#!/usr/bin/perl -w</span>
<span class="kw2">use</span> strict<span class="sy0">;</span>
<span class="kw2">use</span> warnings<span class="sy0">;</span>
&nbsp;
<span class="kw1">my</span> <span class="re0">$adaptec_tool</span> <span class="sy0">=</span> <span class="st0">&quot;/usr/src/cmdline/arcconf&quot;</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">my</span> <span class="re0">$dump</span> <span class="sy0">=</span> <span class="st0">`$adaptec_tool getconfig 1 ld`</span><span class="sy0">;</span>
<span class="kw1">my</span> <span class="re0">@raids</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">while</span> <span class="br0">&#40;</span><span class="re0">$dump</span> <span class="sy0">=~</span> <span class="co2">/Logical device name.*?:.*?([a-z0-9]+).*?raid level.*?:.*?([0-9]+).*?status of logical device.*?:.*?([a-z0-9]+)/gsi</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw3">push</span> <span class="re0">@raids</span><span class="sy0">,</span> <span class="br0">&#123;</span><span class="st0">&quot;name&quot;</span> <span class="sy0">=&gt;</span> <span class="co3">$1</span><span class="sy0">,</span> <span class="st0">&quot;raidlevel&quot;</span> <span class="sy0">=&gt;</span> <span class="co3">$2</span><span class="sy0">,</span> <span class="st0">&quot;status&quot;</span> <span class="sy0">=&gt;</span> <span class="co3">$3</span><span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
<span class="br0">&#125;</span>
&nbsp;
<span class="kw1">foreach</span> <span class="kw1">my</span> <span class="re0">$raid</span> <span class="br0">&#40;</span><span class="re0">@raids</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re0">$$raid</span><span class="br0">&#123;</span>status<span class="br0">&#125;</span> <span class="kw1">ne</span> <span class="st0">&quot;Optimal&quot;</span> <span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
                <span class="kw3">print</span> <span class="st0">&quot;Critical: Raid not Optimal! (Array Name: $$raid{name}, Level: $$raid{raidlevel}, Status: $$raid{status})<span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
                <span class="kw3">exit</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw3">print</span> <span class="st0">&quot;OK: All arrays in optimal shape<span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
<span class="kw3">exit</span> <span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>You just need to download the “<a href="http://www.adaptec.com/en-us/downloads/storage_manager/sm/productid=sas-5405&#038;dn=adaptec+raid+5405.html">Adaptec Storage Manager</a>” to connect to the RAID card and read the status. You can use this <a href="http://www.adaptec.com/en-us/downloads/storage_manager/sm/productid=sas-5405&#038;dn=adaptec+raid+5405.html">link</a> to do it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/08/use-nagios-to-check-your-raid-arrays/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to receive an alert everytime a website changes…</title>
		<link>http://www.davidgouveia.net/2011/08/how-to-receive-an-alert-everytime-a-website-changes%e2%80%a6/</link>
		<comments>http://www.davidgouveia.net/2011/08/how-to-receive-an-alert-everytime-a-website-changes%e2%80%a6/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 09:05:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=13</guid>
		<description><![CDATA[I’ve been trying to learn how to use Perl to do some simple stuff whenever I just cannot use PHP. PERL is a language that I have access on every machine under my control, but unfortunately I cannot say the same thing about PHP and that is why I have decided to start learning using [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been trying to learn how to use Perl to do some simple stuff whenever I just cannot use PHP. PERL is a language that I have access on every machine under my control, but unfortunately I cannot say the same thing about PHP and that is why I have decided to start learning using this ultra flexible language.</p>
<p>Now, the first thing I have developed (aside from the popular Hello World – LOL) was a simple script to check for website updates. This was particularly useful to check for updates on a website related to a contest.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="perl"><pre class="de1"><span class="kw2">use</span> strict<span class="sy0">;</span>
<span class="kw2">use</span> warnings<span class="sy0">;</span>
<span class="kw2">use</span> LWP<span class="sy0">::</span><span class="me2">Simple</span><span class="sy0">;</span>
<span class="kw2">use</span> Digest<span class="sy0">::</span><span class="me2">MD5</span> <span class="kw3">qw</span><span class="br0">&#40;</span>md5 md5_hex md5_base64<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw2">use</span> Encode <span class="kw3">qw</span><span class="br0">&#40;</span>encode_utf8<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">my</span> <span class="re0">$link</span>                <span class="sy0">=</span> <span class="st_h">'http://www.foobar.com'</span><span class="sy0">;</span>
<span class="kw1">my</span> <span class="re0">$email_from</span>          <span class="sy0">=</span> <span class="st_h">'foo@bar.com'</span><span class="sy0">;</span>
<span class="kw1">my</span> <span class="re0">$email</span>               <span class="sy0">=</span> <span class="st_h">'bar@foo.com'</span><span class="sy0">;</span>
<span class="kw1">my</span> <span class="re0">$email_subject</span>       <span class="sy0">=</span> <span class="st_h">'Website Changed!'</span><span class="sy0">;</span>
<span class="kw1">my</span> <span class="re0">$email_body</span>          <span class="sy0">=</span> <span class="st_h">'Hello! I just want to let you know that the website '</span> 
                          <span class="sy0">.</span> <span class="re0">$link</span> <span class="sy0">.</span> <span class="st_h">' have just changed!'</span><span class="sy0">;</span>
<span class="kw1">my</span> <span class="re0">$tmp_file</span>            <span class="sy0">=</span> <span class="st_h">'/tmp/stored_hash'</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">my</span> <span class="re0">$web_source</span> <span class="sy0">=</span> get<span class="br0">&#40;</span> <span class="re0">$link</span> <span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">my</span> <span class="re0">$current_hash</span> <span class="sy0">=</span>  md5_hex<span class="br0">&#40;</span>encode_utf8<span class="br0">&#40;</span><span class="re0">$web_source</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">-</span>e <span class="re0">$tmp_file</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
        <span class="kw3">open</span> FH<span class="sy0">,</span> <span class="st0">&quot;&lt;$tmp_file&quot;</span> <span class="kw1">or</span> <span class="kw3">die</span> <span class="st0">&quot;could not open: $!<span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
        <span class="kw1">my</span> <span class="re0">$mod_hash</span> <span class="sy0">=</span> <span class="re4">&lt;FH&gt;</span><span class="sy0">;</span>
        <span class="kw1">if</span><span class="br0">&#40;</span> <span class="re0">$current_hash</span> <span class="kw1">ne</span> <span class="re0">$mod_hash</span> <span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
                <span class="kw3">open</span><span class="br0">&#40;</span>MAIL<span class="sy0">,</span> <span class="st0">&quot;|/usr/sbin/sendmail -t&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw3">print</span> MAIL <span class="st0">&quot;To: $email<span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
                <span class="kw3">print</span> MAIL <span class="st0">&quot;From: $email_from<span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
                <span class="kw3">print</span> MAIL <span class="st0">&quot;Subject: $email_subject<span class="es0">\n</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
                <span class="kw3">print</span> MAIL <span class="st0">&quot;$email_body<span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
                <span class="kw3">close</span><span class="br0">&#40;</span>MAIL<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        <span class="br0">&#125;</span>
        <span class="kw3">close</span> FH<span class="sy0">;</span>
<span class="br0">&#125;</span>
        <span class="kw3">open</span> FH<span class="sy0">,</span> <span class="st0">&quot;&gt;$tmp_file&quot;</span> <span class="kw1">or</span> <span class="kw3">die</span> <span class="st0">&quot;could not create: $!<span class="es0">\n</span>&quot;</span><span class="sy0">;</span>
        <span class="kw3">print</span> FH <span class="re0">$current_hash</span><span class="sy0">;</span>
        <span class="kw3">close</span> FH<span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Just replace the email and link stuff to suite your needs and you are all set! Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/08/how-to-receive-an-alert-everytime-a-website-changes%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beware of domainsarefree.com promotion!</title>
		<link>http://www.davidgouveia.net/2011/07/beware-of-domainsarefree-com-promotion/</link>
		<comments>http://www.davidgouveia.net/2011/07/beware-of-domainsarefree-com-promotion/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 13:08:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[domainsarefree.com]]></category>
		<category><![CDATA[scam]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=17</guid>
		<description><![CDATA[If you are thinking about using domainsarefree.com to register a website, please think twice! I tried to register a domain which failed because I couldn’t find my credit card. I just thought “No problem, I will search for my wallet and register the domain later…” Two days later when I tried to register that domain [...]]]></description>
			<content:encoded><![CDATA[<p>If you are thinking about using domainsarefree.com to register a website, please think twice! I tried to register a domain which failed because I couldn’t find my credit card. I just thought “No problem, I will search for my wallet and register the domain later…”</p>
<p>Two days later when I tried to register that domain again it was already registered! And I thought to myself: “how the heck did that happen? That domain is complex with so many letters and not even related to a recent hot topic, this can’t be a coincidence!”</p>
<p>I don’t like to be paranoid, but after reading a few links like this one I now understand what happened.</p>
<p>So be aware: If you want to register a domain, either do it fast or don’t even use domainsarefree.com otherwise you will end up with a robbed domain. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/07/beware-of-domainsarefree-com-promotion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buggy JAVA IDEs</title>
		<link>http://www.davidgouveia.net/2011/05/buggy-java-ides/</link>
		<comments>http://www.davidgouveia.net/2011/05/buggy-java-ides/#comments</comments>
		<pubDate>Sun, 01 May 2011 13:12:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[intellij]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=20</guid>
		<description><![CDATA[A few months ago I got tired of using eclipse as my IDE because it is extremely slowwww, so I’ve decided to give an oportunity to IntelliJ Idea. It seems faster than eclipse. No doubts about that. But then I came across these king of lame errors: I’m getting tired of using such lame IDEs [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago I got tired of using eclipse as my IDE because it is extremely slowwww, so I’ve decided to give an oportunity to IntelliJ Idea.</p>
<p>It seems faster than eclipse. No doubts about that. But then I came across these king of lame errors:</p>
<p><a href="http://www.davidgouveia.net/wp-content/uploads/2011/05/lameerror.png"><img class="alignnone size-full wp-image-162" title="Intellij Lame Error!" src="http://www.davidgouveia.net/wp-content/uploads/2011/05/lameerror.png" alt="" width="508" height="188" /></a></p>
<p>I’m getting tired of using such lame IDEs with basic bugs. Any alternative to develop Java/Android applications?</p>
<p>I wish someone could develop a Visual Studio clone for java <img src='http://www.davidgouveia.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/05/buggy-java-ides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alsa Sound support for HDMI audio passthrough using an Nvidia EN210</title>
		<link>http://www.davidgouveia.net/2011/04/alsa-sound-support-for-hdmi-audio-passthrough-using-an-nvidia-en210/</link>
		<comments>http://www.davidgouveia.net/2011/04/alsa-sound-support-for-hdmi-audio-passthrough-using-an-nvidia-en210/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 13:18:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[alsa]]></category>
		<category><![CDATA[en210]]></category>
		<category><![CDATA[nvidia]]></category>
		<category><![CDATA[xbmc]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=25</guid>
		<description><![CDATA[This is probably a common problem among all the people trying to get audio over HDMI under Linux using an EN210 graphics card (or similar). Even though the HDMI may appear in your available cards listed in proc (/proc/asound/cards) you will probably see that you cannot find it using the aplay utility. Just check it [...]]]></description>
			<content:encoded><![CDATA[<p>This is probably a common problem among all the people trying to get audio over HDMI under Linux using an EN210 graphics card (or similar).</p>
<p>Even though the HDMI may appear in your available cards listed in proc (/proc/asound/cards) you will probably see that you cannot find it using the aplay utility. Just check it running the command “aplay -l”. The HDMI device isn’t listed here isn’t it?</p>
<p>The reason for this issue is related to the ALSA driver version 1.0.21 (or older) which is quite buggy for these graphics cards.</p>
<p>You can check which version you are using by executing the following command:</p>
<p>    cat /proc/asound/version</p>
<p>If you get a version older than 1.0.21 then you need to upgrade it. You can check your favourite distribution’s repository for an update or you can try to compile it from source code.</p>
<p>If you can’t find an update, check this page: http://ubuntuforums.org/showthread.php?t=1681577</p>
<p>It might help you <img src='http://www.davidgouveia.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/04/alsa-sound-support-for-hdmi-audio-passthrough-using-an-nvidia-en210/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to mount NTFS filesystems under 11.04</title>
		<link>http://www.davidgouveia.net/2011/04/how-to-mount-ntfs-filesystems-under-11-04/</link>
		<comments>http://www.davidgouveia.net/2011/04/how-to-mount-ntfs-filesystems-under-11-04/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 13:15:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[code 21]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[libfuse2]]></category>
		<category><![CDATA[ntfs]]></category>

		<guid isPermaLink="false">http://www.davidgouveia.net/?p=23</guid>
		<description><![CDATA[If you are running the latest version of Ubuntu and tried to mount a NTFS filesystem you probably already know that you can’t and maybe you have even seen an error like “mount exited with exit code 21″. This seems to be due to a bug in libfuse2 and/or fuse-utils package. To fix this temporarly [...]]]></description>
			<content:encoded><![CDATA[<p>If you are running the latest version of Ubuntu and tried to mount a NTFS filesystem you probably already know that you can’t and maybe you have even seen an error like “mount exited with exit code 21″.</p>
<p>This seems to be due to a bug in libfuse2 and/or fuse-utils package. To fix this temporarly you can downgrade both packages to a prior version. libfuse2 and fuse-utils version 2.8.1-1.1ubuntu2.2 seem to be OK but 2.8.1-1.1ubuntu3.2 is useless.</p>
<p>Just download both packages and install them:</p>
<p>http://launchpadlibrarian.net/60433788/libfuse2_2.8.1-1.1ubuntu2.2_i386.deb</p>
<p>http://launchpadlibrarian.net/60433786/fuse-utils_2.8.1-1.1ubuntu2.2_i386.deb</p>
<p>Don’t forget that these are 32bit packages. If you are using 64bit OS then download the needed packages.</p>
<blockquote><p>    sudo dpkg -i libfuse2_2.8.1-1.1ubuntu2.2_i386.deb<br />
    sudo dpkg -i fuse-utils_2.8.1-1.1ubuntu2.2_i386.deb </p></blockquote>
<p>Problem solved <img src='http://www.davidgouveia.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidgouveia.net/2011/04/how-to-mount-ntfs-filesystems-under-11-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

