<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2portuguesefull.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
<title>xALEXANDRE</title>
<link>http://www.xalexandre.com.br</link>
<pubDate>Sun, 04 Oct 2009 17:45:42 +0000</pubDate>
<description>Tecnologia e Informação</description>
<generator>http://www.xalexandre.com.br</generator>
<language>pt-br</language>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><image><link>http://www.xalexandre.com.br</link><url /><title>xALEXANDRE</title></image>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/xALEXANDRE" type="application/rss+xml" /><feedburner:emailServiceId>1174253</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FxALEXANDRE" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FxALEXANDRE" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FxALEXANDRE" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.rojo.com/add-subscription?resource=http%3A%2F%2Ffeeds.feedburner.com%2FxALEXANDRE" src="http://blog.rojo.com/RojoWideRed.gif">Subscribe with Rojo</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/xALEXANDRE" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FxALEXANDRE" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FxALEXANDRE" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FxALEXANDRE" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:browserFriendly>xALEXANDRE - Tecnologia e Informação</feedburner:browserFriendly><item>
	<title>Tutorial - Desbloquear iPhone 2G, 3G, 3.0 com redsn0w: o novo QuickPwn!</title>
	<link>http://www.xalexandre.com.br/posts/Tutorial-Desbloquear-iPhone-2G,-3G,-3.0-com-redsn0w:-o-novo-QuickPwn/iPhone/Noticias/9325</link>
	<pubDate>Sat, 20 Jun 2009 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Tutorial-Desbloquear-iPhone-2G,-3G,-3.0-com-redsn0w:-o-novo-QuickPwn/iPhone/Noticias/9325</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Finalmente o nosso querido Dev-Team liberou o fant&aacute;stico programa para fazer o jailbreak/unlock de iPhone's (2G, 3G) e iPod's com firmware 3.0.<br />
        <br />
        Para atualizar e desbloquear seu iPhone/iPod &eacute; necess&aacute;rio dois programas: <a href="http://www.itunes.com" target="_blank">iTunes</a> e <a href="http://rapidshare.com/files/246585840/redsn0w-win_0.7.1.zip">redsn0w</a>!<br />
        <br />
        Al&eacute;m claro do <a href="http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6580.20090617.XsP76/iPhone1,1_3.0_7A341_Restore.ipsw">Firmware 3.0 original da Apple</a> (For iPhone 2G).<br />
        <br />
        Primeiramente vamos atualizar o iPhone/iPod para o novo firmware.<br />
        <br />
        Abre seu iTunes, plug o cabo de dados e procure por Restore.<br />
        Segure Shift e clique em restore, logo em seguida dever&aacute; selecionar o firmware 3.0 original da Apple.<br />
        <br />
        Essa tarefa de atualizar &eacute; muito simples, apenas aguardar o final da atualiza&ccedil;&atilde;o. O resultado como esperado ser&aacute; o seu aparelho bloqueado.<br />
        Para desbloquearmos utilizaremos o querido redsn0w.<br />
        <br />
        1] Descompacte o redsnow e coloque o arquivo redsn0w.exe no mesmo diret&oacute;rio do arquivo .ipsw da FW 3.0 que voc&ecirc; usou para fazer seu restore.<br />
        Clique duas vezes no arquivo redsn0w.exe<br />
        <br />
        2] Ao abrir o programa, clique em browser, selecione o firmware (ipsw) e clique em Next.<br />
        <img src="http://img141.imageshack.us/img141/6130/35801764.jpg" alt="" /><br />
        <br />
        3] Certifique-se que o seu iPhone esteja desligado e conectado ao seu computador. Depois, FIQUE ESPERTO, que voc&ecirc; dever&aacute; fazer o seguinte assim que apertar em Next.<br />
        <img src="http://img150.imageshack.us/img150/8603/94273447.jpg" alt="" /><br />
        <br />
        4] Segure o bot&atilde;o Power por TR&Ecirc;S segundos. Logo em seguida (N&Atilde;O solte o bot&atilde;o Power) segure o bot&atilde;o HOME. Mantenha os dois pressionados por 10 segundos. Espere a que aparecer&aacute; na tela. Ap&oacute;s solte o bot&atilde;o Power e segure somente o Home, at&eacute; a barra de progresso come&ccedil;ar a andar.<br />
        <img src="http://img132.imageshack.us/img132/8226/76636789.jpg" alt="" /><img src="http://img141.imageshack.us/img141/4033/52642230.jpg" alt="" /><br />
        <br />
        6) Nesse momento em seu aparelho est&aacute; ocorrendo o jailbrreak, aguarde at&eacute; aparecer na tela o bot&atilde;o: FINISH!<br />
        <br />
        Isso &eacute; tudo pessoALL.<br />
        <br />
        <font color="#c0c0c0">Imagens - http://gutoguimaraes.blogspot.com</font>
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>URLs amigáveis - mod_rewrite</title>
	<link>http://www.xalexandre.com.br/posts/URLs-amigaveis-mod_rewrite/Programacao/PHP/9324</link>
	<pubDate>Tue, 21 Apr 2009 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/URLs-amigaveis-mod_rewrite/Programacao/PHP/9324</guid>
	<description><![CDATA[Buenas PessoALL!
<br/>
Hoje um amigo me perguntou sobre URLs Amig&aacute;veis, ent&atilde;o resolvi escrever este post!
<br/>
Nas t&eacute;cnicas de SEO, uma coisa indiscut&iacute;vel é URLs amig&aacute;veis.
<br>
<br>
<b>Certo e o que s&atilde;o URLs Amig&aacute;veis Alexandre?</b><br/>
Bueno, URLs Amig&aacute;veis são normalmente urls simples e curtas, na qual tornam-se mais leg&iacute;veis para os Bots de busca.<br>
Al&eacute;m de facilitarem o entendimento pelo usu&aacute;rio.
<br>
<br>
Por exemplo:<br>
<b>URL normal:</b> http://www.xalexandre.com.br/index.php?menu=noticias&titulo=Url-Amigavel&id=10<br>
<b>URL Amigável:</b>: http://www.xalexandre.com.br/noticias/Url-Amigavel/10<br>
<br>
No exemplo acima, as vari&aacute;veis menu, titulo e id s&atilde;o desnecess&aacute;rias quando utilizado mod Rewrite do apache.<br>
<br>
<b>Ok Alexandre, mas o que &eacute; este Mod_Rewrite?</b>
<br>
Mod Rewrite &eacute; um m&oacute;dulo escrito para o servidor Apache, no qual tem a fun&ccedil;&atilde;o de reescrever as URLs.
<br>
Para habilita-lo voc&ecirc; primeiramente deve ter acesso ao servidor Apache, ou solicitar para o Administrador do seu servidor habilita-lo.<br>
Dever&aacute; editar o <b>httpd.conf</b> adicionando a seguinte linha:
<br>
<br>
<pre id="code" name="code" class="html">
LoadModule rewrite_module modules/mod_rewrite.so
</pre>
<br>
Basta reiniciar o apache para o m&oacute;dulo entrar em a&ccedil;&atilde;o.<br>
<br>
<br>
Ap&oacute;s o apache corretamente configurado, deve-se criar um arquivo htaccess para configurarmos nossas Urls Amig&aacute;veis.<br>
Sendo assim, crie um arquivo chamado <b>.htaccess</b> - com o ponto na frente de forma oculta.
<br>
Neste arquivo coloque o seguinte conte&uacute;do:<br>
<pre id="code" name="code" class="html">
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php
</pre>
Explicando o arquivo acima:<br>
<b>RewriteEngine on</b> -> Habilita o m&oacute;dulo Rewrite
<br/>
<b>RewriteCond %{SCRIPT_FILENAME} !-f</b> -> Verifica se a URL digita &eacute; um arquivo.
<br/>
<b>RewriteCond %{REQUEST_FILENAME} !-d</b> -> Verifica se a URL digita &eacute; um diret&oacute;rio.
<br/>
<b>RewriteRule ^(.*)$ index.php</b> -> Manda tudo o que n&aacute;o for arquivo ou diret&oacute;rio para o index.php
<br><br>
Pronto, agora salve o seu arquivo e vamos testa-lo.
<br>
Acesse pelo browser o site no qual colocou o arquivo .htaccess, no meu caso: <a href="http://www.xalexandre.com.br/testando" target="_blank">http://www.xalexandre.com.br/testando</a>
<br>
Se redirecionar para o <b>index.php</b> o Mod_Rewrite est&aacute; funcionando corretamente.<br>
<br>
Bem, agora vamos editar nosso <b>index.php</b>
<br>
<br>
<pre id="code" name="code" class="php">
&lt;?
$url = explode("/",$_SERVER["REQUEST_URI"]);
?>
</pre>
<br>
Agora temos um array chamado url, ent&atilde;o se escrevermos a seguinte url: http://www.xalexandre.com.br/noticias/Url-Amigavel/10<br>
Nosso array ser&aacute;:<br>
<pre id="code" name="code" class="php">
&lt;?
echo $url[0]; // noticias
echo $url[1]; // Url-Amigavel
echo $url[2]; // 10
?>
</pre>
<br>
<br>
Agora se voc&ecirc; possui um sistema que depende das vari&aacute;veis menu, titulo e id fa&ccedil;a o seguinte:
<pre id="code" name="code" class="php">
&lt;?
$menu = $url[0];
$titulo = $url[1];
$id = $url[2];
?>
</pre>
<br>
<br>
Pronto, seu sistema estar&aacute; funcionando da maneira que foi programado com URLs Amig&aacute;veis!<br>
Por hoje &eacute; s&oacute; pessoALL!<br>
D&uacute;vidas estou a disposi&ccedil;&atilde;o.]]></description>
	<content:encoded />
	</item><item>
	<title>Dica da vez: DROPBOX! Hd Virtual.</title>
	<link>http://www.xalexandre.com.br/posts/Dica-da-vez:-DROPBOX-Hd-Virtual./Sistemas-Operacionais/Linux/9323</link>
	<pubDate>Tue, 24 Mar 2009 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Dica-da-vez:-DROPBOX-Hd-Virtual./Sistemas-Operacionais/Linux/9323</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        DropBox &eacute; um software que tem por objetivo sincronizar seus arquivos de uma forma r&aacute;pida e f&aacute;cil.<br />
        Com vers&atilde;o dispon&iacute;vel para Linux, Mac e Windows, o DropBox &eacute; facilmente instalado.<br />
        <br />
        O DropBox fornece 2GB de espa&ccedil;o gratuito a cada usu&aacute;rio, no qual podem ser expandido comprando uma conta PRO ou indicando o DropBox para outras pessoas.<br />
        A cada pessoa que se registrar no DropBox por sua indica&ccedil;&atilde;o, automaticamente voc&ecirc; e esta pessoa ganham 250MB adicionais de espa&ccedil;o.<br />
        <br />
        Ap&oacute;s a sua instala&ccedil;&atilde;o, o programa cria um diret&oacute;rio chamado dropbox, onde tudo que voc&ecirc; arrastar para dentro deste diret&oacute;rio &eacute; automaticamente sincronizado com o servidor do DropBox.<br />
        <br />
        O servi&ccedil;o conta com uma interface Web, onde &eacute; poss&iacute;vel fazer o download por http dos arquivos que enviou para o diret&oacute;rio dropbox.<br />
        <br />
        Como sincroniza&ccedil;&atilde;o &eacute; feita automaticamente, voc&ecirc; pode utilizar este servi&ccedil;o para sincronizar arquivos em dois computadores, facilmente arrastando arquivos para o diret&oacute;rio dropbox.<br />
        <br />
        <strong>Crie sua conta:</strong> <a href="https://www.getdropbox.com/referrals/NTc4ODYyNTk">https://www.getdropbox.com/referrals/NTc4ODYyNTk</a><br />
        <strong>Acesse:</strong> <a href="https://www.getdropbox.com/downloading">https://www.getdropbox.com/downloading</a><br />
        <br />
        Baixe a vers&atilde;o indicada para seu Sistema Operacional, no meu caso baixei o pacote para Linux, ap&oacute;s a instala&ccedil;&atilde;o apenas restartei o nautilus utilizando o comando: killall nautilus<br />
        <br />
        Ap&oacute;s reiniciar o nautilus, o dropbox &eacute; automaticamente inicializado e o seu &iacute;cone fica na systray, ao lado do rel&oacute;gio.<br />
        <br />
        Enjoy!
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Colocando RINGTONES no iPhone - Toque, ligação, SMS.</title>
	<link>http://www.xalexandre.com.br/posts/Colocando-RINGTONES-no-iPhone-Toque,-ligacao,-SMS./iPhone/Noticias/9322</link>
	<pubDate>Mon, 23 Mar 2009 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Colocando-RINGTONES-no-iPhone-Toque,-ligacao,-SMS./iPhone/Noticias/9322</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Buenas!<br />
        <br />
        Parece complicado personalizar os ringtones do iPhone utilizando Sistemas Operacional Linux, por&eacute;m &eacute; muito mais f&aacute;cil do que se imagina.<br />
        <br />
        Para incluir ringtone (toque em chamada) no iPhone, primeiramente precisa-se converter o audio escolhido para m4r.<br />
        <br />
        <strong>Programas necess&aacute;rios:</strong> mplayer, faac<br />
        <strong><br />
        Instala&ccedil;&atilde;o Linux Debian:</strong> apt-get install mplayer faac<strong><br />
        <br />
        Convertendo:</strong><br />
        <strong>1]</strong> mplayer -ao pcm ARQUIVO.mp3 -ao pcm:file=&quot;~temp.wav&quot;<strong><br />
        2]</strong> faac ~temp.wav -o ARQUIVO.m4r -w<strong><br />
        3]</strong> rm -rf ~temp.wav<br />
        <strong>4]</strong> Acesse seu iPhone por SSH e coloque o ARQUIVO.m4r em /Library/Ringtones<br />
        <br />
        Pronto! Seu arquivo est&aacute; convertido e pronto para ser utilizado como toque.<br />
        <br />
        <br />
        Para colocar um arquivo audio como toque para Novo SMS, dever&aacute; alterar um existente.<br />
        <br />
        <strong>Programas Necess&aacute;rios:</strong> pacpl, sndfile-programs<br />
        <br />
        <strong>Instala&ccedil;&atilde;o Linux Debian:</strong> apt-get install sndfile-programs<br />
        <br />
        http://ftp.ussg.iu.edu/linux/ubuntu/pool/universe/p/pacpl/pacpl_4.0.3-2ubuntu1_all.deb<br />
        <br />
        <strong>Convertendo:</strong> <br />
        <strong>1]</strong> pacpl -to caf ARQUIVO.mp3<br />
        <strong>2]</strong> Acesse seu iPhone por SSH e coloque o ARQUIVO.caf em /System/Library/Audio/UISounds<br />
        <strong>3]</strong> Renomeie seu ARQUIVO.caf para sms-receivedN&Uacute;MERO.caf (Altere N&Uacute;MERO pelo ringtone existente, conforme tabela abaixo)<br />
        <br />
        sms-received1.caf -&gt; Tri-tone<br />
        sms-received2.caf -&gt; Chime<br />
        sms-received3.caf -&gt; Glass<br />
        sms-received4.caf -&gt; Horn<br />
        sms-received5.caf -&gt; Bell<br />
        sms-received6.caf -&gt; Electronic<br />
        <br />
        Pronto! Seu novo RingTone est&aacute; convertido e pronto para ser utilizado como toque de novo SMS.<br />
        <br />
        Por hoje &eacute; isso pessoALL!<br />
        []s
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Fica a Dica - Montar imagem ISO no Linux</title>
	<link>http://www.xalexandre.com.br/posts/Fica-a-Dica-Montar-imagem-ISO-no-Linux/Sistemas-Operacionais/Linux/9321</link>
	<pubDate>Mon, 16 Mar 2009 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Fica-a-Dica-Montar-imagem-ISO-no-Linux/Sistemas-Operacionais/Linux/9321</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Um dica muito &uacute;til para quem desejar testar uma imagem de ISO, mas n&atilde;o quer queimar o CD.<br />
        <br />
        <strong>1]</strong> Criando um diret&oacute;rio para o conte&uacute;do:<br />
        mkdir /media/driver_virtual<br />
        <br />
        <strong>2]</strong> Montando a imagem:<br />
        mount -o loop SUA_IMAGEM.iso /media/driver_virtual<br />
        <br />
        Pronto sua imagem foi montada no diret&oacute;rio especificado.
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Sincronizar iPhone no Linux - Músicas</title>
	<link>http://www.xalexandre.com.br/posts/Sincronizar-iPhone-no-Linux-Musicas/iPhone/Noticias/9320</link>
	<pubDate>Tue, 10 Mar 2009 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Sincronizar-iPhone-no-Linux-Musicas/iPhone/Noticias/9320</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Buenas pessoALL!  <br />
        Desde que comprei meu iPhone, sempre sincronizei as m&uacute;sicas/videos pelo Linux, utilizando o GtkPod.  <br />
        <br />
        Quando saiu a vers&atilde;o 2.x do firmware do iPhone, a Apple mudou o algoritmo que fazer a atualiza&ccedil;&atilde;o do DB do iTunes, passando ent&atilde;o a n&atilde;o sincronizar as m&uacute;sicas, e tamb&eacute;m causando conflitos de sincroniza&ccedil;&atilde;o com o iTunes.  <br />
        <br />
        H&aacute; algum tempo atr&aacute;s, resolvi buscar uma solu&ccedil;&atilde;o para conseguir voltar a sincronizar minhas m&uacute;sicas com o iPhone, ent&atilde;o consegui; e funciona perfeitamente.  <br />
        <br />
        <em>* Necess&aacute;rio conex&atilde;o wireless.</em>  <strong><br />
        <br />
        1] Editando o XML</strong> <br />
        Primeiro passo &eacute; editarmos um arquivo XML, para que a sincroniza&ccedil;&atilde;o possa ser feita:  <br />
        <br />
        vim /System/Library/Lockdown/Checkpoint.xml  <br />
        <br />
        No exemplo acima utilizei o VIM para editar o XML, poder&aacute; utilizar o Editor que preferir.  <br />
        Localize o nodo DBVersion dentro do XML, no qual o valor deve estar &quot;4&quot;, altere para &quot;2&quot;. <br />
        Salve e feche.  <strong><br />
        <br />
        2] Instalando ipod-convenience</strong> <br />
        <br />
        Segundo passo &eacute; instalarmos o pacote ipod-convenience, no qual &eacute; o respons&aacute;vel por montar o iPhone.<br />
        Este pacote est&aacute; dispon&iacute;vel na source: <br />
        deb http://ppa.launchpad.net/ipod-touch/ubuntu gutsy main  <br />
        <br />
        Instalando o pacote:  apt-get install ipod-convenience  Ap&oacute;s a instala&ccedil;&atilde;o o ipod-convenience ir&aacute; perguntar se voc&ecirc; possui um iPhone ou iPod e o local no qual gostaria de montar seu aparelho, tamb&eacute;m perguntar&aacute; o IP que seu aparelho usa.  <br />
        <br />
        No meu caso: <br />
        iPhone motado em: /media/iphone IP: 192.168.10.11  <strong><br />
        <br />
        3] Montando o iPhone</strong> <br />
        A primeira vez que ir&aacute; montar o iPhone dever&aacute; usar o cabo de dados para gerar o hash do DB do iTunes do aparelho.  <br />
        <br />
        Plug o cabo no iPhone e no computador, em seguida abra o terminal e rode: iphone-mount (ou ipod-mount, se possuir um iPod). Ir&aacute; solicitar sua senha de SSH, caso voc&ecirc; nunca tenha utilizado SSH no aparelho procure por: BSD Subsystem e OpenSSH, existem milh&otilde;es de tutorias por a&iacute;.  <br />
        <br />
        <strong>4] Transferindo m&uacute;sicas</strong> <br />
        Ap&oacute;s o iPhone estar montado, voc&ecirc; poder&aacute; efetuar as transfer&ecirc;ncia de m&uacute;sicas/ouvir etc. eu particularmente prefiro utilizar o Amarok para isso, mas tamb&eacute;m poder&aacute; utilizar o gtkpod.  <br />
        <br />
        Instalando o Amarok: apt-get install amarok  <br />
        <br />
        1] Abra o Amarok, clique em Settings e Configure Amarok <br />
        2] Escolha Media Devices <br />
        3] Clique em Add Device <br />
        4] Selecione Apple iPod Media Device <br />
        5] Coloque o nome (iPhone ou iPod) <br />
        6] E por fim digite o caminho onde montou o iPhone, no meu caso: /media/iPhone  <br />
        <br />
        No lado esquerdo do Amarok no canto inferior, temos Devices, selecione o seu aparelho e clique em Connect.  <br />
        <br />
        Ap&oacute;s carregar sua lista de m&uacute;sicas poder&aacute; efetuar as altera&ccedil;&otilde;es em sua playlist!  Para enviar uma m&uacute;sica basta arrastar e soltar para o Amarok, ap&oacute;s clique em Tranferir.  <br />
        <br />
        Isto &eacute; tudo pessoALL, d&uacute;vidas comente.
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Introdução ao Java</title>
	<link>http://www.xalexandre.com.br/posts/Introducao-ao-Java/Programacao/PHP/9319</link>
	<pubDate>Fri, 06 Mar 2009 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Introducao-ao-Java/Programacao/PHP/9319</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        <strong>1] O que &eacute; o Java?</strong><br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java &eacute; uma nova linguagem de programa&ccedil;&atilde;o,<br />
        introduzida no mercado em 1995 pela Sun Microsystems, que<br />
        provocou e ainda provoca excita&ccedil;&atilde;o e entusiasmo em<br />
        programadores, analistas e projetistas de software.<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mas por que o Java produz esta rea&ccedil;&atilde;o? Simplesmente<br />
        porque &eacute; o resultado de um trabalho consistente de pesquisa e<br />
        desenvolvimento de mais do que uma simples linguagem de<br />
        programa&ccedil;&atilde;o, mas de todo um ambiente de desenvolvimento e<br />
        execu&ccedil;&atilde;o de programas que exibe as facilidades<br />
        proporcionadas pela orienta&ccedil;&atilde;o &agrave; objetos, pela extrema<br />
        portabilidade do c&oacute;digo produzido, pelas caracter&iacute;sticas de<br />
        seguran&ccedil;a que esta plataforma oferece e finalmente pela<br />
        facilidade de sua integra&ccedil;&atilde;o ao outros ambientes, destacando-<br />
        se a Internet.<br />
        <br />
        <strong>1.1] Caracter&iacute;sticas Importantes</strong><br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A linguagem Java exibe importantes caracter&iacute;sticas que, em conjunto, diferenciam-
        na de outras linguagens de programa&ccedil;&atilde;o:<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &bull; Orientada &agrave; Objetos<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java &eacute; uma linguagem puramente orientada &agrave; objetos pois, com exce&ccedil;&atilde;o de seus tipos primitivos de dados, tudo em Java s&atilde;o classes ou inst&acirc;ncia de uma classe.<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java atende todos os requisitos necess&aacute;rios para uma linguagem ser considerada orientada &agrave; objetos que resumidamente s&atilde;o oferecer mecanismos de abstra&ccedil;&atilde;o, encapsulamento e hereditariedade.<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &bull; Independente de Plataforma<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java &eacute; uma linguagem independente de plataforma pois os programas Java s&atilde;o compilados para uma forma intermedi&aacute;ria de c&oacute;digo denominada bytecodes que utiliza instru&ccedil;&otilde;es e tipos primitivos de tamanho fixo, ordena&ccedil;&atilde;o big-endian e um biblioteca de classes padronizada. Os bytecodes s&atilde;o como uma linguagem de m&aacute;quina destinada a uma &uacute;nica plataforma, a m&aacute;quina virtual Java (JVM &ndash; Java Virtual Machine), um interpretador de bytecodes. Pode-se implementar uma JVM para qualquer plataforma assim temos que um mesmo programa Java pode ser executado em qualquer arquitetura que disponha de uma JVM.<br />
        <br />
        <br />
        <strong>2] Declara&ccedil;&atilde;o de vari&aacute;veis</strong><br />
        <br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As palavras reservadas da linguagem Java, que portanto n&atilde;o podem ser utilizadas
        como nome de vari&aacute;veis ou outros elementos, s&atilde;o:<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; abstract&nbsp;&nbsp;&nbsp;&nbsp; continue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interface&nbsp;&nbsp; public&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; native&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transient<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; true<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; implements&nbsp;&nbsp;&nbsp; null&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extends&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; package&nbsp;&nbsp;&nbsp;&nbsp; switch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instanceof&nbsp;&nbsp;&nbsp; private&nbsp;&nbsp;&nbsp;&nbsp; synchronized while<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected&nbsp;&nbsp; this<br />
        <br />
        <br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Desta forma para declararmos uma vari&aacute;vel devemos seguir a seguinte sintaxe:<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tipo nome1 [, nome2 [, nome3 [..., nomeN]]];<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ou seja, primeiro indicamos um tipo, depois declaramos uma lista contendo um ou
        mais nomes de vari&aacute;veis desejadas deste tipo, onde nesta lista os nomes s&atilde;o separados por
        v&iacute;rgulas e a declara&ccedil;&atilde;o terminada por &lsquo;;&rsquo; (ponto e v&iacute;rgula). Exemplo:<br />
        <pre class="javascript" name="code" id="code">
		int i;       
		float total, preco;        
		byte mascara;        
		double valorMedio;
	</pre>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As vari&aacute;veis podem ser declaradas individualmente ou em conjunto:<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char opcao1, opcao2;<br />
        <br />
        <br />
        <b>3] Coment&aacute;rios</b><br />
        <br />
        <pre class="javascript" name="code" id="code">
		/*
		Comentário
		em bloco
		*/	
	</pre>
        <br />
        <pre class="javascript" name="code" id="code">
		//Coment&aacute;rio em linha
        </pre>
        <br />
        <br />
        <b>4] Operadores</b><br />
        Operador&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Significado&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exemplo<br />
        &nbsp;&nbsp; +&nbsp;&nbsp;&nbsp;&nbsp; Adi&ccedil;&atilde;o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a+b<br />
        &nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp; Subtra&ccedil;&atilde;o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a&ndash;b<br />
        &nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; Multiplica&ccedil;&atilde;o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a*b<br />
        &nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp; Divis&atilde;o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a/b<br />
        &nbsp;&nbsp; %&nbsp;&nbsp;&nbsp;&nbsp; Resto da divis&atilde;o inteira&nbsp; a%b<br />
        &nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp; Sinal negativo (- un&aacute;rio) -a<br />
        &nbsp;&nbsp; +&nbsp;&nbsp;&nbsp;&nbsp; Sinal positivo (+ un&aacute;rio) +a<br />
        &nbsp; ++&nbsp;&nbsp;&nbsp;&nbsp; Incremento unit&aacute;rio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++a ou a++<br />
        &nbsp;&nbsp; --&nbsp;&nbsp;&nbsp; Decremento unit&aacute;rio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --a ou a--<br />
        <br />
        <b> 4.1] Operadores Relacionais</b><br />
        <br />
        Operador&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Significado&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exemplo<br />
        &nbsp; ==&nbsp;&nbsp;&nbsp;&nbsp; Igual&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a == b<br />
        &nbsp;&nbsp; !=&nbsp;&nbsp;&nbsp; Diferente&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a != b<br />
        &nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp; Maior que&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a&gt;b<br />
        &nbsp; &gt;=&nbsp;&nbsp;&nbsp;&nbsp; Maior ou igual a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a &gt;= b<br />
        &nbsp;&nbsp; &lt;&nbsp;&nbsp;&nbsp;&nbsp; Menor que&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a&lt;b<br />
        &nbsp; &lt;=&nbsp;&nbsp;&nbsp;&nbsp; Menor ou igual a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a &gt;= b<br />
        <br />
        <br />
        <b> 4.2] Operadores L&oacute;gicos</b><br />
        <br />
        Operador&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Significado&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exemplo<br />
        &nbsp; &amp;&amp;&nbsp;&nbsp;&nbsp;&nbsp; E l&oacute;gico (and)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a &amp;&amp; b<br />
        &nbsp; ||&nbsp;&nbsp;&nbsp;&nbsp; Ou L&oacute;gico (or)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a || b<br />
        &nbsp;&nbsp; !&nbsp;&nbsp;&nbsp;&nbsp; Nega&ccedil;&atilde;o (not)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !a<br />
        <br />
        <br />
        <b> 5] Estrutura de Repeti&ccedil;&atilde;o Simples</b><br />
        <br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ap&oacute;s a execu&ccedil;&atilde;o da se&ccedil;&atilde;o de inicializa&ccedil;&atilde;o ocorre a avalia&ccedil;&atilde;o da express&atilde;o l&oacute;gica. Se
        a express&atilde;o &eacute; avaliada como verdadeira, a diretiva associada &eacute; executada, caso contr&aacute;rio o
        comando for &eacute; encerrado e a execu&ccedil;&atilde;o do programa prossegue com o pr&oacute;ximo comando
        ap&oacute;s o for. O terceiro campo determina como a vari&aacute;vel de controle ser&aacute; modificada a cada
        itera&ccedil;&atilde;o do for. Considera-se como itera&ccedil;&atilde;o a execu&ccedil;&atilde;o completa da diretiva associada,
        fazendo que ocorra o incremento ou decremento da vari&aacute;vel de controle. A seguir um
        exemplo de utiliza&ccedil;&atilde;o da diretiva for:<br />
        <pre class="javascript" name="code" id="code">
	import java.io.*;
        public class exemploFor {
           public static void main (String args[]) {
             for (int j=0; j<10; j++) {
                System.out.println(“”+j);
             }
           }
        }
	</pre>
        <br />
        <b> 6] Estrutura de Desvio de Fluxo</b><br />
        <br />
        <pre class="javascript" name="code" id="code">
	
        public class exemploIf {
           public static void main (String args[]) {
             int j = 1;
	     if (j == 1){
		     for (j=0; j<10; j++) {
		        System.out.println(“”+j);
		     }
	     }
           }
        }
	</pre>
        <br />
        <b> 6.1] Diretiva Switch</b><br />
        <br />
        <pre class="javascript" name="code" id="code">
	import java.io.*;
	public class exemploSwitch {
	  public static void main (String args[]) {
	    if (args.length > 0) {
	      switch(args[0].charAt(0)) {
		case 'a':
		case 'A': System.out.println("Vogal A");
		          break;
		case 'e':
		case 'E': System.out.println("Vogal E");
		          break;
		case 'i':
		case 'I': System.out.println("Vogal I");
		          break;
		case 'o':
		case 'O': System.out.println("Vogal O");
		          break;
		case 'u':
		case 'U': System.out.println("Vogal U");
		          break;
		default: System.out.println("Não é  uma vogal");
	      }
	    } else {
	      System.out.println("Não foi fornecido argumento");
	    }
	  }
	}
	</pre>
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Horário sequencial sexta-feira 13 2009!</title>
	<link>http://www.xalexandre.com.br/posts/Horario-sequencial-sexta-feira-13-2009/Sistemas-Operacionais/Linux/9317</link>
	<pubDate>Sun, 08 Feb 2009 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Horario-sequencial-sexta-feira-13-2009/Sistemas-Operacionais/Linux/9317</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Sexta-feira's 13 j&aacute; s&atilde;o por cultura dias de ficar mais atento com tudo e se cuidar de poss&iacute;veis transtornos que podem acontecer.<br />
        <br />
        Neste ano de 2009, a primeira sexta-feira 13 do ano acontece no m&ecirc;s de fevereiro. Como se n&atilde;o bastasse toda a cren&ccedil;a irracional que temos referente as sextas-feiras 13, neste dia 13 de fevereiro de 2009 &agrave;s 21:31:30 hor&aacute;rio de bras&iacute;lia, teremos um hor&aacute;rio UNIX fant&aacute;stico! <br />
        <br />
        Trata-se da t&atilde;o esperada sequencia num&eacute;rica: 1234567890! Agora todos come&ccedil;am a lembrar do tal Bug do Milenio, o que tr&aacute;gico poder&aacute; acontecer as m&aacute;quinas com um hor&aacute;rio t&atilde;o doido quanto esse...<br />
        <br />
        A pr&oacute;xima data &quot;maluca&quot; ser&aacute; em uma sexta-feira 22 de dezembro de 2282, na qual a representa&ccedil;&atilde;o UNIX &eacute; 9876543210.<br />
        <br />
        Loucura loucura loucura....<br />
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>FISL 10</title>
	<link>http://www.xalexandre.com.br/posts/FISL-10/Eventos/FISL/9316</link>
	<pubDate>Sat, 17 Jan 2009 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/FISL-10/Eventos/FISL/9316</guid>
	<description><![CDATA[<img src="http://www.xalexandre.com.br/upload/posts/9316/fisl10.png" />
<br/>
Vem aí o tão esperado <a href="http://fisl.softwarelivre.org/10/www/">Fórum Internacional de Software Livre</a>, e este ano completa sua 10º Edição!
<br/>
<br/>
Nos vemos lá ;)]]></description>
	<content:encoded />
	</item><item>
	<title>PHP - Programando com Orientação a Objetos - [Parte 4]</title>
	<link>http://www.xalexandre.com.br/posts/PHP-Programando-com-Orientacao-a-Objetos-Parte-4/Programacao/PHP/9315</link>
	<pubDate>Sun, 11 Jan 2009 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/PHP-Programando-com-Orientacao-a-Objetos-Parte-4/Programacao/PHP/9315</guid>
	<description><![CDATA[Buenas PessoALL!<br>
<br>
Continuando o post anterior <a href="http://www.xalexandre.com.br/Publicacoes/-PHP-Programando-com-Orientacao-a-Objetos-Parte-3/Programacao/PHP/9312/1">PHP - Programando com Orientação a Objetos - Parte 3</a>, 
Apartir de agora passaremos a introdução de orientação a objetos.<br><br>

<b>2.4]</b> Manipulação de Objetos<br>
<b>get_class_methods:</b>
   Retorna um vetor com os nomes dos métodos de uma determinada classe.<br>
   <pre id="code" name="code" class="php">
   &lt;?
   class Funcionario
   {
   	   function SetSalario()
   	   {
   	   }
   	   function GetSalario()
   	   {
   	   }
   	   function SetNome()
   	   {
   	   }
   	   function GetNome()
   	   {
   	   }
   }
   print_r(get_class_methods('Funcionario'));
   
   /*
   Resultado:
   	Array
	(
	   [0] => SetSalario
	   [1] => GetSalario
	   [2] => SetNome
	   [3] => GetNome
	)
	*/
	?>
   </pre><br>
<br>
<b>get_class_vars:</b>
   Retorna um vetor com os nomes das propriedades e conteúdos de uma determinada
   classe. Note que são valores estáticos definidos na criação da classe.
<pre id="code" name="code" class="php">
	&lt;?
	class Funcionario
	{
		   var $Codigo;
		   var $Nome;
		   var $Salario = 586;
		   var $Departamento = 'Contabilidade';
		   function SetSalario()
		   {
		   }
		   function GetSalario()
		   {
		   }
	}
	print_r(get_class_vars('Funcionario'));
	
	/*
	Resultado:
	Array
	(
		   [Codigo] =>
		   [Nome] =>
		   [Salario] => 586
		   [Departamento] => Contabilidade
	)
	*/
	
	?>
</pre>
<br>
<br>
<b>get_object_vars:</b>
   Retorna um vetor com os nomes e conteúdos das propriedades de um objeto. São
   valores dinâmicos que se alteram de acordo com o ciclo de vida do objeto.
	<pre id="code" name="code" class="php">
	&lt;?
	class Funcionario
	{
		   var $Codigo;
		   var $Nome;
		   var $Salario = 586;
		   var $Departamento = 'Contabilidade';
		   function SetSalario()
		   {
		   }
		   function GetSalario()
		   {
		   }
	}
	$jose = new Funcionario;
	$jose->Codigo = 44;
	$jose->Nome = 'José da Silva';
	$jose->Salario += 100;
	$jose->Departamento = 'Financeiro';
	print_r(get_object_vars($jose));
	/*
	Resultado:
	Array
	(
		   [Codigo] => 44
		   [Nome] => José da Silva
		   [Salario] => 686
		   [Departamento] => Financeiro
	)
	*/
	?>
	</pre>
	<br>
<br>
<b>get_class:</b>
   Retorna o nome da classe a qual um objeto pertence.
	<pre id="code" name="code" class="php">
	&lt;?
	class Funcionario
	{
	   var $Codigo;
	   var $Nome;
	   function SetSalario()
	   {
	   }
	   function GetSalario()
	   {
	   }
	}
	$jose = new Funcionario;
	echo get_class($jose);
	
	/*
	Resultado:
	Funcionario
	*/
	?>
	</pre>
	<br>
<br>
<b>get_parent_class:</b>
   Retorna o nome da classe ancestral (classe-pai). Se o parâmetro for um objeto,
   retorna o nome da classe ancestral da classe à qual o objeto pertence. Se o parâ-
   metro for uma string, retorna o nome da classe ancestral da classe passada como
   parâmetro.
<pre id="code" name="code" class="php">
	&lt;?
	class Funcionario
	{
		   var $Codigo;
		   var $Nome;
	}
	class Estagiario extends Funcionario
	{
		   var $Salario;
		   var $Bolsa;
	}
	$jose = new Estagiario;
	echo get_parent_class($jose);
	echo "\n";		    // quebra de linha
	echo get_parent_class('estagiario');
	
	/*
	Resultado:
	Funcionario
	Funcionario
	*/
	?>

</pre><br>
<br>
<b>is_subclass_of:</b>
    Indica se um determinado objeto ou classe é derivado de uma determinada
    classe.
<pre id="code" name="code" class="php">
	&lt;php
	class Funcionario
	{
		   var $Codigo;
		   var $Nome;
	}
	class Estagiario extends Funcionario
	{
		   var $Salario;
		   var $Bolsa;
	}
	$jose = new Estagiario;
	if (is_subclass_of($jose, 'Funcionario'))
	{
		   echo "Classe do objeto Jose é derivada de Funcionario";
	}
	echo "\n";		    // quebra de linha
	if (is_subclass_of('Estagiario', 'Funcionario'))
	{
		   echo "Classe Estagiario é derivada de Funcionario";
	}
	
	/*
	Resultado:
	Classe do objeto Jose é derivada de Funcionario
	Classe Estagiario é derivada de Funcionario
	*/
	?>
	</pre>
	<br>
<br>
<b>method_exists:</b>
   Verifica se um determinado objeto possui o método descrito. Podemos verificar a
   existência de um método antes de executar por engano um método inexistente.
<pre id="code" name="code" class="php">
&lt;?
	class Funcionario
	{
		   var $Codigo;
		   var $Nome;
		   function GetSalario()
		   {
		   }
		   function SetSalario()
		   {
		   }
	}
	$jose = new Funcionario;
	if (method_exists($jose, 'SetNome'))
	{
		   echo 'Objeto Jose possui método SetNome()';
	}
	if (method_exists($jose, 'SetSalario'))
	{
		   echo 'Objeto Jose possui método SetSalario()';
	}
	/*
	Resultado:
	Objeto Jose possui método SetSalario()
	*/
	?>
	</pre>
	<br>
<br>
<b>call_user_func:</b>
    Executa uma função ou um método de uma classe passado como parâmetro. Para
    executar uma função, basta passar seu nome como uma string, e, para executar
    um método de um objeto, basta passar o parâmetro como um array contendo na
    posição 0 o objeto e na posição 1 o método a ser executado. Para executar métodos
    estáticos, basta passar o nome da classe em vez do objeto na posição 0 do array.
<pre id="code" name="code" class="php">
	&lt;?
	// exemplo chamada simples
	function minhafuncao()
	{
		   echo "minha função! \n";
	}
	call_user_func('minhafuncao');
	// declaração de classe
	class MinhaClasse
	{
		   function MeuMetodo()
		   {
			      echo "Meu método! \n";
		   }
	}
	// chamada de método estático
	call_user_func(array('MinhaClasse', 'MeuMetodo'));
	// chamada de método
	$obj = new MinhaClasse();
	call_us
	
	/*
	Resultado:
	minha função!
	Meu método!
	Meu método!
	*/
	?>

</pre><br>
<br>
Por hoje é só PessoALL!
<br>
[]'s]]></description>
	<content:encoded />
	</item><item>
	<title>Jogo DoneDrinkn</title>
	<link>http://www.xalexandre.com.br/posts/Jogo-DoneDrinkn/iPhone/Noticias/9313</link>
	<pubDate>Thu, 08 Jan 2009 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Jogo-DoneDrinkn/iPhone/Noticias/9313</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Olá caro leitor! <br/>
Voc&ecirc; lembra daquele joguinho em flash, que o objetivo &eacute; controlar um bebado utilizando o mouse?<br />Juro que quando comprei meu iPhone e testei o acelerometro lembrei desse jogo.
        <br />
        <br />
        <div align="center"><embed height="311" width="441" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.xalexandre.com.br/upload/posts/9313/jogo.swf" play="true" loop="true" menu="true"></embed></div>
        <br />
        Certo, lembrou n&eacute;? Sim, eu tamb&eacute;m acho divertido...<br />
        E o mais divertido &eacute; que tem ele para o iPhone! E o mais importante, gr&aacute;tis!<br />
        <br />
        O download pode ser feito pela Apple Store.<br />
        <div align="center"><img height="274" width="411" src="http://img255.imageshack.us/img255/4425/startgd5.png" alt="" /></div>
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title> PHP - Programando com Orientação a Objetos [Parte 3]</title>
	<link>http://www.xalexandre.com.br/posts/-PHP-Programando-com-Orientacao-a-Objetos-Parte-3/Programacao/PHP/9312</link>
	<pubDate>Wed, 07 Jan 2009 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/-PHP-Programando-com-Orientacao-a-Objetos-Parte-3/Programacao/PHP/9312</guid>
	<description><![CDATA[Buenas!
<br>
<br>
Continuando o post anterior <a href="http://www.xalexandre.com.br/Publicacoes/PHP-Programando-com-Orientacao-a-Objetos-Parte-2/Programacao/PHP/9310/">PHP - Programando com Orienta&ccedil;&atilde;o a Objetos - Parte 2</a>, vou seguindo com o cronograma.
<br><br>
<b>2.3]</b> Fun&ccedil;&otilde;es para Manipular Strings<br>
<br>
<b>strtoupper</b> - A fun&ccedil;&atilde;o "strtoupper" serve para transformar todos os caracteres de uma string para maiúsculo.
<br>
<pre id="code" name="code" class="php">	
	&lt;?
		echo strtoupper('hoje tomei batida de abacate');
		// Resultado: HOJE TOMEI BATIDA DE ABACATE
	?>
</pre>
<br><br>
<b>strtolower</b> - A fun&ccedil;&atilde;o "strtolower" faz exatamente o contrário da "strtoupper", ou seja, transforme caracteres de uma string em minúsculo.<br>
<pre id="code" name="code" class="php">
	&lt;?
		echo strtolower('HOJE TOMEI BATIDA DE ABACATE');
		// Resultado: hoje tomei batida de abacate
	?>
</pre><br>
<br>
<b>substr</b> - A função "substr" retorna uma determinada quantidade de caracteres de uma string.
<pre id="code" name="code" class="php">
	&lt;?
		$rest = substr("Abacate", 1);
		echo $rest . "\n";
		$rest = substr("Abacate", 1, 3);
		echo $rest . "\n";
		$rest = substr("Abacate", 0, -1);
		echo $rest . "\n";
		$rest = substr("Abacate", -2);
		echo $rest . "\n";
		/*
		Resultado:
		bacate
		bac
		Abacat
		te
		*/
	?>
</pre><br>
<br>
<b>str_repeat</b> - A fun&ccedil;&atilde;o "str_repeat" repete a string uma certa quantidade de vezes.
<pre id="code" name="code" class="php">>
	&lt;?
		$txt = ".oO0Oo.";
		print str_repeat($txt, 2);
		// Resultado: .oO0Oo..oO0Oo.
	?>
</pre>
<br>
<br>
<b>strlen</b> - A fun&ccedil;&atilde;o "strlen" retorna a quantidade de caracteres de uma string.
<pre id="code" name="code" class="php">
	&lt;?
		$txt = "O Rato roeu a roupa do rei de roma";
		print 'O comprimento é: ' . strlen($txt) . "\n";
		// Resultado: O comprimento é: 34
	?>
</pre>
<br>
<br>
<b>str_replace</b> - A fun&ccedil;&atilde;o "str_replace" substitui uma string por outra.
<pre id="code" name="code" class="php">
	&lt;?
	$txt = "Meu carro é um Vectra";
	print str_replace('Vectra', 'Celta', $txt);
	// Resultado: Meu carro é um Celta
	?>
</pre><br>
<br>
<b>explode</b> - A fun&ccedil;&atilde;o explode transforma uma string em Array, separando os elementos através de um separado.
<pre id="code" name="code" class="php">
	&lt;?
	$data = "08/01/2009";
	var_dump(explode("/", "$data"));
	/*
	Resultado:
	array(3) {
	   [0]=>
	   string(2) "08"
	   [1]=>
	   string(2) "01"
	   [2]=>
	   string(4) "2009"
	}
	*/

	?>
</pre><br>
<br>
<b>implode</b> - A fun&ccedil;&atilde;o "implode" transforma um array em string, separando os elementos através de um separador.
<pre id="code" name="code" class="php">
	&lt;?
	$padrao = array('Maria', 'Paulo', 'José');
	$resultado = implode(' + ', $padrao);
	var_dump($resultado);
	// Resultado: string(20) "Maria + Paulo + José"
	?>
</pre><br>
<br>
Esse foi o &uacute;ltimo post da introdução ao PHP, apartir de agora a continuidade desse Post será a abordagem a Orientado a Objetos.<br>
<br>
Voltaremos...<br>
[]'s]]></description>
	<content:encoded />
	</item><item>
	<title>Auto Completar Tutorial: JavaScript, PHP e MySQL.</title>
	<link>http://www.xalexandre.com.br/posts/Auto-Completar-Tutorial:-JavaScript,-PHP-e-MySQL./Programacao/PHP/9311</link>
	<pubDate>Sat, 03 Jan 2009 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Auto-Completar-Tutorial:-JavaScript,-PHP-e-MySQL./Programacao/PHP/9311</guid>
	<description><![CDATA[Olá pessoALL!

<p>Hoje o post é sobre Auto Completar.</p>

<p>Uso muito a biblioteca jQuery para JavaScript. Então neste pequeno tutorial será usado JavaScript (jQuery), PHP, MySQL e CSS.</p>

<p>Ao utilizar um Auto Completar em um campo de Busca, torna-se muito mais prático para o usuário encontrar o que deseja, pois ao digitar uma palavra, ou um pedeço dela, retornamos um conteúdo na qual a palavra digitada faz parte.</p>

Começando pelo JavaScript:
<pre id="code" name="code" class="js">
	function sugestoesMostra(busca) {
		if(busca.length == 0) {
			// Esconde as sugestões
			$('#sugestoes').hide();
		} else {
			$.post("http://www.xalexandre.com.br/buscaAuto/ajaxBusca.php", {queryString: ""+busca+""}, function(data){
				if(data.length >0) {
					$('#sugestoes').show();
					$('#sugestoesLista').html(data);
				}
			});
		}
	} 
	
	function sugestoesEnvia(thisValue) {
		$('#busca').val(thisValue);
		setTimeout("$('#sugestoes').hide();", 200);
	}
</pre>	
	
<p>Bom resumindo o js acima funciona da seguinte forma: na função <b>sugestoesMostra</b>, o primeiro if testa se os caracteres da variável busca é igual a zero, se for ele esconde a div <b>sugestoes</b>. Logicamente, pois se o usuário não digitou nada, não precisamos mostrar a caixa de sugestões.</p>

<p>Se este if for falso, entraremos no else, aí chamamos o script ajaxBusca.php, passando pra queryString o conteúdo da busca, em seguida é feito outro teste, relacionado ao ajaxBusca, para saber se o resultado da query retornada é maior que zero, se for irá mostrar os resultados em lista.</p>

<p>Na função <b>sugestoesEnvia</b>, apenas enviamos o valor retornado da lista para o campo de pesquisa.</p>

<p>Agora passamos ao PHP, o arquivo já foi mencionado: <b>ajaxBusca.php</b></p>

<pre id="code" name="code" class="php">
	&lt;?php		
		// Verifica se foi enviado uma string na busca.
		if(isset($_POST['queryString'])) {
				
			/*	Muito provavelmente você possui um arquivo com os 
				dados que faz a conexão com o banco. Caso tenha 
				apenas chame o arquivo aqui dentro, por exemplo:
				require("conexao.php");
				
				Abaixo um exemplo para conexão.
			*/
			$host = "localhost";		
			$usr = "USUARIO";		
			$pwd = "SENHA";		
			$bd = "BANCO";
			
			//Conexão BD
			mysql_connect("$host","$usr","$pwd") or die
			("ERRO: Não foi possível conectar ao BD.");
			mysql_select_db("$bd") or die 
			("ERRO: Não foi possível abrir o BD.");
			
			$queryString = ($_POST['queryString']);
			
			// Verifica se quantidade de caracteres é maior que zero.
			if(strlen($queryString) >0) {
				
				/*	Caso a quantidade de caracteres for maior que zero, 
					entraremos aqui, onde é executado o SQL.
				*/
				$query = mysql_query("select CAMPO from TABELA 
				where CAMPO like '%$queryString%' limit 20");
				/*	Bom, referente ao SQL acima, altere o CAMPO e a 
					TABELA para o seu caso.
					Note que a $queryString é passada com porcentagem 
					(%), com isso caso o usuário digite aba retornaremos 
					"abacate, abacaxi", se estiver em nossa tabela é claro.
				*/	
				if($query) {
					// Se a query for executada corretamente, entraremos 
					nesta linha abaixo, onde é feito um laço de repetição, 
					atribuindo os valores a variável $result.
					while ($result = mysql_fetch_array($query)) {
						/*	Abaixo mostraremos o resultado em lista, 
							novamente altere onde diz CAMPO para o campo 
							de sua tabela.
						*/
	         		echo '<li> onClick="sugestoesRecebe(\''.htmlentities($result[CAMPO]).'\');">'.htmlentities($result[CAMPO]).'</li>';
	         			/*
	         				No onClick uma função: sugestoesRecebe, na qual 
	         				mencionei anteriormente que serve para atribuir 
	         				o resultado ao campo texto.
	         			*/
	         		}
				} else {
					echo 'ERRO: Ocorreu um problema com a consulta.';
				}
			} 
		} else {
			echo 'Não é permitido acesso direto a esse script.';
		}
	?>
</pre>
	
<p>Bom, o código acima está todo comentado, mas se surgir alguma dúvida deixe um comentário.</p>

<p>Passando para o CSS:</p>

<pre id="code" name="code" class="CSS">
<style>
	.sugestoes {
		position: relative;
		left: 30px;
		margin: 10px 0px 0px 0px;
		width: 200px;
		background-color: #212427;
		-moz-border-radius: 7px;
		-webkit-border-radius: 7px;
		border: 2px solid #000000;	
		color: #FFFFFF;
	}
	
	.sugestoesLista {
		margin: 0px;
		padding: 0px;
	}
	
	.sugestoesLista li {
		
		margin: 0px 0px 3px 0px;
		padding: 3px;
		cursor: pointer;
	}
	
	.sugestoesLista li:hover {
		background-color: #659CD8;
	}
</style>
</pre>
	
<p>E por fim o HTML:</p>


<pre id="code" name="code" class="html">
	<form id="formBusca" method="post" action="">
		<input name="busca" id="busca" size="25" type="text" onkeyup="sugestoesMostra(this.value);" onblur="sugestoesEnvia();" />
		<div class="sugestoes" id="sugestoes" style="display: none;">
			<img src="http://www.xalexandre.com.br/buscaAuto/flechaCima.png" style="position: relative; top: -12px; left: 30px;" alt="fecha Cima" />
			<div class="sugestoesLista" id="sugestoesLista">
				&nbsp;
			</div>
		</div>
	</form>
</pre>	
<p>	
Isso é tudo pessoALL, um exemplo pode ser encontrado aqui no site, no canto superior direito.
Dúvidas/críticas/sugestões deixe um comentários.
<br />
[]'s
</p>]]></description>
	<content:encoded />
	</item><item>
	<title>PHP - Programando com Orientação a Objetos [Parte 2]</title>
	<link>http://www.xalexandre.com.br/posts/PHP-Programando-com-Orientacao-a-Objetos-Parte-2/Programacao/PHP/9310</link>
	<pubDate>Thu, 25 Dec 2008 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/PHP-Programando-com-Orientacao-a-Objetos-Parte-2/Programacao/PHP/9310</guid>
	<description><![CDATA[Olá!
<br/>
<br/>
Este post é uma continuação da primeira parte de <a href="http://www.xalexandre.com.br/publicacoes/PHP-Programando-com-Orientacao-a-Objetos-Parte-1/Programacao/PHP/9309/1" target="_blank">PHP - Programando com Orientação a Objetos.</a>
<br/>
<br/>
<b>1.7]</b> Operadores
<br/>
<br/>
1<b>.7.1]</b> Atribuição
<br/>
<br/>
Um operador de atribuição é utilizado para definir uma variável atribuindo-lhe um
valor. O operador básico de atribuição é =.
<br/>
<br/>
<pre id="code" name="code" class="php">
   &lt;?
   $var += 5;		    // Soma 5 em $var;
   $var -= 5;		    // Subtrai 5 em $var;
   $var *=5;		     // Multiplica $var por 5;
   $var /= 5;		    // Divide $var por 5;
   ?&gt;
</pre>

<pre id="code" name="code" class="text">
Operadores   Descrição
<b>++$a</b>	    Pré-incremento. Incrementa $a em um e, então, retorna $a.
<b>$a++</b>	    Pós-incremento. Retorna $a e, então, incrementa $a em um.
<b>--$a</b>		    Pré-decremento. Decrementa $a em um e, então, retorna $a.
<b>$a--</b>		    Pós-decremento. Retorna $a e, então, decrementa $a em um.
</pre>

<br/>
<br/>	
<b>1.7.2]</b> Aritméticos
<br/>
<br/>
Operadores aritméticos são utilizados para realização de cálculos matemáticos.
<br/>
<br/>
<pre id="code" name="code" class="text">
	Operadores	Descrição
	<b>+	</b>          	Adição.
	<b>-</b>	          	Subtração.
	<b>*</b>	          	Multiplicação.
	<b>/</b>	          	Divisão.
	<b>%</b>	          	Módulo (resto da divisão).
</pre>
<br/>
<br/>
<b>1.7.3]</b> Relacionais
<br/>
<br/>
Operadores relacionais são utilizados para realizar comparações entre valores ou expressões, resultando sempre um valor boolean (TRUE ou FALSE).
<br/>
<br/>
<pre id="code" name="code" class="text">
       Comparadores	     Descrição
       <b>==</b>	                     Igual. Resulta (TRUE) se expressões forem iguais.
       <b>===</b>	                     Idêntico. TRUE se iguais e mesmo tipo.
       <b>!= ou <></b>	             Diferente. TRUE se forem diferentes.
       <b><</b>	                     Menor.
       <b>></b>	                     Maior que.
       <b><=</b>	                     Menor ou igual.
       <b>>=</b>	                     Maior ou igual.
</pre>
<br/>
<br/>
Veja a seguir alguns testes lógicos e seus respectivos resultados. No primeiro caso, vemos a utilização errada do operador de atribuição “=” para realizar uma comparação: o operador sempre retorna o valor atribuído.
<pre id="code" name="code" class="php">
	&lt;?
	if ($a = 5)
	{
	   echo 'essa operação atribui 5 à variável $a e retorna verdadeiro';
	}
	?&gt;
</pre>
<br/>
<br/>
<b>1.7.4]</b> Lógicos
<br/>
<br/>
Operadores lógicos são utilizados para combinar expressões lógicas entre si, agrupando testes condicionais.
<br/>
<br/>
<pre id="code" name="code" class="text">
     Operador	         Descrição
     <b>($a and $b)</b> 	  	 E: TRUE se tanto $a quanto $b forem verdadeiros.
     <b>($a or $b)</b> 	  	 OU: TRUE se $a ou $b forem verdadeiros.
     <b>($a xor $b)</b> 	  	 XOR: TRUE se $a ou $b forem verdadeiros, exclusivo.
     <b>(! $a)</b> 	          	 NOT: TRUE se $a for FALSE.
     <b>($a && $b)</b> 	  	 E: TRUE se tanto $a quanto $b forem verdadeiros.
     <b>($a || $b)</b> 	  	 OU: TRUE se $a ou $b forem verdadeiros.
     Observação: or e and têm precedência maior que && ou ||.
</pre>
<br/>
<br/>
No programa a seguir, se as variáveis $vai_chover e $esta_frio forem verdadeiras ao mesmo tempo, será impresso no console “Não vou sair de casa”.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$vai_chover = TRUE;
	$esta_frio = TRUE;
	if ($vai_chover and $esta_frio)
	{
	   echo "Não vou sair de casa";
	}
	?&gt;
</pre>
<b>1.8]</b> Estruturas de Controle
<br/>
<br/>
<b>1.8.1]</b> IF
<br/>
<br/>
O IF é uma estrutura de controle que introduz um desvio condicional, ou seja, um desvio na execução natural do programa. Caso a condição dada pela expressão seja satisfeita, então serão executadas as instruções do bloco de comandos. Caso a condição não seja satisfeita, o bloco de comandos será simplesmente ignorado. O comando IF pode ser lido como “SE (expressão) ENTÃO { comandos... }”.
<br/>
<br/>
ELSE é utilizado para indicar um novo bloco de comandos delimitado por { }, caso a condição do IF não seja satisfeita. Pode ser lido como “caso contrário” A utilização do ELSE é opcional.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$a = 1;
	if ($a==5)
	{

		   echo "é igual";
	}
	else
	{
		   echo "não é igual";
	}
	?&gt;
</pre>
<br/>

<br/>
<b>1.8.2]</b> While
<br/>
<br/>
While é uma estrutura de controle que estabelece um laço de repetição. Semelhante ao IF possui uma condição, na qual repete um determinado bloco enquanto a condição for verdadeira.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$a = 1;
	while ($a < 5)
	{
		   print $a;
		   $a ++;
	}
	?&gt;
</pre>
<br/>
<br/>
<b>1.8.3]</b> For
<br/>
<br/>
For é uma estrutura de controle parecida com While, na qual repete um bloco por um determinado periodo de vezes.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	for ($i = 1; $i <= 10; $i++)
	{
	   print $i;
	}
	?&gt;
</pre>
<br/>
<br/>
<b>1.8.4]</b> Switch
<br/>
<br/>
O comando Switch é muito similar ao IF, a diferença é que possibilita fazer diversos testes, executando ações diferentes.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$i = 1;
	switch ($i)
	{
	   case 0:
		      print "i é igual a 0";
		      break;
	   case 1:
		      print "i é igual a 1";
		      break;
	   case 2:
		      print "i é igual a 2";
		      break;
	   default:
		      print "i não é igual a 0, 1 ou 2";
	}
	?&gt;
</pre>
<br/>
<br/>
<b>1.8.5]</b> Foreach
<br/>
<br/>
O foreach é um laço de repetição para iterações em arrays ou matrizes. É um FOR
simplificado que decompõe um vetor ou matriz em cada um de seus elementos por
meio de sua cláusula AS.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$fruta = array("Abacate", "Abacaxi", "Ameixa", "Amora");
	foreach ($fruta as $valor)
	{
		print "$valor -";
	}

	// Resultado: Abacate - Abacaxi - Ameixa - Amora
	?&gt;
</pre>
<br/>
<br/>
<b>1.9]</b> Requisição de Arquivos
<br/>
<br/>
Em linguagens de script como o PHP, freqüentemente precisamos incluir dentro de
nossos programas outros arquivos com definições de funções, constantes, configura-
ções, ou mesmo carregar um arquivo contendo a definição de uma classe. Para atingir
este objetivo no PHP, podemos fazer uso de um dos seguintes comandos:
<br/>
<br/>
<b>1.9.1]</b> Include
<br/>
<br/>
O comando include, inclui um determinado arquivo, executando seus códigos como se estivesse no programa principal.
Caso o arquivo não exista, aparecerá um warning mas o programa continua sua execução.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?

	/*
	  * Arquivo quadrado.php
	  * função quadrado
	  * retorna o quadrado de um número
	*/
	function quadrado($numero)
	{
		    return $numero * $numero;
	}
	?&gt;
</pre>
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	// Arquivo teste.php
	// carrega arquivo com a função necessária
	include 'biblioteca.php';
	// imprime o quadrado do número 4
	echo quadrado(4); // Resultado: 16
	?&gt;
</pre>
<br/>
<br/>
<b>1.9.2]</b> Require
<br/>
<br/>
Require é como o Include, a única diferença é que se o arquivo não existir, ele produz um erro fatal, parando a execução de todo programa.
Também temos os comandos include_once e require_once - Fazem a mesma coisa que include e require porém só inclui o arquivo se ele não tiver sido incluido anteriormente.
<br/>
<br/>
<b>2.0]</b> Funções
<br/>
<br/>
Uma função é um pedaço de código com um objetivo específico, encapsulado sob uma estrutura única que recebe um conjunto de parâmetros e retorna um dado. Uma função é declarada uma única vez, mas pode ser utilizada diversas vezes. É uma das estruturas mais básicas para prover reusabilidade.
<br/>
<br/>
<b>2.1.1]</b> Criando uma Função
<br/>
<br/>
Para declararmos uma função, devemos utilizar o operador function, seguido do nome que desejamos dar a função e atribuindo a opção de parametros separados por vírgulas. No final utilizamos return para retornar o resultado da função.
<br/>
<br/>
<pre id="code" name="code" class="php">
function quadrado($numero)
{
	    return $numero * $numero;
}
<br/>
<br/>
echo quadrado(4);
?&gt;
</pre>
<br/>
<br/>
<b>2.1.2]</b> Variáveis globais
<br/>
<br/>
Ao declarmos variáveis dentro de funções, elas tornam-se a ser locais, não permitindo acesso fora da função. Caso desejar acessar essas variáveis fora da função deve-se declara-la como global.


<br/>
<br/>
<b>2.1.3]</b> Recursão
<br/>
<br/>
Podemos fazer uma chamada de função recursiva, fazendo ela chamar ela mesma diversas vezes.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	function Fatorial($numero)
	{
		   if ($numero == 1)
			      return $numero;
		   else
			      return $numero * Fatorial($numero -1);
	}
	echo Fatorial(5); // Resultado: 120
	?&gt;
</pre>
<br/>
<br/>
<b>2.2]</b> Manipulando Arquivos e Diretórios
<br/>
<br/>
A seguir veremos diversas funções do PHP para manipular arquivos e diretórios, leitura, escrita e fechamento.
<br/>
<br/>
<b>2.2.1]</b> Fopen
<br/>
<br/>
A função nativa do PHP fopen, abre um arquivo e retorna um identificador.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$fp = fopen ("/home/xalexandre/arquivo.txt", "w");
	?&gt;
</pre>
<br/>
<br/>
Podemos utilizar feof para testar se um determinado identificador criado por fopen está no final do arquivo.
Com a função fgets efetuamos a leitura linha por linha de um arquivo, até que fclose fecha a abertura do arquivo. Observe o exemplo:
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$fd = fopen ("/home/xalexandre/arquivo.txt", "r");
	while (!feof ($fd))
	{
		   // lê uma linha do arquivo
		   $buffer = fgets($fd, 4096);
		   // imprime a linha.
		   echo $buffer;
	}
	fclose ($fd);
	?&gt;
</pre>
<br/>
<br/>
<b>2.2.2]</b> Fwrite
<br/>
<br/>
A função fwrite grava um determinado conteúdo apontado pelo identificador de fopen.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	// abre o arquivo
	$fp = fopen ("/home/xalexandre/arquivo.txt", "w");
	// escreve no arquivo
	fwrite ($fp, "linha 1\n");
	fwrite ($fp, "linha 2\n");
	fwrite ($fp, "linha 3\n");
	// fecha o arquivo
	fclose ($fp);
	?&gt;
</pre>
<br/>
<br/>
<b>2.2.3]</b> File
<br/>
<br/>
A função file é bastante semelhante a fopen, a diferença é que retorna um array com todo conteúdo de um arquivo, sendo que cada posição do array é uma linha do arquivo.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	// lê o arquivo para o array $arquivo
	$arquivo = file ("/home/xalexandre/arquivo.txt");
	// exibe o conteúdo
	echo $arquivo[0]; // Resultado: linha 1
	echo $arquivo[1]; // Resultado: linha 2
	echo $arquivo[2]; // Resultado: linha 3
	?&gt;
</pre>
<br/>
<br/>
<b>2.2.4]</b> Realiza a copia exata de um determinado arquivo para outro local/nome.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$origem = "/home/xalexandre/arquivo.txt";
	$destino = "/home/xalexandre/arquivo2.txt";
	if (copy($origem, $destino))
	{
		   echo "Cópia efetuada";
	}
	else
	{
		   echo "Cópia não efetuada";
	}
	?&gt;
</pre>
<br/>
<br/>
<b>2.2.5]</b> Unlink
<br/>
<br/>
A função unlink apaga um determinado arquivo.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$arquivo = "/home/xalexandre/arquivo2.txt";
	if (unlink($arquivo))
	{
		   echo "Arquivo apagado";
	}
	else
	{
		   echo "Arquivo não apagado";
	}
	//resultado: Arquivo apagado
	?&gt;
</pre>
<br/>
<br/>
<b>2.2.6]</b> File_exists
<br/>
<br/>
A função file_exists verifica se um determinado arquivo ou diretório existe.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$arquivo   = '/home/xalexandre/arquivo2.txt';
	if (file_exists($arquivo))
	{
		   echo "Arquivo existente";
	}
	else
	{
		   echo "Arquivo não existente";
	}
	//resultado: Arquivo não existe
	?&gt;
</pre>
<br/>
<br/>
<b>2.2.7]</b> mkdir
<br/>
<br/>
mkdir cria um diretório.
<br/>
<br/>
<pre id="code" name="code" class="php">
	&lt;?
	$dir = '/tmp/diretorio';
	if (mkdir($dir, 0777))
	{
		   echo "$dir criado com sucesso";
	}
	else
	{
		   echo "$dir não criado";
	}

	//Resultado: /tmp/diretorio criado com sucesso
	?&gt;
</pre>
<br/>
<br/>
Por hoje é isso!
<br/>
Logo logo chegaremos a nosso objetivo: Orientar Objetos! Aguardem!
<br/>
Voltaremos...]]></description>
	<content:encoded />
	</item><item>
	<title>PHP - Programando com Orientação a Objetos [Parte 1]</title>
	<link>http://www.xalexandre.com.br/posts/PHP-Programando-com-Orientacao-a-Objetos-Parte-1/Programacao/PHP/9309</link>
	<pubDate>Tue, 23 Dec 2008 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/PHP-Programando-com-Orientacao-a-Objetos-Parte-1/Programacao/PHP/9309</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Buenas!<br />
        <br />
        &Eacute; com bastante &acirc;nimo que inicio uma s&eacute;rie de postagens referente a Programa&ccedil;&atilde;o Orientada a Objetos com PHP.<br />
        <br />
        Recentemente ganhei da minha magn&iacute;fica namorada, um excelente livro: PHP - Programando com Orienta&ccedil;&atilde;o a Objetos - de Pablo Dall'Oglio.<br />
        O livro &eacute; t&atilde;o fant&aacute;stico que devorei-o em apenas tr&ecirc;s dias. N&atilde;o, n&atilde;o &eacute; um livro pequeno! Conta com quase 600 p&aacute;ginas de uma forma muito did&aacute;tica, sempre contendo um exemplo pr&aacute;tico a cada explica&ccedil;&atilde;o.<br />
        <br />
        Farei uma s&eacute;rie de posts, retrando os t&oacute;picos do livro que acho mais relevantes. Logicamente n&atilde;o irei fazer explica&ccedil;&otilde;es exatas as do livro, e sim uma abordagem superficial. Recomendo o livro a todos programadores, tanto iniciantes quanto mais experientes. Sem d&uacute;vidas &eacute; uma leitura que vale muito a pena.<br />
        <br />
        Come&ccedil;ando a s&eacute;rie de posts, vou abordar diretamente a linguagem.<br />
        <br />
        <strong>1.1] o que &eacute; PHP?</strong><br />
        <br />
        Segundo a Wikipedia: A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados por Rasmus Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua p&aacute;gina pessoal. Em 1997 foi lan&ccedil;ado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL.<br />
        <br />
        Mais tarde, Zeev Suraski desenvolveu o analisador do PHP 3 que contava com o primeiro recurso de orienta&ccedil;&atilde;o a objetos, que dava poder de alcan&ccedil;ar alguns pacotes, tinha heran&ccedil;a e dava aos desenvolvedores somente a possibilidade de implementar propriedades e m&eacute;todos.<br />
        <br />
        Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, dando mais poder &agrave; m&aacute;quina da linguagem e maior n&uacute;mero de recursos de orienta&ccedil;&atilde;o a objetos. O problema s&eacute;rio que apresentou o PHP 4 foi a cria&ccedil;&atilde;o de c&oacute;pias de objetos, pois a linguagem ainda n&atilde;o trabalhava com apontadores ou handlers, como &eacute; a linguagem Java.<br />
        <br />
        O problema fora resolvido na vers&atilde;o atual do PHP, a vers&atilde;o 5, que j&aacute; trabalha com handlers. Caso se copie um objeto, na verdade copiaremos um apontador, pois, caso haja alguma mudan&ccedil;a na vers&atilde;o original do objeto, todas as outras tamb&eacute;m sofrem a altera&ccedil;&atilde;o, o que n&atilde;o acontecia na PHP 4.<br />
        <br />
        Trata-se de uma linguagem extremamente modularizada, o que a torna ideal para instala&ccedil;&atilde;o e uso em servidores web. Diversos m&oacute;dulos s&atilde;o criados no reposit&oacute;rio de extens&otilde;es PECL (PHP Extension Community Library) e alguns destes m&oacute;dulos s&atilde;o introduzidos como padr&atilde;o em novas vers&otilde;es da linguagem. &Eacute; muito parecida, em tipos de dados, sintaxe e mesmo fun&ccedil;&otilde;es, com a linguagem C e com a C++. Pode ser, dependendo da configura&ccedil;&atilde;o do servidor, embarcada no c&oacute;digo HTML. Existem vers&otilde;es do PHP dispon&iacute;veis para os seguintes sistemas operacionais: Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware, RISC OS, IRIX e Solaris.<br />
        <br />
        <strong>1.1.2] Extens&atilde;o de arquivos:</strong><br />
        Os arquivos em PHP geralmente encontram-se no seguinte padr&atilde;o de extens&atilde;o:<br />
        .php - Arquivo contendo um programa PHP.<br />
        .class.php - Um arquivo contendo uma classe em PHP.<br />
        .inc.php - Geralmente arquivos com par&acirc;metros de configura&ccedil;&otilde;es do programa.<br />
        <br />
        <strong>1.2] Delimitadores de c&oacute;digo:</strong><br />
        Para escrevermos um c&oacute;digo PHP, iniciamos com os seguintes delimitadores:<br />
        <br />
        <pre id="code" name="code" class="php">
		&lt;?
		CODIGO
		?&gt;
	</pre>
        <br />
        OU<br />
        <br />
        <pre id="code" name="code" class="php">
		&lt;?php
		CODIGO
		?&gt;
	</pre>
        <br />
        Ao final de cada comando &eacute; finalizado com ponto-e-virgula &quot;;&quot;.<br />
        <br />
        <strong>1.3] Coment&aacute;rios:</strong><br />
        <br />
        Os coment&aacute;rios em PHP s&atilde;o definidos por duas maneiras.<br />
        <br />
        <strong>1.3.1] Coment&aacute;rios de uma linha:</strong><br />
        <pre id="code" name="code" class="php">
		&lt;?
		// coment&aacute;rio
		?&gt;
	</pre>
        <br />
        ou<br />
        <pre id="code" name="code" class="php">
		&lt;?
		# coment&aacute;rio
		?&gt;
	</pre>
        <strong>1.3.2] Coment&aacute;rio em bloco:         </strong>
        <pre id="code" name="code" class="php">
		&lt;?
		/* coment&aacute;rios
		   coment&aacute;rios ..
		*/
		?&gt;
	</pre>
        <br />
        <br />
        <strong>1.4] Comandos de sa&iacute;da:</strong><br />
        <br />
        Os comandos de sa&iacute;da, ou seja, que passam as informa&ccedil;&otilde;es para o usu&aacute;rio podem ser executados da seguinte forma:<br />
        <pre id="code" name="code" class="php">
		&lt;?
		// echo imprimi uma ou mais vari&aacute;veis
		echo 'Ol&aacute; mundo';
		?&gt;
	</pre>
        <br />
        <br />
        <pre id="code" name="code" class="php">
		&lt;?
		// print imprimi uma string
		print 'Ol&aacute; mundo';
		?&gt;
	</pre>
        <br />
        <pre id="code" name="code" class="php">
		&lt;?
		// var_dump, muito utilizado para debugar um vetor.
		var_dump($vetor);
		?&gt;
	</pre>
        <br />
        <pre id="code" name="code" class="php">
		&lt;?
		/* print_r, assim como var_dump imprimi vari&aacute;veis de forma
		explanativa, mas de uma maneira mais leg&iacute;vel
		*/
		print_r($vetor);
		?&gt;
	</pre>
        <br />
        <br />
        <strong>1.5] Vari&aacute;veis:</strong><br />
        <br />
        As vari&aacute;veis s&atilde;o identificacores com valores vol&aacute;teis e mut&aacute;veis, que s&oacute; existem durante a execu&ccedil;&atilde;o do programa, uma vari&aacute;vel &eacute; sempre precedida do caractere $ (cifr&atilde;o).<br />
        <br />
        <pre id="code" name="code" class="php">
		&lt;?
		$fruta = &quot;Abacate&quot;;
		echo $fruta; //Resultado: Abacate
		?&gt;
	</pre>
        <br />
        <br />
        Para sua aplica&ccedil;&atilde;o ter um c&oacute;digo-fonte mais claro, &eacute; sempre bom nomear as vari&aacute;veis de acordo com o conte&uacute;do que ir&aacute; receber, por exemplo: para vari&aacute;vel que conter&aacute; o nome de um aluno, podemos declara-la como: $nomeAluno. Jamais poderemos declarar uma vari&aacute;vel iniciando por valores num&eacute;ricos, espa&ccedil;os ou caracteres especiais. Quanto mais clara for a nomentaclatura de suas vari&aacute;veis, mais entend&iacute;vel ser&aacute; o c&oacute;digo de sua aplica&ccedil;&atilde;o.<br />
        <br />
        Tamb&eacute;m devo lembrar que o PHP &eacute; case-sensitive, ou seja, Abacate &eacute; diferente de abacate, por isso &eacute; sempre bom seguir um padr&atilde;o na hora de nomear suas vari&aacute;veis, por exemplo: no caso de um nome de vari&aacute;vel composto, facilita se come&ccedil;armos a nomenclatura com letra min&uacute;scula e a palavra seguinte com letra mai&uacute;scula: $nomeProduto.<br />
        <br />
        <strong>1.5.1] Vari&aacute;veis - Tipo Booleano</strong><br />
        <br />
        Tipos Booleanos s&atilde;o valores l&oacute;gicos, verdadeiro ou falso.<br />
        <br />
        Por exemplo, se a vari&aacute;vel $mostrarFruta for verdadeira, exibiremos &quot;Abacate&quot;. Veja no exemplo:<br />
        <br />
        <pre id="code" name="code" class="php">

		&lt;?
		// Vari&aacute;vel recebe valor verdadeiro.
		$mostrarFruta = TRUE;
		if($mostrarFruta){
			echo 'Abacate';
		}
		?&gt;
	</pre>
        <br />
        <br />
        Vejamos outro exemplo:<br />
        <br />
        <pre id="code" name="code" class="php">
		&lt;?
		// declara vari&aacute;vel num&eacute;rica
		$umidade = 91;
		// testa se &eacute; maior que 90. Retorna um boolean
		$vai_chover = ($umidade &gt; 90);
		// testa se $vai_chover &eacute; verdadeiro
		if ($vai_chover){
			echo 'Est&aacute; chovendo';
		}
		?&gt;
	</pre>
        <br />
        <br />
        <strong>1.5.2] Vari&aacute;veis - Tipo Num&eacute;rico</strong><br />
        <br />
        N&uacute;meros podem ser especificados em nota&ccedil;&atilde;o decimal (base 10), hexadecimal (base 16) ou octal (base 8), opcionalmente precedido de sinal (- ou +).<br />
        <pre id="code" name="code" class="php">
		&lt;?
		// n&uacute;mero decimal
		$a = 1234;
		// um n&uacute;mero negativo
		$a = -123;
		// n&uacute;mero octal (equivalente a 83 em decimal)
		$a = 0123;
		// n&uacute;mero hexadecimal (equivalente a 26 em decimal)
		$a = 0x1A;
		// ponto flutuante
		$a = 1.234;
		// nota&ccedil;&atilde;o cient&iacute;fica
		$a = 4e23;
		?&gt;
	</pre>
        <br />
        <br />
        <strong>1.5.3] Vari&aacute;veis - Tipo String</strong><br />
        <br />
        Uma String &eacute; uma cadeia de caracteres alfanum&eacute;ricos. Em sua declara&ccedil;&atilde;o utilizamos apas duplas &quot;&quot; ou aspas simples \'\'.<br />
        <br />
        <pre id="code" name="code" class="php">
		&lt;?
		$fruta = 'Abacate';
		$fruta = &quot;Abacate&quot;
		?&gt;
	</pre>
        <br />
        <br />
        <strong>1.5.4] Vari&aacute;veis - Tipo Array</strong><br />
        <br />
        Existem dois tipos de Array's. Uni-dimensionais e Bi-dimensionais.<br />
        Um Array uni-dimensional &eacute; chamado de Vetor ou Lista.<br />
        Array bi-dimensional &eacute; chamado de matriz, veja os exemplos:<br />
        <br />
        <pre id="code" name="code" class="php">
		&lt;?
		$frutas = array('Abacate', 'Abacaxi', 'Ameixa');
		echo $frutas[1]; // Resultado: Abacate
		?&gt;
	</pre>
        <br />
        <br />
        <strong>1.5.5] Vari&aacute;veis - Tipo Objeto</strong><br />
        <br />
        Um objeto &eacute; uma entidade com um determinado comportamento definido por seus m&eacute;todos (a&ccedil;&otilde;es) e propriedades (dados). Para criar um objeto deve-se utilizar o operador new. Veja o exemplo de um objeto do tipo Computador.<br />
        <pre id="code" name="code" class="php">
		&lt;?
		class Computador{
			var $cpu;
			function ligar(){
				echo &quot;Ligando computador a {$this-&gt;cpu}...&quot;;
			}
		}
		$obj = new Computador;
		$obj-&gt;cpu = &quot;500Mhz&quot;;
		$obj-&gt;ligar(); // Resultado: Ligando computador a 500Mhz
		?&gt;
	</pre>
        <br />
        <br />
        <strong>1.5.6] Vari&aacute;veis - Tipo callback</strong><br />
        <br />
        Algumas fun&ccedil;&otilde;es como call_user_func() aceitam um par&acirc;metro que significa uma fun&ccedil;&atilde;o a ser executada. Este tipo de dado &eacute; chamado de callback. Um par&acirc;metro callback pode ser o nome de uma fun&ccedil;&atilde;o representada por uma string ou o m&eacute;todo de um objeto a ser executado, representados por um array. Veja os exemplos na <a href="http://www.php.net/call_user_func" target="_blank">documenta&ccedil;&atilde;o da fun&ccedil;&atilde;o call_user_func()</a>.<br />
        <br />
        <strong>1.6] Constantes</strong><br />
        <br />
        Uma constante &eacute; um valor que n&atilde;o sofre modifica&ccedil;&otilde;es durante a execu&ccedil;&atilde;o do programa. Ela &eacute; representada por um identificador, assim como as vari&aacute;veis, com a exce&ccedil;&atilde;o de que s&oacute; pode conter valores escalares (boolean, inteiro, ponto flutuante e string). Um valor escalar n&atilde;o pode ser composto de outros valores, como vetores ou objetos. As regras de nomenclatura de constantes seguem as mesmas regras das vari&aacute;veis, com a exce&ccedil;&atilde;o de que as constantes n&atilde;o s&atilde;o precedidas pelo sinal de cifr&atilde;o ($) e geralmente utilizam-se nomes em mai&uacute;sculo.<br />
	<pre id="code" name="code" class="php">
		&lt;?
		MAXIMO_CLIENTES // exemplo de constante
		?&gt;
	</pre>
        <br />
        Voc&ecirc; pode definir uma constante utilizando a fun&ccedil;&atilde;o define(). Quando uma constante &eacute; definida, ela n&atilde;o pode mais ser modificada ou anulada. Exemplo:<br />
        <pre id="code" name="code" class="php">
		&lt;?
		define(&quot;MAXIMO_CLIENTES&quot;, 100);
		echo MAXIMO_CLIENTES; // Resultado: 100
		?&gt;
	</pre>
        <br />
        <br />
        Por hoje &eacute; isso pessoALL. <br />
        Voltaremos...
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Killer Pool - Sinuca</title>
	<link>http://www.xalexandre.com.br/posts/Killer-Pool-Sinuca/iPhone/Noticias/9308</link>
	<pubDate>Fri, 19 Dec 2008 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Killer-Pool-Sinuca/iPhone/Noticias/9308</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Killer Pool &eacute; sem d&uacute;vida o melhor jogo de sinuca feito para iPhone at&eacute; o momento.<br />
        <br />
        Com gr&aacute;ficos 3D excelentes.<br />
        <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/083XRJT1y6g&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/083XRJT1y6g&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>         <br />
        <br />
        Download: <a href="http://rs524.rapidshare.com/files/171810638/Killer_Pool.ipa" target="_blak">Aqui</a><br />
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Tornando o GMail mais prático com Labs!</title>
	<link>http://www.xalexandre.com.br/posts/Tornando-o-GMail-mais-pratico-com-Labs/Google/Geral/128</link>
	<pubDate>Fri, 05 Dec 2008 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Tornando-o-GMail-mais-pratico-com-Labs/Google/Geral/128</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Buenas PessoALL!<br />
        <br />
        Novamente estou aqui escrevendo este humilde post e desta vez &eacute; sobre o incr&iacute;vel e poderoso Google Mail!<br />
        <br />
        As facilidades que o GMail pode nos porporcionar s&atilde;o muitas, alguns pequenos detalhes que fazem muita diferen&ccedil;a.<br />
        Vou tratar neste post especialmente sobre Labs!<br />
        <br />
        Para utilizarmos 100% dos aplicativos do Google devemos alterar a configura&ccedil;&atilde;o de idioma para Ingl&ecirc;s. Ap&oacute;s altera&ccedil;&atilde;o de idioma, em settings temoss a aba Labs, que conta com v&aacute;rios aplicativos, alguns muito &uacute;teis outras nem tanto.<br />
        <br />
        1] Superstars: Permite adicionar &iacute;cones ao seus e-mails. Semelhante a &quot;estrela&quot; j&aacute; existente por padr&atilde;o, por&eacute;m tem mais estilos de &iacute;cones, permitindo diferencias mensagens.<br />
        <br />
        2] Pictures in chat: Permite visualizar as fotos dos contato, utilizando GTalk pelo GMail.<br />
        <br />
        3] Custom keyboard shortcuts: Uma das mais &uacute;teis op&ccedil;&otilde;es, permite ao usu&aacute;rio configurar teclas de atalho para realizar diversas tarefas, ou seja, voc&ecirc; poder&aacute; configurar a tecla &quot;o&quot; para abrir e-mail, a tecla &quot;c&quot; para compor um e-mail, a tecla &quot;/&quot; para procurar e-mails, a tecla &quot;#&quot; para mover e-mail para lixeira, &quot;gi&quot; para ir para caixa de entrada, as op&ccedil;&otilde;es s&atilde;o diversas, eu particularmente as utilizo muito.<br />
        <br />
        4] Custom date formats: Habilita configura&ccedil;&atilde;o de formato de data, permitindo alterar entre padr&atilde;o americano, brasileiro e horario em formado 12 e 24 horas.<br />
        <br />
        5] Old Snakey: &Oacute;timo passa tempo! Quem nunca jogou o &quot;jogo da cobrinha&quot; em celulares antigos? Ao habilitar Old Snakey, o usu&aacute;rio poder&aacute; jogar o cl&aacute;ssico jogo da cobrinha apertando simultaneamente as teclas: Shift + 7. O jogo possui High Score para voc&ecirc; superar seu record!<br />
        <br />
        6] Right-side chat: Como o nome j&aacute; diz, ao habilitar essa op&ccedil;&atilde;o sua lista de contatos do GTalk para a ser do lado direito.<br />
        <br />
        7] Right-side labels: Mesma coisa que a Right-side chat.<br />
        <br />
        8] Hide Unread Counts: Ao habilitar essa op&ccedil;&atilde;o, o GMail passa a n&atilde;o contar mais quantos e-mails novos voc&ecirc; possui.<br />
        <br />
        9] Quote selected text: Habilitando esta op&ccedil;&atilde;o, voc&ecirc; poder&aacute; &quot;citar&quot; apenas a parte selecionada de um respectivo e-mail. &Oacute;timo para respostas r&aacute;pidas de um determinado assunto.<br />
        <br />
        10] Navbar drag and drop: Esta op&ccedil;&atilde;o permite ao usu&aacute;rio alterar a ordem dos paineis do GMail, arrastando para o lugar que desejar.<br />
        <br />
        11] Mail Goggles: Esta op&ccedil;&atilde;o &eacute; para os bebados de plant&atilde;o! Ao Habilitar o Mail Goggles, quando voc&ecirc; for enviar um e-mail, ter&aacute; que fazer um determinado c&aacute;lculo para provar que est&aacute; sobrio! BAstante &uacute;til para n&atilde;o se arrepender daquele e-mail enviado ao chegar da balada.<br />
        <br />
        12] Vacation Time!: Nome sugestivo! Permite configurar uma determinada data para responder e-mails automaticamente, avisando seus contatos que voc&ecirc; est&aacute; de f&eacute;rias.<br />
        <br />
        13] Custom Label Colors: &Oacute;tima op&ccedil;&atilde;o! Permite escolher uma determinada cor para suas Labals!<br />
        <br />
        14] Google Calendar gadget: Integra&ccedil;&atilde;o com o Google Calendar, mostra um painel com seus agendamentos.<br />
        <br />
        15] Google Docs gadget: Integra&ccedil;&atilde;o com o Google Docs, mostra um painel com seus documentos.<br />
        <br />
        <a href="/upload/fckeditor/image/GMail.png" rel="lyteshow">         <img height="278" width="445" border="0" alt="xALEXANDRE GMail" src="/upload/fckeditor/image/GMail.png" />         </a>         <br />
        <br />
        Isto &eacute; tudo PessoALL, at&eacute; a pr&oacute;xima!<br />
        <br />
        []'s
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Mocha VNC - Controlar computador pelo iPhone</title>
	<link>http://www.xalexandre.com.br/posts/Mocha-VNC-Controlar-computador-pelo-iPhone/iPhone/Noticias/127</link>
	<pubDate>Sun, 30 Nov 2008 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Mocha-VNC-Controlar-computador-pelo-iPhone/iPhone/Noticias/127</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Ol&aacute; pessoALL!<br />
        <br />
        Como havia mencionado no &uacute;ltimo post, o pr&oacute;ximo post seria de como controlar o seu computador pelo iPhone!<br />
        <br />
        Isto mesmo, imagine-se na seguinte situa&ccedil;&atilde;o:<br />
        Um dia chuvoso, voc&ecirc; quer ficar descansando em sua cama, mas lembrou do programa que deixou rolando no PC para baixar m&uacute;sicas e filmes, e quer ver se o download j&aacute; concluiu. Pra que sair do conforto de sua cama? Use seu poderoso iPhone e controle os downloads que deixou no PC.<br />
        <br />
        Lembrando que a situa&ccedil;&atilde;o acima &eacute; apenas um exemplo, voc&ecirc; poder&aacute; controlar totalmente seu PC remotamente pelo iPhone.<br />
        <br />
        Bueno, vamos ao que interessa!<br />
        <br />
        Este modo de controlar o computador pelo iPhone &eacute; utilizando um programa VNC, sendo assim, independente do seu sistema operacional, conseguir&aacute; um servidor VNC para ele.<br />
        <br />
        Clique <a href="http://www.xalexandre.com.br/upload/iphone/apps/MochaVNC.ipa">AQUI</a> para fazer o download do aplicativo para o iPhone, chama-se Mocha VNC.         <br />
        Ap&oacute;s instalar o aplicativo no seu iPhone, precisar&aacute; instalar o servidor VNC no seu computador.<br />
        <br />
        Usu&aacute;rios Linux (Debian-Like | Gnome) facilmente poder&atilde;o habilitar o acesso seguindo o menu Sistema - Prefer&ecirc;ncia - &Aacute;rea de Trabalho Remota ou clique <a href="http://www.xalexandre.com.br/upload/programas/vnc-4_1_3-x86_linux.tar.gz">AQUI</a> para fazer o download.<br /><br />
        <img src="http://www.xalexandre.com.br/upload/fckeditor/image/vnc.png" alt="" /> <br />
        <br />
        Usu&aacute;rios Windows clique <a href="http://www.xalexandre.com.br/upload/programas/vnc-4_1_2-x86_win32.exe">AQUI</a> para fazer o download, ap&oacute;s o download execute o VNC Server e na aba Authentication clique no bot&atilde;o Configure. Escolha uma senha e confirme.          <br />
        Pronto, seu servidor VNC est&aacute; configurado e pronto para o acesso.<br /><br />
        Agora abra o aplicativo Mocha VNC clique em Connect e preencha os seguintes campos:<br />
        <strong>1]</strong> VNC server IP address: IP do computador que deseja acessar;<br />
        <strong>2]</strong> VNC Server Port: Padr&atilde;o 5900<br />
        <strong>3]</strong> VNC Password: A senha que escolheu ao instalar o servidor VNC no seu computador;<br />
        4] Save Password: ON<br />
        <br />
        Clique em Connect e pronto!<br />
        Controle seu computador pelo iPhone!<br /><br />
<img src="http://www.xalexandre.com.br/upload/fckeditor/image/vnc2.png" /><br /><br />
        At&eacute; a pr&oacute;xima []'s.
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Veency - Controlar iPhone pelo computador</title>
	<link>http://www.xalexandre.com.br/posts/Veency-Controlar-iPhone-pelo-computador/iPhone/Noticias/126</link>
	<pubDate>Tue, 28 Oct 2008 09:10:12 -0200</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Veency-Controlar-iPhone-pelo-computador/iPhone/Noticias/126</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Ol&aacute; PessoALL!<br />
        <br />
        Foi criado recentemente um programa chamado Veency, que tem por objetivo controlar o iPhone pelo computador, ou seja, o Veency &eacute; um servidor VNC para iPhone, ele nos da acesso remoto total ao aparelho.<br />
        <br />
        <strong>Que legal Alexandre, mas qual a utilidade disso?</strong><br />
        Olha, sinceramente ainda n&atilde;o achei grande utilidade, mas creio que seja &uacute;til para escrever algo mais rapidamente no aparelho, ou no caso de ele travar, n&atilde;o sei...<strong><br />
        <br />
        Certo Alexandre, mas se n&atilde;o tem utilidade para que vou usar?</strong><br />
        Use para acompanhar a evolu&ccedil;&atilde;o da tecnologia amiguinho!<br />
        <br />
        <strong>Ok, mas e o que preciso para testar essa <strike>in</strike>utilidade?</strong><br />
        Precisa de um iPhone, <strike>uma televis&atilde;o que n&atilde;o ia ser</strike>, um computador com Linux, Mac ou Windows e conex&atilde;o Wireless.<br />
        <br />
        <strong>Legal, tenho tudo isso e agora?</strong><br />
        Agora vamos l&aacute; amiguinho!<br />
        <br />
        <strong>1]</strong> Abra o aplicativo Cydia do seu iPhone e procure por VNC, ir&aacute; aparece Veency, instale o programa.<br />
        <strong>2]</strong> Reinicie o iPhone, apenas para termos certeza de que foi instalado corretamente e de que ir&aacute; ser startado.<br />
        <strong>3]</strong> Agora voc&ecirc; ir&aacute; precisar de um cliente VNC, usu&aacute;rios Linux poder&atilde;o utilizar o VNCViewer, Debian-Like digite: apt-get install vncviewer<br />
        Usu&aacute;rio Mac OS X clique <a target="_blank" href="http://sourceforge.net/project/showfiles.php?group_id=64347">aqui</a><br />
        Usu&aacute;rios Windows clique <a target="_blank" href="http://www.realvnc.com/products/download.html">aqui</a><br />
        <br />
        <strong>Ok Alexandre, j&aacute; instalei esses programinhas, e agora?</strong><br />
        Agora abra o VNCViewer, digite o IP do seu iPhone e controle-o pelo seu computador!<br />
        <br />
        <a href="http://www.xalexandre.com.br/upload/fckeditor/image/Foto-0050.jpg" rel="lyteshow">
        <img height="400" width="450" src="http://www.xalexandre.com.br/upload/fckeditor/image/Foto-0050.jpg" alt="" />
        </a>
        <br />
        <br />
        Isto &eacute; tudo pessoALL, no pr&oacute;ximo post, iremos ver como fazer o contr&aacute;rio, controlar o computador pelo iPhone!<br />
        <br />
        []'s<br />
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Tradutor Texto Ascii para Binário</title>
	<link>http://www.xalexandre.com.br/posts/Tradutor-Texto-Ascii-para-Binario/Programacao/PHP/125</link>
	<pubDate>Fri, 17 Oct 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Tradutor-Texto-Ascii-para-Binario/Programacao/PHP/125</guid>
	<description><![CDATA[Ol&aacute;! Em mais um dia chuvoso <strike>- que realmente chove a quatro dias aqui em<br>
Passo Fundo - RS -</strike> resolvi criar uma <strike>in</strike>utilidade, uma ferramenta que faz a <br>
tradu&ccedil;&atilde;o de Bin&aacute;rio para Texto Ascii, e vice-e-versa, e irei ensinar vocês!
<br>
<br>
<b>Ok Alexandre, mas e como eu fa&ccedil;o isso?</b>
<br>
Certo vamos l&aacute;, antes de mais nada, devo relatar que essa <strike>baga&ccedil;a</strike> incr&iacute;vel <br>
ferramente &eacute; feita utilizando html e javascript.
<br>
<br>
<b>Sim Alexandre, eu j&aacute; sabia que era em JavaScript, agora quero <br>
saber como faz!</b>
<br>
Vamos por partes, faremos dois arquivos, um contendo o JavaScript,<br>
na qual far&aacute; todo o servi&ccedil;o, e outro com o html para interface com usu&aacute;rio.
<br>
<br>
<label for="binario.js">Conte&uacute;do do binario.js</label>

<pre class="JScript" name="code" id="code">
/*
Função para verificar se a tradução Ascii x Binário é em tempo real.
*/
function verificaTReal() {
	// Variável tReal recebe conteúdo do checkbox.
	var tReal = document.getElementById("tReal").checked;

	// Se for verdadeiro chama a função mostraBinario.
	if (tReal) mostraBinario();
	
}

function decimalBinario(entraDec) {
	// Variável binarioNumerico recebe texto e transforma em string.
	var binarioNumerico = "00000000"+entraDec.toString(2);

	// binarioNumerico recebe valor filtrando tamanho-8.
	binarioNumerico = binarioNumerico.substr(binarioNumerico.length-8,8);
	
	// Retorna binarioNumerico para função mostraBinario.
	return binarioNumerico; 
}

/*
Função para mostrar binário, de texto(ascii) para binário.
*/
function mostraBinario() {
	// Declaração de variáveis
	var binarioChar, binarioResultado="", texto, rEspaco;

	// Variável texto recebe o conteúdo da textarea "texto".
	texto = document.getElementById("texto").value;
	
	/* Variável rEspaco recebe conteúdo do checkbox, para verificar se
	exibe espaço no binário. */
	rEspaco = document.getElementById("rEspaco").checked;

	// Laço de repetição, de 0 até a quantidade de caracters da variável texto.
	for (i = 0; i < texto.length; i++) {
		/* Retorna um inteiro, representando unicode na posição "i" da string texto,
		após passar pela função decimalBinario. */
		binarioChar = decimalBinario(texto.charCodeAt(i));
		
		// Se variável rEspaco NÃO for verdadeira adiciona espaço.
		if (!rEspaco) binarioChar += " ";
		
		// Adiciona o resultado.
		binarioResultado += binarioChar;
	}

	// Textarea "binario" recebe o resultado em binário.
	document.getElementById("binario").value = binarioResultado;
}

/*
Função para mostrar texto, de binário para texto (ascii).
*/
function mostraAscii() {
	// Declaração devariáveis
	var binarioTexto, textoResultado="", binarioTamanho;

	/* Variável binarioTexto recebe tudo que tem na textarea "binario",
	desde que não seja 0 ou 1. */
	binarioTexto = document.getElementById("binario").value.replace(/[^01]/g, "");
	
	// Variável binarioTamanho recebe o tamanho de caracters em binarioTexto%8.
	binarioTamanho = binarioTexto.length-(binarioTexto.length%8);

	// Laço de repetição, de 0 até o tamanho binário com incremento 8.
	for (z=0; z&lt; binarioTamanho; z=z+8) {
		 //Retorna uma string a partir de valores de caracteres Unicode.
		textoResultado += String.fromCharCode(parseInt(binarioTexto.substr(z,8),2));
	}

	// Textarea "texto" recebe o resultado em texto (ascii).
	document.getElementById("texto").value = textoResultado;
}
</pre>
<br>
<b>&Oacute;timo Alexandre, mas e agora, o que fa&ccedil;o com isso?</b>
<br>
Apenas copie amiguinho! O c&oacute;digo est&aacute; pronto e comentado para estudo.<br>Agora vamos a parte visual.
<br>
<br>
<label for="binario.html">Conte&uacute; do binario.html</label>
<pre class="html" name="code" id="code">
<script src="js/binario.js"></script>
<form action="" method="post" >
	<p>
		<label for="tReal">
			<input type="checkbox" name="tReal" id="tReal" checked="checked" />
			Traduzir em tempo real. <em>(com JavaScript)</em>
		</label>
		<br />
		<label for="rEspaco">
			<input type="checkbox" name="rEspaco" id="rEspaco" />
				Remover espaços.
		</label>
	</p>
	<h4>
		<label for="texto">
			Texto normal ASCII:
		</label>
	</h4>
	<p>
		<textarea name="texto" rows="5" cols="67" id="texto" onkeyup="verificaTReal();" onkeypress="verificaTReal();">
                </textarea>
		<br />
		<input type="submit" value="Ver em Bin&aacute;rio" onclick="mostraBinario(); return false;" />
	</p>
</form>
<form action="" method="post" >
	<h4>
		<label for="binario">
			Bin&aacute;rio:
		</label>
	</h4>
	<p>
		<textarea name="binario" rows="5" cols="67" id="binario">
               </textarea>
		<br />
		<input type="submit" value="Ver em Ascii" onclick="mostraAscii(); return false;"/>
	</p>
</form>
</pre>
<b>Incr&iacute;vel Alexandre! Mas eu gostaria de ver essa <strike>in</strike>utilidade funcionando!</b>
<br>
Ok amiguinho, segue a <strike>baga&ccedil;a</strike> ferramenta funcionando.
<br>
<br>
<iframe width="430" height="500"src="http://www.xalexandre.com.br/code/post/125/binario.html" border="0">
</iframe>]]></description>
	<content:encoded />
	</item><item>
	<title>Tabela Brasileirão no seu terminal!</title>
	<link>http://www.xalexandre.com.br/posts/Tabela-Brasileirao-no-seu-terminal/Programacao/PHP/121</link>
	<pubDate>Mon, 06 Oct 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Tabela-Brasileirao-no-seu-terminal/Programacao/PHP/121</guid>
	<description><![CDATA[Estava eu em um s&aacute;bado - chuvoso, ap&oacute;s longas horas estudando, resolvi <br> fazer uma pausa e ver a situa&ccedil;&atilde;o do <a href="http://www.gremio.net">Gr&ecirc;mio</a> no campeonato brasileiro.<br />
        Ap&oacute;s ver a tabela de classifica&ccedil;&atilde;o, tive a brilhante id&eacute;ia: Por que n&atilde;o ter a classifica&ccedil;&atilde;o do campeonato no terminal?<br />
        Isso mesmo, ao inv&eacute;z de abrir o navegador, entrar no site da globo, e ver a tabela, podemos simplesmente com um comando no terminal ter a tabela do brasileir&atilde;o.<br />
        <br />
        Ultimamente ando meio pregui&ccedil;oso para realizar tarefas simples, semana passada fiz um .sh para alternar de rede wireless, assim ao chegar no trabalho, ou chegar em casa, simplesmente digito o nome da rede no terminal.<br />
        <br />
        Pois bem, quando estava fazendo o script para pegar os dados da tabela, lembrei de um utilit&aacute;rio chamado <a href="http://funcoeszz.net">Fun&ccedil;&otilde;es ZZ</a>, uma colet&acirc;nea de simples fun&ccedil;&otilde;es mas realmente &uacute;teis, ent&atilde;o resolvi fazer uma fun&ccedil;&atilde;o extra para as <a href="http://funcoeszz.net">Fun&ccedil;&otilde;es ZZ </a>- eis que surge a zzbrasileirao.<br />
        <br />
        <strong>Brasileir&atilde;o S&eacute;rie A</strong>: <br />
        <br />
        <font color="#000000">zzbrasileirao() {<br />
        <font color="#999999"># ----------------------------------------------------------------------------<br />
        # Mostra a tabela atualizada do Campeonato Brasileiro - S&eacute;rie A<br />
        # Autor: Alexandre Brodt Fernandes  &lt;alexandre(a)programador.com&gt;<br />
        # Site: http://www.xalexandre.com.br<br />
        # Vers&atilde;o: 1.0<br />
        # Uso: zzbrasileirao<br />
        # ----------------------------------------------------------------------------</font><br />
        zzzz -z $1 zzbrasileirao &amp;&amp; return<br />
        echo -e <font color="#ff0000">'\033[32m &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P&nbsp; J&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;% \033[m'</font><br />
        $ZZWWWDUMP <font color="#ff0000">'http://globoesporte.globo.com/Esportes/Futebol/Classificacao/0,,ESP0-9827,00.html'</font> | sed -n <font color="#ff0000">'55,74p'</font><br />
        echo -e <font color="#ff0000">'\n&nbsp;&nbsp;&nbsp;\033[32mP\033[montos \033[31m-\033[m \033[32mJ\033[mogos \033[31m-\033[m \033[32mV\033[mit&oacute;rias \033[31m-\033[m \033[32mE\033[mmpates \033[31m-\033[m \033[32mD\033[merrotas \033[31m-\033[m \033[32mG\033[mols \033[32mP\033[mr&oacute; \033[31m-\033[m \033[32mG\033[mols \033[32mC\033[montra \033[31m-\033[m \033[32mS\033[maldo de \033[32mG\033[mols \033[31m-\033[m \033[32m%\033[mAproveitamento'</font><br />
        }</font><br />
        <br />
        <strong>Brasileir&atilde;o S&eacute;rie B</strong>:<br />
        <br />
        zzbrasileiraob() {<br />
        <font color="#999999"># ----------------------------------------------------------------------------<br />
        # Mostra a tabela atualizada do Campeonato Brasileiro - S&eacute;rie B<br />
        # Autor: Alexandre Brodt Fernandes  &lt;alexandre(a)programador.com&gt;<br />
        # Site: http://www.xalexandre.com.br<br />
        # Vers&atilde;o: 1.0<br />
        # Uso: zzbrasileiraob<br />
        # ----------------------------------------------------------------------------</font><br />
        zzzz -z $1 zzbrasileiraob &amp;&amp; return<br />
        echo -e <font color="#ff0000">'\033[32m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P&nbsp;&nbsp;J&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;% \033[m'</font><br />
        $ZZWWWDUMP <font color="#ff0000">'http://globoesporte.globo.com/Esportes/Futebol/Classificacao/0,,ESP0-9828,00.html'</font> | sed -n <font color="#ff0000">'54,73p'</font><br />
        echo -e <font color="#ff0000">'\n&nbsp;&nbsp;&nbsp;\033[32mP\033[montos \033[31m-\033[m \033[32mJ\033[mogos \033[31m-\033[m \033[32mV\033[mit&oacute;rias \033[31m-\033[m \033[32mE\033[mmpates \033[31m-\033[m \033[32mD\033[merrotas \033[31m-\033[m \033[32mG\033[mols \033[32mP\033[mr&oacute; \033[31m-\033[m \033[32mG\033[mols \033[32mC\033[montra \033[31m-\033[m \033[32mS\033[maldo de \033[32mG\033[mols \033[31m-\033[m \033[32m%\033[mAproveitamento'</font><br />
        }<br />
        <br />
        <a href="http://funcoeszz.net">Fun&ccedil;&otilde;es ZZ</a> &eacute; uma cria&ccedil;&atilde;o do <a href="http://aurelio.net/">Aur&eacute;lio Marinho Jargas</a>, um <strike>surfista doid&atilde;o</strike> cara muito gente boa, autor do livro <a href="http://www.shellscript.com.br/">Shell Script Profissional</a> j&aacute; comentado <a href="http://www.xalexandre.com.br/principal.php?id_menu=noticias&amp;id=99&amp;id_grupo=14&amp;id_subgrupo=3">aqui</a> em seu lan&ccedil;amento.<br />
        <br />
        Ent&atilde;o &eacute; isso, recomendo <a href="http://funcoeszz.net">Fun&ccedil;&otilde;es ZZ</a>, um aplicativo simples, mas com grande utilidade. <br />
        <br />
        Apoie o Software Livre, valorize o produto nacional!]]></description>
	<content:encoded />
	</item><item>
	<title>Apache, MySQL e PHP no iPhone!</title>
	<link>http://www.xalexandre.com.br/posts/Apache,-MySQL-e-PHP-no-iPhone/iPhone/Noticias/117</link>
	<pubDate>Sun, 20 Jul 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Apache,-MySQL-e-PHP-no-iPhone/iPhone/Noticias/117</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        iPhone realmente n&atilde;o &eacute; um simples smarty-phone!<br />
        Com ele podemos ter um servidor web completo, rodando apache, php e mysql.<br />
        <br />
        Breve tutorial de como transformar seu iPhone em um servidor web!<br />
        <br />
        <br />
        <u><strong>         Programas necess&aacute;rios para instala&ccedil;&atilde;o:<br />
        </strong></u><br />
        OpenSSH<br />
        BossPrefs<br />
        Apache<br />
        <a href="http://www.xalexandre.com.br/iphone/php.gz">PHP</a><br />
        <a href="http://www.xalexandre.com.br/iphone/mysql.tgz">MySQL</a><br />
        <br />
        Abra o Installer e adicione o reposit&oacute;rio: <font color="#339966">http://thebigboss.org/repo.xml</font><br />
        <br />
        Ap&oacute;s refresh instale os seguintes pacotes pelo Installer: OpenSSH, BossPrefs e Apache.<br />
        <br />
        * Dica: Instale e acione o aplicativo Insiomnia quando for realizar as instala&ccedil;&otilde;es, assim seu iPhone ir&aacute; manter-se &quot;acordado&quot;.<br />
        <br />
        <u><strong>         Alterando a senha de root do SSH:</strong></u><br />
        <br />
        Alterar a senha de root do ssh &eacute; um fato important&iacute;ssimo, por&eacute;m, infelizmente 90% dos donos de iPhones mant&eacute;m a senha padr&atilde;o: alpine.<br />
        Isso poder&aacute; gerar grandes problemas, caso algum engra&ccedil;adinho queira aprontar com seu iPhone.<br />
        <br />
        Para alterar a senha &eacute; bastante simples.<br />
        O iPhone utiliza a senha encriptada com sistema crypt.<br />
        Para usu&aacute;rios Linux ou Mac OS X basta digitar o seguinte comando: <br />
        <font color="#339966">openssl passwd -crypt -salt /s NovaSenha</font>         <br />
        <br />
        J&aacute; usu&aacute;rios Windows, podem gerar sua senha apartir desse site: <a href="http://iphone.simbunch.com/crypt.php">iPhone Simbunch</a>.<br />
        <br />
        Ap&oacute;s gerar sua senha, precisamos acessar via SSH para alterar.<br />
        Usu&aacute;rios Unix poder&atilde;o digitar no terminal: <br />
        <font color="#339966">ssh root@ip-do-seu-iphone -p 22</font><br />
        <br />
        Usu&aacute;rios Windows poder&atilde;o utilizar o programa Putty.<br />
        <br />
        Para alterar a senha digite: <br />
        <font color="#339966">vim /etc/master.passwd<br />
        </font><br />
        Coloque a sua nova senha nos usu&aacute;rios: root e mobile.<br />
        <br />
        <u><strong>         Instalando o PHP:</strong></u><br />
        <br />
        Por SSH, crie os diret&oacute;rio opt, iphone e bin, dentro de /var/WebServer:<br />
        <font color="#339966">mkdir -p /var/WebServer/opt/iphone/bin</font><br />
        <br />
        Ap&oacute;s volte para a raiz:<br />
        <font color="#339966">cd /</font><br />
        <br />
        E crie um link oculto para opt:<br />
        <font color="#339966">ln -s /var/WebServer/opt/ ./opt</font><br />
        <br />
        Agora precisamos enviar o php para dentro do iPhone.<br />
        Usu&aacute;rios Unix:<font color="#339966"><br />
        scp ARQUIVO_PHP root@IP_DO_IPHONE:/var/WebServer/opt/iphone/bin/</font><br />
        <br />
        Usu&aacute;rios Windows poder&atilde;o usar o programa Winscp<br />
        <br />
        Envie o arquivo <a href="http://www.xalexandre.com.br/iphone/httpd.conf">httpd.conf</a> do apache para seu iPhone:<br />
        <font color="#339966">scp httpd.conf root@[iphone ip]:/etc/httpd/</font><br />
        <br />
        Por SSH, modifique o profile do seu iPhone, colocando o PATH do php:<font color="#339966"><br />
        PATH=&quot;/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin:/opt/iphone/bin&quot;</font><br />
        <br />
        <strong><u>Instalando MySQL:</u></strong><br />
        <br />
        Descompacte o arquivo mysql.tgz e envie o diret&oacute;rio para seu iPhone:<br />
        <font color="#339966">scp -r mysql root@IP_DO_IPHONE:/var/root/</font><br />
        <br />
        Por ssh digite:<br />
        <font color="#339966">cd /var/root/mysql/bin</font><br />
        <br />
        Em seguida:<br />
        <font color="#339966">./mysql_install_db</font><br />
        <br />
        Ap&oacute;s a instala&ccedil;&atilde;o, rode:<br />
        <font color="#339966">./mysqld_safe --user=root &amp;</font><br />
        <br />
        Para ter acesso ao MySQL por linha de comando, podendo criar, selecionar, excluir tabelas e muito mais digite:<br />
        <font color="#339966">./mysql mysql</font><br />
        <br />
        <strong><u>         Conclus&atilde;o:</u></strong><br />
        <br />
        Apartir desses programas instalados, a capacidade de produzirmos aplicativos para iPhone ficou imensa, teremos a possibilidade de produzir aplicativos para web, tais como: <br />
        * Web Fotos: Poderiamos tirar uma foto com nosso iPhone, e automaticamente o album de fotos estaria acess&iacute;vel para qualquer pessoa ligada a uma rede de computadores.<br />
        <br />
        * Music Browser: Podemos produzir aplica&ccedil;&atilde;o web, que transmite por streaming nossas m&uacute;sicas, no futuro cada usu&aacute;rio de iPhone poder&aacute; ter sua r&aacute;dio On-Line com m&uacute;sicas diretamente do seu aparelho.<br />
        <br />
        As possibilidades s&atilde;o infinitas, basta apenas <em>criatividade</em>.<br />
        <br />
        D&uacute;vidas estou a disposi&ccedil;&atilde;o.<br />
        Att.<br />
        Alexandre Brodt Fernandes
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Flash Transparente no Linux!</title>
	<link>http://www.xalexandre.com.br/posts/Flash-Transparente-no-Linux/Sistemas-Operacionais/Linux/116</link>
	<pubDate>Fri, 11 Jul 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Flash-Transparente-no-Linux/Sistemas-Operacionais/Linux/116</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Sim, &eacute; isso mesmo!<br />
        Finalmente temos flash player transparente para Linux!<br />
        <br />
        Encontrei alguns bugs com&nbsp; algumas anima&ccedil;&otilde;es, mas a transpar&ecirc;ncia est&aacute; 100%.<br />
        <br />
        <a href="http://labs.adobe.com/technologies/flashplayer10/">           Clique aqui para fazer o Download.         </a>
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Instalando Compiz Fusion Intel x3100</title>
	<link>http://www.xalexandre.com.br/posts/Instalando-Compiz-Fusion-Intel-x3100/Sistemas-Operacionais/Linux/113</link>
	<pubDate>Sat, 21 Jun 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Instalando-Compiz-Fusion-Intel-x3100/Sistemas-Operacionais/Linux/113</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Instalar Compiz Fusion no ubuntu &eacute; muito simples, com a placa de v&iacute;deo Intel X3100 apenas precisamos editar um arquivo, para que o compiz n&atilde;o barre a placa na black list.<br />
        <br />
        Baixar compiz:<br />
        <font color="#339966">sudo apt-get install xserver-xgl compizconfig-settings-manager         </font><br />
        <br />
        Editar compiz-manager:<br />
        <font color="#339966">sudo vim /etc/xdg/compiz/compiz-manager         </font><br />
        <br />
        Adicione no final do arquivo:<br />
        <input type="text" size="25" value="SKIP_CHECKS=&quot;yes&quot;" readonly="" name="nome" style="width: 140px;" class="textinput" /> <br />
        <br />
        Por &uacute;ltimo baixe o gerenciador do compiz fusion:         <br />
        <font color="#339966">sudo apt-get install compizconfig-settings-manager         </font><br />
        <br />
        Pronto! Agora desfrute dos efeitos do Compiz-Fusion!<br />
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Problemas Compiz e Java</title>
	<link>http://www.xalexandre.com.br/posts/Problemas-Compiz-e-Java/Sistemas-Operacionais/Linux/114</link>
	<pubDate>Sat, 21 Jun 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Problemas-Compiz-e-Java/Sistemas-Operacionais/Linux/114</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Usu&aacute;rios que utilizam programas em Java, podem enfrentar problemas com o compiz ativado.<br />
        <br />
        Eu particularmente utilizo diariamente tr&ecirc;s programas feitos em Java: Zend Studio, Mercury Messenger e jsms.<br />
        <br />
        Tive problemas ao rodar o Zend com o Compiz ativo, ficava completamente cinza.<br />
        <br />
        Por&eacute;m a solu&ccedil;&atilde;o &eacute; bastante simples.<br />
        <br />
        <font color="#339966">vim ZendStudio-5.5.0/Zend_Development_Environment         </font><br />
        <br />
        Adicione na segunda linha o seguinte c&oacute;digo:         <br />
        <input type="text" class="textinput" style="width: 210px;" name="url" readonly="" value="export AWT_TOOLKIT=MToolkit" size="15" />         <br />
        Pronto! Seus aplicativos Java rodaram normalmente com o Compiz ativado.<br />
        Lembrando que a dica acima &eacute; feita com o Zend Studio, mas serve para qualquer aplicativo Java.
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Envy NG</title>
	<link>http://www.xalexandre.com.br/posts/Envy-NG/Sistemas-Operacionais/Linux/115</link>
	<pubDate>Sat, 21 Jun 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Envy-NG/Sistemas-Operacionais/Linux/115</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Muitos usu&aacute;rios sentem dificuldades em compilar drivers propriet&aacute;rios para suas placas de v&iacute;deo quando o Sistema Operacional n&atilde;o a reconhece.<br />
        <br />
        Placas ATI ainda s&atilde;o mais complicadas, j&aacute; que a maioria das Nvidias j&aacute; s&atilde;o reconhecidas pela maioria dos OS.<br />
        <br />
        Mas como tudo nesse mundo, h&aacute; uma solu&ccedil;&atilde;o!<br />
        <br />
        Para ajudar essas almas desesperadas existe o Envy! Um simp&aacute;tico programa que instala drivers propriet&aacute;rios para placas de v&iacute;deo (Nvidia e ATI) sem nenhum esfor&ccedil;o do usu&aacute;rio.<br />
        <br />
        Para instalar o Envy em distribui&ccedil;&otilde;es Debian-Like digite:<br />
        <font color="#339966">sudo aptitude install envyng-gtk</font><br />
        <br />
        Logo ap&oacute;s execute o Envy como root:<br />
        <font color="#339966">sudo envyng -g<br />
        <br />
        <font color="#000000">Se preferir, poder&aacute; executar em modo texto:</font><br />
        sudo envyng -t</font>
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Astrônomos encontram teia cósmica "invisível"</title>
	<link>http://www.xalexandre.com.br/posts/Astronomos-encontram-teia-cosmica-invisivel/Ciencia/Astronomia/111</link>
	<pubDate>Sun, 25 May 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Astronomos-encontram-teia-cosmica-invisivel/Ciencia/Astronomia/111</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        <img align="left" src="http://img.terra.com.br/i/2008/05/20/765221-4973-it2.jpg" alt="" />H&aacute; tempos, astr&ocirc;nomos sabem que a quantidade de mat&eacute;ria que n&oacute;s podemos ver n&atilde;o &eacute; a mesma quantidade que est&aacute; realmente no universo. A mat&eacute;ria normal, que inclui gal&aacute;xias, estrelas e planetas, &eacute; feita de b&aacute;rions (pr&oacute;tons, n&ecirc;utrons e outras part&iacute;culas subat&ocirc;micas) e forma apenas cerca de 4% do universo. Ap&oacute;s busca extensa, astr&ocirc;nomos dizem ter encontrado metade da mat&eacute;ria normal procurada, segundo o site Space.com.<br />
        <br />
        A parte que faltava de mat&eacute;ria de b&aacute;rion n&atilde;o era detectada pois ela &eacute; muito quente para ser vista em luz vis&iacute;vel, mas muito fria para ser vista por raios-x. Chamado de &quot;meio intergal&aacute;tico&quot;, ou IGM (na sigla em ingl&ecirc;s), a mat&eacute;ria est&aacute; por todo o espa&ccedil;o como uma teia de aranha c&oacute;smica.<br />
        <br />
        Uma equipe de astr&ocirc;nomos da Universidade de Colorado usou a luz de quasars distantes, cores brilhantes de gal&aacute;xias com buracos negros ativos, para comprovar a estrutura quase invis&iacute;vel estrutura, como a luz de uma lanterna no meio &agrave; neblina, utilizando imagens de um aparelho do telesc&oacute;pio Hubble, chamado STIS e de um aparelho da Nasa chamado Fuse.<br />
        <br />
        Recentemente, outro grupo de astr&ocirc;nomos encontrou um filamento de mat&eacute;ria de b&aacute;rion ligando duas gal&aacute;xias distantes. A descoberta foi divulgada na edi&ccedil;&atilde;o de hoje da revista Astrophysical Journal.<br />
        <br />
        Um aparelho espectr&oacute;grafo, utilizado para observar o espectro de qualquer luz, chamado Cosmic Origins Spectrograph, a ser instalado por astronautas no Hubble neste ano, vai ajudar na busca de mat&eacute;ria normal n&atilde;o-detectada.
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Softwares brasileiros podem colaborar para o futuro da astronomia</title>
	<link>http://www.xalexandre.com.br/posts/Softwares-brasileiros-podem-colaborar-para-o-futuro-da-astronomia/Ciencia/Astronomia/112</link>
	<pubDate>Sun, 25 May 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Softwares-brasileiros-podem-colaborar-para-o-futuro-da-astronomia/Ciencia/Astronomia/112</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        A produ&ccedil;&atilde;o de softwares cient&iacute;ficos &eacute; uma das possibilidades que se abrem para o Brasil colaborar com os grandes projetos internacionais que est&atilde;o sendo desenvolvidos na &aacute;rea da astronomia mundial. Essa foi a avalia&ccedil;&atilde;o feita &agrave; Ag&ecirc;ncia Brasil pelo astrof&iacute;sico do Observat&oacute;rio Nacional Luiz Nicolaci da Costa.<br />
        <br />
        O futuro da astronomia e a participa&ccedil;&atilde;o brasileira em projetos mundiais que somam mais de US$ 10 bilh&otilde;es em investimentos s&atilde;o os objetivos da reuni&atilde;o que o Observat&oacute;rio Nacional, instituto de pesquisas do Minist&eacute;rio da Ci&ecirc;ncia e Tecnologia, promove no Rio de Janeiro entre os dias 27 e 29 deste m&ecirc;s.<br />
        <br />
        Segundo Luiz Nicolaci da Costa, idealizador do evento, o objetivo &eacute; proporcionar uma vis&atilde;o panor&acirc;mica dos caminhos que est&atilde;o se abrindo para a astronomia &quot;e ver, dentro das nossas limita&ccedil;&otilde;es or&ccedil;ament&aacute;rias, de pessoal, nossas voca&ccedil;&otilde;es, como a gente consegue se inserir nesse contexto&quot;.<br />
        <br />
        A reuni&atilde;o quer estabelecer um projeto plurianual, levando em conta o que a comunidade externa est&aacute; fazendo. A partir dessa &quot;competi&ccedil;&atilde;o saud&aacute;vel&quot;, Nicolaci disse que os especialistas brasileiros poder&atilde;o identificar a melhor forma de contribuir para o futuro da astronomia.<br />
        <br />
        Uma das &aacute;reas em que essa contribui&ccedil;&atilde;o pode ocorrer de forma expressiva &eacute; no desenvolvimento de softwares (programas de computador), sugeriu o astrof&iacute;sico. Ele ressaltou, inclusive, que nesse campo n&atilde;o h&aacute; necessidade de grandes insumos nem de uma base industrial ampla. &quot;Porque a gente precisa de gente inteligente. E o Brasil tem gente inteligente&quot;.<br />
        <br />
        Nos dois primeiros dias de reuni&atilde;o, ser&atilde;o apresentados os principais projetos que est&atilde;o sendo desenvolvidos internacionalmente. O terceiro dia abordar&aacute; os impactos que esses projetos t&ecirc;m para a tecnologia da informa&ccedil;&atilde;o. &quot;Todos esses novos experimentos v&atilde;o gerar um grande volume de dados que precisam ser processados, armazenados, analisados. E &eacute; nessa parte que n&oacute;s estamos tentando contribuir&quot;, assegurou.<br />
        <br />
        Um dos softwares desenvolvidos pelo Observat&oacute;rio Nacional est&aacute; sendo usado no projeto Dark Energy Survey (DES), que ser&aacute; apresentado no encontro. Trata-se de uma colabora&ccedil;&atilde;o internacional que est&aacute; construindo uma c&acirc;mara avan&ccedil;ada para mapear 10% do c&eacute;u em quatro bandas do espectro.<br />
        <br />
        O projeto &quot;vai varrer o c&eacute;u em 525 noites. N&oacute;s vamos ter uma vis&atilde;o colorida do c&eacute;u&quot;, explicou o pesquisador. O Observat&oacute;rio Nacional far&aacute; o processamento dos dados que ser&atilde;o gerados, de forma eficiente, usando grades de computa&ccedil;&atilde;o e tamb&eacute;m fazendo um portal cient&iacute;fico que facilite aos usu&aacute;rios acessar esses dados e analis&aacute;-los.<br />
        <br />
        Na segunda parte da reuni&atilde;o, programada para o dia 29, os cientistas ir&atilde;o analisar os tipos de tecnologia nos quais o mundo est&aacute; investindo e como o Brasil poder&aacute; enfrentar a multiplicidade de dados que vai caracterizar a astronomia moderna.<br />
        <br />
        Luiz Nicolaci da Costa afirmou que o Brasil possui um or&ccedil;amento modesto para o desenvolvimento da astronomia. Por isso, avaliou que &quot;n&atilde;o podemos competir de igual para igual com projetos cujos investimentos superam US$ 1 bilh&atilde;o no campo da astronomia&quot;.<br />
        <br />
        Segundo Nicolaci, como o Brasil n&atilde;o disp&otilde;e de dinheiro nem da base tecnol&oacute;gica necess&aacute;ria para realizar sozinho projetos dessa envergadura, a sa&iacute;da ser&aacute; fazer parcerias em projetos espec&iacute;ficos, contribuindo com suas voca&ccedil;&otilde;es naturais.<br />
        <br />
        &quot;N&oacute;s temos que pensar como &eacute; que o Brasil pode competir internacionalmente levando em considera&ccedil;&atilde;o suas limita&ccedil;&otilde;es financeiras, tecnol&oacute;gicas e de pessoal. Est&aacute; na hora de amadurecer e ter uma vis&atilde;o de futuro&quot;. Ele acredita que as discuss&otilde;es que ser&atilde;o efetuadas v&atilde;o definir o que ser&aacute; a astronomia nos pr&oacute;ximos 20 anos.<br />
        <br />
        Muitos dos projetos que ser&atilde;o apresentados no encontro organizado pelo ON resultam de parcerias internacionais. Um exemplo &eacute; o Grande Conjunto de Radiotelesc&oacute;pios do Atacama (ALMA), projeto or&ccedil;ado em mais de US$ 1 bilh&atilde;o, com participa&ccedil;&atilde;o de cientistas norte-americanos, japoneses e europeus, que objetiva  medir emiss&otilde;es de r&aacute;dio que v&atilde;o explorar o universo primordial, explicou o astrof&iacute;sico.
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Nasa identifica oceano em lua de Saturno</title>
	<link>http://www.xalexandre.com.br/posts/Nasa-identifica-oceano-em-lua-de-Saturno/Ciencia/Astronomia/107</link>
	<pubDate>Mon, 19 May 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Nasa-identifica-oceano-em-lua-de-Saturno/Ciencia/Astronomia/107</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        Tit&atilde;, uma das luas de Saturno, possui possivelmente um enorme oceano de &aacute;gua e amon&iacute;aco, revelaram cientistas do Laborat&oacute;rio de F&iacute;sicas Aplicadas da Universidade Johns Hopkins em um estudo divulgado hoje pela revista Science.<br />
        <br />
        Tit&atilde; &eacute; a segunda maior lua do planeta e tamb&eacute;m a segunda maior do sistema solar. Com um di&acirc;metro de 5 mil quil&ocirc;metros, &eacute; um pouco menor que a Ganimedes, a lua de J&uacute;piter, e maior que Merc&uacute;rio e Plut&atilde;o.<br />
        <br />
        Os astr&ocirc;nomos da Johns Hopkins indicaram que at&eacute; agora n&atilde;o foi confirmado de maneira direta a exist&ecirc;ncia desse oceano. No entanto, afirmaram que as observa&ccedil;&otilde;es da rota&ccedil;&atilde;o da Tit&atilde; feitas pela sonda Cassini mostraram mudan&ccedil;as em alguns pontos de sua superf&iacute;cie que sugerem que esse mar encontra-se a cerca de 80 quil&ocirc;metros da superf&iacute;cie.<br />
        <br />
        Entre outubro de 2005 e maio de 2007, a sonda Cassini, uma miss&atilde;o conjunta da Nasa e da Esta&ccedil;&atilde;o Espacial Europ&eacute;ia (ESA), efetuou 19 aproxima&ccedil;&otilde;es para observar Tit&atilde;. Os dados das primeiras observa&ccedil;&otilde;es permitiram localizar lagos, barrancos e montanhas nessa superf&iacute;cie. Os dados posteriores indicaram que a localiza&ccedil;&atilde;o de alguns desses pontos haviam se modificado em at&eacute; 30 quil&ocirc;metros.<br />
        <br />
        As mudan&ccedil;as poderiam ser causadas pelos intensos ventos da atmosfera de Tit&atilde;, mas estes n&atilde;o ocorreriam se n&atilde;o existisse um mar subterr&acirc;neo que desse uma capacidade de &quot;flutua&ccedil;&atilde;o&quot; &agrave; superf&iacute;cie s&oacute;lida, conforme explicaram os cientistas.<br />
        <br />
        Segundo os astr&ocirc;nomos, a superf&iacute;cie de Tit&atilde; abriga mais hidrocarbonos l&iacute;quidos que todas as reservas conhecidas na Terra.
    </body>
</html>]]></description>
	<content:encoded />
	</item><item>
	<title>Flash player 10</title>
	<link>http://www.xalexandre.com.br/posts/Flash-player-10/Sistemas-Operacionais/Linux/105</link>
	<pubDate>Sun, 18 May 2008 09:10:12 -0300</pubDate>
	<dc:creator>Alexandre Brodt Fernandes</dc:creator>
	<dc:subject>tecnologia</dc:subject>
	<guid isPermaLink="false">http://www.xalexandre.com.br/posts/Flash-player-10/Sistemas-Operacionais/Linux/105</guid>
	<description><![CDATA[<html dir="ltr">
    <head>
    </head>
    <body spellcheck="false">
        A Adobe lan&ccedil;ou uma vers&atilde;o preliminar do Flash Player 10 para Linux.<br />
        Por&eacute;m, o que todos esperavam n&atilde;o acontenceu.<br />
        O maior problema do flash player para Linux &eacute; a falta de transpar&ecirc;ncia. E esse grande problema, ainda n&atilde;o foi corrigido.<br />
        <br />
        <a href="http://labs.adobe.com/downloads/flashplayer10.html">Download do Flash Player 10</a>.
    </body>
</html>]]></description>
	<content:encoded />
	</item></channel></rss>
