terça-feira, 16 de novembro de 2010

Modelagem Matemática - Funções de 1˚ grau como Modelo Matemático

Resumo
     Este trabalho se propõe a associar situações do cotidiano à funções de 1˚ grau, porém para isso será necessário que as situações aqui comentadas deem suporte à esse tipo de função, pois a mesma relaciona dois conjuntos numéricos envolvidos de forma uniforme e sem variação ao longo de seu desenvolvimento, ou seja, é representado como uma reta.
     Iremos selecionar 3 situações reais e expressá-las em forma de equação, feito isso iremos fazer algumas simulações e resolver as equações, extraindo tudo o que pudermos das tais funções.

Introdução
     Geralmente, em sala de aula, os exemplos do conteúdo que estamos aprendendo são situações próximas de nosso cotidiano, por exemplo: Em uma aula de cinemática, quando estamos estudando o MRU os exemplos mais utilizados são de um veículo que parte de um ponto A e segue até um ponto B em velocidade constante, então aprendemos a extrair várias informações desta situação. É claro que esses são excelentes, senão, os melhores exemplos para o aluno enxergar a situação com maior facilidade, mas todos nós sabemos que é praticamente impossível um veículo seguir com uma velocidade constante. Sei também que esta questão é considerada nas aulas por isso da velocidade média. Porém neste trabalho eu gostaria de trazer ao menos duas situações que realmente se comportem como uma função de 1˚ grau. É um pouco difícil trazer à memória, mas basta pensar um pouco e veremos inúmeras situações. Um bom exemplo é a velocidade da luz, uma aplicação muito prática e usual é a de se descobrir as distâncias entre os corpos celestes.

Objetivo
     Iremos trabalhar em 3 situações que pertençam à vida real da seguinte forma:
          Encontrar situações que se comportem como uma função de 1˚ grau;
          Equacionar estas situações;
          Submeter estas equações a alguns valores para simular e testar; Resolver as funções atribuindo alguns valores para x e por consequência para y;
          Encontrar o f(0);
          Desenhar o gráfico;
          Obter o Domínio / Imagem;
          Fazer o estudo dos sinais;
          Crescimento / Decrescimento da curva;
          Encontrar o zero da função;
Procedimentos Executados:
     Situações abordadas:
          Calcular o número de rotações de um HD em função do tempo;
          Conversão de graus Fahrenheit para Celsius;
          Conversão de radianos para graus;

Calcular o número de rotações de um HD em função do tempo
     Em um HD que gira a uma rotação de 7200RPM, sabemos que para cada 1 minuto o disco da 7200 voltas, logo para x minutos tenho y voltas que é a multiplicação de x minutos por 7200RPM.






 
 
Conversão de graus Fahrenheit para Celsius
     Tenho observado que conversões de unidades de medida geralmente se comporta como uma função de 1˚ grau, pois à medida que x varia, y acompanha a variação uniformemente.
     Neste exemplo vamos analisar uma escala de ˚C e outra de ˚F alinhada adequadamente, pois sabemos que 0˚C é igual a 32˚F


 
     Observando as escalas acima (˚C e ˚F), levantei alguns valores com o máximo de precisão possível e coloquei em forma de tabela (abaixo).
     Com os valores da tabela posso fazer o gráfico para visualizar curva e posso chegar ao coeficiente angular desta curva dividindo, exemplo:

Agora sei que o 0.5555 é apenas a inclinação da curva.
Colocando o y em evidência a função começa a aparecer.
, mas ainda está incompleta, porém olhando para a tabela vejo que ao atribuir x=32 obtenho y=0.

Agora só preciso subtrair 17.7777 na equação.

generalizando: 

 
Esta é a minha situação de conversão de graus Fahrenheit para Celsius equacionada.
Contextualizando: 

 
     Iremos atribuir algumas entradas para ˚C confirmar se a função está de acordo com as escalas apresentadas no inicio.





Conversão de radianos para graus
     Uma situação que nos deparamos com frequência nas aulas de trigonometria é a de calcularmos os valores dos arcos na circunferência trigonométrica.
     Por trabalharmos com duas unidade de medida (graus e radianos), geralmente temos de fazer conversões entre as tais.
     A dedução da relação vem emser equivalente a 180˚, daí temos uma proporção de 1 para 180˚ e fica:
, onde:
x é o valor que multiplica o( é referente aos radianos )
y é que queremos obter ( os graus ).
Isolando o y teremos:

 
, se simplificarmos teremos:

 
, para contextualizar a função diremos: 





Bibliografia

Temperatura - Wikipédia, a enciclopédia livre, 4/11/2010,
<http://pt.wikipedia.org/wiki/Temperatura>

Grau Celsius - Wikipédia, a enciclopédia livre, 4/11/2010,
<http://pt.wikipedia.org/wiki/Grau_Celsius>

Grau Fahrenheit - Wikipédia, a enciclopédia livre, 4/11/2010,
<http://pt.wikipedia.org/wiki/Grau_Celsius>

Sistemas de equações - Exatas, 4/11/2010,
<http://www.exatas.mat.br/sistemas.htm>

Vicente, Emanuelle L. e Sodré, Ulysses,
Ensino Médio: Sistemas Lineares - Sercomtel, 4/11/2010,
<http://pessoal.sercomtel.com.br/matematica/medio/matrizes/sistemas.htm>

segunda-feira, 8 de novembro de 2010

Modelagem Matemática - Introdução

O que é Modelagem Matemática?

    Modelagem matemática é a tradução de uma situação real para as relações numéricas, com o objetivo de se prever essa situação em uma escala não tangível, ou seja, simular um comportamento usando ferramentas matemáticas relacionadas de tal forma que seja possível obter dados aproximados aos reais caso esta situação fosse realmente executada. Às vezes estas situações são diferentes mas são regidas pelas mesmas filosofias.
    Existem diversas aplicações para a modelagem matemática, desde o controle de pragas na lavoura até a previsão meteorológica, ela pode ser usada para o estudo do comportamento de partículas sub-atômicas, mas também aparece em semelhança de triângulos, crescimento de cidades, trafego urbano, movimento da água, entre outros.
    Com o advento da informática e as tarefas sendo cada vez mais realizadas por máquinas, houve a necessidade de se estudar comportamentos para que os sistemas informáticos pudessem “tomar” decisões.
    Hoje a modelagem matemática tem sido uma grande aliada no ensino afim de despertar o raciocínio lógico, a criatividade e o senso crítico no aluno.


O que é um Modelo Matemático?

    Um modelo matemático, como o próprio nome já diz, é um modelo, um molde que representa determinada situação na natureza ou não, este molde é delimitado afim de “forçar” a situação em questão para que ela continue se comportando seguindo as mesmas proporções na qual foi deduzida.
    Um função matemática por ex.: é um modelo matemático, pois a imagem de f(x) será o reflexo das relações que “x” sofrerá no motor da função, ou seja, em seu interior. Por exemplo: f(x) = x + 3, a imagem será acrescida de 3 unidades para qualquer x є IR, isto “força” um comportamento, um padrão, uma proporção, estabelece uma regra, cria uma conexão entre “x” e “y” e esta conexão é efetuada pela “caixa-preta” da função cuja as regras internas são armações matemáticas coerentes.

Quais são as etapas necessárias para se estabelecer um modelo matemático?

    Penso que para se modelar uma situação é preciso observação à tal, é necessário registrar o formato da situação, digo isso em nível até mesmo geométrico, pois quando olho para algum objeto, acredito que, em meu cérebro, este objeto é gerado geometricamente para que eu possa entender o seu formato, suas delimitação geométricas, analogamente, uma situação também toma forma, ainda que em nível abstrato, até que eu possa perceber suas delimitações e definir este formato de modo mais compreensível, como uma sucessão de traduções até chegar à um nível alto o suficiente que possa ser escrito usando alguma linguagem que no caso são as relações numéricas com “n” variáveis que, se submetidas à alguns valores, deverá reconstruir ou simular a situação original.


Em poucas palavras, para se modelar uma situação o modelador deve:
    • observar a situação;
    • fazer um levantamento dos requisitos necessários para que esta situação ocorra;
    • montar um sistema matemático que represente esta situação;


Exemplos de Modelos Matemáticos:

    Na divisão 4/2, eu quero expressá-la em forma de multiplicação.

Entendendo a divisão:
    Tenho 4 unidade e quero separá-las em 2 grupos de quantidade iguais cada um, terei em cada grupo 2 unidades. Desta forma eu entendi o mecanismo da divisão, agora vou traduzi-lo para a multiplicação de forma a obter o mesmo resultado:
    • Tenho 4/2=2;
    • Escrevo no formato de multiplicação: 4x=2 => x=2/4 => x=0,5; então: 4*0,5=2
    • Testo outros valores pra constatar minha teoria e fazendo isso vou perceber que em todas as multiplicações que simulam a divisão o meu “x” está dentro do intervalo de 0 à 1, daí posso extrair uma função:
d(n,x)=n*x
Dom n = {n є IR}
Dom x = {x є IR / 0 <= x <= 1}
Im d(n,x) = {y є IR}

    Claro que este é um exemplo simples em que eu modelei uma situação matemática para outra. O grande desafio está em fazer isso com situações reais, mapear suas diversas variáveis e condições afim de formar um sistema.
    Tenho alguns exemplos dos quais já tenho observado e outros que cruzaram meu caminho neste curso.
    Nesses dias, nas aulas de trigonometria, tivemos alguns exercícios onde tínhamos de calcular o ângulo formado pelos ponteiros de um relógio analógico.
ex.: 4h43 (quatro horas e quarenta e três minutos)
    Estudando os passos para chegar ao resultado deste e de outros semelhantes a este, observei que o algoritmo era o mesmo, então montei uma função em que entro com a hora e o minuto e ela me retorna o ângulo em graus.



a°(h,m) = | 30h – 5,5m |
Dom h = {h є IN / 0 <= h <= 11}
Dom m = {m є IN / 0 <= m <= 59}
Im a° = {a° є IR / 5,5° <= a° <= 330°}


    Um outro exemplo que vou colocar aqui é uma situação um tanto inútil, mas curiosa, aliás, várias descobertas importantes do passado foram baseadas em observações inicialmente desprezíveis.
    A alguns anos, olhando para um CD, reparei que a parte onde há algo gravado fica visualmente destacada em relação ao restante do disco devido o fechamento dos micro orifícios ( sulcos ) que o laser provoca, então resolvi medir os raios das circunferências externa e interna do CD e da marcação que continha a informação salva, calculei a área de destas circunferências e cheguei à quantidade de megabytes usados no disco.
Ad – Ai = CT
Au – Ai = U
onde:
Ad: Área do disco
Ai: Área inútil
Au: Área útil
CT: Capacidade Total (MB)
U: Usado (MB)

então:
U = CT(Au – Ai) / (Ad – Ai)

terça-feira, 22 de junho de 2010

Flex e Java usando BlazeDS


Boas pessoal..
Em aplicações web feitas em Flex é muito comum o uso de uma camada intermediária que possa acessar o sistema ou uma base de dados, o que tenho visto pr aí é o uso do PHP como esta camada intermediária, eu mesmo uso em projetos atuais o PHP, mas em certa ocasião tive de usar o Java, pois a base era Informix, então assim como o AMFPHP faz é a ponte entre o Flex e o PHP, o BlazeDs faz entre o Flex e o Java.
Neste post daremos coordenadas mais exutas possível.
Será assim:
Daremos as instruções iniciais, a implementação ( ou modelo do código ) e um exemplo.
Então vamos lá.


Preparando o Ambiente:

• Instalar o TomCat (presente no pacote de instalação do NetBeans)
• Criar uma pasta do projeto na pasta [@tomcat/webapps/]
• Descompactar o blazeds.war na pasta [@tomcat/webapps/[projeto]/]
• Editar o arquivo [@tomcat/webapps/[projeto]/WEB-INF/flex/remoting-config.xml]
implementação:

<destination id="[id destination]">
    <properties><source>[package].[class]</source></properties>
</destination>
onde:
id destination
        Este id será enxergado pelo Flex no atributo [destination@RemoteObject]
package
        Nome do Pacote da classe no Lado JAVA
class
        Nome da Class no Lado JAVA
ex.:

<destination id="dest_id">
    <properties><source>Pjava.Valores</source></properties>
</destination>


Lado FLEX:

• Criar um novo projeto.
• Instanciar o objeto RemoteObject.
implementação:

<mx:RemoteObject id="[identificador]"
    endpoint="http://[servidor]:[porta]/[pasta do projeto]/messagebroker/amf"
    destination="[id destination]"
    showBusyCursor="true"
    fault="[caso falhar]"
    result="[caso sucesso]"/>
onde:
identificador        identificador do objeto RemoteObject
servidor
        nome ou IP do servidor
porta
        porta em que está o serviço do TomCat
id destination    →
    Este é o id da tag destination no arquivo:
@tomcat/webapps/[projeto]/WEB-INF/flex/remoting-config.xml
caso falhar
    →    O evento é disparado quando ocorre alguma falha na transação
caso sucesso
    →    O evento é disparado quando a transação é bem sucedida, a classe [event] trás o resultado no atributo [result].
implementação:    event.result
ex.:

<mx:RemoteObject id="rm"
    endpoint="http://localhost:8080/meuprojeto/messagebroker/amf"
    destination="dest_id"
    showBusyCursor="true"
    fault="Alert.show('Falha na transação')"
    result="{Alert.show(event.result.toString())}"/>
• Envocar o RemoteObject.
implementação:

<mx:[objeto] click="{ identificador.atributo@Java }"/>
onde:
objeto
    →    Objeto do Flex
identificador
    →    O ID do RemoteObject
atributo@Java
    →    Atributo, Método ou evento no Lado JAVA
ex.:

<mx:Button click="{rm.getValor()}"/>
• Compilar o projeto


Lado JAVA:

• Criar um novo projeto.
• Criar uma nova classe (esta classe é chamada pelo destination)
• Criar atributos, métodos ou eventos de acordo com a necessidade
implementação:

public String [atributo]    =    [valor];
    public String [método]() {
    return [valor];
}
onde:
atributo
    →    Nome do atributo (Este deve ser o nome chamado no objeto de envocação no Lado FLEX)
método
    →    Nome do método    (Este deve ser o nome chamado no objeto de envocação no Lado FLEX)
valor
    →    Valor que será retornado ao Flex
ex. de método:

public String getValor(){
    return "meu valor";
}
• Compilar o projeto


Ainda no Ambiente:

• Copiar o conteúdo da pasta [[projeto flex]/bin-debug/] para a pasta [@tomcat/webapps/[projeto]/]
• Copiar as os arquivos *.class do projeto JAVA para a pasta [@tomcat/webapps/[projeto]/WEB-INF/class/]


Executando:

• Acessar url: [http://[servidor]:[porta]/webapps/[projeto]/[flex].html]


Diagrama:

Muito bem pessoal, está aí mais um post, aproveitem.
Até o próximo...

Flex: Passando eventos entre Custom Components

Olá pessoal.
Estamos aí pra dar continuidade ao post de como comunicar eventos entre componentes customizados do Flex.

Vou deixar abaixo o ambiente padrão para iniciarmos o tutorial.

Apresentando uma situação:
Digamos que você tenha em seu projeto dois Custom Components, o CC1 ( um Slider e um Label ) e o outro, CC2, seria um teclado formado por 6 botões numéricos, um botão para o "Ok", um Label que exibe o valor do botão numérico pressionado e um botão para limpar o Label... ok..
Abaixo estão os dois Custom Components:




Implementação: Passando eventos
Este caso é um pouco menos comum, mas pode ser útil, então vamos lá.

Imagine que teríamos a necessidade de que quando o usuário passar o mouse sobre algum número do CC2 o Slider do CC1 tenha que ficar com a cor de fundo diferente e quando o mouse sair de sobre o número o Slider volte à cor de origem. Neste caso faremos com que os Custom Components se conversem diretamente.
Vamos chamar o CC2 de componente enviador de evento, se é que essa palavra existe..rs, e o CC1 de receptor de evento, pois já que o CC2 irá controlar a cor de fundo do Slider do CC1, podemos dizer que o CC2 envia e o CC1 recebe.

Vamos ver o código do Custom Components CC2:

Código CC2:


No código CC2 pegamos como exemplo somente um Botão, mas a idéia se aplica a qualquer objeto que quisermos.
Repare que no evento mouseOver do Botão será chamada a função "__envia_cor_fundo_slider_over ()" ( linha 34 ), essa função ( linhas 20 a 22 ) faz com que seja disparado um evento de nome "cor_fundo_slider_over", este evento pode ter qualquer nome, então procure dar nomes que sejam facilmente associados ao tipo de ação que está executando.  Quando esta função é executada a classe principal poderá "escutá-la" e após isso qualquer outra classe envolvida no projeto poderá validar se a classe principal "ouviu" o evento com o nome pré-definido e executar qualquer ação.

Vamos ver o código do CC1 que está apto a "ouvir" o que o componente CC2 está enviando.

Código CC1:


Da linha 12 a 16 temos declarada a função "__recebe__cor_fundo_slider_over ()", repare que adicionamos a função "addEventListener( NOME DO EVENTO, FUNÇÃO () { ... } )", esta função é a responsável por ficar verificando ou "ouvindo" o evento que a classe principal receberá, mas para chegarmos à classe principal precisamos adicional antes da função a classe "Application" e o método "application" como já explicamos no post anterior. Resumindo: caso o mouse passe por cima do Botão no CC2, este enviará para a classe principal um evento personalizado chamado neste exemplo de "cor_fundo_slider_over", por outro lado a função "addEventListener" do CC1 ficará verificando na classe principal se este evento chegou lá, acontecendo isso a função anônima será disparada e no nosso caso ela está mudando a cor de fundo do slider. Não esquecendo que a função "__recebe__cor_fundo_slider_over()" deve ser chamada no inicio do programa ( linhas 3 a 6 ).

Abaixo está o programa:



Aí está, espero que seja útil, até o próximo post.

quarta-feira, 16 de junho de 2010

Flex: Passando valores entre Custom Components

Olá pessoal, este é o meu segundo post, desta vez voltado à plataforma Flex da Adobe.
Vamos mostrar formas de comunicar dois componentes customizados, que hora trataremos como classe e horas como custom components.
A princípio veremos como passar valores de custom component para outro e em um segundo post iremos passar eventos.
Espero que gostem e seja útil.

O Flex é uma ferramenta muito eficiente e um dos vários motivos para isso é a grande quantidade de componentes já existentes, pois imagine se você tivesse de construir, por exemplo, um componente do tipo Slider, você teria que dedicar um tempo escrevendo este componente, mas este e outros vários componentes já estão incorporados no Flex SDK 3. Mesmo assim se você tiver uma necessidade muito específica, como por exemplo, de construir um Slider e um Label que mostre o valor do Slider, e tenha de usar esta combinação de componentes diversas vezes no projeto, seria tedioso ter que ficar montando esta estrutura todas as vezes em que ela fosse necessária, por isso temos à nossa disposição os MXML Components ou também chamados de Custom Components que são como que classes que podemos montar nossa estrutura uma única vez e usá-la a qualquer momento quantas vezes for preciso.

Bem, como o objetivo desse post é mostrar a comunicação entre esses componentes, vamos ao trabalho.

São dois os tipos de comunicação entre Custom Components que queremos abordar aqui:
Um tipo seria de passar valores de um para outro e vice-versa e o outro tipo seria de comunicar um evento.

Apresentando uma situação:
Digamos que você tenha em seu projeto dois Custom Components, o CC1 seria o do exemplo acima, ( um Slider e um Label ) e o outro, CC2, seria um teclado formado por 6 botões numéricos, um botão para o "Ok", um Label que exibe o valor do botão numérico pressionado e um botão para limpar o Label... ok..
Abaixo estão os dois Custom Components:


Exemplificando o primeiro tipo (Passando valores):
No cenário acima, quando você pressionar uma tecla numérica no CC2 e depois pressionar "Ok" o valor da tecla irá fazer com que o Slider lá do outro componente, o CC1, se mova para este tal valor e o Label o exiba.

Exemplificando o segundo tipo (Passando eventos):
Imagine que nesse mesmo projeto teríamos a necessidade de que quando o usuário passar o mouse sobre algum número do CC2 o Slider do CC1 tenha que ficar com a cor de fundo diferente e quando o mouse sair de sobre o número o Slider volte à cor de origem.
Obs.: Trataremos desse segundo tipo em um próximo post.

Temos, então, duas situações diferentes e formas diferentes de implementá-las, mas o projeto é o mesmo, então vamos montar o ambiente:


Crie um novo projeto no Flex chamado "com_custom_comp".
Logo de cara crie os componentes indicados em nosso exemplo.
Coloque os dois componentes em seu Stage como se fossem componentes nativos do Flex, simplesmente arratando-os.
Pronto, o ambiente está montado e agora podemos começar a codificar os tipos de comunicação.

Implementando o primeiro tipo (Passando valores):
O primeiro tipo, que é o de passar valor, é um tanto intuitivo e segue a lógica mais próxima da que estamos habituados a trabalhar, então vamos mostrar como se faz.

No com_custom_comp.mxml:


Repare que temos alguns elementos importantes no código acima:
 - A variável publica "valor" do tipo int ( linha10 ), servirá para receber o valor numérico do CC2, pois quando ela receber qualquer valor, este será espelhado imediatamente para o CC1, ou seja, ela é uma variável de ligação entre os dois Custom Components;
 - As TAGs "ns1:cc1" ( linha 16 ) e "ns1:cc2" (linha 20) são os Custom Components em questão.

No cc2.mxml:


No código acima, quando o usuário clicar em algum botão numérico ( linhas 24 a 29 ) o "TextInput" ( linha 23 ) é alterado, exibindo o valor correspondente, mas é quando o botão "OK" ( linha 32 ) é pressionado que acontece o envio do valor para o outro componente.
A função "__exportar_valor ()" ( linhas 8 a 11 ) manipula a variável "valor", porém ela está presente em outra classe, então como acessá-la?


A resposta vem a seguir.
Vejamos a estrutura hierárquica do nosso pequeno sistema:


Verificamos claramente na ilustração acima que temos 3 classes que na verdade são os arquivos ou os componentes:
 - main class com_custom_comp: Esta é a classe que abriga os outros dois Custom Components e a variável "valor".
 - class CC1: Podemos dizer que este Custom Component fica lendo a variável "valor", então qualquer alteração nesta variável é refletida no Custom Component CC1.
 - class CC2: Este Custom Component também tem uma relação com a variável "valor", mas apenas de escrita.
 - var valor: Esta variável foi declarada na class mãe e para que os dois Custom Components acessem-na é preciso um recurso.
Repare que no Custom Component CC2 existe uma chamada para a classe "Application" seguido do método "application" ( Application.application.valor ) que diz para o CC2 olhar para os atributos, métodos e eventos da classe mãe com_custom_comp e neste caso para a variável "valor".
Sendo assim, a função citada acima "__exportar_valor ()" diz para o CC2 olhar para a variável "valor" que está na classe mãe e atribui o valor do "TextInput" a ela. Então pense que a variável apenas recebeu um valor que veio do CC2, ok.

No cc1.mxml:


Agora sim é que tudo se complementa, pois o Slider, presente no CC1, está recebendo um valor de "Application.application.valor" ( linha 10 ) , isto é, da mesma forma que acontece com o caso do CC2, o CC1 consegue acessar a variável "valor" por causa das chamadas "Application.application".

Dêem uma olhada na aplicação em funcionamento:







No próximo post trataremos de como comunicar eventos, que é o segundo tipo citado acima.
Até mais.

quinta-feira, 4 de março de 2010

Linux do Cotidiano

E aí pessoal... estou disponibilizando de uma forma prática alguns comandos do cotidiano do usuário linux.
Conforme as necessidades do dia-a-dia, tinha de perguntar novamente pros colegas mais experiêntes ou procurar na net, então passei a anotá-los e aí estão uma parte dessas anotações.
Estarei complementando esta lista conforme outra dúvidas forem aparecendo ... espero que possam ser uteis.

• Símbolos:
$ = Usuário comum
# = Super usuário


• Configurar Tela de Login
digite no terminal: # gdm-setup

• Iniciar Programas / Serviços na Iniciação
Vá em:
Sistema - Preferências - Aplicativos de sessão
Clique em "Adicionar" e entre com os dados nos campos de texto:
"Nome" - Um nome para identificação da entrada
"Comando" - O comando em shellscript, aqui pode ser a chamada a uma aplicação ou uma simples rotina
ou digite no terminal: $ gnome-session-properties

• Compactar arquivos para tar, tar.gz e tar.bz2
TAR: digite no terminal: $ tar -cvf [arquivo.tar] [arquivo / diretório origem]
TAR.GZ: digite no terminal: $ tar -cvzf [arquivo.tar.gz] [arquivo / diretório origem]
TAR.BZ2: digite no terminal: $ tar -cvjf [arquivo.tar.bz2] [arquivo / diretório origem]

• Descompactar arquivos tar, tar.gz e tar.bz2
TAR: digite no terminal: $ tar -xvf [arquivo.tar]
TAR.GZ: digite no terminal: $ tar -xvzf [arquivo.tar.gz]
TAR.BZ2: digite no terminal: $ tar -xvjf [arquivo.tar.bz2]

opções:
-c = create ( Indica que se trata de criação de arquivo compactado )
-x = xtract ( Indica que se trata de extração de arquivo compactado )
-v = verbose ( Exibe o que está acontecendo no terminal )

-p = preserve-permissions ( Preservar permissões )
-f = file ( arquivo )
-z = gzip ( Instrução para gerar ou extrair um arquivo gz )
-j = bzip2 ( Instrução para gerar ou extrair um arquivo bz2 )

• Descompactando arquivos zip
digite no terminal: $ unzip [arquivo.zip]

• Descompactando arquivos rar
digite no terminal: $ unrar x [arquivo.rar]

• Instalando pacote.bin
digite no terminal: $ ./[pacote.bin]
obs.: o [pacote.bin] deve ter permissões para execução

• Instalando pacote.rpm
Primeiro é preciso converter o arquivo para pacote.deb
digite no terminal: $ alien [pacote.rpm]
após isso instale o pacote.deb normalmente.

• Instalando pacote.deb
digite no terminal: $ dpkg -i [pacote.deb]
digite no terminal: $ dpkg -i *.deb

• Aplicação de compactação / Descompactação
file-roller

• Local onde ficam os arquivos baixados pelo apt-get ou aptitude
/var/cache/apt/archives/

• Configuração das interfaces de rede
editar arquivo /etc/network/interfaces
digite no terminal: # vi /etc/network/interfaces

• Botão Iniciar
digite no terminal: $ gconf-editor
caminho: /apps/panel/objects/object-0

• Comando locate

Faz uma busca dos arquivos e pastas residentes no sistema através de uma base de dados
digite no terminal: $ locate [arquivo]
Sempre que uma nova aplicação é instalada, é preciso atualizar a base do locate
digite no terminal: $ updatedb

• BootSplash (arquivos relacionados)

caminho: /etc/bootsplash/themes/satux/*

• Copiar arquivos / pastas
se for arquivo:
digite no terminal: # cp [origem] [destino]
se for pasta:
digite no terminal: # cp -R [origem] [destino]

• Excluir arquivos
digite no terminal: # rm -rf [arquivo]

• Renomear / Mover arquivos

conceito de mover
digite no terminal: # mv [origem] [destino]
conceito de renomear
digite no terminal: # mv [nome antigo] [nome novo]
cuidado: caso já exista algum arquivo com o nome novo, este será sobrescrito.

• Criar Pastas
digite no terminal: # mkdir [nome da pasta]

• Listar serviços que estão rodando
digite no terminal: $ ps -afx
filtrando por serviços:
digite no terminal: $ ps -afx | grep [nome do serviço]

• Matar serviços que estão rodando
digite no terminal: $ kill [PID do serviço]
digite no terminal: $ killall [nome do programa]
no ambiente gráfico:
digite no terminal: $ xkill
clique sobre a janela/programa que deseja matar

• Aptitude
instalar programas do repositório
digite no terminal: # aptitude install [nome do programa]
procurar programas do repositório
digite no terminal: # aptitude search [nome do programa]
desinstalar programas do repositório
digite no terminal: # aptitude remove [nome do programa]

• Atp-get
instalar programas do repositório
digite no terminal: # apt-get install [nome do programa]
procurar programas do repositório
digite no terminal: # apt-cache search [nome do programa]
desinstalar programas do repositório
digite no terminal: # apt-get autoremove [nome do programa]

• Formatar (não ópticos)
digite no terminal: # mkfs.[sistema de arquivos] [caminho do dispositivo]
ex.: # mkfs.ext3 /dev/sdb1
obs.: os pacote dosfstools implementa os sistemas de arquivo fat e fat32

• Formatar (ópticos)
digitar no terminal: # dvd+rw-format -force /dev/dvd

• Subir interface de rede
digite no terminal: # dhclient [dispositivo de rede]
ex.: # dhclient wlan0

• Tornar o combado global
Colocar o programa na pasta /usr/bin/

• Grub - Linux / Windows
Com o Satux já instalado
subir em live
criar partição NTFS
subir instalador do Windows e instalá-lo na partição NTFS criada acima
subir Satux em live
montar partição do Satux
editar o grub.conf (grub v.1 em /boot/grub/grub.conf; grub v.2 em
/boot/grub/grub.cfg)
acrescentar as seguintes linhas:
title Windows [versão]
root (hdx,x)
makeactive
chainloader +1
instalar grub

• Instalar GRUB
digite no terminal: # grub-install --recheck --root-directory=[ponto de montagem] /dev/sda

• Alterar gconf via shellscript
# gconftool -s --type=[tipo] [caminho absoluto da chave] [valor]
tipos: integer, string, boolean, float, array
ex.: # gconftool -s --type=integer /apps/panel/toplevels/top_panel-screen-0/size 32

• Obter as ultimas 10 entrada do arquivo referenciado
normalmente é usado com o /var/log/syslog
digitar no terminal: tail -f [arquivo]

• Mostra o tamanho dos discos existentes
digite no terminal: df -h

• Encontrar arquivo através da string nele contida
digite no terminal: egrep -i -r "[digite o texto aqui]" [nome do arquivo ou diretório]

• Alterar Permissões de arquivos e diretórios
digite no terminal: chmod -opções rwx [nome do arquivo ou diretório]
opções:
-R = afeta todos os arquivo internos caso seja um diretório
rwx = respectivamente read, write e execute ( leitura, escrita e execução )
r = [0..7]
w = [0..7]
x = [0..7]

para arquivos (-)
rwx
000 0 (zero) permissão negada
001 1 permissão de execução
010 2 permissão de gravação
011 3 permissão de gravação e execução
100 4 permissão de leitura
101 5 permissão de leitura e execução
110 6 permissão de leitura e gravação
111 7 soma de todas as permissões

para diretórios (d)
rwx
000 0 (zero) permissão negada
001 1 permissão para entrar no diretório
010 2 permissão para gravar dentro do diretório
011 3 permissão de entrar e gravar no diretório
100 4 permissão para listar o conteúdo do diretório
101 5 permissão de listar e entrar no diretório
110 6 permissão de listar e gravar no diretório
111 7 soma de todas as permissões

• Alterar Dono de arquivos e diretórios

digite no terminal: chown usuário [nome do arquivo ou diretório]

ou
digite no terminal: chown -R usuário:grupo [nome do arquivo ou diretório]