Correr uma Maratona: missão cumprida!

por Flávia

Se você tem “correr uma maratona” na sua lista de “Coisas pra fazer na vida”, esse post vai te falar como fazer errado e como fazer certo.

Como fazer errado: Suor, sangue, bolhas, lágrimas e uma medalha

Eu nunca tinha visitado a Disney World. Os meus amigos (marido incluso) estavam combinando de correr a maratona da Disney. Eu nunca tinha corrido uma maratona – nem eles! Só meia. Mas né? Vai todo mundo correr uma maratona inteira e eu vou de meia? Com medo do orgulho ferido, me registrei pra maratona. Pra todos os 42Km dela. Como eles dizem por aqui: “Go big or go home!”

Aí começam os treinos. Eu tenho que confessar aqui que eu não levei os treinos à sério. Matei vários, fiz outros bem de qualquer jeito. Lá pelas tantas eu já tinha até mudado meu objetivo: de “correr uma maratona” passou pra “terminar a Maratona da Disney viva, com minhas próprias pernas e abaixo das 7 horas limite”. Para os não iniciados na arte de correr o novo objetivo significava que andar ia valer, que eu ia ter que correr/andar/me arrastar até a linha de chegada e que tudo ia ter que acabar em no máximo 7 horas. A Disney limita a corrida em 7 horas. Se nego termina depois disso, desculpa, não tem medalha. Pois é!

A experiência em si foi uma explosão de emoções. Teve de tudo. Pra quem já foi à Disney, sabe que eles fazem tudo direito. A largada – às 5:30 da madrugada – tem queima de fogos. É pra deixar qualquer um com a adrenalina lá em cima! E como teve 25000 inscritos, eles dividiram o povo em 8 grupos, ou seja, 8 largadas com queima de fogos. A gente saiu no 6.o grupo, às 6:10 da manhã.
O percurso passa por todos os parques e mais um pouco: Magic Kingdom, pelo Walt Disney World Speedway, Animal Kingdom, ESPN, Hollywood Studios e termina no Epcot. E entre um parque e outro, nas vias de acesso tem banda, tem personagem, tem músicas e as tão bem-vindas estações de água, bebidas com eletrólitos, comida, etc Isso é bom porque em uma corrida longa como essa, além de enfrentar seus limites físicos, tem o famoso “mind game“. Você tem que administrar o fato de estar fazendo um esforço físico por muito tempo e sua cabeça começa a perder o rumo. Umas distrações aqui e ali são muito bem-vindas.

Então, lembra que eu falei ali em cima que eu nunca tinha visitado a Disney? Minha primeira visita foi durante a corrida. Foi MUITO emocionante.

Disney Marathon E sim, eu terminei. Em 6 horas e 21 minutos. Andei quase metade mas fiz questão de correr os últimos 400 m e cruzar a linha de chegada correndo.
E eu chorei. Chorei pela exaustão, pela dor insana nas pernas, por ter conseguido. Chorei com o abraço apertado do marido depois da linha de chegada, me dizendo que estava orgulhoso por mim. E a medalha….. ela é linda! E mais do que um pedaço de metal – que lá pelas tantas no meio da corrida eu pensava: “É só uma medalha! que se dane!”, pra vocês terem uma ideia do lance da cabeça pirar! – a medalha é uma lembrança física de um objetivo alcançado.

medalha

Mas eu trouxe comigo outras lembranças físicas: durante a corrida eu fiz 10 bolhas e um dedão roxo. O dedão roxo (ou “purple toe” ou ainda “runner’s toe“) é um fenônomeno conhecido entre corredores de longa distância e é o acúmulo de sangue embaixo da unha por impacto repetido no caso, dentro do tênis. Não tem muito o que fazer pra previnir. Por 4 dias depois da corrida eu me locomovi com muita dificuldade. As pernas doíam tanto que andar era bem complicado. E sim, como era minha primeira visita na Disney, nos dias seguintes à corrida eu vistei os parques. Todos. Não, não foi fácil!
E esses dias, quase um mês depois da corrida, as minhas duas unhas do dedinho menor do pé caíram. Outra lembrancinha da corrida….

Como fazer certo: treino, suor, lágrimas e uma medalha

Se você quer saber como é fazer certo, a receita é simples: faça como o marido e complete todos os treinos. Com sol, chuva ou neve. O marido terminou a corrida em 5 horas e 5 minutos. Ficou dolorido no dia mas no dia seguinte estava pronto pra outra.
Ele também não achou fácil. Teve momentos de dificuldade com câimbras e dor no joelho mas correu a maior parte da corrida. A chegada também foi emocionante – à isso ninguém está imune! ;-)

Epcot_medalhas

Então taí: vai se preparar pra correr a maratona ou vai dar uma de Barney Stinson? :-P

O leitores desse blog podem ficar tranquilos: nós não estamos virando aqueles casais que têm perfil conjunto no Facebook. Esse post foi só uma participação especial. ;-)

Expansões do Shell

Todo sysadmin *nix que se preze tem que conhecer shell scripting pelo menos razoavelmente. Conhecer bem com certeza vai fazer sua vida mais fácil (ou mais difícil, já que as tarefas complexas vão ser redirecionadas para você). Agora, masterizar é coisa para poucos. Sou metido a besta, mas acompanhando a lista shell script brasileira eu vira-e-mexe fico maravilhado com as coisas que o povo consegue fazer. Quando crescer quero ser igual ao Júlio C. Neves. :)

Uma feature que vale a pena ser aprendida em shell-scripting é a capacidade de expansão do shell, principalmente o Bash, que é o shell standard em qualquer distribuição Linux e vários Unixes por ai.

Veja o seguinte caso:

Vira e mexe eu preciso fazer manutenção e alterar coisas em múltiplos clientes. Normalmente em um arquivo ou outro enterrado no fundo de uma pilha de sub-diretórios. Algo como:

$ cat /data/cliente1/conf/integration/system7/peer.conf
peer=192.168.1.1

E ai são 150 clientes que precisam desse arquivo atualizado. Nada que um loop for não resolva, certo?

$ cd /data; for cliente in cliente*; do sed -i "s/192.168.1.1/10.10.10.1/g" $cliente/conf/integration/system7/peer.conf; done

Ora, mas que tal isso?

$ sed -i "s/192.168.1.1/10.10.10.1/g" data/cliente*/conf/integration/system7/peer.conf

Qual a diferença?

 $ time for cliente in cliente*; do sed -i "s/10.10.10.1/192.168.1.1/g" $cliente/conf/integration/system7/peer.conf; done

real    0m0.518s
user    0m0.040s
sys     0m0.060s
$ time sed -i "s/192.168.1.1/10.10.10.1/g" data/cliente*/conf/integration/system7/peer.conf

real    0m0.028s
user    0m0.008s
sys     0m0.020s

Além de muito mais elegante é muito mais rápido.

Outros truques interessantes:

$ mkdir -p data/cliente{1..150}/conf/integration/system7/
$ find data/|wc -l
601

Um comando, 601 diretórios e sub-diretórios criados.

E você pode especificar mais detalhadamente:

$ zcat apport.log.{1,3,6}.gz

Que tal renomear um arquivo?

$ mv batata.{conf,cnf}

Da próxima vez que precisar de um shell-script tente encaixar algumas expansões lá. Depois de um tempo fica natural. ;)

Cidadão

Foi um longo processo. Começamos em algum momento em 2006 dando entrada na papelada de imigração, passamos por provas de idiomas, exames médicos, antecedentes criminais, infinitos formulários. Mas no final fomos aprovados como residentes permanentes do Canadá. Deixamos pra trás família, amigos, uma vida cômoda em condomínio, carro, excelente emprego e todo os confortos da classe média brasileira.

Chegamos em Halifax no final do verão de 2007 sem conhecer ninguém, sem perspectiva de emprego e nada além de uma reserva de hotel (o mais barato que conseguimos encontrar). Começa a primeira batalha, tentando voltar para o mesmo status que tínhamos no Brasil.

No começo não foi fácil. A casa que conseguimos alugar era ridiculamente pequena, nos primeiros dias não tínhamos nem colchão e vou dizer que dormir direto no chão foi dolorido. Mas aos poucos fomos conseguindo melhorar. Verdade que ainda hoje a mesa de jantar é a que compramos 5 anos atrás, no Wallmart por $78,00… Mas enquanto não cair aos pedaços vamos levando.

O tempo foi passando e fomos reconstruindo a vida. Achamos uma igreja, arrumamos emprego, mudamos de emprego. Começamos a trabalhar juntos, fizemos amigos, fomos promovidos.

Ao final de três anos a possibilidade de entrar com o processo para virar cidadãos canadenses. Precisa pensar duas vezes? Já sabíamos que ia ser burocrático e demorado, mas vamos lá.

Formulários, taxas, comprovantes, prova, entrevista… Mas finalmente, essa semana:

Sim! Perante a juíza, juramos solenemente (em inglês e francês) fiel e sincera aliança com sua Majestade, a rainha:

I swear that I will be faithful and bear true allegiance to Her Majesty Queen Elizabeth the Second, Queen of Canada, Her Heirs and Successors, and that I will faithfully observe the laws of Canada and fulfil my duties as a Canadian citizen.

Je jure fidélité et sincère allégeance à Sa Majesté la Reine Elizabeth Deux, Reine du Canada, à ses héritiers et successeurs et je jure d’observer fidèlement les lois du Canada et de remplir loyalement mes obligations de citoyen canadien.

E assim recebemos nossa cidadania canadense.

Presidindo a cerimônia estava a juíza Linda Carvery. Não acho que poderia ter sido uma pessoa melhor. Além de dar um tom mais informal à cerimônia, enquanto mantendo a solenidade do momento ela ainda deu bons conselhos, nos lembrou da importância da guerra de 1812 e como isso definiu o Canadá como nação, voltou a enfatizar a importância da herança francesa e de que somos um país bilíngue.

Ao chamar cada um dos 49 candidatos à cidadania ela conversou com cada um de nós pessoalmente, perguntou nossas origens, que lugares do Canadá já moramos e onde já fomos passear. Nos admoestou firmemente a irmos celebrar naquele dia, pois era um dia especial nas nossas vidas.

Não somos pessoas de fazer muitos amigos, mas os poucos que temos aqui no Canadá são nativos. Não conhecemos nem procuramos conhecer outros brasileiros. Infelizmente também a maior parte desses amigos são do nosso trabalho. E a cerimônia foi num dia de semana de manhã. Ainda assim alguns deles com certeza iriam, mas para piorar todos os principais suspeitos foram mandados em uma viagem a trabalho. Estávamos achando que não ia ter uma alma conhecida para pelo menos tirar uma foto.

Há! A mãe de uma de nossas amigas tem uma parente que conhece a gente e já viajou com a esposa numa dessas shopping trips e não teve dúvida. Mandou a senhorinha lá pra representá-los. Que coisa legal ter uma cara conhecida ali.

Desnecessário dizer que no trabalho somos meio quietos e apenas avisamos o nosso chefe direto que iríamos tirar o dia de folga para ir receber nossa cidadania.

De novo: Há! Ao chegarmos no trabalho no dia seguinte eu estava no meu escritório e o chefão passa fazendo a maior agitação, convocando para uma reunião de emergência na cozinha (até ai tudo bem, é o maior espaço aberto e já tivemos diversas reuniões all-hands ali.). Mas quando eu estava para entrar na cozinha ele me segura e fala: Preciso conversar com você. Nisso a esposa também vem chegando e ele puxa ela também. Já sacamos que tinha coelho no mato.

Quando finalmente nos liberaram pra entrar na cozinha tinha um imenso bolo branco e vermelho, com uma bandeira canadense enorme e todos os funcionários cantando o hino canadense. Caracas… que emoção (mas macho não chora). Recebemos cumprimentos, abraços e felicitações de tudo quanto é canto, fomos lembrados na necessidade de usar “eh” no final das frases e eu garanti a todos que já sei puxar papo sobre a previsão do tempo.

A conclusão que quero deixar é: Não apenas é bom morar aqui, não apenas temos uma excelente qualidade de vida e pouco do que reclamar, mas ainda por cima nos sentimos muito bem-vindos e realmente parte da comunidade. Isso é um sentimento muito canadense que eu nunca tive no Brasil. Eu fazia parte da minha família. Eu tinha meus amigos, eu tinha minha igreja. Mas eram núcleos individuais. Não sei explicar bem, mais aqui parece uma coisa mais coesa. Fazemos parte de um todo. E o governo ajuda a enfatizar isso. Somos um país diverso, feito de pessoas das mais diferentes origens e com todo tipo possível de história e experiência de vida. Somos de tudo quanto é cor e raça. Falamos diversos idiomas (incluindo pelo menos inglês ou francês) e viemos de vários países. Tudo isso importa bastante e não importa muito, afinal somos canadenses.

Please and thank you!

O Mundo Sem Internet

Hoje assisti um vídeo do Parafernalha chamado “O Mundo Sem Internet“. A abordagem humorística é excelente e mostra como o mundo seria bem melhor sem Internet. O vídeo coloca a piada em cima de redes sociais e o vício das pessoas. Ao final de 7 anos passados no mundo hipotético do vídeo as pessoas estão mais saudáveis e ativas, as artes voltaram a florescer e as pessoas são mais felizes.

Mas ai meu lado geek deu uma de marrudo e disse que isso era ridículo, já que o caos iria reinar. E aqui segue o que eu penso que iria acontecer se a Internet caísse.

Primeiro vamos pensar no que pode potencialmente derrubar a Internet, uma rede que foi criada primariamente para resistir a falhas:

Temos dois componentes na Internet (e em qualquer outro tipo de rede): Lógico e físico, de forma que potencialmente uma falha em apenas um deles pode derrubar a Internet.

Lógico

Do ponto de vista lógico a única forma que eu enxergo de derrubar a Internet seria um ataque coordenado e bem sucedido à DNS root zone.

Derrubando o acesso aos root servers a Internet não estaria tecnicamente fora do ar, mas na prática estaria inutilizada já que a maioria absoluta do tráfego se baseia em nomes.
É possível que muitas empresas e transações ainda continuassem operando, visto que não é incomum utilizar-se de endereços IP tanto em VPNs como em transações entre servidores em operações de alta importância por questões de segurança (evitar ataques de DNS poisoning, por exemplo).

Mas conseguir derrubar todos os servidores root é mais complicado do que parece. Apesar de serem apenas 13 para toda a Internet na verdade quase todos são clusteres, operados por empresas privadas, agências governamentais, universidades e ONGs em diferentes partes do mundo.

Não vou dizer que é impossível, mas boa sorte tentando derrubar tudo isso.

Físico

Se derrubar a parte lógica é complicado, derrubar a parte física eu diria que é quase impossível. Impossível sem destruir metade do mundo no processo, bem entendido.

A grande vantagem da Internet é sua capacidade de reconhecer falhas e conexões perdidas e encontrar um caminho diferente pra chegar no mesmo lugar.

Imagine você querendo ir trabalhar e uma das ruas que você costuma pegar está fechada. Você pega um desvio, mesmo que seja mais longe ou com limite de velocidade menor, e eventualmente chega no seu destino. Exceto se você for muito azarado e morar numa rua sem saída e for a sua própria rua que está fechada mesmo que tenha que rodar 500Km a mais você pode potencialmente achar outro caminho pra chegar onde quer. E se você não conseguir nem sair de casa o problema é apenas seu. E não do transporte mundial.

Da mesmo forma o seu acesso à Internet pode estar indisponível porque seu computador está com problema, ou seu provedor está com problema, ou mesmo o acesso internacional do seu provedor está com problema, mas ainda assim a Internet mundial ainda estará no ar.

Um exemplo disso foi quando uns poucos anos atrás a âncora de um navio destruiu um cabo submarino que era o principal ponto de acesso  do Egito à Internet. A Internet estava fora do ar no Egito, mas no resto do mundo as coisas estavam totalmente normais.

No ambiente corporativo é extremamente comum ter-se acesso redundante à Internet. Na empresa onde trabalho, por exemplo, nosso ambiente de produção está conectado a 5 provedores numa configuração BGP. Isso significa que mesmo que o nosso provedor principal pegue fogo e não sobre um único cabo ligado o nosso acesso à Internet continuará funcionando normalmente, apenas pegando um “desvio” por outro caminho.

E é por isso que eu digo que pra derrubar a parte física exigiria destruir metade do mundo. As conexões principais da Internet (backbone) são compostas por diversos meios físicos (Fibra óptica, satélites, fios de cobre, microondas, etc) e estão espalhadas por localidades físicas diferentes onde se inter-conectam em múltiplos pontos de formas diferentes.

Só pra ter uma idéia, de uma olhada no mapa de cabos submarinos.

Dá pra ver ali no mapa vários cabos que vão do Brasil pros Estados Unidos, por exemplo. Mas imagine que de alguma forma todos os cabos entre os dois países parem de funcionar ao mesmo tempo.

A Internet vai facilmente reconhecer o problema criar algum caminho maluco, como Brasil -> África do Sul -> Malásia -> Austrália -> Estados Unidos

Tudo vai ficar muito mais lento, problemas irão acontecer, pessoas irão xingar muito no Twitter, mas a Internet não vai cair. E isso falando apenas de cabos submarinos. Com certeza existem cabos continentais, além dos links via satélites e microondas.

Então para efetivamente derrubar toda a infra-estrutura física da Internet alguma coisa terrível como EMP (Pulso eletromagnético). Mas nesse caso a humanidade estaria com problemas muito maiores que falta de Internet, já que absolutamente tudo que é moderno (de carros até usinas de energia) iriam simplesmente parar de funcionar.

Aconteceu

Mas OK, vamos imaginar que uma desgraça aconteceu e por um acaso toda a infra-estrutura física foi comprometida mas o resto do mundo ainda está normal. Como seriam os nossos dias?

Não existir mais seu email, MSN, Facebook, Twitter, etc é apenas a ponta do iceberg. Seu Internet Banking também iria desaparecer, de forma que você seria obrigado a ir até a agência para fazer qualquer operação.

Mas não vamos esquecer que a infra-estrutura física foi comprometida, de forma que mesmo as conexões privadas que bancos e outras empresas utilizam costumam ser compartilhadas fisicamente com a infra da Internet. Um cabo de fibra subterrâneo, por exemplo, pode ter centenas de pares. E enquanto alguns são usados pra Internet outros são utilizados pela sua agência. E esses cabos foram comprometidos. Então sua agência não tem mais acesso ao sistema central do banco.

Isso provavelmente significa que todas as operações vão ter que ser feitas entre a agência e a central via telefone, fax ou relatórios impressos. Mas lembre-se que os servidores dos bancos estão em grandes data-centers enquanto os atendentes estão em call-centers, interligados pela finada infra-estrutura. Ou seja: Caos no setor bancário.

E como tudo é interligado de alguma forma os sistemas de pagamentos de empresas de água, luz, telefone, TV a cabo e celulares também iriam parar de receber confirmação de pagamentos dos bancos. Mesmo porque boa parte dessas confirmações chegam via internet. Resultado: Automaticamente seriam expedidas ordem para cortam os serviços para milhões de pessoas “inadimplentes”

E não é só isso. Grandes varejistas (ou nem tão grandes assim se estiverem utilizando um produto decente como o que a empresa onde trabalho desenvolve) não fazem mais pedidos a seus fornecedores via telefone ou fax. O seus sistemas de inventários podem automaticamente verificar o fluxo do estoque e mandar ordens de compra para os fornecedores utilizando EDI. E adivinhe qual o meio de comunicação? Internet!

Em apenas dois ou três dias seu supermercado local vai ficar sem mercadoria já que não conseguem mais colocar pedidos no fornecedor. E mesmo que conseguissem, iam pagar como com os bancos fora do ar?

E ao mesmo tempo imensos armazéns iriam ter produtos estragando, já que não seria possível checar nos sistemas qual cliente fez qual pedido, onde entregar mercadorias, etc.

Pra piorar apenas TV analógica aberta e rádios AM/FM estariam disponíveis como meios de comunicação em massa. Você ainda tem antena de TV por ai?

Mas isso não ia ajudar muito. A maior parte das ligações telefônicas passa por algum meio digital em algum momento (aquela estrutura que não existe mais, lembra?) incluindo os celulares. Transmissão de muitos programas entre afiliadas de TV também passam por satélites (indisponíveis). Acho que sobra rádio-amador como principal meio de comunicação inter-continental.

Então concluindo o pensamento em dois ou três dias sem Internet teríamos um completo caos no sistema financeiro, nos meios de comunicação, no varejo e na nossa geladeira.

As pessoas não teriam a quem recorrer nem ter o que fazer. Muito pior do que um apocalipse zumbi, já que pessoas normais revoltadas são bem mais rápidas e perigosas do que mortos-vivos.

Felizmente as chances disso acontecer são tão infinitesimais que pode-se dizer ser desprezível, mas posso garantir que jamais, como o vídeo mencionado anteriormente quer fazer parecer, o mundo seria um lugar melhor.

 

Usando a ferramenta certa

Diz o ditado que quando a única ferramenta que você tem é um martelo todos os problemas parecem um prego. E o pior é que vira-e-mexe eu me deparo dando martelada em parafuso ou algo que o valha.

Eu sou um grande fã de shell script. Acho extremamente eficiente, simples, funcional e, se você conhecer comandos e truques o suficiente consegue fazer coisas realmente impressionantes com 1 linha.

Pelo menos uma vez ou duas por dia alguém vem na minha sala com algum pedido para fazer um script ad-hoc pra resolver algum problema, fazer parse de algum arquivo ou update em massa de sabe-se lá o que. Invariavelmente resolvido com um for loop, um sed ou tr ou grep (ou todos juntos) e vamos que vamos.

Mas semana passada me apareceram com um interessante: Um arquivo com +20.000 linhas e um outro com +170.000 linhas. O menor tinha uma lista de UPCs (códigos de barra) e seus respectivos códigos internos enquanto o maior tinha uma lista com diversas colunas sendo uma delas o UPC.

Minha tarefa, caso eu desejasse aceitá-la, era substituir o UPC no segundo arquivo pelo código interno. Simples, né? Nem pensei duas vezes antes de fazer um one-liner que me gerou um terceiro arquivo com todas as linhas do arquivo menor parseadas num script sed mais ou menos assim:

s/UPC1/codigo1/g;
s/UPC2/codigo2/g;
...
s/UPC20000/codigo20000/g;

Depois foi só botar pra rodar um sed -f arquivo.sed -i arquivao.txt e ir fazer minhas coisas. Menos de 2 minutos pra já estar pensando em outros problemas.

Só depois que percebi o quão estúpido isso foi. Para cada linha de sed o arquivo de +170000 linhas teria que ser aberto, examinado linha a linha, ter as substituições feitas e fechado. O total de repetições seria de 20.000 x 170.000 = 3.400.000.000

Não me liguei disso no momento, deixei rodando num shell à parte e só depois de três horas, quando cliquei na janela novamente e vi que ainda rodava (e consumia quase 100% de CPU no servidor) pensei que tinha algo errado. Eu estava martelando um disjuntor.

Fazia meses que não relava em Python, mas achei que seria uma solução melhor usando um dicionário. No final o script ficou assim:

#!/usr/bin/env python

database={}

for line in open ("/tmp/ITEM_UPC_CODE.txt"):
    item = line.strip().split("\t")[0]
    upc = line.strip().split("\t")[1]
    database[upc]=item

for line in open ("/tmp/FULL_LIST.txt"):
    inv_upc = line.strip().split("\t")[1]
    if inv_upc in database:
        print line.replace(inv_upc,database[inv_upc]).strip()

Tempo de execução? 2 segundos.

A lição pra mim é que nem sempre o que é mais fácil de criar ou pensar vai ser mais eficiente para resolver o problema. Não me importo de um script demorar 10 minutos pra rodar se eu só gastei 30 segundos criando um one-liner ao invés de 15 minutos criando algo mais caprichado que rodaria em 1 minuto.
Mas um script rodar mais de 3 horas enquanto eu poderia ter gasto 10 minutos e depois executado o mesmo em 2 segundos foi de causar vergonha.

Chega de dieta: 70Kg perdidos

Na verdade 68Kg mas “parei a dieta”. Na verdade estou tentando ganhar peso agora, mas vamos voltar no tempo antes de adiantar o assunto.

** AVISO ** Post do tipo “querido diário”.

Background

Pra quem não sabe a história tem um post de 20Kg atrás, quando eu tinha perdido “só” 50Kg que pode ser visto aqui. O post conta como aos 30 anos fui diagnosticado com diabetes tipo 2, além do já conhecido quadro de hipertensão e obesidade mórbida.

Agora se passou quase 1 ano deste post e perdi mais 20Kg. Minhas visitas à médica foram cortadas de trimestrais para semi-anuais e na última vez que estive lá a médica (uma senhora de quase 70 anos) me disse: “Você é a primeira pessoa na minha carreira para quem eu vou dizer isso: Você está curado da diabetes. Todos os seus exames nos últimos dois anos tem resultados muito melhores do que 80% da população Canadense.”. \o/

Mais do que isso, para as pessoas que acham que Atkins é perigoso por causa da ingestão de gordura: Meus exames mostram que não só meu colesterol “ruim” está no nível ideal, mas meu colesterol “bom” está excelente. Segundo a médica, inclusive, resultados tão equilibrados quanto os que ela viu nos meus exames são bem raros. (double \o/)

Não é uma dieta milagrosa, não é uma dieta rápida (2 anos pra perder 70Kg) e não é uma dieta barata. Provavelmente nem seja uma dieta que vai funcionar para todo mundo, mas eu recomendo fortemente. Pesquise sobre Atkins, compre os livros e tente. Se você é gordo(a) como eu fui ou mesmo menos do que isso eu posso dizer: Você não sabe que vida ruim você está levando até que finalmente emagrece…

Eu não tinha energia para nada, não gostava de sair de casa, vivia com dor nas costas e fatigado. Dormia demais, comia demais e passava frenquentemente por aquelas situações que só quem é gordo conhece, como ter que procurar outra vaga no estacionamento porque a que está disponível não tem espaço suficiente pra você abrir a porta e sair do carro.

“Parei a dieta”

Enquanto fazia a dieta acabei adicionando corrida como parte das minhas atividades físicas. No ano passado corri, pela primeira vez na vida, 5K numa dessas corridas beneficentes. Me empolguei com o esporte e continuei treinando. Descobri que me ajuda a aliviar o stress, me dá mais energia, me permite me alimentar mais e é divertido tanto sozinho quanto em grupo.

Mas não bastando isso duas coisas adicionais aconteceram: 1 – eu talvez tenha ficado um pouco mais competitivo e 2- Meu lado geek foi presenteado com métricas.

1- Mais competitivo

Quero dizer comigo mesmo. Pera ai… perdi todo esse peso, corri 5K. Será que consigo correr 6k? 10k? Quão rápido? Por quanto tempo? Consigo correr no sol? Na chuva? Na neve? Antes das 6 da manhã? De noite? Vamos ver quais são meus limites…

2- Métrica fazem um geek feliz

Muito legal pensar em melhorar minhas distâncias, velocidade, resistência e tudo mais. Mas como eu meço isso? Não tema, nada que um celular Android e a aplicação RunKeeper não possam te ajudar.

Basicamente a aplicação utiliza o GPS para medir os dados durante a sua atividade física. Junta isso com as informações que você coloca no seu profile e tadá: Métricas. Em forma de gráficos, tabelas, mapas. Tudo que seu lado geek pode desejar.

Juntou essas duas coisas e ai ficou sério. Resolvi que minha próxima corrida ia ser um 10K. E conversando com o pessoal que já tem mais experiência, lendo diversos artigos e estudando um pouco (geek!) cheguei à conclusão que cross-training seria recomendado e extremamente benéfico. Isso significa que para melhorar minhas corridas eu deveria começar a fazer musculação e spinning. E ai resolvi me matricular na academia.

No primeiro dia da academia eles fazem uma consulta inicial medindo várias coisas e o que me assustou foi a percentagem de gordura. Meu primeiro registro mostra que eu tinha33% de gordura corporal. Então apesar de meu peso estar certo e perto do ideal já na época (uns 10Kg atrás) essa taxa de gordura era alta demais.

Continuei minha dieta e adicionei à corrida sessões de spinning e puxamento de ferro esperando melhorar meus índices, mas meio às cegas, já que não tinha nenhum equipamento para checar a taxa de gordura. E nesse meio tempo cheguei no meu peso atual, mas não fiquei muito feliz. Eu me olho no espelho e acho que estou muito miúdo agora. Engraçada sensação. Sinto que preciso que um pouco mais de substância.

Bom, fiquei encorajado num dia que cheguei cedo na academia e tinha uma pessoa livre e com boa-vontade pra me aplicar outro teste de taxa de gordura e eu tinha baixado pra 28%. Sensacional.

Samsung sucks

Eu adoro meu celular. Meu Samsung Galaxy S é rápido, leve, bonito e extremamente útil. Mas o GPS é péssimo. Horrível. Enquanto o GPS do celular da esposa (Um Android LG bem baratinho) ativa em 10 segundos ou menos eu já tive vezes onde meus Samsung demorou mais de 20 MINUTOS pra ativar. E não só isso. Diversas vezes ele simplesmente pira e dá uns pulos de centenas de metros fora. Isso começou a me irritar muito já que eu simplesmente não conseguia mapear muitas (metade ou mais) das minhas corridas corretamente. Algumas eu simplesmente descartava porquê não tinha dado nenhum. Outras eu tinha que passar um tempão corrigindo o percurso manualmente no site do runkeeper pra poder ver os resultados reais. Muitas vezes eu perdia a paciência e deletava a atividade.

Mas o pico da minha dessatisfação foi durante minha primeira corrida de 10K, a Blue Nose Marathon. Eu estava contando com o RunKeeper para me manter no passo ideal e conseguir terminar a corrida dentro do meu tempo planejado (menos de 1 hora), mas lá pelo meio da corrida o GPS deu tilt e eu perdi completamente o controle do meu passo. Continuei correndo tentando basear meu tempo mais ou menos no cronômetro do meu relógio de pulso e acabei conseguindo terminar em 56min. Mas puto da vida.

Se o problema é GPS então vamos resolver direito. Quem faz os melhores GPS e tem uma linha de esportes?

Garmin

Quem diria que a Garmin teria uma linha inteira de esportes? Incluindo relógios de pulso com GPS. Quase chorei. E espera… Não só isso. Além de GPS tem um modelo com touch-screen. E programável. E com monitor cardíaco. Tecnologia ANT+.Bom… bati o olho e já sabia qual eu queria: Forerunner 610.

Mas ai a coisa ficou mais interessante. Descobri que o relógio era compatível com um “monitor de composição corporal” (uma balança metida à besta) da Tanita. O BC-1000.

Juntando o monitor com o relógio cada vez que eu me peso (e eu faço isso todos os dias no mesmo horário) eu consigo, além do peso, medir: Taxa de gordura, massa óssea, massa muscular, hidratação e gordura visceral. E baseado nesses valores o software calcula minha idade metabólica, ingestão calórica diária e um treco chamado “physique rating“. Ou seja: Mais métricas pro geek aqui.

Então agora com dados suficientes e medições diárias eu posso trabalhar em ficar mais magro enquanto ganho peso. Afinal agora tenho acesso fácil à informação que antes estava indisponível.

No momento (hoje de manhã) as medidas são:

Peso Total: 78Kg / Massa óssea: 3Kg / Massa Muscular: 57.6Kg / Gordura: 17.4Kg (22.3%)

Vamos ver se consigo chegar me algo parecido com 85Kg com 13% de gordura. Seria o ideal, eu acho. Mas estou vendo pelo menos um ano de trabalho pra chegar lá baseado nos 10 primeiros dias de medições. Meu lado geek tá atiçado, meu lado atleta tá atiçado e a saúde agradece. ;)

 

SSD e você *

Antes de começar esse post queria agradecer os comentários no post anterior. Não tinha idéia que tem, pelo menos, 9 pessoas seguindo o blog. Sensacional.

 

Bom, conversando com meu amigo Júlio Mauro outro dia cheguei a conclusão que os preços de SSD no Brasil ainda são abusivos e talvez por ai não seja economicamente viável as soluções que eu implementei aqui, mas falando apenas da tecnologia…

Um tempo atrás precisávamos de 2 novos storages para nossa farm virtual. Um pra produção e um pra servidores internos, desenvolvimento e teste. Comecei da forma tradicional procurando preços para expandir ou nosso Equallogic ou o NetApp (sim, tenho um de cada). Mas ao mesmo tempo que precisava de mais espaço a empresa fez uma mudança enorme no kernel do nosso principal software (que disponibilizamos no modelo software-como-serviço) e descobrimos uma enorme demanda por I/O. Depois de analisarmos tudo com cuidado chegamos a conclusão que essa nova demanda, uma vez que todos os clientes recebessem o upgrade e todos as novas instalações previstas estivessem no ar iriam justificar não um upgrade simples adicionando mais shelfs e discos nos storages existentes mas sim um upgrade para versões mais high-end.

Foi ai que resolvi parar pra pensar um pouco e considerar uma solução mais geek: Vamos construir nosso próprio storage. Comparando as cotações que recebi da Equallogic e NetApp e olhando o que eu podia comprar com aquele dinheiro caso eu fizesse o storage eu mesmo cheguei a conclusão que dava pra ter em produção o mesmo espaço disponível em SSD que eu teria com discos SAS de 10K usando os storage appliances.

O resultado foi esse aqui. Um Dell PowerEdge R710 com 96GB de memória, um etherchannel LACP de 2Gb/s e  6 discos SSD de 480GB em raid-z (ZFS!) num FreeBSD. Lindo. O filesystem é exportado via NFS, facilmente configurável no VMware.

 

Assim que foi pro ar vimos uma melhora incrível na performance geral da infra virtual. As VMs migradas para esse novo storage tiveram o I/O incrementado pelo menos 5x em relação ao ambiente anterior (man iostat para mais informações) e com umas 20 VMs migradas pros SSDs a pressão nos outros storages diminui também. E o detalhe: A versão de FreeBSD atual tem um bug que não deixa ela fazer uso total da capacidade ethernet disponível no meu servidor. Assim que tiver um update eu vou poder usar um ethernchannel de 4Gb/s, efetivamente dobrando o throuhtput, já que rede é meu gargalo no momento.

Vendo o excelente resultado em produção e precisando de um storage pro ambiente interno resolvi tomar uma atitude parecida. A única coisa é que me recuso a comprar servidor de marca e top-de-linha pra ambiente interno, então montamos um servidor nós mesmos. Só partes de alta qualidade, placa-mãe super-micro modelo servidor, processador AMD, fonte redundante, 48GB de memória, 3 controladoras SATA top-de-linha e um gabinete 4U com 24 baias hot-swappable.

Nesse sujeito adicionamos uma penca de discos SATA baratos de 750GB, 1, 2 ou 3 TB entre 5.4K RPM e 7.2K RPM num raid-z. Mas ai o truque: Adicionamos também 3 SSDs de 250 GB: 1 para caching e 2 (mirror) pra logs. De novo um etherchannel de 2Gb/s e NFS.  Não estou exagerando ao dizer que esse servidor custou 1/8 ou menos do que nosso NetApp, tem mais do que o triplo de capacidade e praticamente a mesma performance. Provavel que se eu gastar mais uns $2K em SSD para mais caching/logging eu até supere o NetApp.

O resultado foi tão impressionante (e barato comparado com comprar um storage) que os executivos da empresa, após discutirem um novo modelo de data-mining com alguns clientes e os desenvolvedores e prometerem ainda mais melhoras de performance para outros clientes, chegaram para mim com um saquinho de dinheiro (figurativamente falando) e disseram: Gasta isso com SSD. Mas instala o mais perto possível dos servidores X, Y e Z.

Traduzindo o que eles queriam é os SSD rodando direto no ESXi como local storage (vmfs). Missão dada é missão cumprida. Mais 3 SSDs de 480GB em RAID5 direto em um dos nossos ESXi (dual socket, quad-core X5560, 48GB de RAM). Rapaz… Dá vontade chorar. Enquanto algumas VMs que rodam no Equallogic chegam a um pico de 5000 rd_sec/s as VMs rodando no RAID5 de SSD bate fácil em 25000 rd_sec/s.

Já estou com mais 3 SSDs encaminhadas e logo devo colocar essas crianças em outro ESXi.

E agora começa a outra parte da história… Vendo tudo isso acontecendo no ambiente dos servidores deu coceira, né? Meu laptop do trabalho já estava com a garantia expirada fazia uns 3 meses ou mais e era hora de compara um novo… Consegui a aprovação pra um Latitude bacanudo, turbinado com 8GB de memória, CPU i7 e tudo mais… só que ai aquela tristeza, né? Disco de 5400RPM… Resolvi tirar o escorpião do bolso e comprei, do meu próprio dinheiro um SSD da Intel de 120GB e um adaptador pra colocar no lugar do CD-ROM pro disco original.

Rodando Ubuntu nessa criança com o SO no SSD e meus dados no disco normal. Sensacional. Google Chrome abre em menos de 1 segundo. Firefox em menos de 2. O sistema dá boot em 13 segundos. Coisa insana mesmo. Acho que nunca mais consigo ir pra discos normais. To estragado pra vida.

Resumindo a história: Se financeiramente for possível eu recomendo altamente ir pra SSDs. Usamos OCZ, Patriots e Intel. OCZ sem dúvida o mais rápido, Intel a seguir, eu acho. Dependendo do uso ou direto no seu ESXi ou num storage rodando ZFS deve ficar lindo. Na empresa nosso ambiente é 100% virtual em cima de ESXi. Inclusive bancos de dados. Queixa nenhuma até o momento. E não deixe ninguém te assustar com papo de que SSD falha ou estraga fácil. Leia os specs técnicos do modelo que estiver pesquisando e veja o MTBF. No caso dos OCZ dá dó dos discos normais ao comparar. ;)

Se tiverem alguma pergunta é só mandar um comentário. Quem sabe dá sorte e eu sei responder?

* Foi só pra rimar esse Título ridículo. – Foi mal aê.

De volta ao ar

Sabe-se lá quantos meses atrás um desses bots achou uma vulnerabilidade na versão de um outro site de WordPress que eu tenho e consequentemente acabou tendo acesso ao meu blog principal (esse aqui) e resolvi tirar do ar pra fazer uma limpeza. Deve ter sido no começo do ano e eu não relei nisso até agora.

Não que eu ande gastando menos tempo na Internet, mas ando gastando esse tempo usando meu tablet como dispositivo ao invés do computador. Isso significa que basicamente não ando produzindo quase nenhum conteúdo além de tweets e emails curtos. Fico imaginando se isso acontece com outras pessoas também… No trabalho uso o computador e produzo todo o conteúdo e faço todas as tarefas necessárias usando minha workstations com meu teclado ergonômico e duas telas de 24”, mas quando chego em casa só quero ficar jogado no sofá (ou na cama) com meu tablet de 10” passando de tela em tela. Lógico que o mundo não está perdendo nada sem os meus pitacos no blog. :-P

Tem um bocado de assunto sobre os quais eu gostaria de falar com meus 5 leitores, incluindo SSD e a incrível performance que ando conseguindo junto com VMware e servidores Power Edge, sobre as belezas do ZFS e os atuais avanços do btrfs, o fato de eu ter descoberto que tinha um atleta preso embaixo da minha obesidade mórbida, resultados atuais da minha dieta e outras coisas que não vão interessar a ninguém que não sejam meus pais ou amigos geeks.

Mas estou com preguiça já que gastei umas duas horas pra instalar um wordpress novo, restaurar backup, fazer uma limpeza, mudar o tema, etc. Então fica pra próxima. :-P

Coming soon

Já na bancada passando por um batalhão de testes antes de ir pra produção:

root@dc01fs01:~# uname -a
SunOS dc01fs01 5.11 11.0 i86pc i386 i86pc
root@dc01fs01:~# prtdiag 
System Configuration: Dell Inc. PowerEdge R710
BIOS Configuration: Dell Inc. 6.0.7 08/18/2011
BMC Configuration: IPMI 2.0 (KCS: Keyboard Controller Style)
==== Processor Sockets ====================================
Version Location Tag
-------------------------------- --------------------------
Intel(R) Xeon(R) CPU X5560 @ 2.80GHz CPU1
root@dc01fs01:~# prtconf |grep -i memo
Memory size: 98292 Megabytes

96GB amigos!

root@dc01fs01:~# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
 0. c3t0d0 <Dell-VIRTUAL DISK-1028 cyl 36442 alt 2 hd 255 sec 126>
 /pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@0,0
 1. c3t2d0 <ATA-OCZ-VERTEX3-2.15-447.13GB>
 /pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@2,0
 2. c3t3d0 <ATA-OCZ-VERTEX3-2.15-447.13GB>
 /pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@3,0
 3. c3t4d0 <ATA-OCZ-VERTEX3-2.15-447.13GB>
 /pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@4,0
 4. c3t5d0 <ATA-OCZ-VERTEX3-2.15-447.13GB>
 /pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@5,0
 5. c3t6d0 <ATA-OCZ-VERTEX3-2.15-447.13GB>
 /pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@6,0
 6. c3t7d0 <ATA-OCZ-VERTEX3-2.15-447.13GB>
 /pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@7,0
Specify disk (enter its number):

SSD alguém? Aqui as specs da OCZ VERTEX3.

root@dc01fs01:~# zpool status pool1
 pool: pool1
 state: ONLINE
 scan: none requested
config:
NAME STATE READ WRITE CKSUM
 pool1 ONLINE 0 0 0
 raidz1-0 ONLINE 0 0 0
 c3t2d0 ONLINE 0 0 0
 c3t3d0 ONLINE 0 0 0
 c3t4d0 ONLINE 0 0 0
 c3t5d0 ONLINE 0 0 0
 c3t6d0 ONLINE 0 0 0
 c3t7d0 ONLINE 0 0 0
errors: No known data errors
root@dc01fs01:~# zpool list pool1
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
pool1 2.61T 1.18G 2.61T 0% 1.00x ONLINE -
root@dc01fs01:~# dladm show-link aggr0
LINK CLASS MTU STATE OVER
aggr0 aggr 9000 up net4 net5 net6 net7

Resumindo: Um storage ZFS só com drives SSD numa máquina com 96GB de RAM conectada na rede com um link agregado de 4GB usando jumbo frames.
Importante citar que switches e servidores ESXi também usando links agregados e jumbo frames. Será que vai ficar boa a performance do meu novo ambiente, não?

To emocionado hoje, viu?  Papai Noel chegou mais cedo.

Carnes exóticas

Depois do post sobre Montreal onde comentei sobre a carne de cavalo parei pra pensar nas comidas exóticas que já comi. Deixa eu compartilhar aqui o que já provei e ainda consigo me lembrar:

  • Avestruz
  • Búfalo
  • Canguru
  • Capivara
  • Cavalo
  • Jacaré
  • Javali
  • Pato
  • Veado

De todas acho que eu não comeria de novo só a Rã. Búfalo, javali e pato são os top.

E também tem a listinha de carnes que ainda quero provar mas ainda não tive oportunidade ou tempo ou dinheiro ou estômago para experimentar:

  • Alce
  • Cabra
  • Codorna
  • Coelho
  • Escargot
  • Faisão

Isso é a lista das que consigo pensar, mas sempre estou aberto a sugestões. Sei lá se castor é “comível”, mas se for num restaurante ou mercado e tiver castor eu mando pra dentro.

Alguma sugestão de coisas pra incluir na minha lista? Alguém já comeu tatu? Não sei se tenho vontade de experimentar, mas tenho curiosidade pra saber se é bom.