Para brincar com planetas, luas e estrelas

Standard

Já tentou explicar a um menino de 5 anos como funciona o sistema solar? E tentei. Foi difícil. Na época, acabei fazendo um programinha em c para gira um ponto em torno de outro em uma trajetória elíptica. Levou uma hora ou duas. Chamei o terrorista mirim e apresentei, todo prosa, meu modelo de sistema solar. Ele, do alto de toda a sua sabedoria perguntou: E onde está a lua? Foi nessa hora fomos brincar de massinha. Massinha é bom.

Hoje, finalmente, tive minha vingança. Graçax a Unversidade do Colorado em Boulder chamei a crionça e mostrei um sistema solar funcionando, com 4 corpos, todos em movimento, com todos os efeitos da gravidade e não me custou nem uma hora.

O Jogo, além de divertido e interessante está disponível em um servidor rodando linux….:) Para jogar clique aqui.

Web sites mais rápidos, comprimir não e suficiente

Standard

Há alguns dias publiquei um pequeno artigo sobre como configurar o Apache2 para servir conteúdo comprimido. Ação necessária mas não suficiente para aumentar a velocidade dos seus sites. Existem muitas outras ações que você pode tomar para fazer seus sites mais rápidos e mais eficientes. Uma delas é usar o mod_expires.

Apache Chief
photo credit: Stinkie Pinkie

Todas as transções entre o navegador do seu cliente e seu servidor web são feitas através de requisões Http. A parte mais importante destas requisições são os headers. Uma coleção de “comandos” que são utilizados para controlar o processo de transferência de dados. Entre estes comandos nos interessa o expire.

O Expire server para informar a todos os serviços de cache no caminho a validade de um determinado arquivo forçando o cache a sevir os conteúdos que ainda não expiraram. Deixe-me colocar isto um pouco melhor.

Sua página usa duas imagens, um background que muda uma vez por ano e um pequeno gŕafico que muda todos os dias. Você configura o header destes requests de forma a informar essa taxa de atualização aos navegadores dos seus usuários. Assim, todas as vezes que ele acessar sua página o navegador só emitirá a requisição do gráfico. Diminuíndo sua banda, carga no servidor e aumentando a velocidade total de navegação do seu usuário.

Deu para entender? Essa é a idéia em linhas gerais. De uma forma muito, muito simples.

Para habilitar essa dádiva do Http você precisa habilitar o mod_expires. No ubuntu digite:

sudo a2enmod expire

Pronto! Agora acabou….

Depois crie um arquivo com suas opções e expiração em /etc/apache2/mods-available/expires.conf. O meu, que uso há anos é:

[php]
<IfModule mod_expires.c>

# ExpiresDefault "access plus 2 months"

ExpiresByType image/x-icon "access plus 2 days"
ExpiresByType image/png "access plus 2 days"
ExpiresByType image/jpg "access plus 2 days"
ExpiresByType image/gif "access plus 2 days"
ExpiresByType image/jpeg "access plus 2 days"
ExpiresByType application/pdf "access plus 2 days"
ExpiresByType audio/x-wav "access plus 2 days"
ExpiresByType audio/mpeg "access plus 2 days"
ExpiresByType video/mpeg "access plus 2 days"
ExpiresByType video/mp4 "access plus 2 days"
ExpiresByType video/quicktime "access plus 2 days"
ExpiresByType video/x-ms-wmv "access plus 2 days"
ExpiresByType application/x-shockwave-flash "access 2 days"
ExpiresByType application/css "access 2 days"

ExpiresByType text/css "access plus 2 days"
ExpiresByType text/javascript "access plus 2 days"

</IfModule>
[/php]

Como você pode ver meus sites estão sempre em um grande nível de desenvolvimento. Se esse não for o seu caso pode mudar a palavra days por months ou years. Você pode ler mais sobre essa configuração aqui.

Calma…. ainda não acabou. 🙂 Falta reiniciar o apache2.

sudo /etc/init.d/apache2 restart

O melhor FireWall do mundo

Standard

Já configurou um iptables cuidadosamente? Acha que sua rede está segura? Pense melhor…

Inside our bodies... well, male ones, anyway
Creative Commons License photo credit: Torley

1. Uma célula humana contém 75MB de informação genética;
2. Um espermatozóide contém a metade, o que significa 37,5 MB;
3. Um mililitro de sêmen contém 100 milhões de espermatozóides;
4. Uma ejaculação média dura 5 segundos e 2,24 ml de sêmen;

5. Isto significa que a produção dos membros de um homem igual a 37,5 MB x 100.000.000 x 2,25) / 5 = 1.687.500.000.000.000 bytes / segundo = 1,6875 Terabytes / segundo.

O óvulo feminino suporta esse ataque DDoS de 1,5 terabytes por segundo, e é permitida a passagem apenas de um único pacote de informação… o que faz com que a mulher seja considerada o melhor firewall do mundo.

A má notícia é que, este único pedaço de informação que passa, faz o sistema travar por cerca de nove meses, mas todo firewall tem seu bug, né?

Colaboração do amigo Flagner, infelizmente o verdadeiro autor do texto é desconhecido.

IBM demonstra o transistor de 100GHz

Standard

A IBM divulgou essa semana, em um artigo da Science Magazine,  que obteve sucesso na criação de um transistor de grafeno capaz de operar a 100GHz.

O transistor demonstrado é capaz de comutar entre ligado e desligado 100 bilhões de vezes em cada segundo ou, alguma coisa como: 10 vezes mais rápido que o transistor de silício mais rápido que temos hoje.

O grafeno é uma folha de aátomos de carbono arranjados de forma hexagonal com apenas um átomo de espessura. Vou escrever de novo: apenas um átomo de espessura. O grafite, uma das forma mais comuns do carbono é composto de um número enorme de folhas de grafeno empilhadas. Esse material, o grafeno, está revolucionando a ciencia de materiais como conhecemos. Todos os dias aparecem novas aplicações para esse material que já foi considerado o material mais forte do mundo.

O transistor da IBM abre uma nova fronteira para a eletrônica mas ainda é um protótipo não comercial. Os pesquisadores ainda têm que resolver alguns problemas causados pela grande sensibilidade apresentada pelo material a variações ambientais.

Notícia Original

Sites mais rápidos com conteúdo comprimido usando Apache2 e o mod_deflate

Standard

rSe pudéssemos colocar todas as mazelas da internet em uma única expressão essa seria: Limitação de Banda.

吉祥物大集合
Creative Commons License photo credit: tutchiio

Para ajudar um pouco nesse problema podemos configurar o servidor Apache2 para comprimir tudo que for interessante no lado do servidor e enfiar os arquivos comprimidos na rede.

Do lado do cliente, os navegadores darão seu jeito para descomprimir e colocar tudo no lugar certo. Conteúdo lindo e faceiro.

Para fazer isso, precisamos habilitar um módulo extra: O mod_deflate.

O uso deste módulo permite que você comprima arqivos de texto (html,javascript, css)  com fatores de compressão da órdem de 40%.
Essa compressão causa um pequeno aumento de carga nas cpus do servidor. Fique tranquilo quanto a isso, o ganho de banda mais que compensa o aumento de carga.

Habilitar o mod_deflate no ubunto é simples. Primeiro abra uma sessão no terminal, com direitos de root e digite:

a2enmod deflate

Este comando tão complexo, habilitará o mod_deflate e pronto. Não fique tão contente. Nem tudo são flores e ainda não acabamos. Para que o mod_deflate funcione, você terá que reiniciar o apache. Então digite:

/etc/init.d/apache2 restart

Nem todo mundo tem a graça e a felicidade de usar o Ubuntu ou o Debian para estes não tão felizes, será necessário editar o arquivo de configuração do Apache (http.conf, apache.conf, ou coisa parecida)  e incluir a seguinte linha:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

Calma! Ainda não acabou.

Você ainda precisa criar ou editar o arquivo deflate.conf que fica em /etc/apache2/mods-available/ e determinar o que deve ou não ser comprimido. O meu arquivo, que uso a anos sem pestanejar, segue:

[php]
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/x-httpd-eruby

DeflateCompressionLevel 9

# Netscape 4.X has some problems
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Setup custom deflate log
# DeflateFilterNote Input instream
# DeflateFilterNote Output outstream
# DeflateFilterNote Ratio ratio
#
# LogFormat ‘"%r" %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
# Example of log file (add to vhosts)
# CustomLog logs/deflate_log DEFLATE
</IfModule>
[/php]

Você pode tirar os comentários da última parte para criar um log escial só para o deflate.