Para quem se interessa pelo assunto de testes automatizados, em especial testes voltados aos requisitos não-funcionais, recomendo a leitura dessa artigo escrito em parceria com meu colega Vitor Medina. Em Inglês. Boa leitura!
Time and Memory Performance Verification Using JUnit
Todos os post de mbelo
Dica: configurar Windows 8 para não desligar pendrive USB
Ao utilizar meu pendrive Corsair Padlock 2 no Windows 8, esbarrei com o seguinte problema: ao entrar em modo de repouso, ele desliga a energia do pendrive até que volte ao uso, o que faz a desconexão e perda de dados, pois o padlock2 bloqueia o dispositivo e exige a redigitação do PIN no retorno da energia. No windows 7 havia um procedimento relativamente simples para desabilitar a economia de energia nesses casos, mas no windows 8 ficou mais complexo. O procedimento está descrito nesse link a seguir… bem chatinho, mas funcionou perfeitamente:
https://blogs.msdn.microsoft.com/usbcoreblog/2013/10/31/help-after-installing-windows-8-1-my-usb-drive-disappears-or-file-transfers-stop-unexpectedly
Atualizando manualmente o dicionário do Firefox Portable
Por algum motivo o firewall do local onde trabalho bloqueia o site de add-ons do firefox, e preciso instalar um dicionário na minha versão do Firefox Portable. Para isso basta copiar os arquivos de dicionário de uma outra instalação para o diretório do portable:
D:\programas\FirefoxPortableDeveloper\App\Firefox\dictionaries
Pronto! reabra o programa e o dicionário funcionará perfeitamente.
A chegada do TK3000
É uma sensação incrível voltar a usar esse incrível micro da Microdigital: o TK3000.
Na imagem com a tela num jogo de damas, está uma combinação temporalmente louca: no segundo slot está uma moderna placa ClassicIDE da Tecno Bytes, que me permite carregar programas através de um moderno cartão CF. Recomendo fortemente para quem conserva seu Apple 8-bit funcionando.
O TK3000 foi meu segundo micro; antes eu tive um Craft ][ Plus da Microcraft. Se não me engano, o ano era 1988, e como em todas as trocas de equipamento que eu podia fazer naquela época, a venda do Craft me rendeu dinheiro para comprar o TK3000.
Lembro-me que, ao contrário do Craft, o TK3000 era propagandeado como um micro profissional: lembro do anúncio nas revistas da época figurando um profissional usando o micro não para jogos ou passatempo, mas sim para ajudar com suas atividades laborais. Isso chamou minha atenção, pois soube que com a combinação de uma placa chamada TotalWorks, eu era capaz de rodar planilhas e banco de dados que eram a sensação nos micros comerciais da época, e inacessíveis para meros mortais como eu.
Não cheguei a usar o micro profissionalmente, mas ele certamente me marcou com o aumento do interesse pelos micros que começavam, na época, a apontar como indispensáveis na nossa vida cotidiana, e que iria selar a atividade que viria a exercer no resto da vida.
Programação Orientada a Objetos por Alan Kay
Por recomendação de um colega, esbarrei nesse intrigante artigo escrito por Alan Kay, autor da linguagem SmallTalk, e a quem é atribuída a autoria do termo ‘orientação a objetos’.
http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
Software Livre e o Projeto Coruja
Na última terça, 20/01/2015, tive a oportunidade de participar do programa Ciência em Movimento, programa ao vivo na Rede Petrópolis de Televisão e que é apresentado por meu amigo Márcio Campos. Nele falo sobre Software Livre e sobre o Projeto Coruja.
Quem quiser assistir, a entrevista está disponível no YouTube. Clique aqui.
Musical Constellation
Aos colegas que acompanham meu blog e que gostam de um bom musical, recomendo o ‘Constellation’. Um musical nacional muito bem produzido. A obra nos guia por uma viagem musical aos anos 50, tendo uma pequena histórica como pano de fundo: uma jovem prestes a casar que ganha por uma promoção de uma rádio uma viagem à Nova Iorque no novo avião da Varig, o Constellation. Fica minha recomendação.
Se você assistir, deixe aqui sua opinião!
Template usando apenas JSP
Ao utilizar JSP puro, podemos sentir falta do mecanismo de template oferecido pelos facelets do JSF. Uma alternativa é utilizar as taglib file para produzir o mesmo resultado, usando JSP puro. O artigo a seguir detalha essa técnica. Utilizei em mais de um projeto e funciona perfeitamente.
http://stackoverflow.com/questions/1296235/jsp-tricks-to-make-templating-easier
Felicidade Autêntica
Recentemente tenho trabalhado tanto que sobra pouco tempo para pensar na vida e, todos nós sabemos, que no fim, é a vida que importa.
Então me permiti parar um pouco para refletir sobre a vida. Foi quando lembrei desse vídeo que esbarrei no lugar mais improvável: dentro de um curso de engenharia de software. Falei sobre o curso no começo do ano (ver aqui).
O prof. David Patterson (Berkeley UC) abre uma pausa de forma incomum, mas totalmente sensacional, para falar sobre a vida, em especial sobre felicidade. Citando o livro de um psicólogo, ele mostra com a vida dele se apresenta em relação ao que o autor considera elementos chave para a busca da felicidade autêntica:
- trabalhar no que se gosta;
- manter o hábito de brincar;
- buscar a espiritualidade;
- praticar a caridade;
- cultivar família e amigos;
Clique aqui para ver o vídeo. Tomara que o vídeo o ajude a refletir sobre a vida como ocorreu comigo. Seja feliz!
Tratamento Genérico de Exceções em Threads
É comum em softwares que rodam em servidor implementar-se algo conhecido como uma barreira de exceções: se durante a execução de um código, uma exceção não esperada ocorre e não há nenhum tratamento preparado, a exceção é propagada até o bootstrapper da JVM que a “cospe” no console. Evita-se isso colocando um nível de indireção logo após o bootstrapper que captura qualquer Throwable, dando um tratamento genérico à exceção, mas evitando – dependendo do caso – que a aplicação aborte.
No caso de Threads isso é um pouco mais complicado. Como cada Thread ganha vida própria não há onde colocar a barreira para caso ela dispare uma exceção. Nesse artigo de Eric Bruno, publicado na Dr.Dobbs, ele aborda como o Java nos permite configurar tratadores para exceções ocorridas em Threads. Boa Leitura:
Uncaught Java Thread Exceptions