
blake kathryn

Kiana Khansmith
Today's Document
trying on a metaphor

titsay

taylor price
RMH

pixel skylines
Alisa U Zemlji Chuda
Claire Keane
Xuebing Du
Three Goblin Art
Aqua Utopia|海の底で記憶を紡ぐ

❣ Chile in a Photography ❣
KIROKAZE

PR's Tumblrdome
occasionally subtle

if i look back, i am lost

seen from Pakistan

seen from United States

seen from United Kingdom
seen from United States
seen from Kenya

seen from Azerbaijan
seen from Azerbaijan

seen from Malaysia

seen from United States
seen from United States

seen from United States

seen from United States
seen from United States
seen from United States
seen from Japan
seen from United States

seen from United States
seen from Indonesia
seen from Romania
seen from United States
@mathlc-blog

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
A banda Lynce acaba de lançar seu mais novo album no formato EP, entitulado Crazy Life. O setlist é composto pelas faixas Don't Try to Return, Crazy Life e My Heart is Broken, todas autorais. Aguardem apresentação ao vivo ainda em 2014!

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
"Onde começa o bem e acaba o mal ? O reino da bondade começa onde a nossa imperfeita percepção deixa de notar o «impulso do mal» porque se tornou demasiado subtil; a partir desse ponto, o sentimento de que entramos no reino da bondade excita os nossos impulsos que se sentem ameaçados e limitados pelos «impulsos do mal»: os sentimentos de segurança, de conforto, de benevolência. Quanto mais imperfeita for a nossa percepção, maior será a extensão do bem. É por isso que as crianças e pessoas comuns gozam de uma eterna boa disposição e também por essa razão que os grandes pensadores sofrem sempre de uma melancolia semelhante à de uma má consciência." (53)
Nietzsche - A Gaia Ciência
UML: Análise Multinível
Ao trabalhar com UML obtemos diagramas que representam diferentes visões de um sistema. Da mesma forma, diferentes papeis estão envolvidos e possuem interesses dinstintos: o analista trabalha no alto nível, o arquiteto no intermediário e o desenvolvedor no baixo nível. Cada um deles precisa de um determinado grupo de informações sobre o sistema, que se encontram disponíveis no nível em que atuam.
Alto Nível
É de responsabilidade do analista entrevistar o usuário e entender como funciona o seu processo de trabalho. Daí sai o diagrama de atores e casos de uso. A medida em que são identificadas entidades e demais objetos de valor, cada caso de uso complementa o diagrama que representa a estrutura de dados do sistema.
Nível Intermediário
Tendo como base os diagramas gerados no alto nível, o arquiteto já é capaz de identificar as classes necessárias para atender ao caso de uso. Da mesma forma, também saberá quais componentes devem fazer parte disso.
Apenas são criados componentes para elementos da implementação que não tem uma classe como representação UML, tais como tabelas de banco, arquivos, etc. Interfaces realizadas por um componente também aparecem neste diagrama.
Baixo Nível
Tendo como base os diagramas gerados nos níveis alto e intermediário, o desenvolvedor deve representar cada fluxo dos casos de uso através de um diagrama de sequencia. Nesses diagramas ficará claro qual a interação entre as classes que atuam na colaboração do caso de uso.
Uso e Custo
Trabalhar com diagramas UML não deve gerar perda de tempo ou retrabalho durante a manutenção. Deve gerar uma documentação sólida que sirva para analisar impactos de mudanças, estimar novos requisitos e suas implementações, além de facilitar visualmente o trabalho do envolvido. Para isso é importante que cada diagrama exiba somente o necessário para o seu propósito e que o faça disponibilizando os elementos de forma a facilitar sua leitura.
Consultas e Validações: BDD com JBehave
BDD é uma técnica de desenvolvimento ágil de software que visa guiar a codificação e os testes a partir de aspectos comportamentais do sistema a ser desenvolvido. O JBehave é um dos frameworks que implementa esta técnica.
Vantagens
Envolve especialistas no negócio.
Estabelece uma linguagem comum para especificar e testar.
Padroniza o desenvolvimento dos testes.
Pré-requisitos
IDE de desenvolvimento: Eclipse (download) + Plugin para Maven, o m2e (download).
Projeto de Exemplo: baixe aqui o fonte do projeto usado como exemplo neste post.
Comportamento
Considerando a seguinte user story:
Como administrador, Quero cadastrar usuários Para mante-los atualizados.
Esta user story reflete uma funcionalidade CRUD para gerenciamento da entidade usuário, o que requer testes de validação e consulta.
Validação
Considerando os seguintes cenários:
Cenário: Usuário válido deve ser salvo. Dado um usuário A com e-mail [email protected] Quando A for salvo Então A deve ser persistido pelo repositório. Cenário: Usuário sem e-mail não deve ser salvo. Dado um usuário B sem e-mail Quando B for salvo Então a obrigatoriedade do e-mail deve impedir a operação. Cenário: Usuário com e-mail inválido não deve ser salvo. Dado um usuário C com e-mail foo Quando C for salvo Então a validade do e-mail deve impedir a operação.
Nos cenários acima, encontramos as seguintes classes:
Usuario: entidade.
UsuarioService: serviço de gerenciamento de usuários.
UsuarioRepository: repositório de usuários.
Antes de ser persistido por UsuarioRepository, Usuario é validado por UsuarioService. Somente após garantir a integridade da entidade é que sua persistência é delegada para UsuarioRepository. Para este teste a lógica de persistência será mockeada.
Os cenários Usuário válido deve ser salvo, Usuário sem e-mail não deve ser salvo e Usuário com e-mail inválido não deve ser salvo garantem que Usuario só é persistido após passar pela validação.
Consulta
Considerando o seguinte cenário:
Cenário: Consulta a usuários deve permitir filtro por nome. Dado os usuários: |email| |[email protected]| |[email protected]| |[email protected]| Quando consultar por foo Então deve retornar os usuários [email protected] e [email protected].
Usuário é a entidade a ser consultada, enquanto UsuarioService é a classe que valida sua integridade. UsuarioService também integra com UsuarioRepository, sendo o primeiro responsável apenas pela validação, e encapsulando e abstraindo o segundo, este que é responsável pela persistência.
O cenário Consulta a usuários deve permitir filtro por nome garante que a consulta retornará o resultado esperado pelo cenário. Ele armazena os dados num banco em memória que só existe durante a execução dos passos:
Concluindo
O BDD estabeleceu não só as classes a serem criadas, como também a ordem de criação. Parte de uma user story, obtendo uma classe para cada critério de aceitação, os cenários. Nesses cenários são identificadas entidades, serviços e repositórios. Sendo assim, foi a necessidade do usuário, identificada pela user story, que direcionou quais classes, quando e porque devem ser criadas. É o desenvolvimento se aproximando do negócio e gerando somente componentes de software realmente pertinentes.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Git: Gerenciamento, Versionamento e Implantação
A integração contínua prega pela resposta rápida a mudanças, o que implica em implantar uma versão do sistema em tempo hábil. O manifesto ágil simpatiza com essa ideia. Com o Git temos um SCM que permite o versionamento, a recuperação de versões em um workspace e a implantação de uma release em produção.
Pré-requisitos
Git: usei a versão 1.7.5.4 no Ubuntu 11.10. Para trabalhar com o git no Windows, use o msysgit.
Repositório
No repositório não existem arquivos sendo criados, editados ou excluídos. Isso ocorre apenas no workspace. O repositório apenas versiona-os. Portanto, o repositório Git a ser criado deve ser bare:
mkdir myrepo.git cd myrepo.git git init --bare
A medida que o repositório recebe novas alterações de código, versões podem ser criadas para serem liberadas futuramente:
git tag 1.0.0.0
A versão 1.0.0.0 foi criada a partir do branch master.
Workspace
O workspace apenas cria, edita ou exclui arquivos. Não mantém um versionamento deles. Portanto, o repositório Git a ser criado pode clonar um repositório bare:
git clone myrepo.git myworkspace.git
Clonar o repositório cria o workspace com uma referência remota para o primeiro, chamada origin. No entanto, não é necessário clonar um repositório para criar um workspace:
mkdir myworkspace.git cd myworkspace.git git init git remote add origin myrepo.git
Para baixar uma determinada versão do sistema, e não o que se tem em linhas de desenvolvimento, é possível recuperar o código-fonte a partir de uma versão armazenada no repositório:
git fetch origin tag 1.0.0.0 git checkout 1.0.0.0
A medida que o desenvolvimento vai sendo concluído, o trabalho pode ser salvo no workspace:
git add . git commit -m "Entrega de valor xyz."
Ao término de um desenvolvimento, as mudanças podem ser enviadas para o repositório:
git push origin master
O desenvolvimento no branch master foi enviado para o repositório.
Implantação
Utilize o git ftp para implantar uma versão em produção. A implantação é feita a partir do workspace, portanto será implantada a versão disponível lá. Primeiro, configure um escopo:
git config git-ftp.prod.url my.domain.com/www git config git-ftp.prod.user root
Na primeira implantação deve-se iniciar o repositório distribuído:
git ftp init -s prod -p
Nas próximas o processo tende a ser mais rápido:
git ftp push -s prod -p
Backup
Backup é uma questão de segurança. O Git é capaz de gerar um arquivo correspondente ao repositório ou parte dele. Por fim, este arquivo poderá ser guardado numa mídia específica para backup. Saiba como obter este recurso.
Particionar HD e Organizar Dados
O HD possuí uma única partição, será instalado um outro sistema operacional e os dados do usuário serão isolados numa partição exclusiva. Particionar o HD é uma solução para se obter acesso a ambos os sistemas operacionais, além de isolar os dados do usuário numa partição acessível por qualquer outra. Benefícios = - **Separação de dados e sistema operacional**: a partição de dados pode ser mantida quando uma partição de sistema operacional for corrompida e precisar ser formatada. - **Acesso a dados centralizado**: dados do usuário podem ser acessados a partir de sistemas operacionais distintos. - [Saiba mais](http://forum.clubedohardware.com.br/quais-vantagens-reais/442930?s=51d9f8e22e7cc4923a3d0f51a73c579c& "Partição HD - Benefícios") Pré-requisitos = - **Mídia de instalação dos sistemas operacionais**: usei o CD do Windows XP e um pen drive contendo o Ubunto 11.10. Usei o Universal USB Installer para obter um pen drive com um Ubuntu bootável (download: http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3). - **Software de particionamento de HD**: usei o EASEUS (download: http://www.baixaki.com.br/download/easeus-partition-master-home-edition.htm). [Não sabe particionar o HD?](http://www.todo-backup.com/support/help/ "EASEUS quickstart"). - **Mídia de instalação de drivers do computador**: será necessário instalar novamente os drivers já configurados no sistema operacional atual. Se os sistemas operacionais a serem instalados são capazes de reconhecer o hardware do seu computador, essa mídia não será necessária. [Saiba mais](http://www.pcforum.com.br/cgi/yabb/YaBB.cgi?num=1021732946 "Como Recuperar e Reinstalar Drivers"). - **Mídia alternativa para armazenamento do backup**: o particionamento do HD pode não liberar espaço suficiente para armazenamento dos dados do usuário. Nesse caso, uma mídia alternativa deve ser utilizada para manter o backup até que haja espaço suficiente para extraí-lo para a partição de dados do usuário. Inclusive, isso pode ser feito antes de particionar o HD, garantindo a restauração dos dados [caso o particionamento cause problemas](http://www.tecmundo.com.br/tira-duvidas/31484 "Riscos ao particionar o HD"). Procedimento = Particionar o HD - Organize o seu HD criando as seguintes partições: - **Sistema operacional legado formatado (~30GB)**: Windows XP. [Saiba mais](http://www.forumpcs.com.br/comunidade/viewtopic.php?t=196476 "Partição - Tamanho Ideal para Windows XP"). - **Sistema operacional dual-boot (~13GB)**: Ubunto 11.10. EXT2. [Saiba mais](http://ubuntuforum-br.org/index.php?topic=722.0 "Partição - Tamanho Ideal para Ubuntu 11.10"). - **Swap**: tamanho equivalente a memória do computador. Usado pelo sistema operacional dual-boot. [Saiba mais](http://www.vivaolinux.com.br/topico/Linux-Desktop/Tamanho-ideal-do-swap-no-ubuntu "Partição - tamanho ideal para Swap"). - **Sistema operacional legado**: Windows XP. Esta é a partição atual, NTFS. Redimensione o máximo possível, diminuindo o tamanho e liberando espaço para a criação das demais. - **Dados do usuário**: FAT32. Reinstalar o sistema operacional legado - Na partição de dados do usuário, faça o backup do que está armazenado na partição do sistema operacional legado. Se o tamanho da partição de dados não for suficiente, faça o backup em outra mídia para armazena-lo na partição destinada quando ela puder ser redimensionada. Inicie o computador bootando pela mídia de instalação do Windows XP. Elimine a partição que contém o sistema operacional legado e [instale-o](http://www.biocel.icb.usp.br/arquivosPDF/Como%20instalar%20Windows%20XP.pdf "Instalar Windows XP") na outra partição criada para ele apenas com o tamanho necessário. Instalar o sistema operacional dual-boot - Inicie o computador bootando pela mídia de instalação do sistema operacional dual-boot. O Ubunto vai iniciar. Selecione a opção de instalação e as partições destinadas ao sistema operacional dual-boot e swap. [Mais detalhes sobre como instalar o Ubunto](https://help.ubuntu.com/community/Installation/FromUSBStick "Instalar Ubuntu 11.10"). Ao reiniciar o computador, são apresentadas as opções de sistemas operacionais instalados e disponíveis: o Ubunto e o Windws XP. Expandir partição de dados - Eliminada a partição antiga que continha o sistema operacional legado, o espaço livre liberado é usado para expandir a partição do usuário. Se você precisou fazer o backup dos dados em uma mídia alternativa por [questões de segurança](http://www.tecmundo.com.br/tira-duvidas/31484 "Riscos ao particionar o HD") e/ou em função de espaço insuficiente, extraia o backup para a partição de dados do usuário redimensionada. Agora, ela deve possuir o tamanho adequado.