sábado, 30 de maio de 2009

Problema de Lógica: Pedras brancas e pretas

Atenção, resposta logo abaixo. Cuidado com os olhos!

Um mercador que devia dinheiro para um agiota, passeava com sua filha por uma estrada cheia de pedras brancas e pretas, quando de repente cruzou com o agiota em sua frente. O agiota vendo a filha do mercador propôs um jogo e a dívida seria perdoada se o mercador simplesmente aceitasse jogar:

- O jogo consiste em colocar duas pedras, uma preta e outra branca, dentro de uma sacola. Em seguida sua filha retirará uma pedra. Se a pedra for preta ela se casará comigo, caso contrário ela estará livre.

O mercador aceitou o jogo. Mas o agiota trapaceou e colocou duas pedras pretas dentro da sacola. Entretanto, a filha do mercador percebeu a trapaça e usou o fato de haver apenas pedras pretas dentro da sacola. Ela fez alguma coisa e se saiu muito bem, o que ela fez para não se casar?





RESPOSTA




A filha percebe a trapaça e, quando pega uma pedra da sacola, deixa-a cair na rua cheia de outras pedras. Em seguida, chama a atenção dos presentes para o fato de que a pedra que ela pegou deve ser da cor oposta à que restou na sacola.

sexta-feira, 29 de maio de 2009

Contando as estrelas

A maioria das estrelas não podem ser vistas a olho nu, o olho humano sem ajuda ótica só consegue enxergar um astro de até sexta magnitude, portanto sem alcançar alguma estrela além da nossa galáxia. Desta forma torna-se necessário o uso dos telescópios para poder enxergar mais adiante.

O universo visível é o espaço máximo no qual o homem pode enxergar com o uso do mais potente telescópio e este alcance vem aumentando com os avanços da tecnologia.

Em 2004 o centro de operações do telescópio espacial Hubble divulgou uma imagem de uma observação do espaço profundo. Esta observação detectou objetos de até 30ª magnitude e foi chamada de "Hubble Ultra Deep Field" (HUDF).

O telescópio Hubble capturou 800 exposições de um mesmo ponto distante por durante quatro meses, realizando 400 órbitas no planeta, com duas exposições por órbita. Isto aconteceu entre 24 de setembro de 2003 à 16 de janeiro de 2004 e acumulou um total de 11,3 horas de tempo de exposição.

Dentro deste campo ultra profundo foram coletadas aproximadamente 10.000 galáxias. Toda a área da esfera celeste é 12,7 milhões de vezes maior do que este minúsculo campo observado pelo telescópio Hubble. Sendo assim, se extrapolar esta contagem para todo o céu, terá uma estimativa de 127 bilhões de galáxias.

Uma galáxia típica tem aproximadamente 200 bilhões de estrelas. Multiplicando pelo número de galáxias tem-se um total de 25,4 sextilhões (2,54x10^22) de estrelas. Lembre-se, isto enxergando objetos até 30ª magnitude.

Quer ver todos os zeros?

25.400.000.000.000.000.000.000

Segue a imagem capturada pelo telescópio Hubble:

quarta-feira, 27 de maio de 2009

Chances de existir vida inteligente extraterrestre

No universo existem pelo menos 127 bilhões de galáxias, mas digamos que somente 0,01% sejam semelhantes à Via Láctea. Cada galáxia tem em média 200 bilhões de estrelas, mas digamos que somente 0,01% sejam semelhantes ao nosso Sol. Das estrelas semelhantes ao Sol digamos que somente 0,01% tenham planetas semelhantes à Terra. E dos planetas semelhantes à Terra digamos que somente 0,01% tenham ambiente favorável à vida. Então, no universo há pelo menos 2,54 milhões de planetas com alguma chance de existir vida inteligente.

terça-feira, 26 de maio de 2009

Problema de Lógica: Onde está o pai?

Atenção, resposta logo abaixo, cuidado com seus olhos!


Uma mãe é 21 anos mais velha que o seu filho. Daqui a 6 anos, o filho terá um quinto da idade da mãe. Onde está o pai?





RESPOSTA




A idade atual do filho é x
A idade atual da mãe é y = x+21
Daqui 6 anos: x+6=(y+6)/5 ou 5(x+6)=y+6

5x + 30 = x + 21 + 6
4x = -3
x = -3/4

O filho tem a idade de -3/4 anos, ou seja, -9 meses!
Conclusão: O pai está em cima da mãe!

segunda-feira, 25 de maio de 2009

Conhecendo um telescópio

O telescópio ótico é um instrumento que permite estender a capacidade dos olhos humanos de observar e mensurar objetos longínquos. Permite ampliar a capacidade de enxergar longe, como seu nome indica, do Grego "tele" = longe + "scopio" = observar, através da coleta da luz dos objetos distantes, da focalização dos raios de luz coletados em uma imagem ótica real e sua ampliação geométrica.

Os principais tipos de telescópios com relação à ótica utilizada são: telescópio refrator, telescópio refletor e telescópio catadióptrico.

O telescópio refrator, também chamado de luneta, é um aparelho que utiliza uma lente convergente na função de elemento primário de captura da luz ou objetiva. Este tipo de telescópio forma uma imagem final invertida.

O telescópio refletor, também conhecido como Newtoniano, usa uma combinação de espelhos curvos e planos para refletir a luz e formar uma imagem. Um espelho primário esférico côncavo é o elemento ótico básico do telescópio refletor. Um espelho secundário plano reflete a luz para o plano focal no lado do topo do tubo do telescópio. É um dos designs mais simples e baratos, e é popular entre amadores e projetos feitos em casa.

O telescópio catadióptrico emprega ambos elementos, espelho e lente, resultando em uma configuração que proporciona telescópios pequenos e portáteis e com ótimo poder de ampliação. Os tipos mais comuns de catadióptricos são Cassegrain, Schmidt-Cassegrain e Maksutov-Cassegrain.

A ótica de um telescópio é composta por duas partes básicas, a objetiva que pode ser uma lente ou espelho ou combinação de ambos, que ficam direcionados para o objeto da observação, e a ocular que é uma lente ou grupo de lentes que tem a função de levar a imagem da objetiva aos olhos.

A montagem de um telescópio deve ser firme e estável e permitir movimentos suaves e facilidade de posicionamento em qualquer parte do céu. Há dois tipos básicos de montagem, a altazimutal e a equatorial.

A montagem altazimutal, mais simples e conhecida como montagem Dobsoniana, proporciona um movimento de rotação da base com eixo perpendicular ao solo, para o azimute, e o movimento basculante do tubo do telescópio, para a altura.

A montagem equatorial, mais complexa e requer posicionamento correto, sendo que um dos eixos de movimentação deve ficar paralelo com o eixo de rotação da Terra, assim é possível atuando apenas em um dos controles acompanhar a trajetória do objeto no céu.

As características óticas básicas dos telescópios são o diâmetro da objetiva (D), a distância focal (f), a razão de abertura (F), o aumento (A), a pupila de saída (E), o poder de resolução (q), a magnitude limite (M) e o campo visual (C).

O diâmetro da objetiva ou abertura do telescópio é a medida do diâmetro da lente ou do espelho principal e é dada em milímetros. É a característica mais importante. Esta medida também nos dá o aumento máximo do telescópio que é 2,4 vezes o diâmetro.

A distância focal é a distância entre a lente ou espelho e o ponto focal, que é o ponto onde os raios de luz que incidem na óptica convergem. É dada em milímetros.

A razão de abertura ou razão focal determina a quantidade de luz que o instrumento será capaz de capturar e é a distância focal da objetiva dividida pelo seu diâmetro (F = f/D). Pode-se dizer que é a segunda característica mais importante. Para observação de objetos de pouca luminosidade é necessária uma abertura maior. Em geral quanto maior a relação focal melhor será a observação de objetos muito distantes.

O aumento é dado, em vezes, pela divisão da distância focal da objetiva pela distância focal da ocular (A = f/f').

A pupila de saída é o tamanho da imagem de saída, em milímetros, e é dada pela divisão do diâmetro da objetiva pelo aumento (E = D/A) ou pela divisão da distância focal da ocular pela razão de abertura (E = f'/F). No olho humano o diâmetro da pupila é cerca de 6mm quando dilatada (em ambiente escuro) e 2mm em ambiente claro, assim, a imagem gerada pelo telescópio terá um melhor aproveitamento quando for próxima ao diâmetro da pupila dos olhos.

O poder de resolução é o poder separador do telescópio e determina a mínima separação angular entre dois objetos, em segundos de arco, para que estes possam ser visualizados com o instrumento. A resolução é dada por q = 120/D.

A magnitude limite indica o menor brilho (maior valor de magnitude aparente) que um telescópio pode captar. Podemos calcular usando a seguinte fórmula: M = 7.1 + 5(log D). Obs: diâmetro da objetiva do telescópio em cm.

O campo visual representa a área aparente do céu que vemos pelo telescópio. Quanto menor o aumento do telescópio maior será o campo visual. O campo visual, em graus, pode ser obtido com a divisão do campo da ocular pelo aumento (C = O/A).

As características fixas do telescópio, ou seja, as quais não poderão ser alteradas durante a observação são as características da objetiva (diâmetro, distância focal e razão) que por sua vez influenciam no poder de resolução e na magnitude limite. Todas as outras características, que dependem da ocular, tornam-se variáveis pois nos telescópios é possível a troca da ocular.

As escolhas do tipo, da montagem e das características óticas de um telescópio dependem da aplicação e do tipo de observação. Por exemplo, para a observação de objetos celestes distantes, com magnitude baixa ou muito próximos em ângulo, recomenda-se um maior diâmetro para a objetiva. Se deseja acompanhar o movimento do astro, para fotografia por exemplo, recomenda-se um com montagem equatorial. Se a necessidade é um equipamento curto, deve-se optar por um com distância focal baixa ou, melhor ainda, do tipo catadióptrico. Na escolha do telescópio nunca se deve valorizar somente o aumento, pois em qualquer tipo de telescópio, quanto maior for a abertura (diâmetro) mais você verá.

sábado, 23 de maio de 2009

Soma de Gauss

Carl Friedrich Gauss foi o maior de todos os matemáticos e talvez o mais bem-dotado gênio de que se tenha notícia. O nome de Gauss está ligado a quase tudo que a matemática do século XIX criou em matéria de idéias científicas originais. Sua extraordinária habilidade com números ficou clara desde tenra idade, quando Gauss corrigiu um erro nas contas da folha de pagamento de seu pai tendo apenas 3 anos.

Conta-se que Gauss, quando tinha aproximadamente 9 anos de idade, surpreendeu seu professor. O professor querendo manter silêncio na sala de aula, pediu aos alunos que somassem todos os números inteiros de 1 a 100, isto é, 1+2+3+ ... +98+99+100. Porém em poucos minutos Gauss deu a resposta correta com o seguinte raciocínio:

Gauss escreveu a série 1+2+3+ ... +98+99+100, em seguida escreveu a série invertida 100+99+98+ ... +3+2+1. Somando termo a termo das duas séries ele obteve 101+101+101+ ... +101+101+101. Verificou que ficou com 100 parcelas de 101, ou seja 100 x 101 = 10100. Como usou duas vezes a seqüência de 1 a 100, cada parcela da série 1+...+100 entrou duas vezes na soma, então dividiu o total por dois, ou seja, 10100 / 2 = 5050.

Assim, em poucos minutos, mostrou a resposta correta surpreendendo o professor e frustando-o em pensar que teria silêncio na turma durante um longo tempo.

De forma intuitiva, Gauss resolveu o problema com a fórmula que usamos normalmente, que é:

Sn = [n*(n + 1)] / 2

S100 = [100*(100+1)] / 2 = 5050

sexta-feira, 22 de maio de 2009

Conselhos para um usuário doméstico

Para quem não depende exclusivamente ou não utiliza com freqüência algumas das soluções Microsoft ou outro aplicativo que tenha somente a versão para Windows, eis alguns conselhos que podem ser interessantes para quem achar conveniente.

Faça seu computador pessoal ter instalados o Windows e o Linux em dual boot. Esta configuração permite que seja escolhido qual o sistema que deseja carregar quando ligar o computador.

Segue alguns argumentos a favor disso:

1º) Muitos usuários na sua residência desejam uma maior privacidade e ou personalização em seu ambiente?

O Linux permite isso com eficiência total visto que é um sistema multi-usuário por excelência pois herdou esta característica do Unix. No ambiente Linux cada usuário está completamente protegido com seus arquivos pessoais, outros usuários não conseguem ter acesso, e também cada usuário pode configurar seu ambiente desktop de acordo com o seu gosto.

2º) Está utilizando o Windows com um usuário com privilégios de administrador?

No ambiente Windows muitos aplicativos não funcionam adequadamente quando a conta de usuário não tem privilégios de administrador, porém desta forma o seu sistema fica extremamente vulnerável a perda de configuração, perda ou corrompimento dos arquivos e outros desastres que podem por tudo a perder. No Linux já é diferente, cada usuário tem somente a permissão restrita de um usuário, não possuindo quaisquer acessos aos arquivos e a configuração do sistema. E mesmo assim os aplicativos ficam totalmente funcionais, podendo ser utilizados sem qualquer receio de prejudicar todo o sistema.

3º) Medo de baixar um arquivo, ler um e-mail ou de navegar pela internet e pegar vírus?

A grandiosa maioria dos vírus existentes são para o sistema Windows, muitíssimo pouco existe para Linux. Não só por isso mas como um sistema Linux é operado em modo restrito de usuário, qualquer coisa que aconteça só afetará os arquivos deste usuário. E caso queira baixar novos aplicativos para instalar em seu computador, 99,9% das vezes serão pacotes disponibilizados nos repositórios oficiais da sua distribuição Linux ou diretamente pelo site da empresa que o desenvolveu, ou seja, a confiança é total quanto a procedência dos arquivos.

4º) Cansado de travamentos, de instabilidades e ter que reiniciar o sistema com freqüência?

O Linux é um sistema que permite um uptime bastante longo, há relatos de máquinas que ficaram meses sem precisar de um único reboot. E mesmo caso uma aplicação de usuário trave o controle do teclado e do mouse, é possível pela rede acessar o seu computador e derrubar o aplicativo problemático.

5º) Está ou pretende atuar na área na computação, ou no seu trabalho exige o conhecimento em informática?

Neste quesito torna-se mais que obrigação ter o conhecimento de outros sistemas operacionais. Existem uma série de aplicativos equivalentes entre todos os sistemas e saber produzir em todos é uma qualidade bastante favorável.

6º) Seu sistema e seus aplicativos andam desatualizados, é complicado o processo de atualização?

No Windows cada aplicativo tem o seu método particular de atualização, não existe um procedimento padrão e automatizado para todas aplicações, o que torna o processo cansativo. No Linux é diferente, graças a um eficiente sistema de gerenciamento de pacotes, todo o processo de atualização pode ser realizado de uma forma bastante otimizada, inclusive a instalação ou remoção de um aplicativo.

7º) Possui softwares piratas em seu computador, às vezes inclusive o Windows?

Saiba que pirataria é crime, sob pena de prisão. Provavelmente se somar o preço de todos os aplicativos instalados em seu Windows, certamente será um valor muito alto tornando difícil a regularização do seu computador. Saiba então também que o Linux é um software gratuito, como também a grande maioria dos aplicativos disponíveis para este sistema.

8º) De vez em quando gosta de um joguinho ou necessita utilizar um aplicativo que só tenha versão para Windows?

Por isso dei esta sugestão de dual boot. Para caso precise, reinicie a máquina e carregue o sistema Windows em seu computador. É um procedimento bem prático e indolor.


Basicamente é isso, estes são os meus conselhos a favor da utilização do Linux. Informo também que para toda mudança terá um período de adaptação para que se aprenda o novo ambiente, mas garanto que não é difícil.

Na questão do dual boot, saiba que é possível através da virtualização ter o Windows rodando dentro do seu ambiente Linux. Assim não será necessário reiniciar a máquina para mudar entre os sistemas, ficando tudo no mesmo ambiente. É muito prático, só não recomendável para aplicações pesadas, como jogos por exemplo.

Não tenha medo, no Linux é possível fazer tudo o que existe de trivial em um uso de computador doméstico, como acessar a internet, MSN, e-mail, pacote office, multimídia etc. Tudo de uma forma muito segura e estável. Sua vida não vai mudar, ou melhor vai, pra melhor! Pense nisso.

quinta-feira, 21 de maio de 2009

Linha do tempo das distribuições Linux

No website "GNU/Linux Distro Timeline" existe um cladograma que mostra, em uma linha temporal, os relacionamentos de descendência entre as distribuições Linux, desde as primeiras distros até as atuais. Neste cladograma podemos observar as quatro principais distribuições (Debian, Slackware, Suse e Red Hat) e suas descendentes.


Por definição, um cladograma é uma representação gráfica em forma de uma árvore que procura traduzir as relações de parentesco entre as diferentes espécies ou grupos de espécies. Os pontos onde os ramos se ligam, ou nós, correspondem a uma ou mais características pertencentes a um ancestral comum mas que estão presentes em todos os seus descendentes.

A versão original deste cladograma pode ser obtida em http://futurist.se/gldt/.

quarta-feira, 20 de maio de 2009

Problema de lógica: Cesto com laranjas

Cuidado com os olhos, resposta logo abaixo!

Na cozinha de sua casa havia um cesto cheio de laranjas. Seu pai comeu metade das laranjas mais meia laranja. Sua mãe pegou metade das laranjas que sobraram mais meia laranja para fazer um bolo. Seu irmão queria fazer um suco então pegou metade das laranjas que sobraram mais meia laranja. Não restou nenhuma laranja no cesto. Quantas laranjas havia no cesto?




Resposta:



Havia 7 laranjas. O pai comeu metade das laranjas (3,5) mais meia (0,5). Então o pai comeu 4 laranjas e sobraram 3 laranjas. A mãe usou metade das laranjas que sobraram (1,5) mais meia laranja (0,5). Então a mãe usou 2 laranjas o sobrou apenas 1. O irmão usou metade do que sobrou (0,5) mais meia laranja (0,5). Então o irmão usou a última laranja.

terça-feira, 19 de maio de 2009

Um método para calcular o quadrado de um número

Dados um número real a e um número natural n maior que um, chama-se potência enésima de a, e indica-se por an, o produto de n fatores iguais a a. Para o quadrado de um número ou segunda potência de um número o cálculo é a x a. Por exemplo: 6² = 6x6 = 36.

No entanto Pitágoras com seu estudo sobre os números figurados percebeu na seqüência dos números quadrados que a soma dos n primeiros números ímpares vale n².

Deste modo pode-se dizer que este é um outro método para o cálculo do quadrado de um número. Veja:

1² é igual ao primeiro número ímpar: 1
2² é igual a soma dos dois primeiros números ímpares: 1+3 = 4
3² é igual a soma dos três primeiros números ímpares: 1+3+5 = 9
4² é igual a soma dos quatro primeiros números ímpares: 1+3+5+7 = 16

Isto vale para qualquer quadrado de um número natural maior que zero.

segunda-feira, 18 de maio de 2009

Cálculo do número Pi

O número Pi é definido como sendo o valor da razão de comprimento da circunferência pelo diâmetro, assim Pi = c/2r. Trata-se de um número irracional pois não se pode expressar como quociente de dois números inteiros e é expresso por uma dízima infinita que não apresenta comportamento periódico. É representado pela letra grega π.

Nas civilizações antigas, acerca de 4000 anos atrás, já se conheciam a razão entre o perímetro e o diâmetro de qualquer círculo e desde alguns séculos antes de Cristo o número Pi vem sendo calculado pelos matemáticos buscando-se um número cada vez maior de casas decimais. O primeiro matemático a investigar o número Pi foi Archimedes (287-212 a.C.). Ele construiu polígonos regulares inscritos e circunscritos em uma circunferência e calculou o perímetro destes polígonos, quanto mais lados ele colocava no polígono, melhor ficava a aproximação. Usando um polígono de 96 lados, Archimedes descobriu que Pi ficava entre 3,140845 e 3,142857. Uma fração que muito se aproxima do valor de Pi, com um erro menor que 10^-6, é 355/113. A irracionalidade de Pi foi demonstrada em 1761 por Johann Heinrich Lambert.

Atualmente com a ajuda dos computadores já é possível determinar o número Pi com centenas de milhões de casas decimais. Em Setembro de 2002, Yasumasa Kanada atinge a marca de 1,24 trilhão de casas decimais, usando um conjunto de 64 supercomputadores Hitachi SR8000/MPP na forma de cluster, que trabalharam por 602 horas transferindo 400 terabytes de dados, na Universidade de Tóquio.

Abaixo veremos alguns métodos usados para o cálculo desde a sua origem histórica até os anos atuais:

Liu Hui 265 a.C.:


Zu Chongzhi 480:


Newton 1676:


Madhava - Leibniz 1682:


Machin 1706:


Euler 1738:


Gauss:


Störmer 1896:


Ramanujan 1914:


Takano 1982:


David Chudnovsky e Gregory Chudnovsky 1987:


David Bailey, Peter Borwein e Simon Plouffe 1997:


O número Pi com mil dígitos é:

3.14159265358979323846264338327950288419716939937510582097494459230781\
6406286208998628034825342117067982148086513282306647093844609550582231\
7253594081284811174502841027019385211055596446229489549303819644288109\
7566593344612847564823378678316527120190914564856692346034861045432664\
8213393607260249141273724587006606315588174881520920962829254091715364\
3678925903600113305305488204665213841469519415116094330572703657595919\
5309218611738193261179310511854807446237996274956735188575272489122793\
8183011949129833673362440656643086021394946395224737190702179860943702\
7705392171762931767523846748184676694051320005681271452635608277857713\
4275778960917363717872146844090122495343014654958537105079227968925892\
3542019956112129021960864034418159813629774771309960518707211349999998\
3729780499510597317328160963185950244594553469083026425223082533446850\
3526193118817101000313783875288658753320838142061717766914730359825349\
0428755468731159562863882353787593751957781857780532171226806613001927\
876611195909216420199

sexta-feira, 15 de maio de 2009

Distribuições Linux

O Linux é o núcleo de um sistema operacional compatível com UNIX, desenvolvido pelo finlandês Linus Torvalds, inspirado no sistema Minix. Sua primeira versão oficial foi lançada no dia 5 de outubro de 1991. Possui o código fonte disponível livremente de acordo com os termos da Licença Pública Geral GNU, ou GPL. É um sistema operacional bastante estável e seguro para computadores da arquitetura Intel x86 e compatíveis.

Uma característica importante do Linux é ser multiusuário. Um sistema multiusuário é capaz de executar, concorrente e independentemente, várias aplicações pertencentes a dois ou mais usuários. O Linux possibilita que vários usuários usem um mesmo computador simultaneamente, geralmente por meio de terminais. O sistema Linux possui dois tipos de usuários: o usuário root, também conhecido como superusuário, que possui a missão de administrar o sistema, podendo manipular todos os recursos do sistema operacional; e os usuários comuns, que possuem direitos limitados.

Para compor um conjunto de programas cuja função é servir de interface entre um computador e o usuário, o sistema operacional precisa utilizar além do núcleo uma série de aplicativos para formar todo o ambiente. Neste propósito que se definem as distribuições Linux. Uma distribuição Linux é composta de um conjunto de softwares de aplicação mais um núcleo para formar um sistema operacional completo.

Uma distribuição Linux, ou simplesmente distro, geralmente é composta em sua totalidade por aplicativos sob a licença GPL, neste caso é comum chamar o sistema operacional de GNU/Linux. Entretanto uma distro pode conter parte de seu conjunto aplicativos sob outra licença que às vezes até não-livre, contudo praticamente todas são gratuitas para o uso.

As distribuições são criadas e mantidas por indivíduos, grupos, comunidades ou organizações privadas de todo o mundo. A equipe de desenvolvimento compila os softwares e fornece aos usuários um sistema completo, pronto para instalação e uso.

Existem centenas de distribuições Linux. As principais diferenças entre as distribuições estão no sistema de empacotamento, nas estruturas dos diretórios, na sua biblioteca básica, na organização e na pré-configuração dos softwares. As distribuições podem possuir propósitos genéricos ou específicos, como para uso em estação de trabalho ou servidor, ser pequena ou grande no número de aplicativos etc. Todas elas tem o seu público e sua finalidade.

Importante ressaltar que qualquer aplicativo desenvolvido para Linux pode ser compilado em qualquer distribuição e vai funcionar da mesma maneira, claro que respeitando o pré-requisito do aplicativo, como por exemplo versões dos softwares etc.

Dentre as principais diferenças destacam-se:

1) O gerenciamento de pacotes, que é a forma na qual os aplicativos são organizados para facilitar sua instalação, atualização ou remoção no sistema, exemplo os empacotamentos rpm e deb acompanhados de seus gerenciadores yum e apt respectivamente;

2) Pela estrutura dos diretórios, pois umas seguem o modelo Unix System V, criado pela AT&T/Bell Labs e considerado por muitos o formato "verdadeiro" e outras seguem o modelo BSD, criado pela Universidade de Berkeley para o Unix que foi desenvolvido lá, e segundo seus defensores é menos "cheio de frescuras" e por isso amado no ambiente acadêmico;

3) Pela escolha dos aplicativos definidos a priori, versões e pré-configurações. Exemplo o ambiente gráfico KDE ou GNOME, softwares em versões estáveis ou em desenvolvimento e configurações voltadas para a segurança ou para a flexibilidade do sistema.

Historicamente as primeiras grandes distribuições foram a Slackware, a Debian, a Suse e a Red Hat, que iniciaram suas atividades entre 1993-94 e que estão ativas até hoje. A maioria das outras que existem atualmente são baseadas em uma destas quatro, por exemplo a Ubuntu é baseada na Debian e a Fedora é baseada na Red Hat. Estas quatro distribuições possuem a mais ampla finalidade possível, servem tanto para servidores como para estações de trabalho, são distribuições completas pois possuem praticamente todos os aplicativos existentes já pré-empacotados. A Ubuntu e a Fedora também se equiparam nesta categoria. Aliás a Red Hat e a Fedora são basicamente a mesma distribuição, diferenciando-se no quesito corporativo/público pois a Fedora é desenvolvida pela comunidade livre. E quanto a Ubuntu, que é bastante semelhante à Debian, tem um propósito voltado mais para o usuário doméstico.

Ponderando a facilidade de uso, instalação e administração, apenas a Slackware fica um pouco atrás das outras pelo motivo de seu sistema de empacotamento e dos aplicativos com interface para as configurações. Enquanto que as outras ostentam-se pelos eficientes sistemas de gerenciamento de pacotes, por exemplo a Debian com seu "apt/dpkg" para seus pacotes ".deb" e a Fedora com seu "yum/rpm" para seus pacotes ".rpm", e ainda a Fedora pelos seus excelentes aplicativos que fazem a interface para toda a configuração do sistema assim como a Suse, a Slackware tem como glória ser uma distribuição pura e limpa, no mais fiel estilo UNIX-like.

Um ponto interessante neste universo do Linux é que todas estas grandes distribuições trazem não somente um sistema operacional completo, com todos os aplicativos para o ambiente e de operação em arquivos etc., mas também uma completa gama de aplicativos para uso em servidores de qualquer rede e inclusive para uso em estações de trabalho como suítes de escritório, clientes para serviços da Internet, recursos multimídia, jogos, tudo que se possa imaginar. Ou seja, uma distribuição Linux contém tudo o que se precisa em um computador.

Apesar das distribuições não serem totalmente compatíveis entre si, existem esforços como o projeto Linux Standard Base (LSB), traduzido para Base Padrão de Linux, para padronizar a estrutura interna de sistemas operacionais baseados em Linux e aumentar a compatibilidade entre as distribuições, permitindo que aplicações de software funcionem em todos os sistemas comuns. O LSB é baseado na especificação POSIX, na especificação UNIX, e em diversos outros padrões abertos e veio para reduzir as grandes distâncias que as distribuições Linux estavam tomando.

Muito se pergunta qual é a melhor distribuição, e de modo genérico esta resposta realmente não existe. Cada uma tem o seu propósito, a sua finalidade, e a escolha de uma ou outra vai depender do seu uso ou dos aplicativos que serão necessários instalar e executar. Uma coisa é certa, todas vão servir muito bem pois um sistema operacional Linux é extremamente estável e confiável.

quinta-feira, 14 de maio de 2009

Gráficos das funções do 1º e 2º graus

Função do 1º Grau:

Para uma função representada pela fórmula y = ax + b ou f(x)= ax + b, o gráfico será uma reta, onde a é o coeficiente angular da reta e b é a interseção da reta com o eixo y. O zero ou raiz da função é o valor de x que anula a função, torna f(x) = 0, e é o ponto de interseção da reta com o eixo x.

Com a = 1 a inclinação será 45° e com b = 1 a reta passa pelo ponto 1 no eixo y. A seguir o gráfico da função y = x + 1:


Com a > 1 a inclinação da reta tem ângulo maior que 45°. Quanto mais alto o valor de a mais próximo o ângulo da inclinação fica de 90°, porém esta angulação nunca chegará, mesmo com a tendendo ao infinito. A seguir o gráfico com as funções y = 2x, y = 4x e y = 100x:


Para valores de a no intervalo entre 0 e 1 a inclinação da reta tem ângulo menor que 45°. Quanto mais próximo de a = 0 a reta tende para horizontal. A seguir o gráfico com as funções y = 0,5x ou y = x/2, y = 0,2x e y = 0,01x:


Com a = 0 a reta é horizontal, sendo uma função constante, e então com a < 0 a reta começa a ficar com uma inclinação negativa pois é uma função decrescente. A seguir o gráfico das funções y = 0x + 1 ou y = 1 e y = -4x + 1:



Função do 2º Grau:

Para uma função representada pela fórmula y = ax² + bx + c ou f(x)= ax² + bx + c, o gráfico será uma parábola, onde a indica a concavidade da parábola, b indica o deslocamento da parábola para direita ou esquerda e c o ponto em y onde corta a parábola. Os zeros ou raízes da função são os valores de x que anulam a função, tornam f(x) = 0, e indicam os pontos no eixo x onde cortam a parábola. Se Delta¹ > 0 existem duas raízes, se Delta = 0 existe apenas uma raiz e se Delta < 0 não existem raízes. O vértice é dado pelo ponto V(-b/2a,-Delta/4a).

Com o valor de a sendo positivo a parábola tem concavidade voltada para cima, com o valor de b positivo a parábola desloca-se para a esquerda e com c = 1 a parábola passa pelo ponto 1 no eixo y. A seguir o gráfico da função y = x² + x + 1:


Agora alterando o valor de b a parábola faz um deslocamento a partir de seu vértice pelo ponto c no eixo y. Para b com valor positivo a parábola desloca-se para esquerda. Com b = 0 o vértice da parábola fica sobre o ponto onde corta o eixo y. Para b com valor negativo a parábola desloca-se para direita. A seguir o gráfico das funções y = x² + 3x - 2, y = x² - 2 e y = x² - 3x - 2:


Passamos então para o valor de a, que indica a concavidade da parábola. Com a > 0 a parábola tem concavidade voltada para cima e quanto maior o seu valor mais fechada será a concavidade. A seguir o gráfico com as funções y = 2x² + x - 2, y = 4x² + x - 2 e y = 8x² + x - 2:


Mas com o valor de a aproximando-se de 0 mais aberta será a concavidade. Obviamente com a = 0 a função torna-se uma equação de 1° grau então o gráfico é uma reta. A seguir o gráfico com as funções y = 0.5x² + x + 1, y = 0.2x² + x + 1, y = 0.1x² + x + 1 e y = x + 1:


Com a < 0 a parábola tem concavidade voltada para baixo e quanto menor o seu valor mais fechada será a concavidade. A seguir o gráfico com as funções y = -0.2x² + x + 1, y = -x² + x + 1 e y = -2x² + x + 1:


Agora um fato interessante é que alterando somente b para valores desde negativos até positivos, o vértice da parábola desenha exatamente a mesma parábola da função com a negativo e b igual a zero. A seguir o gráfico da função y = x² + x + 1, com b nos valores (-3,-2,-1,1,2,3) e o percurso do vértice sobre o gráfico da função y = -x² + 1:




¹ Delta = b²-4ac

quarta-feira, 13 de maio de 2009

Problema de Lógica: 12 moedas

Atenção, este artigo inclui a resposta para o problema. Caso queira tentar descobrir antes de ler, tome o cuidado com seus olhos!

Tenho 12 moedas aparentemente iguais mas há uma que é diferente, não sei se ela é mais pesada ou mais leve que as demais. Com uma balança de dois pratos, como posso com apenas três pesagens, identificar a moeda diferente e dizer se ela é mais pesada ou mais leve que as outras?






RESPOSTA




Este problema dá para se resolver de duas formas, primeira por comparação e eliminação e segunda por análise das combinações:

1º)

Numerar as moedas de 1 a 12
Pesar¹ 1,2,3,4 contra 5,6,7,8
Se equilibrado
Pesar² 6,7,8 contra 9,10,11
Se equilibrado
Pesar³ 12 contra qualquer outra
Se a 12 for mais pesada a moeda diferente é a 12 e é mais pesada
Se a 12 for mais leve a moeda diferente é a 12 e é mais leve
Se desequilibrado e 9,10,11 for mais pesado
Pesar³ 9 contra 10
Se equilibrado a moeda diferente é a 11 e é mais pesada
Se desequilibrado a moeda diferente é a mais pesada entre 9 e 10
Se desequilibrado e 9,10,11 for mais leve
Pesar³ 9 contra 10
Se equilibrado a moeda diferente é a 11 e é mais leve
Se desequilibrado a moeda diferente é a mais leve entre 9 e 10
Se desequilibrado e 5,6,7,8 for mais pesado
Pesar² 1,2,5 contra 3,6,10
Se equilibrado
Pesar³ 7 contra 8
Se equilibrado a moeda diferente é a 4 e é mais leve
Se desequilibrado a moeda diferente é a mais pesada entre 7 e 8
Se desequilibrado e 3,6,10 for mais pesado
Pesar³ 1 contra 2
Se equilibrado a moeda diferente é a 6 e é mais pesada
Se desequilibrado a moeda diferente é a mais leve entre 1 e 2
Se desequilibrado e 3,6,10 for mais leve
Pesar³ 3 contra 10
Se equilibrado a moeda diferente é a 5 e é mais pesada
Se desequilibrado a moeda diferente é a 3 e é mais leve
Se desequilibrado e 5,6,7,8 for mais leve
Pesar² 1,2,5 contra 3,6,10
Se equilibrado
Pesar³ 7 contra 8
Se equilibrado a moeda diferente é a 4 e é mais pesada
Se desequilibrado a moeda diferente é a mais leve entre 7 e 8
Se desequilibrado e 3,6,10 for mais leve
Pesar³ 1 contra 2
Se equilibrado a moeda diferente é a 6 e é mais leve
Se desequilibrado a moeda diferente é a mais pesada entre 1 e 2
Se desequilibrado e 3,6,10 for mais pesado
Pesar³ 3 contra 10
Se equilibrado a moeda diferente é a 5 e é mais leve
Se desequilibrado a moeda diferente é a 3 e é mais pesada


2º)

Analisando um lado da balança, as possibilidades de resultado de uma pesagem são mais pesado, mais leve e equilibrado.

Sendo três pesagens e podendo ocorrer uma dessas três possibilidades em cada pesagem, temos assim 3³ = 27 combinações de resultados possíveis.

Pesagem             1ª            2ª            3ª
Possibilidade P ou L ou E P ou L ou E P ou L ou E

Três combinações são descartadas, EEE, LLL e PPP, senão uma moeda estaria de fora em todas as pesagens ou estaria sempre do mesmo lado.

As 24 combinações restantes são organizadas em pares, juntando duas combinações onde é invertida somente as possibilidades pesado e leve e mantendo a possibilidade equilibrado. Por exemplo o par EPL-ELP.

Os pares são divididos formando dois grupos que se invertem par a par. Cada moeda, numeradas de 1 a 12, é associada a um par.

Um dos grupos é escolhido para montar a configuração das moedas na balança, para 1ª, 2ª e 3ª pesagem, onde é colocada as moedas correspondentes à possibilidade pesado no prato da esquerda e à possibilidade leve no prato da direita. As moedas correspondentes à possibilidade equilibrado ficam de fora da referida pesagem.

A cada uma das três pesagens realizadas é anotado os resultados do lado esquerdo da balança, se é mais pesado, mais leve ou equilibrado em comparação à direita.

A moeda que estiver associada à esta combinação é a moeda diferente.

Se a combinação estiver dentro do grupo escolhido para a configuração das moedas, a moeda diferente é mais pesada que as demais, se estiver no outro grupo a moeda é mais leve.

   ------------------------- Grupo escolhido
|
123 123 <----------------- Pesagens
EPL | 1| ELP esquerda direita
PLE | 2| LPE 1ªP 2, 3, 6, 8 - 7,10,11,12
PEL | 3| LEP 2ªP 1, 9,11,12 - 2, 5, 7,10
EEL | 4| EEP 3ªP 8, 9,10,12 - 1, 3, 4,11
ELE | 5| EPE
PEE | 6| LEE
LLE | 7| PPE Ex1: Se a moeda diferente fosse a 7 e mais pesada
PEP | 8| LEL o resultado do lado esquerdo da balança seria LLE.
EPP | 9| ELL Ex2: Se a moeda diferente fosse a 9 e mais leve
LLP |10| PPL o resultado do lado esquerdo da balança seria ELL.
LPL |11| PLP
LPP |12| PLL

terça-feira, 12 de maio de 2009

Algoritmo para solução da Torre de Hanói

A Torre de Hanói é um quebra-cabeça matemático que consiste em três hastes e um número de três ou mais discos de diferentes tamanhos para serem dispostos nas hastes. O problema está em passar todos os discos de uma haste para outra, usando uma terceira haste como auxiliar, de maneira que um disco maior nunca fique em cima de outro menor e movendo um disco por vez. O nível de dificuldade mais fácil é com três discos apenas.

O número mínimo de movimentos para conseguir transferir todos os discos da primeira haste para a haste final é 2^n -1, sendo n o número de discos. Por exemplo para solucionar uma Torre de Hanói com 7 discos são necessários 127 movimentos.

Existem soluções para este problema com o uso de algoritmos iterativos, mas geram um código muito extenso visto que algoritmos recursivos são bem mais fáceis de serem compreendidos pois são compactos. Entretanto por usarem intensivamente a pilha, os algoritmos recursivos tendem a ser mais lentos que os iterativos.

Vejamos então um exemplo de algoritmo recursivo:

Função resolveHanoi(Inteiro discos, String origem, String destino, String auxiliar) {
Se (discos > 0) {
resolveHanoi(discos-1,origem,auxiliar,destino);
Imprime("Mover disco " + discos + " de " + origem + " para " + destino);
resolveHanoi(discos-1,auxiliar,destino,origem);
}
}

A função é chamada com:

resolveHanoi(3,"haste inicial","haste final","haste auxiliar");

Este algoritmo imprime na tela toda a seqüência de movimentos para a solução do problema. A função é chamada pela primeira vez com parâmetros determinando o número total de discos e quais são as hastes inicial, final e auxiliar.

Para a solução, os movimentos realizados pelo algoritmo estão separados em três estágios. O primeiro estágio move os n-1 discos superiores para a haste auxiliar, o segundo move o último e maior disco para a haste final e finalmente o terceiro estágio move os n-1 discos superiores para a haste final.

Com o uso da recursão, dentro do primeiro e do terceiro estágio, são realizados novamente os três estágios com a pilha de n-1 discos, avançando recursivamente sempre no primeiro e terceiro estágios até que se chegue no menor disco.

A seqüência dos discos movidos para uma torre com três discos é 1-2-1-3-1-2-1. A representação gráfica desta solução é semelhante ao Triângulo de Sierpinski, que é uma figura geométrica obtida através de um processo recursivo.

Sugestão de website: Hanoimania!

segunda-feira, 11 de maio de 2009

Distância entre coordenadas geográficas

As coordenadas geográficas expressam de forma exata em graus a posição de qualquer ponto na superfície do globo terrestre. O globo é dividido em latitudes que vão de 0 a 90 graus a partir da linha do Equador, separando Norte e Sul, e longitudes que vão de 0 a 180 graus a partir do meridiano de Greenwich, separando Leste e Oeste.

A medida de grau possui duas notações, grau em notação sexagesimal (grau, minuto e segundo) e grau em notação decimal. A latitude e longitude para a notação sexagesimal é indicada pelas letras de Norte-Sul-Leste-Oeste, em notação decimal é indicada com o sinal - (negativo) a latitude sul ou a longitude oeste. Exemplo: 48°45'51,01"Oeste = -48,7641694444444.

A circunferência média do globo terrestre mede aproximadamente 40.030,20 quilômetros, dividindo por 360 conclui-se que o grau equivale a 111,19 km. Dividindo um grau por 60 temos um minuto que equivale a 1.853,25 metros e é a medida de uma milha náutica (atualmente por convenção adotou-se 1.852,00 metros). Dividindo um minuto por 60 temos um segundo que equivale a 30,88 metros. O raio médio do globo terrestre é 6371.004 km.

Antes de vermos como se calcula a distância vamos ver como se faz a conversão entre as notações de grau. A notação decimal é obtida a partir da notação sexagesimal com o uso da fórmula:

grau + minuto/60 + segundo/3600

Lembrando que para a latitude sul e a longitude oeste o resultado receberá o sinal negativo.

No sentido inverso, a notação sexagesimal é obtida a partir da notação decimal com o uso das fórmulas:

Grau = valor absoluto da notação decimal, somente a parte inteira.
Minuto = valor absoluto da parte fracionária da notação decimal multiplicado por 60, somente a parte inteira.
Segundo = valor absoluto da parte fracionária da notação decimal multiplicado por 60, e multiplicando a parte fracionária deste resultado por 60.

Se o valor da notação decimal é negativo então a latitude será sul ou a longitude será oeste.

Para o cálculo da distância é utilizado os valores em notação decimal, por isso é necessária a conversão caso as coordenadas estejam em notação sexagesimal. Sua fórmula, já com a unidade do resultado em metros, é dada abaixo:

D = ( ( ArcoCosseno( Cosseno( ( 90 - LatitudeUm ) * Pi / 180 ) * Cosseno( ( 90 - LatitudeDois ) * Pi / 180 ) + Seno( ( 90 - LatitudeUm ) * Pi / 180 ) * Seno( ( 90 - LatitudeDois ) * Pi / 180 ) * Cosseno( ABS( ( ( 360 + LongitudeUm ) * Pi / 180 ) - ( ( 360 + LongitudeDois ) * Pi / 180 ) ) ) ) ) * 6371,004 ) * 1000

LatitudeUm e LongitudeUm referem-se as coordenadas da primeira localidade e LatitudeDois e LongitudeDois referem-se as coordenadas da segunda localidade. ABS é o valor absoluto da expressão e Pi é obviamente o valor do número Pi (3,14159265). Toda a expressão é multiplicada pelo raio médio da Terra e o resultado multiplicado por 1000 para a unidade ser em metros.

A fórmula deste cálculo é baseada na lei dos cossenos da trigonometria esférica e a distância segue a linha geodésica, que é a curva de menor comprimento unindo dois pontos. Como o sistema de coordenadas terrestre é dividido em hemisférios, com os ângulos entre 0-90 e 0-180, faz-se necessário o ajuste na fórmula para estes ângulos limítrofes. E como as diferenças na altitude da superfície terrestre serem insignificantes em relação ao raio da Terra, é possível ignorar esta variação sem comprometer o resultado do cálculo. Observando que como está sendo utilizado o raio médio então os resultados para pontos próximos a linha do Equador serão subestimados e para pontos próximos aos pólos serão superestimados.

Problema de Lógica: Cor do boné

Atenção, este artigo inclui a resposta para o problema. Caso queira tentar descobrir antes de ler, tome o cuidado com seus olhos!

Em uma prisão haviam 3 presos. O dono da prisão resolve conceder a liberdade a um deles, e propõe o seguinte:

- Tenho aqui 5 bonés: 3 azuis e 2 amarelos. Inicialmente, quero que vocês fiquem os 3 alinhados, um na frente do outro, de forma que o último de trás pode ver os da frente; o do meio pode ser somente o da sua frente e o da frente não pode ver nenhum dos outros dois. Em seguida, vou colocar um boné, aleatoriamente, na cabeça de cada um de vocês, sem que vocês vejam. Aquele que adivinhar a cor do boné que está usando será libertado!

Após os 3 serem colocados um na frente do outro, os dois de trás até riram do coitado que ficara na frente, pois ele não conseguia ver o boné de ninguém, e conseqüentemente não teria a mínima chance!!! Em seguida, foi feita a pergunta para o último da fila:

- Qual a cor do seu boné?
- Embora esteja vendo os bonés dos meus 2 companheiros, minha resposta infelizmente é: Não sei!
Foi feita então a pergunta para o do meio:
- Qual a cor do seu boné?
- Não sei!!!
Foi feita então a pergunta para o da frente, que não estava vendo nada:
- Qual a cor do seu boné?
- EU SEI!!!!! E serei libertado!

Qual a cor do boné do felizardo que foi libertado?





RESPOSTA



A cor do boné é azul. O último da fila só seria capaz de adivinhar a cor de seu boné se os dois da frente estivessem com os bonés amarelos, assim só lhe restaria a cor azul. Esta combinação então é descartada para os da frente. O do meio só adivinharia se o da frente estivesse com um boné amarelo, pois com o descarte da combinação favorável ao último o do meio só teria a opção da cor azul. Mais duas combinações são descartadas para o da frente, sendo assim, somente lhe restou as combinações em que está com o boné azul. Veja abaixo a tabela das combinações e das possibilidades de saber a cor:

Combinações dos bonés            Saberia a cor
Frente Meio Último Frente Meio Último
Azul Azul Azul Sim Não Não
Azul Azul Amarelo Sim Não Não
Azul Amarelo Azul Sim Não Não
Amarelo Azul Azul --- Sim Não
Azul Amarelo Amarelo Sim Não Não
Amarelo Azul Amarelo --- Sim Não
Amarelo Amarelo Azul --- --- Sim

Capturando a transmissão da TV com o MEncoder

Existe uma dupla de aplicativos de linha de comando para player multimídia e codificação de vídeos chamada MPlayer e MEncoder, ambos são uma ferramenta extremamente poderosa para reprodução e conversão de vídeo. Neste artigo vou mostrar como é possível capturar a transmissão da TV, através de uma placa de TV, e gerar um arquivo no formato DivX ou DVD. Os exemplos são feitos tendo como base o ambiente Linux com a placa de captura BT878 Prolink PixelView. Dependendo do modelo da placa de captura os parâmetros poderão ser diferentes.

Reproduzir a TV:

Apenas ilustrando, para reproduzir o conteúdo da transmissão da TV, sem gerar um arquivo, utiliza-se o MPlayer. Abaixo segue o exemplo da linha de comando:

mplayer tv://14 -tv driver=v4l2:input=0:normid=9:width=640:height=480:chanlist=us-cable

No comando acima o MPlayer reproduzirá o conteúdo do canal 14, usando o driver V4L2, na entrada de televisão (input=0), no sistema PAL-M (normid=9) e sintonizando pela lista de canais da freqüência de tv a cabo.


Capturar a TV para um arquivo:

Na captura utiliza-se o aplicativo MEncoder. Sua sintaxe difere pois é necessário especificar também qual o codec que será utilizado e bem como a qualidade do arquivo gerado:

Para DivX:

mencoder tv://14 -tv driver=v4l2:input=0:normid=9:width=640:height=480:chanlist=us-cable:alsa:adevice=hw.1,1:amode=1:forceaudio:forcechan=2:audiorate=48000 -o arquivo.avi -ovc lavc -lavcopts vcodec=mpeg4:vhq:vqmax=31:vbitrate=600:keyint=300 -oac mp3lame -lameopts cbr:br=128 -srate 48000 -sws 1 -vf crop=608:456:4:12,pp=lb,scale=520:390 -endpos 60

Para DVD:

mencoder tv://14 -tv driver=v4l2:input=0:normid=9:width=640:height=480:chanlist=us-cable:alsa:adevice=hw.1,1:amode=1:forceaudio:forcechan=2:audiorate=48000 -o arquivo.avi -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=4/3 -ofps 30000/1001 -srate 48000 -af lavcresample=48000 -vf crop=608:456:4:12,pp=lb,scale=720:480 -endpos 60

Nestes dois exemplos foram acrescentados parâmetros no driver V4L2 para a captura do sinal de áudio. O arquivo de saída está especificado no parâmetro -o e o parâmetro -ovc define o codec de vídeo e -oac define o codec de áudio. Em ambos exemplos foi necessário cortar as bordas para eliminar o desalinhamento da imagem em relação a área de captura. E também foi alterado o tamanho da imagem, recomendável pelo menos na geração do arquivo para DVD onde a resolução é padrão. No caso da codificação em DivX tem-se maior liberdade na variação da qualidade do vídeo e do áudio alterando a taxa de bits, para DVD geralmente utiliza-se as taxas padrão. Veja abaixo algumas possibilidades.


Variações de qualidade para DivX:

Diferentes qualidades geram arquivos de tamanhos diferentes, obviamente quanto melhor a taxa maior será o arquivo. Em nossos exemplos a taxa foi definida de modo fixo sendo vídeo em "vbitrate" e a taxa de áudio em "br":

Baixa, 1 minuto ocupa 3.3 MB (2h -> 396mb): vbitrate=350 br=48
Boa, 1 minuto ocupa 7 MB (2h -> 840mb): vbitrate=800 br=128
Alta, 1 minuto ocupa 9.6 MB (2h -> 1152mb): vbitrate=1200 br=128
Ótima, 1 minuto ocupa 14 MB (2h -> 1680mb): vbitrate=1800 keyint=150 br=128
CD, 1 minuto ocupa 5.6 MB (2h -> 672mb): vbitrate=600 br=128


Entrada do áudio:

Existe duas formas de capturar o áudio da TV, uma é pela entrada da placa de som (line-in) e a outra é diretamente pelo hardware da placa de TV.

Line in: adevice=hw.0,0
BT878: adevice=hw.1,1 (requer o módulo snd-bt87x carregado)


Duração da gravação:

Com este parâmetro a gravação encerra-se automaticamente após o tempo determinado.

-endpos 60 (segundos)
-endpos 01:10:00 (hora:minuto:segundo)
-endpos 100mb (tamanho do arquivo)


A aplicabilidade deste software pode ir muito além, como por exemplo um script chamado pelo cron para automatizar a gravação de um programa de TV, como fazíamos em um VCR. Consulte os manuais destes aplicativos para conhecer toda a variedade de parâmetros, que é muito maior do que foi exemplificado neste artigo. Boa gravação!

sábado, 9 de maio de 2009

Propriedades e permissões dos arquivos no Linux

Para obter uma segurança no sistema, o Linux utiliza propriedades e permissões nos arquivos e diretórios. Este controle é usado para não permitir que um usuário leia ou modifique um arquivo de outro usuário. Um arquivo só poderá ser acessado por um usuário se ele for o proprietário ou se pertencer ao grupo em questão, e ainda terá que respeitar as permissões atribuídas no arquivo.

As propriedades e as permissões são mostradas quando se listam os arquivos usando o formato longo do comando ls (ls -l). Veja um exemplo:

# ls -l
drwxr-xr-x 2 usuario grupo 1024 Dec 7 16:39 nome_do_dir
-rwxrwxr-- 1 usuario grupo 29845 Dec 12 21:55 nome_do_arq1
lrwxrwxrwx 1 usuario grupo 12 Dec 9 01:33 nome_da_lig -> nome_do_arq2
-rw-r--r-- 1 usuario grupo 7563 Dec 2 22:30 nome_do_arq2
A primeira coluna da esquerda mostra o tipo e as permissões do arquivo em uma seqüencia de 10 caracteres, a terceira e quarta coluna mostram a qual usuário e grupo pertence o arquivo.

O tipo do arquivo é mostrado no primeiro caracter da seqüencia. Existem vários tipos de arquivos, mas os mais comuns são:

b -> dispositivo de blocos
c -> dispositivo de caracteres
d -> diretório
l -> ligação simbólica

Quando há um hífem em vez de uma letra, significa que é um arquivo normal.

As permissões são mostradas em uma seqüencia de 9 caracteres divididos em três níveis: usuário, grupo, outros. Existem três tipos de permissões, a permissão de leitura (read), a permissão de gravação (write) e a permissão de execução (execute). Em cada nível deverá ser especificada estas três permissões. Quando há um hífem em vez de uma letra, significa que não há permissão para acessar ao arquivo. Veja:

     /--------> O grupo pode ler e executar.
/ \
-rwxr-xr-x
\ / \ /
| \-----> Os outros usuários podem ler e executar.
|
\-----------> O proprietário pode ler, gravar e executar.


As permissões tem significados diferentes para arquivos e diretórios. Para um arquivo, a permissão de leitura significa que pode ser lido o conteúdo do arquivo, a permissão de gravação significa que o arquivo pode ser alterado ou apagado e a permissão de execução significa que o arquivo pode ser executado como um programa. Para os diretórios, a permissão de leitura significa que pode ser listado o seu conteúdo, a permissão de gravação significa que arquivos podem ser acrescentados ou removidos dentro do diretório e a permissão de execução significa que os arquivos podem ser lidos ou executados.

Existem ainda os atributos especiais, que são:

setuid -> Definido nos arquivos executáveis, faz com que seja executado com as permissões do proprietário daquele arquivo.

setgid -> Faz com que o arquivo seja executado com as permissões do grupo do arquivo, mesmo que o usuário não participe dele. Todo arquivo criado em um diretório setgid é criado com o mesmo grupo do diretório.

sticky -> Em diretórios compartilhados por vários usuários, faz com que um arquivo só possa ser apagado por seu proprietário.

Você poderá alterar as permissões dos arquivos e diretórios, além de alterar o proprietário e o grupo que o arquivo pertence. Os utilitários usados são, respectivamente: chmod, chown e chgrp.

O comando chmod pode ser usado de duas maneiras diferentes, o modo simbólico e o modo absoluto.

No modo simbólico o comando chmod tem a seguinte sintaxe:

chmod [ugoa][+-=][rwxXst] arquivo

u -> permissões para o proprietário.
g -> permissões para o grupo.
o -> permissões para outros usuários.
a -> permissões para todos: proprietário, grupo e outros.

+ -> adiciona a permissão às permissões existentes.
- -> remove a permissão das permissões existentes.
= -> define uma nova permissão, cancelando as existentes.

r -> permissão de leitura.
w -> permissão de gravação.
x -> permissão de execução.
X -> permissão de execução se for um diretório.
s -> setuid se for atribuído ao proprietário, setgid se atribuído ao grupo.
t -> sticky.

Exemplos:

# chmod u+x arquivo -> adiciona a permissão de execução para o proprietário do arquivo.
# chmod ug+rw arquivo -> adiciona a permissão de leitura e gravação para o proprietário e grupo.
# chmod u+wx,g-w,o=r arq -> adiciona a permissão de gravação e execução para o proprietário, retira a permissão de gravação para o grupo e atribui apenas a permissão de leitura para os outros usuários.

No modo absoluto o comando chmod usa a notação octal, com a seguinte sintaxe:

chmod [[e]ugo] arquivo

Onde se utiliza um número octal de três dígitos, com cada dígito correspondendo a um dos três níveis de permissão (usuário, grupo e outros), mais um quarto dígito opcional, que é o atributo especial. Cada dígito dos níveis de permissão é formado pela soma dos valores de cada tipo de permissão (leitura, gravação e execução), onde leitura tem o valor 4, gravação tem o valor 2 e execução 1. Veja abaixo:

0 -> nenhuma permissão.
1 -> permissão de execução.
2 -> permissão de gravação.
3 -> permissão de gravação e execução.
4 -> permissão de leitura.
5 -> permissão de leitura e execução.
6 -> permissão de leitura e gravação.
7 -> permissão de leitura, gravação e execução.

Para o atributo especial usa-se a soma dos valores de setuid, setgid e sticky, que também são 4, 2 e 1 respectivamente. Veja então os seguintes valores:

0 -> nenhum atributo especial ligado.
1 -> sticky ligado.
2 -> setgid ligado.
3 -> setgid e sticky ligados.
4 -> setuid ligado.
5 -> setuid e sticky ligados.
6 -> setuid e setgid ligados.
7 -> setuid, setgid e sticky ligados.

Exemplos:

# chmod 400 arquivo -> atribui apenas a permissão de leitura para o proprietário e nenhuma permissão para o grupo e outros usuários.
# chmod 750 diretório -> atribui permissão de leitura, gravação e execução para o proprietário, permissão de leitura e execução para o grupo e nenhuma permissão para os outros usuários.
# chmod 1777 arquivo -> liga o atributo sticky e atribui permissão de leitura, gravação e execução para todos os usuários.

O comando chown, usado para alterar o proprietário do arquivo ou diretório, só pode ser usado pelo administrador do sistema. Este comando também pode alterar o grupo. Ele tem a seguinte sintaxe:

chown usuário arquivo
chown usuário:grupo arquivo

Veja alguns exemplos:

# chown joao arquivo.ext -> define joao como proprietário do arquivo.ext.
# chown joao:familia arquivo -> define o arquivo como propriedade de joao e do grupo familia.
# chown -R joao:familia diretório -> altera as propriedades do diretório e seus conteúdos de maneira recursiva.

O comando chgrp, como já dito, altera o grupo que o arquivo pertence. E só pode ser usado pelo proprietário do arquivo ou pelo administrador do sistema. Veja a sintaxe:

chgrp grupo arquivo

Exemplo:

# chgrp familia arquivo.ext -> define o arquivo.ext como pertencente ao grupo familia.

Números binários

Em um sistema de representação binário (base 2) os números decimais (base 10) são representados somente pelos algarismos 0 e 1. Como por exemplo o número decimal 91 no sistema binário fica 01011011. Sabe-se que uma das técnicas mais famosas para conversão de decimal para binário é a divisão repetidamente do número decimal por 2 até que se obtenha o quociente 1 , o conjunto dos algarismos iniciado pelo último quociente e voltando por todos os restos até o primeiro forma a representação do número binário, por exemplo o cálculo para conversão de 234:

234 : 2
0 117 : 2
1 58 : 2
0 29 : 2
1 14 : 2
0 7 : 2
1 3 : 2
1 1 <-

Então 234 no sistema binário fica 11101010.

Já para a conversão de binário para decimal utiliza-se a seguinte fórmula:

N = d x b^n-1 + d x b^n-2 + ... + d x b^1 + d x b^0

Sendo d cada algarismo do número, n o número total de algarismos tendo n-1 como a posição do algarismo e b indica a base do número.

Convertendo 01011011 para decimal usando a fórmula fica (pode-se ignorar o zero mais à esquerda):

N = 1 x 2^6 + 0 x 2^5 + 1 x 2^4 + 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 1 x 2^0
N = 1 x 64 + 0 x 32 + 1 x 16 + 1 x 8 + 0 x 4 + 1 x 2 + 1 x 1
N = 64 + 0 + 16 + 8 + 0 + 2 + 1
N = 91


Entretanto o sistema de representação binário tem uma lógica de evolução dos números que apenas visualmente é possível mentalizar o resultado da conversão, inclusive no sentido oposto, decimal para binário e binário para decimal. Vamos então primeiro para a evolução dos números. Tomando para a explanação o conjunto de números decimais de 0 a 255, em binário vai de 00000000 a 11111111, o início da seqüencia é:

  0   00000000
1 00000001
2 00000010
3 00000011
4 00000100
5 00000101
6 00000110
7 00000111
8 00001000
9 00001001
10 00001010
...


Pela seqüencia percebe-se que os algarismos 1 vão aparecendo na representação da direita para a esquerda. A posição do primeiro algarismo 1 à esquerda só é modificada para a próxima casa à esquerda quando todas as outras casas à direita tornam-se 1 e com este movimento todas as casas à direita retornam para o algarismo 0, iniciando novamente uma nova evolução para completar as casas da direita com 1 e assim mover mais uma vez o algarismo 1 da esquerda para mais uma casa à esquerda.

É aí que temos um fato interessante. Todos conhecem a famosa seqüencia das potências de 2 que é 1, 2, 4, 8, 16, 32, 64, 128 etc. Acontece que para cada um desses números decimais quando representados no sistema binário apenas um algarismo 1 é contido na representação. Por exemplo:

  1   00000001
2 00000010
4 00000100
8 00001000
16 00010000
32 00100000
64 01000000
128 10000000


Então dado um número representado no sistema binário, se observarmos o algarismo 1 mais à esquerda em uma determinada casa significa que o número decimal será pelo menos igual ou maior, caso tenha outro algarismo 1 à direita, a potência representada nesta determinada casa. Exemplo, em 00100110 o algarismo 1 mais à esquerda está na casa da potência 32, como tem outros algarismos 1 à direita este número é maior que 32, e obviamente menor que 64. Sendo assim onde tiver o algarismo 1 o valor de sua respectiva potência de 2 será acrescentado ao número decimal.

Agora ficou fácil. Para encontrar o número exato basta somar as potências de 2 onde o algarismo é 1. Deste modo 00100110 tem o algarismo 1 nas casas das potências 32, 4 e 2, que somando resulta 38.

Voltando à conversão de decimal para binário (base 10 para base 2) o procedimento também é simples e inverso. Dado um número decimal, inicialmente encontra-se a primeira potência de 2 com o valor menor. Partindo deste valor vai-se somando as próximas potências menores, ignorando as que façam o resultado da soma ultrapassar, até que o resultado seja igual ao número decimal. A representação no sistema binário será colocando o algarismo 1 nas casas onde foram usadas as potências para a soma. Exemplificando, o número decimal 91 utilizará a soma das potências 64, 16, 8, 2 e 1 para igualar o seu valor, assim sua conversão para o número binário será 01011011.

Referências:

GUNTZEL, J. L. & NASCIMENTO, F. A. Introdução aos Sistemas Digitais, 2001.
MONTEIRO, M. A. Introdução à Organização de Computadores, 4ª Edição, LTC, 2005.
PATTERSON, D. A. & HENNESSY, J. L. Organização e Projeto de Computadores: A Interface Hardware/Software, 3ª Edição, Ed. Campus, 2005.
STALLINGS, W. Arquitetura e Organização de Computadores, 5ª Edição, Prentice-Hall, 2002.
TANENBAUM, A. S. Organização Estruturada de Computadores, 4ª Edição, LTC, 1999.
WEBER, R. F. Fundamentos da Arquitetura de Computadores. 2ª Edição, UFRGS - Sagra-Luzzato, 2001.

Saudações!

Com o intuito de conversar sobre os assuntos que gosto, inicio este blog para podermos trocar conhecimentos e experiências.

Pretendo postar conteúdos das áreas de matemática, física, computação e tecnologia, desenvolvidos por mim e também artigos de outros autores.

Não deixem de ler o aviso geral no rodapé de todas as páginas.

Sejam bem-vindos!