sexta-feira, agosto 03, 2012

Ainda mais fácil registrar um domínio no Brasil

Ficou ainda mais fácil registrar um domínio próprio. Agora o Registro.BR oferece para ser seu servidor de DNS. Acabou a chateação de ter que configurar DNS. Ah! E pessoas físicas podem registrar um domínio ponto com ponto br. Agora criar seu blog com seu próprio nome dura apenas 30 minutos.

quinta-feira, agosto 02, 2012

O futuro da educação?

A moda agora são os cursos on-line, com as startups Coursera e Udacity como os principais expoentes. Prometem  revolucionar a educação. Um único superprofessor é "escalonado" para milhares de alunos em todo o mundo. E tudo isto de graça!

Eis duas boas páginas: uma reportagem da Slate e uma discussão comparando as duas.

Resolvi experimentar fazendo o curso de testes da Udacity. E não é que o treco é bom mesmo? Os instrutores são feras. A aula com canetinhas em um quadro parece que é um amigo te explicando algo. Os vídeos são curtíssimos, permitindo parar a qualquer momento, seja quando se fica cansado ou aparece algo a fazer. Há uns testes espertos e não triviais online que ajudam a fixar a matéria e a ter experiência prática. O único problema é que tirei uma semana de férias e atrasei em relação ao resto da turma. Nada aproveitei da interação com outros estudantes.

Conclusão? Me graduei em uma que é considerada uma das melhores universidades do Brasil e não tive um único curso de desenvolvimento de software que fosse tão bom.  É mesmo uma revolução.

terça-feira, janeiro 26, 2010

Aprendendo a aprender, estudando o estudo

Pra não ficar pra atrás no mundo da computação é preciso estudar sempre. Não existe este negócio de terminar a faculdade e parar de estudar. Parece que você é um hamster, que corre sem sair do lugar.  Para muitos é assustador.

Já para mim, isto é o que mais gosto. Sempre há coisas novas para aprender e conhecer. Maneiras melhores de trabalhar. E se você está condenado a fazer isto toda sua vida, por que não aprender como se aprender e estudar como se estuda?

A mais legal introdução sobre o assunto é o artigo Curso rápido em Teoria da Aprendizem da Kathy Sierra, cujo ponto de vista é mais para quem ensina. Para me aprofundar mais, acabo de ler dois livros sobre o assunto: Pragmatic Thinking and Learning: Refactor Your Wetware, de Andy Hunt, e How to Become a Straight-A Student, de Cal Newport.


Pragmatic Thinking and Learning: Refactor Your Wetware (Pragmatic Programmers)
Andy Hunt é co-autor do The Pragmatic Programmer, um dos melhores livros sobre desenvolvimento de software. Seu novo livro Pragmatic Thinking and Learning é inteiramente dedicado a como aprender de forma mais eficiente.

Discute desde modelos de aprendizagem à importância da concentração. Pelo caminho a gente encontra várias dicas e técnicas para aperfeiçoar a aprendizagem. Vão desde o resultado de pesquisas científicas a duvidosas auto-ajudas. Como o próprio autor diz, é pra testar e passar a usar o que funcionar para você.

O livro apresenta assuntos como o Modelo Dreyfus de aprendizagem, que é ótimo para conter a ansiedade quando se está aprendendo um assunto novo; hemisférios direito e esquerdo do cérebro, mostrando a importância de alternar entre visões holísticas e específicas sobre o que se está estudando; objetivos de estudo SMART (Specific, Measurable, Achievalbe, Relevant e Timeboxed); da necessidade de estudar constantemente e de forma deliberada; da eficiência de grupos de estudo; técnicas de leitura ativa de livros como a SQ3R; do uso de Mind Maps; e de documentar e ensinar para aprender melhor; e até da importância da concentração e como a meditação pode ajudar a aprimorá-la.

Ao contrário do Pragmatic Programmers, o estilo de escrita é meio seco e pouco fluente. Comparando a divertida palestra do Dave Thomas e o monocórdio tom do vídeo de apresentação do autor na Amazon, dá ver quem é o extrovertido da dupla. Outra coisa que atrapalha é o uso excessivo de metáforas relacionadas a computador. Tá certo que o livro é voltado a desenvolvedores, mas falar coisas como que "O cérebro tem uma CPU dual" acaba emprobecendo alguns conceitos. Quando entra na parte de preconceitos culturais, o livro fica americano-cêntrico demais. Vale até pular o capítulo.

How to Become a Straight-A Student: The Unconventional Strategies Real College Students Use to Score High While Studying LessO outro livro similar é o How to Become a Straight-A Student: The Unconventional Strategies Real College Students Use to Score High While Studying Less. Se no livro do Programador Pragmático a preocupação é aprender, este aqui é ainda mais pragmático: o objetivo é tirar notas altas na faculdade. As dicas vão desde organização de tempo a como puxar o saco do professor de forma eficiente. Gostaria de tê-lo lido há 20 anos atrás:-).

Seu ponto forte é que se baseia em entrevistas que o autor fez com alguns dos melhores estudantes de universidades americanas. São dicas que funcionam para alguém no mundo real. Técnicas de como, onde e quando estudar, como preparar um trabalho, como tomar notas em aula, quando pedir orientação ao professor. Eu nem tinha idéia que existiam diversas técnicas para tomar notas. Deve ser por isto que para mim nunca funcionou fazer anotações em sala de aula. Descobri até que existem cursos para se tornar um bom aluno além de vários livros sobre study skills. De um modo geral as dicas são puro bom senso, mas sempre é bom ver outros pontos de vista.

No final das contas, gostei especialmente do Refactoring your Wetware. Ajudou a pensar a respeito de várias técnicas que já usei, como — o que estou fazendo agora — escrever um post de blog para assimilar um assunto. Me ajudou a entender por que aprendi muito bem algum assunto que dei uma aula a respeito. Porque fico namorando um livro, lendo o índice e folheando, antes de começar a ler de verdade. No fundo, muita coisa é só bom senso. O bom é ver alguém dizendo que o que você achava que era superstição é importante, ou mostrando formas sistemáticas de fazer o que você aprendeu por tentativa e erro.

Gostaria de tê-los lido há anos atrás. Teria aprendido mais estudando menos.

quarta-feira, novembro 18, 2009

Crie seu próprio sítio virtual em uma hora por R$30,00


Hourglass
Uploaded by darque9
Em apenas uma hora criei e coloquei no ar um domínio próprio para este sítio. Custou só R$30,00, o preço do domínio. Foi mais rápido do que eu pensava, mas isto porque eu já sabia tudo que tinha que fazer.

São tantos pequenos detalhes, tanta coisa que tem saber a priori, que eu teria demorado dias se tivesse que aprender como fazer. É o tipo de conhecimento legal de compartilhar. Para fazê-lo, é só seguir os passos abaixo.

Crie um blogue no Blogger.com

Visite Blogger.com e crie um blogue para você. Escolha nome, template, configurações etc. Cheguei a pensar em hospedar meu próprio blogue com o excelente WordPress, mas seria mais uma encheção de saco para configurar, manter, atualizar etc. O pouco tempo que tenho para o blogue quero gastar produzindo conteúdo, mas, nerd que sou, é difícil me conter para não ficar um tempão futucando a tecnologia.

Escolha seu domínio

Considerando que você quer um domínio .br, vá no Registro.BR e na caixa de busca que tem lá, vá entrando os domínios que deseja.

várias terminações possíveis, cada uma significa uma coisa que ninguém sabe o que é. A dica é: se o nome que deseja estiver disponível, escolha a .COM.BR pois é a mais usada. Este meu .PRO.BR, escolhi porque parece de profissional, mas oficialmente é de professor.

Neste ponto em que estamos, você ainda não registrou o domínio, apenas verificou que ele está disponível.

Configure o DNS para seu domínio

Pule esta seção. Agora o próprio Registro.BR te deixa registar os servidores DNS no site deles.

O Domain Name Server (DNS) é um tipo de servidor na internet que mapeia um nome, como mosquito.pro.br, para o computador específico onde ficam as páginas. Você não precisará colocar um servidor no ar. Como tudo na Internet, há uma opção 0800.

O EveryDNS é um servidor DNS gratuito, onde você pode registrar qualquer domínio. Crie uma conta lá e registre seu domínio. O que você tem que fazer mesmo é criar um campo CNAME associando o endereço www.seudominio.xxx.br ao ghs.google.com. É importante iniciar com www. Opcional é criar um campo do tipo A apontando para um endereço IP qualquer. Ficaria assim:

Registre seu domínio

Volte ao Registro.BR e compre de verdade seu nome de domínio. Caso ainda não tenha uma conta lá, precisará criar uma. Ao registrar, entre no campo de "name server" com os endereços ns1.everydns.com, ns2.everydns.com, ... Depois eles vão te mandar a cobrança por email. Será seu único custo.

Associe seu domínio ao blogue

Este é mole. Volte no Blogger.com, entre em Settings -> Publishing e selecione "Hospedar no meu próprio domínio". Preencha lá com www.seudominio.xxx.br.

Aí que fiquei impressionado com a rapidez de tudo. Cerca de meia hora depois de fazer isto, meu domínio novo já estava valendo. Tá certo que eu já tinha o blogue criado e contas em todos os serviços, teria demorado mais caso fosse tudo do zero. O fato é que mais tempo demorei para escrever este texto do que para colocar um domínio novo no ar:-).

Extras

O principal acabou, agora é um adendo avançado. Acho que já passa do ponto de coisas que pessoas não técnicas, mas inteligentes e motivadas, conseguem fazer.

Brinco que uma maneira boa de saber se uma empresa é tecnicamente competente é ver se é possível acessar o site dela sem colocar www. no endereço. Isto indicará pelo menos que eles têm alguém que entende das coisas cuidando da infra-estrutura.

Com esta configuração, eu não sei como configurar direto o mosquito.pro.br para o blogue. O EveryDNS não deixa o domínio principal ser um CNAME, o que tem sentido. Minha solução foi apontar para um endereço IP onde tenho um servidor, e lá configurar um host virtual do Apache para fazer um redirect permanente para o endereço com o www. De qualquer forma, eis como ficou minha configuração do Apache:
<VirtualHost *:80>
   ServerName mosquito.pro.br

   RewriteEngine on
   RewriteRule ^/(arquivos/.*)$ /mosquito/$1 [last]

   RewriteRule ^(.*)$ http://www.mosquito.pro.br$1 [R=permanent,last]
</VirtualHost>
A última linha é uma expressão regular boba que faz o redirect permanente de todas as chamadas para o mesmo endereço com www. O macete fica por conta da outra regra de rewrite que me dá algo muito útil que o Blogger não deixa. Agora posso publicar meus próprios arquivos, basta colocá-los em uma pasta específica e acessar em uma URL com /arquivos/.

quinta-feira, novembro 12, 2009

Desenvolvimento de software: O que sabemos que funciona?

O que não falta em desenvolvimento de software é achismo. Fulano acha isso. A nova moda de desenvolvimento diz aquilo. É um alívio ver destacado o que sabemos de verdade. Achei duas ótimas referências sobre fatos em Engenharia de Software.

Uma é esta apresentação abaixo, onde o autor começa discutindo o método científico, e depois lista vários fatos realmente conhecidos sobre desenvolvimento de software:


Outro artigo excelente é esta reportagem sobre pesquisas de engenharia de software feitas na Microsoft. O pesquisador Nachi Nagappan tem acesso livre a todos os grupos de desenvolvimento dentro da Microsoft. Cada um tem um jeito diferente de trabalhar: alguns usam asserções, outros testes unitários, outros trabalham distribuídos pelo mundo. Como a Microsoft registra cada modificação em seu sistema de controle de versões a cada bug aberto e a cada módulo modificado, Nagappan tem dados maravilhosos a seu dispor. E ele tira conclusões surpreendentes. Tá certo que talvez nem todo lugar tenha programadores da qualidade dos da Microsoft, mas acredito que dá para generalizar suas descobertas.

Como brinde, vale lembrar que outra fonte de fatos sobre experimentos é a coluna "Voz da Evidência" publicada na revista IEEE Software.

terça-feira, novembro 10, 2009

Agora em novo endereço!

Seja bem-vindo a nosso novo endereço:

www.mosquito.pro.br

Agora que resolvi dar um gás neste blogue, nada melhor que um domínio de verdade. Todos os links antigos continuarão a funcionar, assim como o RSS com as atualizações.

Selenium, a melhor ferramenta para testes de aplicações web


Avançando no Terceiro Milênio, não dá mais para conceber a construção de uma aplicação Web sem ter testes automatizados. Não fazendo testes automáticos, você estará jogando na mão de seu cliente a responsabilidade de testar a aplicação. Este é um trabalho que deveria ser seu. Não fazê-lo é um desrespeito com quem te paga. Estará também jogando dinheiro fora, pois quanto mais tempo você demora para descobrir um erro, mais custoso é consertá-lo.

E pra fazer testes funcionais de aplicações web, a ferramenta é uma só: Selenium. É tudo de bom: grátis, open source e bem feito. Um dos melhores projetos de código aberto que existem por aí.

O Selenium te permite testar um sítio virtual em vários browsers e sistemas operacionais. Testa Javascript e ajax. Nada melhor para achar problemas de incompatibilidade.

O Selenium na verdade não é um único projeto, mas um ecossistema de diferentes softwares que interagem entre si. Os principais projetos são:
Selenium Core
O núcleo do Selenium é uma biblioteca Javascript que te dá basicamente dois tipos de comandos. Um para comandar um browser: clicar em links, preencher formulários, fazer uma ação depois de aparecer algo na tela etc. Outro tipo é para fazer asserções, como se há um texto presente, se tal elemento está sendo exibido, se a página foi corretamente carregada etc. É a pedra fundadora do Selenium. Inspirado nos Testes Fit, você define os seus passos de testes em uma tabela – no caso em HTML – que é interpretada, executada e um relatório final com sucessos e erros é gerado.

Selenium IDE
Fazer as tabelas de teste do Selenium IDE é muito trabalhoso. Inventaram então este sensacional plugin para o Firefox. Com ele você pode gravar toda uma sessão de navegação e dar playback nela depois. Durante a gravação vários comandos extras são adicionados ao menu de contexto (botão direito) do Firefox. Estes comandos lhe permitem fazer asserções sobre o que está sendo gravado, como, por exemplo, selecionar um texto na tela e incluir uma asserção para verificar se o texto selecionado está presente.

É um barato ver seu navegador funcionando sozinho, como se fosse controlado por um fantasma. Chefes e clientes adoram. Apesar de serem gravados no Firefox, os testes podem ser executados em qualquer navegador e sistema operacional.

Selenium Remote Control
Aqui o negócio começa a ficar sério. O Selenium Remote Control te permite controlar um browser e fazer asserções de dentro de uma linguagem de programação. Você passa a ter acesso a loops, funções (para não repetir código de testes) e, o melhor, às bibliotecas da linguagem. Dá para rodar um teste e depois conectar direto à base de dados para verificar se os dados foram corretamente modificados.

Um workflow comum é você gravar um teste inicial no Selenium IDE, dar um "Save As" para ser gerada uma versão para a sua linguagem de programação favorita (Python, Ruby, Java ...) e então criar testes mais sofisticados. Seus testes podem ser executados dentro de um framework de testes, como os da família xUnit, e rodar dentro de seu processo de Integração Contínua.

Selenium Grid
Uma coisa temos que assumir: fazer testes comandando um browser é lento. Muito lento. Especialmente depois que se começa a ter mais de uma centena de testes. Tá certo que são testes funcionais, ninguém está esperando que obedeça às regras de velocidade de testes unitários, mas pegar um erro dias depois, é demais. O Selenium Grid vem resolver isto, ele distribui os testes para executarem em paralelo em vários computadores diferentes. É chato de configurar, mas a recompensa é grande quando os testes começam a demorar muito.

Já usei o Grid até mesmo para realizar testes de stress em uma aplicação. Tá certo que não é a ferramenta mas apropriada, mas dependendo de aplicação web é (mal) feita, pode ser a única alternativa.

E a boa notícia é que uma das melhores referências sobre o Selenium é em Português! É o excelente Blogue do Seu Enium. Lá você aprende do beabá a usar o Selenium Grid, passando pela divertida explicação do porquê do nome Selenium.

Outra coisa muito legal que se pode fazer com o Selenium é automatizar sua vida. Sabe as aplicações Web com uma terrível interface e que você é obrigado a usar? Aquelas que você tem que clicar em um milhão de lugares e preencher um monte de campos para chegar onde quer? Basta gravar um script no Selenium IDE que faz tudo pra você. O macete é nos momentos que preencher um dado específico (como uma senha), colocar um comando para o Selenium esperar um texto da tela seguinte para continuar a executar. Nada melhor para evitar uma tendinite.

Por fim, vale deixar o aviso de que o Selenium não é nenhuma bala de prata. É uma ferramenta fundamental para se entregar aplicações web de qualidade, mas não é trivial usá-lo bem. É preciso bons testers para pegar os casos que podem dar problemas e não testar apenas o caminho de execução principal. Colocar os comandos certos para que erros intermitentes não aconteçam é mais uma arte do que uma ciência. Se sua empresa tiver a mentalidade de que testers são imbecis (sim, isto existe), não vai funcionar. É preciso que os desenvolvedores trabalhem junto com os testers para que as aplicações sejam fáceis de testar. Testar widgets de algumas bibliotecas Javascript pode ser bem enrolado.

Não é por estar fazendo testes com uma super-ferramenta é que você poderá prescindir de seu cérebro.