<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Graciano Torrão's Deblog</title>
	<atom:link href="http://gracianotorrao.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gracianotorrao.wordpress.com</link>
	<description>O meu diário de trabalho em Debian ... e não só!</description>
	<lastBuildDate>Tue, 17 Nov 2009 21:34:25 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='gracianotorrao.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/f34bb289b93585baf0068db90e4483f7?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Graciano Torrão's Deblog</title>
		<link>http://gracianotorrao.wordpress.com</link>
	</image>
			<item>
		<title>GNU e a Virtualização</title>
		<link>http://gracianotorrao.wordpress.com/2009/11/17/gnu-e-a-virtualizacao/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/11/17/gnu-e-a-virtualizacao/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 21:34:25 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1690</guid>
		<description><![CDATA[&#8220;What&#8217;s GNU in Virtualization&#8221;


Este é o título de um artigo publicado na Linux Magazine, que resume as principais opções para aqueles que pretendam &#8220;Virtualizar&#8221;.
Deixo-vos com esta sugestão de leitura: http://www.linux-mag.com/id/7614
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1690&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h1><strong>&#8220;What&#8217;s GNU in Virtualization&#8221;</strong></h1>
<p><a href="http://www.gnu.org" target="_blank"><img class="aligncenter size-full wp-image-1692" title="gnu" src="http://gracianotorrao.files.wordpress.com/2009/11/gnu.jpg?w=300&#038;h=293" alt="" width="300" height="293" /></a></p>
<p style="text-align:center;"><a href="http://wiki.openvz.org" target="_blank"><img class="alignnone size-full wp-image-1694" title="openvz" src="http://gracianotorrao.files.wordpress.com/2009/11/openvz.png?w=106&#038;h=106" alt="" width="106" height="106" /></a><a href="http://www.linux-kvm.org" target="_blank"><img class="alignnone size-full wp-image-1693" title="kvm" src="http://gracianotorrao.files.wordpress.com/2009/11/kvm.png?w=155&#038;h=48" alt="" width="155" height="48" /></a><a href="http://www.proxmox.org" target="_blank"><img class="alignnone size-full wp-image-1695" title="promox" src="http://gracianotorrao.files.wordpress.com/2009/11/promox.png?w=242&#038;h=50" alt="" width="242" height="50" /></a><a href="http://www.virtualbox.org" target="_self"><img class="alignnone size-full wp-image-1696" title="virtualbox" src="http://gracianotorrao.files.wordpress.com/2009/11/virtualbox.png?w=111&#038;h=111" alt="" width="111" height="111" /></a><a href="http://gracianotorrao.files.wordpress.com/2009/11/xen_logo.gif" target="_blank"><img class="size-full wp-image-1698 aligncenter" title="xen_logo" src="http://gracianotorrao.files.wordpress.com/2009/11/xen_logo.gif?w=149&#038;h=67" alt="" width="149" height="67" /></a></p>
<p>Este é o título de um artigo publicado na Linux Magazine, que resume as principais opções para aqueles que pretendam &#8220;Virtualizar&#8221;.</p>
<p>Deixo-vos com esta sugestão de leitura: <a href="http://www.linux-mag.com/id/7614" target="_blank">http://www.linux-mag.com/id/7614</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1690/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1690/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1690/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1690/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1690/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1690/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1690/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1690/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1690/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1690/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1690&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/11/17/gnu-e-a-virtualizacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/gnu.jpg" medium="image">
			<media:title type="html">gnu</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/openvz.png" medium="image">
			<media:title type="html">openvz</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/kvm.png" medium="image">
			<media:title type="html">kvm</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/promox.png" medium="image">
			<media:title type="html">promox</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/virtualbox.png" medium="image">
			<media:title type="html">virtualbox</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/xen_logo.gif" medium="image">
			<media:title type="html">xen_logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Qt &#8230; blogs about:</title>
		<link>http://gracianotorrao.wordpress.com/2009/11/14/qt-blogs-about/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/11/14/qt-blogs-about/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 09:36:46 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[QT]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1684</guid>
		<description><![CDATA[Encontrei este blog sobre Qt &#8230; vou começar a coleccionar estes contributos.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1684&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://thelins.se/learnqt" target="_blank"><img class="aligncenter size-full wp-image-1685" title="blogqt1" src="http://gracianotorrao.files.wordpress.com/2009/11/blogqt1.png?w=714&#038;h=266" alt="blogqt1" width="714" height="266" /></a>Encontrei este blog sobre Qt &#8230; vou começar a coleccionar estes contributos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1684/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1684&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/11/14/qt-blogs-about/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/blogqt1.png" medium="image">
			<media:title type="html">blogqt1</media:title>
		</media:content>
	</item>
		<item>
		<title>Event Filters &#8211; C++/Qt</title>
		<link>http://gracianotorrao.wordpress.com/2009/11/13/event-filters-cqt/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/11/13/event-filters-cqt/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 16:36:41 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[QT]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1666</guid>
		<description><![CDATA[
&#8220;Em Qt, “events” são objectos, derivados da classe abstracta QEvent, que representa acontecimentos que ocorreram no seio de uma aplicação ou como resultado de actividade externa  da qual é necessário tomar conhecimento. Qualquer instância da subclasse QObject pode receber e manipular “Events”, mas estes tornam-se particularmente úteis no caso dos Widgets.
&#8220;
http://doc.trolltech.com/4.5/eventsandfilters.html
As situações é que podemos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1666&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img class="alignright size-full wp-image-1667" title="eventfilter" src="http://gracianotorrao.files.wordpress.com/2009/11/eventfilter.png?w=500&#038;h=577" alt="eventfilter" width="500" height="577" /></p>
<p>&#8220;Em Qt, “events” são objectos, derivados da classe abstracta QEvent, que representa acontecimentos que ocorreram no seio de uma aplicação ou como resultado de actividade externa  da qual é necessário tomar conhecimento. Qualquer instância da subclasse QObject pode receber e manipular “Events”, mas estes tornam-se particularmente úteis no caso dos Widgets.<br />
&#8220;</p>
<p><a href="http://doc.trolltech.com/4.5/eventsandfilters.html" target="_blank">http://doc.trolltech.com/4.5/eventsandfilters.html</a></p>
<p>As situações é que podemos sentir a necessidade de utilizar esta funcionalidade do Qt são infinitas, por isso vou apenas descrever a situação particular que me levou até os &#8220;Event Filters&#8221;.</p>
<p>Quando abordei a criação de um &#8220;Splashscreen&#8221; ( <a href="http://gracianotorrao.wordpress.com/2009/10/23/como-criar-um-splash-screen-para-uma-aplicacao-em-qt/" target="_blank">aqui</a> ) ainda não me tinha apercebido que ao clicar sobre a minha &#8220;splashimage&#8221; esta desaparecia.</p>
<p>Tal acontece porque a classe QSplashScreen, tal como todas as outras, é derivada da classe&#8221;QObject&#8221; e, entre outros, responde ao evento de clique de rato ( <tt>QEvent::MouseButtonPress ).</tt></p>
<p>Uma forma de contornar esta situação consiste em:</p>
<p><!-- p, li { white-space: pre-wrap; } --></p>
<ul>
<li> criar uma nova classe &#8220;<!--StartFragment-->mySplash&#8221; derivando a classe QSplashScreen</li>
<li>instalar um &#8220;event filter&#8221; que apenas &#8220;deixa passar&#8221; os eventos desejados.</li>
</ul>
<p><span style="color:#3366ff;"><strong>Exemplo 1</strong></span></p>
<p>O &#8220;<strong>event filter</strong>&#8221; bloqueia tudo, ou seja, nem cliques de rato nem teclas podem encerrar prematuramente o &#8220;<strong>splashscreen</strong>&#8220;.</p>
<pre class="brush: cpp;">
#include &quot;mysplash.h&quot;

mySplash::mySplash(QWidget *parent)
        :QSplashScreen(parent)
{
    this-&gt;installEventFilter(this);
}

bool mySplash::eventFilter(QObject *target, QEvent *event){
    return true;
}
</pre>
<p>obter código <a href="http://www.box.net/shared/sges63fdh5" target="_blank">aqui</a></p>
<p><strong><span style="color:#3366ff;">Exemplo 2</span></strong></p>
<p>Consiste numa pequena alteração que permite utilizar um &#8220;duplo clique de rato&#8221; para encerrar o &#8220;<strong>splashscreen</strong>&#8220;.</p>
<pre class="brush: cpp;">
#include &quot;mysplash.h&quot;

mySplash::mySplash(QWidget *parent)
        :QSplashScreen(parent)
{
    this-&gt;installEventFilter(this);
}

bool mySplash::eventFilter(QObject *target, QEvent *event){
    if(event-&gt;type() == QEvent::MouseButtonDblClick)
        return false;
    else
        return true;
}
</pre>
<p>obter código <a href="http://www.box.net/shared/c0g7cyq29d" target="_blank">aqui</a></p>
<p>Claro que este assunto não se esgota por aqui &#8230; mas há que continuar a investigar :)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1666/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1666&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/11/13/event-filters-cqt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/eventfilter.png" medium="image">
			<media:title type="html">eventfilter</media:title>
		</media:content>
	</item>
		<item>
		<title>Internet lenta &#8230; será o DNS? Mude para OpenDNS.</title>
		<link>http://gracianotorrao.wordpress.com/2009/11/11/internet-lenta-sera-o-dns-mude-para-opendns/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/11/11/internet-lenta-sera-o-dns-mude-para-opendns/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 22:13:10 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[configuração]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[redes]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1653</guid>
		<description><![CDATA[No meu caso era.
Agora reparem na imagem ( retirada de  http://www.labnol.org/internet/tools/opendsn-what-is-opendns-why-required-2/2587/ ).

Parece publicidade enganosa mas, NÃO É!
Aqueles preciosos segundos que o meu ISP, e os respectivos servidores de DNS, me estavam a fazer perder sempre que digitava um novo endereço, praticamente desapareceram.
Ainda não resolvi alguns problemas técnicos relacionados com o network-manager e a sua teimosia [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1653&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>No meu caso era.</p>
<p>Agora reparem na imagem ( retirada de  <a href="http://www.labnol.org/internet/tools/opendsn-what-is-opendns-why-required-2/2587/" target="_blank">http://www.labnol.org/internet/tools/opendsn-what-is-opendns-why-required-2/2587/</a> ).</p>
<p><img class="aligncenter size-full wp-image-1654" title="opendns" src="http://gracianotorrao.files.wordpress.com/2009/11/opendns.png?w=432&#038;h=346" alt="opendns" width="432" height="346" /></p>
<p>Parece publicidade enganosa mas, <strong>NÃO É</strong>!</p>
<p>Aqueles preciosos segundos que o meu ISP, e os respectivos servidores de DNS, me estavam a fazer perder sempre que digitava um novo endereço, praticamente desapareceram.</p>
<p>Ainda não resolvi alguns problemas técnicos relacionados com o network-manager e a sua teimosia em alterar o conteúdo do /etc/resolv.conf mas, já agora, se tiverem a solução avisem ;)</p>
<p><a href="http://www.opendns.com" target="_blank"><img class="alignright size-full wp-image-1659" title="opendns" src="http://gracianotorrao.files.wordpress.com/2009/11/opendns1.png?w=100&#038;h=40" alt="opendns" width="100" height="40" /></a></p>
<p><span style="color:#3366ff;"><strong>Leitura recomendada:</strong></span></p>
<p><a href="http://en.wikipedia.org/wiki/Domain_Name_System" target="_blank">http://en.wikipedia.org/wiki/Domain_Name_System</a></p>
<p><a href="http://en.wikipedia.org/wiki/OpenDNS" target="_blank">http://en.wikipedia.org/wiki/OpenDNS</a></p>
<p><a href="http://www.labnol.org/internet/tools/opendsn-what-is-opendns-why-required-2/2587/" target="_blank">http://www.labnol.org/internet/tools/opendsn-what-is-opendns-why-required-2/2587/</a></p>
<p><a href="http://en.wikipedia.org/wiki/Resolv.conf" target="_blank">http://en.wikipedia.org/wiki/Resolv.conf</a></p>
<p><a href="http://www.stchman.com/conf_host.html" target="_blank">http://www.stchman.com/conf_host.html</a></p>
<p><a href="http://www.wisegeek.com/what-is-craigslist.htm" target="_blank">http://www.wisegeek.com/what-is-craigslist.htm</a> :)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1653/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1653/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1653/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1653/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1653/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1653/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1653/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1653/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1653/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1653/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1653&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/11/11/internet-lenta-sera-o-dns-mude-para-opendns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/opendns.png" medium="image">
			<media:title type="html">opendns</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/opendns1.png" medium="image">
			<media:title type="html">opendns</media:title>
		</media:content>
	</item>
		<item>
		<title>Exemplo de uma aplicação escrita em C++/Qt com ligação a uma base de dados MySQL</title>
		<link>http://gracianotorrao.wordpress.com/2009/11/06/exemplo-de-uma-aplicacao-escrita-em-cqt-com-ligacao-a-uma-base-de-dados-mysql/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/11/06/exemplo-de-uma-aplicacao-escrita-em-cqt-com-ligacao-a-uma-base-de-dados-mysql/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 23:17:07 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[QT]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1643</guid>
		<description><![CDATA[
Este é o quarto de uma série de exemplos que preparei para demonstrar alguns aspectos relacionados com a ligação a uma base de dados MySQL, utilizando a linguagem C++/Qt.
No fundo limitei-me a criar uma versão mais simplificado do que tinha feito aqui.
Convém lembrar que este exemplo se liga ao &#8220;localhost&#8221;, à base de dados Qt, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1643&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img class="aligncenter size-medium wp-image-1645" title="bd" src="http://gracianotorrao.files.wordpress.com/2009/11/bd.png?w=427&#038;h=343" alt="bd" width="427" height="343" /></p>
<p>Este é o quarto de uma série de exemplos que preparei para demonstrar alguns aspectos relacionados com a ligação a uma base de dados MySQL, utilizando a linguagem C++/Qt.</p>
<p>No fundo limitei-me a criar uma versão mais simplificado do que tinha feito <a href="http://gracianotorrao.wordpress.com/2009/04/23/exemplos-qt-ligacao-a-uma-base-de-dados-mysql/" target="_blank">aqui</a>.</p>
<p>Convém lembrar que este exemplo se liga ao &#8220;localhost&#8221;, à base de dados Qt, com o utilizador &#8220;qtuser&#8221; que utiliza a palavra passe &#8220;123&#8243;.</p>
<p>Se estas condições não forem satisfeitas, o primeiro semáforo(base de dados) nunca ficará verde.</p>
<p>O melhor é experimentarem que a &#8220;malta&#8221; dá as dicas que faltarem.</p>
<p>O código pode ser obtido <a href="http://www.box.net/shared/24zob0h6ah" target="_blank">aqui</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1643/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1643/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1643/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1643/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1643/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1643/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1643/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1643/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1643/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1643/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1643&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/11/06/exemplo-de-uma-aplicacao-escrita-em-cqt-com-ligacao-a-uma-base-de-dados-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/11/bd.png?w=300" medium="image">
			<media:title type="html">bd</media:title>
		</media:content>
	</item>
		<item>
		<title>#7 Utilização elementar dos comandos MySQL do subconjunto DML</title>
		<link>http://gracianotorrao.wordpress.com/2009/10/24/7-utilizacao-elementar-dos-comandos-mysql-do-subconjunto-dml/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/10/24/7-utilizacao-elementar-dos-comandos-mysql-do-subconjunto-dml/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 10:34:51 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1605</guid>
		<description><![CDATA[Nos pontos #1 a #6 falei sobre:

instalar um servidor/cliente MySQL;
criar uma base de dados;
criar utilizadores;
definir privilégios de acesso para os utilizadores;
criar tabelas

Se não se acreditarem basta carregar no golfinho para rever.
Mas de que serve tudo isto se eu não conseguir escrever /alterar/eliminar informação acerca de Jogadores e Equipas na minha base de dados?!
Por esta razão [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1605&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Nos pontos #1 a #6 falei sobre:</p>
<ul>
<li>instalar um servidor/cliente MySQL;</li>
<li>criar uma base de dados;</li>
<li>criar utilizadores;</li>
<li>definir privilégios de acesso para os utilizadores;</li>
<li>criar tabelas</li>
</ul>
<p>Se não se acreditarem basta carregar no golfinho para rever.</p>
<p>Mas de que serve tudo isto se eu não conseguir escrever /alterar/eliminar informação acerca de Jogadores e Equipas na minha base de dados?!</p>
<p>Por esta razão vou registar aqui uma versão reduzida do subconjunto DML ( Data Manipulation Language), cujos principais comandos são:</p>
<ul>
<li>SELECT ( <a href="http://dev.mysql.com/doc/refman/5.0/en/select.html" target="_blank">http://dev.mysql.com/doc/refman/5.0/en/select.html</a> )</li>
<li>INSERT ( <a href="http://dev.mysql.com/doc/refman/5.0/en/insert.html" target="_blank">http://dev.mysql.com/doc/refman/5.0/en/insert.html</a> )</li>
<li>DELETE ( <a href="http://dev.mysql.com/doc/refman/5.0/en/delete.html" target="_blank">http://dev.mysql.com/doc/refman/5.0/en/delete.html</a> )</li>
<li>UPDATE ( <a href="http://dev.mysql.com/doc/refman/5.0/en/update.html" target="_blank">http://dev.mysql.com/doc/refman/5.0/en/update.html</a> )</li>
</ul>
<p><strong><span style="color:#3366ff;"># SELECT</span></strong></p>
<p>Permite obter dados a partir das tabelas.</p>
<p>Como neste momento as nossas tabelas ainda estão vazias o resultado é pouco esclarecedor, pelo que vamos reutilizar estes comandos mais para a frente.</p>
<pre class="brush: sql;">
mysql&gt; SELECT * FROM Equipa;
Empty set (0.00 sec)

mysql&gt; SELECT * FROM Jogador;
Empty set (0.00 sec)
</pre>
<p><strong><span style="color:#3366ff;"># INSERT</span></strong></p>
<p>Permite inserir os dados nas tabelas.</p>
<p>Vamos então inserir alguns dados relativos a equipas e jogadores.</p>
<pre class="brush: sql;">
mysql&gt; DESCRIBE Equipa;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| id          | tinyint(3)  | NO   | PRI | NULL    |       |
| nome        | varchar(15) | NO   |     | NULL    |       |
| nrsocios    | int(7)      | NO   |     | NULL    |       |
| campeonatos | tinyint(2)  | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql&gt; INSERT INTO Equipa(id, nome, nrsocios, campeonatos)
 -&gt; VALUES(1, &quot;SCP&quot;, 1000000, 45);
Query OK, 1 row affected (0.00 sec)

mysql&gt; INSERT INTO Equipa VALUES(2, &quot;FCP&quot;, 900000, 1);
Query OK, 1 row affected (0.00 sec)

mysql&gt; INSERT INTO Equipa(id, nome, nrsocios)
 -&gt; VALUES(3, &quot;SLB&quot;, 12);
Query OK, 1 row affected (0.00 sec)

mysql&gt; INSERT INTO Equipa(id, nome, nrsocios) VALUES(3, &quot;ERRO&quot;, 0);
ERROR 1062 (23000): Duplicate entry '3' for key 1
mysql&gt; SELECT * FROM Equipa;
+----+------+----------+-------------+
| id | nome | nrsocios | campeonatos |
+----+------+----------+-------------+
|  1 | SCP  |  1000000 |          45 |
|  2 | FCP  |   900000 |           1 |
|  3 | SLB  |       12 |        NULL |
+----+------+----------+-------------+
3 rows in set (0.00 sec)
</pre>
<p><strong><span style="color:#3366ff;"># UPDATE</span></strong></p>
<p>Permite alterar os dados previamente inseridos.</p>
<p>Vamos realizar algumas alterações aleatórias muito elementares.</p>
<pre class="brush: sql;">
mysql&gt; UPDATE Equipa
 -&gt; SET campeonatos = 1
 -&gt; WHERE nome = 'SCP';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql&gt; SELECT * FROM Equipa;
+----+------+----------+-------------+
| id | nome | nrsocios | campeonatos |
+----+------+----------+-------------+
|  1 | SCP  |  1000000 |           1 |
|  2 | FCP  |   900000 |           0 |
|  3 | SLB  |       12 |           0 |
+----+------+----------+-------------+
3 rows in set (0.00 sec)
</pre>
<p>x</p>
<p><strong><span style="color:#3366ff;"># DELETE</span></strong></p>
<p>Permite eliminar linhas/registos de uma tabela que foram previamente inseridos.</p>
<p>Partindo do princípio que duas das rquipas deveriam ser erradicadas do nosso campeonato,  vamos realizar algumas alterações aleatórias muito elementares.</p>
<pre class="brush: sql;">
mysql&gt; DELETE FROM Equipa
 -&gt; WHERE nome &lt;&gt; 'SCP';
Query OK, 2 rows affected (0.00 sec)

mysql&gt; SELECT * FROM Equipa;
+----+------+----------+-------------+
| id | nome | nrsocios | campeonatos |
+----+------+----------+-------------+
|  1 | SCP  |  1000000 |           1 |
+----+------+----------+-------------+
1 row in set (0.00 sec)
</pre>
<p>E que fique claro &#8230; <strong>NÃO SOU SPORTINGUISTA</strong> &#8230; sou futebolisticamente &#8220;<strong>ateu</strong>&#8220;.</p>
<p><a href="http://gracianotorrao.wordpress.com/2009/10/10/mysql-instalacao-e-preparacao-da-base-de-dados-num-sistema-debian/" target="_self"><img class="alignright size-full wp-image-1506" title="principal100" src="http://gracianotorrao.files.wordpress.com/2009/10/principal100.png?w=100&#038;h=65" alt="principal100" width="100" height="65" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1605/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1605&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/10/24/7-utilizacao-elementar-dos-comandos-mysql-do-subconjunto-dml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/10/principal100.png" medium="image">
			<media:title type="html">principal100</media:title>
		</media:content>
	</item>
		<item>
		<title>Como criar um Splash Screen para uma aplicação em Qt</title>
		<link>http://gracianotorrao.wordpress.com/2009/10/23/como-criar-um-splash-screen-para-uma-aplicacao-em-qt/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/10/23/como-criar-um-splash-screen-para-uma-aplicacao-em-qt/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 17:58:06 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[QT]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1575</guid>
		<description><![CDATA[
Um splashscreen é um elemento gráfico que é exibido quando uma aplicação é iniciada.
Estes podem ser utilizados por razões puramente &#8220;estéticas&#8221; mas tornam-se particularmente úteis quando a aplicação demora algum tempo a carregar. Nestas situações é possível ir fornecendo alguma informação ao utilizador, de forma a que este saiba que a aplicação está a ser [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1575&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img class="aligncenter size-full wp-image-1591" title="f0" src="http://gracianotorrao.files.wordpress.com/2009/10/f01.png?w=637&#038;h=311" alt="f0" width="637" height="311" /></p>
<p>Um splashscreen é um elemento gráfico que é exibido quando uma aplicação é iniciada.<br />
Estes podem ser utilizados por razões puramente &#8220;estéticas&#8221; mas tornam-se particularmente úteis quando a aplicação demora algum tempo a carregar. Nestas situações é possível ir fornecendo alguma informação ao utilizador, de forma a que este saiba que a aplicação está a ser carregada.<br />
O ponto de partida para criarmos o nosso splashscreen em Qt deverá naturalmente ser a classe que possibilita a sua criação, ou seja, <a href="http://doc.trolltech.com/4.5/qsplashscreen.html" target="_blank">QSplashScreen</a>.</p>
<p>De seguida, e  como um exemplo ajuda sempre, vou disponibilizar as experiências que realizei:</p>
<p><span style="color:#3366ff;"><strong>#1 &#8211; O básico</strong></span></p>
<p>Surge o splashcreen enquanto a janela principal é carregada. Neste caso é tudo muito rápido pois a aplicação exemplo é minúscula.</p>
<p>Exemplo:</p>
<pre class="brush: cpp;">
#include &lt;QtGui/QApplication&gt;
#include &quot;mainwindow.h&quot;
#include &lt;QSplashScreen&gt;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPixmap pixmap(&quot;f0.png&quot;);
    QSplashScreen splash;
    splash.setPixmap(pixmap);
    splash.show();
    MainWindow w;
    w.show();
    splash.finish(&amp;w);
    return a.exec();
}
</pre>
<p><a href="http://www.box.net/shared/xtl4ooxqld" target="_blank">Download</a></p>
<p><span style="color:#3366ff;"><strong>#2 &#8211; Garantir que o splashscreen &#8220;sobrevive&#8221; por 5 segundos, enquanto exibo uma mensagem<br />
</strong></span></p>
<p>Exemplo:</p>
<pre class="brush: cpp;">
#include &lt;QtGui/QApplication&gt;
#include &quot;mainwindow.h&quot;
#include &lt;QSplashScreen&gt;
#include &lt;QTimer&gt;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPixmap pixmap(&quot;f0.png&quot;);
    QSplashScreen splash;
    splash.setPixmap(pixmap);
    splash.show();
    splash.showMessage(QObject::trUtf8(&quot;A preparar a janela principal ...&quot;), Qt::AlignRight|Qt::AlignTop, Qt::black);
    MainWindow w;
    QTimer::singleShot(5000, &amp;splash, SLOT(close()));
    QTimer::singleShot(5000, &amp;w, SLOT(show()));
    return a.exec();
}
</pre>
<p><a href="http://www.box.net/shared/vi3tyl2u2b" target="_blank">Download</a></p>
<p><span style="color:#3366ff;"><strong>#3 &#8211; Tenho várias tarefas para executar, e quero ir mantendo o utilizador informado. Entretanto vou mostrando imagens diferentes.<br />
</strong></span></p>
<p>Exemplo:</p>
<pre class="brush: cpp;">
void operacao_03();

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSplashScreen *splash = new QSplashScreen;
    splash-&gt;setPixmap(QPixmap(&quot;:/splash/f2&quot;));
    splash-&gt;show();
    splash-&gt;showMessage(QObject::trUtf8(&quot;A executar a operação 01 ...&quot;), Qt::AlignRight|Qt::AlignTop, Qt::black);
    operacao_01();
    splash-&gt;setPixmap(QPixmap(&quot;:/splash/f1&quot;));
    splash-&gt;showMessage(QObject::trUtf8(&quot;A executar a operação 02 ...&quot;), Qt::AlignRight|Qt::AlignBottom, Qt::black);
    operacao_02();
    splash-&gt;setPixmap(QPixmap(&quot;:/splash/f0&quot;));
    splash-&gt;showMessage(QObject::trUtf8(&quot;A executar a operação 03 ...&quot;), Qt::AlignRight|Qt::AlignTop, Qt::black);
    operacao_03();

    MainWindow w;
    w.show();
    splash-&gt;finish(&amp;w);
    delete splash;
    return a.exec();
}

void operacao_01(){
    sleep(2);
}

void operacao_02(){
    sleep(2);
}

void operacao_03(){
    sleep(2);
}
</pre>
<p><a href="http://www.box.net/shared/uv7p4ytfdy" target="_blank">Download</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1575/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1575&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/10/23/como-criar-um-splash-screen-para-uma-aplicacao-em-qt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/10/f01.png" medium="image">
			<media:title type="html">f0</media:title>
		</media:content>
	</item>
		<item>
		<title>#6 Criar tabelas</title>
		<link>http://gracianotorrao.wordpress.com/2009/10/10/6-criar-tabelas/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/10/10/6-criar-tabelas/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 16:23:23 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1555</guid>
		<description><![CDATA[Note que todas as operações foram realizadas como root.
A partir de agora deverá iniciar uma sessão com o utilizador “psi”, com o qual pode fazer “tudo o que lhe passar pela cabeça”, pois as alterações apenas irão incidir sobre a base de dados “exemplo”.
A sequência seguinte demonstra como podemos:

criar a tabela Equipa (id, nome, nrsocios, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1555&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Note que todas as operações foram realizadas como root.</p>
<p>A partir de agora deverá iniciar uma sessão com o utilizador “psi”, com o qual pode fazer “tudo o que lhe passar pela cabeça”, pois as alterações apenas irão incidir sobre a base de dados “exemplo”.</p>
<p>A sequência seguinte demonstra como podemos:</p>
<ol>
<li>criar a tabela Equipa (id, nome, nrsocios, campeonatos);</li>
<li>criar a tabela Jogador (numero, nome, posicao, idade, equipa);</li>
<li>criar a tabela Lixo (atributo1, atributo2, atributo3);</li>
<li>visualizar estrutura da tabela “Lixo”;</li>
<li>eliminar o “atributo3” da tabela “Lixo”;</li>
<li>adicionar o “atributo4” à tabela “Lixo”;</li>
<li>eliminar a tabela “Lixo”.</li>
</ol>
<pre class="brush: sql;">
mysql&gt; CREATE TABLE Equipa
 -&gt; (
 -&gt; id TINYINT(3) PRIMARY KEY,
 -&gt; nome VARCHAR(15) NOT NULL,
 -&gt; nrsocios INT(7) NOT NULL,
 -&gt; campeonatos TINYINT(2)
 -&gt; );
Query OK, 0 rows affected (0.00 sec)

mysql&gt; CREATE TABLE Jogador
 -&gt; (
 -&gt; nrid INT(8) PRIMARY KEY,
 -&gt; nrcamisola TINYINT(2),
 -&gt; nome varchar(30) NOT NULL,
 -&gt; posicao VARCHAR(10) NOT NULL,
 -&gt; idade TINYINT(2),
 -&gt; equipa TINYINT(3) NOT NULL
 -&gt; );
Query OK, 0 rows affected (0.00 sec)

mysql&gt; CREATE TABLE Lixo
 -&gt; (
 -&gt; atributo1 INT(8) PRIMARY KEY,
 -&gt; atributo2 TINYINT(2),
 -&gt; atributo3 varchar(30) NOT NULL
 -&gt; );
Query OK, 0 rows affected (0.00 sec)

mysql&gt; DESCRIBE Lixo;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| atributo1 | int(8)      | NO   | PRI | NULL    |       |
| atributo2 | tinyint(2)  | YES  |     | NULL    |       |
| atributo3 | varchar(30) | NO   |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql&gt; ALTER TABLE Lixo DROP COLUMN Atributo3;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql&gt; DESCRIBE Lixo;
+-----------+------------+------+-----+---------+-------+
| Field     | Type       | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+-------+
| atributo1 | int(8)     | NO   | PRI | NULL    |       |
| atributo2 | tinyint(2) | YES  |     | NULL    |       |
+-----------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql&gt; ALTER TABLE Lixo ADD COLUMN Atributo4 int(4);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql&gt; DESCRIBE Lixo;
+-----------+------------+------+-----+---------+-------+
| Field     | Type       | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+-------+
| atributo1 | int(8)     | NO   | PRI | NULL    |       |
| atributo2 | tinyint(2) | YES  |     | NULL    |       |
| Atributo4 | int(4)     | YES  |     | NULL    |       |
+-----------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql&gt; DROP TABLE Lixo;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; SHOW TABLES;
+-------------------+
| Tables_in_Exemplo |
+-------------------+
| Equipa            |
| Jogador           |
+-------------------+
2 rows in set (0.00 sec)
</pre>
<p>Saber mais:</p>
<p><a href="http://dev.mysql.com/doc/refman/5.0/en/create-table.html" target="_self">http://dev.mysql.com/doc/refman/5.0/en/create-table.html</a></p>
<p><a href="http://dev.mysql.com/doc/refman/5.0/en/getting-information.html" target="_self">http://dev.mysql.com/doc/refman/5.0/en/getting-information.html</a></p>
<p><a href="http://dev.mysql.com/doc/refman/5.0/en/alter-table.html" target="_self">http://dev.mysql.com/doc/refman/5.0/en/alter-table.html</a></p>
<p><a href="http://dev.mysql.com/doc/refman/5.0/en/drop-table.html" target="_self">http://dev.mysql.com/doc/refman/5.0/en/drop-table.html</a></p>
<p><a href="http://gracianotorrao.wordpress.com/2009/10/10/mysql-instalacao-e-preparacao-da-base-de-dados-num-sistema-debian/" target="_self"><img class="alignright size-full wp-image-1506" title="principal100" src="http://gracianotorrao.files.wordpress.com/2009/10/principal100.png?w=100&#038;h=65" alt="principal100" width="100" height="65" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1555/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1555&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/10/10/6-criar-tabelas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/10/principal100.png" medium="image">
			<media:title type="html">principal100</media:title>
		</media:content>
	</item>
		<item>
		<title>MySQL &#8211; Instalação e preparação da Base de dados num sistema Debian</title>
		<link>http://gracianotorrao.wordpress.com/2009/10/10/mysql-instalacao-e-preparacao-da-base-de-dados-num-sistema-debian/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/10/10/mysql-instalacao-e-preparacao-da-base-de-dados-num-sistema-debian/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 15:22:35 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1500</guid>
		<description><![CDATA[Imagine que é um utilizador de Debian GNU/Linux e está prestes a iniciar-se no estudo das bases de dados MySQL!
Como aluno aplicado que com certeza é, vai ter todo o interesse em poder realizar todos os exercícios também na sua máquina pessoal.
Neste artigo vou tentar resumir os aspectos mais práticos no que diz respeito à [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1500&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Imagine que é um utilizador de Debian GNU/Linux e está prestes a iniciar-se no estudo das bases de dados MySQL!<br />
Como aluno aplicado que com certeza é, vai ter todo o interesse em poder realizar todos os exercícios também na sua máquina pessoal.<br />
Neste artigo vou tentar resumir os aspectos mais práticos no que diz respeito à instalação e utilização de uma base de dados MySQL num sistema Debian GNU/Linux.<br />
Não vou estar com preocupações de segurança nem performance da base de dados, focando-me apenas nos aspectos que permitem obter resultados rápidos e deixando o aprofundamento dos conteúdos abordados para uma fase posterior.<br />
Pretendo apresentar um exemplo que abrange desde a instalação do servidor até à criação de uma Base de Dados Relacional muito simples, preocupando-me apenas com a utilização dos subconjuntos da linguagem SQL de <a href="http://pt.wikipedia.org/wiki/Linguagem_de_defini%C3%A7%C3%A3o_de_dados" target="_blank">Linguagem de definição de dados</a> (LDD ou DDL, do Inglês Data Definition Language) e de <a href="http://pt.wikipedia.org/wiki/Linguagem_de_controle_de_dados" target="_blank">Linguagem de Controle de Dados</a> (LCD ou DCL do inglês Data Control Language).</p>
<p>No caso prático em estudo vamos falar de futebol, e o modelo correspondente é o seguinte:</p>
<p><img class="aligncenter size-medium wp-image-1502" title="diagrama1" src="http://gracianotorrao.files.wordpress.com/2009/10/diagrama1.png?w=300&#038;h=48" alt="diagrama1" width="300" height="48" /><br />
Os atributos associados às duas entidades são os seguintes:</p>
<p style="padding-left:30px;"><strong>Equipa</strong> (<span style="text-decoration:underline;">id</span>, nome, nrsocios, campeonatos)<br />
<strong>Jogador</strong> (<span style="text-decoration:underline;">numero</span>, nome, posicao, idade, equipa)</p>
<p>Para evitar que este artigo fique demasiado longo vou utilizar uma estratégia semelhante à que usei <a href="http://gracianotorrao.wordpress.com/2008/08/22/manipulacao-de-ficheiros-de-texto-em-linguagem-c/" target="_blank">aqui</a>.<br />
Os vários passos a seguir são apresentados aqui, na forma de uma hiperligação para um subartigo que cobre apenas essa tarefa específica, nos quais terei o cuidado de deixar alguns links para páginas com informação mais detalhada.</p>
<p>#1 <a href="http://gracianotorrao.wordpress.com/2009/10/10/1-instalacao-do-servidor-e-cliente-de-mysql/" target="_self">Instalação do servidor e cliente de MySQL</a><br />
#2 <a href="http://gracianotorrao.wordpress.com/2009/10/10/2-iniciar-uma-sessao-em-modo-interactivo/" target="_self">Iniciar uma sessão em modo interactivo</a><br />
#3 <a href="http://gracianotorrao.wordpress.com/2009/10/10/3-criar-utilizadores/" target="_self">Criar utilizadores</a><br />
#4 <a href="http://gracianotorrao.wordpress.com/2009/10/10/4-criareliminar-uma-base-de-dados/" target="_self">Criar/Eliminar uma base de dados</a><br />
#5 <a href="http://gracianotorrao.wordpress.com/2009/10/10/5-definir-os-privilegios-de-acesso-dos-utilizadores-as-bases-de-dados/" target="_self">Definir os privilégios de acesso dos utilizadores às bases de dados</a><br />
#6 <a href="http://gracianotorrao.wordpress.com/2009/10/10/6-criar-tabelas/" target="_self">Criar tabelas</a></p>
<p>#7 <a href="http://gracianotorrao.wordpress.com/2009/10/24/7-utilizacao-elementar-dos-comandos-mysql-do-subconjunto-dml/" target="_self">Utilização elementar dos comandos MySQL do subconjunto DML</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1500/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1500&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/10/10/mysql-instalacao-e-preparacao-da-base-de-dados-num-sistema-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/10/diagrama1.png?w=300" medium="image">
			<media:title type="html">diagrama1</media:title>
		</media:content>
	</item>
		<item>
		<title>#5 Definir os privilégios de acesso dos utilizadores às bases de dados</title>
		<link>http://gracianotorrao.wordpress.com/2009/10/10/5-definir-os-privilegios-de-acesso-dos-utilizadores-as-bases-de-dados/</link>
		<comments>http://gracianotorrao.wordpress.com/2009/10/10/5-definir-os-privilegios-de-acesso-dos-utilizadores-as-bases-de-dados/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 15:18:58 +0000</pubDate>
		<dc:creator>Graciano Torrão</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://gracianotorrao.wordpress.com/?p=1535</guid>
		<description><![CDATA[Por esta altura já temos a base de dados “exemplo” e o utilizador ”psi” criados.
Para que o utilizador “psi” possa utilizar a base de dados “exemplo” é necessário atribuir-lhe privilégios de acesso.
A sequência seguinte demonstra como podemos:

 verificar a existência da base de dados “exemplo”;
 verificar a existência do utilizador &#8216;psi&#8217; e respectivos privilégios;
 atribuir [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1535&subd=gracianotorrao&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Por esta altura já temos a base de dados “exemplo” e o utilizador ”psi” criados.<br />
Para que o utilizador “psi” possa utilizar a base de dados “exemplo” é necessário atribuir-lhe privilégios de acesso.<br />
A sequência seguinte demonstra como podemos:</p>
<ol>
<li> verificar a existência da base de dados “exemplo”;</li>
<li> verificar a existência do utilizador &#8216;psi&#8217; e respectivos privilégios;</li>
<li> atribuir ao utilizador “psi” privilégios totais sobre a base de dados “exemplo”;</li>
<li> verificar os novos privilégios do utilizador;</li>
<li> remover os privilégios do utilizador &#8216;psi&#8217;;</li>
<li> verificar se tudo voltou à situação inicial.</li>
</ol>
<pre class="brush: sql;">mysql&gt; SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| exemplo            |
| mysql              |
+--------------------+
3 rows in set (0.00 sec)

mysql&gt; SHOW GRANTS FOR 'psi';
+----------------------------------------------------------------------------------------------------+
| Grants for psi@%                                                                                   |
+----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'psi'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON exemplo.* TO 'psi'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; SHOW GRANTS FOR 'psi';
+----------------------------------------------------------------------------------------------------+
| Grants for psi@%                                                                                   |
+----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'psi'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
| GRANT ALL PRIVILEGES ON `exemplo`.* TO 'psi'@'%'                                                   |
+----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql&gt; REVOKE ALL ON exemplo.* FROM 'psi'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; SHOW GRANTS FOR 'psi';
+----------------------------------------------------------------------------------------------------+
| Grants for psi@%                                                                                   |
+----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'psi'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
</pre>
<p>Nota: Após a utilização de GRANT ou REVOKE é necessário executar o seguinte comando de forma a que as alterações tenham efeito:</p>
<pre class="brush: sql;">mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
</pre>
<p>Saber mais em:</p>
<p><a href="http://dev.mysql.com/doc/refman/5.1/en/grant.html" target="_blank">http://dev.mysql.com/doc/refman/5.1/en/grant.html</a><br />
<a href="http://dev.mysql.com/doc/refman/5.0/en/revoke.html" target="_blank">http://dev.mysql.com/doc/refman/5.0/en/revoke.html</a></p>
<p><a href="http://gracianotorrao.wordpress.com/2009/10/10/mysql-instalacao-e-preparacao-da-base-de-dados-num-sistema-debian/" target="_blank"><img class="alignright size-full wp-image-1506" title="principal100" src="http://gracianotorrao.files.wordpress.com/2009/10/principal100.png?w=100&#038;h=65" alt="principal100" width="100" height="65" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracianotorrao.wordpress.com/1535/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracianotorrao.wordpress.com/1535/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracianotorrao.wordpress.com/1535/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracianotorrao.wordpress.com/1535/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracianotorrao.wordpress.com/1535/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracianotorrao.wordpress.com/1535/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracianotorrao.wordpress.com/1535/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracianotorrao.wordpress.com/1535/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracianotorrao.wordpress.com/1535/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracianotorrao.wordpress.com/1535/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracianotorrao.wordpress.com&blog=3045652&post=1535&subd=gracianotorrao&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gracianotorrao.wordpress.com/2009/10/10/5-definir-os-privilegios-de-acesso-dos-utilizadores-as-bases-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e76057f5187b3f21cfb9019e114b8db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gracianotorrao</media:title>
		</media:content>

		<media:content url="http://gracianotorrao.files.wordpress.com/2009/10/principal100.png" medium="image">
			<media:title type="html">principal100</media:title>
		</media:content>
	</item>
	</channel>
</rss>