<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>UZED &#187; Informática</title>
	<atom:link href="http://uzed.com.br/category/informatica/feed/" rel="self" type="application/rss+xml" />
	<link>http://uzed.com.br</link>
	<description>Informação Livre!</description>
	<lastBuildDate>Wed, 14 Jul 2010 06:03:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Sonho de ir para o FISL 11 destruido por instalar  GIT + Redmine e XDebug</title>
		<link>http://uzed.com.br/sonho-de-ir-para-o-fisl-11-destruido-por-instalar-git-redmine-xdebug/</link>
		<comments>http://uzed.com.br/sonho-de-ir-para-o-fisl-11-destruido-por-instalar-git-redmine-xdebug/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 05:24:32 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Pessoal]]></category>
		<category><![CDATA[emprego]]></category>
		<category><![CDATA[FISL]]></category>
		<category><![CDATA[POG]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=588</guid>
		<description><![CDATA[Em todos os anúncios para programador PHP encontro: Precisa-se de programador que saiba PHP e: - Banco de dados MySQL, Oracle, PostgreSQL, etc&#8230; - Saiba FLEX, JAVA, C# (diferencial Kringol) - Saiba HTML, JavaScript, AJAX, &#8230; - Aptidão para webdesign, Corel, Pagemaker, Photoshop &#8230; Afinal, é para PHP ou para um super faz tudo? Tantas [...]]]></description>
			<content:encoded><![CDATA[<p><center><a href="http://softwarelivre.org/fisl11" target="new"><img src="http://softwarelivre.org/images/0002/3938/FISL11_big.png"/></a></center><br />
</p>
<p>Em todos os anúncios para programador PHP encontro: </p>
<p><strong>Precisa-se de programador que saiba PHP e:</p>
<p>- Banco de dados MySQL, Oracle, PostgreSQL, etc&#8230;<br />
- Saiba FLEX, JAVA, C# (diferencial Kringol)<br />
- Saiba HTML, JavaScript, AJAX, &#8230;<br />
- Aptidão para webdesign, Corel, Pagemaker, Photoshop &#8230;</strong></p>
<p>Afinal, é para PHP ou para um super faz tudo?</p>
<p>Tantas exigências, que no mínimo, deve-se tratar de uma empresa terceirizada da NASA. </p>
<p>Mas será que a gerência desta empresa esta preparada para um profissional com estas qualificações?</p>
<p>Gerentes que não tem o menor conhecimento técnico geralmente ficam encarregados de entrevistar os programadores.<br />
O procedimento é o mesmo, verificam se as siglas do currículo estão de acordo com a descrição do cargo, e pronto, o programador já esta contratado. Claro que o a pretensão salarial  baixa sempre é bem vinda para critérios de desempate.</p>
<p>Quando a vitima, digo, o programador inicia suas atividades na empresa, ele ao menos pensa que vai encontrar um ambiente de desenvolvimento, algum tipo de documentação inicial, para ajuda-lo a entender as regras de negócios da empresa.</p>
<p>Mas a realidade não é assim. É comum encontrar sistemas &#8220;Macarrõnicos&#8221; com metodologia  <a href="http://desciclo.pedia.ws/wiki/Programa%C3%A7%C3%A3o_Orientada_a_Gambiarras" target="new">POG</a> (Programação Orientada a Gambiarra) .</p>
<p><strong>< Dramatização ></strong></p>
<p>As melhores empresas para se trabalhar utilizam metodologias <a href="http://desciclo.pedia.ws/wiki/Programa%C3%A7%C3%A3o_Orientada_a_Gambiarras" target="new">POG</a>, vejam os benefícios:</p>
<p>Todos códigos são desenvolvidos no ambiente de produção, e ainda com o cliente testando ao mesmo tempo. Assim evita-se perda de tempo com copias redundantes do código e equipamentos de backup.</p>
<p>Todos os programadores acessando os mesmos arquivos ao mesmo tempo. Nada melhor do que bloquear o acesso do arquivo para ter certeza que ninguém vai alterar o código.</p>
<p>Padrões de backup sempre são avançados:</p>
<p>pagina_principal.php<br />
pagina_principal.bkp.php<br />
pagina_principal2.php<br />
pagina_principal___ontem.php<br />
pagina_principal_Joazinho.php</p>
<p>Os comentários são a base do sistema, sempre poucos e explicativos<br />
// XUNXO do chefe para poder funcionar esta parte (Não mexa)</p>
<pre>
if(1==1)
{
    $variavel = 1;
}else{
    $variavel = 0;
}
</pre>
<p>Teste?<br />
A sim, sempre tem o cliente para testar dois dias antes de entregar o sistema. Fazemos assim porque temos certeza que o sistema sempre estará funcionando.</p>
<p>Escopo, script de teste?<br />
Perda de tempo, o cliente já sabe o que ele quer. Ele lembra perfeitamente do que ele pediu ao longo dos 6 meses de desenvolvimento.<br />
Qualquer problema esta na documentação, aqueles 500 e-mails da caixa postal de cada programador. Basta juntar todos usando EQL (E-mail Query Language) e logo esta tudo indexado.</p>
<p>Segurança?<br />
Sim, temos as senhas seguras, a quais sempre passamos por POST nos input hidden dos formulários. Mas com firewall instalando antes do servidor estamos super seguros. Nunca atualizamos o servidor, a mais de 7 anos, pois nunca deu problema. Outro motivo de nunca  atualizar, é para  não ter perigo de quebrar a compatibilidade com PHP3.</p>
<p><strong>< /Dramatização ></strong></p>
<p>Infelizmente esta é uma realidade que vem me assustando ao longo dos anos, ao trabalhar com programação.<br />
Quando acho que vou encontrar uma empresa que ao menos use um ambiente de desenvolvimento e versionamento, fico decepcionado.<br />
Os códigos não me assustam mais, já superei alguns traumas:<br />
- if(1==1)<br />
- if(1==2)<br />
- sleep(60)   (acredite, você não vai querer saber o motivo)<br />
- do{ POG de 3000 linhas com identação de mais de 40 if elses + paçoca de HTML + JS + CSS e milhares de consultas a banco}  while(150000);<br />
- dar um show tables; e vir uma listagem de 56 mil tabelas (é criado uma tabela para cada acesso ao sistema ao invés de um registro em uma tabela)<br />
- chefe ter &#8216;xilique&#8217; que o HTML não abre no Front Page , e quase te mandar embora quando você fala a palavra CSS e tableless</p>
<p>O que mais me assusta é a incapacidade da gerencia de permitir que você melhore o ambiente de trabalho, implementando metodologias de desenvolvimento.</p>
<p><strong>< Dramatização ></strong></p>
<p>Quer ser mandado embora de uma empresa que utilize de metodologias POG?</p>
<p><strong>Simples, siga meus conselhos:</strong><br />
- Comece a falar que GIT é legal e melhor que SVN, se possível mande por e-mail par ao chefe todas as reportagens que explicam tecnicamente porque GIT é bom.<br />
- Instale um servidor de desenvolvimento, caso lhe digam que não tem máquina, ofereça o seu desktop, enquanto isso você pode trabalhar em algum note da empresa, até comprarem outro desktop para você.<br />
- Peça ajuda por e-mail, quando tiver dúvidas sobre as regras de negócios, dizendo que você esta com dificuldades de entender o que a sequencia de 40 if else tem que fazer.<br />
- Utilize metodologias de Refatoração, se possível tente implementar Testes Unitários e OO.<br />
- Instale o Redmine integrado com o GIT, e comece a organizar suas tarefas e a documentar as coisas.<br />
- Utilize XDebug para entender melhor sobre o que esta acontecendo com o macarrão, digo código, e manda um e-mail para o chefe mostrando sua benfeitoria.</p>
<p>Caso você não seja demitido, e sofra apenas uma intervenção leve, infelizmente sua empresa tem chances de implementar alguma metodologia Ágil. Sinto muito.</p>
<p><strong>< /Dramatização ></strong></p>
<p>Os gerentes quase sempre cometem um erro básico, contratam o programador sem perceber se ele vai se adequar a sua metodologia de trabalho, ou seja , a falta dela.<br />
Outro erro comum, é não explicar como será o ambiente de trabalho. E o pior, não consultar a equipe para ver se o novo candidato tem o perfil que se adeque a equipe.<br />
Não tem regras para estes fatores, tem apenas bom senso, e é isto que esta faltando.</p>
<p>Eles não entendem que não tem como regredir.<br />
Depois que você tem contato com frameworks, MVC, OO, GIT, Redmine, XDebug, Padrões de Projetos, Teste Unitário e metodologias Ágeis, não tem como voltar atrás.<br />
Fica quase impossível trabalhar em um ambiente que não aplique ao menos parte destes conhecimentos. Ou que sejam resistentes a mudanças e quebra de paradigmas.</p>
<p>Perdi a minha oportunidade de ir para o FISL 11. Fui demitido por ter instalado um servidor de desenvolvimento com  GIT + Redmine e  utilizar XDebug para entender um código abençoado.<br />
Segundo a gerência, eu estava perdendo tempo instalando &#8220;coisinhas&#8221; ao invés de estar lendo o código abençoado e adivinhando as regras de negócio da empresa (isso tendo apenas 2 semanas de empresa).<br />
Nenhuma das solicitações de ajuda por e-mail foram respondidas. Segundo a gerência, sendo eu um programador PHP,  apenas vendo o código abençoado, já deveria entender todas as regras de negócios da empresa. Assim como qualquer bom <a href="http://desciclo.pedia.ws/wiki/Programa%C3%A7%C3%A3o_Orientada_a_Gambiarras" target="new">POG</a>ramador faria.</p>
<p>Desculpem o desabafo, mas perder o FISL 11 por tentar melhorar as condições de trabalho da empresa, me deixou muito chateado. </p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/sonho-de-ir-para-o-fisl-11-destruido-por-instalar-git-redmine-xdebug/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Aos professores de informática, apresento Linux</title>
		<link>http://uzed.com.br/aos-professores-de-informatica-apresento-linux/</link>
		<comments>http://uzed.com.br/aos-professores-de-informatica-apresento-linux/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 01:09:35 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[faculdade]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Magazine]]></category>
		<category><![CDATA[Torvalds]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=579</guid>
		<description><![CDATA[Estava lembrando de alguns professores da faculdade que diziam que Linux não é usado em sistemas críticos, que apenas empresas amadoras que usam. Então, lendo a introdução da Linux Magazine de Nº 67, deparo com esta introdução: &#8221; 10,8 bilhões de dólares! Esse é custo atualizado para reescrever a kernel do Linux do zero. Há [...]]]></description>
			<content:encoded><![CDATA[<p>Estava lembrando de alguns professores da faculdade que diziam que Linux não é usado em sistemas críticos, que apenas empresas amadoras que usam.<br />
Então, lendo a introdução da Linux Magazine de Nº 67, deparo com esta introdução:</p>
<p>&#8221;<br />
10,8 bilhões de dólares! Esse é  custo atualizado para reescrever a kernel do Linux do zero. Há cerca de dez anos, a IBM anunciava um investimento de 1 bilhão de dólares no Linux. Agora, com mais de 18 anos de existência, o Linux se tornou o fundamento da Internet sendo o sistema operacional mais utilizado em servidores, em computação de alto desempenho e em sistemas embarcados. Está presente em uma série de serviços considerados essenciais hoje em dia, mantendo as operações das bolsas de valores de Nova Yorque, Tokyo, Frankfurt, e Londres, da bolsa mercantil de Chocago, da Nasdaq e até da Bovespa.<br />
É o Linux que garante o funcionamento do sistema aéreo dos EUA e da Alemanha, bem como os sistemas de entretenimento dentro dos aviões da Boeing, da Airbus e da Embraer. Google, Amazon, Facebook, Yahoo, Twitter, MySpace, LinkedIn, são alguns dos principais serviços globais de Internet que ficam online 24h por dia graças ao Linux.<br />
Carrefour, Grupo Pão de Açucar, Extra, Casas Bahia, Ponto Frio, C&#038;A, Lojas Rener, Lojas Pernambucanas, Lojas Marisa &#8211; entre centenas de outros varejistas &#8211; rodam seus servidores  e pontos de vendas em sistemas Linux.</p>
<p>Vale lembrar que a Petrobrás conseguiu reduzir em um ano a análise de dados de prospecção no Pré-Sal graças aos seus sistemas Linux em cluster.<br />
O Linux é a base de um mercado multibilionário e detém atualmente a posição de dominância enquanto tecnologia. E a mudança da computação pessoal do PC para os dispositivos móveis deverá sepultar o último bastião em que o Linux ainda não é o sistema dominante.</p>
<p>E Linus Torvalds, seu criador, que poderia ter sido o próximo Bill Gates, nos deu o sistema gratuitamente, para o bem da humanidade.<br />
&#8221;<br />
(Rafael Peregrino da Silva &#8211; Linux Magazine Nº 67)</p>
<p>Fico pensando se vale apena fazer um curso de informática, que custa em torno de R$ 800,00 por mês, para ficar recebendo capacitação em sistemas Windows dentre outras plataformas proprietárias.</p>
<p>Com R$ 800,00 por mês da para fazer:</p>
<p>- Um curso de Linux (suporte)<br />
- Programação em linguagens usadas pelo Linux (C, C++, PHP, Python etc)<br />
- Comprar vários Livros<br />
- Fazer várias certificações</p>
<p>Graduação?</p>
<p>Sim é importante, mas se for para aprender alguma sistemas que não sejam baseados em Linux, melhor fazer direito, medicina, matemática, qualquer outra área qual o Linux possa ser útil.</p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/aos-professores-de-informatica-apresento-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fonte silenciosa de pobre</title>
		<link>http://uzed.com.br/fonte-silenciosa-de-pobre/</link>
		<comments>http://uzed.com.br/fonte-silenciosa-de-pobre/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 22:53:15 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[C3TECH]]></category>
		<category><![CDATA[cooler]]></category>
		<category><![CDATA[fonte]]></category>
		<category><![CDATA[ZALMAN]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=541</guid>
		<description><![CDATA[Estava eu irritado com o barulho da minha fonte C3TECH, quando resolvo pesquisar os preços das fontes ZALMAN. São fontes ótimas de primeira linha, mas a mais barata custa em torno de R$ 350,00 qual valor estava muito fora do meu orçamento. Pesquisei no Google alguma solução e não encontrei nada, nesse mar de MERD&#8230;. [...]]]></description>
			<content:encoded><![CDATA[<p>Estava eu irritado com o barulho da minha fonte C3TECH, quando resolvo pesquisar os preços das fontes ZALMAN.<br />
São fontes ótimas de primeira linha, mas a mais barata custa em torno de R$ 350,00 qual valor estava muito fora do meu orçamento.<br />
Pesquisei no Google alguma solução e não encontrei nada, nesse mar de MERD&#8230;. de informação que ele se tornou.</p>
<p>Então resolvo abrir a fonte para ver se limpando o cooler o barulho diminui (tentativa desesperada).<br />
Claro não resolve nada.<br />
Mas resolvo medir a minha fonte e vejo que o cooler tem 120mm x 25mm a mesma medida dos coolers silenciosos de gabinete da ZALMAN que custão em torno de R$ 25,00.</p>
<p>Então resolvi tentar substituir o cooler da fonte pelo da ZALMAN.</p>
<p>Seguem os passos:</p>
<p>Abri a fonte e coloquei o cooler no lugar do antigo.<br />
<a href="http://uzed.com.br/wp-content/uploads/2010/03/fonte_01.jpg"><img src="http://uzed.com.br/wp-content/uploads/2010/03/fonte_01.jpg" alt="fonte_01" title="fonte_01" width="500" height="375" class="alignnone size-full wp-image-542" /></a></p>
<p>Como a alimentação viria da placa mãe, entortei um pouco a grade para passar o conector para fora da fonte.<br />
<a href="http://uzed.com.br/wp-content/uploads/2010/03/fonte_02.jpg"><img src="http://uzed.com.br/wp-content/uploads/2010/03/fonte_02.jpg" alt="fonte_02" title="fonte_02" width="500" height="667" class="alignnone size-full wp-image-543" /></a><br />
<a href="http://uzed.com.br/wp-content/uploads/2010/03/fonte_03.jpg"><img src="http://uzed.com.br/wp-content/uploads/2010/03/fonte_03.jpg" alt="fonte_03" title="fonte_03" width="500" height="375" class="alignnone size-full wp-image-544" /></a></p>
<p>Como havia uma pequena diferença no formado do cooler, tive que entortar um pouco a grade da fonte um pouco para fora.<br />
<a href="http://uzed.com.br/wp-content/uploads/2010/03/fonte_04.jpg"><img src="http://uzed.com.br/wp-content/uploads/2010/03/fonte_04.jpg" alt="fonte_04" title="fonte_04" width="500" height="375" class="alignnone size-full wp-image-545" /></a></p>
<p>Não recomendo a fazer isso, pois vale mais a pena comprar uma fonte da ZALMAN.<br />
Se fizer isso, faça por conta e risco.</p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/fonte-silenciosa-de-pobre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IRC #php-curitiba em 2min com Pidgin</title>
		<link>http://uzed.com.br/irc-php-curitiba-em-2min-com-pidgin/</link>
		<comments>http://uzed.com.br/irc-php-curitiba-em-2min-com-pidgin/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 15:31:23 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[canal]]></category>
		<category><![CDATA[Curitiba]]></category>
		<category><![CDATA[freenode]]></category>
		<category><![CDATA[grupo]]></category>
		<category><![CDATA[IRC]]></category>
		<category><![CDATA[php-curitiba]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=534</guid>
		<description><![CDATA[Por que usar Pidgin? - Multiplataforma - Simples (sem frescuras) - Vários plugins - Vários protocolos Pessoalmente eu uso ele por conseguir usar todas as minhas contas ao mesmo tempo (MSN, Gtalk e IRC). Para entrar no canal IRC do #php-curitiba Servidor: irc.freenode.net Canal: #php-curitiba Comando no pidgin: /join #php-curitiba Baixar o pidgin:]]></description>
			<content:encoded><![CDATA[<p>Por que usar Pidgin?</p>
<p>- Multiplataforma<br />
- Simples (sem frescuras)<br />
- Vários plugins<br />
- Vários protocolos</p>
<p>Pessoalmente eu uso ele por conseguir usar todas as minhas contas ao mesmo tempo (MSN, Gtalk e IRC).</p>
<p>Para entrar no canal IRC do #php-curitiba<br />
<strong><br />
Servidor:</strong> irc.freenode.net<br />
<strong>Canal:</strong> #php-curitiba<br />
<strong>Comando no pidgin:</strong> /join #php-curitiba</p>
<p>Baixar o pidgin: <a href="http://www.pidgin.im/download/"></p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/YZMkjrbQ3pI&#038;hl=pt_BR&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/YZMkjrbQ3pI&#038;hl=pt_BR&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/irc-php-curitiba-em-2min-com-pidgin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acessando o Python do Nokia com Debian e bluetooth</title>
		<link>http://uzed.com.br/nokia-python-debian-bluetooth/</link>
		<comments>http://uzed.com.br/nokia-python-debian-bluetooth/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 00:53:42 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PyS60]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=473</guid>
		<description><![CDATA[Instale os pacotes: apt-get install gnome-bluetooth gnome-vfs-obexftp libopenobex1 obex-data-server bluez-gnome bluez-utils cu Registrando a porta serial ~$ sdptool add --channel=3 SP Serial Port service registered Ative a porta para ficar aguardando uma conexão: ~$ rfcomm listen rfcomm0 3 Waiting for connection on channel 3 No celular : - Abra o Python (BTConsole) - Opções -> [...]]]></description>
			<content:encoded><![CDATA[<p>Instale os pacotes:</p>
<pre lang="Bash">
 apt-get install gnome-bluetooth gnome-vfs-obexftp libopenobex1 obex-data-server bluez-gnome bluez-utils cu
</pre>
<p><strong><br />
Registrando a porta serial</strong></p>
<pre lang="Bash">
 ~$ sdptool add --channel=3 SP
 Serial Port service registered
</pre>
<p><strong>Ative a porta para ficar aguardando uma conexão:</strong></p>
<pre lang="Bash">
 ~$ rfcomm listen rfcomm0 3
 Waiting for connection on channel 3
</pre>
<p><strong>No celular :</strong><br />
- Abra o Python (BTConsole)<br />
- Opções -> Bluetooth console<br />
- Selecione a máquina</p>
<p><strong>Conectando no terminal do celular:</strong></p>
<pre lang="Bash">
 ~$ cu -l /dev/rfcomm0
 Connected.
 >>>
</pre>
<p><strong>Testando o console:</strong></p>
<pre lang="Bash">
 import audio
 audio.say(u'Testando o Python')
</pre>
<p>Se o seu computador resmungar alguma coisa, parabéns, esta funcionando.</p>
<p>Estou começando a estudar agora Python no Symbian, então se tiver interesse acesse a minha wiki: <a href="http://wiki.uzed.com.br/index.php?title=Python">wiki.uzed.com.br</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/nokia-python-debian-bluetooth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MORTE AO IE6 &#8211; FINALMENTE</title>
		<link>http://uzed.com.br/morte-ao-ie6-finalmente/</link>
		<comments>http://uzed.com.br/morte-ao-ie6-finalmente/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 16:25:25 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=461</guid>
		<description><![CDATA[Não tem coisa pior para um programador web do que ficar &#8220;customizando&#8221; (POGANDO), a sua aplicação para que funcione em todos os browsers existentes. Para cada usuário que ainda tem o IE6 instalado na sua máquina, temos as seguintes situações: - Não entende nada de informática; - Esta usando uma copia pirata de Windows; - [...]]]></description>
			<content:encoded><![CDATA[<p>Não tem coisa pior para um programador web do que ficar &#8220;customizando&#8221; (POGANDO), a sua aplicação para que funcione em todos os browsers existentes.<br />
Para cada usuário que ainda tem o IE6 instalado na sua máquina, temos as seguintes situações:</p>
<p>- Não entende nada de informática;<br />
- Esta usando uma copia pirata de Windows;<br />
- Possui uma equipe de TI incompetente;<br />
- É extremamente preguiçoso para entender o que é um Navegador e mandar atualizar;<br />
- etc&#8230;</p>
<p>Estas situações aumentam o custo para produzir aplicações para a Internet, além de boicotar a implementação de novos recursos.<br />
Como na Internet a &#8220;cultura inútil&#8221; é soberana, sites como do youtube e orkut, quais são, na maioria, responsáveis por esta soberania, resolveram abandonar o suporte para IE6.<br />
Com isto, a &#8220;grande massa&#8221; de usuários com certeza irá dar um &#8220;jeito&#8221; de aprender a resolver o problema da incompatibilidade do Navegador.</p>
<p>Segue as imagens com as mensagens do orkut e do youtube sobre o &#8220;IECA6&#8243;:</p>
<p><a href="http://uzed.com.br/wp-content/uploads/2009/08/orkut.png"><br />
Orkut<br />
<img src="http://uzed.com.br/wp-content/uploads/2009/08/orkut-300x153.png" alt="orkut" title="orkut" width="300" height="153" class="aligncenter size-medium wp-image-462" /></a></p>
<p><a href="http://uzed.com.br/wp-content/uploads/2009/08/youtube.png"><br />
Youtube<br />
<img src="http://uzed.com.br/wp-content/uploads/2009/08/youtube-300x62.png" alt="youtube" title="youtube" width="300" height="62" class="aligncenter size-medium wp-image-463" /></a></p>
<p><strong><br />
Caso queira contribuir com o movimento &#8220;Morte ao IE6&#8243; utilize este recurso no seu site:</strong></p>
<p><a href="http://ie6update.com/">http://ie6update.com/</a></p>
<p>Recebi esta piada pelo canal #php-br: <a href="http://www.saveie6.com/">http://www.saveie6.com/</a>  (foi mal não podia perder esta uahuahuaauha)</p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/morte-ao-ie6-finalmente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assistindo FISL10 com o VLC</title>
		<link>http://uzed.com.br/assistindo-fisl10-com-o-vlc/</link>
		<comments>http://uzed.com.br/assistindo-fisl10-com-o-vlc/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 15:03:17 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[FISL10]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[VLC]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=447</guid>
		<description><![CDATA[Como não pude participar do FISL10 estou assistindo as palestras pela TV Software Livre. O meu Firefox anda rebelde com Java e não consigo assistir as palestras sem travar, então resolvi assistir usando o VLC. Segue uma cola para acessar rápido digitando no console do Linux: Sala TVSL &#8211; vlc http://stream.softwarelivre.org/iceredir/tvsl.ogg Sala FISL 1 &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Como não pude participar do FISL10 estou assistindo as palestras pela <a href="http://stream.softwarelivre.org/fisl10/">TV Software Livre</a>.</p>
<p>O meu Firefox anda rebelde com Java e não consigo assistir as palestras sem travar, então resolvi assistir usando o <a href="http://www.videolan.org/vlc/">VLC</a>.</p>
<p>Segue uma cola para acessar rápido digitando no console do Linux:</p>
<p>Sala TVSL   &#8211; vlc http://stream.softwarelivre.org/iceredir/tvsl.ogg<br />
Sala FISL 1  &#8211; 40A &#8211; vlc http://stream.softwarelivre.org/iceredir/fisl1.ogg<br />
Sala FISL 2  &#8211; 41A  &#8211; vlc http://stream.softwarelivre.org/iceredir/fisl2.ogg<br />
Sala FISL 3  &#8211; 41B  &#8211; vlc http://stream.softwarelivre.org/iceredir/fisl3.ogg<br />
Sala FISL 4  &#8211; 41C  &#8211; vlc http://stream.softwarelivre.org/iceredir/fisl4.ogg<br />
Sala FISL 5  &#8211; 41D  &#8211; vlc http://stream.softwarelivre.org/iceredir/fisl5.ogg<br />
Sala FISL 6  &#8211; 41E  &#8211; vlc http://stream.softwarelivre.org/iceredir/fisl6.ogg<br />
Sala FISL 7  &#8211; 41F  &#8211; vlc http://stream.softwarelivre.org/iceredir/fisl7.ogg<br />
Sala FISL 10 &#8211; Teatro  &#8211; vlc http://stream.softwarelivre.org/iceredir/fisl10.ogg</p>
<p>usando o comando &#8220;vlc http://url&#8221; você consegue abrir o VLC direto no canal.</p>
<p>Ripando vídeo com o VLC<br />
Ex:</p>
<pre lang="Bash">
# vlc http://stream.softwarelivre.org/iceredir/fisl7.ogg --sout '#duplicate{dst=display,dst=std{access=file,mux=ogg,dst="/tmp/14_00_07.ogg"}}' &#038;_
</pre>
<p>Grade:<br />
<a href="http://fisl.softwarelivre.org/10/papers/pub/">http://fisl.softwarelivre.org/10/papers/pub/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/assistindo-fisl10-com-o-vlc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ImageMagick PNG -&gt; JPG</title>
		<link>http://uzed.com.br/imagemagick-png-jpg/</link>
		<comments>http://uzed.com.br/imagemagick-png-jpg/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 22:13:38 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[JPG]]></category>
		<category><![CDATA[PNG]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=443</guid>
		<description><![CDATA[Como fazia tempo que não mexia no M$ Word, havia me esquecido que a M$ tem sérios problemas com arquivos de imagem PNG. Fiz todas as imagens no OpenOffce usando PNG. Ai quando precisei terminar o arquivo no M$ Word, surpresa! Sumiram todas as minhas imagens. Como não estava afim de perguntar para o Google [...]]]></description>
			<content:encoded><![CDATA[<p>Como fazia tempo que não mexia no M$ Word, havia me esquecido que a M$ tem sérios problemas com arquivos de imagem PNG.<br />
Fiz todas as imagens no OpenOffce usando PNG.<br />
Ai quando precisei terminar o arquivo no M$ Word, surpresa!<br />
Sumiram todas as minhas imagens.</p>
<p>Como não estava afim de perguntar para o Google como que eu resolvia isso, fiz um bash para listar as imagens e usando o convert do Imagemagick para converter os arquivos.</p>
<p>Segue o script sem vergonha?</p>
<pre lang="Bash">
files="*.png"
for i in $files
do
  m_name=`basename $i .png`
  convert  $i  jpg/$m_name.jpg

  echo $m_name.jpg
done
</pre>
<p>Referência: <a href="http://www.imagemagick.org/script/index.php">http://www.imagemagick.org/script/index.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/imagemagick-png-jpg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenvolvendo um bolo de milho (sem lactose e sem glúten) &#8211; 1.0 Release</title>
		<link>http://uzed.com.br/desenvolvendo-um-bolo-de-milho-sem-lactose-e-sem-gluten/</link>
		<comments>http://uzed.com.br/desenvolvendo-um-bolo-de-milho-sem-lactose-e-sem-gluten/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 02:53:32 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[glúten]]></category>
		<category><![CDATA[lactose]]></category>
		<category><![CDATA[soja]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=430</guid>
		<description><![CDATA[O objetivo deste tutorial é desenvolver um bolo de milho sem glúten e sem lactose. Notas da versão 1.0 Release - FIX, retirado leite de soja (não fazia parte da receita original) Ingredientes &#8211; 5 espigas de milho verde &#8211; 3 ovos &#8211; 2 xícaras de açúcar refinado &#8211; 1 xícara de óleo (de preferência [...]]]></description>
			<content:encoded><![CDATA[<p>O objetivo deste tutorial é desenvolver um bolo de milho sem glúten e sem lactose.</p>
<p><strong>Notas da versão 1.0 Release</strong><br />
- FIX, retirado leite de soja (não fazia parte da receita original)</p>
<h3>Ingredientes</h3>
<p> &#8211; <strong>5</strong> espigas de milho verde<br />
 &#8211; <strong>3</strong> ovos<br />
 &#8211; <strong>2</strong> xícaras de açúcar refinado<br />
 &#8211; <strong>1</strong> xícara de óleo (de preferência de canola)<br />
 <del datetime="2009-06-07T20:07:08+00:00">- <strong>1</strong> xícara de leite de soja sem lactose</del><br />
 &#8211; <strong>1</strong> colher de sopa de fermento</p>
<p><a href="http://uzed.com.br/wp-content/uploads/2009/06/bolo_ingredientes.jpg"><img src="http://uzed.com.br/wp-content/uploads/2009/06/bolo_ingredientes.jpg" alt="bolo_ingredientes" title="bolo_ingredientes" width="800" height="982" class="aligncenter size-full wp-image-431" /></a></p>
<h3>Preparo</h3>
<p><strong>1)</strong> Unte a forma com manteiga e coloque maizena<br />
<strong>2-3)</strong> Raspe as 5 espigas de milho no liquidificador<br />
<strong>4)</strong> Coloque todos os ingredientes listados acima<br />
<strong>5)</strong> Bata tudo por 1 minuto<br />
<strong>6)</strong> Coloque o conteúdo na forma, e leve ao forno por +-40min a 260º<br />
<strong>7)</strong> Separe um pedaço para você antes que acabe</p>
<p><a href="http://uzed.com.br/wp-content/uploads/2009/06/bolo_preparo.jpg"><img src="http://uzed.com.br/wp-content/uploads/2009/06/bolo_preparo.jpg" alt="bolo_preparo" title="bolo_preparo" width="800" height="1446" class="aligncenter size-full wp-image-432" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/desenvolvendo-um-bolo-de-milho-sem-lactose-e-sem-gluten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Três Windows ao mesmo tempo com o VirtualBox</title>
		<link>http://uzed.com.br/tres-windows-ao-mesmo-tempo-com-o-virtualbox/</link>
		<comments>http://uzed.com.br/tres-windows-ao-mesmo-tempo-com-o-virtualbox/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 01:06:07 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Sistema]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=267</guid>
		<description><![CDATA[A primeira pergunta que se faz quando se lê um título deste é: Para que me serve rodar Windows dentro do Linux? Muito menos três deles. Calma eu explico. Infelizmente temos que aceitar o fato de que a maioria das pessoas usam o Windows. A maioria usa o navegador padrão dele, o Internet Explorer. Muitos [...]]]></description>
			<content:encoded><![CDATA[<p>A primeira pergunta que se faz quando se lê um título deste é:</p>
<p>Para que me serve rodar Windows dentro do Linux? Muito menos três deles.</p>
<p>Calma eu explico.</p>
<p>Infelizmente temos que aceitar o fato de que a maioria das pessoas usam o Windows. A maioria usa o navegador padrão dele, o Internet Explorer.<br />
Muitos usam e nem sabem o que é um navegador.</p>
<p>Para fazer um website, temos que estar atentos para que o mesmo funcione no IE6/7/8, no Opera, no Safari, no Firefox no Crome no etc.<br />
E como testar tudo isso?</p>
<p>Existem várias ferramentas para testar como, plugins do Firefox, alguns softwares para Windows,  alguns hacks usando Wine no Linux ou ainda, usa um virtualizador, como o VirtualBox. A melhor opção ainda acho que é o VirtualBox.</p>
<p>Com o VrtualBox podemos instalar vários sistemas operacionais sem causar danos a máquina.<br />
Como sou um usuário Debian, e desenvolvo websites, preciso sempre estar testando eles no IE6/7.</p>
<h3>Instalação do VirtualBox</h3>
<p>Baixando direto do site:</p>
<ul>
<li><a href="http://www.virtualbox.org/wiki/Downloads" target="_blank">VirtualBox</a></li>
</ul>
<p>Instalando no Debian:</p>
<pre lang="Bash">
# apt-get install virtualbox-ose virtualbox-ose-guest-utils
</pre>
<p>Instalando no Windows:</p>
<pre lang="Bash">
Baixa
clica clica clica ...
</pre>
<h3>Instalação do Windows</h3>
<p>Escolhendo o sistema operacional:<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_01.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_01-300x187.png" alt="vbox_01" title="vbox_01" width="300" height="187" class="alignnone size-medium wp-image-269" /></a><br />
</p>
<p>Escolhendo a quantidade de memória do sistema:<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_02.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_02-300x187.png" alt="vbox_02" title="vbox_02" width="300" height="187" class="alignnone size-medium wp-image-272" /></a><br />
</p>
<p>Criando um HD virtual:<br />
- Clique em novo<br />
- Selecione a opção Imagem dinamicamente expansível (assim ela só ocupara o espaço que estiver instalado o sistema)<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_03.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_03-300x187.png" alt="vbox_03" title="vbox_03" width="300" height="187" class="alignnone size-medium wp-image-273" /></a><br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_04.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_04-300x187.png" alt="vbox_04" title="vbox_04" width="300" height="187" class="alignnone size-medium wp-image-274" /></a><br />
</p>
<p>Configurando CD/ISO:<br />
- Clique em CD/DVD-ROM<br />
- Configure o seu CD/DVD-ROM ou selecione uma ISO<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_05.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_05-300x187.png" alt="vbox_05" title="vbox_05" width="300" height="187" class="alignnone size-medium wp-image-280" /></a><br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_06.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_06-300x187.png" alt="vbox_06" title="vbox_06" width="300" height="187" class="alignnone size-medium wp-image-281" /></a></p>
<h3>Instalação do Seamless</h3>
<p>O Seamless é um modo no qual desaparece o fundo do Windows, fazendo com que as janelas fiquem como se fossem do Linux.</p>
<p>Clique em: Dispositivos -> Instalar adicionais para convidados<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_07.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_07-300x240.png" alt="vbox_07" title="vbox_07" width="300" height="240" class="alignnone size-medium wp-image-282" /></a></p>
<p>Espere um pouco e prossiga a instalação dos drivers do VirtualBox dentro do Windows hospedeiro:<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_08.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_08-300x240.png" alt="vbox_08" title="vbox_08" width="300" height="240" class="alignnone size-medium wp-image-283" /></a></p>
<p>Depois de reiniciar, selecione a opção: Máquina -> Modo Seamless<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_09.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_09-300x240.png" alt="vbox_09" title="vbox_09" width="300" height="240" class="alignnone size-medium wp-image-284" /></a></p>
<h3>Os Três Windows</h3>
<p>A cima temos o Windows XP SP2, a baixo temos um Windows Vista e ao lado direito um Windows XP SP3:<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_11.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_11-300x240.png" alt="vbox_11" title="vbox_11" width="300" height="240" class="alignnone size-medium wp-image-285" /></a></p>
<p>Três versões de Internet Explorer (ou carinhosamente chamado de IECA):<br />
<a href="http://uzed.com.br/wp-content/uploads/2009/03/vbox_12.png"><img src="http://uzed.com.br/wp-content/uploads/2009/03/vbox_12-300x240.png" alt="vbox_12" title="vbox_12" width="300" height="240" class="alignnone size-medium wp-image-286" /></a></p>
<p>Você também pode instalar varias versões de Linux dentro do seu Windows, para ir se acostumando, quem sabe um dia você mude&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/tres-windows-ao-mesmo-tempo-com-o-virtualbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOAP com Zend Framework</title>
		<link>http://uzed.com.br/soap-com-zend-framework/</link>
		<comments>http://uzed.com.br/soap-com-zend-framework/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 21:04:04 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Zend_Soap]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=226</guid>
		<description><![CDATA[Objetivo O objetivo deste tutorial é ensinar a criar um Servidor SOAP, utilizando a biblioteca do Zend Framework. Pedi para o meu amigo Artista Frustrado, elaborar uma introdução a webservice, e fazer exemplos em outras linguagens, confira. Material Componentes do Zend Framework: Zend_Loader Zend_Soap Zend_Soap_Client Zend_Soap_AutoDiscover Arquivos soap.tar.bz2: /index.php /client.php /Client /Calculadora.php /Server /Calculadora.php /ServerSoap.php [...]]]></description>
			<content:encoded><![CDATA[<h4>Objetivo</h4>
<p>    O objetivo deste tutorial é ensinar a criar um Servidor SOAP, utilizando<br />
a biblioteca do Zend Framework.<br />
    Pedi para o meu amigo <a href="http://www.frustrado.com.br/main/index.php?title=Web_Services"> Artista Frustrado</a>, elaborar uma introdução a webservice, e fazer exemplos em outras linguagens, confira.<br />
</p>
<h4>Material</h4>
<p><strong>Componentes do Zend Framework:</strong></p>
<ul>
<li>Zend_Loader</li>
<li>Zend_Soap</li>
<li>Zend_Soap_Client</li>
<li>Zend_Soap_AutoDiscover</li>
</ul>
<p><strong>Arquivos <a href='http://uzed.com.br/wp-content/uploads/2009/02/soap.tar.bz2'>soap.tar.bz2</a>:</strong></p>
<pre lang="Bash">
/index.php
/client.php
/Client
    /Calculadora.php
/Server
    /Calculadora.php
    /ServerSoap.php
/README
</pre>
<p><strong>Testado no seguinte  ambiente:</strong></p>
<ul>
<li>Versão do Zend Framework testada: 1.7.5</li>
<li>Sistema Operacional: Linux</li>
<li>Distribuição: Debian Lenny</li>
<li>Versão do PHP:  PHP 5.2.6-1+lenny2</li>
<li>Versão do Apache: Apache/2.2.9 (Debian)</li>
</ul>
<p><strong>Material recomendado para leitura:</strong></p>
<ul>
<li><a href="http://br.php.net/manual/pt_BR/language.oop5.php">Orientação a Objeto no PHP5</a></li>
<li><a href="http://framework.zend.com/manual/en/zend.soap.html">Zend_Soap</a></li>
<li><a href="http://br.php.net/manual/pt_BR/function.serialize.php">Serialize</a></li>
<li><a href="http://www.temporeal.com.br/produtos.php?id=169676">Web Services Essentials</a></li>
<li><a href="http://www.temporeal.com.br/produtos.php?id=169836">Programming Web Services with SOAP</a></li>
</ul>
<h3>SOAP</h3>
<p>    O SOAP é um protocolo de comunicação entre o web service e o cliente. Suas especificações não são simplesmente uma transferência de XML basica, são envolvidas diversas regras para aplicações em diveras plataformas e formatos de XML.<br />
</p>
<p><strong>Quando utilizar SOAP?</strong></p>
<p>    Quando você não quer disponibilizar a apresentação da camada so seu aplicativo, e sim, apenas algumas funcionalidades, evitando abrir conexões com bancos.</p>
<p>    Quando você tem que iteragir com outros sistemas homogeneos. Exemplo, o seu fornecedor tem uma aplicação em .NET e precisa acessar uncionalidades do seu sistema que é feito em PHP. Assim, temos linguagens, sistemas operacionais e banco de dados diferentes podendo se comunicar.</p>
<p>    Quando você quer centralizar as regras de negócios no servidor. Usando clientes que acessam o servidor, sendo eles qualquer dispositivo (PDA, Terminal, celular etc.)<br />
</p>
<h3>Configurando o Ambiente</h3>
<p><strong>Temos a seguinte estrutura de pastas:</strong></p>
<pre lang="Bash">
/soap
    /index.php
    /client.php
   /Client
        /Calculadora.php
    /Server
        /Calculadora.php
        /ServerSoap.php
    /README
/zf
</pre>
<p>Na pasta soap é aonde ficam os arquivos e na pasta zf a biblioteca do Zend Framework.</p>
<p>- Descompacte o arquivo <a href='http://uzed.com.br/wp-content/uploads/2009/02/soap.tar.bz2'>soap.tar.bz2</a> na sua pasta web (no meu caso foi na pasta /var/www)</p>
<p>- Configure o apache para apontar para a pasta do soap<br />
No Linux:</p>
<pre lang="Bash">
<virtualhost *:80>
    ServerName soap.localhost
    DocumentRoot /mnt/dados/www/soap
</virtualhost>
</pre>
<p>- Adicione no arquivo hosts: 127.0.0.1  soap.localhost<br />
No Linux: adicione a linha no arquivo /etc/hosts</p>
<p>- Reinicie o apache</p>
<p>- Teste no browser os endereços:<br />
 &#8211; http://soap.localhost<br />
 &#8211; http://soap.localhost?wsdl</p>
<p>- Finalmente execute o cliente:<br />
No Linux:</p>
<pre lang="Bash">
:# php cliente.php

Deve aparecer a seguinte resposta:
##############################

Lista das funções disponíveis:
array(3) {
  [0]=>
  string(12) "string ola()"
  [1]=>
  string(25) "int somar(int $a, int $b)"
  [2]=>
  string(45) "string objeto(string $objeto, string $metodo)"
}

ola() -> Oi

somar(2,2) -> 4

calculadora->somar(3,3) -> 6

calculadora->naoexiste() -> O método: naoexiste() não foi implementado.

##############################
</pre>
<p>Pronto você já esta usando SOAP.</p>
<h4>Exemplo</h4>
<p>    O nosso exemplo consiste em um servidor web rodando um web service em PHP com Zend_Soap_Client Zend Framework, e um cliente também em PHP que acessa a mesma máquina através do console, no endereço http://soap.localhost.</p>
<p>    O cliente deve solicitar ao servidor algumas funções, e obter suas respostas.</p>
<p>O arquivo index.php contém o código para a criação do arquivo WSDL e do servidor SOAP.<br />
O Zend_Soap_AutoDiscover cria o arquivo WSDL para o servidor SOAP.<br />
O Zend_Soap que executa as funções cadastradas no WSDL, por isso que é passado por parâmetro a url http://soap.localhost/index.php?wsdl .</p>
<p>arquivo index.php</p>
<pre lang="PHP">
set_include_path(
    '../zf/ZendFramework-1.7.5/library/'
    . PATH_SEPARATOR . get_include_path()
);

require_once "Server/Calculadora.php";
require_once "Server/Soap.php";
require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();

ini_set("soap.wsdl_cache_enabled", 0); //** Limpa o cache

if(isset($_GET['wsdl'])) {
    //** Cria o arquivo WSDL automaticamente
    $autodiscover = new Zend_Soap_AutoDiscover();
    $autodiscover->setClass('ServerSoap');
    $autodiscover->handle();
} else {
    //** Executa o servidor SOAP
    $soap = new Zend_Soap_Server("http://soap.localhost/index.php?wsdl");
    $soap->setClass('ServerSoap');
    $soap->handle();
}
</pre>
<p><strong>IMPORTANTE: </strong>Deve-se colocar o tipo de dados que os métodos recebem e retornam usando os tipos de dados do <a href="http://manual.phpdoc.org/HTMLframesConverter/default/">PHPDOC</a>. Veja nos comentários do exemplo.</p>
<p>arquivo Server/Soap.php</p>
<pre lang="PHP">
class ServerSoap
{
    /**
     *  @return string
     */
    public function ola()
    {
        return "Oi";
    }

    /**
     * @param int $a
     * @param int $b
     * @return int
     */
    public function somar($a,$b)
    {
        return $a + $b;
    }

    /**
     * Executa uma classe vinda do cliente.
     *
     * @param string $objeto
     * @param string $metodo
     * @return string
     */
    public function objeto($objeto, $metodo)
    {
        $tmp = unserialize($objeto);

        //** Verifica se o método existe para o $objeto
        $class_methods = get_class_methods($tmp);
        foreach ($class_methods as $method_name) {
            if($method_name == $metodo)
            {
                $tmp->$metodo();
                return serialize($tmp);
            }
        }

        $tmp->msg = "O método: {$metodo}() não foi implementado.";
        return serialize($tmp);
    }
}
</pre>
<p>O Zend_Soap_Client conecta no servidor SOAP, passando a url do WSDL. Para acessar as funções cadastradas basta a variável instanciada e o nome da função.</p>
<p>arquivo client.php:</p>
<pre lang="PHP">
set_include_path(
    '../zf/ZendFramework-1.7.5/library/'
    . PATH_SEPARATOR . get_include_path()
);

require_once "Client/Calculadora.php";
require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();

ini_set("soap.wsdl_cache_enabled", 0); //** Limpa o cache

//** Inicia a conexão com o cliente
$client = new Zend_Soap_Client("http://soap.localhost/index.php?wsdl");

echo "\n##############################\n\n";

echo "Lista das funções disponíveis:\n";
var_dump($client->getFunctions());

//** Chama a função ola()
echo "\nola() -> ".$client->ola() ."\n\n";

//** Chama a função somar(a,b)
echo "somar(2,2) -> ".$client->somar(2,2) ."\n\n";

//** Cria o objeto Calculadora e passa para o SOAP executar a soma
$calculadora = new Calculadora(3,3);

$soapCalculadora =  $client->objeto(serialize($calculadora), "somar"); //* A Calculadora tem que ser serializada antes de passar para o SOAP.
$unserializeCalculadora = unserialize($soapCalculadora); //* A Calculadora tem que ser deserializada antes de chamar o metodo resposta().
echo "calculadora->somar(3,3) -> ".$unserializeCalculadora->resposta()."\n\n"; 

$erroCalculadora = $client->objeto(serialize($calculadora), "naoexiste");//** Tentando executar um método inexistente.
$erroCalculadora = unserialize($erroCalculadora);
echo "calculadora->naoexiste() -> ".$erroCalculadora->msg."\n";

echo "\n##############################\n\n";
</pre>
<h3>A classe Calculadora</h3>
<p>Temos duas instâncias do objeto Calculadora, uma para o servidor , aonde contém  o método calcular() e a do cliente aonde temos o método resposta().<br />
Para passar o objeto Calculadora do cliente para o servidor, e depois do servidor para o cliente, usamos uma técnica chamada <a href="http://br.php.net/manual/pt_BR/function.serialize.php">serialização</a>.</p>
<p>Server/Calculadora.php</p>
<pre lang="PHP">
/**
 * Classe calculadora do servidor
 *
 */
class Calculadora
{
    public $a;
    public $b;
    public $resposta;

    /**
     * Executa a soma
     *
     */
    public function somar()
    {
        $this->resposta = $this->a + $this->b;
    }
}
</pre>
<p>Client/Calculadora.php</p>
<pre lang="PHP">
/**
 * Classe calculadora do cliente
 *
 */
class Calculadora
{
    public $a;
    public $b;
    public $resposta;

    /**
     * Construtor da classe
     *
     * @param int $a
     * @param int $b
     * @return void
     */
    public function __construct($a, $b)
    {
        $this->a = $a;
        $this->b = $b;
    }

    /**
     * Retorna a resposta da soma
     *
     * @return int
     */
    public function resposta()
    {
        return $this->resposta;
    }
}
</pre>
<p>Para dúvidas ou críticas construtivas entre em contato.</p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/soap-com-zend-framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Instalando ambiente de desenvolvimento (TRAC + SVN)</title>
		<link>http://uzed.com.br/instalando-ambiente-de-desenvolvimento-trac-svn/</link>
		<comments>http://uzed.com.br/instalando-ambiente-de-desenvolvimento-trac-svn/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 00:44:25 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[TRAC]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=194</guid>
		<description><![CDATA[Este post não é para ser um tutorial, mas sim um lembrete de como instalar e criar um ambiente de desenvolvimento no Debian, utilizando o TRAC e o SVN sobre o Apache2. Material de consulta: &#8211; TRAC &#8211; SVN &#8211; WebAdmin Instalando o TRAC e o SVN: # apt-get install apache2 subversion libapache2-svn trac libapache2-mod-python [...]]]></description>
			<content:encoded><![CDATA[<p>Este post não é para ser um tutorial, mas sim um lembrete de como instalar e criar um ambiente de desenvolvimento no Debian, utilizando o TRAC e o SVN sobre o Apache2.</p>
<p>Material de consulta:<br />
 &#8211; <a href="http://trac.edgewall.org/" target="_blank">TRAC</a><br />
 &#8211; <a href="http://svnbook.red-bean.com/nightly/pt_BR/svn-book.html" target="_blank">SVN</a><br />
 &#8211; <a href="http://trac.edgewall.org/wiki/WebAdmin" target="_blank">WebAdmin</a></p>
<h3>Instalando o TRAC e o SVN:</h3>
<pre lang="Bash">
# apt-get install apache2 subversion libapache2-svn trac libapache2-mod-python
</pre>
<h3>Configurando o Projeto:</h3>
<p>Para organizar melhor o seu projeto utilize  a seguinte estrutura no seu projeto:</p>
<pre lang="Bash">
/var/www/
    projeto/
        svn/   //seu subversion
        trac/ //seu trac
        www/ //seu ambiente de teste caso seja um projeto web
        desktop/ //seu ambiente de teste caso seja um projeto desktop
</pre>
<p><strong>Vamos aos comandos:</strong></p>
<p>criando pastas:</p>
<pre lang="Bash">
# mkdir /var/www/projeto
# cd /var/www/projeto/
</pre>
<p>Criando o repositório SVN:</p>
<pre lang="Bash">
#  svnadmin create svn
</pre>
<p>Criando o TRAC do projeto:</p>
<pre lang="Bash">
#  trac-admin trac initenv
</pre>
<p>Criando as senhas pelo Apache tanto para o SVN quanto para o TRAC:</p>
<pre lang="Bash">
# htpasswd2 -c /var/www/projeto/svn.passwd eu
</pre>
<p>Configurando SVN no Apache2:</p>
<pre lang="Bash">
<virtualhost *:80>
        ServerName svn.localhost
        ErrorLog /var/log/apache2/error_svn_log
        CustomLog /var/log/apache2/access_svn_log common
        <location "/">
                DAV svn
                SVNPath /var/www/projeto
                AuthType Basic
                AuthName "Projeto"
                AuthUserFile /var/www/projeto/svn.passwd
<limitexcept GET PROPFIND OPTIONS REPORT>
                        Require valid-user
                </limitexcept>
                # SSLRequireSSL
        </location>
</virtualhost>
</pre>
<p>Configurando o TRAC no Apache2:</p>
<pre lang="Bash">
<virtualhost *:80>
        ServerName trac.localhost
        CustomLog /var/log/apache2/access_trac_log combined
        ErrorLog /var/log/apache2/error_trac_log
        Alias /trac "/usr/share/pyshared/trac/htdocs/"
        SetEnv TRAC_ENV "/var/www/projeto/trac/htdocs"
        ScriptAliasMatch ^/(.*) /usr/share/trac/cgi-bin/trac.cgi/$1
        <location "/login">
                AuthType Basic
                AuthName "Lanche"
                AuthUserFile /var/www/projeto/svn.passwd
                Require valid-user
                # SSLRequireSSL
        </location>
</virtualhost>
</pre>
<p>Após instalar o TRAC, vale apena instalar o <a href="http://trac.edgewall.org/wiki/WebAdmin" >WebAdmin</a> que possibilita o gerenciamento do TRAC via WEB sem precisar entrar no console via trac-admin, caso seja menor que TRAC 0.11.xx.</p>
<p>Se for um TRAC 0.11.xx basta adicionar as linhas abaixo na configuração:</p>
<pre lang="INI">
[components]
webadmin.* = enabled
</pre>
<p>Outra hora explico o porque de usar o TRAC + SVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/instalando-ambiente-de-desenvolvimento-trac-svn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Importando MS Access (mdb) para o Postgres</title>
		<link>http://uzed.com.br/importando-ms-access-mdb-para-o-postgres/</link>
		<comments>http://uzed.com.br/importando-ms-access-mdb-para-o-postgres/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 11:27:45 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Postgres]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[mdbtools]]></category>
		<category><![CDATA[MS Access]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=138</guid>
		<description><![CDATA[Neste exemplo veremos como importar um MS Access (mdb) para o Postgres usando Linux (Debian neste caso) , o shell e o mdbtools. Instalando o visualizador de mdb: # apt-get install mdbtools-gmdb mdbtools Abrindo o mdbtools (ou menu Aplicalções->Produtividade->MDB Viewer): Exportando para CSV: Exportando os schemas: Para importar os dados do CSV: # psql public=# [...]]]></description>
			<content:encoded><![CDATA[<p>Neste exemplo veremos como importar um MS Access (mdb) para o Postgres usando Linux (Debian neste caso) , o shell e o mdbtools.</p>
<p>Instalando o visualizador de mdb:<br />
<code><br />
# apt-get install  mdbtools-gmdb mdbtools<br />
</code></p>
<p>Abrindo o mdbtools (ou menu Aplicalções->Produtividade->MDB Viewer):<br />
<div id="attachment_139" class="wp-caption alignnone" style="width: 310px"><a href="http://uzed.com.br/wp-content/uploads/2008/12/mdb2postgres_01.jpg"><img src="http://uzed.com.br/wp-content/uploads/2008/12/mdb2postgres_01-300x257.jpg" alt="Executando o MDB VIewer" title="mdb2postgres_01" width="300" height="257" class="size-medium wp-image-139" /></a><p class="wp-caption-text">Executando o MDB VIewer</p></div></p>
<p>Exportando  para CSV:<br />
<div id="attachment_143" class="wp-caption alignnone" style="width: 310px"><a href="http://uzed.com.br/wp-content/uploads/2008/12/mdb2postgres_02.jpg"><img src="http://uzed.com.br/wp-content/uploads/2008/12/mdb2postgres_02-300x212.jpg" alt="Exportando para CSV" title="mdb2postgres_02" width="300" height="212" class="size-medium wp-image-143" /></a><p class="wp-caption-text">Exportando para CSV</p></div></p>
<p>Exportando os schemas:<br />
<a href="http://uzed.com.br/wp-content/uploads/2008/12/mdb2postgres_03.jpg"><img src="http://uzed.com.br/wp-content/uploads/2008/12/mdb2postgres_03-300x213.jpg" alt="" title="mdb2postgres_03" width="300" height="213" class="alignnone size-medium wp-image-145" /></a></p>
<p>Para importar os dados do CSV:<br />
<code><br />
# psql<br />
public=# \copy teste FROM teste.csv;<br />
ou<br />
public=# \copy teste FROM teste.csv  WITH DELIMITER AS ';' CSV QUOTE AS '"'<br />
</code></p>
<h4>Referência</h4>
<ul>
<li><a href="http://www.postgresql.org/docs/8.3/interactive/sql-copy.html">www.postgresql.org/docs/8.3/interactive/sql-copy.html</a></li>
<li><a href="http://www.postgresql.org/docs/8.3/interactive/app-psql.html">www.postgresql.org/docs/8.3/interactive/app-psql.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/importando-ms-access-mdb-para-o-postgres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erro de GPG no Debian</title>
		<link>http://uzed.com.br/erro-de-gpg-no-debian/</link>
		<comments>http://uzed.com.br/erro-de-gpg-no-debian/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 12:31:26 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Sistema]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[GPG]]></category>

		<guid isPermaLink="false">http://uzed.com.br/?p=118</guid>
		<description><![CDATA[Muitas vezes quando fazemos um apt-get update pode ocorrer o seguinte erro: Erro: # apt-get update W: GPG error: http://www.tux.org sid Release: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY BB5E459A529B8B W: Falhou ao buscar http://www.tux.org/pub/java/debian/dists/sid/main/binary-i386/Packages 404 Not Found Execute os comandos abaixo, lembrando que deve copiar [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes quando fazemos um apt-get update pode ocorrer o seguinte erro:</p>
<p>Erro:<br />
<code><br />
# apt-get update<br />
W: GPG error: http://www.tux.org sid Release: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY BB5E459A529B8B<br />
W: Falhou ao buscar http://www.tux.org/pub/java/debian/dists/sid/main/binary-i386/Packages  404 Not Found<br />
</code></p>
<p>Execute os comandos abaixo, lembrando que deve copiar a chave que esta indicada no erro (neste caso é BB5E459A529B8B ):<br />
<code><br />
# gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys BB5E459A529B8B<br />
gpg: requesting key 529B8B from hkp server wwwkeys.eu.pgp.net<br />
gpg: key 529B8B: public key "Blackdown Java-Linux Package Signing Key
<package @blackdown.org>" imported<br />
gpg: no ultimately trusted keys found<br />
gpg: Número total processado: 1<br />
gpg:               importados: 1
</package></code></p>
<p>Depois:<br />
<code><br />
# gpg --armor --export BB5E459A529B8B | apt-key add -<br />
OK<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/erro-de-gpg-no-debian/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Complementos para Firefox</title>
		<link>http://uzed.com.br/complementos-para-firefox/</link>
		<comments>http://uzed.com.br/complementos-para-firefox/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 12:43:14 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[firefox complementos]]></category>

		<guid isPermaLink="false">http://uzed.com.br/zed/?p=76</guid>
		<description><![CDATA[Uma das melhores características do Firefox é a possibilidade instalar complementos, que auxiliam em várias tarefas. Para procurar mais complementos consulte o site do Mozilla. Separei alguns complementos mais com o perfil de webdeveloper. Web Developer &#8211; Ótima ferramenta para desenvolver e debugar layout. Html Validator &#8211; Valida o HTML. Firebug &#8211; Indispensável. Com ele [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das melhores características do Firefox é a possibilidade instalar complementos, que auxiliam em várias tarefas.<br />
Para procurar mais complementos consulte o site do <a href="https://addons.mozilla.org/pt-BR/firefox/">Mozilla</a>.</p>
<p>Separei alguns complementos mais com o perfil de webdeveloper.</p>
<ul>
<li><a href="https://addons.mozilla.org/pt-BR/firefox/addon/60" >Web Developer</a> &#8211; Ótima ferramenta para desenvolver e debugar layout.</li>
<li><a href="https://addons.mozilla.org/pt-BR/firefox/addon/249" >Html Validator</a> &#8211; Valida o HTML.</li>
<li><a href="https://addons.mozilla.org/pt-BR/firefox/addon/1843" >Firebug</a> &#8211; Indispensável. Com ele você tem todo o controle sobre o HTML, CSS, JavaScript além de outras funcionalidades.</li>
<li><a href="https://addons.mozilla.org/pt-BR/firefox/addon/3257" >Dicionário pt-br</a> &#8211; Dicionário de português para o Firefox.</li>
<li><a href="https://addons.mozilla.org/pt-BR/firefox/addon/590" >ShowIP</a> &#8211; Exibe o IP da máquina.</li>
<li><a href="https://addons.mozilla.org/pt-BR/firefox/addon/684" >FireFTP &#8211; Gerenciador FTP.</a></li>
<li><a href="https://addons.mozilla.org/pt-BR/firefox/addon/10083">Library Detector</a> &#8211; Detecta a biblioteca JS utilizada no site.</li>
<li><a href="https://addons.mozilla.org/pt-BR/firefox/addon/3795">BBComposer</a> &#8211; Ferramenta WYSIWYG para edição de textarea (ótimo para wiki e blogs).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/complementos-para-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menu CSS</title>
		<link>http://uzed.com.br/menu-css/</link>
		<comments>http://uzed.com.br/menu-css/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 21:06:55 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Layout]]></category>

		<guid isPermaLink="false">http://uzed.com.br/zed/?p=62</guid>
		<description><![CDATA[Menu fácil de implementar: Tanfa]]></description>
			<content:encoded><![CDATA[<p>Menu fácil de implementar:</p>
<p><a href="http://www.tanfa.co.uk/css/examples/menu/">Tanfa</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/menu-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Semana da Mobilidade Curitiba 02 a 06 de Junho</title>
		<link>http://uzed.com.br/semana-da-mobilidade-curitiba-02-a-06-de-junho/</link>
		<comments>http://uzed.com.br/semana-da-mobilidade-curitiba-02-a-06-de-junho/#comments</comments>
		<pubDate>Fri, 30 May 2008 01:08:47 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://uzed.com.br/zed/?p=43</guid>
		<description><![CDATA[Maiores informações em: http://www.semanadamobilidade.blogspot.com/]]></description>
			<content:encoded><![CDATA[<p>Maiores informações em:</p>
<p><a href="http://www.semanadamobilidade.blogspot.com/">http://www.semanadamobilidade.blogspot.com/</a></p>
<p><a href='http://uzed.com.br/zed/wp-content/uploads/2008/05/semana_da_mobilidade_curitiba.jpg' title='semana_da_mobilidade_curitiba.jpg'><img src='http://uzed.com.br/zed/wp-content/uploads/2008/05/semana_da_mobilidade_curitiba.jpg' alt='semana_da_mobilidade_curitiba.jpg' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/semana-da-mobilidade-curitiba-02-a-06-de-junho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FISL 9.0</title>
		<link>http://uzed.com.br/fisl-90/</link>
		<comments>http://uzed.com.br/fisl-90/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 05:18:47 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>

		<guid isPermaLink="false">http://uzed.com.br/zed/?p=42</guid>
		<description><![CDATA[Segue o caminho do FISL 9.0 (PUC-RS) para o Hotel Union: Google Maps]]></description>
			<content:encoded><![CDATA[<p>Segue o caminho do <a href="http://fisl.softwarelivre.org/9.0/www/" target="_blank">FISL 9.0</a> (PUC-RS) para o <a href="http://unionhoteis.com.br/collins/segunda.htm" target="_blank">Hotel Union</a>:<br />
<a href="http://maps.google.com/maps?f=d&#038;hl=3Dpt-BR&#038;geocode=6691800078738324872,-30.032874,-51.223692&#038;saddr=-30.033099,-51.223497&#038;daddr=Pontif%C3%ADcia+Universidade+Cat%C3%B3lica+-+PUC+-+Partenon,+Porto+Alegre+-+RS,+Brazil&#038;mra=dme&#038;mrcr=0&#038;mrsp=0&#038;sz=16&#038;jsv=107&#038;sll=-30.035068,-51.220043&#038;sspn=0.011703,0.020084&#038;ie=UTF8&#038;ll=-30.043687,-51.201954&#038;spn=0.046808,0.080338&#038;z=14" target="_blank"><br />
Google Maps</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/fisl-90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dicas para virar Webdesigner</title>
		<link>http://uzed.com.br/dicas-para-virar-webdesigner/</link>
		<comments>http://uzed.com.br/dicas-para-virar-webdesigner/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 11:42:15 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://uzed.com.br/zed/?p=40</guid>
		<description><![CDATA[Qual programador não teve dificuldade em como implementar um layout de um designer? Receber um arquivo de imagem e transformar em HTML, é como receber um bloco de metal um desenho e transformar em um carro. Se você designer, tem dificuldades em trabalhar com programadores, é porque talvez não esteja conseguindo passar as suas idéias, [...]]]></description>
			<content:encoded><![CDATA[<p>Qual programador não teve dificuldade em como implementar um layout de um designer?</p>
<p>Receber um arquivo de imagem e transformar em HTML, é como receber um bloco de metal um desenho e transformar em um carro.<br />
Se você designer, tem dificuldades em trabalhar com programadores, é porque talvez não esteja conseguindo passar as suas idéias, ou talvez ele esteja tendo que refazer todo o seu trabalho.<br />
Então esta na hora de você se transformar em um WEBDESIGNER.<br />
Segue algumas dicas por onde começar:</p>
<p>Livros:</p>
<ul>
<li><a href="http://www.temporeal.com.br/produtos.php?id=170478"> Não Me Faça Pensar</a> &#8211; Ã“timo para ter uma noção de como as coisas e fazer layouts mais agradáveis;</li>
<li><a href="http://www.temporeal.com.br/produtos.php?id=170462"> Use a Cabeça! HTML com CSS e XHTML</a> &#8211; Agora você pode entender como que  funcionam as coisas no mundo do HTML e do CSS, aqui você já começa a produzir layouts funcionais;</li>
<li><a href="http://www.temporeal.com.br/produtos.php?id=169636"> CSS Cookbook</a> &#8211; Depois de aprender HTML e CSS, vale apena aprender alguns recursos mais avançados para impressionar os programadores (hehehe).</li>
</ul>
<p>Para consulta online nada melhor que ler direto da fonte:</p>
<ul>
<li><a htef="http://www.w3.org/TR/html4/">HTML &#8211; Especificação oficial da W3C;</a></li>
<li><a htef="http://www.w3.org/TR/CSS21/">CSS &#8211; Especificação oficial da W3C.</a></li>
</ul>
<p>Todos sabemos que o Firefox é o melhor browser para desenvolver sites (infelizmente sempre temos que testar o layout no IE também), não que ele nunca trave, seja pesado, ou as vezes nos irrite, mas por ele ter ótimos plugins que ajudam no desenvolvimento. Seguem os links do kit Firefox:</p>
<ul>
<li><a href="http://www.mozilla.com">Firefox</a> &#8211; Sim, o glorioso, pesado e as vezes chato, browser (não troco ele por nada);</li>
<li><a href="http://www.mezzoblue.com/zengarden/alldesigns/">Firebug</a> &#8211; Aqui é onde você verifica o que esta acontecendo de errado no seu layout e no seu Java Script;</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web Developer</a> &#8211; Ele só não faz o seu café da manhã, é tanta funcionalidade que é só fuçando pra entender.</li>
</ul>
<p>Para referências de como fazer um bom layout aconselho a perder algumas horas navegando nos exemplos do site <a href="http://www.mezzoblue.com/zengarden/alldesigns/">CSS Zen Garden</a>, onde o HTML sempre é o mesmo, só muda apenas o CSS (tem layouts que você não acredita que foi apenas mudado o CSS).</p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/dicas-para-virar-webdesigner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recursividade com Stored Procedure no MySQL</title>
		<link>http://uzed.com.br/recursividade-com-store-procerure-no-mysql/</link>
		<comments>http://uzed.com.br/recursividade-com-store-procerure-no-mysql/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 13:31:33 +0000</pubDate>
		<dc:creator>zedmaster</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://uzed.com.br/zed/?p=38</guid>
		<description><![CDATA[A pedidos segue como fazer uma Stored Procedure recursiva no Mysql.

A recursividade tende a formar uma hierarquia entre pai e filho, mostrando a geração de cada indivÃ­duo relacionado.
Uma função é considerada recursiva quando ela chama a si mesma diversas vezes.]]></description>
			<content:encoded><![CDATA[<p>A pedidos segue como fazer uma Stored Procedure recursiva no Mysql.</p>
<p>É aconselhável ler estes tópicos antes:<br />
- <a href="http://dev.mysql.com/doc/refman/5.0/en/cursors.html">Cursores</a><br />
- <a href="http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html">Stored Procedure</a></p>
<p>O nosso exemplo consiste em cadastrar vários elementos e fazer um relacionamento entre pais e filhos, a recursividade é usada para formar uma hierarquia, mostrando a geração de cada indiví­duo relacionado.<br />
Uma função é considerada recursiva quando ela chama a si mesma diversas vezes.</p>
<p>Exemplo:</p>
<table border='1'>
<tr>
<td><strong>Geração</strong></td>
<td><strong>ID</strong></td>
<td><strong>Elemento</strong></td>
<td><strong>Pai</strong></td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>A</td>
<td>0</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>AB</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>3</td>
<td>AC</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>4</td>
<td>AD</td>
<td>1</td>
</tr>
<tr>
<td>3</td>
<td>5</td>
<td>ADA</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>6</td>
<td>B</td>
<td>0</td>
</tr>
<tr>
<td>2</td>
<td>7</td>
<td>BA</td>
<td>6</td>
</tr>
</table>
<p></p>
<p>A tabela tb_recursive precisa ter apenas 3 campos, o campo id_filho irá ser igual a 0 quando o elemento não tiver um pai.</p>
<pre lang="SQL" line="1" >
CREATE TABLE  `test`.`tb_recursive` (
  `id` int(11) NOT NULL auto_increment,
  `nome` varchar(255) NOT NULL,
  `id_pai` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;

INSERT INTO `tb_recursive` VALUES (1, 'A', 0);
INSERT INTO `tb_recursive` VALUES (2, 'AB', 1);
INSERT INTO `tb_recursive` VALUES (3, 'AC', 1);
INSERT INTO `tb_recursive` VALUES (4, 'AD', 1);
INSERT INTO `tb_recursive` VALUES (5, 'B', 0);
INSERT INTO `tb_recursive` VALUES (6, 'BA', 5);
INSERT INTO `tb_recursive` VALUES (7, 'BB', 5);
INSERT INTO `tb_recursive` VALUES (8, 'C', 0);
INSERT INTO `tb_recursive` VALUES (9, 'ADA', 4);
INSERT INTO `tb_recursive` VALUES (10, 'ADB', 4);
INSERT INTO `tb_recursive` VALUES (11, 'ADBA', 10);
</pre>
<p>A pergunta básica que se baseia o algoritmo da SP recursiva é: Sendo esse pai X, quem são os filhos dele?<br />
Esta pergunta é feita para cada filho desse pai, e assim por adiante, até que não tenhamos mais descendentes. Ã‰ importante identificar a geração desse pai para que se possa organizar a hierarquia.</p>
<p>Para facilitar, iniciamos a criação de uma SP que iniciará a busca dos filhos:</p>
<pre lang="SQL" line="1" >
DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`sp_recursive_start`$$
CREATE PROCEDURE `test`.`sp_recursive_start` (IN in_id INT)
BEGIN
	DECLARE v_geracao INT;
	SET v_geracao = 1;
	SET @@max_sp_recursion_depth = 10;

	DROP TEMPORARY TABLE IF EXISTS tmp_recursive;
	CREATE TEMPORARY TABLE tmp_recursive (
					geracao INT,
					id int,
					nome VARCHAR(255)
	)ENGINE=MyISAM DEFAULT CHARSET=latin1;

	INSERT INTO tmp_recursive (geracao,id,nome)
	SELECT v_geracao, id, nome FROM tb_recursive WHERE id = in_id;

	CALL sp_recursive(in_id, v_geracao);

	SELECT * FROM tmp_recursive;

END$$

DELIMITER ;
</pre>
<p>Iremos criar uma tabela temporária para armazenar os resultados da hierarquia dos elementos, e exibi-los depois da pesquisa.</p>
<p>Segue abaixo o código da SP recursiva:</p>
<pre lang="SQL" line="1" >
DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`sp_recursive`$$
CREATE PROCEDURE `test`.`sp_recursive` (IN in_id INT, IN in_geracao INT )
BEGIN

	DECLARE done BOOLEAN DEFAULT FALSE;
	DECLARE v_nome VARCHAR(255);
	DECLARE v_id_filho INT;
	DECLARE v_geracao INT;

	DECLARE cursor_a CURSOR FOR
		SELECT id,nome FROM tb_recursive WHERE id_pai = in_id;		

	DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = TRUE;

	OPEN cursor_a;
	REPEAT FETCH cursor_a INTO  v_id_filho,v_nome;

		IF NOT done THEN
			INSERT INTO tmp_recursive (geracao,id,nome) VALUE(in_geracao+1, v_id_filho, v_nome);
			CALL sp_recursive (v_id_filho, in_geracao+1);
		END IF;

		UNTIL done END REPEAT;
	CLOSE cursor_a;

END$$

DELIMITER ;
</pre>
<p>Caso o elemento não contenha filhos a SP é encerrada e volta para quem a chamou.</p>
<p>Para executar a SP use:</p>
<pre lang="SQL" line="1" >
CALL sp_recursive_start(1);
</pre>
<p>Arquivo contendo todos os comandos <a id="p39" href="http://uzed.com.br/zed/wp-content/uploads/2008/01/recursive.zip">recursive.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uzed.com.br/recursividade-com-store-procerure-no-mysql/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
