sexta-feira, 30 de outubro de 2009

Guia de referência cruzada dos gerenciadores de pacotes

Cada distribuição Linux adota um gerenciador de pacotes específico, os mais utilizados são as duplas deb/apt e rpm/yum.

Segue uma tabela de equivalência dentre alguns comandos destes gerenciadores. Os espaços em branco são para indicar ou a inexistência do comando ou o comando ainda não é conhecido por mim.

Por favor, quem souber mais, poste os comandos que faltam ou a correção para algum deles. Esta postagem será atualizada com frequência, assim que eu receber algo novo.

Data da última atualização: 30/10/2009
http://dan-scientia.blogspot.com/2009/10/guia-de-referencia-cruzada-dos.html






















































 dpkgrpmaptyum
SignificadoDebian PackageRPM Package Manager Advanced Packaging ToolYellow dog Updater, Modified
Extensão do pacote*.deb*.rpm*.deb*.rpm
Distros que adotam o empacotamentoDebian, Ubuntu, Linux Mint, KnoppixRed Hat, Fedora, Suse, CentOS, Mandriva, Yellow Dog, LinpusDebian, Ubuntu, Linux Mint, KnoppixRed Hat, Fedora, Suse, CentOS, Mandriva, Yellow Dog, Linpus
Configuração dos repositórios   /etc/apt/sources.list/etc/yum.conf ou /etc/yum.repos.d/
     
TarefaComando   
Instalar pacote do localdpkg -i <pacote>rpm -i <pacote> yum localinstall <pacote>
Atualizar pacote do local rpm -U <pacote> yum localupdate <pacote>
Atualizar pacote do repo   yum update <pacote>
Atualizar pacote se estiver instalado  rpm -F <pacote>  
Instalar pacote do repo  apt-get install <pacote>yum install <pacote>
Instalar grupo de pacotes   yum groupinstall <grupo>
Reinstalar um pacote   yum reinstall <pacote>
Atualizar grupo de pacotes   yum groupupdate <grupo>
Remover pacotedpkg -r <pacote>rpm -e <pacote>apt-get remove <pacote>yum remove <pacote>
Remover pacotes órfãos   package-cleanup --orphans
Remover pacotes solitários   package-cleanup --leaves
Remover grupo de pacotes   yum groupremove <grupo>
Listar arquivos do pacote instaladodpkg -L <pacote>rpm -ql <pacote> 
Listar arquivos do pacote não instaladodpkg-deb -c <pacote> rpm -qpl <pacote>  
Mostrar informações do pacote instaladodpkg -s <pacote>rpm -qi <pacote>apt-cache show <pacote>yum info <pacote>
Mostrar informações do pacote não instalado rpm -qpi <pacote>apt-cache show <pacote>yum info <pacote>
Mostrar novidades da versão do pacote  rpm -q --changelog <pacote>apt-listchanges <pacote> 
Mostrar detalhes sobre um grupo de pacotes   yum groupinfo <grupo>
Extrair arquivo do pacotedpkg-deb --extract <pacote>rpm2cpio <pacote>|cpio -vid  
Listar todos os pacotes instaladosdpkg -lrpm -qa yum list installed
Listar todos os pacotes disponíveis  apt-cache pkgnamesyum list
Listar os grupos de pacotes disponíveis   yum grouplist
Verificar integridade do pacote rpm -K <pacote>  
Verificar integridade dos arquivos instalados do pacote rpm -V <pacote>  
Verificar integridade dos arquivos instalados de todos os pacotesdebsumsrpm -Va  
Mostrar qual pacote pertence o arquivodpkg -S <arquivo>rpm -qf <arquivo>apt-file search <arquivo>yum provides <arquivo>
Listar todos os arquivos que acompanham o arquivo no pacote rpm -qdf <arquivo>  
Mostrar as dependências do pacote rpm -qpR <pacote>apt-cache depends <pacote>yum deplist <pacote>
Mostrar os pacotes que dependem do pacote rpm -q --whatrequires apt-cache rdepends <pacote>yum resolvedep <dependência>
Procurar expressão em pacotes do repositório  apt-cache search <expressão>yum search <expressão>
Procurar pacotes nos repositórios    
Exibir os repositórios de software configurados   yum repolist
Atualizar lista de pacotes dos repositórios  apt-get update(o yum faz automaticamente a cada uso)
Verificar novas atualizações   apt-get -s upgradeyum check-update
Atualizar pacotes  apt-get upgradeyum update
Atualizar todo o sistema  apt-get dist-upgrade yum upgrade
Remover pacote do cache local  apt-get cleanyum clean packages
Remover somente pacotes obsoletos do cache local  apt-get autoclean 
Remover cabeçalhos do cache local  apt-file purgeyum clean headers
Remover cabeçalhos obsoletos do cache local   yum clean oldheaders
Remover pacotes e cabeçalhos do cache local   yum clean all
Mostrar estado do cache  apt-cache stats 

terça-feira, 27 de outubro de 2009

Problema de Lógica: Degraus da escada rolante

Atenção, resposta após o problema!

João e Pedro desejam descobrir quantos degraus ficam visíveis em uma escada rolante. Para isso eles começaram a subir a escada juntos, sendo que João subia um degrau à cada passo, enquanto Pedro subia dois degraus à cada passo. O primeiro que chegou ao topo contou 28 degraus e o segundo contou 21 degraus. Com esses dados foi possível responder a questão. Quantos degraus ficam visíveis nesta escada rolante? Observação: a escada está em funcionamento.






RESPOSTA:






Pedro foi o primeiro à chegar ao topo pois ele avançava dois degraus à cada passo, então foi ele quem contou 28 degraus. Como a escada está em funcionamento, ajudando-os a subir, no tempo gasto para Pedro chegar ao topo a escada o ajudou x degraus, desta forma o número de degraus visíveis nesta escada é 28 + x.

Como Pedro avançou dois degraus por vez e contou 28, então ele deu 14 passos até o topo. Assim no momento que Pedro chegou ao topo, João havia avançado 14 degraus. Neste tempo a escada ajudou x degraus então até esta altura em que João se encontra existem 14 + x degraus visíveis.

João contou 21 degraus, se ele está no 14 então faltam 7 para ele chegar ao topo. Como 7 é metade de 14 então a escada ainda vai ajudar mais x/2 degraus. Desta altura até o topo existem 7 + x/2 degraus visíveis.

O número de degraus visíveis para João e para Pedro é o mesmo, então basta montar a equação:

28 + x = 14 + x + 7 + x/2
28 - 14 - 7 = x - x + x/2
7 = x/2
x = 14

Se x é igual a 14 então o número de degraus visíveis é 28 + x = 28 + 14 = 42 degraus. Ou, utilizando a contagem de João, o número de degraus visíveis é 14 + x + 7 + x/2 = 14 + 14 + 7 + 14/2 = 42 degraus.

domingo, 25 de outubro de 2009

A centróide de um polígono

A centróide é o ponto no interior de uma figura geométrica que define o centro geométrico. Se a figura geométrica possui um corpo de densidade uniforme então a centróide coincide com o centro de massa e se a figura geométrica está submetida a um campo gravitacional então este ponto coincide com o centro de gravidade.

A centróide de um polígono fechado, não sobreposto e definido por n vértices, pode ser calculado utilizando uma fórmula que recebe as coordenadas dos vértices e sua área. Então antes de se calcular a centróide por esta fórmula é necessário calcular a área do polígono.

O cálculo para determinar a área de um polígono utiliza uma fórmula bastante simples. Considere um polígono feito com segmentos de reta entre n vértices (xi,yi), com i=0 até n-1. O último vértice (xn,yn) é assumido para ser o mesmo que o primeiro (x0,y0), isto é, o polígono está fechado.

A área é dada pela fórmula:


O sinal da área pode ser usado para determinar a ordem dos vértices do polígono. Se o sinal é positivo então os vértices estão ordenados no sentido contra o relógio, de outra forma, se o sinal é negativo então os vértices estão ordenados no sentido do relógio.

Para os cálculos das coordenadas da centróide utilizam-se as fórmulas abaixo:


Vejamos então um exemplo. Abaixo é apresentado um gráfico com um polígono e seus vértices estão nas coordenadas (1,3),(7,2),(10,0),(11,5),(8,7) e (3,6). Vamos calcular as coordenadas da centróide.


Aplicando a fórmula do cálculo da área temos:

A = ((1*2-7*3) + (7*0-10*2) + (10*5-11*0) + (11*7-8*5) + (8*6-3*7) + (3*3-1*6))/2 = 39

A coordenada x da centróide é o resultado da expressão abaixo:

Cx = ((1+7)*(1*2-7*3) + (7+10)*(7*0-10*2) + (10+11)*(10*5-11*0) + (11+8)*(11*7-8*5) + (8+3)*(8*6-3*7) + (3+1)*(3*3-1*6))/(6*39) = 6,7

E a coordenada y da centróide é o resultado da expressão abaixo:

Cy = ((3+2)*(1*2-7*3) + (2+0)*(7*0-10*2) + (0+5)*(10*5-11*0) + (5+7)*(11*7-8*5) + (7+6)*(8*6-3*7) + (6+3)*(3*3-1*6))/(6*39) = 4,0

Assim a centróide deste polígono está na coordenada x = 6,7 e y = 4, já mostrado no desenho do polígono acima.

sábado, 24 de outubro de 2009

A onda sonora

O som, ou onda sonora, é definido como uma onda mecânica tridimensional, pois necessita de um meio material para se propagar e é capaz de se propagar em todas as direções. O som não se propaga no vácuo.

Nesta propagação acontece compressões e rarefações em propagação do meio, de forma longitudinal. Quando passa, a onda sonora não arrasta as partículas de ar, por exemplo, apenas faz com que estas vibrem em torno de sua posição de equilíbrio.

A audição humana consegue captar freqüências de ondas sonoras que variam entre 20Hz e 20000Hz, aproximadamente. São denominadas ondas de infra-som, as ondas de freqüência menor que 20Hz, e ultra-som as de freqüência acima de 20000Hz.

A velocidade do som depende, entre outros fatores, do meio de propagação. A velocidade nos sólidos é maior que no líquidos e nos líquidos é maior que nos gases. Na água é aproximadamente igual a 1450m/s e no ar à 20°C é 343m/s. A propagação do som em meios gasosos depende fortemente da temperatura do gás.

Como trata-se de onda então possui alguns conceitos. Em uma oscilação, a amplitude é a distância medida na vertical entre o ponto máximo ou mínimo e o de equilíbrio. A frequência é o número de oscilações por unidade de tempo e período é o tempo decorrido numa oscilação. O comprimento de onda é a distância percorrida pela onda durante uma oscilação.

A onda sonora possui algumas características como a sua altura, intervalo e timbre. A altura do som depende apenas de sua frequência, sendo definida como a diferenciação entre grave e agudo. Um tom de maior freqüência é agudo e um de menor é grave.

Os intervalos entre dois sons são dados pelo quociente entre suas frequências. Como o intervalo é um quociente entre duas medidas de mesma unidade, este não tem dimensão. Na música é dada uma nomenclatura para cada intervalo, por exemplo o intervalo acústico de uma quarta possui a razão de frequência 4:3 e as notas musicais de mesmo nome são separadas por um intervalo de uma oitava, 2:1.

O timbre de um som é a característica que permite diferenciar dois sons de mesma altura e mesma intensidade, mas que são emitidos por instrumentos diferentes. Assim uma música executada por um violino e um piano se diferencia pelo timbre.

A intensidade está relacionada com a amplitude da onda sonora e é a qualidade que nos permite caracterizar se um som é forte ou fraco e depende da energia que a onda sonora transfere. Uma maior amplitude é um som mais forte, com mais energia e ouvido a maior distancia da fonte sonora. Uma menor amplitude é um som mais fraco, com menos energia e ouvido a uma menor distancia. Conforme um observador se afasta de uma fonte sonora, a intensidade sonora ou nível sonoro diminui logaritmicamente.

A unidade utilizada para o nível sonoro é o Bel, mas como esta unidade é grande comparada com a maioria dos valores de nível sonoro utilizados no cotidiano, seu múltiplo usual é o decibel (dB), de maneira que 1B = 10dB.

Na propagação do som observam-se os fenômenos gerais da propagação ondulatória. Devido à sua natureza longitudinal, o som não pode ser polarizado e sofre os fenômenos de difração, reflexão, refração, interferência e efeito Doppler.

A difração é a propriedade de contornar obstáculos. Ao encontrar obstáculos à sua frente, a onda sonora continua a provocar compressões e rarefações no meio em que está se propagando e ao redor de obstáculos envolvidos pelo mesmo meio. Desta forma, consegue contorná-los. A difração depende do comprimento de onda.

A reflexão do som obedece às leis da reflexão ondulatória nos meios materiais elásticos. Quando uma onda sonora encontra um obstáculo que não possa ser contornado, ela "bate e volta". A reflexão do som ocorre em superfícies cuja extensão seja grande em comparação com seu comprimento de onda. A reflexão, por sua vez, determina novos fenômenos conhecidos como reforço, reverberação e eco.

Quando o som breve direto atinge o tímpano dos nossos ouvidos, ele o excita. A excitação completa ocorre em 0,1 segundo. Se o som refletido chegar ao tímpano antes do décimo de segundo, o som refletido reforça a excitação do tímpano e reforça a ação do som direto. É o fenômeno do reforço.

Na reverberação, o som breve refletido chega ao ouvido antes que o tímpano, já excitado pelo som direto, tenha tempo de se recuperar da excitação, a fase de persistência auditiva. Desta forma, começa a ser excitado novamente, combinando duas excitações diferentes. Isso ocorre quando o intervalo de tempo entre o ramo direto e o ramo refletido é maior ou igual a zero, porém menor que 0,1 segundo. O resultado é uma confusão auditiva, o que prejudica o discernimento tanto do som direto quanto do refletido.

No eco, o som breve refletido chega ao tímpano após este ter sido excitado pelo som direto e ter-se recuperado dessa excitação. Depois de ter voltado completamente ao seu estado natural, onde completou a fase de persistência auditiva, começa a ser excitado novamente pelo som breve refletido. Isto permite discernir perfeitamente as duas excitações.

A refração do som obedece às leis da refração ondulatória. Este fenômeno caracteriza o desvio sofrido pela frente da onda quando ela passa de um meio para outro, cuja elasticidade, ou compressibilidade para as ondas longitudinais, seja diferente. Um exemplo seria a onda sonora passar do ar para a água. Quando uma onda sonora sofre refração, ocorre uma mudança no seu comprimento de onda e na sua velocidade de propagação. Sua frequência, que depende apenas da fonte emissora, se mantém inalterada.

A interferência é a conseqüência da superposição de ondas sonoras. Quando duas fontes sonoras produzem, ao mesmo tempo e num mesmo ponto, ondas concordantes, seus efeitos se somam, mas se essas ondas estão em discordância, isto é, se a primeira produz uma compressão num ponto em que a segunda produz uma rarefação, seus efeitos se neutralizam e a combinação desses dois sons provoca o silêncio.

O efeito Doppler é um efeito descrito como uma característica observada em ondas emitidas ou refletidas por fontes em movimento relativo ao observador. Para ondas sonoras, o efeito Doppler constitui o fenômeno pelo qual um observador percebe freqüências diferentes das emitidas por uma fonte e acontece devido à velocidade relativa entre o a onda sonora e o movimento relativo entre o observador e/ou a fonte.

Supondo que o observador esteja em repouso e a fonte se movimente. Caso a fonte esteja se aproximando do observador, há um encurtamento do comprimento da onda, relacionado à velocidade relativa, e a freqüência real será menor que a observada. Caso a fonte esteja se afastando do observador, há um alongamento aparente do comprimento de onda.

Supondo que a fonte esteja em repouso e o observador se movimente. Caso o observador se aproxime da fonte, em um mesmo intervalo de tempo ele encontrará mais frentes de onda do que se estivesse parado. Assim a frequência observada deverá ser maior que a frequência emitida pela fonte. Neste caso, o comprimento de onda não é alterado, mas a velocidade de propagação é ligeiramente aumentada.

No caso em que o observador se afasta da fonte, em um mesmo intervalo de tempo ele encontrará menor número de frentes de onda do que se estivesse parado. Assim a frequência observada deverá ser menor que a frequência emitida pela fonte. A dedução do cálculo da frequência observada será análoga ao caso anterior, no entanto a velocidade de propagação é ligeiramente reduzida.

terça-feira, 20 de outubro de 2009

Grandeza, Razão e Proporção

Grandeza é uma relação numérica estabelecida com algo. Por exemplo, a altura de uma pessoa, o peso de um objeto, o volume de um tanque e a quantidade de peças são grandezas.

Razão é a divisão ou relação entre duas grandezas. Chama-se de razão entre dois números reais a e b ou a razão de a para b, com b diferente de zero, o quociente a/b ou a:b.

Na razão a/b ou a:b o número a é denominado antecedente e o número b é denominado consequente.

As razões podem ser entre grandezas da mesma unidade de medida, por exemplo a razão entre o número de meninos e o número de meninas, ou entre grandezas de unidades de medidas diferentes, por exemplo a razão entre a distância percorrida e o combustível consumido.

Uma razão bastante comum é a velocidade, dada pela divisão da distância percorrida pelo tempo gasto, por exemplo 80km/2h é igual a 40km/h. Outra razão bastante comum é a escala, que é a razão entre o comprimento considerado no desenho e o comprimento real correspondente, ambos medidos na mesma unidade, por exemplo 1:1000.

A razão inversa é o inverso da divisão, assim Ri = 1/R = 1/(a/b) = b/a. Duas razões são inversas entre si quando o produto delas é igual a 1, a/b x b/a = 1.

Proporção é a igualdade entre razões, ou seja, entre razões equivalentes. Por exemplo, se um carro faz 12km por litro de combustível, então para rodar 24km é preciso 2 litros de combustível, 12/1 = 24/2.

A proporção possui algumas propriedades, uma é se multiplicarmos em cruz os resultados serão iguais. O produto dos meios é igual ao produto dos extremos:

a/b = c/d  =>  a.d = b.c


Quando somamos ou subtraímos termo a termo a razão se mantém. A soma dos antecedentes está para a soma dos consequentes, assim como cada antecedente está para o seu consequente, e a diferença dos antecedentes está para a diferença dos consequentes, assim como cada antecedente está para o seu consequente:

a/b = c/d  =  (a+c)/(b+d)  =  (a-c)/(b-d)


A soma dos dois primeiros termos está para o 2º (ou 1º) termo, assim como a soma dos dois últimos está para o 4º (ou 3º):

a/b = c/d  =>  (a+b)/a = (c+d)/c  =>  (a+b)/b = (c+d)/d


A diferença dos dois primeiros termos está para o 2º (ou 1º) termo, assim como a diferença dos dois últimos está para o 4º (ou 3º):

a/b = c/d  =>  (a-b)/a = (c-d)/c  =>  (a-b)/b = (c-d)/d


O produto dos antecedentes está para o produto dos consequentes, assim como o quadrado de cada antecedente está para quadrado do seu consequente:

a/b = c/d  =>  (a.c)/(b.d) = a²/b² = c²/d²


Uma proporção múltipla é uma série de razões iguais, assim a/b = c/d = e/f.

Duas grandezas a e b são diretamente proporcionais quando a razão a/b entre os valores de a e do correspondente valor b é sempre constante, a/b = k. Quando o aumento de uma implica no aumento da outra, quando a redução de uma implica na redução da outra:

  a  b  a/b
4 2 2
6 3 2
8 4 2

4/2 = 6/3 = 8/4 = 2

4/6 = 2/3 => 4.3 = 6.2 = 12


E duas grandezas a e b são inversamente proporcionais quando o produto a.b entre os valores de a e o correspondente valor b é sempre constante, a.b = k. Quando o aumento de uma implica na redução da outra, quando a redução de uma implica no aumento da outra:

  a  b  a.b
6 1 6
3 2 6
1 6 6

6.1 = 3.2 = 1.6 = 6

6/3 = 1/(1/2) => 6/3 = 2/1 => 6.1 = 3.2 = 6


Para resolver problemas que envolvam duas ou mais grandezas direta ou inversamente proporcionais utiliza-se um sistema de cálculo denominado regra de três. O problema que envolve somente duas grandezas é chamado de regra de três simples e o problema que envolve três ou mais grandezas é chamado de regra de três composta.

Na solução de problemas deste tipo devemos igualar a razão da grandeza que queremos descobrir com as razões restantes, aplicando nestas outras a propriedade do produto dos antecedentes para o produto dos consequentes, nos casos de regra de três composta.

Mas antes é necessário estabelecer a direção de proporcionalidade entre cada grandeza e a grandeza a ser determinada. Por exemplo:

Problema: Seis operários trabalhando oito horas por dia concluem o trabalho em cinco dias. Dois operários trabalhando seis horas por dia irão concluir o trabalho em quantos dias?

Operários  Horas/Dia   Dias
6 8 5
2 6 x


Comparando a coluna Operários com Dias, com a diminuição do número de operários, a quantidade de dias deve aumentar, então trata-se de uma relação inversamente proporcional. Nesse caso, deve-se inverter a coluna dos operários.

Comparando a coluna Horas/Dia com Dias, com a diminuição das horas diárias, a quantidade de dias deve aumentar, então trata-se também de uma relação inversamente proporcional. Da mesma forma, deve-se inverter a coluna das horas/dia.

O cálculo da equação fica assim:

5/x = (2*6)/(6*8)
5/x = 12/48
x/5 = 48/12
x = 4*5
x = 20


Resposta: O trabalho será concluído em 20 dias.

quinta-feira, 8 de outubro de 2009

Pesquisa binária em vetor ordenado

A pesquisa ou busca binária é um algoritmo de pesquisa em vetores bastante eficiente. Aplicando somente quando o vetor está ordenado, o algoritmo realiza sucessivas divisões no espaço de pesquisa comparando o elemento procurado com o elemento do meio do vetor.

Se o elemento do meio do vetor for igual ao elemento procurado, a pesquisa termina com sucesso retornando a posição do elemento. Caso contrário, se o elemento do meio vier antes do elemento procurado, então repete-se a pesquisa para a metade posterior ao meio do vetor. E se o elemento do meio vier depois do elemento procurado, repete-se a pesquisa para a metade anterior ao meio do vetor.

No exemplo de código a seguir, em linguagem C, é apresentado duas versões do algoritmo, uma função com a versão iterativa e outra função com a versão recursiva. Quando o elemento procurado não for encontrado é retornado o valor -1.

A variável esq armazena a primeira posição mais à esquerda, o início do vetor do espaço de pesquisa e, do mesmo modo, a variável dir armazena a última posição mais à direita, o fim do vetor do espaço de pesquisa. Acompanhe o código:

#include <stdio.h>
#include <stdlib.h>

int pesqbit(int *vetor, int tamanho, int valor) { // versão iterativa.

int esq = 0;
int dir = tamanho - 1;
int meio;

while (esq <= dir) {

meio = (esq + dir)/2;

if (vetor[meio] == valor) {
return meio;
} else if ((vetor[meio] < valor) && (esq < dir)) {
esq = meio + 1;
} else if ((vetor[meio] > valor) && (esq < meio)) {
dir = meio - 1;
} else {
return -1;
}
}

}

int pesqbre(int *vetor, int esq, int dir, int valor) { // versão recursiva.

int meio = (esq + dir)/2;

if (vetor[meio] == valor) {
return meio;
} else if ((vetor[meio] < valor) && (esq < dir)) {
return pesqbre(vetor, meio+1, dir, valor);
} else if ((vetor[meio] > valor) && (esq < meio)) {
return pesqbre(vetor, esq, meio-1, valor);
} else {
return -1;
}

}

int main() { // exemplo de uso com as chamadas para as funções.

int valor;
int vetor[] = {1,2,3,4,5,6,7,8,9,10,11,12};

printf("Digite um numero: ");
scanf("%d", &valor);

printf("(Versao Iterativa) A posicao e: %d\n", pesqbit(vetor, sizeof vetor / sizeof (int), valor));
printf("(Versao Recursiva) A posicao e: %d\n\n", pesqbre(vetor, 0, (sizeof vetor / sizeof (int))-1, valor));

}

Como chegar na fórmula de resolução da equação de 2º grau

Embora no Brasil a fórmula de resolução da equação de 2º grau seja atribuída ao matemático indiano Bhaskara (1114-1185), ela foi desenvolvida alguns séculos depois pelo matemático francês François Viète (1540-1603).

Na época de Bhaskara a resolução tinha a forma de prosa, como uma receita que ia descrevendo as operações da resolução do problema. Assim, os indianos usavam a seguinte regra:

"Multiplique ambos os membros da equação pelo número que vale quatro vezes o coeficiente do quadrado e some a eles um número igual ao quadrado do coeficiente original da incógnita. A solução desejada é a raiz quadrada disso."

Bhaskara conhecia a regra acima, porém a regra não foi descoberta por ele. A regra já era do conhecimento de, no mínimo, o matemático Sridara, que viveu há mais de 100 anos antes de Bhaskara.

História à parte, veja como aplicando a regra na equação ax² + bx + c = 0 se chega à fórmula que conhecemos como fórmula de Bhaskara:

A equação do 2º grau:


Multiplique ambos os membros da equação pelo número que vale quatro vezes o coeficiente do quadrado:


Some a eles um número igual ao quadrado do coeficiente original da incógnita:


A solução desejada é a raiz quadrada disso:


sexta-feira, 2 de outubro de 2009

O estado obsoleto das distros Linux

Existe um interessante estudo estatístico sobre o estado de atualização das distribuições Linux. Útil para nos mostrar o quanto uma determinada distribuição está desatualizada nas versões de seus pacotes.

Vale lembrar que isto não quer dizer que a distribuição está ruim ou cheia de falhas pois nem sempre a versão mais nova é a mais estável, apenas nos mostra o quão atual está a distribuição.

O OpenSourceWatershed é um projeto com o objetivo de entender o relacionamento entre as distribuições e os componentes individuais de software. É a base para um estudo maior sobre as distribuições e suas evoluções, a distrologia.

Atualmente a análise estatística está sendo feita com a observação de vinte pacotes, que podemos considerar como os principais em uma distro. Dentre eles estão o Kernel, o GCC, a GlibC, o Gnome, o KDE, o Firefox, o Xorg, o Httpd e o PostgreSQL. E também por enquanto observando apenas dez distros, dentre elas as principais.

As três formas de análise são a porcentagem de pacotes obsoletos, a média do número de versões mais novas dos pacotes do que a fornecida na distro e a média de tempo que a distro demora para atualizar os pacotes.

A tabela com as versões atuais das distros é apresentada abaixo:

                                             Média        Média
Rank Distro Codinome % Obsoleto Nov. Vers. de atraso
1 arch 40,0% 1,35 2 sem
2 fedora 11 55,0% 1,65 8 sem
3 freebsd 8 66,66% 3,73 31 sem
4 slackware 13.0 82,35% 4,29 15 sem
5 gentoo 85,0% 6,10 19 sem
6 opensuse 11.1 85,0% 7,35 35 sem
7 funtoo 85,0% 6,05 18 sem
8 ubuntu jaunty 90,0% 6,05 22 sem
9 sabayon 4 94,73% 6,58 29 sem
10 debian lenny 100,0% 17,15 53 sem


Observando apenas as 4 distros bases (Fedora, Slackware, Suse e Debian), podemos perceber que a Fedora está na frente com apenas 55% dos pacotes sendo obsoletos, demorando em média 8 semanas para atualizar um pacote. E como era de se imaginar, pois sabemos que prevalece a estabilidade, a distro Debian está com 100% dos pacotes obsoletos, em uma média de 17,15 versões atrás, das versões atuais dos pacotes.

Quer saber mais? Acompanhe este estudo acessando o endereço: http://oswatershed.org/