<?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-3409448611921930575</id><updated>2011-12-15T03:42:54.320-08:00</updated><category term='osgi bundle modularização java'/><title type='text'>Mário Mariani</title><subtitle type='html'>DESENVOLVIMENTO WEB</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mariomariani.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3409448611921930575/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mariomariani.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mário Mariani</name><uri>https://profiles.google.com/105097168662221020275</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-HEEenh4_FTQ/AAAAAAAAAAI/AAAAAAAAANM/iLnIinUn4Ww/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3409448611921930575.post-4529787490195391753</id><published>2010-03-12T16:18:00.000-08:00</published><updated>2010-03-15T19:16:43.272-07:00</updated><title type='text'>Resultado de uma retrospectiva</title><content type='html'>Este é o resultado da última reunião de retrospectiva da equipe onde trabalho.&lt;br /&gt;&lt;br /&gt;É muito interessante como esse feedback dá um panorama geral do projeto, e não apenas dos desenvolvedores.&lt;br /&gt;&lt;br /&gt;A partir desse feedback você pode tomar decisões importantes e impactantes no projeto.&lt;br /&gt;&lt;br /&gt;Pra quem não conhece, a retrospectiva tem como objetivos avaliar e melhorar o processo de desenvolvimento.&lt;br /&gt;&lt;br /&gt;Os integrantes da equipe desenham, num pedaço de papel:&lt;br /&gt;- uma carinha feliz, pra colocar o que achou legal&lt;br /&gt;- uma triste , pra colocar o que acha que tem que melhorar&lt;br /&gt;- e deixam um espaço em branco, pra colocar o que não foi ruim nem bom.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Avaliação da equipe:&lt;br /&gt;&lt;br /&gt;Coisas Boas =)&lt;br /&gt;- Entrosamento da equipe&lt;br /&gt;- Aprendizado (2 vezes)&lt;br /&gt;- Dinamismo entre o grupo (Ambiente de trabalho) (2 vezes)&lt;br /&gt;- Refatoração e testes&lt;br /&gt;- Feedback do cliente&lt;br /&gt;- Fato do projeto começar do zero&lt;br /&gt;- A paciência do Scrum Master&lt;br /&gt;- Flexibilidade de horário&lt;br /&gt;- Liberdade de expressão&lt;br /&gt;- Galera caiu dentro&lt;br /&gt;- Gerência no excel&lt;br /&gt;- Conseguimos atingir a meta no final do ano&lt;br /&gt;- Equipe firme para este ano&lt;br /&gt;- Crescimento do projeto&lt;br /&gt;- Cliente satisfeito&lt;br /&gt;&lt;br /&gt;Coisas a melhorar =(&lt;br /&gt;- Pagamento atrasando direto (5 vezes)&lt;br /&gt;- As doideiras que o cliente pede&lt;br /&gt;- Ter que refatorar muita coisa&lt;br /&gt;- Ninguém dava um rolé no sistema no sistema para achar erros e só ficavam perguntando o que tinha pra fazer&lt;br /&gt;- Ninguém ia aos dojos&lt;br /&gt;- Perda de foco nas reuniões com o cliente&lt;br /&gt;- Ausência por alguns momentos do Scrum Master&lt;br /&gt;- Isolamento da equipe do restante da equipe&lt;br /&gt;- Ausência do gerente de projetos&lt;br /&gt;- Falta de enfoque em tarefas gerenciais&lt;br /&gt;&lt;br /&gt;Não foi ruim nem bom =|&lt;br /&gt;- Layout "abandonado"&lt;br /&gt;- Ferramentas de trabalho&lt;br /&gt;&lt;br /&gt;Atividades para melhoria do processo&lt;br /&gt;- Fazer um diagrama de classe (feito)&lt;br /&gt;- Scrum Master passar feedback dos outros projetos e eventos&lt;br /&gt;- Galera comparecer nos outros projetos e eventos&lt;br /&gt;- Fazer o cliente focar no sistema na planning&lt;br /&gt;- Justificativa da falta no trabalho&lt;br /&gt;- Forçar a equipe a ser mais independente do Scrum Master (auto-gerenciável)&lt;br /&gt;- Criar um mecanismo para nos proteger do atraso no pagamento&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3409448611921930575-4529787490195391753?l=mariomariani.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mariomariani.blogspot.com/feeds/4529787490195391753/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://mariomariani.blogspot.com/2010/03/resultado-de-uma-retrospectiva.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3409448611921930575/posts/default/4529787490195391753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3409448611921930575/posts/default/4529787490195391753'/><link rel='alternate' type='text/html' href='http://mariomariani.blogspot.com/2010/03/resultado-de-uma-retrospectiva.html' title='Resultado de uma retrospectiva'/><author><name>Mário Mariani</name><uri>https://profiles.google.com/105097168662221020275</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-HEEenh4_FTQ/AAAAAAAAAAI/AAAAAAAAANM/iLnIinUn4Ww/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3409448611921930575.post-3980915012838880699</id><published>2010-02-14T18:12:00.000-08:00</published><updated>2011-10-26T06:24:47.374-07:00</updated><title type='text'>Comandos mais usados do svn</title><content type='html'>Estou criando esta lista pra gente ter sempre à mão os comandos mais usados do svn  no terminal, de modo simples e compacto.&lt;br /&gt;&lt;br /&gt;* Para mais comandos e detalhes:&amp;nbsp;&lt;a href="http://www.tigris.org/scdocs/ddUsingSVN_command-line"&gt;http://www.tigris.org/scdocs/ddUsingSVN_command-line&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;checkout (co)&lt;br /&gt;add&lt;br /&gt;del&lt;br /&gt;move (mv)&lt;br /&gt;status (st)&lt;br /&gt;diff&lt;br /&gt;log&lt;br /&gt;revert&lt;br /&gt;&lt;div&gt;update (up)&lt;br /&gt;resolved&lt;br /&gt;commit (ci)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esteja na pasta que foi realizado o checkout para executar os comandos.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;checkout&lt;/span&gt;&lt;br /&gt;&lt;div&gt;Baixa o projeto&lt;br /&gt;svn co http://svn.address.com/trunk dest_folder --username user&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;add&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Adiciona um novo arquivo ao versionamento&lt;br /&gt;svn add file&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;del&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Remove um arquivo do versionamento&lt;/div&gt;&lt;div&gt;--keep-local mantém o arquivo localmente, porém fora do versionamento&lt;/div&gt;&lt;div&gt;svn del file --keep-local&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;move&lt;/span&gt;Renomeia ou move um arquivo no versionamento (deletando o antigo e adicionando o novo)&lt;/div&gt;&lt;div&gt;svn mv orig dest&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;status&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Visualiza se um arquivo será ou foi adicionado, deletado, ou modificado localmente ou no repositório &lt;/div&gt;&lt;div&gt;-u para ver modificações do repositório&lt;br /&gt;svn st -u&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;diff&lt;/span&gt;Visualiza as alterações feitas no arquivo&lt;/div&gt;&lt;div&gt;svn diff file&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;log&lt;/span&gt;Visualiza a mensagem de commit do arquivo&lt;/div&gt;&lt;div&gt;svn log file&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;revert&lt;/span&gt;Reverte a alteração local feita no arquivo&lt;/div&gt;&lt;div&gt;svn revert file&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;update&lt;/span&gt;&lt;/div&gt;&lt;div&gt;svn up&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;resolved&lt;/span&gt;Remove o status de conflito do arquivo&lt;/div&gt;&lt;div&gt;svn resolved file&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;commit&lt;/span&gt;Envia as alterações para o repositório&lt;/div&gt;&lt;div&gt;svn ci -m message&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3409448611921930575-3980915012838880699?l=mariomariani.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mariomariani.blogspot.com/feeds/3980915012838880699/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://mariomariani.blogspot.com/2010/02/comandos-mais-usados-do-svn.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3409448611921930575/posts/default/3980915012838880699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3409448611921930575/posts/default/3980915012838880699'/><link rel='alternate' type='text/html' href='http://mariomariani.blogspot.com/2010/02/comandos-mais-usados-do-svn.html' title='Comandos mais usados do svn'/><author><name>Mário Mariani</name><uri>https://profiles.google.com/105097168662221020275</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-HEEenh4_FTQ/AAAAAAAAAAI/AAAAAAAAANM/iLnIinUn4Ww/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3409448611921930575.post-4823170725650028484</id><published>2009-12-08T17:01:00.000-08:00</published><updated>2010-01-08T17:39:03.541-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgi bundle modularização java'/><title type='text'>Resumão OSGI</title><content type='html'>&lt;a href="http://www.springsource.org/training/osgi/online"&gt;http://www.springsource.org/training/osgi/online&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spring - DM Server -&gt; Dinamic Modules Server&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1-OSGi -&gt; Sistema de modularização dinâmica para Java -&gt; Modularização de verdade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Modular:&lt;br /&gt;-Projetos (módulos), que são chamados de Bundles&lt;br /&gt;-JAR files com meta-data&lt;br /&gt;-Baseado em pacotes&lt;br /&gt;-Versionamento de pacotes e bundles&lt;br /&gt;&lt;br /&gt;Dinâmico:&lt;br /&gt;-Adicionar, remover, startar e parar bundles em runtime&lt;br /&gt;-Usa serviços compartilhados para compartilhar objetos, não apenas tipos&lt;br /&gt;&lt;br /&gt;"Bundles usam JAR Manifest para meta-data" -&gt; a configuração é feita no Manifest.mf dentro do META-INF&lt;br /&gt;&lt;br /&gt;Por default um bundle não consegue enxergar as classes dos outros&lt;br /&gt;&lt;br /&gt;Para que um suas classes (tipos) fiquem disponíveis para os outros bundles é necessário exportar seus pacotes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BOAS PRÁTICAS&lt;/span&gt;&lt;br /&gt;-Separe as interfaces das implementações&lt;br /&gt;*Coloque-os em pacotes diferentes&lt;br /&gt;*Exporte apenas as API públicas e esconda os detalhes&lt;br /&gt;*Exponha as implementações como serviços&lt;br /&gt;-Versione seus pacotes&lt;br /&gt;*Libere várias versões no mesmo runtime&lt;br /&gt;*Clientes pegam a versão que eles precisarem&lt;br /&gt;&lt;br /&gt;Para ter acesso aos tipos dos outros bundles é necessário importar os pacotes disponíveis (você pode especificar um range da versão que quer usar. Ex: "[1.0.0,2.0.0)" - incluindo a 1 e excluindo a 2)&lt;br /&gt;&lt;br /&gt;Os containers OSGi têm um pequeno core e são leves&lt;br /&gt;-Equinox (RI - eclipse)&lt;br /&gt;-Apache Felix&lt;br /&gt;-Knoplerfish&lt;br /&gt;&lt;br /&gt;Bundles são instalados no container OSGi e têm um lifecicle&lt;br /&gt;-Installed (faltando dependências)&lt;br /&gt;-Resolved (parado, mas com as dependências satisfeitas)&lt;br /&gt;-Starting&lt;br /&gt;-Started (serviços disponíveis)&lt;br /&gt;-Stopping&lt;br /&gt;-Uninstalled (sai no restart)&lt;br /&gt;&lt;br /&gt;Você deve disponibilizar os tipos (interface) através do manifest.mf e deve exportar os serviços em uma classe que estende org.osgi.framework.&lt;div id=":1ur" class="ii gt"&gt;&lt;wbr&gt;BundleActivator.&lt;br /&gt;&lt;br /&gt;Para utilizar o serviço você deve importar, no manifest.mf a classe que está disponível e, em um BundleActivator, recuperar a instância do serviço&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2-OSGi + Spring&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Simplifica o uso do OSGi através do applicationContext&lt;br /&gt;&lt;br /&gt;Os arquivos do Spring ficam em META-INF/spring&lt;br /&gt;&lt;br /&gt;namespace osgi&lt;br /&gt;&lt;br /&gt;Você usa o bean de outro bundle como dependência e o Spring injeta (osgi:reference)&lt;br /&gt;&lt;br /&gt;O Spring disponibiliza o serviço para você (osgi:service)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BOAS PRÁTICAS&lt;/span&gt;&lt;br /&gt;-Separar arquivos normais de configuração do Spring dos arquivos de configuração do Spring-DM&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3-Enterprise OSGi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OSGi não suporta aplicações web, então a Spring implementou isto no seu servidor DM&lt;br /&gt;&lt;br /&gt;Não possui nenhuma das funcionalidades de EJB, JNDI, etc..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4-Modularização da aplicação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-Vertical&lt;br /&gt;*Por funcinalidade&lt;br /&gt;°Pedidos, Pagamentos, Vendas...&lt;br /&gt;-Horizontal&lt;br /&gt;*Por camadas&lt;br /&gt;°Web, Repositório, Serviço...&lt;br /&gt;&lt;br /&gt;Compartilhar infa-estrutura faz sentido&lt;br /&gt;-DataSources&lt;br /&gt;-TransactionManager&lt;br /&gt;-JMS&lt;br /&gt;&lt;br /&gt;Qual o tamanho de um Bundle?&lt;br /&gt;-Responsabilidade definida&lt;br /&gt;-Alta coesão&lt;br /&gt;-Baixo acoplamento&lt;br /&gt;&lt;br /&gt;Modularização horizontal tende a acoplar os módulos&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5-Sumário&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OSGi modulariza de verdade dinamicamente&lt;br /&gt;&lt;br /&gt;Muitos benefícios em potencial, mas não são fáceis de se conseguir&lt;br /&gt;&lt;br /&gt;OSGi é uma área que ainda está no início da evolução (2008) e novos produtos e padrões estarão surgindo&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/3409448611921930575-4823170725650028484?l=mariomariani.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mariomariani.blogspot.com/feeds/4823170725650028484/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://mariomariani.blogspot.com/2009/12/resumao-osgi.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3409448611921930575/posts/default/4823170725650028484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3409448611921930575/posts/default/4823170725650028484'/><link rel='alternate' type='text/html' href='http://mariomariani.blogspot.com/2009/12/resumao-osgi.html' title='Resumão OSGI'/><author><name>Mário Mariani</name><uri>https://profiles.google.com/105097168662221020275</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-HEEenh4_FTQ/AAAAAAAAAAI/AAAAAAAAANM/iLnIinUn4Ww/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
