Fork me on GitHub

Keep Learning Conhecimento nunca é o bastante

Dica rápida: formatação da saída do Test::Unit com a gem turn

Recentemente voltei a brincar com um pet project para atualizá-lo do Rails 2.3 para o Rails 3. A suíte de testes do projeto foi escrita com Test::Unit e Shoulda e, quando a executei sob Ruby 1.9.2, vi que a saída não estava formatada, isto é, não havia alinhamento, as falhas não ficavam em vermelho e os sucessos em verde. Pelo que me lembro, quando rodava esses testes no Ruby 1.8, a saída era formatada e com cores. Provavelmente algo que foi retirado do Ruby 1.9, talvez na mudança de Test::Unit para MiniTest.

Bem, não me preocupei muito com o motivo disso. Busquei algumas maneiras de formatar essa saída e, entre outras, encontrei a gem turn. Configurei-a no Gemfile do projeto e tudo funcionou perfeitamente de primeira, sem nenhum incômodo. Além da formatação, uma feature interessante é que, ao invés de mostrar pontinhos e letras (ex: …..F…F.), o turn vai mostrando as descrições dos testes e seu status (passou/falhou) à medida que a suite é executada. Feedback bem mais útil.

Veja um exemplo de como fica a formatação através desse link: http://d.pr/mWPe (assim não quebro todo o layout do blog). 🙂


Mantenha seu MacBook (Core 2 Duo) mais frio com o CoolBook – e aumente a autonomia da bateria

CoolBook é um pequeno utilitário para OS X capaz de modificar frequência e vontagem de operação de processadores Intel Core 2 Duo.

Em geral o processador do meu MacBook opera em temperaturas razoáveis. Porém, quando preciso abrir algum conteúdo em Flash… temperaturas de até 92ºC e fan a 6500 rpm são lugar comum. Uma maneira de resolver isso seria a Adobe criar vergonha na cara é utilizar o CoolBook para fazer com que o processador opere numa voltagem mais baixa.

Um pouquinho de teoria: é óbvio que, para operar, o processador precisa consumir energia. A frequência de clock é a principal determinante de quanta energia será consumida. Quanto maior a frequência de operação, mais energia é necessária. O fabricante do processador estabelece voltagens seguras para o clock de cada processador. Porém, nem todo processador nasce igual: por motivos dos mais variados, alguns aguentam mais tranco que os outros. Processadores de notebooks costumam ser os mais “aptos” a isso, pois funcionam com voltagens inferiores aos processadores de desktops. Por isso é possível brincar um pouco e testar voltagens inferiores à padrão.

Com o CoolBook é possível fazer isso, prática conhecida como undervolting (não é possível fazer overclocking com ele). Algumas vantagens do undervolting são: menor temperatura de operação (que leva a menos barulho de fans), maior autonomia da bateria e maior durabilidade da máquina (devido a menos aquecimento). O aplicativo também permite configurar o throttling, que é o ajuste automático da frequência do processador de acordo com a carga de trabalho. Isso ajuda com o consumo de bateria, desde que as frequências mais baixas utilizem voltagens mais baixas. Utilizar frequência de 1Ghz a 0,9v não economiza nada em relação a uma frequência de 1,5Ghz a 0,9v. Dessa forma, só é algo útil se seu processador não for capaz de rodar em sua frequência máxima com a voltagem mínima.

Ao abrir o CoolBook, são mostrados os pares frequência/voltagem padrão para seu processador:

Note as abas “Adapter” e “Battery”. Através delas é possível estabelecer configurações distintas para quando o notebook está ligado à tomada e para quando está utilizando a bateria.

Ao fazermos as modificações, precisaremos fazer alguns testes de carga para verificar se o sistema se comportará bem. Para fazer esses testes, basta utilizar o CPUTest, com as configurações abaixo:

Quanto mais pesados os testes, maior a “garantia” de que o sistema está estável.

Uma coisa importante é nunca salvar as configurações antes de testá-las apropriadamente. Para isso, sempre utilize o botão Set, nunca o Save. Ao clicar nesse botão, o CoolBook colocara o processador para funcionar na frequência e voltagem selecionadas nos combos (caixas de seleção) acima dele.

O processo então é o seguinte: nas caixas de seleção, escolha a frequência e a voltagem desejadas. Clique em Set. Inicie um teste no CPUTest. Se tudo deu certo, é uma configuração estável (caso contrário ocorrerá um kernel panic e basta reiniciar a máquina). O recomendado é baixar um “degrau” de voltagem por vez e testá-lo bastante. Após isso utilize o botão Add para adicionar o par à janela de configuração.

Em geral, faz-se isso com dois ou três pares de frequências e voltagens e deixa-se habilitado o throttling para que o CoolBook selecione a frequência apropriada para o nível de carga de trabalho atual. Não é preciso deixar a janela do programa aberta. Você pode fechá-la e haverá um pequeno processo do CoolBook rodando em background o tempo todo para ajustar as frequências. O nível de throttling (Low, Medium, High, Very High) define a agressividade do mesmo: quanto mais alto, mais frequentemente será feita a troca de frequência. Também é possível configurar uma temperatura limite que, ao atingida, causará a seleção de pares com frequência e voltagem inferiores. O checkbox B/2 serve para cortar a velocidade de bus à metade para diminuir ainda mais a “sede” do processador. Não utilizo essa opção, então não posso afirmar se é eficiente.

O throttling é algo bem útil, mas deixará um processo rodando o tempo todo, consumindo um pouco de processamento e memória (bem pouco, mas ainda sim consumindo). Se você der mais sorte, conseguirá o supra-sumo da eficiência energética e computacional: configurar o processador para sua máxima frequência e mínima voltagem. Dessa forma terá a máxima eficiência: muitas vezes, diminuir a frequência leva o processador a precisar de mais ciclos para terminar uma tarefa. Assim, poderá consumir mais energia que uma frequência mais alta, mesmo utilizando menos voltagem (daí não fazer sentido manter frequências baixas com voltagens iguais à de frequências mais altas).

Eu tive essa sorte e consegui configurar meu processador (Core 2 Duo L9600 2.13Ghz) da seguinte maneira:

Assim, consegui os benefícios que citei acima. Jogando Madden Superstars, um jogo em Flash bem pesado, as temperaturas batiam em 92ºC e o fan disparava, fazendo bastante barulho. Agora, as temperaturas ficam na casa de 78ºC e o fan só começa a girar alto o suficiente para causar ruído (>4000 rpm) após um bom tempo no jogo, presumivelmente por aquecimento da mesa também, o que diminui e eficiência do resfriamento – se utilizo uma base refrigerada, isso não ocorre. A temperatura “em repouso” (quando não estou fazendo quase nada) caiu para ~45ºC, mesmo em dias quentes. Isso tudo também leva a um ganho de duração de bateria na casa de 10% a 15% (claro, dependendo da carga de trabalho).

Note que, como desabilitei o throttling, não há um processo do CoolBook rodando em background e checando as configurações. Com isso, se reiniciar o sistema, a configuração volta ao padrão (no meu caso, 2128 Mhz e 1,0625v). Para não esquecer desse detalhe e acabar usando o processador com mais voltagem do que o necessário, configurei o CoolBook para abrir automaticamente após o boot do sistema – dessa forma, basta clicar em Save logo após o carregamento do sistema e o par frequência/voltagem será aplicado. Como é bem raro precisar reiniciar, não chega a ser um incômodo.

Como a explicação textual não é lá a mais eficiente, se ficou com alguma dúvida, visite a página de vídeos do CoolBook, que mostra esse processo.

Aviso: apesar de underclocking e undervolting não serem considerados arriscados como overclocking e overvolting, não me responsabilizo por problemas decorrentes do uso do CoolBook ou aplicativos semelhantes.


Uma frase para complementar o último post…

As to methods there may be a million and then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble.

— Ralph Waldo Emerson

Substitua “método” por “linguagem” e isso resume muito bem o meu pensamento.


O poliglotismo “cria” bons desenvolvedores?

Não.

Vejo algumas concepções falaciosas em nossa comunidade que há muito já foram superadas em outras profissões. Uma delas é que dominar mais ferramentas torna o profissional melhor. Será mesmo?

Estudamos tanto lógica para aprender a programar e nos esquecemos de uma armadilha lógica básica: confundir causa e efeito com correlação. Ou, pior, caímos na falácia do Efeito pela Causa e acabamos invertendo as coisas. O fato é que quanto melhor o profissional, mais ferramentas ele vai querer explorar.

Explico: um bom desenvolvedor vai querer aprender mais linguagens para aumentar seu repertório de soluções. Um péssimo desenvolvedor pode aprender 20247232 linguagens e o máximo que conseguirá é ser um péssimo desenvolvedor em 20247232 linguagens. Causas: dedicação e proficiência. Efeito (um deles): desejo de expandir o conhecimento. E, assim, temos um ciclo virtuoso.

Não me entenda mal: eu acredito que conhecer várias linguagens é algo muito positivo. Mas também vejo acontecer um tipo de “pressão social” por isso, como se não pudessem haver preferências e predileções. É o mesmo tipo de pressão social que rola se você falar que não gosta de “The Beatles”. As pessoas vão te olhar feio, pode ter certeza (os caras foram – ou ainda são – muito fodas e mudaram muita coisa, só não fazem o meu estilo, então por favor não arranquem meu couro – e olha eu com medo da pressão). 😉

Em geral, quando eu digo que acho legal conhecer e brincar com várias linguagens mas que prefiro, de longe, desenvolver com Ruby, muita gente já “olha torto”. Veja bem, eu não quero dizer que vou escolher Ruby pra tudo for desenvolver – isso é ser cego. O que eu quero dizer é: se eu estiver num “empate técnico” durante a escolha de linguagem, vou preferir Ruby sempre (hoje, pois o futuro não se sabe, não é?). Além disso, quase sempre que eu for programar algo por diversão, vai ser nessa linguagem.

Acredito que há ótimos desenvolvedores monoglotas (que logo sentem a necessidade de expandir seu vocabulário) e péssimos desenvolvedores poliglotas. E vice-versa. Não é um requisito, é uma opção. Como diz aquela famosa frase: “Você pode escrever Fortran em qualquer linguagem”.


Android e iOS são realmente competidores?

Acredito que não. Pelo menos, não diretamente.

Escrevi um pouco sobre isso aqui: Oceano Azul vs Oceano Vermelho: Android vs iOS (meu Tumblr, onde passarei a concentar os textos não relacionados à programação)


← Anterior Próxima →