Case Studio - Banco de Dados

Na última aula de Banco de Dados conhecemos o software Case Studio, uma ferramenta para construção de ERs, anteriormente estavamos fazendo as tabelas no papel mesmo, meio incômodo, mas necessário pra pegar a lógica.
Este software apresenta várias ferramentas que facilitam e agilizam a criação dos modelos, dos mais simples até os mais complexos, estamos criando modelos básicos por enquanto em MySQL 5, um SGDB (sistema de gerenciamento de banco de dados), o MySQL é uns dos mais populares do mundo.
Entre as facilidades que o software proporciona ele é capaz de criar automaticamente a terceira tabela de chavez compostas, quando há ligações de "vários pra vários".
Quanto as informações das tabelas, é possível e necessário classifica-las, quanto ao tipo de dados que ela conterá.

Tirei as tabelas de: Criar Web. Lá só tem coisa de fundamento acessem.

"Os tipos de dados SQL se classificam em 13 tipos de dados primários e de vários sinônimos válidos reconhecidos por tais tipos de dados. Os tipos de dados primários são:"

Tipo de DadosLongitudeDescrição
BINARY1 bytePara consultas sobre tabela anexa de produtos de banco de dados que definem um tipo de dados Binário.
BIT1 byteValores Sim/Não ou True/False
BYTE1 byteUm valor inteiro entre 0 e 255.
COUNTER4 bytesUm número incrementado automaticamente (de tipo Long)
CURRENCY8 bytesUm inteiro escalável entre 922.337.203.685.477,5808 e 922.337.203.685.477,5807.
DATETIME8 bytesUm valor de data ou hora entre os anos 100 e 9999.
SINGLE4 bytesUm valor em ponto flutuante de precisão simples com uma classificação de - 3.402823*1038 a -1.401298*10-45 para valores negativos, 1.401298*10- 45 a 3.402823*1038 para valores positivos, e 0.
DOUBLE8 bytesUm valor em ponto flutuante de dupla precisão com uma classificação de - 1.79769313486232*10308 a -4.94065645841247*10-324 para valores negativos, 4.94065645841247*10-324 a 1.79769313486232*10308 para valores positivos, e 0.
SHORT2 bytesUm inteiro curto entre -32,768 e 32,767.
LONG4 bytesUm inteiro longo entre -2,147,483,648 e 2,147,483,647.
LONGTEXT1 byte por caractereDe zero a um máximo de 1.2 gigabytes.
LONGBINARYSegundo se necessiteDe zero 1 gigabyte. Utilizado para objetos OLE.
TEXT1 byte por caractereDe zero a 255 caracteres.

A seguinte tabela recolhe os sinônimos dos tipos de dados definidos:

Tipo de DadoSinônimos
BINARYVARBINARY
BITBOOLEAN
LOGICAL
LOGICAL1
YESNO
BYTEINTEGER1
COUNTERAUTOINCREMENT
CURRENCYMONEY
DATETIMEDATE
TIME
TIMESTAMP
SINGLEFLOAT4
IEEESINGLE
REAL
DOUBLEFLOAT
FLOAT8
IEEEDOUBLE
NUMBER
NUMERIC
SHORTINTEGER2
SMALLINT
LONGINT
INTEGER
INTEGER4
LONGBINARYGENERAL
OLEOBJECT
LONGTEXTLONGCHAR
MEMO
NOTE
TEXT ALPHANUMERIC
CHAR - CHARACTER
STRING - VARCHAR
VARIANT (Não Admitido)VALUE

Nossa turminha...

Adobe Premiere - Edição de Vídeos

O Adobe Premiere é um software de edição de vídeo avançado, talvez o mais usado no meio profissional do mundo, devido a qualidade do software e suas diversas opções.
Neste semestre a matéria de edição de videos, realizada no Premiere está show! talvez a matéria que a turma mais gostou, pois convenhamos, trabalhar com multimidia é legal mesmo.
A matéria é passada pelo professor Michel de Souza, por enquanto estamos no básico, conhecendo o software, aliás, nunca tinha visto um programa com tantos botões pra clicar na vida, de primeira parace ser complexo, mas quando se entende as funcionalidades de cada, fica mais amigável.
Um vídeo é formado por vários frames, cada frame representa uma imagem minimamente diferente da outra, uma taxa razoável de frames é de pelo menos 30FPS, significa que a cada segundo, 30 imagens diferentes se passam, dando assim impressão de movimento, formando o vídeo. as taxas indicadas variam para cada tipo de serviço, se o vídeo for para TV obviamente a taxa deve ser maior do vídeos que estão não web. O sucesso de um vídeo como propaganda principalmente, também depende do audio de fundo, os frames devem acompanhar a batida da música, e se adequar ao assunto.

Alguns comandos básicos de Linux

NAVEGAÇÃO:
cd > entra no diretório padrão do usuário /home/usuário
cd #none do diretório# > entra no diretório (pasta).
ls > exibe o conteúdo do diretório.
pwd > mostra em qual diretório você se encontra.
locate #nome arquivo#. #extensão# > localiza arquivos dentro de um diretório
history > lista ultimos 500 comandos digitados
vi > ferramenta para visualização e edição de arquivos.
cat #nome arquivo# > visualiza arquivos.

ARQUIVOS:
mkdir #nome diretório# > cria uma pasta
cp -rf #nome arquivo# #diretório destino# > copia pastas e todos os arquivos contidos nela
mv -rf #nome arquivo# #diretório destino# > move pastes e todos os arquivos contidos nela
rm #nome arquivo# > apaga um ou mai arquivos.
rmdir #nome da pasta# > apaga pastas vazias
rmdir -rf #nome pasta# > apaga pastas e todos os arquivos dentro dela.

USUÁRIOS:
su > fazer login como usuário root. (utilizando senha do root).
sudo -s > fazer login como usuário root (utilizando sua senha).
useradd #nome# ou adduser #nome#> cria usuário
passwd #nome de usuário# > cria ou muda a senha de um usuário.

CONFIGURAÇÃO:
ifconfig > visualizar ip e informações de rede.

OUTROS:
date > exibe hora e data.
cal > exibe calendário

Estilos do Relatório

Normal: Utilizando para textos de todo o documento:
• Fonte: Arial;
• Tamanho: 12;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 2cm;
• Alinhamento do Texto: Justificado;
• Recuo antes: 0cm
• Recuo depois: 0cm

Título: Utilizando para os títulos principais e centralizados do trabalho
• Fonte: Arial;
• Tamanho: 12;
• Negrito;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Alinhamento do Texto: Centralizado;
• Recuo antes: 5cm (deve estar a 8cm da borda, 3 já são da própria borda);
• Recuo depois: 0cm;

Título 1: Utilizando para os títulos principais de capítulos do trabalho conforme a formatação da SEÇÃO PRIMÁRIA
• Fonte: Arial;
• Tamanho: 12;
• Negrito;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Texto: Justificado;
• Recuo antes: 5cm (deve estar a 8cm da borda, 3 já são da própria borda);
• Recuo depois: 0cm;

Título 2: Utilizando para os títulos da SEÇÃO SECUNDÁRIA
• Fonte: Arial;
• Tamanho: 12;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Alinhamento do Texto: Justificado;
• Recuo antes: 0cm;
• Recuo depois: 0cm;

Título 3: Utilizando para os títulos da Seção Terciária
• Fonte: Arial;
• Tamanho: 12;
• Negrito;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Alinhamento do Texto: Justificado;
• Recuo antes: 0cm;
• Recuo depois: 0cm;

Título 4: Utilizando para os títulos da Seção Quaternária
• Fonte: Arial;
• Tamanho: 12;
• Versal;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Alinhamento do Texto: Justificado;
• Recuo antes: 0cm;
• Recuo depois: 0cm;

Título 5: Utilizando para os títulos da Seção Quintenária
• Fonte: Arial;
• Tamanho: 12;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Alinhamento do Texto: Justificado;
• Recuo antes: 0cm;
• Recuo depois: 0cm;

Sumário: Utilizando somente para o título de sumário do trabalho, não devendo ser apresentado juntamente com demais títulos no sumário.
• Fonte: Arial;
• Tamanho: 12;
• Negrito;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Alinhamento do Texto: Justificado;
• Recuo antes: 0cm;
• Recuo depois: 0cm;

Figuras Utilizando para o titulo de figuras
• Fonte: Arial;
• Tamanho: 12;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Alinhamento do texto: Justificado;
• Recuo antes: 0cm;
• Recuo depois: 0cm;

Tabelas: Utilizando para o titulo de tabelas
• Fonte: Arial;
• Tamanho: 12;
• Espaçamento entre linhas: 1,5;
• Recuo de parágrafo: 0cm;
• Alinhamento do Texto: Justificado;
• Recuo antes: 0cm;
• Recuo depois: 0cm;

Citações: Utilizando para formatar as citações que ultrapassam as três linhas
• Fonte: Arial;
• Tamanho: 10;
• Espaçamento entre linhas: simples;
• Recuo de parágrafo: 0cm;
• Alinhamento do Texto: Justificado;
• Recuo esquerdo: 4cm;

Metodologia 1º Semestre

Olá galera, chegando na hora de fazer o relátorio do semestre, e ninguém lembra mais de metodologia?

• Folha de rosto
• Sumário
• Introdução
• Caminho metodológico
o Tema
o Delimitação do tema
o Problema
o Hipóteses
o Objetivo
 Objetivo geral
 Objetivos específicos
o Justificativa
o Metodologia
o Definição de Termos
o Cronograma
o Recursos
 Recursos Humanos
 Recursos Institucionais
 Recursos materiais
o Referências
o Apêndices
o Anexos

Dicas da professora Patrícia.

• Usar impessoalidade
• Verbos no futuro para o projeto

Tutorias de photoshop

Este semestre uma das matérias que temos é Photoshop, um software de editoração de imagens bitmap avançado, estava navegando pela net e achei este site com vários tutoriais de Photoshop.
Achei bem legal e resolvi postar aqui o link, se alguém estiver interressado em aprender alguns efeitos e ferrmantas novas recomendo acessar.

Como instalar KDE no Ubuntu - (Kubuntu)

Na linha de comando (terminal):

- logar como root (sudo -s).
- apt-get update.
- apt-get install kubuntu-desktop.
- após escolher o gerenciador de inicialização, kdm(KDE) ou gdm(Gnome).

OBS: Pode demorar um pouco, dependendo da velocidade da sua internet, pois todos os pacotes ( de update e do kubunto desktop) serão baixados.
Pode também estar em inglês.

E a galera gostou do Compiz!!!

Hoje (17/09/09), na aula de Linux, o professor Leonardo mostrou os efeitos do Compiz no Linux Ubuntu 9.04, desde a parte de instalação até configuração. Parece que toda galera gostou...

Relações entre distribuições de Linux

Linguagens de Programação

Retirado do livro "Linux Entendendo o Sistema" por Carlos E. Morimoto.

Os computadores são funcionários quase perfeitos. Fazem tudo o que mandamos, não reclamam, não se importam de trabalhar até tarde da noite, não cobram hora extra nem tiram férias. Mas, em compensação, também não pensam. Para que façam qualquer coisa é preciso explicar tudo com os mínimos detalhes e na língua deles.
Considerando que tudo o que os computadores conseguem entender são seqüências intermináveis de números binários, fornecer estas "instruções" pode ser muito penoso para um ser humano. Você consegue se imaginar lendo um manual de 5.000 páginas e decorando um a um centenas de códigos binários que representam as instruções do processador?
Se os programadores precisassem programar diretamente em binários, decorando seqüências como 10111011101101101110110011001010 para cada instrução do processador e para cada endereço de memória a ser acessado, provavelmente não teríamos mais programadores; já estariam todos loucos.
Para facilitar as coisas, começaram a ser desenvolvidas as linguagens de programação, que diferem na sintaxe e recursos, mas têm um ponto em comum, que é a existência de um compilador. Seja programando em C, ou seja em Kylix, você usará um editor para escrever seu programa, respeitando as regras da linguagem escolhida e em seguida rodará o compilador, que interpretará os comandos que formam o seu programa e os transformará em um arquivo binário, que contém as instruções binárias que são entendidas pelo processador.
No Windows não temos muito contato com código fonte, pois os programas são quase sempre distribuídos apenas em formato binário, que você não tem como alterar. Mas, no caso do Linux, temos a possibilidade de baixar o código fonte de praticamente todos os programas que usamos no dia-a-dia. Muita gente aprende a programar fuçando no código fonte de algum programa que conhece bem, começando com pequenas traduções e mudanças, e acaba entendendo bem a sintaxe da linguagem e vários dos truques usados. Depois de cada rodada de alterações, é possível compilar todo o código, abrir o programa e verificar de que forma elas alteraram o programa final.
A vantagem de usar linguagens de programação é que o desenvolvedor passa a trabalhar com instruções como "if", "else", etc. além de todas as facilidades oferecidas pela linguagem ao invés de gigantescos endereços binários. Sem dúvida muito mais simples.
Existem diversas linguagens de programação. Meu objetivo aqui é dar algumas noções básicas sobre as peculiaridades e utilidade de algumas delas
Para começar, existe uma linguagem "básica" para quem quer aprender a programar, ensinada nos cursos de lógica da programação, o pseudocódigo. Ele não é uma linguagem "de verdade", mas sim uma maneira mais simples para aprender os fundamentos usados em todas as linguagens de programação.
Podemos começar com um exemplo simples. Vamos fazer um programa capaz de tomar uma decisão fácil. Ele pergunta a nota do aluno e diz se ele passou ou não. Para um ser humano isso seria um problema muito elementar, mas para o computador as coisas não são assim tão simples. Lembre-se de que ele é burro e precisa ser orientado passo a passo. Nosso programinha em pseudocódigo poderia ficar assim:

escreva: "Qual é a nota do aluno?"
leia nota
se nota maior ou igual a sete
então:
escreva "Ele passou"
senão:
escreva: "Ele foi reprovado"
fim do se
fim do programa


Este programinha perguntaria a nota e, com base no número que for digitado, avisaria se o aluno passou ou não.
Ele poderia ser escrito em qualquer linguagem, mas a lógica seria a mesma. De acordo com os recursos oferecidos pela linguagem escolhida, ele poderia ter uma interface simples em modo texto, uma interface gráfica mais trabalhada, aparecer no meio de uma pagina web e assim por diante. O mesmo programinha escrito em shell script, a linguagem mais elementar que temos no Linux, onde utilizamos comandos de terminal, poderia ficar assim:

echo "Qual é a nota do aluno"
read nota
if [ "$nota" -ge "7" ]
then
echo "Ele passou"
else
echo "Ele foi reprovado"
fi

As linguagens de programação são conjuntos de padrões e comandos que você pode usar para dar ordens para nossos amigos burros.
Assim como nas línguas faladas, existem diferenças de sintaxe, gramática e existem linguagens mais simples ou mais complicadas de aprender e linguagens mais adequadas para cada tipo de tarefa a realizar. Veja alguns exemplos de linguagens de programação:

- Assembly: O Assembly foi provavelmente a primeira linguagem de programação da história, surgida na década de 50, época em que os computadores ainda usavam válvulas. A idéia do Assembly é usar um comando em substituição a cada instrução de máquina.

Em se tratando de programação, o fato de uma linguagem ser "de baixo nível", não significa que ela é ruim, mas apenas que ela manipula diretamente as instruções e endereços de memória e, por isso, é mais trabalhosa e voltada para o desenvolvimento de aplicativos otimizados.

- Fortran: O Fortran foi uma das primeiras linguagens de alto nível da história. Enquanto o Assembly é chamado de linguagem de baixo nível, por nele utilizarmos diretamente as instruções e endereços do processador e memória, numa linguagem de alto nível temos várias funções prontas, o que facilita muito a programação, mas em compensação torna em muitos casos o programa maior e mais pesado, já que o compilador jamais conseguirá gerar um código tão otimizado quanto um programador experiente conseguiria.
Fortran é a contração de "Formula Translator". A primeira versão do Fortran foi criada no final da década de 50, mas a linguagem começou a ser usada em larga escala a partir da metade da década de 60, quando surgiram várias versões diferentes. Atualmente o Fortran é ainda usado em diversos aplicativos relacionados a engenharia. Ele é também ensinado em várias universidades, como uma forma mais prática de ensinar lógica da programação.

- Pascal: O Pascal é outra linguagem de alto nível, criada durante a década de 60. O Pascal é uma linguagem bastante estruturada, com regras bastante rígidas, o que a torna difícil de usar. Hoje em dia o Pascal original é pouco usado, mas seus descendentes diretos como o Free Pascal evoluíram muito. O próprio Kylix (junto com o Delphi) é uma evolução do Pascal.

- Cobol: Cobol significa "Common Business Oriented Language". Esta linguagem foi desenvolvida no final da década de 50, com o objetivo de ser uma plataforma de desenvolvimento para aplicações bancárias e financeiras em geral. Comparado com o Pascal e o Assembly, comuns na época, o Cobol é uma linguagem relativamente amigável, o que garantiu uma grande aceitação. Até hoje esta linguagem é usada em muitos sistemas bancários, o que explica a grande procura por programadores experientes nesta linguagem na época do bug do ano 2000.

- C: O C foi desenvolvido durante a década de 70, mas ainda é largamente utilizado. A grande vantagem do C é permitir escrever tanto programas extremamente otimizados para a máquina, como seria possível apenas em Assembly, e ao mesmo tempo vir com várias funções prontas, como uma linguagem de alto nível, que podem ser utilizadas quando não for necessário gerar um código tão otimizado.
A maior parte dos programas Linux e quase todo o Kernel foram escritos em C, o que explica o porquê do sistema ser tão rápido em algumas tarefas.

- C++: O C++ mantém os recursos do C original, mas traz muitos recursos novos, como recursos orientados a objetos, sendo também bem mais fácil de utilizar. O C++ é bastante usado atualmente para desenvolver muitos programas para várias plataformas. Ele é, por exemplo, a linguagem oficial do KDE e da maioria dos programas para ele.

- Python: O Python é uma linguagem de programação com uma sintaxe muito simples e intuitiva e ao mesmo tempo bastante poderosa, que pode ser usada por toda classe de usuários. É uma boa opção de linguagem para quem está começando a programar. No Kurumin, você pode abrir o interpretador do Python em Iniciar > Sistema > Desenvolvimento.

- Java: O Java é uma linguagem de programação multiplataforma, com uma sintaxe até certo ponto parecida com o C++, porém com bibliotecas diferentes. Os programas em Java podem ser executados em qualquer sistema operacional, desde que o interpretador esteja instalado.

Banco de Dados - Básico

Bancos de dados (ou bases de dados), são conjuntos de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados normalmente agrupa registros utilizáveis para um mesmo fim.
O termo “Aplicativo de Banco de dados” se refere a softwares que oferecem uma interface para o gerenciamento do banco de dados. O software que gerencia os dados é geralmente chamado de sistema gerenciador de banco de dados (SGBD) ou (se for embarcado) de “database engine”.
O modelo de dados mais adotado hoje em dia é o modelo relacional, onde as estruturas têm a forma de tabelas, compostas por tuplas (linhas) e colunas.
Um Aplicativo de Banco de dados é um tipo de software exclusivo para gerenciar um banco de dados. Aplicativos de banco de dados abrangem uma vasta variedade de necessidades e objetivos.
Em 1985, Edgar Frank Codd, criador do modelo relacional, publicou um artigo onde definia 12 regras para que um Sistema Gerenciador de Banco de Dados (SGBD) fosse considerado relacional:

Regra Fundamental:
Um SGBD relacional deve gerenciar seus dados usando apenas suas capacidades relacionais
Regra da informação:
Toda informação deve ser representada de uma única forma, como dados em uma tabela
Regra da garantia de acesso:
Todo dado (valor atômico) pode ser acessado logicamente (e unicamente) usando o nome da tabela, o valor da chave primária da linha e o nome da coluna.
Tratamento sistemático de valores nulos:
Os valores nulos (diferente do zero, da string vazia, da string de caracteres em brancos e outros valores não nulos) existem para representar dados não existentes de forma sistemática e independente do tipo de dado.
Catálogo dinâmico on-line baseado no modelo relacional:
A descrição do banco de dados é representada no nível lógico como dados ordinários (isso é, em tabelas), permitindo que usuários autorizados apliquem as mesmas formas de manipular dados aplicada aos dados comuns ao consultá-las.
Regra da sub-linguagem compreensiva:
Um sistema relacional pode suportar várias linguagens e formas de uso, porém deve possuir ao menos uma linguagem com sintaxe bem definida e expressa por cadeia de caracteres e com habilidade de apoiar a definição de dados, a definição de visões, a manipulação de dados, as restrições de integridade, a autorização e a fronteira de transações.
Regra da atualização de visões:
Toda visão que for teoricamente atualizável será também atualizável pelo sistema.
Inserção, atualização e eliminação de alto nível:
A capacidade de manipular a relação base ou relações derivadas como um operador único não se aplica apenas a recuperação de dados, mas também a inserção, alteração e eliminação de dados.
Independência dos dados físicos:
Programas de aplicação ou atividades de terminal permanecem logicamente inalteradas quaisquer que sejam as modificações na representação de armazenagem ou métodos de acesso internos.
Independência lógica de dados:
Programas de aplicação ou atividades de terminal permanecem logicamente inalteradas quaisquer que sejam as mudanças de informação que permitam teoricamente a não alteração das tabelas base.
Independência de integridade:
As relações de integridade específicas de um banco de dados relacional devem ser definidas em uma sub-linguagem de dados e armazenadas no catálogo (e não em programas).
Independência de distribuição:
A linguagem de manipulação de dados deve possibilitar que as aplicações permaneçam inalteradas estejam os dados centralizados ou distribuídos fisicamente.
Regra da Não-subversão:
Se o sistema relacional possui uma linguagem de baixo nível (um registro por vez), não deve ser possível subverter ou ignorar as regras de integridade e restrições definidas no alto nível (muitos registros por vez).

Tipos de Chaves: (as mais usadas).

* Candidata – Identifica as possíveis chaves primárias.

* Primária – Identifica o registro uma única vez.

* Estrangeira – Chave da segunda ou demais tabelas que referencia a chave primária da primeira tabela.

* Composta – Quando mais de um campo compõe a chave primária de uma tabela.

Formas Normais:

1ª Forma Normal: Consiste em retirar da estrutura os elementos repetitivos. Uma estrutura está normalizada na 1FN (1ª Forma Normal) senão possuir elementos repetitivos.

2ª Forma Normal: Consiste em retirar das estruturas que possuem chaves compostas os elementos que são funcionalmente dependentes de parte da chave.

3ª Forma Normal: Consiste em retirar da estrutura os campos que são funcionalmente dependentes de outros campos e não são chave.

Tirado de: wwww.gilvanritter.blogspot.com

Exercício de Banco de Dados - Entrega dia 14/09/09

Sabe o que tem que fazer né?!

_____VEÍCULOS______

codigo_veiculo
placa_veiculo
modelo_veiculo
cod_veiculo
marca_veiculo
nome_veiculo
cod_lancamento
odometro_lancamento
qtde_lancamento
doc_lancamento
valor_lancamento
cod_despesa
nome_despesa
cod_grupo_despesa
nome_grupo_despesa
cod_fornecedor
nome_fornecedor
end_fornecedor
cep_fornecedor
cidade_fornecedor
estado_fornecedor
cnpj_fornecedor
cod_viagem
data_saida_viagem
data_chegada_viagem
cod_motorista
nome_motorista
cep_destino_viagem
cidade_destino_viagem
estado_destino_viagem
finalidade_viagem
observacao_viagem

Não se esqueçam de resolve-lo atravéz das regras/formas normais.
Dúvidas??? usem os comentários.

A resposta estará aqui após o dia 14/e ou depois da entrega.

Horário das Aulas - CTI 2009 vc1 - Segundo Semestre de 2009

Onde estou?? - Entendendo os Diretórios no Linux

Retirado do livro "Linux Entendendo o Sistema" por Carlos E. Morimoto.

O primeiro choque para quem está chegando agora é a estrutura de diretórios do Linux, que não lembra em nada o que temos no Windows. No Windows temos os arquivos do sistema concentrados nas pastas Windows e Arquivos de programas, e você pode criar e organizar suas pastas da forma que quiser.
No Linux é basicamente o contrário. O diretório raiz está tomado pelas pastas do sistema e espera-se que você armazene seus arquivos pessoais dentro da sua pasta no diretório /home.
Mas, as diferenças não param por aí. Para onde vão os programas que são instalados se não existe uma pasta central como a "Arquivos de programas"? E para onde vão os arquivos de configuração se o Linux não possui nada semelhante ao registro do Windows?
A primeira coisa com que você precisa se habituar é que no Linux os discos e partições não aparecem necessariamente como unidades diferentes, como o C:, D:, E: do Windows. Tudo faz parte de um único diretório, chamado diretório raiz ou simplesmente "/".
Dentro deste diretório temos não apenas todos arquivos e as partições de disco, mas também o CD-ROM, drive de disquete e outros dispositivos, formando a estrutura que você vê no gerenciador de arquivos.

O diretório "/bin" armazena os executáveis de alguns comandos básicos do sistema, como o su, tar, cat, rm, pwd, etc. Geralmente isto soma de 5 a 7 MB, pouca coisa.
O grosso dos programas ficam instalados dentro do diretório /usr (de "Unix System Resources", ou recursos de sistema Unix). Este é de longe o diretório com mais arquivos em qualquer distribuição Linux, pois é aqui que ficam os executáveis e bibliotecas de todos os principais programas. A pasta "/usr/bin" (bin de binário), por exemplo, armazena cerca de 2.000 programas e atalhos para programas numa instalação típica. Se você tiver que chutar em que pasta está o executável de um programa qualquer, o melhor chute seria justamente a pasta /usr/bin :-).
Outro diretório "populado" é o "/usr/lib", onde ficam armazenadas bibliotecas usadas pelos programas. A função destas bibliotecas lembra um pouco a dos arquivos .dll no Windows. As bibliotecas com extensão ".a" são bibliotecas estáticas, que fazem parte de um programa específico, enquanto as terminadas em ".so.versão" (xxx.so.1, yyy.so.3, etc.) são bibliotecas compartilhadas, usadas por vários programas.
Subindo de novo, a pasta "/boot" armazena (como era de se esperar) o Kernel e alguns arquivos usados pelo Lilo (o gerenciador de boot do sistema), que são carregados na fase inicial do boot. Estes arquivos são pequenos, geralmente ocupam menos de 5 MB. Versões antigas do Red Hat e de outras distribuições criam por default uma partição separada para o diretório "/boot" de cerca de 30 MB, posicionada no início do disco para evitar o limite de 1024 cilindros dos BIOS de micros antigos. Isto não é necessário hoje em dia, pois nas versões atuais do Lilo este limite não existe mais. Apesar disso, alguns usuários preferem manter o "/boot" numa partição separada por questão de hábito.
Se tiver curiosidade, o arquivo "config-2.6.11-kanotix-7" (o número de versão muda de acordo com a distribuição) é justamente o arquivo compactado com o Kernel do sistema, que é carregado durante o boot.

Quando se fala em particionamento, as possibilidades são muitas, existem até listas de discussão dedicadas exclusivamente ao assunto. Afinal, talvez usar o sistema de arquivos xxx na partição yyy possa melhorar em 0,03% o desempenho do sistema... Tem gente que realmente se prende aos detalhes. :-).
Logo abaixo temos o diretório "/dev", que é de longe o exemplo mais exótico de estrutura de diretório no Linux. Todos os arquivos contidos aqui, como, por exemplo, "/dev/hda", "/dev/dsp", "/dev/modem", etc., não são arquivos armazenados no HD, mas sim ponteiros para dispositivos de hardware. Por exemplo, todos os arquivos gravados no "arquivo" "/dev/dsp" serão reproduzidos pela placa de som, enquanto o "arquivo" "/dev/mouse" contém as informações enviadas pelo mouse.
Esta organização visa facilitar a vida dos programadores, que podem acessar o hardware do micro simplesmente fazendo seus programas lerem e gravarem em arquivos. Não é preciso nenhum comando esdrúxulo para tocar um arquivo em .wav, basta "copiá-lo" para o arquivo "/dev/dsp", o resto do trabalho é feito pelo próprio sistema. O mesmo se aplica ao enviar um arquivo pela rede, ler as teclas do teclado ou os clicks do mouse e assim por diante. O Kernel se encarrega da parte complicada.
O diretório "/etc" concentra os arquivos de configuração do sistema, substituindo de certa forma o registro do Windows. A vantagem é que enquanto o registro é uma espécie de caixa preta, os scripts do diretório "/etc" são desenvolvidos justamente para facilitar a edição manual. É verdade que na maioria dos casos isto não é necessário, graças aos vários utilitários de configuração disponíveis, mas a possibilidade continua aí.
Os arquivos recebem o nome dos programas seguidos geralmente da extensão .conf. Por exemplo, o arquivo de configuração do servidor DHCP (que pode ser configurado para atribuir endereços IP aos outros micros da rede) é o "/etc/dhcpd.conf", enquanto o do servidor FTP é o "/etc/proftpd.conf". Claro, ao contrário do registro, os arquivos do "/etc" não se corrompem sozinhos e é fácil fazer cópias de segurança caso necessário.
O diretório "/mnt" (de "mount") recebe este nome justamente por servir de ponto de montagem para o CD-ROM (/mnt/cdrom), drive de disquetes (/mnt/floppy), drives Zip e outros dispositivos de armazenamento. O uso do diretório /mnt é apenas uma convenção. Você pode alterar o ponto de montagem do CD-ROM para /CD, ou qualquer outro lugar se quiser. Isso é configurável através do arquivo "/etc/fstab", onde vai a lista de todos os dispositivos usados pelo sistema e as pastas em que cada um é montado.

Nada impede que você crie mais pastas no diretório raiz para armazenar seus arquivos. Apesar de ser recomendável em termos de organização e segurança, você não é obrigado a concentrar seus arquivos dentro do seu diretório de usuário. Nada impede que você abra o gerenciador de arquivos como root (kdesu konqueror), crie uma pasta /MP3, abra o menu de permissões para que seu login de usuário tenha permissão para acessá-la e a utilize para guardar suas músicas, por exemplo.