terça-feira, 16 de julho de 2013

Debugando códigos em FORTRAN com o DDD

O DDD (Data Display Debugger) pode ser utilizado para debugar códigos escritos em FORTRAN.
O debugger padrão é o GDB, mas pode ser utilizado o debugger da Intel (IDB), caso o código tenha sido compilado com Intel FORTRAN (ifort)
É necessário compilar os códigos com a opção -g no caso do gfortran, depois digitar:
ddd [nome do programa]
Se for necessário usar o debugger da Intel:
ddd --debugger idb [nome do programa]
Estas informações podem ser vistas neste link e neste outro.

quarta-feira, 3 de outubro de 2012

quinta-feira, 8 de março de 2012

Exatamente, Nasceu uma Flor no Asfalto


Exatamente, Nasceu uma Flor no Asfalto

Gloriosa seja a desgraça, pois nos impele a sair da Inércia. O
Labor dos dias de desassossego ressuscita a Esperança.
Até a velha guarda da Física agiu, mesmo como uma flor murcha, mas...
Uma Flor nasceu no asfalto! Foi vista com alegria pela velha quase sem pétalas.
Contra o pensamento corrente e à luz da verdadeira democracia, as
Exatas mostram que também estão à serviço da liberdade, como quer a utopia.

... E uma flor nasceu no asfalto, porque...

Já foi o tempo das flores ornamentais, que apenas são belas, mas sem significado.
As flores hoje têm de ter sentido se querem ser belas, e precisam das marcas da luta.
Se Silvanas, Victors e Cássios se orgulham de Marks, Xaviers e Márcias foi...
Mais por encontrar flores fortes e vivas em terreno infértil. A esperança pode estar em qualquer lugar.
Infeliz é a universidade que deixa, voluntariamente, o canhão calar a política, pois
Mesmo a mais perfeita tecnologia academicamente construída é burra se o livre-pensar é coagido!

... É por isso que eu amos as flores nascidas no asfalto!
... E amos as flores ornamentais subversivas!!
... Estas não se contentam em ser somente ornamentais.

Atenágoras Souza Silva

quinta-feira, 12 de janeiro de 2012

Comando para deixar a tela do xmame fullscreen

Faz tempo que eu não adiciono nada neste blog...
Eu, de fato, não tive muitas experiências Linux, hoje em dia... Devo começar a fazê-las dentro de umas duas semanas.

O comando para deixar a tela inteira ao rodar o emulador, pelo menos no meu caso é:

xmame -fullscreen -ef 1 jogo

-ef 1 é a opção para duplicar a tela. Se colocado apenas fullscreen, o jogo, pelo menos no meu caso, ficará centralizado na tela com a mínima resolução disponível, mas sem tela inteira.

segunda-feira, 18 de julho de 2011

Configuração da Rede no Fedora 15

No Fedora, a configuraćão básica do sistema está no diretório /etc/sysconfig
A configuraćão de rede está distribuida em vários arquivos.
Para a configuraćão das rotas, bem como o nome do computador, temos o arquivo /etc/sysconfig/network.
Dentro dele, colocamos o nome do computador e o gateway padrão do seguinte modo:
HOSTNAME=[ nome do computador ]
GATEWAY =[ IP do gateway padrão ]

Já para a configuraćão do dispositivo da Rede em questão, temos o arquivo /etc/sysconfig/network-scripts/ifcfg-[interface de rede]. Por exemplo, /etc/network-scripts/ifcfg-eth0, a primeira interface de rede:
DEVICE=eth0 BOOTPROTO=none ---> Tipo de protocolo de rede. Neste caso é nenhum, pois a rede é estática
ONBOOT=yes ---> Informa ao sistema que a interface deve ser carregada no boot NETMASK= [ máscara de rede ] IPADDR=[ IP da máquina ] USERCTL=no
DNS1=[ Enderećo do Servidor de Nomes ]
DNS2=[ Enderećo do Servidor de Nomes ]
No caso de uma configuraćão com DHCP, em que as informaćões de rede do seu computador vem de um servidor:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
Fonte: Manual do Fedora 15, citado na postagem anterior.


Manual do Fedora Core 15

Este post serve apenas para postar um link, já que esta é a distribuićão que eu uso na iniciaćão.
Eu gosto mais do Debian...
http://docs.fedoraproject.org/en-US/Fedora/15/html/Deployment_Guide/index.html

sexta-feira, 8 de julho de 2011

Mountando partições LVM

Descobri no site do FocaLinux porque, afinal, há pessoas que instalam o sistema colocando algumas partições em um LVM (Logical Volume Manager).
Embora o acesso ao disco possa ficar ligeiramente mais lento, o acesso aos blocos até melhora.
Ainda sim, não gostei da idéia. Distribuições como o Fedora, já cria um LVM por padrão. Isto dá pepino para restaurar o sistema em caso de uma pane, pois ao acessar o sistema através de um LIVE-CD, não é tão fácil mountar as partições que estão dentro de um LVM.

Bem, vamos primeiro às referências. Se você quer criar um LVM, uma boa referência é: http://focalinux.cipsga.org.br/guia/intermediario/ch-disc.htm

Mas eu queria era mountar uma partição dentro de um LVM. Antes, passemos os sites que utilizei para conseguir o que queria:

- http://www.vivaolinux.com.br/dica/Recuperando-corrigindo-erros-em-particao-%28raiz%29-em-LVM-Fedora-Core-5

- http://acassis.wordpress.com/2008/10/29/mountando-particao-lvm/

Bem, agora vou falar o que eu fiz:

1) Localizar quais partições são um LVM:
#fdisk -l /dev/sda (ou /dev/qualquer-coisa-que-seja-o-seu-hd)
resultados do comando no meu caso:

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1 * 1 25496 204796588+ 7 HPFS ou NTFS
/dev/sda2 25497 25521 200812+ 83 Linux
/dev/sda3 25522 30401 39198600 8e Linux LVM

2) Carregar modulo para módulo para mountar o LVM:
#modprobe dm-mod

3) Verificar onde está o grupo de volume que contém /dev/sda3, a partição LVM encontrada:
#pvs

saída:
PV VG Fmt Attr PSize PFree
/dev/sda3 VolGroup00 lvm2 a- 37,38g 32,00m

4) Listar os volumes lógicos do grupo:
# lvdisplay VolGroup00

saída:
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID d70uZQ-fI0a-aIEB-K192-J4Eg-mDq6-6Y5jox
LV Write Access read/write
LV Status available
# open 1
LV Size 35,41 GiB
Current LE 1133
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID VsIsbe-wxcS-DE0v-8Xgt-IhQO-1F97-neekCy
LV Write Access read/write
LV Status available
# open 0
LV Size 1,94 GiB
Current LE 62
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1

5) Ativando o grupo lógico para ser montado:
#lvchange -a y -v /dev/VolGroup00/LogVol00

6) Finalmente, montando a partição:
#mount /dev/VolGroup00/LogVol00 /mnt/raiz (não esqueça de criar o diretório vazio antes)

sexta-feira, 4 de março de 2011

BRAMS e Grads

Para a utilização da versão 4.0 (e acho, 4.2 do BRAMS), é necessário o grads.
Entretanto, nas versões posteriores à 1.9 do grads, não há o comando 'gradsc', substituido por um supercomando grads, que executa quase todos os procedimentos do programa a partir da versão 2.07.
Para maiores detalhes, http://grads.iges.org/grads/downloads.html

quarta-feira, 2 de março de 2011

Alterando o PATH do sistema (Fedora)

É a primeira vez, desde muito tempo, que eu uso um sistema RedHat-like.
Costumava usar Conectiva Linux. Isto foi de 1998 a 2001.
A partir de 2002, passei a usar Debian, e em um breve período de trabalho, usava o próprio RedHat (por dois meses, mas só no computador de trabalho).
Agora, na minha iniciação, voltei a utilizar uma distribuição RedHat-like, desta vez, a geradora da RHLE (Red Hat Linux Enterprise - a versão paga da RedHat), a Fedora.
E eu tive dúvidas quanto ao arquivo de configuração para alterar o PATH.
É o /etc/bashrc. Desconfio que seja o mesmo no Debian, mas eu não me lembro.
Ele altera mais coisas do que o caminho, tome cuidado.
Em todo o caso, basta colocar no fim do arquivo a expressão:
PATH=$PATH:/nome-do-caminho-a-ser-colocado-no-path
export $PATH

Para alterar o arquivo somente no seu usuário normal, procure ou crie os arquivos .bash_profile, ou .bashrc

terça-feira, 28 de dezembro de 2010

Editando múltiplos arquivos com o VIM

Podemos editar múltiplos arquivos com o VIM: Eles podem ser abertos com o comando:]
vim -o arquivo1 aquivo2 arquivo3

Para alternar entre os arquivos abertos, basta pressionar duas vezes a combinação Ctrl + w

quarta-feira, 23 de junho de 2010

Comando wget - opções de download multiplo e recursividade

Com o comando wget, você pode fazer o download de sites inteiros... ou de apenas arquivos com determinadas extenções que você está interessado.
A opção -r é um pouco perigosa, já que o site poder ter links fora dele, mas é útil.
No meu caso, eu precisava fazer o download de vários pdf que compõem um livro gratuito na Internet.


wget -cr -A*.extensão http://site.arquivo.html
A opção -A é para definir as extensões aceitas, embora eu tenha baixado html, também.
A opçaõ c é para continuar o download, caso este tivesse sido interrompido antes, e a opção r é o download recursivo.

domingo, 14 de fevereiro de 2010

Configuração do Samba - Ajustando permissões de acesso e monitoramento instantâneo

Esta é mais uma configuração do SAMBA que eu fiz apenas para incluir um diretório padrão de compartilhamento de músicas e arquivos diversos.
Isto resolve o problema dos usuários não terem acesso aos arquivos multimídia de um outro, desde que os usuários tenham a intenção de colaborar com isso, é claro.

A checagem de permissões é feita tanto pelo SAMBA quanto pelo Sistema. Em um primeiro momento, o SAMBA, ao sabor da configuração do compartilhamento em /etc/samba/smb.conf (bem no Debian Lenny, o arquivo de configuração do SAMBA fica neste diretório), verifica quais os usuários que podem acessar e escrever (ou não) no recurso compartilhado (no caso, o diretório /multimidia), e depois a solicitação é passada para o sistema, que permitirá o acesso mediante a verificação de quem tem permissão sobre os diretórios e arquivos dentro deles.

Não esquecer de digitar #smbpasswd -a para cadastrá-lo no SAMBA também.
Assim, a solução que utilizei foi:

1) Criar o grupo multimidia, incluir usuários e dar o diretório /multimidia ao grupo
2) Configurar, enfim, o SAMBA para disponibilizar o recurso apenas aos usuários do grupo

Vamos agora, aos procedimentos necessários.

Parte 1: Criar o grupo multimidia, incluir usuários e dar o diretório /multimidia ao grupo

- Criação do grupo e inclusão de usuários:
# addgroup multimidia --> cria o grupo "multimidia"
# adduser [usuario] multimidia --> adiciona o "usuário" no grupo multimidia
Ex: # adduser karmarx multimidia

-Dando o diretório multimidia ao grupo multimídia:
#chgrp -R multimidia /multimidia --> instrui o sistema para que o grupo multimidia seja o dono do diretório /multimidia. A opção "-R" implementa as modificações recursivamente.
Alternativamente, poderemos fazer:
# chowm -R :multimidia /multimidia --> Faz a mesma coisa que o comando anterior. A diferença é que, antes de ":multimidia", podemos colocar o usuário que será dono do diretório ou recurso.
-Dando permissão ao grupo e seus usuários para acessar o diretório:
# chmod g+rwx /multimidia --> Dá permissão de leitura e escrita e acesso aos usuários do grupo multimídia. A opção "g" se refere a grupos.
# chmod -R g+rw /multimidia --> Dá permissão de leitura e escrita aos usuários do grupo multimídia.

Parte 2: Configurar, enfim, o SAMBA para disponibilizar o recurso apenas aos usuários do grupo

-O trecho que eu inclui no meu /etc/samba/smb.conf foi este:
[multimidia]
comment = Arquivos multimidia (filmes, musicas, jogos etc) compartilhados pelos usuarios.
path = /multimidia
writable = yes
# Para permitir que apenas os usuários do grupo multimidia possam acessar o compartilhamento
valid users = +multimidia
É importante que os comentários sejam feitos não na mesma linha de alguma palavra-chave que vai ser passada para o SAMBA.
A opção que precisa ser entendida é a "valid users". Nela, podemos incluir, separados por vírgulas, os usuários que podem acessar o recurso, ou então, colocamos um sinal de mais "+" seguido do nome do grupo, e automaticamente, apenas os usuários pertencentes ao grupo conseguirão acessar o recurso. Podemos separar entre vírgulas, os grupos que podem ter acesso ao recurso, bem como misturar grupos e usuários que o acessarão.

Referências:

Samba, parte 2: Configuração avançada do Samba (atualizado) -Carlos E. Morimoto

Manual do chgrp: man chgrp
Manual do chmod: man chmod
Manual do chown: man chown

Comando chroot

O comando chroot permite que você defina algum diretório como sendo a "nova raíz".
Isto é útil para mountar a partição raíz de uma outra instalação de Linux que haja no computador, e executar os programas a partir dela.

Suponhamos que queiramos editar o arquivo /etc/fstab da outra partição, ou dar um grub-install para restaurar o grub a partir daquela partição, porém através dela mesmo, não conseguimos, tendo de recorrer a outra partição funcional (geralmente nem isso é possível, sendo necessário o uso de um disco de recuperação, ou um live-cd com alguma distribuição GNU/Linux.

1) Montamos a partição de teste:

root@localhost: /# mount /dev/sda2 /mnt/teste --> supomos que o diretório /mnt/teste existee esteja vazio antes da montagem da partição.

2) Acesso à partição:

root@localhost: /# cd /mnt/teste

3) Tornando o diretório /mnt/teste como "raíz"

root@localhost: /mnt/teste# chroot /mnt/teste

Resultado:

root@localhost: /#
Aí, se você precisar editar o arquivo /etc/fstab da partição /dev/sda2, não precisará digitar vi /mnt/teste/etc/fstab, mas apenas vi /etc/fstab

Para voltar ao normal, basta digitar:

root@localhost: /# exit

Resultado:
root@localhost: /mnt/teste#

terça-feira, 9 de fevereiro de 2010

Redimensionando partições ext3 - Diminuindo uma partição

Para o redimensionamento de uma partição ext3, deve-se adotar 2 procedimentos básicos, depois de desfragmentá-la, se este for o caso:

1) redimensionar o sistema de arquivo: Para isto, utiliza-se o comando resize2fs.
2) redimensionar a partição fisicamente: Para isto, utiliza-se o comando fdisk.

Quando nós redimensionamos o sistema de arquivos é como dar um aviso ao kernel que os arquivos da partição podem ser encontrados entre o cilindro xxx do disco ao cilindro yyy, e a partição, quando as coisas estão funcionando, vai do cilindro xxx ao cilindro yyy. Entretanto, pode ser que não haja correspondência entre o que informa o sistema de arquivo ao kernel, e o tamanho físico da partição mesmo.

Assim, quando queremos diminuir o tamanho de uma partição, devemos, primeiro, diminuir o tamanho do sistema de arquivo com resize2fs, para depois diminuir seu tamanho físico com fdisk. Desde 2002 que esse software suporta o redimensionamento não só de partições ext2, mas também de ext3, portanto não é necessário tirar o journaling da partição.
No caso de querermos expandir o tamanho de uma partição, precisamos fazer o caminho inverso, desde que haja espaço livre começando quando termina originalmente o a partição que queremos expandir: aumentamos seu tamanho fisico para depois redimensionar o seu sistema de arquivo.

Bem, vamos aos passos:

No caso, eu queria diminuir o tamanho da minha partição /home de 50GB para 10GB.
Se você vai fazer isto com a partição raiz do seu sistema, ou a partição que contém outros executáveis importantes do sistema operacional, é necessário reiniciar o sistema e utilizar um disco/CD/DVD de recuperação, ou uma distribuição live-CD, pois é necessário executar os procedimentos com a partição com a qual queremos trabalhar desmontada.

Primeira parte: Checando informações sobre o disco e a partição, e redimensionando o Sistema de arquivos

- Checando informações:
fdisk -l /dev/sda --> Este comando dá informações sobre todas as partições do disco, tais como o cilindro inicial e final da partição, e número de blocos que ocupa. Lembrando que /dev/sda é apenas o exemplo utilizado, e o dispositivo que será utilizado dependo de como está configurado o seu HD, e de qual tecnologia ele utiliza (para HDs IDE, utilizamos /dev/hd(letra), e para primeiro hd, a letra a. Para HDs SCSI ou SATA, utilizamos /dev/sd(letra), e para o segundo hd, utilizamos a letra b. Utilizariamos também a letra a, no caso de ser o primeiro hd, que é o caso do exemplo.
A informação primordial, neste caso, é a posição inicial da partição. Isto, porque na parte 2, teremos de apagá-la, e para que não haja perda de dados, devemos nos certificar de que a "nova" partição deve começar no mesmo cilindro da "velha".
No meu caso, eu queria informações da partição /dev/sda2, que no meu caso, normalmente é montada em /home. LEMBRE-SE QUE TODOS OS PROCEDIMENTOS DEVEM SER FEITOS COM A PARTIÇÃO DESMONTADA.

- Talvez seja necessário checar a partição com:
e2fsck -f /dev/sda2 -->substitua /dev/sda2 pela partição que desejar/precisar checar.
-Redimensionando o sistema de arquivos, finalmente:
resize2fs /dev/sda2 10G
O comando resize2fs possui a seguinte sintaxe: resize2fs [partição] [tamamho] --> onde tamanho pode ser dado em S (setores de 512 bytes), K, M e G, em que as três últimas maiúsculas representam, respectivamente, kilobytes, megabytes e gigabytes.
Ele, depois, vai retornar o número de blocos que a nova partição deverá ocupar. Mas atenção, ele informa isso para o Kernel, mas não fez nenhuma modificação física, como, aliás, discutimos acima. É importante mencionar que o número de blocos informado pode estar ligeiramente errado, devido a um bug conhecido e mencionado no próprio manual do comando (man resize2fs). O que fazer em relação a isso, veremos na segunda parte.

Segunda Parte: Redimensionando a partição

Para redimensionar a partição, o procedimento é tão simples quanto perigoso: Devemos apagar a partição que queremos redimensionar e criá-la de novo! :-D
Se o procedimento for feito corretamente, não haverá nenhuma perda de dados. Entretando, devido ao risco, é extremamente aconselhável fazer um backup dos dados mais importantes da partição, senão de toda ela. Eu estava muito "com o cú na mão", então fiz 2 backups!
fdisk /dev/sda --> Para iniciar operações de particionamento do disco.
Resposta do comando:
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
-Devemos, agora apagar a partição dois:
Command (m for help): d
Partition number (1-5): 2
Como eu cometi o erro de ter criado esta partição como primária, outrora (Poderia ter criado apenas uma partição primária, que devem ser no máximo 4, e deixado a partição em questão como estendida), devo recriá-la como primária (na verdade, tive medo de fazer diferente, mas como eu também posso criar partições Linux principais como partição extendida, eu não me importei).
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 2
Agora, ele perguntará em que cilindro que começa a partição. mantenha a resposta padrão, que deve ser identica à obtida com fdisk -l /dev/sda . Se não for, digite o dado obtido anteriormente, caso contrário, haverá perda de dados.

Agora que informamos o fdisk onde que a nossa partição começa, não sabemos onde ela termina. Felizmente, podemos dizer o tamanho da nossa partição, em MB. Porém, dizer que ela terá 10240MB (10GB) acarretará em erros mais para frente, porque, como mencionado anteriormente, o resize2fs tem um bug no cálculo do número de blocos (que são de 4KB), e dar imediatamente o tamanho que nós queremos, fará com que o sistema de arquivos e o tamanho físico continuem diferentes, podendo haver perda de dados (O e2fsck não conseguirá avaliar a partição por causa disso, e você pode ter problemas até para reiniciar o sistema).
A solução para este problema é o seguinte: Pegar o número de blocos retornado pelo resize2fs, multiplicar por 4k (como a resposta do comando já é em blocos de 4k, basta multiplicar por 4, mesmo), e depois multiplicar por 1.05, para dar uma margem de uns 5% para aquele número, pois é prudente que o tamanho físico seja maior que o tamanho do sistema de arquivos, e não o contrário. É quando acontece o contrário que a partição começa a dar problemas.

-O número resultante do cálculo deve ser colocado como +[númeroK] quando o fdisk solicitar:
Last cylinder or +size or +sizeM or +sizeK (xxx-yyy, default yyy ): +númeroK --> onde xxx-yyy é o intervalo, em cilindros, do número do cilindro que termina a partição. yyy, é o limite final do disco. + é a opção para declarar o tamanho da partição, em vez do cilindro final, e deixar a tarefa de descobrí-lo para o fdisk, número, é o tamanho em KiloBytes da Partição, e K é a opção especificando que o tamanho será mesmo dado em Kilobytes.
-Agora, devemos gravar na tabela de partições.
Command (m for help): w
The partition table has been altered!
-Resposta do comando:
Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

É preciso, agora, reiniciar o sistema (ou não).

Com a partição redimencionada desmontada, vamos à terceira e última parte:

3) Checagem do sitesma, e re-redimensionamento:

Com o sistema reiniciado para que a nova tabela de partições seja reconhecida, digite:

e2fsck -f /dev/sda2 --> (com a partição desmontada e ,novamente, substitua a partição utilizada no exemplo pela que você quer redimensionar efetivamente)

E depois o comando:

resize2fs /dev/sda2

Agora, não tem mais o tamanho da partição, porque, com a nossa preucaução, o tamanho informado pelo sistema de arquivos é menor do que o tamanho físico da partição, e queremos apenas que o sistema de arquivos seja redimensionado para o tamanho máximo da partição física.

Referências:

http://usefulfor.com/nothing/2007/12/14/howto-resize-an-ext3-partition-without-losing-data/

http://www.howtoforge.com/linux_resizing_ext3_partitions

Manual do resize2fs (man resize2fs)

terça-feira, 26 de janeiro de 2010

VIM - Modo Visual

Para entrar no modo visual do VIM, há 3 maneiras, quando não estamos no modo de edição. Podemos digitar:

v : Entra no modo de seleção de caracteres.
V : Entra no modo de selecão de linhas
Ctrl +v : Entra no modo de seleção de blocos.


E aqui, uma tabela de comandos úteis quando o texto já está selecionado:

Comando | Ação no texto selecionado
d | Apaga
y | Copia
p | Cola
c | Troca por outro texto
r | Troca cada letra por um caractere
J | Junta todas as linhas em uma só
U | Converte para maiúsculas
u | Converte para minúsculas ~ Inverte maiúsculas e minúsculas
gq | Reformata as linhas para a largura desejada
! | Manda as linhas para um comando externo (!sort)
: | Aplica um comando 'ex' nas linhas (:s/isso/aquilo/)

Para sair do modo visual, basta apertar v, de novo.
Extraído de http://aurelio.net/vim/selecao-vi-sual.html

quarta-feira, 13 de janeiro de 2010

Compactando arquivos com o zip a partir de uma lista deles criada com o comando find

Para isso, podemos utilizar a opção -@ do comando zip, e os pipes para direcionar a saída na entrada do comando zip.
Fica assim:

find [caminho] -name "[nomes pesquisados]"|zip -@ [nome do arquivo.zip]

sexta-feira, 25 de dezembro de 2009

Extraindo arquivos específicos do unzip

Isso é coisa básica, que pode ser lida no manual, Mas como eu posso perder mais tempo para procurar no manual do que no meu blog, aqui vai uma dica simples e ridícula sobre o comando unzip.

Checando os arquivos que estão compactados dentro do arquivo.zip:
unzip -l arquivo.zip
Extraindo apenas alguns arquivos:
unzip arquivo.zip arquivo1 arquivo2 .. arquivoN
Extraindo apenas alguns arquivos, mas utilizando caracteres coringa:
unzip arquivo.zip "*expressão*" , onde expressão é a parte do arquivo a ser procurada.

quarta-feira, 21 de outubro de 2009

Declarando variáveis no maxima

Em funções, vimos que a declaração delas se dá com F(variável independente):=[expressão];
Por exemplo:
F(y):=y^3+5*x;
No caso de variáveis, a declaração delas é assim:
variável:valor;
Por exemplo:
a:2*%pi;

terça-feira, 20 de outubro de 2009

Plotando Gráficos com o Wxmaxima

No último post, eu esqueci de avisar que para chamar o wxmaxima, era necessário digitar:
$wxmaxima

Bom, feito isso, e depois de ter escrito as funções com as quais quer trabalhar (você poderá chamá-las através da linha em que foram escritas), você quererá plotar alguns gráficos.
o comando para isso é: wxplot2d!
Sintaxe para uma função só:
wxplot2d([expressão], [variável,valor inicial, valor final], [xlabel, "rótulo para o eixo-x"], [ylabel, "rótulo para o eixo-y"]);
A expressão pode ser o número para alguma função que você digitou antes, ou criou, ou explicitamente, uma função que você colocou lá na hora.
Exemplos:
1) %i1 sin(x);%o1 sin(x);
%i2 wxplot2d([%o1],[x,0,2*%pi],[xlabel, "ângulo (radianos)"], [ylabel, "sen(ângulo")]); --> plota a função sin(x) no intervalo de 0 a 2pi, rotulando o eixo x de ângulo... e o y de sen(ângulo).
2) wxplot2d([sin(x)],[x,0,2*%pi],[xlabel, "x (rad)"],[ylabel, "sen(x)"]);
Caso queiramos graficar mais de uma função com um único comando, a sintaxe muda só um pouco:
wxplot2d([expressão1, expressão2], [variável, valor inicial, valor final], [xlabel, "rótulo"],[ylabel, "rótulo"]); Lembrando que os rótulos são sempre opcionais.
Aproveitarei para mostrar como definir funções:
Exemplo:
F(x):=sin(x)-x^2;
G(x):=cos(x)+x^3 + e^(-2*x);
wxplot2d([F,G],[x,-100,100],[xlabel," velocidade (m/s)"]);

Maxima e Yacas - Softwares de Apoio Computacional à Álgebra

Depois de passar mais de uma semana desesperado com a prova de Física Nuclear que o professor pediu para fazer em casa, eu entendi o que era para fazer e notei que seria fortemente recomendável utilizar programas como o maxima e o yacas.
Estes programas fazem maravilhas, embora possam ser até limitados dependendo do cálculo.
Eles podem resolver uma integral, uma derivada, achar os zeros de uma equação/função tanto numericamente quanto analíticamente (este último, se possível), e são suficientemente inteligentes para lidar com linguagem simbólica.
Para instalá-los, se seu /etc/apt/sourcs.list estiver configurado, e se sua distribuição for Debian, ou uma Debian-like fazemos:
#apt-get install yacas -->Instala o yacas
#apt-get install maxima wxmaxima xmaxima -->Instala o maxima, e duas interfaces gráficas para ele: wxmaxima e xmaxima
O wxmaxima é uma interface cheio de menus e botões meio auto-explicativos para ficar parecido com concorrentes no Windows, tipo o Maple® e o Mathematica®, embora não seja bonito.
O xmaxima é uma interface feita em tcl/tk mais bonita, embora mais espartana. Ela abre junto com o ambiente onde são digitados os comandos uma espécie de tutorial disponívels na documentação do máxima, estimulando o aprendizado para poder mexer no programa.

Uma interface permite que você mexa "no estilo Windows", ou seja, já faça as coisas sem se aprimorar muito, sem nem saber o que está fazendo, até, de forma intuitiva. A outra faz você apanhar um pouco mas lhe força a aprender mais, o que pode facilitar no futuro, pois você começará a pensar em programar na linguagem e a resolver as coisas de maneira mais complicada, desenvolvendo certa habilidade.
Como eu estava desesperado para fazer a prova do Robilotta, eu fiquei com o wxmaxima, mesmo.

Mesmo assim, há alguns comandos que não aparecem, senão sutilmente nos menus, e dos quais você pode precisar.
Primeiro alguma sobre o ambiente:
%in --> É o prompt, aguardando que você dê algum comando. No wxmaxima, você não precisa se preocupar muito com isso. Há uma caixa de texto onde você coloca os comandos.
O 'i' quer dizer entrada, e o n, é o número da linha em que você está.
Quando você digita um comando, aparece: %on , que quer dizer saída, acompanhada do resultado do comando.
Para escrever expressões matemáticas, simplesmente, escreva-as!
Por exemplo: sin(x)
O resultado será informado como sin(x).
Você pode usar a linha %on nos cálculos da linha n+1 , por exemplo. Até pode definir novas funções e variáveis.

Para achar os zeros de uma função analítica, pode-se fazer:
solve([expressão], [variável]); (colchetes não obrigatórios, utilizei apenas para mostrar a sintaxe.

Ex:
solve(x^2-a,x); As raízes da equação serão retornadas, e a é qualquer valor. Entendeu porque é legal? Não é só para cálculo numérico.

E quando só dá para resolver numericamente?
find_root([expressão],[variável],["chute inicial], ["chute final"]);

Ex:
find_root(exp(-5*r)-5*cos(15*r),r,0.001,1000);


segunda-feira, 31 de agosto de 2009

Fazendo a Função exit() funcionar.

Quando eu coloco a função exit(n), onde, n é o número que será retornado ao sistema após a execução do programa, e tento compilar, tendo o seguinte erro de compilação:

warning: incompatible implicit declaration of built-in function 'exit'

Para resolver este problema, basta declarar a bibliteca stdlib.h no início do programa.


Compilando programas depois de usar a math.h

Quando eu compilei programas usando a math.h ,tive a seguinte mensagem de erro:
gcc -g -c arquivo.c
gcc -g -o arquivo arquivo.o

undefined reference to `sqrt'

Para resolver este problema, consultando o google, e sem pesquisar porque funciona, por enquanto, fiz:

gcc -lm -g -c arquivo.c
gcc -lm -g -o arquivo arquivo.o

segunda-feira, 17 de agosto de 2009

Compilando para debugar

Algumas pessoas nascem para ser selvagens. Mas todos os programas nascem para ser debugados!
Assim, pela necessidade, desde maio, venho compilando os meus programas com suporte para debug. O comando para isso é:

gcc -g -c programa.c
gcc -g -o programa programa.o


Eu utilizo o debugador DDD (Data Display Debuger), facilmente obtido com um

apt-get install ddd


O comando para utilizá-lo, é:

ddd programa
Se desejar que o programa rode com argumentos, o debugador precisa ser informado disso. Isto é muito útil para não ter de ficar colocando os argumentos alterando as variáveis que recebem os argumentos de linha de comando manualmente no debugador:
ddd --args programa argumento1 argumento2 ... argumentoN

quinta-feira, 13 de agosto de 2009

Unzip - Descompactando apenas um(ns) arquivo(s) dentre os que estão compactados.

Bem, é bem fácil usar o unzip, embora ler os man possa ser algo chato...

unzip arquivo.zip arquvo zipado


Um grande abraço do fundo do meu coração vermelho de outubro de 1917,
Atenágoras Souza Silva.

Depois de um longo intervalo

Depois de um longo intervalo sem postar (foram apenas 4 meses), eu volto, e espero que seja com uma saraivada de posts, porque pretendo reportar as coisas que eu fiz nas férias e no final do semestre, no que diz respeito a programação de computadores, softwares novos para isto, e comandos úteis que foram uma mão na roda para mim, por me polparem trabalho.
Mas ainda estou tendo de lidar com um último erro antes das férias acabaraem: FALHA DE SEGMENTAÇÃO.

Um grande abraço do fundo do meu coração vermelho de outubro de 1917,
Atenágoras Souza Silva.

domingo, 12 de abril de 2009

Procurar ajuda no VIM

O ambiente de ajuda do VIM é bem completo, mas não sei dizer se é ótimo. Uma coisa legal que eu descobri é o seguinte:
Imagine que você gostaria de saber sobre algum atributo ou se existe algum comando para fazer a tarefa que você quer. Importante: Pense no nome em inglês da tarefa que você quer realizar.
Aí, você sai do modo de edição com ESC, e tecla o caracter entre aspas":" e digita:
:help <expressão-procurada>

Mas em vez de ENTER, após seguir esta dica, que dará um erro, digite Ctrld-D, e o VIM lhe retornará os tópicos de ajuda em que a sua palavra aparece, bastando digitar, depois de sair novamente do modo de edição:
:help <tópico-de-ajuda-sugerido pelo VIM>

Exemplo:
:help replace Ctrl-D -->retorna vários tópicos relacionados com a palavra procurada, e no exemplo, usarei o tópico find-replace.
:help find-replace --> Tecle Enter depois de digitado este comando para ir para o tópico de ajuda find-replace.

Procurar e substibuir no VIM

Esta eu descobri porque queria mudar os repositórios debian para ver se eu achava o crafty na próxima versão do Debian, mas o pacote ficou realmente orfão, e queria editar o /etc/apt/sources.list no VIM e queria todas as funcionalidades básicas um editor simples.
Procurar e substitui no VIM não é tão simples.
Primeiro, deve-se sair do modo de edição, em que você pode inserir texto no arquivo com ESC. Depois, aperta-se o caractere que está entre aspas ":", para poder inserir o comando substitute, ou s, sua abreviação

Sintaxe:
: [região] s/palavra-procurada/palavra-substituta --> região são as linhas entre as quais a pesquisa e substituição serão feitas, separadas por vírgula.
ou
:%s/palavra-procura/palavra-substituta -->% procura a expressão e executa a substituição UMA vez em todas as linhas.
Se desejarmos substituir todas as ocorrências que forem encontradas nas linhas da região, incluimos uma terceira barra e a letra g (global).

Exemplos:
:10,15 s/palavra1/palavra2 --> Procura entre as linhas 10 e 15 a primeira ocorrência de palavra1 e substitui por palavra2
:%s/palavra1/palavra2/g --> procura em todas as linhas, todas as ocorrências de palavra1 na linha e as substitui por palavra2 em todas as linhas do texto.

sexta-feira, 10 de abril de 2009

Tentativa de solução para meu X rodar na resolução 320x240

Uma coisa que só consegui fazer uma vez.
Quando eu usava as ferramentas de configuração xf86config, ou editava o antigo arquivo de configuração dodo antigo Xfree86, eu colocava esta resolução para funcionar e nada. Isto no velho Marx (K6). Aí tive de trocar a placa de vídeo quando pifou. Ainda estou para atualizar a minha BIOS no Marx par poder colocar a placa nVidia TNT2 PCI que comprei para ele (era uma poderosa para barramento PCI, de antigamente), que não funcionou. Aí, um amigo meu me passou uma placa diferente, e ao voltar a ver o micro funcionando, ganho, de brinde, a resolução 320x240 suportada.
Um mês depois, comprei um novo micro (na verdade, minha mãe comprou, pois ainda "trabalho" na VASP), e não consegui fazer tal resolução funcionar nele.
Eu passei este tempo todo pensando que era só dar um jeito de configurar a placa de vídeo para esta resolução no Linux, e para algumas placas se conseguia e para outras não.
Então um link que eu achei na internet dá a pista de que pode ser o monitor...
Agora só falta saber exatamente quais os parâmetros para o monitor suportar esta resolução.
O link é https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-mga/+bug/183913
Espero que funcione.
Também darei uma olhada no arquivo de configuração do X no computador antigo.
Espero que realmente funcione.

domingo, 8 de março de 2009

Instalando e Configurando o Debian Lenny

Ontem instalei o Debian Lenny no meu computador.
Segui uns roteiros para configurá-lo e adaptá-lo ao uso no Desktop.
A maioria dos passos, eu tirei do blog do próprio Morimoto. Deste post do blog dele, eu configurei o apt para baixar pacotes restritos, não-livres e multimídia, além de configurar o flash, o java, instalar fontes Windows etc.
No outro artigo, também publicado no Guia do Hardware, de Júlio César Bessa Monqueiro, basicamente configurei as fontes para não ficarem pequenas no Iceweasel.
É isso.