Arquivo mensais:setembro 2008

Subversion Notify for Windows

Você desenvolve sistemas. Trabalha em uma equipe maior que uma pessoa. Decidiu utilizar o Subversion para controlar versões do projeto e também para facilitar o trabalho em equipe.

Infelizmente você programa no Windows, seu servidor é Windows, e todos os hooks estão escritos em Perl e só funcionam em *nix.

Seus problemas acabaram! Mudar para o Team System? Nem pensar! Instale o Subversion Notify e seja feliz!

Agora consigo receber emails com os commits e estabelecer uma política para os textos de log dos mesmos.

Framework de testes funcionais NexusLight

O NexusLight é um framework de testes funcionais. Um teste funcional simula a operação de um usuário do sistema, diferente de um teste unitário, que testa se os métodos de uma dada classe funcionam corretamente.

Ele é bem simples de se utilizar.  Basta baixar o último pacote e referenciar a DLL Microsoft.Web.Testing.Lightweight em seu projeto, além de criar uma pasta, Test, por exemplo, para conter os arquivos Default.aspx e DriverPage.aspx.

Uma classe de teste de exemplo baseado no sample, um pouco mais simplificado:

using System;
using System.Data;
using System.Configuration;
using Microsoft.Web.Testing.Light;

[WebTestClass]
public class ProcessosTest
{
    [WebTestMethod]
    public void GridViewListingTest()
    {
        HtmlPage page = new HtmlPage();
        LoginAndGoToPage(page, 2824);
        page.Elements.Find("btnLocalizar").Click(WaitFor.Postback);

        HtmlTableElement grid = (HtmlTableElement)page.Elements.Find("gridProcessos");
        Assert.IsTrue(grid.Rows.Count > 0);
    }

    private void LoginAndGoToPage(HtmlPage page, int pageId)
    {
        // Navigate to Home page
        page.Navigate("Default.aspx");
        page.Elements.Find("Login_UserName").SetText("adm");
        page.Elements.Find("Login_Password").SetText("clone");
        page.Elements.Find("Login_LoginImageButton").Click(WaitFor.Postback);

        page.Navigate("Default.aspx?idPagina="+2824);
    }
}

O que esta classe de teste faz? Ela entra na página Default.aspx, preenche o controle Login, campos UserName e Password, “aperta” o botão de envio e, após supostamente ter se logado, navega para uma outra página através de uma querystring.

Após navegar para esta outra página, “aperta” o botão de id Localizar e checa se o grid da página retornou algum resultado.

E, para que todo o comportamento acima ocorra, basta entrar no endereço http://localhost:suaporta/seuprojeto/Test/, selecionar o teste e clicar no botão Run!.

DataSource Parameters: falta um PropertyParameter!

Sempre que utilizo um controle ObjectDataSource sinto falta de um parâmetro. Um parâmetro que associe uma propriedade, existente na classe vinculada à página pelo codebehind,  ao controle. Isto é, se existe uma propriedade usuário na classe, seria legal um parâmetro do tipo PropertyParameter com um atributo Propertyname, ou algo assim.

Existem parâmetros para associar controles, query strings, objetos da sessão, mas nenhum para uma propriedade.

Uma solução, talvez a melhor,  é popular dinamicamente o valor do parâmetro:

http://www.pluralsight.com/community/blogs/fritz/archive/2006/01/16/18054.aspx

Carteira de Papel DIY

Carteira de Papel

Após minha carteira do Santo Grão, já tive de fazer mais duas outras. Pois é, papel não dura muito. O legal é que dá para testar sempre algo diferente.

Notem que adicionei mais dois porta-cartões e deixei-a um pouco menor. Na verdade ficou pequena demais. Na próxima eu acerto estes pequenos detalhes.

Nesta carteira utilizei um folder, daqueles distribuídos em vendas de apartamentos. O papel é de ótima qualidade, e o tamanho é diferenciado. Não medi, mas parece ser maior que duas folhas ofício. Já comecei a olhar as propagandas que distribuem por aí com outros olhos… =)

Moenda Ariete

Moenda Ariete

Finalmente comprei minha moenda (moinho ou moedor) para café. Após pesquisas de marcas e preços decidi pela Ariete, que oferece uma boa qualidade pelo custo.

Mas por que moer seu próprio café? Porque assim posso comprar café em grãos e moer de acordo com o tipo de preparo. Uma prensa francesa, por exemplo, requer um café com moagem mais grossa que o coador de papel.

Outra frescura possibilidade é misturar vários tipos de grão em busca de um sabor diferenciado.

Moenda Ariete

O funcionamento da moenda é bem simples, existem dois discos com uma textura que “segura” o grão de café.  O disco de baixo gira, com o ruído característico de um liquidificador, triturando-os. A grossura é acertada girando o copo de cima, que aproxima ou afasta um disco do outro.

Moenda Ariete

Um aviso: ao ligar a moenda na tomada ela não funcionou. Cheguei até a pensar que estava com defeito. O que ocorre é que ela não liga sem que suas partes estejam no devido lugar. O copo dos grãos deve estar totalmente atarrachada e o dispenser do pó deve estar encaixado.

No fim a compra valeu a pena.  Sentir o aroma que surge durante a moagem então…

Bom café a todos!

Moenda Ariete

Vivo 3G – UMTS em São Paulo

Vivo 3G - UMTS em São Paulo

Parece que finalmente consigo sinal 3G em São Paulo – Capital, e em alguns pontos do ABC Paulista.
Na região do Butantã e Cidade Universitária o sinal é muito bom, como pode ser visto na barra indicadora.

Quem sabe isso não me anima a aderir ao Vivo Smart Mail. Ainda preciso testar a velocidade de conexão, mas com meu limite de 500kbytes de dados por mês fica difícil…


✝ 29/08/2008

✝ 01/09/2008

Às 21 horas e quinze minutos de uma sexta-feira úmida e fria a vida de uma das pessoas mais admiráveis que já conheci foi ceifada. Meu pai.

Nascido no Japão, chegou ao Brasil ainda pequeno. Lutou com sua família, como tantos outros conterrâneos, para obter sucesso neste novo mundo. Ainda jovem casou-se e teve três filhos, e batalhou duro para garantir que nada faltasse à esta família. E nada faltou. À sua maneira sempre demonstrou sua preocupação conosco, principalmente quanto à nossa formação.

Quando eu era apenas um garoto, pedia este ou aquele brinquedo. Minha mãe me explicava que não daria para comprar. Pelo menos não no momento. Não havia dinheiro, mas se eu fosse paciente e fosse realmente importante eu poderia ter o brinquedo. E que criança é paciente? Mas um livro…  Um livro eles nunca recusavam.  Eu não fazia idéia que tipo de sacrifício eu poderia estar impondo, mas eu sempre conseguia o livro. O livro não, os livros.

Nesta época também era bem comum a venda de fascículos semanais em volta de um tema. Junto ao último fascículo vinha a capa dura para encadernar. Toda segunda era dia de esperar minha mãe voltar da  banca de jornal e voltar com fascículos prontos para serem devorados por meus diminutos olhos, curiosos e famintos.

Dia após dia a sala de minha casa foi transformando-se em uma biblioteca. Literalmente. Muitos colegas vinham tomar um ou outro volume emprestado para poder fazer suas tarefas e trabalhos da escola. Conheci as florestas e seus animais,  conheci o ártico, conheci os oceanos e os desertos. Conheci  Beremiz Samir e a magia e mistério dos números.

Conheci vários países, suas culturas, suas moedas, seus selos. Conheci Monteiro Lobato e as peripécias de Emília, Narizinho, Pedrinho. Conheci a cultura persa e chinesa através de contos e anedoras populares. Conheci Urashima Tarô.  Conheci o interior do átomo, a infinitude das estrelas, a imensidão do espaço,

Obrigado pai. Você meu deu todo o universo. E isto não há nada que retribua.

Em minha lembrança ficará para sempre o japonês baixinho, calvo e bem humorado. Bonachão e de boca suja. Alguém tão formidável, tão amigo e carismático que fez muitas pessoas não conterem as lágrimas por sua partida.

Se há algo que pode consolar o que sinto, é você ter visitado ao menos uma vez sua terra natal. Ter visitado seus parentes distantes e ter sido tão bem acolhido por lá que dizia ter ficado em dívida com eles.

Dívida que você estava feliz em pagar durantes as festas deste ano, ao rever a japonesada  e tratando-os como foi tratado, com simpatia e alegria. Com comida e bebida. Com muita festa. E foi em meio a esta festa, com este sentimento de felicidade que você se foi. Como sempre disse que gostaria que fosse. Rápido e sem sofrimento.

Espero honrá-lo em todos os meus atos. E a cada dia me aperfeiçoar. A cada dia me tornar alguém melhor. A cada dia chegar mais próximo do que você é para mim.