OpenLLM-France/wikimedia huggingface dataset:
# Referências

Neste módulo, são apresentadas as referências usadas na construção do livro de Bioquímica, sendo todas elas de leitura recomendada.

## Gerais

* NELSON, David L., COX, Michael M., "Lehninger Principles of Biochemistry", 4ª edição, W. H. Freeman, 2005, ISBN 978-0716743392
* BLACK, Jacquelyn G., "Microbiology: principles and applications", 3ª edição, Prentice-Hall, New Jersey (E.U.A), 1996, ISBN 0-13-190745-X
* PURVES, William K., ORIANS, Gordon H., HELLER, H. Craig, "Life: The Science of Biology", 4ª edição, Sinauer Associates, Sunderland (E.U.A.), 1995, ISBN 0-7167-2629-7

### História

* BROCK, William, H., "The Fontana History of Chemistry", Fontana Press, Londres (Reino Unido), 1992, ISBN 0-00-686173-3

## Ligações externas

* Página oficial das normas de nomenclatura em Bioquímica da União Internacional de Bioquímica e Biologia Molecular (IUBMB).
* Página oficial das normas de nomenclatura em Química da União Internacional de Química Pura e Aplicada (IUPAC).
# Blender 3D

* Esta página de desambiguação lista livros associados a um mesmo título. Se uma ligação interna o conduziu até aqui, sugerimos que a corrija para apontá-la diretamente ao livro adequado.
"Blender 3D" pode se referir a um dos seguintes wikilivros:
* Guia de sobrevivência para Blender 3D — Livro trazendo informações básicas sobre o uso do aplicativo;
* Tornando-se profissional em Blender 3D (Noob to Pro) — Uma série de tutoriais designados a ajudar novatos absolutos a se tornarem proficientes com Blender;
* Animação de personagens no Blender 3D — Um tutorial sobre animação;
* Manual do Blender 3D.
# BlitzMax/Colaboradores

Aqui estão os usuários colaboradores do projeto.
# Guia do Linux/Iniciante+Intermediário/Manutenção do sistema/Tarefas automáticas de manutenção do sistema
## Tarefas automáticas de manutenção do sistema

Os arquivos responsáveis pela manutenção automática do sistema se encontram em arquivos individuais localizados nos diretórios /etc/cron.daily, /etc/cron.weekly e /etc/cron.montly. A quantidade de arquivos depende da quantidade de pacotes instalado em seu sistema, porque alguns programam tarefas nestes diretórios e não é possí­vel descrever todas, para detalhes sobre o que cada arquivo faz veja o cabeçalho e o código de cada arquivo.
Estes arquivos são executados pelo cron através do arquivo /etc/crontab. Você pode programar quantas tarefas desejar, para detalhes veja [#s-manut-cron cron, Seção 26.11] e [#s-manut-at at, Seção 26.12]. Alguns programas mantém arquivos do cron individuais em /var/spool/cron/crontabs que executam comandos periodicamente.
# Guia do Linux/Iniciante+Intermediário/Manutenção do sistema/Verificando e marcando setores danificados em um HD
## Verificando e marcando setores danificados em um HD

Um dos sintomas de um disco rí­gido que contém setores danificados (bad blocks) é a mudança repentina do sistema de arquivos para o modo somente leitura, o aparecimento de diversas mensagens no syslog indicando falha de leitura do hd, uma pausa se segundos no sistema junto com o led de atividade de disco ligado. Se isto acontece com você, uma forma de solucionar este inconveniente é executar o teste na superfí­cie fí­sica do disco para procurar e marcar os blocos problemáticos como defeituosos.
Em alguns casos, os blocos defeituosos ocorrem isoladamente no disco rí­gido, não aumentando mais sua quantidade, entretanto, se o número de blocos danificados em seu disco está crescendo em um curto espaço de tempo, comece a pensar na troca do disco rí­gido por um outro. Existem empresas que recuperam HDs mas pelo valor cobrado por se tratar de um serviço delicado, só compensa caso você não tenha o backup e realmente precisa dos dados do disco.
Para fazer uma checagem de HD no sistema de arquivos ext2 ou ext3, proceda da seguinte forma:
* Se possí­vel, faça um backup de todos os dados ou dos dados essenciais da partição será checada.
* Inicie o sistema por um disquete de boot ou CD de recuperação. Este passo é útil pois em alguns casos, pode ocorrer a perda de interrupção do disco rí­gido e seu sistema ficar paralisado. Só o método de checar o HD usando um disquete de boot lhe fará agendar uma parada no sistema e notificar os usuários, evitando sérios problemas do que fazendo isto com um sistema em produção.
* Execute o badblocks usando a opção -o para gravar os possí­veis blocos defeituosos encontrados para um arquivo: badblocks -v -o blocos-defeituosos.lista /dev/hd??.
Substitua o dispositivo /dev/hd?? pelo dispositivo que deseja verificar. A checagem do badblocks deverá ser feita para cada partição existente no disco rí­gido. O tempo de checagem dependerá da velocidade do disco rí­gido, velocidade do barramento, cabo de dados utilizado, velocidade de processamento e é claro, do estado do disco rí­gido (quantos setores defeituosos ele tem).
* Após concluir o badblocks, veja se foram encontrados blocos defeituosos. Caso tenha encontrado, siga para o próximo passo.
* Para marcar os blocos encontrados pelo badblocks como defeituosos, execute o comando: fsck.ext3 -l blocos-defeituosos.lista -f /dev/hd??.
Substitua o dispositivo, pelo dispositivo que verificou com o badblocks. O arquivo blocos-defeituosos.list contém a lista de blocos gerada pelo badblocks que serão marcados como defeituosos.
Para mais detalhes sobre as opções de checagem usada pelos programas, veja [#s-manut-badblocks badblocks, Seção 26.4] e [#s-manut-checagem-ext2 fsck.ext2, Seção 26.1.1].
# Guia do Linux/Iniciante+Intermediário/Manutenção do sistema/at
## at

O at agenda tarefas de forma semelhante ao cron com uma interface que permite a utilização de linguagem natural nos agendamentos. Sua principal aplicação é no uso de tarefas que sejam disparadas somente uma vez. Uma caracterí­stica deste programa é a execução de aplicativos que tenham passado de seu horário de execução, muito útil se o computador é desligado com frequência ou quando ocorre uma interrupção no fornecimento de energia.
Para utilizar o at, instale-o com o comando: apt-get install at. O próximo passo é criar os arquivos /etc/at.allow e at.deny. Estes arquivos são organizados no formato de um usuário por linha. Durante o agendamento, é verificado primeiro o arquivo at.allow (lista de quem pode executar comandos) e depois o at.deny (lista de quem NÃO pode executar comandos). Caso eles não existam, o agendamento de comandos é permitido a todos os usuários.
Abaixo seguem exemplos do agendamento através do comando at:

### echo ls | at 10am today

    Executa as 10 da manha de hoje

### echo ls | at 10

    05 today
    Executa as 10:05 da manha de hoje

### echo ls | at 10

    05pm today
    Executa as 10:05 da noite de hoje

### echo ls | at 22

    05 today
    Executa as 22:05 da noite de hoje

### echo ls | at 14

    50 tomorrow
    Executa o comando amanhã as 14:50 da tarde

### echo ls | at midnight

    Executa o comando a meia noite de hoje

### echo ls | at midnight tomorrow

    Executa o comando a meia noite de amanhã

### echo ls | at noon

    Executa o comando de tarde (meio dia).

### at -f comandos.txt teatime

    Executa os comandos especificados no arquivo "comandos.txt" no horário do café da tarde (as 16:00 horas).

### at -f comandos.txt now +3 minutes

    Executa os comandos especificados no arquivo "comandos.txt" daqui a 3 minutos. Também pode ser especificado "hours" ou "days".

### at -f comandos.txt tomorrow 3 hours

    Executa os comandos especificados no arquivo "comandos.txt" daqui a 3 horas no dia de amanhã. (se agora são 10:00, ela será executada amanhã as 13:00 da tarde).
Todas as tarefas agendadas são armazenadas em arquivos dentro do diretório /var/spool/cron/atjobs. A sintaxe de comandos para gerenciar as tarefas é semelhante aos utilitários do lpd: Para ver as tarefas, digite atq. Para remover uma tarefa, use o comando atrm seguido do número da tarefa obtida pelo atq.
# Guia do Linux/Iniciante+Intermediário/Manutenção do sistema/fsck.minix
## fsck.minix

Verifica o sistema de arquivos minix em um dispositivo.
fsck.minix [opções] [dispositivo]
Onde:

### dispositivo

    Partição, disquete ou arquivo que contém o sistema de arquivos Minix que será verificado

### -f

    Verifica o sistema de arquivos mesmo se ele estiver perfeito.

### -r

    Permite reparo manual do sistema de arquivos

### -a

    Permite um reparo automático do sistema de arquivos. É recomendado fazer o reparo manual.

### -v

    Verbose - Mostra detalhes durante a execução do programa

### -s

    Exibe detalhes sobre os blocos de root.
Exemplo: fsck.minix -f /dev/hda8, fsck.minix -vf /dev/hda8
# Guia do Linux/Iniciante+Intermediário/Manutenção do sistema/Recuperando partições apagadas
## Recuperando partições apagadas

Caso tenha apagado uma partição acidentalmente ou todas as partições do seu disco, uma forma simples de recuperar todos os seus dados é simplesmente recriar todas as partições com o tamanho EXATAMENTE igual ao existente anteriormente. Isto deve ser feito dando a partida com um disquete ou CD de inicialização. Após recriar todas as partições e seus tipos (83, 82 8e, etc), execute novamente o lilo para recriar o setor de boot do HD e garantir que a máquina dará o boot.
A recuperação desta forma é possí­vel porque quando se cria ou apaga uma partição, você está simplesmente delimitando espaço onde cada sistema de arquivos gravará seus dados, sem fazer nenhuma alteração dentro dele. Assim, é também útil manter uma cópia dos tamanhos usados durante o processo de criação das partições para ser usado como recuperação em uma possí­vel emergência.
# Guia do Linux/Iniciante+Intermediário/Manutenção do sistema/badblocks
## badblocks

Procura blocos defeituosos em um dispositivo. Note que este apenas pesquisa por blocos defeituosos, sem alterar a configuração do disco. Para marcar os blocos defeituosos para não serem mais usados, utilize a opção -l do fsck (veja [#s-manut-checagem-ext2 fsck.ext2, Seção 26.1.1]).
badblocks [opções] [dispositivo]
Onde:

### dispositivo

    Partição, disquete ou arquivo que contém o sistema de arquivos que será verificado.

### -b [tamanho]

    Especifica o [tamanho] do bloco do dispositivo em bytes

### -o [arquivo]

    Gera uma lista dos blocos defeituosos do disco no [arquivo]. Este lista pode ser usada com o programa fsck.ext2 junto com a opção -l.

### -s

    Mostra o número de blocos checados durante a execução do badblocks.

### -v

    Modo verbose - São mostrados mais detalhes.

### -w

    Usa o modo leitura/gravação. Usando esta opção o badblocks procura por blocos defeituosos gravando alguns padrões (0xaa, 0x55, 0xff, 0x00) em cada bloco do dispositivo e comparando seu conteúdo.
Nunca use a opção -w em um dispositivo que contém arquivos pois eles serão apagados!
Exemplo: badblocks -s /dev/hda6, badblocks -s -o bad /dev/hda6
# Guia do Linux/Iniciante+Intermediário/Manutenção do sistema/cron
## cron

O cron é um daemon que permite o agendamento da execução de um comando/programa para um determinado dia/mês/ano/hora. É muito usado em tarefas de arquivamento de logs, checagem da integridade do sistema e execução de programas/comandos em horários determinados.
As tarefas são definidas no arquivo /etc/crontab e por arquivos individuais de usuários em /var/spool/cron/crontabs/[usuário] (criados através do programa crontab). Adicionalmente a distribuição Debian utiliza os arquivos no diretório /etc/cron.d como uma extensão para o /etc/crontab.
Para agendar uma nova tarefa, basta editar o arquivo /etc/crontab com qualquer editor de texto (como o ae e o vi) e definir o mês/dia/hora que a tarefa será executada. Não é necessário reiniciar o daemon do cron porque ele verifica seus arquivos a cada minuto. Veja a seção [#s-manut-cron-formato O formato de um arquivo crontab, Seção 26.11.1] para entender o formato de arquivo cron usado no agendamento de tarefas.

### O formato de um arquivo crontab

O arquivo /etc/crontab tem o seguinte formato:
Onde:

#### Minuto

    Valor entre 0 e 59

#### Hora

    Valor entre 0 e 23

#### Dia do Mês

    Valor entre 0 e 31

#### Mês

    Valor entre 0 e 12 (identificando os meses de Janeiro a Dezembro)

#### Dia da Semana

    Valor entre 0 e 7 (identificando os dias de Domingo a Sábado). Note que tanto 0 e 7 equivalem a Domingo.

#### usuário

    O usuário especificado será usado para executar o comando (o usuário deverá existir).

#### comando

    Comando que será executado. Podem ser usados parâmetros normais usados na linha de comando.
Os campos do arquivo são separados por um ou mais espaços ou tabulações. Um asterisco * pode ser usado nos campos de data e hora para especificar todo o intervalo disponí­vel. O hí­fen - serve para especificar perí­odos de execução (incluindo a o número inicial/final). A ví­rgula serve para especificar lista de números. Passos podem ser especificados através de uma /. Veja os exemplos no final desta seção.
O arquivo gerado em /var/spool/cron/crontabs/[usuário] pelo crontab tem o mesmo formato do /etc/crontab exceto por não possuir o campo usuário (UID), pois o nome do arquivo já identifica o usuário no sistema.
Para editar um arquivo de usuário em /var/spool/cron/crontabs ao invés de editar o /etc/crontab use crontab -e, para listar as tarefas daquele usuário crontab -l e para apagar o arquivo de tarefas do usuário crontab -r (adicionalmente você pode remover somente uma tarefa através do crontab -e e apagando a linha correspondente).
OBS: Não esqueça de incluir uma linha em branco no final do arquivo, caso contrário o último comando não será executado.
O cron define o valor de algumas variáveis automaticamente durante sua execução; a variável SHELL é definida como /bin/sh, PATH como /usr/bin:/bin, LOGNAME, MAILTO e HOME são definidas através do arquivo /etc/passwd. Os valores padrões destas variáveis podem ser substituí­dos especificando um novo valor nos arquivos do cron.
Exemplos de um arquivo /etc/crontab:
# Guia do Linux/Iniciante+Intermediário/Manutenção do sistema/reiserfsck
## reiserfsck

Verifica um sistema de arquivos reiserfs em sistema de arquivos.
reiserfsck [opções] [dispositivo]

### dispositivo

    Dispositivo que contém o sistema de arquivos reiserfs que será verificado.

### -a

    Mostra detalhes sobre o sistema de arquivos e sai

### -j arquivo

    Especifica um arquivo de Journal alternativo usado pelo sistema de arquivos.

### -q quiet

    Não exibe mensagens sobre o status da checagem do sistema de arquivos.

### -S

    Constrói a árvore de todos os blocos do dispositivo.
O reiserfsck possui outros modos de operação além de checagem (o padrão), para detalhes veja a página de manual do programa.
Exemplos: reiserfsck /dev/hda1, reiserfsck -S /tmp/arq-reiserfs.
# Algoritmos e Estruturas de Dados/Filas

Fila, também chamado de FIFO (acrônimo do inglês First In, First Out , primeiro a entrar, primeiro a sair) é o nome dado a estrutura de dados em que ocorrem inserção de dados em um extremo e sua saída por outro, obedecendo assim "a ordem de chegada" como se fosse uma fila comum de pessoas. A implementação pode realizar-se com ajuda de vetores, assim como através do uso de ponteiros. Se a fila é implementada com o uso de vetores, o número máximo de elementos armazenados deve ser estabelecido no código do programa antes da compilação (fila estática) ou durante sua execução (fila pseudo-estática).

## Operações básicas

As filas tem duas operações básicas:
* Enqueue: inserir um elemento no final da fila.
* Dequeue: remover um elemento do começo da fila.
# Algoritmos e Estruturas de Dados/O que são estruturas de dados?

Estruturas de dados (Data Structures) é o nome dado a organização de dados e algoritmos de forma coerente e racional de modo a otimizar o seu uso. De acordo com o modo como um conjunto de dados são organizados e como as operações que são efetuadas sobre estes dados pode-se solucionar de forma simples problemas extremamente complexos.
Existem diversos modelos de estruturas de dados, e novos modelos são criados constantemente pois acompanham também a evolução dos algoritmos e das linguagens de programação. Neste livro iremos abordar as estruturas clássicas, as quais podem ser utilizadas com sucesso na maioria dos casos.
É um dos temas fundamentais da ciência da computação, utilizado nas mais variadas áreas e para as mais variadas finalidades. No entanto para começarmos a entender o conceito devemos, antes entender o conceito de algoritmos, pois algoritmos manipulam dados.
Dados quando estão organizados de uma forma coerente representam uma estrutura de dados. Escolher uma estrutura de dados ideal pode tornar-se um problema difícil para uma determinada solução. As pesquisas e estudos das estruturas de dados estão em constante desenvolvimento, apesar disso, existem estruturas que têm se mostrado padrão, ou seja, são clássicas.
Estruturas de dados possuem características básica, no entanto finalidades bastante diversas. Podem ser implementadas usando vetores (estático) ou ponteiro (dinâmico).
# Algoritmos e Estruturas de Dados/O que é um Algoritmo?
#### CAPÍTULO 1
### 1.1 O que é um Algoritmo?
#### Algoritmo

    Um algoritmo é uma sequência finita e não ambígua de instruções computáveis para solucionar um problema.
Um algoritmo consiste em uma expressão textual das etapas da resolução de algum problema, seja ele computacional ou não. Um exemplo clássico de algoritmo não-computacional é uma receita de bolo. Outros exemplos são instruções de montagem de um brinquedo ou equipamento, instruções para ir de um lugar a outro e receitas médicas.
Imagine a fabricação de um bolo como sendo o problema. A receita desse bolo seria o algoritmo. Os ingredientes seriam os dados de entrada. Os recipientes utilizados para fazer o bolo são as variáveis envolvidas no processo. O "modo de fazer" consiste na descrição dos passos a serem utilizados para obter a solução do problema.
Em computação, podemos definir um algoritmo como sendo uma forma genérica de se representar procedimentos computacionais que, quando executados, levam à solução de uma classe de problemas de natureza semelhante.
# Algoritmos e Estruturas de Dados/Selection e Insertion
## Insertion
### Implementações
#### Pseudocódigo

Segue uma versão simples do pseudocódigo do algoritmo, com vetores começando em zero:
# Algoritmos e Estruturas de Dados/Listas

Lista é definido como uma implementação de um tipo de dado abstrato (ADT), formalizando o conceito de uma coleção ordenada de entidades.Uma lista trata-se de uma série finita de dados, cuja principal propriedade baseia-se na posição relativa dos elementos dispostos linearmente. Uma lista tem as seguintes propriedades:
Diversas operações podem ser realizadas sobre uma lista como :
* Acessar um elemento qualquer da lista;
* Inserir um elemento em uma posição especificada da lista;
* Excluir um elemento em uma posição especificada da lista;
* Combinar duas listas em uma;
* Particionar uma lista em duas;
* Ordenar elementos de uma lista;
* e outras.

## Casos especiais de listas

Conforme o modo como uma lista é estruturada, e como esta é manipulada, podemos nos referir a ela de forma mais específica.

### Pilha

Pilha é um modelo de lista onde as operações de inserção, remoção e acesso aos dados são feitos em um único extremo. Por isto este modelo é também chamado de LIFO (Last In - First Out).

### Filas

Fila é um modelo de lista onde a operação de inserção é efetuada por um extremo e a remoção pelo outro extremo. Por isto este modelo é também chamado de FIFO (First In - First Out).
# Algoritmos e Estruturas de Dados/Para que servem os algoritmos?

Os algoritmos são instruções que visam alcançar soluções para problemas computacionais, isto é, problemas que podem ser resolvidos utilizando um ou mais computadores. Nesse sentido, as soluções de problemas computacionais são apresentadas por meio de algoritmos, que servem para estruturar ou ordenar determinadas etapas de um processo.
# Algoritmos e Estruturas de Dados/Recursividade

Recursão é um método de programação no qual uma função pode chamar a si mesma. O termo é usado de maneira mais geral para descrever o processo de repetição de um objeto de um jeito similar ao que já fora mostrado. Muitos problemas em computação tem a propriedade de que cada instância sua contém uma instância menor do mesmo problema.
A chamada à função proveniente de um meio externo a ela é denominada chamada externa e cada uma das chamadas internas a si mesma é denominada chamada recursiva.
Um método comum de simplificação é dividir o problema em subproblemas do mesmo tipo. Como técnica de programação, este método é conhecido como dividir e conquistar e é a chave para a construção de muitos algoritmos importantes, bem como uma parte fundamental da programação dinâmica.
A recursão na programação é bem exemplificada quando uma função é definida em termos de si mesma. Um exemplo da aplicação da recursão são os parsers (analisadores gramaticais) para linguagens de programação. Uma grande vantagem da recursão é que um conjunto infinito de sentenças possíveis, designs ou outros dados podem ser definidos, analisados ou produzidos por um programa de computador finito.
Relações de recorrência são equações que definem uma ou mais seqüências recursivamente. Alguns tipos específicos de relações de recorrência podem ser “resolvidos” para que se obtenha uma definição não-recursiva.
Um exemplo clássico de recursão é a definição do cálculo do fatorial de um número, dada aqui no algoritmo a seguir:
A função chama a si mesma recursivamente em uma versão menor da entrada (n - 1) e multiplica o resultado da chamada por n, até que alcance o caso base, de modo análogo à definição matemática de fatorial.
Como pode-se notar pela primeira condição, todo processo recursivo necessita de uma condição de parada para evitar um loop infinito. Neste caso, quando a função fatorial atinge o valor menor ou igual a 1 ele passa a retornar o valor de volta para a função.
No entanto, a recursão não é sempre a melhor opção. Como pode-se ver na questão acima, um laço comum resolve o problema iterativamente. Desta forma, quando o problema é pequeno tente resolvê-lo diretamente e utilizar a recursão apenas quando o problema for grande, consumindo tempo demais em um laço.

## Resumo

* Uma recursão em computação é uma função que chama a si mesma.
* Para evitar um loop infinito é necessário estabelecer uma condição de parada.

## Bibliografia

* Recursividade na Wikipédia
* Recursão e algoritmos recursivos-Paulo Feofiloff
# Algoritmos e Estruturas de Dados/Objetivo

Este wikilivro tem a pretensão de tratar com aprofundamento sobre estruturas de dados e suas aplicações em algoritmos computacionais.