<?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>Softwares para Automação Comercial e Desenvolvimento de Software Personalizado</title>
	<atom:link href="http://www.flexdev.com.br/home/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flexdev.com.br/home</link>
	<description>Softwares para Automação Comercial</description>
	<lastBuildDate>Tue, 21 Jun 2011 00:35:43 +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>PHP com BDD</title>
		<link>http://www.flexdev.com.br/home/php-com-bdd/</link>
		<comments>http://www.flexdev.com.br/home/php-com-bdd/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 19:46:59 +0000</pubDate>
		<dc:creator>fabio.silva</dc:creator>
				<category><![CDATA[Diversos]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/?p=397</guid>
		<description><![CDATA[TweetOlá, Nesse Post vou mostrar um pouco de desenvolvimento PHP usando BDD (Behaviour-Driven Development). O BDD é uma prática ágil que tem como objetivo facilitar o desenvolvimento orientado a testes, onde o software é direcionados por comportamentos, trazendo para o contexto de destes os casos de uso ou historias da aplicação. Enquanto em TDD (Test [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/php-com-bdd/&via=flexdevbr&text=PHP com BDD&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Olá,</p>
<p>Nesse Post vou mostrar um pouco de desenvolvimento PHP usando BDD (Behaviour-Driven Development).<br />
O BDD é uma prática ágil que tem como objetivo facilitar o desenvolvimento orientado a testes,<br />
onde o software é direcionados por comportamentos, trazendo para o contexto  de destes os casos de uso ou historias da aplicação.</p>
<p>Enquanto em TDD (Test Driven Development) testamos a aplicação de forma granular em um ambiente micro<br />
no BDD os testes são globais voltados para a Funcionalidade, Casos de uso, Comportamentos, etc..</p>
<p>Como se em TDD testamos a aplicação de dentro para fora e já em BDD a aplicação é testada de fora para dentro.<br />
Existe muito material sobre esse assunto p\ ai e muita gente mais preparada que eu para abordar esse assunto de forma teorica,<br />
Então nesse Post vou mostrar na pratica um pouco de desenvolvimento PHP usando o <a href="http://behat.org">Behat</a></p>
<p><img src="http://www.flexria.com.br/home/wp-content/uploads/2011/06/behat.png" alt="Behat" /></p>
<p>Behat é um framework BDD <strong>em PHP 5.3</strong> construindo sobre de componentes do Symfony2.<br />
Behat foi inspirado no <a href="http://cukes.info">Cucumber</a> do Rails e especialmente a parte da sintaxe das features.</p>
<p>A instalação do Behat pode ser feita baixando diretalente pelo git diretamente pelo do git: <a href="http://github.com/Behat/Behat">http://github.com/Behat/Behat</a><br />
Ou instalando através do pear :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">&nbsp;
$ pear channel-discover pear.behat.org
$ pear <span style="color: #c20cb9; font-weight: bold;">install</span> behat<span style="color: #000000; font-weight: bold;">/</span>behat</pre></div></div>

<p>Se tudo der certo o Behat esta instalado<br />
A versão atualmente disponível no pear é a 1.1.9<br />
Para verificar se esta correto e ver a versão instalada execute :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ behat <span style="color: #660033;">-V</span>
Behat version 1.1.9</pre></div></div>

<p>Depois de concluir a instalação o Behat esta pronto para ser usado.<br />
para isso vamos inicializar o projeto de testes com o Behat</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> path-to-my-app
$ behat <span style="color: #660033;">--init</span></pre></div></div>

<p>O comando behat &#8211;init vai criara a estruturar de diretórios usada p\ organizar os teste do Behat</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">|</span>-- features
   <span style="color: #000000; font-weight: bold;">|</span>-- steps            <span style="color: #666666; font-style: italic;">##Diretório dos arquivos que contem os cenários de testes</span>
       <span style="color: #000000; font-weight: bold;">|</span>-- steps.php
   <span style="color: #000000; font-weight: bold;">|</span>-- support          <span style="color: #666666; font-style: italic;">##Configurações, requires e configs de ambiente</span>
       <span style="color: #000000; font-weight: bold;">|</span>-- bootstrap.php  
       <span style="color: #000000; font-weight: bold;">|</span>-- env.php</pre></div></div>

<p>A definição de um historias e cenários de teste é bem simples.<br />
Utilizando algumas palavras chaves : <b>Feature, Scenario, Given, When, Then, But or And</b><br />
Os cenários são escritos em arquivos .feature que serão interpretados pelo Behat</p>
<p><b>features/contacts.feature</b></p>
<pre>
<b>Feature</b>: Contacts Registration
    In order to demonstrate the framework
    As a SouDev using BDD
    I want to register contacts

  <b>Scenario</b>: Add new contact
    <b>Given</b> a contact named "Fabio B. Silva" using the email "fabio.bat.silva@gmail.com"
      <b>And</b> the phone "xx xxxx-xxxx"
     <b>When</b> press save
     <b>Then</b> everything will be saved
</pre>
<p>Com a historia escrita podemos executar o Behat dentro da aplicação<br />
O Behat vai interpretar os arquivos .feature<br />
e mostrar quais funções vc tem que implementar para poder rodas o teste</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">&nbsp;
$ <span style="color: #7a0874; font-weight: bold;">cd</span> path-to-my-app
$ behat
<span style="color: #000000;">1</span> scenario <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span> undefined<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">4</span> steps <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">4</span> undefined<span style="color: #7a0874; font-weight: bold;">&#41;</span>
0m0.03s
&nbsp;
You can implement step definitions <span style="color: #000000; font-weight: bold;">for</span> undefined steps with these snippets:
&nbsp;
<span style="color: #007800;">$steps</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;Given<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/^a contact named &quot;([^&quot;]*)&quot; using the email &quot;([^&quot;]*)&quot;$/'</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$world</span>, <span style="color: #007800;">$arg1</span>, <span style="color: #007800;">$arg2</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    throw new \Behat\Behat\Exception\Pending<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #007800;">$steps</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;And<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/^the phone &quot;([^&quot;]*)&quot;$/'</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$world</span>, <span style="color: #007800;">$arg1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    throw new \Behat\Behat\Exception\Pending<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #007800;">$steps</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;When<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/^press save$/'</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$world</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    throw new \Behat\Behat\Exception\Pending<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #007800;">$steps</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;Then<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/^everything will be saved$/'</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$world</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    throw new \Behat\Behat\Exception\Pending<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;</pre></div></div>

<p>Essa definição dos steps que o Behat lançou pode ser copiada para um arquivo de steps.php o que facilita bastante a implementação dos teste..<br />
Porem escrever historias em inglês pode ser meio confuso, mais o tem suporte a i18n oq nos permite escrever as historias em português.<br />
para isso basta adicionar # language: pt_BR no inicio do arquivo .feature<br />
com isso ganhamos as palavras chaves em português : <b>Funcionalidade,Cenario, Scenario, Quando, Então, Entao, Dado, Mas, E</b></p>
<p><b>features/contacts.feature</b></p>
<pre>
# language: pt_BR
<b>Funcionalidade</b>: Cadastro de contatos
    Para demostrar o funcionamento do framework
    Como SouDev que usa BDD
    Desejo cadastrar contatos

  <b>Cenario</b>: Adicionar um novo contato
    <b>Dado</b> um usuário chamado "Fabio B. Silva" usando o email "fabio.bat.silva@gmail.com"
      <b>E</b> com o telefone "xx xxxx-xxxx"
     <b>Quando</b> pressionar salvar
     <b>Entao</b> os dados serão salvos
</pre>
<p>E ao executar novamente o Behat a implementação dos teste agora também vem em português :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">&nbsp;
$ <span style="color: #7a0874; font-weight: bold;">cd</span> path-to-my-app
$ behat
<span style="color: #000000;">1</span> scenario <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span> undefined<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">4</span> steps <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">4</span> undefined<span style="color: #7a0874; font-weight: bold;">&#41;</span>
0m0.03s
&nbsp;
You can implement step definitions <span style="color: #000000; font-weight: bold;">for</span> undefined steps with these snippets:
&nbsp;
<span style="color: #007800;">$steps</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;Dado<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/^um usuário chamado &quot;([^&quot;]*)&quot; usando o email &quot;([^&quot;]*)&quot;$/'</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$world</span>, <span style="color: #007800;">$arg1</span>, <span style="color: #007800;">$arg2</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    throw new \Behat\Behat\Exception\Pending<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #007800;">$steps</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;E<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/^com o telefone &quot;([^&quot;]*)&quot;$/'</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$world</span>, <span style="color: #007800;">$arg1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    throw new \Behat\Behat\Exception\Pending<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #007800;">$steps</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;Quando<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/^pressionar salvar$/'</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$world</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    throw new \Behat\Behat\Exception\Pending<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #007800;">$steps</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;Entao<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'/^todos os dados serão salvos$/'</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$world</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    throw new \Behat\Behat\Exception\Pending<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;</pre></div></div>

<p>Com essa definição a implementação dos testes para essa feature pode ser feita<br />
<b>features/contacts_steps.php</b></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">use</span> App\Entities\Contact<span style="color: #339933;">,</span> App\Entities\Phone<span style="color: #339933;">,</span> App\Services\ContactService<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$steps</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>Dado<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^um usuário chamado &quot;([^&quot;]*)&quot; usando o email &quot;([^&quot;]*)&quot;$/'</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$world</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arg1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arg2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$contact</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$contact</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>setName<span style="color: #009900;">&#40;</span><span style="color: #000088;">$arg1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$contact</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>setEmail<span style="color: #009900;">&#40;</span><span style="color: #000088;">$arg2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$world</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>contact <span style="color: #339933;">=</span> <span style="color: #000088;">$contact</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$steps</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>E<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^com o telefone &quot;([^&quot;]*)&quot;$/'</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$world</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arg1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$world</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>contact<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>addPhone<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Phone<span style="color: #009900;">&#40;</span><span style="color: #000088;">$arg1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$steps</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>Quando<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^pressionar salvar$/'</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$world</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$world</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>saveReturn <span style="color: #339933;">=</span> ContactService<span style="color: #339933;">::</span><span style="color: #004000;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$world</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>contact<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$steps</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>Entao<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^todos os dados serão salvos$/'</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$world</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     assertTrue<span style="color: #009900;">&#40;</span><span style="color: #000088;">$world</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>saveReturn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<blockquote>
<p>O BDD e TDD são ferramentas essenciais para um software bem feito,<br />
Infeliz mente muitos &#8220;desenvolvedores&#8221; ainda tem resistência a aderir ao teste e por achar perda de tempo, tedioso, etc..<br />
O fato é que uma suite de testes bem feita vai tornar sua aplicação muito mais estável e vai lhe economizar tempo e cabelos ao longo do projeto. rsrs</p>
<p>Gostei bastante do Behat é um projeto muito bem estruturado e em constante evolução a versão 2.0 esta prestes a sair<br />
Vale apena dar uma conferida na <a href="http://docs.behat.org/en/quick_intro.html">Documentação do Behat</a></p>
<p>E Para quem tiver o interesse deixei a app no git<br />
<a href="https://github.com/FabioBatSilva/bdd-php-behat" target="_blank">https://github.com/FabioBatSilva/bdd-php-behat</a></p>
<p>Abraço e até a próxima…. </p>
</blockquote>
<p><a href="http://www.flexria.com.br/home/?p=815" target="_blank">Click aqui para ver o post Original</a><br />
<img style="width: 94px;height: 94px" src="http://www.flexria.com.br/home/wp-content/uploads/2009/08/Eu-150x150.jpg" alt="Fábio B. Silva" width="80" height="80" /><br />
<a href="http://www.flexria.com.br/home/?page_id=2" target="_blank">Fabio B. Silva</a><br />
<a href="http://www.flexria.com.br/home/" target="_blank">http://www.flexria.com.br</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/php-com-bdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Repositórios Com Spring JPA</title>
		<link>http://www.flexdev.com.br/home/repositorios-com-spring-jpa/</link>
		<comments>http://www.flexdev.com.br/home/repositorios-com-spring-jpa/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 14:26:01 +0000</pubDate>
		<dc:creator>fabio.silva</dc:creator>
				<category><![CDATA[Diversos]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/?p=384</guid>
		<description><![CDATA[TweetOlá. Escrevendo o post Java + MongoDB + Spring Data descobri o Spring Data JPA e fiquei surpreso em descobrir algumas features como a criação de repositórios e consultas dinâmicas. Neste Post vou falar um pouco sobre o Spring Data JPA e como ele pode lhe proporcionar uma maneira rápida e elegante de implementar seus [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/repositorios-com-spring-jpa/&via=flexdevbr&text=Repositórios Com Spring JPA&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Olá.</p>
<p>Escrevendo o post <a href="http://www.flexria.com.br/home/?p=728">Java + MongoDB + Spring Data</a> descobri o <a href="http://www.springsource.org/spring-data/jpa">Spring Data JPA</a><br />
e fiquei surpreso em descobrir algumas features como a criação de repositórios e consultas dinâmicas.<br />
Neste Post vou falar um pouco sobre o Spring Data JPA e como ele pode lhe proporcionar uma maneira rápida e elegante de implementar seus repositórios.</p>
<div>
<img src="http://www.flexria.com.br/home/wp-content/uploads/2011/05/spring.png"></img>
</div>
<p>O Spring Data JPA tem como principal objetivo facilitar a implementação das camadas de acesso a dados.<br />
O Spring fica responsável pela implementação dos repositórios e oferece algumas funcionalidades sofisticadas e comuns na maioria dos CRUDs baseado na entidade que esta sendo gerenciada.</p>
<p>Nessa aplicação vou usar as entidades Contact, Phone, e o repositório ContactRepository.</p>
<p>As entidades são bem simples, é anotadas com o mapeamento de seus atributos e relacionamentos.<br />
<b>Contact.java</b></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
@<span style="color: #003399;">Entity</span>
@Table<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;phones&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Phone <span style="color: #009900;">&#123;</span>
  @Id
  @GeneratedValue<span style="color: #009900;">&#40;</span>strategy <span style="color: #339933;">=</span> GenerationType.<span style="color: #006633;">AUTO</span><span style="color: #009900;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Long</span> id<span style="color: #339933;">;</span>
&nbsp;
  @ManyToOne
  @JoinColumn<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;id_contact&quot;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">private</span> Contact contact<span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//getter and setter methods </span>
  ...
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><b>Phone.java</b></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@<span style="color: #003399;">Entity</span>
@Table<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;contacts&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Contact <span style="color: #009900;">&#123;</span>
&nbsp;
   @Id
   @Column<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;id_contact&quot;</span><span style="color: #009900;">&#41;</span>
   @GeneratedValue<span style="color: #009900;">&#40;</span>strategy <span style="color: #339933;">=</span> GenerationType.<span style="color: #006633;">AUTO</span><span style="color: #009900;">&#41;</span>
   <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Long</span> id<span style="color: #339933;">;</span>
&nbsp;
   @Column<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;name&quot;</span><span style="color: #009900;">&#41;</span>
   <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> name<span style="color: #339933;">;</span>
&nbsp;
   @Column<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;email&quot;</span>,unique<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span>
   <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> email<span style="color: #339933;">;</span>
&nbsp;
   @OneToMany<span style="color: #009900;">&#40;</span>mappedBy<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;contact&quot;</span>,cascade<span style="color: #339933;">=</span>CascadeType.<span style="color: #006633;">ALL</span>, fetch<span style="color: #339933;">=</span>FetchType.<span style="color: #006633;">LAZY</span><span style="color: #009900;">&#41;</span>
   @Fetch<span style="color: #009900;">&#40;</span>FetchMode.<span style="color: #006633;">JOIN</span><span style="color: #009900;">&#41;</span>
   @<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Set</span> phones <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">HashSet</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//getter and setter methods </span>
  ...
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><b>ContactRepository.java</b></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> ContactRepository <span style="color: #000000; font-weight: bold;">extends</span> JpaRepository <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> Contact findByEmail<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Até aqui nada de novo, porem agora como a &#8220;mágica&#8221; do Spring JPA ..rsrs</p>
<p>A interface do repositório estende <b>JpaRepository</b>, essa interface  tem alguns métodos comuns como  findAll, findOne, save, delete, etc&#8230;<br />
Normalmente teríamos que implementar essa interface criando uma classe ContactRepositoryImpl e registra-la como um bean do spring<br />
para que então possamos utilizar o repositório.</p>
<p>Com o Spring JPA não é necessário escrever essa implementação <img src='http://www.flexdev.com.br/home/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ..<br />
Não é magia meus amigos, é tecnologia !!!&#8230;rsrs</p>
<p>O Spring JPA vai procurar por interfaces de repositórios que estendam a interface JpaRepository,<br />
e então criar uma implementação para a interface e registra-la como um bean.</p>
<p>Para isso so é necessário apenas adicionar a tag <b>jpa:repositories</b> no contexto do spring,<br />
com isso o Spring sabe onde procurar os repositórios que ele teve implementar.</p>
<p><b>applicationContext.xml</b></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">&nbsp;
// Declaração dos Beans, TransactionManager, DataSource, etc...
&nbsp;
<span style="color: #ddbb00;">&amp;lt;</span>jpa:repositories base-package=&quot;br.com.flexria.springjpa.repository&quot; /<span style="color: #ddbb00;">&amp;gt;</span></pre></div></div>

<p>Com isso a implementação do repositório já esta pronta para ser injetada é utilizada na aplicação.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
@Autowired
ContactRepository repository<span style="color: #339933;">;</span>
&nbsp;
repository.<span style="color: #006633;">save</span><span style="color: #009900;">&#40;</span>contact<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
repository.<span style="color: #006633;">delete</span><span style="color: #009900;">&#40;</span>contact<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">List</span> list <span style="color: #339933;">=</span> contactRepository.<span style="color: #006633;">findAll</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Isso por si so ja é algo incrível so que o Spring Data JPA vai alem.</p>
<p>Algo que ja é comum no Rails, são os Dynamic attribute-based finders que é a possibilidade de realizar buscas dinâmica baseadas nos atributos do objeto<br />
Em rails temos :</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">//</span><span style="color:#996600;">&quot;SQL : SELECT * FROM contacts WHERE email = 'fabio.bat.silva@gmail.com'&quot;</span>
&nbsp;
Contact.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:email</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt;<span style="color:#996600;">&quot;fabio.bat.silva@gmail.com&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#006600; font-weight:bold;">//</span>Usando Dynamic attribute<span style="color:#006600; font-weight:bold;">-</span>based finders
Contact.<span style="color:#9900CC;">find_by_email</span> <span style="color:#996600;">&quot;fabio.bat.silva@gmail.com&quot;</span></pre></div></div>

<p>É exatamente isso que o Spring Data JPA faz,<br />
além de implementar do repositório com ele é possível utilizar buscas dinâmica baseadas nos atributos do objeto.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">   <span style="color: #666666; font-style: italic;">// HQL : select c from Contact c where c.email = ?1</span>
    <span style="color: #000000; font-weight: bold;">public</span> Contact findByEmail<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #666666; font-style: italic;">// HQL : select c from Contact c where c.name like ?1</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">List</span> findBynameLike<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Com base em algumas palavras chaves varias consultas podem ser feitas :</p>
<table border="1">
<thead>
<tr>
<th>Keyword</th>
<th>Sample</th>
<th>JPQL snippet</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>And</code>
			</td>
<td><code>findByLastnameAndFirstname</code>
			</td>
<td><code>… where x.lastname = ?1 and<br />
					x.firstname = ?2</code>
			</td>
</tr>
<tr>
<td><code>Or</code>
			</td>
<td><code>findByLastnameOrFirstname</code>
			</td>
<td><code>… where x.lastname = ?1 or<br />
					x.firstname = ?2</code>
			</td>
</tr>
<tr>
<td><code>Between</code>
			</td>
<td><code>findByStartDateBetween</code>
			</td>
<td><code>… where x.startDate between 1? and<br />
					?2</code>
			</td>
</tr>
<tr>
<td><code>LessThan</code>
			</td>
<td><code>findByAgeLessThan</code>
			</td>
<td><code>… where x.age &lt; ?1</code>
			</td>
</tr>
<tr>
<td><code>GreaterThan</code>
			</td>
<td><code>findByAgeGreaterThan</code>
			</td>
<td><code>… where x.age &gt; ?1</code>
			</td>
</tr>
<tr>
<td><code>IsNull</code>
			</td>
<td><code>findByAgeIsNull</code>
			</td>
<td><code>… where x.age is null</code>
			</td>
</tr>
<tr>
<td><code>IsNotNull,NotNull</code>
			</td>
<td><code>findByAge(Is)NotNull</code>
			</td>
<td><code>… where x.age not null</code>
			</td>
</tr>
<tr>
<td><code>Like</code>
			</td>
<td><code>findByFirstnameLike</code>
			</td>
<td><code>… where x.firstname like ?1</code>
			</td>
</tr>
<tr>
<td><code>NotLike</code>
			</td>
<td><code>findByFirstnameNotLike</code>
			</td>
<td><code>… where x.firstname not like ?1</code>
			</td>
</tr>
<tr>
<td><code>OrderBy</code>
			</td>
<td><code>findByAgeOrderByLastnameDesc</code>
			</td>
<td><code>… where x.age = ?1 order by<br />
					x.lastname desc</code>
			</td>
</tr>
<tr>
<td><code>Not</code>
			</td>
<td><code>findByLastnameNot</code>
			</td>
<td><code>… where x.lastname &lt;&gt; ?1</code>
			</td>
</tr>
</tbody>
</table>
<blockquote>
<p>Repositórios dinâmicos, consultas dinâmicas, Buscas baseadas em NamedQuery ou anotações, etc..<br />
com certeza tem muita coisa a ser explorada no Spring Data JPA, me surpreendi com a facilidade e agilidade.</p>
<p>Vale apena dar uma conferida na <a href="http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/">documentação do Spring Data JPA</a></p>
<p>E Para quem tiver o interesse deixei a app no git<br />
<a href="https://github.com/FabioBatSilva/spring-data-jpa" target="_blank">https://github.com/FabioBatSilva/spring-data-jpa</a></p>
<p>Abraço e até a próxima…. </p>
</blockquote>
<p><a href="http://www.flexria.com.br/home/?p=771" target="_blank">Click aqui para ver o post Original</a><br />
<img style="width: 94px;height: 94px" src="http://www.flexria.com.br/home/wp-content/uploads/2009/08/Eu-150x150.jpg" alt="Fábio B. Silva" width="80" height="80" /><br />
<a href="http://www.flexria.com.br/home/?page_id=2" target="_blank">Fabio B. Silva</a><br />
<a href="http://www.flexria.com.br/home/" target="_blank">http://www.flexria.com.br</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/repositorios-com-spring-jpa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java + MongoDB + Spring Data</title>
		<link>http://www.flexdev.com.br/home/java-mongodb-spring-data/</link>
		<comments>http://www.flexdev.com.br/home/java-mongodb-spring-data/#comments</comments>
		<pubDate>Tue, 31 May 2011 14:12:04 +0000</pubDate>
		<dc:creator>fabio.silva</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/?p=371</guid>
		<description><![CDATA[TweetOlá. A alguns dias escrevi um post sobre PHP + MongoDB e recebi um feedback muito positivo então resolvi repetir a dose e mostrar um pouco da integração entre Java e MongoDB. Na minha opinião essa é uma das principais vantagens do MongoDB em relação a outros bancos de dados NoSQL, O MongoDB e extremamente [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/java-mongodb-spring-data/&via=flexdevbr&text=Java + MongoDB + Spring Data&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Olá.</p>
<p>A alguns dias escrevi um post sobre <a href="http://www.flexria.com.br/home/?p=556">PHP + MongoDB</a> e recebi um feedback muito positivo<br />
então resolvi repetir a dose e mostrar um pouco da integração entre Java e MongoDB.</p>
<p>Na minha opinião essa é uma das principais vantagens do  MongoDB em relação a outros bancos de dados NoSQL,<br />
O MongoDB e extremamente fácil de se integrar com a maioria das linguagens. </p>
<div>
<img src="http://www.flexria.com.br/home/wp-content/uploads/2011/04/logo-mongoDB.png"><img src="http://www.flexria.com.br/home/wp-content/uploads/2011/05/spring.png"></img>
</div>
<p>Neste Post vou falar um pouco sobre o MongoDB e a integração com o java utilizando o Spring Data.<br />
O MongoDB fornece o mongo-java-driver que atualmente esta na versão 2.6.X é uma API completa para acessar o MongoDB.<br />
O Spring Data é um projeto recente, lançado em 2010, ele oferecer suporte a novas tecnologias não relacionais, suporte a extensões específicas a bancos de dados relacionais. Spring Data trabalha como uma camada intermediária entre seus POJOs e o MongoDB.</p>
<p>Nesse exemplo estou usando o maven para gerencias as dependências do projeto<br />
Então alem das dependências habituais do projeto: Spring, JUnit e etc.. vamos precisar adiciona ao pow.xml as dependências do MongoDB e Spring Data</p>
<p><b>pow.xml</b><br />
<a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/pow.png"><img src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/pow.png" alt="" /></a></p>
<p>Feito isso as dependências do projeto estão configuradas e podemos partir para a configuração do spring.<br />
A configuração é bem simples, nesse exemplo existem apenas 2 beans que configuram o MongoDB e Spring Data <b>mongoTemplate</b> e <b>mongo</b></p>
<p><b>applicationContext.xml</b><br />
<a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/app-context.png"><img src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/app-context.png" alt="" /></a></p>
<p>O Spring Data oferece uma serie de anotações que permitem mapear o POJO de forma bem similar ao Hibernate/JPA<br />
<b>Contact.java</b></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
@<span style="color: #003399;">Document</span><span style="color: #009900;">&#40;</span>collection<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;contacts&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Contact <span style="color: #009900;">&#123;</span>
    @Id
    <span style="color: #000000; font-weight: bold;">private</span> ObjectId id<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> name<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> email<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//getter and setter methods </span>
  ...
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>E é através do <b>mongoTemplate</b> que vamos interagir com o MongoDB por exemplo :</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
@Autowired
MongoTemplate template<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// insere um novo registro		</span>
template.<span style="color: #006633;">insert</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;contacts&quot;</span>, contact<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// insere/altera um registro</span>
template.<span style="color: #006633;">save</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;contacts&quot;</span>, contact<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// remove um registro</span>
template.<span style="color: #006633;">remove</span><span style="color: #009900;">&#40;</span>contact<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// lista todos os registros</span>
<span style="color: #003399;">List</span> list <span style="color: #339933;">=</span> template.<span style="color: #006633;">getCollection</span><span style="color: #009900;">&#40;</span>collectionName, Contact.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Apesar do Spring Data suportar o JPA repository fiz uma implementação genérica para um repositório usando o Spring Data.</p>
<p><strong>GenericRepositoryWithMongo.java</strong> &#8211; Repositório genérico</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">abstract</span> <span style="color: #000000; font-weight: bold;">class</span> GenericRepositoryWithMongo <span style="color: #009900;">&#123;</span>
&nbsp;
  @Autowired
  <span style="color: #000000; font-weight: bold;">protected</span> MongoTemplate template<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000000; font-weight: bold;">Class</span> targetClass<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #003399;">String</span> collectionName<span style="color: #339933;">;</span>
&nbsp;
  @SuppressWarnings<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;unchecked&quot;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">public</span> GenericRepositoryWithMongo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">targetClass</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">Class</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>ParameterizedType<span style="color: #009900;">&#41;</span> getClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getGenericSuperclass</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getActualTypeArguments</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  @PostConstruct
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> initCollection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">targetClass</span>.<span style="color: #006633;">isAnnotationPresent</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Document</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">Document</span> document   <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">targetClass</span>.<span style="color: #006633;">getAnnotation</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Document</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">collectionName</span> <span style="color: #339933;">=</span> document.<span style="color: #006633;">collection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">collectionName</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">targetClass</span>.<span style="color: #006633;">getSimpleName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toLowerCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">List</span> getCollection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> template.<span style="color: #006633;">getCollection</span><span style="color: #009900;">&#40;</span>collectionName, targetClass<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> persist<span style="color: #009900;">&#40;</span>T entity<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    template.<span style="color: #006633;">insert</span><span style="color: #009900;">&#40;</span>collectionName, entity<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> merge<span style="color: #009900;">&#40;</span>T entity<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    template.<span style="color: #006633;">save</span><span style="color: #009900;">&#40;</span>collectionName, entity<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> remove<span style="color: #009900;">&#40;</span>T entity<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    template.<span style="color: #006633;">remove</span><span style="color: #009900;">&#40;</span>entity<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">List</span> findAll<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> getCollection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">long</span> count<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> getCollection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>E então a interface do repositório e sua implementação</p>
<p><strong>ContactRepository.java</strong> &#8211; Repositório de contatos</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> ContactRepository <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> Contact findByEmail<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> persist<span style="color: #009900;">&#40;</span>Contact entity<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> merge<span style="color: #009900;">&#40;</span>Contact entity<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> remove<span style="color: #009900;">&#40;</span>Contact entity<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">List</span> findAll<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>ContactRepositoryImpl.java</strong> &#8211; Implementação do repositório de contatos</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@Service<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;contactRepository&quot;</span><span style="color: #009900;">&#41;</span>
@<span style="color: #003399;">Repository</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ContactRepositoryImpl <span style="color: #000000; font-weight: bold;">extends</span> GenericRepositoryWithMongo <span style="color: #000000; font-weight: bold;">implements</span> ContactRepository<span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> Contact findByEmail<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	   Criteria criteria	 <span style="color: #339933;">=</span> Criteria.<span style="color: #006633;">where</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;email&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">is</span><span style="color: #009900;">&#40;</span>email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   Query query 	         <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Query<span style="color: #009900;">&#40;</span>criteria<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   <span style="color: #000000; font-weight: bold;">return</span> template.<span style="color: #006633;">findOne</span><span style="color: #009900;">&#40;</span>query, targetClass<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	
<span style="color: #009900;">&#125;</span></pre></div></div>

<blockquote>
<p>Realmente me surpreendi com a facilidade da integração usando o Spring Data<br />
é um exemplo bem simples da integração porem mais da o caminho das pedras para quem esta se aventurando no mundo NoSQL.<br />
Espero que seja util..</p>
<p>Para quem tiver o interesse deixei app no git<br />
<a href="https://github.com/FabioBatSilva/spring-mongodb" target="_blank">https://github.com/FabioBatSilva/spring-mongodb</a></p>
<p>Abraço e até a próxima…. </p>
</blockquote>
<p><a href="http://www.flexria.com.br/home/?p=728" target="_blank">Click aqui para ver o post Original</a><br />
<img style="width: 94px;height: 94px" src="http://www.flexria.com.br/home/wp-content/uploads/2009/08/Eu-150x150.jpg" alt="Fábio B. Silva" width="80" height="80" /><br />
<a href="http://www.flexria.com.br/home/?page_id=2" target="_blank">Fabio B. Silva</a><br />
<a href="http://www.flexria.com.br/home/" target="_blank">http://www.flexria.com.br</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/java-mongodb-spring-data/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criando Mockups com o Microsoft SketchFlow</title>
		<link>http://www.flexdev.com.br/home/criando-mockups-com-o-microsoft-sketchflow/</link>
		<comments>http://www.flexdev.com.br/home/criando-mockups-com-o-microsoft-sketchflow/#comments</comments>
		<pubDate>Fri, 27 May 2011 21:27:08 +0000</pubDate>
		<dc:creator>rodrigo</dc:creator>
				<category><![CDATA[Diversos]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/criando-mockups-com-o-microsoft-sketchflow/</guid>
		<description><![CDATA[TweetMock-up é uma maquete ou um modelo em tamanho real de um projeto. Utilizado para o ensino, demonstração, avaliação de concepção e outras finalidades. Um Mock-up é um protótipo e mostra pelo menos alguma funcionalidade que o projeto real visa ter. O SketchFlow é um recurso da família Microsot Expression Studio Ultimate, que lhe da [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/criando-mockups-com-o-microsoft-sketchflow/&via=flexdevbr&text=Criando Mockups com o Microsoft SketchFlow&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><strong>Mock-up</strong> é uma maquete ou um modelo em tamanho real de um projeto. Utilizado para o ensino, demonstração, avaliação de concepção e outras finalidades. Um <strong>Mock-up</strong> é um protótipo e mostra pelo menos alguma funcionalidade que o projeto real visa ter.</p>
<p>O <strong>SketchFlow</strong> é um recurso da família <strong>Microsot Expression Studio Ultimate</strong>, que lhe da a capacidade, rapidez e eficácia de mapear o fluxo de uma aplicação de interface com o usuário através de layout de telas permitindo a transição de um estado para outro. Esta habilidade permite explorar e testar várias idéias sem investir grandes quantidades de tempo, mostrando ao seus clientes que você é capaz de encontrar a solução certa para eles.</p>
<p>Com o <strong>SketchFlow </strong>os clientes podem testar diversos cenários e fornecer um feedback para a equipe de desenvolvimento, através de comentários, anotando a sua experiência enquanto navegam pelo protótipo.</p>
<p><strong>Então vamos começar!!!</strong></p>
<p>Um cliente te ligou solicitando a criação de uma tela para a consulta de pedidos de compra feitos no dia que deve mostrar o número de vendas/hora por vendedor. Você logo imaginou o que o cliente queria e iniciou o desenvolvimento do protótipo de tela.</p>
<p>Para isso inicie o <strong>Microsoft Expression Blend 4 + Skecth Flow </strong>e na guia <strong>Projects</strong> escolha <strong>New Project, </strong>e então na tela <strong>New Project</strong> escolha <strong>Silverlight SketchFlow Application </strong>e nomeie o protótipo com o&#160; seguinte nome <strong>PurchaseRequestSample</strong> então click em <strong>OK</strong>, conforme a figura 1 logo abaixo.</p>
<p><strong>Figura 1 – Criando o projeto para o protótipo da tela.</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image1.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb1.png" width="582" height="534" /></a></p>
<p>Na barra de ferramentas do blend clique em <strong>Assets</strong> (recursos) e então na árvore selecione <strong>SketchFlow –&gt; Styles –&gt; SketchStyles </strong>clique no controle <strong>TitleLeft-Sketch</strong> e então desenhe no topo da página. Com um duplo clique no controle você poderá editar o texto ou então utlizar a barra de propriedades no grupo <strong>Common Properties</strong> propriedade <strong>Text</strong>.</p>
<p><strong>Figura 2 – Selecionando o controle.</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image2.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb2.png" width="600" height="449" /></a></p>
<p><strong>Figura 3 – Controle desenhado no topo da página.</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image3.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb3.png" width="600" height="210" /></a></p>
<p><strong>Figura 4 – Barra de propriedades.</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image4.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb4.png" width="340" height="574" /></a></p>
<p>Existem algumas coisas importantes que você precisa saber ao utilizar o <strong>Expression Blend.</strong></p>
<table border="0" cellspacing="0" cellpadding="2" width="597">
<tbody>
<tr>
<td valign="top" width="39"><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image5.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb5.png" width="42" height="460" /></a>&#160;</td>
<td valign="top" width="556">
<table border="0" cellspacing="0" cellpadding="2" width="509">
<tbody>
<tr>
<td valign="top" width="31"><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image6.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb6.png" width="34" height="38" /></a></td>
<td valign="top" width="476">Utilize essa seta, quando você quiser redimensionar os controles.<br />
<table border="0" cellspacing="0" cellpadding="2" width="407">
<tbody>
<tr>
<td valign="top" width="405">Quando o controle estiver selecionado ele ficará de forma parecida como o da imagem abaixo, mostrando as áreas em que você pode manipular o mouse para redimensionar o controle.<a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image7.png">                            <br /><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb7.png" width="396" height="305" /></a>                           <br />Podemos também manipular as âncoras do controle.                           <br />Quando a âncora está habilitada ela fica dessa forma&#160; <a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image8.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb8.png" width="39" height="39" /></a> e quando desabilitada dessa <a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image9.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb9.png" width="27" height="30" /></a>.                           </p>
<p>Quando habilitada; a medida em que a página for redimensionada o controle também será. Isso depende das configurações de âncora que você definiu, nesse caso o controle é redimensionado quando todas as âncoras estão habilitadas.                           </p>
<p>Para habilitar ou desabilitar as âncoras basta dar um clique em cima dela.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top" width="31"><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image10.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb10.png" width="44" height="43" /></a></td>
<td valign="top" width="476">Utilize essa seta, quando você quiser mover os controles.</td>
</tr>
<tr>
<td valign="top" width="31"><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image11.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb11.png" width="39" height="41" /></a></td>
<td valign="top" width="476">Utilize a “Mãozinha” para mover a página dentro do <strong>Expression Blend </strong>sem desorganizar os controles.</td>
</tr>
<tr>
<td valign="top" width="31"><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image12.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb12.png" width="37" height="39" /></a></td>
<td valign="top" width="476">Utilize a Lupa para aumentar o zoom da página. Mantenha a tecla <strong>ALT</strong> pressionada enquanto clica para reduzir o zoom.</td>
</tr>
<tr>
<td valign="top" width="31"><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image13.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb13.png" width="39" height="40" /></a></td>
<td valign="top" width="476">Utilize para inserir textos na página. BasicTextBlock-Sketch para Labels e BasicTextBox-Sketch para caixas de texto.                  </p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image14.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb14.png" width="219" height="123" /></a></td>
</tr>
<tr>
<td valign="top" width="31"><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image15.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb15.png" width="40" height="40" /></a></td>
<td valign="top" width="476">Utilize para inserir controles de usuário como botões, caixas de seleção, etc…                  </p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image16.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb16.png" width="197" height="244" /></a>                   </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Agora, vamos criar um subtítulo para a tela, para isso em <strong>Assets –&gt; Sketch Styles </strong>selecione <strong>SubtitleLeft-Sketch</strong> e adicione o controle logo abaixo do título,&#160; então altere o texto para “Vendas hora por vendedor”. Você pode encontrar os controles facilmente fazendo buscas conforme a figura 5.</p>
<p><strong>Figura 5 – Localizando os controles mais facilmente.</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image17.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb17.png" width="600" height="165" /></a></p>
<p>Mude o tamanho da fonte do controle para 14, através da barra de propriedades conforme a figura&#160; 6.</p>
<p><strong>Figura 6 – Mudando o tamanho da fonte</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image18.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb18.png" width="442" height="415" /></a></p>
<p>Agora vamos inserir um retangulo abaixo do subtítulo para simular uma caixa de listagem, para isso pesquise em <strong>Assets </strong>por rect para localizar o controle <strong>Rectangle-Sketch. </strong></p>
<p>A sua página deverá ficar como a figura 7 ao executar o protótipo. Para executar o protótipo pressione a tecla F5 ou vá para o menu <strong>Project </strong>e clique na opção<strong> Run Project </strong>.</p>
<p><strong>Figura 7 – Página esperada até o momento.</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image19.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb19.png" width="600" height="332" /></a></p>
<p>Em algum momento teremos de redimensionar a página que está sendo criada. Uma coisa que você precisa saber é que toda a página ou <strong>UserControl</strong> criado pelo <strong>Expression Blend</strong> por padrão tem um controle <strong>Grid</strong> nomeado de <strong>LayoutRoot </strong>é nele que adicionamos os nossos controles. Através da barra de ferramentas<strong> Objects and Timeline </strong>podemos observar como os nosso controles estão organizados. Veja a figura 8.</p>
<p><strong>Figura 8 – Objects and Timeline</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image20.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb20.png" width="408" height="498" /></a></p>
<p>Todos os controles que estão no UserControl podem ser observados através dessa barra de ferramenta. Cada controle possui um símbolo de um olho <a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image21.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb21.png" width="26" height="25" /></a>, clique nele para ocultar ou mostrar os controles que estão na página. Você também pode travar os controles evitando que eles se movam acidentalmente, para isso clique ao lado do símbolo do olho para habilitar o cadeado.</p>
<p><strong>Figura 9 – TextBlock Travado.</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image22.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb22.png" width="335" height="34" /></a></p>
<p>&#160;</p>
<p>O controle <strong>Grid</strong> “LayoutRoot” é redimensionado junto com a página, pois todas as suas âncoras estão habilitadas por padrão. Como queremos aumentar a página devemos clicar em <strong>UserControl</strong> na barra <strong>Objects and Timeline </strong>e então clicar na seta de redimensionamento <a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image23.png"><img style="border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb23.png" width="36" height="39" /></a> e redimensionar a página conforme o desejado. </p>
<p>Quando estamos redimensionando a página podemos notar que os controles acompanham o redimensionamento do controle pai. Caso você não queira que eles acompanhem desabilite as âncoras.</p>
<p>Agora vamos inserir alguns retângulos dentro do rentâgulo criado anteriormente e dentro de cada retângulo adicione um controle <strong>BasicTextBlock-Sketch </strong>com o nome do vendedor.</p>
<p><strong>Figura 10 – Selecionando o controle <strong>BasicTextBlock-Sketch </strong></strong></p>
<p><strong><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image24.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb24.png" width="215" height="121" /></a></strong></p>
<p>Deixe o nome dos vendedores em negrito selecionando <strong>B</strong> “Bold” através da barra de propriedades no grupo <strong>Text.</strong></p>
<p><strong>Figura 11</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image25.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb25.png" width="401" height="138" /></a></p>
<p>&#160;</p>
<p>A página deverá ficar conforme a figura 12.</p>
<p><strong>Figura 12</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image26.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb26.png" width="600" height="431" /></a></p>
<p>Vamos redimensionar a página e adicionar mais controles até que ela fique da seguinte forma.</p>
<p><strong>Figura 13</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image27.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb27.png" width="600" height="323" /></a></p>
<p>As setas do lado direito foram desenhas através dos controles<strong> Block Arrow Down Sketch</strong> e <strong>Block Arrow Up Sketch, </strong>elas foram redimensionadas até que ficassem dessa forma. </p>
<p>As cores dos retângulos foram aplicadas através do grupo <strong>Brushes </strong>da barra de propriedades, selecionando <strong>Background</strong> e aplicando a cor desejada.</p>
<p><strong>Figura 14</strong></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image28.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb28.png" width="356" height="402" /></a></p>
<p>Nesse post conhecemos o <strong>SketchFlow</strong> e aprendemos diversos detalhes do <strong>Expression Blend. </strong>Aprendemos como adicionar controles a página, redimensioná-los e alterar suas propriedades. </p>
<p>No próximo post adicionaremos fluxos de navegação a esse protótipo, e será demonstrado como o cliente pode fornecer um feedback para a equipe de desenvolvimento.</p>
<p>Veja o protótipo desse post clicando <a href="http://flexdev.com.br/rodrigo/purchaserequestsample/">aqui</a> ou um mais completo <a href="http://flexdev.com.br/rodrigo/clinicaleditor/">aqui</a>. </p>
<p>Continue acompanhando novidades através do blog da <strong>FlexDev </strong>e do meu <a href="http://rodrigobrito.wordpress.com/">blog</a> no wordpress, até o próximo artigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/criando-mockups-com-o-microsoft-sketchflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Esferas 3D no Photoshop</title>
		<link>http://www.flexdev.com.br/home/esferas-3d-no-photoshop-2/</link>
		<comments>http://www.flexdev.com.br/home/esferas-3d-no-photoshop-2/#comments</comments>
		<pubDate>Thu, 19 May 2011 16:29:41 +0000</pubDate>
		<dc:creator>Katriny</dc:creator>
				<category><![CDATA[Diversos]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/?p=298</guid>
		<description><![CDATA[TweetOlá meu nome é Katriny e hoje iremos aprender como se fazer uma esfera 3D no Photoshop CS5 Para começarmos, abra seu photoshop e pressiona as teclas: Ctrl + N para criarmos uma novo documento Mude as propriedades conforme a imagem mostrada e clique em “Ok”. 1º Passo: Pressione as teclas: Ctrl+Shift+Alt+N e escolha a opção [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/esferas-3d-no-photoshop-2/&via=flexdevbr&text=Esferas 3D no Photoshop&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Olá meu nome é <a href="http://www.tecnoria.com.br" target="_blank">Katriny</a> e hoje iremos aprender como se fazer uma esfera 3D no Photoshop CS5</p>
<p>Para começarmos, abra seu photoshop e pressiona as teclas: Ctrl + N para criarmos uma novo documento</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/image_thumb.png" border="0" alt="image" width="462" height="348" /></a></p>
<p>Mude as propriedades conforme a imagem mostrada e clique em “Ok”.</p>
<p>1º Passo: Pressione as teclas: Ctrl+Shift+Alt+N e escolha a opção cor, conforme a imagem indica:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto2.jpg"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto2_thumb.jpg" border="0" alt="foto2" width="562" height="162" /></a></p>
<p>Clique sobre a opção: Set the text color e mude a cor para #000cff, dessa forma:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto3.jpg"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto3_thumb.jpg" border="0" alt="foto3" width="427" height="293" /></a></p>
<p>2º Passo: Pressione a tecla G de seu teclado e clique na opção: Gradiente Tool e selecione Paint Bucket Tool, depois clique sobre o documento, assim preenchemos com a cor que selecionamos.</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto4.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto4_thumb.png" border="0" alt="foto4" width="284" height="358" /></a></p>
<p>3º Passo: Pressionamos novamente as teclas: Ctrl+Shift+Alt+N para criamos uma nova Layer.</p>
<p>4º Passo: Pressione a tecla M do seu teclado e escolhendo a opção: Rectangular Marquee Tool</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto5.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto5_thumb.png" border="0" alt="foto5" width="285" height="279" /></a></p>
<p>5º Passo: Na barra de ferramentas clique no icone: Add to Selection</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto6.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto6_thumb.png" border="0" alt="foto6" width="374" height="188" /></a></p>
<p>6º Passo: Crie três seleções</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto7.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto7_thumb.png" border="0" alt="foto7" width="430" height="251" /></a></p>
<p>7º Passo: Na barra de ferramentas, clique na opção: Edit –&gt; Fill, e mude para as propriedades conforme a imagem e clique em “Ok”</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto8.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto8_thumb.png" border="0" alt="foto8" width="320" height="253" /></a></p>
<p>8º Passo: Pressione a tecla Shift e clique sobre o segundo Layer</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto9.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto9_thumb.png" border="0" alt="foto9" width="203" height="267" /></a></p>
<p>9º Passo: Na barra de ferramentas clique na opção: 3D – New Shape From Layer – Sphere</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto10.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto10_thumb.png" border="0" alt="foto10" width="297" height="234" /></a></p>
<p>No final você terá em sua tela do photoshop essa imagem:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto11.png"><img style="border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/foto11_thumb.png" border="0" alt="foto11" width="392" height="223" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/esferas-3d-no-photoshop-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Colocar um Efeito de Vidro no texto &#8211; Adobe Fireworks</title>
		<link>http://www.flexdev.com.br/home/colocar-um-efeito-de-vidro-no-texto-adobe-fireworks/</link>
		<comments>http://www.flexdev.com.br/home/colocar-um-efeito-de-vidro-no-texto-adobe-fireworks/#comments</comments>
		<pubDate>Thu, 19 May 2011 12:45:50 +0000</pubDate>
		<dc:creator>Andre</dc:creator>
				<category><![CDATA[Diversos]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/?p=294</guid>
		<description><![CDATA[TweetOlá, meu nome é André Almeida e hoje vou mostrar como colocar um efeito bem bacana em um texto, pra você que queira, por exemplo, dar um novo “ar” no logo da empresa, ou em um topo de um site. Trata-se de inserir um reflexo na imagem, dando a impressão de algo como se fosse [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/colocar-um-efeito-de-vidro-no-texto-adobe-fireworks/&via=flexdevbr&text=Colocar um Efeito de Vidro no texto &ndash; Adobe Fireworks&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Olá, meu nome é <a href="http://www.tecnoria.com.br" target="_blank">André Almeida</a> e hoje vou mostrar como colocar um efeito bem bacana em um texto, pra você que queira, por exemplo, dar um novo “ar” no logo da empresa, ou em um topo de um site. Trata-se de inserir um reflexo na imagem, dando a impressão de algo como se fosse vidro ou algo parecido.</p>
<p>Com o Adobe Fireworks aberto, vamos criar um <em>New Document</em>, com as dimensões de 500&#215;500 pixels e um fundo transparente:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/01.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/01_thumb.png" border="0" alt="Criando Novo Documento" width="431" height="351" /></a></p>
<p>&nbsp;</p>
<p>Agora, insira um texto que você queira aplicar o efeito, no exemplo, coloquei “FlexDev”.</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/02.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/02_thumb.png" border="0" alt="02" width="244" height="96" /></a></p>
<p>&nbsp;</p>
<p>Selecione a camada do texto, copie e cole (Ctrl+C / Ctrl+V, ou segure Alt e arraste a imagem) para termos 2 palavras para trabalhar:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/03.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/03_thumb.png" border="0" alt="Fazendo uma cópia" width="312" height="250" /></a></p>
<p>&nbsp;</p>
<p><strong>Atenção que agora só iremos trabalhar com a ‘cópia’.</strong> Selecione o texto e vá no menu <em>Text –&gt; Convert to Paths</em>, ou Ctrl+Shift+P. Em seguida, vá na opção <em>Modify –&gt; Ungroup</em> (ou Ctrl+Shift+G), para desagrupar o texto:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/05.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/05_thumb.png" border="0" alt="05" width="244" height="84" /></a></p>
<p>&nbsp;</p>
<p>Vamos aplicar o efeito, para isso, com as letras selecionadas, mudaremos o <em>fill</em> para <em>Gradient –&gt; Linear:</em></p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/04.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/04_thumb.png" border="0" alt="Aplicando Gradient" width="387" height="297" /></a></p>
<p>Clicamos na caixa de cores ao lado do baldinho, e alteramos as cores do <strong>branco</strong> para o <strong>branco</strong>:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/06.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/06_thumb.png" border="0" alt="Do branco para o branco" width="438" height="336" /></a></p>
<p><span style="text-decoration: underline"> </span></p>
<p>No mesmo lugar, mudaremos a opacidade do branco da direita para <strong>0</strong>:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/07.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/07_thumb.png" border="0" alt="Mudando a opacidade para 0" width="371" height="291" /></a></p>
<p>Com a <em>Pen Tool</em> (tecla de atalho: ‘<strong>P’</strong>), vamos criar uma forma parecida como da imagem abaixo:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/08.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/08_thumb.png" border="0" alt="Utilizando a ferramenta Pen Tool" width="328" height="136" /></a></p>
<p>&nbsp;</p>
<p>Com o texto e o objeto que acabamos de criar selecionados, vamos em <em>Modify –&gt; Combine Paths –&gt; Punch</em>:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/09.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/09_thumb.png" border="0" alt="Punch" width="493" height="403" /></a></p>
<p>&nbsp;</p>
<p>E finalmente, arrastamos o nosso efeito e colocamos sobre o texto original, ficando assim:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/10.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://www.flexdev.com.br/home/wp-content/uploads/2011/05/10_thumb.png" border="0" alt="Resultado final" width="244" height="75" /></a></p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/colocar-um-efeito-de-vidro-no-texto-adobe-fireworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Falando de Desempenho</title>
		<link>http://www.flexdev.com.br/home/falando-de-desempenho/</link>
		<comments>http://www.flexdev.com.br/home/falando-de-desempenho/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 13:46:24 +0000</pubDate>
		<dc:creator>rodrigo</dc:creator>
				<category><![CDATA[livros]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Fowler]]></category>
		<category><![CDATA[PoEAA]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/falando-de-desempenho/</guid>
		<description><![CDATA[TweetEsses dias lendo o livro do Fowler (PoEAA), ele comenta um pouco sobre desempenho e como muitos dos termos de desempenho são usados de forma inconsistente. Para melhorar a comunicação de equipes de desenvolvimento de software resolvi publicar alguns termos e seus respectivos significados. Tempo de Resposta É a quantidade de tempo que o sistema [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/falando-de-desempenho/&via=flexdevbr&text=Falando de Desempenho&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Esses dias lendo o livro do Fowler (PoEAA), ele comenta um pouco sobre desempenho e como muitos dos termos de desempenho são usados de forma inconsistente. Para melhorar a comunicação de equipes de desenvolvimento de software resolvi publicar alguns termos e seus respectivos significados.</p>
<ol>
<li><b>Tempo de Resposta</b><br />
<blockquote>
<p>É a quantidade de tempo que o sistema leva para processar uma solicitação externa. Pode ser uma ação na interface com o usuário, como o pressionamento de um botão, ou uma chamada de API do servidor.</p>
</blockquote>
</li>
<li><b>Agilidade de Resposta</b><br />
<blockquote>
<p>A agilidade de resposta diz respeito ao quão rapidamente o sistema reconhece uma solicitação (em oposição ao tempo que leva para processá-la). Isso é importante em muitos sistemas porque os usuários podem ficar frustrados se um sistema demorar para responder a uma solicitação, ainda que seu tempo de resposta seja bom. Se o seu sistema esperar durante toda uma solicitação, então sua agilidade de resposta e o seu tempo de resposta são os mesmos. Entretanto se você indicar que recebeu a solicitação antes de completá-la, então sua agilidade de resposta é melhor.</p>
</blockquote>
</li>
<li><b>Latência</b><br />
<blockquote>
<p>É o tempo mínimo requerido para obter qualquer forma de resposta, mesmo se não houver nenhum trabalho a fazer. Se eu pedir a um programa para não fazer nada, então devo receber uma resposta quase instantânea se o programa rodar na minha máquina local. Entretanto, se o programa rodar em um computador remoto, pode demorar alguns segundos devido ao tempo gasto para que a solicitação e a resposta cheguem a seu destino através da conexão. Como desenvolvedor de aplicações, geralmente, nada posso fazer para melhorar a latência. A latência é o motivo pelo qual devemos minimizar chamadas remotas.</p>
</blockquote>
</li>
<li><b>Throughput</b><br />
<blockquote>
<p>É a quantidade de coisas que você pode fazer em uma dada quantidade de tempo. Se você estiver contabilizando o tempo gasto na cópia de um arquivo, o throughput poderia ser medido em bytes por segundo. Para aplicações corporativas, ume medida típica é o número de transações por segundo (tps), mas o problema é que isso depende da complexidade da sua transação.</p>
<p>Nesta terminologia, <b>desempenho </b>pode significar tanto throughput quanto tempo de resposta – o que for mais importante para você. Às vezes, pode ser difícil falar sobre desempenho quando uma técnica melhora o throughput, mas piora o tempo de resposta. Assim é melhor usar o termo mais preciso. Da perspectiva de um usuário a agilidade de resposta em detrimento do tempo de resposta ou do throughput aumentará o desempenho.</p>
</blockquote>
</li>
<li><b>Carga</b><br />
<blockquote>
<p>A carga é uma medida da pressão a que o sistema está submetido, que poderia ser medida pelo número de usuários a ele conectados em um determinado instante de tempo. A carga é geralmente um contexto para alguma outra medida, como um tempo de resposta. Assim, você pode dizer que o tempo de resposta para alguma solicitação é de 0,5 segundo com 10 usuários e de 2 segundos com 20 usuários.<b></b></p>
</blockquote>
</li>
<li><b>Sensibilidade de carga</b><br />
<blockquote>
<p>É uma medida de como o tempo de resposta varia com a carga. Digamos que o sistema A tenha um tempo de resposta de 0,5 segundo para um número de usuários entre 10 e 20, e o sistema B tenha um tempo de resposta de 0,2 segundo para 10 usuários que aumenta para 2 segundos com 20 usuários. Neste caso o sistema A tem uma sensibilidade de carga menor do que o sistema B.</p>
</blockquote>
</li>
<li><b>Eficiência</b><br />
<blockquote>
<p>A eficiência é o desempenho dividido pelos recursos. Um sistema que obtenha 30 tps com duas CPUs é mais eficiente que uma que obtenha 40 tps com quatro CPUs idênticas.</p>
</blockquote>
</li>
<li><b>Capacidade</b><br />
<blockquote>
<p>A capacidade de um sistema é uma indicação do máximo throughput efetivo ou máxima carga efetiva. Este poderia ser um máximo absoluto ou um ponto a partir do qual o desempenho caia abaixo de um limite aceitável.</p>
</blockquote>
</li>
<li><b>Escalabilidade</b> </li>
</ol>
<blockquote><ol>
<p>A escalabilidade é ume medida de como o acréscimo de recursos (normalmente hardware) afeta o desempenho. Um sistema escalável é aquele que lhe permite adicionar hardware e obter uma melhora de desempenho proporcional, como dobrar o número de servidores disponíveis para dobrar o throughput. A <b>escalabilidade vertical</b>, ou <b>escalar para cima, </b>significa adicionar mais poder a um único servidor (por exemplo, acrescentar memória). A <b>escalabilidade horizontal</b>, ou <b>escalar para fora</b>, significa adicionar mais servidores.</p>
<p>O problema aqui é que as decisões de projeto não afetam todos esses fatores de desempenho de forma igual. Digamos que temos dois sistemas de software rodando em um servidor: a capacidade do Peixe-Espada é de 20 tps, enquanto a do Camelo é de 40 tps. Qual dos dois tem melhor desempenho? Qual é mais escalável? Não podemos responder a questão de escalabilidade com estes dados, e a única coisa que podemos dizer é que o Camelo é mais eficiente em um único servidor. Se adicionarmos outro servidor, percebemos que o Peixe-Espada agora trata 35 tps, e o camelo 50 tps. A capacidade do Camelo ainda é melhor, mas parece que o Peixe-Espada pode ter melhor escalabilidade. Se continuarmos adicionando servidores, descobriremos que o Peixe-Espada obtém 15 tps por servidor adicional e que o Camelo obtém 10. Com esses dados, podemos dizer que o Peixe-Espada tem uma melhor escalabilidade horizontal, ainda que o Camelo seja mais eficiente com menos de cinco servidores.</p>
<p> Os projetistas muitas vezes fazem coisas complicadas que aumentam a capacidade de uma plataforma específica de hardware quando, em verdade, poderia ser mais barato comprar mais hardwares. Se o Camelo tem um custo maior do que o Peixe-Espada, e esse custo maior é equivalente a um par de servidores, então o Peixe-Espada acaba sendo mais barato, mesmo se você precisar de apenas 40 tps. Está na moda reclamar por ter que depender de hardware melhor para fazer o nosso software rodar apropriadamente. No entanto, adquirir hardware mais novo é com freqüência mais barato do que fazer o software rodar em sistemas menos poderosos. De forma semelhante, adicionar mais servidores é freqüentemente mais barato do que adicionar mais programadores – desde que o sistema seja escalável.</ol>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/falando-de-desempenho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que é o Silverlight</title>
		<link>http://www.flexdev.com.br/home/o-que-o-silverlight/</link>
		<comments>http://www.flexdev.com.br/home/o-que-o-silverlight/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 13:01:46 +0000</pubDate>
		<dc:creator>rodrigo</dc:creator>
				<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/o-que-o-silverlight/</guid>
		<description><![CDATA[TweetSilverlight é um plugin multibrowser e multiplataforma para o desenvolvimento de aplicações RIA e para facilitar a integração com media. Ele reuniu as capacidades de aplicações desktop, aplicações web, funcionalidades do servidor e do cliente, desenvolvimento com linguagens scripts ou orientada a objetos. O que devemos ter em mente é que o Silverlight é mais [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/o-que-o-silverlight/&via=flexdevbr&text=O que é o Silverlight&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Silverlight é um plugin multibrowser e multiplataforma para o desenvolvimento de aplicações RIA e para facilitar a integração com media. Ele reuniu as capacidades de aplicações desktop, aplicações web, funcionalidades do servidor e do cliente, desenvolvimento com linguagens scripts ou orientada a objetos.</p>
<p>O que devemos ter em mente é que o Silverlight é mais do que simplesmente um container para executar aplicações ricas e interativas na web. O silverlight é uma plataforma para desenvolvimento de aplicações, cross-plataforma e cross-browser.</p>
<p>No silverlight o conteúdo é declarado utilizando o <a href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language" target="_blank">XAML</a>. O <a href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language" target="_blank">XAML</a> é um arquivo XML onde é possível declarar elementos visuais da interface, incluindo animações.</p>
<p>O Silverlight contém um subset do .Net Framework que inclui bibliotecas e componentes para integração de dados, networking, controles WPF e CLR (Common Language Runtime). Isso permite que desenvolvamos as nossas aplicações utilizando as linguagens mais comuns em .Net, VB.Net e C#, compiladas.</p>
<p>Não é necessário ter o .Net Framework instalado no cliente ou no servidor. Apenas o plug-in do silverlight é necessário.</p>
<p>Para mais informações sobre Rich Internet Application, veja: <a title="http://en.wikipedia.org/wiki/Rich_Internet_application" href="http://en.wikipedia.org/wiki/Rich_Internet_application">http://en.wikipedia.org/wiki/Rich_Internet_application</a></p>
<p>Exemplos de aplicações em silverlight:</p>
<p><a href="http://memorabilia.hardrock.com/">HARD ROCK – MEMORABILIA</a></p>
<p><a href="http://memorabilia.hardrock.com/"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="image" src="http://rodrigobrito.files.wordpress.com/2010/07/image.png" width="600" height="393" /></a></p>
<p>&#160;<a href="http://blogs.zibmak.net/">Calculadora interessante</a>…</p>
<p><a href="http://blogs.zibmak.net/"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="image" src="http://rodrigobrito.files.wordpress.com/2010/07/image1.png" width="489" height="598" /></a></p>
<p>&#160;<a href="http://pjd.mscui.net/default.htm">Microsoft Health</a></p>
<p><a href="http://pjd.mscui.net/default.htm"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="image" src="http://rodrigobrito.files.wordpress.com/2010/07/image2.png" width="600" height="375" /></a></p>
<p>&#160;</p>
<p><a href="http://www.iis.net/media/experiencesmoothstreaming">Experience IIS Smooth Streaming</a></p>
<p><a href="http://www.iis.net/media/experiencesmoothstreaming"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="image" src="http://rodrigobrito.files.wordpress.com/2010/07/image3.png" width="600" height="384" /></a></p>
<p>&#160;<a href="http://www.microsoft.com/silverlight/silverlight/demos/oob/default.html">Out of Browser</a></p>
<p><a href="http://www.microsoft.com/silverlight/silverlight/demos/oob/default.html"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="image" src="http://rodrigobrito.files.wordpress.com/2010/07/image4.png" width="600" height="456" /></a></p>
<p>Mais exemplos em <a title="http://www.silverlight.net/community/samples/silverlight-samples/" href="http://www.silverlight.net/community/samples/silverlight-samples/">http://www.silverlight.net/community/samples/silverlight-samples/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/o-que-o-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando a Sua Primeira Aplicação em Silverlight</title>
		<link>http://www.flexdev.com.br/home/criando-a-sua-primeira-aplicao-em-silverlight/</link>
		<comments>http://www.flexdev.com.br/home/criando-a-sua-primeira-aplicao-em-silverlight/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 12:29:11 +0000</pubDate>
		<dc:creator>rodrigo</dc:creator>
				<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/criando-a-sua-primeira-aplicao-em-silverlight/</guid>
		<description><![CDATA[TweetOlá, pessoal esse é uns dos primeiros POST’s que estarei fazendo aqui na FlexDev sobre Silverlight e tecnologias .NET, meu nome é Rodrigo da Silva Brito e trabalho na flexdev desde abril de 2009, comecei a trabalhar com desenvolvimento de sistemas em 2004 na TreinaSoftware, trabalhava com Visual Basic 6, MySQL e o grande e [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/criando-a-sua-primeira-aplicao-em-silverlight/&via=flexdevbr&text=Criando a Sua Primeira Aplicação em Silverlight&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Olá, pessoal esse é uns dos primeiros POST’s que estarei fazendo aqui na FlexDev sobre Silverlight e tecnologias .NET, meu nome é Rodrigo da Silva Brito e trabalho na flexdev desde abril de 2009, comecei a trabalhar com desenvolvimento de sistemas em 2004 na TreinaSoftware, trabalhava com Visual Basic 6, MySQL e o grande e famoso Microsoft Access. Em 2006 comecei a estudar .NET e C#, me apaixonei por C# e estou até hoje nessa caminhada de estudos. No momento estou terminando o bacharelado em ASTI (Análise de Sistemas e Tecnologias da Informação) pelo Centro Paula Souza &#8211; FATEC Ourinhos, e escrevendo a minha monografria sobre frameworks de persistência. Possuo um blog do qual estou ressuscitando, você pode acessá-lo através do seguinte endereço <a href="http://rodrigobrito.wordpress.com">http://rodrigobrito.wordpress.com</a>. Agora vamos ao que interessa!</p>
<p>Para começarmos você vai precisar ter instalado em sua máquina o <a href="http://www.microsoft.com/visualstudio/en-us/download">Microsoft Visual Studio 2010</a>. Neste artigo estarei utilizando a versão <b>Premium</b>, precisaremos também do <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=eff8a0da-0a4d-48e8-8366-6ddf2ecad801&amp;displaylang=en">Microsoft Silverlight 4 Tools for Visual Studio 2010</a> que é um pré requisito para desenvolver aplicações em Silverlight 4 e aplicações Ria Services através do Visual Studio 2010. Precisaremos também do <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=88484825-1b3c-4e8c-8b14-b05d025e1541&amp;displaylang=en">Microsoft Expression Blend® 4 Release Candidate (RC).</a></p>
<p><u></u></p>
<p>1. Inicie o Microsoft Visual Studio 2010</p>
<p>2. No menu File passe o mouse sobre New, e então selecione New Project</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image002.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;margin-left: 0px;border-left-width: 0px;margin-right: 0px" border="0" alt="clip_image002" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image002_thumb.jpg" width="516" height="138" /></a></p>
<p>3. A caixa de diálogo New Project será exibida</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image004.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="clip_image004" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image004_thumb.jpg" width="600" height="416" /></a></p>
<p>4. Em <i>Installed Templates</i> no lado esquerdo da janela selecione <i>Visual C#</i> e então selecione <i>Silverlight. S</i>elecione <i>Silverlight Application e </i>verifique se na caixa de seleção superior está selecionado o <i>.NET Framework 4</i>. Em <i>Name</i> colocaremos o nome de nossa aplicação no caso <i>FirstSilverlightApplication </i>e então click em OK.</p>
<p><i>5. </i>Na caixa de diálogo <i>New Silverlight Application </i>desselecione <i>Host the Silverlight application in a new Web site e </i>em <i>Silverlight Version</i> verifique se <i>Silverlight 4</i> está selecionado e então click em OK.<i></i></p>
<p><i><u><a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image006.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="clip_image006" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image006_thumb.jpg" width="482" height="386" /></a></u></i><i></i></p>
<p>6. Após clicado em OK você terá uma tela como esta.</p>
<p>&#160;<a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image008.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="clip_image008" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image008_thumb.jpg" width="600" height="466" /></a></p>
<p><b>Criando Controles</b></p>
<p><b></b></p>
<p><b></b></p>
<p>Os controles podem ser adicionados a aplicação usando o ToolBox do Visual Studio ou editando o texto <a href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language">XAML</a> diretamente no editor <a href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language">XAML</a>. </p>
<p>1. Selecione o controle <i>TextBlock</i> e o arraste a <i>MainPage</i>.xaml. <u></u></p>
<p><u></u></p>
<p>A. Altere a propriedade <i>Text do controle </i>para Contatos.<u></u></p>
<p>B. Altere o tamanho da fonte do controle para 14, através da propriedade <i>FontSize.</i><u></u></p>
<p>C. Deixe a fonte em negrito através da propriedade <i>FontWeight</i> selecionando <i>Bold</i>.<u></u></p>
<p><u></u></p>
<p><u></u></p>
<p>2. Selecione o controle <i>Border</i> e o arraste a <i>MainPage</i>.xaml, altere a propriedade <i>CornerRadius</i> para 5.</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image010.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="clip_image010" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image010_thumb.jpg" width="600" height="416" /></a></p>
<p>3. Arraste o controle <i>Grid</i> para dentro do controle <i>Border</i>, então resete as propriedades Height e Width do <i>Grid</i>.</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image012.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="clip_image012" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image012_thumb.jpg" width="444" height="266" /></a></p>
<p>4. Arraste controles <i>TextBlock</i> e <i>TextBox</i> para dentro do controle <i>Grid</i> de forma que a página fique conforme a figura abaixo.<u></u></p>
<p><u></u></p>
<p><u><a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image014.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="clip_image014" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image014_thumb.jpg" width="588" height="408" /></a></u></p>
<p><u></u></p>
<p>Como você já deve ter percebido, todas as mudanças feitas através da <i>ToolBox Properties são </i>refletidas instantaneamente no código <i>XAML</i>. Veja abaixo o código <i>XAML</i> referente ao controles <i>TextBlock</i> e <i>TextBox</i> que adicionamos dentro do grid.</p>
<p><font face="Consolas"><span style="color: #a31515">&#160;</span><span style="color: blue">&lt;</span><span style="color: #a31515">Grid</span><span style="color: blue">&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,9,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Nome:&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,6,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtNome&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Empresa:&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,37,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Cargo:&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,66,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;E-mail:&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,94,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Telefone:&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,123,0,107&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Observações:&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;0,149,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;80&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,35,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtEmpresa&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,64,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtCargo&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,92,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtEmail&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,121,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtDDI&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;41&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;133,121,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtDDD&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;41&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;180,121,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtTelefone&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;188&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;95&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,149,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtObservacoes&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>       <br /><span style="color: #a31515">&#160;</span><span style="color: blue">&lt;/</span><span style="color: #a31515">Grid</span><span style="color: blue">&gt;</span>       <br /></font></p>
<p>5. Aumente o tamanho da página <i>“Height”</i> e arraste dois controles <i>Button</i>, botões Salvar e Cancelar. Altere as suas propriedades <i>Content</i> e <i>Name</i> respectivamente.</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image018.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="clip_image018" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image018_thumb.jpg" width="372" height="143" /></a></p>
<p>Imagem da página criada:</p>
<p><a href="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image020.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="clip_image020" src="http://www.flexdev.com.br/home/wp-content/uploads/2010/07/clip_image020_thumb.jpg" width="600" height="398" /></a></p>
<p>Código XAML completo da página:</p>
<div class="Section1">
<p class="MsoNormal"><span style="font-family: consolas;color: blue;font-size: 9pt" lang="EN-US">&lt;</span><span style="font-family: consolas;color: #a31515;font-size: 9pt" lang="EN-US">UserControl</span><span style="font-family: consolas;color: red;font-size: 9pt" lang="EN-US"> x</span><span style="font-family: consolas;color: blue;font-size: 9pt" lang="EN-US">:</span><span style="font-family: consolas;color: red;font-size: 9pt" lang="EN-US">Class</span><span style="font-family: consolas;color: blue;font-size: 9pt" lang="EN-US">=&quot;FirstSilverlightApplication.MainPage&quot;</span><span style="font-family: consolas;font-size: 9pt" lang="EN-US">        <br />&#160;&#160; <span style="color: red">xmlns</span><span style="color: blue">=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;</span>         <br />&#160;&#160; <span style="color: red">xmlns</span><span style="color: blue">:</span><span style="color: red">x</span><span style="color: blue">=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;</span>         <br />&#160;&#160; <span style="color: red">xmlns</span><span style="color: blue">:</span><span style="color: red">d</span><span style="color: blue">=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;</span>         <br />&#160;&#160; <span style="color: red">xmlns</span><span style="color: blue">:</span><span style="color: red">mc</span><span style="color: blue">=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;</span>         <br />&#160;&#160; <span style="color: red">mc</span><span style="color: blue">:</span><span style="color: red">Ignorable</span><span style="color: blue">=&quot;d&quot;</span>         <br />&#160;&#160; <span style="color: red">d</span><span style="color: blue">:</span><span style="color: red">DesignHeight</span><span style="color: blue">=&quot;328&quot;</span><span style="color: red"> d</span><span style="color: blue">:</span><span style="color: red">DesignWidth</span><span style="color: blue">=&quot;400&quot;</span><span style="color: red"> xmlns</span><span style="color: blue">:</span><span style="color: red">sdk</span><span style="color: blue">=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk&quot;&gt;</span>         <br /><span></span>        <br /><span style="color: #a31515">&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Grid</span><span style="color: red"> x</span><span style="color: blue">:</span><span style="color: red">Name</span><span style="color: blue">=&quot;LayoutRoot&quot;</span><span style="color: red"> Background</span><span style="color: blue">=&quot;White&quot;&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Height</span><span style="color: blue">=&quot;28&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;12,12,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;120&quot;</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Contatos&quot;</span><span style="color: red"> FontSize</span><span style="color: blue">=&quot;14&quot;</span><span style="color: red"> FontWeight</span><span style="color: blue">=&quot;Bold&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Border</span><span style="color: red"> BorderBrush</span><span style="color: blue">=&quot;Silver&quot;</span><span style="color: red"> BorderThickness</span><span style="color: blue">=&quot;1&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;252&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;12,36,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;border1&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;376&quot;</span><span style="color: red"> CornerRadius</span><span style="color: blue">=&quot;5&quot;&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Grid</span><span style="color: blue">&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,9,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Nome:&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,6,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtNome&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Empresa:&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,37,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Cargo:&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,66,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;E-mail:&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,94,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Telefone:&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;6,123,0,107&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;74&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBlock</span><span style="color: red"> Text</span><span style="color: blue">=&quot;Observações:&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;20&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;0,149,0,0&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;80&quot;</span><span style="color: red"> TextAlignment</span><span style="color: blue">=&quot;Right&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,35,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtEmpresa&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,64,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtCargo&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,92,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtEmail&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,121,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtDDI&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;41&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;133,121,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtDDD&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;41&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;180,121,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtTelefone&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;188&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Height</span><span style="color: blue">=&quot;95&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;86,149,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;txtObservacoes&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;282&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Grid</span><span style="color: blue">&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Border</span><span style="color: blue">&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Button</span><span style="color: red"> Content</span><span style="color: blue">=&quot;Cancelar&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;93,294,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;btnCancelar&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;75&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Button</span><span style="color: red"> Content</span><span style="color: blue">=&quot;Salvar&quot;</span><span style="color: red"> Height</span><span style="color: blue">=&quot;23&quot;</span><span style="color: red"> HorizontalAlignment</span><span style="color: blue">=&quot;Left&quot;</span><span style="color: red"> Margin</span><span style="color: blue">=&quot;12,294,0,0&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;btnSalvar&quot;</span><span style="color: red"> VerticalAlignment</span><span style="color: blue">=&quot;Top&quot;</span><span style="color: red"> Width</span><span style="color: blue">=&quot;75&quot; /&gt;</span>         <br /><span style="color: #a31515">&#160;&#160;&#160; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Grid</span><span style="color: blue">&gt;</span>         <br /><span style="color: blue">&lt;/</span><span style="color: #a31515">UserControl</span><span style="color: blue">&gt;</span></span><span style="font-size: 9pt" lang="EN-US"></span></p>
</p></div>
<p>Nos próximos artigos de Silverlight estaremos complementando essa pequena aplicação, iremos criar o <i>Grid</i> para a listagem de contatos, botões de inclusão, edição e deleção. Utilizaremos <a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx">WCF</a> para acesso aos dados. </p>
<p>O <a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx">WCF</a> para quem não conhece é um poderoso framework para a criação de aplicações orientadas a serviço. </p>
<p>Até o próximo artigo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/criando-a-sua-primeira-aplicao-em-silverlight/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Curso Flex 4 Essencial</title>
		<link>http://www.flexdev.com.br/home/curso-flex-4-essencial/</link>
		<comments>http://www.flexdev.com.br/home/curso-flex-4-essencial/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 19:43:01 +0000</pubDate>
		<dc:creator>Ebercom</dc:creator>
				<category><![CDATA[Palestra Online]]></category>
		<category><![CDATA[Curos]]></category>

		<guid isPermaLink="false">http://www.flexdev.com.br/home/curso-flex-4-essencial/</guid>
		<description><![CDATA[TweetEste post é para te convidar a participar do curso que será realizado pela RiaCycle, do nosso amigo Igor Costa, tenho certeza que o curso será da mais alta qualidade e estaremos participando também. E para você que ainda não fez sua inscrição corra, porque faltam poucos dias.Também vamos sortear uma bolsa integral para participar [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.flexdev.com.br/home/curso-flex-4-essencial/&via=flexdevbr&text=Curso Flex 4 Essencial&related=FlexDev:FlexDev&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p style="clear: both"><a href="http://bit.ly/9lBWaT" class="image-link"><img src="http://www.flexdev.com.br/home/wp-content/uploads/2010/06/mini_f4_banner-thumb31.png" height="86" width="480" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a>Este post é para te convidar a participar do curso que será realizado pela <a href="http://www.riacycle.com/" target="_blank">RiaCycle</a>, do nosso amigo <a href="http://www.igorcosta.com/" target="_blank">Igor Costa</a>, tenho certeza que o curso será da mais alta qualidade e estaremos participando também. E para você que ainda não fez sua inscrição corra, porque faltam poucos dias.<br />Também vamos sortear uma bolsa integral para participar deste curso. Para concorrer é simples, basta dar um Retweet na seguinte mensagem:</p>
<p style="clear: both">Eu quero ganhar uma bolsa para o Curso Flex 4 Essencial #miniflex4 <a href="http://bit.ly/9lBWaT" target="_blank">http://bit.ly/9lBWaT</a> <a href="http://bit.ly/brBSOG" target="_blank">http://bit.ly/brBSOG</a> #FlexDev</p>
<p style="clear: both">Se quiser pode usar o link abaixo:</p>
<p style="clear: both"><a href="http://twitter.com/home" class="image-link"><img src="http://www.flexdev.com.br/home/wp-content/uploads/2010/06/tweet-thumb3.jpg" height="42" align="left" width="139" style=" display: inline; float: left; margin: 0 10px 10px 0;" /></a><br style="clear: both" />O ganhador será divulgado na sexta-feira (11/06/2010).</p>
<p style="clear: both">Grande abraço a todos.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexdev.com.br/home/curso-flex-4-essencial/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

