Arquivo da categoria ‘programação’
programando no editor nano

O nano é um editor de textos muito leve e simples que funciona no terminal. Assim como outros editores terminal-based, podemos customizá-lo para facilitar a escrita de programas.
O nano já traz um arquivo de configuração como exemplo. Ele se localiza em /usr/share/nano/examples, então, se você quiser usar esse exemplo e modificar (o arquivo já vem bastante comentado), faça o seguinte:
$ cp /usr/share/nano/examples/nanorc.sample ~/.nanorc
$ gedit ~/.nanorc
O meu .nanorc está da seguinte maneira:
set autoindent
set brackets “”‘)>]}”
set matchbrackets “(<[{)>]}”
set mouse
include “/usr/share/nano/nanorc.nanorc”
include “/usr/share/nano/c.nanorc”
include “/usr/share/nano/python.nanorc”
include “/usr/share/nano/java.nanorc”
include “/usr/share/nano/sh.nanorc”
renomear arquivos em massa com shell script
Muitas vezes, obtemos arquivos com nomes bastante estranhos. Se você baixar imagens diretamente de álbums do Orkut, os títulos dos arquivos serão vários caracteres randômicos. Isso pode tornar a identificação do arquivo um pouco difícil. Algumas câmeras digitais também dificultam a identificação do arquivo, pois, em vez de criar prefixos que identificassem circunstâncias relevantes das fotos, elas criam prefixos inúteis. Ex: DSC00845.JPG (Câmeras da Sony).
Através de um pequeno script, podemos renomear em massa arquivos de uma mesma pasta. Veja o script abaixo:
#!/bin/sh
if [ $# -eq 2 ]
then
i=0
files=`ls -1 $1`
for file in $files
do
filename="$file"
fileextension=$(echo $filename | awk -F . '{print $NF}')
echo "$filename will be renamed to $2-$i.$fileextension"
i=$((i+1))
done
echo
echo "Do you really want to rename these files? (y/n)"
read yesno
if [ "$yesno" = "y" ]
then
i=0
files=`ls -1 $1`
cd $1
for file in $files
do
filename="$file"
fileextension=$(echo $filename | awk -F . '{print $NF}')
echo "renaming $filename to $2-$i.$fileextension ..."
mv $filename $2-$i.$fileextension
i=$((i+1))
done
else
exit
fi
elif [ $# -ne 2 ]
then
echo "Usage:"
echo "$0 (dir) (new_prefix)"
echo "(dir) -> directory where the files that will be renamed are located"
echo "(new_name) -> the pattern name"
fi
A usagem desse script é bem simples. Cole o código acima em algum editor de texto e salve o arquivo. Aqui eu o armazenei como massrename.sh. Agora abra um terminal e vá para o diretório onde o script se localiza. Estando no diretório correto, digite:
$ ./massrename.sh <diretório onde se localizam os arquivos a serem renomeados> <prefixo>
Veja um exemplo:
$ ./massrename.sh /home/lucas/pics/aniversario bday_lucas
De acordo com o exemplo, os arquivos da pasta /home/lucas/pics/aniversario serão renomeados para: bday_lucas-0.JPG, bday_locas-1.JPG, etc…
checar atualização em páginas com shell script
Nessa semana, o resultado do vestibular 2010.1 da UFC saiu. Graças a Deus eu passei. Mas, antes disso, eu sempre ficava checando a página da CCV (Comissão Coordenadora de Vestibular) para ver se eu já poderia olhar a lista dos aprovados.
Mas, então, tive uma ideia: “Por que não faço um script que faça esse trabalho pra mim?”. Então pensei em como faria o tal script e assim o fiz:
O script baixa a página sem o resultado e usa ela como um modelo. De 5 em 5 minutos, a página é baixada novamente, sendo, então, comparada com a página modelo. Se houver mudança, o usuário é alertado, senão o processo é reiniciado.
pagina=http://www.ccv.ufc.br/newpage/vtb/vtb2010/vestib2010.php #mude aqui modelo=modelo.php temp=temp.php alerta=acorda.mp3 #mude aqui delay=300 clear wget -q $pagina -O $modelo while [ 1 = 1 ] do echo "Checando a página..." wget -q $pagina -O $temp cmp -s $modelo $temp if [ $? = 0 ] then echo "Não houve mudança. Daqui a $delay segundos haverá uma nova checagem." echo "última checagem: " date echo else echo "HOUVE MUDANÇA!" echo "Para sair, digite CTRL + C" mplayer -loop 0 $alerta exit fi rm $temp sleep $delay done
OBS: Para me alertar, eu abri um sinal sonoro usando o mplayer. Caso você queira apenas um alerta visual, tente usar xdialog.
Introdução ao Zilog Z80
Antes de você ler esse artigo, é bom que você tenha conhecimentos de sistemas numéricos, conversão de bases etc, pois tudo isso será útil ao trabalhar com eletrônica digital e programação em baixo nível.
estruturas de dados – resumo teórico
Lista linear
Lista linear é uma estrutura de dados dinâmica cujos elementos estão organizados de maneira seqüencial. São estruturas flexíveis, que podem crescer ou diminuir durante a execução do programa, de acordo com a demanda.
Programação orientada a objetos com Java – Objetos
Antes de tudo, é bom termos em mente a definição da programação orientada a objetos (POO). A POO é um dos vários paradigmas de programação. De acordo com a Wikipedia, um paradigma de programação é a visão que o programador possui sobre a estruturação e execução do programa.
Esse paradigma trabalha com relações entre objetos, visando o melhor conjunto de relações para formar um programa. Neste post, será definido algumas das relações entre objetos, além de algumas características dos objetos.
cheatsheets
Aqui estão os cheat sheets que mais uso. Aproveitem!
Programação
Desenvolvimento para Web
Sistemas
Outros
Se você estava procurando por um cheat sheet e ela não está aqui, provavelmente ela estará ai: All cheat sheet in one page
ponteiros e matrizes
como os elementos do vetor estão contíguos na memória, podemos fazer o seguinte procedimento para associar uma matriz a um ponteiro:
# include <stdio.h>
# include <string.h>
void get_name( char *v )
{
printf("What's your name?\n");
scanf("%s",&v[0]);
}
int main(void)
{
char n[50];
get_name( n );
printf("How you doing, %s ?\n",n);
return 0;
}
Alocação dinâmica em C
A alocação dinâmica é o processo que aloca memória em tempo de execução. Ela é utilizada quando não se sabe ao certo quanto de memória será necessário para o armazenamento das informações, podendo ser determinadas em tempo de execução conforme a necessidade do programa. Dessa forma evita-se o desperdício de memória. Julio Battisti
- malloc( size_t tamanho ): aloca tamanho bytes na memória.
- sizeof(tipo): retorna o tamanho do tipo de dados em bytes.
- free( *ptr ): desaloca da memória o ponteiro. ATENÇÃO: Toda memória alocada dinamicamente deve ser liberada antes do término de um programa, caso contrário ela não estará disponível para outras aplicações ou programas.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,x;
int *vetor;
scanf("%d",&x); //tamanho do vetor
vetor = malloc( x * sizeof( int ));
for ( i = 0 ; i < x ; i++ ) scanf("%d",&vetor[i]);
free(vetor); //liberando a memoria alocada.
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,j;
int x,y;
int **matriz;
scanf("%d",&x);
scanf("%d",&y);
matriz = malloc( x*sizeof(int) );
//preenchendo as colunas
for ( i = 0 ; i < x ; i++ )
matriz[i] = malloc( y*sizeof(int) );
//lendo as celulas
for ( i = 0 ; i < x ; i++ )
for ( j = 0 ; j < y ; j++ )
scanf("%d",&matriz[i][j]);
free(matriz);
return 0;
}brincando com javascript (básico)
Basicamente, isso é uma página com uma caixa de texto (textarea) com alguns “botões” que adicionam tags na caixa de texto. Apesar de básico, pode ser bem útil.