<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-78775790352287160</id><updated>2011-09-11T11:18:30.273-03:00</updated><category term='lite'/><category term='flash'/><category term='hozano aracomp'/><category term='flashlite'/><category term='device'/><title type='text'>Blog do Aracomp</title><subtitle type='html'>Este blog concentra trabalhos e notícias pertinentes ao Curso de Ciência da Computação da Universidade Federal de Alagoas-Campus Arapiraca (www.aracomp.com.br). Ele é atualizado por professores e alunos do curso.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.aracomp.com.br/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.aracomp.com.br/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aracomp</name><uri>http://www.blogger.com/profile/15550878122126737354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-78775790352287160.post-4538094876835408388</id><published>2011-04-02T18:07:00.005-03:00</published><updated>2011-04-02T18:34:15.062-03:00</updated><title type='text'>Aplicação da biblioteca Allegro no jogo Batalha Naval</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;BIBLIOTECA ALLEGRO&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal"&gt; &lt;/p&gt;    &lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;O QUE É?&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;           A Allegro é uma biblioteca criada para o desenvolvimento de jogos e  aplicações multimídia. É uma plataforma transversal e trabalha com  muitos compiladores diferentes. É gratuita, não há limitação de uso e é  fácil de usar. Com ela pode ser inserido varias funções como: imagens,  temporizador, entradas de dados: mouse, teclado e joystick, saída de  vídeo: gráficos e texto.&lt;/p&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;           Foi criada por Shawn Hargreaves que hoje trabalha na Microsoft. Sua  intenção era de fazer uma biblioteca de código simples para que o  iniciante na área de programação de jogos não precisasse ler uma grande  quantidade de livros.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;COMO INSTALAR ALLEGRO NO AMBIENTE LINUX?&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p style="text-align: center;" class="MsoNormal"&gt;Há duas maneiras de instalar a biblioteca.&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;-Primeira :&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;No Desktop siga os seguintes passos:&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;SYSTEM – ADMINISTRATION – SYNAPTIC PACKAGE MANAGER&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;Faz uma busca pelo nome &lt;span style="font-style: italic;"&gt;allegro&lt;/span&gt;. Dos pacotes disponíveis, instala o pacote &lt;span style="font-style: italic;"&gt;liballegro4.2-dev&lt;/span&gt;. Após baixá-lo a biblioteca estará instalada.&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 35.4pt; text-indent: 35.4pt;"&gt;&lt;a href="http://3.bp.blogspot.com/-JSY1-2-6GPg/TZdlErzDHxI/AAAAAAAAAEA/B3gDIt8JKNc/s1600/3.0.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 345px; height: 260px;" src="http://3.bp.blogspot.com/-JSY1-2-6GPg/TZdlErzDHxI/AAAAAAAAAEA/B3gDIt8JKNc/s320/3.0.JPG" alt="" id="BLOGGER_PHOTO_ID_5591048593554480914" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt;       Figura1: Baixando o pacote pelo&lt;span style="font-style: italic;"&gt; Synaptic Package Manager&lt;/span&gt;.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;-Segunda:&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;Abra o terminal e digite: &lt;span style="font-style: italic;"&gt;sudo apt-get install liballegro4.2-dev&lt;/span&gt;. Logo após, o programa pedirá o password, então digite-o. Com isso, a biblioteca será instalada.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: center;" align="center"&gt;&lt;a href="http://4.bp.blogspot.com/--F8O-VTPHuw/TZdlQsfktqI/AAAAAAAAAEI/x5xEGpvafHw/s1600/3%252C1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 352px; height: 267px;" src="http://4.bp.blogspot.com/--F8O-VTPHuw/TZdlQsfktqI/AAAAAAAAAEI/x5xEGpvafHw/s320/3%252C1.JPG" alt="" id="BLOGGER_PHOTO_ID_5591048799899661986" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt;Figura 2: Baixando o pacote pelo terminal.&lt;/p&gt;&lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;EXEMPLO DE APLICAÇAO DA ALLEGRO:&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p style="font-weight: bold; text-align: center;" class="MsoNormal"&gt;Jogo Batalha Naval&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;               O jogo Batalha Naval foi desenvolvido com aplicações da biblioteca Allegro em código fonte C. Nele precisamos incluir&lt;span style=""&gt;  &lt;/span&gt;alguns  comandos da Allegro que formam o laço principal do jogo e que sem eles  não conseguiríamos utilizar nenhuma função da mesma.&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;     São eles:&lt;/p&gt;  &lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="color: rgb(51, 51, 255); font-style: italic; font-weight: bold;"&gt;#include&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold; font-style: italic;"&gt; &amp;lt; allegro.h&amp;gt;  &lt;/span&gt; // inclui a biblioteca&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold; font-style: italic;"&gt;allegro_init();&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;//inicia a biblioteca allegro&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold; font-style: italic;"&gt;set_color_depth();&lt;/span&gt; // configuração de cores&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold; font-style: italic;"&gt;set_gfx_mode();&lt;/span&gt; // configuração de vídeo&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;Sendo os três últimos comandos dentro da função principal.&lt;/p&gt;&lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="text-align: left;" class="MsoNormal"&gt;                Para se usar as imagens necessárias, inicialmente criamos um  ponteiro que aponta para todas as imagens da memória utilizadas no jogo.  Esse ponteiro aponta para o tipo BITMAP, que é um formato de arquivo  gráfico.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p style="text-align: center;" class="MsoNormal"&gt;BITMAP *imagem[5];&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Onde:&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Imagem[0] é um buffer; &lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Imagem[1] é o desenho do fundo;&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Imagem[2] é o desenho da água;&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Imagem[3] é o desenho do barco;&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Imagem[4] é o desenho da tábua;&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p style="text-align: left;" class="MsoNormal"&gt;               Com o comando&lt;span style="color: rgb(51, 51, 255);"&gt; &lt;span style="font-weight: bold; font-style: italic;"&gt;create_bitmap();&lt;/span&gt;&lt;/span&gt; definimos o&lt;span style="font-weight: bold;"&gt; tamanho&lt;/span&gt; da imagem que queremos carregar na memória. Onde passamos como argumentos, a largura e a altura da imagem, respectivamente.&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-style: italic;" class="MsoNormal"&gt;imagem[1] = create_bitmap (800, 600);&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;               Com o comando &lt;span style="color: rgb(51, 51, 255); font-weight: bold; font-style: italic;"&gt;load_bitmap();&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;carregamos&lt;/span&gt; a imagem na memória. Onde passamos como argumentos, o caminho da imagem e a paleta de cores, respectivamente.&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-style: italic;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;imagem[1] = load_bitmap ("tiles/back0.bmp", NULL);&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;Executando estes dois comandos em cada imagem usada no jogo.&lt;/p&gt;  &lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;                Porém, os comandos acima não são suficientes para exibição na  tela, pois apenas servem para declarar, definir e carregar a imagem.&lt;/p&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;               Então usamos uma das três funções que são responsáveis por desenhar a imagem na tela: a função  &lt;span style="font-weight: bold; color: rgb(51, 51, 255); font-style: italic;"&gt;blit();&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;  &lt;p style="text-align: left;" class="MsoNormal"&gt;            Esta função é responsável por “copiar” uma imagem ‘origem’ em uma  imagem ‘destino’, especificando as posições de ambas, e em seguida o  tamanho final.&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;blit( imagem[1], imagem[0], 0, 0, 0, 0, 800, 600);&lt;/span&gt; // “copiando” a imagem[1] e “colando” no buffer...&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;blit(imagem[0], screen, 0, 0, 0, 0, 800, 600);&lt;/span&gt; // “copiando” a imagem final e “colando” na tela.&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Essa função recebe como argumentos:&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;1. Imagem de origem: imagem[0]&lt;/p&gt;  &lt;p class="MsoNormal"&gt;2. Imagem de destino: screen&lt;/p&gt;  &lt;p class="MsoNormal"&gt;3. Posição x da imagem de origem: 0&lt;/p&gt;  &lt;p class="MsoNormal"&gt;4. Posição y da imagem de origem: 0&lt;/p&gt;  &lt;p class="MsoNormal"&gt;5. Posição x da imagem de destino: 0&lt;/p&gt;  &lt;p class="MsoNormal"&gt;6. Posição y da imagem de destino: 0&lt;/p&gt;  &lt;p class="MsoNormal"&gt;7. Largura final da imagem copiada: 800&lt;/p&gt;  &lt;p class="MsoNormal"&gt;8. Altura final da imagem copiada: 600&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p style="text-align: center;" class="MsoNormal"&gt;Com isso, podemos ver o fundo do jogo.&lt;br /&gt;&lt;/p&gt;&lt;p class="Default" style="text-align: center;" align="center"&gt;&lt;a href="http://3.bp.blogspot.com/-lQ0RtIiZGEI/TZdldM4xV0I/AAAAAAAAAEQ/zP16YrasCWE/s1600/4.9.bmp"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 341px; height: 226px;" src="http://3.bp.blogspot.com/-lQ0RtIiZGEI/TZdldM4xV0I/AAAAAAAAAEQ/zP16YrasCWE/s320/4.9.bmp" alt="" id="BLOGGER_PHOTO_ID_5591049014753711938" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt;Figura 3: Imagem &lt;span style="font-style: italic;"&gt;fundo&lt;/span&gt; na tela.&lt;/p&gt;  &lt;p style="text-align: left;" class="MsoNormal"&gt;               Para desenhar os tabuleiros, temos q repetir a mesma operação, sempre respeitando as posições das imagens.&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;               Com uma função de repetição formamos uma matriz 10 x 10 de imagens&lt;span style="font-style: italic;"&gt; tábua&lt;/span&gt;. Jogando as mesmas no buffer.&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;blit( imagem[3], imagem[0], 0, 0, x, y, 30, 30);&lt;/span&gt; onde &lt;span style="font-weight: bold;"&gt;x&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;y &lt;/span&gt;variam de acordo com a posição de cada imagem de tábua na tela.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;&lt;p class="Default" style="text-align: center;" align="center"&gt;&lt;a href="http://3.bp.blogspot.com/-63F1n5EVavQ/TZeTGsEbX3I/AAAAAAAAAFY/UFppeuxIhVg/s1600/buffer.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 229px;" src="http://3.bp.blogspot.com/-63F1n5EVavQ/TZeTGsEbX3I/AAAAAAAAAFY/UFppeuxIhVg/s320/buffer.jpg" alt="" id="BLOGGER_PHOTO_ID_5591099205521989490" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt;Figura 4: Imagens &lt;span style="font-style: italic;"&gt;tábua&lt;/span&gt; formando um tabuleiro no buffer.&lt;/p&gt;  &lt;p style="text-align: left;" class="MsoNormal"&gt;               E novamente com o comando &lt;span style="color: rgb(0, 0, 0); font-style: italic;"&gt;blit()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;"&gt;;&lt;/span&gt;, ‘copiamos’ a imagem do tabuleiro no buffer e jogamos na tela. &lt;/p&gt;  &lt;p class="Default" style="text-align: center; page-break-before: always;" align="center"&gt;&lt;a href="http://3.bp.blogspot.com/-kt3SRruS3t8/TZeTUwzuXvI/AAAAAAAAAFg/YQePKr9QCEs/s1600/fundoo.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 226px;" src="http://3.bp.blogspot.com/-kt3SRruS3t8/TZeTUwzuXvI/AAAAAAAAAFg/YQePKr9QCEs/s320/fundoo.jpg" alt="" id="BLOGGER_PHOTO_ID_5591099447312277234" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt;Figura 5: Exibição do primeiro tabuleiro na tela.&lt;/p&gt;  &lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;blit(imagem[0], screen, 0, 0, 50, 150, 300, 300);&lt;/span&gt; // comando do primeiro tabuleiro.&lt;/p&gt;  &lt;p class="Default" style="text-align: center;" align="center"&gt;&lt;a href="http://4.bp.blogspot.com/-JtCM5csnEfE/TZdmGIACokI/AAAAAAAAAEo/U1OG04ck7xE/s1600/5.1.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 211px;" src="http://4.bp.blogspot.com/-JtCM5csnEfE/TZdmGIACokI/AAAAAAAAAEo/U1OG04ck7xE/s320/5.1.PNG" alt="" id="BLOGGER_PHOTO_ID_5591049717816664642" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt; Figura 6: Exibição dos tabuleiros.&lt;/p&gt;  &lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;blit( imagem[0], screen, 0, 0, 450, 150, 300, 300);&lt;/span&gt; // comando do segundo tabuleiro.&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="text-align: left;" class="MsoNormal"&gt;               Com tudo, precisamos fazer com que as figuras da água e do barco apareçam com o decorrer do jogo.&lt;/p&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;               Basta usar o mesmo comando &lt;span style="color: rgb(0, 0, 0); font-style: italic;"&gt;blit();&lt;/span&gt;,  jogar a imagem da água ou barco no buffer e depois na tela, fazendo com  que esta substitua a posição da imagem tábua numa determinada posição  de acordo com o decorrer do jogo. &lt;/p&gt;  &lt;p class="Default" style="text-align: center;" align="center"&gt;&lt;a href="http://4.bp.blogspot.com/-C4o0bozFnnE/TZeGA--zUhI/AAAAAAAAAFQ/LemBZmKguMY/s1600/1.3.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 211px;" src="http://4.bp.blogspot.com/-C4o0bozFnnE/TZeGA--zUhI/AAAAAAAAAFQ/LemBZmKguMY/s320/1.3.png" alt="" id="BLOGGER_PHOTO_ID_5591084813868290578" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt; Figura 7: Exibição do &lt;span style="font-style: italic;"&gt;barco&lt;/span&gt; e da &lt;span style="font-style: italic;"&gt;água&lt;/span&gt; nos tabuleiros.&lt;/p&gt;  &lt;p style="text-align: left;" class="MsoNormal"&gt;               Mas, além das figuras, o jogador precisa ter informação referente ao jogo. Para isso é necessário colocar texto.&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;               Então usamos a função &lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 51, 255);"&gt;textprintf_ex()&lt;/span&gt;; Para exibir textos na tela.&lt;/p&gt;&lt;p class="Default" style="text-align: center;" align="center"&gt;&lt;a href="http://3.bp.blogspot.com/-hYYPks-DG7I/TZdmlvjzijI/AAAAAAAAAE4/P7R53NN2YmM/s1600/5.3.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-hYYPks-DG7I/TZdmlvjzijI/AAAAAAAAAE4/P7R53NN2YmM/s320/5.3.PNG" alt="" id="BLOGGER_PHOTO_ID_5591050261011597874" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt;Figura 8: Exibição de textos na tela.&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-style: italic;" class="MsoNormal"&gt;textprintf_ex(screen,font,170,460,makecol(255,255,255),-1,”PARABÉNS VOCÊ VENCEU!!!");&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-style: italic;" class="MsoNormal"&gt;textprintf_ex(screen,font,170,480,makecol(255,255,255),-1,"Deseja Jogar Novamente? 1- SIM, 2- NÃO");&lt;/p&gt;&lt;p style="text-align: center; font-style: italic;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Essa função recebe como argumentos:&lt;/p&gt;    &lt;p class="MsoNormal"&gt; &lt;span style=""&gt; &lt;/span&gt;- Destino do texto: screen&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;- Tipo da fonte: font //sempre usamos esse tipo de fonte, pois é a fonte padrão da&lt;span style=""&gt; &lt;/span&gt;Allegro. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;- Posição x e posição y da fonte na tela: 170, 480.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt; &lt;/span&gt;- Cor do texto: makecol(225,225, 255) - (Branca) &lt;/p&gt;  &lt;p class="MsoNormal"&gt;- Cor de fundo do texto: -1 - (Transparente) &lt;/p&gt;  &lt;p class="MsoNormal"&gt;- Texto: “Deseja jogar novamente? 1- SIM, 2 - NÃO”&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p style="text-align: left;" class="MsoNormal"&gt;             Essa função &lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 51, 255);"&gt;makecol();&lt;/span&gt; é responsável por indicar cores. Ela é composta de 3 trios de valores separados por uma vírgula.&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;                O primeiro trio é a “quantidade” de vermelho, o segundo é a  quantidade de “verde”, e o terceiro é a quantidade de “azul”. Sendo este  tipo de ‘colorido’ chamado de RGB.Com seus valores variando de 000 –  225. E para um fundo transparente ao invés de usar a função makecol();  utiliza- se o valor -1 no argumento.&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;E para finalizar, usamos a função &lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 51, 255);"&gt;allegro_exit();&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;COMO COMPILAR&lt;/p&gt;  &lt;p style="text-align: center; font-style: italic;" class="MsoNormal"&gt;&lt;span style=""&gt; &lt;/span&gt;gcc&lt;span style=""&gt;  &lt;/span&gt;&amp;lt; nomedoarquivo&amp;gt;.c -o  &amp;lt; nomedojogo&amp;gt;`allegro-config --libs`&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 18pt; margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;a href="http://1.bp.blogspot.com/-3vg6-lzrfPs/TZdmxpdJKoI/AAAAAAAAAFA/k5ZnWgOi7QM/s1600/5.4.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 221px;" src="http://1.bp.blogspot.com/-3vg6-lzrfPs/TZdmxpdJKoI/AAAAAAAAAFA/k5ZnWgOi7QM/s320/5.4.PNG" alt="" id="BLOGGER_PHOTO_ID_5591050465531472514" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="text-align: center; color: rgb(102, 51, 102);" class="MsoNormal"&gt;&lt;span style=""&gt; &lt;/span&gt;Figura 9: Compilar usando allegro.&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="font-weight: bold; text-align: center;" class="MsoNormal"&gt;CONCLUSÃO:&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;                A biblioteca Allegro é de grande ajuda para quem quer utilizar  interface gráfica, mas não tem muito domínio em programação. E sendo  ela voltada principalmente para o desenvolvimento de jogos, torna-a uma  boa alternativa comercial, já que o mercado de jogos cresce bastante.  Como os comandos da biblioteca são bem práticos e de simples aplicação,  facilita o desenvolvimento do código, tornando-se uma boa ferramenta  para programadores iniciantes em aplicações gráficas.&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;AGRADECIMENTOS:&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Bruno Rafael&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;Emanuel Franco&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;BIBLIOGRAFIA:&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;http://www.bdjogos.com/linguagens.php?id=3&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;http://www.lcg.ufrj.br/Cursos/mab604/allegro/view&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;http://www.tuliofaria.net/arquivos/Artigo_Allegro.pdf&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center; font-weight: bold;" class="MsoNormal"&gt;TUTORIAL FEITO POR:&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt; &lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;CECÍLIA MAYARA G. DA SILVA&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;FLAVIANY RODRIGUES PINHEIRO&lt;/p&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;LARISSE VITAL DA SILVA&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78775790352287160-4538094876835408388?l=blog.aracomp.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aracomp.com.br/feeds/4538094876835408388/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://blog.aracomp.com.br/2011/04/aplicacao-da-biblioteca-allegro-no-jogo.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/4538094876835408388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/4538094876835408388'/><link rel='alternate' type='text/html' href='http://blog.aracomp.com.br/2011/04/aplicacao-da-biblioteca-allegro-no-jogo.html' title='Aplicação da biblioteca Allegro no jogo Batalha Naval'/><author><name>Flaviany</name><uri>http://www.blogger.com/profile/05279462650551981865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-JSY1-2-6GPg/TZdlErzDHxI/AAAAAAAAAEA/B3gDIt8JKNc/s72-c/3.0.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78775790352287160.post-5905680662259765441</id><published>2010-12-14T19:36:00.030-03:00</published><updated>2010-12-14T22:27:26.407-03:00</updated><title type='text'>Tutorial SQL</title><content type='html'>&lt;div align="center"&gt; &lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;TUTORIAL SQL&lt;br /&gt;&lt;/div&gt;&lt;/strong&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 200px; DISPLAY: block; HEIGHT: 118px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550673580566506530" border="0" alt="" src="http://3.bp.blogspot.com/_q9uYjmS7tjc/TQf0NnnP7CI/AAAAAAAAAA4/amGOZCr2euw/s200/sql.JPG" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;SUMARIO &lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;1. INTRODUÇÃO&lt;/div&gt;&lt;div align="center"&gt;2. SINTAXE&lt;br /&gt;3. DDL E DML&lt;br /&gt;4. DDL E RESTRIÇÕES DO CREATE&lt;br /&gt;5. DML&lt;br /&gt;5.1 SELECT&lt;br /&gt;5.2 SELECT DISTINCT&lt;br /&gt;5.3 CLAUSULA WHERE&lt;br /&gt;5.4 OPERADORES AND E OR&lt;br /&gt;5.5 ORDER BY&lt;br /&gt;5.6 INSERT&lt;br /&gt;5.7 UPDATE&lt;br /&gt;5.8 DELETE&lt;br /&gt;6. FUNÇÕES&lt;br /&gt;6.1 AVG&lt;br /&gt;6.2 COUNT&lt;br /&gt;6.3 FIRST&lt;br /&gt;6.4 LAST&lt;br /&gt;6.5 MAX&lt;br /&gt;6.6 MIN&lt;br /&gt;6.7 SUM&lt;br /&gt;7. BIBLIOGRAFIA&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;SQL &lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="center"&gt;          SQL é uma linguagem padrão para acessar e manipular bancos de dados. &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;O que é SQL? &lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt; &lt;/div&gt;&lt;div align="center"&gt;          Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional. Muitas das características originais do SQL foram inspiradas na álgebra relacional.&lt;br /&gt;         SQL é um padrão ANSI (American National Standards Institute) &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;O que pode fazer o SQL? &lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;         Com SQL podemos recuperar dados, inserir, atualizar e excluir registros, além de criar novas bases de dados e também criar novas tabelas, novos procedimentos e novas visões de um banco de dados. SQL pode também definir permissões em tabelas, procedimentos e visões. &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;Sintaxe SQL&lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;Tabelas de banco de dados&lt;/strong&gt; &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;         Um banco de dados na maioria das vezes contém uma ou mais tabelas. Cada tabela é identificada por um nome. As tabelas contêm registros (Tuplas) com dados.&lt;br /&gt;Abaixo está um exemplo de uma tabela chamada "Pessoas": &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 137px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550676627583355010" border="0" alt="" src="http://4.bp.blogspot.com/_q9uYjmS7tjc/TQf2--orSII/AAAAAAAAABI/FpeTABnW220/s400/tabela1.JPG" /&gt; A tabela acima contém três Tuplas, com cinco colunas (Id, Apelido, Nome, Endereço e Cidade).&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;Instruções SQL &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;         A maioria das ações que você precisa para executar em um banco de dados é feito com instruções SQL. A seguinte instrução SQL selecionará todos os registros na tabela Pessoas: &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;• SELECT * FROM Pessoas &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;strong&gt;Sintaxe&lt;br /&gt;&lt;/strong&gt;SELECT * FROM &lt;/div&gt;&lt;tabela&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;DDL e DML &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;           SQL pode ser dividida em duas partes: A Data Definition Language (DDL) e a Data Manipulation Language (DML). &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;DDL (Linguagem de Definição de Dados) &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;          Uma DDL permite ao utilizador definir tabelas novas e elementos associados. &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;          Os comandos básicos da DDL são três (CREATE, ALTER, DROP): &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;• &lt;strong&gt;CREATE DATABASE -&lt;/strong&gt; Cria um novo banco de dados&lt;br /&gt;• &lt;strong&gt;ALTER DATABASE -&lt;/strong&gt; Altera um banco de dados&lt;br /&gt;• &lt;strong&gt;CREATE TABLE -&lt;/strong&gt; Cria uma nova tabela&lt;br /&gt;• &lt;strong&gt;ALTER TABLE -&lt;/strong&gt; Altera uma tabela&lt;br /&gt;• &lt;strong&gt;DROP TABLE -&lt;/strong&gt; Apaga uma tabela&lt;br /&gt;• &lt;strong&gt;CREATE INDEX –&lt;/strong&gt; Cria um Índice (chave de busca)&lt;br /&gt;• &lt;strong&gt;DROP INDEX -&lt;/strong&gt; Exclui um índice &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;DML (Linguagem de Manipulação de Dados) &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;         São utilizados para realizar inclusões, consultas, exclusões e alterações de dados presentes em registros.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;• &lt;strong&gt;SELECT -&lt;/strong&gt; Extrai dados de um banco de dados.&lt;br /&gt;• &lt;strong&gt;UPDATE -&lt;/strong&gt; Atualiza dados em um banco de dados.&lt;br /&gt;• &lt;strong&gt;DELETE -&lt;/strong&gt; Apaga dados de um banco de dados.&lt;br /&gt;• &lt;strong&gt;INSERT INTO -&lt;/strong&gt; Insere novos dados em um banco de dados. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;OBS:&lt;/strong&gt; Não confunda Alter com Update e Drop com Delete! Alter e Drop são para manipular a estrutura das tabelas e Update e Delete para manipulação de tuplas)!!!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DDL (Linguagem de Definição de Dados)&lt;/strong&gt; &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;          Para exemplificarmos os comandos de DDL comentados acima, faremos abaixo um schema para criação de um BD de uma loja chamada loja1 e criaremos uma tabela chamada Pessoas. Com esses comandos seremos capazes de criar e apagar qualquer BD e tabelas. &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;• create database Loja1&lt;br /&gt;• create schema Loja1 &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;           Os Comandos acima são para criação de um schema ou database do nosso BD(Ambos comandos realizam a mesma função). &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;• CREATE TABLE `loja1`.`Pessoas` (&lt;br /&gt;`ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,&lt;br /&gt;`Apelido` VARCHAR(45) NOT NULL,&lt;br /&gt;`Nome` VARCHAR(45) NOT NULL,&lt;br /&gt;`Endereço` VARCHAR(45),&lt;br /&gt;`Cidade` VARCHAR(45),&lt;br /&gt;PRIMARY KEY (`ID`)&lt;br /&gt;) &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;         Para apagarmos a tabela é só usar DROP TABLE PESSOAS. Lembre-se que se apagar a tabela tudo que ela a conter será apagada também!&lt;br /&gt;         Para apagarmos a database é só usar DROP DATABASE LOJA1. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;         O comando acima criará uma tabela Pessoas na databarse loja1 com os atributos id, apelido, nome, endereço, cidade com seus tipos (integer e varchar) e suas restrições (not null e auto_increment). &lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;Restrições de Integridade na Clausula Create &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;• &lt;strong&gt;not null:&lt;/strong&gt; indica que ao atributo não pode ser atribuído o valor null(nulo).&lt;br /&gt;• &lt;strong&gt;primary key ( A1,..., An):&lt;/strong&gt; Indica os atributos que formam a chave primária.&lt;br /&gt;• &lt;strong&gt;check(P):&lt;/strong&gt; verifica que em todo momento o predicado P se satisfaça na relação.&lt;br /&gt;• &lt;strong&gt;unique:&lt;/strong&gt; indica que o atributo deve ter um valor único em cada tupla, i,e, chave secundaria.&lt;br /&gt;• &lt;strong&gt;foreign key A1 references R(B1):&lt;/strong&gt; indica que o atributo A1 é chave estrangeira e referencia o atributo B1 de uma tupla da relação R. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;DML (Linguagem de Manipulação de Dados) &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;SELECT &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;          A instrução SELECT é usada para selecionar dados de um banco de dados. O resultado é armazenado em uma tabela e é mostrada na tela. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sintaxe &lt;/strong&gt;&lt;br /&gt;SELECT&lt;aributos&gt; &lt;atributos&gt;FROM&lt;tabela&gt; &lt;tabela&gt;WHERE&lt;condição&gt;&lt;condição&gt; &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;         Veja que o comando abaixo selecionou o Id, o Apelido e o Nome de todos da tabela Pessoas e o resultado foi armazenado em uma nova tabela e retornado na tela. O comando WHERE só precisa ser usado se quisermos colocar alguma condição, veremos mais abaixo. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;SELECT id, apelido, nome FROM pessoas&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 282px; DISPLAY: block; HEIGHT: 169px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550679301354371250" border="0" alt="" src="http://3.bp.blogspot.com/_q9uYjmS7tjc/TQf5anNXOLI/AAAAAAAAABQ/F78VJRaApAc/s400/tabela2.JPG" /&gt; &lt;p align="center"&gt; Note que o * no comando abaixo faz selecionar todas as tuplas e atributos da tabela Pessoas&lt;br /&gt;&lt;br /&gt;SELECT * FROM Pessoas&lt;br /&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 135px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550691763843326354" border="0" alt="" src="http://4.bp.blogspot.com/_q9uYjmS7tjc/TQgEwBmRYZI/AAAAAAAAACg/sco90UGxR5E/s400/tabela10.JPG" /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;strong&gt;SELECT DISTINCT &lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;          Em uma tabela, algumas das colunas podem conter valores duplicados. Este não é um problema, no entanto, às vezes você vai querer listar apenas os distintos (diferentes) valores em uma tabela.&lt;br /&gt;            A palavra-chave DISTINCT pode ser utilizada para retornar apenas distintos (diferentes) valores. &lt;/p&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sintaxe &lt;/strong&gt;&lt;br /&gt;SELECT DISTINC &lt;atributos&gt;FROM &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;tabela&gt;&lt;br /&gt;&lt;div align="justify"&gt;          Agora queremos selecionar apenas os valores distintos na coluna chamada "Cidade" da tabela Pessoas mostrada acima. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;• SELECT DISTINC cidade FROM Pessoas&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 165px; DISPLAY: block; HEIGHT: 147px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550682771757979410" border="0" alt="" src="http://3.bp.blogspot.com/_q9uYjmS7tjc/TQf8kneD1xI/AAAAAAAAABo/G24rhqq-ExQ/s400/tabela4.JPG" /&gt; Note que não aprece a duplicação da Cidade Arapiraca&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;Cláusula WHERE &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;         A cláusula WHERE é usada para extrair apenas os registros que satisfazem o critério especificado. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sintaxe&lt;br /&gt;&lt;/strong&gt;SELECT &lt;atributos&gt;FROM &lt;tabela&gt;WHERE&lt;condição&gt; &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;            Agora vamos selecionar o id e o nome da pessoa com id = 2. &lt;/div&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;SELECT Id, nome FROM pessoas WHERE id=2&lt;br /&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 176px; DISPLAY: block; HEIGHT: 97px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550684140745849778" border="0" alt="" src="http://3.bp.blogspot.com/_q9uYjmS7tjc/TQf90TWM-7I/AAAAAAAAAB4/V2L8mWgSg00/s400/tabela5.JPG" /&gt;  &lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="center"&gt;Note que o Where só retorna as tuplas que satisfaz a condição dada acima. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;em&gt;Com a cláusula WHERE, os seguintes operadores podem ser usados:&lt;/em&gt;&lt;/strong&gt; &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 456px; DISPLAY: block; HEIGHT: 148px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550685172761086610" border="0" alt="" src="http://2.bp.blogspot.com/_q9uYjmS7tjc/TQf-wX5zypI/AAAAAAAAACA/hXKFmmKcUPs/s400/tabela6.JPG" /&gt; &lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;OPERADORES AND E OR &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;            Os operadores AND e OR são usados para filtrar registros com base em mais de uma condição. O operador AND exibe um registro se a primeira e segunda condição for verdadeira. O operador OR exibe um registro se a primeira ou a segunda condição for verdadeira. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sintaxe&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;SELECT&lt;atributos&gt;&lt;atributos&gt; &lt;atributos&gt;FROM&lt;tabela&gt;&lt;tabela&gt; &lt;tabela&gt;WHERE&lt;condição&gt;&lt;condição&gt; &lt;condição&gt;&lt;/div&gt;&lt;condição&gt;&lt;br /&gt;&lt;div align="justify"&gt;           Agora Vamos selecionar apenas as pessoas com o nome igual a "João" e o apelido igual a "Cabeção": &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;SELECT * FROM Pessoas WHERE nome= 'João' AND Cidade= 'Arapiraca'&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 79px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550687338144587474" border="0" alt="" src="http://1.bp.blogspot.com/_q9uYjmS7tjc/TQgAuald3tI/AAAAAAAAACI/08bJvt9b2zM/s400/tabela7.JPG" /&gt; &lt;p align="center"&gt;           &lt;strong&gt;ORDER BY&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;         A palavra-chave ORDER BY classificar os registros em ordem crescente por padrão. Se você quiser classificar os registros em ordem decrescente, você pode usar a palavra chave DESC. &lt;/p&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sintaxe &lt;/strong&gt;&lt;br /&gt;SELECT &lt;atributos&gt;FROM &lt;tabela&gt;ORDER BY &lt;/div&gt;&lt;atributo&gt;&lt;br /&gt;&lt;div align="justify"&gt;         Agora queremos selecionar todas as pessoas da tabela acima, no entanto, queremos ordenar as pessoas por seu nome. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;SELECT * FROM Pessoas ORDER BY Nome&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 140px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550689559207523394" border="0" alt="" src="http://1.bp.blogspot.com/_q9uYjmS7tjc/TQgCvssItEI/AAAAAAAAACY/W9XpMYfz_Eg/s400/tabela9.JPG" /&gt;                                     Observe que a tabela ficou ordenada pelo atributo nome.&lt;br /&gt;&lt;br /&gt;       Agora queremos selecionar todas as pessoas da tabela acima, no entanto, queremos ordenar as pessoas por seu ID em ordem decrescente. &lt;/p&gt;&lt;div align="center"&gt;SELECT * FROM Pessoas ORDER BY ID DESC &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 135px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550691763843326354" border="0" alt="" src="http://4.bp.blogspot.com/_q9uYjmS7tjc/TQgEwBmRYZI/AAAAAAAAACg/sco90UGxR5E/s400/tabela10.JPG" /&gt; &lt;p align="center"&gt; Observe que a tabela ficou ordenada pelo atributo ID.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;INSERT INTO &lt;/strong&gt;&lt;strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/strong&gt;          A instrução INSERT INTO é utilizada para inserir uma nova linha em uma tabela. É possível escrever a instrução INSERT INTO em duas formas (sintaxes).&lt;br /&gt;           A primeira forma não especifica o nome da coluna onde os dados serão inseridos, apenas os seus valores: &lt;/p&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sintaxe 1&lt;br /&gt;&lt;/strong&gt;INSERT INTO Nome_Tabela VALUES (valor1, valor2, valor3,...)&lt;br /&gt;&lt;/div&gt;&lt;strong&gt;Sintaxe 2&lt;br /&gt;&lt;/strong&gt;INSERT INTO Nome_Tabela(coluna1,coluna2, coluna3,...)&lt;br /&gt;VALUES (valor1, valor2, valor3,...)&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;           Agora Vamos inserir uma nova linha na tabela Pessoas com cada sintaxe. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;INSERT INTO Pessoas&lt;br /&gt;VALUES (4,’Hulk’, 'Marcelo', 'Rua M 24', 'Maceió') &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;INSERT INTO Pessoas (Id, Apelido, Nome,)&lt;br /&gt;VALUES (5, 'Chorão', 'Junior')&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 193px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550693036430586354" border="0" alt="" src="http://4.bp.blogspot.com/_q9uYjmS7tjc/TQgF6GWt8fI/AAAAAAAAACo/mWGnOwHHtKo/s400/tabela11.JPG" /&gt;          Note que com a sintaxe 2 podemos deixar algum atributo sem valor, só temos que observar as restrições da tabela! Quando criamos essa tabela na pagina 6 note que não colocamos restrição nenhuma nesses 2 atributos.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;strong&gt;UPDATE&lt;/strong&gt; &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;           A instrução UPDATE é usada para atualizar registros em uma tabela. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sintaxe&lt;/strong&gt;&lt;br /&gt;UPDATE nome_tabela&lt;br /&gt;SET atributo1 = valor1, atributo2 = valor2,...&lt;br /&gt;WHERE &lt;/div&gt;&lt;condição&gt;&lt;br /&gt;&lt;div align="justify"&gt;          Observe a cláusula WHERE no UPDATE. A cláusula WHERE especifica o registro ou registros que devem ser atualizadas. Se você omitir a cláusula WHERE, todos os registros serão atualizados! &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;           Agora queremos atualizar os dados do "Junior" da tabela Pessoas. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;UPDATE Pessoas&lt;br /&gt;SET (Endereço = 'Rua J 100', Cidade = 'Lagoa da Canoa')&lt;br /&gt;WHERE Id = 5 AND nome='Junior'&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 192px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550694248996226018" border="0" alt="" src="http://2.bp.blogspot.com/_q9uYjmS7tjc/TQgHArg5Q-I/AAAAAAAAACw/i9h_OJWdV-E/s400/tabela12.JPG" /&gt; &lt;p align="center"&gt; Tenha cuidado ao atualizar registros, pois, você pode cometer erros como o mostrado abaixo.&lt;br /&gt;&lt;br /&gt;UPDATE Pessoas SET Cidade='Maceió'&lt;br /&gt;&lt;/p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 191px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550695356890033234" border="0" alt="" src="http://2.bp.blogspot.com/_q9uYjmS7tjc/TQgIBKvXLFI/AAAAAAAAAC4/DHb9C3NjtzM/s400/tabela13.JPG" /&gt;           Com o código acima atualizamos erroneamente a cidade de todas as pessoas, pois não colocamos a condição de qual tupla seria atualizada.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;DELETE &lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;           A instrução DELETE é usado para excluir registros em uma tabela. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sintaxe&lt;/strong&gt;&lt;br /&gt;DELETE FROM nome_tabela&lt;br /&gt;WHERE &lt;/div&gt;&lt;condição&gt;&lt;br /&gt;&lt;div align="justify"&gt;         Agora vamos eliminar a pessoa João da tabela Pessoas. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;DELETE FROM Pessoas&lt;br /&gt;WHERE nome=’João’ &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 163px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550696969237265906" border="0" alt="" src="http://4.bp.blogspot.com/_q9uYjmS7tjc/TQgJfBM5ffI/AAAAAAAAADA/W14suPvr_KA/s400/tabela14.JPG" /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;         Podemos apagar também todos os atributos da Tabela sem afetar sua estrutura. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;DELETE FROM Pessoas &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;Veja que todas as pessoas foram excluídas, mas a estrutura da tabela não foi alterada!&lt;br /&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 74px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550698534808391570" border="0" alt="" src="http://4.bp.blogspot.com/_q9uYjmS7tjc/TQgK6JaJD5I/AAAAAAAAADI/e8B9nSsNSx4/s400/tabela15.JPG" /&gt; &lt;p align="center"&gt; &lt;strong&gt;Funções &lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/strong&gt;            Funções agregadas SQL retornar um único valor, calculado a partir dos valores em uma coluna. &lt;/p&gt;&lt;p align="justify"&gt;• &lt;strong&gt;AVG -&lt;/strong&gt; Retorna o valor médio&lt;br /&gt;• &lt;strong&gt;COUNT -&lt;/strong&gt; Retorna o número de linhas&lt;br /&gt;• &lt;strong&gt;FIRST -&lt;/strong&gt; Retorna o primeiro valor&lt;br /&gt;• &lt;strong&gt;LAST -&lt;/strong&gt; Retorna o último valor&lt;br /&gt;• &lt;strong&gt;MAX -&lt;/strong&gt; Retorna o maior valor&lt;br /&gt;• &lt;strong&gt;MIN -&lt;/strong&gt; Retorna o menor valor&lt;br /&gt;• &lt;strong&gt;SUM -&lt;/strong&gt; Retorna a soma &lt;/p&gt;&lt;div align="center"&gt;&lt;strong&gt;AVG &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;O AVG retorna o valor médio de uma coluna numérica. &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;strong&gt;Sintaxe&lt;/strong&gt;&lt;br /&gt;SELECT AVG (nome_coluna) FROM nome_tabela &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;         Para mostrar o funcionamento vamos aplicar o AVG na coluna salário da tabela abaixo &lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 259px; DISPLAY: block; HEIGHT: 269px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5550709599175509490" border="0" alt="" src="http://4.bp.blogspot.com/_q9uYjmS7tjc/TQgU-LY1BfI/AAAAAAAAADg/pwfiiUoEh3k/s400/tabela16.JPG" /&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="center"&gt;(SELECT AVG (Salário) FROM Emp_salario &lt;/p&gt;&lt;div align="left"&gt;         Após ser feita a consulta acima na tabela Emp_salario o resultado será 800. &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;strong&gt;COUNT &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;        A função count retorna o número de linhas que corresponde a um critério especificado. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;Sintaxe&lt;br /&gt;&lt;/strong&gt;SELECT COUNT (nome_coluna) FROM nome_tabela &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;        Vamos contar quantas pessoas ganham acima de 600,00 da tabela Emp_salario.&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;SELECT COUNT (Salário) FROM Emp_salario WHERE (salário&gt;600) &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;        Após ser feita a consulta acima o resultado será 3. &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;strong&gt;FIRST &lt;/strong&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;O FIRST retorna o primeiro valor da coluna selecionada. &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;strong&gt;Sintaxe &lt;/strong&gt;&lt;br /&gt;SELECT FIRST (column_name) FROM table_name &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;        Vamos recuperar qual o primeiro valor da coluna salário. &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;SELECT FIRST (salário) FROM Emp_salario &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;         Após ser feita a consulta acima o resultado será 1000. &lt;/div&gt;&lt;div align="left"&gt; &lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;LAST &lt;/strong&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;           A função last retorna o último valor da coluna selecionada. &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;strong&gt;Sintaxe&lt;br /&gt;&lt;/strong&gt;SELECT LAST (nome_coluna) FROM nome_tabela &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;          Vamos recuperar o ultimo valor da coluna salário. Para isso usaremos a consulta abaixo. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;SELECT LAST (salário) FROM Emp_salario &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;          Após ser feita a consulta acima o resultado será 600. &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;strong&gt;MAX &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;          A função max retorna o maior valor da coluna selecionada. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;Sintaxe&lt;/strong&gt;&lt;br /&gt;SELECT MAX (nome_coluna) FROM nome_tabela &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;          Vamos recuperar qual o maior salário da tabela abaixo. Para isso usaremos a consulta abaixo.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;SELECT MAX (salário) FROM Emp_salario&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;          Após ser feita a consulta acima o resultado será 1200. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;MIN&lt;/strong&gt; &lt;/div&gt;&lt;div align="center"&gt; &lt;/div&gt;&lt;div align="left"&gt;           O MIN retorna o menor valor da coluna selecionada. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;Sintaxe&lt;/strong&gt;&lt;br /&gt;SELECT MIN (nome_coluna) FROM nome_tabela &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;           Vamos recuperar qual o menor salário da tabela acima. Para isso usaremos a consulta abaixo.&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;SELECT MIN (salário) FROM Emp_salario &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;          Após ser feita a consulta acima o resultado será 500, representando o menor salário existente dos empregados da tabela acima. &lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;SUM &lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="left"&gt;           A função SUM retorna a soma total de uma coluna numérica. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Sintaxe&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;SELECT SUM (nome_coluna) FROM nome_tabela &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;         Vamos recuperar a soma dos salários da tabela abaixo. Para isso usaremos a consulta abaixo.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;SELECT SUM (salário) FROM Emp_salario&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;          Após ser feita a consulta acima o resultado será 4000, representado pela soma de todos os salários da tabela acima.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;Bibliografia &lt;/strong&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;Elmasri &amp;amp; Navathe&lt;/strong&gt;&lt;br /&gt;Sistemas de Banco de dados, 4a ed., 2005.&lt;br /&gt;Capítulo 1: Banco de dados e usuários de banco de dados&lt;br /&gt;Capítulo 2: Conceitos e arquitetura do SGBD &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;C. A. Heuser&lt;/strong&gt;&lt;br /&gt;Engenharia de Software, 4a ed., 1998.&lt;br /&gt;Capítulo 2 - Introdução &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;Site de programação em varias linguagens&lt;/strong&gt;&lt;br /&gt;http://www.w3schools.com/default.asp &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78775790352287160-5905680662259765441?l=blog.aracomp.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aracomp.com.br/feeds/5905680662259765441/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://blog.aracomp.com.br/2010/12/tutorial-sql.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/5905680662259765441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/5905680662259765441'/><link rel='alternate' type='text/html' href='http://blog.aracomp.com.br/2010/12/tutorial-sql.html' title='Tutorial SQL'/><author><name>clédson Medeiros</name><uri>http://www.blogger.com/profile/11944439866267008642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_q9uYjmS7tjc/TQfrt0nd6vI/AAAAAAAAAAM/vKVZ9s2N0kU/S220/cledson.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q9uYjmS7tjc/TQf0NnnP7CI/AAAAAAAAAA4/amGOZCr2euw/s72-c/sql.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78775790352287160.post-7958186854065386467</id><published>2010-11-05T15:16:00.008-03:00</published><updated>2010-11-05T15:39:08.148-03:00</updated><title type='text'>Uma Abordagem Simples sobre Adobe Flex!</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" &gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;Tutorial sobre FLEX&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;1. Breve Histórico&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Adobe Flex, antes chamado de Macromedia Flex e depois rebatizado como Adobe Flex pela Adobe é uma tecnologia lançada em março de 2004 pela Macromedia e suporta o desenvolvimento de aplicações ricas para a Internet (RIAs). Baseada na plataforma do Macromedia Flash, no início era composta por um&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;SDK, um IDE e integração com o J2EE também conhecido como Flex Data Services que é um servidor que fornece uma série de serviços que podem elevar as funcionalidades de uma aplicação FLEX, como:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;- serviços de mensageria;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;- integração nativa com Hibernate e Enterprise JavaBeans;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;- push de dados, sincronia e lock de dados;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Em 2005 a Adobe adquiri a Macromedia e passa a requerer uma licença para o Flex Data Services que, por sua vez, passa a se chamar LiveCycle Data Services;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;A mais nova versão do FLEX surgiu em 22 de março de 2010, o FLEX 4.0, que inova na integração da linguagem com o design.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;2. O que é?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;"É um framework multi-plataforma para desenvolvimento de aplicações RIA, levando um modelo de programação padrão e conhecido por profissionais e desenvolvedores.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Nele usamos uma linguagem de marcação (MXML) que é baseada no XML para definir a interface da aplicação e o Actionscript 3.0 para a parte lógica. As aplicações Flex levam a extensão .mxml e podem ser criadas em qualquer editor de texto comum, como por exemplo o Bloco de Notas."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Fonte:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt; E-genial&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;O MXML é uma linguagem de marcação baseada em XML introduzido pela primeira vez pela Macromedia em março de 2004. Ele é usado em combinação com ActionScript, que faz a parte lógica da aplicação, para desenvolver aplicativos ricos para internet, além de poder trabalhar com várias linguagens servidor, entre elas pode se destacar o PHP, Java, ColdFusion, ASP.NET.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;3. Instalação:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Para começar a programar em FLEX o desenvolvedor possui basicamente dois caminhos a seguir. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Para aqueles que tenham aquele espírito aventureiro, existe a alternativa de baixar gratuitamente a SDK e usar um editor qualquer, que a principio só precisa ser compatível com os padrões do XML, juntos (editor+sdk) é possível desenvolver as famosas aplicações RIA.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Umas das opções de editor encontrado na net seria o “MXML EDITOR” também conhecido por TOMI(The Open Source MXML IDE) que possui entre outras coisas, os destaques das palavras reservadas que tanto nos auxiliam no desenvolvimento.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Entretanto, se o desenvolvedor for do tipo prático e que precisa de facilidade e velocidade, a melhor opção é a ferramenta Flex Builder. Ela foi simplesmente feita para o Flex. Nela encontram-se a sdk e editor prontamente instalados e integrados. Além de possuir a interface amigável do eclipse (o flex builder foi feito com base no eclipse galileo) e todas as facilidades encontradas nas IDEs mais modernas, tais como eclipse e netbeans, e como uma das partes fundamentais do FLEX é o desenvolvimento de interfaces o Flex Builder tambem possui um completo recurso de “Drag And Drop”, no qual facilmente e rapidamente o desenvolvedor pode dispor os elementos que julgar necessário em sua aplicação.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Bem... uma vez que optemos pelo uso do Flex Builder, a instalação é a mais trivial possível, trata-se do clássico “next-&gt;next-&gt;next... -&gt;finish”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;E o uso da ferramenta é muito semelhante ao do Eclipse, a disposição dos ícones é basicamente a mesma (veja as imagens).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt;&lt;a href="http://3.bp.blogspot.com/_6naLn-UET4k/TNRK2CTMyfI/AAAAAAAAAIs/RBCOUQdWkVQ/s1600/foto1.png"&gt;&lt;img src="http://3.bp.blogspot.com/_6naLn-UET4k/TNRK2CTMyfI/AAAAAAAAAIs/RBCOUQdWkVQ/s400/foto1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5536132134135974386" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 232px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_6naLn-UET4k/TNRLM8Jm3JI/AAAAAAAAAI0/qmYCu1YO280/s1600/foto2.png"&gt;&lt;img src="http://4.bp.blogspot.com/_6naLn-UET4k/TNRLM8Jm3JI/AAAAAAAAAI0/qmYCu1YO280/s400/foto2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5536132527622118546" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 232px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;Exemplos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;span style="mso-tab-count:1"&gt;           &lt;/span&gt;Como já foi dito, o Flex faz uso de duas linguagens. O MXML para interfaces das aplicações e o ActionScript para a logica que a aplicação necessita ter.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Num mesmo arquivo podemos escrever a interface em MXMLe o programa (entenda por programa a parte do ActionScript) ou ainda deixar em arquivos separados, ou seja, o arquivo MXML precisaria importar os Scripts para que a aplicação funcione corretamente.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Abaixo temos um exemplo trivial de “Hello World!”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-autospace:ideograph-numeric"&gt;&lt;span style="font-size:8.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;mso-bidi-font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;&lt;!--?xml version="1.0" encoding="utf-8"?--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;a href="http://4.bp.blogspot.com/_6naLn-UET4k/TNRPH5iuF3I/AAAAAAAAAJE/ilyQO3V4Pw4/s1600/foto4.png"&gt;&lt;img src="http://4.bp.blogspot.com/_6naLn-UET4k/TNRPH5iuF3I/AAAAAAAAAJE/ilyQO3V4Pw4/s400/foto4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5536136839069308786" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 132px; " /&gt;&lt;/a&gt;&lt;p class="MsoNormal" style="text-autospace:ideograph-numeric"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;Uma aplicação em MXML, pode ser vista como uma disposição de camadas, chamadas de layers, essas camadas organizam e dão logica para a interface, definindo assim “o que está sobre o que”.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Normalmente temos como camada base de uma interface o “Panel” e sobre o Panel dispomos outras camadas, botões, campos etc.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;span style="mso-tab-count:1"&gt;           &lt;/span&gt;Explicando o código acima, podemos destacar 3 partes básicas:&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;1 - Identificação:&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;as duas primiras linhas, que identificam a aplicação e versão da linguagem usada;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;2 - Interface: entre as tags &lt;/span&gt;&lt;span style="font-size:8.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;mso-bidi-font-family:&amp;quot;Courier New&amp;quot;;color:blue"&gt;&lt;mx:panel&gt; &lt;/mx:panel&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt; encontra-se descrita a interface, que no caso apenas carrega um button;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;3 - Script: entre as tags &lt;/span&gt;&lt;span style="font-size:8.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;mso-bidi-font-family:&amp;quot;Courier New&amp;quot;;color:#006633"&gt;&lt;mx:script&gt; &lt;/mx:script&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt; encontra-se o script do programa, que neste caso, apenas implementa uma função que “joga” a palavra “Mundo” na tela, usando uma caixa de alerta, função esta chamada através de um evento de clique no button acima descrito.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;O resultado da aplicação descrita resulta na imagem abaixo.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6naLn-UET4k/TNRLqUcW0LI/AAAAAAAAAI8/nLNyCVGsfSI/s1600/foto3.png"&gt;&lt;img src="http://2.bp.blogspot.com/_6naLn-UET4k/TNRLqUcW0LI/AAAAAAAAAI8/nLNyCVGsfSI/s400/foto3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5536133032359415986" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 254px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;4. Aprofundamento&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Para quem se interessar de verdade e quiser conhecer um pouco mais sobre a tecnologia FLEX da Adobe, segue os links:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://flex.org/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://www.adobe.com/br/products/flex/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://www.adobe.com/devnet/flex.html&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://labs.adobe.com/technologies/flex/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;5. Conclusão&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;span style="mso-tab-count:1"&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;O Flex possui plataforma com suporte para Windows, Mac e Linux, mostrando-se muito portável. Tem na linguagem MXML grande importância na definição da interface auxiliando no desenvolvimento do código. É de se ressaltar, também, que a integração com vídeo é um ponto forte juntamente com todas as outras ferramentas da Adobe. São disponibilizados Vários plugins gratuitos para a plataforma e a tecnologia possui suporte direto com JAVA e AJAX.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;Com tudo isso, por ser uma tecnologia criada pela Adobe, há um forte sentimento em fazer com que ela evolua e se solidifique.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;6. Referências&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://blog.mxml.com.br/submetendo-um-formulario-no-flex-usando-o-metodo-get-com-php&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://www.adobe.com/br/products/coldfusion/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://imasters.uol.com.br/artigo/4551/flex/usando_mxml/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://www.adobe.com/br/products/flashcatalyst/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://imasters.uol.com.br/artigo/15510/flex/adobe_flex_4_adobe_flash_builder/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://imasters.uol.com.br/artigo/14342/flex/novo_flex_4_gumbo/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://imasters.uol.com.br/artigo/16314/flex/adobe_flex_4_duvidas_que_voce_tem_mas_nao_teve_coragem_de_perguntar/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://www.igorcosta.com/blog/?p=31&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;http://www.vedovelli.com.br/?p=62&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;i&gt;&lt;b&gt;Tutorial feito por:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;i&gt;Antonio Carlos Pereira Pacheco&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;i&gt;Guilherme Oliveira Amorim&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; "&gt;&lt;i&gt;Allen Deyjan&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78775790352287160-7958186854065386467?l=blog.aracomp.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aracomp.com.br/feeds/7958186854065386467/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://blog.aracomp.com.br/2010/11/uma-abordagem-simples-sobre-adobe-flex.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/7958186854065386467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/7958186854065386467'/><link rel='alternate' type='text/html' href='http://blog.aracomp.com.br/2010/11/uma-abordagem-simples-sobre-adobe-flex.html' title='Uma Abordagem Simples sobre Adobe Flex!'/><author><name>Antonio Carlos .'.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6naLn-UET4k/TNRK2CTMyfI/AAAAAAAAAIs/RBCOUQdWkVQ/s72-c/foto1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78775790352287160.post-5866954672411696791</id><published>2010-10-14T20:17:00.009-03:00</published><updated>2010-10-14T22:09:29.912-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lite'/><category scheme='http://www.blogger.com/atom/ns#' term='device'/><category scheme='http://www.blogger.com/atom/ns#' term='flashlite'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Tutorial Flash Lite</title><content type='html'>&lt;style type="text/css"&gt;&lt;!-- .MsoNormal { font-family:"Calibri","sans-serif"; text-align:justify; } --&gt;&lt;/style&gt;&lt;div class="MsoNormal"&gt;Para começar a desenvolver  aplicativos Flash Lite primeiramente você precisa do software Adobe Flash  Professional, aqui está o link para fazer o download da versão trial: &lt;a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash"&gt;https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash&lt;/a&gt; . Na hora da instalação instale tudo, porque no pacote de instalação inclui um  software que tem o objetivo de servir como emulador para dispositivos móveis, o  Adobe Device Central.&lt;br /&gt;&lt;br /&gt;Para desenvolver aplicativos Flash Lite, é necessário um conhecimento no  desenvolvimento de desenhos vetoriais no Adobe Flash Professional para a parte  de interface gráfica, e para a parte lógica o conhecimento da linguagem de  programação para o Flash, o ActionScript. Neste Tutorial focaremos na linguagem  ActionScript. Pode-se encontrar tutoriais ensinando a mexer com o Adobe Flash  na literatura e na internet. Neste link você pode encontrar toda a documentação  do Flash, tutoriais, AcitonScript e o Flash Lite: &lt;a href="http://help.adobe.com/pt_BR/Flash/10.0_Welcome/WS0440A5AD-E290-4bd6-A402-B09F727E9A05.html"&gt;http://help.adobe.com/pt_BR/Flash/10.0_Welcome/WS0440A5AD-E290-4bd6-A402-B09F727E9A05.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Primeiros Passos&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Primeiramente execute o software  Adobe Device Central. No campo &lt;strong&gt;New  Document &lt;/strong&gt;você escolhe a versão do &lt;strong&gt;player&lt;/strong&gt; e a versão do &lt;strong&gt;ActionScript:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image1.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No &lt;strong&gt;Player  Version&lt;/strong&gt; selecione Flash Lite 3.1:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image2.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Automaticamente ele seleciona a  versão do ActionScript a ser usado. No canto da tela você pode escolher o tipo  de aparelho que você queira emular:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image3.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No próprio Adobe Device já vem  instalado a pasta Flash Lite. Se você deseja usar outros emuladores, no próprio  Adobe Device tem uma aba chamada &lt;strong&gt;Browse&lt;/strong&gt; clique nele e irá abrir uma lista de dispositivos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image4.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No campo 2, da pesquisa você  digita a marca do aparelho que você deseja desenvolver:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image5.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na lista irá aparecer todos os  aparelhos que suportam Flash. Para salvar um desses devices, você criar uma  pasta no campo Test Devices. Para criar uma nova pasta é só clicar com o botão  direito do mouse no campo e escolher a opção &lt;strong&gt;Add New Group:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image6.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image6.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Irá aparecer uma nova pasta  renomeie:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image7.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image7.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora você tem sua própria pasta,  para colocar um dos devices na lista que você procurou, clicar no dispositivo  escolhido e arrastar para sua pasta:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image8.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image8.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Escolhi o aparelho Nokia 5200,  que suporta a versão Flash Lite 2.0, podendo usar as versões do ActionScript  2.0 e 1.0:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image9.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image9.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na aba onde se encontra a opção  Browse você clica na aba &lt;strong&gt;Create&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image10.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image10.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Selecione a sua pasta, o device  escolhido e clique em Create, abaixo da sua tela. O Próprio Adobe Device irá  abrir o Adobe Flash com as especificações do aparelho, como tamanho da tela,  versão do Flash Lite e do ActionScript.&lt;br /&gt;&lt;br /&gt;Hello World&lt;br /&gt;&lt;br /&gt;O Adobe Flash será aberto com as  configurações do emulador. Nosso primeiro &lt;strong&gt;Hello  World&lt;/strong&gt; será somente código sem necessidade de mexer em desenho vetorial no  Adobe Flash.&lt;br /&gt;&lt;br /&gt;Na timeline você clica na  primeiro frame e vá na aba &lt;strong&gt;Window&lt;/strong&gt; e  clique em &lt;strong&gt;Action&lt;/strong&gt; (ou simplesmente  tecle F9) para abrir uma janela de edição onde você irá colocar o código  ActionScript:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image11.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image11.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1-&amp;gt;Aba Window&lt;br /&gt;&lt;br /&gt;2-&amp;gt;Abre a janela Action&lt;br /&gt;&lt;br /&gt;3-&amp;gt;Primeiro Frame&lt;br /&gt;&lt;br /&gt;Ao fazer isso abrirá uma janela  de edição:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image12.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image12.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora vamos para a parte de  codificação:&lt;br /&gt;&lt;br /&gt;Primeiro vamos criar um campo de  texto, em ActionScript 2.0 usaremos o createTextField. Digite esse código:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/clip_image020.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/clip_image020.png" alt="Caixa de texto: this.createTextField('textbox_txt', this.getNextHighestDepth(), 10, 10, 100, 22);" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esses atributos do createTextField significam:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;"textbox_txt" -&amp;gt; nome da instância do novo campo de texto;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;this.getNextHighestDepth() -&amp;gt; &lt;span style="color:black;"&gt;especifica a profundidade do campo de  texto novo;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:black;"&gt;10 -&amp;gt;&lt;/span&gt; Um inteiro que especifica a  coordenada &lt;strong&gt;x&lt;/strong&gt; do novo campo de texto;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:black;"&gt;10 -&amp;gt;&lt;/span&gt; Um inteiro que especifica a  coordenada &lt;strong&gt;y&lt;/strong&gt; do novo campo de texto;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:black;"&gt;100 -&amp;gt; U&lt;/span&gt;&lt;span style="color:black;"&gt;m inteiro positivo que  especifica a largura do campo de texto novo;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:black;"&gt;22 -&amp;gt; U&lt;/span&gt;&lt;span style="color:black;"&gt;m inteiro positivo que  especifica a altura do campo de texto novo.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Feito isso iremos dizer que tipo de textField nós iremos  querer. Digite o seguinte código:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/clip_image021.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/clip_image021.png" alt="Caixa de texto: textbox_txt.type = 'input';" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Isso significa que a caixa de texto pode ser editada,  existem três tipos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;INPUT -&amp;gt; Esta é uma caixa de texto você pode editar o texto. Você pode usar isso  para que os usuários insiram números, nomes, ou outro texto. Este texto é  selecionável;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;DYNAMIC  -&amp;gt;Esta é uma caixa de texto que só pode ser editadas pelo código. Você pode  usá-lo para mostrar a pontuação de um usuário, ou outras informações que podem  mudar. Este texto é selecionável;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;STATIC  -&amp;gt;Este é um tipo de texto que você não pode criar com o código. Você deve  usar as ferramentas gráficas para criar texto estático. Este tipo de texto não  é selecionável.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/clip_image022.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/clip_image022.png" alt="Caixa de texto: textbox_txt.maxChars = 16;   textbox_txt.text = 'Hello World!';" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Depois de feito isso você agora vai  dizer o máximo de caracteres que irá suportar seu TextField (no máximo 16  caracteres)  e finalmente o que irá  aparecer na tela:&lt;br /&gt;&lt;br /&gt;Nosso código irá ficar assim:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/clip_image023.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/clip_image023.png" alt="Caixa de texto: this.createTextField('textbox_txt', this.getNextHighestDepth(), 10, 10, 100, 22);   textbox_txt.type = 'input';   textbox_txt.maxChars = 16;   textbox_txt.text = 'Hello World!';" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pronto temos tudo pronto para executar nosso primeiro  aplicativo Flash Lite, salve seu projeto em uma pasta. Para executar seu  aplicativo você vá na aba &lt;strong&gt;Control-&amp;gt;Text  Movie-&amp;gt;in Device Central:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image13.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image13.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ou no atalho do teclado Ctrl+ENTER. Feito isso vai abrir o  Device Central com emulador:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image14.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image14.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pronto temos nosso primeiro Hello World feito em ActionScript 2.0:&lt;br /&gt;&lt;br /&gt;Agora faremos um Hello World mais fácil, usando as  ferramentas do Adobe Flash.&lt;br /&gt;&lt;br /&gt;Repita os mesmos passos para criação do projeto feito isso.  Na Tela de edição, colocaremos um campo de texto, clicamos na ferramenta &lt;strong&gt;Text Tool &lt;/strong&gt;e colocamos um campo de texto  na nossa tela:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image5.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image16.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image16.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na tela de propriedades você pode editar a fonte do texto,  tamanho, cor etc. No campo &lt;strong&gt;Variable&lt;/strong&gt; você digita o nome da variável que iremos usar para mostrar no campo nosso  texto. Coloquei o nome de mainText.&lt;br /&gt;&lt;br /&gt;Feito na TimeLine clique no primeiro frame (como nos passos  anteriores para colocar um código actionscript) e tecle F9, que é o atalho para  abrir a janela Action e na tela você digita esse código simples:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/clip_image032.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/clip_image032.png" alt="Caixa de texto: mainText = 'Hello World!';" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E pronto. Tecle Ctrl+Enter e o resultado é o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.personalwd.com.br/Allysson/media/image17.png"&gt;&lt;img src="http://www.personalwd.com.br/Allysson/media/thumb/image17.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Isso é tudo pessoal, para mais informações vai a seguir  links da própria Adobe que ajudam no desenvolvimento:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/support/flash/"&gt;http://www.adobe.com/support/flash/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aqui você encontra dicas sobre o Adobe Flash, ActionScript,  instalação etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78775790352287160-5866954672411696791?l=blog.aracomp.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aracomp.com.br/feeds/5866954672411696791/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://blog.aracomp.com.br/2010/10/tutorial-flash-lite.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/5866954672411696791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/5866954672411696791'/><link rel='alternate' type='text/html' href='http://blog.aracomp.com.br/2010/10/tutorial-flash-lite.html' title='Tutorial Flash Lite'/><author><name>Allysson David</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78775790352287160.post-2584932476669480351</id><published>2010-09-27T20:01:00.000-03:00</published><updated>2010-09-27T20:01:43.248-03:00</updated><title type='text'>Tutorial GRAILS (Groovy on Rails)</title><content type='html'>&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt; line-height: 115%;"&gt;Grails: Programação Ágil e Descomplicada&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt; line-height: 115%;"&gt;“Como obter, instalar, utilizar e inovar”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="right" class="MsoNormal" style="text-align: right;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%;"&gt;Por Felipe Prochazka / Cledson Medeiros&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="right" class="MsoNormal" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt;"&gt;1 – Definição do Grails&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Grails (Groovy on Rails)&lt;/span&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;é um&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Framework"&gt;framework&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;para construção de&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Software"&gt;aplicações&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;para&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Web"&gt;web&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;através da linguagem de programação&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Groovy"&gt;Groovy&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;(uma&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/w/index.php?title=Linguagem_de_programa%C3%A7%C3%A3o_din%C3%A2mica&amp;amp;action=edit&amp;amp;redlink=1"&gt;linguagem dinâmica&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;para a&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Plataforma_Java"&gt;plataforma Java&lt;/a&gt;). Foi desenvolvido em&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/C%C3%B3digo_aberto"&gt;código aberto&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e pretende ser um&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;framework&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;de alta produtividade graças à utilização do paradigma da&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_por_conven%C3%A7%C3%A3o"&gt;programação por convenção&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;que preserva o desenvolvedor dos detalhes de configuração.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Foi inicialmente chamado de "Groovy on Rails" até ser renomeado para Grails, após um pedido do fundador do projeto&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Ruby_on_Rails"&gt;Ruby on Rails&lt;/a&gt;,&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/w/index.php?title=David_Heinemeier_Hansson&amp;amp;action=edit&amp;amp;redlink=1"&gt;David Heinemeier Hansson&lt;/a&gt; Os trabalhos iniciaram em julho de&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/2005"&gt;2005&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e a versão 0.1 foi liberada em março de&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/2006"&gt;2006&lt;/a&gt;. Portanto, é uma tecnologia relativamente nova, onde quem a domina, ganha destaque em sua área de atuação.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Atualmente, em setembro de 2010, o Grails está na versão &lt;b style="mso-bidi-font-weight: normal;"&gt;1.3.4&lt;/b&gt; (utilizada neste tutorial) e conta com mais de 500 pluguins e este número não para de crescer, devido a facilidade de se construí-los, seguindo uma arquitetura modular que permite usar diversos componentes no desenvolvimento ágil das aplicações web com a mesma desenvoltura de uma aplicação desktop, só que com o paradigma de programação por convenção, que já cria todo um esqueleto (Rails) que além de otimizar o trabalho do programador, permite aumentar a consciência dos mesmos em relação a padrões de projeto e engenharia de software em geral. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;O Grails permite que desenvolvedores Java ou desenvolvedores web, ou ainda, desenvolvedores de outras linguagens, não necessariamente voltadas para a web, se sintam mais integrados, confiantes e determinados a aprender cada vez mais sobre este incrível framework, no mínimo, revolucionário para a comunidade Java e para o mundo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt;"&gt;2- Obtendo o Grails e Instalando o Java JDK&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2.1 – Baixe o Grails&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;a href="http://grails.org/Download"&gt;http://grails.org/Download&lt;/a&gt; - Selecionando a versão mais recente. Vale à pena ressaltar que foi utilizada a versão 1.3.4 na elaboração das aplicações deste tutorial. Caso, já esteja disponível uma versão mais recente, talvez ao abrir algum projeto antigo, possa dar algum tipo de erro, mas isso é facilmente resolvido como o comando &lt;b style="mso-bidi-font-weight: normal;"&gt;grails upgrade&lt;/b&gt;, que veremos ainda neste tutorial, então baixe qualquer tipo de versão atual sem se preocupar.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%;"&gt;2.2 – Baixe,&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Instale o Java JDK e configure as variáveis de ambiente do Grails:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-ansi-language: EN-US;"&gt;2.21- Windows 7:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US;"&gt;ou&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;a href="http://www.baixaki.com.br/download/java-se-development-kit-jdk-for-windows.htm"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;http://www.baixaki.com.br/download/java-se-development-kit-jdk-for-windows.htm&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%;"&gt;Após a instalação, é necessário configurar as variáveis de ambiente para que estas sejam acessadas pelas aplicações Java e também configurar o PATH do grails para poder ser utilizado pela linha de comando. É um procedimento bem simples, vejamos como isso pode ser setado:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l1 level1 lfo2; tab-stops: list 0cm; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 12.0pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%;"&gt;Windows 7:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%;"&gt;Iniciar -&amp;gt; botão direito em Computador -&amp;gt; selecione Propriedades -&amp;gt; Configurações Avançadas do Sistema (no menu à esquerda) -&amp;gt; aba Avançado -&amp;gt; Variáveis de Ambiente&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%;"&gt;A seguinte janela será exibida, com uma ligeira diferença nas variáveis de ambiente, devido às aplicações instaladas no computador:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEclo5hsBI/AAAAAAAAAGY/4-0AMajcV9U/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="412" src="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEclo5hsBI/AAAAAAAAAGY/4-0AMajcV9U/s640/1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; line-height: 115%;"&gt;Verifique se as seguintes variáveis de ambiente, tanto do Java JDK quanto do Grails, existem, caso contrário deverão ser criadas:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l1 level1 lfo2; tab-stops: list 0cm; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Variáveis de usuário:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Variável:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; JAVA_HOME&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Valor:&lt;/b&gt; C:\Program Files (x86)\Java\&lt;span style="color: red;"&gt;jdk1.6.0_18&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Obs.: Este é o caminho para o jdk versão 1.6.0_18, você deverá para a pasta da versão atual do seu Java JDK.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US;"&gt;Variável:&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US;"&gt; Path&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Valor:&lt;/b&gt; %PATH%;%JAVA_HOME%\\bin;C:\GRAILS\bin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l1 level1 lfo2; tab-stops: list 0cm; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Variáveis do Sistema:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US;"&gt;Variável:&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US;"&gt; GRAILS_HOME&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Valor:&lt;/b&gt; C:\&lt;span style="color: red;"&gt;GRAILS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Obs.: Este é o caminho para o Grails, você deverá para a pasta da versão atual do seu Grails. Quando se baixou o source do grails, a pasta foi renomeada simplesmente para GRAILS.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Como pode ter percebido, sempre que você for inserir um novo valor numa mesma variável, se separa por ponto e vírgula. Caso,t enha alguma dúvida em como configurar as variáveis de ambiente, assista este video: &lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=vzZOYTFJ33"&gt;http://www.youtube.com/watch?v=vzZOYTFJ33&lt;/a&gt; (feito baseado no Windows Vista ou superior).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Agora, abra o prompt de comando, digite &lt;b style="mso-bidi-font-weight: normal;"&gt;grails&lt;/b&gt; e verifique o Grails está funcionando:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEdOmZLr1I/AAAAAAAAAGc/ms7cTBNTJLg/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEdOmZLr1I/AAAAAAAAAGc/ms7cTBNTJLg/s640/2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" style='width:305.25pt;height:165.75pt' filled="t"&gt;  &lt;v:fill color2="black"/&gt;  &lt;v:imagedata src="file:///C:\Users\Felipe\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"  o:title=""/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img border="0" src="file:///C:/Users/Felipe/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg" v:shapes="_x0000_i1026" /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-align: justify; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;E digite &lt;b style="mso-bidi-font-weight: normal;"&gt;javac &lt;/b&gt;para verificar se o Java está configurado:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-align: justify; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEdZIgvINI/AAAAAAAAAGg/-dV6rD9tHJY/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="324" src="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEdZIgvINI/AAAAAAAAAGg/-dV6rD9tHJY/s640/3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-align: justify; text-indent: 35.4pt;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Se tudo estiver bem configurado, podemos prosseguir para rodar exemplos deste framework. Neste tutorial, recomendamos duas abordagens: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 71.4pt; mso-list: l0 level1 lfo1; tab-stops: list 0cm; text-align: justify; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: Arial;"&gt;&lt;span style="mso-list: Ignore;"&gt;1.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Usar o prompt de comando para rodar aplicações e realizar a edição dos códigos com o Notepad++ ou Jedit, e ter mais controle na organização de pastas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 71.4pt; mso-list: l0 level1 lfo1; tab-stops: list 0cm; text-align: justify; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: Arial;"&gt;&lt;span style="mso-list: Ignore;"&gt;2.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Utilizar a excelente IDE Netbeans versão 6.9 ou superior, que facilita bastante as coisas. Existem outras opções como a IDE Spring (baseada no Eclipse) ou o &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ IDEA&lt;/a&gt;, a escolha da IDE depende do gosto de cada um, mas o Netbeans se mostrou mais amigável para o programador brasileiro, devido uma interface mais limpa e traduzida para o português, inclusive as pastas do framework.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 71.4pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt;"&gt;3- Instalando a IDE Netbeans &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;É bastante simples baixar o Netbeans configurado para se utilizar o Grails, bastante baixar a versão mais completa (ou a versão voltada para programação Java) no site:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="MsoNoSpacing" style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;a href="http://netbeans.org/downloads/index.html"&gt;http://netbeans.org/downloads/index.html&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEdyRn3iqI/AAAAAAAAAGk/f4J4ZlBudqA/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="294" src="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEdyRn3iqI/AAAAAAAAAGk/f4J4ZlBudqA/s640/4.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br clear="ALL" style="mso-ignore: vglayout;" /&gt; &lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Recomenda-se baixar a versão completa, pois já dá suporte a um ambiente de desenvolvimento completo, visando integrar com todo tipo de tecnologia, além do Groovy, linguagem base do Grails.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Depois de instalado, rode o Netbeans, e dentro da IDE, vá para a janela Opções e defina a localização do Grails no painel "Groovy". Se você quiser utilizar o Groovy, também defina a localização do Groovy. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Antes de começar a programar nesta robusta IDE, vejamos como podemos utilizar apenas a linha de comando para executar aplicativos em Grails de forma bem prática e simplificada.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt;"&gt;4- Hello World usando Linha de Comando&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Na linha de comando do Windows 7:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 4.8pt; mso-list: l2 level1 lfo3; tab-stops: list 36.0pt; text-align: justify; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Crie um nome diretório a seu gosto, por exemplo &lt;b&gt;grails-app&lt;/b&gt;, e o acesse:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; mso-line-height-alt: 18.0pt; text-align: justify;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;&lt;br /&gt;pc&amp;gt; mkdir grails_app &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;pc&amp;gt; cd grails_app&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; mso-fareast-font-family: Courier;"&gt;grails_app&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 4.8pt; mso-list: l3 level1 lfo4; tab-stops: list 36.0pt; text-align: justify; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Dentro da pasta &lt;b&gt;grails-app, &lt;/b&gt;execute o seguinte comando para criar um aplicativo Grails com o nome Hello:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;grails_apps&amp;gt; grails create-app Hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEeG5yptiI/AAAAAAAAAGo/Qz0RPoHT3YA/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="277" src="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEeG5yptiI/AAAAAAAAAGo/Qz0RPoHT3YA/s320/5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;!--[if gte vml 1]&gt;&lt;o:wrapblock&gt;&lt;v:shape  id="_x0000_s1028" type="#_x0000_t75" style='position:absolute;left:0;  text-align:left;margin-left:114.35pt;margin-top:9.75pt;width:211.5pt;  height:203.6pt;z-index:251657728;mso-wrap-distance-left:0;  mso-wrap-distance-right:0' filled="t"&gt;   &lt;v:fill color2="black"/&gt;   &lt;v:imagedata src="file:///C:\Users\Felipe\AppData\Local\Temp\msohtmlclip1\01\clip_image011.png"   o:title=""/&gt;   &lt;w:wrap type="topAndBottom"/&gt;  &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style="mso-ignore: vglayout;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;table align="left" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;    &lt;td height="0" width="152"&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;&lt;/td&gt;    &lt;td&gt;&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;!--[endif]--&gt;&lt;!--[if gte vml 1]&gt;&lt;/o:wrapblock&gt;&lt;![endif]--&gt;&lt;br clear="ALL" style="mso-ignore: vglayout;" /&gt; &lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt; mso-ansi-language: EN-US;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Novos arquivos serão criados na pasta grails-app e, que serviram de esqueleto(rails) para a aplicação Hello.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Vejamos o que contêm as principais pastas contidas neste diretório:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;src:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung2" style="margin-left: 35.0pt; tab-stops: -11.9pt 60.1pt 132.1pt 204.1pt 276.1pt 348.1pt 420.1pt 492.1pt 564.1pt 636.1pt 708.1pt; text-indent: 1.0pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;groovy:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt; Contém arquivos Groovy (outros que não são controllers, domain, ou classes de serviço)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung2" style="margin-left: 35.0pt; tab-stops: -11.9pt 60.1pt 132.1pt 204.1pt 276.1pt 348.1pt 420.1pt 492.1pt 564.1pt 636.1pt 708.1pt; text-indent: 1.0pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;java:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt; Contém arquivos Java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;test: &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Para testes de unidade&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;web-app: &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Contém arquivos de configuração relacionados a customização&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;da aplicação&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;grails-app: &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Contém o principais arquivos da aplicação, como as classes do domínio e os controladores, organizados em subdiretórios.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;conf:&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Contém as ferramentas de configuração&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;controllers:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt; Contém os controladores&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;domain:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt; Contém as classes do domínio&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;i18n&lt;/b&gt;: Contém arquivos de mensagem segundo padrão de internalização.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;services:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt; Contém classes que oferecem algum serviço para a aplicação&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;views:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt; Contém templates de visualização&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Vale a pena ressaltar que não há nenhuma mensagem de Hello World implementada, é preciso alterar o código para se chegar nisso. Vejamos como podemos começar a edição da nossa aplicação Hello.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;No prompt de comando, estando na pasta Hello, execute:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 79.25pt; margin-right: 0cm; margin-top: 4.8pt; mso-list: l4 level1 lfo5; tab-stops: 43.25pt list 79.25pt left 115.25pt 187.25pt 259.25pt 331.25pt 403.25pt 475.25pt 547.25pt 619.25pt 691.25pt 763.25pt; text-align: justify; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;Criando o controller Hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 8.6pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: Courier;"&gt;Hello&amp;gt; grails create-controller Hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 8.6pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 8.6pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: Courier;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Agora já foi criado o controlador da aplicação, que realiza a comunicação entre&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt; camada de visualização com a &lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;camada de domínio, onde fica a lógica de programação. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;Um controller processa os pedidos e cria ou &lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;prepara a resposta. Este controlador criado só tem o esqueleto pronto, é preciso editar a sua classe.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 8.6pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Na pasta grails-app\controllers, abra o arquivo HelloController.groovy com algum editor de texto compatível como o Jedit (download: &lt;a href="http://www.jedit.org/index.php?page=download"&gt;http://www.jedit.org/index.php?page=download&lt;/a&gt; ) e realize a seguinte alteração:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 79.25pt; mso-list: l5 level1 lfo6; tab-stops: 43.25pt list 79.25pt left 115.25pt 187.25pt 259.25pt 331.25pt 403.25pt 475.25pt 547.25pt 619.25pt 691.25pt 763.25pt; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;Editando o controller Hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: Courier;"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: Courier;"&gt; HelloController &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: Courier;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;def&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt; hello = &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;render &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b050; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;"Hello World !!"&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: Courier;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: Courier;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 79.25pt; mso-list: l6 level1 lfo7; tab-stops: 43.25pt list 79.25pt left 115.25pt 187.25pt 259.25pt 331.25pt 403.25pt 475.25pt 547.25pt 619.25pt 691.25pt 763.25pt; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;Executando a aplicação Hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: Courier;"&gt;Hello&amp;gt; grails run-app&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-align: justify; text-indent: -20.15pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-align: justify; text-indent: -20.15pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: Courier;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Abra o navegador web (browser) de sua escolha e digite no campo de endereço&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-align: justify; text-indent: -20.15pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://localhost:8080/Hello/"&gt;http://localhost:8080/Hello/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt; , onde localhost é um servidor local, 8080 é a porta default, e o Hello, o nome da aplicação Grails.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Lucida Sans Unicode&amp;quot;;"&gt;&lt;span style="mso-tab-count: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Uma tela semelhante a esta será exibida, mostrando que além do framework está rodando, o controlador HelloController está implementado:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEeSU5NPxI/AAAAAAAAAGs/49auyk5-9as/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="176" src="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEeSU5NPxI/AAAAAAAAAGs/49auyk5-9as/s640/6.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="PadroLTGliederung1" style="margin-left: 28.75pt; tab-stops: -28.75pt 0cm 14.5pt 86.5pt 158.5pt 230.5pt 302.5pt 374.5pt 446.5pt 518.5pt 590.5pt 662.5pt 734.5pt; text-indent: -20.15pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="Picture_x0020_5" o:spid="_x0000_s1029" type="#_x0000_t75" style='position:absolute; left:0;text-align:left;margin-left:18.75pt;margin-top:7.65pt;width:378.75pt; height:134.25pt;z-index:251658752;mso-wrap-style:none;v-text-anchor:middle'&gt;  &lt;v:fill type="frame"/&gt;  &lt;v:stroke joinstyle="round"/&gt;  &lt;v:imagedata src="file:///C:\Users\Felipe\AppData\Local\Temp\msohtmlclip1\01\clip_image013.png"  o:title="" cropbottom="6789f"/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style="mso-ignore: vglayout;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;table align="left" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td height="10" width="25"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;/td&gt;   &lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Clique no HelloController e verá o resultado da implementação:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEeg8vPx1I/AAAAAAAAAGw/O9dAOwE63fk/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="111" src="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEeg8vPx1I/AAAAAAAAAGw/O9dAOwE63fk/s320/7.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 6pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br clear="ALL" style="mso-ignore: vglayout;" /&gt;  &lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Parabéns por ter chegado até aqui no universo Grails e, é apenas o começo, há muitos exemplos interessantes a serem “mastigados” neste tutorial.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt; mso-ansi-language: EN-US;"&gt;4- Hello World usando a IDE Netbeans&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Depois de iniciar o Netbeans, clique em Arquivo (File) e selecione Novo Projeto (New Project), e faça conforme a imagem, escolhendo a categoria de projeto como Groovy, ou seja, um projeto do tipo aplicação Grails (Grails App):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEes78DzzI/AAAAAAAAAG0/e2QwJwjuj_M/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="441" src="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEes78DzzI/AAAAAAAAAG0/e2QwJwjuj_M/s640/8.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Assim o esqueleto do projeto Hello será criado:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_2vIP0oOLh8M/TKEe4oyqXLI/AAAAAAAAAG4/o3T7fE8MzPU/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="436" src="http://4.bp.blogspot.com/_2vIP0oOLh8M/TKEe4oyqXLI/AAAAAAAAAG4/o3T7fE8MzPU/s640/9.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Em seguida clique com botão direito na pasta Controladores e selecione novo&amp;gt;Controlador do Grails e no campo nome do artefato coloque como Hello.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEfF9s6X4I/AAAAAAAAAG8/dyZXvPKP90Q/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="407" src="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEfF9s6X4I/AAAAAAAAAG8/dyZXvPKP90Q/s640/10.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Dentro da pasta Controladores\hello será criado o arquivo HelloController.groovy, realize a edição do esqueleto da classe, conforme a seguir:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;package hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;class HelloController {def hello = {render "Hello World !!"}}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Em seguida, selecione a pasta principal do projeto Hello com o botão direito e escolha executar:&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEfVDBRdvI/AAAAAAAAAHA/e_SFYRVfvM8/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="571" src="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEfVDBRdvI/AAAAAAAAAHA/e_SFYRVfvM8/s640/11.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Aguarde alguns instantes, o console da IDE começará o processo para a preparação da aplicação e ativação do servidor. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEffXX-6RI/AAAAAAAAAHE/2ICQEHb6oQU/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="163" src="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEffXX-6RI/AAAAAAAAAHE/2ICQEHb6oQU/s640/12.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-indent: 35.4pt;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 35.4pt; margin-right: 0cm; margin-top: 4.8pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;O navegador será automaticamente aberto e direcionado para: &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;a href="http://localhost:8080/Hello"&gt;Http://localhost:8080/Hello&lt;/a&gt;&lt;span style="color: red;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 35.4pt; margin-right: 0cm; margin-top: 4.8pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;O resultado final é semelhante ao mostrado no tópico 3 deste tutorial.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt;"&gt;4- Exemplo Prático de CRUD (Blog) e a instalação de pluguins&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;O&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;scaffolding&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;é o termo utilizado pelo&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;framework&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;para encorporar a geração automatizada de artefatos necessários a uma operação básica de CRUD (Create, Read, Update e Delete). Sua utilização pode substituir todo o código gerado automaticamente nos controladores por apenas uma única linha. Utilizando o exemplo do artigo anterior, poderíamos substituir o código da nossa classe&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;ContatoController&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;para a definição de&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;scaffold&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;descrita abaixo e esta continuará executando as mesmas operações.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Exemplo de aplicação do&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;scaffolding:&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;class&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;ContatoController&lt;/i&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;def&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;scaffold&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;= Contato&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 0cm; margin-right: 0cm; margin-top: 6.0pt; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;O código acima apresentado acima permite que as operações de CRUD sejam geradas de forma implícita para nosso artefato Contato, o qual foi criado como classe de domínio de nossa aplicação. Fácil não?. Se você achou isso fácil é porque ainda não sabe que além de deixar muito código implícito, o&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Grails&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;também gera automaticamente as “&lt;b&gt;&lt;i&gt;convenções&lt;/i&gt;&lt;/b&gt;” para as URL's de acesso a aplicação. Para a nossa classe de domínio Contado, por exemplo, as chamadas disponibilizadas seriam:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-list: l7 level1 lfo8; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;a href="http://localhost:8080/MeuExemplo/Contato/list"&gt;http://localhost:8080/agenda/Contato/list&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;– responsável por listar todos os elementos gravados do tipo Contato&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-list: l7 level1 lfo8; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;a href="http://localhost:8080/agenda/Contato/create"&gt;http://localhost:8080/agenda/Contato/create&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;– responsável por liberar uma view pronta para realizar novos cadastros do objeto Contato&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-list: l7 level1 lfo8; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;a href="http://localhost:8080/agenda/Contato/edit/id"&gt;http://localhost:8080/agenda/Contato/edit/id&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;– responsável por editar um registro a partir de um determinado id&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-list: l7 level1 lfo8; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;a href="http://localhost:8080/agenda/Contato/show/id"&gt;http://localhost:8080/agenda/Contato/show/id&lt;/a&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;– responsável por exibir um registro a partir de um id específico&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Simples, não acha?. É, realmente os padrões de projeto estão se tornando parte obrigatória para deixar aplicações compreensíveis e de fácil manutenção. No caso do&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Grails&lt;/i&gt;, os padrões chegam até às descrições de URL, as quais, apresentam por definição após o nome do domínio o nome do projeto seguido da classe e operação realizada. Para compreendermos esses padrões e os conceitos acima descritos, o restante deste artigo tratará dos passos para a criação de um blog que conterá as classes de domínio&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Post&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Comentários&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;como definidas abaixo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_2vIP0oOLh8M/TKEfqeamUzI/AAAAAAAAAHI/-u3LUkDOFbw/s1600/13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="102" src="http://4.bp.blogspot.com/_2vIP0oOLh8M/TKEfqeamUzI/AAAAAAAAAHI/-u3LUkDOFbw/s400/13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;br /&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;Diagrama de classes da aplicação&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style="mso-bidi-font-style: italic;"&gt;blog&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 0cm; margin-right: 0cm; margin-top: 6.0pt; mso-hyphenate: auto; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Para a criação do blog a partir do modelo da figura, siga os seguintes passos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 3.75pt; margin-right: 0cm; margin-top: 0cm; mso-hyphenate: auto; mso-list: l8 level1 lfo9; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: Arial; mso-fareast-language: PT-BR;"&gt;&lt;span style="mso-list: Ignore;"&gt;1.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Crie um novo projeto&amp;nbsp;&lt;i&gt;Grails&lt;/i&gt;&amp;nbsp;e chame-o de&amp;nbsp;&lt;i&gt;blog.&lt;/i&gt;Para isso, execute no terminal o comando&amp;nbsp;&lt;b&gt;&lt;i&gt;grails create-app blog&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 3.75pt; margin-right: 0cm; margin-top: 0cm; mso-hyphenate: auto; mso-list: l8 level1 lfo9; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: Arial; mso-fareast-language: PT-BR;"&gt;&lt;span style="mso-list: Ignore;"&gt;2.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Estando dentro da pasta do projeto, crie as classes de domínio com&amp;nbsp;&lt;b&gt;&lt;i&gt;grails create-domain-class&lt;/i&gt;&lt;/b&gt;. Após criadas, vá na pasta&amp;nbsp;&lt;b&gt;&lt;i&gt;grails-app/domain&lt;/i&gt;&lt;/b&gt;&amp;nbsp;e edite-as para adicionar as propriedades contidas no diagrama da figura. Lembre-se, as definições são criadas com tipo e nome_variável sem ponto e virgula no final.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 3.75pt; margin-right: 0cm; margin-top: 0cm; mso-hyphenate: auto; mso-list: l8 level1 lfo9; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: Arial; mso-fareast-language: PT-BR;"&gt;&lt;span style="mso-list: Ignore;"&gt;3.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Com as classes de domínio devidamente construídas, crie as classes de controle para&lt;b&gt;&lt;i&gt;Post&lt;/i&gt;&lt;/b&gt;&amp;nbsp;e Comentários com o comando&amp;nbsp;&lt;b&gt;&lt;i&gt;grails create-controller Post&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&amp;nbsp;e&amp;nbsp;&lt;/i&gt;depois repita o processo com a&amp;nbsp;&lt;b&gt;&lt;i&gt;Comentario&lt;/i&gt;&lt;/b&gt;. Feito isso, modifique-as e defina o&amp;nbsp;&lt;b&gt;&lt;i&gt;scaffold&lt;/i&gt;&lt;/b&gt;&amp;nbsp;como visto no exemplo do quadro. Ex.: A classe Controller para&amp;nbsp;&lt;b&gt;&lt;i&gt;Post&lt;/i&gt;&lt;/b&gt;&amp;nbsp;ficaria&amp;nbsp;&lt;b&gt;&lt;i&gt;def scafold = Post&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 3.75pt; margin-right: 0cm; margin-top: 0cm; mso-hyphenate: auto; mso-list: l8 level1 lfo9; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: Arial; mso-fareast-language: PT-BR;"&gt;&lt;span style="mso-list: Ignore;"&gt;4.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Por fim, crie as classes de visão com&amp;nbsp;&lt;b&gt;&lt;i&gt;grails generate-views Post&lt;/i&gt;&lt;/b&gt;&amp;nbsp;e depois repita o processo para a classe de domínio&amp;nbsp;&lt;b&gt;&lt;i&gt;Comentario&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: 12.0pt; mso-hyphenate: auto; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Se os passos acima forem executados corretamente já teremos um primeiro modelo do que está se tornando nosso blog e este já pode ser testado. Para isso, ainda na pasta raiz do projeto digite&amp;nbsp;&lt;b&gt;&lt;i&gt;grails run-app&lt;/i&gt;&lt;/b&gt;&amp;nbsp;e vá ao&amp;nbsp;&lt;i&gt;browser&lt;/i&gt;&amp;nbsp;e digite o endereço&amp;nbsp;&lt;i&gt;http://localhost:8080/blog.&lt;/i&gt;Como pode ser observado, nosso blog ainda não possui um requisito muito importante definido no diagrama de classes, a relação entre os nossos Posts e Comentários. Essa relação deve ser feita, não só para melhorar a compreensão visual, mas também para manter a integridade de nossa base de dados. No&amp;nbsp;&lt;i&gt;Grails&lt;/i&gt;, esse processo é executado utilizando-se algumas palavras reservadas, tais como,&amp;nbsp;&lt;b&gt;&lt;i&gt;hasMany&lt;/i&gt;&lt;/b&gt;&amp;nbsp;e&amp;nbsp;&lt;b&gt;&lt;i&gt;belongsTo&lt;/i&gt;&lt;/b&gt;. Essas declarações permitem dizer ao nosso blog que há muitos comentários (&lt;b&gt;&lt;i&gt;hasMany&lt;/i&gt;&lt;/b&gt;) para um determinado Post (&lt;b&gt;&lt;i&gt;belongsTo&lt;/i&gt;&lt;/b&gt;). Tais acrescimos de código devem ser feitos nas classes de domínio e ficam como definido a seguir.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-align: center; text-indent: 4.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Relacionamento das classes de domínio&amp;nbsp;&lt;i&gt;Post.groovy&lt;/i&gt;&amp;nbsp;e&amp;nbsp;&lt;i&gt;Comentario.groovy&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-align: center; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;//Modificador da classe Post.groovy&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;static hasMany = [comentarios:Comentario]&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;//Modificador da classe Comentario.groovy&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;static belongsTo = [post:Post]&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Com a modificação realizada, gere novamente as&amp;nbsp;&lt;i&gt;views&lt;/i&gt;&amp;nbsp;para&amp;nbsp;&lt;b&gt;&lt;i&gt;Post&lt;/i&gt;&lt;/b&gt;&amp;nbsp;e&amp;nbsp;&lt;b&gt;&lt;i&gt;Comentario&lt;/i&gt;&lt;/b&gt;&amp;nbsp;e teste a aplicação novamente. Perceba que, um novo campo aparecerá no controlador de comentários, permitindo agora associa-lo a um objeto do tipo post. No&amp;nbsp;&lt;i&gt;Grails&lt;/i&gt;, os relacionamentos podem ser feitos utilizando as seguintes relações:&amp;nbsp;&lt;b&gt;&lt;i&gt;one-to-one&lt;/i&gt;&lt;/b&gt;,&amp;nbsp;&lt;b&gt;&lt;i&gt;many-to-one&lt;/i&gt;&lt;/b&gt;,&amp;nbsp;&lt;b&gt;&lt;i&gt;many-to-many&lt;/i&gt;&lt;/b&gt;,&amp;nbsp;&lt;b&gt;&lt;i&gt;hasMany&lt;/i&gt;&lt;/b&gt;&amp;nbsp;e&lt;b&gt;&lt;i&gt;belongsTo&lt;/i&gt;&lt;/b&gt;. No entanto, ao utilizar o&amp;nbsp;&lt;b&gt;&lt;i&gt;scaffold&lt;/i&gt;&lt;/b&gt;, a definição&amp;nbsp;&lt;b&gt;&lt;i&gt;many-to-many&lt;/i&gt;&lt;/b&gt;&amp;nbsp;não funcionará por não ser comportada pelo processo automatizado. Neste caso, se houver a necessidade de utilizá-lo, deve-se programá-lo manualmente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Agora que você já conheceu os relacionamentos, vamos continuar a resolver os problemas do nosso blog. Um deles é a falta de validação de nossos campos, permitindo que o operador digite url's invalidas ou deixe algum campo em branco. Para solucionar isso, precisamos compreender um conceito chamado de&amp;nbsp;&lt;b&gt;&lt;i&gt;Constrants&lt;/i&gt;&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 0cm; margin-right: 0cm; margin-top: 6.0pt; mso-hyphenate: auto; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;As contrains estão diretamente relacionadas às limitações que alguns campos em nosso sistema devem ter. Por exemplo, se um usuário passar a informação de e-mail errada, o sistema deve estar apto a identificar tal erro e informa-lo ao operador. Como na limitação dos relacionamentos, as constraints ficam nas classes de domínio da aplicação. Como exemplo, vamos tratar o formato da URL da classe Comentario.groovy. Edite a classe e acrescente em seu código a linha definida no exemplo a seguir.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 0cm; margin-right: 0cm; margin-top: 6.0pt; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-align: center; text-indent: 4.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Um exemplo de tratamento de exceções com&amp;nbsp;&lt;i&gt;Constrains:&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-align: center; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: 12.0pt; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;static constraints = {url(url:true)}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Com o código do exemplo acima já adicionado, gere novamente as&amp;nbsp;&lt;i&gt;views&lt;/i&gt;&amp;nbsp;e tente cadastrar uma URL em um formato inválido para verificar como o&amp;nbsp;&lt;i&gt;framework&lt;/i&gt;&amp;nbsp;realiza o tratamento das exceções. Bom, não? O que achou de programar pouco e fazer muito?. Você não viu tudo ainda, vamos modificar as classes&amp;nbsp;&lt;i&gt;Post.groovy&lt;/i&gt;&amp;nbsp;e&amp;nbsp;&lt;i&gt;Comentario.groovy&lt;/i&gt;&amp;nbsp;para criar mais algumas&lt;i&gt;constraints&lt;/i&gt;. Para tanto, abra as mesmas e modifique-as como definido nos trechos de código abaixo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 0cm; margin-right: 0cm; margin-top: 6.0pt; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-align: center; text-indent: 4.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Adição das constrains na classe&amp;nbsp;&lt;i&gt;Post.groovy:&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;class&amp;nbsp;&lt;i&gt;Post&lt;/i&gt;&amp;nbsp;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String titulo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String conteudo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Data publicacao = new Date()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; static hasMany = [comentarios:Comentario]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp; static constraints = {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;titulo(blank:false)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;conteudo(blank:false)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data(blank:false)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: 12.0pt; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Adição das constraints na classe&amp;nbsp;&lt;i&gt;Comentario.groovy:&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;class&amp;nbsp;&lt;i&gt;Comentario&lt;/i&gt;&amp;nbsp;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String nome&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String url&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String comentario&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; static belongsTo = [post:Post]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static constraints = {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nome(blank:false)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url(url:true)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;comentario(blank:false)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: 12.0pt; mso-hyphenate: auto; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Feito as modificações acima apresentadas, gere novamente as&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;views&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e teste sua aplicação. Se você quiser saber mais sobre as&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Constraints&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;e as formas de configuração, consulte a documentação oficial em&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://grails.org/doc/1.1/"&gt;http://grails.org/doc/1.1/&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Agora proferimos algumas limitações, vamos estudar um pouco sobre os&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;plugins&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;no&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Grails&lt;/i&gt;. Como em qualquer outra linguagem, o&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Grails&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;também possui vários&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;plugins&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;que podem lhe ajudar a melhorar a aparência de suas aplicações. Para este exemplo, utilizaremos o&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;Richui&lt;/i&gt;&lt;/b&gt;com o objetivo de melhorar o cadastro das datas e comentários de nosso blog. Para instala-lo, digite na pasta raiz do projeto o seguinte comando:&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;grails install-plugin richui.&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;Isso baixará o&lt;i&gt;plugin&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;do site oficial e instalará o mesmo em nosso projeto. Essa operação pode levar algum tempo dependendo de sua conexão com a internet.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: 12.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Já com o&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;Richui&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;instalado, vamos as modificações. Em&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;/blog/grails-app/views&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;há uma pasta para as visões do Post e outra para o Comentário. Entre na pasta post e abra para edição a página&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;create.gsp&lt;/i&gt;&lt;/b&gt;. No cabeçalho (&lt;b&gt;&lt;i&gt;&amp;lt;head&amp;gt;&lt;/i&gt;&lt;/b&gt;) insira as linhas&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;resource:richTextEditor type="advanced" /&amp;gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;e&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;resource:dateChooser /&amp;gt;.&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;Ainda com o arquivo aberto, busque a seguinte linha de código&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;g:datePicker name="publicacao" value="${postInstance?.publicacao}"&amp;gt;&amp;lt;/g:datePicker&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e substitua por&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;richui:dateChooser name="publicacao" value="${postInstance?.publicacao}" format="dd/MM/yyyy"/&amp;gt;.&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;Da mesma forma, troque a linha&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;input type="text" id="conteudo" name="conteudo" value="${fieldValue(bean:postInstance,field: 'conteudo')}"/&amp;gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;por&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;richui:richTextEditor name="conteudo" value="${fieldValue(bean: postInstance,field:'con teudo')}"/&amp;gt;.&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;Feito isso, vá ao&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;browser&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e abra novamente sua aplicação. O resultado será conforme a figura a seguir.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 0cm; margin-right: 0cm; margin-top: 6.0pt; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEf2p1kfqI/AAAAAAAAAHM/_tIO_foPeIs/s1600/14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="350" src="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEf2p1kfqI/AAAAAAAAAHM/_tIO_foPeIs/s640/14.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;br /&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;Resultado das modificações com o plugin&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-bidi-font-style: italic;"&gt;Richui&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 35.4pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;A aplicação já se encontra pronta com o layout default, caso queira personalizar com um novo tipo de layout prossiga no tutorial deste tópico.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;E então, estamos progredindo na criação de nosso blog? Quanto tempo você gastaria para refazer o exemplo? Cinco minutos? Bom, ainda não acabamos. Estamos com uma aplicação que possui a parte administrativa, agora, vamos criar a página de acesso aos usuários do nosso blog. Para isso, utilizaremos um modelo&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;html&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;pronto que pode ser baixado pelo site:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-align: center; text-indent: 4.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;a href="http://www.michelsilva.net/index.php?option=com_docman&amp;amp;task=doc_download&amp;amp;gid=43&amp;amp;Itemid=41"&gt;http://www.michelsilva.net/index.php?option=com_docman&amp;amp;task=doc_download&amp;amp;gid=43&amp;amp;Itemid=41&lt;/a&gt; &lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-align: center; text-indent: 4.5pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Para torná-lo acessível aos nossos usuários, siga os passos abaixo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 6.0pt; mso-list: l9 level1 lfo10; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Baixe e descompacte o arquivo blog.zip&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-list: l9 level1 lfo10; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Copie as imagens do diretório&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;images&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;para&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;/blog/web-app/images&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-list: l9 level1 lfo10; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Copie o arquivo&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;css&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;da pasta css para&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;/blog/web-app/css&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-list: l9 level1 lfo10; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Copie o arquivo&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;index.html&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;para a pasta&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;/blog/grails-app/views/layouts&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e mude seu nome para&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;index.gsp&lt;/i&gt;. Feito isso, abra-o e modifique seu código da seguinte forma:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 22.5pt; margin-right: 15.0pt; margin-top: 0cm; mso-list: l9 level2 lfo10; tab-stops: list 72.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;Em&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;&amp;lt;head&amp;gt;&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;procure a tag&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;link rel="stylesheet" href="css/style.css" type="text/css" /&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e modifique-a para&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;link rel="stylesheet" href="${createLinkTo(dir:'css', file:'style.css')}" type="text/css" /&amp;gt;&lt;/i&gt;&lt;/b&gt;. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Esse comando no&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;href&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;faz com que o arquivo&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;style.css&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;seja buscado em&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;web-app/css&lt;/i&gt;por convenção.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 22.5pt; margin-right: 15.0pt; margin-top: 0cm; mso-list: l9 level2 lfo10; tab-stops: list 72.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Como última linha da tag&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;head&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;coloque&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;g:layoutHead /&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;para definir futuramente uma&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;view&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;que possa modificar componentes desse local.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 22.5pt; margin-right: 15.0pt; margin-top: 0cm; mso-list: l9 level2 lfo10; tab-stops: list 72.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Agora, apague o&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;html&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;começando na linha&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;div id="left"&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;até o&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;/div&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;da tag&lt;b&gt;&lt;i&gt;&amp;lt;div id="right"&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e substitua todo esse código pela tag&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;g:layoutBody /&amp;gt;.&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;Como no &amp;lt;head&amp;gt; estou marcando no código onde farei as modificações de corpo de forma dinâmica.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-list: l9 level1 lfo10; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Como próximo passo, vamos criar dentro da pasta&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;/blog/grails-app/views&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;uma pasta chamada&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;home&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;e nela um arquivo com o nome&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;home.gsp&lt;/i&gt;&lt;/b&gt;. O conteúdo desse arquivo é definido no &lt;i style="mso-bidi-font-style: normal;"&gt;código-fonte 1 abaixo&lt;/i&gt;. A sua função é ler de um controlador uma lista de posts e por meio de um for (each) lista-los na tela. Para deixa-los no formato do layout, um teste condicional com a variável&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;i&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;(&lt;b&gt;&lt;i&gt;${ (i % 2) == 0 ? 'left' : 'right'}&lt;/i&gt;&lt;/b&gt;) é realizado para trocar dinamicamente o id do css utilizado em nosso layout. Se você é um bom observador, viu também que estamos chamando nosso layout pela tag&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&amp;lt;meta name="layout" content="index" /&amp;gt;&lt;/i&gt;&lt;/b&gt;. Isso permite o redirecionamento do resultado e a visualização dos posts cadastrados.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 11.25pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 11.25pt; margin-right: 7.5pt; margin-top: 0cm; mso-hyphenate: auto; mso-list: l9 level1 lfo10; tab-stops: list 36.0pt; text-indent: 4.5pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Por fim, crie um novo controlador chamado Home e modifique seu código como definido no &lt;i style="mso-bidi-font-style: normal;"&gt;código-fonte 2 abaixo&lt;/i&gt;. Sua função é buscar todos os posts cadastrados e redireciona-los para o arquivo&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;home.gsp&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;que se encontra na pasta&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;/blog/grails-app/views&lt;/i&gt;. Esse, por sua vez, executa a listagem e retorna o resultado final para o arquivo&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;index.gsp&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;da pasta&lt;i&gt;/blog/grails-app/views/layouts&lt;/i&gt;.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; text-align: center;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Código-Fonte 1&lt;/span&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;- Definição do arquivo view&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;home.gsp&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;lt;head&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;meta name="layout" content="index" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;title&amp;gt; Meu blogão &amp;lt;/title&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;lt;/head&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;lt;body&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;g:each in="${postList}" status="i" var="post"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;div id="${ (i % 2) == 0 ? 'left' : 'right'}"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&amp;lt;h2&amp;gt;${post.titulo}&amp;lt;/h2&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;p align="justify"&amp;gt; ${post.conteudo}&amp;lt;/p&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;div id="notice"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;p&amp;gt;Coloque aqui uma chamada em destaque em seu blog&amp;lt;/p&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;lt;/div&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;/div&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/g:each&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: 12.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;lt;/body&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="line-height: 11.25pt; text-align: center;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Código-Fonte 2&lt;/span&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;- Definilção da classe controller&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;home.gsp&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;class HomeController {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;def home = {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;[postList:Post.list()]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: 12.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-indent: 4.5pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 11.25pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="line-height: 11.25pt; margin-bottom: .0001pt; margin: 0cm; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Neste ponto, um novo&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;link&lt;/i&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;aparecerá na página inicial de nosso blog linkando-o ao nosso novo controlador&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;HomeController&lt;/i&gt;. Ao chegar a esse ponto finalizamos o aplicativo e o mesmo pode ser testado.&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt;"&gt;5- Macetes do Grails&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 4.8pt; mso-list: l10 level1 lfo11; text-align: justify; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Evitando problemas de compilação na IDE Netbeans&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 18.0pt; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 17.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Sempre que for utilizar outros projetos, seja para alterá-los ou rodá-los, clique na barrinha de executando e clique no X para fechar o projeto atual antes de mexer em outros projetos (&lt;span style="color: red;"&gt;feche os processos run-app&lt;/span&gt;, antes de executar novamente o comando run-app), isso irá evitar conflitos por recursos, como problemas na base de dados, conforme a figura abaixo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEgELkRB7I/AAAAAAAAAHQ/M1BPHPesF4I/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEgELkRB7I/AAAAAAAAAHQ/M1BPHPesF4I/s640/15.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 4.8pt; mso-list: l10 level1 lfo11; text-align: justify; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Evitando problemas com atualização das Views(layout) do projeto:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 18.0pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Sempre que fizer alguma alteração na estrutura do código seja de uma classe de domínio seja de um controlador, é recomendável clicar com o botão direito sobre o arquivo groovy da classe de domínio alterada e selecionar &lt;b style="mso-bidi-font-weight: normal;"&gt;Gerar Visualizações&lt;/b&gt; (assim as views, ou seja, o que será exibido pelo mecanismo CRUD, será atualizado).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEgTHWC0TI/AAAAAAAAAHU/_TozZjjyskU/s1600/16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEgTHWC0TI/AAAAAAAAAHU/_TozZjjyskU/s640/16.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center; text-indent: 35.4pt;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 4.8pt; mso-list: l10 level1 lfo11; text-align: justify; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Evitando o problema com versões antigas do Grails&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Sempre que um projeto antigo de uma versão mais antiga for usado no Grails, é necessário realizar o comando &lt;b style="mso-bidi-font-weight: normal;"&gt;grails upgrade&lt;/b&gt; pela linha de comando ou ainda clicar sobre o projeto com o botão direito e selecionar “Executar/Depurar comando do Grails”:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_2vIP0oOLh8M/TKEgoxy-iDI/AAAAAAAAAHY/8ld6yEUg82A/s1600/17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_2vIP0oOLh8M/TKEgoxy-iDI/AAAAAAAAAHY/8ld6yEUg82A/s320/17.png" width="310" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center; text-indent: 35.4pt;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Em seguida selecione o comando &lt;b style="mso-bidi-font-weight: normal;"&gt;upgrade &lt;/b&gt;na lista de comandos e clique no botão executar:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEg0mA76iI/AAAAAAAAAHc/-QnM6vwk0L4/s1600/18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="328" src="http://3.bp.blogspot.com/_2vIP0oOLh8M/TKEg0mA76iI/AAAAAAAAAHc/-QnM6vwk0L4/s400/18.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center; text-indent: 35.4pt;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt;"&gt;6- Noções de Teste de Software usando Grails&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Teste de Software pode ser essencial para testar a qualidade do projeto e para verificar se tudo está saindo conforme o planejado, sem necessariamente precisar testar manualmente as funcionalidades da aplicação. O Grails já possue o teste de integração e de unidade já embutidos, bastando apenas editá-los ou criá-los quando necessário.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Digamos que temos a seguinte classe de domínio em nossa aplicação:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;class Professor {&lt;br /&gt;&lt;br /&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;Altere para:&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&lt;br /&gt;&lt;br style="mso-special-character: line-break;" /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br style="mso-special-character: line-break;" /&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-hyphenate: auto;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;class Professor {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; String login&lt;br /&gt;&amp;nbsp;&amp;nbsp; String nome&lt;br /&gt;&amp;nbsp;&amp;nbsp; String sobrenome&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; static hasMany = [disciplinas: Disciplina]&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; static constraints = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; login(blank:false,unique:true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nome(blank:false)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sobrenome(blank:false)&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; String toString(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"$nome $sobrenome"&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: PT-BR;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;E queremos escrever um teste simples para validar algumas coisas, como se o login, o nome e o sobrenome foram cadastrados, então podemos escrever um teste de integração do tipo (este código groovy deverá ser criado na pasta Testes de integração):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt;"&gt;&lt;span class="apple-style-span"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;class ProfessorTests extends GroovyTestCase {&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;void setUp() {&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Professor.list()*.delete()&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;void testPersist() {&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Professor(login: "login1", nome: "nome1", sobrenome:"sobrenome1").save()&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Professor(login: "login2", nome: "nome2", sobrenome:"sobrenome2").save()&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Professor(login: "login3", nome: "nome3", sobrenome:"sobrenome3").save()&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Professor(login: "login4", nome: "nome4", sobrenome:"sobrenome4").save()&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Professor(login: "login5", nome: "nome5", sobrenome:"sobrenome5").save()&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assert 5 == Professor.count()&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;&amp;nbsp;&amp;nbsp;void testToString() {&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def professor = new Professor(login: "mary", nome: "Mariazinha",&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sobrenome: "Silva")&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertToString(professor, "Mariazinha Silva")&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Como se pode averiguar no código anterior no método &lt;b style="mso-bidi-font-weight: normal;"&gt;void testPersist()&lt;/b&gt; foram realizadas 5 inserções de cadastro de professor com respectivos login, nome e sobrenome, e salvos no banco de dados, em seguida, foi contado o número de registros e comparado com 5 pelo &lt;b style="mso-bidi-font-weight: normal;"&gt;assert&lt;/b&gt;, logo este teste tem que passar, caso contrário o teste falhou por algum problema na inserção ou na comparação realizada pelo contador. Já em &lt;b style="mso-bidi-font-weight: normal;"&gt;void testToString&lt;/b&gt;, um objeto professor foi definido com login, nome e sobrenome, em seguida o &lt;b style="mso-bidi-font-weight: normal;"&gt;assertToString&lt;/b&gt;, comparou o objeto professor, com a String passada como parâmetro, como a String contem dentro do objeto, o teste deve passar.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_2vIP0oOLh8M/TKEhFRu0yvI/AAAAAAAAAHg/X3Wz6-w2InY/s1600/19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://4.bp.blogspot.com/_2vIP0oOLh8M/TKEhFRu0yvI/AAAAAAAAAHg/X3Wz6-w2InY/s640/19.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify; text-indent: 35.4pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;Se desejar um relatório mais detalhado dos detalhes basta, entrar na pasta Target\test-reports\html e clicar com o botão direto no arquivo índex.html e clicar com o botão direito e selecionar exibir:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEhay9XNKI/AAAAAAAAAHk/wjf7UsngcHQ/s1600/20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="282" src="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEhay9XNKI/AAAAAAAAAHk/wjf7UsngcHQ/s320/20.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-size: 19px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt;A seguinte tela será exibida, contendo mais detalhes dos testes:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEhp8e5dxI/AAAAAAAAAHo/0sFurFrXkbo/s1600/21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://2.bp.blogspot.com/_2vIP0oOLh8M/TKEhp8e5dxI/AAAAAAAAAHo/0sFurFrXkbo/s640/21.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-size: 19px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 14.0pt;"&gt;7- Referências Bibliográficas&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 18.0pt; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.8pt; text-align: justify;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; mso-ansi-language: EN-US;"&gt;&lt;a href="http://www.grails.org/"&gt;&lt;span lang="PT-BR" style="mso-ansi-language: PT-BR;"&gt;www.grails.org&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt;"&gt; – Acessado em 30-08-2010&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;h1 style="margin-bottom: .0001pt; margin: 0cm;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; font-weight: normal; letter-spacing: -.75pt; mso-ansi-language: EN-US; mso-bidi-font-weight: bold;"&gt;RODOLPH, Jason. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; font-weight: normal; letter-spacing: -.75pt; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://www.infoq.com/minibooks/grails"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;Getting Started with Grails&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; font-weight: normal; letter-spacing: -.75pt; mso-ansi-language: EN-US; mso-bidi-font-weight: bold;"&gt; (E-book) - &lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; font-weight: normal; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://www.infoq.com/minibooks/grails"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;http://www.infoq.com/minibooks/grails&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; font-weight: normal; mso-ansi-language: EN-US; mso-bidi-font-weight: bold;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h2 style="line-height: 12.0pt; margin-bottom: .0001pt; margin: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; font-weight: normal; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://www.itexto.net/devkico/?p=231"&gt;http://www.itexto.net/devkico/?p=231&lt;/a&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;- &lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; font-style: normal; font-weight: normal; letter-spacing: -.75pt; mso-bidi-font-style: italic; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://www.itexto.net/devkico/?p=231" title="Permanent Link to Básico do Groovy para quem for aprender Grails"&gt;&lt;span style="color: black;"&gt;Básico do Groovy para quem for aprender Grails&lt;/span&gt;&lt;/a&gt; – Acessado em 19-09-2010&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;a href="http://www.grails.org/Success+Stories"&gt;http://www.grails.org/Success+Stories&lt;/a&gt; &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;- Acessado em 20-9-2010&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://grails.org/doc/latest/"&gt;http://grails.org/doc/latest/&lt;/a&gt; - Acessado em 21-09-2010&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://www.infoq.com/minibooks/grails"&gt;http://www.infoq.com/minibooks/grails&lt;/a&gt; - Acessado em 21-09-2010&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-bidi-font-weight: bold;"&gt;[PDF] &lt;a href="http://www.google.com.br/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=2&amp;amp;ved=0CA8QFjAB&amp;amp;url=http://download.boulder.ibm.com/ibmdl/pub/software/dw/java/j-grails01158-pdf.pdf&amp;amp;ei=Qf_gStv-LtWvtgfws_XsDA&amp;amp;usg=AFQjCNHRXndgmnHdwTF0R0pWpsHO_nSnRQ&amp;amp;sig2=g32j7lnZ4rBH2P_FRkm0Lg"&gt;Mastering Grails: Build your first Grails application&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US; mso-bidi-font-weight: bold;"&gt; &lt;span lang="EN-US"&gt;– Acessado em 21-09-2010&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78775790352287160-2584932476669480351?l=blog.aracomp.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aracomp.com.br/feeds/2584932476669480351/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://blog.aracomp.com.br/2010/09/tutorial-grails-groovy-on-rails.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/2584932476669480351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/2584932476669480351'/><link rel='alternate' type='text/html' href='http://blog.aracomp.com.br/2010/09/tutorial-grails-groovy-on-rails.html' title='Tutorial GRAILS (Groovy on Rails)'/><author><name>"Pro"</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2vIP0oOLh8M/S-UA9SvpWsI/AAAAAAAAAFk/SAOQ_1pYXLs/S220/DSC04457%3Dwhrite2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2vIP0oOLh8M/TKEclo5hsBI/AAAAAAAAAGY/4-0AMajcV9U/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78775790352287160.post-6712559277279318265</id><published>2010-09-20T20:05:00.002-03:00</published><updated>2010-09-20T20:09:01.272-03:00</updated><title type='text'>Tutorial Django</title><content type='html'>&lt;div class="western" style="margin-bottom: 0cm; text-align: center;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: center;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: left;"&gt;Neste tutorial você aprenderá a instalar e configurar o Django, além de praticar através de um exemplo.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: left;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;u&gt;Instalando no Windows&lt;/u&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Baixe e instale primeiramente o Python (&lt;a href="http://www.python.org/download/"&gt;http://www.python.org/download/&lt;/a&gt;). &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;A instalação é simples execute o arquivo baixado clique em “&lt;b&gt;Next&lt;/b&gt;” e escolha o diretório em que o python será instalado. Ex.: “&lt;b&gt;C:\Python27\&lt;/b&gt;”.  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Você deve apenas se preocupar em configurar o python na variável de ambiente para que o sistema possa reconhecê-lo automaticamente. Para ter acesso a variável de de ambiente aperte as teclas Windows + Pause (a tecla Windows é a tecla com o logotipo do windows).&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Janela Propriedades do sistema, clique na aba &lt;b&gt;Avançado&lt;/b&gt;&lt;span style="font-weight: normal;"&gt; e em seguida no botão &lt;/span&gt;&lt;b&gt;Variáveis de ambiente&lt;/b&gt;&lt;span style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJffNg8yiSI/AAAAAAAAAgU/zkRXnze6m4s/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJffNg8yiSI/AAAAAAAAAgU/zkRXnze6m4s/s320/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Na caixa Variáveis do sistema clique sobre a variável com nome &lt;b&gt;path&lt;/b&gt; e clique em &lt;b&gt;editar&lt;/b&gt;.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJffS8zMbPI/AAAAAAAAAgc/gj3giBU4uSM/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJffS8zMbPI/AAAAAAAAAgc/gj3giBU4uSM/s320/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: left;"&gt;Na janela editar variável de sistema edite a linha valor da variável adicionando o caminho do diretório de instalação do python. Supondo que você instalou em &lt;b&gt;C:\Python27\&lt;/b&gt;&lt;span style="font-weight: normal;"&gt; adicione “&lt;/span&gt;&lt;b&gt;;C:\Python27\” &lt;/b&gt;&lt;span style="font-weight: normal;"&gt;no final da linha.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJffcUXrQvI/AAAAAAAAAgk/tZUMuHQr5SA/s1600/talaPath.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJffcUXrQvI/AAAAAAAAAgk/tZUMuHQr5SA/s320/talaPath.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Após esta etapa o python já estará instalado e configurado.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Agora vamos a instalação do Django que você pode baixar em &lt;a href="http://www.djangoproject.com/download/"&gt;http://www.djangoproject.com/download/&lt;/a&gt;.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Ao baixar o arquivo ele vem com a extensão &lt;b&gt;tar.gz&lt;/b&gt;, a maioria dos descompactadores mais novos já suportam esta extensão, mas se o seu não suporta você pode baixar o 7-zip (&lt;a href="http://www.7-zip.org/"&gt;http://www.7-zip.org/&lt;/a&gt;) que também é um software livre.  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Descompacte o arquivo onde quiser.  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Dentro da pasta onde você descompactou crie um arquivo e chame de “&lt;b&gt;instalar.bat&lt;/b&gt;”, edite usando o bloco de notas e digite:&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;python setup.py install&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pause&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Salve, feche o arquivo e execute.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Feito isso, o Django estará instalado.  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Atenção: talvez não seja necessário o passo a seguir. Verifique se sua versão do python já possui a biblioteca  pySQLite.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Agora vamos seguir para o último passo: instalar a biblioteca do banco de dados SQLite. O SQLite é um banco de dados simples, sem muitos recursos. É ideal para o ambiente de criação e desenvolvimento. Não dá pra fazer muitas coisas com ele, mas você dificilmente vai precisar de fazer muitas coisas enquanto cria seu site.  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Para o Django trabalhar em conjunto com o SQLite, é preciso apenas instalar uma biblioteca, chamada pySQLite, e nada mais. Então, vá até a página seguinte e faça o download do tarball (código-fonte, com extensão .tar.gz). &lt;a href="http://oss.itsystementwicklung.de/trac/pysqlite/#Downloads"&gt;http://oss.itsystementwicklung.de/trac/pysqlite/#Downloads&lt;/a&gt;.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Se a instalação do pySQLite apresentar erros de compilação no Windows, tente instalar com um dos instaladores executáveis disponíveis na página de download acima. Isso às vezes ocorre por consequência de algum tipo de incompatibilidade entre compiladores.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Após o download, faça o mesmo que fez com o Django:&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; margin-left: 1.18cm;"&gt;1. descompacte usando o 7-zip  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; margin-left: 1.18cm;"&gt;2. crie o arquivo instalar.bat com aquele mesmo código dentro  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; margin-left: 1.18cm;"&gt;3. execute  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; margin-left: 1.18cm;"&gt;4. pronto.  &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Agora você tem um ambiente de desenvolvimento instalado para começar a usar.&lt;/div&gt;&lt;br /&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;u&gt;Instalando no Linux&lt;/u&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Geralmente no linux já vem o Python e o PySQL instalados.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Desta maneira é apenas necessário instalar o Django executando o seguinte comando no diretório onde está o arquivo &lt;b&gt;Django-1.2.3.tar.gz&lt;/b&gt;:&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="font-size: small;"&gt; tar xzvf Django-1.2.3.tar.gz&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; cd Django-1.2.3&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; sudo python setup.py install&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;Pronto!&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Neste tutorial desenvolvemos com Django na IDE Eclipse (&lt;a href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt;).&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Para utilizar o Django na IDE Eclipse é necessário baixar o plug-in &lt;b&gt;Pydev&lt;/b&gt;, você pode fazer isso utilizando o próprio eclipse.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Abra o eclipse utilize o menu &lt;b&gt;Help&amp;gt;Install New Software...&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Na janela install clique no botão &lt;b&gt;Add...&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;Na janela Add Site digite o nome: &lt;b&gt;PyDev&lt;/b&gt; e Location: &lt;b&gt;http://pydev.org/updates&lt;/b&gt;&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJffhhpewXI/AAAAAAAAAgs/uAHDptTgPqQ/s1600/t2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJffhhpewXI/AAAAAAAAAgs/uAHDptTgPqQ/s400/t2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Deverá aparecer duas opções:&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJffoEN-nII/AAAAAAAAAg0/1xOoB7lACJ8/s1600/t3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJffoEN-nII/AAAAAAAAAg0/1xOoB7lACJ8/s400/t3.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Marque a caixa de seleção PyDev e espere o download e configuração do plugin.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Após isto você terá um ambiente de desenvolvimento Django e poderá utilizar a IDE Eclipse para programar.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Agora vamos à prática...&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;/div&gt;&lt;div align="CENTER" class="western" style="margin-bottom: 0cm;"&gt;&lt;b&gt;Criando uma Agenda&lt;/b&gt;&lt;/div&gt;&lt;div align="CENTER" class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="CENTER" class="western" style="margin-bottom: 0cm;"&gt;&lt;b&gt;Criando um projeto com Administrador&lt;/b&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;Após configurado o eclipse, vamos criar um projeto Django, clique em novo e escolha a opção PROJECT, depois escolha a opção Django Project e NEXT.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfh_dni38I/AAAAAAAAAg8/zlp82CNQMCk/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfh_dni38I/AAAAAAAAAg8/zlp82CNQMCk/s320/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Depois iremos dar um nome ao projeto, que iremos chamar de &lt;b&gt;Agenda&lt;/b&gt;&lt;span style="font-weight: normal;"&gt;, iremos escolher a versão do Python, ou a versão 2.6 ou 2.7, a 3.0 não é compatível com o Django 1.2, agora NEXT.&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiDLt683I/AAAAAAAAAhE/bcsjtIKUfNU/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiDLt683I/AAAAAAAAAhE/bcsjtIKUfNU/s320/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;Por último iremos escolher a versão do Django é o banco de dados que iremos usar. Vamos usar a versão 1.2 do Django e vamos usar o Sqlite3 para modelar o banco, pois é mais simples de usar para esse exemplo.&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiE_QHxOI/AAAAAAAAAhM/WHiByKYuEAw/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiE_QHxOI/AAAAAAAAAhM/WHiByKYuEAw/s320/3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;Agora  basta da um clique em FINISH e o eclipse vai criar uma estrutura iqual a essa.&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiF1kQ7vI/AAAAAAAAAhU/Hl-VheH31cg/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiF1kQ7vI/AAAAAAAAAhU/Hl-VheH31cg/s320/4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div align="JUSTIFY" class="western" style="margin-bottom: 0cm;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=78775790352287160&amp;amp;postID=6712559277279318265" name="__DdeLink__0_272738699"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=78775790352287160&amp;amp;postID=6712559277279318265" name="__DdeLink__2_272738699"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=78775790352287160&amp;amp;postID=6712559277279318265" name="__DdeLink__4_272738699"&gt;&lt;/a&gt; &lt;span style="font-weight: normal;"&gt;Vamos em Run, então o eclipse irá executar o servidor do Django, par ver se esta tudo correto abra um &lt;/span&gt;&lt;span lang="en-US"&gt;&lt;span style="font-weight: normal;"&gt;Browser&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt; (Firefox, Chrome. Etc)  e vamos digitar o endereço “&lt;a href="http://localhost:8000/"&gt;http://localhost:8000/&lt;/a&gt;” e iremos ver a seguinte página.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiJCLDeJI/AAAAAAAAAhc/b7Yu4hOVmoc/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiJCLDeJI/AAAAAAAAAhc/b7Yu4hOVmoc/s320/5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: normal;"&gt;Agora vamos habilitar a página do administrador do Django, vamos em settings.py, primeiro procure por “&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;LANGUAGE_CODE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3a3935;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3a3935;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;'&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;u&gt;&lt;span style="font-weight: normal;"&gt;en&lt;/span&gt;&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;-us'&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;” e mude para “&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;LANGUAGE_CODE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3a3935;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3a3935;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;'&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;u&gt;&lt;span style="font-weight: normal;"&gt;pt&lt;/span&gt;&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;-br'&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;”, assim nossa página adminstrador do Django será em português. &lt;/span&gt; &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=78775790352287160&amp;amp;postID=6712559277279318265" name="__DdeLink__7_272738699"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=78775790352287160&amp;amp;postID=6712559277279318265" name="__DdeLink__9_272738699"&gt;&lt;/a&gt; &lt;span style="font-weight: normal;"&gt; Procure por “&lt;/span&gt;&lt;span style="color: silver;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;'&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;django.contrib.admin',&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;” dentro de “&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;INSTALLED_APPS”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt; e descomete essa linha apagando o “#”, preste atenção para que essa linha siga a identação das demais. Feito isso vamos em urls.py e descometamos essas duas linhas, &lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;”&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3a3935;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;django.contrib&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3a3935;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3a3935;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: normal;"&gt;admin” e “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;admin.autodiscover()”, e depois descometamos “(r&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;'^&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;u&gt;admin&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;/'&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;,include(admin.site.urls)),”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt; Agora é hora de usarmos &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;o comando “syncdb” para sincronizar os dados da aplicação com o bando e gerar as tabelas do mesmo, vamos da um clique com o botão direito do mouse em Agenda e escolher Django -- &amp;gt; Sync DB. Com isso vamos criar as tabelar referente a pagina administrador do Django e vamos criar um superusuário com nome, e-mail e senha, lembre-se desses dados para os próximos passos. Depois de executado podemos notar que um arquivo foi adicionado na pasta &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;src&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;, esse arquivo é o nosso banco.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-eqw0MKVTqU/TJfiJ1TimrI/AAAAAAAAAhk/u_fa2TUbncE/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-eqw0MKVTqU/TJfiJ1TimrI/AAAAAAAAAhk/u_fa2TUbncE/s320/6.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="font-size: small;"&gt;Vamos rodar nosso projeto outra vem em RUN e recarregar nossa pagina, se tudo foi feito certinho até agora vamos ver esse erro:&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-eqw0MKVTqU/TJfiK-SKQzI/AAAAAAAAAhs/QwPx01rHvaU/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-eqw0MKVTqU/TJfiK-SKQzI/AAAAAAAAAhs/QwPx01rHvaU/s320/7.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;Esse erro ocorreu porque agora temos uma página e só usamos a url do servidor, vamos agora tentar entrar nessa url: &lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;“&lt;/span&gt;&lt;/span&gt;&lt;a href="http://localhost:8000/admin/"&gt;&lt;u&gt;&lt;span style="font-weight: normal;"&gt;http://localhost:8000/admin/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;” e você verá essa página:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiL04E18I/AAAAAAAAAh0/eT7DEKCjdqE/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiL04E18I/AAAAAAAAAh0/eT7DEKCjdqE/s320/8.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;Após o &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-US"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;login&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt; entraremos nessa página:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiNY9hR2I/AAAAAAAAAh8/adtUI9A5HJE/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiNY9hR2I/AAAAAAAAAh8/adtUI9A5HJE/s400/9.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div align="CENTER" class="western" style="margin-bottom: 0cm;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=78775790352287160&amp;amp;postID=6712559277279318265" name="__DdeLink__11_272738699"&gt;&lt;/a&gt; &lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="text-decoration: none;"&gt;Adicionando uma aplicação com &lt;/span&gt;&lt;span lang="en-US"&gt;&lt;span style="text-decoration: none;"&gt;Template&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="CENTER" class="western" style="margin-bottom: 0cm; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="text-decoration: none;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;Para adicionar uma aplicação vamos da um clique com o botão direito do mouse em Agenda--&amp;gt;Django--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="en-US"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;create&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-US"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;application, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="pt-BR"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;vamos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="en-US"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="pt-BR"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;dar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="en-US"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt; o &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="pt-BR"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;nome de contato a nossa aplicação, depois de aperta OK, vai ser criado uma pasta com o nome contato e quatro arquivos dentro. Vamos agora criar a classe que vai definir nosso contato, abra o arquivo “models.py”, nesse arquivo vamos definir todas as entidades que serão usadas na aplicação contato, edite o arquivo models.py até ficar assim:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="pt-BR"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiOf6FddI/AAAAAAAAAiE/54fPnAf_6eM/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiOf6FddI/AAAAAAAAAiE/54fPnAf_6eM/s320/10.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;Acabamos de criar uma classe Contato que herda da classe Models e tem os atributos nome, fixo, cel e endereco como campos de caracteres(CharField) com o tamanho especificado no parâmetro e um atributo email  com um campo de e-mail(EmailField).&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt; Vamos fazer com que nossa aplicação se torne parte do nosso sistema, para que isso ocorra vamos abrir novamente o settings.py e adicionar contato no INSTALLED_APPS:&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiPLbXyCI/AAAAAAAAAiM/jozVjloaHBU/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiPLbXyCI/AAAAAAAAAiM/jozVjloaHBU/s320/11.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=78775790352287160&amp;amp;postID=6712559277279318265" name="__DdeLink__746_516126501"&gt;&lt;/a&gt; &lt;span style="font-size: small;"&gt;Agora é só rodar o camando &lt;b&gt;SYNC DB&lt;/b&gt; que já usamos antes e vamos ver mais uma tabela sendo criada, vamos então fazer com que nossa pagina de administrador possa interagir com a entidade que criamos, para isso dentro da pasta contado crie um arquivo com o nome “admin.py”  e edite esse arquivo até ficar assim:&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiQo9a08I/AAAAAAAAAiU/D5BIlwLMrkE/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiQo9a08I/AAAAAAAAAiU/D5BIlwLMrkE/s320/12.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;Vamos rodar o servidor e ir ver a pagina do administrador, la veremos que Contato já faz parte da nossa página, e temos a opção de adicionar um contato e modificar um contato existente.&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiSUu68qI/AAAAAAAAAic/ifnlz0AOpdg/s1600/13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiSUu68qI/AAAAAAAAAic/ifnlz0AOpdg/s400/13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;Clique em adicionar e vamos criar um contato, preencha os dados e clique em salvar, note que o Django já faz tratamento de erro caso você coloque um e-mail não valido. Após criar um contado vamos ver que ele vai aparecer em uma lista.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-eqw0MKVTqU/TJfiTfvch_I/AAAAAAAAAik/hzBY6vMZ4J0/s1600/14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="137" src="http://3.bp.blogspot.com/_-eqw0MKVTqU/TJfiTfvch_I/AAAAAAAAAik/hzBY6vMZ4J0/s400/14.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;Note que o objeto esta com o nome “Contato object”, e isso não é interessante. Para mudar isso vamos em models.py para criar uma função que vai retorna o nome do contato.&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiUyfbL2I/AAAAAAAAAis/Hjmx3V6T5E0/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiUyfbL2I/AAAAAAAAAis/Hjmx3V6T5E0/s320/15.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;Recarregando a pagina após a modificação veremos que agora aparece o nome do contato.&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiWIv8QFI/AAAAAAAAAi0/NmklJWSc93U/s1600/16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiWIv8QFI/AAAAAAAAAi0/NmklJWSc93U/s400/16.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;Já é hora de usarmos templetes para a nossa aplicação, dentro da pasta Agenda vamos criar uma outra pasta com o nome “templates”, depois de fazermos isso dizer ou Django onde esta esta pasta, para isso abra o settings.py e acrescente esse &lt;b&gt;import&lt;/b&gt; em destaque como mostra na figura, ele importa o “os” para facilitar na hora de pegar o endereço da pasta onde esta o projeto.&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" lang="pt-BR" style="font-weight: normal; margin-bottom: 0cm; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiXhAuAMI/AAAAAAAAAi8/UQ52ZEPATGw/s1600/17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="191" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiXhAuAMI/AAAAAAAAAi8/UQ52ZEPATGw/s400/17.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="pt-BR"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;Com o &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="pt-BR"&gt;&lt;span style="text-decoration: none;"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="pt-BR"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt; feito, vamos adicionar mais uma mudança no settings.py, só que dessa vez em “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span lang="pt-BR"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;TEMPLATE_DIRS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;” adicionando o caminho da pasta templates como na figura.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiYcBZnxI/AAAAAAAAAjE/A36DfdJLcV4/s1600/18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfiYcBZnxI/AAAAAAAAAjE/A36DfdJLcV4/s400/18.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Criando um Template&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt; Crie um arquivo com o nome “base.html”, ele é nosso HTML estático que será usado pelos outros HTMLs. Edite-o para que fique assim.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiZK146dI/AAAAAAAAAjM/GPAIcEXVCfI/s1600/19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiZK146dI/AAAAAAAAAjM/GPAIcEXVCfI/s320/19.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;Com essas tags “{% block content %}{% endblock %}” podemos enviar dados do Django que será transformado em HTML.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt; Agora dentro da pasta templates criaremos outra pasta com o nome “contato”, nesta pasta ficará todas os HTMLs de contato, dentro dela vamos criar um arquivo com o nome “list.html”, vamos usá-lo para listar os nossos contatos. Antes de editar esse arquivo precisamos criar a função que vai passa a lista dos contatos para o HTML, abra o views.py e edite-o assim:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiZ5WVoaI/AAAAAAAAAjU/Exg0vXd2_UI/s1600/20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="127" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfiZ5WVoaI/AAAAAAAAAjU/Exg0vXd2_UI/s400/20.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;Estamos importando  a classe Contato que criamos no models.py e importando funções do Django para redirecionar os dados para um HTML. No começo da função criamos a variável &lt;b&gt;contatos&lt;/b&gt; e atribuímos a ela todos os contatos, e estamos retornando uma reposta com o endereço do arquivo list.html que criamos antes e a variável &lt;b&gt;contatos.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; Precisamos agora criar a &lt;/span&gt;&lt;b&gt;url&lt;/b&gt; que irá chamar essa função, então vamos em urls.py e adicionamos a seguinte linha como mostra a figura.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfibaIju4I/AAAAAAAAAjc/aHovs-qoXzA/s1600/21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://2.bp.blogspot.com/_-eqw0MKVTqU/TJfibaIju4I/AAAAAAAAAjc/aHovs-qoXzA/s400/21.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;Assim criamos um &lt;b&gt;url&lt;/b&gt; “contato/listar” com o endereço da função que criamos antes, já é hora de editarmos o list.html, vamos deixar o arquivo desse jeito:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfid1GkVKI/AAAAAAAAAjk/Is6Clsd9GZ0/s1600/22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="277" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfid1GkVKI/AAAAAAAAAjk/Is6Clsd9GZ0/s400/22.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;A gora temos um HTML que vai receber a variável &lt;b&gt;contatos&lt;/b&gt;&lt;span style="font-weight: normal;"&gt; e vai exibir a lista de contatos, podemos perceber que na primeira linha estamos estendendo a base.html e juntando com o list.html, o &lt;/span&gt;&lt;b&gt;“block content”&lt;/b&gt;&lt;span style="font-weight: normal;"&gt; de list.html vai substituir o &lt;/span&gt;&lt;b&gt;“block content”&lt;/b&gt;&lt;span style="font-weight: normal;"&gt; da base.html.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; Depois de salvar tudo vamos rodar o projeto para ativar o servidor e vamos acessar a página “&lt;a href="http://localhost:8000/contato/listar"&gt;http://localhost:8000/contato/listar&lt;/a&gt;”, e se tudo der certo vamos ver a lista de contatos que você cadastrou na página do administrador.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Usando Genéricos&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt; Vamos usar agora as funções genéricas do Django para &lt;b&gt;criar&lt;/b&gt; e &lt;b&gt;editar&lt;/b&gt; um contato. Já podemos fazer isso através da página do administrador, mais vamos fazer isso usando template. Vamos abrir o urls.py e vamos acrescentar mais duas urls, uma para editar e outra para criar, vamos deixar o urls.py assim.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfifXX5JnI/AAAAAAAAAjs/b_HVyqTMGq4/s1600/23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="207" src="http://4.bp.blogspot.com/_-eqw0MKVTqU/TJfifXX5JnI/AAAAAAAAAjs/b_HVyqTMGq4/s400/23.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;Primeiro importe Contato como mostra na segunda linha, então vamos fazer a url criar que tem como parâmetro a função genérica “create_object” , e depois passamos o modelo de Contato, o template que vai ser usado e o endereço que vai ser redirecionado depois de salvo. A url editar é bem parecida com a url criar, mais com algumas diferenças, a primeira é esse parte do endereço  “&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;(?P&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;u&gt;&amp;lt;object_id&amp;gt;&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00aa00;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;\d+)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;” que tem a função de pegar o id do objeto que será editado, e a segunda é a função genérica que dessa vez é a “update_object”.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt; Já temos as urls, falta agora criar o arquivo “generic_form.html” que usamos como parâmetro. Os genérico devem ser usador por todas as aplicações, então vamos criar esse arquivo dentro da pasta templates, depois de criado vamos editá-lo da seguinte forma.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiglwBQeI/AAAAAAAAAj0/D3CA-grGJ7s/s1600/24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://1.bp.blogspot.com/_-eqw0MKVTqU/TJfiglwBQeI/AAAAAAAAAj0/D3CA-grGJ7s/s400/24.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;Agora podemos rodar o projeto e criar novos contatos e editar os já existentes.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;Para aprender mais visite:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;a href="http://docs.djangoproject.com/en/dev/intro/tutorial01/"&gt;http://docs.djangoproject.com/en/dev/intro/tutorial01/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;a href="http://docs.djangoproject.com/en/1.2/"&gt;http://docs.djangoproject.com/en/1.2/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;a href="http://docs.djangobrasil.org/intro/tutorial01.html"&gt;http://docs.djangobrasil.org/intro/tutorial01.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;a href="http://www.aprendendodjango.com/"&gt;http://www.aprendendodjango.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;Referencias:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;  &lt;a href="http://www.djangoproject.com/"&gt;http://www.djangoproject.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;Autores:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Felipe Rios&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Pedro Henrique&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Thiago Lins&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman', serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="LEFT" class="western" style="font-weight: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78775790352287160-6712559277279318265?l=blog.aracomp.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aracomp.com.br/feeds/6712559277279318265/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://blog.aracomp.com.br/2010/09/tutorial-django.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/6712559277279318265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/6712559277279318265'/><link rel='alternate' type='text/html' href='http://blog.aracomp.com.br/2010/09/tutorial-django.html' title='Tutorial Django'/><author><name>Django</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-eqw0MKVTqU/TJffNg8yiSI/AAAAAAAAAgU/zkRXnze6m4s/s72-c/1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78775790352287160.post-7608328544801011471</id><published>2010-08-31T23:04:00.008-03:00</published><updated>2010-08-31T23:41:50.352-03:00</updated><title type='text'>Tutorial  WRT (Web RunTime)</title><content type='html'>&lt;div style="text-align: center;"&gt;Autores:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;Helder May&lt;br /&gt;Lais Cardoso&lt;br /&gt;Tiago Emmanuel&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TUTORIAL WRT&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;    Este tutorial ensina a construir um aplicativo que utiliza a plataforma WRT Nokia. Essa plataforma, nada mais é do que uma maneira de poder rodar widgets diretamente do celular, fora do browser, como se fossem aplicativos nativos. Web widgets são pequenos pedaços de códigos executados no cliente, funcionam como extensões de página Web, são desenvolvidos utilizando linguagens de uso comum na Web (HTML, JavaScript, CSS). A ferramenta utilizada para a construção deste aplicativo foi o Aptana Studio e o Nokia WRT plugin para o Aptana Studio, o Aptana Studio pode ser adquirido gratuitamente através do endereço http://www.aptana.org.&lt;br /&gt;&lt;br /&gt;CRIANDO UM NOVO PROJETO WRT&lt;br /&gt;&lt;br /&gt;De Aptana, selecione Arquivo-&gt; Novo-&gt; New Project.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22n5II2xI/AAAAAAAAAM0/ow1Y1Nkl6Gk/s1600/1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 90px;" src="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22n5II2xI/AAAAAAAAAM0/ow1Y1Nkl6Gk/s320/1.png" alt="" id="BLOGGER_PHOTO_ID_5511762315437464338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na caixa de diálogo New Project, selecione "Nokia Web Runtime (WRT)" -&gt; "New Nokia Web Runtime Widget Wizard" e clique no botão "Next".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22oV0i6dI/AAAAAAAAAM8/o8L7izjjVTw/s1600/2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 308px;" src="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22oV0i6dI/AAAAAAAAAM8/o8L7izjjVTw/s320/2.png" alt="" id="BLOGGER_PHOTO_ID_5511762323139914194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No Widget Nokia diálogo New Project, selecione a opção "Basic Widget with WRTKit " e clique no botão "Next". Estamos usando o Widget Basic with WRTKit em vez da versão sem suporte WRTKit porque queremos aproveitar UI pronta que Nokia disponibiliza no WRTKit, ao invés de ter que criar tudo do zero.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22ovv5JCI/AAAAAAAAANE/ecucfcv_Fi0/s1600/3.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 304px;" src="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22ovv5JCI/AAAAAAAAANE/ecucfcv_Fi0/s320/3.png" alt="" id="BLOGGER_PHOTO_ID_5511762330099721250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dê um nome ao projeto, por exemplo, "DiggClient". E marque "Use default location" ou selecione a sua localização preferencial para os arquivos de projeto e clique no botão "Next".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22pK0LtdI/AAAAAAAAANM/fBsUOwRw3i4/s1600/4.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 293px;" src="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22pK0LtdI/AAAAAAAAANM/fBsUOwRw3i4/s320/4.png" alt="" id="BLOGGER_PHOTO_ID_5511762337365472722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nós não precisamos mudar o nome do elemento identificador. Deixe a opção “Enable HomeScreen” desmarcada, nós não precisamos falar sobre HomeScreen widgets neste tutorial.&lt;br /&gt;Neste ponto, o modelo possui informações suficientes para criar um projeto esqueleto, no entanto, ao invés de clicar no botão "Finish", nesta fase, que você irá clicar no botão “Next”.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Et0Q8KzgsAk/TH22pmL-TCI/AAAAAAAAANU/FW1Yb_-bh9U/s1600/5.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 292px;" src="http://4.bp.blogspot.com/_Et0Q8KzgsAk/TH22pmL-TCI/AAAAAAAAANU/FW1Yb_-bh9U/s320/5.png" alt="" id="BLOGGER_PHOTO_ID_5511762344713014306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Substitua os nomes padrão para o HTML principal, CSS e JavaScript com arquivos "diggclient" e clique no botão "Finish".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Et0Q8KzgsAk/TH24azNF42I/AAAAAAAAAOE/YSW1IX7Jsak/s1600/6.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 293px;" src="http://4.bp.blogspot.com/_Et0Q8KzgsAk/TH24azNF42I/AAAAAAAAAOE/YSW1IX7Jsak/s320/6.png" alt="" id="BLOGGER_PHOTO_ID_5511764289532584802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pronto! Aptana criou um completamente funcional "Olá Mundo" Web Runtime Widget para você. Antes de ver o nosso novo widget em ação, vamos dar uma olhada no que o Aptana e o Nokia WRT plugin criaram para você.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;    O QUE TORNA UM PROJETO WRT WIDGET?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Aptana criou um conjunto de arquivos para você quando você clicou no botão “Finish”. Se você expandir o projeto DiggClient dentro do Aptana você verá algo similar ao seguinte:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH24bFxF7OI/AAAAAAAAAOM/tHL36E3UqhA/s1600/7.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 309px; height: 320px;" src="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH24bFxF7OI/AAAAAAAAAOM/tHL36E3UqhA/s320/7.png" alt="" id="BLOGGER_PHOTO_ID_5511764294515420386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Info.plist&lt;br /&gt;&lt;br /&gt;O arquivo que vamos olhar é Info.plist. Info.plist é uma parte obrigatória de cada widget ele irá residir no diretório raiz do seu projeto widget. O próprio arquivo XML é um dicionário que fornece o tempo de execução Web com informações-chave sobre o seu widget. Se você examinar o conteúdo do Info.plist, arquivo criado por você no Aptana, você verá algo como o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH24bnsTg1I/AAAAAAAAAOU/1kRjkx4Xu18/s1600/8.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 169px;" src="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH24bnsTg1I/AAAAAAAAAOU/1kRjkx4Xu18/s320/8.png" alt="" id="BLOGGER_PHOTO_ID_5511764303622144850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Observe que o nome do projeto que você forneceu para o modelo aparece no arquivo Info.plist como o widget DisplayName, como o identificador de widget.&lt;br /&gt;Observe também que diggclient.html é definido como o valor da chave MainHTML. O arquivo referido pela chave MainHTML é carregado pelo Web runtime quando o widget é lançado.&lt;br /&gt;Também estão incluídos no arquivo Info.plist a chave da versão, o que corresponde ao número da versão da sua aplicação widget. Finalmente, observe que o widget está autorizado a acessar os recursos da rede porque a chave AllowNetworkAccess é definido como verdadeiro, enquanto MiniViewEnabled é definida como false, o que significa que este item não suporta a tela inicial.&lt;br /&gt;diggclient.html&lt;br /&gt;Seu widget deve criar uma página HTML simples que é carregada pelo ambiente WRT e existe para manter a vida do seu widget. O conteúdo desta página HTML pode mudar dinamicamente de acordo como o seu widget funciona, porém você não pode navegar para fora da página HTML. O nome da página HTML é definido pela chave MainHTML no arquivo Info.plist. O arquivo pode ser chamado &lt;anything&gt;. Html, neste caso o nome do widget está - diggclient.html. Outras pessoas gostam de usar index.html, a escolha é de sua preferência. Tal como acontece com o arquivo Info.plist, o arquivo HTML é obrigatória e deve residir no diretório raiz do seu projeto widget.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Seu arquivo diggclient.html deve ficar parecido com este:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH24b0FHVRI/AAAAAAAAAOc/Zlm2CnCh_Pw/s1600/9.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 122px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH24b0FHVRI/AAAAAAAAAOc/Zlm2CnCh_Pw/s320/9.png" alt="" id="BLOGGER_PHOTO_ID_5511764306947429650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Porque o nosso widget está usando o WRTKit para elementos da interface do usuário o que não exigem muito HTML. O arquivo de exemplo acima, é muito típico de widgets WRT WRTKit. Quase todo o trabalho real é feito por JavaScript em um widget baseado em WRTKit.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;O que precisamos fazer em HTML é definir uma estrutura de documento básico para o seu widget, referindo-se a um ou mais arquivos JavaScript na seção head do seu documento HTML. Normalmente, esses arquivos serão referenciados por JavaScript que contêm a lógica que implementa o seu widget. No caso do nosso tutorial widget, nós nos referimos a diggclient.js, que é o arquivo de nosso widget JavaScript e WRTKit.js que é o ponto de entrada para a biblioteca Nokia UI WRTKit.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Para definir o layout e aparência dos elementos do widget UI, que são incentivados a fazer uso de folhas de estilo em cascata, para que os nossos links de arquivos HTML usem diggclient.css, o nosso widget tem sua própria folha de estilo em cascata. Tecnicamente não haverá nada se você adicionar todos as definições de CSS e JavaScript código no arquivo HTML do widget, mas é mais fácil para gerenciar seus projetos, se você separar o HTML, CSS e JavaScript.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;É também de salientar que é perfeitamente possível criar um widget WRT totalmente em HTML sem a utilização de CSS e JavaScript. Esses widgets tendem a não ser visualmente muito atraentes, pois não podem fazer uso da WRTKit ou quaisquer outras bibliotecas JavaScript, no entanto, é possível criar widgets, portanto o uso de Javascript e CSS é opcional e não obrigatória.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Tanto o JavaScript e CSS arquivos, se presentes, podem residir em qualquer diretório dentro do seu projeto widget, incluindo o diretório root.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;O nosso widget usa JavaScript e a função chamada quando o elemento é carregado é dado pelo valor do atributo onload do elemento body. Assim, o nosso widget chama a função JavaScript, init () no carregamento.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Icon.png&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Observe que Aptana tem incluído um arquivo icon.png nos arquivos do projeto criados. Um ícone é opcional. Se você incluir um ícone para o seu widget, ele deve residir no diretório raiz do seu projeto de widget e deve ser no formato PNG. A resolução recomendada para um ícone é de 88 por 88 pixels. O ícone será dimensionado pelo tempo de execução, dependendo do dispositivo em que o widget está sendo executado. Se você não incluir um ícone para o seu widget, o runtime irá fornecer o ícone padrão da aplicação S60 para representar o seu widget no shell do dispositivo.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;diggclient.js&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;diggclient.js é onde a maior parte da implementação nosso widget pode ser encontrada. Mas ao invés de examinar o arquivo em detalhes agora, vamos voltar a ele depois de ver o seu widget funcionando.&lt;/anything&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;anything&gt;    VER PARA CRER&lt;/anything&gt;&lt;br /&gt;&lt;/div&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;    Para ver o widget em ação, basta clicar duas vezes sobre diggclient.html na lista de arquivos em seu projeto Aptana. Aptana irá abrir o arquivo e exibir o conteúdo no painel principal do editor.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Na parte inferior do painel principal em Aptana Studio, você deve ver dois guias - um identificado como "Source", que é o guia aberto por padrão, e uma outra aba chamada "Nokia Web Runtime (WRT)".&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH24cQO88iI/AAAAAAAAAOk/2rCudyExAYE/s1600/10.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 165px;" src="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH24cQO88iI/AAAAAAAAAOk/2rCudyExAYE/s320/10.png" alt="" id="BLOGGER_PHOTO_ID_5511764314504884770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Selecione o guia "Nokia Web Runtime (WRT)" e você verá um preview totalmente interativo de seu widget correndo em Aptana Studio. Se tudo estiver certo, você deverá ver algo semelhante a isto:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH25eYtpB0I/AAAAAAAAAOs/4Pg-_dhIK4M/s1600/11.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 253px; height: 320px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH25eYtpB0I/AAAAAAAAAOs/4Pg-_dhIK4M/s320/11.png" alt="" id="BLOGGER_PHOTO_ID_5511765450652452674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;Brinque com o seu widget. Digite o seu nome na caixa de texto e clique em "Diga Olá!" para receber uma saudação:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH25eocExCI/AAAAAAAAAO0/sxf21Bi_--s/s1600/12.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 222px; height: 320px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH25eocExCI/AAAAAAAAAO0/sxf21Bi_--s/s320/12.png" alt="" id="BLOGGER_PHOTO_ID_5511765454873740322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Observe que o menu Opções é funcional, dando um exemplo de um simples aviso e uma opção para sair do widget. Nada mau para menos de 15 linhas de HTML! Mas, claro, por enquanto você percebe que o verdadeiro trabalho está sendo feito pelo código JavaScript ainda invisível.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;anything&gt;O SCRIPT&lt;/anything&gt;&lt;br /&gt;&lt;/div&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;No início do script, vamos declarar algumas variáveis JavaScript que seram usadas para representar partes da UI do nosso widget:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH25e7uvSyI/AAAAAAAAAO8/Egf_7AxgvWI/s1600/13.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 146px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH25e7uvSyI/AAAAAAAAAO8/Egf_7AxgvWI/s320/13.png" alt="" id="BLOGGER_PHOTO_ID_5511765460052298530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Este pequeno bloco de código que mostra inicialmente declaração de variáveis para representar diversos objetos da interface do usuário: uiManager, MainView, helloButton, nameField e aboutLabel. Finalmente, nós declaramos MENU_ITEM_ABOUT, que define a posição do "About" na opção do menu do widget.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;uiManager, MainView, helloButton, nameField aboutLabel irão se tornar objetos WRTKit UI. O uiManager se tornará o elemento raiz de uma hierarquia de objetos WRTKit em nosso widget, um ou outro entre MainView ou aboutView será definido como a visão atual sobre o objeto uiManager em todos os momentos. O helloButton &amp;amp; nameField serão controles no MainView e aboutLabel será um controle no aboutView.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;anything&gt;NOSSO PONTO DE ENTRADA&lt;/anything&gt;&lt;br /&gt;&lt;/div&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Lembre-se da discussão de diggclient.html, que define o atributo onload do documento body de tag HTML a nossa "init ()", significando que esta é a função JavaScript que será chamada quando o nosso documento HTML é carregado. Nós tomaremos a função init() pedaço por pedaço. Para a função, temos o seguinte:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH25fQtpkaI/AAAAAAAAAPE/hAxPX3-iQXU/s1600/14.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 80px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH25fQtpkaI/AAAAAAAAAPE/hAxPX3-iQXU/s320/14.png" alt="" id="BLOGGER_PHOTO_ID_5511765465684873634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;A primeira coisa que fazemos na nossa função init() é montar o nosso menu de opções. Fazemos isso através da criação de um objeto MenuItem, passando a seqüência de caracteres para representar este item no menu, junto com a posição que esse item irá ocupar no menu, o MenuItem é um construtor. Em seguida, partimos MenuItem que é de propriedade onSelect para apontar para uma função que será chamada quando este item de menu é selecionado. Neste caso, queremos que a função menuItemSelected () seja chamada quando o nosso item de menu é selecionado. A última coisa que podemos fazer para representar o nosso menu é acrescentar ao nosso objeto MenuItem widget no menu.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Observe que essa última etapa mostra um outro benefício para a declaração explicita de variáveis, não foi declarado nada chamado "menu" em qualquer lugar, então o JavaScript cria para nós,? Não! Neste caso, o menu é na verdade um objeto fornecido por WRT para cada widget. Na verdade, WRT oferece um conjunto de objetos para cada elemento, o mais fundamentais são:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;widget - fornece um conjunto de métodos e propriedades que se aplicam globalmente para o seu widget como um todo. Pode ser acessado através da palavra widget palavra-chave.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;menu - oferece APIs para manipular o menu de opções e teclas de seu widget. Podem ser acessados através da palavra-chave menu. Observe que o menu de opções é sempre associado com a tecla esquerda no seu código não se pode mudar isso - uma implicação disso é que o texto da tecla esquerda é sempre "Options", em Inglês, ou o equivalente na língua da interface do usuário atual do dispositivo. Uma opção para sair do widget é sempre acrescentado pelo WRT para o conjunto de itens de menu que seu widget define.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;MenuItem - oferece APIs para representar e manipular os itens em um widget de menu. MenuItem é um tipo de referência aos objetos do tipo MenuItem que sempre são criados usando o operador new.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Em seguida, permitir a navegação guia e mostrar as teclas de função - mas apenas se o widget está sendo executado dentro do WRT:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH25f3mwXSI/AAAAAAAAAPM/afu8xUMqz4A/s1600/15.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 103px;" src="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH25f3mwXSI/AAAAAAAAAPM/afu8xUMqz4A/s320/15.png" alt="" id="BLOGGER_PHOTO_ID_5511765476124941602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;O motor WRT amplia a janela de objeto construído JavaScript com uma nova propriedade, widget. Felizmente, JavaScript permite que você teste para uma propriedade simplesmente avaliando uma expressão da forma object.property, então podemos facilmente testar para ver se nós estamos executando no ambiente WRT pela codificação:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH27MEOCCYI/AAAAAAAAAPU/UNZrwMS9FtM/s1600/16.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 244px; height: 78px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH27MEOCCYI/AAAAAAAAAPU/UNZrwMS9FtM/s320/16.png" alt="" id="BLOGGER_PHOTO_ID_5511767334936775042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Se window.widget avalia como “true”, o WRT está disponível para nós, mas se a expressão for avaliada como falso, não estamos operando em um ambiente em que o WRT está disponível.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Por que precisamos que se cheque se o ambiente é WRT? Estamos criando um widget WRT não estamos? Bem, sim estamos, mas o cérebro do seu widget são apenas funções JavaScript. O JavaScript pode ser executado em uma variedade de ambientes, tais como navegador de seu PC ou no telemóvel. Além disso, em princípio, alguns ou todos os códigos que compõem o seu widget podem vir de outro lugar - um site, um elemento de outra plataforma, uma biblioteca JavaScript. Alternativamente, você pode reutilizar o código que você escreve para agilizar o seu widget em outro projeto. Para apoiar esses cenários – é de ajuda a depuração - é bom para garantir que você está no ambiente WRT antes de tentar usar WRT e suas características específicas.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Por padrão, o modo de navegação pelo cursor está ativado, mas nós não queremos isso para o nosso widget assim chamamos setNavigationEnabled (false) para ativar a navegação por TAB. Alguns widgets avançados podem utilizar a navegação por cursor, que se baseia na utilização de um ponteiro na tela, similar ao browser S60. Guia de navegação é normalmente usado por widgets simples que têm apenas alguns elementos da interface do usuário, geralmente organizados em uma pilha vertical. Note que o seu widget pode alternar entre guia e navegação por cursor em qualquer tempo, conforme necessário.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Agora é hora de criar alguns objetos de interface do usuário:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH27MvBhUWI/AAAAAAAAAPc/KBGbI---8Qw/s1600/17.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 126px;" src="http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH27MvBhUWI/AAAAAAAAAPc/KBGbI---8Qw/s320/17.png" alt="" id="BLOGGER_PHOTO_ID_5511767346427023714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Quando criamos nosso projeto widget, nós selecionamos a opção Widget Basic com o apoio de WRTKit. Fizemos isso para que pudéssemos aproveitar os controles de interface do usuário mais ricos fornecidos pela Nokia no WRTKit. Para poder usar o WRTKit, precisamos criar um objeto UIManager que irá gerir a apresentação de pontos de vista do nosso widget e gerir os recursos para nós.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Tendo criado o objeto WRTKit UIManager, criamos duas visões - MainView e aboutView. Observe que ambas as visões são criadas como objetos ListView. ListView é um dos controles de interface do usuário fornecida pelo WRTKit que organiza os controles adicionados à lista de controle como uma pilha vertical. Dois parâmetros são passados para o construtor ListView, sendo que ambos são strings: um id que identifica a exibição da lista resultante e uma legenda que ocupa a área no topo da lista. Uma razão para especificar um id de um objeto deve ser a capacidade de identificar um objeto específico como a fonte de um evento em um manipulador de eventos. No entanto, se você não precisa identificar um determinado objeto em um manipulador de eventos, você pode definir o id como null. A legenda pode ser uma string vazia se você quiser ter uma área de legenda, sem qualquer conteúdo, ou nulo se você quiser uma exibição de lista sem uma área de legenda.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Neste ponto, nós criamos um gerenciador de interface do usuário e dois pontos de vista vazios. Para adicionar algum conteúdo para nossos pontos de vista deve-se fazer o seguinte:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH27M3rXndI/AAAAAAAAAPk/68yMaWI_gUU/s1600/19.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 126px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH27M3rXndI/AAAAAAAAAPk/68yMaWI_gUU/s320/19.png" alt="" id="BLOGGER_PHOTO_ID_5511767348750032338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;Aqui vamos criar um objeto TextField, que permite que o usuário digite algum texto, como um aviso de "Digite seu nome". Em seguida, adicione o TextField em nosso MainView.  Lembrando que MainView é um controle ListView e que controla atualmente o conteúdo como uma pilha vertical, você pode ver que o texto "Digite seu nome" aparecerá no topo da janela, sob a legenda do MainView.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Em seguida, adicione um controle FormButton ao MainView. Um FormButton é um controle de botão de base que nos permite anexar um manipulador de evento (ou EventListener em WRTKit), que será chamado quando a tecla é pressionada. Quando chamamos o construtor FormButton voltamos a passar um id (null) e também uma string que é usada como a etiqueta na face do botão.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Nós vincularemos um manipulador de eventos para o controle FormButton chamando addEventListener() no objeto FormButton, passando o nome do evento que deseja tratar ("ActionPerformed") e o nome da função que queremos fazer a chamada quando o evento ocorre (helloButtonClicked ()). Se você está se perguntando onde o nome do evento "ActionPerformed" vem, ele é definido como um evento da classe abstrata ActionControl, a partir do qual é derivado FormButton.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;A visão de cima é trivial e consiste simplesmente em um controle de rótulo que irá mostrar algumas informações sobre o widget para o usuário. Então nós criamos uma instância da classe WRTKit Label e adicioná-lo ao nosso aboutView.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Tudo o que resta para completar a construção e inicialização de nosso widget é simplesmente dizer que o objeto uiManager inicialmente faz a utilização:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Et0Q8KzgsAk/TH27NIiEBbI/AAAAAAAAAPs/GQ63HWbSmPw/s1600/20.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 302px; height: 88px;" src="http://4.bp.blogspot.com/_Et0Q8KzgsAk/TH27NIiEBbI/AAAAAAAAAPs/GQ63HWbSmPw/s320/20.png" alt="" id="BLOGGER_PHOTO_ID_5511767353274402226" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;anything&gt;BUTTON MANIPULADOR DE EVENTOS E NOTIFICAÇÕES&lt;/anything&gt;&lt;br /&gt;&lt;/div&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Vejamos agora o que acontece quando o usuário clica em nosso botão "Diga Olá!". Nós já sabemos que temos configurado o controle FormButton para chamar uma função helloButtonClicked() quando o botão for pressionado. Aqui está o código dessa função:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH28qETFqhI/AAAAAAAAAP0/mS9V9K3tUhM/s1600/21.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 90px;" src="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH28qETFqhI/AAAAAAAAAP0/mS9V9K3tUhM/s320/21.png" alt="" id="BLOGGER_PHOTO_ID_5511768949865687570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;A fim de apresentar uma notificação pop-up para o usuário, a primeira coisa que precisamos fazer é pegar o texto atual que o usuário tenha digitado no campo de texto, atribuindo o resultado da função getText() no nameField a uma variável.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Chamamos então uiManager 's ShowNotification a (...) para apresentar uma notificação de diálogo ao usuário. Se o nameField está vazio, apresentamos uma nota de aviso, pedindo ao usuário para digitar o seu nome. Se o nameField contém pelo menos um caractere, nós apresentamos uma nota de informação, cumprimentando o usuário para o mundo dos widgets WRT. Em cada caso, três parâmetros são passados para ShowNotification (...):&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;• duração (em milissegundos) para mostrar a nota&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;• tipo de nota (que influencia o ícone mostrado na janela)&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;• mensagem a ser mostrada para o usuário&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Quando a duração da nota tiver expirado, a nota é removida da tela e destruída pelo uiManager.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Observe que não se faz uso do parâmetro do evento passado para o nosso manipulador de eventos. Não é necessário neste caso simples, mas vamos olhar novamente para os manipuladores de eventos e as informações passadas a eles mais tarde neste tutorial.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;anything&gt;MENU DE MANUSEIO DE EVENTO&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;/div&gt;&lt;anything&gt;Em nosso método init(), definimos a propriedade onSelect aboutMenuItem para se referir à função menuItemSelected(). Sempre "Sobre" é selecionado a partir do nosso menu de opções, a função menuItemSelected () será chamada.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH28qbRJoTI/AAAAAAAAAP8/MF2-0WmOuc4/s1600/22.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 122px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH28qbRJoTI/AAAAAAAAAP8/MF2-0WmOuc4/s320/22.png" alt="" id="BLOGGER_PHOTO_ID_5511768956031574322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Você pode usar a mesma função para lidar com a seleção de várias ou todas as opções de menu, razão pela qual passa um inteiro WRT id como identificador da função. Esta identificação é a posição do item selecionado no menu. Lembrando que a posição do nosso "Sobre" é definida pela variável MENU_ITEM_ABOUT, você pode ver que sempre que o usuário escolhe "Sobre" no menu de opções, o showAboutView function() é chamado.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH28qh-8FQI/AAAAAAAAAQE/vPTOp6JQ3x8/s1600/23.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 60px;" src="http://2.bp.blogspot.com/_Et0Q8KzgsAk/TH28qh-8FQI/AAAAAAAAAQE/vPTOp6JQ3x8/s320/23.png" alt="" id="BLOGGER_PHOTO_ID_5511768957834237186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;showAboutView() define o conteúdo textual do aboutLabel de uma mensagem sobre o software que está incluído em seu widget, passando a mensagem como uma string para a função setText() objeto Label.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Antes de podermos mostrar o aboutView, é preciso modificar as teclas de função em uso. Estamos apenas realmente preocupados com a tecla direita porque se deixá-la como "Exit", não haverá nenhuma maneira para que o usuário retorne à exibição principal do nosso widget. Vamos mudar as teclas de função para o ponto de vista chamando outra função, setAboutViewSoftkeys().&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;    Agora, podemos mostrar ao usuário chamando a função uiManager 'setView(s), passando o objeto aboutView como o parâmetro.&lt;/anything&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;anything&gt;    ALTERAR OS SOFTKEYS E RETORNAR PARA A VISTA PRINCIPAL&lt;/anything&gt;&lt;br /&gt;&lt;/div&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;    Como mencionado acima, é preciso mudar a tecla de função direita usada na exibição “Sobre” para fornecer um mecanismo para que o usuário volte à tela principal. Nós poderíamos ter alcançado este objetivo, modificando o menu de opções - talvez por retirar a opção “Sobre” e substituí-la por uma opção principal - mas isso não seria uma solução muito intuitiva.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;    A forma como vamos conseguir isso é mudar a tecla direita de "Exit" para "Ok". Ao mesmo tempo, vamos atribuir uma função de manipulador para implementar a lógica de comutação de volta à janela principal quando o softkey "Ok " é selecionado pelo usuário. O código para fazer isso é o seguinte:&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH29Mf_cq9I/AAAAAAAAAQM/t6phQCmjU9E/s1600/24.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 86px;" src="http://1.bp.blogspot.com/_Et0Q8KzgsAk/TH29Mf_cq9I/AAAAAAAAAQM/t6phQCmjU9E/s320/24.png" alt="" id="BLOGGER_PHOTO_ID_5511769541415054290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Como você pode ver a partir do código, a função que é chamada quando o usuário seleciona o softkey "Ok" é showMainView():&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Et0Q8KzgsAk/TH29M-NdwjI/AAAAAAAAAQU/pZ5G7qwCzr8/s1600/25.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 152px;" src="http://4.bp.blogspot.com/_Et0Q8KzgsAk/TH29M-NdwjI/AAAAAAAAAQU/pZ5G7qwCzr8/s320/25.png" alt="" id="BLOGGER_PHOTO_ID_5511769549526909490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;showMainView() redefine o softkey direito como "Exit", limpando o texto atualmente atribuído à tecla de função direita e definindo a função de manipulador para null. Avisos WRT fornecem a saída do texto e uma função de manipulador adequado automaticamente.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Então tudo o que precisamos fazer para voltar a exibição principal do nosso widget é dizer ao uiManager para mostrar o nosso MainView novamente.&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;&lt;/anything&gt;&lt;/div&gt;&lt;anything&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Referências&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/anything&gt;&lt;div style="text-align: center;"&gt;&lt;anything&gt;Marcos Fábio – Apresentação ministrada no embedded;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;Vídeo aulas editora Europa – JavaScript e HTML;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;http://forum.nokia.com/taglibs/fn-1.0;&lt;/anything&gt;&lt;br /&gt;&lt;anything&gt;http://developer.symbian.org/wiki/index.php&lt;/anything&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78775790352287160-7608328544801011471?l=blog.aracomp.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aracomp.com.br/feeds/7608328544801011471/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://blog.aracomp.com.br/2010/08/tutorial-wrt-web-runtime_31.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/7608328544801011471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78775790352287160/posts/default/7608328544801011471'/><link rel='alternate' type='text/html' href='http://blog.aracomp.com.br/2010/08/tutorial-wrt-web-runtime_31.html' title='Tutorial  WRT (Web RunTime)'/><author><name>Helder</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Et0Q8KzgsAk/TH22n5II2xI/AAAAAAAAAM0/ow1Y1Nkl6Gk/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78775790352287160.post-6513104808294266757</id><published>2010-08-26T11:00:00.008-03:00</published><updated>2010-08-30T22:08:00.988-03:00</updated><title type='text'>Introdução à programação Python para celulares Symbian S60</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style=" line-height: 16px; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Este tutorial tem como objetivo introduzir o leitor ao desenvolvimento de aplicativos móveis em smartphones (telefones inteligentes) embarcados com o sistema operacional Symbian Série 60 (S60). A plataforma de desenvolvimento abordada neste tutorial é o Python S60, por ser rápida, simples e fácil torna-se a escolha ideal para a criação de aplicativos para dispositivos na plataforma Symbian S60.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span style="color:#333333;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Introdução&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="line-height: 32px;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;O numero de smartphones no mercado supera novas expectativas a cada dia, as pessoas passam a usar celulares não apenas para fazer ligações ou enviar sms, o smartphone passa a ser uma ferramenta de trabalho e de entretenimento fantástica. A cada dia com um poder maior de processamento, tanto de dados  como gráfico, os celulares inteligentes conseguem acompanhar o usuários em todos os momentos do seu dia. Esse aumento do numero de aparelhos e o surgimento de novas necessidades de programas e ferramentas, fazem com que a programação para esses dispositivos ganhe mais admiradores e desenvolvedores.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Desde o surgimento desses aparelhos os programadores encontram dificuldades como: processamento limitado, telas pequenas, limitações de memória, dentre outros fatores que exigem uma maior habilidade por parte dos desenvolvedores para conseguir aplicativos eficientes e usáveis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Atualmente existem várias plataformas que foram estabelecidas inicialmente pelos fabricantes de dispositivos móveis. Algumas empresas mais ousadas criaram seu próprio sistema operacional, outras preferiram usar sistemas prontos. Estas plataformas permitem que os desenvolvedores utilizem  a API nativa do sistema para ter acesso as diversas funcionalidades do aparelho e do sistema. Neste cenário o Symbian OS conseguiu se destacar e ser uma das principais plataformas de desenvolvimento. Symbian é um sistema proprietário para dispositivos móveis desenvolvido pela Symbian e custeado pela Nokia,Sony Ericsson e Samsung , atualmente é só propriedade da nokia, mais informações &lt;/span&gt;&lt;a href="http://www.symbian.com/index.asp"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Symbian&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Os aparelhos Symbian são agrupados em plataformas que compartilhem certas características, como: resolução da tela, processamento, versão do sistema. Esse agrupamento facilita a vida do desenvolvedor, generalizando o público alvo e melhorando o numero de aparelhos que a aplicação pode ser compatível. As plataformas mais populares são: Série 60, Série 80, série 90 e UIQ. A série 60 ganha vantagem por ter mais fabricantes licenciados e um maior numero de aparelhos no mercado, sendo assim também a mais popular no brasil.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#333333;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Symbian S60&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Trata-se de um sistema operacional multitarefa que possui uma interface gráfica intuitiva que suporta várias plataformas para desenvolvimento. Através da Linguagem Symbian C++, que é uma variação de c++, o desenvolvedor tem acesso a todos os recursos do aparelho facilmente e direto no hardware. Symbian c++ apresenta algumas vantagens com relação ao JavaME, por ser mais rápida, por ter acesso total ao aparelho, no entanto, é uma linguagem mais complexa. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#333333;"&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);  line-height: 24px; font-family:'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;A maior dificuldade encontrada foi a necessidade de um estudo prévio aprofundado dessas plataformas e suas particularidades. Isso se tornou dispendioso, já que o foco do desenvolvimento de aplicativos móveis deveria ser em fácil aprendizado e rapidez na produção de aplicativos. A Nokia, então, reconheceu essa necessidade de uma linguagem que oferecesse aos desenvolvedores um meio que pudesse implementar aplicações úteis sem a obrigação de gastar meses aprendendo Java ou C++ e mais além os detalhes técnicos envolvidos no sistema operacional Symbian. O resultado foi o Python para S60 (PyS60), uma linguagem de script portada para celulares Symbian OS.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#333333;"&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);  line-height: 24px; font-family:'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;line-height: 24pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Python é uma linguagem de programação de script orientada a objeto que pode ser usada em diversas plataformas e ambientes. Não precisa de uma prévia compilação, o código é interpretado em tempo de execução. Rápido aprendizado, permite que o código seja feito de maneira compactada e legível. Comando agrupados pela indentação e dispensa a declaração de variáveis.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;u1:p&gt;&lt;/u1:p&gt;  &lt;/span&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Por que usar Python para S60?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Desenvolvimento relativamente simples, fácil e rápido;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;É bem adequado para o desenvolvimento de protótipos ou para construção de aplicações&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Um conhecimento básico em qualquer linguagem de programação em script é o bastante para entender a programação de scripts Python e criar aplicações em um tempo curto&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Pelas virtudes naturais do Python :)‏&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Desenvolvimento C++ para dispositivos móveis é ainda mais árido que para desktop&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Boa parte das bibliotecas padrão do Python está disponível no PyS60&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Permite adiar a depuração no dispositivo, de várias formas&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;A depuração no dispositivo é mais fácil&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Torna muito mais fácil o acesso a recursos como câmera ou SMS, em relação a C++&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Comunidade muito mais atuante&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://pys60.sourceforge.net&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;text-align:center"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Desvantagens do PyS60&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Não faz coleta de lixo de referências circulares por motivos de performance&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Desempenho pode ser um problema&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Nem toda a API C++ está coberta&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;text-align:center"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Capacidades de PyS60&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Elementos da GUI: Menu, Form, Listbox, Input field, Dialog, Note;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Gráficos: Cores, atributos font e style, desenho na tela, imagens e ícones;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span lang="EN-US"  style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span lang="EN-US"  style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language:EN-UScolor:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"  style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Sockets: TCP/IP, Bluetooth;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"  style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span lang="EN-US"  style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span lang="EN-US"  style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language:EN-UScolor:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"  style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Mensagens ( SMS );&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"  style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Rede( HTTP, FTP, ... )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Acesso a câmera, telefone;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Acesso a calendário, contatos e informações do sistema;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Localização GPS;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Acelerômetro&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;text-align:center"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Compatibilidade&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Instalar scripts via Bluetooth ou SMS não funciona na 3rd Edition; é preciso usar outro meio&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:72.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Celulares 3rd Edition dão acesso via USB ao cartão de memória do telefone como se fosse um pen drive&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:72.0pt;text-align:justify;text-justify:inter-ideograph;text-indent: -18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Um truque: ZIPar script e mandar via Bluetooth, pois o celular tem como descompactar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;mso-margin-bottom-alt: auto;text-align:center"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Desenvolvimento com PyS60&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;É possível criar um programa Python direto no dispositivo móvel.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;É possível se conectar por bluetooth e enviar linhas de código para o dispositivo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;É possível criar um programa Python no PC e enviar para o dispositivo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Para testar o dispositivo móvel usamos o emulador;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Como instalar ?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Dispositivo móvel:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:72.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;baixar dois arquivos com a extensão SIS:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:108.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;PythonForS60_1_4_4_VERSAO.SIS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:144.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Esse pacote tem o interpretador do Python propriamente dito.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:108.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;PythonScriptShell_1_4_4_VERSAO.SIS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:144.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Esse pacote disponibiliza a opção "Python" no menu "Aplicativos" do seu celular e além de trazer alguns exemplos de código.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Instalando no Emulador&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:72.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Baixar PythonForS60_1_4_5_SDK_3rdEdFP1.zip&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:72.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Descompactar na pasta onde foi instalada o SDK&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Python for S60 2.0.0 – Novidades&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Suporte para eventos de touchScreen para o appuifw Canvas. Uma API foi adicionada ao módulo appuifw, touch_enabled() que verifica se o dispositivo suporta touchscreen.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Suporte SSL para socket.&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;SSL (&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Protocolo de Camada de Sockets Segura&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;), são&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;a href="http://pt.wikipedia.org/wiki/Protocolo"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;protocolos&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://pt.wikipedia.org/wiki/Criptografia"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;criptográficos&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;que conferem segurança de comunicação na&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;a href="http://pt.wikipedia.org/wiki/Internet"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Internet&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;para serviços como&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;a href="http://pt.wikipedia.org/wiki/Email"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;email&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;a href="http://pt.wikipedia.org/wiki/SMTP"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;SMTP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;), navegação por páginas (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;a href="http://pt.wikipedia.org/wiki/HTTP"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;HTTP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;) e outros tipos de transferência de dados&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#444748;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u1:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Cuidados:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;PyS60 – 3ª edição:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;margin-left: 36pt; text-indent: -18pt; "&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Não existe um reconhecedor e instalador de arquivos *.py;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;•&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height:115%;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Deve-se notar que módulos e scripts Python a serem executados no dispositivo devem ser colocados no diretório na raiz onde o Python foi instalado&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:36.0pt;text-indent:-18.0pt"&gt;&lt;b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Testando Programas&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p   style="margin-top:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left: 0cm;text-align:justify;text-justify:inter-ideograph;line-height:13.5pt; vertical-align:baseline;border-style:initial;border-color:initial;outline-width: 0px; outline-style: initial;outline-background-image:initial; background-attachment:initial;background-origin: initial;background-clip: initialfont-size:12px;color:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Agora falta o último passo que precisa ser executado antes de partirmos para o desenvolvimento de uma aplicação para S60: enviar um programa Python para o aparelho para testar.&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p   style="margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify: inter-ideograph;line-height:13.5pt;vertical-align:baseline;border-style:initial; border-color:initial;outline-width: 0px;outline-style: initial;outline- background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initialfont-size:12px;color:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Para isso vamos fazer um pequeno programa chamado "&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt  style="border-style:initial; border-color:initial;outline-width: 0px;outline-style: initial;outline- background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initialcolor:transparent;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ola_mundo.py&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;" com o seguinte conteúdo:&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div style="mso-element:para-border-div;border:dashed #2F6FAB 1.0pt;mso-border-alt: dashed #2F6FAB .75pt;padding:12.0pt 12.0pt 12.0pt 12.0pt;background:#F9F9F9"&gt;&lt;pre  style="line-height:13.2pt;background:#F9F9F9;vertical-align:baseline; border:none;mso-border-alt:dashed #2F6FAB .75pt;padding:0cm;mso-padding-alt: 12.0pt 12.0pt 12.0pt 12.0pt;border-style:initial;border-color:initial; outline-width: 0px;outline-style: initial;outline-background-image: initial;background-attachment:initial;background-origin: initial;background-clip: initial; overflow-x: auto;overflow-y: autocolor:initial;"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="line-height:13.2pt; background:#F9F9F9;vertical-align:baseline;border:none;mso-border-alt:dashed #2F6FAB .75pt; padding:0cm;mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;import appuifw&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="line-height:13.2pt; background:#F9F9F9;vertical-align:baseline;border:none;mso-border-alt:dashed #2F6FAB .75pt; padding:0cm;mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;appuifw.note(u"Olá Mundo!", "info")&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;p class="MsoNormal"  style="text-align: center;border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color:initial;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="line-height:115%; Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Python Fornece alguns Módulos Especifico:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height:115%;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p  style="margin-top:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left: 0cm;line-height:13.5pt;vertical-align:baseline;border-style:initial;border-color: initial;outline-width: 0px;outline-style: initial;outline- background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Iremos falar rapidamente sobre os módulos do PyS60 a partir de agora mas por questão de espaço não poderemos entrar em maiores detalhes sobre cada um deles ou até mesmo sobre suas funções.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="margin:0cm;margin-bottom:.0001pt;line-height:13.5pt;vertical-align: baseline;border-style:initial;border-color:initial;outline-width: 0px; outline-style: initial;outline-background-image:initial; background-attachment:initial;background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Para uma visão detalhada de cada um deles eu recomendo uma visita à documentação oficial do Python para S60 que pode ser encontrada no endereço&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.pythonbrasil.com.br/moin.cgi/DocumentacaoPython" title="http://www.pythonbrasil.com.br/moin.cgi/DocumentacaoPython" style="border-style:initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-color: initial;background-attachment:initial;background-origin: initial; background-clip: initial;background-color:initial;background-repeat:no-repeat; background-position-x:100%;background-position-y:50%"&gt;&lt;b&gt;&lt;span style="border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm; padding:0cmcolor:#395796;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.pythonbrasil.com.br/moin.cgi/DocumentacaoPython&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="margin-top:6.0pt;margin-right:0cm;margin-bottom:6.0pt;margin-left: 0cm;line-height:13.5pt;vertical-align:baseline;border-style:initial;border-color: initial;outline-width: 0px;outline-style: initial;outline- background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Os módulos específicos do PyS60 são:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-line-height-alt:9.0pt;vertical-align:baseline"&gt;&lt;tt  style="border-style:initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;e32&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left:36.0pt;mso-line-height-alt:9.0pt; vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Este módulo fornece acesso às funções específicas do sistema operacional Symbian que não possuem relação direta com a interface com o usuário. Neste módulo você irá encontrar funções que retornam a versão do PyS60, se seu programa está rodando no emulador, a lista de todos os&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i  style="border-style:initial; border-color:initial;outline-width: 0px;outline-style: initial;outline- background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;drives&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;disponíveis e funções e objetos que lidam com&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i  style="border-style:initial; border-color:initial;outline-width: 0px;outline-style: initial;outline- background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;locks&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i  style="border-style:initial;border-color:initial; outline-width: 0px;outline-style: initial;outline-background-image: initial;background-attachment:initial;background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;threads&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, etc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left:36.0pt;mso-line-height-alt:9.0pt; vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;sysinfo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left:36.0pt;mso-line-height-alt:9.0pt; vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Este módulo fornece funções que retornam dados do aparelho tais como qual o perfil escolhido (geral, reunião, silencioso, ...), o estado da carga da bateria, tamanho da tela, espaço livre em disco, IMEI, potência do sinal da rede telefônica, tipo de toque, informações sobre a memória do aparelho, versão do&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i  style="border-style:initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;firmware&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, etc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left:36.0pt;mso-line-height-alt:9.0pt; vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;appuifw&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Neste módulo você irá encontrar tudo o que tem relação com a interface gráfica com o usuário (GUI). É um dos módulos mais importantes do PyS60.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;graphics&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left:36.0pt;line-height:18.0pt;vertical-align: baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Módulo com funções gráficas para manipulação de imagens, desenho de primitivas, impressão de textos em imagens, funções para tirar&lt;/span&gt;&lt;/span&gt;&lt;i  style="border-style:initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;span style="border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;screenshots&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, etc. Esse módulo tem total interoperabilidade com os módulos&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt  style="border-style:initial; border-color:initial;outline-width: 0px;outline-style: initial;outline- background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;camera&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt  style="border-style:initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;appuifw&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left:36.0pt;line-height:18.0pt;vertical-align: baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;camera&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Um dos módulos mais interessantes do PyS60 por sua facilidade de uso. Este módulo disponibiliza funções para manipular a(s) câmera(s) do celular permitindo que se tire fotografias ou que se grave vídeos com elas.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;gles&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Biblioteca que fornece uma API compatível com OpenGL/ES para desenho de gráficos 3D com aceleração (alguns dispositivos da S60 possuem um chip para aceleração gráfica 3D).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;sensor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Este módulo dá acesso aos sensores de aceleração, rotação e tapping (bater com o dedo na tela do celular aciona esse sensor). Vale lembrar que apenas alguns modelos de celulares S60 dispõem desses sensores.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;audio&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Esse módulo permite a manipulação total do sistema de áudio do aparelho. Com ele é possível manipular tanto o auto-falante externo (tocando um MP3, por exemplo) quanto o áudio de uma ligação telefônica (emitir um som no meio de uma conversa ou até mesmo gravá-la).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;telephone&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Funcionalidades de telefonia tais como fazer uma ligação ou atender à uma chamada estão neste módulo.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;messaging&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Esse módulo tem as funções responsáveis pelo envio de SMS e MMS.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;tt  style="border-style:initial;border-color:initial;outline-width: 0px; outline-style: initial;outline-background-image:initial; background-attachment:initial;background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;inbox&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;tt  style="border-style:initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;contacts&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;tt  style="border-style: initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;calendar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;tt  style="border-style: initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Manipulam respectivamente a caixa de entrada de mensagens (SMS/MMS), os contatos da agenda e os eventos de calendário. Esses módulos são extremamente poderosos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;tt  style="border-style:initial;border-color:initial;outline-width: 0px; outline-style: initial;outline-background-image:initial; background-attachment:initial;background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;location&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;tt  style="border-style: initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;positioning&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;tt  style="border-style: initial;border-color:initial;outline-width: 0px;outline-style: initial; outline-background-image:initial;background-attachment:initial; background-origin: initial;background-clip: initialcolor:initial;"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Módulos de localização que utilizam respectivamente os dados da rede GSM e dados do GPS (interno ou externo) do aparelho.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;e32db&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Mini banco de dados relacional que permite manipulação utilizando SQL (será substituído pelo SQLite em versões futuras do PyS60).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;socket&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span class="Apple-style-span" style=" line-height: normal;  "&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Módulo que já acompanha o Python e recebeu adições para suportar conexões via Bluetooth.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;line-height:18.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;mso-line-height-alt:9.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;mso-line-height-alt:9.0pt;vertical-align:baseline"&gt;&lt;b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Exemplo de Desenvolvimento&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0cm;margin-right:0cm;margin-bottom:1.2pt; margin-left:36.0pt;mso-line-height-alt:9.0pt;vertical-align:baseline"&gt;&lt;span style="color:#333333;"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="western" style="margin-top:11.35pt;margin-right:0cm;margin-bottom:0cm; margin-left:36.0pt;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph; vertical-align:baseline"&gt;&lt;span style="color:#444748;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Podemos escrever um "olá mundo" em PyS60 com apenas duas linhas, importando o módulo "audio", que inclui as funções relacionadas à reprodução e gravação de áudio e o acesso ao sintetizador de voz. A partir daí, podemos usar a função "audio.say" para fazer o aparelho falar, veja só:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left:36.0pt;vertical-align:baseline"&gt;&lt;span style="line-height: 115%; color:#444748;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;import audio&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style=
