<?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>PHPAULO</title>
	<atom:link href="http://www.phpaulo.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpaulo.com.br</link>
	<description>Só mais um site WordPress</description>
	<lastBuildDate>Wed, 14 Sep 2011 15:13:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Olá, mundo!</title>
		<link>http://www.phpaulo.com.br/sem-categoria/ola-mundo/</link>
		<comments>http://www.phpaulo.com.br/sem-categoria/ola-mundo/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 15:13:53 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=1</guid>
		<description><![CDATA[Bem-vindo ao WordPress. Esse é o seu primeiro post. Edite-o ou exclua-o, e comece a publicar!]]></description>
			<content:encoded><![CDATA[<p>Bem-vindo ao WordPress. Esse é o seu primeiro post. Edite-o ou exclua-o, e comece a publicar!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/sem-categoria/ola-mundo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criando uma variável dinâmica com JavaScript</title>
		<link>http://www.phpaulo.com.br/javascript/criando-uma-variavel-dinamica-com-javascript/</link>
		<comments>http://www.phpaulo.com.br/javascript/criando-uma-variavel-dinamica-com-javascript/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 05:02:27 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=119</guid>
		<description><![CDATA[Estou em um projeto que precisei criar variáveis que fossem de escopo global em javascript, para isso geralmente usamos o var antes do nome da variável. Eu precisei criar essas variaveis dentro de um loop, mais precisamente um for Ai &#8230; <a href="http://www.phpaulo.com.br/javascript/criando-uma-variavel-dinamica-com-javascript/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estou em um projeto que precisei criar variáveis que fossem de escopo global em javascript, para isso geralmente usamos o var antes do nome da variável.</p>
<p>Eu precisei criar essas variaveis dentro de um loop, mais precisamente um for</p>
<p>Ai veio a pergunta, como criar variáveis em JavaScript de forma dinamica. Pesquisando na internet encontrei algumas formas. Porém a unica forma que funcionou foi utilizando a função eval();</p>
<pre style="font-family: monospace;"><span style="color: #003366; font-weight: bold;">var</span> data <span style="color: #339933;">=</span> <span style="color: #3366cc;">"testVariable"</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">(</span><span style="color: #3366cc;">"var temp_"</span> <span style="color: #339933;">+</span> data <span style="color: #339933;">+</span> <span style="color: #3366cc;">"=123;"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #000066;">alert</span><span style="color: #009900;">(</span>temp_testVariable<span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
<p>Isso foi bem simples, e resolveu o meu problema. Retirei o exemplo e a idéia de realizar o post do seguinte link: <a href="http://www.hiteshagrawal.com/javascript/dynamic-variables-in-javascript" target="_blank">http://www.hiteshagrawal.com/javascript/dynamic-variables-in-javascript</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/javascript/criando-uma-variavel-dinamica-com-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 crimes de usabilidade que você não deve cometer</title>
		<link>http://www.phpaulo.com.br/desenvolvimento/10-crimes-de-usabilidade-que-voce-nao-deve-cometer/</link>
		<comments>http://www.phpaulo.com.br/desenvolvimento/10-crimes-de-usabilidade-que-voce-nao-deve-cometer/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 16:41:49 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[experiência do usuário]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[usabilidade]]></category>
		<category><![CDATA[usuário]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=104</guid>
		<description><![CDATA[Saiba quais os 10 crimes mais cometidos quase se trata de usabilidade básica. <a href="http://www.phpaulo.com.br/desenvolvimento/10-crimes-de-usabilidade-que-voce-nao-deve-cometer/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ao longo do tempo convenções e melhores práticas tem sido desenvolvidas para ajudar a melhorar de forma geral a usabilidade de websites durante a construção do layout e da codificação. Este post destaca os 10 crimes de usabilidade mais cometidos seja por erro ou negligencia na área de web design e provê uma solução alternativa para ajudar a melhorar a usabilidade do seu web site.</p>
<h2>1º &#8211; Label de formulário não associado à campos</h2>
<div id="attachment_105" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-105" title="Label de formulário não associado à campos" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime1.png" alt="Label de formulário não associado à campos" width="500" height="300" /><p class="wp-caption-text">Label de formulário não associado à campos</p></div>
<p>Usando o atributo &#8216;for&#8217; permite que quando o usuário clique no label automaticamente é selecionado o campo input. Isso é muito importante para campos checkbox e radio pois permitem uma maior área clicável.</p>
<h2>2º &#8211; Logo não faz link para a página inicial da empresa</h2>
<div id="attachment_106" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-106" title="Logo não faz link para a página inicial da empresa" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime2.png" alt="Logo não faz link para a página inicial da empresa" width="500" height="300" /><p class="wp-caption-text">Logo não faz link para a página inicial da empresa</p></div>
<p>Linkar o logo do site para a página inicial tornou-se uma prática comum e atualmente os internautas esperam que ao clicar no logo, ele seja redirecionado para a página inicial. Também vale mencionar que é legal o logo aparecer no canto superior esquerdo.</p>
<h2>3º &#8211; Não especificar o estado de link visitado</h2>
<div id="attachment_107" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-107" title="Não especificar o estado de link visitado" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime3.png" alt="Não especificar o estado de link visitado" width="500" height="300" /><p class="wp-caption-text">Não especificar o estado de link visitado</p></div>
<p>O estado de link visita é o que o próprio nome diz. Este não é um dos mais avançados seletores do CSS, mas é quase sempre esquecido. Dar uma dica a um usuário sobre qual link ele já clicou é sempre uma boa!</p>
<h2>4º &#8211; Não indicar um campo formulário ativo</h2>
<div id="attachment_108" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-108" title="Não indicar um campo formulário ativo" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime4.png" alt="Não indicar um campo formulário ativo" width="500" height="300" /><p class="wp-caption-text">Não indicar um campo formulário ativo</p></div>
<p>Você pode usar o seletor :focus em diversos elementos, mas ele é super acessível quando usado para inputs e textareas para indicar que determinado campo está ativo. Adicionar estilo CSS, tipo destacar a borda ou alterar sutilmente a cor de fundo do elemento.</p>
<h2>5º &#8211; Uma imagem sem uma descrição no atributo alt</h2>
<div id="attachment_109" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-109" title="Uma imagem sem uma descrição no atributo alt" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime5.png" alt="Uma imagem sem uma descrição no atributo alt" width="500" height="300" /><p class="wp-caption-text">Uma imagem sem uma descrição no atributo alt</p></div>
<p>Isto é desviar um pouco no campo da acessibilidade, mas isso continua sendo algo importante a se considerar. Lembre-se sempre de adicionar o atributo alt nas suas imagens, ele será usado somente com proposito decorativo, você pode até deixar o atributo vazio, mas ele sempre deverá existir. Quando usar uma imagem como link, preencha a descrição indicando para onde este link levará.</p>
<h2>6º &#8211; Uma imagem de fundo sem uma cor de background</h2>
<div id="attachment_110" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-110" title="Uma imagem de fundo sem uma cor de background" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime6.png" alt="Uma imagem de fundo sem uma cor de background" width="500" height="300" /><p class="wp-caption-text">Uma imagem de fundo sem uma cor de background</p></div>
<p>É comum o uso de imagens de fundo com texto escrito sobre elas, mas vale a pena lembrar que as imagens de fundo podem ser desabilitadas pelos usuários, e isso faz-se necessário que uma cor com tom similar seja colocada como fundo para que o texto não se torne ilegível.</p>
<h2>7º &#8211; Usando longos textos chatos para conteúdo</h2>
<div id="attachment_111" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-111" title="Usando longos textos chatos para conteúdo" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime7.png" alt="Usando longos textos chatos para conteúdo" width="500" height="300" /><p class="wp-caption-text">Usando longos textos chatos para conteúdo</p></div>
<p>Não há nada mais irritante do que chegar em um website e encontrar um texto longo. Divida o seu conteúdo com imagens, cabeçalhos e sessões claras para manter o texto compreensível e que dê gosto de ler.</p>
<h2>8º &#8211; Sublinhar coisas que não são links</h2>
<div id="attachment_112" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-112" title="Sublinhar coisas que não são links" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime8.png" alt="Sublinhar coisas que não são links" width="500" height="300" /><p class="wp-caption-text">Sublinhar coisas que não são links</p></div>
<p>Todos sabem que um texto sublinhado ou com uma cor diferente é provável que seja um link. Não confunda as pessoas sublinhando texto em outro lugar. Para dar destaque a certas palavras tente usar as tags &lt;strong&gt;(negrito) ou &lt;em&gt;(enfâse).</p>
<h2>9º &#8211; Falando para as pessoas clicarem aqui</h2>
<div id="attachment_113" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-113" title="Falando para as pessoas clicarem aqui" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime9.png" alt="Falando para as pessoas clicarem aqui" width="500" height="300" /><p class="wp-caption-text">Falando para as pessoas clicarem aqui</p></div>
<p>As palavras &#8220;clique aqui&#8221; cercaram a internet desde o seu início, mas tem sido evitadas em favor de opções mais usáveis. Usar as palavras &#8220;clique aqui&#8221; obriga ao usuário ler toda a sentença para saber o que acontecerá ao clicar. Em vez disso, é muito melhor que você descreva o que acontecerá na âncora do link.</p>
<h2>10º &#8211; Usar texto justificado</h2>
<div id="attachment_114" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-114" title="Usar texto justificado" src="http://www.phpaulo.com.br/wp-content/uploads/2010/10/crime10.png" alt="Usar texto justificado" width="500" height="300" /><p class="wp-caption-text">Usar texto justificado</p></div>
<p>Esta é outra dica que está indo um pouco mais a fundo em acessibilidade mas não deixa de ser um ponto important a considerar. Texto justificado pode fazer com que se olhe para o texto de forma pura e quadrada, mas isso pode gerar certos problemas com leitura, particularmente para usuários disléxicos que podem encontrar problemas para identificar palavras devido ao espaçamento nos paragrafos.</p>
<p>Este texto foi criado originalmento por <a title="Chris Spooner" href="http://twitter.com/chrisspooner" target="_blank">Chris Spooner</a> e pode ser encontrado em <a title="10 Usability Crimes You Really Shouldn’t Commit" href="http://line25.com/articles/10-usability-crimes-you-really-shouldnt-commit" target="_self">10 Usability Crimes You Really Shouldn’t Commit</a> (inglês)</p>
<p>Espero que aproveitem este post.</p>
<p>Paulo Fernandes</p>
<p><a title="Paulo Fernandes Twitter" href="http://twitter.com/paulofernandesj" target="_blank">@paulofernandesj</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/desenvolvimento/10-crimes-de-usabilidade-que-voce-nao-deve-cometer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Iniciando o desenvolvimento de aplicativos em PHP para Twitter usando o TwitterOAuth</title>
		<link>http://www.phpaulo.com.br/desenvolvimento/iniciando-o-desenvolvimento-de-aplicativos-em-php-para-twitter-usando-o-twitteroauth/</link>
		<comments>http://www.phpaulo.com.br/desenvolvimento/iniciando-o-desenvolvimento-de-aplicativos-em-php-para-twitter-usando-o-twitteroauth/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 18:05:48 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[twitteroauth]]></category>
		<category><![CDATA[whoUnfollowMe]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=91</guid>
		<description><![CDATA[TwitterOAuth é uma classe desenvolvida em PHP pelo @abraham que faz a comunicação com a API do twitter e facilita muito o nosso trabalho quando queremos desenvolver uma aplicação para o twitter. Minha motivação para este artigo foi a criação &#8230; <a href="http://www.phpaulo.com.br/desenvolvimento/iniciando-o-desenvolvimento-de-aplicativos-em-php-para-twitter-usando-o-twitteroauth/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>TwitterOAuth é uma classe desenvolvida em PHP pelo <a href="http://twitter.com/abraham" target="_blank">@abraham</a> que faz a comunicação com a API do twitter e facilita muito o nosso trabalho quando queremos desenvolver uma aplicação para o twitter.<br />
Minha motivação para este artigo foi a criação do aplicativo <a href="http://whounfollowme.pjtecnologia.com.br" target="_blank">WhoUnfollowMe</a>.</p>
<p>Abaixo segue o passo a passo para utilização do <strong><a href="http://github.com/abraham/twitteroauth" target="_blank">TwitterOAuth</a></strong>.</p>
<p>Primeiramente, acesse o github do <a href="http://twitter.com/abraham" target="_blank">@abraham</a> e faça o download da última versão da classe, no momento da criação deste artigo a versão é 0.2.0-beta3 que pode ser baixada em <a href="http://github.com/abraham/twitteroauth/downloads" target="_blank">http://github.com/abraham/twitteroauth/downloads</a>.</p>
<p>Após o arquivo baixado, você precisa instalar a classe na sua aplicação, isso é a parte mais fácil. Basta copiar a pasta <strong>twitteroauth</strong> para a sua aplicação.<br />
No arquivo baixado, você tem diversos arquivos <strong>.php</strong>, incluindo um arquivo de testes, o que facilita o entendimento de como usar algumas funcionalidades da aplicação.</p>
<p>Para utilizar a API do Twitter, você precisa ter as chaves de uso com o Twitter, se ainda não tem, sugiro que leia este outro artigo <a href="http://www.phpaulo.com.br/desenvolvimento/como-obter-as-chaves-de-acesso-para-utilizar-a-api-do-twitter/" target="_blank">Como obter as chaves de acesso para utilizar a API do Twitter</a></p>
<p>Dessa forma, você estará pronto para usar a classe <strong>twitteroauth</strong>.</p>
<p>Coloque nos comentários, funcionalidades que gostaria de ver, para que eu possa criar novos artigos.</p>
<p>Bom codding! <img src='http://www.phpaulo.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Paulo Fernandes<br />
<a href="http://twitter.com/paulofernandesj" target="_blank">@paulofernandesj</a><br />
<a href="http://www.pjtecnologia.com.br" target="_blank">PJ Tecnologia</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/desenvolvimento/iniciando-o-desenvolvimento-de-aplicativos-em-php-para-twitter-usando-o-twitteroauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como obter as chaves de acesso para utilizar a API do Twitter</title>
		<link>http://www.phpaulo.com.br/desenvolvimento/como-obter-as-chaves-de-acesso-para-utilizar-a-api-do-twitter/</link>
		<comments>http://www.phpaulo.com.br/desenvolvimento/como-obter-as-chaves-de-acesso-para-utilizar-a-api-do-twitter/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 18:03:33 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=95</guid>
		<description><![CDATA[Este artigo tem como objetivo mostrar criar e obter as chaves de acesso a API do Twitter. Acesse o site do Twitter e faça login com a sua conta. Após logado acesse o seguinte endereço http://dev.twitter.com Você verá a seguinte &#8230; <a href="http://www.phpaulo.com.br/desenvolvimento/como-obter-as-chaves-de-acesso-para-utilizar-a-api-do-twitter/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Este artigo tem como objetivo mostrar criar e obter as chaves de acesso a API do Twitter.</p>
<p>Acesse o site do Twitter e faça login com a sua conta. Após logado acesse o seguinte endereço <a href="http://dev.twitter.com" target="_blank">http://dev.twitter.com</a></p>
<p>Você verá a seguinte tela</p>
<p style="text-align: center;"><img class="aligncenter" title="dev.twitter.com" src="http://www.phpaulo.com.br/artigo/blog/twitter/imagem1.JPG" alt="" width="655" height="394" /></p>
<p>Seria interessante ler o <a href="http://dev.twitter.com/start" target="_blank">Get Started</a>, porém se quiser ir direto, clique em <a href="http://dev.twitter.com/apps/new" target="_blank">2. Register an App</a>, o segundo item, preencha o formulário completo conforme eu fiz.</p>
<p><img class="aligncenter" title="Cadastro de aplicação" src="http://www.phpaulo.com.br/artigo/blog/twitter/imagem2.JPG" alt="" width="648" height="512" /></p>
<p>Após isso clique em Register App e aceite os termos do Twitter. Você precisa de tudo isso, pois o twitter mudou a forma de autenticação da API, sendo agora obrigatório o uso do <a href="http://oauth.net/" target="_blank">OAuth</a></p>
<p>Você verá a seguinte tela</p>
<p><img class="aligncenter" title="Informações de Chaves de Acesso" src="http://www.phpaulo.com.br/artigo/blog/twitter/imagem3.JPG" alt="" width="651" height="518" /></p>
<p>Anote as chaves que mostrei na imagem (<strong>Consumer key</strong> e <strong>Consumer secret</strong>) e depois clique no link indicado, dessa forma, você conseguirá autenticar na sua aplicação e realizar os procedimentos necessários. Com os dados do link que mostrei <strong>Access Token (oauth_token)</strong> e <strong>Access Token Secret (oauth_token_secret)</strong> você conseguirá realizar os procedimentos que desejar usando a <strong>SUA</strong> conta do twitter. Esses dados, você pode solicitar do seu usuário via OAuth. Outro artigo explicará isso <img src='http://www.phpaulo.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Dessa forma, você tem as chaves para utilização da sua aplicação, basta implementar o código e ser feliz.</p>
<p>Paulo Fernandes<br />
<a href="http://twitter.com/paulofernandesj" target="_blank">@paulofernandesj</a><br />
<a href="http://www.pjtecnologia.com.br" target="_blank">PJ Tecnologia</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/desenvolvimento/como-obter-as-chaves-de-acesso-para-utilizar-a-api-do-twitter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Recuperando a lista de todos os seus seguidores (followers) do twitter com o twitteroauth</title>
		<link>http://www.phpaulo.com.br/desenvolvimento/recuperando-a-lista-de-todos-os-seus-seguidores-followers-do-twitter-com-o-twitteroauth/</link>
		<comments>http://www.phpaulo.com.br/desenvolvimento/recuperando-a-lista-de-todos-os-seus-seguidores-followers-do-twitter-com-o-twitteroauth/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 02:38:33 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[whoUnfollowMe]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=83</guid>
		<description><![CDATA[Criei um pequeno aplicativo que descobre quem deixou de me seguir no twitter  (whoUnfollowMe) e para isso precisei descobrir quem são os meus seguidores. Este aplicativo é bem simples, você faz o seu cadastro no site, toda noite, um programa é executado no &#8230; <a href="http://www.phpaulo.com.br/desenvolvimento/recuperando-a-lista-de-todos-os-seus-seguidores-followers-do-twitter-com-o-twitteroauth/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Criei um pequeno aplicativo que descobre quem deixou de me seguir no twitter  (<a href="http://whounfollowme.pjtecnologia.com.br" target="_blank"><span style="color: #000000;">whoUnfollowMe</span></a>) e para isso precisei descobrir quem são os meus seguidores. Este aplicativo é bem simples, você faz o seu cadastro no site, toda noite, um programa é executado no servidor e se alguém deixou de te seguir, ele avisa você por DM.</p>
<p>Este aplicativo ainda não está todo pronto, portando qualquer erro deve ter paciência. Mas caso tenha interesse, me siga no twitter ( <a href="http://twitter.com/paulofernandesj" target="_blank"><span style="color: #000000;">@paulofernandesj</span></a> ) que eu te notificarei das funcionalidades implantadas. <a href="http://whounfollowme.pjtecnologia.com.br" target="_blank"><span style="color: #000000;">whoUnfollowMe</span></a></p>
<p>Vamos ao código para descobrir os seus seguidores (followers).</p>
<p>Primeiramente entre no GIT do <a href="http://twitter.com/abraham" target="_blank"><span style="color: #000000;">@abraham</span></a> e faça download do twitteroauth (<a href="http://github.com/abraham/twitteroauth" target="_blank"><span style="color: #000000;">http://github.com/abraham/twitteroauth</span></a>)</p>
<p>Crie uma aplicação no twitter para obter as chaves de autorização. Sugiro seguir este meu outro artigo <a title="Como obter as chaves de acesso para utilizar a API do Twitter" href="http://www.phpaulo.com.br/desenvolvimento/como-obter-as-chaves-de-acesso-para-utilizar-a-api-do-twitter/" target="_self">Como obter as chaves de acesso para utilizar a API do Twitter</a>.</p>
<p>Os exemplos do <a href="http://twitter.com/abraham" target="_blank"><span style="color: #000000;">@abraham</span></a> se auto explicam e são bem simples. Para comprovar isso, veja como pode-se pegar todos os seus seguidores</p>
<pre>$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET,
  $access_token['oauth_token'], $access_token['oauth_token_secret']);

$content = $connection-&gt;get('account/verify_credentials');

$totalFollowers = $content-&gt;followers_count;

$cursor = -1;

$qtd = ceil($totalFollowers/100);

for($z=0;$z&lt;$qtd;$z++){
<span style="white-space: pre;">	</span>$result = $connection-&gt;get('statuses/followers', array('cursor' =&gt; $cursor));
<span style="white-space: pre;">	</span>$cursor = $result-&gt;next_cursor_str;
<span style="white-space: pre;">	</span>$user = $result-&gt;users;
<span style="white-space: pre;">	</span>$total = count($user);
<span style="white-space: pre;">	</span>for( $i=0;$i&lt;$total;$i++ ){
<span style="white-space: pre;">		</span>$users[] = $user[$i]-&gt;screen_name;
<span style="white-space: pre;">	</span>}
}</pre>
<p>Este código retorna um array com todos os seus seguidores. Viu como é simples??</p>
<p>PS: A limitação da aplicação é de 35000 seguidores</p>
<p>Até o próximo</p>
<p>Paulo Fernandes</p>
<p><a href="http://twitter.com/paulofernandesj" target="_blank">@paulofernandesj</a></p>
<p><a title="WhoUnfollowMe" href="http://whounfollowme.pjtecnologia.com.br">WhoUnfollowMe</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/desenvolvimento/recuperando-a-lista-de-todos-os-seus-seguidores-followers-do-twitter-com-o-twitteroauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primeiro dia com o Python</title>
		<link>http://www.phpaulo.com.br/desenvolvimento/primeiro-dia-com-o-python/</link>
		<comments>http://www.phpaulo.com.br/desenvolvimento/primeiro-dia-com-o-python/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 20:55:59 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=74</guid>
		<description><![CDATA[Hoje iniciei meu desenvolvimento com Python, tomei essa iniciativa após o oosjam Aqui será uma espécie de passos que eu segui. Acessei o site http://www.python.org e fiz o download da versão 2.7 para Windows e comecei a leitura desse link &#8230; <a href="http://www.phpaulo.com.br/desenvolvimento/primeiro-dia-com-o-python/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hoje iniciei meu desenvolvimento com  Python, tomei essa iniciativa após o <a title="OSSJam " href="http://twitter.com/#search?q=%23ossjam" target="_blank">oosjam</a></p>
<p>Aqui será uma  espécie de passos que eu segui.</p>
<p>Acessei o site  <a title="Python" href="http://www.python.org" target="_blank">http://www.python.org</a> e fiz o download da <a href="http://www.python.org/ftp/python/2.7/python-2.7.msi" target="_blank">versão 2.7 para Windows</a> e  comecei a leitura desse link <a href="http://docs.python.org/tutorial/index.html" target="_blank">http://docs.python.org/tutorial/index.html</a>,  li somente a primeira página enquanto rodava o executável MSI, mandei  instalar na pasta padrão<strong> C:PYTHON27</strong></p>
<p>Como gosto da parte prática  tentei ir direto para o &#8220;Hello World&#8221; <img src='http://www.phpaulo.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Primeiro Problema, como  configurar o windows para entender o Python <img src='http://www.phpaulo.com.br/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>No tutorial do  site do Python, o segui. Abri o prompt de comando e digitei python</p>
<p>||    &#8216;python&#8217; não é um comando reconhecido</p>
<p>Tive que adicionar o  caminho de instalação ao path do windows</p>
<p>||    set  path=%path%;C:python27</p>
<p>Depois disso, digitei python no prompt e  deu certo <img src='http://www.phpaulo.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Abriu uma interface no prompt e eu fiz o meu primeiro  &#8220;Hello World&#8221; foi até que simples, veja:</p>
<p>||    print &#8216;hello  world&#8217;<br />
||    print &#8220;hello world&#8221;</p>
<p>Ainda não aprendi o  suficiente, mas funcionou com aspas duplas e com aspas simples, algo  interessante do Python é que não precisa de ; no final da linha, basta  pular de linha que ele entende que é uma nova instrução.</p>
<p>Como eu  já sabia, arquivos Python tem a extensão <strong>.py</strong></p>
<p>Então, pensei, vou  salvar um arquivo e tentar executá-lo. Criei um arquivo em uma pasta  qualquer e quando salvei como .py no <a href="http://notepad-plus-plus.org/">notepadd++</a> e fechei o arquivo e  fui na pasta vê-lo. Para minha surpresa, o arquivo já alterou o icone,  informando que era um arquivo executável e que o windows reconhecia o  seu tipo. Clique duas vezes no arquivo e rapidamente, o prompt de  comando abriu e fechou. Pensei comigo mesmo, deve ter algo de errado com  o arquivo né? Ai fiz a seguinte &#8220;burrada&#8221;, coloquei 2000 linhas com a  seguinte instrução<br />
||     print &#8220;hello&#8221;<br />
||     print &#8220;hello&#8221;<br />
||      print &#8220;hello&#8221;<br />
||     print &#8220;hello&#8221;<br />
||     &#8230;</p>
<p>Cliquei duas  vezes novamente e percebi que ele estava imprimindo várias vezes. Acima  disse que fiz a &#8220;burrada&#8221;, porque eu bem que poderia ter criado um for,  que é muito mais elegante do que um CTRL+C e CTRL+V. Problema!!!!</p>
<p>Segundo  problema, como se cria variavel em Python??<br />
Bem mais simples do que  pensei basta escrever a variavel e usar o sinal de &#8216;=&#8217; para atribuir o  valor<br />
||    i = 0</p>
<p>Maravilha, e agora vamos ao for, ops! mais  um problema</p>
<p>Terceiro problema, como se cria um for<br />
Fiquei  feliz, descobri rapidinho, um amigo (von.juliano@gmail.com) me indicou o livro <em>&#8220;Beggining Python  &#8211; From Novice To Professional (Magnus Lie Hetland)&#8221;</em>, algo interessante  de ser mencionado é que no Python não tem abre e fecha chaves, tudo é na  base da identação <img src='http://www.phpaulo.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Acredito que dessa forma seja até melhor para se  programar, afinal tem gente que abre as chaves na mesma linha e outros  abrem na linha de baixo do método, mas isso é outra história.<br />
||      for numero in range(1,20000):<br />
||         print numero</p>
<p>Resultado:<br />
||        1<br />
||       2<br />
||       3<br />
||     &#8230;.</p>
<p>Mas agora eu queria  fazer algo para melhorar um pouco e deixar mais próximo da &#8220;vergonha&#8221;  do CTRL+C e CTRL+V que fiz acima, então resolvi concatenar variavel com a  String, ops!!! outro problema</p>
<p>Quarto problema, como concatenar  variavel em Python<br />
Com o livro essa foi facinho, basta utilizar a  virgula, isso mesmo &#8216;,&#8217; a virgula.<br />
Como agora estou com o livro, acho  que os problemas vão diminuir <img src='http://www.phpaulo.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8220;Tomara!&#8221;<br />
||    for numero in  range(1,20000):<br />
print &#8220;hello&#8221;,numero</p>
<p>Resultado:<br />
||      hello 1<br />
||     hello 2<br />
||     hello 3<br />
||     &#8230;.</p>
<p>Além  da virgula &#8216;,&#8217; concatenar ela serve para dar um espaço em branco, mas  como que se concatena sem espaço??</p>
<p>Quinto problema, concatenar um  numero com uma string sem espaço em branco?<br />
Esse foi mais  complicado, porém aprendi diversas outras coisas, mas no final descobri  com se faz, reparem na crase &#8216;`&#8217;<br />
||    for numero in range(1,20000):<br />
||         print &#8216;hello&#8217;+`numero`</p>
<p>Resultado:<br />
||     hello1<br />
||      hello2<br />
||     hello3<br />
||     &#8230;.</p>
<p>O que aprendi que comentei  acima é que se eu quisesse repetir o campo &#8220;hello&#8221; varias vezes eu  poderia simplesmente multiplicar pelo valor que eu quisesse, exemplo:<br />
||     for numero in range(1,20000):<br />
||        print &#8216;hello&#8217;*5</p>
<p>Resultado:<br />
||      hellohellohellohellohello<br />
||     hellohellohellohellohello<br />
||      hellohellohellohellohello<br />
||     &#8230;.</p>
<p>Outra coisa que  aprendi no primeiro dia de Python foi como executar um script direto no  console ( prompt de comando ), sem a necessidade de clicar duas vezes no  arquivo<br />
Vá até a pasta que o arquivo está instalado e digite<br />
||     python hello.py<br />
ou<br />
||    hello.py</p>
<p>Esse foi o estudo que  realizei com Python no primeiro dia. Espero amanha ter tempo para  investir mais um tempo e testar outras coisas, como por exemplo, mais  laçõs de repetição, condicionais e o que mais surgir de dúvida.</p>
<p>Peço  que me ajudem a erros que cometi acima, e fatos que ainda não aprendi e  quais podem ser meus próximos passos.</p>
<p>Até mais</p>
<p>Paulo  Fernandes<br />
<a href="http://twitter.com/paulofernandesj" target="_blank">@paulofernandesj</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/desenvolvimento/primeiro-dia-com-o-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCRUM em 2 minutos</title>
		<link>http://www.phpaulo.com.br/metodologia/scrum-em-2-minutos/</link>
		<comments>http://www.phpaulo.com.br/metodologia/scrum-em-2-minutos/#comments</comments>
		<pubDate>Mon, 10 May 2010 12:00:51 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Metodo]]></category>
		<category><![CDATA[SCRUM]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=59</guid>
		<description><![CDATA[O texto abaixo foi criado por Paulo Fernandes (eu) e Jefferson Lira como parte do artigo Como atender os requisitos arquiteturais de software usando métodos ágeis como SCRUM e XP. O SCRUM é um processo iterativo e incremental para o &#8230; <a href="http://www.phpaulo.com.br/metodologia/scrum-em-2-minutos/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O texto abaixo foi criado por <a title="E-mail de Contato" href="mailto:paulofernandesjr@gmail.com">Paulo Fernandes (eu)</a> e <a title="E-mail de Contato" href="mailto:jefferson.l.vieira@gmail.com">Jefferson Lira</a> como parte do artigo <a title="Como-atender-os-requisitos-arquiteturais-de-software-usando-métodos-ágeis-como-SCRUM-e-XP" href="http://www.phpaulo.com.br/artigo/pos/Como-atender-os-requisitos-arquiteturais-de-software-usando-metodos-ageis-como-SCRUM-e-XP.pdf" target="_blank">Como atender os requisitos arquiteturais de software usando métodos ágeis como SCRUM e XP</a>.</p>
<p>O SCRUM é um processo iterativo e incremental para o desenvolvimento de qualquer produto e gerenciamento de qualquer projeto, a quem diga que esta mais para um framework que uma metodologia, ou até mesmo mais para atitude que um processo.</p>
<p>Para que o SCRUM seja utilizado com êxito, cada pessoa envolvida deve cumprir com seu papel, seguindo corretamente todos os processos, e a fim de viabilizar, utilizar como apoio algumas das ferramentas que lhe são oferecidas. Entretanto, para que seja possível seguir corretamente todos os processos, primordialmente é necessário que todos estejam de acordo com a cultura envolvida.</p>
<p>Segue abaixo uma breve descrição sobre os três papeis relacionados ao SCRUM:</p>
<p><strong>Product Owner</strong>: responsável por garantir o retorno de investimento, este deve conhecer as necessidades do cliente;</p>
<p><strong>Scrum Master</strong>: responsável por remover os impedimentos do time e garantir o uso do SCRUM;</p>
<p><strong>Time (Equipe)</strong>: equipe de desenvolvimento multidisciplinar e auto-gerenciável, responsável por produzir produto com qualidade e valor para o cliente.</p>
<p>As ferramentas como: <strong>Product Backlog</strong>, <strong>Sprint Backlog</strong>, <strong>Burndown Chart</strong> e <strong>Scrum Board</strong> são de grande utilidade durante o ciclo de vida do SCRUM. Para um melhor entendimento, segue abaixo uma breve descrição:</p>
<p><strong>Product Backlog</strong>: uma lista com todos os requisitos que o Product Owner deseja, sem muitos detalhes técnicos, essa lista é ordenada por prioridade pelo Product Owner;</p>
<p><strong>Sprint Backlog</strong>: contém uma lista com as tarefas decompostas sobre os itens extraídos do Product Backlog que foi definida no Sprint Planning Meeting e que deverá ser entregue ao Product Owner.  Estas atividades não devem durar mais de 2 dias ou 16 horas;</p>
<p><strong>BurnDown Chart</strong>: gráfico que mostra o trabalho da equipe dia a dia, avaliando assim se o Sprint está atrasado ou não. Caso o gráfico demonstre que a equipe acabará o Sprint antes, o Product Owner é consultado e novas funcionalidades são incorporadas àquele Sprint;</p>
<p><strong>Scrum Board</strong>: é um quadro onde deverá contemplar todas as tarefas que serão realizadas dentro de um Sprint e listadas de acordo com as prioridades de cada item.</p>
<p>Existem três tipos de cerimônias no SCRUM,<strong> Sprint Planning Meeting</strong>, <strong>Daily Scrum Meeting</strong> e <strong>Sprint Review Meeting</strong>, estes três tipos de evento caracterizam bem o ciclo de vida de cada Sprint: início, meio e fim. Segue abaixo uma breve descrição sobre as cerimônias:</p>
<p><strong>Sprint Planning Meeting</strong>: encontro para planejar o que será feito no Sprint. A equipe acessa o Product Backlog e detalha de forma mais ampla as atividades que serão executadas no Sprint de acordo com suas prioridades, avaliando tempo e complexidade. Após definido o que será feito, o Sprint Backlog é gerado;</p>
<p><strong>Daily Scrum Meeting</strong>: encontros diários, com duração em média de 15 minutos, a idéia de ser uma reunião em que cada membro da equipe deve responder 3 perguntas: O que fiz ontem? O que farei hoje? O que está impedindo de que alcance o objetivo? Essa reunião é liderada pelo ScrumMaster;</p>
<p><strong>Sprint Review Meeting</strong>: encontro realizado quando o Sprint chega ao fim. Este encontro é dividido em duas partes, na primeira parte é demonstrado ao ProductOwner quais atividades definidas no Product Backlog foram realizadas, o Product Owner lidera esse encontro e pode chamar todos os interessados no projeto. Após a demonstração o Product Owner e os interessados no projeto atualizam e repriorizam o Product Backlog, definindo assim o próximo Sprint. Finalizada essa primeira parte o ScrumMaster toma a liderança e começa uma reunião com a equipe, onde a equipe avalia o que foi realizado positivamente e negativamente no Sprint, também avaliam o que poderia ser mudado para melhorar o próximo Sprint.</p>
<p>O <strong>Sprint</strong> é um conjunto de tarefas a serem executadas em um determinado tempo. A Figura 1 ilustra o ciclo de vida do SCRUM.</p>
<div class="wp-caption aligncenter" style="width: 311px"><a href="http://www.phpaulo.com.br/artigo/pos/ciclo-de-vida-scrum.jpg"><img title="Ciclo de Vida do SCRUM" src="http://www.phpaulo.com.br/artigo/pos/ciclo-de-vida-scrum.jpg" alt="Ciclo de Vida do SCRUM" width="301" height="140" /></a><p class="wp-caption-text">Ciclo de Vida do SCRUM</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/metodologia/scrum-em-2-minutos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Arquitetura de Software em 2 minutos</title>
		<link>http://www.phpaulo.com.br/arquitetura/arquitetura-de-software-em-2-minutos/</link>
		<comments>http://www.phpaulo.com.br/arquitetura/arquitetura-de-software-em-2-minutos/#comments</comments>
		<pubDate>Mon, 10 May 2010 12:00:26 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Arquitetura de Software]]></category>
		<category><![CDATA[ISO 9126]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=54</guid>
		<description><![CDATA[O texto abaixo foi criado por Paulo Fernandes (eu) e Jefferson Lira como parte do artigo Como atender os requisitos arquiteturais de software usando métodos ágeis como SCRUM e XP. A arquitetura do software é um ponto de extrema importância &#8230; <a href="http://www.phpaulo.com.br/arquitetura/arquitetura-de-software-em-2-minutos/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O texto abaixo foi criado por <a title="E-mail de Contato" href="mailto:paulofernandesjr@gmail.com">Paulo Fernandes (eu)</a> e <a title="E-mail de Contato" href="mailto:jefferson.l.vieira@gmail.com">Jefferson Lira</a> como parte do artigo <a title="Como-atender-os-requisitos-arquiteturais-de-software-usando-métodos-ágeis-como-SCRUM-e-XP" href="http://www.phpaulo.com.br/artigo/pos/Como-atender-os-requisitos-arquiteturais-de-software-usando-metodos-ageis-como-SCRUM-e-XP.pdf" target="_blank">Como atender os requisitos arquiteturais de software usando métodos ágeis como SCRUM e XP</a>.</p>
<p>A arquitetura do software é um ponto de extrema importância no desenvolvimento e deverá ter uma maior atenção quando sua existência é de grande complexidade para o sucesso do software, pois a definição desta poderá não ser a mais apropriada para o negócio. A má escolha de uma arquitetura de software fará com que o projeto possa ser um desastre, já a melhor escolha propicia uma maior chance para o sucesso do projeto. Abaixo evidenciamos definições sobre o que é a arquitetura de um software.</p>
<p>A arquitetura de software de um programa ou de um sistema é a estrutura ou estruturas do sistema, que incluem elementos de software, propriedades externas e as suas relações.</p>
<p>A arquitetura de software define a estrutura básica do sistema. A arquitetura é modulada em um alto nível de funcionalidades do sistema, gerenciamento e distribuição de dados, qual plataforma será usada, etc.</p>
<p>Arquitetura de software é a estrutura dos componentes do sistema/programa, seus relacionamentos, princípios e diretrizes para o projeto e sua evolução.</p>
<p>Devido as definições citadas acima, formalizamos que não existe uma definição mundial sobre o que é a arquitetura de software. As definições no geral enfatizam que a arquitetura é a descrição do sistema e a soma de pequenas partes dele, e como essas partes se relacionam e cooperam entre si para executar o trabalho do sistema. A qualidade e longevidade do software são determinadas pela sua arquitetura.</p>
<p>Não podemos confundir a arquitetura do software com o design. A arquitetura se preocupa com a seleção de elementos arquiteturais, suas iterações e restrições, já o design são as atividades que se preocupam com a modularização e detalhamento de interfaces, algoritmos, procedimentos e tipos de dados que darão suporte satisfatório a arquitetura.</p>
<p>Um software tipicamente contempla requisitos funcionais e não funcionais, sendo que muitas das vezes um deverá refletir o comportamento do outro. Os requisitos funcionais descrevem as funções que o software deve ser capaz de realizar. Já os requisitos não-funcionais descrevem as qualidades e restrições de como o sistema realiza suas funções. Um software, portanto, deve exibir atributos de qualidade que atendam aos seus requisitos.</p>
<p>O ideal é que os atributos de qualidade do software sejam identificados e qual a sua influência na arquitetura, por fim relacionar estes atributos as decisões arquiteturais que os proporcionam.</p>
<p>Com um modelo de apoio para definir e organizar os atributos do software importantes para a avaliação de sua qualidade existe a norma ISO 9126. Esta norma é um padrão internacional para avaliação da qualidade do software. Os atributos utilizados para avaliar a qualidade do software são os seguintes:</p>
<p><strong>Funcionalidade</strong>: é a capacidade do software realizar as funções que foram especificadas;</p>
<p><strong>Confiabilidade</strong>: é a capacidade do software ser seguro e tolerante a falhas;</p>
<p><strong>Usabilidade</strong>: é a medida da facilidade do usuário executar alguma funcionalidade do sistema;</p>
<p><strong>Eficiência</strong>: é a capacidade do sistema alcançar a resposta dentro do período de tempo especificado, está relacionado tanto ao desempenho quanto aos recursos usados;</p>
<p><strong>Manutenibilidade</strong>: é a medida de quanto o software é fácil ser alterado;</p>
<p><strong>Portabilidade</strong>: é a medida da facilidade do software ser portado para outro ambiente.</p>
<p>Tendo definido as decisões e informações arquiteturais, seja performance, escalabilidade, arquitetura de referência, segurança, ou outros itens, estas devem ser armazenadas em um documento. O documento mais comum que encontramos é o DAS (Documento de Arquitetura de Software). Este documento é de grande utilidade para guiar a equipe de desenvolvimento. <strong></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/arquitetura/arquitetura-de-software-em-2-minutos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eXtreme Programming (XP) em 2 minutos</title>
		<link>http://www.phpaulo.com.br/metodologia/extreme-programming-xp-em-2-minutos/</link>
		<comments>http://www.phpaulo.com.br/metodologia/extreme-programming-xp-em-2-minutos/#comments</comments>
		<pubDate>Mon, 10 May 2010 12:00:03 +0000</pubDate>
		<dc:creator>phpaulo</dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[eXtrme Programming]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=62</guid>
		<description><![CDATA[O texto abaixo foi criado por Paulo Fernandes (eu) e Jefferson Lira como parte do artigo Como atender os requisitos arquiteturais de software usando métodos ágeis como SCRUM e XP. Extreme Programming ou XP como é chamado é um processo &#8230; <a href="http://www.phpaulo.com.br/metodologia/extreme-programming-xp-em-2-minutos/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O texto abaixo foi criado por <a title="E-mail de Contato" href="mailto:paulofernandesjr@gmail.com">Paulo Fernandes (eu)</a> e <a title="E-mail de Contato" href="mailto:jefferson.l.vieira@gmail.com">Jefferson Lira</a> como parte do artigo <a title="Como-atender-os-requisitos-arquiteturais-de-software-usando-métodos-ágeis-como-SCRUM-e-XP" href="http://www.phpaulo.com.br/artigo/pos/Como-atender-os-requisitos-arquiteturais-de-software-usando-metodos-ageis-como-SCRUM-e-XP.pdf" target="_blank">Como atender os requisitos arquiteturais de software usando métodos ágeis como SCRUM e XP</a>.</p>
<p>Extreme Programming ou XP como é chamado é um processo de desenvolvimento de software baseado em valores de simplicidade, comunicação, feedback e coragem. O objetivo do XP é assegurar que o cliente receba o máximo de valor a cada dia de trabalho da equipe de desenvolvimento. Ele é organizado em torno de valores e práticas que atuam de forma harmônica e coesa para assegurar que o cliente sempre receba um alto retorno do investimento em software.</p>
<p>Os quatro valores fundamentais em que o XP se baseia são:</p>
<p><strong>Feedback</strong>: fazer com que o cliente conduza o desenvolvimento diariamente a fim de garantir que a equipe direcione toda a sua atenção para aquilo que de fato irá gerar mais valor;</p>
<p><strong>Comunicação</strong>: evitar o gasto de um valioso esforço na tentativa de trocar informações por meios de extensos documentos escritos que freqüentemente são interpretados de forma incorreta ou incompleta;</p>
<p><strong>Simplicidade</strong>: garantir que seja desenvolvido apenas o suficiente para atender as necessidades atuais do cliente, desprezando qualquer funcionalidade não essencial;</p>
<p><strong>Coragem</strong>: devido ao XP ser uma metodologia de software que se baseia em diversas premissas que contrariam os processos tradicionais de desenvolvimento de software, é preciso que todos da equipe tenham coragem para adotá-las e acreditar que, utilizando as práticas e valores do XP, serão capazes de fazer com que o software evolua com segurança e agilidade.</p>
<p>O XP tem alguns pontos fortes que auxiliam no processo de desenvolvimento, a citar:</p>
<p><strong>Cliente Presente</strong>: a presença objetiva viabilizar a simplicidade dos processos, facilitar a comunicação com os desenvolvedores e permitir um ciclo continuo e rápido de feedback;</p>
<p><strong>Jogo do Planejamento</strong>: reunião com o cliente a cada nova release a fim de definir quais funcionalidades devem ser implementadas de acordo com suas priorizações;</p>
<p><strong>Stand Up Meeting</strong>: reunir com a equipe de desenvolvimento a cada manhã para avaliar o trabalho que foi executado no dia anterior e priorizar aquilo que será implementado no dia que se inicia;<strong> </strong></p>
<p><strong>Refactoring</strong>: é utilizado para manter sempre o software o mais simples possível de ser manipulado sem que estas alterações no código possam afetar as funcionalidades que já estão implementadas;</p>
<p><strong>Código Coletivo</strong>: a idéia é que o código seja comunitário a todos os desenvolvedores, permitindo assim que todos possam alterar o código quando necessário sem ter que pedir autorização de outra pessoa;</p>
<p><strong>Código Padronizado</strong>: a fim de permitir que o sistema seja o mais homogêneo possível, a equipe deve estabelecer padrões de codificação, viabilizando assim a facilidade de qualquer manutenção futura;</p>
<p><strong>Metáfora</strong>: técnica para transmitir idéias de formas simples, através de uma linguagem comum que é estabelecida entre a equipe e o cliente;<strong> </strong></p>
<p><strong>Ritmo Sustentável</strong>: é recomendável que os desenvolvedores trabalhem apenas 8 horas por dia a fim de garantir o máximo de rendimento e permitir a produção de software com a melhor qualidade possível;</p>
<p><strong>Design Simples</strong>: optar sempre pela simplicidade do design, viabilizando a agilidade durante o desenvolvimento, dado que o feedback deve ser rápido ao cliente;</p>
<p><strong>Integração Contínua</strong>: a equipe de desenvolvimento deve garantir a integração de seus códigos com o restante do sistema diversas vezes ao dia;</p>
<p><strong>Releases Curtos</strong>: visa à disponibilidade de funcionalidades rapidamente ao cliente para que ele possa utilizar o software no dia-a-dia e se beneficiar dele.</p>
<p><strong>Desenvolvimento Guiado pelos Testes</strong>: visa o desenvolvedor escrever testes para cada funcionalidade antes mesmos de começar a codificá-las, possibilitando eles aprofundar o entendimento das necessidades do cliente;</p>
<p>Abaixo a Figura demonstra as práticas e os principais ciclos do XP:</p>
<div class="wp-caption aligncenter" style="width: 330px"><a href="http://www.phpaulo.com.br/artigo/pos/praticas-e-principios-do-xp.jpg"><img title="Práticas e princípios do XP" src="http://www.phpaulo.com.br/artigo/pos/praticas-e-principios-do-xp.jpg" alt="Práticas e princípios do XP" width="320" height="241" /></a><p class="wp-caption-text">Práticas e princípios do XP</p></div>
<p>A idéia da utilização do XP é voltada para projetos cujos requisitos são vagos e mudam com freqüência, desenvolvimento de sistema orientado a objeto, equipes pequenas e de preferência até 12 desenvolvedores. Este desenvolvimento deverá atender o modo iterativo ou incremental, objetivando que o sistema comece a ser implementado logo no início do projeto e ao longo do tempo adquirindo novas funcionalidades.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/metodologia/extreme-programming-xp-em-2-minutos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

